// Copyright 2024 RISC Zero, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// This code is automatically generated

#include "ffi.h"
#include "fp.h"

#include <array>
#include <cassert>
#include <stdexcept>

// clang-format off
namespace risc0::circuit::recursion {

#if defined(__clang__)
#pragma clang diagnostic ignored "-Wunused-parameter"
#pragma clang diagnostic ignored "-Wunused-variable"
#elif defined(__GNUC__)
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wunused-variable"
#endif

Fp step_exec(void* ctx, HostBridge host, size_t steps, size_t cycle, Fp** args) {
  size_t mask = steps - 1;
  std::array<Fp, 96> host_args;
  std::array<Fp, 32> host_outs;
  // loc(unknown)
  Fp x0(192);
  // loc(unknown)
  Fp x1(48);
  // loc(unknown)
  Fp x2(12);
  // loc(unknown)
  Fp x3(1040977421);
  // loc(unknown)
  Fp x4(1792450386);
  // loc(unknown)
  Fp x5(1470845646);
  // loc(unknown)
  Fp x6(1363837384);
  // loc(unknown)
  Fp x7(1878280202);
  // loc(unknown)
  Fp x8(434078361);
  // loc(unknown)
  Fp x9(1946596189);
  // loc(unknown)
  Fp x10(875839332);
  // loc(unknown)
  Fp x11(463976218);
  // loc(unknown)
  Fp x12(976057819);
  // loc(unknown)
  Fp x13(48375137);
  // loc(unknown)
  Fp x14(1549779579);
  // loc(unknown)
  Fp x15(1679178250);
  // loc(unknown)
  Fp x16(530151394);
  // loc(unknown)
  Fp x17(1629316321);
  // loc(unknown)
  Fp x18(1854174607);
  // loc(unknown)
  Fp x19(720724951);
  // loc(unknown)
  Fp x20(14387587);
  // loc(unknown)
  Fp x21(1883820770);
  // loc(unknown)
  Fp x22(205609311);
  // loc(unknown)
  Fp x23(1136469704);
  // loc(unknown)
  Fp x24(1439947916);
  // loc(unknown)
  Fp x25(723038058);
  // loc(unknown)
  Fp x26(53041581);
  // loc(unknown)
  Fp x27(1810596765);
  // loc(unknown)
  Fp x28(1210751726);
  // loc(unknown)
  Fp x29(1327682690);
  // loc(unknown)
  Fp x30(1886977120);
  // loc(unknown)
  Fp x31(1551596046);
  // loc(unknown)
  Fp x32(1186174623);
  // loc(unknown)
  Fp x33(1199068823);
  // loc(unknown)
  Fp x34(1240419708);
  // loc(unknown)
  Fp x35(1708681573);
  // loc(unknown)
  Fp x36(308575117);
  // loc(unknown)
  Fp x37(1111544260);
  // loc(unknown)
  Fp x38(822033215);
  // loc(unknown)
  Fp x39(1891545577);
  // loc(unknown)
  Fp x40(440300254);
  // loc(unknown)
  Fp x41(1726563304);
  // loc(unknown)
  Fp x42(1365519753);
  // loc(unknown)
  Fp x43(924863639);
  // loc(unknown)
  Fp x44(1540960371);
  // loc(unknown)
  Fp x45(1052077299);
  // loc(unknown)
  Fp x46(1930103076);
  // loc(unknown)
  Fp x47(98371040);
  // loc(unknown)
  Fp x48(918610824);
  // loc(unknown)
  Fp x49(801504236);
  // loc(unknown)
  Fp x50(65998480);
  // loc(unknown)
  Fp x51(658182609);
  // loc(unknown)
  Fp x52(606789471);
  // loc(unknown)
  Fp x53(51866717);
  // loc(unknown)
  Fp x54(375892129);
  // loc(unknown)
  Fp x55(20525701);
  // loc(unknown)
  Fp x56(1997365680);
  // loc(unknown)
  Fp x57(1974912880);
  // loc(unknown)
  Fp x58(1942928017);
  // loc(unknown)
  Fp x59(1928969209);
  // loc(unknown)
  Fp x60(1867716110);
  // loc(unknown)
  Fp x61(1792686146);
  // loc(unknown)
  Fp x62(1558116381);
  // loc(unknown)
  Fp x63(1461037801);
  // loc(unknown)
  Fp x64(1389833583);
  // loc(unknown)
  Fp x65(13683276);
  // loc(unknown)
  Fp x66(1188752902);
  // loc(unknown)
  Fp x67(111593398);
  // loc(unknown)
  Fp x68(1083257840);
  // loc(unknown)
  Fp x69(106789798);
  // loc(unknown)
  Fp x70(1001081699);
  // loc(unknown)
  Fp x71(497520322);
  // loc(unknown)
  Fp x72(946500736);
  // loc(unknown)
  Fp x73(890243564);
  // loc(unknown)
  Fp x74(862495875);
  // loc(unknown)
  Fp x75(855276054);
  // loc(unknown)
  Fp x76(76770019);
  // loc(unknown)
  Fp x77(760115692);
  // loc(unknown)
  Fp x78(623051854);
  // loc(unknown)
  Fp x79(59510015);
  // loc(unknown)
  Fp x80(552696906);
  // loc(unknown)
  Fp x81(538103555);
  // loc(unknown)
  Fp x82(457372011);
  // loc(unknown)
  Fp x83(447555988);
  // loc(unknown)
  Fp x84(27129487);
  // loc(unknown)
  Fp x85(217046702);
  // loc(unknown)
  Fp x86(1950429111);
  // loc(unknown)
  Fp x87(192082241);
  // loc(unknown)
  Fp x88(1910423126);
  // loc(unknown)
  Fp x89(1908416316);
  // loc(unknown)
  Fp x90(1891637550);
  // loc(unknown)
  Fp x91(1841795381);
  // loc(unknown)
  Fp x92(1827572010);
  // loc(unknown)
  Fp x93(1748789933);
  // loc(unknown)
  Fp x94(1664590951);
  // loc(unknown)
  Fp x95(1663353317);
  // loc(unknown)
  Fp x96(162510541);
  // loc(unknown)
  Fp x97(1622328571);
  // loc(unknown)
  Fp x98(1608853840);
  // loc(unknown)
  Fp x99(158646617);
  // loc(unknown)
  Fp x100(1584033957);
  // loc(unknown)
  Fp x101(1567618575);
  // loc(unknown)
  Fp x102(1549062383);
  // loc(unknown)
  Fp x103(1507649755);
  // loc(unknown)
  Fp x104(1478577620);
  // loc(unknown)
  Fp x105(1463323727);
  // loc(unknown)
  Fp x106(1424297384);
  // loc(unknown)
  Fp x107(142102402);
  // loc(unknown)
  Fp x108(1402624179);
  // loc(unknown)
  Fp x109(1293938517);
  // loc(unknown)
  Fp x110(1257820264);
  // loc(unknown)
  Fp x111(1215259350);
  // loc(unknown)
  Fp x112(1198261138);
  // loc(unknown)
  Fp x113(1150410028);
  // loc(unknown)
  Fp x114(1147522062);
  // loc(unknown)
  Fp x115(1099252725);
  // loc(unknown)
  Fp x116(1080533265);
  // loc(unknown)
  Fp x117(1079030649);
  // loc(unknown)
  Fp x118(1065075039);
  // loc(unknown)
  Fp x119(1042892522);
  // loc(unknown)
  Fp x120(993455846);
  // loc(unknown)
  Fp x121(989618631);
  // loc(unknown)
  Fp x122(989176635);
  // loc(unknown)
  Fp x123(942439428);
  // loc(unknown)
  Fp x124(930036496);
  // loc(unknown)
  Fp x125(925018226);
  // loc(unknown)
  Fp x126(897025192);
  // loc(unknown)
  Fp x127(825405577);
  // loc(unknown)
  Fp x128(813674331);
  // loc(unknown)
  Fp x129(809508074);
  // loc(unknown)
  Fp x130(790726260);
  // loc(unknown)
  Fp x131(78845751);
  // loc(unknown)
  Fp x132(781141772);
  // loc(unknown)
  Fp x133(755691969);
  // loc(unknown)
  Fp x134(738091882);
  // loc(unknown)
  Fp x135(716894289);
  // loc(unknown)
  Fp x136(714957516);
  // loc(unknown)
  Fp x137(708123747);
  // loc(unknown)
  Fp x138(695835963);
  // loc(unknown)
  Fp x139(686842369);
  // loc(unknown)
  Fp x140(641665156);
  // loc(unknown)
  Fp x141(622609176);
  // loc(unknown)
  Fp x142(608401422);
  // loc(unknown)
  Fp x143(588764636);
  // loc(unknown)
  Fp x144(540703332);
  // loc(unknown)
  Fp x145(53007114);
  // loc(unknown)
  Fp x146(51256176);
  // loc(unknown)
  Fp x147(459826664);
  // loc(unknown)
  Fp x148(427731030);
  // loc(unknown)
  Fp x149(395622276);
  // loc(unknown)
  Fp x150(390340387);
  // loc(unknown)
  Fp x151(342857858);
  // loc(unknown)
  Fp x152(306391314);
  // loc(unknown)
  Fp x153(273790406);
  // loc(unknown)
  Fp x154(241306552);
  // loc(unknown)
  Fp x155(238616145);
  // loc(unknown)
  Fp x156(228520958);
  // loc(unknown)
  Fp x157(204228775);
  // loc(unknown)
  Fp x158(202271745);
  // loc(unknown)
  Fp x159(1997503974);
  // loc(unknown)
  Fp x160(1989924532);
  // loc(unknown)
  Fp x161(1917861751);
  // loc(unknown)
  Fp x162(1917549072);
  // loc(unknown)
  Fp x163(1896271507);
  // loc(unknown)
  Fp x164(1889898);
  // loc(unknown)
  Fp x165(1889603648);
  // loc(unknown)
  Fp x166(1845603984);
  // loc(unknown)
  Fp x167(1832911930);
  // loc(unknown)
  Fp x168(1781980094);
  // loc(unknown)
  Fp x169(1740472809);
  // loc(unknown)
  Fp x170(1737016378);
  // loc(unknown)
  Fp x171(172614232);
  // loc(unknown)
  Fp x172(1718628547);
  // loc(unknown)
  Fp x173(1715719711);
  // loc(unknown)
  Fp x174(1687379185);
  // loc(unknown)
  Fp x175(1672219447);
  // loc(unknown)
  Fp x176(1649953458);
  // loc(unknown)
  Fp x177(1647670797);
  // loc(unknown)
  Fp x178(1647665372);
  // loc(unknown)
  Fp x179(162506101);
  // loc(unknown)
  Fp x180(1608891156);
  // loc(unknown)
  Fp x181(1587822577);
  // loc(unknown)
  Fp x182(1545325389);
  // loc(unknown)
  Fp x183(1518763784);
  // loc(unknown)
  Fp x184(1507936940);
  // loc(unknown)
  Fp x185(150307788);
  // loc(unknown)
  Fp x186(1454563174);
  // loc(unknown)
  Fp x187(140621810);
  // loc(unknown)
  Fp x188(1401020792);
  // loc(unknown)
  Fp x189(1393671120);
  // loc(unknown)
  Fp x190(1380248020);
  // loc(unknown)
  Fp x191(1339793538);
  // loc(unknown)
  Fp x192(1338899225);
  // loc(unknown)
  Fp x193(1333667262);
  // loc(unknown)
  Fp x194(1303271640);
  // loc(unknown)
  Fp x195(1296144415);
  // loc(unknown)
  Fp x196(1291790245);
  // loc(unknown)
  Fp x197(1290028279);
  // loc(unknown)
  Fp x198(128479034);
  // loc(unknown)
  Fp x199(1282239129);
  // loc(unknown)
  Fp x200(1269493554);
  // loc(unknown)
  Fp x201(1262312258);
  // loc(unknown)
  Fp x202(1239734761);
  // loc(unknown)
  Fp x203(1221257987);
  // loc(unknown)
  Fp x204(1213686459);
  // loc(unknown)
  Fp x205(1209164052);
  // loc(unknown)
  Fp x206(1206940496);
  // loc(unknown)
  Fp x207(1201063290);
  // loc(unknown)
  Fp x208(117294666);
  // loc(unknown)
  Fp x209(1170029417);
  // loc(unknown)
  Fp x210(1150912935);
  // loc(unknown)
  Fp x211(1124078057);
  // loc(unknown)
  Fp x212(1111203133);
  // loc(unknown)
  Fp x213(1090783436);
  // loc(unknown)
  Fp x214(1006235079);
  // loc(unknown)
  Fp x215(1003792297);
  // loc(unknown)
  Fp x216(831813382);
  // loc(unknown)
  Fp x217(1421525369);
  // loc(unknown)
  Fp x218(1751797115);
  // loc(unknown)
  Fp x219(1964135730);
  // loc(unknown)
  Fp x220(525458520);
  // loc(unknown)
  Fp x221(638242172);
  // loc(unknown)
  Fp x222(1307439985);
  // loc(unknown)
  Fp x223(343354132);
  // loc(unknown)
  Fp x224(1389166148);
  // loc(unknown)
  Fp x225(1660766320);
  // loc(unknown)
  Fp x226(1464793095);
  // loc(unknown)
  Fp x227(1180307149);
  // loc(unknown)
  Fp x228(1930780904);
  // loc(unknown)
  Fp x229(1066694495);
  // loc(unknown)
  Fp x230(1773108264);
  // loc(unknown)
  Fp x231(1004040026);
  // loc(unknown)
  Fp x232(815798990);
  // loc(unknown)
  Fp x233(454905424);
  // loc(unknown)
  Fp x234(118043943);
  // loc(unknown)
  Fp x235(157582794);
  // loc(unknown)
  Fp x236(246143118);
  // loc(unknown)
  Fp x237(314968988);
  // loc(unknown)
  Fp x238(127253399);
  // loc(unknown)
  Fp x239(262278199);
  // loc(unknown)
  Fp x240(943718400);
  // loc(unknown)
  Fp x241(268435454);
  // loc(unknown)
  Fp x242(1761607679);
  // loc(unknown)
  Fp x243(1073741824);
  // loc(unknown)
  Fp x244(536870912);
  // loc(unknown)
  Fp x245(1509949437);
  // loc(unknown)
  Fp x246(268435456);
  // loc(unknown)
  Fp x247(1006632953);
  // loc(unknown)
  Fp x248(2013265906);
  // loc(unknown)
  Fp x249(134217728);
  // loc(unknown)
  Fp x250(67108864);
  // loc(unknown)
  Fp x251(2013265891);
  // loc(unknown)
  Fp x252(33554432);
  // loc(unknown)
  Fp x253(2013265861);
  // loc(unknown)
  Fp x254(2013265801);
  // loc(unknown)
  Fp x255(16777216);
  // loc(unknown)
  Fp x256(8388608);
  // loc(unknown)
  Fp x257(2013265681);
  // loc(unknown)
  Fp x258(4194304);
  // loc(unknown)
  Fp x259(2013265441);
  // loc(unknown)
  Fp x260(2097152);
  // loc(unknown)
  Fp x261(2013264961);
  // loc(unknown)
  Fp x262(2013264001);
  // loc(unknown)
  Fp x263(1048576);
  // loc(unknown)
  Fp x264(524288);
  // loc(unknown)
  Fp x265(2013262081);
  // loc(unknown)
  Fp x266(262144);
  // loc(unknown)
  Fp x267(2013258241);
  // loc(unknown)
  Fp x268(2013250561);
  // loc(unknown)
  Fp x269(131072);
  // loc(unknown)
  Fp x270(2013235201);
  // loc(unknown)
  Fp x271(32768);
  // loc(unknown)
  Fp x272(2013204481);
  // loc(unknown)
  Fp x273(2013143041);
  // loc(unknown)
  Fp x274(16384);
  // loc(unknown)
  Fp x275(8192);
  // loc(unknown)
  Fp x276(2013020161);
  // loc(unknown)
  Fp x277(4096);
  // loc(unknown)
  Fp x278(2012774401);
  // loc(unknown)
  Fp x279(2048);
  // loc(unknown)
  Fp x280(2012282881);
  // loc(unknown)
  Fp x281(2011299841);
  // loc(unknown)
  Fp x282(1024);
  // loc(unknown)
  Fp x283(512);
  // loc(unknown)
  Fp x284(2009333761);
  // loc(unknown)
  Fp x285(256);
  // loc(unknown)
  Fp x286(2005401601);
  // loc(unknown)
  Fp x287(1997537281);
  // loc(unknown)
  Fp x288(128);
  // loc(unknown)
  Fp x289(64);
  // loc(unknown)
  Fp x290(1981808641);
  // loc(unknown)
  Fp x291(32);
  // loc(unknown)
  Fp x292(1950351361);
  // loc(unknown)
  Fp x293(1887436801);
  // loc(unknown)
  Fp x294(16);
  // loc(unknown)
  Fp x295(1761607681);
  // loc(unknown)
  Fp x296(1509949441);
  // loc(unknown)
  Fp x297(1006632961);
  // loc(unknown)
  Fp x298(65536);
  // loc(unknown)
  Fp x299(2013265910);
  // loc(unknown)
  Fp x300(11);
  // loc(unknown)
  Fp x301(10);
  // loc(unknown)
  Fp x302(9);
  // loc(unknown)
  Fp x303(8);
  // loc(unknown)
  Fp x304(7);
  // loc(unknown)
  Fp x305(6);
  // loc(unknown)
  Fp x306(5);
  // loc(unknown)
  Fp x307(4);
  // loc(unknown)
  Fp x308(3);
  // loc(unknown)
  Fp x309(2);
  // loc(unknown)
  Fp x310(1);
  // loc(unknown)
  Fp x311(0);
  // loc("top(recursion::Top)/code(recursion::Code)/select(OneHot)/micro_ops(Reg)"("./zirgen/components/mux.h":49:25))
  auto x312 = args[0][1 * steps + ((cycle - 0) & mask)];
  assert(x312 != Fp::invalid());
  if (x312 != 0) {
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[0](recursion::MicroInst)/opcode(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x313 = args[0][8 * steps + ((cycle - 0) & mask)];
    assert(x313 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/write_addr(Reg)"("zirgen/circuit/recursion/top.cpp":23:49))
    auto x314 = args[0][0 * steps + ((cycle - 0) & mask)];
    assert(x314 != Fp::invalid());
    {
      // loc("./zirgen/components/onehot.h":37:26)
      auto x315 = (x313 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][90 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x315);
        reg = x315;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x316 = x313 - x310;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x317 = (x316 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][91 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x317);
        reg = x317;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x318 = x313 - x309;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x319 = (x318 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][92 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x319);
        reg = x319;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x320 = x313 - x308;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x321 = (x320 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][93 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x321);
        reg = x321;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x322 = x313 - x307;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x323 = (x322 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][94 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x323);
        reg = x323;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x324 = x313 - x306;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x325 = (x324 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][95 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x325);
        reg = x325;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x326 = x313 - x305;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x327 = (x326 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][96 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x327);
        reg = x327;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x328 = x313 - x304;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x329 = (x328 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][97 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x329);
        reg = x329;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x330 = x313 - x303;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x331 = (x330 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][98 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x331);
        reg = x331;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x332 = x313 - x302;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x333 = (x332 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][99 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x333);
        reg = x333;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x334 = x313 - x301;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x335 = (x334 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][100 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x335);
        reg = x335;
      }
    }
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/extract(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x336 = args[2][100 * steps + ((cycle - 0) & mask)];
    assert(x336 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/add(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x337 = args[2][91 * steps + ((cycle - 0) & mask)];
    assert(x337 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/sub(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x338 = args[2][92 * steps + ((cycle - 0) & mask)];
    assert(x338 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/mul(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x339 = args[2][93 * steps + ((cycle - 0) & mask)];
    assert(x339 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/inv(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x340 = args[2][94 * steps + ((cycle - 0) & mask)];
    assert(x340 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/eq(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x341 = args[2][95 * steps + ((cycle - 0) & mask)];
    assert(x341 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/read_iop_header(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x342 = args[2][96 * steps + ((cycle - 0) & mask)];
    assert(x342 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/read_iop_body(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x343 = args[2][97 * steps + ((cycle - 0) & mask)];
    assert(x343 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/mix_rng(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x344 = args[2][98 * steps + ((cycle - 0) & mask)];
    assert(x344 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/select(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x345 = args[2][99 * steps + ((cycle - 0) & mask)];
    assert(x345 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/decode(OneHot)/constop(Reg)"("zirgen/circuit/recursion/micro.cpp":19:44))
    auto x346 = args[2][90 * steps + ((cycle - 0) & mask)];
    assert(x346 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[0](recursion::MicroInst)/operand[0](Reg)"("zirgen/circuit/recursion/micro.cpp":14:17))
    auto x347 = args[0][9 * steps + ((cycle - 0) & mask)];
    assert(x347 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[0](recursion::MicroInst)/operand[2](Reg)"("zirgen/circuit/recursion/micro.cpp":16:17))
    auto x348 = args[0][11 * steps + ((cycle - 0) & mask)];
    assert(x348 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[0](recursion::MicroInst)/operand[1](Reg)"("zirgen/circuit/recursion/micro.cpp":15:17))
    auto x349 = args[0][10 * steps + ((cycle - 0) & mask)];
    assert(x349 != Fp::invalid());
    if (x346 != 0) {
      host_args.at(0) = x314;
      host_args.at(1) = x347;
      host_args.at(2) = x349;
      host_args.at(3) = x348;
      host_args.at(4) = x311;
      host(ctx, "log", "%u> CONST: %e", host_args.data(), 5, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][6 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][7 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][8 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][9 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x314);
        reg = x314;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x349);
        reg = x349;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x348);
        reg = x348;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x350 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x350 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x351 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x351 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x352 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x352 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x353 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x353 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x354 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x354 != Fp::invalid());
        host_args.at(0) = x350;
        host_args.at(1) = x351;
        host_args.at(2) = x352;
        host_args.at(3) = x353;
        host_args.at(4) = x354;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    if (x337 != 0) {
      {
        host_args.at(0) = x347;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x355 = host_outs.at(0);
        auto x356 = host_outs.at(1);
        auto x357 = host_outs.at(2);
        auto x358 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x355);
          reg = x355;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x356);
          reg = x356;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x357);
          reg = x357;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x358);
          reg = x358;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x359 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x359 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x360 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x360 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x361 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x361 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x362 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x362 != Fp::invalid());
      {
        host_args.at(0) = x349;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x363 = host_outs.at(0);
        auto x364 = host_outs.at(1);
        auto x365 = host_outs.at(2);
        auto x366 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][11 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x363);
          reg = x363;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x364);
          reg = x364;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x365);
          reg = x365;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x366);
          reg = x366;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x349);
        reg = x349;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x367 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x367 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x368 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x368 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x369 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x369 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x370 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x370 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x371 = x359 + x367;
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x372 = x360 + x368;
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x373 = x361 + x369;
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x374 = x362 + x370;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x314);
        reg = x314;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x371);
        reg = x371;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x372);
        reg = x372;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x373);
        reg = x373;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x374);
        reg = x374;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x375 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x375 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x376 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x376 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x377 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x377 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x378 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x378 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x379 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x379 != Fp::invalid());
        host_args.at(0) = x375;
        host_args.at(1) = x376;
        host_args.at(2) = x377;
        host_args.at(3) = x378;
        host_args.at(4) = x379;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x380 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x380 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x381 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x381 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x382 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x382 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x383 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x383 != Fp::invalid());
      host_args.at(0) = x314;
      host_args.at(1) = x359;
      host_args.at(2) = x360;
      host_args.at(3) = x361;
      host_args.at(4) = x362;
      host_args.at(5) = x367;
      host_args.at(6) = x368;
      host_args.at(7) = x369;
      host_args.at(8) = x370;
      host_args.at(9) = x380;
      host_args.at(10) = x381;
      host_args.at(11) = x382;
      host_args.at(12) = x383;
      host(ctx, "log", "%u> ADD: %e + %e -> %e", host_args.data(), 13, host_outs.data(), 0);
    }
    if (x338 != 0) {
      {
        host_args.at(0) = x347;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x384 = host_outs.at(0);
        auto x385 = host_outs.at(1);
        auto x386 = host_outs.at(2);
        auto x387 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x384);
          reg = x384;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x385);
          reg = x385;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x386);
          reg = x386;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x387);
          reg = x387;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x388 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x388 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x389 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x389 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x390 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x390 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x391 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x391 != Fp::invalid());
      {
        host_args.at(0) = x349;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x392 = host_outs.at(0);
        auto x393 = host_outs.at(1);
        auto x394 = host_outs.at(2);
        auto x395 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][11 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x392);
          reg = x392;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x393);
          reg = x393;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x394);
          reg = x394;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x395);
          reg = x395;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x349);
        reg = x349;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x396 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x396 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x397 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x397 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x398 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x398 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x399 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x399 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x400 = x388 - x396;
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x401 = x389 - x397;
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x402 = x390 - x398;
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x403 = x391 - x399;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x314);
        reg = x314;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x400);
        reg = x400;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x401);
        reg = x401;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x402);
        reg = x402;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x403);
        reg = x403;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x404 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x404 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x405 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x405 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x406 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x406 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x407 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x407 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x408 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x408 != Fp::invalid());
        host_args.at(0) = x404;
        host_args.at(1) = x405;
        host_args.at(2) = x406;
        host_args.at(3) = x407;
        host_args.at(4) = x408;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x409 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x409 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x410 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x410 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x411 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x411 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x412 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x412 != Fp::invalid());
      host_args.at(0) = x314;
      host_args.at(1) = x388;
      host_args.at(2) = x389;
      host_args.at(3) = x390;
      host_args.at(4) = x391;
      host_args.at(5) = x396;
      host_args.at(6) = x397;
      host_args.at(7) = x398;
      host_args.at(8) = x399;
      host_args.at(9) = x409;
      host_args.at(10) = x410;
      host_args.at(11) = x411;
      host_args.at(12) = x412;
      host(ctx, "log", "%u> SUB: %e - %e -> %e", host_args.data(), 13, host_outs.data(), 0);
    }
    if (x339 != 0) {
      {
        host_args.at(0) = x347;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x413 = host_outs.at(0);
        auto x414 = host_outs.at(1);
        auto x415 = host_outs.at(2);
        auto x416 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x413);
          reg = x413;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x414);
          reg = x414;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x415);
          reg = x415;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x416);
          reg = x416;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x417 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x417 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x418 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x418 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x419 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x419 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x420 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x420 != Fp::invalid());
      {
        host_args.at(0) = x349;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x421 = host_outs.at(0);
        auto x422 = host_outs.at(1);
        auto x423 = host_outs.at(2);
        auto x424 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][11 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x421);
          reg = x421;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x422);
          reg = x422;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x423);
          reg = x423;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x424);
          reg = x424;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x349);
        reg = x349;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x425 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x425 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x426 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x426 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x427 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x427 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x428 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x428 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x429 = x417 * x425;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x430 = x417 * x426;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x431 = x417 * x427;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x432 = x417 * x428;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x433 = x418 * x428;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x434 = x419 * x428;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x435 = x420 * x428;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x436 = x418 * x425;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x437 = x418 * x426;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x438 = x418 * x427;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x439 = x419 * x425;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x440 = x419 * x426;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x441 = x419 * x427;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x442 = x420 * x425;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x443 = x420 * x426;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x444 = x420 * x427;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x445 = x435 * x299;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x446 = x430 + x436;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x447 = x431 + x437;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x448 = x432 + x438;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x449 = x433 + x441;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x450 = x434 + x444;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x451 = x450 * x299;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x452 = x447 + x439;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x453 = x448 + x440;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x454 = x449 + x443;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x455 = x452 + x445;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x456 = x453 + x442;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x457 = x446 + x451;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x458 = x454 * x299;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x459 = x429 + x458;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x314);
        reg = x314;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x459);
        reg = x459;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x457);
        reg = x457;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x455);
        reg = x455;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x456);
        reg = x456;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x460 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x460 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x461 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x461 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x462 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x462 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x463 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x463 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x464 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x464 != Fp::invalid());
        host_args.at(0) = x460;
        host_args.at(1) = x461;
        host_args.at(2) = x462;
        host_args.at(3) = x463;
        host_args.at(4) = x464;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x465 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x465 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x466 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x466 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x467 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x467 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x468 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x468 != Fp::invalid());
      host_args.at(0) = x314;
      host_args.at(1) = x417;
      host_args.at(2) = x418;
      host_args.at(3) = x419;
      host_args.at(4) = x420;
      host_args.at(5) = x425;
      host_args.at(6) = x426;
      host_args.at(7) = x427;
      host_args.at(8) = x428;
      host_args.at(9) = x465;
      host_args.at(10) = x466;
      host_args.at(11) = x467;
      host_args.at(12) = x468;
      host(ctx, "log", "%u> MUL: %e * %e -> %e", host_args.data(), 13, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/micro.cpp":43:56)
    auto x469 = x340 * x349;
    if (x469 != 0) {
      {
        host_args.at(0) = x347;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x470 = host_outs.at(0);
        auto x471 = host_outs.at(1);
        auto x472 = host_outs.at(2);
        auto x473 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x470);
          reg = x470;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x471);
          reg = x471;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x472);
          reg = x472;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x473);
          reg = x473;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x474 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x474 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x475 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x475 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x476 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x476 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x477 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x477 != Fp::invalid());
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x478 = x476 + x476;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x479 = x477 + x477;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x480 = x474 * x478;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x481 = x474 * x474;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x482 = x475 * x479;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x483 = x476 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x484 = x477 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x485 = x477 * x477;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x486 = x475 * x475;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x487 = x476 * x476;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x488 = x485 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x489 = -x474;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x490 = -x475;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x491 = x480 - x486;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x492 = x482 - x487;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x493 = x491 + x488;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x494 = x493 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x495 = x494 * x493;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x496 = x492 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x497 = x481 + x496;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x498 = x497 * x497;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x499 = x498 + x495;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x500 = inv(x499);
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x501 = x497 * x500;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x502 = x493 * x500;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x503 = x474 * x501;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x504 = x475 * x502;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x505 = x489 * x502;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x506 = x490 * x501;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x507 = x476 * x501;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x508 = x477 * x501;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x509 = x483 * x502;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x510 = x484 * x502;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x511 = x504 - x508;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x512 = x506 - x510;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x513 = x503 + x509;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x514 = x505 + x507;
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x314);
          reg = x314;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][16 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x513);
          reg = x513;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][17 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x512);
          reg = x512;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][18 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x514);
          reg = x514;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][19 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x511);
          reg = x511;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x515 = args[2][15 * steps + ((cycle - 0) & mask)];
          assert(x515 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x516 = args[2][16 * steps + ((cycle - 0) & mask)];
          assert(x516 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x517 = args[2][17 * steps + ((cycle - 0) & mask)];
          assert(x517 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x518 = args[2][18 * steps + ((cycle - 0) & mask)];
          assert(x518 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x519 = args[2][19 * steps + ((cycle - 0) & mask)];
          assert(x519 != Fp::invalid());
          host_args.at(0) = x515;
          host_args.at(1) = x516;
          host_args.at(2) = x517;
          host_args.at(3) = x518;
          host_args.at(4) = x519;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x520 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x520 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x521 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x521 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x522 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x522 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x523 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x523 != Fp::invalid());
      host_args.at(0) = x474;
      host_args.at(1) = x475;
      host_args.at(2) = x476;
      host_args.at(3) = x477;
      host_args.at(4) = x520;
      host_args.at(5) = x521;
      host_args.at(6) = x522;
      host_args.at(7) = x523;
      host(ctx, "log", "INV: %e -> %e", host_args.data(), 8, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/micro.cpp":50:62)
    auto x524 = x310 - x349;
    // loc("zirgen/circuit/recursion/micro.cpp":50:62)
    auto x525 = x340 * x524;
    if (x525 != 0) {
      {
        host_args.at(0) = x347;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x526 = host_outs.at(0);
        auto x527 = host_outs.at(1);
        auto x528 = host_outs.at(2);
        auto x529 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x526);
          reg = x526;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x527);
          reg = x527;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x528);
          reg = x528;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x529);
          reg = x529;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x530 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x530 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/micro.cpp":55:22)
        auto x531 = inv(x530);
        // loc("zirgen/circuit/recursion/micro.cpp":55:7)
        {
          auto& reg = args[2][101 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x531);
          reg = x531;
        }
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/extra(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
        auto x532 = args[2][101 * steps + ((cycle - 0) & mask)];
        assert(x532 != Fp::invalid());
        // loc("zirgen/circuit/recursion/micro.cpp":56:36)
        auto x533 = x532 * x530;
        // loc("zirgen/circuit/recursion/micro.cpp":56:32)
        auto x534 = x310 - x533;
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x314);
          reg = x314;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][16 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x534);
          reg = x534;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][17 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][18 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][19 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x535 = args[2][15 * steps + ((cycle - 0) & mask)];
          assert(x535 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x536 = args[2][16 * steps + ((cycle - 0) & mask)];
          assert(x536 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x537 = args[2][17 * steps + ((cycle - 0) & mask)];
          assert(x537 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x538 = args[2][18 * steps + ((cycle - 0) & mask)];
          assert(x538 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x539 = args[2][19 * steps + ((cycle - 0) & mask)];
          assert(x539 != Fp::invalid());
          host_args.at(0) = x535;
          host_args.at(1) = x536;
          host_args.at(2) = x537;
          host_args.at(3) = x538;
          host_args.at(4) = x539;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x540 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x540 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x541 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x541 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x542 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x542 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x543 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x543 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x544 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x544 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x545 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x545 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x546 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x546 != Fp::invalid());
      host_args.at(0) = x314;
      host_args.at(1) = x530;
      host_args.at(2) = x541;
      host_args.at(3) = x542;
      host_args.at(4) = x543;
      host_args.at(5) = x540;
      host_args.at(6) = x544;
      host_args.at(7) = x545;
      host_args.at(8) = x546;
      host(ctx, "log", "%u> IS_ZERO: %e -> %e", host_args.data(), 9, host_outs.data(), 0);
    }
    if (x341 != 0) {
      {
        host_args.at(0) = x347;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x547 = host_outs.at(0);
        auto x548 = host_outs.at(1);
        auto x549 = host_outs.at(2);
        auto x550 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x547);
          reg = x547;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x548);
          reg = x548;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x549);
          reg = x549;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x550);
          reg = x550;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x551 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x551 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x552 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x552 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x553 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x553 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x554 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x554 != Fp::invalid());
      {
        host_args.at(0) = x349;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x555 = host_outs.at(0);
        auto x556 = host_outs.at(1);
        auto x557 = host_outs.at(2);
        auto x558 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][11 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x555);
          reg = x555;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x556);
          reg = x556;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x557);
          reg = x557;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x558);
          reg = x558;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x349);
        reg = x349;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x559 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x559 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x560 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x560 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x561 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x561 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x562 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x562 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x563 = x551 - x559;
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x564 = x552 - x560;
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x565 = x553 - x561;
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x566 = x554 - x562;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x314);
        reg = x314;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x563);
        reg = x563;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x564);
        reg = x564;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x565);
        reg = x565;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x566);
        reg = x566;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x567 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x567 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x568 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x568 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x569 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x569 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x570 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x570 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x571 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x571 != Fp::invalid());
        host_args.at(0) = x567;
        host_args.at(1) = x568;
        host_args.at(2) = x569;
        host_args.at(3) = x570;
        host_args.at(4) = x571;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      host_args.at(0) = x314;
      host_args.at(1) = x551;
      host_args.at(2) = x552;
      host_args.at(3) = x553;
      host_args.at(4) = x554;
      host_args.at(5) = x559;
      host_args.at(6) = x560;
      host_args.at(7) = x561;
      host_args.at(8) = x562;
      host(ctx, "log", "%u> EQ: %e == %e", host_args.data(), 9, host_outs.data(), 0);
    }
    if (x342 != 0) {
      host_args.at(0) = x314;
      host_args.at(1) = x347;
      host_args.at(2) = x349;
      host(ctx, "log", "%u> READ_IOP_HEADER: %u %u", host_args.data(), 3, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][6 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][7 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][8 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][9 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x314);
        reg = x314;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x572 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x572 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x573 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x573 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x574 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x574 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x575 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x575 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x576 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x576 != Fp::invalid());
        host_args.at(0) = x572;
        host_args.at(1) = x573;
        host_args.at(2) = x574;
        host_args.at(3) = x575;
        host_args.at(4) = x576;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      {
        host_args.at(0) = x347;
        host_args.at(1) = x349;
        host(ctx, "readIOPHeader", "", host_args.data(), 2, host_outs.data(), 0);
      }
    }
    if (x343 != 0) {
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][6 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][7 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][8 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][9 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        host_args.at(0) = x347;
        host_args.at(1) = x349;
        host_args.at(2) = x348;
        host(ctx, "readIOPBody", "", host_args.data(), 3, host_outs.data(), 4);
        auto x577 = host_outs.at(0);
        auto x578 = host_outs.at(1);
        auto x579 = host_outs.at(2);
        auto x580 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x314);
          reg = x314;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][16 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x577);
          reg = x577;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][17 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x578);
          reg = x578;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][18 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x579);
          reg = x579;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][19 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x580);
          reg = x580;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x581 = args[2][15 * steps + ((cycle - 0) & mask)];
          assert(x581 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x582 = args[2][16 * steps + ((cycle - 0) & mask)];
          assert(x582 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x583 = args[2][17 * steps + ((cycle - 0) & mask)];
          assert(x583 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x584 = args[2][18 * steps + ((cycle - 0) & mask)];
          assert(x584 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x585 = args[2][19 * steps + ((cycle - 0) & mask)];
          assert(x585 != Fp::invalid());
          host_args.at(0) = x581;
          host_args.at(1) = x582;
          host_args.at(2) = x583;
          host_args.at(3) = x584;
          host_args.at(4) = x585;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x586 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x586 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x587 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x587 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x588 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x588 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x589 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x589 != Fp::invalid());
      host_args.at(0) = x314;
      host_args.at(1) = x347;
      host_args.at(2) = x349;
      host_args.at(3) = x586;
      host_args.at(4) = x587;
      host_args.at(5) = x588;
      host_args.at(6) = x589;
      host(ctx, "log", "%u> READ_IOP_BODY: %u %u -> %e", host_args.data(), 7, host_outs.data(), 0);
    }
    if (x344 != 0) {
      host_args.at(0) = x314;
      host_args.at(1) = x347;
      host_args.at(2) = x349;
      host_args.at(3) = x348;
      host(ctx, "log", "%u> MIX_RNG: %u, %u, %u", host_args.data(), 4, host_outs.data(), 0);
      {
        host_args.at(0) = x347;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x590 = host_outs.at(0);
        auto x591 = host_outs.at(1);
        auto x592 = host_outs.at(2);
        auto x593 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x590);
          reg = x590;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x591);
          reg = x591;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x592);
          reg = x592;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x593);
          reg = x593;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      {
        host_args.at(0) = x349;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x594 = host_outs.at(0);
        auto x595 = host_outs.at(1);
        auto x596 = host_outs.at(2);
        auto x597 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][11 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x594);
          reg = x594;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x595);
          reg = x595;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x596);
          reg = x596;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x597);
          reg = x597;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x349);
        reg = x349;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x598 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x598 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x599 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x599 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x600 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x600 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x601 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x601 != Fp::invalid());
      host_args.at(0) = x598;
      host_args.at(1) = x599;
      host_args.at(2) = x600;
      host_args.at(3) = x601;
      host(ctx, "log", "  in0=[%x %x], in1=[%x %x]", host_args.data(), 4, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/extra(Reg)"("zirgen/circuit/recursion/micro.cpp":107:71))
      auto x602 = args[2][125 * steps + ((cycle - 1) & mask)];
      if (x602 == Fp::invalid()) x602 = 0;
      // loc("zirgen/circuit/recursion/micro.cpp":107:15)
      auto x603 = x348 * x602;
      host_args.at(0) = x603;
      host(ctx, "log", "  prev_val = %u", host_args.data(), 1, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/micro.cpp":109:11)
      auto x604 = x603 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":109:11)
      auto x605 = x604 + x599;
      // loc("zirgen/circuit/recursion/micro.cpp":110:11)
      auto x606 = x605 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":110:11)
      auto x607 = x606 + x598;
      // loc("zirgen/circuit/recursion/micro.cpp":111:11)
      auto x608 = x607 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":111:11)
      auto x609 = x608 + x601;
      // loc("zirgen/circuit/recursion/micro.cpp":112:11)
      auto x610 = x609 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":112:11)
      auto x611 = x610 + x600;
      host_args.at(0) = x611;
      host(ctx, "log", "  val = %u", host_args.data(), 1, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/micro.cpp":114:5)
      {
        auto& reg = args[2][101 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x611);
        reg = x611;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x314);
        reg = x314;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x611);
        reg = x611;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x612 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x612 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x613 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x613 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x614 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x614 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x615 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x615 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x616 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x616 != Fp::invalid());
        host_args.at(0) = x612;
        host_args.at(1) = x613;
        host_args.at(2) = x614;
        host_args.at(3) = x615;
        host_args.at(4) = x616;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    if (x345 != 0) {
      {
        host_args.at(0) = x347;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x617 = host_outs.at(0);
        auto x618 = host_outs.at(1);
        auto x619 = host_outs.at(2);
        auto x620 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x617);
          reg = x617;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x618);
          reg = x618;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x619);
          reg = x619;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x620);
          reg = x620;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x621 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x621 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":119:31)
      auto x622 = x348 * x621;
      // loc("zirgen/circuit/recursion/micro.cpp":119:17)
      auto x623 = x349 + x622;
      {
        host_args.at(0) = x623;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x624 = host_outs.at(0);
        auto x625 = host_outs.at(1);
        auto x626 = host_outs.at(2);
        auto x627 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][11 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x624);
          reg = x624;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x625);
          reg = x625;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x626);
          reg = x626;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x627);
          reg = x627;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x623);
        reg = x623;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x628 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x628 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x629 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x629 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x630 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x630 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x631 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x631 != Fp::invalid());
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x314);
        reg = x314;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x628);
        reg = x628;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x629);
        reg = x629;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x630);
        reg = x630;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x631);
        reg = x631;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x632 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x632 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x633 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x633 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x634 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x634 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x635 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x635 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x636 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x636 != Fp::invalid());
        host_args.at(0) = x632;
        host_args.at(1) = x633;
        host_args.at(2) = x634;
        host_args.at(3) = x635;
        host_args.at(4) = x636;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      host_args.at(0) = x314;
      host_args.at(1) = x347;
      host_args.at(2) = x349;
      host_args.at(3) = x348;
      host_args.at(4) = x621;
      host_args.at(5) = x628;
      host_args.at(6) = x629;
      host_args.at(7) = x630;
      host_args.at(8) = x631;
      host_args.at(9) = x314;
      host(ctx, "log", "%u> SELECT, idx = %u, start = %u, step = %u, idx = %u, writing %e to %u", host_args.data(), 10, host_outs.data(), 0);
    }
    if (x336 != 0) {
      host_args.at(0) = x314;
      host_args.at(1) = x347;
      host_args.at(2) = x349;
      host_args.at(3) = x348;
      host_args.at(4) = x311;
      host(ctx, "log", "%u> EXTRACT: %e", host_args.data(), 5, host_outs.data(), 0);
      {
        host_args.at(0) = x347;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x637 = host_outs.at(0);
        auto x638 = host_outs.at(1);
        auto x639 = host_outs.at(2);
        auto x640 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x637);
          reg = x637;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x638);
          reg = x638;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x639);
          reg = x639;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x640);
          reg = x640;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][5 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x347);
        reg = x347;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x641 = x349 * x348;
      // loc("zirgen/circuit/recursion/micro.cpp":135:30)
      auto x642 = x310 - x348;
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x643 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x643 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x644 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x644 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x645 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x645 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x646 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x646 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":135:15)
      auto x647 = x349 * x642;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x648 = x641 * x646;
      // loc("zirgen/circuit/recursion/micro.cpp":136:15)
      auto x649 = x524 * x348;
      // loc("zirgen/circuit/recursion/micro.cpp":137:15)
      auto x650 = x524 * x642;
      // loc("zirgen/circuit/recursion/micro.cpp":135:15)
      auto x651 = x647 * x645;
      // loc("zirgen/circuit/recursion/micro.cpp":136:15)
      auto x652 = x649 * x644;
      // loc("zirgen/circuit/recursion/micro.cpp":137:15)
      auto x653 = x650 * x643;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x654 = x648 + x651;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x655 = x654 + x652;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x656 = x655 + x653;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x314);
        reg = x314;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x656);
        reg = x656;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x657 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x657 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x658 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x658 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x659 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x659 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x660 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x660 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x661 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x661 != Fp::invalid());
        host_args.at(0) = x657;
        host_args.at(1) = x658;
        host_args.at(2) = x659;
        host_args.at(3) = x660;
        host_args.at(4) = x661;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    // loc("zirgen/circuit/recursion/micro.cpp":153:34)
    auto x662 = x314 + x310;
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[1](recursion::MicroInst)/opcode(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x663 = args[0][12 * steps + ((cycle - 0) & mask)];
    assert(x663 != Fp::invalid());
    {
      // loc("./zirgen/components/onehot.h":37:26)
      auto x664 = (x663 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][102 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x664);
        reg = x664;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x665 = x663 - x310;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x666 = (x665 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][103 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x666);
        reg = x666;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x667 = x663 - x309;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x668 = (x667 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][104 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x668);
        reg = x668;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x669 = x663 - x308;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x670 = (x669 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][105 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x670);
        reg = x670;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x671 = x663 - x307;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x672 = (x671 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][106 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x672);
        reg = x672;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x673 = x663 - x306;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x674 = (x673 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][107 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x674);
        reg = x674;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x675 = x663 - x305;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x676 = (x675 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][108 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x676);
        reg = x676;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x677 = x663 - x304;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x678 = (x677 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][109 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x678);
        reg = x678;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x679 = x663 - x303;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x680 = (x679 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][110 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x680);
        reg = x680;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x681 = x663 - x302;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x682 = (x681 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][111 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x682);
        reg = x682;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x683 = x663 - x301;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x684 = (x683 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][112 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x684);
        reg = x684;
      }
    }
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/add(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x685 = args[2][103 * steps + ((cycle - 0) & mask)];
    assert(x685 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/sub(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x686 = args[2][104 * steps + ((cycle - 0) & mask)];
    assert(x686 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/mul(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x687 = args[2][105 * steps + ((cycle - 0) & mask)];
    assert(x687 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/inv(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x688 = args[2][106 * steps + ((cycle - 0) & mask)];
    assert(x688 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/eq(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x689 = args[2][107 * steps + ((cycle - 0) & mask)];
    assert(x689 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/read_iop_header(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x690 = args[2][108 * steps + ((cycle - 0) & mask)];
    assert(x690 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/read_iop_body(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x691 = args[2][109 * steps + ((cycle - 0) & mask)];
    assert(x691 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/mix_rng(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x692 = args[2][110 * steps + ((cycle - 0) & mask)];
    assert(x692 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/select(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x693 = args[2][111 * steps + ((cycle - 0) & mask)];
    assert(x693 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/extract(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x694 = args[2][112 * steps + ((cycle - 0) & mask)];
    assert(x694 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/decode(OneHot)/constop(Reg)"("zirgen/circuit/recursion/micro.cpp":19:44))
    auto x695 = args[2][102 * steps + ((cycle - 0) & mask)];
    assert(x695 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[1](recursion::MicroInst)/operand[0](Reg)"("zirgen/circuit/recursion/micro.cpp":14:17))
    auto x696 = args[0][13 * steps + ((cycle - 0) & mask)];
    assert(x696 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[1](recursion::MicroInst)/operand[2](Reg)"("zirgen/circuit/recursion/micro.cpp":16:17))
    auto x697 = args[0][15 * steps + ((cycle - 0) & mask)];
    assert(x697 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[1](recursion::MicroInst)/operand[1](Reg)"("zirgen/circuit/recursion/micro.cpp":15:17))
    auto x698 = args[0][14 * steps + ((cycle - 0) & mask)];
    assert(x698 != Fp::invalid());
    if (x695 != 0) {
      host_args.at(0) = x662;
      host_args.at(1) = x696;
      host_args.at(2) = x698;
      host_args.at(3) = x697;
      host_args.at(4) = x311;
      host(ctx, "log", "%u> CONST: %e", host_args.data(), 5, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][21 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][22 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][23 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][24 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][26 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][27 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][28 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][29 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x662);
        reg = x662;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x698);
        reg = x698;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x697);
        reg = x697;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x699 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x699 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x700 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x700 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x701 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x701 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x702 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x702 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x703 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x703 != Fp::invalid());
        host_args.at(0) = x699;
        host_args.at(1) = x700;
        host_args.at(2) = x701;
        host_args.at(3) = x702;
        host_args.at(4) = x703;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    if (x685 != 0) {
      {
        host_args.at(0) = x696;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x704 = host_outs.at(0);
        auto x705 = host_outs.at(1);
        auto x706 = host_outs.at(2);
        auto x707 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x704);
          reg = x704;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x705);
          reg = x705;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x706);
          reg = x706;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x707);
          reg = x707;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x708 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x708 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x709 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x709 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x710 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x710 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x711 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x711 != Fp::invalid());
      {
        host_args.at(0) = x698;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x712 = host_outs.at(0);
        auto x713 = host_outs.at(1);
        auto x714 = host_outs.at(2);
        auto x715 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x712);
          reg = x712;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x713);
          reg = x713;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x714);
          reg = x714;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x715);
          reg = x715;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x698);
        reg = x698;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x716 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x716 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x717 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x717 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x718 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x718 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x719 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x719 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x720 = x708 + x716;
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x721 = x709 + x717;
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x722 = x710 + x718;
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x723 = x711 + x719;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x662);
        reg = x662;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x720);
        reg = x720;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x721);
        reg = x721;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x722);
        reg = x722;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x723);
        reg = x723;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x724 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x724 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x725 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x725 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x726 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x726 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x727 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x727 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x728 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x728 != Fp::invalid());
        host_args.at(0) = x724;
        host_args.at(1) = x725;
        host_args.at(2) = x726;
        host_args.at(3) = x727;
        host_args.at(4) = x728;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x729 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x729 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x730 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x730 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x731 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x731 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x732 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x732 != Fp::invalid());
      host_args.at(0) = x662;
      host_args.at(1) = x708;
      host_args.at(2) = x709;
      host_args.at(3) = x710;
      host_args.at(4) = x711;
      host_args.at(5) = x716;
      host_args.at(6) = x717;
      host_args.at(7) = x718;
      host_args.at(8) = x719;
      host_args.at(9) = x729;
      host_args.at(10) = x730;
      host_args.at(11) = x731;
      host_args.at(12) = x732;
      host(ctx, "log", "%u> ADD: %e + %e -> %e", host_args.data(), 13, host_outs.data(), 0);
    }
    if (x686 != 0) {
      {
        host_args.at(0) = x696;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x733 = host_outs.at(0);
        auto x734 = host_outs.at(1);
        auto x735 = host_outs.at(2);
        auto x736 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x733);
          reg = x733;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x734);
          reg = x734;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x735);
          reg = x735;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x736);
          reg = x736;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x737 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x737 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x738 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x738 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x739 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x739 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x740 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x740 != Fp::invalid());
      {
        host_args.at(0) = x698;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x741 = host_outs.at(0);
        auto x742 = host_outs.at(1);
        auto x743 = host_outs.at(2);
        auto x744 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x741);
          reg = x741;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x742);
          reg = x742;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x743);
          reg = x743;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x744);
          reg = x744;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x698);
        reg = x698;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x745 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x745 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x746 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x746 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x747 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x747 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x748 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x748 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x749 = x737 - x745;
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x750 = x738 - x746;
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x751 = x739 - x747;
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x752 = x740 - x748;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x662);
        reg = x662;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x749);
        reg = x749;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x750);
        reg = x750;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x751);
        reg = x751;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x752);
        reg = x752;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x753 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x753 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x754 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x754 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x755 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x755 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x756 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x756 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x757 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x757 != Fp::invalid());
        host_args.at(0) = x753;
        host_args.at(1) = x754;
        host_args.at(2) = x755;
        host_args.at(3) = x756;
        host_args.at(4) = x757;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x758 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x758 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x759 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x759 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x760 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x760 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x761 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x761 != Fp::invalid());
      host_args.at(0) = x662;
      host_args.at(1) = x737;
      host_args.at(2) = x738;
      host_args.at(3) = x739;
      host_args.at(4) = x740;
      host_args.at(5) = x745;
      host_args.at(6) = x746;
      host_args.at(7) = x747;
      host_args.at(8) = x748;
      host_args.at(9) = x758;
      host_args.at(10) = x759;
      host_args.at(11) = x760;
      host_args.at(12) = x761;
      host(ctx, "log", "%u> SUB: %e - %e -> %e", host_args.data(), 13, host_outs.data(), 0);
    }
    if (x687 != 0) {
      {
        host_args.at(0) = x696;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x762 = host_outs.at(0);
        auto x763 = host_outs.at(1);
        auto x764 = host_outs.at(2);
        auto x765 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x762);
          reg = x762;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x763);
          reg = x763;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x764);
          reg = x764;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x765);
          reg = x765;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x766 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x766 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x767 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x767 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x768 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x768 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x769 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x769 != Fp::invalid());
      {
        host_args.at(0) = x698;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x770 = host_outs.at(0);
        auto x771 = host_outs.at(1);
        auto x772 = host_outs.at(2);
        auto x773 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x770);
          reg = x770;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x771);
          reg = x771;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x772);
          reg = x772;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x773);
          reg = x773;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x698);
        reg = x698;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x774 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x774 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x775 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x775 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x776 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x776 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x777 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x777 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x778 = x766 * x774;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x779 = x766 * x775;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x780 = x766 * x776;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x781 = x766 * x777;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x782 = x767 * x777;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x783 = x768 * x777;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x784 = x769 * x777;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x785 = x767 * x774;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x786 = x767 * x775;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x787 = x767 * x776;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x788 = x768 * x774;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x789 = x768 * x775;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x790 = x768 * x776;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x791 = x769 * x774;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x792 = x769 * x775;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x793 = x769 * x776;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x794 = x784 * x299;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x795 = x779 + x785;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x796 = x780 + x786;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x797 = x781 + x787;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x798 = x782 + x790;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x799 = x783 + x793;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x800 = x799 * x299;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x801 = x796 + x788;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x802 = x797 + x789;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x803 = x798 + x792;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x804 = x801 + x794;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x805 = x802 + x791;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x806 = x795 + x800;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x807 = x803 * x299;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x808 = x778 + x807;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x662);
        reg = x662;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x808);
        reg = x808;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x806);
        reg = x806;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x804);
        reg = x804;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x805);
        reg = x805;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x809 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x809 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x810 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x810 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x811 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x811 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x812 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x812 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x813 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x813 != Fp::invalid());
        host_args.at(0) = x809;
        host_args.at(1) = x810;
        host_args.at(2) = x811;
        host_args.at(3) = x812;
        host_args.at(4) = x813;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x814 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x814 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x815 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x815 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x816 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x816 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x817 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x817 != Fp::invalid());
      host_args.at(0) = x662;
      host_args.at(1) = x766;
      host_args.at(2) = x767;
      host_args.at(3) = x768;
      host_args.at(4) = x769;
      host_args.at(5) = x774;
      host_args.at(6) = x775;
      host_args.at(7) = x776;
      host_args.at(8) = x777;
      host_args.at(9) = x814;
      host_args.at(10) = x815;
      host_args.at(11) = x816;
      host_args.at(12) = x817;
      host(ctx, "log", "%u> MUL: %e * %e -> %e", host_args.data(), 13, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/micro.cpp":43:56)
    auto x818 = x688 * x698;
    if (x818 != 0) {
      {
        host_args.at(0) = x696;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x819 = host_outs.at(0);
        auto x820 = host_outs.at(1);
        auto x821 = host_outs.at(2);
        auto x822 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x819);
          reg = x819;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x820);
          reg = x820;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x821);
          reg = x821;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x822);
          reg = x822;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x823 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x823 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x824 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x824 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x825 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x825 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x826 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x826 != Fp::invalid());
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][26 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][27 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][28 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][29 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x827 = x825 + x825;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x828 = x826 + x826;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x829 = x823 * x827;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x830 = x823 * x823;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x831 = x824 * x828;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x832 = x825 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x833 = x826 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x834 = x826 * x826;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x835 = x824 * x824;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x836 = x825 * x825;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x837 = x834 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x838 = -x823;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x839 = -x824;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x840 = x829 - x835;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x841 = x831 - x836;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x842 = x840 + x837;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x843 = x842 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x844 = x843 * x842;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x845 = x841 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x846 = x830 + x845;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x847 = x846 * x846;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x848 = x847 + x844;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x849 = inv(x848);
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x850 = x846 * x849;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x851 = x842 * x849;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x852 = x823 * x850;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x853 = x824 * x851;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x854 = x838 * x851;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x855 = x839 * x850;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x856 = x825 * x850;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x857 = x826 * x850;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x858 = x832 * x851;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x859 = x833 * x851;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x860 = x853 - x857;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x861 = x855 - x859;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x862 = x852 + x858;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x863 = x854 + x856;
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x662);
          reg = x662;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][31 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x862);
          reg = x862;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][32 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x861);
          reg = x861;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][33 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x863);
          reg = x863;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][34 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x860);
          reg = x860;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x864 = args[2][30 * steps + ((cycle - 0) & mask)];
          assert(x864 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x865 = args[2][31 * steps + ((cycle - 0) & mask)];
          assert(x865 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x866 = args[2][32 * steps + ((cycle - 0) & mask)];
          assert(x866 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x867 = args[2][33 * steps + ((cycle - 0) & mask)];
          assert(x867 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x868 = args[2][34 * steps + ((cycle - 0) & mask)];
          assert(x868 != Fp::invalid());
          host_args.at(0) = x864;
          host_args.at(1) = x865;
          host_args.at(2) = x866;
          host_args.at(3) = x867;
          host_args.at(4) = x868;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x869 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x869 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x870 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x870 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x871 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x871 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x872 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x872 != Fp::invalid());
      host_args.at(0) = x823;
      host_args.at(1) = x824;
      host_args.at(2) = x825;
      host_args.at(3) = x826;
      host_args.at(4) = x869;
      host_args.at(5) = x870;
      host_args.at(6) = x871;
      host_args.at(7) = x872;
      host(ctx, "log", "INV: %e -> %e", host_args.data(), 8, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/micro.cpp":50:62)
    auto x873 = x310 - x698;
    // loc("zirgen/circuit/recursion/micro.cpp":50:62)
    auto x874 = x688 * x873;
    if (x874 != 0) {
      {
        host_args.at(0) = x696;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x875 = host_outs.at(0);
        auto x876 = host_outs.at(1);
        auto x877 = host_outs.at(2);
        auto x878 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x875);
          reg = x875;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x876);
          reg = x876;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x877);
          reg = x877;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x878);
          reg = x878;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][26 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][27 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][28 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][29 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x879 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x879 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/micro.cpp":55:22)
        auto x880 = inv(x879);
        // loc("zirgen/circuit/recursion/micro.cpp":55:7)
        {
          auto& reg = args[2][113 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x880);
          reg = x880;
        }
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/extra(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
        auto x881 = args[2][113 * steps + ((cycle - 0) & mask)];
        assert(x881 != Fp::invalid());
        // loc("zirgen/circuit/recursion/micro.cpp":56:36)
        auto x882 = x881 * x879;
        // loc("zirgen/circuit/recursion/micro.cpp":56:32)
        auto x883 = x310 - x882;
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x662);
          reg = x662;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][31 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x883);
          reg = x883;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][32 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][33 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][34 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x884 = args[2][30 * steps + ((cycle - 0) & mask)];
          assert(x884 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x885 = args[2][31 * steps + ((cycle - 0) & mask)];
          assert(x885 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x886 = args[2][32 * steps + ((cycle - 0) & mask)];
          assert(x886 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x887 = args[2][33 * steps + ((cycle - 0) & mask)];
          assert(x887 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x888 = args[2][34 * steps + ((cycle - 0) & mask)];
          assert(x888 != Fp::invalid());
          host_args.at(0) = x884;
          host_args.at(1) = x885;
          host_args.at(2) = x886;
          host_args.at(3) = x887;
          host_args.at(4) = x888;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x889 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x889 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x890 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x890 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x891 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x891 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x892 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x892 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x893 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x893 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x894 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x894 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x895 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x895 != Fp::invalid());
      host_args.at(0) = x662;
      host_args.at(1) = x879;
      host_args.at(2) = x890;
      host_args.at(3) = x891;
      host_args.at(4) = x892;
      host_args.at(5) = x889;
      host_args.at(6) = x893;
      host_args.at(7) = x894;
      host_args.at(8) = x895;
      host(ctx, "log", "%u> IS_ZERO: %e -> %e", host_args.data(), 9, host_outs.data(), 0);
    }
    if (x689 != 0) {
      {
        host_args.at(0) = x696;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x896 = host_outs.at(0);
        auto x897 = host_outs.at(1);
        auto x898 = host_outs.at(2);
        auto x899 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x896);
          reg = x896;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x897);
          reg = x897;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x898);
          reg = x898;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x899);
          reg = x899;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x900 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x900 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x901 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x901 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x902 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x902 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x903 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x903 != Fp::invalid());
      {
        host_args.at(0) = x698;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x904 = host_outs.at(0);
        auto x905 = host_outs.at(1);
        auto x906 = host_outs.at(2);
        auto x907 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x904);
          reg = x904;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x905);
          reg = x905;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x906);
          reg = x906;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x907);
          reg = x907;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x698);
        reg = x698;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x908 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x908 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x909 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x909 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x910 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x910 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x911 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x911 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x912 = x900 - x908;
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x913 = x901 - x909;
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x914 = x902 - x910;
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x915 = x903 - x911;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x662);
        reg = x662;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x912);
        reg = x912;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x913);
        reg = x913;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x914);
        reg = x914;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x915);
        reg = x915;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x916 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x916 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x917 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x917 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x918 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x918 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x919 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x919 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x920 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x920 != Fp::invalid());
        host_args.at(0) = x916;
        host_args.at(1) = x917;
        host_args.at(2) = x918;
        host_args.at(3) = x919;
        host_args.at(4) = x920;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      host_args.at(0) = x662;
      host_args.at(1) = x900;
      host_args.at(2) = x901;
      host_args.at(3) = x902;
      host_args.at(4) = x903;
      host_args.at(5) = x908;
      host_args.at(6) = x909;
      host_args.at(7) = x910;
      host_args.at(8) = x911;
      host(ctx, "log", "%u> EQ: %e == %e", host_args.data(), 9, host_outs.data(), 0);
    }
    if (x690 != 0) {
      host_args.at(0) = x662;
      host_args.at(1) = x696;
      host_args.at(2) = x698;
      host(ctx, "log", "%u> READ_IOP_HEADER: %u %u", host_args.data(), 3, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][21 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][22 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][23 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][24 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][26 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][27 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][28 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][29 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x662);
        reg = x662;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x921 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x921 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x922 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x922 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x923 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x923 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x924 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x924 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x925 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x925 != Fp::invalid());
        host_args.at(0) = x921;
        host_args.at(1) = x922;
        host_args.at(2) = x923;
        host_args.at(3) = x924;
        host_args.at(4) = x925;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      {
        host_args.at(0) = x696;
        host_args.at(1) = x698;
        host(ctx, "readIOPHeader", "", host_args.data(), 2, host_outs.data(), 0);
      }
    }
    if (x691 != 0) {
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][21 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][22 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][23 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][24 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][26 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][27 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][28 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][29 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        host_args.at(0) = x696;
        host_args.at(1) = x698;
        host_args.at(2) = x697;
        host(ctx, "readIOPBody", "", host_args.data(), 3, host_outs.data(), 4);
        auto x926 = host_outs.at(0);
        auto x927 = host_outs.at(1);
        auto x928 = host_outs.at(2);
        auto x929 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x662);
          reg = x662;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][31 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x926);
          reg = x926;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][32 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x927);
          reg = x927;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][33 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x928);
          reg = x928;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][34 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x929);
          reg = x929;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x930 = args[2][30 * steps + ((cycle - 0) & mask)];
          assert(x930 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x931 = args[2][31 * steps + ((cycle - 0) & mask)];
          assert(x931 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x932 = args[2][32 * steps + ((cycle - 0) & mask)];
          assert(x932 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x933 = args[2][33 * steps + ((cycle - 0) & mask)];
          assert(x933 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x934 = args[2][34 * steps + ((cycle - 0) & mask)];
          assert(x934 != Fp::invalid());
          host_args.at(0) = x930;
          host_args.at(1) = x931;
          host_args.at(2) = x932;
          host_args.at(3) = x933;
          host_args.at(4) = x934;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x935 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x935 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x936 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x936 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x937 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x937 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x938 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x938 != Fp::invalid());
      host_args.at(0) = x662;
      host_args.at(1) = x696;
      host_args.at(2) = x698;
      host_args.at(3) = x935;
      host_args.at(4) = x936;
      host_args.at(5) = x937;
      host_args.at(6) = x938;
      host(ctx, "log", "%u> READ_IOP_BODY: %u %u -> %e", host_args.data(), 7, host_outs.data(), 0);
    }
    if (x692 != 0) {
      host_args.at(0) = x662;
      host_args.at(1) = x696;
      host_args.at(2) = x698;
      host_args.at(3) = x697;
      host(ctx, "log", "%u> MIX_RNG: %u, %u, %u", host_args.data(), 4, host_outs.data(), 0);
      {
        host_args.at(0) = x696;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x939 = host_outs.at(0);
        auto x940 = host_outs.at(1);
        auto x941 = host_outs.at(2);
        auto x942 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x939);
          reg = x939;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x940);
          reg = x940;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x941);
          reg = x941;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x942);
          reg = x942;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      {
        host_args.at(0) = x698;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x943 = host_outs.at(0);
        auto x944 = host_outs.at(1);
        auto x945 = host_outs.at(2);
        auto x946 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x943);
          reg = x943;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x944);
          reg = x944;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x945);
          reg = x945;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x946);
          reg = x946;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x698);
        reg = x698;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x947 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x947 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x948 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x948 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x949 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x949 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x950 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x950 != Fp::invalid());
      host_args.at(0) = x947;
      host_args.at(1) = x948;
      host_args.at(2) = x949;
      host_args.at(3) = x950;
      host(ctx, "log", "  in0=[%x %x], in1=[%x %x]", host_args.data(), 4, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[0](recursion::MicroOp)/extra(Reg)"("zirgen/circuit/recursion/micro.cpp":107:71))
      auto x951 = args[2][101 * steps + ((cycle - 0) & mask)];
      if (x951 == Fp::invalid()) x951 = 0;
      // loc("zirgen/circuit/recursion/micro.cpp":107:15)
      auto x952 = x697 * x951;
      host_args.at(0) = x952;
      host(ctx, "log", "  prev_val = %u", host_args.data(), 1, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/micro.cpp":109:11)
      auto x953 = x952 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":109:11)
      auto x954 = x953 + x948;
      // loc("zirgen/circuit/recursion/micro.cpp":110:11)
      auto x955 = x954 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":110:11)
      auto x956 = x955 + x947;
      // loc("zirgen/circuit/recursion/micro.cpp":111:11)
      auto x957 = x956 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":111:11)
      auto x958 = x957 + x950;
      // loc("zirgen/circuit/recursion/micro.cpp":112:11)
      auto x959 = x958 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":112:11)
      auto x960 = x959 + x949;
      host_args.at(0) = x960;
      host(ctx, "log", "  val = %u", host_args.data(), 1, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/micro.cpp":114:5)
      {
        auto& reg = args[2][113 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x960);
        reg = x960;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x662);
        reg = x662;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x960);
        reg = x960;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x961 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x961 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x962 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x962 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x963 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x963 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x964 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x964 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x965 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x965 != Fp::invalid());
        host_args.at(0) = x961;
        host_args.at(1) = x962;
        host_args.at(2) = x963;
        host_args.at(3) = x964;
        host_args.at(4) = x965;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    if (x693 != 0) {
      {
        host_args.at(0) = x696;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x966 = host_outs.at(0);
        auto x967 = host_outs.at(1);
        auto x968 = host_outs.at(2);
        auto x969 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x966);
          reg = x966;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x967);
          reg = x967;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x968);
          reg = x968;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x969);
          reg = x969;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x970 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x970 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":119:31)
      auto x971 = x697 * x970;
      // loc("zirgen/circuit/recursion/micro.cpp":119:17)
      auto x972 = x698 + x971;
      {
        host_args.at(0) = x972;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x973 = host_outs.at(0);
        auto x974 = host_outs.at(1);
        auto x975 = host_outs.at(2);
        auto x976 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x973);
          reg = x973;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x974);
          reg = x974;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x975);
          reg = x975;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x976);
          reg = x976;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x972);
        reg = x972;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x977 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x977 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x978 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x978 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x979 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x979 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x980 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x980 != Fp::invalid());
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x662);
        reg = x662;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x977);
        reg = x977;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x978);
        reg = x978;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x979);
        reg = x979;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x980);
        reg = x980;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x981 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x981 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x982 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x982 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x983 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x983 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x984 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x984 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x985 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x985 != Fp::invalid());
        host_args.at(0) = x981;
        host_args.at(1) = x982;
        host_args.at(2) = x983;
        host_args.at(3) = x984;
        host_args.at(4) = x985;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      host_args.at(0) = x662;
      host_args.at(1) = x696;
      host_args.at(2) = x698;
      host_args.at(3) = x697;
      host_args.at(4) = x970;
      host_args.at(5) = x977;
      host_args.at(6) = x978;
      host_args.at(7) = x979;
      host_args.at(8) = x980;
      host_args.at(9) = x662;
      host(ctx, "log", "%u> SELECT, idx = %u, start = %u, step = %u, idx = %u, writing %e to %u", host_args.data(), 10, host_outs.data(), 0);
    }
    if (x694 != 0) {
      host_args.at(0) = x662;
      host_args.at(1) = x696;
      host_args.at(2) = x698;
      host_args.at(3) = x697;
      host_args.at(4) = x311;
      host(ctx, "log", "%u> EXTRACT: %e", host_args.data(), 5, host_outs.data(), 0);
      {
        host_args.at(0) = x696;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x986 = host_outs.at(0);
        auto x987 = host_outs.at(1);
        auto x988 = host_outs.at(2);
        auto x989 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x986);
          reg = x986;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x987);
          reg = x987;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x988);
          reg = x988;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x989);
          reg = x989;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x696);
        reg = x696;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][26 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][27 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][28 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][29 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x990 = x698 * x697;
      // loc("zirgen/circuit/recursion/micro.cpp":135:30)
      auto x991 = x310 - x697;
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x992 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x992 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x993 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x993 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x994 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x994 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x995 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x995 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":135:15)
      auto x996 = x698 * x991;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x997 = x990 * x995;
      // loc("zirgen/circuit/recursion/micro.cpp":136:15)
      auto x998 = x873 * x697;
      // loc("zirgen/circuit/recursion/micro.cpp":137:15)
      auto x999 = x873 * x991;
      // loc("zirgen/circuit/recursion/micro.cpp":135:15)
      auto x1000 = x996 * x994;
      // loc("zirgen/circuit/recursion/micro.cpp":136:15)
      auto x1001 = x998 * x993;
      // loc("zirgen/circuit/recursion/micro.cpp":137:15)
      auto x1002 = x999 * x992;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x1003 = x997 + x1000;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x1004 = x1003 + x1001;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x1005 = x1004 + x1002;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x662);
        reg = x662;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1005);
        reg = x1005;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1006 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x1006 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1007 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x1007 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1008 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x1008 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1009 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x1009 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1010 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x1010 != Fp::invalid());
        host_args.at(0) = x1006;
        host_args.at(1) = x1007;
        host_args.at(2) = x1008;
        host_args.at(3) = x1009;
        host_args.at(4) = x1010;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    // loc("zirgen/circuit/recursion/micro.cpp":153:34)
    auto x1011 = x314 + x309;
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[2](recursion::MicroInst)/opcode(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x1012 = args[0][16 * steps + ((cycle - 0) & mask)];
    assert(x1012 != Fp::invalid());
    {
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1013 = (x1012 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][114 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1013);
        reg = x1013;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1014 = x1012 - x310;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1015 = (x1014 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][115 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1015);
        reg = x1015;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1016 = x1012 - x309;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1017 = (x1016 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][116 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1017);
        reg = x1017;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1018 = x1012 - x308;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1019 = (x1018 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][117 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1019);
        reg = x1019;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1020 = x1012 - x307;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1021 = (x1020 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][118 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1021);
        reg = x1021;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1022 = x1012 - x306;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1023 = (x1022 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][119 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1023);
        reg = x1023;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1024 = x1012 - x305;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1025 = (x1024 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][120 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1025);
        reg = x1025;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1026 = x1012 - x304;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1027 = (x1026 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][121 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1027);
        reg = x1027;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1028 = x1012 - x303;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1029 = (x1028 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][122 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1029);
        reg = x1029;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1030 = x1012 - x302;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1031 = (x1030 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][123 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1031);
        reg = x1031;
      }
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1032 = x1012 - x301;
      // loc("./zirgen/components/onehot.h":37:26)
      auto x1033 = (x1032 == 0) ? Fp(1) : Fp(0);
      // loc("./zirgen/components/onehot.h":37:9)
      {
        auto& reg = args[2][124 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1033);
        reg = x1033;
      }
    }
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/add(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1034 = args[2][115 * steps + ((cycle - 0) & mask)];
    assert(x1034 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/sub(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1035 = args[2][116 * steps + ((cycle - 0) & mask)];
    assert(x1035 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/mul(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1036 = args[2][117 * steps + ((cycle - 0) & mask)];
    assert(x1036 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/inv(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1037 = args[2][118 * steps + ((cycle - 0) & mask)];
    assert(x1037 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/eq(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1038 = args[2][119 * steps + ((cycle - 0) & mask)];
    assert(x1038 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/read_iop_header(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1039 = args[2][120 * steps + ((cycle - 0) & mask)];
    assert(x1039 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/read_iop_body(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1040 = args[2][121 * steps + ((cycle - 0) & mask)];
    assert(x1040 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/mix_rng(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1041 = args[2][122 * steps + ((cycle - 0) & mask)];
    assert(x1041 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/select(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1042 = args[2][123 * steps + ((cycle - 0) & mask)];
    assert(x1042 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/extract(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x1043 = args[2][124 * steps + ((cycle - 0) & mask)];
    assert(x1043 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/decode(OneHot)/constop(Reg)"("zirgen/circuit/recursion/micro.cpp":19:44))
    auto x1044 = args[2][114 * steps + ((cycle - 0) & mask)];
    assert(x1044 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[2](recursion::MicroInst)/operand[0](Reg)"("zirgen/circuit/recursion/micro.cpp":14:17))
    auto x1045 = args[0][17 * steps + ((cycle - 0) & mask)];
    assert(x1045 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[2](recursion::MicroInst)/operand[2](Reg)"("zirgen/circuit/recursion/micro.cpp":16:17))
    auto x1046 = args[0][19 * steps + ((cycle - 0) & mask)];
    assert(x1046 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/micro_ops(recursion::MicroInsts)/inst[2](recursion::MicroInst)/operand[1](Reg)"("zirgen/circuit/recursion/micro.cpp":15:17))
    auto x1047 = args[0][18 * steps + ((cycle - 0) & mask)];
    assert(x1047 != Fp::invalid());
    if (x1044 != 0) {
      host_args.at(0) = x1011;
      host_args.at(1) = x1045;
      host_args.at(2) = x1047;
      host_args.at(3) = x1046;
      host_args.at(4) = x311;
      host(ctx, "log", "%u> CONST: %e", host_args.data(), 5, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][36 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][37 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][38 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][39 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][41 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][42 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][43 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][44 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1011);
        reg = x1011;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1047);
        reg = x1047;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1046);
        reg = x1046;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1048 = args[2][45 * steps + ((cycle - 0) & mask)];
        assert(x1048 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1049 = args[2][46 * steps + ((cycle - 0) & mask)];
        assert(x1049 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1050 = args[2][47 * steps + ((cycle - 0) & mask)];
        assert(x1050 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1051 = args[2][48 * steps + ((cycle - 0) & mask)];
        assert(x1051 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1052 = args[2][49 * steps + ((cycle - 0) & mask)];
        assert(x1052 != Fp::invalid());
        host_args.at(0) = x1048;
        host_args.at(1) = x1049;
        host_args.at(2) = x1050;
        host_args.at(3) = x1051;
        host_args.at(4) = x1052;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    if (x1034 != 0) {
      {
        host_args.at(0) = x1045;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1053 = host_outs.at(0);
        auto x1054 = host_outs.at(1);
        auto x1055 = host_outs.at(2);
        auto x1056 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1053);
          reg = x1053;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1054);
          reg = x1054;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1055);
          reg = x1055;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1056);
          reg = x1056;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1057 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1057 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1058 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1058 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1059 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x1059 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1060 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x1060 != Fp::invalid());
      {
        host_args.at(0) = x1047;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1061 = host_outs.at(0);
        auto x1062 = host_outs.at(1);
        auto x1063 = host_outs.at(2);
        auto x1064 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1061);
          reg = x1061;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1062);
          reg = x1062;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1063);
          reg = x1063;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1064);
          reg = x1064;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1047);
        reg = x1047;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1065 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x1065 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1066 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x1066 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1067 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x1067 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1068 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x1068 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x1069 = x1057 + x1065;
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x1070 = x1058 + x1066;
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x1071 = x1059 + x1067;
      // loc("zirgen/circuit/recursion/micro.cpp":28:30)
      auto x1072 = x1060 + x1068;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1011);
        reg = x1011;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1069);
        reg = x1069;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1070);
        reg = x1070;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1071);
        reg = x1071;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1072);
        reg = x1072;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1073 = args[2][45 * steps + ((cycle - 0) & mask)];
        assert(x1073 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1074 = args[2][46 * steps + ((cycle - 0) & mask)];
        assert(x1074 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1075 = args[2][47 * steps + ((cycle - 0) & mask)];
        assert(x1075 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1076 = args[2][48 * steps + ((cycle - 0) & mask)];
        assert(x1076 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1077 = args[2][49 * steps + ((cycle - 0) & mask)];
        assert(x1077 != Fp::invalid());
        host_args.at(0) = x1073;
        host_args.at(1) = x1074;
        host_args.at(2) = x1075;
        host_args.at(3) = x1076;
        host_args.at(4) = x1077;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1078 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x1078 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1079 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x1079 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1080 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x1080 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1081 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x1081 != Fp::invalid());
      host_args.at(0) = x1011;
      host_args.at(1) = x1057;
      host_args.at(2) = x1058;
      host_args.at(3) = x1059;
      host_args.at(4) = x1060;
      host_args.at(5) = x1065;
      host_args.at(6) = x1066;
      host_args.at(7) = x1067;
      host_args.at(8) = x1068;
      host_args.at(9) = x1078;
      host_args.at(10) = x1079;
      host_args.at(11) = x1080;
      host_args.at(12) = x1081;
      host(ctx, "log", "%u> ADD: %e + %e -> %e", host_args.data(), 13, host_outs.data(), 0);
    }
    if (x1035 != 0) {
      {
        host_args.at(0) = x1045;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1082 = host_outs.at(0);
        auto x1083 = host_outs.at(1);
        auto x1084 = host_outs.at(2);
        auto x1085 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1082);
          reg = x1082;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1083);
          reg = x1083;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1084);
          reg = x1084;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1085);
          reg = x1085;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1086 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1086 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1087 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1087 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1088 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x1088 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1089 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x1089 != Fp::invalid());
      {
        host_args.at(0) = x1047;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1090 = host_outs.at(0);
        auto x1091 = host_outs.at(1);
        auto x1092 = host_outs.at(2);
        auto x1093 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1090);
          reg = x1090;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1091);
          reg = x1091;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1092);
          reg = x1092;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1093);
          reg = x1093;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1047);
        reg = x1047;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1094 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x1094 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1095 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x1095 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1096 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x1096 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1097 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x1097 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x1098 = x1086 - x1094;
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x1099 = x1087 - x1095;
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x1100 = x1088 - x1096;
      // loc("zirgen/circuit/recursion/micro.cpp":34:30)
      auto x1101 = x1089 - x1097;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1011);
        reg = x1011;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1098);
        reg = x1098;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1099);
        reg = x1099;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1100);
        reg = x1100;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1101);
        reg = x1101;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1102 = args[2][45 * steps + ((cycle - 0) & mask)];
        assert(x1102 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1103 = args[2][46 * steps + ((cycle - 0) & mask)];
        assert(x1103 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1104 = args[2][47 * steps + ((cycle - 0) & mask)];
        assert(x1104 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1105 = args[2][48 * steps + ((cycle - 0) & mask)];
        assert(x1105 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1106 = args[2][49 * steps + ((cycle - 0) & mask)];
        assert(x1106 != Fp::invalid());
        host_args.at(0) = x1102;
        host_args.at(1) = x1103;
        host_args.at(2) = x1104;
        host_args.at(3) = x1105;
        host_args.at(4) = x1106;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1107 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x1107 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1108 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x1108 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1109 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x1109 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1110 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x1110 != Fp::invalid());
      host_args.at(0) = x1011;
      host_args.at(1) = x1086;
      host_args.at(2) = x1087;
      host_args.at(3) = x1088;
      host_args.at(4) = x1089;
      host_args.at(5) = x1094;
      host_args.at(6) = x1095;
      host_args.at(7) = x1096;
      host_args.at(8) = x1097;
      host_args.at(9) = x1107;
      host_args.at(10) = x1108;
      host_args.at(11) = x1109;
      host_args.at(12) = x1110;
      host(ctx, "log", "%u> SUB: %e - %e -> %e", host_args.data(), 13, host_outs.data(), 0);
    }
    if (x1036 != 0) {
      {
        host_args.at(0) = x1045;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1111 = host_outs.at(0);
        auto x1112 = host_outs.at(1);
        auto x1113 = host_outs.at(2);
        auto x1114 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1111);
          reg = x1111;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1112);
          reg = x1112;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1113);
          reg = x1113;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1114);
          reg = x1114;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1115 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1115 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1116 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1116 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1117 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x1117 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1118 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x1118 != Fp::invalid());
      {
        host_args.at(0) = x1047;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1119 = host_outs.at(0);
        auto x1120 = host_outs.at(1);
        auto x1121 = host_outs.at(2);
        auto x1122 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1119);
          reg = x1119;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1120);
          reg = x1120;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1121);
          reg = x1121;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1122);
          reg = x1122;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1047);
        reg = x1047;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1123 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x1123 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1124 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x1124 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1125 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x1125 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1126 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x1126 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1127 = x1115 * x1123;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1128 = x1115 * x1124;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1129 = x1115 * x1125;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1130 = x1115 * x1126;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1131 = x1116 * x1126;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1132 = x1117 * x1126;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1133 = x1118 * x1126;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1134 = x1116 * x1123;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1135 = x1116 * x1124;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1136 = x1116 * x1125;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1137 = x1117 * x1123;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1138 = x1117 * x1124;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1139 = x1117 * x1125;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1140 = x1118 * x1123;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1141 = x1118 * x1124;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1142 = x1118 * x1125;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1143 = x1133 * x299;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1144 = x1128 + x1134;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1145 = x1129 + x1135;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1146 = x1130 + x1136;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1147 = x1131 + x1139;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1148 = x1132 + x1142;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1149 = x1148 * x299;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1150 = x1145 + x1137;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1151 = x1146 + x1138;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1152 = x1147 + x1141;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1153 = x1150 + x1143;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1154 = x1151 + x1140;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1155 = x1144 + x1149;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1156 = x1152 * x299;
      // loc("zirgen/circuit/recursion/micro.cpp":40:30)
      auto x1157 = x1127 + x1156;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1011);
        reg = x1011;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1157);
        reg = x1157;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1155);
        reg = x1155;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1153);
        reg = x1153;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1154);
        reg = x1154;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1158 = args[2][45 * steps + ((cycle - 0) & mask)];
        assert(x1158 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1159 = args[2][46 * steps + ((cycle - 0) & mask)];
        assert(x1159 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1160 = args[2][47 * steps + ((cycle - 0) & mask)];
        assert(x1160 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1161 = args[2][48 * steps + ((cycle - 0) & mask)];
        assert(x1161 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1162 = args[2][49 * steps + ((cycle - 0) & mask)];
        assert(x1162 != Fp::invalid());
        host_args.at(0) = x1158;
        host_args.at(1) = x1159;
        host_args.at(2) = x1160;
        host_args.at(3) = x1161;
        host_args.at(4) = x1162;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1163 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x1163 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1164 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x1164 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1165 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x1165 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1166 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x1166 != Fp::invalid());
      host_args.at(0) = x1011;
      host_args.at(1) = x1115;
      host_args.at(2) = x1116;
      host_args.at(3) = x1117;
      host_args.at(4) = x1118;
      host_args.at(5) = x1123;
      host_args.at(6) = x1124;
      host_args.at(7) = x1125;
      host_args.at(8) = x1126;
      host_args.at(9) = x1163;
      host_args.at(10) = x1164;
      host_args.at(11) = x1165;
      host_args.at(12) = x1166;
      host(ctx, "log", "%u> MUL: %e * %e -> %e", host_args.data(), 13, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/micro.cpp":43:56)
    auto x1167 = x1037 * x1047;
    if (x1167 != 0) {
      {
        host_args.at(0) = x1045;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1168 = host_outs.at(0);
        auto x1169 = host_outs.at(1);
        auto x1170 = host_outs.at(2);
        auto x1171 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1168);
          reg = x1168;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1169);
          reg = x1169;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1170);
          reg = x1170;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1171);
          reg = x1171;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1172 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1172 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1173 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1173 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1174 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x1174 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1175 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x1175 != Fp::invalid());
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][41 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][42 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][43 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][44 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1176 = x1174 + x1174;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1177 = x1175 + x1175;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1178 = x1172 * x1176;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1179 = x1172 * x1172;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1180 = x1173 * x1177;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1181 = x1174 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1182 = x1175 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1183 = x1175 * x1175;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1184 = x1173 * x1173;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1185 = x1174 * x1174;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1186 = x1183 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1187 = -x1172;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1188 = -x1173;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1189 = x1178 - x1184;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1190 = x1180 - x1185;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1191 = x1189 + x1186;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1192 = x1191 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1193 = x1192 * x1191;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1194 = x1190 * x300;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1195 = x1179 + x1194;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1196 = x1195 * x1195;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1197 = x1196 + x1193;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1198 = inv(x1197);
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1199 = x1195 * x1198;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1200 = x1191 * x1198;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1201 = x1172 * x1199;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1202 = x1173 * x1200;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1203 = x1187 * x1200;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1204 = x1188 * x1199;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1205 = x1174 * x1199;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1206 = x1175 * x1199;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1207 = x1181 * x1200;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1208 = x1182 * x1200;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1209 = x1202 - x1206;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1210 = x1204 - x1208;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1211 = x1201 + x1207;
        // loc("zirgen/circuit/recursion/micro.cpp":46:42)
        auto x1212 = x1203 + x1205;
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][45 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1011);
          reg = x1011;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][46 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1211);
          reg = x1211;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][47 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1210);
          reg = x1210;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][48 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1212);
          reg = x1212;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][49 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1209);
          reg = x1209;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x1213 = args[2][45 * steps + ((cycle - 0) & mask)];
          assert(x1213 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1214 = args[2][46 * steps + ((cycle - 0) & mask)];
          assert(x1214 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1215 = args[2][47 * steps + ((cycle - 0) & mask)];
          assert(x1215 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1216 = args[2][48 * steps + ((cycle - 0) & mask)];
          assert(x1216 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1217 = args[2][49 * steps + ((cycle - 0) & mask)];
          assert(x1217 != Fp::invalid());
          host_args.at(0) = x1213;
          host_args.at(1) = x1214;
          host_args.at(2) = x1215;
          host_args.at(3) = x1216;
          host_args.at(4) = x1217;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1218 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x1218 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1219 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x1219 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1220 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x1220 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1221 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x1221 != Fp::invalid());
      host_args.at(0) = x1172;
      host_args.at(1) = x1173;
      host_args.at(2) = x1174;
      host_args.at(3) = x1175;
      host_args.at(4) = x1218;
      host_args.at(5) = x1219;
      host_args.at(6) = x1220;
      host_args.at(7) = x1221;
      host(ctx, "log", "INV: %e -> %e", host_args.data(), 8, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/micro.cpp":50:62)
    auto x1222 = x310 - x1047;
    // loc("zirgen/circuit/recursion/micro.cpp":50:62)
    auto x1223 = x1037 * x1222;
    if (x1223 != 0) {
      {
        host_args.at(0) = x1045;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1224 = host_outs.at(0);
        auto x1225 = host_outs.at(1);
        auto x1226 = host_outs.at(2);
        auto x1227 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1224);
          reg = x1224;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1225);
          reg = x1225;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1226);
          reg = x1226;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1227);
          reg = x1227;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][41 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][42 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][43 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][44 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1228 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1228 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/micro.cpp":55:22)
        auto x1229 = inv(x1228);
        // loc("zirgen/circuit/recursion/micro.cpp":55:7)
        {
          auto& reg = args[2][125 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1229);
          reg = x1229;
        }
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[2](recursion::MicroOp)/extra(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
        auto x1230 = args[2][125 * steps + ((cycle - 0) & mask)];
        assert(x1230 != Fp::invalid());
        // loc("zirgen/circuit/recursion/micro.cpp":56:36)
        auto x1231 = x1230 * x1228;
        // loc("zirgen/circuit/recursion/micro.cpp":56:32)
        auto x1232 = x310 - x1231;
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][45 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1011);
          reg = x1011;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][46 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1232);
          reg = x1232;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][47 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][48 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][49 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x1233 = args[2][45 * steps + ((cycle - 0) & mask)];
          assert(x1233 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1234 = args[2][46 * steps + ((cycle - 0) & mask)];
          assert(x1234 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1235 = args[2][47 * steps + ((cycle - 0) & mask)];
          assert(x1235 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1236 = args[2][48 * steps + ((cycle - 0) & mask)];
          assert(x1236 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1237 = args[2][49 * steps + ((cycle - 0) & mask)];
          assert(x1237 != Fp::invalid());
          host_args.at(0) = x1233;
          host_args.at(1) = x1234;
          host_args.at(2) = x1235;
          host_args.at(3) = x1236;
          host_args.at(4) = x1237;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1238 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x1238 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1239 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1239 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1240 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x1240 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1241 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x1241 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1242 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x1242 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1243 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x1243 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1244 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x1244 != Fp::invalid());
      host_args.at(0) = x1011;
      host_args.at(1) = x1228;
      host_args.at(2) = x1239;
      host_args.at(3) = x1240;
      host_args.at(4) = x1241;
      host_args.at(5) = x1238;
      host_args.at(6) = x1242;
      host_args.at(7) = x1243;
      host_args.at(8) = x1244;
      host(ctx, "log", "%u> IS_ZERO: %e -> %e", host_args.data(), 9, host_outs.data(), 0);
    }
    if (x1038 != 0) {
      {
        host_args.at(0) = x1045;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1245 = host_outs.at(0);
        auto x1246 = host_outs.at(1);
        auto x1247 = host_outs.at(2);
        auto x1248 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1245);
          reg = x1245;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1246);
          reg = x1246;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1247);
          reg = x1247;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1248);
          reg = x1248;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1249 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1249 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1250 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1250 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1251 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x1251 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1252 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x1252 != Fp::invalid());
      {
        host_args.at(0) = x1047;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1253 = host_outs.at(0);
        auto x1254 = host_outs.at(1);
        auto x1255 = host_outs.at(2);
        auto x1256 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1253);
          reg = x1253;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1254);
          reg = x1254;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1255);
          reg = x1255;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1256);
          reg = x1256;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1047);
        reg = x1047;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1257 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x1257 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1258 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x1258 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1259 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x1259 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1260 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x1260 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x1261 = x1249 - x1257;
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x1262 = x1250 - x1258;
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x1263 = x1251 - x1259;
      // loc("zirgen/circuit/recursion/micro.cpp":71:30)
      auto x1264 = x1252 - x1260;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1011);
        reg = x1011;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1261);
        reg = x1261;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1262);
        reg = x1262;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1263);
        reg = x1263;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1264);
        reg = x1264;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1265 = args[2][45 * steps + ((cycle - 0) & mask)];
        assert(x1265 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1266 = args[2][46 * steps + ((cycle - 0) & mask)];
        assert(x1266 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1267 = args[2][47 * steps + ((cycle - 0) & mask)];
        assert(x1267 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1268 = args[2][48 * steps + ((cycle - 0) & mask)];
        assert(x1268 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1269 = args[2][49 * steps + ((cycle - 0) & mask)];
        assert(x1269 != Fp::invalid());
        host_args.at(0) = x1265;
        host_args.at(1) = x1266;
        host_args.at(2) = x1267;
        host_args.at(3) = x1268;
        host_args.at(4) = x1269;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      host_args.at(0) = x1011;
      host_args.at(1) = x1249;
      host_args.at(2) = x1250;
      host_args.at(3) = x1251;
      host_args.at(4) = x1252;
      host_args.at(5) = x1257;
      host_args.at(6) = x1258;
      host_args.at(7) = x1259;
      host_args.at(8) = x1260;
      host(ctx, "log", "%u> EQ: %e == %e", host_args.data(), 9, host_outs.data(), 0);
    }
    if (x1039 != 0) {
      host_args.at(0) = x1011;
      host_args.at(1) = x1045;
      host_args.at(2) = x1047;
      host(ctx, "log", "%u> READ_IOP_HEADER: %u %u", host_args.data(), 3, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][36 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][37 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][38 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][39 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][41 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][42 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][43 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][44 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1011);
        reg = x1011;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1270 = args[2][45 * steps + ((cycle - 0) & mask)];
        assert(x1270 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1271 = args[2][46 * steps + ((cycle - 0) & mask)];
        assert(x1271 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1272 = args[2][47 * steps + ((cycle - 0) & mask)];
        assert(x1272 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1273 = args[2][48 * steps + ((cycle - 0) & mask)];
        assert(x1273 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1274 = args[2][49 * steps + ((cycle - 0) & mask)];
        assert(x1274 != Fp::invalid());
        host_args.at(0) = x1270;
        host_args.at(1) = x1271;
        host_args.at(2) = x1272;
        host_args.at(3) = x1273;
        host_args.at(4) = x1274;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      {
        host_args.at(0) = x1045;
        host_args.at(1) = x1047;
        host(ctx, "readIOPHeader", "", host_args.data(), 2, host_outs.data(), 0);
      }
    }
    if (x1040 != 0) {
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][36 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][37 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][38 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][39 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][41 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][42 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][43 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][44 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        host_args.at(0) = x1045;
        host_args.at(1) = x1047;
        host_args.at(2) = x1046;
        host(ctx, "readIOPBody", "", host_args.data(), 3, host_outs.data(), 4);
        auto x1275 = host_outs.at(0);
        auto x1276 = host_outs.at(1);
        auto x1277 = host_outs.at(2);
        auto x1278 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][45 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1011);
          reg = x1011;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][46 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1275);
          reg = x1275;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][47 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1276);
          reg = x1276;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][48 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1277);
          reg = x1277;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][49 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1278);
          reg = x1278;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x1279 = args[2][45 * steps + ((cycle - 0) & mask)];
          assert(x1279 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1280 = args[2][46 * steps + ((cycle - 0) & mask)];
          assert(x1280 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1281 = args[2][47 * steps + ((cycle - 0) & mask)];
          assert(x1281 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1282 = args[2][48 * steps + ((cycle - 0) & mask)];
          assert(x1282 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x1283 = args[2][49 * steps + ((cycle - 0) & mask)];
          assert(x1283 != Fp::invalid());
          host_args.at(0) = x1279;
          host_args.at(1) = x1280;
          host_args.at(2) = x1281;
          host_args.at(3) = x1282;
          host_args.at(4) = x1283;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1284 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x1284 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1285 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x1285 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1286 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x1286 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1287 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x1287 != Fp::invalid());
      host_args.at(0) = x1011;
      host_args.at(1) = x1045;
      host_args.at(2) = x1047;
      host_args.at(3) = x1284;
      host_args.at(4) = x1285;
      host_args.at(5) = x1286;
      host_args.at(6) = x1287;
      host(ctx, "log", "%u> READ_IOP_BODY: %u %u -> %e", host_args.data(), 7, host_outs.data(), 0);
    }
    if (x1041 != 0) {
      host_args.at(0) = x1011;
      host_args.at(1) = x1045;
      host_args.at(2) = x1047;
      host_args.at(3) = x1046;
      host(ctx, "log", "%u> MIX_RNG: %u, %u, %u", host_args.data(), 4, host_outs.data(), 0);
      {
        host_args.at(0) = x1045;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1288 = host_outs.at(0);
        auto x1289 = host_outs.at(1);
        auto x1290 = host_outs.at(2);
        auto x1291 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1288);
          reg = x1288;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1289);
          reg = x1289;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1290);
          reg = x1290;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1291);
          reg = x1291;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      {
        host_args.at(0) = x1047;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1292 = host_outs.at(0);
        auto x1293 = host_outs.at(1);
        auto x1294 = host_outs.at(2);
        auto x1295 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1292);
          reg = x1292;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1293);
          reg = x1293;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1294);
          reg = x1294;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1295);
          reg = x1295;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1047);
        reg = x1047;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1296 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1296 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1297 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1297 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1298 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x1298 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1299 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x1299 != Fp::invalid());
      host_args.at(0) = x1296;
      host_args.at(1) = x1297;
      host_args.at(2) = x1298;
      host_args.at(3) = x1299;
      host(ctx, "log", "  in0=[%x %x], in1=[%x %x]", host_args.data(), 4, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/op[1](recursion::MicroOp)/extra(Reg)"("zirgen/circuit/recursion/micro.cpp":107:71))
      auto x1300 = args[2][113 * steps + ((cycle - 0) & mask)];
      if (x1300 == Fp::invalid()) x1300 = 0;
      // loc("zirgen/circuit/recursion/micro.cpp":107:15)
      auto x1301 = x1046 * x1300;
      host_args.at(0) = x1301;
      host(ctx, "log", "  prev_val = %u", host_args.data(), 1, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/micro.cpp":109:11)
      auto x1302 = x1301 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":109:11)
      auto x1303 = x1302 + x1297;
      // loc("zirgen/circuit/recursion/micro.cpp":110:11)
      auto x1304 = x1303 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":110:11)
      auto x1305 = x1304 + x1296;
      // loc("zirgen/circuit/recursion/micro.cpp":111:11)
      auto x1306 = x1305 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":111:11)
      auto x1307 = x1306 + x1299;
      // loc("zirgen/circuit/recursion/micro.cpp":112:11)
      auto x1308 = x1307 * x298;
      // loc("zirgen/circuit/recursion/micro.cpp":112:11)
      auto x1309 = x1308 + x1298;
      host_args.at(0) = x1309;
      host(ctx, "log", "  val = %u", host_args.data(), 1, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/micro.cpp":114:5)
      {
        auto& reg = args[2][125 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1309);
        reg = x1309;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1011);
        reg = x1011;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1309);
        reg = x1309;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1310 = args[2][45 * steps + ((cycle - 0) & mask)];
        assert(x1310 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1311 = args[2][46 * steps + ((cycle - 0) & mask)];
        assert(x1311 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1312 = args[2][47 * steps + ((cycle - 0) & mask)];
        assert(x1312 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1313 = args[2][48 * steps + ((cycle - 0) & mask)];
        assert(x1313 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1314 = args[2][49 * steps + ((cycle - 0) & mask)];
        assert(x1314 != Fp::invalid());
        host_args.at(0) = x1310;
        host_args.at(1) = x1311;
        host_args.at(2) = x1312;
        host_args.at(3) = x1313;
        host_args.at(4) = x1314;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    if (x1042 != 0) {
      {
        host_args.at(0) = x1045;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1315 = host_outs.at(0);
        auto x1316 = host_outs.at(1);
        auto x1317 = host_outs.at(2);
        auto x1318 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1315);
          reg = x1315;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1316);
          reg = x1316;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1317);
          reg = x1317;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1318);
          reg = x1318;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1319 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1319 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":119:31)
      auto x1320 = x1046 * x1319;
      // loc("zirgen/circuit/recursion/micro.cpp":119:17)
      auto x1321 = x1047 + x1320;
      {
        host_args.at(0) = x1321;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1322 = host_outs.at(0);
        auto x1323 = host_outs.at(1);
        auto x1324 = host_outs.at(2);
        auto x1325 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1322);
          reg = x1322;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1323);
          reg = x1323;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1324);
          reg = x1324;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1325);
          reg = x1325;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1321);
        reg = x1321;
      }
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1326 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x1326 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1327 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x1327 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1328 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x1328 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1329 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x1329 != Fp::invalid());
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1011);
        reg = x1011;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1326);
        reg = x1326;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1327);
        reg = x1327;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1328);
        reg = x1328;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1329);
        reg = x1329;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1330 = args[2][45 * steps + ((cycle - 0) & mask)];
        assert(x1330 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1331 = args[2][46 * steps + ((cycle - 0) & mask)];
        assert(x1331 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1332 = args[2][47 * steps + ((cycle - 0) & mask)];
        assert(x1332 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1333 = args[2][48 * steps + ((cycle - 0) & mask)];
        assert(x1333 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1334 = args[2][49 * steps + ((cycle - 0) & mask)];
        assert(x1334 != Fp::invalid());
        host_args.at(0) = x1330;
        host_args.at(1) = x1331;
        host_args.at(2) = x1332;
        host_args.at(3) = x1333;
        host_args.at(4) = x1334;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      host_args.at(0) = x1011;
      host_args.at(1) = x1045;
      host_args.at(2) = x1047;
      host_args.at(3) = x1046;
      host_args.at(4) = x1319;
      host_args.at(5) = x1326;
      host_args.at(6) = x1327;
      host_args.at(7) = x1328;
      host_args.at(8) = x1329;
      host_args.at(9) = x1011;
      host(ctx, "log", "%u> SELECT, idx = %u, start = %u, step = %u, idx = %u, writing %e to %u", host_args.data(), 10, host_outs.data(), 0);
    }
    if (x1043 != 0) {
      host_args.at(0) = x1011;
      host_args.at(1) = x1045;
      host_args.at(2) = x1047;
      host_args.at(3) = x1046;
      host_args.at(4) = x311;
      host(ctx, "log", "%u> EXTRACT: %e", host_args.data(), 5, host_outs.data(), 0);
      {
        host_args.at(0) = x1045;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1335 = host_outs.at(0);
        auto x1336 = host_outs.at(1);
        auto x1337 = host_outs.at(2);
        auto x1338 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1335);
          reg = x1335;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1336);
          reg = x1336;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1337);
          reg = x1337;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1338);
          reg = x1338;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1045);
        reg = x1045;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][41 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][42 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][43 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][44 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x1339 = x1047 * x1046;
      // loc("zirgen/circuit/recursion/micro.cpp":135:30)
      auto x1340 = x310 - x1046;
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1341 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1341 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1342 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1342 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1343 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x1343 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1344 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x1344 != Fp::invalid());
      // loc("zirgen/circuit/recursion/micro.cpp":135:15)
      auto x1345 = x1047 * x1340;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x1346 = x1339 * x1344;
      // loc("zirgen/circuit/recursion/micro.cpp":136:15)
      auto x1347 = x1222 * x1046;
      // loc("zirgen/circuit/recursion/micro.cpp":137:15)
      auto x1348 = x1222 * x1340;
      // loc("zirgen/circuit/recursion/micro.cpp":135:15)
      auto x1349 = x1345 * x1343;
      // loc("zirgen/circuit/recursion/micro.cpp":136:15)
      auto x1350 = x1347 * x1342;
      // loc("zirgen/circuit/recursion/micro.cpp":137:15)
      auto x1351 = x1348 * x1341;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x1352 = x1346 + x1349;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x1353 = x1352 + x1350;
      // loc("zirgen/circuit/recursion/micro.cpp":134:15)
      auto x1354 = x1353 + x1351;
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1011);
        reg = x1011;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1354);
        reg = x1354;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1355 = args[2][45 * steps + ((cycle - 0) & mask)];
        assert(x1355 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1356 = args[2][46 * steps + ((cycle - 0) & mask)];
        assert(x1356 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1357 = args[2][47 * steps + ((cycle - 0) & mask)];
        assert(x1357 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1358 = args[2][48 * steps + ((cycle - 0) & mask)];
        assert(x1358 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1359 = args[2][49 * steps + ((cycle - 0) & mask)];
        assert(x1359 != Fp::invalid());
        host_args.at(0) = x1355;
        host_args.at(1) = x1356;
        host_args.at(2) = x1357;
        host_args.at(3) = x1358;
        host_args.at(4) = x1359;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
  }
  // loc("top(recursion::Top)/code(recursion::Code)/select(OneHot)/macro_ops(Reg)"("./zirgen/components/mux.h":49:25))
  auto x1360 = args[0][2 * steps + ((cycle - 0) & mask)];
  assert(x1360 != Fp::invalid());
  if (x1360 != 0) {
    // loc("top(recursion::Top)/code(recursion::Code)/write_addr(Reg)"("zirgen/circuit/recursion/top.cpp":23:49))
    auto x1361 = args[0][0 * steps + ((cycle - 0) & mask)];
    assert(x1361 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/opcode(OneHot)/wom_init(Reg)"("./zirgen/components/mux.h":49:25))
    auto x1362 = args[0][9 * steps + ((cycle - 0) & mask)];
    assert(x1362 != Fp::invalid());
    if (x1362 != 0) {
      host(ctx, "log", "WOM_INIT", host_args.data(), 0, host_outs.data(), 0);
    }
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/opcode(OneHot)/wom_fini(Reg)"("./zirgen/components/mux.h":49:25))
    auto x1363 = args[0][10 * steps + ((cycle - 0) & mask)];
    assert(x1363 != Fp::invalid());
    if (x1363 != 0) {
      host(ctx, "log", "WOM_FINI", host_args.data(), 0, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/wom.cpp":17:3)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1361);
        reg = x1361;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
    }
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/opcode(OneHot)/bit_and_elem(Reg)"("./zirgen/components/mux.h":49:25))
    auto x1364 = args[0][11 * steps + ((cycle - 0) & mask)];
    assert(x1364 != Fp::invalid());
    if (x1364 != 0) {
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1365 = args[0][18 * steps + ((cycle - 0) & mask)];
      assert(x1365 != Fp::invalid());
      {
        host_args.at(0) = x1365;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1366 = host_outs.at(0);
        auto x1367 = host_outs.at(1);
        auto x1368 = host_outs.at(2);
        auto x1369 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1366);
          reg = x1366;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1367);
          reg = x1367;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1368);
          reg = x1368;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1369);
          reg = x1369;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1365);
        reg = x1365;
      }
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1370 = args[0][19 * steps + ((cycle - 0) & mask)];
      assert(x1370 != Fp::invalid());
      {
        host_args.at(0) = x1370;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1371 = host_outs.at(0);
        auto x1372 = host_outs.at(1);
        auto x1373 = host_outs.at(2);
        auto x1374 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][17 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1371);
          reg = x1371;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][18 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1372);
          reg = x1372;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][19 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1373);
          reg = x1373;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][20 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1374);
          reg = x1374;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1370);
        reg = x1370;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1375 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1375 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1376 = Fp(x1375.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1376);
          reg = x1376;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1377 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1377 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1378 = Fp(x1377.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1378);
          reg = x1378;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1379 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1379 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1380 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1380 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1381 = x1379 * x1380;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1382 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1382 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1383 = Fp(x1382.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1384 = x1383 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1384);
          reg = x1384;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1385 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1385 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1386 = Fp(x1385.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1387 = x1386 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1387);
          reg = x1387;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1388 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x1388 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1389 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x1389 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1390 = x1388 * x1389;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1391 = x1390 * x309;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1392 = x1381 + x1391;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1393 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1393 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1394 = Fp(x1393.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1395 = x1394 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][40 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1395);
          reg = x1395;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1396 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1396 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1397 = Fp(x1396.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1398 = x1397 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1398);
          reg = x1398;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1399 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x1399 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1400 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x1400 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1401 = x1399 * x1400;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1402 = x1401 * x307;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1403 = x1392 + x1402;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1404 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1404 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1405 = Fp(x1404.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1406 = x1405 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1406);
          reg = x1406;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1407 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1407 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1408 = Fp(x1407.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1409 = x1408 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1409);
          reg = x1409;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1410 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x1410 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1411 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x1411 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1412 = x1410 * x1411;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1413 = x1412 * x303;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1414 = x1403 + x1413;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1415 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1415 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1416 = Fp(x1415.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1417 = x1416 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1417);
          reg = x1417;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1418 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1418 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1419 = Fp(x1418.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1420 = x1419 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][45 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1420);
          reg = x1420;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1421 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x1421 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1422 = args[2][45 * steps + ((cycle - 0) & mask)];
      assert(x1422 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1423 = x1421 * x1422;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1424 = x1423 * x294;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1425 = x1414 + x1424;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1426 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1426 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1427 = Fp(x1426.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1428 = x1427 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][46 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1428);
          reg = x1428;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1429 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1429 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1430 = Fp(x1429.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1431 = x1430 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][47 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1431);
          reg = x1431;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1432 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x1432 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1433 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x1433 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1434 = x1432 * x1433;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1435 = x1434 * x291;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1436 = x1425 + x1435;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1437 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1437 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1438 = Fp(x1437.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1439 = x1438 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][48 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1439);
          reg = x1439;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1440 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1440 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1441 = Fp(x1440.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1442 = x1441 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][49 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1442);
          reg = x1442;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1443 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x1443 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1444 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x1444 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1445 = x1443 * x1444;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1446 = x1445 * x289;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1447 = x1436 + x1446;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1448 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1448 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1449 = Fp(x1448.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1450 = x1449 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][50 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1450);
          reg = x1450;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1451 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1451 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1452 = Fp(x1451.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1453 = x1452 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][51 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1453);
          reg = x1453;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1454 = args[2][50 * steps + ((cycle - 0) & mask)];
      assert(x1454 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1455 = args[2][51 * steps + ((cycle - 0) & mask)];
      assert(x1455 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1456 = x1454 * x1455;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1457 = x1456 * x288;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1458 = x1447 + x1457;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1459 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1459 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1460 = Fp(x1459.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1461 = x1460 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][52 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1461);
          reg = x1461;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1462 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1462 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1463 = Fp(x1462.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1464 = x1463 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][53 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1464);
          reg = x1464;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1465 = args[2][52 * steps + ((cycle - 0) & mask)];
      assert(x1465 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1466 = args[2][53 * steps + ((cycle - 0) & mask)];
      assert(x1466 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1467 = x1465 * x1466;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1468 = x1467 * x285;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1469 = x1458 + x1468;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1470 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1470 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1471 = Fp(x1470.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1472 = x1471 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][54 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1472);
          reg = x1472;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1473 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1473 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1474 = Fp(x1473.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1475 = x1474 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][55 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1475);
          reg = x1475;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1476 = args[2][54 * steps + ((cycle - 0) & mask)];
      assert(x1476 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1477 = args[2][55 * steps + ((cycle - 0) & mask)];
      assert(x1477 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1478 = x1476 * x1477;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1479 = x1478 * x283;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1480 = x1469 + x1479;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1481 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1481 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1482 = Fp(x1481.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1483 = x1482 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][56 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1483);
          reg = x1483;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1484 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1484 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1485 = Fp(x1484.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1486 = x1485 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][57 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1486);
          reg = x1486;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1487 = args[2][56 * steps + ((cycle - 0) & mask)];
      assert(x1487 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1488 = args[2][57 * steps + ((cycle - 0) & mask)];
      assert(x1488 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1489 = x1487 * x1488;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1490 = x1489 * x282;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1491 = x1480 + x1490;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1492 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1492 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1493 = Fp(x1492.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1494 = x1493 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][58 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1494);
          reg = x1494;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1495 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1495 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1496 = Fp(x1495.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1497 = x1496 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][59 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1497);
          reg = x1497;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1498 = args[2][58 * steps + ((cycle - 0) & mask)];
      assert(x1498 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1499 = args[2][59 * steps + ((cycle - 0) & mask)];
      assert(x1499 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1500 = x1498 * x1499;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1501 = x1500 * x279;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1502 = x1491 + x1501;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1503 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1503 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1504 = Fp(x1503.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1505 = x1504 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][60 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1505);
          reg = x1505;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1506 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1506 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1507 = Fp(x1506.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1508 = x1507 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][61 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1508);
          reg = x1508;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1509 = args[2][60 * steps + ((cycle - 0) & mask)];
      assert(x1509 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1510 = args[2][61 * steps + ((cycle - 0) & mask)];
      assert(x1510 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1511 = x1509 * x1510;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1512 = x1511 * x277;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1513 = x1502 + x1512;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1514 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1514 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1515 = Fp(x1514.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1516 = x1515 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][62 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1516);
          reg = x1516;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1517 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1517 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1518 = Fp(x1517.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1519 = x1518 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][63 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1519);
          reg = x1519;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1520 = args[2][62 * steps + ((cycle - 0) & mask)];
      assert(x1520 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1521 = args[2][63 * steps + ((cycle - 0) & mask)];
      assert(x1521 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1522 = x1520 * x1521;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1523 = x1522 * x275;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1524 = x1513 + x1523;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1525 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1525 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1526 = Fp(x1525.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1527 = x1526 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][64 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1527);
          reg = x1527;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1528 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1528 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1529 = Fp(x1528.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1530 = x1529 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][65 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1530);
          reg = x1530;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1531 = args[2][64 * steps + ((cycle - 0) & mask)];
      assert(x1531 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1532 = args[2][65 * steps + ((cycle - 0) & mask)];
      assert(x1532 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1533 = x1531 * x1532;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1534 = x1533 * x274;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1535 = x1524 + x1534;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1536 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1536 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1537 = Fp(x1536.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1538 = x1537 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][66 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1538);
          reg = x1538;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1539 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1539 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1540 = Fp(x1539.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1541 = x1540 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][67 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1541);
          reg = x1541;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1542 = args[2][66 * steps + ((cycle - 0) & mask)];
      assert(x1542 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1543 = args[2][67 * steps + ((cycle - 0) & mask)];
      assert(x1543 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1544 = x1542 * x1543;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1545 = x1544 * x271;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1546 = x1535 + x1545;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1547 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1547 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1548 = Fp(x1547.asUInt32() & x298.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1549 = x1548 * x270;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][68 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1549);
          reg = x1549;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1550 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1550 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1551 = Fp(x1550.asUInt32() & x298.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1552 = x1551 * x270;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][69 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1552);
          reg = x1552;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1553 = args[2][68 * steps + ((cycle - 0) & mask)];
      assert(x1553 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1554 = args[2][69 * steps + ((cycle - 0) & mask)];
      assert(x1554 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1555 = x1553 * x1554;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1556 = x1555 * x298;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1557 = x1546 + x1556;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1558 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1558 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1559 = Fp(x1558.asUInt32() & x269.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1560 = x1559 * x268;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][70 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1560);
          reg = x1560;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1561 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1561 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1562 = Fp(x1561.asUInt32() & x269.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1563 = x1562 * x268;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][71 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1563);
          reg = x1563;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1564 = args[2][70 * steps + ((cycle - 0) & mask)];
      assert(x1564 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1565 = args[2][71 * steps + ((cycle - 0) & mask)];
      assert(x1565 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1566 = x1564 * x1565;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1567 = x1566 * x269;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1568 = x1557 + x1567;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1569 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1569 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1570 = Fp(x1569.asUInt32() & x266.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1571 = x1570 * x267;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][72 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1571);
          reg = x1571;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1572 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1572 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1573 = Fp(x1572.asUInt32() & x266.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1574 = x1573 * x267;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][73 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1574);
          reg = x1574;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1575 = args[2][72 * steps + ((cycle - 0) & mask)];
      assert(x1575 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1576 = args[2][73 * steps + ((cycle - 0) & mask)];
      assert(x1576 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1577 = x1575 * x1576;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1578 = x1577 * x266;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1579 = x1568 + x1578;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1580 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1580 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1581 = Fp(x1580.asUInt32() & x264.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1582 = x1581 * x265;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][74 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1582);
          reg = x1582;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1583 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1583 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1584 = Fp(x1583.asUInt32() & x264.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1585 = x1584 * x265;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][75 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1585);
          reg = x1585;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1586 = args[2][74 * steps + ((cycle - 0) & mask)];
      assert(x1586 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1587 = args[2][75 * steps + ((cycle - 0) & mask)];
      assert(x1587 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1588 = x1586 * x1587;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1589 = x1588 * x264;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1590 = x1579 + x1589;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1591 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1591 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1592 = Fp(x1591.asUInt32() & x263.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1593 = x1592 * x262;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][76 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1593);
          reg = x1593;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1594 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1594 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1595 = Fp(x1594.asUInt32() & x263.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1596 = x1595 * x262;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][77 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1596);
          reg = x1596;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1597 = args[2][76 * steps + ((cycle - 0) & mask)];
      assert(x1597 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1598 = args[2][77 * steps + ((cycle - 0) & mask)];
      assert(x1598 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1599 = x1597 * x1598;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1600 = x1599 * x263;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1601 = x1590 + x1600;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1602 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1602 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1603 = Fp(x1602.asUInt32() & x260.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1604 = x1603 * x261;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][78 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1604);
          reg = x1604;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1605 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1605 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1606 = Fp(x1605.asUInt32() & x260.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1607 = x1606 * x261;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][79 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1607);
          reg = x1607;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1608 = args[2][78 * steps + ((cycle - 0) & mask)];
      assert(x1608 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1609 = args[2][79 * steps + ((cycle - 0) & mask)];
      assert(x1609 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1610 = x1608 * x1609;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1611 = x1610 * x260;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1612 = x1601 + x1611;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1613 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1613 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1614 = Fp(x1613.asUInt32() & x258.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1615 = x1614 * x259;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][80 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1615);
          reg = x1615;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1616 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1616 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1617 = Fp(x1616.asUInt32() & x258.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1618 = x1617 * x259;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][81 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1618);
          reg = x1618;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1619 = args[2][80 * steps + ((cycle - 0) & mask)];
      assert(x1619 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1620 = args[2][81 * steps + ((cycle - 0) & mask)];
      assert(x1620 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1621 = x1619 * x1620;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1622 = x1621 * x258;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1623 = x1612 + x1622;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1624 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1624 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1625 = Fp(x1624.asUInt32() & x256.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1626 = x1625 * x257;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][82 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1626);
          reg = x1626;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1627 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1627 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1628 = Fp(x1627.asUInt32() & x256.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1629 = x1628 * x257;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][83 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1629);
          reg = x1629;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1630 = args[2][82 * steps + ((cycle - 0) & mask)];
      assert(x1630 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1631 = args[2][83 * steps + ((cycle - 0) & mask)];
      assert(x1631 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1632 = x1630 * x1631;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1633 = x1632 * x256;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1634 = x1623 + x1633;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1635 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1635 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1636 = Fp(x1635.asUInt32() & x255.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1637 = x1636 * x254;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][84 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1637);
          reg = x1637;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1638 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1638 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1639 = Fp(x1638.asUInt32() & x255.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1640 = x1639 * x254;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][85 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1640);
          reg = x1640;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1641 = args[2][84 * steps + ((cycle - 0) & mask)];
      assert(x1641 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1642 = args[2][85 * steps + ((cycle - 0) & mask)];
      assert(x1642 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1643 = x1641 * x1642;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1644 = x1643 * x255;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1645 = x1634 + x1644;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1646 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1646 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1647 = Fp(x1646.asUInt32() & x252.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1648 = x1647 * x253;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][86 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1648);
          reg = x1648;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1649 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1649 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1650 = Fp(x1649.asUInt32() & x252.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1651 = x1650 * x253;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][87 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1651);
          reg = x1651;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1652 = args[2][86 * steps + ((cycle - 0) & mask)];
      assert(x1652 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1653 = args[2][87 * steps + ((cycle - 0) & mask)];
      assert(x1653 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1654 = x1652 * x1653;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1655 = x1654 * x252;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1656 = x1645 + x1655;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1657 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1657 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1658 = Fp(x1657.asUInt32() & x250.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1659 = x1658 * x251;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][88 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1659);
          reg = x1659;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1660 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1660 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1661 = Fp(x1660.asUInt32() & x250.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1662 = x1661 * x251;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][89 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1662);
          reg = x1662;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1663 = args[2][88 * steps + ((cycle - 0) & mask)];
      assert(x1663 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1664 = args[2][89 * steps + ((cycle - 0) & mask)];
      assert(x1664 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1665 = x1663 * x1664;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1666 = x1665 * x250;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1667 = x1656 + x1666;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1668 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1668 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1669 = Fp(x1668.asUInt32() & x249.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1670 = x1669 * x248;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][90 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1670);
          reg = x1670;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1671 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1671 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1672 = Fp(x1671.asUInt32() & x249.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1673 = x1672 * x248;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][91 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1673);
          reg = x1673;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1674 = args[2][90 * steps + ((cycle - 0) & mask)];
      assert(x1674 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1675 = args[2][91 * steps + ((cycle - 0) & mask)];
      assert(x1675 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1676 = x1674 * x1675;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1677 = x1676 * x249;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1678 = x1667 + x1677;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1679 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1679 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1680 = Fp(x1679.asUInt32() & x246.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1681 = x1680 * x247;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][92 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1681);
          reg = x1681;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1682 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1682 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1683 = Fp(x1682.asUInt32() & x246.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1684 = x1683 * x247;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][93 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1684);
          reg = x1684;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1685 = args[2][92 * steps + ((cycle - 0) & mask)];
      assert(x1685 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1686 = args[2][93 * steps + ((cycle - 0) & mask)];
      assert(x1686 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1687 = x1685 * x1686;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1688 = x1687 * x246;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1689 = x1678 + x1688;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1690 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1690 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1691 = Fp(x1690.asUInt32() & x244.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1692 = x1691 * x245;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][94 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1692);
          reg = x1692;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1693 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1693 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1694 = Fp(x1693.asUInt32() & x244.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1695 = x1694 * x245;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][95 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1695);
          reg = x1695;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1696 = args[2][94 * steps + ((cycle - 0) & mask)];
      assert(x1696 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1697 = args[2][95 * steps + ((cycle - 0) & mask)];
      assert(x1697 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1698 = x1696 * x1697;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1699 = x1698 * x244;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1700 = x1689 + x1699;
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1701 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x1701 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":75:22)
        auto x1702 = Fp(x1701.asUInt32() & x243.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":75:21)
        auto x1703 = x1702 * x242;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][96 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1703);
          reg = x1703;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1704 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x1704 != Fp::invalid());
        // loc("zirgen/circuit/recursion/bits.cpp":76:22)
        auto x1705 = Fp(x1704.asUInt32() & x243.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":76:21)
        auto x1706 = x1705 * x242;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][97 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1706);
          reg = x1706;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1707 = args[2][96 * steps + ((cycle - 0) & mask)];
      assert(x1707 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/bits_b[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1708 = args[2][97 * steps + ((cycle - 0) & mask)];
      assert(x1708 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1709 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x1709 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1710 = x1707 * x1708;
      // loc("zirgen/circuit/recursion/bits.cpp":80:19)
      auto x1711 = x1710 * x243;
      // loc("zirgen/circuit/recursion/bits.cpp":80:12)
      auto x1712 = x1700 + x1711;
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1713 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x1713 != Fp::invalid());
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][21 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1361);
        reg = x1361;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][22 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1712);
        reg = x1712;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][23 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][24 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x1714 = args[2][21 * steps + ((cycle - 0) & mask)];
        assert(x1714 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1715 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x1715 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1716 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x1716 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1717 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x1717 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x1718 = args[2][25 * steps + ((cycle - 0) & mask)];
        assert(x1718 != Fp::invalid());
        host_args.at(0) = x1714;
        host_args.at(1) = x1715;
        host_args.at(2) = x1716;
        host_args.at(3) = x1717;
        host_args.at(4) = x1718;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1719 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x1719 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1720 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x1720 != Fp::invalid());
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[2](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1721 = args[0][20 * steps + ((cycle - 0) & mask)];
      assert(x1721 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1722 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x1722 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1723 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x1723 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1724 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x1724 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1725 = args[2][25 * steps + ((cycle - 0) & mask)];
      assert(x1725 != Fp::invalid());
      host_args.at(0) = x1365;
      host_args.at(1) = x1370;
      host_args.at(2) = x1709;
      host_args.at(3) = x1719;
      host_args.at(4) = x1713;
      host_args.at(5) = x1720;
      host_args.at(6) = x1721;
      host_args.at(7) = x1712;
      host_args.at(8) = x1722;
      host_args.at(9) = x1723;
      host_args.at(10) = x1724;
      host_args.at(11) = x1725;
      host(ctx, "log", "BIT_AND_ELEM, reading from [%u, %u],  A = [%x, %x], B = [%x, %x], type = %u, Out=%x, Result=%e", host_args.data(), 12, host_outs.data(), 0);
    }
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/opcode(OneHot)/bit_op_shorts(Reg)"("./zirgen/components/mux.h":49:25))
    auto x1726 = args[0][12 * steps + ((cycle - 0) & mask)];
    assert(x1726 != Fp::invalid());
    if (x1726 != 0) {
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1727 = args[0][18 * steps + ((cycle - 0) & mask)];
      assert(x1727 != Fp::invalid());
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1728 = args[0][19 * steps + ((cycle - 0) & mask)];
      assert(x1728 != Fp::invalid());
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[2](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1729 = args[0][20 * steps + ((cycle - 0) & mask)];
      assert(x1729 != Fp::invalid());
      host_args.at(0) = x1727;
      host_args.at(1) = x1728;
      host_args.at(2) = x1729;
      host(ctx, "log", "BIT_OP_SHORTS, reading from [%u, %u], type=%u", host_args.data(), 3, host_outs.data(), 0);
      {
        host_args.at(0) = x1727;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1730 = host_outs.at(0);
        auto x1731 = host_outs.at(1);
        auto x1732 = host_outs.at(2);
        auto x1733 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1730);
          reg = x1730;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1731);
          reg = x1731;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1732);
          reg = x1732;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1733);
          reg = x1733;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1727);
        reg = x1727;
      }
      {
        host_args.at(0) = x1728;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x1734 = host_outs.at(0);
        auto x1735 = host_outs.at(1);
        auto x1736 = host_outs.at(2);
        auto x1737 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][17 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1734);
          reg = x1734;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][18 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1735);
          reg = x1735;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][19 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1736);
          reg = x1736;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][20 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1737);
          reg = x1737;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x1728);
        reg = x1728;
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1738 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x1738 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1739 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x1739 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1740 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x1740 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x1741 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x1741 != Fp::invalid());
      host_args.at(0) = x1738;
      host_args.at(1) = x1739;
      host_args.at(2) = x1740;
      host_args.at(3) = x1741;
      host(ctx, "log", "  A = [%x, %x], B = [%x, %x]", host_args.data(), 4, host_outs.data(), 0);
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1742 = Fp(x1738.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1742);
          reg = x1742;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1743 = Fp(x1740.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][68 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1743);
          reg = x1743;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1744 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x1744 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1745 = args[2][68 * steps + ((cycle - 0) & mask)];
      assert(x1745 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1746 = x1744 * x1745;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1747 = Fp(x1738.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1748 = x1747 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1748);
          reg = x1748;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1749 = Fp(x1740.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1750 = x1749 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][69 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1750);
          reg = x1750;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1751 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x1751 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1752 = args[2][69 * steps + ((cycle - 0) & mask)];
      assert(x1752 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1753 = x1751 * x1752;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1754 = x1753 * x309;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1755 = x1746 + x1754;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1756 = Fp(x1738.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1757 = x1756 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1757);
          reg = x1757;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1758 = Fp(x1740.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1759 = x1758 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][70 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1759);
          reg = x1759;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1760 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x1760 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1761 = args[2][70 * steps + ((cycle - 0) & mask)];
      assert(x1761 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1762 = x1760 * x1761;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1763 = x1762 * x307;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1764 = x1755 + x1763;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1765 = Fp(x1738.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1766 = x1765 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1766);
          reg = x1766;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1767 = Fp(x1740.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1768 = x1767 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][71 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1768);
          reg = x1768;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1769 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x1769 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1770 = args[2][71 * steps + ((cycle - 0) & mask)];
      assert(x1770 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1771 = x1769 * x1770;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1772 = x1771 * x303;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1773 = x1764 + x1772;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1774 = Fp(x1738.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1775 = x1774 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][40 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1775);
          reg = x1775;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1776 = Fp(x1740.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1777 = x1776 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][72 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1777);
          reg = x1777;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1778 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x1778 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1779 = args[2][72 * steps + ((cycle - 0) & mask)];
      assert(x1779 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1780 = x1778 * x1779;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1781 = x1780 * x294;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1782 = x1773 + x1781;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1783 = Fp(x1738.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1784 = x1783 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1784);
          reg = x1784;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1785 = Fp(x1740.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1786 = x1785 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][73 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1786);
          reg = x1786;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1787 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x1787 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1788 = args[2][73 * steps + ((cycle - 0) & mask)];
      assert(x1788 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1789 = x1787 * x1788;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1790 = x1789 * x291;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1791 = x1782 + x1790;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1792 = Fp(x1738.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1793 = x1792 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1793);
          reg = x1793;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1794 = Fp(x1740.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1795 = x1794 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][74 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1795);
          reg = x1795;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1796 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x1796 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1797 = args[2][74 * steps + ((cycle - 0) & mask)];
      assert(x1797 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1798 = x1796 * x1797;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1799 = x1798 * x289;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1800 = x1791 + x1799;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1801 = Fp(x1738.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1802 = x1801 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1802);
          reg = x1802;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1803 = Fp(x1740.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1804 = x1803 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][75 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1804);
          reg = x1804;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1805 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x1805 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1806 = args[2][75 * steps + ((cycle - 0) & mask)];
      assert(x1806 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1807 = x1805 * x1806;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1808 = x1807 * x288;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1809 = x1800 + x1808;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1810 = Fp(x1738.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1811 = x1810 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1811);
          reg = x1811;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1812 = Fp(x1740.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1813 = x1812 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][76 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1813);
          reg = x1813;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1814 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x1814 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1815 = args[2][76 * steps + ((cycle - 0) & mask)];
      assert(x1815 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1816 = x1814 * x1815;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1817 = x1816 * x285;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1818 = x1809 + x1817;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1819 = Fp(x1738.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1820 = x1819 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][45 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1820);
          reg = x1820;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1821 = Fp(x1740.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1822 = x1821 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][77 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1822);
          reg = x1822;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1823 = args[2][45 * steps + ((cycle - 0) & mask)];
      assert(x1823 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1824 = args[2][77 * steps + ((cycle - 0) & mask)];
      assert(x1824 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1825 = x1823 * x1824;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1826 = x1825 * x283;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1827 = x1818 + x1826;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1828 = Fp(x1738.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1829 = x1828 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][46 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1829);
          reg = x1829;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1830 = Fp(x1740.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1831 = x1830 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][78 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1831);
          reg = x1831;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1832 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x1832 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1833 = args[2][78 * steps + ((cycle - 0) & mask)];
      assert(x1833 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1834 = x1832 * x1833;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1835 = x1834 * x282;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1836 = x1827 + x1835;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1837 = Fp(x1738.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1838 = x1837 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][47 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1838);
          reg = x1838;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1839 = Fp(x1740.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1840 = x1839 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][79 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1840);
          reg = x1840;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1841 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x1841 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1842 = args[2][79 * steps + ((cycle - 0) & mask)];
      assert(x1842 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1843 = x1841 * x1842;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1844 = x1843 * x279;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1845 = x1836 + x1844;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1846 = Fp(x1738.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1847 = x1846 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][48 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1847);
          reg = x1847;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1848 = Fp(x1740.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1849 = x1848 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][80 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1849);
          reg = x1849;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1850 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x1850 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1851 = args[2][80 * steps + ((cycle - 0) & mask)];
      assert(x1851 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1852 = x1850 * x1851;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1853 = x1852 * x277;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1854 = x1845 + x1853;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1855 = Fp(x1738.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1856 = x1855 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][49 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1856);
          reg = x1856;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1857 = Fp(x1740.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1858 = x1857 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][81 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1858);
          reg = x1858;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1859 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x1859 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1860 = args[2][81 * steps + ((cycle - 0) & mask)];
      assert(x1860 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1861 = x1859 * x1860;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1862 = x1861 * x275;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1863 = x1854 + x1862;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1864 = Fp(x1738.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1865 = x1864 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][50 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1865);
          reg = x1865;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1866 = Fp(x1740.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1867 = x1866 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][82 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1867);
          reg = x1867;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1868 = args[2][50 * steps + ((cycle - 0) & mask)];
      assert(x1868 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1869 = args[2][82 * steps + ((cycle - 0) & mask)];
      assert(x1869 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1870 = x1868 * x1869;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1871 = x1870 * x274;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1872 = x1863 + x1871;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1873 = Fp(x1738.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1874 = x1873 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][51 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1874);
          reg = x1874;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1875 = Fp(x1740.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1876 = x1875 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][83 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1876);
          reg = x1876;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1877 = args[2][51 * steps + ((cycle - 0) & mask)];
      assert(x1877 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1878 = args[2][83 * steps + ((cycle - 0) & mask)];
      assert(x1878 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1879 = x1877 * x1878;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1880 = x1879 * x271;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1881 = x1872 + x1880;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1882 = Fp(x1739.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][52 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1882);
          reg = x1882;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1883 = Fp(x1741.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][84 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1883);
          reg = x1883;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1884 = args[2][52 * steps + ((cycle - 0) & mask)];
      assert(x1884 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1885 = args[2][84 * steps + ((cycle - 0) & mask)];
      assert(x1885 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1886 = x1884 * x1885;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1887 = Fp(x1739.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1888 = x1887 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][53 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1888);
          reg = x1888;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1889 = Fp(x1741.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1890 = x1889 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][85 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1890);
          reg = x1890;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1891 = args[2][53 * steps + ((cycle - 0) & mask)];
      assert(x1891 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1892 = args[2][85 * steps + ((cycle - 0) & mask)];
      assert(x1892 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1893 = x1891 * x1892;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1894 = x1893 * x309;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1895 = x1886 + x1894;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1896 = Fp(x1739.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1897 = x1896 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][54 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1897);
          reg = x1897;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1898 = Fp(x1741.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1899 = x1898 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][86 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1899);
          reg = x1899;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1900 = args[2][54 * steps + ((cycle - 0) & mask)];
      assert(x1900 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1901 = args[2][86 * steps + ((cycle - 0) & mask)];
      assert(x1901 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1902 = x1900 * x1901;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1903 = x1902 * x307;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1904 = x1895 + x1903;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1905 = Fp(x1739.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1906 = x1905 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][55 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1906);
          reg = x1906;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1907 = Fp(x1741.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1908 = x1907 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][87 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1908);
          reg = x1908;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1909 = args[2][55 * steps + ((cycle - 0) & mask)];
      assert(x1909 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1910 = args[2][87 * steps + ((cycle - 0) & mask)];
      assert(x1910 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1911 = x1909 * x1910;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1912 = x1911 * x303;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1913 = x1904 + x1912;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1914 = Fp(x1739.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1915 = x1914 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][56 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1915);
          reg = x1915;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1916 = Fp(x1741.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1917 = x1916 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][88 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1917);
          reg = x1917;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1918 = args[2][56 * steps + ((cycle - 0) & mask)];
      assert(x1918 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1919 = args[2][88 * steps + ((cycle - 0) & mask)];
      assert(x1919 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1920 = x1918 * x1919;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1921 = x1920 * x294;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1922 = x1913 + x1921;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1923 = Fp(x1739.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1924 = x1923 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][57 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1924);
          reg = x1924;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1925 = Fp(x1741.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1926 = x1925 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][89 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1926);
          reg = x1926;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1927 = args[2][57 * steps + ((cycle - 0) & mask)];
      assert(x1927 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1928 = args[2][89 * steps + ((cycle - 0) & mask)];
      assert(x1928 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1929 = x1927 * x1928;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1930 = x1929 * x291;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1931 = x1922 + x1930;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1932 = Fp(x1739.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1933 = x1932 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][58 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1933);
          reg = x1933;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1934 = Fp(x1741.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1935 = x1934 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][90 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1935);
          reg = x1935;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1936 = args[2][58 * steps + ((cycle - 0) & mask)];
      assert(x1936 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1937 = args[2][90 * steps + ((cycle - 0) & mask)];
      assert(x1937 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1938 = x1936 * x1937;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1939 = x1938 * x289;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1940 = x1931 + x1939;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1941 = Fp(x1739.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1942 = x1941 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][59 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1942);
          reg = x1942;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1943 = Fp(x1741.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1944 = x1943 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][91 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1944);
          reg = x1944;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1945 = args[2][59 * steps + ((cycle - 0) & mask)];
      assert(x1945 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1946 = args[2][91 * steps + ((cycle - 0) & mask)];
      assert(x1946 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1947 = x1945 * x1946;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1948 = x1947 * x288;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1949 = x1940 + x1948;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1950 = Fp(x1739.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1951 = x1950 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][60 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1951);
          reg = x1951;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1952 = Fp(x1741.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1953 = x1952 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][92 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1953);
          reg = x1953;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1954 = args[2][60 * steps + ((cycle - 0) & mask)];
      assert(x1954 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1955 = args[2][92 * steps + ((cycle - 0) & mask)];
      assert(x1955 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1956 = x1954 * x1955;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1957 = x1956 * x285;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1958 = x1949 + x1957;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1959 = Fp(x1739.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1960 = x1959 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][61 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1960);
          reg = x1960;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1961 = Fp(x1741.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1962 = x1961 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][93 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1962);
          reg = x1962;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1963 = args[2][61 * steps + ((cycle - 0) & mask)];
      assert(x1963 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1964 = args[2][93 * steps + ((cycle - 0) & mask)];
      assert(x1964 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1965 = x1963 * x1964;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1966 = x1965 * x283;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1967 = x1958 + x1966;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1968 = Fp(x1739.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1969 = x1968 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][62 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1969);
          reg = x1969;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1970 = Fp(x1741.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1971 = x1970 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][94 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1971);
          reg = x1971;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1972 = args[2][62 * steps + ((cycle - 0) & mask)];
      assert(x1972 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1973 = args[2][94 * steps + ((cycle - 0) & mask)];
      assert(x1973 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1974 = x1972 * x1973;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1975 = x1974 * x282;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1976 = x1967 + x1975;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1977 = Fp(x1739.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1978 = x1977 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][63 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1978);
          reg = x1978;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1979 = Fp(x1741.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1980 = x1979 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][95 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1980);
          reg = x1980;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1981 = args[2][63 * steps + ((cycle - 0) & mask)];
      assert(x1981 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1982 = args[2][95 * steps + ((cycle - 0) & mask)];
      assert(x1982 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1983 = x1981 * x1982;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1984 = x1983 * x279;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1985 = x1976 + x1984;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1986 = Fp(x1739.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1987 = x1986 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][64 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1987);
          reg = x1987;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1988 = Fp(x1741.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1989 = x1988 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][96 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1989);
          reg = x1989;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1990 = args[2][64 * steps + ((cycle - 0) & mask)];
      assert(x1990 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1991 = args[2][96 * steps + ((cycle - 0) & mask)];
      assert(x1991 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1992 = x1990 * x1991;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x1993 = x1992 * x277;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x1994 = x1985 + x1993;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x1995 = Fp(x1739.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x1996 = x1995 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][65 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1996);
          reg = x1996;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x1997 = Fp(x1741.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x1998 = x1997 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][97 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1998);
          reg = x1998;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x1999 = args[2][65 * steps + ((cycle - 0) & mask)];
      assert(x1999 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2000 = args[2][97 * steps + ((cycle - 0) & mask)];
      assert(x2000 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x2001 = x1999 * x2000;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x2002 = x2001 * x275;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x2003 = x1994 + x2002;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x2004 = Fp(x1739.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x2005 = x2004 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][66 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2005);
          reg = x2005;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x2006 = Fp(x1741.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x2007 = x2006 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][98 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2007);
          reg = x2007;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2008 = args[2][66 * steps + ((cycle - 0) & mask)];
      assert(x2008 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2009 = args[2][98 * steps + ((cycle - 0) & mask)];
      assert(x2009 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x2010 = x2008 * x2009;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x2011 = x2010 * x274;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x2012 = x2003 + x2011;
      {
        // loc("zirgen/circuit/recursion/bits.cpp":31:33)
        auto x2013 = Fp(x1739.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":31:32)
        auto x2014 = x2013 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][67 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2014);
          reg = x2014;
        }
        // loc("zirgen/circuit/recursion/bits.cpp":32:33)
        auto x2015 = Fp(x1741.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/bits.cpp":32:32)
        auto x2016 = x2015 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][99 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2016);
          reg = x2016;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2017 = args[2][67 * steps + ((cycle - 0) & mask)];
      assert(x2017 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/bits_b[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2018 = args[2][99 * steps + ((cycle - 0) & mask)];
      assert(x2018 != Fp::invalid());
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x2019 = x2017 * x2018;
      // loc("zirgen/circuit/recursion/bits.cpp":36:21)
      auto x2020 = x2019 * x271;
      // loc("zirgen/circuit/recursion/bits.cpp":36:14)
      auto x2021 = x2012 + x2020;
      if (x1729 != 0) {
        // loc("zirgen/circuit/recursion/bits.cpp":44:30)
        auto x2022 = x2021 * x298;
        // loc("zirgen/circuit/recursion/bits.cpp":44:30)
        auto x2023 = x2022 + x1881;
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1361);
          reg = x1361;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2023);
          reg = x2023;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][25 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x2024 = args[2][21 * steps + ((cycle - 0) & mask)];
          assert(x2024 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x2025 = args[2][22 * steps + ((cycle - 0) & mask)];
          assert(x2025 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x2026 = args[2][23 * steps + ((cycle - 0) & mask)];
          assert(x2026 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x2027 = args[2][24 * steps + ((cycle - 0) & mask)];
          assert(x2027 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x2028 = args[2][25 * steps + ((cycle - 0) & mask)];
          assert(x2028 != Fp::invalid());
          host_args.at(0) = x2024;
          host_args.at(1) = x2025;
          host_args.at(2) = x2026;
          host_args.at(3) = x2027;
          host_args.at(4) = x2028;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x2029 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x2029 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x2030 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x2030 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x2031 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x2031 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x2032 = args[2][25 * steps + ((cycle - 0) & mask)];
        assert(x2032 != Fp::invalid());
        host_args.at(0) = x2029;
        host_args.at(1) = x2030;
        host_args.at(2) = x2031;
        host_args.at(3) = x2032;
        host(ctx, "log", "  AND Result = %e", host_args.data(), 4, host_outs.data(), 0);
      }
      // loc("zirgen/circuit/recursion/bits.cpp":47:27)
      auto x2033 = x310 - x1729;
      if (x2033 != 0) {
        // loc("zirgen/circuit/recursion/bits.cpp":51:53)
        auto x2034 = x2021 * x309;
        // loc("zirgen/circuit/recursion/bits.cpp":50:53)
        auto x2035 = x1881 * x309;
        // loc("zirgen/circuit/recursion/bits.cpp":50:19)
        auto x2036 = x1738 + x1740;
        // loc("zirgen/circuit/recursion/bits.cpp":51:19)
        auto x2037 = x1739 + x1741;
        // loc("zirgen/circuit/recursion/bits.cpp":50:19)
        auto x2038 = x2036 - x2035;
        // loc("zirgen/circuit/recursion/bits.cpp":51:19)
        auto x2039 = x2037 - x2034;
        // loc("zirgen/circuit/recursion/wom.cpp":87:3)
        {
          auto& reg = args[2][21 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x1361);
          reg = x1361;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][22 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2038);
          reg = x2038;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][23 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2039);
          reg = x2039;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][24 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][25 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        {
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
          auto x2040 = args[2][21 * steps + ((cycle - 0) & mask)];
          assert(x2040 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x2041 = args[2][22 * steps + ((cycle - 0) & mask)];
          assert(x2041 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x2042 = args[2][23 * steps + ((cycle - 0) & mask)];
          assert(x2042 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x2043 = args[2][24 * steps + ((cycle - 0) & mask)];
          assert(x2043 != Fp::invalid());
          // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
          auto x2044 = args[2][25 * steps + ((cycle - 0) & mask)];
          assert(x2044 != Fp::invalid());
          host_args.at(0) = x2040;
          host_args.at(1) = x2041;
          host_args.at(2) = x2042;
          host_args.at(3) = x2043;
          host_args.at(4) = x2044;
          host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x2045 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x2045 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x2046 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x2046 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x2047 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x2047 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x2048 = args[2][25 * steps + ((cycle - 0) & mask)];
        assert(x2048 != Fp::invalid());
        host_args.at(0) = x2045;
        host_args.at(1) = x2046;
        host_args.at(2) = x2047;
        host_args.at(3) = x2048;
        host(ctx, "log", "  XOR Result = %e", host_args.data(), 4, host_outs.data(), 0);
      }
    }
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/opcode(OneHot)/sha_init(Reg)"("./zirgen/components/mux.h":49:25))
    auto x2049 = args[0][13 * steps + ((cycle - 0) & mask)];
    assert(x2049 != Fp::invalid());
    if (x2049 != 0) {
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2050 = args[0][18 * steps + ((cycle - 0) & mask)];
      assert(x2050 != Fp::invalid());
      {
        host_args.at(0) = x2050;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x2051 = host_outs.at(0);
        auto x2052 = host_outs.at(1);
        auto x2053 = host_outs.at(2);
        auto x2054 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2051);
          reg = x2051;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2052);
          reg = x2052;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2053);
          reg = x2053;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2054);
          reg = x2054;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x2050);
        reg = x2050;
      }
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2055 = args[0][19 * steps + ((cycle - 0) & mask)];
      assert(x2055 != Fp::invalid());
      {
        host_args.at(0) = x2055;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x2056 = host_outs.at(0);
        auto x2057 = host_outs.at(1);
        auto x2058 = host_outs.at(2);
        auto x2059 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][17 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2056);
          reg = x2056;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][18 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2057);
          reg = x2057;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][19 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2058);
          reg = x2058;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][20 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2059);
          reg = x2059;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x2055);
        reg = x2055;
      }
      {
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][94 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][95 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][96 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][97 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][98 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][99 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][100 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][101 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][102 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][103 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][104 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][105 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][106 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][107 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][108 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][109 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2060 = args[2][100 * steps + ((cycle - 0) & mask)];
      assert(x2060 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2061 = args[2][101 * steps + ((cycle - 0) & mask)];
      assert(x2061 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2062 = args[2][102 * steps + ((cycle - 0) & mask)];
      assert(x2062 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2063 = args[2][103 * steps + ((cycle - 0) & mask)];
      assert(x2063 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2064 = args[2][104 * steps + ((cycle - 0) & mask)];
      assert(x2064 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2065 = args[2][105 * steps + ((cycle - 0) & mask)];
      assert(x2065 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2066 = args[2][106 * steps + ((cycle - 0) & mask)];
      assert(x2066 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2067 = args[2][107 * steps + ((cycle - 0) & mask)];
      assert(x2067 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2068 = args[2][108 * steps + ((cycle - 0) & mask)];
      assert(x2068 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2069 = args[2][109 * steps + ((cycle - 0) & mask)];
      assert(x2069 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2070 = args[2][94 * steps + ((cycle - 0) & mask)];
      assert(x2070 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2071 = args[2][95 * steps + ((cycle - 0) & mask)];
      assert(x2071 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2072 = args[2][96 * steps + ((cycle - 0) & mask)];
      assert(x2072 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2073 = args[2][97 * steps + ((cycle - 0) & mask)];
      assert(x2073 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2074 = args[2][98 * steps + ((cycle - 0) & mask)];
      assert(x2074 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2075 = args[2][99 * steps + ((cycle - 0) & mask)];
      assert(x2075 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2076 = x2060 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2077 = x2061 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2078 = x2062 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2079 = x2063 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2080 = x2064 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2081 = x2065 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2082 = x2066 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2083 = x2067 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2084 = x2068 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2085 = x2069 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2086 = x2071 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2087 = x2072 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2088 = x2073 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2089 = x2074 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2090 = x2075 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2091 = x2070 + x2086;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2092 = x2091 + x2087;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2093 = x2092 + x2088;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2094 = x2093 + x2089;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2095 = x2094 + x2090;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2096 = x2095 + x2076;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2097 = x2096 + x2077;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2098 = x2097 + x2078;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2099 = x2098 + x2079;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2100 = x2099 + x2080;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2101 = x2100 + x2081;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2102 = x2101 + x2082;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2103 = x2102 + x2083;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2104 = x2103 + x2084;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2105 = x2104 + x2085;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2106 = x311 - x2105;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2107 = x2106 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x2108 = Fp(x2107.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2108);
          reg = x2108;
        }
      }
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2109 = Fp(x2107.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][110 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2109);
          reg = x2109;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2110 = Fp(x2107.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2111 = x2110 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][111 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2111);
          reg = x2111;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2112 = Fp(x2107.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2113 = x2112 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][112 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2113);
          reg = x2113;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2114 = Fp(x2107.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2115 = x2114 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][113 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2115);
          reg = x2115;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2116 = Fp(x2107.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2117 = x2116 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][114 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2117);
          reg = x2117;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2118 = Fp(x2107.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2119 = x2118 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][115 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2119);
          reg = x2119;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2120 = Fp(x2107.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2121 = x2120 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][116 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2121);
          reg = x2121;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2122 = Fp(x2107.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2123 = x2122 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][117 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2123);
          reg = x2123;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2124 = Fp(x2107.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2125 = x2124 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][118 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2125);
          reg = x2125;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2126 = Fp(x2107.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2127 = x2126 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][119 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2127);
          reg = x2127;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2128 = Fp(x2107.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2129 = x2128 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][120 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2129);
          reg = x2129;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2130 = Fp(x2107.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2131 = x2130 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][121 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2131);
          reg = x2131;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2132 = Fp(x2107.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2133 = x2132 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][122 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2133);
          reg = x2133;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2134 = Fp(x2107.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2135 = x2134 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][123 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2135);
          reg = x2135;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2136 = Fp(x2107.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2137 = x2136 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][124 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2137);
          reg = x2137;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2138 = Fp(x2107.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2139 = x2138 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][125 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2139);
          reg = x2139;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2140 = args[2][110 * steps + ((cycle - 0) & mask)];
      assert(x2140 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2141 = args[2][111 * steps + ((cycle - 0) & mask)];
      assert(x2141 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2142 = args[2][112 * steps + ((cycle - 0) & mask)];
      assert(x2142 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2143 = args[2][113 * steps + ((cycle - 0) & mask)];
      assert(x2143 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2144 = args[2][114 * steps + ((cycle - 0) & mask)];
      assert(x2144 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2145 = args[2][115 * steps + ((cycle - 0) & mask)];
      assert(x2145 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2146 = args[2][116 * steps + ((cycle - 0) & mask)];
      assert(x2146 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2147 = args[2][117 * steps + ((cycle - 0) & mask)];
      assert(x2147 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2148 = args[2][118 * steps + ((cycle - 0) & mask)];
      assert(x2148 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2149 = args[2][119 * steps + ((cycle - 0) & mask)];
      assert(x2149 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2150 = args[2][120 * steps + ((cycle - 0) & mask)];
      assert(x2150 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2151 = args[2][121 * steps + ((cycle - 0) & mask)];
      assert(x2151 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2152 = args[2][122 * steps + ((cycle - 0) & mask)];
      assert(x2152 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2153 = args[2][123 * steps + ((cycle - 0) & mask)];
      assert(x2153 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2154 = args[2][124 * steps + ((cycle - 0) & mask)];
      assert(x2154 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2155 = args[2][125 * steps + ((cycle - 0) & mask)];
      assert(x2155 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2156 = x2141 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2157 = x2142 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2158 = x2143 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2159 = x2144 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2160 = x2145 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2161 = x2146 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2162 = x2147 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2163 = x2148 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2164 = x2149 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2165 = x2150 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2166 = x2151 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2167 = x2152 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2168 = x2153 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2169 = x2154 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2170 = x2155 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2171 = x2140 + x2156;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2172 = x2171 + x2157;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2173 = x2172 + x2158;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2174 = x2173 + x2159;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2175 = x2174 + x2160;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2176 = x2175 + x2161;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2177 = x2176 + x2162;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2178 = x2177 + x2163;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2179 = x2178 + x2164;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2180 = x2179 + x2165;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2181 = x2180 + x2166;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2182 = x2181 + x2167;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2183 = x2182 + x2168;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2184 = x2183 + x2169;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2185 = x2184 + x2170;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2186 = x2107 - x2185;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2187 = x2186 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x2188 = Fp(x2187.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][10 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2188);
          reg = x2188;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x2189 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x2189 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x2190 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x2190 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2191 = Fp(x2189.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2191);
          reg = x2191;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2192 = Fp(x2189.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2193 = x2192 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2193);
          reg = x2193;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2194 = Fp(x2189.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2195 = x2194 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2195);
          reg = x2195;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2196 = Fp(x2189.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2197 = x2196 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2197);
          reg = x2197;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2198 = Fp(x2189.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2199 = x2198 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2199);
          reg = x2199;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2200 = Fp(x2189.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2201 = x2200 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][31 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2201);
          reg = x2201;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2202 = Fp(x2189.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2203 = x2202 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][32 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2203);
          reg = x2203;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2204 = Fp(x2189.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2205 = x2204 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][33 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2205);
          reg = x2205;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2206 = Fp(x2189.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2207 = x2206 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][34 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2207);
          reg = x2207;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2208 = Fp(x2189.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2209 = x2208 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][35 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2209);
          reg = x2209;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2210 = Fp(x2189.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2211 = x2210 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2211);
          reg = x2211;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2212 = Fp(x2189.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2213 = x2212 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2213);
          reg = x2213;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2214 = Fp(x2189.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2215 = x2214 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2215);
          reg = x2215;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2216 = Fp(x2189.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2217 = x2216 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2217);
          reg = x2217;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2218 = Fp(x2189.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2219 = x2218 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][40 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2219);
          reg = x2219;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2220 = Fp(x2189.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2221 = x2220 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2221);
          reg = x2221;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2222 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x2222 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2223 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x2223 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2224 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x2224 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2225 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x2225 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2226 = args[2][30 * steps + ((cycle - 0) & mask)];
      assert(x2226 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2227 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x2227 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2228 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x2228 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2229 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x2229 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2230 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x2230 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2231 = args[2][35 * steps + ((cycle - 0) & mask)];
      assert(x2231 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2232 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x2232 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2233 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x2233 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2234 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x2234 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2235 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x2235 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2236 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x2236 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2237 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x2237 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2238 = x2223 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2239 = x2224 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2240 = x2225 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2241 = x2226 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2242 = x2227 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2243 = x2228 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2244 = x2229 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2245 = x2230 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2246 = x2231 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2247 = x2232 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2248 = x2233 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2249 = x2234 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2250 = x2235 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2251 = x2236 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2252 = x2237 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2253 = x2222 + x2238;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2254 = x2253 + x2239;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2255 = x2254 + x2240;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2256 = x2255 + x2241;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2257 = x2256 + x2242;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2258 = x2257 + x2243;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2259 = x2258 + x2244;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2260 = x2259 + x2245;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2261 = x2260 + x2246;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2262 = x2261 + x2247;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2263 = x2262 + x2248;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2264 = x2263 + x2249;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2265 = x2264 + x2250;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2266 = x2265 + x2251;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2267 = x2266 + x2252;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2268 = x2189 - x2267;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2269 = x2268 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x2270 = Fp(x2269.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2270);
          reg = x2270;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":127:32)
      auto x2271 = x2190 + x2269;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2272 = Fp(x2271.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2272);
          reg = x2272;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2273 = Fp(x2271.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2274 = x2273 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2274);
          reg = x2274;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2275 = Fp(x2271.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2276 = x2275 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2276);
          reg = x2276;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2277 = Fp(x2271.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2278 = x2277 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][45 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2278);
          reg = x2278;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2279 = Fp(x2271.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2280 = x2279 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][46 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2280);
          reg = x2280;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2281 = Fp(x2271.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2282 = x2281 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][47 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2282);
          reg = x2282;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2283 = Fp(x2271.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2284 = x2283 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][48 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2284);
          reg = x2284;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2285 = Fp(x2271.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2286 = x2285 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][49 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2286);
          reg = x2286;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2287 = Fp(x2271.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2288 = x2287 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][50 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2288);
          reg = x2288;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2289 = Fp(x2271.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2290 = x2289 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][51 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2290);
          reg = x2290;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2291 = Fp(x2271.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2292 = x2291 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][52 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2292);
          reg = x2292;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2293 = Fp(x2271.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2294 = x2293 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][53 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2294);
          reg = x2294;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2295 = Fp(x2271.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2296 = x2295 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][54 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2296);
          reg = x2296;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2297 = Fp(x2271.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2298 = x2297 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][55 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2298);
          reg = x2298;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2299 = Fp(x2271.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2300 = x2299 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][56 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2300);
          reg = x2300;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2301 = Fp(x2271.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2302 = x2301 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][57 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2302);
          reg = x2302;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2303 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x2303 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2304 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x2304 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2305 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x2305 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2306 = args[2][45 * steps + ((cycle - 0) & mask)];
      assert(x2306 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2307 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x2307 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2308 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x2308 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2309 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x2309 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2310 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x2310 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2311 = args[2][50 * steps + ((cycle - 0) & mask)];
      assert(x2311 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2312 = args[2][51 * steps + ((cycle - 0) & mask)];
      assert(x2312 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2313 = args[2][52 * steps + ((cycle - 0) & mask)];
      assert(x2313 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2314 = args[2][53 * steps + ((cycle - 0) & mask)];
      assert(x2314 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2315 = args[2][54 * steps + ((cycle - 0) & mask)];
      assert(x2315 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2316 = args[2][55 * steps + ((cycle - 0) & mask)];
      assert(x2316 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2317 = args[2][56 * steps + ((cycle - 0) & mask)];
      assert(x2317 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2318 = args[2][57 * steps + ((cycle - 0) & mask)];
      assert(x2318 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2319 = x2304 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2320 = x2305 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2321 = x2306 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2322 = x2307 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2323 = x2308 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2324 = x2309 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2325 = x2310 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2326 = x2311 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2327 = x2312 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2328 = x2313 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2329 = x2314 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2330 = x2315 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2331 = x2316 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2332 = x2317 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2333 = x2318 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2334 = x2303 + x2319;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2335 = x2334 + x2320;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2336 = x2335 + x2321;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2337 = x2336 + x2322;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2338 = x2337 + x2323;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2339 = x2338 + x2324;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2340 = x2339 + x2325;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2341 = x2340 + x2326;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2342 = x2341 + x2327;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2343 = x2342 + x2328;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2344 = x2343 + x2329;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2345 = x2344 + x2330;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2346 = x2345 + x2331;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2347 = x2346 + x2332;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2348 = x2347 + x2333;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2349 = x2271 - x2348;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2350 = x2349 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x2351 = Fp(x2350.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2351);
          reg = x2351;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x2352 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x2352 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x2353 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x2353 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2354 = Fp(x2352.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][60 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2354);
          reg = x2354;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2355 = Fp(x2352.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2356 = x2355 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][61 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2356);
          reg = x2356;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2357 = Fp(x2352.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2358 = x2357 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][62 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2358);
          reg = x2358;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2359 = Fp(x2352.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2360 = x2359 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][63 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2360);
          reg = x2360;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2361 = Fp(x2352.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2362 = x2361 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][64 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2362);
          reg = x2362;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2363 = Fp(x2352.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2364 = x2363 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][65 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2364);
          reg = x2364;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2365 = Fp(x2352.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2366 = x2365 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][66 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2366);
          reg = x2366;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2367 = Fp(x2352.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2368 = x2367 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][67 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2368);
          reg = x2368;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2369 = Fp(x2352.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2370 = x2369 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][68 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2370);
          reg = x2370;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2371 = Fp(x2352.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2372 = x2371 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][69 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2372);
          reg = x2372;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2373 = Fp(x2352.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2374 = x2373 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][70 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2374);
          reg = x2374;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2375 = Fp(x2352.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2376 = x2375 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][71 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2376);
          reg = x2376;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2377 = Fp(x2352.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2378 = x2377 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][72 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2378);
          reg = x2378;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2379 = Fp(x2352.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2380 = x2379 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][73 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2380);
          reg = x2380;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2381 = Fp(x2352.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2382 = x2381 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][74 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2382);
          reg = x2382;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2383 = Fp(x2352.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2384 = x2383 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][75 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2384);
          reg = x2384;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2385 = args[2][60 * steps + ((cycle - 0) & mask)];
      assert(x2385 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2386 = args[2][61 * steps + ((cycle - 0) & mask)];
      assert(x2386 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2387 = args[2][62 * steps + ((cycle - 0) & mask)];
      assert(x2387 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2388 = args[2][63 * steps + ((cycle - 0) & mask)];
      assert(x2388 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2389 = args[2][64 * steps + ((cycle - 0) & mask)];
      assert(x2389 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2390 = args[2][65 * steps + ((cycle - 0) & mask)];
      assert(x2390 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2391 = args[2][66 * steps + ((cycle - 0) & mask)];
      assert(x2391 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2392 = args[2][67 * steps + ((cycle - 0) & mask)];
      assert(x2392 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2393 = args[2][68 * steps + ((cycle - 0) & mask)];
      assert(x2393 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2394 = args[2][69 * steps + ((cycle - 0) & mask)];
      assert(x2394 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2395 = args[2][70 * steps + ((cycle - 0) & mask)];
      assert(x2395 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2396 = args[2][71 * steps + ((cycle - 0) & mask)];
      assert(x2396 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2397 = args[2][72 * steps + ((cycle - 0) & mask)];
      assert(x2397 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2398 = args[2][73 * steps + ((cycle - 0) & mask)];
      assert(x2398 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2399 = args[2][74 * steps + ((cycle - 0) & mask)];
      assert(x2399 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2400 = args[2][75 * steps + ((cycle - 0) & mask)];
      assert(x2400 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2401 = x2386 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2402 = x2387 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2403 = x2388 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2404 = x2389 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2405 = x2390 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2406 = x2391 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2407 = x2392 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2408 = x2393 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2409 = x2394 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2410 = x2395 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2411 = x2396 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2412 = x2397 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2413 = x2398 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2414 = x2399 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2415 = x2400 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2416 = x2385 + x2401;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2417 = x2416 + x2402;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2418 = x2417 + x2403;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2419 = x2418 + x2404;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2420 = x2419 + x2405;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2421 = x2420 + x2406;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2422 = x2421 + x2407;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2423 = x2422 + x2408;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2424 = x2423 + x2409;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2425 = x2424 + x2410;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2426 = x2425 + x2411;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2427 = x2426 + x2412;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2428 = x2427 + x2413;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2429 = x2428 + x2414;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2430 = x2429 + x2415;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2431 = x2352 - x2430;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2432 = x2431 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x2433 = Fp(x2432.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2433);
          reg = x2433;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":127:32)
      auto x2434 = x2353 + x2432;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2435 = Fp(x2434.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][76 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2435);
          reg = x2435;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2436 = Fp(x2434.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2437 = x2436 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][77 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2437);
          reg = x2437;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2438 = Fp(x2434.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2439 = x2438 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][78 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2439);
          reg = x2439;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2440 = Fp(x2434.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2441 = x2440 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][79 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2441);
          reg = x2441;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2442 = Fp(x2434.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2443 = x2442 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][80 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2443);
          reg = x2443;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2444 = Fp(x2434.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2445 = x2444 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][81 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2445);
          reg = x2445;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2446 = Fp(x2434.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2447 = x2446 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][82 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2447);
          reg = x2447;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2448 = Fp(x2434.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2449 = x2448 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][83 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2449);
          reg = x2449;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2450 = Fp(x2434.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2451 = x2450 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][84 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2451);
          reg = x2451;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2452 = Fp(x2434.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2453 = x2452 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][85 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2453);
          reg = x2453;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2454 = Fp(x2434.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2455 = x2454 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][86 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2455);
          reg = x2455;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2456 = Fp(x2434.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2457 = x2456 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][87 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2457);
          reg = x2457;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2458 = Fp(x2434.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2459 = x2458 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][88 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2459);
          reg = x2459;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2460 = Fp(x2434.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2461 = x2460 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][89 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2461);
          reg = x2461;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2462 = Fp(x2434.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2463 = x2462 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][90 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2463);
          reg = x2463;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2464 = Fp(x2434.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2465 = x2464 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][91 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2465);
          reg = x2465;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2466 = args[2][76 * steps + ((cycle - 0) & mask)];
      assert(x2466 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2467 = args[2][77 * steps + ((cycle - 0) & mask)];
      assert(x2467 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2468 = args[2][78 * steps + ((cycle - 0) & mask)];
      assert(x2468 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2469 = args[2][79 * steps + ((cycle - 0) & mask)];
      assert(x2469 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2470 = args[2][80 * steps + ((cycle - 0) & mask)];
      assert(x2470 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2471 = args[2][81 * steps + ((cycle - 0) & mask)];
      assert(x2471 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2472 = args[2][82 * steps + ((cycle - 0) & mask)];
      assert(x2472 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2473 = args[2][83 * steps + ((cycle - 0) & mask)];
      assert(x2473 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2474 = args[2][84 * steps + ((cycle - 0) & mask)];
      assert(x2474 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2475 = args[2][85 * steps + ((cycle - 0) & mask)];
      assert(x2475 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2476 = args[2][86 * steps + ((cycle - 0) & mask)];
      assert(x2476 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2477 = args[2][87 * steps + ((cycle - 0) & mask)];
      assert(x2477 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2478 = args[2][88 * steps + ((cycle - 0) & mask)];
      assert(x2478 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2479 = args[2][89 * steps + ((cycle - 0) & mask)];
      assert(x2479 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2480 = args[2][90 * steps + ((cycle - 0) & mask)];
      assert(x2480 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2481 = args[2][91 * steps + ((cycle - 0) & mask)];
      assert(x2481 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2482 = x2467 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2483 = x2468 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2484 = x2469 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2485 = x2470 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2486 = x2471 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2487 = x2472 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2488 = x2473 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2489 = x2474 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2490 = x2475 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2491 = x2476 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2492 = x2477 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2493 = x2478 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2494 = x2479 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2495 = x2480 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2496 = x2481 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2497 = x2466 + x2482;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2498 = x2497 + x2483;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2499 = x2498 + x2484;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2500 = x2499 + x2485;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2501 = x2500 + x2486;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2502 = x2501 + x2487;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2503 = x2502 + x2488;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2504 = x2503 + x2489;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2505 = x2504 + x2490;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2506 = x2505 + x2491;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2507 = x2506 + x2492;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2508 = x2507 + x2493;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2509 = x2508 + x2494;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2510 = x2509 + x2495;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2511 = x2510 + x2496;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2512 = x2434 - x2511;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2513 = x2512 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x2514 = Fp(x2513.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2514);
          reg = x2514;
        }
      }
    }
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/opcode(OneHot)/sha_fini(Reg)"("./zirgen/components/mux.h":49:25))
    auto x2515 = args[0][14 * steps + ((cycle - 0) & mask)];
    assert(x2515 != Fp::invalid());
    if (x2515 != 0) {
      {
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][94 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][95 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][96 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][97 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][98 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][99 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][100 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][101 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][102 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][103 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][104 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][105 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][106 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][107 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][108 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][109 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2516 = args[2][100 * steps + ((cycle - 0) & mask)];
      assert(x2516 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2517 = args[2][101 * steps + ((cycle - 0) & mask)];
      assert(x2517 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2518 = args[2][102 * steps + ((cycle - 0) & mask)];
      assert(x2518 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2519 = args[2][103 * steps + ((cycle - 0) & mask)];
      assert(x2519 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2520 = args[2][104 * steps + ((cycle - 0) & mask)];
      assert(x2520 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2521 = args[2][105 * steps + ((cycle - 0) & mask)];
      assert(x2521 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2522 = args[2][106 * steps + ((cycle - 0) & mask)];
      assert(x2522 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2523 = args[2][107 * steps + ((cycle - 0) & mask)];
      assert(x2523 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2524 = args[2][108 * steps + ((cycle - 0) & mask)];
      assert(x2524 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2525 = args[2][109 * steps + ((cycle - 0) & mask)];
      assert(x2525 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2526 = args[2][94 * steps + ((cycle - 0) & mask)];
      assert(x2526 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2527 = args[2][95 * steps + ((cycle - 0) & mask)];
      assert(x2527 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2528 = args[2][96 * steps + ((cycle - 0) & mask)];
      assert(x2528 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2529 = args[2][97 * steps + ((cycle - 0) & mask)];
      assert(x2529 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2530 = args[2][98 * steps + ((cycle - 0) & mask)];
      assert(x2530 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2531 = args[2][99 * steps + ((cycle - 0) & mask)];
      assert(x2531 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2532 = x2516 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2533 = x2517 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2534 = x2518 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2535 = x2519 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2536 = x2520 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2537 = x2521 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2538 = x2522 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2539 = x2523 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2540 = x2524 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2541 = x2525 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2542 = x2527 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2543 = x2528 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2544 = x2529 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2545 = x2530 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2546 = x2531 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2547 = x2526 + x2542;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2548 = x2547 + x2543;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2549 = x2548 + x2544;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2550 = x2549 + x2545;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2551 = x2550 + x2546;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2552 = x2551 + x2532;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2553 = x2552 + x2533;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2554 = x2553 + x2534;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2555 = x2554 + x2535;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2556 = x2555 + x2536;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2557 = x2556 + x2537;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2558 = x2557 + x2538;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2559 = x2558 + x2539;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2560 = x2559 + x2540;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2561 = x2560 + x2541;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2562 = x311 - x2561;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2563 = x2562 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x2564 = Fp(x2563.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2564);
          reg = x2564;
        }
      }
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2565 = Fp(x2563.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][110 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2565);
          reg = x2565;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2566 = Fp(x2563.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2567 = x2566 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][111 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2567);
          reg = x2567;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2568 = Fp(x2563.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2569 = x2568 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][112 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2569);
          reg = x2569;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2570 = Fp(x2563.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2571 = x2570 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][113 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2571);
          reg = x2571;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2572 = Fp(x2563.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2573 = x2572 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][114 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2573);
          reg = x2573;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2574 = Fp(x2563.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2575 = x2574 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][115 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2575);
          reg = x2575;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2576 = Fp(x2563.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2577 = x2576 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][116 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2577);
          reg = x2577;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2578 = Fp(x2563.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2579 = x2578 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][117 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2579);
          reg = x2579;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2580 = Fp(x2563.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2581 = x2580 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][118 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2581);
          reg = x2581;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2582 = Fp(x2563.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2583 = x2582 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][119 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2583);
          reg = x2583;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2584 = Fp(x2563.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2585 = x2584 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][120 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2585);
          reg = x2585;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2586 = Fp(x2563.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2587 = x2586 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][121 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2587);
          reg = x2587;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2588 = Fp(x2563.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2589 = x2588 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][122 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2589);
          reg = x2589;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2590 = Fp(x2563.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2591 = x2590 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][123 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2591);
          reg = x2591;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2592 = Fp(x2563.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2593 = x2592 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][124 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2593);
          reg = x2593;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2594 = Fp(x2563.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2595 = x2594 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][125 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2595);
          reg = x2595;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2596 = args[2][110 * steps + ((cycle - 0) & mask)];
      assert(x2596 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2597 = args[2][111 * steps + ((cycle - 0) & mask)];
      assert(x2597 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2598 = args[2][112 * steps + ((cycle - 0) & mask)];
      assert(x2598 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2599 = args[2][113 * steps + ((cycle - 0) & mask)];
      assert(x2599 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2600 = args[2][114 * steps + ((cycle - 0) & mask)];
      assert(x2600 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2601 = args[2][115 * steps + ((cycle - 0) & mask)];
      assert(x2601 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2602 = args[2][116 * steps + ((cycle - 0) & mask)];
      assert(x2602 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2603 = args[2][117 * steps + ((cycle - 0) & mask)];
      assert(x2603 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2604 = args[2][118 * steps + ((cycle - 0) & mask)];
      assert(x2604 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2605 = args[2][119 * steps + ((cycle - 0) & mask)];
      assert(x2605 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2606 = args[2][120 * steps + ((cycle - 0) & mask)];
      assert(x2606 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2607 = args[2][121 * steps + ((cycle - 0) & mask)];
      assert(x2607 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2608 = args[2][122 * steps + ((cycle - 0) & mask)];
      assert(x2608 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2609 = args[2][123 * steps + ((cycle - 0) & mask)];
      assert(x2609 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2610 = args[2][124 * steps + ((cycle - 0) & mask)];
      assert(x2610 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2611 = args[2][125 * steps + ((cycle - 0) & mask)];
      assert(x2611 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2612 = x2597 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2613 = x2598 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2614 = x2599 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2615 = x2600 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2616 = x2601 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2617 = x2602 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2618 = x2603 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2619 = x2604 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2620 = x2605 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2621 = x2606 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2622 = x2607 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2623 = x2608 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2624 = x2609 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2625 = x2610 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2626 = x2611 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2627 = x2596 + x2612;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2628 = x2627 + x2613;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2629 = x2628 + x2614;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2630 = x2629 + x2615;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2631 = x2630 + x2616;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2632 = x2631 + x2617;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2633 = x2632 + x2618;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2634 = x2633 + x2619;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2635 = x2634 + x2620;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2636 = x2635 + x2621;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2637 = x2636 + x2622;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2638 = x2637 + x2623;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2639 = x2638 + x2624;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2640 = x2639 + x2625;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2641 = x2640 + x2626;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2642 = x2563 - x2641;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2643 = x2642 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x2644 = Fp(x2643.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][10 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2644);
          reg = x2644;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2645 = args[2][26 * steps + ((cycle - 4) & mask)];
      assert(x2645 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2646 = args[2][27 * steps + ((cycle - 4) & mask)];
      assert(x2646 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2647 = args[2][28 * steps + ((cycle - 4) & mask)];
      assert(x2647 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2648 = args[2][29 * steps + ((cycle - 4) & mask)];
      assert(x2648 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2649 = args[2][30 * steps + ((cycle - 4) & mask)];
      assert(x2649 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2650 = args[2][31 * steps + ((cycle - 4) & mask)];
      assert(x2650 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2651 = args[2][32 * steps + ((cycle - 4) & mask)];
      assert(x2651 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2652 = args[2][33 * steps + ((cycle - 4) & mask)];
      assert(x2652 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2653 = args[2][34 * steps + ((cycle - 4) & mask)];
      assert(x2653 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2654 = args[2][35 * steps + ((cycle - 4) & mask)];
      assert(x2654 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2655 = args[2][36 * steps + ((cycle - 4) & mask)];
      assert(x2655 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2656 = args[2][37 * steps + ((cycle - 4) & mask)];
      assert(x2656 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2657 = args[2][38 * steps + ((cycle - 4) & mask)];
      assert(x2657 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2658 = args[2][39 * steps + ((cycle - 4) & mask)];
      assert(x2658 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2659 = args[2][40 * steps + ((cycle - 4) & mask)];
      assert(x2659 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2660 = args[2][41 * steps + ((cycle - 4) & mask)];
      assert(x2660 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2661 = args[2][42 * steps + ((cycle - 4) & mask)];
      assert(x2661 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2662 = args[2][43 * steps + ((cycle - 4) & mask)];
      assert(x2662 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2663 = args[2][44 * steps + ((cycle - 4) & mask)];
      assert(x2663 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2664 = args[2][45 * steps + ((cycle - 4) & mask)];
      assert(x2664 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2665 = args[2][46 * steps + ((cycle - 4) & mask)];
      assert(x2665 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2666 = args[2][47 * steps + ((cycle - 4) & mask)];
      assert(x2666 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2667 = args[2][48 * steps + ((cycle - 4) & mask)];
      assert(x2667 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2668 = args[2][49 * steps + ((cycle - 4) & mask)];
      assert(x2668 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2669 = args[2][50 * steps + ((cycle - 4) & mask)];
      assert(x2669 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2670 = args[2][51 * steps + ((cycle - 4) & mask)];
      assert(x2670 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2671 = args[2][52 * steps + ((cycle - 4) & mask)];
      assert(x2671 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2672 = args[2][53 * steps + ((cycle - 4) & mask)];
      assert(x2672 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2673 = args[2][54 * steps + ((cycle - 4) & mask)];
      assert(x2673 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2674 = args[2][55 * steps + ((cycle - 4) & mask)];
      assert(x2674 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2675 = args[2][56 * steps + ((cycle - 4) & mask)];
      assert(x2675 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2676 = args[2][57 * steps + ((cycle - 4) & mask)];
      assert(x2676 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2677 = args[2][26 * steps + ((cycle - 68) & mask)];
      assert(x2677 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2678 = args[2][27 * steps + ((cycle - 68) & mask)];
      assert(x2678 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2679 = args[2][28 * steps + ((cycle - 68) & mask)];
      assert(x2679 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2680 = args[2][29 * steps + ((cycle - 68) & mask)];
      assert(x2680 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2681 = args[2][30 * steps + ((cycle - 68) & mask)];
      assert(x2681 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2682 = args[2][31 * steps + ((cycle - 68) & mask)];
      assert(x2682 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2683 = args[2][32 * steps + ((cycle - 68) & mask)];
      assert(x2683 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2684 = args[2][33 * steps + ((cycle - 68) & mask)];
      assert(x2684 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2685 = args[2][34 * steps + ((cycle - 68) & mask)];
      assert(x2685 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2686 = args[2][35 * steps + ((cycle - 68) & mask)];
      assert(x2686 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2687 = args[2][36 * steps + ((cycle - 68) & mask)];
      assert(x2687 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2688 = args[2][37 * steps + ((cycle - 68) & mask)];
      assert(x2688 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2689 = args[2][38 * steps + ((cycle - 68) & mask)];
      assert(x2689 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2690 = args[2][39 * steps + ((cycle - 68) & mask)];
      assert(x2690 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2691 = args[2][40 * steps + ((cycle - 68) & mask)];
      assert(x2691 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2692 = args[2][41 * steps + ((cycle - 68) & mask)];
      assert(x2692 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2693 = args[2][42 * steps + ((cycle - 68) & mask)];
      assert(x2693 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2694 = args[2][43 * steps + ((cycle - 68) & mask)];
      assert(x2694 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2695 = args[2][44 * steps + ((cycle - 68) & mask)];
      assert(x2695 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2696 = args[2][45 * steps + ((cycle - 68) & mask)];
      assert(x2696 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2697 = args[2][46 * steps + ((cycle - 68) & mask)];
      assert(x2697 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2698 = args[2][47 * steps + ((cycle - 68) & mask)];
      assert(x2698 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2699 = args[2][48 * steps + ((cycle - 68) & mask)];
      assert(x2699 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2700 = args[2][49 * steps + ((cycle - 68) & mask)];
      assert(x2700 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2701 = args[2][50 * steps + ((cycle - 68) & mask)];
      assert(x2701 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2702 = args[2][51 * steps + ((cycle - 68) & mask)];
      assert(x2702 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2703 = args[2][52 * steps + ((cycle - 68) & mask)];
      assert(x2703 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2704 = args[2][53 * steps + ((cycle - 68) & mask)];
      assert(x2704 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2705 = args[2][54 * steps + ((cycle - 68) & mask)];
      assert(x2705 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2706 = args[2][55 * steps + ((cycle - 68) & mask)];
      assert(x2706 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2707 = args[2][56 * steps + ((cycle - 68) & mask)];
      assert(x2707 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2708 = args[2][57 * steps + ((cycle - 68) & mask)];
      assert(x2708 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2709 = x2646 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2710 = x2647 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2711 = x2648 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2712 = x2649 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2713 = x2650 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2714 = x2651 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2715 = x2652 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2716 = x2653 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2717 = x2654 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2718 = x2655 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2719 = x2656 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2720 = x2657 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2721 = x2658 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2722 = x2659 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2723 = x2660 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2724 = x2662 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2725 = x2663 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2726 = x2664 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2727 = x2665 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2728 = x2666 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2729 = x2667 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2730 = x2668 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2731 = x2669 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2732 = x2670 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2733 = x2671 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2734 = x2672 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2735 = x2673 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2736 = x2674 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2737 = x2675 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2738 = x2676 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2739 = x2678 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2740 = x2679 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2741 = x2680 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2742 = x2681 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2743 = x2682 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2744 = x2683 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2745 = x2684 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2746 = x2685 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2747 = x2686 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2748 = x2687 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2749 = x2688 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2750 = x2689 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2751 = x2690 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2752 = x2691 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2753 = x2692 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2754 = x2694 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2755 = x2695 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2756 = x2696 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2757 = x2697 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2758 = x2698 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2759 = x2699 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2760 = x2700 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2761 = x2701 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2762 = x2702 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2763 = x2703 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2764 = x2704 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2765 = x2705 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2766 = x2706 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2767 = x2707 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x2768 = x2708 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2769 = x2645 + x2709;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2770 = x2661 + x2724;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2771 = x2677 + x2739;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2772 = x2693 + x2754;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2773 = x2769 + x2710;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2774 = x2770 + x2725;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2775 = x2771 + x2740;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2776 = x2772 + x2755;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2777 = x2773 + x2711;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2778 = x2774 + x2726;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2779 = x2775 + x2741;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2780 = x2776 + x2756;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2781 = x2777 + x2712;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2782 = x2778 + x2727;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2783 = x2779 + x2742;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2784 = x2780 + x2757;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2785 = x2781 + x2713;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2786 = x2782 + x2728;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2787 = x2783 + x2743;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2788 = x2784 + x2758;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2789 = x2785 + x2714;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2790 = x2786 + x2729;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2791 = x2787 + x2744;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2792 = x2788 + x2759;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2793 = x2789 + x2715;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2794 = x2790 + x2730;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2795 = x2791 + x2745;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2796 = x2792 + x2760;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2797 = x2793 + x2716;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2798 = x2794 + x2731;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2799 = x2795 + x2746;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2800 = x2796 + x2761;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2801 = x2797 + x2717;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2802 = x2798 + x2732;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2803 = x2799 + x2747;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2804 = x2800 + x2762;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2805 = x2801 + x2718;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2806 = x2802 + x2733;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2807 = x2803 + x2748;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2808 = x2804 + x2763;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2809 = x2805 + x2719;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2810 = x2806 + x2734;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2811 = x2807 + x2749;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2812 = x2808 + x2764;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2813 = x2809 + x2720;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2814 = x2810 + x2735;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2815 = x2811 + x2750;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2816 = x2812 + x2765;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2817 = x2813 + x2721;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2818 = x2814 + x2736;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2819 = x2815 + x2751;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2820 = x2816 + x2766;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2821 = x2817 + x2722;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2822 = x2818 + x2737;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2823 = x2819 + x2752;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2824 = x2820 + x2767;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2825 = x2823 + x2753;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2826 = x2824 + x2768;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2827 = x2821 + x2723;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x2828 = x2822 + x2738;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x2829 = x2827 + x2825;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x2830 = x2828 + x2826;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2831 = Fp(x2829.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2831);
          reg = x2831;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2832 = Fp(x2829.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2833 = x2832 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2833);
          reg = x2833;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2834 = Fp(x2829.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2835 = x2834 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2835);
          reg = x2835;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2836 = Fp(x2829.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2837 = x2836 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2837);
          reg = x2837;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2838 = Fp(x2829.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2839 = x2838 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2839);
          reg = x2839;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2840 = Fp(x2829.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2841 = x2840 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][31 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2841);
          reg = x2841;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2842 = Fp(x2829.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2843 = x2842 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][32 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2843);
          reg = x2843;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2844 = Fp(x2829.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2845 = x2844 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][33 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2845);
          reg = x2845;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2846 = Fp(x2829.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2847 = x2846 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][34 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2847);
          reg = x2847;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2848 = Fp(x2829.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2849 = x2848 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][35 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2849);
          reg = x2849;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2850 = Fp(x2829.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2851 = x2850 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2851);
          reg = x2851;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2852 = Fp(x2829.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2853 = x2852 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2853);
          reg = x2853;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2854 = Fp(x2829.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2855 = x2854 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2855);
          reg = x2855;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2856 = Fp(x2829.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2857 = x2856 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2857);
          reg = x2857;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2858 = Fp(x2829.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2859 = x2858 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][40 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2859);
          reg = x2859;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2860 = Fp(x2829.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2861 = x2860 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2861);
          reg = x2861;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2862 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x2862 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2863 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x2863 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2864 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x2864 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2865 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x2865 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2866 = args[2][30 * steps + ((cycle - 0) & mask)];
      assert(x2866 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2867 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x2867 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2868 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x2868 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2869 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x2869 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2870 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x2870 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2871 = args[2][35 * steps + ((cycle - 0) & mask)];
      assert(x2871 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2872 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x2872 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2873 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x2873 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2874 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x2874 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2875 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x2875 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2876 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x2876 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2877 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x2877 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2878 = x2863 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2879 = x2864 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2880 = x2865 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2881 = x2866 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2882 = x2867 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2883 = x2868 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2884 = x2869 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2885 = x2870 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2886 = x2871 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2887 = x2872 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2888 = x2873 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2889 = x2874 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2890 = x2875 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2891 = x2876 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2892 = x2877 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2893 = x2862 + x2878;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2894 = x2893 + x2879;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2895 = x2894 + x2880;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2896 = x2895 + x2881;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2897 = x2896 + x2882;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2898 = x2897 + x2883;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2899 = x2898 + x2884;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2900 = x2899 + x2885;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2901 = x2900 + x2886;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2902 = x2901 + x2887;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2903 = x2902 + x2888;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2904 = x2903 + x2889;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2905 = x2904 + x2890;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2906 = x2905 + x2891;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2907 = x2906 + x2892;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2908 = x2829 - x2907;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2909 = x2908 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x2910 = Fp(x2909.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2910);
          reg = x2910;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":127:32)
      auto x2911 = x2830 + x2909;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2912 = Fp(x2911.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2912);
          reg = x2912;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2913 = Fp(x2911.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2914 = x2913 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2914);
          reg = x2914;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2915 = Fp(x2911.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2916 = x2915 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2916);
          reg = x2916;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2917 = Fp(x2911.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2918 = x2917 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][45 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2918);
          reg = x2918;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2919 = Fp(x2911.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2920 = x2919 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][46 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2920);
          reg = x2920;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2921 = Fp(x2911.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2922 = x2921 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][47 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2922);
          reg = x2922;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2923 = Fp(x2911.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2924 = x2923 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][48 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2924);
          reg = x2924;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2925 = Fp(x2911.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2926 = x2925 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][49 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2926);
          reg = x2926;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2927 = Fp(x2911.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2928 = x2927 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][50 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2928);
          reg = x2928;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2929 = Fp(x2911.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2930 = x2929 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][51 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2930);
          reg = x2930;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2931 = Fp(x2911.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2932 = x2931 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][52 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2932);
          reg = x2932;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2933 = Fp(x2911.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2934 = x2933 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][53 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2934);
          reg = x2934;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2935 = Fp(x2911.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2936 = x2935 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][54 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2936);
          reg = x2936;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2937 = Fp(x2911.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2938 = x2937 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][55 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2938);
          reg = x2938;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2939 = Fp(x2911.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2940 = x2939 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][56 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2940);
          reg = x2940;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x2941 = Fp(x2911.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x2942 = x2941 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][57 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2942);
          reg = x2942;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2943 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x2943 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2944 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x2944 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2945 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x2945 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2946 = args[2][45 * steps + ((cycle - 0) & mask)];
      assert(x2946 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2947 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x2947 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2948 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x2948 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2949 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x2949 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2950 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x2950 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2951 = args[2][50 * steps + ((cycle - 0) & mask)];
      assert(x2951 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2952 = args[2][51 * steps + ((cycle - 0) & mask)];
      assert(x2952 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2953 = args[2][52 * steps + ((cycle - 0) & mask)];
      assert(x2953 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2954 = args[2][53 * steps + ((cycle - 0) & mask)];
      assert(x2954 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2955 = args[2][54 * steps + ((cycle - 0) & mask)];
      assert(x2955 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2956 = args[2][55 * steps + ((cycle - 0) & mask)];
      assert(x2956 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2957 = args[2][56 * steps + ((cycle - 0) & mask)];
      assert(x2957 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2958 = args[2][57 * steps + ((cycle - 0) & mask)];
      assert(x2958 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2959 = x2944 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2960 = x2945 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2961 = x2946 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2962 = x2947 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2963 = x2948 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2964 = x2949 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2965 = x2950 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2966 = x2951 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2967 = x2952 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2968 = x2953 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2969 = x2954 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2970 = x2955 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2971 = x2956 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2972 = x2957 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x2973 = x2958 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2974 = x2943 + x2959;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2975 = x2974 + x2960;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2976 = x2975 + x2961;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2977 = x2976 + x2962;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2978 = x2977 + x2963;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2979 = x2978 + x2964;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2980 = x2979 + x2965;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2981 = x2980 + x2966;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2982 = x2981 + x2967;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2983 = x2982 + x2968;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2984 = x2983 + x2969;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2985 = x2984 + x2970;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2986 = x2985 + x2971;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2987 = x2986 + x2972;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x2988 = x2987 + x2973;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x2989 = x2911 - x2988;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x2990 = x2989 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x2991 = Fp(x2990.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x2991);
          reg = x2991;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2992 = args[2][60 * steps + ((cycle - 4) & mask)];
      assert(x2992 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2993 = args[2][61 * steps + ((cycle - 4) & mask)];
      assert(x2993 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2994 = args[2][62 * steps + ((cycle - 4) & mask)];
      assert(x2994 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2995 = args[2][63 * steps + ((cycle - 4) & mask)];
      assert(x2995 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2996 = args[2][64 * steps + ((cycle - 4) & mask)];
      assert(x2996 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2997 = args[2][65 * steps + ((cycle - 4) & mask)];
      assert(x2997 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2998 = args[2][66 * steps + ((cycle - 4) & mask)];
      assert(x2998 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x2999 = args[2][67 * steps + ((cycle - 4) & mask)];
      assert(x2999 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3000 = args[2][68 * steps + ((cycle - 4) & mask)];
      assert(x3000 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3001 = args[2][69 * steps + ((cycle - 4) & mask)];
      assert(x3001 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3002 = args[2][70 * steps + ((cycle - 4) & mask)];
      assert(x3002 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3003 = args[2][71 * steps + ((cycle - 4) & mask)];
      assert(x3003 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3004 = args[2][72 * steps + ((cycle - 4) & mask)];
      assert(x3004 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3005 = args[2][73 * steps + ((cycle - 4) & mask)];
      assert(x3005 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3006 = args[2][74 * steps + ((cycle - 4) & mask)];
      assert(x3006 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3007 = args[2][75 * steps + ((cycle - 4) & mask)];
      assert(x3007 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3008 = args[2][76 * steps + ((cycle - 4) & mask)];
      assert(x3008 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3009 = args[2][77 * steps + ((cycle - 4) & mask)];
      assert(x3009 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3010 = args[2][78 * steps + ((cycle - 4) & mask)];
      assert(x3010 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3011 = args[2][79 * steps + ((cycle - 4) & mask)];
      assert(x3011 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3012 = args[2][80 * steps + ((cycle - 4) & mask)];
      assert(x3012 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3013 = args[2][81 * steps + ((cycle - 4) & mask)];
      assert(x3013 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3014 = args[2][82 * steps + ((cycle - 4) & mask)];
      assert(x3014 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3015 = args[2][83 * steps + ((cycle - 4) & mask)];
      assert(x3015 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3016 = args[2][84 * steps + ((cycle - 4) & mask)];
      assert(x3016 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3017 = args[2][85 * steps + ((cycle - 4) & mask)];
      assert(x3017 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3018 = args[2][86 * steps + ((cycle - 4) & mask)];
      assert(x3018 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3019 = args[2][87 * steps + ((cycle - 4) & mask)];
      assert(x3019 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3020 = args[2][88 * steps + ((cycle - 4) & mask)];
      assert(x3020 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3021 = args[2][89 * steps + ((cycle - 4) & mask)];
      assert(x3021 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3022 = args[2][90 * steps + ((cycle - 4) & mask)];
      assert(x3022 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3023 = args[2][91 * steps + ((cycle - 4) & mask)];
      assert(x3023 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3024 = args[2][60 * steps + ((cycle - 68) & mask)];
      assert(x3024 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3025 = args[2][61 * steps + ((cycle - 68) & mask)];
      assert(x3025 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3026 = args[2][62 * steps + ((cycle - 68) & mask)];
      assert(x3026 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3027 = args[2][63 * steps + ((cycle - 68) & mask)];
      assert(x3027 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3028 = args[2][64 * steps + ((cycle - 68) & mask)];
      assert(x3028 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3029 = args[2][65 * steps + ((cycle - 68) & mask)];
      assert(x3029 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3030 = args[2][66 * steps + ((cycle - 68) & mask)];
      assert(x3030 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3031 = args[2][67 * steps + ((cycle - 68) & mask)];
      assert(x3031 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3032 = args[2][68 * steps + ((cycle - 68) & mask)];
      assert(x3032 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3033 = args[2][69 * steps + ((cycle - 68) & mask)];
      assert(x3033 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3034 = args[2][70 * steps + ((cycle - 68) & mask)];
      assert(x3034 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3035 = args[2][71 * steps + ((cycle - 68) & mask)];
      assert(x3035 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3036 = args[2][72 * steps + ((cycle - 68) & mask)];
      assert(x3036 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3037 = args[2][73 * steps + ((cycle - 68) & mask)];
      assert(x3037 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3038 = args[2][74 * steps + ((cycle - 68) & mask)];
      assert(x3038 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3039 = args[2][75 * steps + ((cycle - 68) & mask)];
      assert(x3039 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3040 = args[2][76 * steps + ((cycle - 68) & mask)];
      assert(x3040 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3041 = args[2][77 * steps + ((cycle - 68) & mask)];
      assert(x3041 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3042 = args[2][78 * steps + ((cycle - 68) & mask)];
      assert(x3042 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3043 = args[2][79 * steps + ((cycle - 68) & mask)];
      assert(x3043 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3044 = args[2][80 * steps + ((cycle - 68) & mask)];
      assert(x3044 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3045 = args[2][81 * steps + ((cycle - 68) & mask)];
      assert(x3045 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3046 = args[2][82 * steps + ((cycle - 68) & mask)];
      assert(x3046 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3047 = args[2][83 * steps + ((cycle - 68) & mask)];
      assert(x3047 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3048 = args[2][84 * steps + ((cycle - 68) & mask)];
      assert(x3048 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3049 = args[2][85 * steps + ((cycle - 68) & mask)];
      assert(x3049 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3050 = args[2][86 * steps + ((cycle - 68) & mask)];
      assert(x3050 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3051 = args[2][87 * steps + ((cycle - 68) & mask)];
      assert(x3051 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3052 = args[2][88 * steps + ((cycle - 68) & mask)];
      assert(x3052 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3053 = args[2][89 * steps + ((cycle - 68) & mask)];
      assert(x3053 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3054 = args[2][90 * steps + ((cycle - 68) & mask)];
      assert(x3054 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3055 = args[2][91 * steps + ((cycle - 68) & mask)];
      assert(x3055 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3056 = x2993 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3057 = x2994 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3058 = x2995 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3059 = x2996 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3060 = x2997 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3061 = x2998 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3062 = x2999 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3063 = x3000 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3064 = x3001 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3065 = x3002 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3066 = x3003 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3067 = x3004 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3068 = x3005 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3069 = x3006 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3070 = x3007 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3071 = x3009 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3072 = x3010 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3073 = x3011 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3074 = x3012 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3075 = x3013 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3076 = x3014 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3077 = x3015 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3078 = x3016 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3079 = x3017 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3080 = x3018 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3081 = x3019 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3082 = x3020 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3083 = x3021 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3084 = x3022 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3085 = x3023 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3086 = x3025 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3087 = x3026 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3088 = x3027 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3089 = x3028 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3090 = x3029 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3091 = x3030 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3092 = x3031 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3093 = x3032 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3094 = x3033 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3095 = x3034 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3096 = x3035 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3097 = x3036 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3098 = x3037 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3099 = x3038 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3100 = x3039 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3101 = x3041 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3102 = x3042 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3103 = x3043 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3104 = x3044 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3105 = x3045 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3106 = x3046 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3107 = x3047 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3108 = x3048 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3109 = x3049 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3110 = x3050 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3111 = x3051 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3112 = x3052 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3113 = x3053 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3114 = x3054 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x3115 = x3055 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3116 = x2992 + x3056;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3117 = x3008 + x3071;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3118 = x3024 + x3086;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3119 = x3040 + x3101;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3120 = x3116 + x3057;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3121 = x3117 + x3072;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3122 = x3118 + x3087;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3123 = x3119 + x3102;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3124 = x3120 + x3058;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3125 = x3121 + x3073;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3126 = x3122 + x3088;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3127 = x3123 + x3103;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3128 = x3124 + x3059;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3129 = x3125 + x3074;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3130 = x3126 + x3089;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3131 = x3127 + x3104;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3132 = x3128 + x3060;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3133 = x3129 + x3075;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3134 = x3130 + x3090;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3135 = x3131 + x3105;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3136 = x3132 + x3061;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3137 = x3133 + x3076;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3138 = x3134 + x3091;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3139 = x3135 + x3106;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3140 = x3136 + x3062;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3141 = x3137 + x3077;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3142 = x3138 + x3092;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3143 = x3139 + x3107;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3144 = x3140 + x3063;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3145 = x3141 + x3078;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3146 = x3142 + x3093;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3147 = x3143 + x3108;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3148 = x3144 + x3064;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3149 = x3145 + x3079;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3150 = x3146 + x3094;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3151 = x3147 + x3109;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3152 = x3148 + x3065;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3153 = x3149 + x3080;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3154 = x3150 + x3095;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3155 = x3151 + x3110;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3156 = x3152 + x3066;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3157 = x3153 + x3081;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3158 = x3154 + x3096;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3159 = x3155 + x3111;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3160 = x3156 + x3067;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3161 = x3157 + x3082;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3162 = x3158 + x3097;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3163 = x3159 + x3112;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3164 = x3160 + x3068;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3165 = x3161 + x3083;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3166 = x3162 + x3098;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3167 = x3163 + x3113;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3168 = x3164 + x3069;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3169 = x3165 + x3084;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3170 = x3166 + x3099;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3171 = x3167 + x3114;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3172 = x3170 + x3100;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3173 = x3171 + x3115;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3174 = x3168 + x3070;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x3175 = x3169 + x3085;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x3176 = x3174 + x3172;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x3177 = x3175 + x3173;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3178 = Fp(x3176.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][60 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3178);
          reg = x3178;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3179 = Fp(x3176.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3180 = x3179 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][61 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3180);
          reg = x3180;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3181 = Fp(x3176.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3182 = x3181 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][62 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3182);
          reg = x3182;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3183 = Fp(x3176.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3184 = x3183 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][63 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3184);
          reg = x3184;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3185 = Fp(x3176.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3186 = x3185 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][64 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3186);
          reg = x3186;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3187 = Fp(x3176.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3188 = x3187 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][65 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3188);
          reg = x3188;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3189 = Fp(x3176.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3190 = x3189 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][66 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3190);
          reg = x3190;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3191 = Fp(x3176.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3192 = x3191 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][67 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3192);
          reg = x3192;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3193 = Fp(x3176.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3194 = x3193 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][68 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3194);
          reg = x3194;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3195 = Fp(x3176.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3196 = x3195 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][69 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3196);
          reg = x3196;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3197 = Fp(x3176.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3198 = x3197 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][70 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3198);
          reg = x3198;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3199 = Fp(x3176.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3200 = x3199 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][71 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3200);
          reg = x3200;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3201 = Fp(x3176.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3202 = x3201 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][72 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3202);
          reg = x3202;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3203 = Fp(x3176.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3204 = x3203 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][73 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3204);
          reg = x3204;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3205 = Fp(x3176.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3206 = x3205 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][74 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3206);
          reg = x3206;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3207 = Fp(x3176.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3208 = x3207 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][75 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3208);
          reg = x3208;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3209 = args[2][60 * steps + ((cycle - 0) & mask)];
      assert(x3209 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3210 = args[2][61 * steps + ((cycle - 0) & mask)];
      assert(x3210 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3211 = args[2][62 * steps + ((cycle - 0) & mask)];
      assert(x3211 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3212 = args[2][63 * steps + ((cycle - 0) & mask)];
      assert(x3212 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3213 = args[2][64 * steps + ((cycle - 0) & mask)];
      assert(x3213 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3214 = args[2][65 * steps + ((cycle - 0) & mask)];
      assert(x3214 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3215 = args[2][66 * steps + ((cycle - 0) & mask)];
      assert(x3215 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3216 = args[2][67 * steps + ((cycle - 0) & mask)];
      assert(x3216 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3217 = args[2][68 * steps + ((cycle - 0) & mask)];
      assert(x3217 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3218 = args[2][69 * steps + ((cycle - 0) & mask)];
      assert(x3218 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3219 = args[2][70 * steps + ((cycle - 0) & mask)];
      assert(x3219 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3220 = args[2][71 * steps + ((cycle - 0) & mask)];
      assert(x3220 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3221 = args[2][72 * steps + ((cycle - 0) & mask)];
      assert(x3221 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3222 = args[2][73 * steps + ((cycle - 0) & mask)];
      assert(x3222 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3223 = args[2][74 * steps + ((cycle - 0) & mask)];
      assert(x3223 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3224 = args[2][75 * steps + ((cycle - 0) & mask)];
      assert(x3224 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3225 = x3210 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3226 = x3211 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3227 = x3212 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3228 = x3213 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3229 = x3214 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3230 = x3215 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3231 = x3216 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3232 = x3217 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3233 = x3218 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3234 = x3219 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3235 = x3220 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3236 = x3221 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3237 = x3222 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3238 = x3223 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3239 = x3224 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3240 = x3209 + x3225;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3241 = x3240 + x3226;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3242 = x3241 + x3227;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3243 = x3242 + x3228;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3244 = x3243 + x3229;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3245 = x3244 + x3230;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3246 = x3245 + x3231;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3247 = x3246 + x3232;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3248 = x3247 + x3233;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3249 = x3248 + x3234;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3250 = x3249 + x3235;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3251 = x3250 + x3236;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3252 = x3251 + x3237;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3253 = x3252 + x3238;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3254 = x3253 + x3239;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x3255 = x3176 - x3254;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x3256 = x3255 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x3257 = Fp(x3256.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3257);
          reg = x3257;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":127:32)
      auto x3258 = x3177 + x3256;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3259 = Fp(x3258.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][76 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3259);
          reg = x3259;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3260 = Fp(x3258.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3261 = x3260 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][77 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3261);
          reg = x3261;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3262 = Fp(x3258.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3263 = x3262 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][78 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3263);
          reg = x3263;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3264 = Fp(x3258.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3265 = x3264 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][79 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3265);
          reg = x3265;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3266 = Fp(x3258.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3267 = x3266 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][80 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3267);
          reg = x3267;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3268 = Fp(x3258.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3269 = x3268 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][81 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3269);
          reg = x3269;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3270 = Fp(x3258.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3271 = x3270 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][82 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3271);
          reg = x3271;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3272 = Fp(x3258.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3273 = x3272 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][83 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3273);
          reg = x3273;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3274 = Fp(x3258.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3275 = x3274 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][84 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3275);
          reg = x3275;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3276 = Fp(x3258.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3277 = x3276 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][85 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3277);
          reg = x3277;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3278 = Fp(x3258.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3279 = x3278 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][86 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3279);
          reg = x3279;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3280 = Fp(x3258.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3281 = x3280 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][87 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3281);
          reg = x3281;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3282 = Fp(x3258.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3283 = x3282 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][88 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3283);
          reg = x3283;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3284 = Fp(x3258.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3285 = x3284 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][89 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3285);
          reg = x3285;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3286 = Fp(x3258.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3287 = x3286 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][90 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3287);
          reg = x3287;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x3288 = Fp(x3258.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x3289 = x3288 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][91 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3289);
          reg = x3289;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3290 = args[2][76 * steps + ((cycle - 0) & mask)];
      assert(x3290 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3291 = args[2][77 * steps + ((cycle - 0) & mask)];
      assert(x3291 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3292 = args[2][78 * steps + ((cycle - 0) & mask)];
      assert(x3292 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3293 = args[2][79 * steps + ((cycle - 0) & mask)];
      assert(x3293 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3294 = args[2][80 * steps + ((cycle - 0) & mask)];
      assert(x3294 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3295 = args[2][81 * steps + ((cycle - 0) & mask)];
      assert(x3295 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3296 = args[2][82 * steps + ((cycle - 0) & mask)];
      assert(x3296 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3297 = args[2][83 * steps + ((cycle - 0) & mask)];
      assert(x3297 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3298 = args[2][84 * steps + ((cycle - 0) & mask)];
      assert(x3298 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3299 = args[2][85 * steps + ((cycle - 0) & mask)];
      assert(x3299 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3300 = args[2][86 * steps + ((cycle - 0) & mask)];
      assert(x3300 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3301 = args[2][87 * steps + ((cycle - 0) & mask)];
      assert(x3301 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3302 = args[2][88 * steps + ((cycle - 0) & mask)];
      assert(x3302 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3303 = args[2][89 * steps + ((cycle - 0) & mask)];
      assert(x3303 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3304 = args[2][90 * steps + ((cycle - 0) & mask)];
      assert(x3304 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3305 = args[2][91 * steps + ((cycle - 0) & mask)];
      assert(x3305 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3306 = x3291 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3307 = x3292 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3308 = x3293 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3309 = x3294 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3310 = x3295 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3311 = x3296 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3312 = x3297 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3313 = x3298 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3314 = x3299 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3315 = x3300 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3316 = x3301 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3317 = x3302 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3318 = x3303 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3319 = x3304 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x3320 = x3305 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3321 = x3290 + x3306;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3322 = x3321 + x3307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3323 = x3322 + x3308;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3324 = x3323 + x3309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3325 = x3324 + x3310;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3326 = x3325 + x3311;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3327 = x3326 + x3312;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3328 = x3327 + x3313;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3329 = x3328 + x3314;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3330 = x3329 + x3315;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3331 = x3330 + x3316;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3332 = x3331 + x3317;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3333 = x3332 + x3318;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3334 = x3333 + x3319;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x3335 = x3334 + x3320;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x3336 = x3258 - x3335;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x3337 = x3336 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x3338 = Fp(x3337.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3338);
          reg = x3338;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3339 = x2871 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3340 = x2872 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3341 = x2873 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3342 = x2874 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3343 = x2875 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3344 = x2876 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3345 = x2877 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3346 = x2952 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3347 = x2953 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3348 = x2954 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3349 = x2955 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3350 = x2956 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3351 = x2957 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3352 = x2958 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3353 = x3218 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3354 = x3219 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3355 = x3220 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3356 = x3221 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3357 = x3222 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3358 = x3223 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3359 = x3224 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3360 = x3299 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3361 = x3300 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3362 = x3301 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3363 = x3302 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3364 = x3303 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3365 = x3304 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3366 = x3305 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3367 = x2870 + x3339;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3368 = x2951 + x3346;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3369 = x3217 + x3353;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3370 = x3298 + x3360;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3371 = x3367 + x3340;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3372 = x3368 + x3347;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3373 = x3369 + x3354;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3374 = x3370 + x3361;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3375 = x3371 + x3341;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3376 = x3372 + x3348;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3377 = x3373 + x3355;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3378 = x3374 + x3362;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3379 = x3375 + x3342;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3380 = x3376 + x3349;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3381 = x3377 + x3356;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3382 = x3378 + x3363;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3383 = x3379 + x3343;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3384 = x3380 + x3350;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3385 = x3381 + x3357;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3386 = x3382 + x3364;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3387 = x3383 + x3344;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3388 = x3384 + x3351;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3389 = x3385 + x3358;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3390 = x3386 + x3365;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3391 = x3387 + x3345;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3392 = x3388 + x3352;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3393 = x3389 + x3359;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3394 = x3390 + x3366;
      host_args.at(0) = x1361;
      host_args.at(1) = x2899;
      host_args.at(2) = x3391;
      host_args.at(3) = x2980;
      host_args.at(4) = x3392;
      host_args.at(5) = x3246;
      host_args.at(6) = x3393;
      host_args.at(7) = x3327;
      host_args.at(8) = x3394;
      host(ctx, "log", "%u> SHA_FINI: a = %w, e = %w", host_args.data(), 9, host_outs.data(), 0);
      // loc("zirgen/circuit/recursion/sha.cpp":248:71)
      auto x3395 = x2899 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":248:46)
      auto x3396 = x2980 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":248:61)
      auto x3397 = x3391 + x3395;
      // loc("zirgen/circuit/recursion/sha.cpp":248:36)
      auto x3398 = x3392 + x3396;
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3399 = args[0][18 * steps + ((cycle - 0) & mask)];
      assert(x3399 != Fp::invalid());
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x3399);
        reg = x3399;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x3398);
        reg = x3398;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x3397);
        reg = x3397;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x3400 = args[2][11 * steps + ((cycle - 0) & mask)];
        assert(x3400 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3401 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x3401 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3402 = args[2][13 * steps + ((cycle - 0) & mask)];
        assert(x3402 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3403 = args[2][14 * steps + ((cycle - 0) & mask)];
        assert(x3403 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3404 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x3404 != Fp::invalid());
        host_args.at(0) = x3400;
        host_args.at(1) = x3401;
        host_args.at(2) = x3402;
        host_args.at(3) = x3403;
        host_args.at(4) = x3404;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
      // loc("zirgen/circuit/recursion/sha.cpp":249:71)
      auto x3405 = x3246 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":249:46)
      auto x3406 = x3327 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":249:61)
      auto x3407 = x3393 + x3405;
      // loc("zirgen/circuit/recursion/sha.cpp":249:36)
      auto x3408 = x3394 + x3406;
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3409 = args[0][19 * steps + ((cycle - 0) & mask)];
      assert(x3409 != Fp::invalid());
      // loc("zirgen/circuit/recursion/wom.cpp":87:3)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x3409);
        reg = x3409;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x3408);
        reg = x3408;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x3407);
        reg = x3407;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x3410 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x3410 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3411 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x3411 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3412 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x3412 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3413 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x3413 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3414 = args[2][20 * steps + ((cycle - 0) & mask)];
        assert(x3414 != Fp::invalid());
        host_args.at(0) = x3410;
        host_args.at(1) = x3411;
        host_args.at(2) = x3412;
        host_args.at(3) = x3413;
        host_args.at(4) = x3414;
        host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/opcode(OneHot)/sha_load(Reg)"("./zirgen/components/mux.h":49:25))
    auto x3415 = args[0][15 * steps + ((cycle - 0) & mask)];
    assert(x3415 != Fp::invalid());
    if (x3415 != 0) {
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3416 = args[0][18 * steps + ((cycle - 0) & mask)];
      assert(x3416 != Fp::invalid());
      {
        host_args.at(0) = x3416;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x3417 = host_outs.at(0);
        auto x3418 = host_outs.at(1);
        auto x3419 = host_outs.at(2);
        auto x3420 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3417);
          reg = x3417;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3418);
          reg = x3418;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3419);
          reg = x3419;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3420);
          reg = x3420;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x3416);
        reg = x3416;
      }
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3421 = args[0][19 * steps + ((cycle - 0) & mask)];
      assert(x3421 != Fp::invalid());
      {
        host_args.at(0) = x3421;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x3422 = host_outs.at(0);
        auto x3423 = host_outs.at(1);
        auto x3424 = host_outs.at(2);
        auto x3425 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][17 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3422);
          reg = x3422;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][18 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3423);
          reg = x3423;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][19 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3424);
          reg = x3424;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][20 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x3425);
          reg = x3425;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x3421);
        reg = x3421;
      }
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[2](Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
      auto x3426 = args[0][20 * steps + ((cycle - 0) & mask)];
      assert(x3426 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":177:27)
      auto x3427 = x310 - x3426;
      if (x3427 != 0) {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3428 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x3428 != Fp::invalid());
        // loc("zirgen/circuit/recursion/sha.cpp":179:15)
        auto x3429 = x3428 * x241;
        {
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3430 = Fp(x3429.asUInt32() & x310.asUInt32());
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][118 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3430);
            reg = x3430;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3431 = Fp(x3429.asUInt32() & x309.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3432 = x3431 * x297;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][119 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3432);
            reg = x3432;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3433 = Fp(x3429.asUInt32() & x307.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3434 = x3433 * x296;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][120 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3434);
            reg = x3434;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3435 = Fp(x3429.asUInt32() & x303.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3436 = x3435 * x295;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][121 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3436);
            reg = x3436;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3437 = Fp(x3429.asUInt32() & x294.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3438 = x3437 * x293;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][122 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3438);
            reg = x3438;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3439 = Fp(x3429.asUInt32() & x291.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3440 = x3439 * x292;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][123 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3440);
            reg = x3440;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3441 = Fp(x3429.asUInt32() & x289.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3442 = x3441 * x290;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][124 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3442);
            reg = x3442;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3443 = Fp(x3429.asUInt32() & x288.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3444 = x3443 * x287;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][125 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3444);
            reg = x3444;
          }
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3445 = args[2][118 * steps + ((cycle - 0) & mask)];
        assert(x3445 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3446 = args[2][119 * steps + ((cycle - 0) & mask)];
        assert(x3446 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3447 = args[2][120 * steps + ((cycle - 0) & mask)];
        assert(x3447 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3448 = args[2][121 * steps + ((cycle - 0) & mask)];
        assert(x3448 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3449 = args[2][122 * steps + ((cycle - 0) & mask)];
        assert(x3449 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3450 = args[2][123 * steps + ((cycle - 0) & mask)];
        assert(x3450 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3451 = args[2][124 * steps + ((cycle - 0) & mask)];
        assert(x3451 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3452 = args[2][125 * steps + ((cycle - 0) & mask)];
        assert(x3452 != Fp::invalid());
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3453 = x3446 * x309;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3454 = x3447 * x307;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3455 = x3448 * x303;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3456 = x3449 * x294;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3457 = x3450 * x291;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3458 = x3451 * x289;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3459 = x3452 * x288;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3460 = x3445 + x3453;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3461 = x3460 + x3454;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3462 = x3461 + x3455;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3463 = x3462 + x3456;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3464 = x3463 + x3457;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3465 = x3464 + x3458;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3466 = x3465 + x3459;
        // loc("zirgen/circuit/recursion/sha.cpp":106:16)
        auto x3467 = x3429 - x3466;
        // loc("zirgen/circuit/recursion/sha.cpp":106:15)
        auto x3468 = x3467 * x286;
        {
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3469 = Fp(x3468.asUInt32() & x310.asUInt32());
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][110 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3469);
            reg = x3469;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3470 = Fp(x3468.asUInt32() & x309.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3471 = x3470 * x297;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][111 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3471);
            reg = x3471;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3472 = Fp(x3468.asUInt32() & x307.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3473 = x3472 * x296;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][112 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3473);
            reg = x3473;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3474 = Fp(x3468.asUInt32() & x303.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3475 = x3474 * x295;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][113 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3475);
            reg = x3475;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3476 = Fp(x3468.asUInt32() & x294.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3477 = x3476 * x293;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][114 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3477);
            reg = x3477;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3478 = Fp(x3468.asUInt32() & x291.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3479 = x3478 * x292;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][115 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3479);
            reg = x3479;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3480 = Fp(x3468.asUInt32() & x289.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3481 = x3480 * x290;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][116 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3481);
            reg = x3481;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3482 = Fp(x3468.asUInt32() & x288.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3483 = x3482 * x287;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][117 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3483);
            reg = x3483;
          }
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3484 = args[2][110 * steps + ((cycle - 0) & mask)];
        assert(x3484 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3485 = args[2][111 * steps + ((cycle - 0) & mask)];
        assert(x3485 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3486 = args[2][112 * steps + ((cycle - 0) & mask)];
        assert(x3486 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3487 = args[2][113 * steps + ((cycle - 0) & mask)];
        assert(x3487 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3488 = args[2][114 * steps + ((cycle - 0) & mask)];
        assert(x3488 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3489 = args[2][115 * steps + ((cycle - 0) & mask)];
        assert(x3489 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3490 = args[2][116 * steps + ((cycle - 0) & mask)];
        assert(x3490 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3491 = args[2][117 * steps + ((cycle - 0) & mask)];
        assert(x3491 != Fp::invalid());
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3492 = x3485 * x309;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3493 = x3486 * x307;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3494 = x3487 * x303;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3495 = x3488 * x294;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3496 = x3489 * x291;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3497 = x3490 * x289;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3498 = x3491 * x288;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3499 = x3484 + x3492;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3500 = x3499 + x3493;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3501 = x3500 + x3494;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3502 = x3501 + x3495;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3503 = x3502 + x3496;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3504 = x3503 + x3497;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3505 = x3504 + x3498;
        // loc("zirgen/circuit/recursion/sha.cpp":106:16)
        auto x3506 = x3468 - x3505;
        // loc("zirgen/circuit/recursion/sha.cpp":106:15)
        auto x3507 = x3506 * x286;
        {
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3508 = Fp(x3507.asUInt32() & x310.asUInt32());
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][102 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3508);
            reg = x3508;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3509 = Fp(x3507.asUInt32() & x309.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3510 = x3509 * x297;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][103 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3510);
            reg = x3510;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3511 = Fp(x3507.asUInt32() & x307.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3512 = x3511 * x296;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][104 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3512);
            reg = x3512;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3513 = Fp(x3507.asUInt32() & x303.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3514 = x3513 * x295;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][105 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3514);
            reg = x3514;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3515 = Fp(x3507.asUInt32() & x294.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3516 = x3515 * x293;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][106 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3516);
            reg = x3516;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3517 = Fp(x3507.asUInt32() & x291.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3518 = x3517 * x292;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][107 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3518);
            reg = x3518;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3519 = Fp(x3507.asUInt32() & x289.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3520 = x3519 * x290;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][108 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3520);
            reg = x3520;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3521 = Fp(x3507.asUInt32() & x288.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3522 = x3521 * x287;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][109 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3522);
            reg = x3522;
          }
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3523 = args[2][102 * steps + ((cycle - 0) & mask)];
        assert(x3523 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3524 = args[2][103 * steps + ((cycle - 0) & mask)];
        assert(x3524 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3525 = args[2][104 * steps + ((cycle - 0) & mask)];
        assert(x3525 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3526 = args[2][105 * steps + ((cycle - 0) & mask)];
        assert(x3526 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3527 = args[2][106 * steps + ((cycle - 0) & mask)];
        assert(x3527 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3528 = args[2][107 * steps + ((cycle - 0) & mask)];
        assert(x3528 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3529 = args[2][108 * steps + ((cycle - 0) & mask)];
        assert(x3529 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3530 = args[2][109 * steps + ((cycle - 0) & mask)];
        assert(x3530 != Fp::invalid());
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3531 = x3524 * x309;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3532 = x3525 * x307;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3533 = x3526 * x303;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3534 = x3527 * x294;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3535 = x3528 * x291;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3536 = x3529 * x289;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3537 = x3530 * x288;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3538 = x3523 + x3531;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3539 = x3538 + x3532;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3540 = x3539 + x3533;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3541 = x3540 + x3534;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3542 = x3541 + x3535;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3543 = x3542 + x3536;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3544 = x3543 + x3537;
        // loc("zirgen/circuit/recursion/sha.cpp":106:16)
        auto x3545 = x3507 - x3544;
        // loc("zirgen/circuit/recursion/sha.cpp":106:15)
        auto x3546 = x3545 * x286;
        {
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3547 = Fp(x3546.asUInt32() & x310.asUInt32());
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][94 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3547);
            reg = x3547;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3548 = Fp(x3546.asUInt32() & x309.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3549 = x3548 * x297;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][95 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3549);
            reg = x3549;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3550 = Fp(x3546.asUInt32() & x307.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3551 = x3550 * x296;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][96 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3551);
            reg = x3551;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3552 = Fp(x3546.asUInt32() & x303.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3553 = x3552 * x295;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][97 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3553);
            reg = x3553;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3554 = Fp(x3546.asUInt32() & x294.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3555 = x3554 * x293;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][98 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3555);
            reg = x3555;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3556 = Fp(x3546.asUInt32() & x291.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3557 = x3556 * x292;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][99 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3557);
            reg = x3557;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3558 = Fp(x3546.asUInt32() & x289.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3559 = x3558 * x290;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][100 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3559);
            reg = x3559;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3560 = Fp(x3546.asUInt32() & x288.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3561 = x3560 * x287;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][101 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3561);
            reg = x3561;
          }
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3562 = args[2][100 * steps + ((cycle - 0) & mask)];
        assert(x3562 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3563 = args[2][97 * steps + ((cycle - 0) & mask)];
        assert(x3563 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3564 = args[2][98 * steps + ((cycle - 0) & mask)];
        assert(x3564 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3565 = args[2][99 * steps + ((cycle - 0) & mask)];
        assert(x3565 != Fp::invalid());
        // loc("zirgen/circuit/recursion/sha.cpp":193:14)
        auto x3566 = x3563 + x3564;
        // loc("zirgen/circuit/recursion/sha.cpp":193:14)
        auto x3567 = x3566 + x3565;
        // loc("zirgen/circuit/recursion/sha.cpp":193:14)
        auto x3568 = x3567 + x3562;
        {
          // loc("zirgen/circuit/recursion/sha.cpp":202:25)
          auto x3569 = x3568 - x307;
          // loc("zirgen/circuit/recursion/sha.cpp":202:25)
          auto x3570 = (x3569 == 0) ? Fp(1) : Fp(0);
          if (x3570 != 0) {
            // loc("./zirgen/components/bits.h":68:23)
            {
              auto& reg = args[2][9 * steps + cycle];
              assert(reg == Fp::invalid() || reg == x311);
              reg = x311;
            }
          }
          // loc("zirgen/circuit/recursion/sha.cpp":204:21)
          auto x3571 = x310 - x3570;
          if (x3571 != 0) {
            // loc("./zirgen/components/bits.h":68:23)
            {
              auto& reg = args[2][9 * steps + cycle];
              assert(reg == Fp::invalid() || reg == x3568);
              reg = x3568;
            }
          }
        }
      }
      if (x3426 != 0) {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3572 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x3572 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x3573 = args[2][13 * steps + ((cycle - 0) & mask)];
        assert(x3573 != Fp::invalid());
        {
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3574 = Fp(x3572.asUInt32() & x310.asUInt32());
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][118 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3574);
            reg = x3574;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3575 = Fp(x3572.asUInt32() & x309.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3576 = x3575 * x297;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][119 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3576);
            reg = x3576;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3577 = Fp(x3572.asUInt32() & x307.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3578 = x3577 * x296;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][120 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3578);
            reg = x3578;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3579 = Fp(x3572.asUInt32() & x303.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3580 = x3579 * x295;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][121 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3580);
            reg = x3580;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3581 = Fp(x3572.asUInt32() & x294.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3582 = x3581 * x293;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][122 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3582);
            reg = x3582;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3583 = Fp(x3572.asUInt32() & x291.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3584 = x3583 * x292;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][123 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3584);
            reg = x3584;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3585 = Fp(x3572.asUInt32() & x289.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3586 = x3585 * x290;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][124 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3586);
            reg = x3586;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3587 = Fp(x3572.asUInt32() & x288.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3588 = x3587 * x287;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][125 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3588);
            reg = x3588;
          }
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3589 = args[2][118 * steps + ((cycle - 0) & mask)];
        assert(x3589 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3590 = args[2][119 * steps + ((cycle - 0) & mask)];
        assert(x3590 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3591 = args[2][120 * steps + ((cycle - 0) & mask)];
        assert(x3591 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3592 = args[2][121 * steps + ((cycle - 0) & mask)];
        assert(x3592 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3593 = args[2][122 * steps + ((cycle - 0) & mask)];
        assert(x3593 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3594 = args[2][123 * steps + ((cycle - 0) & mask)];
        assert(x3594 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3595 = args[2][124 * steps + ((cycle - 0) & mask)];
        assert(x3595 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3596 = args[2][125 * steps + ((cycle - 0) & mask)];
        assert(x3596 != Fp::invalid());
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3597 = x3590 * x309;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3598 = x3591 * x307;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3599 = x3592 * x303;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3600 = x3593 * x294;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3601 = x3594 * x291;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3602 = x3595 * x289;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3603 = x3596 * x288;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3604 = x3589 + x3597;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3605 = x3604 + x3598;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3606 = x3605 + x3599;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3607 = x3606 + x3600;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3608 = x3607 + x3601;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3609 = x3608 + x3602;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3610 = x3609 + x3603;
        // loc("zirgen/circuit/recursion/sha.cpp":106:16)
        auto x3611 = x3572 - x3610;
        // loc("zirgen/circuit/recursion/sha.cpp":106:15)
        auto x3612 = x3611 * x286;
        {
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3613 = Fp(x3612.asUInt32() & x310.asUInt32());
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][110 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3613);
            reg = x3613;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3614 = Fp(x3612.asUInt32() & x309.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3615 = x3614 * x297;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][111 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3615);
            reg = x3615;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3616 = Fp(x3612.asUInt32() & x307.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3617 = x3616 * x296;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][112 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3617);
            reg = x3617;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3618 = Fp(x3612.asUInt32() & x303.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3619 = x3618 * x295;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][113 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3619);
            reg = x3619;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3620 = Fp(x3612.asUInt32() & x294.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3621 = x3620 * x293;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][114 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3621);
            reg = x3621;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3622 = Fp(x3612.asUInt32() & x291.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3623 = x3622 * x292;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][115 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3623);
            reg = x3623;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3624 = Fp(x3612.asUInt32() & x289.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3625 = x3624 * x290;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][116 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3625);
            reg = x3625;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3626 = Fp(x3612.asUInt32() & x288.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3627 = x3626 * x287;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][117 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3627);
            reg = x3627;
          }
        }
        {
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3628 = Fp(x3573.asUInt32() & x310.asUInt32());
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][102 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3628);
            reg = x3628;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3629 = Fp(x3573.asUInt32() & x309.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3630 = x3629 * x297;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][103 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3630);
            reg = x3630;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3631 = Fp(x3573.asUInt32() & x307.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3632 = x3631 * x296;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][104 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3632);
            reg = x3632;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3633 = Fp(x3573.asUInt32() & x303.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3634 = x3633 * x295;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][105 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3634);
            reg = x3634;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3635 = Fp(x3573.asUInt32() & x294.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3636 = x3635 * x293;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][106 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3636);
            reg = x3636;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3637 = Fp(x3573.asUInt32() & x291.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3638 = x3637 * x292;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][107 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3638);
            reg = x3638;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3639 = Fp(x3573.asUInt32() & x289.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3640 = x3639 * x290;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][108 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3640);
            reg = x3640;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3641 = Fp(x3573.asUInt32() & x288.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3642 = x3641 * x287;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][109 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3642);
            reg = x3642;
          }
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3643 = args[2][102 * steps + ((cycle - 0) & mask)];
        assert(x3643 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3644 = args[2][103 * steps + ((cycle - 0) & mask)];
        assert(x3644 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3645 = args[2][104 * steps + ((cycle - 0) & mask)];
        assert(x3645 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3646 = args[2][105 * steps + ((cycle - 0) & mask)];
        assert(x3646 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3647 = args[2][106 * steps + ((cycle - 0) & mask)];
        assert(x3647 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3648 = args[2][107 * steps + ((cycle - 0) & mask)];
        assert(x3648 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3649 = args[2][108 * steps + ((cycle - 0) & mask)];
        assert(x3649 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
        auto x3650 = args[2][109 * steps + ((cycle - 0) & mask)];
        assert(x3650 != Fp::invalid());
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3651 = x3644 * x309;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3652 = x3645 * x307;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3653 = x3646 * x303;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3654 = x3647 * x294;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3655 = x3648 * x291;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3656 = x3649 * x289;
        // loc("zirgen/circuit/recursion/sha.cpp":104:17)
        auto x3657 = x3650 * x288;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3658 = x3643 + x3651;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3659 = x3658 + x3652;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3660 = x3659 + x3653;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3661 = x3660 + x3654;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3662 = x3661 + x3655;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3663 = x3662 + x3656;
        // loc("zirgen/circuit/recursion/sha.cpp":104:11)
        auto x3664 = x3663 + x3657;
        // loc("zirgen/circuit/recursion/sha.cpp":106:16)
        auto x3665 = x3573 - x3664;
        // loc("zirgen/circuit/recursion/sha.cpp":106:15)
        auto x3666 = x3665 * x286;
        {
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3667 = Fp(x3666.asUInt32() & x310.asUInt32());
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][94 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3667);
            reg = x3667;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3668 = Fp(x3666.asUInt32() & x309.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3669 = x3668 * x297;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][95 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3669);
            reg = x3669;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3670 = Fp(x3666.asUInt32() & x307.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3671 = x3670 * x296;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][96 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3671);
            reg = x3671;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3672 = Fp(x3666.asUInt32() & x303.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3673 = x3672 * x295;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][97 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3673);
            reg = x3673;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3674 = Fp(x3666.asUInt32() & x294.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3675 = x3674 * x293;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][98 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3675);
            reg = x3675;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3676 = Fp(x3666.asUInt32() & x291.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3677 = x3676 * x292;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][99 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3677);
            reg = x3677;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3678 = Fp(x3666.asUInt32() & x289.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3679 = x3678 * x290;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][100 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3679);
            reg = x3679;
          }
          // loc("zirgen/circuit/recursion/sha.cpp":99:29)
          auto x3680 = Fp(x3666.asUInt32() & x288.asUInt32());
          // loc("zirgen/circuit/recursion/sha.cpp":99:28)
          auto x3681 = x3680 * x287;
          // loc("./zirgen/components/bits.h":27:23)
          {
            auto& reg = args[2][101 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x3681);
            reg = x3681;
          }
        }
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3682 = args[2][100 * steps + ((cycle - 0) & mask)];
      assert(x3682 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3683 = args[2][101 * steps + ((cycle - 0) & mask)];
      assert(x3683 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3684 = args[2][102 * steps + ((cycle - 0) & mask)];
      assert(x3684 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3685 = args[2][103 * steps + ((cycle - 0) & mask)];
      assert(x3685 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3686 = args[2][104 * steps + ((cycle - 0) & mask)];
      assert(x3686 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3687 = args[2][105 * steps + ((cycle - 0) & mask)];
      assert(x3687 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3688 = args[2][106 * steps + ((cycle - 0) & mask)];
      assert(x3688 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3689 = args[2][107 * steps + ((cycle - 0) & mask)];
      assert(x3689 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3690 = args[2][108 * steps + ((cycle - 0) & mask)];
      assert(x3690 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3691 = args[2][109 * steps + ((cycle - 0) & mask)];
      assert(x3691 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3692 = args[2][110 * steps + ((cycle - 0) & mask)];
      assert(x3692 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3693 = args[2][111 * steps + ((cycle - 0) & mask)];
      assert(x3693 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3694 = args[2][112 * steps + ((cycle - 0) & mask)];
      assert(x3694 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3695 = args[2][113 * steps + ((cycle - 0) & mask)];
      assert(x3695 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3696 = args[2][114 * steps + ((cycle - 0) & mask)];
      assert(x3696 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3697 = args[2][115 * steps + ((cycle - 0) & mask)];
      assert(x3697 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3698 = args[2][116 * steps + ((cycle - 0) & mask)];
      assert(x3698 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3699 = args[2][117 * steps + ((cycle - 0) & mask)];
      assert(x3699 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3700 = args[2][118 * steps + ((cycle - 0) & mask)];
      assert(x3700 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3701 = args[2][119 * steps + ((cycle - 0) & mask)];
      assert(x3701 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3702 = args[2][120 * steps + ((cycle - 0) & mask)];
      assert(x3702 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3703 = args[2][121 * steps + ((cycle - 0) & mask)];
      assert(x3703 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3704 = args[2][122 * steps + ((cycle - 0) & mask)];
      assert(x3704 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3705 = args[2][123 * steps + ((cycle - 0) & mask)];
      assert(x3705 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3706 = args[2][124 * steps + ((cycle - 0) & mask)];
      assert(x3706 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3707 = args[2][125 * steps + ((cycle - 0) & mask)];
      assert(x3707 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3708 = args[2][94 * steps + ((cycle - 0) & mask)];
      assert(x3708 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3709 = args[2][95 * steps + ((cycle - 0) & mask)];
      assert(x3709 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3710 = args[2][96 * steps + ((cycle - 0) & mask)];
      assert(x3710 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3711 = args[2][97 * steps + ((cycle - 0) & mask)];
      assert(x3711 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3712 = args[2][98 * steps + ((cycle - 0) & mask)];
      assert(x3712 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3713 = args[2][99 * steps + ((cycle - 0) & mask)];
      assert(x3713 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3714 = x3682 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3715 = x3683 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3716 = x3685 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3717 = x3686 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3718 = x3687 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3719 = x3688 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3720 = x3689 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3721 = x3690 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3722 = x3691 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3723 = x3693 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3724 = x3694 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3725 = x3695 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3726 = x3696 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3727 = x3697 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3728 = x3698 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3729 = x3699 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3730 = x3701 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3731 = x3702 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3732 = x3703 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3733 = x3704 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3734 = x3705 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3735 = x3706 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3736 = x3707 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3737 = x3709 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3738 = x3710 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3739 = x3711 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3740 = x3712 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":115:21)
      auto x3741 = x3713 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3742 = x3684 + x3716;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3743 = x3692 + x3723;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3744 = x3700 + x3730;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3745 = x3708 + x3737;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3746 = x3742 + x3717;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3747 = x3743 + x3724;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3748 = x3744 + x3731;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3749 = x3745 + x3738;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3750 = x3746 + x3718;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3751 = x3747 + x3725;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3752 = x3748 + x3732;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3753 = x3749 + x3739;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3754 = x3750 + x3719;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3755 = x3751 + x3726;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3756 = x3752 + x3733;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3757 = x3753 + x3740;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3758 = x3754 + x3720;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3759 = x3755 + x3727;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3760 = x3756 + x3734;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3761 = x3757 + x3741;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3762 = x3758 + x3721;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3763 = x3759 + x3728;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3764 = x3760 + x3735;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3765 = x3761 + x3714;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3766 = x3765 + x3715;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3767 = x3762 + x3722;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3768 = x3763 + x3729;
      // loc("zirgen/circuit/recursion/sha.cpp":115:14)
      auto x3769 = x3764 + x3736;
      host_args.at(0) = x1361;
      host_args.at(1) = x3766;
      host_args.at(2) = x3767;
      host_args.at(3) = x3768;
      host_args.at(4) = x3769;
      host(ctx, "log", "%u> SHA_LOAD: w = %w", host_args.data(), 5, host_outs.data(), 0);
      // loc("./zirgen/components/bits.h":68:23)
      {
        auto& reg = args[2][10 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x3770 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x3770 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x3771 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x3771 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3772 = args[2][26 * steps + ((cycle - 1) & mask)];
      assert(x3772 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3773 = args[2][27 * steps + ((cycle - 1) & mask)];
      assert(x3773 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3774 = args[2][28 * steps + ((cycle - 1) & mask)];
      assert(x3774 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3775 = args[2][29 * steps + ((cycle - 1) & mask)];
      assert(x3775 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3776 = args[2][30 * steps + ((cycle - 1) & mask)];
      assert(x3776 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3777 = args[2][31 * steps + ((cycle - 1) & mask)];
      assert(x3777 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3778 = args[2][32 * steps + ((cycle - 1) & mask)];
      assert(x3778 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3779 = args[2][33 * steps + ((cycle - 1) & mask)];
      assert(x3779 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3780 = args[2][34 * steps + ((cycle - 1) & mask)];
      assert(x3780 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3781 = args[2][35 * steps + ((cycle - 1) & mask)];
      assert(x3781 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3782 = args[2][36 * steps + ((cycle - 1) & mask)];
      assert(x3782 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3783 = args[2][37 * steps + ((cycle - 1) & mask)];
      assert(x3783 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3784 = args[2][38 * steps + ((cycle - 1) & mask)];
      assert(x3784 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3785 = args[2][39 * steps + ((cycle - 1) & mask)];
      assert(x3785 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3786 = args[2][40 * steps + ((cycle - 1) & mask)];
      assert(x3786 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3787 = args[2][41 * steps + ((cycle - 1) & mask)];
      assert(x3787 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3788 = args[2][42 * steps + ((cycle - 1) & mask)];
      assert(x3788 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3789 = args[2][43 * steps + ((cycle - 1) & mask)];
      assert(x3789 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3790 = args[2][44 * steps + ((cycle - 1) & mask)];
      assert(x3790 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3791 = args[2][45 * steps + ((cycle - 1) & mask)];
      assert(x3791 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3792 = args[2][46 * steps + ((cycle - 1) & mask)];
      assert(x3792 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3793 = args[2][47 * steps + ((cycle - 1) & mask)];
      assert(x3793 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3794 = args[2][48 * steps + ((cycle - 1) & mask)];
      assert(x3794 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3795 = args[2][49 * steps + ((cycle - 1) & mask)];
      assert(x3795 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3796 = args[2][50 * steps + ((cycle - 1) & mask)];
      assert(x3796 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3797 = args[2][51 * steps + ((cycle - 1) & mask)];
      assert(x3797 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3798 = args[2][52 * steps + ((cycle - 1) & mask)];
      assert(x3798 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3799 = args[2][53 * steps + ((cycle - 1) & mask)];
      assert(x3799 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3800 = args[2][54 * steps + ((cycle - 1) & mask)];
      assert(x3800 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3801 = args[2][55 * steps + ((cycle - 1) & mask)];
      assert(x3801 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3802 = args[2][56 * steps + ((cycle - 1) & mask)];
      assert(x3802 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3803 = args[2][57 * steps + ((cycle - 1) & mask)];
      assert(x3803 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3804 = args[2][60 * steps + ((cycle - 1) & mask)];
      assert(x3804 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3805 = args[2][61 * steps + ((cycle - 1) & mask)];
      assert(x3805 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3806 = args[2][62 * steps + ((cycle - 1) & mask)];
      assert(x3806 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3807 = args[2][63 * steps + ((cycle - 1) & mask)];
      assert(x3807 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3808 = args[2][64 * steps + ((cycle - 1) & mask)];
      assert(x3808 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3809 = args[2][65 * steps + ((cycle - 1) & mask)];
      assert(x3809 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3810 = args[2][66 * steps + ((cycle - 1) & mask)];
      assert(x3810 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3811 = args[2][67 * steps + ((cycle - 1) & mask)];
      assert(x3811 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3812 = args[2][68 * steps + ((cycle - 1) & mask)];
      assert(x3812 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3813 = args[2][69 * steps + ((cycle - 1) & mask)];
      assert(x3813 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3814 = args[2][70 * steps + ((cycle - 1) & mask)];
      assert(x3814 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3815 = args[2][71 * steps + ((cycle - 1) & mask)];
      assert(x3815 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3816 = args[2][72 * steps + ((cycle - 1) & mask)];
      assert(x3816 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3817 = args[2][73 * steps + ((cycle - 1) & mask)];
      assert(x3817 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3818 = args[2][74 * steps + ((cycle - 1) & mask)];
      assert(x3818 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3819 = args[2][75 * steps + ((cycle - 1) & mask)];
      assert(x3819 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3820 = args[2][76 * steps + ((cycle - 1) & mask)];
      assert(x3820 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3821 = args[2][77 * steps + ((cycle - 1) & mask)];
      assert(x3821 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3822 = args[2][78 * steps + ((cycle - 1) & mask)];
      assert(x3822 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3823 = args[2][79 * steps + ((cycle - 1) & mask)];
      assert(x3823 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3824 = args[2][80 * steps + ((cycle - 1) & mask)];
      assert(x3824 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3825 = args[2][81 * steps + ((cycle - 1) & mask)];
      assert(x3825 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3826 = args[2][82 * steps + ((cycle - 1) & mask)];
      assert(x3826 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3827 = args[2][83 * steps + ((cycle - 1) & mask)];
      assert(x3827 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3828 = args[2][84 * steps + ((cycle - 1) & mask)];
      assert(x3828 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3829 = args[2][85 * steps + ((cycle - 1) & mask)];
      assert(x3829 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3830 = args[2][86 * steps + ((cycle - 1) & mask)];
      assert(x3830 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3831 = args[2][87 * steps + ((cycle - 1) & mask)];
      assert(x3831 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3832 = args[2][88 * steps + ((cycle - 1) & mask)];
      assert(x3832 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3833 = args[2][89 * steps + ((cycle - 1) & mask)];
      assert(x3833 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3834 = args[2][90 * steps + ((cycle - 1) & mask)];
      assert(x3834 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3835 = args[2][91 * steps + ((cycle - 1) & mask)];
      assert(x3835 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3836 = args[2][60 * steps + ((cycle - 2) & mask)];
      assert(x3836 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3837 = args[2][61 * steps + ((cycle - 2) & mask)];
      assert(x3837 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3838 = args[2][62 * steps + ((cycle - 2) & mask)];
      assert(x3838 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3839 = args[2][63 * steps + ((cycle - 2) & mask)];
      assert(x3839 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3840 = args[2][64 * steps + ((cycle - 2) & mask)];
      assert(x3840 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3841 = args[2][65 * steps + ((cycle - 2) & mask)];
      assert(x3841 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3842 = args[2][66 * steps + ((cycle - 2) & mask)];
      assert(x3842 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3843 = args[2][67 * steps + ((cycle - 2) & mask)];
      assert(x3843 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3844 = args[2][68 * steps + ((cycle - 2) & mask)];
      assert(x3844 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3845 = args[2][69 * steps + ((cycle - 2) & mask)];
      assert(x3845 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3846 = args[2][70 * steps + ((cycle - 2) & mask)];
      assert(x3846 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3847 = args[2][71 * steps + ((cycle - 2) & mask)];
      assert(x3847 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3848 = args[2][72 * steps + ((cycle - 2) & mask)];
      assert(x3848 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3849 = args[2][73 * steps + ((cycle - 2) & mask)];
      assert(x3849 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3850 = args[2][74 * steps + ((cycle - 2) & mask)];
      assert(x3850 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3851 = args[2][75 * steps + ((cycle - 2) & mask)];
      assert(x3851 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3852 = args[2][76 * steps + ((cycle - 2) & mask)];
      assert(x3852 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3853 = args[2][77 * steps + ((cycle - 2) & mask)];
      assert(x3853 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3854 = args[2][78 * steps + ((cycle - 2) & mask)];
      assert(x3854 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3855 = args[2][79 * steps + ((cycle - 2) & mask)];
      assert(x3855 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3856 = args[2][80 * steps + ((cycle - 2) & mask)];
      assert(x3856 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3857 = args[2][81 * steps + ((cycle - 2) & mask)];
      assert(x3857 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3858 = args[2][82 * steps + ((cycle - 2) & mask)];
      assert(x3858 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3859 = args[2][83 * steps + ((cycle - 2) & mask)];
      assert(x3859 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3860 = args[2][84 * steps + ((cycle - 2) & mask)];
      assert(x3860 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3861 = args[2][85 * steps + ((cycle - 2) & mask)];
      assert(x3861 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3862 = args[2][86 * steps + ((cycle - 2) & mask)];
      assert(x3862 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3863 = args[2][87 * steps + ((cycle - 2) & mask)];
      assert(x3863 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3864 = args[2][88 * steps + ((cycle - 2) & mask)];
      assert(x3864 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3865 = args[2][89 * steps + ((cycle - 2) & mask)];
      assert(x3865 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3866 = args[2][90 * steps + ((cycle - 2) & mask)];
      assert(x3866 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3867 = args[2][91 * steps + ((cycle - 2) & mask)];
      assert(x3867 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3868 = args[2][26 * steps + ((cycle - 2) & mask)];
      assert(x3868 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3869 = args[2][27 * steps + ((cycle - 2) & mask)];
      assert(x3869 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3870 = args[2][28 * steps + ((cycle - 2) & mask)];
      assert(x3870 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3871 = args[2][29 * steps + ((cycle - 2) & mask)];
      assert(x3871 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3872 = args[2][30 * steps + ((cycle - 2) & mask)];
      assert(x3872 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3873 = args[2][31 * steps + ((cycle - 2) & mask)];
      assert(x3873 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3874 = args[2][32 * steps + ((cycle - 2) & mask)];
      assert(x3874 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3875 = args[2][33 * steps + ((cycle - 2) & mask)];
      assert(x3875 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3876 = args[2][34 * steps + ((cycle - 2) & mask)];
      assert(x3876 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3877 = args[2][35 * steps + ((cycle - 2) & mask)];
      assert(x3877 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3878 = args[2][36 * steps + ((cycle - 2) & mask)];
      assert(x3878 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3879 = args[2][37 * steps + ((cycle - 2) & mask)];
      assert(x3879 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3880 = args[2][38 * steps + ((cycle - 2) & mask)];
      assert(x3880 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3881 = args[2][39 * steps + ((cycle - 2) & mask)];
      assert(x3881 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3882 = args[2][40 * steps + ((cycle - 2) & mask)];
      assert(x3882 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3883 = args[2][41 * steps + ((cycle - 2) & mask)];
      assert(x3883 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3884 = args[2][42 * steps + ((cycle - 2) & mask)];
      assert(x3884 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3885 = args[2][43 * steps + ((cycle - 2) & mask)];
      assert(x3885 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3886 = args[2][44 * steps + ((cycle - 2) & mask)];
      assert(x3886 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3887 = args[2][45 * steps + ((cycle - 2) & mask)];
      assert(x3887 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3888 = args[2][46 * steps + ((cycle - 2) & mask)];
      assert(x3888 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3889 = args[2][47 * steps + ((cycle - 2) & mask)];
      assert(x3889 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3890 = args[2][48 * steps + ((cycle - 2) & mask)];
      assert(x3890 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3891 = args[2][49 * steps + ((cycle - 2) & mask)];
      assert(x3891 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3892 = args[2][50 * steps + ((cycle - 2) & mask)];
      assert(x3892 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3893 = args[2][51 * steps + ((cycle - 2) & mask)];
      assert(x3893 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3894 = args[2][52 * steps + ((cycle - 2) & mask)];
      assert(x3894 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3895 = args[2][53 * steps + ((cycle - 2) & mask)];
      assert(x3895 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3896 = args[2][54 * steps + ((cycle - 2) & mask)];
      assert(x3896 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3897 = args[2][55 * steps + ((cycle - 2) & mask)];
      assert(x3897 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3898 = args[2][56 * steps + ((cycle - 2) & mask)];
      assert(x3898 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3899 = args[2][57 * steps + ((cycle - 2) & mask)];
      assert(x3899 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3900 = args[2][60 * steps + ((cycle - 3) & mask)];
      assert(x3900 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3901 = args[2][61 * steps + ((cycle - 3) & mask)];
      assert(x3901 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3902 = args[2][62 * steps + ((cycle - 3) & mask)];
      assert(x3902 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3903 = args[2][63 * steps + ((cycle - 3) & mask)];
      assert(x3903 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3904 = args[2][64 * steps + ((cycle - 3) & mask)];
      assert(x3904 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3905 = args[2][65 * steps + ((cycle - 3) & mask)];
      assert(x3905 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3906 = args[2][66 * steps + ((cycle - 3) & mask)];
      assert(x3906 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3907 = args[2][67 * steps + ((cycle - 3) & mask)];
      assert(x3907 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3908 = args[2][68 * steps + ((cycle - 3) & mask)];
      assert(x3908 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3909 = args[2][69 * steps + ((cycle - 3) & mask)];
      assert(x3909 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3910 = args[2][70 * steps + ((cycle - 3) & mask)];
      assert(x3910 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3911 = args[2][71 * steps + ((cycle - 3) & mask)];
      assert(x3911 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3912 = args[2][72 * steps + ((cycle - 3) & mask)];
      assert(x3912 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3913 = args[2][73 * steps + ((cycle - 3) & mask)];
      assert(x3913 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3914 = args[2][74 * steps + ((cycle - 3) & mask)];
      assert(x3914 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3915 = args[2][75 * steps + ((cycle - 3) & mask)];
      assert(x3915 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3916 = args[2][76 * steps + ((cycle - 3) & mask)];
      assert(x3916 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3917 = args[2][77 * steps + ((cycle - 3) & mask)];
      assert(x3917 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3918 = args[2][78 * steps + ((cycle - 3) & mask)];
      assert(x3918 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3919 = args[2][79 * steps + ((cycle - 3) & mask)];
      assert(x3919 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3920 = args[2][80 * steps + ((cycle - 3) & mask)];
      assert(x3920 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3921 = args[2][81 * steps + ((cycle - 3) & mask)];
      assert(x3921 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3922 = args[2][82 * steps + ((cycle - 3) & mask)];
      assert(x3922 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3923 = args[2][83 * steps + ((cycle - 3) & mask)];
      assert(x3923 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3924 = args[2][84 * steps + ((cycle - 3) & mask)];
      assert(x3924 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3925 = args[2][85 * steps + ((cycle - 3) & mask)];
      assert(x3925 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3926 = args[2][86 * steps + ((cycle - 3) & mask)];
      assert(x3926 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3927 = args[2][87 * steps + ((cycle - 3) & mask)];
      assert(x3927 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3928 = args[2][88 * steps + ((cycle - 3) & mask)];
      assert(x3928 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3929 = args[2][89 * steps + ((cycle - 3) & mask)];
      assert(x3929 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3930 = args[2][90 * steps + ((cycle - 3) & mask)];
      assert(x3930 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3931 = args[2][91 * steps + ((cycle - 3) & mask)];
      assert(x3931 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3932 = args[2][26 * steps + ((cycle - 3) & mask)];
      assert(x3932 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3933 = args[2][27 * steps + ((cycle - 3) & mask)];
      assert(x3933 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3934 = args[2][28 * steps + ((cycle - 3) & mask)];
      assert(x3934 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3935 = args[2][29 * steps + ((cycle - 3) & mask)];
      assert(x3935 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3936 = args[2][30 * steps + ((cycle - 3) & mask)];
      assert(x3936 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3937 = args[2][31 * steps + ((cycle - 3) & mask)];
      assert(x3937 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3938 = args[2][32 * steps + ((cycle - 3) & mask)];
      assert(x3938 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3939 = args[2][33 * steps + ((cycle - 3) & mask)];
      assert(x3939 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3940 = args[2][34 * steps + ((cycle - 3) & mask)];
      assert(x3940 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3941 = args[2][35 * steps + ((cycle - 3) & mask)];
      assert(x3941 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3942 = args[2][36 * steps + ((cycle - 3) & mask)];
      assert(x3942 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3943 = args[2][37 * steps + ((cycle - 3) & mask)];
      assert(x3943 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3944 = args[2][38 * steps + ((cycle - 3) & mask)];
      assert(x3944 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3945 = args[2][39 * steps + ((cycle - 3) & mask)];
      assert(x3945 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3946 = args[2][40 * steps + ((cycle - 3) & mask)];
      assert(x3946 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3947 = args[2][41 * steps + ((cycle - 3) & mask)];
      assert(x3947 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3948 = args[2][42 * steps + ((cycle - 3) & mask)];
      assert(x3948 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3949 = args[2][43 * steps + ((cycle - 3) & mask)];
      assert(x3949 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3950 = args[2][44 * steps + ((cycle - 3) & mask)];
      assert(x3950 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3951 = args[2][45 * steps + ((cycle - 3) & mask)];
      assert(x3951 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3952 = args[2][46 * steps + ((cycle - 3) & mask)];
      assert(x3952 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3953 = args[2][47 * steps + ((cycle - 3) & mask)];
      assert(x3953 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3954 = args[2][48 * steps + ((cycle - 3) & mask)];
      assert(x3954 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3955 = args[2][49 * steps + ((cycle - 3) & mask)];
      assert(x3955 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3956 = args[2][50 * steps + ((cycle - 3) & mask)];
      assert(x3956 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3957 = args[2][51 * steps + ((cycle - 3) & mask)];
      assert(x3957 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3958 = args[2][52 * steps + ((cycle - 3) & mask)];
      assert(x3958 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3959 = args[2][53 * steps + ((cycle - 3) & mask)];
      assert(x3959 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3960 = args[2][54 * steps + ((cycle - 3) & mask)];
      assert(x3960 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3961 = args[2][55 * steps + ((cycle - 3) & mask)];
      assert(x3961 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3962 = args[2][56 * steps + ((cycle - 3) & mask)];
      assert(x3962 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3963 = args[2][57 * steps + ((cycle - 3) & mask)];
      assert(x3963 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3964 = args[2][26 * steps + ((cycle - 4) & mask)];
      assert(x3964 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3965 = args[2][27 * steps + ((cycle - 4) & mask)];
      assert(x3965 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3966 = args[2][28 * steps + ((cycle - 4) & mask)];
      assert(x3966 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3967 = args[2][29 * steps + ((cycle - 4) & mask)];
      assert(x3967 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3968 = args[2][30 * steps + ((cycle - 4) & mask)];
      assert(x3968 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3969 = args[2][31 * steps + ((cycle - 4) & mask)];
      assert(x3969 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3970 = args[2][32 * steps + ((cycle - 4) & mask)];
      assert(x3970 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3971 = args[2][33 * steps + ((cycle - 4) & mask)];
      assert(x3971 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3972 = args[2][34 * steps + ((cycle - 4) & mask)];
      assert(x3972 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3973 = args[2][35 * steps + ((cycle - 4) & mask)];
      assert(x3973 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3974 = args[2][36 * steps + ((cycle - 4) & mask)];
      assert(x3974 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3975 = args[2][37 * steps + ((cycle - 4) & mask)];
      assert(x3975 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3976 = args[2][38 * steps + ((cycle - 4) & mask)];
      assert(x3976 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3977 = args[2][39 * steps + ((cycle - 4) & mask)];
      assert(x3977 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3978 = args[2][40 * steps + ((cycle - 4) & mask)];
      assert(x3978 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3979 = args[2][41 * steps + ((cycle - 4) & mask)];
      assert(x3979 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3980 = args[2][42 * steps + ((cycle - 4) & mask)];
      assert(x3980 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3981 = args[2][43 * steps + ((cycle - 4) & mask)];
      assert(x3981 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3982 = args[2][44 * steps + ((cycle - 4) & mask)];
      assert(x3982 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3983 = args[2][45 * steps + ((cycle - 4) & mask)];
      assert(x3983 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3984 = args[2][46 * steps + ((cycle - 4) & mask)];
      assert(x3984 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3985 = args[2][47 * steps + ((cycle - 4) & mask)];
      assert(x3985 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3986 = args[2][48 * steps + ((cycle - 4) & mask)];
      assert(x3986 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3987 = args[2][49 * steps + ((cycle - 4) & mask)];
      assert(x3987 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3988 = args[2][50 * steps + ((cycle - 4) & mask)];
      assert(x3988 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3989 = args[2][51 * steps + ((cycle - 4) & mask)];
      assert(x3989 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3990 = args[2][52 * steps + ((cycle - 4) & mask)];
      assert(x3990 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3991 = args[2][53 * steps + ((cycle - 4) & mask)];
      assert(x3991 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3992 = args[2][54 * steps + ((cycle - 4) & mask)];
      assert(x3992 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3993 = args[2][55 * steps + ((cycle - 4) & mask)];
      assert(x3993 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3994 = args[2][56 * steps + ((cycle - 4) & mask)];
      assert(x3994 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3995 = args[2][57 * steps + ((cycle - 4) & mask)];
      assert(x3995 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3996 = args[2][60 * steps + ((cycle - 4) & mask)];
      assert(x3996 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3997 = args[2][61 * steps + ((cycle - 4) & mask)];
      assert(x3997 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3998 = args[2][62 * steps + ((cycle - 4) & mask)];
      assert(x3998 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x3999 = args[2][63 * steps + ((cycle - 4) & mask)];
      assert(x3999 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4000 = args[2][64 * steps + ((cycle - 4) & mask)];
      assert(x4000 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4001 = args[2][65 * steps + ((cycle - 4) & mask)];
      assert(x4001 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4002 = args[2][66 * steps + ((cycle - 4) & mask)];
      assert(x4002 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4003 = args[2][67 * steps + ((cycle - 4) & mask)];
      assert(x4003 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4004 = args[2][68 * steps + ((cycle - 4) & mask)];
      assert(x4004 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4005 = args[2][69 * steps + ((cycle - 4) & mask)];
      assert(x4005 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4006 = args[2][70 * steps + ((cycle - 4) & mask)];
      assert(x4006 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4007 = args[2][71 * steps + ((cycle - 4) & mask)];
      assert(x4007 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4008 = args[2][72 * steps + ((cycle - 4) & mask)];
      assert(x4008 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4009 = args[2][73 * steps + ((cycle - 4) & mask)];
      assert(x4009 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4010 = args[2][74 * steps + ((cycle - 4) & mask)];
      assert(x4010 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4011 = args[2][75 * steps + ((cycle - 4) & mask)];
      assert(x4011 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4012 = args[2][76 * steps + ((cycle - 4) & mask)];
      assert(x4012 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4013 = args[2][77 * steps + ((cycle - 4) & mask)];
      assert(x4013 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4014 = args[2][78 * steps + ((cycle - 4) & mask)];
      assert(x4014 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4015 = args[2][79 * steps + ((cycle - 4) & mask)];
      assert(x4015 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4016 = args[2][80 * steps + ((cycle - 4) & mask)];
      assert(x4016 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4017 = args[2][81 * steps + ((cycle - 4) & mask)];
      assert(x4017 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4018 = args[2][82 * steps + ((cycle - 4) & mask)];
      assert(x4018 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4019 = args[2][83 * steps + ((cycle - 4) & mask)];
      assert(x4019 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4020 = args[2][84 * steps + ((cycle - 4) & mask)];
      assert(x4020 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4021 = args[2][85 * steps + ((cycle - 4) & mask)];
      assert(x4021 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4022 = args[2][86 * steps + ((cycle - 4) & mask)];
      assert(x4022 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4023 = args[2][87 * steps + ((cycle - 4) & mask)];
      assert(x4023 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4024 = args[2][88 * steps + ((cycle - 4) & mask)];
      assert(x4024 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4025 = args[2][89 * steps + ((cycle - 4) & mask)];
      assert(x4025 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4026 = args[2][90 * steps + ((cycle - 4) & mask)];
      assert(x4026 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x4027 = args[2][91 * steps + ((cycle - 4) & mask)];
      assert(x4027 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4028 = x3772 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4029 = x3772 * x3868;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4030 = x3773 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4031 = x3773 * x3869;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4032 = x3774 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4033 = x3774 * x3870;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4034 = x3775 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4035 = x3775 * x3871;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4036 = x3776 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4037 = x3776 * x3872;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4038 = x3777 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4039 = x3777 * x3873;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4040 = x3778 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4041 = x3778 * x3874;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4042 = x3779 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4043 = x3779 * x3875;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4044 = x3780 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4045 = x3780 * x3876;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4046 = x3781 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4047 = x3781 * x3877;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4048 = x3782 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4049 = x3782 * x3878;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4050 = x3783 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4051 = x3783 * x3879;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4052 = x3784 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4053 = x3784 * x3880;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4054 = x3785 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4055 = x3785 * x3881;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4056 = x3786 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4057 = x3786 * x3882;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4058 = x3787 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4059 = x3787 * x3883;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4060 = x3788 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4061 = x3788 * x3884;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4062 = x3789 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4063 = x3789 * x3885;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4064 = x3790 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4065 = x3790 * x3886;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4066 = x3791 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4067 = x3791 * x3887;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4068 = x3792 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4069 = x3792 * x3888;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4070 = x3793 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4071 = x3793 * x3889;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4072 = x3794 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4073 = x3794 * x3890;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4074 = x3795 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4075 = x3795 * x3891;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4076 = x3796 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4077 = x3796 * x3892;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4078 = x3797 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4079 = x3797 * x3893;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4080 = x3798 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4081 = x3798 * x3894;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4082 = x3799 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4083 = x3799 * x3895;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4084 = x3800 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4085 = x3800 * x3896;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4086 = x3801 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4087 = x3801 * x3897;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4088 = x3802 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4089 = x3802 * x3898;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4090 = x3803 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4091 = x3803 * x3899;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4092 = x3804 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4093 = x3804 * x3836;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4094 = x3805 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4095 = x3805 * x3837;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4096 = x3806 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4097 = x3806 * x3838;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4098 = x3807 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4099 = x3807 * x3839;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4100 = x3808 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4101 = x3808 * x3840;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4102 = x3809 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4103 = x3809 * x3841;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4104 = x3810 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4105 = x3810 * x3842;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4106 = x3811 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4107 = x3811 * x3843;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4108 = x3812 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4109 = x3812 * x3844;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4110 = x3813 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4111 = x3813 * x3845;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4112 = x3814 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4113 = x3814 * x3846;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4114 = x3815 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4115 = x3815 * x3847;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4116 = x3816 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4117 = x3816 * x3848;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4118 = x3817 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4119 = x3817 * x3849;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4120 = x3818 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4121 = x3818 * x3850;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4122 = x3819 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4123 = x3819 * x3851;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4124 = x3820 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4125 = x3820 * x3852;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4126 = x3821 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4127 = x3821 * x3853;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4128 = x3822 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4129 = x3822 * x3854;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4130 = x3823 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4131 = x3823 * x3855;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4132 = x3824 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4133 = x3824 * x3856;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4134 = x3825 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4135 = x3825 * x3857;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4136 = x3826 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4137 = x3826 * x3858;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4138 = x3827 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4139 = x3827 * x3859;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4140 = x3828 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4141 = x3828 * x3860;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4142 = x3829 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4143 = x3829 * x3861;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4144 = x3830 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4145 = x3830 * x3862;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4146 = x3831 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4147 = x3831 * x3863;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4148 = x3832 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4149 = x3832 * x3864;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4150 = x3833 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4151 = x3833 * x3865;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4152 = x3834 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4153 = x3834 * x3866;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4154 = x3835 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4155 = x3835 * x3867;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4156 = x3684 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4157 = x3685 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4158 = x3686 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4159 = x3687 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4160 = x3688 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4161 = x3689 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4162 = x3690 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4163 = x3691 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4164 = x3700 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4165 = x3701 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4166 = x3702 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4167 = x3703 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4168 = x3704 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4169 = x3705 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4170 = x3706 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4171 = x3707 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4172 = x3965 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4173 = x3966 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4174 = x3967 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4175 = x3968 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4176 = x3969 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4177 = x3970 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4178 = x3971 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4179 = x3972 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4180 = x3973 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4181 = x3974 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4182 = x3975 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4183 = x3976 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4184 = x3977 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4185 = x3978 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4186 = x3979 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4187 = x3981 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4188 = x3982 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4189 = x3983 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4190 = x3984 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4191 = x3985 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4192 = x3986 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4193 = x3987 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4194 = x3988 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4195 = x3989 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4196 = x3990 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4197 = x3991 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4198 = x3992 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4199 = x3993 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4200 = x3994 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4201 = x3995 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4202 = x3997 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4203 = x3998 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4204 = x3999 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4205 = x4000 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4206 = x4001 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4207 = x4002 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4208 = x4003 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4209 = x4004 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4210 = x4005 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4211 = x4006 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4212 = x4007 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4213 = x4008 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4214 = x4009 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4215 = x4010 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4216 = x4011 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4217 = x4013 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4218 = x4014 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4219 = x4015 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4220 = x4016 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4221 = x4017 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4222 = x4018 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4223 = x4019 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4224 = x4020 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4225 = x4021 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4226 = x4022 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4227 = x4023 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4228 = x4024 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4229 = x4025 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4230 = x4026 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4231 = x4027 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4232 = x4028 * x3781;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4233 = x4029 * x3932;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4234 = x4030 * x3782;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4235 = x4031 * x3933;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4236 = x4032 * x3783;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4237 = x4033 * x3934;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4238 = x4034 * x3784;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4239 = x4035 * x3935;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4240 = x4036 * x3785;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4241 = x4037 * x3936;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4242 = x4038 * x3786;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4243 = x4039 * x3937;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4244 = x4040 * x3787;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4245 = x4041 * x3938;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4246 = x4042 * x3788;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4247 = x4043 * x3939;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4248 = x4044 * x3789;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4249 = x4045 * x3940;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4250 = x4046 * x3790;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4251 = x4047 * x3941;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4252 = x4048 * x3791;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4253 = x4049 * x3942;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4254 = x4050 * x3792;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4255 = x4051 * x3943;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4256 = x4052 * x3793;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4257 = x4053 * x3944;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4258 = x4054 * x3794;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4259 = x4055 * x3945;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4260 = x4056 * x3795;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4261 = x4057 * x3946;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4262 = x4058 * x3796;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4263 = x4059 * x3947;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4264 = x4060 * x3797;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4265 = x4061 * x3948;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4266 = x4062 * x3798;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4267 = x4063 * x3949;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4268 = x4064 * x3799;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4269 = x4065 * x3950;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4270 = x4066 * x3800;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4271 = x4067 * x3951;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4272 = x4068 * x3801;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4273 = x4069 * x3952;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4274 = x4070 * x3802;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4275 = x4071 * x3953;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4276 = x4072 * x3803;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4277 = x4073 * x3954;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4278 = x4074 * x3772;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4279 = x4075 * x3955;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4280 = x4076 * x3773;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4281 = x4077 * x3956;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4282 = x4078 * x3774;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4283 = x4079 * x3957;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4284 = x4080 * x3775;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4285 = x4081 * x3958;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4286 = x4082 * x3776;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4287 = x4083 * x3959;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4288 = x4084 * x3777;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4289 = x4085 * x3960;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4290 = x4086 * x3778;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4291 = x4087 * x3961;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4292 = x4088 * x3779;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4293 = x4089 * x3962;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4294 = x4090 * x3780;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x4295 = x4091 * x3963;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4296 = x4092 * x3818;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4297 = x4094 * x3819;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4298 = x4096 * x3820;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4299 = x4098 * x3821;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4300 = x4100 * x3822;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4301 = x4102 * x3823;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4302 = x4104 * x3824;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4303 = x4106 * x3825;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4304 = x4108 * x3826;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4305 = x4110 * x3827;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4306 = x4112 * x3828;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4307 = x4114 * x3829;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4308 = x4116 * x3830;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4309 = x4118 * x3831;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4310 = x4120 * x3832;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4311 = x4122 * x3833;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4312 = x4124 * x3834;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4313 = x4126 * x3835;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4314 = x4128 * x3804;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4315 = x4130 * x3805;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4316 = x4132 * x3806;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4317 = x4134 * x3807;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4318 = x4136 * x3808;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4319 = x4138 * x3809;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4320 = x4140 * x3810;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4321 = x4142 * x3811;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4322 = x4144 * x3812;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4323 = x4146 * x3813;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4324 = x4148 * x3814;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4325 = x4150 * x3815;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4326 = x4152 * x3816;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4327 = x4154 * x3817;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4328 = x310 - x3772;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4329 = x310 - x3773;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4330 = x310 - x3774;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4331 = x310 - x3775;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4332 = x310 - x3776;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4333 = x310 - x3777;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4334 = x310 - x3778;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4335 = x310 - x3779;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4336 = x310 - x3780;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4337 = x310 - x3781;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4338 = x310 - x3782;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4339 = x310 - x3783;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4340 = x310 - x3784;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4341 = x310 - x3785;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4342 = x310 - x3786;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4343 = x310 - x3787;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4344 = x310 - x3788;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4345 = x310 - x3789;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4346 = x310 - x3790;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4347 = x310 - x3791;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4348 = x310 - x3792;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4349 = x310 - x3793;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4350 = x310 - x3794;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4351 = x310 - x3795;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4352 = x310 - x3796;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4353 = x310 - x3797;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4354 = x310 - x3798;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4355 = x310 - x3799;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4356 = x310 - x3800;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4357 = x310 - x3801;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4358 = x310 - x3802;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x4359 = x310 - x3803;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4360 = x310 - x3804;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4361 = x310 - x3805;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4362 = x310 - x3806;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4363 = x310 - x3807;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4364 = x310 - x3808;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4365 = x310 - x3809;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4366 = x310 - x3810;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4367 = x310 - x3811;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4368 = x310 - x3812;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4369 = x310 - x3813;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4370 = x310 - x3814;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4371 = x310 - x3815;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4372 = x310 - x3816;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4373 = x310 - x3817;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4374 = x310 - x3818;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4375 = x310 - x3819;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4376 = x310 - x3820;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4377 = x310 - x3821;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4378 = x310 - x3822;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4379 = x310 - x3823;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4380 = x310 - x3824;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4381 = x310 - x3825;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4382 = x310 - x3826;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4383 = x310 - x3827;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4384 = x310 - x3828;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4385 = x310 - x3829;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4386 = x310 - x3830;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4387 = x310 - x3831;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4388 = x310 - x3832;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4389 = x310 - x3833;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4390 = x310 - x3834;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x4391 = x310 - x3835;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4392 = x310 - x3868;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4393 = x310 - x3869;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4394 = x310 - x3870;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4395 = x310 - x3871;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4396 = x310 - x3872;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4397 = x310 - x3873;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4398 = x310 - x3874;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4399 = x310 - x3875;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4400 = x310 - x3876;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4401 = x310 - x3877;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4402 = x310 - x3878;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4403 = x310 - x3879;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4404 = x310 - x3880;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4405 = x310 - x3881;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4406 = x310 - x3882;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4407 = x310 - x3883;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4408 = x310 - x3884;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4409 = x310 - x3885;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4410 = x310 - x3886;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4411 = x310 - x3887;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4412 = x310 - x3888;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4413 = x310 - x3889;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4414 = x310 - x3890;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4415 = x310 - x3891;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4416 = x310 - x3892;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4417 = x310 - x3893;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4418 = x310 - x3894;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4419 = x310 - x3895;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4420 = x310 - x3896;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4421 = x310 - x3897;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4422 = x310 - x3898;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x4423 = x310 - x3899;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4424 = x310 - x3932;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4425 = x310 - x3933;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4426 = x310 - x3934;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4427 = x310 - x3935;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4428 = x310 - x3936;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4429 = x310 - x3937;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4430 = x310 - x3938;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4431 = x310 - x3939;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4432 = x310 - x3940;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4433 = x310 - x3941;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4434 = x310 - x3942;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4435 = x310 - x3943;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4436 = x310 - x3944;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4437 = x310 - x3945;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4438 = x310 - x3946;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4439 = x310 - x3947;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4440 = x310 - x3948;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4441 = x310 - x3949;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4442 = x310 - x3950;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4443 = x310 - x3951;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4444 = x310 - x3952;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4445 = x310 - x3953;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4446 = x310 - x3954;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4447 = x310 - x3955;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4448 = x310 - x3956;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4449 = x310 - x3957;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4450 = x310 - x3958;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4451 = x310 - x3959;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4452 = x310 - x3960;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4453 = x310 - x3961;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4454 = x310 - x3962;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x4455 = x310 - x3963;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4456 = x3772 + x3781;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4457 = x3773 + x3782;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4458 = x3774 + x3783;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4459 = x3775 + x3784;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4460 = x3776 + x3785;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4461 = x3777 + x3786;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4462 = x3778 + x3787;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4463 = x3779 + x3788;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4464 = x3780 + x3789;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4465 = x3781 + x3790;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4466 = x3782 + x3791;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4467 = x3783 + x3792;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4468 = x3784 + x3793;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4469 = x3785 + x3794;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4470 = x3786 + x3795;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4471 = x3787 + x3796;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4472 = x3788 + x3797;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4473 = x3789 + x3798;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4474 = x3790 + x3799;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4475 = x3791 + x3800;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4476 = x3792 + x3801;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4477 = x3793 + x3802;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4478 = x3794 + x3803;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4479 = x3795 + x3772;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4480 = x3796 + x3773;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4481 = x3797 + x3774;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4482 = x3798 + x3775;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4483 = x3799 + x3776;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4484 = x3800 + x3777;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4485 = x3801 + x3778;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4486 = x3802 + x3779;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4487 = x3803 + x3780;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4488 = x3804 + x3818;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4489 = x3805 + x3819;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4490 = x3806 + x3820;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4491 = x3807 + x3821;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4492 = x3808 + x3822;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4493 = x3809 + x3823;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4494 = x3810 + x3824;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4495 = x3811 + x3825;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4496 = x3812 + x3826;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4497 = x3813 + x3827;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4498 = x3814 + x3828;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4499 = x3815 + x3829;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4500 = x3816 + x3830;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4501 = x3817 + x3831;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4502 = x3818 + x3832;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4503 = x3819 + x3833;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4504 = x3820 + x3834;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4505 = x3821 + x3835;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4506 = x3822 + x3804;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4507 = x3823 + x3805;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4508 = x3824 + x3806;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4509 = x3825 + x3807;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4510 = x3826 + x3808;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4511 = x3827 + x3809;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4512 = x3828 + x3810;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4513 = x3829 + x3811;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4514 = x3830 + x3812;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4515 = x3831 + x3813;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4516 = x3832 + x3814;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4517 = x3833 + x3815;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4518 = x3834 + x3816;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4519 = x3835 + x3817;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4520 = x3772 * x4392;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4521 = x3773 * x4393;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4522 = x3774 * x4394;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4523 = x3775 * x4395;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4524 = x3776 * x4396;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4525 = x3777 * x4397;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4526 = x3778 * x4398;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4527 = x3779 * x4399;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4528 = x3780 * x4400;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4529 = x3781 * x4401;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4530 = x3782 * x4402;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4531 = x3783 * x4403;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4532 = x3784 * x4404;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4533 = x3785 * x4405;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4534 = x3786 * x4406;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4535 = x3787 * x4407;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4536 = x3788 * x4408;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4537 = x3789 * x4409;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4538 = x3790 * x4410;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4539 = x3791 * x4411;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4540 = x3792 * x4412;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4541 = x3793 * x4413;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4542 = x3794 * x4414;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4543 = x3795 * x4415;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4544 = x3796 * x4416;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4545 = x3797 * x4417;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4546 = x3798 * x4418;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4547 = x3799 * x4419;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4548 = x3800 * x4420;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4549 = x3801 * x4421;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4550 = x3802 * x4422;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4551 = x3803 * x4423;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4552 = x4029 * x4424;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4553 = x4031 * x4425;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4554 = x4033 * x4426;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4555 = x4035 * x4427;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4556 = x4037 * x4428;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4557 = x4039 * x4429;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4558 = x4041 * x4430;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4559 = x4043 * x4431;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4560 = x4045 * x4432;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4561 = x4047 * x4433;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4562 = x4049 * x4434;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4563 = x4051 * x4435;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4564 = x4053 * x4436;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4565 = x4055 * x4437;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4566 = x4057 * x4438;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4567 = x4059 * x4439;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4568 = x4061 * x4440;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4569 = x4063 * x4441;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4570 = x4065 * x4442;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4571 = x4067 * x4443;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4572 = x4069 * x4444;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4573 = x4071 * x4445;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4574 = x4073 * x4446;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4575 = x4075 * x4447;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4576 = x4077 * x4448;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4577 = x4079 * x4449;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4578 = x4081 * x4450;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4579 = x4083 * x4451;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4580 = x4085 * x4452;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4581 = x4087 * x4453;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4582 = x4089 * x4454;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4583 = x4091 * x4455;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4584 = x4328 * x3868;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4585 = x4329 * x3869;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4586 = x4330 * x3870;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4587 = x4331 * x3871;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4588 = x4332 * x3872;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4589 = x4333 * x3873;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4590 = x4334 * x3874;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4591 = x4335 * x3875;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4592 = x4336 * x3876;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4593 = x4337 * x3877;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4594 = x4338 * x3878;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4595 = x4339 * x3879;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4596 = x4340 * x3880;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4597 = x4341 * x3881;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4598 = x4342 * x3882;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4599 = x4343 * x3883;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4600 = x4344 * x3884;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4601 = x4345 * x3885;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4602 = x4346 * x3886;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4603 = x4347 * x3887;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4604 = x4348 * x3888;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4605 = x4349 * x3889;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4606 = x4350 * x3890;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4607 = x4351 * x3891;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4608 = x4352 * x3892;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4609 = x4353 * x3893;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4610 = x4354 * x3894;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4611 = x4355 * x3895;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4612 = x4356 * x3896;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4613 = x4357 * x3897;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4614 = x4358 * x3898;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4615 = x4359 * x3899;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4616 = x4520 * x3932;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4617 = x4521 * x3933;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4618 = x4522 * x3934;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4619 = x4523 * x3935;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4620 = x4524 * x3936;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4621 = x4525 * x3937;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4622 = x4526 * x3938;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4623 = x4527 * x3939;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4624 = x4528 * x3940;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4625 = x4529 * x3941;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4626 = x4530 * x3942;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4627 = x4531 * x3943;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4628 = x4532 * x3944;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4629 = x4533 * x3945;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4630 = x4534 * x3946;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4631 = x4535 * x3947;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4632 = x4536 * x3948;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4633 = x4537 * x3949;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4634 = x4538 * x3950;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4635 = x4539 * x3951;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4636 = x4540 * x3952;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4637 = x4541 * x3953;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4638 = x4542 * x3954;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4639 = x4543 * x3955;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4640 = x4544 * x3956;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4641 = x4545 * x3957;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4642 = x4546 * x3958;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4643 = x4547 * x3959;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4644 = x4548 * x3960;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4645 = x4549 * x3961;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4646 = x4550 * x3962;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x4647 = x4551 * x3963;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4648 = x4584 * x3932;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4649 = x4585 * x3933;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4650 = x4586 * x3934;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4651 = x4587 * x3935;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4652 = x4588 * x3936;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4653 = x4589 * x3937;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4654 = x4590 * x3938;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4655 = x4591 * x3939;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4656 = x4592 * x3940;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4657 = x4593 * x3941;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4658 = x4594 * x3942;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4659 = x4595 * x3943;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4660 = x4596 * x3944;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4661 = x4597 * x3945;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4662 = x4598 * x3946;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4663 = x4599 * x3947;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4664 = x4600 * x3948;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4665 = x4601 * x3949;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4666 = x4602 * x3950;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4667 = x4603 * x3951;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4668 = x4604 * x3952;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4669 = x4605 * x3953;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4670 = x4606 * x3954;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4671 = x4607 * x3955;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4672 = x4608 * x3956;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4673 = x4609 * x3957;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4674 = x4610 * x3958;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4675 = x4611 * x3959;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4676 = x4612 * x3960;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4677 = x4613 * x3961;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4678 = x4614 * x3962;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x4679 = x4615 * x3963;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4680 = x4360 * x3900;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4681 = x4361 * x3901;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4682 = x4362 * x3902;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4683 = x4363 * x3903;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4684 = x4364 * x3904;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4685 = x4365 * x3905;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4686 = x4366 * x3906;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4687 = x4367 * x3907;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4688 = x4368 * x3908;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4689 = x4369 * x3909;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4690 = x4370 * x3910;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4691 = x4371 * x3911;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4692 = x4372 * x3912;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4693 = x4373 * x3913;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4694 = x4374 * x3914;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4695 = x4375 * x3915;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4696 = x4376 * x3916;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4697 = x4377 * x3917;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4698 = x4378 * x3918;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4699 = x4379 * x3919;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4700 = x4380 * x3920;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4701 = x4381 * x3921;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4702 = x4382 * x3922;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4703 = x4383 * x3923;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4704 = x4384 * x3924;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4705 = x4385 * x3925;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4706 = x4386 * x3926;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4707 = x4387 * x3927;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4708 = x4388 * x3928;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4709 = x4389 * x3929;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4710 = x4390 * x3930;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x4711 = x4391 * x3931;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4712 = x4456 - x4232;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4713 = x4457 - x4234;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4714 = x4458 - x4236;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4715 = x4459 - x4238;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4716 = x4460 - x4240;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4717 = x4461 - x4242;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4718 = x4462 - x4244;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4719 = x4463 - x4246;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4720 = x4464 - x4248;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4721 = x4465 - x4250;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4722 = x4466 - x4252;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4723 = x4467 - x4254;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4724 = x4468 - x4256;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4725 = x4469 - x4258;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4726 = x4470 - x4260;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4727 = x4471 - x4262;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4728 = x4472 - x4264;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4729 = x4473 - x4266;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4730 = x4474 - x4268;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4731 = x4475 - x4270;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4732 = x4476 - x4272;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4733 = x4477 - x4274;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4734 = x4478 - x4276;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4735 = x4479 - x4278;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4736 = x4480 - x4280;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4737 = x4481 - x4282;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4738 = x4482 - x4284;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4739 = x4483 - x4286;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4740 = x4484 - x4288;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4741 = x4485 - x4290;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4742 = x4486 - x4292;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4743 = x4487 - x4294;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4744 = x4488 - x4296;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4745 = x4489 - x4297;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4746 = x4490 - x4298;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4747 = x4491 - x4299;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4748 = x4492 - x4300;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4749 = x4493 - x4301;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4750 = x4494 - x4302;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4751 = x4495 - x4303;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4752 = x4496 - x4304;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4753 = x4497 - x4305;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4754 = x4498 - x4306;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4755 = x4499 - x4307;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4756 = x4500 - x4308;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4757 = x4501 - x4309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4758 = x4502 - x4310;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4759 = x4503 - x4311;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4760 = x4504 - x4312;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4761 = x4505 - x4313;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4762 = x4506 - x4314;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4763 = x4507 - x4315;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4764 = x4508 - x4316;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4765 = x4509 - x4317;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4766 = x4510 - x4318;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4767 = x4511 - x4319;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4768 = x4512 - x4320;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4769 = x4513 - x4321;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4770 = x4514 - x4322;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4771 = x4515 - x4323;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4772 = x4516 - x4324;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4773 = x4517 - x4325;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4774 = x4518 - x4326;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4775 = x4519 - x4327;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x4776 = x3964 + x4172;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x4777 = x3980 + x4187;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x4778 = x3996 + x4202;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x4779 = x4012 + x4217;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4780 = x3772 + x4723;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4781 = x3773 + x4724;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4782 = x3774 + x4725;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4783 = x3775 + x4726;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4784 = x3776 + x4727;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4785 = x3777 + x4728;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4786 = x3778 + x4729;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4787 = x3779 + x4730;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4788 = x3780 + x4731;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4789 = x3781 + x4732;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4790 = x3782 + x4733;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4791 = x3783 + x4734;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4792 = x3784 + x4735;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4793 = x3785 + x4736;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4794 = x3786 + x4737;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4795 = x3787 + x4738;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4796 = x3788 + x4739;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4797 = x3789 + x4740;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4798 = x3790 + x4741;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4799 = x3791 + x4742;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4800 = x3792 + x4743;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4801 = x3793 + x4712;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4802 = x3794 + x4713;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4803 = x3795 + x4714;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4804 = x3796 + x4715;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4805 = x3797 + x4716;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4806 = x3798 + x4717;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4807 = x3799 + x4718;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4808 = x3800 + x4719;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4809 = x3801 + x4720;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4810 = x3802 + x4721;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4811 = x3803 + x4722;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4812 = x3804 + x4749;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4813 = x3805 + x4750;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4814 = x3806 + x4751;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4815 = x3807 + x4752;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4816 = x3808 + x4753;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4817 = x3809 + x4754;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4818 = x3810 + x4755;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4819 = x3811 + x4756;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4820 = x3812 + x4757;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4821 = x3813 + x4758;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4822 = x3814 + x4759;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4823 = x3815 + x4760;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4824 = x3816 + x4761;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4825 = x3817 + x4762;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4826 = x3818 + x4763;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4827 = x3819 + x4764;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4828 = x3820 + x4765;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4829 = x3821 + x4766;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4830 = x3822 + x4767;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4831 = x3823 + x4768;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4832 = x3824 + x4769;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4833 = x3825 + x4770;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4834 = x3826 + x4771;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4835 = x3827 + x4772;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4836 = x3828 + x4773;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4837 = x3829 + x4774;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4838 = x3830 + x4775;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4839 = x3831 + x4744;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4840 = x3832 + x4745;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4841 = x3833 + x4746;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4842 = x3834 + x4747;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x4843 = x3835 + x4748;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4844 = x4093 + x4680;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4845 = x4095 + x4681;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4846 = x4097 + x4682;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4847 = x4099 + x4683;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4848 = x4101 + x4684;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4849 = x4103 + x4685;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4850 = x4105 + x4686;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4851 = x4107 + x4687;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4852 = x4109 + x4688;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4853 = x4111 + x4689;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4854 = x4113 + x4690;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4855 = x4115 + x4691;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4856 = x4117 + x4692;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4857 = x4119 + x4693;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4858 = x4121 + x4694;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4859 = x4123 + x4695;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4860 = x4125 + x4696;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4861 = x4127 + x4697;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4862 = x4129 + x4698;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4863 = x4131 + x4699;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4864 = x4133 + x4700;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4865 = x4135 + x4701;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4866 = x4137 + x4702;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4867 = x4139 + x4703;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4868 = x4141 + x4704;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4869 = x4143 + x4705;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4870 = x4145 + x4706;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4871 = x4147 + x4707;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4872 = x4149 + x4708;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4873 = x4151 + x4709;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4874 = x4153 + x4710;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x4875 = x4155 + x4711;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4876 = x4552 + x4616;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4877 = x4553 + x4617;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4878 = x4554 + x4618;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4879 = x4555 + x4619;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4880 = x4556 + x4620;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4881 = x4557 + x4621;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4882 = x4558 + x4622;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4883 = x4559 + x4623;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4884 = x4560 + x4624;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4885 = x4561 + x4625;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4886 = x4562 + x4626;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4887 = x4563 + x4627;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4888 = x4564 + x4628;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4889 = x4565 + x4629;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4890 = x4566 + x4630;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4891 = x4567 + x4631;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4892 = x4568 + x4632;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4893 = x4569 + x4633;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4894 = x4570 + x4634;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4895 = x4571 + x4635;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4896 = x4572 + x4636;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4897 = x4573 + x4637;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4898 = x4574 + x4638;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4899 = x4575 + x4639;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4900 = x4576 + x4640;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4901 = x4577 + x4641;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4902 = x4578 + x4642;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4903 = x4579 + x4643;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4904 = x4580 + x4644;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4905 = x4581 + x4645;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4906 = x4582 + x4646;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x4907 = x4583 + x4647;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4908 = x4845 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4909 = x4846 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4910 = x4847 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4911 = x4848 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4912 = x4849 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4913 = x4850 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4914 = x4851 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4915 = x4852 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4916 = x4853 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4917 = x4854 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4918 = x4855 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4919 = x4856 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4920 = x4857 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4921 = x4858 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4922 = x4859 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4923 = x4861 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4924 = x4862 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4925 = x4863 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4926 = x4864 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4927 = x4865 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4928 = x4866 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4929 = x4867 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4930 = x4868 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4931 = x4869 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4932 = x4870 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4933 = x4871 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4934 = x4872 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4935 = x4873 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4936 = x4874 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x4937 = x4875 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4938 = x4028 * x4723;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4939 = x4030 * x4724;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4940 = x4032 * x4725;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4941 = x4034 * x4726;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4942 = x4036 * x4727;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4943 = x4038 * x4728;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4944 = x4040 * x4729;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4945 = x4042 * x4730;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4946 = x4044 * x4731;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4947 = x4046 * x4732;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4948 = x4048 * x4733;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4949 = x4050 * x4734;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4950 = x4052 * x4735;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4951 = x4054 * x4736;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4952 = x4056 * x4737;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4953 = x4058 * x4738;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4954 = x4060 * x4739;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4955 = x4062 * x4740;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4956 = x4064 * x4741;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4957 = x4066 * x4742;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4958 = x4068 * x4743;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4959 = x4070 * x4712;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4960 = x4072 * x4713;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4961 = x4074 * x4714;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4962 = x4076 * x4715;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4963 = x4078 * x4716;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4964 = x4080 * x4717;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4965 = x4082 * x4718;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4966 = x4084 * x4719;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4967 = x4086 * x4720;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4968 = x4088 * x4721;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4969 = x4090 * x4722;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4970 = x4092 * x4749;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4971 = x4094 * x4750;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4972 = x4096 * x4751;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4973 = x4098 * x4752;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4974 = x4100 * x4753;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4975 = x4102 * x4754;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4976 = x4104 * x4755;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4977 = x4106 * x4756;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4978 = x4108 * x4757;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4979 = x4110 * x4758;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4980 = x4112 * x4759;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4981 = x4114 * x4760;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4982 = x4116 * x4761;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4983 = x4118 * x4762;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4984 = x4120 * x4763;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4985 = x4122 * x4764;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4986 = x4124 * x4765;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4987 = x4126 * x4766;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4988 = x4128 * x4767;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4989 = x4130 * x4768;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4990 = x4132 * x4769;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4991 = x4134 * x4770;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4992 = x4136 * x4771;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4993 = x4138 * x4772;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4994 = x4140 * x4773;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4995 = x4142 * x4774;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4996 = x4144 * x4775;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4997 = x4146 * x4744;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4998 = x4148 * x4745;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x4999 = x4150 * x4746;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5000 = x4152 * x4747;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5001 = x4154 * x4748;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5002 = x4780 - x4938;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5003 = x4781 - x4939;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5004 = x4782 - x4940;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5005 = x4783 - x4941;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5006 = x4784 - x4942;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5007 = x4785 - x4943;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5008 = x4786 - x4944;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5009 = x4787 - x4945;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5010 = x4788 - x4946;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5011 = x4789 - x4947;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5012 = x4790 - x4948;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5013 = x4791 - x4949;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5014 = x4792 - x4950;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5015 = x4793 - x4951;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5016 = x4794 - x4952;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5017 = x4795 - x4953;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5018 = x4796 - x4954;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5019 = x4797 - x4955;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5020 = x4798 - x4956;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5021 = x4799 - x4957;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5022 = x4800 - x4958;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5023 = x4801 - x4959;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5024 = x4802 - x4960;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5025 = x4803 - x4961;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5026 = x4804 - x4962;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5027 = x4805 - x4963;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5028 = x4806 - x4964;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5029 = x4807 - x4965;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5030 = x4808 - x4966;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5031 = x4809 - x4967;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5032 = x4810 - x4968;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5033 = x4811 - x4969;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5034 = x4812 - x4970;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5035 = x4813 - x4971;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5036 = x4814 - x4972;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5037 = x4815 - x4973;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5038 = x4816 - x4974;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5039 = x4817 - x4975;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5040 = x4818 - x4976;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5041 = x4819 - x4977;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5042 = x4820 - x4978;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5043 = x4821 - x4979;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5044 = x4822 - x4980;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5045 = x4823 - x4981;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5046 = x4824 - x4982;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5047 = x4825 - x4983;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5048 = x4826 - x4984;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5049 = x4827 - x4985;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5050 = x4828 - x4986;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5051 = x4829 - x4987;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5052 = x4830 - x4988;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5053 = x4831 - x4989;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5054 = x4832 - x4990;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5055 = x4833 - x4991;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5056 = x4834 - x4992;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5057 = x4835 - x4993;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5058 = x4836 - x4994;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5059 = x4837 - x4995;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5060 = x4838 - x4996;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5061 = x4839 - x4997;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5062 = x4840 - x4998;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5063 = x4841 - x4999;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5064 = x4842 - x5000;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x5065 = x4843 - x5001;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5066 = x4776 + x4173;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5067 = x4777 + x4188;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5068 = x4778 + x4203;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5069 = x4779 + x4218;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5070 = x4876 + x4648;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5071 = x4877 + x4649;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5072 = x4878 + x4650;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5073 = x4879 + x4651;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5074 = x4880 + x4652;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5075 = x4881 + x4653;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5076 = x4882 + x4654;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5077 = x4883 + x4655;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5078 = x4884 + x4656;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5079 = x4885 + x4657;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5080 = x4886 + x4658;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5081 = x4887 + x4659;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5082 = x4888 + x4660;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5083 = x4889 + x4661;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5084 = x4890 + x4662;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5085 = x4891 + x4663;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5086 = x4892 + x4664;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5087 = x4893 + x4665;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5088 = x4894 + x4666;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5089 = x4895 + x4667;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5090 = x4896 + x4668;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5091 = x4897 + x4669;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5092 = x4898 + x4670;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5093 = x4899 + x4671;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5094 = x4900 + x4672;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5095 = x4901 + x4673;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5096 = x4902 + x4674;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5097 = x4903 + x4675;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5098 = x4904 + x4676;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5099 = x4905 + x4677;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5100 = x4906 + x4678;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5101 = x4907 + x4679;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5102 = x5002 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5103 = x5003 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5104 = x5005 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5105 = x5006 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5106 = x5007 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5107 = x5008 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5108 = x5009 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5109 = x5010 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5110 = x5011 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5111 = x5012 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5112 = x5013 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5113 = x5014 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5114 = x5015 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5115 = x5016 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5116 = x5017 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5117 = x5018 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5118 = x5019 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5119 = x5021 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5120 = x5022 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5121 = x5023 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5122 = x5024 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5123 = x5025 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5124 = x5026 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5125 = x5027 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5126 = x5028 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5127 = x5029 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5128 = x5030 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5129 = x5031 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5130 = x5032 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5131 = x5033 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5132 = x5034 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5133 = x5035 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5134 = x5036 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5135 = x5037 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5136 = x5038 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5137 = x5039 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5138 = x5041 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5139 = x5042 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5140 = x5043 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5141 = x5044 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5142 = x5045 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5143 = x5046 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5144 = x5047 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5145 = x5048 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5146 = x5049 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5147 = x5050 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5148 = x5051 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5149 = x5052 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5150 = x5053 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5151 = x5054 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5152 = x5055 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5153 = x5057 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5154 = x5058 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5155 = x5059 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5156 = x5060 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5157 = x5061 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5158 = x5062 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5159 = x5063 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5160 = x5064 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5161 = x5065 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5162 = x5066 + x4174;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5163 = x5067 + x4189;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5164 = x5068 + x4204;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5165 = x5069 + x4219;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5166 = x5070 + x4233;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5167 = x5071 + x4235;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5168 = x5072 + x4237;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5169 = x5073 + x4239;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5170 = x5074 + x4241;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5171 = x5075 + x4243;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5172 = x5076 + x4245;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5173 = x5077 + x4247;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5174 = x5078 + x4249;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5175 = x5079 + x4251;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5176 = x5080 + x4253;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5177 = x5081 + x4255;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5178 = x5082 + x4257;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5179 = x5083 + x4259;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5180 = x5084 + x4261;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5181 = x5085 + x4263;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5182 = x5086 + x4265;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5183 = x5087 + x4267;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5184 = x5088 + x4269;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5185 = x5089 + x4271;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5186 = x5090 + x4273;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5187 = x5091 + x4275;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5188 = x5092 + x4277;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5189 = x5093 + x4279;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5190 = x5094 + x4281;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5191 = x5095 + x4283;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5192 = x5096 + x4285;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5193 = x5097 + x4287;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5194 = x5098 + x4289;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5195 = x5099 + x4291;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5196 = x5100 + x4293;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x5197 = x5101 + x4295;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5198 = x4844 + x4908;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5199 = x4860 + x4923;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5200 = x5167 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5201 = x5168 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5202 = x5169 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5203 = x5170 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5204 = x5171 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5205 = x5172 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5206 = x5173 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5207 = x5174 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5208 = x5175 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5209 = x5176 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5210 = x5177 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5211 = x5178 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5212 = x5179 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5213 = x5180 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5214 = x5181 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5215 = x5183 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5216 = x5184 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5217 = x5185 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5218 = x5186 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5219 = x5187 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5220 = x5188 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5221 = x5189 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5222 = x5190 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5223 = x5191 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5224 = x5192 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5225 = x5193 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5226 = x5194 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5227 = x5195 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5228 = x5196 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5229 = x5197 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5230 = x5162 + x4175;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5231 = x5163 + x4190;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5232 = x5164 + x4205;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5233 = x5165 + x4220;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5234 = x5198 + x4909;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5235 = x5199 + x4924;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5236 = x5004 + x5104;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5237 = x5020 + x5119;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5238 = x5040 + x5138;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5239 = x5056 + x5153;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5240 = x5230 + x4176;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5241 = x5231 + x4191;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5242 = x5232 + x4206;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5243 = x5233 + x4221;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5244 = x5234 + x4910;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5245 = x5235 + x4925;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5246 = x5236 + x5105;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5247 = x5237 + x5120;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5248 = x5238 + x5139;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5249 = x5239 + x5154;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5250 = x5166 + x5200;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5251 = x5182 + x5215;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5252 = x5240 + x4177;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5253 = x5241 + x4192;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5254 = x5242 + x4207;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5255 = x5243 + x4222;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5256 = x5244 + x4911;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5257 = x5245 + x4926;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5258 = x5246 + x5106;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5259 = x5247 + x5121;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5260 = x5248 + x5140;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5261 = x5249 + x5155;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5262 = x5250 + x5201;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5263 = x5251 + x5216;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5264 = x5252 + x4178;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5265 = x5253 + x4193;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5266 = x5254 + x4208;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5267 = x5255 + x4223;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5268 = x5256 + x4912;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5269 = x5257 + x4927;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5270 = x5258 + x5107;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5271 = x5259 + x5122;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5272 = x5260 + x5141;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5273 = x5261 + x5156;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5274 = x5262 + x5202;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5275 = x5263 + x5217;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5276 = x3768 + x4164;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5277 = x3766 + x4156;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5278 = x5264 + x4179;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5279 = x5265 + x4194;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5280 = x5266 + x4209;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5281 = x5267 + x4224;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5282 = x5268 + x4913;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5283 = x5269 + x4928;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5284 = x5270 + x5108;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5285 = x5271 + x5123;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5286 = x5272 + x5142;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5287 = x5273 + x5157;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5288 = x5274 + x5203;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5289 = x5275 + x5218;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5290 = x5276 + x4165;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5291 = x5277 + x4157;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5292 = x5278 + x4180;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5293 = x5279 + x4195;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5294 = x5280 + x4210;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5295 = x5281 + x4225;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5296 = x5282 + x4914;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5297 = x5283 + x4929;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5298 = x5284 + x5109;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5299 = x5285 + x5124;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5300 = x5286 + x5143;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5301 = x5287 + x5158;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5302 = x5288 + x5204;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5303 = x5289 + x5219;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5304 = x5290 + x4166;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5305 = x5291 + x4158;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5306 = x5292 + x4181;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5307 = x5293 + x4196;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5308 = x5294 + x4211;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5309 = x5295 + x4226;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5310 = x5296 + x4915;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5311 = x5297 + x4930;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5312 = x5298 + x5110;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5313 = x5299 + x5125;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5314 = x5300 + x5144;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5315 = x5301 + x5159;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5316 = x5302 + x5205;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5317 = x5303 + x5220;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5318 = x5304 + x4167;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5319 = x5305 + x4159;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5320 = x5306 + x4182;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5321 = x5307 + x4197;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5322 = x5308 + x4212;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5323 = x5309 + x4227;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5324 = x5310 + x4916;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5325 = x5311 + x4931;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5326 = x5312 + x5111;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5327 = x5313 + x5126;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5328 = x5314 + x5145;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5329 = x5315 + x5160;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5330 = x5316 + x5206;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5331 = x5317 + x5221;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5332 = x5318 + x4168;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5333 = x5319 + x4160;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5334 = x5320 + x4183;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5335 = x5321 + x4198;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5336 = x5322 + x4213;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5337 = x5323 + x4228;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5338 = x5324 + x4917;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5339 = x5325 + x4932;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5340 = x5326 + x5112;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5341 = x5327 + x5127;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5342 = x5328 + x5146;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5343 = x5329 + x5161;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5344 = x5330 + x5207;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5345 = x5331 + x5222;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5346 = x5332 + x4169;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5347 = x5333 + x4161;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5348 = x5334 + x4184;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5349 = x5335 + x4199;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5350 = x5336 + x4214;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5351 = x5337 + x4229;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5352 = x5338 + x4918;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5353 = x5339 + x4933;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5354 = x5340 + x5113;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5355 = x5341 + x5128;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5356 = x5342 + x5147;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5357 = x5343 + x5132;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5358 = x5344 + x5208;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5359 = x5345 + x5223;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5360 = x5346 + x4170;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5361 = x5347 + x4162;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5362 = x5348 + x4185;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5363 = x5349 + x4200;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5364 = x5350 + x4215;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5365 = x5351 + x4230;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5366 = x5352 + x4919;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5367 = x5353 + x4934;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5368 = x5354 + x5114;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5369 = x5355 + x5129;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5370 = x5356 + x5148;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5371 = x5357 + x5133;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5372 = x5358 + x5209;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5373 = x5359 + x5224;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5374 = x5362 + x4186;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5375 = x5363 + x4201;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5376 = x5360 + x4171;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5377 = x5361 + x4163;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5378 = x5364 + x4216;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5379 = x5365 + x4231;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5380 = x5366 + x4920;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5381 = x5367 + x4935;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5382 = x5368 + x5115;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5383 = x5369 + x5130;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5384 = x5370 + x5149;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5385 = x5371 + x5134;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5386 = x5372 + x5210;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5387 = x5373 + x5225;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5388 = x5380 + x4921;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5389 = x5381 + x4936;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5390 = x5382 + x5116;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5391 = x5383 + x5131;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5392 = x5384 + x5150;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5393 = x5385 + x5135;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5394 = x5386 + x5211;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5395 = x5387 + x5226;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5396 = x5388 + x4922;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5397 = x5389 + x4937;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5398 = x5390 + x5117;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5399 = x5391 + x5102;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5400 = x5392 + x5151;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5401 = x5393 + x5136;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5402 = x5394 + x5212;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5403 = x5395 + x5227;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5404 = x5398 + x5118;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5405 = x5399 + x5103;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5406 = x5400 + x5152;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5407 = x5401 + x5137;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5408 = x5402 + x5213;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5409 = x5403 + x5228;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5410 = x5396 + x5406;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5411 = x5397 + x5407;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5412 = x5378 + x5410;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5413 = x5379 + x5411;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5414 = x3770 + x5412;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5415 = x3771 + x5413;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5416 = x5376 + x5415;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5417 = x5377 + x5414;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5418 = x5408 + x5214;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x5419 = x5409 + x5229;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5420 = x5416 + x5375;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5421 = x5417 + x5374;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5422 = x5418 + x5404;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5423 = x5419 + x5405;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5424 = x5416 + x5423;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x5425 = x5417 + x5422;
      // loc("zirgen/circuit/recursion/sha.cpp":290:5)
      {
        auto& reg = args[2][58 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x5425);
        reg = x5425;
      }
      // loc("zirgen/circuit/recursion/sha.cpp":291:5)
      {
        auto& reg = args[2][92 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x5421);
        reg = x5421;
      }
      // loc("zirgen/circuit/recursion/sha.cpp":290:5)
      {
        auto& reg = args[2][59 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x5424);
        reg = x5424;
      }
      // loc("zirgen/circuit/recursion/sha.cpp":291:5)
      {
        auto& reg = args[2][93 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x5420);
        reg = x5420;
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a_raw[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5426 = args[2][58 * steps + ((cycle - 0) & mask)];
      assert(x5426 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a_raw[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5427 = args[2][59 * steps + ((cycle - 0) & mask)];
      assert(x5427 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5428 = Fp(x5426.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5428);
          reg = x5428;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5429 = Fp(x5426.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5430 = x5429 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5430);
          reg = x5430;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5431 = Fp(x5426.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5432 = x5431 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5432);
          reg = x5432;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5433 = Fp(x5426.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5434 = x5433 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5434);
          reg = x5434;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5435 = Fp(x5426.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5436 = x5435 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5436);
          reg = x5436;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5437 = Fp(x5426.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5438 = x5437 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][31 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5438);
          reg = x5438;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5439 = Fp(x5426.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5440 = x5439 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][32 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5440);
          reg = x5440;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5441 = Fp(x5426.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5442 = x5441 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][33 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5442);
          reg = x5442;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5443 = Fp(x5426.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5444 = x5443 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][34 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5444);
          reg = x5444;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5445 = Fp(x5426.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5446 = x5445 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][35 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5446);
          reg = x5446;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5447 = Fp(x5426.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5448 = x5447 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5448);
          reg = x5448;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5449 = Fp(x5426.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5450 = x5449 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5450);
          reg = x5450;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5451 = Fp(x5426.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5452 = x5451 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5452);
          reg = x5452;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5453 = Fp(x5426.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5454 = x5453 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5454);
          reg = x5454;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5455 = Fp(x5426.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5456 = x5455 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][40 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5456);
          reg = x5456;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5457 = Fp(x5426.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5458 = x5457 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5458);
          reg = x5458;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5459 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x5459 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5460 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x5460 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5461 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x5461 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5462 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x5462 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5463 = args[2][30 * steps + ((cycle - 0) & mask)];
      assert(x5463 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5464 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x5464 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5465 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x5465 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5466 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x5466 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5467 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x5467 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5468 = args[2][35 * steps + ((cycle - 0) & mask)];
      assert(x5468 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5469 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x5469 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5470 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x5470 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5471 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x5471 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5472 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x5472 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5473 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x5473 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5474 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x5474 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5475 = x5460 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5476 = x5461 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5477 = x5462 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5478 = x5463 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5479 = x5464 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5480 = x5465 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5481 = x5466 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5482 = x5467 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5483 = x5468 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5484 = x5469 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5485 = x5470 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5486 = x5471 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5487 = x5472 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5488 = x5473 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5489 = x5474 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5490 = x5459 + x5475;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5491 = x5490 + x5476;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5492 = x5491 + x5477;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5493 = x5492 + x5478;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5494 = x5493 + x5479;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5495 = x5494 + x5480;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5496 = x5495 + x5481;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5497 = x5496 + x5482;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5498 = x5497 + x5483;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5499 = x5498 + x5484;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5500 = x5499 + x5485;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5501 = x5500 + x5486;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5502 = x5501 + x5487;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5503 = x5502 + x5488;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5504 = x5503 + x5489;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x5505 = x5426 - x5504;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x5506 = x5505 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x5507 = Fp(x5506.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5507);
          reg = x5507;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":127:32)
      auto x5508 = x5427 + x5506;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5509 = Fp(x5508.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5509);
          reg = x5509;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5510 = Fp(x5508.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5511 = x5510 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5511);
          reg = x5511;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5512 = Fp(x5508.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5513 = x5512 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5513);
          reg = x5513;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5514 = Fp(x5508.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5515 = x5514 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][45 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5515);
          reg = x5515;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5516 = Fp(x5508.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5517 = x5516 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][46 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5517);
          reg = x5517;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5518 = Fp(x5508.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5519 = x5518 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][47 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5519);
          reg = x5519;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5520 = Fp(x5508.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5521 = x5520 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][48 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5521);
          reg = x5521;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5522 = Fp(x5508.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5523 = x5522 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][49 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5523);
          reg = x5523;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5524 = Fp(x5508.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5525 = x5524 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][50 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5525);
          reg = x5525;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5526 = Fp(x5508.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5527 = x5526 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][51 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5527);
          reg = x5527;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5528 = Fp(x5508.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5529 = x5528 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][52 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5529);
          reg = x5529;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5530 = Fp(x5508.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5531 = x5530 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][53 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5531);
          reg = x5531;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5532 = Fp(x5508.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5533 = x5532 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][54 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5533);
          reg = x5533;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5534 = Fp(x5508.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5535 = x5534 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][55 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5535);
          reg = x5535;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5536 = Fp(x5508.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5537 = x5536 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][56 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5537);
          reg = x5537;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5538 = Fp(x5508.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5539 = x5538 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][57 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5539);
          reg = x5539;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5540 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x5540 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5541 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x5541 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5542 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x5542 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5543 = args[2][45 * steps + ((cycle - 0) & mask)];
      assert(x5543 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5544 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x5544 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5545 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x5545 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5546 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x5546 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5547 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x5547 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5548 = args[2][50 * steps + ((cycle - 0) & mask)];
      assert(x5548 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5549 = args[2][51 * steps + ((cycle - 0) & mask)];
      assert(x5549 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5550 = args[2][52 * steps + ((cycle - 0) & mask)];
      assert(x5550 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5551 = args[2][53 * steps + ((cycle - 0) & mask)];
      assert(x5551 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5552 = args[2][54 * steps + ((cycle - 0) & mask)];
      assert(x5552 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5553 = args[2][55 * steps + ((cycle - 0) & mask)];
      assert(x5553 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5554 = args[2][56 * steps + ((cycle - 0) & mask)];
      assert(x5554 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5555 = args[2][57 * steps + ((cycle - 0) & mask)];
      assert(x5555 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5556 = x5541 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5557 = x5542 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5558 = x5543 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5559 = x5544 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5560 = x5545 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5561 = x5546 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5562 = x5547 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5563 = x5548 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5564 = x5549 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5565 = x5550 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5566 = x5551 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5567 = x5552 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5568 = x5553 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5569 = x5554 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5570 = x5555 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5571 = x5540 + x5556;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5572 = x5571 + x5557;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5573 = x5572 + x5558;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5574 = x5573 + x5559;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5575 = x5574 + x5560;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5576 = x5575 + x5561;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5577 = x5576 + x5562;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5578 = x5577 + x5563;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5579 = x5578 + x5564;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5580 = x5579 + x5565;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5581 = x5580 + x5566;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5582 = x5581 + x5567;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5583 = x5582 + x5568;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5584 = x5583 + x5569;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5585 = x5584 + x5570;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x5586 = x5508 - x5585;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x5587 = x5586 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x5588 = Fp(x5587.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5588);
          reg = x5588;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e_raw[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5589 = args[2][92 * steps + ((cycle - 0) & mask)];
      assert(x5589 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e_raw[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5590 = args[2][93 * steps + ((cycle - 0) & mask)];
      assert(x5590 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5591 = Fp(x5589.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][60 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5591);
          reg = x5591;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5592 = Fp(x5589.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5593 = x5592 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][61 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5593);
          reg = x5593;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5594 = Fp(x5589.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5595 = x5594 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][62 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5595);
          reg = x5595;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5596 = Fp(x5589.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5597 = x5596 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][63 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5597);
          reg = x5597;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5598 = Fp(x5589.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5599 = x5598 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][64 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5599);
          reg = x5599;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5600 = Fp(x5589.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5601 = x5600 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][65 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5601);
          reg = x5601;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5602 = Fp(x5589.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5603 = x5602 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][66 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5603);
          reg = x5603;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5604 = Fp(x5589.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5605 = x5604 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][67 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5605);
          reg = x5605;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5606 = Fp(x5589.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5607 = x5606 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][68 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5607);
          reg = x5607;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5608 = Fp(x5589.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5609 = x5608 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][69 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5609);
          reg = x5609;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5610 = Fp(x5589.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5611 = x5610 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][70 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5611);
          reg = x5611;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5612 = Fp(x5589.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5613 = x5612 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][71 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5613);
          reg = x5613;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5614 = Fp(x5589.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5615 = x5614 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][72 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5615);
          reg = x5615;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5616 = Fp(x5589.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5617 = x5616 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][73 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5617);
          reg = x5617;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5618 = Fp(x5589.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5619 = x5618 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][74 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5619);
          reg = x5619;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5620 = Fp(x5589.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5621 = x5620 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][75 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5621);
          reg = x5621;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5622 = args[2][60 * steps + ((cycle - 0) & mask)];
      assert(x5622 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5623 = args[2][61 * steps + ((cycle - 0) & mask)];
      assert(x5623 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5624 = args[2][62 * steps + ((cycle - 0) & mask)];
      assert(x5624 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5625 = args[2][63 * steps + ((cycle - 0) & mask)];
      assert(x5625 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5626 = args[2][64 * steps + ((cycle - 0) & mask)];
      assert(x5626 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5627 = args[2][65 * steps + ((cycle - 0) & mask)];
      assert(x5627 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5628 = args[2][66 * steps + ((cycle - 0) & mask)];
      assert(x5628 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5629 = args[2][67 * steps + ((cycle - 0) & mask)];
      assert(x5629 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5630 = args[2][68 * steps + ((cycle - 0) & mask)];
      assert(x5630 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5631 = args[2][69 * steps + ((cycle - 0) & mask)];
      assert(x5631 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5632 = args[2][70 * steps + ((cycle - 0) & mask)];
      assert(x5632 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5633 = args[2][71 * steps + ((cycle - 0) & mask)];
      assert(x5633 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5634 = args[2][72 * steps + ((cycle - 0) & mask)];
      assert(x5634 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5635 = args[2][73 * steps + ((cycle - 0) & mask)];
      assert(x5635 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5636 = args[2][74 * steps + ((cycle - 0) & mask)];
      assert(x5636 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5637 = args[2][75 * steps + ((cycle - 0) & mask)];
      assert(x5637 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5638 = x5623 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5639 = x5624 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5640 = x5625 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5641 = x5626 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5642 = x5627 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5643 = x5628 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5644 = x5629 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5645 = x5630 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5646 = x5631 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5647 = x5632 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5648 = x5633 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5649 = x5634 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5650 = x5635 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5651 = x5636 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5652 = x5637 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5653 = x5622 + x5638;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5654 = x5653 + x5639;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5655 = x5654 + x5640;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5656 = x5655 + x5641;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5657 = x5656 + x5642;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5658 = x5657 + x5643;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5659 = x5658 + x5644;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5660 = x5659 + x5645;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5661 = x5660 + x5646;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5662 = x5661 + x5647;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5663 = x5662 + x5648;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5664 = x5663 + x5649;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5665 = x5664 + x5650;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5666 = x5665 + x5651;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5667 = x5666 + x5652;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x5668 = x5589 - x5667;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x5669 = x5668 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x5670 = Fp(x5669.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5670);
          reg = x5670;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":127:32)
      auto x5671 = x5590 + x5669;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5672 = Fp(x5671.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][76 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5672);
          reg = x5672;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5673 = Fp(x5671.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5674 = x5673 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][77 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5674);
          reg = x5674;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5675 = Fp(x5671.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5676 = x5675 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][78 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5676);
          reg = x5676;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5677 = Fp(x5671.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5678 = x5677 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][79 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5678);
          reg = x5678;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5679 = Fp(x5671.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5680 = x5679 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][80 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5680);
          reg = x5680;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5681 = Fp(x5671.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5682 = x5681 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][81 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5682);
          reg = x5682;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5683 = Fp(x5671.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5684 = x5683 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][82 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5684);
          reg = x5684;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5685 = Fp(x5671.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5686 = x5685 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][83 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5686);
          reg = x5686;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5687 = Fp(x5671.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5688 = x5687 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][84 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5688);
          reg = x5688;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5689 = Fp(x5671.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5690 = x5689 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][85 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5690);
          reg = x5690;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5691 = Fp(x5671.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5692 = x5691 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][86 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5692);
          reg = x5692;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5693 = Fp(x5671.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5694 = x5693 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][87 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5694);
          reg = x5694;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5695 = Fp(x5671.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5696 = x5695 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][88 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5696);
          reg = x5696;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5697 = Fp(x5671.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5698 = x5697 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][89 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5698);
          reg = x5698;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5699 = Fp(x5671.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5700 = x5699 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][90 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5700);
          reg = x5700;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x5701 = Fp(x5671.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x5702 = x5701 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][91 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5702);
          reg = x5702;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5703 = args[2][76 * steps + ((cycle - 0) & mask)];
      assert(x5703 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5704 = args[2][77 * steps + ((cycle - 0) & mask)];
      assert(x5704 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5705 = args[2][78 * steps + ((cycle - 0) & mask)];
      assert(x5705 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5706 = args[2][79 * steps + ((cycle - 0) & mask)];
      assert(x5706 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5707 = args[2][80 * steps + ((cycle - 0) & mask)];
      assert(x5707 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5708 = args[2][81 * steps + ((cycle - 0) & mask)];
      assert(x5708 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5709 = args[2][82 * steps + ((cycle - 0) & mask)];
      assert(x5709 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5710 = args[2][83 * steps + ((cycle - 0) & mask)];
      assert(x5710 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5711 = args[2][84 * steps + ((cycle - 0) & mask)];
      assert(x5711 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5712 = args[2][85 * steps + ((cycle - 0) & mask)];
      assert(x5712 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5713 = args[2][86 * steps + ((cycle - 0) & mask)];
      assert(x5713 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5714 = args[2][87 * steps + ((cycle - 0) & mask)];
      assert(x5714 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5715 = args[2][88 * steps + ((cycle - 0) & mask)];
      assert(x5715 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5716 = args[2][89 * steps + ((cycle - 0) & mask)];
      assert(x5716 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5717 = args[2][90 * steps + ((cycle - 0) & mask)];
      assert(x5717 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5718 = args[2][91 * steps + ((cycle - 0) & mask)];
      assert(x5718 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5719 = x5704 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5720 = x5705 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5721 = x5706 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5722 = x5707 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5723 = x5708 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5724 = x5709 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5725 = x5710 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5726 = x5711 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5727 = x5712 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5728 = x5713 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5729 = x5714 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5730 = x5715 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5731 = x5716 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5732 = x5717 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x5733 = x5718 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5734 = x5703 + x5719;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5735 = x5734 + x5720;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5736 = x5735 + x5721;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5737 = x5736 + x5722;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5738 = x5737 + x5723;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5739 = x5738 + x5724;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5740 = x5739 + x5725;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5741 = x5740 + x5726;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5742 = x5741 + x5727;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5743 = x5742 + x5728;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5744 = x5743 + x5729;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5745 = x5744 + x5730;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5746 = x5745 + x5731;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5747 = x5746 + x5732;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x5748 = x5747 + x5733;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x5749 = x5671 - x5748;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x5750 = x5749 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x5751 = Fp(x5750.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5751);
          reg = x5751;
        }
      }
    }
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/opcode(OneHot)/sha_mix(Reg)"("./zirgen/components/mux.h":49:25))
    auto x5752 = args[0][16 * steps + ((cycle - 0) & mask)];
    assert(x5752 != Fp::invalid());
    if (x5752 != 0) {
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][15 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5753 = args[0][19 * steps + ((cycle - 0) & mask)];
      assert(x5753 != Fp::invalid());
      {
        host_args.at(0) = x5753;
        host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
        auto x5754 = host_outs.at(0);
        auto x5755 = host_outs.at(1);
        auto x5756 = host_outs.at(2);
        auto x5757 = host_outs.at(3);
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][17 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5754);
          reg = x5754;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][18 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5755);
          reg = x5755;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][19 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5756);
          reg = x5756;
        }
        // loc("zirgen/circuit/recursion/wom.cpp":51:5)
        {
          auto& reg = args[2][20 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x5757);
          reg = x5757;
        }
      }
      // loc("zirgen/circuit/recursion/wom.cpp":82:3)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x5753);
        reg = x5753;
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5758 = args[2][94 * steps + ((cycle - 15) & mask)];
      assert(x5758 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5759 = args[2][95 * steps + ((cycle - 15) & mask)];
      assert(x5759 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5760 = args[2][96 * steps + ((cycle - 15) & mask)];
      assert(x5760 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5761 = args[2][100 * steps + ((cycle - 15) & mask)];
      assert(x5761 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5762 = args[2][101 * steps + ((cycle - 15) & mask)];
      assert(x5762 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5763 = args[2][102 * steps + ((cycle - 15) & mask)];
      assert(x5763 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5764 = args[2][103 * steps + ((cycle - 15) & mask)];
      assert(x5764 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5765 = args[2][104 * steps + ((cycle - 15) & mask)];
      assert(x5765 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5766 = args[2][105 * steps + ((cycle - 15) & mask)];
      assert(x5766 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5767 = args[2][106 * steps + ((cycle - 15) & mask)];
      assert(x5767 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5768 = args[2][107 * steps + ((cycle - 15) & mask)];
      assert(x5768 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5769 = args[2][108 * steps + ((cycle - 15) & mask)];
      assert(x5769 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5770 = args[2][112 * steps + ((cycle - 15) & mask)];
      assert(x5770 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5771 = args[2][113 * steps + ((cycle - 15) & mask)];
      assert(x5771 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5772 = args[2][114 * steps + ((cycle - 15) & mask)];
      assert(x5772 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5773 = args[2][115 * steps + ((cycle - 15) & mask)];
      assert(x5773 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5774 = args[2][116 * steps + ((cycle - 15) & mask)];
      assert(x5774 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5775 = args[2][117 * steps + ((cycle - 15) & mask)];
      assert(x5775 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5776 = args[2][118 * steps + ((cycle - 15) & mask)];
      assert(x5776 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5777 = args[2][119 * steps + ((cycle - 15) & mask)];
      assert(x5777 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5778 = args[2][120 * steps + ((cycle - 15) & mask)];
      assert(x5778 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5779 = args[2][121 * steps + ((cycle - 15) & mask)];
      assert(x5779 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5780 = args[2][122 * steps + ((cycle - 15) & mask)];
      assert(x5780 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5781 = args[2][123 * steps + ((cycle - 15) & mask)];
      assert(x5781 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5782 = args[2][124 * steps + ((cycle - 15) & mask)];
      assert(x5782 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5783 = args[2][125 * steps + ((cycle - 15) & mask)];
      assert(x5783 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5784 = args[2][97 * steps + ((cycle - 15) & mask)];
      assert(x5784 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5785 = args[2][98 * steps + ((cycle - 15) & mask)];
      assert(x5785 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5786 = args[2][99 * steps + ((cycle - 15) & mask)];
      assert(x5786 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5787 = args[2][109 * steps + ((cycle - 15) & mask)];
      assert(x5787 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5788 = args[2][110 * steps + ((cycle - 15) & mask)];
      assert(x5788 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5789 = args[2][111 * steps + ((cycle - 15) & mask)];
      assert(x5789 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5790 = args[2][100 * steps + ((cycle - 16) & mask)];
      assert(x5790 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5791 = args[2][101 * steps + ((cycle - 16) & mask)];
      assert(x5791 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5792 = args[2][102 * steps + ((cycle - 16) & mask)];
      assert(x5792 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5793 = args[2][103 * steps + ((cycle - 16) & mask)];
      assert(x5793 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5794 = args[2][104 * steps + ((cycle - 16) & mask)];
      assert(x5794 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5795 = args[2][105 * steps + ((cycle - 16) & mask)];
      assert(x5795 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5796 = args[2][106 * steps + ((cycle - 16) & mask)];
      assert(x5796 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5797 = args[2][107 * steps + ((cycle - 16) & mask)];
      assert(x5797 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5798 = args[2][108 * steps + ((cycle - 16) & mask)];
      assert(x5798 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5799 = args[2][109 * steps + ((cycle - 16) & mask)];
      assert(x5799 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5800 = args[2][110 * steps + ((cycle - 16) & mask)];
      assert(x5800 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5801 = args[2][111 * steps + ((cycle - 16) & mask)];
      assert(x5801 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5802 = args[2][112 * steps + ((cycle - 16) & mask)];
      assert(x5802 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5803 = args[2][113 * steps + ((cycle - 16) & mask)];
      assert(x5803 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5804 = args[2][114 * steps + ((cycle - 16) & mask)];
      assert(x5804 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5805 = args[2][115 * steps + ((cycle - 16) & mask)];
      assert(x5805 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5806 = args[2][116 * steps + ((cycle - 16) & mask)];
      assert(x5806 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5807 = args[2][117 * steps + ((cycle - 16) & mask)];
      assert(x5807 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5808 = args[2][118 * steps + ((cycle - 16) & mask)];
      assert(x5808 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5809 = args[2][119 * steps + ((cycle - 16) & mask)];
      assert(x5809 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5810 = args[2][120 * steps + ((cycle - 16) & mask)];
      assert(x5810 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5811 = args[2][121 * steps + ((cycle - 16) & mask)];
      assert(x5811 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5812 = args[2][122 * steps + ((cycle - 16) & mask)];
      assert(x5812 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5813 = args[2][123 * steps + ((cycle - 16) & mask)];
      assert(x5813 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5814 = args[2][124 * steps + ((cycle - 16) & mask)];
      assert(x5814 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5815 = args[2][125 * steps + ((cycle - 16) & mask)];
      assert(x5815 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5816 = args[2][94 * steps + ((cycle - 16) & mask)];
      assert(x5816 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5817 = args[2][95 * steps + ((cycle - 16) & mask)];
      assert(x5817 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5818 = args[2][96 * steps + ((cycle - 16) & mask)];
      assert(x5818 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5819 = args[2][97 * steps + ((cycle - 16) & mask)];
      assert(x5819 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5820 = args[2][98 * steps + ((cycle - 16) & mask)];
      assert(x5820 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5821 = args[2][99 * steps + ((cycle - 16) & mask)];
      assert(x5821 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5822 = args[2][100 * steps + ((cycle - 2) & mask)];
      assert(x5822 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5823 = args[2][101 * steps + ((cycle - 2) & mask)];
      assert(x5823 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5824 = args[2][102 * steps + ((cycle - 2) & mask)];
      assert(x5824 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5825 = args[2][94 * steps + ((cycle - 2) & mask)];
      assert(x5825 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5826 = args[2][95 * steps + ((cycle - 2) & mask)];
      assert(x5826 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5827 = args[2][96 * steps + ((cycle - 2) & mask)];
      assert(x5827 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5828 = args[2][97 * steps + ((cycle - 2) & mask)];
      assert(x5828 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5829 = args[2][98 * steps + ((cycle - 2) & mask)];
      assert(x5829 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5830 = args[2][99 * steps + ((cycle - 2) & mask)];
      assert(x5830 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5831 = args[2][103 * steps + ((cycle - 2) & mask)];
      assert(x5831 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5832 = args[2][113 * steps + ((cycle - 2) & mask)];
      assert(x5832 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5833 = args[2][114 * steps + ((cycle - 2) & mask)];
      assert(x5833 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5834 = args[2][115 * steps + ((cycle - 2) & mask)];
      assert(x5834 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5835 = args[2][116 * steps + ((cycle - 2) & mask)];
      assert(x5835 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5836 = args[2][117 * steps + ((cycle - 2) & mask)];
      assert(x5836 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5837 = args[2][118 * steps + ((cycle - 2) & mask)];
      assert(x5837 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5838 = args[2][119 * steps + ((cycle - 2) & mask)];
      assert(x5838 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5839 = args[2][120 * steps + ((cycle - 2) & mask)];
      assert(x5839 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5840 = args[2][121 * steps + ((cycle - 2) & mask)];
      assert(x5840 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5841 = args[2][122 * steps + ((cycle - 2) & mask)];
      assert(x5841 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5842 = args[2][123 * steps + ((cycle - 2) & mask)];
      assert(x5842 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5843 = args[2][124 * steps + ((cycle - 2) & mask)];
      assert(x5843 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5844 = args[2][125 * steps + ((cycle - 2) & mask)];
      assert(x5844 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5845 = args[2][104 * steps + ((cycle - 2) & mask)];
      assert(x5845 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5846 = args[2][105 * steps + ((cycle - 2) & mask)];
      assert(x5846 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5847 = args[2][106 * steps + ((cycle - 2) & mask)];
      assert(x5847 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5848 = args[2][107 * steps + ((cycle - 2) & mask)];
      assert(x5848 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5849 = args[2][108 * steps + ((cycle - 2) & mask)];
      assert(x5849 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5850 = args[2][109 * steps + ((cycle - 2) & mask)];
      assert(x5850 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5851 = args[2][110 * steps + ((cycle - 2) & mask)];
      assert(x5851 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5852 = args[2][111 * steps + ((cycle - 2) & mask)];
      assert(x5852 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5853 = args[2][112 * steps + ((cycle - 2) & mask)];
      assert(x5853 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5854 = args[2][100 * steps + ((cycle - 7) & mask)];
      assert(x5854 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5855 = args[2][101 * steps + ((cycle - 7) & mask)];
      assert(x5855 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5856 = args[2][102 * steps + ((cycle - 7) & mask)];
      assert(x5856 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5857 = args[2][103 * steps + ((cycle - 7) & mask)];
      assert(x5857 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5858 = args[2][104 * steps + ((cycle - 7) & mask)];
      assert(x5858 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5859 = args[2][105 * steps + ((cycle - 7) & mask)];
      assert(x5859 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5860 = args[2][106 * steps + ((cycle - 7) & mask)];
      assert(x5860 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5861 = args[2][107 * steps + ((cycle - 7) & mask)];
      assert(x5861 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5862 = args[2][108 * steps + ((cycle - 7) & mask)];
      assert(x5862 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5863 = args[2][109 * steps + ((cycle - 7) & mask)];
      assert(x5863 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5864 = args[2][110 * steps + ((cycle - 7) & mask)];
      assert(x5864 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5865 = args[2][111 * steps + ((cycle - 7) & mask)];
      assert(x5865 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5866 = args[2][112 * steps + ((cycle - 7) & mask)];
      assert(x5866 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5867 = args[2][113 * steps + ((cycle - 7) & mask)];
      assert(x5867 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5868 = args[2][114 * steps + ((cycle - 7) & mask)];
      assert(x5868 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5869 = args[2][115 * steps + ((cycle - 7) & mask)];
      assert(x5869 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5870 = args[2][116 * steps + ((cycle - 7) & mask)];
      assert(x5870 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5871 = args[2][117 * steps + ((cycle - 7) & mask)];
      assert(x5871 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5872 = args[2][118 * steps + ((cycle - 7) & mask)];
      assert(x5872 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5873 = args[2][119 * steps + ((cycle - 7) & mask)];
      assert(x5873 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5874 = args[2][120 * steps + ((cycle - 7) & mask)];
      assert(x5874 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5875 = args[2][121 * steps + ((cycle - 7) & mask)];
      assert(x5875 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5876 = args[2][122 * steps + ((cycle - 7) & mask)];
      assert(x5876 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5877 = args[2][123 * steps + ((cycle - 7) & mask)];
      assert(x5877 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5878 = args[2][124 * steps + ((cycle - 7) & mask)];
      assert(x5878 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5879 = args[2][125 * steps + ((cycle - 7) & mask)];
      assert(x5879 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5880 = args[2][94 * steps + ((cycle - 7) & mask)];
      assert(x5880 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5881 = args[2][95 * steps + ((cycle - 7) & mask)];
      assert(x5881 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5882 = args[2][96 * steps + ((cycle - 7) & mask)];
      assert(x5882 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5883 = args[2][97 * steps + ((cycle - 7) & mask)];
      assert(x5883 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5884 = args[2][98 * steps + ((cycle - 7) & mask)];
      assert(x5884 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x5885 = args[2][99 * steps + ((cycle - 7) & mask)];
      assert(x5885 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5886 = x5758 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5887 = x5759 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5888 = x5760 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5889 = x5761 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5890 = x5762 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5891 = x5763 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5892 = x5764 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5893 = x5765 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5894 = x5766 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5895 = x5767 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5896 = x5768 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5897 = x5769 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5898 = x5770 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5899 = x5771 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5900 = x5772 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5901 = x5773 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5902 = x5774 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5903 = x5775 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5904 = x5776 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5905 = x5777 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5906 = x5778 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5907 = x5779 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5908 = x5780 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5909 = x5781 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5910 = x5782 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5911 = x5783 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5912 = x5784 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5913 = x5785 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5914 = x5786 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5915 = x5787 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5916 = x5788 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5917 = x5789 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5918 = x5822 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5919 = x5823 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5920 = x5824 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5921 = x5825 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5922 = x5826 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5923 = x5827 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5924 = x5828 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5925 = x5829 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5926 = x5830 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5927 = x5831 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5928 = x5832 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5929 = x5833 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5930 = x5834 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5931 = x5835 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5932 = x5836 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5933 = x5837 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5934 = x5838 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5935 = x5839 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5936 = x5840 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5937 = x5841 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5938 = x5842 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5939 = x5843 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5940 = x5844 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5941 = x5845 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5942 = x5846 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5943 = x5847 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5944 = x5848 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5945 = x5849 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5946 = x5850 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5947 = x5851 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5948 = x5852 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x5949 = x5853 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5950 = x5790 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5951 = x5791 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5952 = x5792 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5953 = x5793 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5954 = x5794 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5955 = x5795 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5956 = x5796 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5957 = x5797 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5958 = x5798 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5959 = x5799 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5960 = x5801 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5961 = x5802 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5962 = x5803 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5963 = x5804 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5964 = x5805 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5965 = x5806 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5966 = x5807 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5967 = x5808 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5968 = x5809 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5969 = x5810 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5970 = x5811 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5971 = x5812 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5972 = x5813 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5973 = x5814 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5974 = x5815 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5975 = x5817 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5976 = x5818 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5977 = x5819 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5978 = x5820 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5979 = x5821 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5980 = x5854 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5981 = x5855 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5982 = x5856 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5983 = x5857 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5984 = x5858 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5985 = x5859 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5986 = x5860 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5987 = x5861 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5988 = x5862 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5989 = x5863 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5990 = x5865 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5991 = x5866 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5992 = x5867 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5993 = x5868 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5994 = x5869 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5995 = x5870 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5996 = x5871 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5997 = x5872 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5998 = x5873 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x5999 = x5874 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6000 = x5875 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6001 = x5876 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6002 = x5877 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6003 = x5878 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6004 = x5879 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6005 = x5881 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6006 = x5882 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6007 = x5883 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6008 = x5884 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6009 = x5885 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6010 = x5886 * x5789;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6011 = x5887 * x5770;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6012 = x5888 * x5771;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6013 = x5889 * x5775;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6014 = x5889 * x5789;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6015 = x5890 * x5776;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6016 = x5891 * x5777;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6017 = x5892 * x5778;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6018 = x5893 * x5779;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6019 = x5894 * x5780;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6020 = x5895 * x5781;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6021 = x5896 * x5782;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6022 = x5897 * x5783;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6023 = x5898 * x5784;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6024 = x5899 * x5785;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6025 = x5900 * x5786;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6026 = x5901 * x5761;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6027 = x5902 * x5762;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6028 = x5903 * x5763;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6029 = x5904 * x5764;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6030 = x5905 * x5765;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6031 = x5906 * x5766;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6032 = x5907 * x5767;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6033 = x5908 * x5768;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6034 = x5909 * x5769;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6035 = x5910 * x5787;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6036 = x5911 * x5788;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6037 = x5912 * x5772;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6038 = x5913 * x5773;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6039 = x5913 * x5787;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6040 = x5914 * x5774;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6041 = x5914 * x5788;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6042 = x5918 * x5842;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6043 = x5919 * x5831;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6044 = x5919 * x5843;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6045 = x5920 * x5844;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6046 = x5920 * x5845;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6047 = x5921 * x5836;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6048 = x5922 * x5837;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6049 = x5923 * x5838;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6050 = x5924 * x5839;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6051 = x5925 * x5840;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6052 = x5926 * x5841;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6053 = x5927 * x5846;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6054 = x5928 * x5845;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6055 = x5929 * x5846;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6056 = x5930 * x5847;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6057 = x5931 * x5848;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6058 = x5932 * x5849;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6059 = x5933 * x5850;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6060 = x5934 * x5851;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6061 = x5935 * x5852;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6062 = x5936 * x5853;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6063 = x5937 * x5832;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6064 = x5938 * x5833;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6065 = x5939 * x5834;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6066 = x5940 * x5835;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6067 = x5941 * x5847;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6068 = x5942 * x5848;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6069 = x5943 * x5849;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6070 = x5944 * x5850;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6071 = x5945 * x5851;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6072 = x5946 * x5852;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6073 = x5947 * x5853;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6074 = x5758 + x5789;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6075 = x5759 + x5770;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6076 = x5760 + x5771;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6077 = x5761 + x5775;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6078 = x5761 + x5789;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6079 = x5762 + x5776;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6080 = x5763 + x5777;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6081 = x5764 + x5778;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6082 = x5765 + x5779;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6083 = x5766 + x5780;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6084 = x5767 + x5781;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6085 = x5768 + x5782;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6086 = x5769 + x5783;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6087 = x5770 + x5784;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6088 = x5771 + x5785;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6089 = x5772 + x5786;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6090 = x5773 + x5761;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6091 = x5774 + x5762;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6092 = x5775 + x5763;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6093 = x5776 + x5764;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6094 = x5777 + x5765;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6095 = x5778 + x5766;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6096 = x5779 + x5767;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6097 = x5780 + x5768;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6098 = x5781 + x5769;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6099 = x5782 + x5787;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6100 = x5783 + x5788;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6101 = x5784 + x5772;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6102 = x5785 + x5773;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6103 = x5785 + x5787;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6104 = x5786 + x5774;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6105 = x5786 + x5788;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6106 = x5822 + x5842;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6107 = x5823 + x5831;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6108 = x5823 + x5843;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6109 = x5824 + x5844;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6110 = x5824 + x5845;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6111 = x5825 + x5836;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6112 = x5826 + x5837;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6113 = x5827 + x5838;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6114 = x5828 + x5839;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6115 = x5829 + x5840;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6116 = x5830 + x5841;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6117 = x5831 + x5846;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6118 = x5832 + x5845;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6119 = x5833 + x5846;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6120 = x5834 + x5847;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6121 = x5835 + x5848;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6122 = x5836 + x5849;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6123 = x5837 + x5850;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6124 = x5838 + x5851;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6125 = x5839 + x5852;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6126 = x5840 + x5853;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6127 = x5841 + x5832;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6128 = x5842 + x5833;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6129 = x5843 + x5834;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6130 = x5844 + x5835;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6131 = x5845 + x5847;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6132 = x5846 + x5848;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6133 = x5847 + x5849;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6134 = x5848 + x5850;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6135 = x5849 + x5851;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6136 = x5850 + x5852;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6137 = x5851 + x5853;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6138 = x6078 - x6014;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6139 = x6103 - x6039;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6140 = x6105 - x6041;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6141 = x6107 - x6043;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6142 = x6110 - x6046;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6143 = x6117 - x6053;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6144 = x6131 - x6067;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6145 = x6132 - x6068;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6146 = x6133 - x6069;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6147 = x6134 - x6070;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6148 = x6135 - x6071;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6149 = x6136 - x6072;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6150 = x6137 - x6073;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6151 = x6074 - x6010;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6152 = x6075 - x6011;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6153 = x6076 - x6012;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6154 = x6077 - x6013;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6155 = x6079 - x6015;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6156 = x6080 - x6016;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6157 = x6081 - x6017;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6158 = x6082 - x6018;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6159 = x6083 - x6019;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6160 = x6084 - x6020;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6161 = x6085 - x6021;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6162 = x6086 - x6022;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6163 = x6087 - x6023;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6164 = x6088 - x6024;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6165 = x6089 - x6025;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6166 = x6090 - x6026;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6167 = x6091 - x6027;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6168 = x6092 - x6028;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6169 = x6093 - x6029;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6170 = x6094 - x6030;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6171 = x6095 - x6031;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6172 = x6096 - x6032;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6173 = x6097 - x6033;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6174 = x6098 - x6034;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6175 = x6099 - x6035;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6176 = x6100 - x6036;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6177 = x6101 - x6037;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6178 = x6102 - x6038;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6179 = x6104 - x6040;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6180 = x6106 - x6042;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6181 = x6108 - x6044;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6182 = x6109 - x6045;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6183 = x6111 - x6047;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6184 = x6112 - x6048;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6185 = x6113 - x6049;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6186 = x6114 - x6050;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6187 = x6115 - x6051;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6188 = x6116 - x6052;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6189 = x6118 - x6054;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6190 = x6119 - x6055;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6191 = x6120 - x6056;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6192 = x6121 - x6057;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6193 = x6122 - x6058;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6194 = x6123 - x6059;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6195 = x6124 - x6060;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6196 = x6125 - x6061;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6197 = x6126 - x6062;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6198 = x6127 - x6063;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6199 = x6128 - x6064;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6200 = x6129 - x6065;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6201 = x6130 - x6066;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6202 = x5800 + x5960;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6203 = x5816 + x5975;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6204 = x5864 + x5990;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6205 = x5880 + x6005;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6206 = x5758 + x6159;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6207 = x5759 + x6160;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6208 = x5760 + x6161;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6209 = x5762 + x6163;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6210 = x5763 + x6164;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6211 = x5764 + x6165;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6212 = x5765 + x6166;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6213 = x5766 + x6167;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6214 = x5767 + x6168;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6215 = x5768 + x6169;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6216 = x5769 + x6170;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6217 = x5770 + x6174;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6218 = x5771 + x6175;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6219 = x5772 + x6176;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6220 = x5773 + x6151;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6221 = x5774 + x6152;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6222 = x5775 + x6153;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6223 = x5776 + x6177;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6224 = x5777 + x6178;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6225 = x5778 + x6179;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6226 = x5779 + x6154;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6227 = x5780 + x6155;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6228 = x5781 + x6156;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6229 = x5782 + x6157;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6230 = x5783 + x6158;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6231 = x5784 + x6162;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6232 = x5787 + x6171;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6233 = x5788 + x6172;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6234 = x5789 + x6173;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6235 = x5822 + x6182;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6236 = x5825 + x6185;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6237 = x5826 + x6186;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6238 = x5827 + x6187;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6239 = x5828 + x6188;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6240 = x5829 + x6180;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6241 = x5830 + x6181;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6242 = x5832 + x6191;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6243 = x5833 + x6192;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6244 = x5834 + x6193;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6245 = x5835 + x6194;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6246 = x5836 + x6195;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6247 = x5837 + x6196;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6248 = x5838 + x6197;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6249 = x5839 + x6198;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6250 = x5840 + x6199;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6251 = x5841 + x6200;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6252 = x5842 + x6201;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6253 = x5843 + x6183;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6254 = x5844 + x6184;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6255 = x5852 + x6189;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6256 = x5853 + x6190;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6257 = x5886 * x6159;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6258 = x5887 * x6160;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6259 = x5888 * x6161;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6260 = x5890 * x6163;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6261 = x5891 * x6164;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6262 = x5892 * x6165;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6263 = x5893 * x6166;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6264 = x5894 * x6167;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6265 = x5895 * x6168;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6266 = x5896 * x6169;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6267 = x5897 * x6170;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6268 = x5898 * x6174;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6269 = x5899 * x6175;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6270 = x5900 * x6176;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6271 = x5901 * x6151;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6272 = x5902 * x6152;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6273 = x5903 * x6153;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6274 = x5904 * x6177;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6275 = x5905 * x6178;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6276 = x5906 * x6179;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6277 = x5907 * x6154;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6278 = x5908 * x6155;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6279 = x5909 * x6156;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6280 = x5910 * x6157;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6281 = x5911 * x6158;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6282 = x5912 * x6162;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6283 = x5915 * x6171;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6284 = x5916 * x6172;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6285 = x5917 * x6173;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6286 = x5918 * x6182;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6287 = x5921 * x6185;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6288 = x5922 * x6186;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6289 = x5923 * x6187;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6290 = x5924 * x6188;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6291 = x5925 * x6180;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6292 = x5926 * x6181;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6293 = x5928 * x6191;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6294 = x5929 * x6192;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6295 = x5930 * x6193;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6296 = x5931 * x6194;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6297 = x5932 * x6195;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6298 = x5933 * x6196;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6299 = x5934 * x6197;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6300 = x5935 * x6198;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6301 = x5936 * x6199;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6302 = x5937 * x6200;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6303 = x5938 * x6201;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6304 = x5939 * x6183;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6305 = x5940 * x6184;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6306 = x5948 * x6189;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6307 = x5949 * x6190;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6308 = x6138 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6309 = x6139 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6310 = x6140 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6311 = x6141 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6312 = x6142 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6313 = x6143 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6314 = x6144 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6315 = x6145 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6316 = x6146 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6317 = x6147 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6318 = x6148 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6319 = x6149 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6320 = x6150 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6321 = x6206 - x6257;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6322 = x6207 - x6258;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6323 = x6208 - x6259;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6324 = x6209 - x6260;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6325 = x6210 - x6261;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6326 = x6211 - x6262;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6327 = x6212 - x6263;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6328 = x6213 - x6264;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6329 = x6214 - x6265;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6330 = x6215 - x6266;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6331 = x6216 - x6267;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6332 = x6217 - x6268;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6333 = x6218 - x6269;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6334 = x6219 - x6270;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6335 = x6220 - x6271;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6336 = x6221 - x6272;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6337 = x6222 - x6273;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6338 = x6223 - x6274;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6339 = x6224 - x6275;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6340 = x6225 - x6276;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6341 = x6226 - x6277;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6342 = x6227 - x6278;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6343 = x6228 - x6279;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6344 = x6229 - x6280;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6345 = x6230 - x6281;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6346 = x6231 - x6282;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6347 = x6232 - x6283;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6348 = x6233 - x6284;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6349 = x6234 - x6285;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6350 = x6235 - x6286;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6351 = x6236 - x6287;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6352 = x6237 - x6288;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6353 = x6238 - x6289;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6354 = x6239 - x6290;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6355 = x6240 - x6291;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6356 = x6241 - x6292;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6357 = x6242 - x6293;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6358 = x6243 - x6294;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6359 = x6244 - x6295;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6360 = x6245 - x6296;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6361 = x6246 - x6297;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6362 = x6247 - x6298;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6363 = x6248 - x6299;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6364 = x6249 - x6300;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6365 = x6250 - x6301;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6366 = x6251 - x6302;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6367 = x6252 - x6303;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6368 = x6253 - x6304;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6369 = x6254 - x6305;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6370 = x6255 - x6306;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x6371 = x6256 - x6307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6372 = x6202 + x5961;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6373 = x6203 + x5976;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6374 = x6204 + x5991;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6375 = x6205 + x6006;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6376 = x6321 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6377 = x6322 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6378 = x6323 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6379 = x6325 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6380 = x6326 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6381 = x6327 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6382 = x6328 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6383 = x6329 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6384 = x6330 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6385 = x6331 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6386 = x6332 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6387 = x6333 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6388 = x6334 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6389 = x6335 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6390 = x6336 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6391 = x6338 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6392 = x6339 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6393 = x6340 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6394 = x6341 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6395 = x6342 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6396 = x6343 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6397 = x6344 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6398 = x6345 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6399 = x6346 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6400 = x6347 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6401 = x6348 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6402 = x6349 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6403 = x6350 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6404 = x6351 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6405 = x6353 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6406 = x6354 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6407 = x6355 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6408 = x6356 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6409 = x6357 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6410 = x6358 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6411 = x6359 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6412 = x6360 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6413 = x6361 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6414 = x6362 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6415 = x6363 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6416 = x6364 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6417 = x6365 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6418 = x6366 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6419 = x6367 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6420 = x6368 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6421 = x6369 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x6422 = x6371 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6423 = x6372 + x5962;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6424 = x6373 + x5977;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6425 = x6374 + x5992;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6426 = x6375 + x6007;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6427 = x6423 + x5963;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6428 = x6424 + x5978;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6429 = x6425 + x5993;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6430 = x6426 + x6008;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6431 = x6324 + x6379;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6432 = x6337 + x6391;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6433 = x6352 + x6405;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6434 = x6370 + x6422;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6435 = x6427 + x5964;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6436 = x6428 + x5979;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6437 = x6429 + x5994;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6438 = x6430 + x6009;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6439 = x6431 + x6380;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6440 = x6432 + x6392;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6441 = x6433 + x6406;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6442 = x6434 + x6409;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6443 = x6435 + x5965;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6444 = x6436 + x5950;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6445 = x6437 + x5995;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6446 = x6438 + x5980;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6447 = x6439 + x6381;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6448 = x6440 + x6393;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6449 = x6441 + x6407;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6450 = x6442 + x6410;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6451 = x6443 + x5966;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6452 = x6444 + x5951;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6453 = x6445 + x5996;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6454 = x6446 + x5981;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6455 = x6447 + x6382;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6456 = x6448 + x6394;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6457 = x6449 + x6408;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6458 = x6450 + x6411;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6459 = x6451 + x5967;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6460 = x6452 + x5952;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6461 = x6453 + x5997;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6462 = x6454 + x5982;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6463 = x6455 + x6383;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6464 = x6456 + x6395;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6465 = x6457 + x6403;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6466 = x6458 + x6412;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6467 = x6459 + x5968;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6468 = x6460 + x5953;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6469 = x6461 + x5998;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6470 = x6462 + x5983;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6471 = x6463 + x6384;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6472 = x6464 + x6396;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6473 = x6465 + x6311;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6474 = x6466 + x6413;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6475 = x6467 + x5969;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6476 = x6468 + x5954;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6477 = x6469 + x5999;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6478 = x6470 + x5984;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6479 = x6471 + x6385;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6480 = x6472 + x6397;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6481 = x6473 + x6312;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6482 = x6474 + x6414;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6483 = x6475 + x5970;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6484 = x6476 + x5955;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6485 = x6477 + x6000;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6486 = x6478 + x5985;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6487 = x6479 + x6400;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6488 = x6480 + x6398;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6489 = x6481 + x6313;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6490 = x6482 + x6415;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6491 = x6483 + x5971;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6492 = x6484 + x5956;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6493 = x6485 + x6001;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6494 = x6486 + x5986;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6495 = x6487 + x6401;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6496 = x6488 + x6376;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6497 = x6489 + x6314;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6498 = x6490 + x6416;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6499 = x6491 + x5972;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6500 = x6492 + x5957;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6501 = x6493 + x6002;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6502 = x6494 + x5987;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6503 = x6495 + x6402;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6504 = x6496 + x6377;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6505 = x6497 + x6315;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6506 = x6498 + x6417;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6507 = x6499 + x5973;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6508 = x6500 + x5958;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6509 = x6501 + x6003;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6510 = x6502 + x5988;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6511 = x6503 + x6386;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6512 = x6504 + x6378;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6513 = x6505 + x6316;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6514 = x6506 + x6418;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6515 = x6507 + x5974;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6516 = x6508 + x5959;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6517 = x6509 + x6004;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6518 = x6510 + x5989;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6519 = x6511 + x6387;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6520 = x6512 + x6399;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6521 = x6513 + x6317;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6522 = x6514 + x6419;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6523 = x6519 + x6388;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6524 = x6520 + x6309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6525 = x6521 + x6318;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6526 = x6522 + x6420;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6527 = x6523 + x6389;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6528 = x6524 + x6310;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6529 = x6525 + x6319;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6530 = x6526 + x6421;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6531 = x6529 + x6320;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6532 = x6530 + x6404;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6533 = x6527 + x6390;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x6534 = x6528 + x6308;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x6535 = x6517 + x6531;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x6536 = x6518 + x6532;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x6537 = x6533 + x6536;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x6538 = x6534 + x6535;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x6539 = x6515 + x6538;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x6540 = x6516 + x6537;
      // loc("zirgen/circuit/recursion/sha.cpp":261:5)
      {
        auto& reg = args[2][126 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x6540);
        reg = x6540;
      }
      // loc("zirgen/circuit/recursion/sha.cpp":261:5)
      {
        auto& reg = args[2][127 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x6539);
        reg = x6539;
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w_raw[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6541 = args[2][126 * steps + ((cycle - 0) & mask)];
      assert(x6541 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w_raw[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6542 = args[2][127 * steps + ((cycle - 0) & mask)];
      assert(x6542 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6543 = Fp(x6541.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][94 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6543);
          reg = x6543;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6544 = Fp(x6541.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6545 = x6544 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][95 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6545);
          reg = x6545;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6546 = Fp(x6541.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6547 = x6546 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][96 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6547);
          reg = x6547;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6548 = Fp(x6541.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6549 = x6548 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][97 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6549);
          reg = x6549;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6550 = Fp(x6541.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6551 = x6550 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][98 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6551);
          reg = x6551;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6552 = Fp(x6541.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6553 = x6552 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][99 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6553);
          reg = x6553;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6554 = Fp(x6541.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6555 = x6554 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][100 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6555);
          reg = x6555;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6556 = Fp(x6541.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6557 = x6556 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][101 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6557);
          reg = x6557;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6558 = Fp(x6541.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6559 = x6558 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][102 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6559);
          reg = x6559;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6560 = Fp(x6541.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6561 = x6560 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][103 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6561);
          reg = x6561;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6562 = Fp(x6541.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6563 = x6562 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][104 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6563);
          reg = x6563;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6564 = Fp(x6541.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6565 = x6564 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][105 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6565);
          reg = x6565;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6566 = Fp(x6541.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6567 = x6566 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][106 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6567);
          reg = x6567;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6568 = Fp(x6541.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6569 = x6568 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][107 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6569);
          reg = x6569;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6570 = Fp(x6541.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6571 = x6570 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][108 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6571);
          reg = x6571;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6572 = Fp(x6541.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6573 = x6572 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][109 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6573);
          reg = x6573;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6574 = args[2][100 * steps + ((cycle - 0) & mask)];
      assert(x6574 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6575 = args[2][101 * steps + ((cycle - 0) & mask)];
      assert(x6575 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6576 = args[2][102 * steps + ((cycle - 0) & mask)];
      assert(x6576 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6577 = args[2][103 * steps + ((cycle - 0) & mask)];
      assert(x6577 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6578 = args[2][104 * steps + ((cycle - 0) & mask)];
      assert(x6578 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6579 = args[2][105 * steps + ((cycle - 0) & mask)];
      assert(x6579 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6580 = args[2][106 * steps + ((cycle - 0) & mask)];
      assert(x6580 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6581 = args[2][107 * steps + ((cycle - 0) & mask)];
      assert(x6581 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6582 = args[2][108 * steps + ((cycle - 0) & mask)];
      assert(x6582 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6583 = args[2][109 * steps + ((cycle - 0) & mask)];
      assert(x6583 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6584 = args[2][94 * steps + ((cycle - 0) & mask)];
      assert(x6584 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6585 = args[2][95 * steps + ((cycle - 0) & mask)];
      assert(x6585 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6586 = args[2][96 * steps + ((cycle - 0) & mask)];
      assert(x6586 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6587 = args[2][97 * steps + ((cycle - 0) & mask)];
      assert(x6587 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6588 = args[2][98 * steps + ((cycle - 0) & mask)];
      assert(x6588 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6589 = args[2][99 * steps + ((cycle - 0) & mask)];
      assert(x6589 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6590 = x6574 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6591 = x6575 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6592 = x6576 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6593 = x6577 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6594 = x6578 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6595 = x6579 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6596 = x6580 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6597 = x6581 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6598 = x6582 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6599 = x6583 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6600 = x6585 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6601 = x6586 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6602 = x6587 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6603 = x6588 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6604 = x6589 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6605 = x6584 + x6600;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6606 = x6605 + x6601;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6607 = x6606 + x6602;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6608 = x6607 + x6603;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6609 = x6608 + x6604;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6610 = x6609 + x6590;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6611 = x6610 + x6591;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6612 = x6611 + x6592;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6613 = x6612 + x6593;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6614 = x6613 + x6594;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6615 = x6614 + x6595;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6616 = x6615 + x6596;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6617 = x6616 + x6597;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6618 = x6617 + x6598;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6619 = x6618 + x6599;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x6620 = x6541 - x6619;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x6621 = x6620 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x6622 = Fp(x6621.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6622);
          reg = x6622;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":127:32)
      auto x6623 = x6542 + x6621;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6624 = Fp(x6623.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][110 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6624);
          reg = x6624;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6625 = Fp(x6623.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6626 = x6625 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][111 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6626);
          reg = x6626;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6627 = Fp(x6623.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6628 = x6627 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][112 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6628);
          reg = x6628;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6629 = Fp(x6623.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6630 = x6629 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][113 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6630);
          reg = x6630;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6631 = Fp(x6623.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6632 = x6631 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][114 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6632);
          reg = x6632;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6633 = Fp(x6623.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6634 = x6633 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][115 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6634);
          reg = x6634;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6635 = Fp(x6623.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6636 = x6635 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][116 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6636);
          reg = x6636;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6637 = Fp(x6623.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6638 = x6637 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][117 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6638);
          reg = x6638;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6639 = Fp(x6623.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6640 = x6639 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][118 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6640);
          reg = x6640;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6641 = Fp(x6623.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6642 = x6641 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][119 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6642);
          reg = x6642;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6643 = Fp(x6623.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6644 = x6643 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][120 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6644);
          reg = x6644;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6645 = Fp(x6623.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6646 = x6645 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][121 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6646);
          reg = x6646;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6647 = Fp(x6623.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6648 = x6647 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][122 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6648);
          reg = x6648;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6649 = Fp(x6623.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6650 = x6649 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][123 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6650);
          reg = x6650;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6651 = Fp(x6623.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6652 = x6651 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][124 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6652);
          reg = x6652;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x6653 = Fp(x6623.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x6654 = x6653 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][125 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6654);
          reg = x6654;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6655 = args[2][110 * steps + ((cycle - 0) & mask)];
      assert(x6655 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6656 = args[2][111 * steps + ((cycle - 0) & mask)];
      assert(x6656 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6657 = args[2][112 * steps + ((cycle - 0) & mask)];
      assert(x6657 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6658 = args[2][113 * steps + ((cycle - 0) & mask)];
      assert(x6658 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6659 = args[2][114 * steps + ((cycle - 0) & mask)];
      assert(x6659 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6660 = args[2][115 * steps + ((cycle - 0) & mask)];
      assert(x6660 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6661 = args[2][116 * steps + ((cycle - 0) & mask)];
      assert(x6661 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6662 = args[2][117 * steps + ((cycle - 0) & mask)];
      assert(x6662 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6663 = args[2][118 * steps + ((cycle - 0) & mask)];
      assert(x6663 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6664 = args[2][119 * steps + ((cycle - 0) & mask)];
      assert(x6664 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6665 = args[2][120 * steps + ((cycle - 0) & mask)];
      assert(x6665 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6666 = args[2][121 * steps + ((cycle - 0) & mask)];
      assert(x6666 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6667 = args[2][122 * steps + ((cycle - 0) & mask)];
      assert(x6667 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6668 = args[2][123 * steps + ((cycle - 0) & mask)];
      assert(x6668 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6669 = args[2][124 * steps + ((cycle - 0) & mask)];
      assert(x6669 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/w[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6670 = args[2][125 * steps + ((cycle - 0) & mask)];
      assert(x6670 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6671 = x6656 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6672 = x6657 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6673 = x6658 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6674 = x6659 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6675 = x6660 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6676 = x6661 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6677 = x6662 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6678 = x6663 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6679 = x6664 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6680 = x6665 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6681 = x6666 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6682 = x6667 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6683 = x6668 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6684 = x6669 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x6685 = x6670 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6686 = x6655 + x6671;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6687 = x6686 + x6672;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6688 = x6687 + x6673;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6689 = x6688 + x6674;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6690 = x6689 + x6675;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6691 = x6690 + x6676;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6692 = x6691 + x6677;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6693 = x6692 + x6678;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6694 = x6693 + x6679;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6695 = x6694 + x6680;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6696 = x6695 + x6681;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6697 = x6696 + x6682;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6698 = x6697 + x6683;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6699 = x6698 + x6684;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x6700 = x6699 + x6685;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x6701 = x6623 - x6700;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x6702 = x6701 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x6703 = Fp(x6702.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][10 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x6703);
          reg = x6703;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x6704 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x6704 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x6705 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x6705 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6706 = args[2][26 * steps + ((cycle - 1) & mask)];
      assert(x6706 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6707 = args[2][27 * steps + ((cycle - 1) & mask)];
      assert(x6707 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6708 = args[2][28 * steps + ((cycle - 1) & mask)];
      assert(x6708 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6709 = args[2][29 * steps + ((cycle - 1) & mask)];
      assert(x6709 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6710 = args[2][30 * steps + ((cycle - 1) & mask)];
      assert(x6710 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6711 = args[2][31 * steps + ((cycle - 1) & mask)];
      assert(x6711 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6712 = args[2][32 * steps + ((cycle - 1) & mask)];
      assert(x6712 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6713 = args[2][33 * steps + ((cycle - 1) & mask)];
      assert(x6713 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6714 = args[2][34 * steps + ((cycle - 1) & mask)];
      assert(x6714 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6715 = args[2][35 * steps + ((cycle - 1) & mask)];
      assert(x6715 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6716 = args[2][36 * steps + ((cycle - 1) & mask)];
      assert(x6716 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6717 = args[2][37 * steps + ((cycle - 1) & mask)];
      assert(x6717 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6718 = args[2][38 * steps + ((cycle - 1) & mask)];
      assert(x6718 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6719 = args[2][39 * steps + ((cycle - 1) & mask)];
      assert(x6719 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6720 = args[2][40 * steps + ((cycle - 1) & mask)];
      assert(x6720 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6721 = args[2][41 * steps + ((cycle - 1) & mask)];
      assert(x6721 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6722 = args[2][42 * steps + ((cycle - 1) & mask)];
      assert(x6722 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6723 = args[2][43 * steps + ((cycle - 1) & mask)];
      assert(x6723 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6724 = args[2][44 * steps + ((cycle - 1) & mask)];
      assert(x6724 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6725 = args[2][45 * steps + ((cycle - 1) & mask)];
      assert(x6725 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6726 = args[2][46 * steps + ((cycle - 1) & mask)];
      assert(x6726 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6727 = args[2][47 * steps + ((cycle - 1) & mask)];
      assert(x6727 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6728 = args[2][48 * steps + ((cycle - 1) & mask)];
      assert(x6728 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6729 = args[2][49 * steps + ((cycle - 1) & mask)];
      assert(x6729 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6730 = args[2][50 * steps + ((cycle - 1) & mask)];
      assert(x6730 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6731 = args[2][51 * steps + ((cycle - 1) & mask)];
      assert(x6731 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6732 = args[2][52 * steps + ((cycle - 1) & mask)];
      assert(x6732 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6733 = args[2][53 * steps + ((cycle - 1) & mask)];
      assert(x6733 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6734 = args[2][54 * steps + ((cycle - 1) & mask)];
      assert(x6734 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6735 = args[2][55 * steps + ((cycle - 1) & mask)];
      assert(x6735 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6736 = args[2][56 * steps + ((cycle - 1) & mask)];
      assert(x6736 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6737 = args[2][57 * steps + ((cycle - 1) & mask)];
      assert(x6737 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6738 = args[2][60 * steps + ((cycle - 1) & mask)];
      assert(x6738 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6739 = args[2][61 * steps + ((cycle - 1) & mask)];
      assert(x6739 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6740 = args[2][62 * steps + ((cycle - 1) & mask)];
      assert(x6740 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6741 = args[2][63 * steps + ((cycle - 1) & mask)];
      assert(x6741 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6742 = args[2][64 * steps + ((cycle - 1) & mask)];
      assert(x6742 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6743 = args[2][65 * steps + ((cycle - 1) & mask)];
      assert(x6743 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6744 = args[2][66 * steps + ((cycle - 1) & mask)];
      assert(x6744 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6745 = args[2][67 * steps + ((cycle - 1) & mask)];
      assert(x6745 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6746 = args[2][68 * steps + ((cycle - 1) & mask)];
      assert(x6746 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6747 = args[2][69 * steps + ((cycle - 1) & mask)];
      assert(x6747 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6748 = args[2][70 * steps + ((cycle - 1) & mask)];
      assert(x6748 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6749 = args[2][71 * steps + ((cycle - 1) & mask)];
      assert(x6749 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6750 = args[2][72 * steps + ((cycle - 1) & mask)];
      assert(x6750 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6751 = args[2][73 * steps + ((cycle - 1) & mask)];
      assert(x6751 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6752 = args[2][74 * steps + ((cycle - 1) & mask)];
      assert(x6752 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6753 = args[2][75 * steps + ((cycle - 1) & mask)];
      assert(x6753 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6754 = args[2][76 * steps + ((cycle - 1) & mask)];
      assert(x6754 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6755 = args[2][77 * steps + ((cycle - 1) & mask)];
      assert(x6755 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6756 = args[2][78 * steps + ((cycle - 1) & mask)];
      assert(x6756 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6757 = args[2][79 * steps + ((cycle - 1) & mask)];
      assert(x6757 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6758 = args[2][80 * steps + ((cycle - 1) & mask)];
      assert(x6758 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6759 = args[2][81 * steps + ((cycle - 1) & mask)];
      assert(x6759 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6760 = args[2][82 * steps + ((cycle - 1) & mask)];
      assert(x6760 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6761 = args[2][83 * steps + ((cycle - 1) & mask)];
      assert(x6761 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6762 = args[2][84 * steps + ((cycle - 1) & mask)];
      assert(x6762 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6763 = args[2][85 * steps + ((cycle - 1) & mask)];
      assert(x6763 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6764 = args[2][86 * steps + ((cycle - 1) & mask)];
      assert(x6764 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6765 = args[2][87 * steps + ((cycle - 1) & mask)];
      assert(x6765 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6766 = args[2][88 * steps + ((cycle - 1) & mask)];
      assert(x6766 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6767 = args[2][89 * steps + ((cycle - 1) & mask)];
      assert(x6767 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6768 = args[2][90 * steps + ((cycle - 1) & mask)];
      assert(x6768 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6769 = args[2][91 * steps + ((cycle - 1) & mask)];
      assert(x6769 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6770 = args[2][60 * steps + ((cycle - 2) & mask)];
      assert(x6770 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6771 = args[2][61 * steps + ((cycle - 2) & mask)];
      assert(x6771 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6772 = args[2][62 * steps + ((cycle - 2) & mask)];
      assert(x6772 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6773 = args[2][63 * steps + ((cycle - 2) & mask)];
      assert(x6773 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6774 = args[2][64 * steps + ((cycle - 2) & mask)];
      assert(x6774 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6775 = args[2][65 * steps + ((cycle - 2) & mask)];
      assert(x6775 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6776 = args[2][66 * steps + ((cycle - 2) & mask)];
      assert(x6776 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6777 = args[2][67 * steps + ((cycle - 2) & mask)];
      assert(x6777 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6778 = args[2][68 * steps + ((cycle - 2) & mask)];
      assert(x6778 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6779 = args[2][69 * steps + ((cycle - 2) & mask)];
      assert(x6779 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6780 = args[2][70 * steps + ((cycle - 2) & mask)];
      assert(x6780 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6781 = args[2][71 * steps + ((cycle - 2) & mask)];
      assert(x6781 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6782 = args[2][72 * steps + ((cycle - 2) & mask)];
      assert(x6782 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6783 = args[2][73 * steps + ((cycle - 2) & mask)];
      assert(x6783 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6784 = args[2][74 * steps + ((cycle - 2) & mask)];
      assert(x6784 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6785 = args[2][75 * steps + ((cycle - 2) & mask)];
      assert(x6785 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6786 = args[2][76 * steps + ((cycle - 2) & mask)];
      assert(x6786 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6787 = args[2][77 * steps + ((cycle - 2) & mask)];
      assert(x6787 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6788 = args[2][78 * steps + ((cycle - 2) & mask)];
      assert(x6788 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6789 = args[2][79 * steps + ((cycle - 2) & mask)];
      assert(x6789 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6790 = args[2][80 * steps + ((cycle - 2) & mask)];
      assert(x6790 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6791 = args[2][81 * steps + ((cycle - 2) & mask)];
      assert(x6791 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6792 = args[2][82 * steps + ((cycle - 2) & mask)];
      assert(x6792 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6793 = args[2][83 * steps + ((cycle - 2) & mask)];
      assert(x6793 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6794 = args[2][84 * steps + ((cycle - 2) & mask)];
      assert(x6794 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6795 = args[2][85 * steps + ((cycle - 2) & mask)];
      assert(x6795 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6796 = args[2][86 * steps + ((cycle - 2) & mask)];
      assert(x6796 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6797 = args[2][87 * steps + ((cycle - 2) & mask)];
      assert(x6797 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6798 = args[2][88 * steps + ((cycle - 2) & mask)];
      assert(x6798 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6799 = args[2][89 * steps + ((cycle - 2) & mask)];
      assert(x6799 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6800 = args[2][90 * steps + ((cycle - 2) & mask)];
      assert(x6800 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6801 = args[2][91 * steps + ((cycle - 2) & mask)];
      assert(x6801 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6802 = args[2][26 * steps + ((cycle - 2) & mask)];
      assert(x6802 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6803 = args[2][27 * steps + ((cycle - 2) & mask)];
      assert(x6803 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6804 = args[2][28 * steps + ((cycle - 2) & mask)];
      assert(x6804 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6805 = args[2][29 * steps + ((cycle - 2) & mask)];
      assert(x6805 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6806 = args[2][30 * steps + ((cycle - 2) & mask)];
      assert(x6806 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6807 = args[2][31 * steps + ((cycle - 2) & mask)];
      assert(x6807 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6808 = args[2][32 * steps + ((cycle - 2) & mask)];
      assert(x6808 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6809 = args[2][33 * steps + ((cycle - 2) & mask)];
      assert(x6809 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6810 = args[2][34 * steps + ((cycle - 2) & mask)];
      assert(x6810 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6811 = args[2][35 * steps + ((cycle - 2) & mask)];
      assert(x6811 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6812 = args[2][36 * steps + ((cycle - 2) & mask)];
      assert(x6812 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6813 = args[2][37 * steps + ((cycle - 2) & mask)];
      assert(x6813 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6814 = args[2][38 * steps + ((cycle - 2) & mask)];
      assert(x6814 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6815 = args[2][39 * steps + ((cycle - 2) & mask)];
      assert(x6815 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6816 = args[2][40 * steps + ((cycle - 2) & mask)];
      assert(x6816 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6817 = args[2][41 * steps + ((cycle - 2) & mask)];
      assert(x6817 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6818 = args[2][42 * steps + ((cycle - 2) & mask)];
      assert(x6818 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6819 = args[2][43 * steps + ((cycle - 2) & mask)];
      assert(x6819 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6820 = args[2][44 * steps + ((cycle - 2) & mask)];
      assert(x6820 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6821 = args[2][45 * steps + ((cycle - 2) & mask)];
      assert(x6821 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6822 = args[2][46 * steps + ((cycle - 2) & mask)];
      assert(x6822 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6823 = args[2][47 * steps + ((cycle - 2) & mask)];
      assert(x6823 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6824 = args[2][48 * steps + ((cycle - 2) & mask)];
      assert(x6824 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6825 = args[2][49 * steps + ((cycle - 2) & mask)];
      assert(x6825 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6826 = args[2][50 * steps + ((cycle - 2) & mask)];
      assert(x6826 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6827 = args[2][51 * steps + ((cycle - 2) & mask)];
      assert(x6827 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6828 = args[2][52 * steps + ((cycle - 2) & mask)];
      assert(x6828 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6829 = args[2][53 * steps + ((cycle - 2) & mask)];
      assert(x6829 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6830 = args[2][54 * steps + ((cycle - 2) & mask)];
      assert(x6830 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6831 = args[2][55 * steps + ((cycle - 2) & mask)];
      assert(x6831 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6832 = args[2][56 * steps + ((cycle - 2) & mask)];
      assert(x6832 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6833 = args[2][57 * steps + ((cycle - 2) & mask)];
      assert(x6833 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6834 = args[2][60 * steps + ((cycle - 3) & mask)];
      assert(x6834 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6835 = args[2][61 * steps + ((cycle - 3) & mask)];
      assert(x6835 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6836 = args[2][62 * steps + ((cycle - 3) & mask)];
      assert(x6836 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6837 = args[2][63 * steps + ((cycle - 3) & mask)];
      assert(x6837 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6838 = args[2][64 * steps + ((cycle - 3) & mask)];
      assert(x6838 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6839 = args[2][65 * steps + ((cycle - 3) & mask)];
      assert(x6839 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6840 = args[2][66 * steps + ((cycle - 3) & mask)];
      assert(x6840 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6841 = args[2][67 * steps + ((cycle - 3) & mask)];
      assert(x6841 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6842 = args[2][68 * steps + ((cycle - 3) & mask)];
      assert(x6842 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6843 = args[2][69 * steps + ((cycle - 3) & mask)];
      assert(x6843 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6844 = args[2][70 * steps + ((cycle - 3) & mask)];
      assert(x6844 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6845 = args[2][71 * steps + ((cycle - 3) & mask)];
      assert(x6845 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6846 = args[2][72 * steps + ((cycle - 3) & mask)];
      assert(x6846 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6847 = args[2][73 * steps + ((cycle - 3) & mask)];
      assert(x6847 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6848 = args[2][74 * steps + ((cycle - 3) & mask)];
      assert(x6848 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6849 = args[2][75 * steps + ((cycle - 3) & mask)];
      assert(x6849 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6850 = args[2][76 * steps + ((cycle - 3) & mask)];
      assert(x6850 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6851 = args[2][77 * steps + ((cycle - 3) & mask)];
      assert(x6851 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6852 = args[2][78 * steps + ((cycle - 3) & mask)];
      assert(x6852 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6853 = args[2][79 * steps + ((cycle - 3) & mask)];
      assert(x6853 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6854 = args[2][80 * steps + ((cycle - 3) & mask)];
      assert(x6854 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6855 = args[2][81 * steps + ((cycle - 3) & mask)];
      assert(x6855 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6856 = args[2][82 * steps + ((cycle - 3) & mask)];
      assert(x6856 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6857 = args[2][83 * steps + ((cycle - 3) & mask)];
      assert(x6857 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6858 = args[2][84 * steps + ((cycle - 3) & mask)];
      assert(x6858 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6859 = args[2][85 * steps + ((cycle - 3) & mask)];
      assert(x6859 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6860 = args[2][86 * steps + ((cycle - 3) & mask)];
      assert(x6860 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6861 = args[2][87 * steps + ((cycle - 3) & mask)];
      assert(x6861 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6862 = args[2][88 * steps + ((cycle - 3) & mask)];
      assert(x6862 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6863 = args[2][89 * steps + ((cycle - 3) & mask)];
      assert(x6863 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6864 = args[2][90 * steps + ((cycle - 3) & mask)];
      assert(x6864 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6865 = args[2][91 * steps + ((cycle - 3) & mask)];
      assert(x6865 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6866 = args[2][26 * steps + ((cycle - 3) & mask)];
      assert(x6866 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6867 = args[2][27 * steps + ((cycle - 3) & mask)];
      assert(x6867 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6868 = args[2][28 * steps + ((cycle - 3) & mask)];
      assert(x6868 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6869 = args[2][29 * steps + ((cycle - 3) & mask)];
      assert(x6869 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6870 = args[2][30 * steps + ((cycle - 3) & mask)];
      assert(x6870 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6871 = args[2][31 * steps + ((cycle - 3) & mask)];
      assert(x6871 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6872 = args[2][32 * steps + ((cycle - 3) & mask)];
      assert(x6872 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6873 = args[2][33 * steps + ((cycle - 3) & mask)];
      assert(x6873 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6874 = args[2][34 * steps + ((cycle - 3) & mask)];
      assert(x6874 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6875 = args[2][35 * steps + ((cycle - 3) & mask)];
      assert(x6875 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6876 = args[2][36 * steps + ((cycle - 3) & mask)];
      assert(x6876 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6877 = args[2][37 * steps + ((cycle - 3) & mask)];
      assert(x6877 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6878 = args[2][38 * steps + ((cycle - 3) & mask)];
      assert(x6878 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6879 = args[2][39 * steps + ((cycle - 3) & mask)];
      assert(x6879 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6880 = args[2][40 * steps + ((cycle - 3) & mask)];
      assert(x6880 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6881 = args[2][41 * steps + ((cycle - 3) & mask)];
      assert(x6881 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6882 = args[2][42 * steps + ((cycle - 3) & mask)];
      assert(x6882 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6883 = args[2][43 * steps + ((cycle - 3) & mask)];
      assert(x6883 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6884 = args[2][44 * steps + ((cycle - 3) & mask)];
      assert(x6884 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6885 = args[2][45 * steps + ((cycle - 3) & mask)];
      assert(x6885 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6886 = args[2][46 * steps + ((cycle - 3) & mask)];
      assert(x6886 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6887 = args[2][47 * steps + ((cycle - 3) & mask)];
      assert(x6887 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6888 = args[2][48 * steps + ((cycle - 3) & mask)];
      assert(x6888 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6889 = args[2][49 * steps + ((cycle - 3) & mask)];
      assert(x6889 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6890 = args[2][50 * steps + ((cycle - 3) & mask)];
      assert(x6890 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6891 = args[2][51 * steps + ((cycle - 3) & mask)];
      assert(x6891 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6892 = args[2][52 * steps + ((cycle - 3) & mask)];
      assert(x6892 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6893 = args[2][53 * steps + ((cycle - 3) & mask)];
      assert(x6893 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6894 = args[2][54 * steps + ((cycle - 3) & mask)];
      assert(x6894 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6895 = args[2][55 * steps + ((cycle - 3) & mask)];
      assert(x6895 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6896 = args[2][56 * steps + ((cycle - 3) & mask)];
      assert(x6896 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6897 = args[2][57 * steps + ((cycle - 3) & mask)];
      assert(x6897 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6898 = args[2][26 * steps + ((cycle - 4) & mask)];
      assert(x6898 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6899 = args[2][27 * steps + ((cycle - 4) & mask)];
      assert(x6899 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6900 = args[2][28 * steps + ((cycle - 4) & mask)];
      assert(x6900 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6901 = args[2][29 * steps + ((cycle - 4) & mask)];
      assert(x6901 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6902 = args[2][30 * steps + ((cycle - 4) & mask)];
      assert(x6902 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6903 = args[2][31 * steps + ((cycle - 4) & mask)];
      assert(x6903 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6904 = args[2][32 * steps + ((cycle - 4) & mask)];
      assert(x6904 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6905 = args[2][33 * steps + ((cycle - 4) & mask)];
      assert(x6905 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6906 = args[2][34 * steps + ((cycle - 4) & mask)];
      assert(x6906 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6907 = args[2][35 * steps + ((cycle - 4) & mask)];
      assert(x6907 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6908 = args[2][36 * steps + ((cycle - 4) & mask)];
      assert(x6908 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6909 = args[2][37 * steps + ((cycle - 4) & mask)];
      assert(x6909 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6910 = args[2][38 * steps + ((cycle - 4) & mask)];
      assert(x6910 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6911 = args[2][39 * steps + ((cycle - 4) & mask)];
      assert(x6911 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6912 = args[2][40 * steps + ((cycle - 4) & mask)];
      assert(x6912 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6913 = args[2][41 * steps + ((cycle - 4) & mask)];
      assert(x6913 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6914 = args[2][42 * steps + ((cycle - 4) & mask)];
      assert(x6914 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6915 = args[2][43 * steps + ((cycle - 4) & mask)];
      assert(x6915 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6916 = args[2][44 * steps + ((cycle - 4) & mask)];
      assert(x6916 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6917 = args[2][45 * steps + ((cycle - 4) & mask)];
      assert(x6917 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6918 = args[2][46 * steps + ((cycle - 4) & mask)];
      assert(x6918 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6919 = args[2][47 * steps + ((cycle - 4) & mask)];
      assert(x6919 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6920 = args[2][48 * steps + ((cycle - 4) & mask)];
      assert(x6920 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6921 = args[2][49 * steps + ((cycle - 4) & mask)];
      assert(x6921 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6922 = args[2][50 * steps + ((cycle - 4) & mask)];
      assert(x6922 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6923 = args[2][51 * steps + ((cycle - 4) & mask)];
      assert(x6923 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6924 = args[2][52 * steps + ((cycle - 4) & mask)];
      assert(x6924 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6925 = args[2][53 * steps + ((cycle - 4) & mask)];
      assert(x6925 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6926 = args[2][54 * steps + ((cycle - 4) & mask)];
      assert(x6926 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6927 = args[2][55 * steps + ((cycle - 4) & mask)];
      assert(x6927 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6928 = args[2][56 * steps + ((cycle - 4) & mask)];
      assert(x6928 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6929 = args[2][57 * steps + ((cycle - 4) & mask)];
      assert(x6929 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6930 = args[2][60 * steps + ((cycle - 4) & mask)];
      assert(x6930 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6931 = args[2][61 * steps + ((cycle - 4) & mask)];
      assert(x6931 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6932 = args[2][62 * steps + ((cycle - 4) & mask)];
      assert(x6932 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6933 = args[2][63 * steps + ((cycle - 4) & mask)];
      assert(x6933 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6934 = args[2][64 * steps + ((cycle - 4) & mask)];
      assert(x6934 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6935 = args[2][65 * steps + ((cycle - 4) & mask)];
      assert(x6935 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6936 = args[2][66 * steps + ((cycle - 4) & mask)];
      assert(x6936 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6937 = args[2][67 * steps + ((cycle - 4) & mask)];
      assert(x6937 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6938 = args[2][68 * steps + ((cycle - 4) & mask)];
      assert(x6938 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6939 = args[2][69 * steps + ((cycle - 4) & mask)];
      assert(x6939 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6940 = args[2][70 * steps + ((cycle - 4) & mask)];
      assert(x6940 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6941 = args[2][71 * steps + ((cycle - 4) & mask)];
      assert(x6941 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6942 = args[2][72 * steps + ((cycle - 4) & mask)];
      assert(x6942 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6943 = args[2][73 * steps + ((cycle - 4) & mask)];
      assert(x6943 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6944 = args[2][74 * steps + ((cycle - 4) & mask)];
      assert(x6944 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6945 = args[2][75 * steps + ((cycle - 4) & mask)];
      assert(x6945 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6946 = args[2][76 * steps + ((cycle - 4) & mask)];
      assert(x6946 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6947 = args[2][77 * steps + ((cycle - 4) & mask)];
      assert(x6947 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6948 = args[2][78 * steps + ((cycle - 4) & mask)];
      assert(x6948 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6949 = args[2][79 * steps + ((cycle - 4) & mask)];
      assert(x6949 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6950 = args[2][80 * steps + ((cycle - 4) & mask)];
      assert(x6950 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6951 = args[2][81 * steps + ((cycle - 4) & mask)];
      assert(x6951 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6952 = args[2][82 * steps + ((cycle - 4) & mask)];
      assert(x6952 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6953 = args[2][83 * steps + ((cycle - 4) & mask)];
      assert(x6953 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6954 = args[2][84 * steps + ((cycle - 4) & mask)];
      assert(x6954 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6955 = args[2][85 * steps + ((cycle - 4) & mask)];
      assert(x6955 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6956 = args[2][86 * steps + ((cycle - 4) & mask)];
      assert(x6956 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6957 = args[2][87 * steps + ((cycle - 4) & mask)];
      assert(x6957 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6958 = args[2][88 * steps + ((cycle - 4) & mask)];
      assert(x6958 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6959 = args[2][89 * steps + ((cycle - 4) & mask)];
      assert(x6959 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6960 = args[2][90 * steps + ((cycle - 4) & mask)];
      assert(x6960 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x6961 = args[2][91 * steps + ((cycle - 4) & mask)];
      assert(x6961 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6962 = x6706 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6963 = x6706 * x6802;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6964 = x6707 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6965 = x6707 * x6803;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6966 = x6708 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6967 = x6708 * x6804;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6968 = x6709 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6969 = x6709 * x6805;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6970 = x6710 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6971 = x6710 * x6806;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6972 = x6711 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6973 = x6711 * x6807;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6974 = x6712 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6975 = x6712 * x6808;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6976 = x6713 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6977 = x6713 * x6809;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6978 = x6714 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6979 = x6714 * x6810;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6980 = x6715 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6981 = x6715 * x6811;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6982 = x6716 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6983 = x6716 * x6812;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6984 = x6717 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6985 = x6717 * x6813;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6986 = x6718 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6987 = x6718 * x6814;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6988 = x6719 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6989 = x6719 * x6815;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6990 = x6720 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6991 = x6720 * x6816;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6992 = x6721 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6993 = x6721 * x6817;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6994 = x6722 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6995 = x6722 * x6818;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6996 = x6723 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6997 = x6723 * x6819;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x6998 = x6724 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x6999 = x6724 * x6820;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7000 = x6725 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7001 = x6725 * x6821;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7002 = x6726 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7003 = x6726 * x6822;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7004 = x6727 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7005 = x6727 * x6823;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7006 = x6728 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7007 = x6728 * x6824;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7008 = x6729 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7009 = x6729 * x6825;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7010 = x6730 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7011 = x6730 * x6826;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7012 = x6731 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7013 = x6731 * x6827;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7014 = x6732 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7015 = x6732 * x6828;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7016 = x6733 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7017 = x6733 * x6829;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7018 = x6734 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7019 = x6734 * x6830;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7020 = x6735 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7021 = x6735 * x6831;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7022 = x6736 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7023 = x6736 * x6832;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7024 = x6737 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7025 = x6737 * x6833;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7026 = x6738 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7027 = x6738 * x6770;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7028 = x6739 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7029 = x6739 * x6771;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7030 = x6740 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7031 = x6740 * x6772;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7032 = x6741 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7033 = x6741 * x6773;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7034 = x6742 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7035 = x6742 * x6774;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7036 = x6743 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7037 = x6743 * x6775;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7038 = x6744 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7039 = x6744 * x6776;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7040 = x6745 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7041 = x6745 * x6777;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7042 = x6746 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7043 = x6746 * x6778;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7044 = x6747 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7045 = x6747 * x6779;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7046 = x6748 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7047 = x6748 * x6780;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7048 = x6749 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7049 = x6749 * x6781;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7050 = x6750 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7051 = x6750 * x6782;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7052 = x6751 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7053 = x6751 * x6783;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7054 = x6752 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7055 = x6752 * x6784;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7056 = x6753 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7057 = x6753 * x6785;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7058 = x6754 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7059 = x6754 * x6786;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7060 = x6755 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7061 = x6755 * x6787;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7062 = x6756 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7063 = x6756 * x6788;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7064 = x6757 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7065 = x6757 * x6789;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7066 = x6758 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7067 = x6758 * x6790;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7068 = x6759 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7069 = x6759 * x6791;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7070 = x6760 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7071 = x6760 * x6792;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7072 = x6761 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7073 = x6761 * x6793;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7074 = x6762 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7075 = x6762 * x6794;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7076 = x6763 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7077 = x6763 * x6795;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7078 = x6764 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7079 = x6764 * x6796;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7080 = x6765 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7081 = x6765 * x6797;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7082 = x6766 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7083 = x6766 * x6798;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7084 = x6767 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7085 = x6767 * x6799;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7086 = x6768 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7087 = x6768 * x6800;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7088 = x6769 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7089 = x6769 * x6801;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7090 = x6899 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7091 = x6900 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7092 = x6901 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7093 = x6902 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7094 = x6903 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7095 = x6904 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7096 = x6905 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7097 = x6906 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7098 = x6907 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7099 = x6908 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7100 = x6909 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7101 = x6910 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7102 = x6911 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7103 = x6912 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7104 = x6913 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7105 = x6915 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7106 = x6916 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7107 = x6917 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7108 = x6918 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7109 = x6919 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7110 = x6920 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7111 = x6921 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7112 = x6922 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7113 = x6923 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7114 = x6924 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7115 = x6925 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7116 = x6926 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7117 = x6927 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7118 = x6928 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7119 = x6929 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7120 = x6931 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7121 = x6932 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7122 = x6933 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7123 = x6934 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7124 = x6935 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7125 = x6936 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7126 = x6937 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7127 = x6938 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7128 = x6939 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7129 = x6940 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7130 = x6941 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7131 = x6942 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7132 = x6943 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7133 = x6944 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7134 = x6945 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7135 = x6947 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7136 = x6948 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7137 = x6949 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7138 = x6950 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7139 = x6951 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7140 = x6952 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7141 = x6953 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7142 = x6954 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7143 = x6955 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7144 = x6956 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7145 = x6957 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7146 = x6958 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7147 = x6959 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7148 = x6960 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7149 = x6961 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7150 = x6962 * x6715;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7151 = x6963 * x6866;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7152 = x6964 * x6716;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7153 = x6965 * x6867;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7154 = x6966 * x6717;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7155 = x6967 * x6868;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7156 = x6968 * x6718;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7157 = x6969 * x6869;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7158 = x6970 * x6719;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7159 = x6971 * x6870;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7160 = x6972 * x6720;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7161 = x6973 * x6871;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7162 = x6974 * x6721;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7163 = x6975 * x6872;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7164 = x6976 * x6722;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7165 = x6977 * x6873;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7166 = x6978 * x6723;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7167 = x6979 * x6874;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7168 = x6980 * x6724;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7169 = x6981 * x6875;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7170 = x6982 * x6725;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7171 = x6983 * x6876;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7172 = x6984 * x6726;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7173 = x6985 * x6877;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7174 = x6986 * x6727;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7175 = x6987 * x6878;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7176 = x6988 * x6728;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7177 = x6989 * x6879;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7178 = x6990 * x6729;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7179 = x6991 * x6880;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7180 = x6992 * x6730;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7181 = x6993 * x6881;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7182 = x6994 * x6731;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7183 = x6995 * x6882;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7184 = x6996 * x6732;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7185 = x6997 * x6883;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7186 = x6998 * x6733;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7187 = x6999 * x6884;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7188 = x7000 * x6734;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7189 = x7001 * x6885;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7190 = x7002 * x6735;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7191 = x7003 * x6886;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7192 = x7004 * x6736;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7193 = x7005 * x6887;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7194 = x7006 * x6737;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7195 = x7007 * x6888;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7196 = x7008 * x6706;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7197 = x7009 * x6889;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7198 = x7010 * x6707;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7199 = x7011 * x6890;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7200 = x7012 * x6708;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7201 = x7013 * x6891;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7202 = x7014 * x6709;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7203 = x7015 * x6892;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7204 = x7016 * x6710;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7205 = x7017 * x6893;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7206 = x7018 * x6711;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7207 = x7019 * x6894;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7208 = x7020 * x6712;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7209 = x7021 * x6895;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7210 = x7022 * x6713;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7211 = x7023 * x6896;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7212 = x7024 * x6714;
      // loc("zirgen/circuit/recursion/sha.cpp":56:14)
      auto x7213 = x7025 * x6897;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7214 = x7026 * x6752;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7215 = x7028 * x6753;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7216 = x7030 * x6754;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7217 = x7032 * x6755;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7218 = x7034 * x6756;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7219 = x7036 * x6757;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7220 = x7038 * x6758;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7221 = x7040 * x6759;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7222 = x7042 * x6760;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7223 = x7044 * x6761;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7224 = x7046 * x6762;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7225 = x7048 * x6763;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7226 = x7050 * x6764;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7227 = x7052 * x6765;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7228 = x7054 * x6766;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7229 = x7056 * x6767;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7230 = x7058 * x6768;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7231 = x7060 * x6769;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7232 = x7062 * x6738;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7233 = x7064 * x6739;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7234 = x7066 * x6740;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7235 = x7068 * x6741;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7236 = x7070 * x6742;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7237 = x7072 * x6743;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7238 = x7074 * x6744;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7239 = x7076 * x6745;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7240 = x7078 * x6746;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7241 = x7080 * x6747;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7242 = x7082 * x6748;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7243 = x7084 * x6749;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7244 = x7086 * x6750;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7245 = x7088 * x6751;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7246 = x310 - x6706;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7247 = x310 - x6707;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7248 = x310 - x6708;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7249 = x310 - x6709;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7250 = x310 - x6710;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7251 = x310 - x6711;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7252 = x310 - x6712;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7253 = x310 - x6713;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7254 = x310 - x6714;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7255 = x310 - x6715;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7256 = x310 - x6716;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7257 = x310 - x6717;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7258 = x310 - x6718;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7259 = x310 - x6719;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7260 = x310 - x6720;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7261 = x310 - x6721;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7262 = x310 - x6722;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7263 = x310 - x6723;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7264 = x310 - x6724;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7265 = x310 - x6725;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7266 = x310 - x6726;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7267 = x310 - x6727;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7268 = x310 - x6728;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7269 = x310 - x6729;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7270 = x310 - x6730;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7271 = x310 - x6731;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7272 = x310 - x6732;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7273 = x310 - x6733;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7274 = x310 - x6734;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7275 = x310 - x6735;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7276 = x310 - x6736;
      // loc("zirgen/circuit/recursion/sha.cpp":55:69)
      auto x7277 = x310 - x6737;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7278 = x310 - x6738;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7279 = x310 - x6739;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7280 = x310 - x6740;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7281 = x310 - x6741;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7282 = x310 - x6742;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7283 = x310 - x6743;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7284 = x310 - x6744;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7285 = x310 - x6745;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7286 = x310 - x6746;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7287 = x310 - x6747;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7288 = x310 - x6748;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7289 = x310 - x6749;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7290 = x310 - x6750;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7291 = x310 - x6751;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7292 = x310 - x6752;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7293 = x310 - x6753;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7294 = x310 - x6754;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7295 = x310 - x6755;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7296 = x310 - x6756;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7297 = x310 - x6757;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7298 = x310 - x6758;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7299 = x310 - x6759;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7300 = x310 - x6760;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7301 = x310 - x6761;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7302 = x310 - x6762;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7303 = x310 - x6763;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7304 = x310 - x6764;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7305 = x310 - x6765;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7306 = x310 - x6766;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7307 = x310 - x6767;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7308 = x310 - x6768;
      // loc("zirgen/circuit/recursion/sha.cpp":64:29)
      auto x7309 = x310 - x6769;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7310 = x310 - x6802;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7311 = x310 - x6803;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7312 = x310 - x6804;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7313 = x310 - x6805;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7314 = x310 - x6806;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7315 = x310 - x6807;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7316 = x310 - x6808;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7317 = x310 - x6809;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7318 = x310 - x6810;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7319 = x310 - x6811;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7320 = x310 - x6812;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7321 = x310 - x6813;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7322 = x310 - x6814;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7323 = x310 - x6815;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7324 = x310 - x6816;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7325 = x310 - x6817;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7326 = x310 - x6818;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7327 = x310 - x6819;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7328 = x310 - x6820;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7329 = x310 - x6821;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7330 = x310 - x6822;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7331 = x310 - x6823;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7332 = x310 - x6824;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7333 = x310 - x6825;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7334 = x310 - x6826;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7335 = x310 - x6827;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7336 = x310 - x6828;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7337 = x310 - x6829;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7338 = x310 - x6830;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7339 = x310 - x6831;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7340 = x310 - x6832;
      // loc("zirgen/circuit/recursion/sha.cpp":55:49)
      auto x7341 = x310 - x6833;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7342 = x310 - x6866;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7343 = x310 - x6867;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7344 = x310 - x6868;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7345 = x310 - x6869;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7346 = x310 - x6870;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7347 = x310 - x6871;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7348 = x310 - x6872;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7349 = x310 - x6873;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7350 = x310 - x6874;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7351 = x310 - x6875;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7352 = x310 - x6876;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7353 = x310 - x6877;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7354 = x310 - x6878;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7355 = x310 - x6879;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7356 = x310 - x6880;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7357 = x310 - x6881;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7358 = x310 - x6882;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7359 = x310 - x6883;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7360 = x310 - x6884;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7361 = x310 - x6885;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7362 = x310 - x6886;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7363 = x310 - x6887;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7364 = x310 - x6888;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7365 = x310 - x6889;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7366 = x310 - x6890;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7367 = x310 - x6891;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7368 = x310 - x6892;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7369 = x310 - x6893;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7370 = x310 - x6894;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7371 = x310 - x6895;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7372 = x310 - x6896;
      // loc("zirgen/circuit/recursion/sha.cpp":55:29)
      auto x7373 = x310 - x6897;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7374 = x6706 + x6715;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7375 = x6707 + x6716;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7376 = x6708 + x6717;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7377 = x6709 + x6718;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7378 = x6710 + x6719;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7379 = x6711 + x6720;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7380 = x6712 + x6721;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7381 = x6713 + x6722;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7382 = x6714 + x6723;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7383 = x6715 + x6724;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7384 = x6716 + x6725;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7385 = x6717 + x6726;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7386 = x6718 + x6727;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7387 = x6719 + x6728;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7388 = x6720 + x6729;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7389 = x6721 + x6730;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7390 = x6722 + x6731;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7391 = x6723 + x6732;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7392 = x6724 + x6733;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7393 = x6725 + x6734;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7394 = x6726 + x6735;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7395 = x6727 + x6736;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7396 = x6728 + x6737;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7397 = x6729 + x6706;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7398 = x6730 + x6707;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7399 = x6731 + x6708;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7400 = x6732 + x6709;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7401 = x6733 + x6710;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7402 = x6734 + x6711;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7403 = x6735 + x6712;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7404 = x6736 + x6713;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7405 = x6737 + x6714;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7406 = x6738 + x6752;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7407 = x6739 + x6753;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7408 = x6740 + x6754;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7409 = x6741 + x6755;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7410 = x6742 + x6756;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7411 = x6743 + x6757;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7412 = x6744 + x6758;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7413 = x6745 + x6759;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7414 = x6746 + x6760;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7415 = x6747 + x6761;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7416 = x6748 + x6762;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7417 = x6749 + x6763;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7418 = x6750 + x6764;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7419 = x6751 + x6765;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7420 = x6752 + x6766;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7421 = x6753 + x6767;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7422 = x6754 + x6768;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7423 = x6755 + x6769;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7424 = x6756 + x6738;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7425 = x6757 + x6739;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7426 = x6758 + x6740;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7427 = x6759 + x6741;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7428 = x6760 + x6742;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7429 = x6761 + x6743;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7430 = x6762 + x6744;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7431 = x6763 + x6745;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7432 = x6764 + x6746;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7433 = x6765 + x6747;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7434 = x6766 + x6748;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7435 = x6767 + x6749;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7436 = x6768 + x6750;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7437 = x6769 + x6751;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7438 = x6706 * x7310;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7439 = x6707 * x7311;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7440 = x6708 * x7312;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7441 = x6709 * x7313;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7442 = x6710 * x7314;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7443 = x6711 * x7315;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7444 = x6712 * x7316;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7445 = x6713 * x7317;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7446 = x6714 * x7318;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7447 = x6715 * x7319;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7448 = x6716 * x7320;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7449 = x6717 * x7321;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7450 = x6718 * x7322;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7451 = x6719 * x7323;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7452 = x6720 * x7324;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7453 = x6721 * x7325;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7454 = x6722 * x7326;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7455 = x6723 * x7327;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7456 = x6724 * x7328;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7457 = x6725 * x7329;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7458 = x6726 * x7330;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7459 = x6727 * x7331;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7460 = x6728 * x7332;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7461 = x6729 * x7333;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7462 = x6730 * x7334;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7463 = x6731 * x7335;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7464 = x6732 * x7336;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7465 = x6733 * x7337;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7466 = x6734 * x7338;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7467 = x6735 * x7339;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7468 = x6736 * x7340;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7469 = x6737 * x7341;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7470 = x6963 * x7342;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7471 = x6965 * x7343;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7472 = x6967 * x7344;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7473 = x6969 * x7345;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7474 = x6971 * x7346;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7475 = x6973 * x7347;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7476 = x6975 * x7348;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7477 = x6977 * x7349;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7478 = x6979 * x7350;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7479 = x6981 * x7351;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7480 = x6983 * x7352;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7481 = x6985 * x7353;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7482 = x6987 * x7354;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7483 = x6989 * x7355;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7484 = x6991 * x7356;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7485 = x6993 * x7357;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7486 = x6995 * x7358;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7487 = x6997 * x7359;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7488 = x6999 * x7360;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7489 = x7001 * x7361;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7490 = x7003 * x7362;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7491 = x7005 * x7363;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7492 = x7007 * x7364;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7493 = x7009 * x7365;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7494 = x7011 * x7366;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7495 = x7013 * x7367;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7496 = x7015 * x7368;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7497 = x7017 * x7369;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7498 = x7019 * x7370;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7499 = x7021 * x7371;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7500 = x7023 * x7372;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7501 = x7025 * x7373;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7502 = x7246 * x6802;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7503 = x7247 * x6803;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7504 = x7248 * x6804;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7505 = x7249 * x6805;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7506 = x7250 * x6806;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7507 = x7251 * x6807;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7508 = x7252 * x6808;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7509 = x7253 * x6809;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7510 = x7254 * x6810;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7511 = x7255 * x6811;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7512 = x7256 * x6812;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7513 = x7257 * x6813;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7514 = x7258 * x6814;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7515 = x7259 * x6815;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7516 = x7260 * x6816;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7517 = x7261 * x6817;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7518 = x7262 * x6818;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7519 = x7263 * x6819;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7520 = x7264 * x6820;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7521 = x7265 * x6821;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7522 = x7266 * x6822;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7523 = x7267 * x6823;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7524 = x7268 * x6824;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7525 = x7269 * x6825;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7526 = x7270 * x6826;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7527 = x7271 * x6827;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7528 = x7272 * x6828;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7529 = x7273 * x6829;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7530 = x7274 * x6830;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7531 = x7275 * x6831;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7532 = x7276 * x6832;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7533 = x7277 * x6833;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7534 = x7438 * x6866;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7535 = x7439 * x6867;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7536 = x7440 * x6868;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7537 = x7441 * x6869;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7538 = x7442 * x6870;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7539 = x7443 * x6871;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7540 = x7444 * x6872;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7541 = x7445 * x6873;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7542 = x7446 * x6874;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7543 = x7447 * x6875;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7544 = x7448 * x6876;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7545 = x7449 * x6877;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7546 = x7450 * x6878;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7547 = x7451 * x6879;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7548 = x7452 * x6880;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7549 = x7453 * x6881;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7550 = x7454 * x6882;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7551 = x7455 * x6883;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7552 = x7456 * x6884;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7553 = x7457 * x6885;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7554 = x7458 * x6886;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7555 = x7459 * x6887;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7556 = x7460 * x6888;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7557 = x7461 * x6889;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7558 = x7462 * x6890;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7559 = x7463 * x6891;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7560 = x7464 * x6892;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7561 = x7465 * x6893;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7562 = x7466 * x6894;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7563 = x7467 * x6895;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7564 = x7468 * x6896;
      // loc("zirgen/circuit/recursion/sha.cpp":55:41)
      auto x7565 = x7469 * x6897;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7566 = x7502 * x6866;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7567 = x7503 * x6867;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7568 = x7504 * x6868;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7569 = x7505 * x6869;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7570 = x7506 * x6870;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7571 = x7507 * x6871;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7572 = x7508 * x6872;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7573 = x7509 * x6873;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7574 = x7510 * x6874;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7575 = x7511 * x6875;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7576 = x7512 * x6876;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7577 = x7513 * x6877;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7578 = x7514 * x6878;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7579 = x7515 * x6879;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7580 = x7516 * x6880;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7581 = x7517 * x6881;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7582 = x7518 * x6882;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7583 = x7519 * x6883;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7584 = x7520 * x6884;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7585 = x7521 * x6885;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7586 = x7522 * x6886;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7587 = x7523 * x6887;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7588 = x7524 * x6888;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7589 = x7525 * x6889;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7590 = x7526 * x6890;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7591 = x7527 * x6891;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7592 = x7528 * x6892;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7593 = x7529 * x6893;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7594 = x7530 * x6894;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7595 = x7531 * x6895;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7596 = x7532 * x6896;
      // loc("zirgen/circuit/recursion/sha.cpp":55:68)
      auto x7597 = x7533 * x6897;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7598 = x7278 * x6834;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7599 = x7279 * x6835;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7600 = x7280 * x6836;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7601 = x7281 * x6837;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7602 = x7282 * x6838;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7603 = x7283 * x6839;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7604 = x7284 * x6840;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7605 = x7285 * x6841;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7606 = x7286 * x6842;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7607 = x7287 * x6843;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7608 = x7288 * x6844;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7609 = x7289 * x6845;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7610 = x7290 * x6846;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7611 = x7291 * x6847;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7612 = x7292 * x6848;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7613 = x7293 * x6849;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7614 = x7294 * x6850;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7615 = x7295 * x6851;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7616 = x7296 * x6852;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7617 = x7297 * x6853;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7618 = x7298 * x6854;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7619 = x7299 * x6855;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7620 = x7300 * x6856;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7621 = x7301 * x6857;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7622 = x7302 * x6858;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7623 = x7303 * x6859;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7624 = x7304 * x6860;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7625 = x7305 * x6861;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7626 = x7306 * x6862;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7627 = x7307 * x6863;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7628 = x7308 * x6864;
      // loc("zirgen/circuit/recursion/sha.cpp":64:28)
      auto x7629 = x7309 * x6865;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7630 = x7374 - x7150;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7631 = x7375 - x7152;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7632 = x7376 - x7154;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7633 = x7377 - x7156;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7634 = x7378 - x7158;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7635 = x7379 - x7160;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7636 = x7380 - x7162;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7637 = x7381 - x7164;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7638 = x7382 - x7166;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7639 = x7383 - x7168;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7640 = x7384 - x7170;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7641 = x7385 - x7172;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7642 = x7386 - x7174;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7643 = x7387 - x7176;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7644 = x7388 - x7178;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7645 = x7389 - x7180;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7646 = x7390 - x7182;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7647 = x7391 - x7184;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7648 = x7392 - x7186;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7649 = x7393 - x7188;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7650 = x7394 - x7190;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7651 = x7395 - x7192;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7652 = x7396 - x7194;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7653 = x7397 - x7196;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7654 = x7398 - x7198;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7655 = x7399 - x7200;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7656 = x7400 - x7202;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7657 = x7401 - x7204;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7658 = x7402 - x7206;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7659 = x7403 - x7208;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7660 = x7404 - x7210;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7661 = x7405 - x7212;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7662 = x7406 - x7214;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7663 = x7407 - x7215;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7664 = x7408 - x7216;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7665 = x7409 - x7217;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7666 = x7410 - x7218;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7667 = x7411 - x7219;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7668 = x7412 - x7220;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7669 = x7413 - x7221;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7670 = x7414 - x7222;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7671 = x7415 - x7223;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7672 = x7416 - x7224;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7673 = x7417 - x7225;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7674 = x7418 - x7226;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7675 = x7419 - x7227;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7676 = x7420 - x7228;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7677 = x7421 - x7229;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7678 = x7422 - x7230;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7679 = x7423 - x7231;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7680 = x7424 - x7232;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7681 = x7425 - x7233;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7682 = x7426 - x7234;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7683 = x7427 - x7235;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7684 = x7428 - x7236;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7685 = x7429 - x7237;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7686 = x7430 - x7238;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7687 = x7431 - x7239;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7688 = x7432 - x7240;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7689 = x7433 - x7241;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7690 = x7434 - x7242;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7691 = x7435 - x7243;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7692 = x7436 - x7244;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7693 = x7437 - x7245;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x7694 = x6898 + x7090;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x7695 = x6914 + x7105;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x7696 = x6930 + x7120;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x7697 = x6946 + x7135;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7698 = x6706 + x7641;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7699 = x6707 + x7642;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7700 = x6708 + x7643;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7701 = x6709 + x7644;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7702 = x6710 + x7645;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7703 = x6711 + x7646;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7704 = x6712 + x7647;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7705 = x6713 + x7648;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7706 = x6714 + x7649;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7707 = x6715 + x7650;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7708 = x6716 + x7651;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7709 = x6717 + x7652;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7710 = x6718 + x7653;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7711 = x6719 + x7654;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7712 = x6720 + x7655;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7713 = x6721 + x7656;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7714 = x6722 + x7657;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7715 = x6723 + x7658;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7716 = x6724 + x7659;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7717 = x6725 + x7660;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7718 = x6726 + x7661;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7719 = x6727 + x7630;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7720 = x6728 + x7631;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7721 = x6729 + x7632;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7722 = x6730 + x7633;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7723 = x6731 + x7634;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7724 = x6732 + x7635;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7725 = x6733 + x7636;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7726 = x6734 + x7637;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7727 = x6735 + x7638;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7728 = x6736 + x7639;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7729 = x6737 + x7640;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7730 = x6738 + x7667;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7731 = x6739 + x7668;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7732 = x6740 + x7669;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7733 = x6741 + x7670;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7734 = x6742 + x7671;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7735 = x6743 + x7672;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7736 = x6744 + x7673;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7737 = x6745 + x7674;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7738 = x6746 + x7675;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7739 = x6747 + x7676;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7740 = x6748 + x7677;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7741 = x6749 + x7678;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7742 = x6750 + x7679;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7743 = x6751 + x7680;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7744 = x6752 + x7681;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7745 = x6753 + x7682;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7746 = x6754 + x7683;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7747 = x6755 + x7684;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7748 = x6756 + x7685;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7749 = x6757 + x7686;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7750 = x6758 + x7687;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7751 = x6759 + x7688;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7752 = x6760 + x7689;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7753 = x6761 + x7690;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7754 = x6762 + x7691;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7755 = x6763 + x7692;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7756 = x6764 + x7693;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7757 = x6765 + x7662;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7758 = x6766 + x7663;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7759 = x6767 + x7664;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7760 = x6768 + x7665;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7761 = x6769 + x7666;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7762 = x7027 + x7598;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7763 = x7029 + x7599;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7764 = x7031 + x7600;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7765 = x7033 + x7601;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7766 = x7035 + x7602;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7767 = x7037 + x7603;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7768 = x7039 + x7604;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7769 = x7041 + x7605;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7770 = x7043 + x7606;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7771 = x7045 + x7607;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7772 = x7047 + x7608;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7773 = x7049 + x7609;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7774 = x7051 + x7610;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7775 = x7053 + x7611;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7776 = x7055 + x7612;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7777 = x7057 + x7613;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7778 = x7059 + x7614;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7779 = x7061 + x7615;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7780 = x7063 + x7616;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7781 = x7065 + x7617;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7782 = x7067 + x7618;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7783 = x7069 + x7619;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7784 = x7071 + x7620;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7785 = x7073 + x7621;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7786 = x7075 + x7622;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7787 = x7077 + x7623;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7788 = x7079 + x7624;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7789 = x7081 + x7625;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7790 = x7083 + x7626;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7791 = x7085 + x7627;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7792 = x7087 + x7628;
      // loc("zirgen/circuit/recursion/sha.cpp":64:14)
      auto x7793 = x7089 + x7629;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7794 = x7470 + x7534;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7795 = x7471 + x7535;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7796 = x7472 + x7536;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7797 = x7473 + x7537;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7798 = x7474 + x7538;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7799 = x7475 + x7539;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7800 = x7476 + x7540;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7801 = x7477 + x7541;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7802 = x7478 + x7542;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7803 = x7479 + x7543;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7804 = x7480 + x7544;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7805 = x7481 + x7545;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7806 = x7482 + x7546;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7807 = x7483 + x7547;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7808 = x7484 + x7548;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7809 = x7485 + x7549;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7810 = x7486 + x7550;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7811 = x7487 + x7551;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7812 = x7488 + x7552;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7813 = x7489 + x7553;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7814 = x7490 + x7554;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7815 = x7491 + x7555;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7816 = x7492 + x7556;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7817 = x7493 + x7557;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7818 = x7494 + x7558;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7819 = x7495 + x7559;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7820 = x7496 + x7560;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7821 = x7497 + x7561;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7822 = x7498 + x7562;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7823 = x7499 + x7563;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7824 = x7500 + x7564;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7825 = x7501 + x7565;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7826 = x7763 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7827 = x7764 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7828 = x7765 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7829 = x7766 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7830 = x7767 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7831 = x7768 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7832 = x7769 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7833 = x7770 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7834 = x7771 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7835 = x7772 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7836 = x7773 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7837 = x7774 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7838 = x7775 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7839 = x7776 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7840 = x7777 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7841 = x7779 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7842 = x7780 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7843 = x7781 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7844 = x7782 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7845 = x7783 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7846 = x7784 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7847 = x7785 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7848 = x7786 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7849 = x7787 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7850 = x7788 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7851 = x7789 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7852 = x7790 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7853 = x7791 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7854 = x7792 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x7855 = x7793 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7856 = x6962 * x7641;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7857 = x6964 * x7642;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7858 = x6966 * x7643;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7859 = x6968 * x7644;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7860 = x6970 * x7645;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7861 = x6972 * x7646;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7862 = x6974 * x7647;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7863 = x6976 * x7648;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7864 = x6978 * x7649;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7865 = x6980 * x7650;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7866 = x6982 * x7651;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7867 = x6984 * x7652;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7868 = x6986 * x7653;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7869 = x6988 * x7654;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7870 = x6990 * x7655;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7871 = x6992 * x7656;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7872 = x6994 * x7657;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7873 = x6996 * x7658;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7874 = x6998 * x7659;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7875 = x7000 * x7660;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7876 = x7002 * x7661;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7877 = x7004 * x7630;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7878 = x7006 * x7631;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7879 = x7008 * x7632;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7880 = x7010 * x7633;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7881 = x7012 * x7634;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7882 = x7014 * x7635;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7883 = x7016 * x7636;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7884 = x7018 * x7637;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7885 = x7020 * x7638;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7886 = x7022 * x7639;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7887 = x7024 * x7640;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7888 = x7026 * x7667;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7889 = x7028 * x7668;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7890 = x7030 * x7669;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7891 = x7032 * x7670;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7892 = x7034 * x7671;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7893 = x7036 * x7672;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7894 = x7038 * x7673;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7895 = x7040 * x7674;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7896 = x7042 * x7675;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7897 = x7044 * x7676;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7898 = x7046 * x7677;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7899 = x7048 * x7678;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7900 = x7050 * x7679;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7901 = x7052 * x7680;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7902 = x7054 * x7681;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7903 = x7056 * x7682;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7904 = x7058 * x7683;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7905 = x7060 * x7684;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7906 = x7062 * x7685;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7907 = x7064 * x7686;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7908 = x7066 * x7687;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7909 = x7068 * x7688;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7910 = x7070 * x7689;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7911 = x7072 * x7690;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7912 = x7074 * x7691;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7913 = x7076 * x7692;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7914 = x7078 * x7693;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7915 = x7080 * x7662;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7916 = x7082 * x7663;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7917 = x7084 * x7664;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7918 = x7086 * x7665;
      // loc("zirgen/circuit/recursion/sha.cpp":47:28)
      auto x7919 = x7088 * x7666;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7920 = x7698 - x7856;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7921 = x7699 - x7857;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7922 = x7700 - x7858;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7923 = x7701 - x7859;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7924 = x7702 - x7860;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7925 = x7703 - x7861;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7926 = x7704 - x7862;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7927 = x7705 - x7863;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7928 = x7706 - x7864;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7929 = x7707 - x7865;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7930 = x7708 - x7866;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7931 = x7709 - x7867;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7932 = x7710 - x7868;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7933 = x7711 - x7869;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7934 = x7712 - x7870;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7935 = x7713 - x7871;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7936 = x7714 - x7872;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7937 = x7715 - x7873;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7938 = x7716 - x7874;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7939 = x7717 - x7875;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7940 = x7718 - x7876;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7941 = x7719 - x7877;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7942 = x7720 - x7878;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7943 = x7721 - x7879;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7944 = x7722 - x7880;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7945 = x7723 - x7881;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7946 = x7724 - x7882;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7947 = x7725 - x7883;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7948 = x7726 - x7884;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7949 = x7727 - x7885;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7950 = x7728 - x7886;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7951 = x7729 - x7887;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7952 = x7730 - x7888;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7953 = x7731 - x7889;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7954 = x7732 - x7890;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7955 = x7733 - x7891;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7956 = x7734 - x7892;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7957 = x7735 - x7893;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7958 = x7736 - x7894;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7959 = x7737 - x7895;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7960 = x7738 - x7896;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7961 = x7739 - x7897;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7962 = x7740 - x7898;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7963 = x7741 - x7899;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7964 = x7742 - x7900;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7965 = x7743 - x7901;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7966 = x7744 - x7902;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7967 = x7745 - x7903;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7968 = x7746 - x7904;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7969 = x7747 - x7905;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7970 = x7748 - x7906;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7971 = x7749 - x7907;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7972 = x7750 - x7908;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7973 = x7751 - x7909;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7974 = x7752 - x7910;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7975 = x7753 - x7911;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7976 = x7754 - x7912;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7977 = x7755 - x7913;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7978 = x7756 - x7914;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7979 = x7757 - x7915;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7980 = x7758 - x7916;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7981 = x7759 - x7917;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7982 = x7760 - x7918;
      // loc("zirgen/circuit/recursion/sha.cpp":47:14)
      auto x7983 = x7761 - x7919;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x7984 = x7694 + x7091;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x7985 = x7695 + x7106;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x7986 = x7696 + x7121;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x7987 = x7697 + x7136;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7988 = x7794 + x7566;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7989 = x7795 + x7567;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7990 = x7796 + x7568;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7991 = x7797 + x7569;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7992 = x7798 + x7570;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7993 = x7799 + x7571;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7994 = x7800 + x7572;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7995 = x7801 + x7573;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7996 = x7802 + x7574;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7997 = x7803 + x7575;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7998 = x7804 + x7576;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x7999 = x7805 + x7577;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8000 = x7806 + x7578;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8001 = x7807 + x7579;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8002 = x7808 + x7580;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8003 = x7809 + x7581;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8004 = x7810 + x7582;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8005 = x7811 + x7583;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8006 = x7812 + x7584;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8007 = x7813 + x7585;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8008 = x7814 + x7586;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8009 = x7815 + x7587;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8010 = x7816 + x7588;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8011 = x7817 + x7589;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8012 = x7818 + x7590;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8013 = x7819 + x7591;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8014 = x7820 + x7592;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8015 = x7821 + x7593;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8016 = x7822 + x7594;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8017 = x7823 + x7595;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8018 = x7824 + x7596;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8019 = x7825 + x7597;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8020 = x7920 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8021 = x7921 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8022 = x7923 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8023 = x7924 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8024 = x7925 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8025 = x7926 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8026 = x7927 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8027 = x7928 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8028 = x7929 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8029 = x7930 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8030 = x7931 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8031 = x7932 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8032 = x7933 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8033 = x7934 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8034 = x7935 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8035 = x7936 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8036 = x7937 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8037 = x7939 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8038 = x7940 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8039 = x7941 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8040 = x7942 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8041 = x7943 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8042 = x7944 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8043 = x7945 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8044 = x7946 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8045 = x7947 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8046 = x7948 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8047 = x7949 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8048 = x7950 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8049 = x7951 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8050 = x7952 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8051 = x7953 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8052 = x7954 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8053 = x7955 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8054 = x7956 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8055 = x7957 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8056 = x7959 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8057 = x7960 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8058 = x7961 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8059 = x7962 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8060 = x7963 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8061 = x7964 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8062 = x7965 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8063 = x7966 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8064 = x7967 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8065 = x7968 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8066 = x7969 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8067 = x7970 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8068 = x7971 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8069 = x7972 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8070 = x7973 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8071 = x7975 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8072 = x7976 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8073 = x7977 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8074 = x7978 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8075 = x7979 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8076 = x7980 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8077 = x7981 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8078 = x7982 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8079 = x7983 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8080 = x7984 + x7092;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8081 = x7985 + x7107;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8082 = x7986 + x7122;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8083 = x7987 + x7137;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8084 = x7988 + x7151;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8085 = x7989 + x7153;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8086 = x7990 + x7155;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8087 = x7991 + x7157;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8088 = x7992 + x7159;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8089 = x7993 + x7161;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8090 = x7994 + x7163;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8091 = x7995 + x7165;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8092 = x7996 + x7167;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8093 = x7997 + x7169;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8094 = x7998 + x7171;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8095 = x7999 + x7173;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8096 = x8000 + x7175;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8097 = x8001 + x7177;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8098 = x8002 + x7179;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8099 = x8003 + x7181;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8100 = x8004 + x7183;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8101 = x8005 + x7185;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8102 = x8006 + x7187;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8103 = x8007 + x7189;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8104 = x8008 + x7191;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8105 = x8009 + x7193;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8106 = x8010 + x7195;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8107 = x8011 + x7197;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8108 = x8012 + x7199;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8109 = x8013 + x7201;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8110 = x8014 + x7203;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8111 = x8015 + x7205;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8112 = x8016 + x7207;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8113 = x8017 + x7209;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8114 = x8018 + x7211;
      // loc("zirgen/circuit/recursion/sha.cpp":55:14)
      auto x8115 = x8019 + x7213;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8116 = x7762 + x7826;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8117 = x7778 + x7841;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8118 = x8085 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8119 = x8086 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8120 = x8087 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8121 = x8088 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8122 = x8089 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8123 = x8090 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8124 = x8091 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8125 = x8092 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8126 = x8093 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8127 = x8094 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8128 = x8095 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8129 = x8096 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8130 = x8097 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8131 = x8098 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8132 = x8099 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8133 = x8101 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8134 = x8102 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8135 = x8103 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8136 = x8104 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8137 = x8105 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8138 = x8106 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8139 = x8107 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8140 = x8108 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8141 = x8109 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8142 = x8110 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8143 = x8111 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8144 = x8112 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8145 = x8113 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8146 = x8114 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":74:25)
      auto x8147 = x8115 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8148 = x8080 + x7093;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8149 = x8081 + x7108;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8150 = x8082 + x7123;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8151 = x8083 + x7138;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8152 = x8116 + x7827;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8153 = x8117 + x7842;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8154 = x7922 + x8022;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8155 = x7938 + x8037;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8156 = x7958 + x8056;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8157 = x7974 + x8071;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8158 = x8148 + x7094;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8159 = x8149 + x7109;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8160 = x8150 + x7124;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8161 = x8151 + x7139;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8162 = x8152 + x7828;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8163 = x8153 + x7843;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8164 = x8154 + x8023;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8165 = x8155 + x8038;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8166 = x8156 + x8057;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8167 = x8157 + x8072;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8168 = x8084 + x8118;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8169 = x8100 + x8133;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8170 = x8158 + x7095;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8171 = x8159 + x7110;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8172 = x8160 + x7125;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8173 = x8161 + x7140;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8174 = x8162 + x7829;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8175 = x8163 + x7844;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8176 = x8164 + x8024;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8177 = x8165 + x8039;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8178 = x8166 + x8058;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8179 = x8167 + x8073;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8180 = x8168 + x8119;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8181 = x8169 + x8134;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8182 = x8170 + x7096;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8183 = x8171 + x7111;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8184 = x8172 + x7126;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8185 = x8173 + x7141;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8186 = x8174 + x7830;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8187 = x8175 + x7845;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8188 = x8176 + x8025;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8189 = x8177 + x8040;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8190 = x8178 + x8059;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8191 = x8179 + x8074;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8192 = x8180 + x8120;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8193 = x8181 + x8135;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8194 = x8182 + x7097;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8195 = x8183 + x7112;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8196 = x8184 + x7127;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8197 = x8185 + x7142;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8198 = x8186 + x7831;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8199 = x8187 + x7846;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8200 = x8188 + x8026;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8201 = x8189 + x8041;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8202 = x8190 + x8060;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8203 = x8191 + x8075;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8204 = x8192 + x8121;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8205 = x8193 + x8136;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8206 = x8194 + x7098;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8207 = x8195 + x7113;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8208 = x8196 + x7128;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8209 = x8197 + x7143;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8210 = x8198 + x7832;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8211 = x8199 + x7847;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8212 = x8200 + x8027;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8213 = x8201 + x8042;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8214 = x8202 + x8061;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8215 = x8203 + x8076;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8216 = x8204 + x8122;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8217 = x8205 + x8137;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8218 = x8206 + x7099;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8219 = x8207 + x7114;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8220 = x8208 + x7129;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8221 = x8209 + x7144;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8222 = x8210 + x7833;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8223 = x8211 + x7848;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8224 = x8212 + x8028;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8225 = x8213 + x8043;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8226 = x8214 + x8062;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8227 = x8215 + x8077;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8228 = x8216 + x8123;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8229 = x8217 + x8138;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8230 = x8218 + x7100;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8231 = x8219 + x7115;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8232 = x8220 + x7130;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8233 = x8221 + x7145;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8234 = x8222 + x7834;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8235 = x8223 + x7849;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8236 = x8224 + x8029;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8237 = x8225 + x8044;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8238 = x8226 + x8063;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8239 = x8227 + x8078;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8240 = x8228 + x8124;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8241 = x8229 + x8139;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8242 = x8230 + x7101;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8243 = x8231 + x7116;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8244 = x8232 + x7131;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8245 = x8233 + x7146;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8246 = x8234 + x7835;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8247 = x8235 + x7850;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8248 = x8236 + x8030;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8249 = x8237 + x8045;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8250 = x8238 + x8064;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8251 = x8239 + x8079;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8252 = x8240 + x8125;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8253 = x8241 + x8140;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8254 = x8242 + x7102;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8255 = x8243 + x7117;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8256 = x8244 + x7132;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8257 = x8245 + x7147;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8258 = x8246 + x7836;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8259 = x8247 + x7851;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8260 = x8248 + x8031;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8261 = x8249 + x8046;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8262 = x8250 + x8065;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8263 = x8251 + x8050;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8264 = x8252 + x8126;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8265 = x8253 + x8141;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8266 = x8254 + x7103;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8267 = x8255 + x7118;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8268 = x8256 + x7133;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8269 = x8257 + x7148;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8270 = x8258 + x7837;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8271 = x8259 + x7852;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8272 = x8260 + x8032;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8273 = x8261 + x8047;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8274 = x8262 + x8066;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8275 = x8263 + x8051;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8276 = x8264 + x8127;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8277 = x8265 + x8142;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8278 = x8266 + x7104;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8279 = x8267 + x7119;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8280 = x8268 + x7134;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8281 = x8269 + x7149;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8282 = x8270 + x7838;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8283 = x8271 + x7853;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8284 = x8272 + x8033;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8285 = x8273 + x8048;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8286 = x8274 + x8067;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8287 = x8275 + x8052;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8288 = x8276 + x8128;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8289 = x8277 + x8143;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8290 = x8282 + x7839;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8291 = x8283 + x7854;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8292 = x8284 + x8034;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8293 = x8285 + x8049;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8294 = x8286 + x8068;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8295 = x8287 + x8053;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8296 = x8288 + x8129;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8297 = x8289 + x8144;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8298 = x8290 + x7840;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8299 = x8291 + x7855;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8300 = x8292 + x8035;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8301 = x8293 + x8020;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8302 = x8294 + x8069;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8303 = x8295 + x8054;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8304 = x8296 + x8130;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8305 = x8297 + x8145;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8306 = x8300 + x8036;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8307 = x8301 + x8021;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8308 = x8302 + x8070;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8309 = x8303 + x8055;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8310 = x8304 + x8131;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8311 = x8305 + x8146;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8312 = x8298 + x8308;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8313 = x8299 + x8309;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8314 = x8280 + x8312;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8315 = x8281 + x8313;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8316 = x6704 + x8314;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8317 = x6705 + x8315;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8318 = x6700 + x8317;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8319 = x6619 + x8316;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8320 = x8310 + x8132;
      // loc("zirgen/circuit/recursion/sha.cpp":74:16)
      auto x8321 = x8311 + x8147;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8322 = x8318 + x8279;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8323 = x8319 + x8278;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8324 = x8320 + x8306;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8325 = x8321 + x8307;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8326 = x8318 + x8325;
      // loc("zirgen/circuit/recursion/sha.cpp":83:14)
      auto x8327 = x8319 + x8324;
      // loc("zirgen/circuit/recursion/sha.cpp":290:5)
      {
        auto& reg = args[2][58 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8327);
        reg = x8327;
      }
      // loc("zirgen/circuit/recursion/sha.cpp":291:5)
      {
        auto& reg = args[2][92 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8323);
        reg = x8323;
      }
      // loc("zirgen/circuit/recursion/sha.cpp":290:5)
      {
        auto& reg = args[2][59 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8326);
        reg = x8326;
      }
      // loc("zirgen/circuit/recursion/sha.cpp":291:5)
      {
        auto& reg = args[2][93 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8322);
        reg = x8322;
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a_raw[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8328 = args[2][58 * steps + ((cycle - 0) & mask)];
      assert(x8328 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a_raw[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8329 = args[2][59 * steps + ((cycle - 0) & mask)];
      assert(x8329 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8330 = Fp(x8328.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][26 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8330);
          reg = x8330;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8331 = Fp(x8328.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8332 = x8331 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][27 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8332);
          reg = x8332;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8333 = Fp(x8328.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8334 = x8333 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][28 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8334);
          reg = x8334;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8335 = Fp(x8328.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8336 = x8335 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][29 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8336);
          reg = x8336;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8337 = Fp(x8328.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8338 = x8337 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8338);
          reg = x8338;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8339 = Fp(x8328.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8340 = x8339 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][31 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8340);
          reg = x8340;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8341 = Fp(x8328.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8342 = x8341 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][32 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8342);
          reg = x8342;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8343 = Fp(x8328.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8344 = x8343 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][33 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8344);
          reg = x8344;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8345 = Fp(x8328.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8346 = x8345 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][34 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8346);
          reg = x8346;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8347 = Fp(x8328.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8348 = x8347 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][35 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8348);
          reg = x8348;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8349 = Fp(x8328.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8350 = x8349 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][36 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8350);
          reg = x8350;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8351 = Fp(x8328.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8352 = x8351 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][37 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8352);
          reg = x8352;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8353 = Fp(x8328.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8354 = x8353 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][38 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8354);
          reg = x8354;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8355 = Fp(x8328.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8356 = x8355 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][39 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8356);
          reg = x8356;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8357 = Fp(x8328.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8358 = x8357 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][40 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8358);
          reg = x8358;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8359 = Fp(x8328.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8360 = x8359 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][41 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8360);
          reg = x8360;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8361 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x8361 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8362 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x8362 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8363 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x8363 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8364 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x8364 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8365 = args[2][30 * steps + ((cycle - 0) & mask)];
      assert(x8365 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8366 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x8366 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8367 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x8367 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8368 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x8368 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8369 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x8369 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8370 = args[2][35 * steps + ((cycle - 0) & mask)];
      assert(x8370 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8371 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x8371 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8372 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x8372 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8373 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x8373 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8374 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x8374 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8375 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x8375 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8376 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x8376 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8377 = x8362 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8378 = x8363 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8379 = x8364 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8380 = x8365 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8381 = x8366 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8382 = x8367 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8383 = x8368 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8384 = x8369 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8385 = x8370 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8386 = x8371 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8387 = x8372 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8388 = x8373 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8389 = x8374 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8390 = x8375 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8391 = x8376 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8392 = x8361 + x8377;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8393 = x8392 + x8378;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8394 = x8393 + x8379;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8395 = x8394 + x8380;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8396 = x8395 + x8381;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8397 = x8396 + x8382;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8398 = x8397 + x8383;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8399 = x8398 + x8384;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8400 = x8399 + x8385;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8401 = x8400 + x8386;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8402 = x8401 + x8387;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8403 = x8402 + x8388;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8404 = x8403 + x8389;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8405 = x8404 + x8390;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8406 = x8405 + x8391;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x8407 = x8328 - x8406;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x8408 = x8407 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x8409 = Fp(x8408.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8409);
          reg = x8409;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":127:32)
      auto x8410 = x8329 + x8408;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8411 = Fp(x8410.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][42 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8411);
          reg = x8411;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8412 = Fp(x8410.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8413 = x8412 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][43 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8413);
          reg = x8413;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8414 = Fp(x8410.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8415 = x8414 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][44 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8415);
          reg = x8415;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8416 = Fp(x8410.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8417 = x8416 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][45 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8417);
          reg = x8417;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8418 = Fp(x8410.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8419 = x8418 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][46 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8419);
          reg = x8419;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8420 = Fp(x8410.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8421 = x8420 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][47 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8421);
          reg = x8421;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8422 = Fp(x8410.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8423 = x8422 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][48 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8423);
          reg = x8423;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8424 = Fp(x8410.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8425 = x8424 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][49 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8425);
          reg = x8425;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8426 = Fp(x8410.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8427 = x8426 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][50 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8427);
          reg = x8427;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8428 = Fp(x8410.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8429 = x8428 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][51 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8429);
          reg = x8429;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8430 = Fp(x8410.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8431 = x8430 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][52 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8431);
          reg = x8431;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8432 = Fp(x8410.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8433 = x8432 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][53 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8433);
          reg = x8433;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8434 = Fp(x8410.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8435 = x8434 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][54 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8435);
          reg = x8435;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8436 = Fp(x8410.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8437 = x8436 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][55 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8437);
          reg = x8437;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8438 = Fp(x8410.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8439 = x8438 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][56 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8439);
          reg = x8439;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8440 = Fp(x8410.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8441 = x8440 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][57 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8441);
          reg = x8441;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8442 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x8442 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8443 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x8443 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8444 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x8444 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8445 = args[2][45 * steps + ((cycle - 0) & mask)];
      assert(x8445 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8446 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x8446 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8447 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x8447 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8448 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x8448 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8449 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x8449 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8450 = args[2][50 * steps + ((cycle - 0) & mask)];
      assert(x8450 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8451 = args[2][51 * steps + ((cycle - 0) & mask)];
      assert(x8451 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8452 = args[2][52 * steps + ((cycle - 0) & mask)];
      assert(x8452 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8453 = args[2][53 * steps + ((cycle - 0) & mask)];
      assert(x8453 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8454 = args[2][54 * steps + ((cycle - 0) & mask)];
      assert(x8454 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8455 = args[2][55 * steps + ((cycle - 0) & mask)];
      assert(x8455 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8456 = args[2][56 * steps + ((cycle - 0) & mask)];
      assert(x8456 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/a[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8457 = args[2][57 * steps + ((cycle - 0) & mask)];
      assert(x8457 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8458 = x8443 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8459 = x8444 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8460 = x8445 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8461 = x8446 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8462 = x8447 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8463 = x8448 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8464 = x8449 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8465 = x8450 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8466 = x8451 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8467 = x8452 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8468 = x8453 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8469 = x8454 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8470 = x8455 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8471 = x8456 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8472 = x8457 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8473 = x8442 + x8458;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8474 = x8473 + x8459;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8475 = x8474 + x8460;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8476 = x8475 + x8461;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8477 = x8476 + x8462;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8478 = x8477 + x8463;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8479 = x8478 + x8464;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8480 = x8479 + x8465;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8481 = x8480 + x8466;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8482 = x8481 + x8467;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8483 = x8482 + x8468;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8484 = x8483 + x8469;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8485 = x8484 + x8470;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8486 = x8485 + x8471;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8487 = x8486 + x8472;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x8488 = x8410 - x8487;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x8489 = x8488 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x8490 = Fp(x8489.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8490);
          reg = x8490;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e_raw[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8491 = args[2][92 * steps + ((cycle - 0) & mask)];
      assert(x8491 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e_raw[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8492 = args[2][93 * steps + ((cycle - 0) & mask)];
      assert(x8492 != Fp::invalid());
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8493 = Fp(x8491.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][60 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8493);
          reg = x8493;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8494 = Fp(x8491.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8495 = x8494 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][61 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8495);
          reg = x8495;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8496 = Fp(x8491.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8497 = x8496 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][62 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8497);
          reg = x8497;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8498 = Fp(x8491.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8499 = x8498 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][63 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8499);
          reg = x8499;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8500 = Fp(x8491.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8501 = x8500 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][64 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8501);
          reg = x8501;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8502 = Fp(x8491.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8503 = x8502 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][65 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8503);
          reg = x8503;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8504 = Fp(x8491.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8505 = x8504 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][66 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8505);
          reg = x8505;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8506 = Fp(x8491.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8507 = x8506 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][67 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8507);
          reg = x8507;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8508 = Fp(x8491.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8509 = x8508 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][68 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8509);
          reg = x8509;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8510 = Fp(x8491.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8511 = x8510 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][69 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8511);
          reg = x8511;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8512 = Fp(x8491.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8513 = x8512 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][70 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8513);
          reg = x8513;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8514 = Fp(x8491.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8515 = x8514 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][71 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8515);
          reg = x8515;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8516 = Fp(x8491.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8517 = x8516 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][72 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8517);
          reg = x8517;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8518 = Fp(x8491.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8519 = x8518 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][73 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8519);
          reg = x8519;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8520 = Fp(x8491.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8521 = x8520 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][74 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8521);
          reg = x8521;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8522 = Fp(x8491.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8523 = x8522 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][75 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8523);
          reg = x8523;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[0](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8524 = args[2][60 * steps + ((cycle - 0) & mask)];
      assert(x8524 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[1](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8525 = args[2][61 * steps + ((cycle - 0) & mask)];
      assert(x8525 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[2](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8526 = args[2][62 * steps + ((cycle - 0) & mask)];
      assert(x8526 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[3](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8527 = args[2][63 * steps + ((cycle - 0) & mask)];
      assert(x8527 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[4](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8528 = args[2][64 * steps + ((cycle - 0) & mask)];
      assert(x8528 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[5](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8529 = args[2][65 * steps + ((cycle - 0) & mask)];
      assert(x8529 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[6](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8530 = args[2][66 * steps + ((cycle - 0) & mask)];
      assert(x8530 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[7](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8531 = args[2][67 * steps + ((cycle - 0) & mask)];
      assert(x8531 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[8](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8532 = args[2][68 * steps + ((cycle - 0) & mask)];
      assert(x8532 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[9](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8533 = args[2][69 * steps + ((cycle - 0) & mask)];
      assert(x8533 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[10](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8534 = args[2][70 * steps + ((cycle - 0) & mask)];
      assert(x8534 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[11](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8535 = args[2][71 * steps + ((cycle - 0) & mask)];
      assert(x8535 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[12](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8536 = args[2][72 * steps + ((cycle - 0) & mask)];
      assert(x8536 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[13](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8537 = args[2][73 * steps + ((cycle - 0) & mask)];
      assert(x8537 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[14](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8538 = args[2][74 * steps + ((cycle - 0) & mask)];
      assert(x8538 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[15](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8539 = args[2][75 * steps + ((cycle - 0) & mask)];
      assert(x8539 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8540 = x8525 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8541 = x8526 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8542 = x8527 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8543 = x8528 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8544 = x8529 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8545 = x8530 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8546 = x8531 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8547 = x8532 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8548 = x8533 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8549 = x8534 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8550 = x8535 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8551 = x8536 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8552 = x8537 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8553 = x8538 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8554 = x8539 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8555 = x8524 + x8540;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8556 = x8555 + x8541;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8557 = x8556 + x8542;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8558 = x8557 + x8543;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8559 = x8558 + x8544;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8560 = x8559 + x8545;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8561 = x8560 + x8546;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8562 = x8561 + x8547;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8563 = x8562 + x8548;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8564 = x8563 + x8549;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8565 = x8564 + x8550;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8566 = x8565 + x8551;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8567 = x8566 + x8552;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8568 = x8567 + x8553;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8569 = x8568 + x8554;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x8570 = x8491 - x8569;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x8571 = x8570 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":124:26)
        auto x8572 = Fp(x8571.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8572);
          reg = x8572;
        }
      }
      // loc("zirgen/circuit/recursion/sha.cpp":127:32)
      auto x8573 = x8492 + x8571;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8574 = Fp(x8573.asUInt32() & x310.asUInt32());
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][76 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8574);
          reg = x8574;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8575 = Fp(x8573.asUInt32() & x309.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8576 = x8575 * x297;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][77 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8576);
          reg = x8576;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8577 = Fp(x8573.asUInt32() & x307.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8578 = x8577 * x296;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][78 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8578);
          reg = x8578;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8579 = Fp(x8573.asUInt32() & x303.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8580 = x8579 * x295;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][79 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8580);
          reg = x8580;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8581 = Fp(x8573.asUInt32() & x294.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8582 = x8581 * x293;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][80 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8582);
          reg = x8582;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8583 = Fp(x8573.asUInt32() & x291.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8584 = x8583 * x292;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][81 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8584);
          reg = x8584;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8585 = Fp(x8573.asUInt32() & x289.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8586 = x8585 * x290;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][82 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8586);
          reg = x8586;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8587 = Fp(x8573.asUInt32() & x288.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8588 = x8587 * x287;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][83 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8588);
          reg = x8588;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8589 = Fp(x8573.asUInt32() & x285.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8590 = x8589 * x286;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][84 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8590);
          reg = x8590;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8591 = Fp(x8573.asUInt32() & x283.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8592 = x8591 * x284;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][85 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8592);
          reg = x8592;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8593 = Fp(x8573.asUInt32() & x282.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8594 = x8593 * x281;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][86 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8594);
          reg = x8594;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8595 = Fp(x8573.asUInt32() & x279.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8596 = x8595 * x280;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][87 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8596);
          reg = x8596;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8597 = Fp(x8573.asUInt32() & x277.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8598 = x8597 * x278;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][88 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8598);
          reg = x8598;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8599 = Fp(x8573.asUInt32() & x275.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8600 = x8599 * x276;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][89 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8600);
          reg = x8600;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8601 = Fp(x8573.asUInt32() & x274.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8602 = x8601 * x273;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][90 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8602);
          reg = x8602;
        }
        // loc("zirgen/circuit/recursion/sha.cpp":99:29)
        auto x8603 = Fp(x8573.asUInt32() & x271.asUInt32());
        // loc("zirgen/circuit/recursion/sha.cpp":99:28)
        auto x8604 = x8603 * x272;
        // loc("./zirgen/components/bits.h":27:23)
        {
          auto& reg = args[2][91 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8604);
          reg = x8604;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[16](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8605 = args[2][76 * steps + ((cycle - 0) & mask)];
      assert(x8605 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[17](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8606 = args[2][77 * steps + ((cycle - 0) & mask)];
      assert(x8606 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[18](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8607 = args[2][78 * steps + ((cycle - 0) & mask)];
      assert(x8607 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[19](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8608 = args[2][79 * steps + ((cycle - 0) & mask)];
      assert(x8608 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[20](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8609 = args[2][80 * steps + ((cycle - 0) & mask)];
      assert(x8609 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[21](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8610 = args[2][81 * steps + ((cycle - 0) & mask)];
      assert(x8610 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[22](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8611 = args[2][82 * steps + ((cycle - 0) & mask)];
      assert(x8611 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[23](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8612 = args[2][83 * steps + ((cycle - 0) & mask)];
      assert(x8612 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[24](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8613 = args[2][84 * steps + ((cycle - 0) & mask)];
      assert(x8613 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[25](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8614 = args[2][85 * steps + ((cycle - 0) & mask)];
      assert(x8614 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[26](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8615 = args[2][86 * steps + ((cycle - 0) & mask)];
      assert(x8615 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[27](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8616 = args[2][87 * steps + ((cycle - 0) & mask)];
      assert(x8616 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[28](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8617 = args[2][88 * steps + ((cycle - 0) & mask)];
      assert(x8617 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[29](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8618 = args[2][89 * steps + ((cycle - 0) & mask)];
      assert(x8618 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[30](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8619 = args[2][90 * steps + ((cycle - 0) & mask)];
      assert(x8619 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/e[31](Bit)/bit(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8620 = args[2][91 * steps + ((cycle - 0) & mask)];
      assert(x8620 != Fp::invalid());
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8621 = x8606 * x309;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8622 = x8607 * x307;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8623 = x8608 * x303;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8624 = x8609 * x294;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8625 = x8610 * x291;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8626 = x8611 * x289;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8627 = x8612 * x288;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8628 = x8613 * x285;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8629 = x8614 * x283;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8630 = x8615 * x282;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8631 = x8616 * x279;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8632 = x8617 * x277;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8633 = x8618 * x275;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8634 = x8619 * x274;
      // loc("zirgen/circuit/recursion/sha.cpp":104:17)
      auto x8635 = x8620 * x271;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8636 = x8605 + x8621;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8637 = x8636 + x8622;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8638 = x8637 + x8623;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8639 = x8638 + x8624;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8640 = x8639 + x8625;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8641 = x8640 + x8626;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8642 = x8641 + x8627;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8643 = x8642 + x8628;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8644 = x8643 + x8629;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8645 = x8644 + x8630;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8646 = x8645 + x8631;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8647 = x8646 + x8632;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8648 = x8647 + x8633;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8649 = x8648 + x8634;
      // loc("zirgen/circuit/recursion/sha.cpp":104:11)
      auto x8650 = x8649 + x8635;
      // loc("zirgen/circuit/recursion/sha.cpp":106:16)
      auto x8651 = x8573 - x8650;
      // loc("zirgen/circuit/recursion/sha.cpp":106:15)
      auto x8652 = x8651 * x270;
      {
        // loc("zirgen/circuit/recursion/sha.cpp":128:27)
        auto x8653 = Fp(x8652.asUInt32() & x308.asUInt32());
        // loc("./zirgen/components/bits.h":68:23)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8653);
          reg = x8653;
        }
      }
    }
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/opcode(OneHot)/set_global(Reg)"("./zirgen/components/mux.h":49:25))
    auto x8654 = args[0][17 * steps + ((cycle - 0) & mask)];
    assert(x8654 != Fp::invalid());
    if (x8654 != 0) {
      // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
      auto x8655 = args[0][19 * steps + ((cycle - 0) & mask)];
      assert(x8655 != Fp::invalid());
      host_args.at(0) = x8655;
      host_args.at(1) = x8655;
      host(ctx, "log", "SET_GLOBAL, writing to digest %u//2, part %u%%2", host_args.data(), 2, host_outs.data(), 0);
      {
        // loc("./zirgen/components/onehot.h":37:26)
        auto x8656 = (x8655 == 0) ? Fp(1) : Fp(0);
        // loc("./zirgen/components/onehot.h":37:9)
        {
          auto& reg = args[2][11 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8656);
          reg = x8656;
        }
        // loc("./zirgen/components/onehot.h":37:26)
        auto x8657 = x8655 - x310;
        // loc("./zirgen/components/onehot.h":37:26)
        auto x8658 = (x8657 == 0) ? Fp(1) : Fp(0);
        // loc("./zirgen/components/onehot.h":37:9)
        {
          auto& reg = args[2][12 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8658);
          reg = x8658;
        }
        // loc("./zirgen/components/onehot.h":37:26)
        auto x8659 = x8655 - x309;
        // loc("./zirgen/components/onehot.h":37:26)
        auto x8660 = (x8659 == 0) ? Fp(1) : Fp(0);
        // loc("./zirgen/components/onehot.h":37:9)
        {
          auto& reg = args[2][13 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8660);
          reg = x8660;
        }
        // loc("./zirgen/components/onehot.h":37:26)
        auto x8661 = x8655 - x308;
        // loc("./zirgen/components/onehot.h":37:26)
        auto x8662 = (x8661 == 0) ? Fp(1) : Fp(0);
        // loc("./zirgen/components/onehot.h":37:9)
        {
          auto& reg = args[2][14 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8662);
          reg = x8662;
        }
      }
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/select(OneHot)/hot[1](Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
      auto x8663 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x8663 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/select(OneHot)/hot[2](Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
      auto x8664 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x8664 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/select(OneHot)/hot[3](Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
      auto x8665 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x8665 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/select(OneHot)/hot[0](Reg)"("zirgen/circuit/recursion/macro.cpp":35:25))
      auto x8666 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x8666 != Fp::invalid());
      if (x8666 != 0) {
        // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[0](Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
        auto x8667 = args[0][18 * steps + ((cycle - 0) & mask)];
        assert(x8667 != Fp::invalid());
        {
          host_args.at(0) = x8667;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8668 = host_outs.at(0);
          auto x8669 = host_outs.at(1);
          auto x8670 = host_outs.at(2);
          auto x8671 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][16 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8668);
            reg = x8668;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][17 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8669);
            reg = x8669;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][18 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8670);
            reg = x8670;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][19 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8671);
            reg = x8671;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8667);
          reg = x8667;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8672 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x8672 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8673 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x8673 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8674 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x8674 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8675 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x8675 != Fp::invalid());
        host_args.at(0) = x311;
        host_args.at(1) = x311;
        host_args.at(2) = x311;
        host_args.at(3) = x8672;
        host_args.at(4) = x8672;
        host_args.at(5) = x8674;
        host_args.at(6) = x8673;
        host_args.at(7) = x8675;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][0] = x8672;
        host_args.at(0) = x311;
        host_args.at(1) = x311;
        host_args.at(2) = x310;
        host_args.at(3) = x8674;
        host_args.at(4) = x8672;
        host_args.at(5) = x8674;
        host_args.at(6) = x8673;
        host_args.at(7) = x8675;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][1] = x8674;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8676 = x8667 + x310;
        {
          host_args.at(0) = x8676;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8677 = host_outs.at(0);
          auto x8678 = host_outs.at(1);
          auto x8679 = host_outs.at(2);
          auto x8680 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][21 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8677);
            reg = x8677;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][22 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8678);
            reg = x8678;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][23 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8679);
            reg = x8679;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][24 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8680);
            reg = x8680;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][20 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8676);
          reg = x8676;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8681 = args[2][21 * steps + ((cycle - 0) & mask)];
        assert(x8681 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8682 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x8682 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8683 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x8683 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8684 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x8684 != Fp::invalid());
        host_args.at(0) = x311;
        host_args.at(1) = x310;
        host_args.at(2) = x311;
        host_args.at(3) = x8681;
        host_args.at(4) = x8681;
        host_args.at(5) = x8683;
        host_args.at(6) = x8682;
        host_args.at(7) = x8684;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][2] = x8681;
        host_args.at(0) = x311;
        host_args.at(1) = x310;
        host_args.at(2) = x310;
        host_args.at(3) = x8683;
        host_args.at(4) = x8681;
        host_args.at(5) = x8683;
        host_args.at(6) = x8682;
        host_args.at(7) = x8684;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][3] = x8683;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8685 = x8667 + x309;
        {
          host_args.at(0) = x8685;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8686 = host_outs.at(0);
          auto x8687 = host_outs.at(1);
          auto x8688 = host_outs.at(2);
          auto x8689 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][26 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8686);
            reg = x8686;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][27 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8687);
            reg = x8687;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][28 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8688);
            reg = x8688;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][29 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8689);
            reg = x8689;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][25 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8685);
          reg = x8685;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8690 = args[2][26 * steps + ((cycle - 0) & mask)];
        assert(x8690 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8691 = args[2][28 * steps + ((cycle - 0) & mask)];
        assert(x8691 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8692 = args[2][27 * steps + ((cycle - 0) & mask)];
        assert(x8692 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8693 = args[2][29 * steps + ((cycle - 0) & mask)];
        assert(x8693 != Fp::invalid());
        host_args.at(0) = x311;
        host_args.at(1) = x309;
        host_args.at(2) = x311;
        host_args.at(3) = x8690;
        host_args.at(4) = x8690;
        host_args.at(5) = x8692;
        host_args.at(6) = x8691;
        host_args.at(7) = x8693;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][4] = x8690;
        host_args.at(0) = x311;
        host_args.at(1) = x309;
        host_args.at(2) = x310;
        host_args.at(3) = x8692;
        host_args.at(4) = x8690;
        host_args.at(5) = x8692;
        host_args.at(6) = x8691;
        host_args.at(7) = x8693;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][5] = x8692;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8694 = x8667 + x308;
        {
          host_args.at(0) = x8694;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8695 = host_outs.at(0);
          auto x8696 = host_outs.at(1);
          auto x8697 = host_outs.at(2);
          auto x8698 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][31 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8695);
            reg = x8695;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][32 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8696);
            reg = x8696;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][33 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8697);
            reg = x8697;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][34 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8698);
            reg = x8698;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8694);
          reg = x8694;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8699 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x8699 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8700 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x8700 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8701 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x8701 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8702 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x8702 != Fp::invalid());
        host_args.at(0) = x311;
        host_args.at(1) = x308;
        host_args.at(2) = x311;
        host_args.at(3) = x8699;
        host_args.at(4) = x8699;
        host_args.at(5) = x8701;
        host_args.at(6) = x8700;
        host_args.at(7) = x8702;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][6] = x8699;
        host_args.at(0) = x311;
        host_args.at(1) = x308;
        host_args.at(2) = x310;
        host_args.at(3) = x8701;
        host_args.at(4) = x8699;
        host_args.at(5) = x8701;
        host_args.at(6) = x8700;
        host_args.at(7) = x8702;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][7] = x8701;
      }
      if (x8663 != 0) {
        // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[0](Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
        auto x8703 = args[0][18 * steps + ((cycle - 0) & mask)];
        assert(x8703 != Fp::invalid());
        {
          host_args.at(0) = x8703;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8704 = host_outs.at(0);
          auto x8705 = host_outs.at(1);
          auto x8706 = host_outs.at(2);
          auto x8707 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][16 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8704);
            reg = x8704;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][17 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8705);
            reg = x8705;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][18 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8706);
            reg = x8706;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][19 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8707);
            reg = x8707;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8703);
          reg = x8703;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8708 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x8708 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8709 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x8709 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8710 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x8710 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8711 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x8711 != Fp::invalid());
        host_args.at(0) = x310;
        host_args.at(1) = x311;
        host_args.at(2) = x311;
        host_args.at(3) = x8708;
        host_args.at(4) = x8708;
        host_args.at(5) = x8710;
        host_args.at(6) = x8709;
        host_args.at(7) = x8711;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][8] = x8708;
        host_args.at(0) = x310;
        host_args.at(1) = x311;
        host_args.at(2) = x310;
        host_args.at(3) = x8710;
        host_args.at(4) = x8708;
        host_args.at(5) = x8710;
        host_args.at(6) = x8709;
        host_args.at(7) = x8711;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][9] = x8710;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8712 = x8703 + x310;
        {
          host_args.at(0) = x8712;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8713 = host_outs.at(0);
          auto x8714 = host_outs.at(1);
          auto x8715 = host_outs.at(2);
          auto x8716 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][21 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8713);
            reg = x8713;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][22 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8714);
            reg = x8714;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][23 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8715);
            reg = x8715;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][24 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8716);
            reg = x8716;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][20 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8712);
          reg = x8712;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8717 = args[2][21 * steps + ((cycle - 0) & mask)];
        assert(x8717 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8718 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x8718 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8719 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x8719 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8720 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x8720 != Fp::invalid());
        host_args.at(0) = x310;
        host_args.at(1) = x310;
        host_args.at(2) = x311;
        host_args.at(3) = x8717;
        host_args.at(4) = x8717;
        host_args.at(5) = x8719;
        host_args.at(6) = x8718;
        host_args.at(7) = x8720;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][10] = x8717;
        host_args.at(0) = x310;
        host_args.at(1) = x310;
        host_args.at(2) = x310;
        host_args.at(3) = x8719;
        host_args.at(4) = x8717;
        host_args.at(5) = x8719;
        host_args.at(6) = x8718;
        host_args.at(7) = x8720;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][11] = x8719;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8721 = x8703 + x309;
        {
          host_args.at(0) = x8721;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8722 = host_outs.at(0);
          auto x8723 = host_outs.at(1);
          auto x8724 = host_outs.at(2);
          auto x8725 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][26 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8722);
            reg = x8722;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][27 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8723);
            reg = x8723;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][28 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8724);
            reg = x8724;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][29 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8725);
            reg = x8725;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][25 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8721);
          reg = x8721;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8726 = args[2][26 * steps + ((cycle - 0) & mask)];
        assert(x8726 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8727 = args[2][28 * steps + ((cycle - 0) & mask)];
        assert(x8727 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8728 = args[2][27 * steps + ((cycle - 0) & mask)];
        assert(x8728 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8729 = args[2][29 * steps + ((cycle - 0) & mask)];
        assert(x8729 != Fp::invalid());
        host_args.at(0) = x310;
        host_args.at(1) = x309;
        host_args.at(2) = x311;
        host_args.at(3) = x8726;
        host_args.at(4) = x8726;
        host_args.at(5) = x8728;
        host_args.at(6) = x8727;
        host_args.at(7) = x8729;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][12] = x8726;
        host_args.at(0) = x310;
        host_args.at(1) = x309;
        host_args.at(2) = x310;
        host_args.at(3) = x8728;
        host_args.at(4) = x8726;
        host_args.at(5) = x8728;
        host_args.at(6) = x8727;
        host_args.at(7) = x8729;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][13] = x8728;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8730 = x8703 + x308;
        {
          host_args.at(0) = x8730;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8731 = host_outs.at(0);
          auto x8732 = host_outs.at(1);
          auto x8733 = host_outs.at(2);
          auto x8734 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][31 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8731);
            reg = x8731;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][32 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8732);
            reg = x8732;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][33 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8733);
            reg = x8733;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][34 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8734);
            reg = x8734;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8730);
          reg = x8730;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8735 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x8735 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8736 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x8736 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8737 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x8737 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8738 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x8738 != Fp::invalid());
        host_args.at(0) = x310;
        host_args.at(1) = x308;
        host_args.at(2) = x311;
        host_args.at(3) = x8735;
        host_args.at(4) = x8735;
        host_args.at(5) = x8737;
        host_args.at(6) = x8736;
        host_args.at(7) = x8738;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][14] = x8735;
        host_args.at(0) = x310;
        host_args.at(1) = x308;
        host_args.at(2) = x310;
        host_args.at(3) = x8737;
        host_args.at(4) = x8735;
        host_args.at(5) = x8737;
        host_args.at(6) = x8736;
        host_args.at(7) = x8738;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][15] = x8737;
      }
      if (x8664 != 0) {
        // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[0](Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
        auto x8739 = args[0][18 * steps + ((cycle - 0) & mask)];
        assert(x8739 != Fp::invalid());
        {
          host_args.at(0) = x8739;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8740 = host_outs.at(0);
          auto x8741 = host_outs.at(1);
          auto x8742 = host_outs.at(2);
          auto x8743 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][16 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8740);
            reg = x8740;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][17 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8741);
            reg = x8741;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][18 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8742);
            reg = x8742;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][19 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8743);
            reg = x8743;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8739);
          reg = x8739;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8744 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x8744 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8745 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x8745 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8746 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x8746 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8747 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x8747 != Fp::invalid());
        host_args.at(0) = x309;
        host_args.at(1) = x311;
        host_args.at(2) = x311;
        host_args.at(3) = x8744;
        host_args.at(4) = x8744;
        host_args.at(5) = x8746;
        host_args.at(6) = x8745;
        host_args.at(7) = x8747;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][16] = x8744;
        host_args.at(0) = x309;
        host_args.at(1) = x311;
        host_args.at(2) = x310;
        host_args.at(3) = x8746;
        host_args.at(4) = x8744;
        host_args.at(5) = x8746;
        host_args.at(6) = x8745;
        host_args.at(7) = x8747;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][17] = x8746;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8748 = x8739 + x310;
        {
          host_args.at(0) = x8748;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8749 = host_outs.at(0);
          auto x8750 = host_outs.at(1);
          auto x8751 = host_outs.at(2);
          auto x8752 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][21 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8749);
            reg = x8749;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][22 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8750);
            reg = x8750;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][23 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8751);
            reg = x8751;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][24 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8752);
            reg = x8752;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][20 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8748);
          reg = x8748;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8753 = args[2][21 * steps + ((cycle - 0) & mask)];
        assert(x8753 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8754 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x8754 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8755 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x8755 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8756 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x8756 != Fp::invalid());
        host_args.at(0) = x309;
        host_args.at(1) = x310;
        host_args.at(2) = x311;
        host_args.at(3) = x8753;
        host_args.at(4) = x8753;
        host_args.at(5) = x8755;
        host_args.at(6) = x8754;
        host_args.at(7) = x8756;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][18] = x8753;
        host_args.at(0) = x309;
        host_args.at(1) = x310;
        host_args.at(2) = x310;
        host_args.at(3) = x8755;
        host_args.at(4) = x8753;
        host_args.at(5) = x8755;
        host_args.at(6) = x8754;
        host_args.at(7) = x8756;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][19] = x8755;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8757 = x8739 + x309;
        {
          host_args.at(0) = x8757;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8758 = host_outs.at(0);
          auto x8759 = host_outs.at(1);
          auto x8760 = host_outs.at(2);
          auto x8761 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][26 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8758);
            reg = x8758;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][27 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8759);
            reg = x8759;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][28 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8760);
            reg = x8760;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][29 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8761);
            reg = x8761;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][25 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8757);
          reg = x8757;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8762 = args[2][26 * steps + ((cycle - 0) & mask)];
        assert(x8762 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8763 = args[2][28 * steps + ((cycle - 0) & mask)];
        assert(x8763 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8764 = args[2][27 * steps + ((cycle - 0) & mask)];
        assert(x8764 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8765 = args[2][29 * steps + ((cycle - 0) & mask)];
        assert(x8765 != Fp::invalid());
        host_args.at(0) = x309;
        host_args.at(1) = x309;
        host_args.at(2) = x311;
        host_args.at(3) = x8762;
        host_args.at(4) = x8762;
        host_args.at(5) = x8764;
        host_args.at(6) = x8763;
        host_args.at(7) = x8765;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][20] = x8762;
        host_args.at(0) = x309;
        host_args.at(1) = x309;
        host_args.at(2) = x310;
        host_args.at(3) = x8764;
        host_args.at(4) = x8762;
        host_args.at(5) = x8764;
        host_args.at(6) = x8763;
        host_args.at(7) = x8765;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][21] = x8764;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8766 = x8739 + x308;
        {
          host_args.at(0) = x8766;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8767 = host_outs.at(0);
          auto x8768 = host_outs.at(1);
          auto x8769 = host_outs.at(2);
          auto x8770 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][31 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8767);
            reg = x8767;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][32 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8768);
            reg = x8768;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][33 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8769);
            reg = x8769;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][34 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8770);
            reg = x8770;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8766);
          reg = x8766;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8771 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x8771 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8772 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x8772 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8773 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x8773 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8774 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x8774 != Fp::invalid());
        host_args.at(0) = x309;
        host_args.at(1) = x308;
        host_args.at(2) = x311;
        host_args.at(3) = x8771;
        host_args.at(4) = x8771;
        host_args.at(5) = x8773;
        host_args.at(6) = x8772;
        host_args.at(7) = x8774;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][22] = x8771;
        host_args.at(0) = x309;
        host_args.at(1) = x308;
        host_args.at(2) = x310;
        host_args.at(3) = x8773;
        host_args.at(4) = x8771;
        host_args.at(5) = x8773;
        host_args.at(6) = x8772;
        host_args.at(7) = x8774;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][23] = x8773;
      }
      if (x8665 != 0) {
        // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/macro_ops(recursion::MacroInst)/operand[0](Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
        auto x8775 = args[0][18 * steps + ((cycle - 0) & mask)];
        assert(x8775 != Fp::invalid());
        {
          host_args.at(0) = x8775;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8776 = host_outs.at(0);
          auto x8777 = host_outs.at(1);
          auto x8778 = host_outs.at(2);
          auto x8779 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][16 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8776);
            reg = x8776;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][17 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8777);
            reg = x8777;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][18 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8778);
            reg = x8778;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][19 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8779);
            reg = x8779;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][15 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8775);
          reg = x8775;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8780 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x8780 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8781 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x8781 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8782 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x8782 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8783 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x8783 != Fp::invalid());
        host_args.at(0) = x308;
        host_args.at(1) = x311;
        host_args.at(2) = x311;
        host_args.at(3) = x8780;
        host_args.at(4) = x8780;
        host_args.at(5) = x8782;
        host_args.at(6) = x8781;
        host_args.at(7) = x8783;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][24] = x8780;
        host_args.at(0) = x308;
        host_args.at(1) = x311;
        host_args.at(2) = x310;
        host_args.at(3) = x8782;
        host_args.at(4) = x8780;
        host_args.at(5) = x8782;
        host_args.at(6) = x8781;
        host_args.at(7) = x8783;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][25] = x8782;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8784 = x8775 + x310;
        {
          host_args.at(0) = x8784;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8785 = host_outs.at(0);
          auto x8786 = host_outs.at(1);
          auto x8787 = host_outs.at(2);
          auto x8788 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][21 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8785);
            reg = x8785;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][22 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8786);
            reg = x8786;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][23 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8787);
            reg = x8787;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][24 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8788);
            reg = x8788;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][20 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8784);
          reg = x8784;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8789 = args[2][21 * steps + ((cycle - 0) & mask)];
        assert(x8789 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8790 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x8790 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8791 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x8791 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8792 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x8792 != Fp::invalid());
        host_args.at(0) = x308;
        host_args.at(1) = x310;
        host_args.at(2) = x311;
        host_args.at(3) = x8789;
        host_args.at(4) = x8789;
        host_args.at(5) = x8791;
        host_args.at(6) = x8790;
        host_args.at(7) = x8792;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][26] = x8789;
        host_args.at(0) = x308;
        host_args.at(1) = x310;
        host_args.at(2) = x310;
        host_args.at(3) = x8791;
        host_args.at(4) = x8789;
        host_args.at(5) = x8791;
        host_args.at(6) = x8790;
        host_args.at(7) = x8792;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][27] = x8791;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8793 = x8775 + x309;
        {
          host_args.at(0) = x8793;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8794 = host_outs.at(0);
          auto x8795 = host_outs.at(1);
          auto x8796 = host_outs.at(2);
          auto x8797 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][26 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8794);
            reg = x8794;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][27 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8795);
            reg = x8795;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][28 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8796);
            reg = x8796;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][29 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8797);
            reg = x8797;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][25 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8793);
          reg = x8793;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8798 = args[2][26 * steps + ((cycle - 0) & mask)];
        assert(x8798 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8799 = args[2][28 * steps + ((cycle - 0) & mask)];
        assert(x8799 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8800 = args[2][27 * steps + ((cycle - 0) & mask)];
        assert(x8800 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8801 = args[2][29 * steps + ((cycle - 0) & mask)];
        assert(x8801 != Fp::invalid());
        host_args.at(0) = x308;
        host_args.at(1) = x309;
        host_args.at(2) = x311;
        host_args.at(3) = x8798;
        host_args.at(4) = x8798;
        host_args.at(5) = x8800;
        host_args.at(6) = x8799;
        host_args.at(7) = x8801;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][28] = x8798;
        host_args.at(0) = x308;
        host_args.at(1) = x309;
        host_args.at(2) = x310;
        host_args.at(3) = x8800;
        host_args.at(4) = x8798;
        host_args.at(5) = x8800;
        host_args.at(6) = x8799;
        host_args.at(7) = x8801;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][29] = x8800;
        // loc("zirgen/circuit/recursion/macro.cpp":37:37)
        auto x8802 = x8775 + x308;
        {
          host_args.at(0) = x8802;
          host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
          auto x8803 = host_outs.at(0);
          auto x8804 = host_outs.at(1);
          auto x8805 = host_outs.at(2);
          auto x8806 = host_outs.at(3);
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][31 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8803);
            reg = x8803;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][32 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8804);
            reg = x8804;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][33 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8805);
            reg = x8805;
          }
          // loc("zirgen/circuit/recursion/wom.cpp":51:5)
          {
            auto& reg = args[2][34 * steps + cycle];
            assert(reg == Fp::invalid() || reg == x8806);
            reg = x8806;
          }
        }
        // loc("zirgen/circuit/recursion/wom.cpp":82:3)
        {
          auto& reg = args[2][30 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x8802);
          reg = x8802;
        }
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8807 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x8807 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8808 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x8808 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8809 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x8809 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x8810 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x8810 != Fp::invalid());
        host_args.at(0) = x308;
        host_args.at(1) = x308;
        host_args.at(2) = x311;
        host_args.at(3) = x8807;
        host_args.at(4) = x8807;
        host_args.at(5) = x8809;
        host_args.at(6) = x8808;
        host_args.at(7) = x8810;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][30] = x8807;
        host_args.at(0) = x308;
        host_args.at(1) = x308;
        host_args.at(2) = x310;
        host_args.at(3) = x8809;
        host_args.at(4) = x8807;
        host_args.at(5) = x8809;
        host_args.at(6) = x8808;
        host_args.at(7) = x8810;
        host(ctx, "log", "SET_GLOBAL(%u + %u, %u) -> %x, %e", host_args.data(), 8, host_outs.data(), 0);
        // loc("zirgen/circuit/recursion/macro.cpp":40:11)
        args[1][31] = x8809;
      }
    }
  }
  // loc("top(recursion::Top)/code(recursion::Code)/select(OneHot)/poseidon2_load(Reg)"("./zirgen/components/mux.h":49:25))
  auto x8811 = args[0][3 * steps + ((cycle - 0) & mask)];
  assert(x8811 != Fp::invalid());
  if (x8811 != 0) {
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/do_mont(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x8812 = args[0][8 * steps + ((cycle - 0) & mask)];
    assert(x8812 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/inputs[0](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x8813 = args[0][15 * steps + ((cycle - 0) & mask)];
    assert(x8813 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":55:13)
    auto x8814 = x8812 * x240;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":55:63)
    auto x8815 = x310 - x8812;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":55:13)
    auto x8816 = x8814 + x8815;
    {
      host_args.at(0) = x8813;
      host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
      auto x8817 = host_outs.at(0);
      auto x8818 = host_outs.at(1);
      auto x8819 = host_outs.at(2);
      auto x8820 = host_outs.at(3);
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][6 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8817);
        reg = x8817;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][7 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8818);
        reg = x8818;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][8 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8819);
        reg = x8819;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][9 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8820);
        reg = x8820;
      }
    }
    // loc("zirgen/circuit/recursion/wom.cpp":82:3)
    {
      auto& reg = args[2][5 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x8813);
      reg = x8813;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x8821 = args[2][6 * steps + ((cycle - 0) & mask)];
    assert(x8821 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/inputs[1](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x8822 = args[0][16 * steps + ((cycle - 0) & mask)];
    assert(x8822 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":57:24)
    auto x8823 = x8821 * x8816;
    {
      host_args.at(0) = x8822;
      host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
      auto x8824 = host_outs.at(0);
      auto x8825 = host_outs.at(1);
      auto x8826 = host_outs.at(2);
      auto x8827 = host_outs.at(3);
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][11 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8824);
        reg = x8824;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][12 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8825);
        reg = x8825;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][13 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8826);
        reg = x8826;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][14 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8827);
        reg = x8827;
      }
    }
    // loc("zirgen/circuit/recursion/wom.cpp":82:3)
    {
      auto& reg = args[2][10 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x8822);
      reg = x8822;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x8828 = args[2][11 * steps + ((cycle - 0) & mask)];
    assert(x8828 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/inputs[2](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x8829 = args[0][17 * steps + ((cycle - 0) & mask)];
    assert(x8829 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":57:24)
    auto x8830 = x8828 * x8816;
    {
      host_args.at(0) = x8829;
      host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
      auto x8831 = host_outs.at(0);
      auto x8832 = host_outs.at(1);
      auto x8833 = host_outs.at(2);
      auto x8834 = host_outs.at(3);
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][16 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8831);
        reg = x8831;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][17 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8832);
        reg = x8832;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][18 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8833);
        reg = x8833;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][19 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8834);
        reg = x8834;
      }
    }
    // loc("zirgen/circuit/recursion/wom.cpp":82:3)
    {
      auto& reg = args[2][15 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x8829);
      reg = x8829;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x8835 = args[2][16 * steps + ((cycle - 0) & mask)];
    assert(x8835 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/inputs[3](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x8836 = args[0][18 * steps + ((cycle - 0) & mask)];
    assert(x8836 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":57:24)
    auto x8837 = x8835 * x8816;
    {
      host_args.at(0) = x8836;
      host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
      auto x8838 = host_outs.at(0);
      auto x8839 = host_outs.at(1);
      auto x8840 = host_outs.at(2);
      auto x8841 = host_outs.at(3);
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][21 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8838);
        reg = x8838;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][22 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8839);
        reg = x8839;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][23 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8840);
        reg = x8840;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][24 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8841);
        reg = x8841;
      }
    }
    // loc("zirgen/circuit/recursion/wom.cpp":82:3)
    {
      auto& reg = args[2][20 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x8836);
      reg = x8836;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x8842 = args[2][21 * steps + ((cycle - 0) & mask)];
    assert(x8842 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/inputs[4](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x8843 = args[0][19 * steps + ((cycle - 0) & mask)];
    assert(x8843 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":57:24)
    auto x8844 = x8842 * x8816;
    {
      host_args.at(0) = x8843;
      host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
      auto x8845 = host_outs.at(0);
      auto x8846 = host_outs.at(1);
      auto x8847 = host_outs.at(2);
      auto x8848 = host_outs.at(3);
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][26 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8845);
        reg = x8845;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][27 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8846);
        reg = x8846;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][28 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8847);
        reg = x8847;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][29 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8848);
        reg = x8848;
      }
    }
    // loc("zirgen/circuit/recursion/wom.cpp":82:3)
    {
      auto& reg = args[2][25 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x8843);
      reg = x8843;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x8849 = args[2][26 * steps + ((cycle - 0) & mask)];
    assert(x8849 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/inputs[5](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x8850 = args[0][20 * steps + ((cycle - 0) & mask)];
    assert(x8850 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":57:24)
    auto x8851 = x8849 * x8816;
    {
      host_args.at(0) = x8850;
      host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
      auto x8852 = host_outs.at(0);
      auto x8853 = host_outs.at(1);
      auto x8854 = host_outs.at(2);
      auto x8855 = host_outs.at(3);
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8852);
        reg = x8852;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8853);
        reg = x8853;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8854);
        reg = x8854;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8855);
        reg = x8855;
      }
    }
    // loc("zirgen/circuit/recursion/wom.cpp":82:3)
    {
      auto& reg = args[2][30 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x8850);
      reg = x8850;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x8856 = args[2][31 * steps + ((cycle - 0) & mask)];
    assert(x8856 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/inputs[6](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x8857 = args[0][21 * steps + ((cycle - 0) & mask)];
    assert(x8857 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":57:24)
    auto x8858 = x8856 * x8816;
    {
      host_args.at(0) = x8857;
      host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
      auto x8859 = host_outs.at(0);
      auto x8860 = host_outs.at(1);
      auto x8861 = host_outs.at(2);
      auto x8862 = host_outs.at(3);
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][36 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8859);
        reg = x8859;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][37 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8860);
        reg = x8860;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][38 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8861);
        reg = x8861;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][39 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8862);
        reg = x8862;
      }
    }
    // loc("zirgen/circuit/recursion/wom.cpp":82:3)
    {
      auto& reg = args[2][35 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x8857);
      reg = x8857;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x8863 = args[2][36 * steps + ((cycle - 0) & mask)];
    assert(x8863 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/inputs[7](Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x8864 = args[0][22 * steps + ((cycle - 0) & mask)];
    assert(x8864 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":57:24)
    auto x8865 = x8863 * x8816;
    {
      host_args.at(0) = x8864;
      host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
      auto x8866 = host_outs.at(0);
      auto x8867 = host_outs.at(1);
      auto x8868 = host_outs.at(2);
      auto x8869 = host_outs.at(3);
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][41 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8866);
        reg = x8866;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][42 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8867);
        reg = x8867;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][43 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8868);
        reg = x8868;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][44 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x8869);
        reg = x8869;
      }
    }
    // loc("zirgen/circuit/recursion/wom.cpp":82:3)
    {
      auto& reg = args[2][40 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x8864);
      reg = x8864;
    }
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/prep_full(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x8870 = args[0][11 * steps + ((cycle - 0) & mask)];
    assert(x8870 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/group(OneHot)/g0(Reg)"("zirgen/circuit/recursion/poseidon2.cpp":70:13))
    auto x8871 = args[0][12 * steps + ((cycle - 0) & mask)];
    assert(x8871 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/group(OneHot)/g1(Reg)"("zirgen/circuit/recursion/poseidon2.cpp":70:13))
    auto x8872 = args[0][13 * steps + ((cycle - 0) & mask)];
    assert(x8872 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/group(OneHot)/g2(Reg)"("zirgen/circuit/recursion/poseidon2.cpp":70:13))
    auto x8873 = args[0][14 * steps + ((cycle - 0) & mask)];
    assert(x8873 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x8874 = args[2][41 * steps + ((cycle - 0) & mask)];
    assert(x8874 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/keep_state(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x8875 = args[0][9 * steps + ((cycle - 0) & mask)];
    assert(x8875 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_load(recursion::Poseidon2MemInst)/keep_upper_state(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x8876 = args[0][10 * steps + ((cycle - 0) & mask)];
    assert(x8876 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8877 = args[2][100 * steps + ((cycle - 1) & mask)];
    if (x8877 == Fp::invalid()) x8877 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8878 = args[2][101 * steps + ((cycle - 1) & mask)];
    if (x8878 == Fp::invalid()) x8878 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8879 = args[2][102 * steps + ((cycle - 1) & mask)];
    if (x8879 == Fp::invalid()) x8879 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8880 = args[2][103 * steps + ((cycle - 1) & mask)];
    if (x8880 == Fp::invalid()) x8880 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8881 = args[2][104 * steps + ((cycle - 1) & mask)];
    if (x8881 == Fp::invalid()) x8881 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8882 = args[2][105 * steps + ((cycle - 1) & mask)];
    if (x8882 == Fp::invalid()) x8882 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8883 = args[2][106 * steps + ((cycle - 1) & mask)];
    if (x8883 == Fp::invalid()) x8883 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8884 = args[2][107 * steps + ((cycle - 1) & mask)];
    if (x8884 == Fp::invalid()) x8884 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8885 = args[2][108 * steps + ((cycle - 1) & mask)];
    if (x8885 == Fp::invalid()) x8885 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8886 = args[2][109 * steps + ((cycle - 1) & mask)];
    if (x8886 == Fp::invalid()) x8886 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8887 = args[2][110 * steps + ((cycle - 1) & mask)];
    if (x8887 == Fp::invalid()) x8887 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8888 = args[2][111 * steps + ((cycle - 1) & mask)];
    if (x8888 == Fp::invalid()) x8888 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8889 = args[2][112 * steps + ((cycle - 1) & mask)];
    if (x8889 == Fp::invalid()) x8889 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8890 = args[2][113 * steps + ((cycle - 1) & mask)];
    if (x8890 == Fp::invalid()) x8890 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8891 = args[2][90 * steps + ((cycle - 1) & mask)];
    if (x8891 == Fp::invalid()) x8891 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8892 = args[2][91 * steps + ((cycle - 1) & mask)];
    if (x8892 == Fp::invalid()) x8892 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8893 = args[2][92 * steps + ((cycle - 1) & mask)];
    if (x8893 == Fp::invalid()) x8893 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8894 = args[2][93 * steps + ((cycle - 1) & mask)];
    if (x8894 == Fp::invalid()) x8894 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8895 = args[2][94 * steps + ((cycle - 1) & mask)];
    if (x8895 == Fp::invalid()) x8895 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8896 = args[2][95 * steps + ((cycle - 1) & mask)];
    if (x8896 == Fp::invalid()) x8896 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8897 = args[2][96 * steps + ((cycle - 1) & mask)];
    if (x8897 == Fp::invalid()) x8897 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8898 = args[2][97 * steps + ((cycle - 1) & mask)];
    if (x8898 == Fp::invalid()) x8898 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8899 = args[2][98 * steps + ((cycle - 1) & mask)];
    if (x8899 == Fp::invalid()) x8899 = 0;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":69:60))
    auto x8900 = args[2][99 * steps + ((cycle - 1) & mask)];
    if (x8900 == Fp::invalid()) x8900 = 0;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8901 = x8875 * x8877;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8902 = x8875 * x8878;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8903 = x8875 * x8879;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8904 = x8875 * x8880;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8905 = x8875 * x8881;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8906 = x8875 * x8882;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8907 = x8875 * x8891;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8908 = x8875 * x8892;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8909 = x8875 * x8893;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8910 = x8875 * x8894;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8911 = x8875 * x8895;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8912 = x8875 * x8896;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8913 = x8875 * x8897;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8914 = x8875 * x8898;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8915 = x8875 * x8899;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8916 = x8875 * x8900;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x8917 = x8870 * x239;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8918 = x8871 * x8830;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8919 = x8871 * x8837;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8920 = x8871 * x8844;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8921 = x8871 * x8851;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8922 = x8871 * x8858;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8923 = x8871 * x8865;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8924 = x8871 * x8823;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8925 = x8872 * x8830;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8926 = x8872 * x8837;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8927 = x8872 * x8844;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8928 = x8872 * x8851;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8929 = x8872 * x8858;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8930 = x8872 * x8865;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8931 = x8872 * x8823;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8932 = x8873 * x8830;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8933 = x8873 * x8837;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8934 = x8873 * x8844;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8935 = x8873 * x8851;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8936 = x8873 * x8858;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8937 = x8873 * x8865;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8938 = x8873 * x8823;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":68:59)
    auto x8939 = x8875 * x8876;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":57:24)
    auto x8940 = x8874 * x8816;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:39)
    auto x8941 = x310 - x8870;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":68:23)
    auto x8942 = x8875 + x8876;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8943 = x8901 + x8926;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8944 = x8903 + x8928;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8945 = x8905 + x8930;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8946 = x8907 + x8924;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8947 = x8909 + x8919;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8948 = x8911 + x8921;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8949 = x8913 + x8923;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8950 = x8915 + x8931;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8951 = x8902 + x8927;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8952 = x8904 + x8929;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8953 = x8908 + x8918;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8954 = x8910 + x8920;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8955 = x8912 + x8922;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8956 = x8916 + x8925;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x8957 = x8951 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x8958 = x8952 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x8959 = x8953 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x8960 = x8954 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x8961 = x8955 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x8962 = x8956 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8963 = x8871 * x8940;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8964 = x8872 * x8940;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":70:13)
    auto x8965 = x8873 * x8940;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x8966 = x8941 * x8946;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":68:23)
    auto x8967 = x8942 - x8939;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x8968 = x8943 + x8951;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x8969 = x8944 + x8952;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x8970 = x8946 + x8953;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x8971 = x8947 + x8954;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x8972 = x8948 + x8955;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x8973 = x8950 + x8956;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x8974 = x8957 + x8973;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x8975 = x8959 + x8971;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x8976 = x8960 + x8970;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x8977 = x8962 + x8968;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8978 = x8906 + x8964;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8979 = x8914 + x8963;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x8980 = x8968 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x8981 = x8969 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x8982 = x8970 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x8983 = x8971 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x8984 = x8972 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x8985 = x8973 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x8986 = x8978 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x8987 = x8979 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8988 = x8967 * x8883;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8989 = x8967 * x8884;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8990 = x8967 * x8885;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8991 = x8967 * x8886;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8992 = x8967 * x8887;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8993 = x8967 * x8888;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8994 = x8967 * x8889;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x8995 = x8967 * x8890;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x8996 = x8945 + x8978;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x8997 = x8949 + x8979;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x8998 = x8982 + x8975;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x8999 = x8983 + x8976;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9000 = x8958 + x8996;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9001 = x8986 + x8969;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9002 = x8961 + x8997;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9003 = x8987 + x8972;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x9004 = x8988 + x8938;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x9005 = x8990 + x8933;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x9006 = x8992 + x8935;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x9007 = x8994 + x8937;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9008 = x8980 + x8974;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9009 = x8981 + x9000;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9010 = x8984 + x9002;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9011 = x8985 + x8977;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x9012 = x8989 + x8932;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x9013 = x8991 + x8934;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x9014 = x8993 + x8936;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":69:13)
    auto x9015 = x8995 + x8965;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9016 = x8996 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9017 = x8997 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9018 = x9012 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9019 = x9013 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9020 = x9014 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9021 = x9015 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9022 = x8975 + x8999;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9023 = x8976 + x8998;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9024 = x8974 + x9011;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9025 = x9001 + x9009;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9026 = x9003 + x9010;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9027 = x8977 + x9008;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9028 = x9004 + x9012;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9029 = x9005 + x9013;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9030 = x9006 + x9014;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9031 = x9007 + x9015;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9032 = x9018 + x9029;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9033 = x9019 + x9028;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9034 = x9020 + x9031;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9035 = x9021 + x9030;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9036 = x9016 + x9001;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9037 = x9017 + x9003;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9038 = x9028 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9039 = x9029 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9040 = x9030 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9041 = x9031 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9042 = x8998 + x9010;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9043 = x8999 + x9037;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9044 = x9000 + x9036;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9045 = x9002 + x9037;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9046 = x9038 + x9032;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9047 = x9039 + x9033;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9048 = x9040 + x9034;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9049 = x9041 + x9035;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9050 = x9042 + x9011;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9051 = x9043 + x9008;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9052 = x9022 + x9045;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9053 = x9023 + x9026;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9054 = x9032 + x9047;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9055 = x9033 + x9046;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9056 = x9034 + x9049;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9057 = x9035 + x9048;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9058 = x9050 + x9009;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9059 = x9051 + x9036;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9060 = x9052 + x9027;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9061 = x9053 + x9024;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9062 = x9058 + x9046;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9063 = x9059 + x9047;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9064 = x9060 + x9044;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9065 = x9061 + x9025;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9066 = x9062 + x9048;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9067 = x9063 + x9049;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9068 = x9064 + x9054;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9069 = x9065 + x9055;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9070 = x8998 + x9066;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9071 = x8999 + x9067;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9072 = x9008 + x9067;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9073 = x9009 + x9066;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9074 = x9036 + x9067;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9075 = x9010 + x9066;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9076 = x9037 + x9067;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9077 = x9011 + x9066;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9078 = x9046 + x9066;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9079 = x9047 + x9067;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9080 = x9048 + x9066;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9081 = x9049 + x9067;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9082 = x9068 + x9056;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9083 = x9069 + x9057;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9084 = x9022 + x9082;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9085 = x9023 + x9083;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9086 = x9024 + x9083;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9087 = x9044 + x9082;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9088 = x9025 + x9083;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9089 = x9045 + x9082;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9090 = x9026 + x9083;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9091 = x9027 + x9082;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9092 = x9054 + x9082;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9093 = x9055 + x9083;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9094 = x9056 + x9082;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9095 = x9057 + x9083;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9096 = x8870 * x9085;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9097 = x9096 + x8966;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9098 = x9097 + x8917;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][90 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9098);
      reg = x9098;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9099 = x8870 * x9070;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9100 = x8870 * x238;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9101 = x8941 * x8953;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9102 = x9099 + x9101;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9103 = x9102 + x9100;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][91 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9103);
      reg = x9103;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9104 = x8870 * x9084;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9105 = x8870 * x237;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9106 = x8941 * x8947;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9107 = x9104 + x9106;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9108 = x9107 + x9105;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][92 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9108);
      reg = x9108;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9109 = x8870 * x9071;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9110 = x8870 * x236;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9111 = x8941 * x8954;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9112 = x9109 + x9111;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9113 = x9112 + x9110;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][93 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9113);
      reg = x9113;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9114 = x8870 * x9090;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9115 = x8870 * x235;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9116 = x8941 * x8948;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9117 = x9114 + x9116;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9118 = x9117 + x9115;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][94 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9118);
      reg = x9118;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9119 = x8870 * x9075;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9120 = x8870 * x234;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9121 = x8941 * x8955;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9122 = x9119 + x9121;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9123 = x9122 + x9120;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][95 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9123);
      reg = x9123;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9124 = x8870 * x9089;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9125 = x8870 * x233;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9126 = x8941 * x8949;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9127 = x9124 + x9126;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9128 = x9127 + x9125;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][96 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9128);
      reg = x9128;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9129 = x8870 * x9076;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9130 = x8870 * x232;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9131 = x8941 * x8979;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9132 = x9129 + x9131;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9133 = x9132 + x9130;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][97 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9133);
      reg = x9133;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9134 = x8870 * x9086;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9135 = x8870 * x231;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9136 = x8941 * x8950;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9137 = x9134 + x9136;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9138 = x9137 + x9135;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][98 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9138);
      reg = x9138;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9139 = x8870 * x9077;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9140 = x8870 * x230;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9141 = x8941 * x8956;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9142 = x9139 + x9141;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9143 = x9142 + x9140;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][99 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9143);
      reg = x9143;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9144 = x8870 * x9091;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9145 = x8870 * x229;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9146 = x8941 * x8943;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9147 = x9144 + x9146;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9148 = x9147 + x9145;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][100 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9148);
      reg = x9148;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9149 = x8870 * x9072;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9150 = x8870 * x228;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9151 = x8941 * x8951;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9152 = x9149 + x9151;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9153 = x9152 + x9150;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][101 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9153);
      reg = x9153;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9154 = x8870 * x9088;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9155 = x8870 * x227;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9156 = x8941 * x8944;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9157 = x9154 + x9156;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9158 = x9157 + x9155;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][102 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9158);
      reg = x9158;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9159 = x8870 * x9073;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9160 = x8870 * x226;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9161 = x8941 * x8952;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9162 = x9159 + x9161;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9163 = x9162 + x9160;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][103 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9163);
      reg = x9163;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9164 = x8870 * x9087;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9165 = x8870 * x225;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9166 = x8941 * x8945;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9167 = x9164 + x9166;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9168 = x9167 + x9165;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][104 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9168);
      reg = x9168;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9169 = x8870 * x9074;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9170 = x8870 * x224;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9171 = x8941 * x8978;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9172 = x9169 + x9171;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9173 = x9172 + x9170;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][105 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9173);
      reg = x9173;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9174 = x8870 * x9093;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9175 = x8870 * x223;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9176 = x8941 * x9004;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9177 = x9174 + x9176;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9178 = x9177 + x9175;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][106 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9178);
      reg = x9178;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9179 = x8870 * x9078;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9180 = x8870 * x222;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9181 = x8941 * x9012;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9182 = x9179 + x9181;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9183 = x9182 + x9180;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][107 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9183);
      reg = x9183;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9184 = x8870 * x9092;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9185 = x8870 * x221;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9186 = x8941 * x9005;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9187 = x9184 + x9186;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9188 = x9187 + x9185;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][108 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9188);
      reg = x9188;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9189 = x8870 * x9079;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9190 = x8870 * x220;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9191 = x8941 * x9013;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9192 = x9189 + x9191;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9193 = x9192 + x9190;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][109 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9193);
      reg = x9193;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9194 = x8870 * x9095;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9195 = x8870 * x219;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9196 = x8941 * x9006;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9197 = x9194 + x9196;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9198 = x9197 + x9195;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][110 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9198);
      reg = x9198;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9199 = x8870 * x9080;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9200 = x8870 * x218;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9201 = x8941 * x9014;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9202 = x9199 + x9201;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9203 = x9202 + x9200;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][111 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9203);
      reg = x9203;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9204 = x8870 * x9094;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9205 = x8870 * x217;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9206 = x8941 * x9007;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9207 = x9204 + x9206;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9208 = x9207 + x9205;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][112 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9208);
      reg = x9208;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9209 = x8870 * x9081;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:17)
    auto x9210 = x8870 * x216;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:38)
    auto x9211 = x8941 * x9015;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":76:11)
    auto x9212 = x9209 + x9211;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":77:11)
    auto x9213 = x9212 + x9210;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":78:5)
    {
      auto& reg = args[2][113 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9213);
      reg = x9213;
    }
    // loc("./zirgen/components/onehot.h":46:19)
    auto x9214 = x8873 * x309;
    // loc("./zirgen/components/onehot.h":46:13)
    auto x9215 = x8872 + x9214;
    host_args.at(0) = x8875;
    host_args.at(1) = x8876;
    host_args.at(2) = x8870;
    host_args.at(3) = x9215;
    host_args.at(4) = x8812;
    host(ctx, "log", "POSEIDON2_LOAD: keepState(%u), keepUpperState(%u) prepFull(%u), group(%u), doMont(%u)", host_args.data(), 5, host_outs.data(), 0);
  }
  // loc("top(recursion::Top)/code(recursion::Code)/select(OneHot)/poseidon2_full(Reg)"("./zirgen/components/mux.h":49:25))
  auto x9216 = args[0][4 * steps + ((cycle - 0) & mask)];
  assert(x9216 != Fp::invalid());
  if (x9216 != 0) {
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_full(recursion::Poseidon2FullInst)/cycle(OneHot)/c2(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x9217 = args[0][10 * steps + ((cycle - 0) & mask)];
    assert(x9217 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_full(recursion::Poseidon2FullInst)/cycle(OneHot)/c3(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x9218 = args[0][11 * steps + ((cycle - 0) & mask)];
    assert(x9218 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_full(recursion::Poseidon2FullInst)/cycle(OneHot)/c1(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x9219 = args[0][9 * steps + ((cycle - 0) & mask)];
    assert(x9219 != Fp::invalid());
    // loc("./zirgen/components/onehot.h":46:19)
    auto x9220 = x9217 * x309;
    // loc("./zirgen/components/onehot.h":46:19)
    auto x9221 = x9218 * x308;
    // loc("./zirgen/components/onehot.h":46:13)
    auto x9222 = x9219 + x9220;
    // loc("./zirgen/components/onehot.h":46:13)
    auto x9223 = x9222 + x9221;
    host_args.at(0) = x9223;
    host(ctx, "log", "POSEIDON2_FULL: %u", host_args.data(), 1, host_outs.data(), 0);
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9224 = args[2][100 * steps + ((cycle - 1) & mask)];
    assert(x9224 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9225 = args[2][101 * steps + ((cycle - 1) & mask)];
    assert(x9225 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9226 = args[2][102 * steps + ((cycle - 1) & mask)];
    assert(x9226 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9227 = args[2][103 * steps + ((cycle - 1) & mask)];
    assert(x9227 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9228 = args[2][104 * steps + ((cycle - 1) & mask)];
    assert(x9228 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9229 = args[2][105 * steps + ((cycle - 1) & mask)];
    assert(x9229 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9230 = args[2][106 * steps + ((cycle - 1) & mask)];
    assert(x9230 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9231 = args[2][107 * steps + ((cycle - 1) & mask)];
    assert(x9231 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9232 = args[2][108 * steps + ((cycle - 1) & mask)];
    assert(x9232 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9233 = args[2][109 * steps + ((cycle - 1) & mask)];
    assert(x9233 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9234 = args[2][110 * steps + ((cycle - 1) & mask)];
    assert(x9234 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9235 = args[2][111 * steps + ((cycle - 1) & mask)];
    assert(x9235 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9236 = args[2][112 * steps + ((cycle - 1) & mask)];
    assert(x9236 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9237 = args[2][113 * steps + ((cycle - 1) & mask)];
    assert(x9237 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9238 = args[2][90 * steps + ((cycle - 1) & mask)];
    assert(x9238 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9239 = args[2][91 * steps + ((cycle - 1) & mask)];
    assert(x9239 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9240 = args[2][92 * steps + ((cycle - 1) & mask)];
    assert(x9240 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9241 = args[2][93 * steps + ((cycle - 1) & mask)];
    assert(x9241 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9242 = args[2][94 * steps + ((cycle - 1) & mask)];
    assert(x9242 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9243 = args[2][95 * steps + ((cycle - 1) & mask)];
    assert(x9243 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9244 = args[2][96 * steps + ((cycle - 1) & mask)];
    assert(x9244 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9245 = args[2][97 * steps + ((cycle - 1) & mask)];
    assert(x9245 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9246 = args[2][98 * steps + ((cycle - 1) & mask)];
    assert(x9246 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":201:42))
    auto x9247 = args[2][99 * steps + ((cycle - 1) & mask)];
    assert(x9247 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9248 = x9238 * x9238;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9249 = x9248 * x9248;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][5 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9249);
      reg = x9249;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9250 = x9239 * x9239;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9251 = args[2][5 * steps + ((cycle - 0) & mask)];
    assert(x9251 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9252 = x9251 * x9248;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9253 = x9252 * x9238;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9254 = x9250 * x9250;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][6 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9254);
      reg = x9254;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9255 = x9240 * x9240;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9256 = args[2][6 * steps + ((cycle - 0) & mask)];
    assert(x9256 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9257 = x9256 * x9250;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9258 = x9257 * x9239;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9259 = x9255 * x9255;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][7 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9259);
      reg = x9259;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9260 = x9241 * x9241;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9261 = args[2][7 * steps + ((cycle - 0) & mask)];
    assert(x9261 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9262 = x9261 * x9255;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9263 = x9262 * x9240;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9264 = x9260 * x9260;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][8 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9264);
      reg = x9264;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9265 = x9242 * x9242;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9266 = args[2][8 * steps + ((cycle - 0) & mask)];
    assert(x9266 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9267 = x9266 * x9260;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9268 = x9267 * x9241;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9269 = x9265 * x9265;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][9 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9269);
      reg = x9269;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9270 = x9243 * x9243;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9271 = args[2][9 * steps + ((cycle - 0) & mask)];
    assert(x9271 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9272 = x9271 * x9265;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9273 = x9272 * x9242;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9274 = x9270 * x9270;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][10 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9274);
      reg = x9274;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9275 = x9244 * x9244;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9276 = args[2][10 * steps + ((cycle - 0) & mask)];
    assert(x9276 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9277 = x9276 * x9270;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9278 = x9277 * x9243;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9279 = x9275 * x9275;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][11 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9279);
      reg = x9279;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9280 = x9245 * x9245;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9281 = args[2][11 * steps + ((cycle - 0) & mask)];
    assert(x9281 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9282 = x9281 * x9275;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9283 = x9282 * x9244;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9284 = x9280 * x9280;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][12 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9284);
      reg = x9284;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9285 = x9246 * x9246;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9286 = args[2][12 * steps + ((cycle - 0) & mask)];
    assert(x9286 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9287 = x9286 * x9280;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9288 = x9287 * x9245;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9289 = x9285 * x9285;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][13 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9289);
      reg = x9289;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9290 = x9247 * x9247;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9291 = args[2][13 * steps + ((cycle - 0) & mask)];
    assert(x9291 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9292 = x9291 * x9285;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9293 = x9292 * x9246;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9294 = x9290 * x9290;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][14 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9294);
      reg = x9294;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9295 = x9224 * x9224;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9296 = args[2][14 * steps + ((cycle - 0) & mask)];
    assert(x9296 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9297 = x9296 * x9290;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9298 = x9297 * x9247;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9299 = x9295 * x9295;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][15 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9299);
      reg = x9299;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9300 = x9225 * x9225;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9301 = args[2][15 * steps + ((cycle - 0) & mask)];
    assert(x9301 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9302 = x9301 * x9295;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9303 = x9302 * x9224;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9304 = x9300 * x9300;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][16 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9304);
      reg = x9304;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9305 = x9226 * x9226;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9306 = args[2][16 * steps + ((cycle - 0) & mask)];
    assert(x9306 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9307 = x9306 * x9300;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9308 = x9307 * x9225;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9309 = x9305 * x9305;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][17 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9309);
      reg = x9309;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9310 = x9227 * x9227;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9311 = args[2][17 * steps + ((cycle - 0) & mask)];
    assert(x9311 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9312 = x9311 * x9305;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9313 = x9312 * x9226;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9314 = x9310 * x9310;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][18 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9314);
      reg = x9314;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9315 = x9228 * x9228;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9316 = args[2][18 * steps + ((cycle - 0) & mask)];
    assert(x9316 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9317 = x9316 * x9310;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9318 = x9317 * x9227;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9319 = x9315 * x9315;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][19 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9319);
      reg = x9319;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9320 = x9229 * x9229;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9321 = args[2][19 * steps + ((cycle - 0) & mask)];
    assert(x9321 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9322 = x9321 * x9315;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9323 = x9322 * x9228;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9324 = x9320 * x9320;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][20 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9324);
      reg = x9324;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9325 = x9230 * x9230;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9326 = args[2][20 * steps + ((cycle - 0) & mask)];
    assert(x9326 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9327 = x9326 * x9320;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9328 = x9327 * x9229;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9329 = x9325 * x9325;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][21 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9329);
      reg = x9329;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9330 = x9231 * x9231;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9331 = args[2][21 * steps + ((cycle - 0) & mask)];
    assert(x9331 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9332 = x9331 * x9325;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9333 = x9332 * x9230;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9334 = x9330 * x9330;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][22 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9334);
      reg = x9334;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9335 = x9232 * x9232;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9336 = args[2][22 * steps + ((cycle - 0) & mask)];
    assert(x9336 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9337 = x9336 * x9330;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9338 = x9337 * x9231;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9339 = x9335 * x9335;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][23 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9339);
      reg = x9339;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9340 = x9233 * x9233;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9341 = args[2][23 * steps + ((cycle - 0) & mask)];
    assert(x9341 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9342 = x9341 * x9335;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9343 = x9342 * x9232;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9344 = x9340 * x9340;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][24 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9344);
      reg = x9344;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9345 = x9234 * x9234;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9346 = args[2][24 * steps + ((cycle - 0) & mask)];
    assert(x9346 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9347 = x9346 * x9340;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9348 = x9347 * x9233;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9349 = x9345 * x9345;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][25 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9349);
      reg = x9349;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9350 = x9235 * x9235;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9351 = args[2][25 * steps + ((cycle - 0) & mask)];
    assert(x9351 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9352 = x9351 * x9345;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9353 = x9352 * x9234;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9354 = x9350 * x9350;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][26 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9354);
      reg = x9354;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9355 = x9236 * x9236;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9356 = args[2][26 * steps + ((cycle - 0) & mask)];
    assert(x9356 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9357 = x9356 * x9350;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9358 = x9357 * x9235;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9359 = x9355 * x9355;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][27 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9359);
      reg = x9359;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9360 = x9237 * x9237;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9361 = args[2][27 * steps + ((cycle - 0) & mask)];
    assert(x9361 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9362 = x9361 * x9355;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9363 = x9362 * x9236;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9364 = x9360 * x9360;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][28 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9364);
      reg = x9364;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9365 = x9283 + x9288;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9366 = x9293 + x9298;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9367 = x9303 + x9308;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9368 = x9313 + x9318;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9369 = x9323 + x9328;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9370 = x9333 + x9338;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9371 = x9343 + x9348;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9372 = x9353 + x9358;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9373 = x9253 + x9258;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9374 = x9263 + x9268;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9375 = x9273 + x9278;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9376 = x9365 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9377 = x9366 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9378 = x9367 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9379 = x9368 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9380 = x9369 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9381 = x9370 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9382 = x9371 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9383 = x9372 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9384 = x9373 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9385 = x9374 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9386 = x9375 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9387 = x9278 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9388 = x9288 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9389 = x9298 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9390 = x9308 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9391 = x9318 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9392 = x9328 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9393 = x9338 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9394 = x9348 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9395 = x9358 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9396 = x9258 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9397 = x9268 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9398 = x9387 + x9365;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9399 = x9388 + x9375;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9400 = x9389 + x9367;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9401 = x9390 + x9366;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9402 = x9391 + x9369;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9403 = x9392 + x9368;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9404 = x9393 + x9371;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9405 = x9394 + x9370;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9406 = x9396 + x9374;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9407 = x9397 + x9373;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9408 = x9376 + x9399;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9409 = x9377 + x9400;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9410 = x9378 + x9401;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9411 = x9379 + x9402;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9412 = x9380 + x9403;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9413 = x9381 + x9404;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9414 = x9382 + x9405;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9415 = x9386 + x9398;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9416 = args[2][28 * steps + ((cycle - 0) & mask)];
    assert(x9416 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_full(recursion::Poseidon2FullInst)/cycle(OneHot)/c0(Reg)"("zirgen/circuit/recursion/poseidon2.cpp":188:19))
    auto x9417 = args[0][8 * steps + ((cycle - 0) & mask)];
    assert(x9417 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9418 = x9416 * x9360;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9419 = x9417 * x210;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9420 = x9417 * x209;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9421 = x9417 * x207;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9422 = x9417 * x199;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9423 = x9417 * x193;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9424 = x9417 * x191;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9425 = x9417 * x184;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9426 = x9417 * x183;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9427 = x9417 * x174;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9428 = x9417 * x170;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9429 = x9417 * x166;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9430 = x9417 * x162;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9431 = x9417 * x161;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9432 = x9417 * x160;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9433 = x9417 * x159;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9434 = x9417 * x154;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9435 = x9417 * x149;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9436 = x9417 * x144;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9437 = x9417 * x141;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9438 = x9417 * x139;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9439 = x9417 * x138;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9440 = x9417 * x135;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9441 = x9417 * x126;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9442 = x9417 * x122;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9443 = x9217 * x214;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9444 = x9217 * x208;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9445 = x9217 * x205;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9446 = x9217 * x204;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9447 = x9217 * x188;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9448 = x9217 * x187;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9449 = x9217 * x185;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9450 = x9217 * x182;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9451 = x9217 * x178;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9452 = x9217 * x176;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9453 = x9217 * x173;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9454 = x9217 * x165;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9455 = x9217 * x155;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9456 = x9217 * x150;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9457 = x9217 * x137;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9458 = x9217 * x136;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9459 = x9217 * x133;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9460 = x9217 * x131;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9461 = x9217 * x130;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9462 = x9217 * x125;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9463 = x9217 * x124;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9464 = x9217 * x123;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9465 = x9217 * x121;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9466 = x9217 * x120;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9467 = x9218 * x215;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9468 = x9218 * x213;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9469 = x9218 * x212;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9470 = x9218 * x211;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9471 = x9218 * x206;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9472 = x9218 * x201;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9473 = x9218 * x195;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9474 = x9218 * x194;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9475 = x9218 * x190;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9476 = x9218 * x189;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9477 = x9218 * x180;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9478 = x9218 * x179;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9479 = x9218 * x175;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9480 = x9218 * x167;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9481 = x9218 * x164;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9482 = x9218 * x163;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9483 = x9218 * x158;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9484 = x9218 * x156;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9485 = x9218 * x147;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9486 = x9218 * x140;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9487 = x9218 * x134;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9488 = x9218 * x132;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9489 = x9218 * x129;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9490 = x9218 * x128;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9491 = x9219 * x203;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9492 = x9219 * x202;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9493 = x9219 * x200;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9494 = x9219 * x198;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9495 = x9219 * x197;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9496 = x9219 * x196;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9497 = x9219 * x192;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9498 = x9219 * x186;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9499 = x9219 * x181;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9500 = x9219 * x177;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9501 = x9219 * x172;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9502 = x9219 * x171;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9503 = x9219 * x169;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9504 = x9219 * x168;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9505 = x9219 * x157;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9506 = x9219 * x153;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9507 = x9219 * x152;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9508 = x9219 * x151;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9509 = x9219 * x148;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9510 = x9219 * x146;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9511 = x9219 * x145;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9512 = x9219 * x143;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9513 = x9219 * x142;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9514 = x9219 * x127;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9515 = x9418 * x9237;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9516 = x9398 + x9408;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9517 = x9399 + x9415;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9518 = x9400 + x9410;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9519 = x9401 + x9409;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9520 = x9402 + x9412;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9521 = x9403 + x9411;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9522 = x9404 + x9414;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9523 = x9405 + x9413;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9524 = x9384 + x9406;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9525 = x9385 + x9407;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9526 = x9363 + x9515;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9527 = x9395 + x9526;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9528 = x9383 + x9527;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9529 = x9526 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9530 = x9515 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9531 = x9419 + x9491;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9532 = x9420 + x9514;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9533 = x9421 + x9502;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9534 = x9422 + x9497;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9535 = x9423 + x9495;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9536 = x9424 + x9512;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9537 = x9425 + x9506;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9538 = x9426 + x9501;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9539 = x9427 + x9492;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9540 = x9428 + x9503;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9541 = x9429 + x9499;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9542 = x9430 + x9510;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9543 = x9431 + x9508;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9544 = x9432 + x9509;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9545 = x9433 + x9500;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9546 = x9434 + x9504;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9547 = x9435 + x9507;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9548 = x9436 + x9513;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9549 = x9437 + x9505;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9550 = x9438 + x9498;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9551 = x9439 + x9494;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9552 = x9440 + x9511;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9553 = x9441 + x9493;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9554 = x9442 + x9496;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9555 = x9406 + x9525;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9556 = x9407 + x9524;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9557 = x9530 + x9372;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9558 = x9529 + x9557;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9559 = x9531 + x9465;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9560 = x9532 + x9444;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9561 = x9533 + x9463;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9562 = x9534 + x9451;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9563 = x9535 + x9446;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9564 = x9536 + x9454;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9565 = x9537 + x9453;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9566 = x9538 + x9466;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9567 = x9539 + x9450;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9568 = x9540 + x9457;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9569 = x9541 + x9458;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9570 = x9542 + x9447;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9571 = x9543 + x9461;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9572 = x9544 + x9448;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9573 = x9545 + x9443;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9574 = x9546 + x9459;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9575 = x9547 + x9455;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9576 = x9548 + x9456;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9577 = x9549 + x9460;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9578 = x9550 + x9462;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9579 = x9551 + x9445;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9580 = x9552 + x9464;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9581 = x9553 + x9452;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9582 = x9554 + x9449;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9583 = x9524 + x9415;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9584 = x9525 + x9408;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9585 = x9559 + x9478;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9586 = x9560 + x9481;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9587 = x9561 + x9474;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9588 = x9562 + x9473;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9589 = x9563 + x9487;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9590 = x9564 + x9480;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9591 = x9565 + x9479;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9592 = x9566 + x9484;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9593 = x9567 + x9472;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9594 = x9568 + x9483;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9595 = x9569 + x9482;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9596 = x9570 + x9489;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9597 = x9571 + x9470;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9598 = x9572 + x9490;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9599 = x9573 + x9486;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9600 = x9574 + x9477;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9601 = x9575 + x9476;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9602 = x9576 + x9467;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9603 = x9577 + x9488;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9604 = x9578 + x9485;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9605 = x9579 + x9471;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9606 = x9580 + x9468;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9607 = x9581 + x9469;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9608 = x9582 + x9475;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9609 = x9527 + x9558;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9610 = x9557 + x9528;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9611 = x9583 + x9409;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9612 = x9584 + x9410;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9613 = x9555 + x9516;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9614 = x9556 + x9517;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9615 = x9611 + x9411;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9616 = x9612 + x9412;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9617 = x9613 + x9518;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9618 = x9614 + x9519;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9619 = x9615 + x9413;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9620 = x9616 + x9414;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9621 = x9617 + x9520;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9622 = x9618 + x9521;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9623 = x9619 + x9528;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9624 = x9620 + x9558;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9625 = x9621 + x9522;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9626 = x9622 + x9523;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9627 = x9524 + x9623;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9628 = x9525 + x9624;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9629 = x9408 + x9624;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9630 = x9409 + x9623;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9631 = x9410 + x9624;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9632 = x9411 + x9623;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9633 = x9412 + x9624;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9634 = x9413 + x9623;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9635 = x9414 + x9624;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9636 = x9528 + x9623;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9637 = x9558 + x9624;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9638 = x9415 + x9623;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9639 = x9625 + x9609;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9640 = x9626 + x9610;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9641 = x9555 + x9639;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9642 = x9556 + x9640;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9643 = x9516 + x9639;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9644 = x9517 + x9640;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9645 = x9518 + x9639;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9646 = x9519 + x9640;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9647 = x9520 + x9639;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9648 = x9521 + x9640;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9649 = x9522 + x9639;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9650 = x9523 + x9640;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9651 = x9609 + x9639;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9652 = x9610 + x9640;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9653 = x9642 + x9605;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][29 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9653);
      reg = x9653;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9654 = args[2][29 * steps + ((cycle - 0) & mask)];
    assert(x9654 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9655 = x9654 * x9654;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9656 = x9655 * x9655;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][53 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9656);
      reg = x9656;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9657 = x9627 + x9595;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9658 = args[2][53 * steps + ((cycle - 0) & mask)];
    assert(x9658 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9659 = x9658 * x9655;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9660 = x9659 * x9654;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][30 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9657);
      reg = x9657;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9661 = args[2][30 * steps + ((cycle - 0) & mask)];
    assert(x9661 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9662 = x9661 * x9661;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9663 = x9662 * x9662;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][54 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9663);
      reg = x9663;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9664 = x9641 + x9602;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9665 = args[2][54 * steps + ((cycle - 0) & mask)];
    assert(x9665 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9666 = x9665 * x9662;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9667 = x9666 * x9661;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][31 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9664);
      reg = x9664;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9668 = args[2][31 * steps + ((cycle - 0) & mask)];
    assert(x9668 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9669 = x9668 * x9668;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9670 = x9669 * x9669;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][55 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9670);
      reg = x9670;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9671 = x9628 + x9589;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9672 = args[2][55 * steps + ((cycle - 0) & mask)];
    assert(x9672 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9673 = x9672 * x9669;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9674 = x9673 * x9668;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][32 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9671);
      reg = x9671;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9675 = args[2][32 * steps + ((cycle - 0) & mask)];
    assert(x9675 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9676 = x9675 * x9675;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9677 = x9676 * x9676;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][56 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9677);
      reg = x9677;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9678 = x9644 + x9597;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9679 = args[2][56 * steps + ((cycle - 0) & mask)];
    assert(x9679 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9680 = x9679 * x9676;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9681 = x9680 * x9675;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][33 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9678);
      reg = x9678;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9682 = args[2][33 * steps + ((cycle - 0) & mask)];
    assert(x9682 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9683 = x9682 * x9682;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9684 = x9683 * x9683;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][57 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9684);
      reg = x9684;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9685 = x9638 + x9586;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9686 = args[2][57 * steps + ((cycle - 0) & mask)];
    assert(x9686 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9687 = x9686 * x9683;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9688 = x9687 * x9682;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][34 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9685);
      reg = x9685;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9689 = args[2][34 * steps + ((cycle - 0) & mask)];
    assert(x9689 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9690 = x9689 * x9689;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9691 = x9690 * x9690;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][58 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9691);
      reg = x9691;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9692 = x9643 + x9598;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9693 = args[2][58 * steps + ((cycle - 0) & mask)];
    assert(x9693 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9694 = x9693 * x9690;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9695 = x9694 * x9689;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][35 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9692);
      reg = x9692;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9696 = args[2][35 * steps + ((cycle - 0) & mask)];
    assert(x9696 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9697 = x9696 * x9696;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9698 = x9697 * x9697;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][59 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9698);
      reg = x9698;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9699 = x9629 + x9592;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9700 = args[2][59 * steps + ((cycle - 0) & mask)];
    assert(x9700 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9701 = x9700 * x9697;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9702 = x9701 * x9696;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][36 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9699);
      reg = x9699;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9703 = args[2][36 * steps + ((cycle - 0) & mask)];
    assert(x9703 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9704 = x9703 * x9703;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9705 = x9704 * x9704;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][60 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9705);
      reg = x9705;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9706 = x9646 + x9590;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9707 = args[2][60 * steps + ((cycle - 0) & mask)];
    assert(x9707 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9708 = x9707 * x9704;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9709 = x9708 * x9703;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][37 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9706);
      reg = x9706;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9710 = args[2][37 * steps + ((cycle - 0) & mask)];
    assert(x9710 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9711 = x9710 * x9710;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9712 = x9711 * x9711;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][61 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9712);
      reg = x9712;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9713 = x9630 + x9603;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9714 = args[2][61 * steps + ((cycle - 0) & mask)];
    assert(x9714 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9715 = x9714 * x9711;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9716 = x9715 * x9710;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][38 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9713);
      reg = x9713;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9717 = args[2][38 * steps + ((cycle - 0) & mask)];
    assert(x9717 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9718 = x9717 * x9717;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9719 = x9718 * x9718;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][62 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9719);
      reg = x9719;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9720 = x9645 + x9604;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9721 = args[2][62 * steps + ((cycle - 0) & mask)];
    assert(x9721 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9722 = x9721 * x9718;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9723 = x9722 * x9717;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][39 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9720);
      reg = x9720;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9724 = args[2][39 * steps + ((cycle - 0) & mask)];
    assert(x9724 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9725 = x9724 * x9724;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9726 = x9725 * x9725;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][63 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9726);
      reg = x9726;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9727 = x9631 + x9594;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9728 = args[2][63 * steps + ((cycle - 0) & mask)];
    assert(x9728 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9729 = x9728 * x9725;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9730 = x9729 * x9724;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][40 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9727);
      reg = x9727;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9731 = args[2][40 * steps + ((cycle - 0) & mask)];
    assert(x9731 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9732 = x9731 * x9731;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9733 = x9732 * x9732;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][64 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9733);
      reg = x9733;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9734 = x9648 + x9588;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9735 = args[2][64 * steps + ((cycle - 0) & mask)];
    assert(x9735 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9736 = x9735 * x9732;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9737 = x9736 * x9731;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][41 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9734);
      reg = x9734;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9738 = args[2][41 * steps + ((cycle - 0) & mask)];
    assert(x9738 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9739 = x9738 * x9738;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9740 = x9739 * x9739;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][65 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9740);
      reg = x9740;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9741 = x9632 + x9607;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9742 = args[2][65 * steps + ((cycle - 0) & mask)];
    assert(x9742 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9743 = x9742 * x9739;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9744 = x9743 * x9738;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][42 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9741);
      reg = x9741;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9745 = args[2][42 * steps + ((cycle - 0) & mask)];
    assert(x9745 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9746 = x9745 * x9745;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9747 = x9746 * x9746;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][66 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9747);
      reg = x9747;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9748 = x9647 + x9606;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9749 = args[2][66 * steps + ((cycle - 0) & mask)];
    assert(x9749 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9750 = x9749 * x9746;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9751 = x9750 * x9745;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][43 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9748);
      reg = x9748;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9752 = args[2][43 * steps + ((cycle - 0) & mask)];
    assert(x9752 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9753 = x9752 * x9752;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9754 = x9753 * x9753;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][67 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9754);
      reg = x9754;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9755 = x9633 + x9599;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9756 = args[2][67 * steps + ((cycle - 0) & mask)];
    assert(x9756 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9757 = x9756 * x9753;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9758 = x9757 * x9752;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][44 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9755);
      reg = x9755;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9759 = args[2][44 * steps + ((cycle - 0) & mask)];
    assert(x9759 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9760 = x9759 * x9759;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9761 = x9760 * x9760;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][68 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9761);
      reg = x9761;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9762 = x9650 + x9601;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9763 = args[2][68 * steps + ((cycle - 0) & mask)];
    assert(x9763 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9764 = x9763 * x9760;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9765 = x9764 * x9759;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][45 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9762);
      reg = x9762;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9766 = args[2][45 * steps + ((cycle - 0) & mask)];
    assert(x9766 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9767 = x9766 * x9766;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9768 = x9767 * x9767;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][69 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9768);
      reg = x9768;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9769 = x9634 + x9587;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9770 = args[2][69 * steps + ((cycle - 0) & mask)];
    assert(x9770 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9771 = x9770 * x9767;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9772 = x9771 * x9766;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][46 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9769);
      reg = x9769;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9773 = args[2][46 * steps + ((cycle - 0) & mask)];
    assert(x9773 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9774 = x9773 * x9773;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9775 = x9774 * x9774;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][70 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9775);
      reg = x9775;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9776 = x9649 + x9596;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9777 = args[2][70 * steps + ((cycle - 0) & mask)];
    assert(x9777 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9778 = x9777 * x9774;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9779 = x9778 * x9773;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][47 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9776);
      reg = x9776;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9780 = args[2][47 * steps + ((cycle - 0) & mask)];
    assert(x9780 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9781 = x9780 * x9780;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9782 = x9781 * x9781;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][71 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9782);
      reg = x9782;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9783 = x9635 + x9585;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9784 = args[2][71 * steps + ((cycle - 0) & mask)];
    assert(x9784 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9785 = x9784 * x9781;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9786 = x9785 * x9780;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][48 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9783);
      reg = x9783;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9787 = args[2][48 * steps + ((cycle - 0) & mask)];
    assert(x9787 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9788 = x9787 * x9787;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9789 = x9788 * x9788;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][72 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9789);
      reg = x9789;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9790 = x9652 + x9593;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9791 = args[2][72 * steps + ((cycle - 0) & mask)];
    assert(x9791 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9792 = x9791 * x9788;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9793 = x9792 * x9787;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][49 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9790);
      reg = x9790;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9794 = args[2][49 * steps + ((cycle - 0) & mask)];
    assert(x9794 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9795 = x9794 * x9794;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9796 = x9795 * x9795;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][73 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9796);
      reg = x9796;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9797 = x9636 + x9591;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9798 = args[2][73 * steps + ((cycle - 0) & mask)];
    assert(x9798 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9799 = x9798 * x9795;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9800 = x9799 * x9794;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][50 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9797);
      reg = x9797;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9801 = args[2][50 * steps + ((cycle - 0) & mask)];
    assert(x9801 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9802 = x9801 * x9801;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9803 = x9802 * x9802;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][74 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9803);
      reg = x9803;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9804 = x9651 + x9600;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9805 = args[2][74 * steps + ((cycle - 0) & mask)];
    assert(x9805 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9806 = x9805 * x9802;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9807 = x9806 * x9801;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][51 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9804);
      reg = x9804;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9808 = args[2][51 * steps + ((cycle - 0) & mask)];
    assert(x9808 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9809 = x9808 * x9808;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9810 = x9809 * x9809;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][75 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9810);
      reg = x9810;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:19)
    auto x9811 = x9637 + x9608;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9812 = args[2][75 * steps + ((cycle - 0) & mask)];
    assert(x9812 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9813 = x9812 * x9809;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9814 = x9813 * x9808;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":238:5)
    {
      auto& reg = args[2][52 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9811);
      reg = x9811;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":239:58))
    auto x9815 = args[2][52 * steps + ((cycle - 0) & mask)];
    assert(x9815 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x9816 = x9815 * x9815;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x9817 = x9816 * x9816;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][76 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x9817);
      reg = x9817;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9818 = x9660 + x9667;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9819 = x9674 + x9681;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9820 = x9688 + x9695;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9821 = x9702 + x9709;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9822 = x9716 + x9723;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9823 = x9730 + x9737;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9824 = x9744 + x9751;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9825 = x9758 + x9765;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9826 = x9772 + x9779;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9827 = x9786 + x9793;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x9828 = x9800 + x9807;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9829 = x9818 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9830 = x9819 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9831 = x9820 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9832 = x9821 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9833 = x9822 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9834 = x9823 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9835 = x9824 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9836 = x9825 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9837 = x9826 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9838 = x9827 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9839 = x9828 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9840 = x9667 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9841 = x9681 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9842 = x9695 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9843 = x9709 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9844 = x9723 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9845 = x9737 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9846 = x9751 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9847 = x9765 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9848 = x9779 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9849 = x9793 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9850 = x9807 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9851 = x9840 + x9819;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9852 = x9841 + x9818;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9853 = x9842 + x9821;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9854 = x9843 + x9820;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9855 = x9844 + x9823;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9856 = x9845 + x9822;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9857 = x9846 + x9825;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9858 = x9847 + x9824;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9859 = x9848 + x9827;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9860 = x9849 + x9826;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9861 = x9831 + x9853;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9862 = x9832 + x9854;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9863 = x9833 + x9855;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9864 = x9834 + x9856;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9865 = x9835 + x9857;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9866 = x9836 + x9858;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9867 = x9837 + x9859;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9868 = x9838 + x9860;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_full(recursion::Poseidon2Full)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x9869 = args[2][76 * steps + ((cycle - 0) & mask)];
    assert(x9869 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9870 = x9869 * x9816;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9871 = x9417 * x117;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9872 = x9417 * x115;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9873 = x9417 * x114;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9874 = x9417 * x111;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9875 = x9417 * x110;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9876 = x9417 * x107;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9877 = x9417 * x106;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9878 = x9417 * x102;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9879 = x9417 * x100;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9880 = x9417 * x98;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9881 = x9417 * x97;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9882 = x9417 * x96;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9883 = x9417 * x94;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9884 = x9417 * x89;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9885 = x9417 * x88;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9886 = x9417 * x85;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9887 = x9417 * x84;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9888 = x9417 * x83;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9889 = x9417 * x81;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9890 = x9417 * x80;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9891 = x9417 * x78;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9892 = x9417 * x75;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9893 = x9417 * x74;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9894 = x9417 * x72;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9895 = x9217 * x119;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9896 = x9217 * x118;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9897 = x9217 * x116;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9898 = x9217 * x113;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9899 = x9217 * x112;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9900 = x9217 * x109;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9901 = x9217 * x108;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9902 = x9217 * x105;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9903 = x9217 * x104;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9904 = x9217 * x103;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9905 = x9217 * x101;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9906 = x9217 * x99;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9907 = x9217 * x95;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9908 = x9217 * x93;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9909 = x9217 * x92;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9910 = x9217 * x91;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9911 = x9217 * x90;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9912 = x9217 * x87;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9913 = x9217 * x86;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9914 = x9217 * x82;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9915 = x9217 * x79;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9916 = x9217 * x77;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9917 = x9217 * x76;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:19)
    auto x9918 = x9217 * x73;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x9919 = x9870 * x9815;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9920 = x9871 + x9914;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9921 = x9872 + x9916;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9922 = x9873 + x9905;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9923 = x9874 + x9918;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9924 = x9875 + x9913;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9925 = x9876 + x9911;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9926 = x9877 + x9915;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9927 = x9878 + x9917;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9928 = x9879 + x9910;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9929 = x9880 + x9896;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9930 = x9881 + x9908;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9931 = x9882 + x9898;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9932 = x9883 + x9897;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9933 = x9884 + x9903;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9934 = x9885 + x9895;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9935 = x9886 + x9912;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9936 = x9887 + x9907;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9937 = x9888 + x9904;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9938 = x9889 + x9899;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9939 = x9890 + x9901;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9940 = x9891 + x9900;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9941 = x9892 + x9902;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9942 = x9893 + x9909;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":188:13)
    auto x9943 = x9894 + x9906;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9944 = x9853 + x9862;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9945 = x9854 + x9861;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9946 = x9855 + x9864;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9947 = x9856 + x9863;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9948 = x9857 + x9866;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9949 = x9858 + x9865;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9950 = x9859 + x9868;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9951 = x9860 + x9867;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9952 = x9829 + x9851;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9953 = x9830 + x9852;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x9954 = x9814 + x9919;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x9955 = x9850 + x9954;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x9956 = x9839 + x9955;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9957 = x9954 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9958 = x9919 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9959 = x9851 + x9953;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9960 = x9852 + x9952;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x9961 = x9958 + x9828;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x9962 = x9957 + x9961;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9963 = x9952 + x9861;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9964 = x9953 + x9862;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x9965 = x9955 + x9962;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x9966 = x9961 + x9956;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9967 = x9963 + x9863;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9968 = x9964 + x9864;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9969 = x9959 + x9944;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9970 = x9960 + x9945;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9971 = x9967 + x9865;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9972 = x9968 + x9866;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9973 = x9969 + x9946;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9974 = x9970 + x9947;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9975 = x9971 + x9867;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9976 = x9972 + x9868;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9977 = x9973 + x9948;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9978 = x9974 + x9949;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9979 = x9975 + x9956;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9980 = x9976 + x9962;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9981 = x9977 + x9950;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9982 = x9978 + x9951;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9983 = x9952 + x9979;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9984 = x9953 + x9980;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9985 = x9861 + x9979;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9986 = x9862 + x9980;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9987 = x9863 + x9979;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9988 = x9864 + x9980;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9989 = x9865 + x9979;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9990 = x9866 + x9980;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9991 = x9867 + x9979;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9992 = x9868 + x9980;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9993 = x9956 + x9979;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9994 = x9962 + x9980;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9995 = x9981 + x9965;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x9996 = x9982 + x9966;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9997 = x9959 + x9995;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9998 = x9960 + x9996;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x9999 = x9944 + x9995;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x10000 = x9945 + x9996;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x10001 = x9946 + x9995;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x10002 = x9947 + x9996;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x10003 = x9948 + x9995;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x10004 = x9949 + x9996;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x10005 = x9950 + x9995;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x10006 = x9951 + x9996;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x10007 = x9965 + x9995;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x10008 = x9966 + x9996;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10009 = x9998 + x9922;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][90 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10009);
      reg = x10009;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10010 = x9983 + x9936;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][91 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10010);
      reg = x10010;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10011 = x9997 + x9924;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][92 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10011);
      reg = x10011;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10012 = x9984 + x9925;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][93 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10012);
      reg = x10012;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10013 = x10000 + x9935;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][94 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10013);
      reg = x10013;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10014 = x9985 + x9932;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][95 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10014);
      reg = x10014;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10015 = x9999 + x9941;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][96 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10015);
      reg = x10015;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10016 = x9986 + x9923;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][97 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10016);
      reg = x10016;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10017 = x10002 + x9943;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][98 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10017);
      reg = x10017;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10018 = x9987 + x9939;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][99 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10018);
      reg = x10018;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10019 = x10001 + x9926;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][100 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10019);
      reg = x10019;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10020 = x9988 + x9938;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][101 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10020);
      reg = x10020;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10021 = x10004 + x9929;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][102 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10021);
      reg = x10021;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10022 = x9989 + x9931;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][103 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10022);
      reg = x10022;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10023 = x10003 + x9940;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][104 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10023);
      reg = x10023;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10024 = x9990 + x9927;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][105 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10024);
      reg = x10024;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10025 = x10006 + x9933;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][106 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10025);
      reg = x10025;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10026 = x9991 + x9930;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][107 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10026);
      reg = x10026;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10027 = x10005 + x9920;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][108 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10027);
      reg = x10027;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10028 = x9992 + x9928;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][109 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10028);
      reg = x10028;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10029 = x10008 + x9921;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][110 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10029);
      reg = x10029;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10030 = x9993 + x9934;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][111 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10030);
      reg = x10030;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10031 = x10007 + x9937;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][112 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10031);
      reg = x10031;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:20)
    auto x10032 = x9994 + x9942;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":273:5)
    {
      auto& reg = args[2][113 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10032);
      reg = x10032;
    }
  }
  // loc("top(recursion::Top)/code(recursion::Code)/select(OneHot)/poseidon2_partial(Reg)"("./zirgen/components/mux.h":49:25))
  auto x10033 = args[0][5 * steps + ((cycle - 0) & mask)];
  assert(x10033 != Fp::invalid());
  if (x10033 != 0) {
    host(ctx, "log", "POSEIDON2_PARTIAL", host_args.data(), 0, host_outs.data(), 0);
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10034 = args[2][100 * steps + ((cycle - 1) & mask)];
    assert(x10034 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10035 = args[2][101 * steps + ((cycle - 1) & mask)];
    assert(x10035 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10036 = args[2][102 * steps + ((cycle - 1) & mask)];
    assert(x10036 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10037 = args[2][103 * steps + ((cycle - 1) & mask)];
    assert(x10037 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10038 = args[2][104 * steps + ((cycle - 1) & mask)];
    assert(x10038 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10039 = args[2][105 * steps + ((cycle - 1) & mask)];
    assert(x10039 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10040 = args[2][106 * steps + ((cycle - 1) & mask)];
    assert(x10040 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10041 = args[2][107 * steps + ((cycle - 1) & mask)];
    assert(x10041 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10042 = args[2][108 * steps + ((cycle - 1) & mask)];
    assert(x10042 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10043 = args[2][109 * steps + ((cycle - 1) & mask)];
    assert(x10043 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10044 = args[2][110 * steps + ((cycle - 1) & mask)];
    assert(x10044 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10045 = args[2][111 * steps + ((cycle - 1) & mask)];
    assert(x10045 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10046 = args[2][112 * steps + ((cycle - 1) & mask)];
    assert(x10046 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10047 = args[2][113 * steps + ((cycle - 1) & mask)];
    assert(x10047 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10048 = args[2][90 * steps + ((cycle - 1) & mask)];
    assert(x10048 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10049 = args[2][91 * steps + ((cycle - 1) & mask)];
    assert(x10049 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10050 = args[2][92 * steps + ((cycle - 1) & mask)];
    assert(x10050 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10051 = args[2][93 * steps + ((cycle - 1) & mask)];
    assert(x10051 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10052 = args[2][94 * steps + ((cycle - 1) & mask)];
    assert(x10052 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10053 = args[2][95 * steps + ((cycle - 1) & mask)];
    assert(x10053 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10054 = args[2][96 * steps + ((cycle - 1) & mask)];
    assert(x10054 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10055 = args[2][97 * steps + ((cycle - 1) & mask)];
    assert(x10055 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10056 = args[2][98 * steps + ((cycle - 1) & mask)];
    assert(x10056 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":289:37))
    auto x10057 = args[2][99 * steps + ((cycle - 1) & mask)];
    assert(x10057 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":291:3)
    {
      auto& reg = args[2][5 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10048);
      reg = x10048;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10058 = args[2][5 * steps + ((cycle - 0) & mask)];
    assert(x10058 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10059 = x10058 + x71;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10060 = x10059 * x10059;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10061 = x10060 * x10060;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][29 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10061);
      reg = x10061;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10062 = x10034 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10063 = x10035 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10064 = x10036 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10065 = x10037 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10066 = x10038 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10067 = x10039 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10068 = x10040 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10069 = x10041 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10070 = x10042 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10071 = x10043 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10072 = x10044 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10073 = x10045 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10074 = x10046 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10075 = x10047 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10076 = x10049 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10077 = x10050 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10078 = x10051 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10079 = x10052 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10080 = x10053 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10081 = x10054 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10082 = x10055 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10083 = x10056 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10084 = x10057 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10085 = args[2][29 * steps + ((cycle - 0) & mask)];
    assert(x10085 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10086 = x10085 * x10060;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10087 = x10086 * x10059;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10088 = x10087 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10089 = x10087 + x10049;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10090 = x10089 + x10050;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10091 = x10090 + x10051;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10092 = x10091 + x10052;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10093 = x10092 + x10053;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10094 = x10093 + x10054;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10095 = x10094 + x10055;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10096 = x10095 + x10056;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10097 = x10096 + x10057;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10098 = x10097 + x10034;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10099 = x10098 + x10035;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10100 = x10099 + x10036;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10101 = x10100 + x10037;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10102 = x10101 + x10038;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10103 = x10102 + x10039;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10104 = x10103 + x10040;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10105 = x10104 + x10041;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10106 = x10105 + x10042;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10107 = x10106 + x10043;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10108 = x10107 + x10044;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10109 = x10108 + x10045;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10110 = x10109 + x10046;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10111 = x10110 + x10047;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10112 = x10111 + x10062;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10113 = x10111 + x10063;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10114 = x10111 + x10064;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10115 = x10111 + x10065;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10116 = x10111 + x10066;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10117 = x10111 + x10067;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10118 = x10111 + x10068;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10119 = x10111 + x10069;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10120 = x10111 + x10070;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10121 = x10111 + x10071;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10122 = x10111 + x10072;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10123 = x10111 + x10073;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10124 = x10111 + x10074;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10125 = x10111 + x10075;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10126 = x10111 + x10076;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10127 = x10111 + x10077;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10128 = x10111 + x10078;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10129 = x10111 + x10079;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10130 = x10111 + x10080;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10131 = x10111 + x10081;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10132 = x10111 + x10082;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10133 = x10111 + x10083;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10134 = x10111 + x10084;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10135 = x10111 + x10088;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][6 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10135);
      reg = x10135;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10136 = args[2][6 * steps + ((cycle - 0) & mask)];
    assert(x10136 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10137 = x10136 + x46;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10138 = x10137 * x10137;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10139 = x10138 * x10138;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][30 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10139);
      reg = x10139;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10140 = x10112 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10141 = x10113 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10142 = x10114 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10143 = x10115 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10144 = x10116 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10145 = x10117 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10146 = x10118 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10147 = x10119 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10148 = x10120 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10149 = x10121 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10150 = x10122 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10151 = x10123 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10152 = x10124 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10153 = x10125 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10154 = x10126 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10155 = x10127 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10156 = x10128 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10157 = x10129 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10158 = x10130 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10159 = x10131 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10160 = x10132 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10161 = x10133 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10162 = x10134 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10163 = args[2][30 * steps + ((cycle - 0) & mask)];
    assert(x10163 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10164 = x10163 * x10138;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10165 = x10164 * x10137;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10166 = x10165 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10167 = x10165 + x10126;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10168 = x10167 + x10127;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10169 = x10168 + x10128;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10170 = x10169 + x10129;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10171 = x10170 + x10130;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10172 = x10171 + x10131;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10173 = x10172 + x10132;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10174 = x10173 + x10133;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10175 = x10174 + x10134;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10176 = x10175 + x10112;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10177 = x10176 + x10113;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10178 = x10177 + x10114;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10179 = x10178 + x10115;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10180 = x10179 + x10116;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10181 = x10180 + x10117;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10182 = x10181 + x10118;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10183 = x10182 + x10119;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10184 = x10183 + x10120;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10185 = x10184 + x10121;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10186 = x10185 + x10122;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10187 = x10186 + x10123;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10188 = x10187 + x10124;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10189 = x10188 + x10125;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10190 = x10189 + x10140;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10191 = x10189 + x10141;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10192 = x10189 + x10142;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10193 = x10189 + x10143;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10194 = x10189 + x10144;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10195 = x10189 + x10145;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10196 = x10189 + x10146;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10197 = x10189 + x10147;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10198 = x10189 + x10148;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10199 = x10189 + x10149;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10200 = x10189 + x10150;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10201 = x10189 + x10151;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10202 = x10189 + x10152;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10203 = x10189 + x10153;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10204 = x10189 + x10154;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10205 = x10189 + x10155;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10206 = x10189 + x10156;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10207 = x10189 + x10157;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10208 = x10189 + x10158;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10209 = x10189 + x10159;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10210 = x10189 + x10160;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10211 = x10189 + x10161;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10212 = x10189 + x10162;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10213 = x10189 + x10166;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][7 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10213);
      reg = x10213;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10214 = args[2][7 * steps + ((cycle - 0) & mask)];
    assert(x10214 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10215 = x10214 + x45;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10216 = x10215 * x10215;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10217 = x10216 * x10216;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][31 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10217);
      reg = x10217;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10218 = x10190 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10219 = x10191 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10220 = x10192 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10221 = x10193 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10222 = x10194 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10223 = x10195 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10224 = x10196 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10225 = x10197 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10226 = x10198 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10227 = x10199 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10228 = x10200 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10229 = x10201 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10230 = x10202 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10231 = x10203 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10232 = x10204 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10233 = x10205 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10234 = x10206 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10235 = x10207 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10236 = x10208 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10237 = x10209 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10238 = x10210 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10239 = x10211 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10240 = x10212 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10241 = args[2][31 * steps + ((cycle - 0) & mask)];
    assert(x10241 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10242 = x10241 * x10216;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10243 = x10242 * x10215;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10244 = x10243 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10245 = x10243 + x10204;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10246 = x10245 + x10205;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10247 = x10246 + x10206;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10248 = x10247 + x10207;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10249 = x10248 + x10208;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10250 = x10249 + x10209;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10251 = x10250 + x10210;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10252 = x10251 + x10211;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10253 = x10252 + x10212;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10254 = x10253 + x10190;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10255 = x10254 + x10191;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10256 = x10255 + x10192;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10257 = x10256 + x10193;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10258 = x10257 + x10194;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10259 = x10258 + x10195;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10260 = x10259 + x10196;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10261 = x10260 + x10197;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10262 = x10261 + x10198;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10263 = x10262 + x10199;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10264 = x10263 + x10200;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10265 = x10264 + x10201;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10266 = x10265 + x10202;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10267 = x10266 + x10203;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10268 = x10267 + x10218;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10269 = x10267 + x10219;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10270 = x10267 + x10220;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10271 = x10267 + x10221;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10272 = x10267 + x10222;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10273 = x10267 + x10223;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10274 = x10267 + x10224;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10275 = x10267 + x10225;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10276 = x10267 + x10226;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10277 = x10267 + x10227;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10278 = x10267 + x10228;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10279 = x10267 + x10229;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10280 = x10267 + x10230;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10281 = x10267 + x10231;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10282 = x10267 + x10232;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10283 = x10267 + x10233;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10284 = x10267 + x10234;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10285 = x10267 + x10235;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10286 = x10267 + x10236;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10287 = x10267 + x10237;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10288 = x10267 + x10238;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10289 = x10267 + x10239;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10290 = x10267 + x10240;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10291 = x10267 + x10244;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][8 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10291);
      reg = x10291;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10292 = args[2][8 * steps + ((cycle - 0) & mask)];
    assert(x10292 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10293 = x10292 + x44;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10294 = x10293 * x10293;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10295 = x10294 * x10294;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][32 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10295);
      reg = x10295;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10296 = x10268 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10297 = x10269 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10298 = x10270 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10299 = x10271 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10300 = x10272 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10301 = x10273 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10302 = x10274 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10303 = x10275 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10304 = x10276 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10305 = x10277 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10306 = x10278 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10307 = x10279 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10308 = x10280 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10309 = x10281 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10310 = x10282 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10311 = x10283 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10312 = x10284 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10313 = x10285 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10314 = x10286 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10315 = x10287 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10316 = x10288 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10317 = x10289 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10318 = x10290 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10319 = args[2][32 * steps + ((cycle - 0) & mask)];
    assert(x10319 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10320 = x10319 * x10294;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10321 = x10320 * x10293;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10322 = x10321 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10323 = x10321 + x10282;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10324 = x10323 + x10283;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10325 = x10324 + x10284;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10326 = x10325 + x10285;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10327 = x10326 + x10286;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10328 = x10327 + x10287;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10329 = x10328 + x10288;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10330 = x10329 + x10289;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10331 = x10330 + x10290;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10332 = x10331 + x10268;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10333 = x10332 + x10269;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10334 = x10333 + x10270;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10335 = x10334 + x10271;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10336 = x10335 + x10272;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10337 = x10336 + x10273;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10338 = x10337 + x10274;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10339 = x10338 + x10275;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10340 = x10339 + x10276;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10341 = x10340 + x10277;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10342 = x10341 + x10278;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10343 = x10342 + x10279;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10344 = x10343 + x10280;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10345 = x10344 + x10281;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10346 = x10345 + x10296;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10347 = x10345 + x10297;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10348 = x10345 + x10298;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10349 = x10345 + x10299;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10350 = x10345 + x10300;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10351 = x10345 + x10301;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10352 = x10345 + x10302;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10353 = x10345 + x10303;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10354 = x10345 + x10304;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10355 = x10345 + x10305;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10356 = x10345 + x10306;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10357 = x10345 + x10307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10358 = x10345 + x10308;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10359 = x10345 + x10309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10360 = x10345 + x10310;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10361 = x10345 + x10311;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10362 = x10345 + x10312;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10363 = x10345 + x10313;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10364 = x10345 + x10314;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10365 = x10345 + x10315;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10366 = x10345 + x10316;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10367 = x10345 + x10317;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10368 = x10345 + x10318;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10369 = x10345 + x10322;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][9 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10369);
      reg = x10369;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10370 = args[2][9 * steps + ((cycle - 0) & mask)];
    assert(x10370 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10371 = x10370 + x43;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10372 = x10371 * x10371;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10373 = x10372 * x10372;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][33 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10373);
      reg = x10373;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10374 = x10346 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10375 = x10347 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10376 = x10348 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10377 = x10349 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10378 = x10350 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10379 = x10351 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10380 = x10352 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10381 = x10353 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10382 = x10354 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10383 = x10355 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10384 = x10356 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10385 = x10357 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10386 = x10358 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10387 = x10359 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10388 = x10360 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10389 = x10361 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10390 = x10362 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10391 = x10363 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10392 = x10364 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10393 = x10365 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10394 = x10366 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10395 = x10367 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10396 = x10368 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10397 = args[2][33 * steps + ((cycle - 0) & mask)];
    assert(x10397 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10398 = x10397 * x10372;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10399 = x10398 * x10371;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10400 = x10399 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10401 = x10399 + x10360;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10402 = x10401 + x10361;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10403 = x10402 + x10362;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10404 = x10403 + x10363;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10405 = x10404 + x10364;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10406 = x10405 + x10365;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10407 = x10406 + x10366;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10408 = x10407 + x10367;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10409 = x10408 + x10368;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10410 = x10409 + x10346;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10411 = x10410 + x10347;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10412 = x10411 + x10348;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10413 = x10412 + x10349;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10414 = x10413 + x10350;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10415 = x10414 + x10351;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10416 = x10415 + x10352;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10417 = x10416 + x10353;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10418 = x10417 + x10354;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10419 = x10418 + x10355;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10420 = x10419 + x10356;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10421 = x10420 + x10357;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10422 = x10421 + x10358;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10423 = x10422 + x10359;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10424 = x10423 + x10374;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10425 = x10423 + x10375;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10426 = x10423 + x10376;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10427 = x10423 + x10377;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10428 = x10423 + x10378;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10429 = x10423 + x10379;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10430 = x10423 + x10380;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10431 = x10423 + x10381;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10432 = x10423 + x10382;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10433 = x10423 + x10383;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10434 = x10423 + x10384;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10435 = x10423 + x10385;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10436 = x10423 + x10386;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10437 = x10423 + x10387;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10438 = x10423 + x10388;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10439 = x10423 + x10389;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10440 = x10423 + x10390;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10441 = x10423 + x10391;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10442 = x10423 + x10392;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10443 = x10423 + x10393;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10444 = x10423 + x10394;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10445 = x10423 + x10395;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10446 = x10423 + x10396;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10447 = x10423 + x10400;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][10 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10447);
      reg = x10447;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10448 = args[2][10 * steps + ((cycle - 0) & mask)];
    assert(x10448 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10449 = x10448 + x42;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10450 = x10449 * x10449;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10451 = x10450 * x10450;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][34 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10451);
      reg = x10451;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10452 = x10424 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10453 = x10425 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10454 = x10426 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10455 = x10427 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10456 = x10428 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10457 = x10429 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10458 = x10430 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10459 = x10431 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10460 = x10432 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10461 = x10433 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10462 = x10434 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10463 = x10435 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10464 = x10436 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10465 = x10437 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10466 = x10438 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10467 = x10439 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10468 = x10440 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10469 = x10441 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10470 = x10442 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10471 = x10443 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10472 = x10444 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10473 = x10445 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10474 = x10446 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10475 = args[2][34 * steps + ((cycle - 0) & mask)];
    assert(x10475 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10476 = x10475 * x10450;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10477 = x10476 * x10449;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10478 = x10477 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10479 = x10477 + x10438;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10480 = x10479 + x10439;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10481 = x10480 + x10440;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10482 = x10481 + x10441;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10483 = x10482 + x10442;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10484 = x10483 + x10443;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10485 = x10484 + x10444;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10486 = x10485 + x10445;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10487 = x10486 + x10446;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10488 = x10487 + x10424;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10489 = x10488 + x10425;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10490 = x10489 + x10426;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10491 = x10490 + x10427;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10492 = x10491 + x10428;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10493 = x10492 + x10429;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10494 = x10493 + x10430;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10495 = x10494 + x10431;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10496 = x10495 + x10432;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10497 = x10496 + x10433;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10498 = x10497 + x10434;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10499 = x10498 + x10435;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10500 = x10499 + x10436;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10501 = x10500 + x10437;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10502 = x10501 + x10452;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10503 = x10501 + x10453;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10504 = x10501 + x10454;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10505 = x10501 + x10455;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10506 = x10501 + x10456;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10507 = x10501 + x10457;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10508 = x10501 + x10458;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10509 = x10501 + x10459;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10510 = x10501 + x10460;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10511 = x10501 + x10461;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10512 = x10501 + x10462;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10513 = x10501 + x10463;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10514 = x10501 + x10464;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10515 = x10501 + x10465;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10516 = x10501 + x10466;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10517 = x10501 + x10467;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10518 = x10501 + x10468;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10519 = x10501 + x10469;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10520 = x10501 + x10470;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10521 = x10501 + x10471;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10522 = x10501 + x10472;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10523 = x10501 + x10473;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10524 = x10501 + x10474;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10525 = x10501 + x10478;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][11 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10525);
      reg = x10525;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10526 = args[2][11 * steps + ((cycle - 0) & mask)];
    assert(x10526 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10527 = x10526 + x41;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10528 = x10527 * x10527;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10529 = x10528 * x10528;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][35 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10529);
      reg = x10529;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10530 = x10502 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10531 = x10503 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10532 = x10504 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10533 = x10505 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10534 = x10506 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10535 = x10507 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10536 = x10508 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10537 = x10509 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10538 = x10510 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10539 = x10511 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10540 = x10512 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10541 = x10513 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10542 = x10514 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10543 = x10515 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10544 = x10516 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10545 = x10517 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10546 = x10518 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10547 = x10519 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10548 = x10520 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10549 = x10521 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10550 = x10522 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10551 = x10523 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10552 = x10524 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10553 = args[2][35 * steps + ((cycle - 0) & mask)];
    assert(x10553 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10554 = x10553 * x10528;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10555 = x10554 * x10527;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10556 = x10555 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10557 = x10555 + x10516;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10558 = x10557 + x10517;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10559 = x10558 + x10518;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10560 = x10559 + x10519;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10561 = x10560 + x10520;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10562 = x10561 + x10521;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10563 = x10562 + x10522;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10564 = x10563 + x10523;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10565 = x10564 + x10524;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10566 = x10565 + x10502;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10567 = x10566 + x10503;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10568 = x10567 + x10504;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10569 = x10568 + x10505;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10570 = x10569 + x10506;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10571 = x10570 + x10507;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10572 = x10571 + x10508;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10573 = x10572 + x10509;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10574 = x10573 + x10510;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10575 = x10574 + x10511;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10576 = x10575 + x10512;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10577 = x10576 + x10513;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10578 = x10577 + x10514;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10579 = x10578 + x10515;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10580 = x10579 + x10530;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10581 = x10579 + x10531;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10582 = x10579 + x10532;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10583 = x10579 + x10533;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10584 = x10579 + x10534;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10585 = x10579 + x10535;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10586 = x10579 + x10536;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10587 = x10579 + x10537;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10588 = x10579 + x10538;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10589 = x10579 + x10539;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10590 = x10579 + x10540;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10591 = x10579 + x10541;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10592 = x10579 + x10542;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10593 = x10579 + x10543;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10594 = x10579 + x10544;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10595 = x10579 + x10545;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10596 = x10579 + x10546;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10597 = x10579 + x10547;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10598 = x10579 + x10548;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10599 = x10579 + x10549;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10600 = x10579 + x10550;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10601 = x10579 + x10551;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10602 = x10579 + x10552;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10603 = x10579 + x10556;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][12 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10603);
      reg = x10603;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10604 = args[2][12 * steps + ((cycle - 0) & mask)];
    assert(x10604 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10605 = x10604 + x40;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10606 = x10605 * x10605;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10607 = x10606 * x10606;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][36 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10607);
      reg = x10607;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10608 = x10580 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10609 = x10581 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10610 = x10582 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10611 = x10583 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10612 = x10584 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10613 = x10585 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10614 = x10586 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10615 = x10587 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10616 = x10588 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10617 = x10589 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10618 = x10590 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10619 = x10591 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10620 = x10592 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10621 = x10593 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10622 = x10594 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10623 = x10595 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10624 = x10596 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10625 = x10597 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10626 = x10598 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10627 = x10599 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10628 = x10600 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10629 = x10601 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10630 = x10602 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10631 = args[2][36 * steps + ((cycle - 0) & mask)];
    assert(x10631 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10632 = x10631 * x10606;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10633 = x10632 * x10605;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10634 = x10633 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10635 = x10633 + x10594;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10636 = x10635 + x10595;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10637 = x10636 + x10596;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10638 = x10637 + x10597;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10639 = x10638 + x10598;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10640 = x10639 + x10599;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10641 = x10640 + x10600;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10642 = x10641 + x10601;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10643 = x10642 + x10602;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10644 = x10643 + x10580;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10645 = x10644 + x10581;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10646 = x10645 + x10582;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10647 = x10646 + x10583;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10648 = x10647 + x10584;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10649 = x10648 + x10585;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10650 = x10649 + x10586;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10651 = x10650 + x10587;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10652 = x10651 + x10588;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10653 = x10652 + x10589;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10654 = x10653 + x10590;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10655 = x10654 + x10591;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10656 = x10655 + x10592;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10657 = x10656 + x10593;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10658 = x10657 + x10608;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10659 = x10657 + x10609;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10660 = x10657 + x10610;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10661 = x10657 + x10611;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10662 = x10657 + x10612;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10663 = x10657 + x10613;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10664 = x10657 + x10614;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10665 = x10657 + x10615;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10666 = x10657 + x10616;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10667 = x10657 + x10617;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10668 = x10657 + x10618;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10669 = x10657 + x10619;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10670 = x10657 + x10620;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10671 = x10657 + x10621;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10672 = x10657 + x10622;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10673 = x10657 + x10623;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10674 = x10657 + x10624;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10675 = x10657 + x10625;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10676 = x10657 + x10626;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10677 = x10657 + x10627;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10678 = x10657 + x10628;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10679 = x10657 + x10629;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10680 = x10657 + x10630;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10681 = x10657 + x10634;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][13 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10681);
      reg = x10681;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10682 = args[2][13 * steps + ((cycle - 0) & mask)];
    assert(x10682 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10683 = x10682 + x39;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10684 = x10683 * x10683;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10685 = x10684 * x10684;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][37 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10685);
      reg = x10685;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10686 = x10658 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10687 = x10659 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10688 = x10660 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10689 = x10661 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10690 = x10662 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10691 = x10663 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10692 = x10664 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10693 = x10665 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10694 = x10666 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10695 = x10667 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10696 = x10668 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10697 = x10669 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10698 = x10670 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10699 = x10671 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10700 = x10672 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10701 = x10673 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10702 = x10674 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10703 = x10675 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10704 = x10676 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10705 = x10677 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10706 = x10678 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10707 = x10679 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10708 = x10680 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10709 = args[2][37 * steps + ((cycle - 0) & mask)];
    assert(x10709 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10710 = x10709 * x10684;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10711 = x10710 * x10683;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10712 = x10711 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10713 = x10711 + x10672;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10714 = x10713 + x10673;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10715 = x10714 + x10674;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10716 = x10715 + x10675;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10717 = x10716 + x10676;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10718 = x10717 + x10677;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10719 = x10718 + x10678;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10720 = x10719 + x10679;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10721 = x10720 + x10680;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10722 = x10721 + x10658;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10723 = x10722 + x10659;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10724 = x10723 + x10660;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10725 = x10724 + x10661;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10726 = x10725 + x10662;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10727 = x10726 + x10663;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10728 = x10727 + x10664;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10729 = x10728 + x10665;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10730 = x10729 + x10666;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10731 = x10730 + x10667;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10732 = x10731 + x10668;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10733 = x10732 + x10669;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10734 = x10733 + x10670;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10735 = x10734 + x10671;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10736 = x10735 + x10686;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10737 = x10735 + x10687;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10738 = x10735 + x10688;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10739 = x10735 + x10689;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10740 = x10735 + x10690;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10741 = x10735 + x10691;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10742 = x10735 + x10692;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10743 = x10735 + x10693;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10744 = x10735 + x10694;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10745 = x10735 + x10695;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10746 = x10735 + x10696;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10747 = x10735 + x10697;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10748 = x10735 + x10698;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10749 = x10735 + x10699;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10750 = x10735 + x10700;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10751 = x10735 + x10701;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10752 = x10735 + x10702;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10753 = x10735 + x10703;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10754 = x10735 + x10704;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10755 = x10735 + x10705;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10756 = x10735 + x10706;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10757 = x10735 + x10707;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10758 = x10735 + x10708;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10759 = x10735 + x10712;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][14 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10759);
      reg = x10759;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10760 = args[2][14 * steps + ((cycle - 0) & mask)];
    assert(x10760 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10761 = x10760 + x38;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10762 = x10761 * x10761;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10763 = x10762 * x10762;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][38 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10763);
      reg = x10763;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10764 = x10736 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10765 = x10737 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10766 = x10738 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10767 = x10739 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10768 = x10740 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10769 = x10741 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10770 = x10742 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10771 = x10743 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10772 = x10744 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10773 = x10745 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10774 = x10746 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10775 = x10747 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10776 = x10748 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10777 = x10749 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10778 = x10750 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10779 = x10751 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10780 = x10752 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10781 = x10753 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10782 = x10754 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10783 = x10755 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10784 = x10756 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10785 = x10757 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10786 = x10758 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10787 = args[2][38 * steps + ((cycle - 0) & mask)];
    assert(x10787 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10788 = x10787 * x10762;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10789 = x10788 * x10761;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10790 = x10789 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10791 = x10789 + x10750;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10792 = x10791 + x10751;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10793 = x10792 + x10752;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10794 = x10793 + x10753;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10795 = x10794 + x10754;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10796 = x10795 + x10755;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10797 = x10796 + x10756;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10798 = x10797 + x10757;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10799 = x10798 + x10758;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10800 = x10799 + x10736;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10801 = x10800 + x10737;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10802 = x10801 + x10738;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10803 = x10802 + x10739;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10804 = x10803 + x10740;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10805 = x10804 + x10741;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10806 = x10805 + x10742;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10807 = x10806 + x10743;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10808 = x10807 + x10744;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10809 = x10808 + x10745;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10810 = x10809 + x10746;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10811 = x10810 + x10747;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10812 = x10811 + x10748;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10813 = x10812 + x10749;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10814 = x10813 + x10764;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10815 = x10813 + x10765;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10816 = x10813 + x10766;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10817 = x10813 + x10767;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10818 = x10813 + x10768;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10819 = x10813 + x10769;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10820 = x10813 + x10770;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10821 = x10813 + x10771;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10822 = x10813 + x10772;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10823 = x10813 + x10773;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10824 = x10813 + x10774;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10825 = x10813 + x10775;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10826 = x10813 + x10776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10827 = x10813 + x10777;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10828 = x10813 + x10778;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10829 = x10813 + x10779;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10830 = x10813 + x10780;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10831 = x10813 + x10781;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10832 = x10813 + x10782;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10833 = x10813 + x10783;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10834 = x10813 + x10784;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10835 = x10813 + x10785;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10836 = x10813 + x10786;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10837 = x10813 + x10790;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][15 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10837);
      reg = x10837;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10838 = args[2][15 * steps + ((cycle - 0) & mask)];
    assert(x10838 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10839 = x10838 + x37;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10840 = x10839 * x10839;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10841 = x10840 * x10840;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][39 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10841);
      reg = x10841;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10842 = x10814 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10843 = x10815 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10844 = x10816 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10845 = x10817 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10846 = x10818 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10847 = x10819 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10848 = x10820 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10849 = x10821 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10850 = x10822 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10851 = x10823 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10852 = x10824 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10853 = x10825 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10854 = x10826 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10855 = x10827 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10856 = x10828 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10857 = x10829 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10858 = x10830 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10859 = x10831 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10860 = x10832 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10861 = x10833 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10862 = x10834 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10863 = x10835 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10864 = x10836 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10865 = args[2][39 * steps + ((cycle - 0) & mask)];
    assert(x10865 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10866 = x10865 * x10840;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10867 = x10866 * x10839;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10868 = x10867 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10869 = x10867 + x10828;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10870 = x10869 + x10829;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10871 = x10870 + x10830;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10872 = x10871 + x10831;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10873 = x10872 + x10832;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10874 = x10873 + x10833;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10875 = x10874 + x10834;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10876 = x10875 + x10835;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10877 = x10876 + x10836;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10878 = x10877 + x10814;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10879 = x10878 + x10815;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10880 = x10879 + x10816;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10881 = x10880 + x10817;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10882 = x10881 + x10818;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10883 = x10882 + x10819;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10884 = x10883 + x10820;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10885 = x10884 + x10821;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10886 = x10885 + x10822;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10887 = x10886 + x10823;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10888 = x10887 + x10824;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10889 = x10888 + x10825;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10890 = x10889 + x10826;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10891 = x10890 + x10827;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10892 = x10891 + x10842;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10893 = x10891 + x10843;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10894 = x10891 + x10844;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10895 = x10891 + x10845;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10896 = x10891 + x10846;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10897 = x10891 + x10847;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10898 = x10891 + x10848;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10899 = x10891 + x10849;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10900 = x10891 + x10850;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10901 = x10891 + x10851;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10902 = x10891 + x10852;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10903 = x10891 + x10853;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10904 = x10891 + x10854;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10905 = x10891 + x10855;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10906 = x10891 + x10856;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10907 = x10891 + x10857;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10908 = x10891 + x10858;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10909 = x10891 + x10859;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10910 = x10891 + x10860;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10911 = x10891 + x10861;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10912 = x10891 + x10862;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10913 = x10891 + x10863;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10914 = x10891 + x10864;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10915 = x10891 + x10868;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][16 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10915);
      reg = x10915;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10916 = args[2][16 * steps + ((cycle - 0) & mask)];
    assert(x10916 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10917 = x10916 + x36;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10918 = x10917 * x10917;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10919 = x10918 * x10918;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][40 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10919);
      reg = x10919;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10920 = x10892 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10921 = x10893 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10922 = x10894 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10923 = x10895 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10924 = x10896 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10925 = x10897 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10926 = x10898 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10927 = x10899 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10928 = x10900 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10929 = x10901 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10930 = x10902 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10931 = x10903 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10932 = x10904 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10933 = x10905 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10934 = x10906 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10935 = x10907 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10936 = x10908 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10937 = x10909 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10938 = x10910 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10939 = x10911 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10940 = x10912 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10941 = x10913 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10942 = x10914 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x10943 = args[2][40 * steps + ((cycle - 0) & mask)];
    assert(x10943 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10944 = x10943 * x10918;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x10945 = x10944 * x10917;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10946 = x10945 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10947 = x10945 + x10906;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10948 = x10947 + x10907;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10949 = x10948 + x10908;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10950 = x10949 + x10909;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10951 = x10950 + x10910;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10952 = x10951 + x10911;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10953 = x10952 + x10912;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10954 = x10953 + x10913;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10955 = x10954 + x10914;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10956 = x10955 + x10892;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10957 = x10956 + x10893;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10958 = x10957 + x10894;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10959 = x10958 + x10895;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10960 = x10959 + x10896;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10961 = x10960 + x10897;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10962 = x10961 + x10898;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10963 = x10962 + x10899;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10964 = x10963 + x10900;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10965 = x10964 + x10901;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10966 = x10965 + x10902;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10967 = x10966 + x10903;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10968 = x10967 + x10904;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x10969 = x10968 + x10905;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10970 = x10969 + x10920;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10971 = x10969 + x10921;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10972 = x10969 + x10922;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10973 = x10969 + x10923;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10974 = x10969 + x10924;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10975 = x10969 + x10925;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10976 = x10969 + x10926;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10977 = x10969 + x10927;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10978 = x10969 + x10928;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10979 = x10969 + x10929;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10980 = x10969 + x10930;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10981 = x10969 + x10931;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10982 = x10969 + x10932;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10983 = x10969 + x10933;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10984 = x10969 + x10934;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10985 = x10969 + x10935;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10986 = x10969 + x10936;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10987 = x10969 + x10937;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10988 = x10969 + x10938;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10989 = x10969 + x10939;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10990 = x10969 + x10940;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10991 = x10969 + x10941;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10992 = x10969 + x10942;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x10993 = x10969 + x10946;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][17 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10993);
      reg = x10993;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x10994 = args[2][17 * steps + ((cycle - 0) & mask)];
    assert(x10994 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x10995 = x10994 + x35;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x10996 = x10995 * x10995;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x10997 = x10996 * x10996;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][41 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x10997);
      reg = x10997;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10998 = x10970 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x10999 = x10971 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11000 = x10972 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11001 = x10973 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11002 = x10974 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11003 = x10975 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11004 = x10976 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11005 = x10977 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11006 = x10978 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11007 = x10979 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11008 = x10980 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11009 = x10981 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11010 = x10982 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11011 = x10983 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11012 = x10984 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11013 = x10985 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11014 = x10986 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11015 = x10987 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11016 = x10988 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11017 = x10989 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11018 = x10990 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11019 = x10991 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11020 = x10992 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x11021 = args[2][41 * steps + ((cycle - 0) & mask)];
    assert(x11021 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11022 = x11021 * x10996;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11023 = x11022 * x10995;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11024 = x11023 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11025 = x11023 + x10984;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11026 = x11025 + x10985;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11027 = x11026 + x10986;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11028 = x11027 + x10987;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11029 = x11028 + x10988;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11030 = x11029 + x10989;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11031 = x11030 + x10990;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11032 = x11031 + x10991;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11033 = x11032 + x10992;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11034 = x11033 + x10970;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11035 = x11034 + x10971;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11036 = x11035 + x10972;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11037 = x11036 + x10973;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11038 = x11037 + x10974;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11039 = x11038 + x10975;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11040 = x11039 + x10976;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11041 = x11040 + x10977;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11042 = x11041 + x10978;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11043 = x11042 + x10979;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11044 = x11043 + x10980;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11045 = x11044 + x10981;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11046 = x11045 + x10982;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11047 = x11046 + x10983;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11048 = x11047 + x10998;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11049 = x11047 + x10999;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11050 = x11047 + x11000;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11051 = x11047 + x11001;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11052 = x11047 + x11002;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11053 = x11047 + x11003;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11054 = x11047 + x11004;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11055 = x11047 + x11005;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11056 = x11047 + x11006;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11057 = x11047 + x11007;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11058 = x11047 + x11008;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11059 = x11047 + x11009;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11060 = x11047 + x11010;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11061 = x11047 + x11011;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11062 = x11047 + x11012;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11063 = x11047 + x11013;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11064 = x11047 + x11014;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11065 = x11047 + x11015;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11066 = x11047 + x11016;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11067 = x11047 + x11017;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11068 = x11047 + x11018;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11069 = x11047 + x11019;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11070 = x11047 + x11020;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11071 = x11047 + x11024;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][18 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11071);
      reg = x11071;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x11072 = args[2][18 * steps + ((cycle - 0) & mask)];
    assert(x11072 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x11073 = x11072 + x34;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x11074 = x11073 * x11073;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x11075 = x11074 * x11074;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][42 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11075);
      reg = x11075;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11076 = x11048 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11077 = x11049 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11078 = x11050 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11079 = x11051 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11080 = x11052 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11081 = x11053 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11082 = x11054 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11083 = x11055 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11084 = x11056 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11085 = x11057 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11086 = x11058 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11087 = x11059 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11088 = x11060 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11089 = x11061 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11090 = x11062 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11091 = x11063 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11092 = x11064 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11093 = x11065 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11094 = x11066 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11095 = x11067 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11096 = x11068 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11097 = x11069 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11098 = x11070 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x11099 = args[2][42 * steps + ((cycle - 0) & mask)];
    assert(x11099 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11100 = x11099 * x11074;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11101 = x11100 * x11073;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11102 = x11101 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11103 = x11101 + x11062;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11104 = x11103 + x11063;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11105 = x11104 + x11064;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11106 = x11105 + x11065;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11107 = x11106 + x11066;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11108 = x11107 + x11067;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11109 = x11108 + x11068;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11110 = x11109 + x11069;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11111 = x11110 + x11070;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11112 = x11111 + x11048;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11113 = x11112 + x11049;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11114 = x11113 + x11050;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11115 = x11114 + x11051;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11116 = x11115 + x11052;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11117 = x11116 + x11053;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11118 = x11117 + x11054;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11119 = x11118 + x11055;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11120 = x11119 + x11056;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11121 = x11120 + x11057;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11122 = x11121 + x11058;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11123 = x11122 + x11059;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11124 = x11123 + x11060;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11125 = x11124 + x11061;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11126 = x11125 + x11076;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11127 = x11125 + x11077;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11128 = x11125 + x11078;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11129 = x11125 + x11079;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11130 = x11125 + x11080;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11131 = x11125 + x11081;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11132 = x11125 + x11082;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11133 = x11125 + x11083;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11134 = x11125 + x11084;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11135 = x11125 + x11085;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11136 = x11125 + x11086;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11137 = x11125 + x11087;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11138 = x11125 + x11088;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11139 = x11125 + x11089;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11140 = x11125 + x11090;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11141 = x11125 + x11091;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11142 = x11125 + x11092;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11143 = x11125 + x11093;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11144 = x11125 + x11094;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11145 = x11125 + x11095;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11146 = x11125 + x11096;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11147 = x11125 + x11097;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11148 = x11125 + x11098;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11149 = x11125 + x11102;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][19 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11149);
      reg = x11149;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x11150 = args[2][19 * steps + ((cycle - 0) & mask)];
    assert(x11150 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x11151 = x11150 + x33;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x11152 = x11151 * x11151;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x11153 = x11152 * x11152;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][43 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11153);
      reg = x11153;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11154 = x11126 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11155 = x11127 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11156 = x11128 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11157 = x11129 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11158 = x11130 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11159 = x11131 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11160 = x11132 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11161 = x11133 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11162 = x11134 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11163 = x11135 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11164 = x11136 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11165 = x11137 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11166 = x11138 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11167 = x11139 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11168 = x11140 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11169 = x11141 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11170 = x11142 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11171 = x11143 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11172 = x11144 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11173 = x11145 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11174 = x11146 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11175 = x11147 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11176 = x11148 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x11177 = args[2][43 * steps + ((cycle - 0) & mask)];
    assert(x11177 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11178 = x11177 * x11152;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11179 = x11178 * x11151;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11180 = x11179 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11181 = x11179 + x11140;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11182 = x11181 + x11141;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11183 = x11182 + x11142;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11184 = x11183 + x11143;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11185 = x11184 + x11144;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11186 = x11185 + x11145;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11187 = x11186 + x11146;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11188 = x11187 + x11147;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11189 = x11188 + x11148;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11190 = x11189 + x11126;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11191 = x11190 + x11127;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11192 = x11191 + x11128;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11193 = x11192 + x11129;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11194 = x11193 + x11130;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11195 = x11194 + x11131;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11196 = x11195 + x11132;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11197 = x11196 + x11133;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11198 = x11197 + x11134;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11199 = x11198 + x11135;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11200 = x11199 + x11136;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11201 = x11200 + x11137;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11202 = x11201 + x11138;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11203 = x11202 + x11139;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11204 = x11203 + x11154;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11205 = x11203 + x11155;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11206 = x11203 + x11156;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11207 = x11203 + x11157;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11208 = x11203 + x11158;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11209 = x11203 + x11159;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11210 = x11203 + x11160;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11211 = x11203 + x11161;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11212 = x11203 + x11162;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11213 = x11203 + x11163;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11214 = x11203 + x11164;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11215 = x11203 + x11165;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11216 = x11203 + x11166;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11217 = x11203 + x11167;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11218 = x11203 + x11168;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11219 = x11203 + x11169;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11220 = x11203 + x11170;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11221 = x11203 + x11171;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11222 = x11203 + x11172;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11223 = x11203 + x11173;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11224 = x11203 + x11174;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11225 = x11203 + x11175;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11226 = x11203 + x11176;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11227 = x11203 + x11180;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][20 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11227);
      reg = x11227;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x11228 = args[2][20 * steps + ((cycle - 0) & mask)];
    assert(x11228 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x11229 = x11228 + x32;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x11230 = x11229 * x11229;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x11231 = x11230 * x11230;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][44 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11231);
      reg = x11231;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11232 = x11204 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11233 = x11205 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11234 = x11206 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11235 = x11207 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11236 = x11208 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11237 = x11209 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11238 = x11210 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11239 = x11211 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11240 = x11212 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11241 = x11213 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11242 = x11214 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11243 = x11215 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11244 = x11216 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11245 = x11217 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11246 = x11218 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11247 = x11219 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11248 = x11220 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11249 = x11221 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11250 = x11222 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11251 = x11223 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11252 = x11224 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11253 = x11225 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11254 = x11226 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x11255 = args[2][44 * steps + ((cycle - 0) & mask)];
    assert(x11255 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11256 = x11255 * x11230;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11257 = x11256 * x11229;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11258 = x11257 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11259 = x11257 + x11218;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11260 = x11259 + x11219;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11261 = x11260 + x11220;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11262 = x11261 + x11221;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11263 = x11262 + x11222;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11264 = x11263 + x11223;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11265 = x11264 + x11224;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11266 = x11265 + x11225;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11267 = x11266 + x11226;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11268 = x11267 + x11204;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11269 = x11268 + x11205;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11270 = x11269 + x11206;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11271 = x11270 + x11207;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11272 = x11271 + x11208;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11273 = x11272 + x11209;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11274 = x11273 + x11210;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11275 = x11274 + x11211;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11276 = x11275 + x11212;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11277 = x11276 + x11213;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11278 = x11277 + x11214;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11279 = x11278 + x11215;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11280 = x11279 + x11216;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11281 = x11280 + x11217;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11282 = x11281 + x11232;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11283 = x11281 + x11233;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11284 = x11281 + x11234;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11285 = x11281 + x11235;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11286 = x11281 + x11236;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11287 = x11281 + x11237;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11288 = x11281 + x11238;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11289 = x11281 + x11239;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11290 = x11281 + x11240;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11291 = x11281 + x11241;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11292 = x11281 + x11242;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11293 = x11281 + x11243;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11294 = x11281 + x11244;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11295 = x11281 + x11245;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11296 = x11281 + x11246;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11297 = x11281 + x11247;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11298 = x11281 + x11248;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11299 = x11281 + x11249;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11300 = x11281 + x11250;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11301 = x11281 + x11251;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11302 = x11281 + x11252;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11303 = x11281 + x11253;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11304 = x11281 + x11254;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11305 = x11281 + x11258;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][21 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11305);
      reg = x11305;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x11306 = args[2][21 * steps + ((cycle - 0) & mask)];
    assert(x11306 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x11307 = x11306 + x31;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x11308 = x11307 * x11307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x11309 = x11308 * x11308;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][45 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11309);
      reg = x11309;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11310 = x11282 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11311 = x11283 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11312 = x11284 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11313 = x11285 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11314 = x11286 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11315 = x11287 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11316 = x11288 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11317 = x11289 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11318 = x11290 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11319 = x11291 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11320 = x11292 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11321 = x11293 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11322 = x11294 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11323 = x11295 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11324 = x11296 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11325 = x11297 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11326 = x11298 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11327 = x11299 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11328 = x11300 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11329 = x11301 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11330 = x11302 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11331 = x11303 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11332 = x11304 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x11333 = args[2][45 * steps + ((cycle - 0) & mask)];
    assert(x11333 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11334 = x11333 * x11308;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11335 = x11334 * x11307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11336 = x11335 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11337 = x11335 + x11296;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11338 = x11337 + x11297;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11339 = x11338 + x11298;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11340 = x11339 + x11299;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11341 = x11340 + x11300;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11342 = x11341 + x11301;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11343 = x11342 + x11302;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11344 = x11343 + x11303;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11345 = x11344 + x11304;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11346 = x11345 + x11282;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11347 = x11346 + x11283;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11348 = x11347 + x11284;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11349 = x11348 + x11285;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11350 = x11349 + x11286;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11351 = x11350 + x11287;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11352 = x11351 + x11288;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11353 = x11352 + x11289;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11354 = x11353 + x11290;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11355 = x11354 + x11291;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11356 = x11355 + x11292;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11357 = x11356 + x11293;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11358 = x11357 + x11294;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11359 = x11358 + x11295;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11360 = x11359 + x11310;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11361 = x11359 + x11311;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11362 = x11359 + x11312;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11363 = x11359 + x11313;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11364 = x11359 + x11314;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11365 = x11359 + x11315;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11366 = x11359 + x11316;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11367 = x11359 + x11317;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11368 = x11359 + x11318;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11369 = x11359 + x11319;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11370 = x11359 + x11320;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11371 = x11359 + x11321;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11372 = x11359 + x11322;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11373 = x11359 + x11323;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11374 = x11359 + x11324;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11375 = x11359 + x11325;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11376 = x11359 + x11326;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11377 = x11359 + x11327;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11378 = x11359 + x11328;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11379 = x11359 + x11329;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11380 = x11359 + x11330;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11381 = x11359 + x11331;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11382 = x11359 + x11332;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11383 = x11359 + x11336;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][22 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11383);
      reg = x11383;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x11384 = args[2][22 * steps + ((cycle - 0) & mask)];
    assert(x11384 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x11385 = x11384 + x30;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x11386 = x11385 * x11385;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x11387 = x11386 * x11386;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][46 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11387);
      reg = x11387;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11388 = x11360 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11389 = x11361 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11390 = x11362 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11391 = x11363 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11392 = x11364 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11393 = x11365 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11394 = x11366 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11395 = x11367 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11396 = x11368 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11397 = x11369 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11398 = x11370 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11399 = x11371 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11400 = x11372 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11401 = x11373 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11402 = x11374 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11403 = x11375 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11404 = x11376 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11405 = x11377 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11406 = x11378 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11407 = x11379 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11408 = x11380 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11409 = x11381 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11410 = x11382 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x11411 = args[2][46 * steps + ((cycle - 0) & mask)];
    assert(x11411 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11412 = x11411 * x11386;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11413 = x11412 * x11385;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11414 = x11413 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11415 = x11413 + x11374;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11416 = x11415 + x11375;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11417 = x11416 + x11376;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11418 = x11417 + x11377;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11419 = x11418 + x11378;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11420 = x11419 + x11379;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11421 = x11420 + x11380;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11422 = x11421 + x11381;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11423 = x11422 + x11382;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11424 = x11423 + x11360;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11425 = x11424 + x11361;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11426 = x11425 + x11362;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11427 = x11426 + x11363;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11428 = x11427 + x11364;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11429 = x11428 + x11365;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11430 = x11429 + x11366;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11431 = x11430 + x11367;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11432 = x11431 + x11368;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11433 = x11432 + x11369;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11434 = x11433 + x11370;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11435 = x11434 + x11371;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11436 = x11435 + x11372;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11437 = x11436 + x11373;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11438 = x11437 + x11388;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11439 = x11437 + x11389;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11440 = x11437 + x11390;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11441 = x11437 + x11391;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11442 = x11437 + x11392;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11443 = x11437 + x11393;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11444 = x11437 + x11394;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11445 = x11437 + x11395;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11446 = x11437 + x11396;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11447 = x11437 + x11397;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11448 = x11437 + x11398;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11449 = x11437 + x11399;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11450 = x11437 + x11400;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11451 = x11437 + x11401;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11452 = x11437 + x11402;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11453 = x11437 + x11403;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11454 = x11437 + x11404;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11455 = x11437 + x11405;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11456 = x11437 + x11406;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11457 = x11437 + x11407;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11458 = x11437 + x11408;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11459 = x11437 + x11409;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11460 = x11437 + x11410;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11461 = x11437 + x11414;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][23 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11461);
      reg = x11461;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x11462 = args[2][23 * steps + ((cycle - 0) & mask)];
    assert(x11462 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x11463 = x11462 + x29;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x11464 = x11463 * x11463;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x11465 = x11464 * x11464;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][47 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11465);
      reg = x11465;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11466 = x11438 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11467 = x11439 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11468 = x11440 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11469 = x11441 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11470 = x11442 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11471 = x11443 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11472 = x11444 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11473 = x11445 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11474 = x11446 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11475 = x11447 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11476 = x11448 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11477 = x11449 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11478 = x11450 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11479 = x11451 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11480 = x11452 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11481 = x11453 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11482 = x11454 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11483 = x11455 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11484 = x11456 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11485 = x11457 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11486 = x11458 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11487 = x11459 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11488 = x11460 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x11489 = args[2][47 * steps + ((cycle - 0) & mask)];
    assert(x11489 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11490 = x11489 * x11464;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11491 = x11490 * x11463;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11492 = x11491 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11493 = x11491 + x11452;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11494 = x11493 + x11453;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11495 = x11494 + x11454;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11496 = x11495 + x11455;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11497 = x11496 + x11456;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11498 = x11497 + x11457;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11499 = x11498 + x11458;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11500 = x11499 + x11459;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11501 = x11500 + x11460;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11502 = x11501 + x11438;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11503 = x11502 + x11439;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11504 = x11503 + x11440;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11505 = x11504 + x11441;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11506 = x11505 + x11442;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11507 = x11506 + x11443;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11508 = x11507 + x11444;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11509 = x11508 + x11445;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11510 = x11509 + x11446;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11511 = x11510 + x11447;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11512 = x11511 + x11448;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11513 = x11512 + x11449;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11514 = x11513 + x11450;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11515 = x11514 + x11451;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11516 = x11515 + x11466;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11517 = x11515 + x11467;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11518 = x11515 + x11468;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11519 = x11515 + x11469;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11520 = x11515 + x11470;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11521 = x11515 + x11471;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11522 = x11515 + x11472;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11523 = x11515 + x11473;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11524 = x11515 + x11474;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11525 = x11515 + x11475;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11526 = x11515 + x11476;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11527 = x11515 + x11477;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11528 = x11515 + x11478;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11529 = x11515 + x11479;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11530 = x11515 + x11480;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11531 = x11515 + x11481;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11532 = x11515 + x11482;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11533 = x11515 + x11483;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11534 = x11515 + x11484;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11535 = x11515 + x11485;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11536 = x11515 + x11486;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11537 = x11515 + x11487;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11538 = x11515 + x11488;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11539 = x11515 + x11492;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][24 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11539);
      reg = x11539;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x11540 = args[2][24 * steps + ((cycle - 0) & mask)];
    assert(x11540 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x11541 = x11540 + x28;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x11542 = x11541 * x11541;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x11543 = x11542 * x11542;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][48 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11543);
      reg = x11543;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11544 = x11516 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11545 = x11517 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11546 = x11518 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11547 = x11519 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11548 = x11520 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11549 = x11521 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11550 = x11522 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11551 = x11523 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11552 = x11524 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11553 = x11525 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11554 = x11526 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11555 = x11527 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11556 = x11528 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11557 = x11529 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11558 = x11530 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11559 = x11531 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11560 = x11532 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11561 = x11533 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11562 = x11534 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11563 = x11535 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11564 = x11536 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11565 = x11537 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11566 = x11538 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x11567 = args[2][48 * steps + ((cycle - 0) & mask)];
    assert(x11567 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11568 = x11567 * x11542;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11569 = x11568 * x11541;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11570 = x11569 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11571 = x11569 + x11530;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11572 = x11571 + x11531;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11573 = x11572 + x11532;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11574 = x11573 + x11533;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11575 = x11574 + x11534;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11576 = x11575 + x11535;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11577 = x11576 + x11536;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11578 = x11577 + x11537;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11579 = x11578 + x11538;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11580 = x11579 + x11516;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11581 = x11580 + x11517;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11582 = x11581 + x11518;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11583 = x11582 + x11519;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11584 = x11583 + x11520;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11585 = x11584 + x11521;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11586 = x11585 + x11522;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11587 = x11586 + x11523;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11588 = x11587 + x11524;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11589 = x11588 + x11525;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11590 = x11589 + x11526;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11591 = x11590 + x11527;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11592 = x11591 + x11528;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11593 = x11592 + x11529;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11594 = x11593 + x11544;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11595 = x11593 + x11545;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11596 = x11593 + x11546;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11597 = x11593 + x11547;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11598 = x11593 + x11548;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11599 = x11593 + x11549;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11600 = x11593 + x11550;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11601 = x11593 + x11551;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11602 = x11593 + x11552;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11603 = x11593 + x11553;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11604 = x11593 + x11554;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11605 = x11593 + x11555;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11606 = x11593 + x11556;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11607 = x11593 + x11557;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11608 = x11593 + x11558;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11609 = x11593 + x11559;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11610 = x11593 + x11560;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11611 = x11593 + x11561;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11612 = x11593 + x11562;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11613 = x11593 + x11563;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11614 = x11593 + x11564;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11615 = x11593 + x11565;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11616 = x11593 + x11566;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11617 = x11593 + x11570;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][25 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11617);
      reg = x11617;
    }
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":293:41))
    auto x11618 = args[2][25 * steps + ((cycle - 0) & mask)];
    assert(x11618 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":296:13)
    auto x11619 = x11618 + x27;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":159:13)
    auto x11620 = x11619 * x11619;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":160:13)
    auto x11621 = x11620 * x11620;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":161:3)
    {
      auto& reg = args[2][49 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11621);
      reg = x11621;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11622 = x11594 * x66;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11623 = x11595 * x69;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11624 = x11596 * x64;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11625 = x11597 * x47;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11626 = x11598 * x70;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11627 = x11599 * x61;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11628 = x11600 * x49;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11629 = x11601 * x56;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11630 = x11602 * x63;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11631 = x11603 * x50;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11632 = x11604 * x57;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11633 = x11605 * x52;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11634 = x11606 * x65;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11635 = x11607 * x48;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11636 = x11608 * x54;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11637 = x11609 * x67;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11638 = x11610 * x60;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11639 = x11611 * x51;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11640 = x11612 * x53;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11641 = x11613 * x59;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11642 = x11614 * x58;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11643 = x11615 * x62;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11644 = x11616 * x55;
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_partial(recursion::Poseidon2Partial)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":162:14))
    auto x11645 = args[2][49 * steps + ((cycle - 0) & mask)];
    assert(x11645 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11646 = x11645 * x11620;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":163:13)
    auto x11647 = x11646 * x11619;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:20)
    auto x11648 = x11647 * x68;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11649 = x11647 + x11608;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11650 = x11649 + x11609;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11651 = x11650 + x11610;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11652 = x11651 + x11611;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11653 = x11652 + x11612;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11654 = x11653 + x11613;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11655 = x11654 + x11614;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11656 = x11655 + x11615;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11657 = x11656 + x11616;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11658 = x11657 + x11594;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11659 = x11658 + x11595;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11660 = x11659 + x11596;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11661 = x11660 + x11597;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11662 = x11661 + x11598;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11663 = x11662 + x11599;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11664 = x11663 + x11600;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11665 = x11664 + x11601;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11666 = x11665 + x11602;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11667 = x11666 + x11603;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11668 = x11667 + x11604;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11669 = x11668 + x11605;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11670 = x11669 + x11606;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":150:11)
    auto x11671 = x11670 + x11607;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11672 = x11671 + x11648;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11673 = x11671 + x11622;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11674 = x11671 + x11623;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11675 = x11671 + x11624;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11676 = x11671 + x11625;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11677 = x11671 + x11626;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11678 = x11671 + x11627;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11679 = x11671 + x11628;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11680 = x11671 + x11629;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11681 = x11671 + x11630;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11682 = x11671 + x11631;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11683 = x11671 + x11632;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11684 = x11671 + x11633;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11685 = x11671 + x11634;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11686 = x11671 + x11635;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11687 = x11671 + x11636;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11688 = x11671 + x11637;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11689 = x11671 + x11638;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11690 = x11671 + x11639;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11691 = x11671 + x11640;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11692 = x11671 + x11641;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11693 = x11671 + x11642;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11694 = x11671 + x11643;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":153:14)
    auto x11695 = x11671 + x11644;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":301:5)
    {
      auto& reg = args[2][26 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11672);
      reg = x11672;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11696 = x11672 + x26;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][90 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11696);
      reg = x11696;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11697 = x11687 + x25;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][91 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11697);
      reg = x11697;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11698 = x11688 + x24;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][92 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11698);
      reg = x11698;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11699 = x11689 + x23;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][93 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11699);
      reg = x11699;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11700 = x11690 + x22;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][94 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11700);
      reg = x11700;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11701 = x11691 + x21;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][95 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11701);
      reg = x11701;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11702 = x11692 + x20;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][96 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11702);
      reg = x11702;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11703 = x11693 + x19;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][97 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11703);
      reg = x11703;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11704 = x11694 + x18;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][98 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11704);
      reg = x11704;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11705 = x11695 + x17;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][99 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11705);
      reg = x11705;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11706 = x11673 + x16;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][100 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11706);
      reg = x11706;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11707 = x11674 + x15;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][101 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11707);
      reg = x11707;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11708 = x11675 + x14;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][102 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11708);
      reg = x11708;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11709 = x11676 + x13;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][103 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11709);
      reg = x11709;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11710 = x11677 + x12;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][104 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11710);
      reg = x11710;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11711 = x11678 + x11;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][105 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11711);
      reg = x11711;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11712 = x11679 + x10;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][106 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11712);
      reg = x11712;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11713 = x11680 + x9;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][107 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11713);
      reg = x11713;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11714 = x11681 + x8;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][108 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11714);
      reg = x11714;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11715 = x11682 + x7;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][109 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11715);
      reg = x11715;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11716 = x11683 + x6;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][110 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11716);
      reg = x11716;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11717 = x11684 + x5;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][111 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11717);
      reg = x11717;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11718 = x11685 + x4;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][112 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11718);
      reg = x11718;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":333:13)
    auto x11719 = x11686 + x3;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":334:5)
    {
      auto& reg = args[2][113 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11719);
      reg = x11719;
    }
  }
  // loc("top(recursion::Top)/code(recursion::Code)/select(OneHot)/poseidon2_store(Reg)"("./zirgen/components/mux.h":49:25))
  auto x11720 = args[0][6 * steps + ((cycle - 0) & mask)];
  assert(x11720 != Fp::invalid());
  if (x11720 != 0) {
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_store(recursion::Poseidon2MemInst)/group(OneHot)/g0(Reg)"("zirgen/circuit/recursion/poseidon2.cpp":354:39))
    auto x11721 = args[0][12 * steps + ((cycle - 0) & mask)];
    assert(x11721 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_store(recursion::Poseidon2MemInst)/group(OneHot)/g1(Reg)"("zirgen/circuit/recursion/poseidon2.cpp":354:39))
    auto x11722 = args[0][13 * steps + ((cycle - 0) & mask)];
    assert(x11722 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_store(recursion::Poseidon2MemInst)/group(OneHot)/g2(Reg)"("zirgen/circuit/recursion/poseidon2.cpp":354:39))
    auto x11723 = args[0][14 * steps + ((cycle - 0) & mask)];
    assert(x11723 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/poseidon2_store(recursion::Poseidon2MemInst)/do_mont(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x11724 = args[0][8 * steps + ((cycle - 0) & mask)];
    assert(x11724 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/write_addr(Reg)"("zirgen/circuit/recursion/top.cpp":23:49))
    auto x11725 = args[0][0 * steps + ((cycle - 0) & mask)];
    assert(x11725 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11726 = args[2][100 * steps + ((cycle - 1) & mask)];
    assert(x11726 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11727 = args[2][101 * steps + ((cycle - 1) & mask)];
    assert(x11727 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11728 = args[2][102 * steps + ((cycle - 1) & mask)];
    assert(x11728 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11729 = args[2][103 * steps + ((cycle - 1) & mask)];
    assert(x11729 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11730 = args[2][104 * steps + ((cycle - 1) & mask)];
    assert(x11730 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11731 = args[2][105 * steps + ((cycle - 1) & mask)];
    assert(x11731 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11732 = args[2][106 * steps + ((cycle - 1) & mask)];
    assert(x11732 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11733 = args[2][107 * steps + ((cycle - 1) & mask)];
    assert(x11733 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11734 = args[2][108 * steps + ((cycle - 1) & mask)];
    assert(x11734 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11735 = args[2][109 * steps + ((cycle - 1) & mask)];
    assert(x11735 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11736 = args[2][110 * steps + ((cycle - 1) & mask)];
    assert(x11736 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11737 = args[2][111 * steps + ((cycle - 1) & mask)];
    assert(x11737 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11738 = args[2][112 * steps + ((cycle - 1) & mask)];
    assert(x11738 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11739 = args[2][113 * steps + ((cycle - 1) & mask)];
    assert(x11739 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11740 = args[2][90 * steps + ((cycle - 1) & mask)];
    assert(x11740 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11741 = args[2][91 * steps + ((cycle - 1) & mask)];
    assert(x11741 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11742 = args[2][92 * steps + ((cycle - 1) & mask)];
    assert(x11742 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11743 = args[2][93 * steps + ((cycle - 1) & mask)];
    assert(x11743 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11744 = args[2][94 * steps + ((cycle - 1) & mask)];
    assert(x11744 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11745 = args[2][95 * steps + ((cycle - 1) & mask)];
    assert(x11745 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11746 = args[2][96 * steps + ((cycle - 1) & mask)];
    assert(x11746 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11747 = args[2][97 * steps + ((cycle - 1) & mask)];
    assert(x11747 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11748 = args[2][98 * steps + ((cycle - 1) & mask)];
    assert(x11748 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/Reg"("zirgen/circuit/recursion/poseidon2.cpp":354:88))
    auto x11749 = args[2][99 * steps + ((cycle - 1) & mask)];
    assert(x11749 != Fp::invalid());
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11750 = x11721 * x11740;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11751 = x11721 * x11741;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11752 = x11721 * x11742;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11753 = x11721 * x11743;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11754 = x11721 * x11744;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11755 = x11721 * x11745;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11756 = x11721 * x11746;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11757 = x11721 * x11747;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":356:13)
    auto x11758 = x11724 * x241;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11759 = x11722 * x11726;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11760 = x11722 * x11727;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11761 = x11722 * x11728;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11762 = x11722 * x11729;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11763 = x11722 * x11730;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11764 = x11722 * x11731;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11765 = x11722 * x11748;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11766 = x11722 * x11749;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11767 = x11723 * x11732;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11768 = x11723 * x11733;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11769 = x11723 * x11734;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11770 = x11723 * x11735;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11771 = x11723 * x11736;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11772 = x11723 * x11737;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11773 = x11723 * x11738;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:39)
    auto x11774 = x11723 * x11739;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":356:61)
    auto x11775 = x310 - x11724;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":356:13)
    auto x11776 = x11758 + x11775;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11777 = x11750 + x11765;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11778 = x11751 + x11766;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11779 = x11752 + x11759;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11780 = x11753 + x11760;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11781 = x11754 + x11761;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11782 = x11755 + x11762;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11783 = x11756 + x11763;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11784 = x11757 + x11764;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11785 = x11777 + x11767;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11786 = x11778 + x11768;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11787 = x11779 + x11769;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11788 = x11780 + x11770;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11789 = x11781 + x11771;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11790 = x11782 + x11772;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11791 = x11783 + x11773;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":354:22)
    auto x11792 = x11784 + x11774;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:37)
    auto x11793 = x11785 * x11776;
    // loc("zirgen/circuit/recursion/wom.cpp":87:3)
    {
      auto& reg = args[2][5 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11725);
      reg = x11725;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][6 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11793);
      reg = x11793;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][7 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][8 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][9 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x11794 = args[2][5 * steps + ((cycle - 0) & mask)];
      assert(x11794 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11795 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x11795 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11796 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x11796 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11797 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x11797 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11798 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x11798 != Fp::invalid());
      host_args.at(0) = x11794;
      host_args.at(1) = x11795;
      host_args.at(2) = x11796;
      host_args.at(3) = x11797;
      host_args.at(4) = x11798;
      host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:37)
    auto x11799 = x11786 * x11776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:21)
    auto x11800 = x11725 + x310;
    // loc("zirgen/circuit/recursion/wom.cpp":87:3)
    {
      auto& reg = args[2][10 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11800);
      reg = x11800;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][11 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11799);
      reg = x11799;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][12 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][13 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][14 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x11801 = args[2][10 * steps + ((cycle - 0) & mask)];
      assert(x11801 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11802 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x11802 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11803 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x11803 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11804 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x11804 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11805 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x11805 != Fp::invalid());
      host_args.at(0) = x11801;
      host_args.at(1) = x11802;
      host_args.at(2) = x11803;
      host_args.at(3) = x11804;
      host_args.at(4) = x11805;
      host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:37)
    auto x11806 = x11787 * x11776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:21)
    auto x11807 = x11725 + x309;
    // loc("zirgen/circuit/recursion/wom.cpp":87:3)
    {
      auto& reg = args[2][15 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11807);
      reg = x11807;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][16 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11806);
      reg = x11806;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][17 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][18 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][19 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x11808 = args[2][15 * steps + ((cycle - 0) & mask)];
      assert(x11808 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11809 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x11809 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11810 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x11810 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11811 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x11811 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11812 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x11812 != Fp::invalid());
      host_args.at(0) = x11808;
      host_args.at(1) = x11809;
      host_args.at(2) = x11810;
      host_args.at(3) = x11811;
      host_args.at(4) = x11812;
      host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:37)
    auto x11813 = x11788 * x11776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:21)
    auto x11814 = x11725 + x308;
    // loc("zirgen/circuit/recursion/wom.cpp":87:3)
    {
      auto& reg = args[2][20 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11814);
      reg = x11814;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][21 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11813);
      reg = x11813;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][22 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][23 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][24 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x11815 = args[2][20 * steps + ((cycle - 0) & mask)];
      assert(x11815 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11816 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x11816 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11817 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x11817 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11818 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x11818 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11819 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x11819 != Fp::invalid());
      host_args.at(0) = x11815;
      host_args.at(1) = x11816;
      host_args.at(2) = x11817;
      host_args.at(3) = x11818;
      host_args.at(4) = x11819;
      host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:37)
    auto x11820 = x11789 * x11776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:21)
    auto x11821 = x11725 + x307;
    // loc("zirgen/circuit/recursion/wom.cpp":87:3)
    {
      auto& reg = args[2][25 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11821);
      reg = x11821;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][26 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11820);
      reg = x11820;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][27 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][28 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][29 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x11822 = args[2][25 * steps + ((cycle - 0) & mask)];
      assert(x11822 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11823 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x11823 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11824 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x11824 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11825 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x11825 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11826 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x11826 != Fp::invalid());
      host_args.at(0) = x11822;
      host_args.at(1) = x11823;
      host_args.at(2) = x11824;
      host_args.at(3) = x11825;
      host_args.at(4) = x11826;
      host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:37)
    auto x11827 = x11790 * x11776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:21)
    auto x11828 = x11725 + x306;
    // loc("zirgen/circuit/recursion/wom.cpp":87:3)
    {
      auto& reg = args[2][30 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11828);
      reg = x11828;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][31 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11827);
      reg = x11827;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][32 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][33 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][34 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x11829 = args[2][30 * steps + ((cycle - 0) & mask)];
      assert(x11829 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11830 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x11830 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11831 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x11831 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11832 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x11832 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11833 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x11833 != Fp::invalid());
      host_args.at(0) = x11829;
      host_args.at(1) = x11830;
      host_args.at(2) = x11831;
      host_args.at(3) = x11832;
      host_args.at(4) = x11833;
      host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:37)
    auto x11834 = x11791 * x11776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:21)
    auto x11835 = x11725 + x305;
    // loc("zirgen/circuit/recursion/wom.cpp":87:3)
    {
      auto& reg = args[2][35 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11835);
      reg = x11835;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][36 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11834);
      reg = x11834;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][37 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][38 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][39 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x11836 = args[2][35 * steps + ((cycle - 0) & mask)];
      assert(x11836 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11837 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x11837 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11838 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x11838 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11839 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x11839 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11840 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x11840 != Fp::invalid());
      host_args.at(0) = x11836;
      host_args.at(1) = x11837;
      host_args.at(2) = x11838;
      host_args.at(3) = x11839;
      host_args.at(4) = x11840;
      host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:37)
    auto x11841 = x11792 * x11776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":358:21)
    auto x11842 = x11725 + x304;
    // loc("zirgen/circuit/recursion/wom.cpp":87:3)
    {
      auto& reg = args[2][40 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11842);
      reg = x11842;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][41 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11841);
      reg = x11841;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][42 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][43 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][44 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x311);
      reg = x311;
    }
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x11843 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x11843 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11844 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x11844 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11845 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x11845 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11846 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x11846 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x11847 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x11847 != Fp::invalid());
      host_args.at(0) = x11843;
      host_args.at(1) = x11844;
      host_args.at(2) = x11845;
      host_args.at(3) = x11846;
      host_args.at(4) = x11847;
      host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][90 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11740);
      reg = x11740;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][91 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11741);
      reg = x11741;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][92 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11742);
      reg = x11742;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][93 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11743);
      reg = x11743;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][94 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11744);
      reg = x11744;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][95 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11745);
      reg = x11745;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][96 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11746);
      reg = x11746;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][97 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11747);
      reg = x11747;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][98 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11748);
      reg = x11748;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][99 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11749);
      reg = x11749;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][100 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11726);
      reg = x11726;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][101 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11727);
      reg = x11727;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][102 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11728);
      reg = x11728;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][103 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11729);
      reg = x11729;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][104 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11730);
      reg = x11730;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][105 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11731);
      reg = x11731;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][106 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11732);
      reg = x11732;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][107 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11733);
      reg = x11733;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][108 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11734);
      reg = x11734;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][109 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11735);
      reg = x11735;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][110 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11736);
      reg = x11736;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][111 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11737);
      reg = x11737;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][112 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11738);
      reg = x11738;
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":361:5)
    {
      auto& reg = args[2][113 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11739);
      reg = x11739;
    }
    // loc("./zirgen/components/onehot.h":46:19)
    auto x11848 = x11723 * x309;
    // loc("./zirgen/components/onehot.h":46:13)
    auto x11849 = x11722 + x11848;
    host_args.at(0) = x11849;
    host_args.at(1) = x11724;
    host(ctx, "log", "POSEIDON2_OUTPUT: group(%u), doMont(%u)", host_args.data(), 2, host_outs.data(), 0);
  }
  // loc("top(recursion::Top)/code(recursion::Code)/select(OneHot)/checked_bytes(Reg)"("./zirgen/components/mux.h":49:25))
  auto x11850 = args[0][7 * steps + ((cycle - 0) & mask)];
  assert(x11850 != Fp::invalid());
  if (x11850 != 0) {
    // loc("top(recursion::Top)/code(recursion::Code)/write_addr(Reg)"("zirgen/circuit/recursion/top.cpp":23:49))
    auto x11851 = args[0][0 * steps + ((cycle - 0) & mask)];
    assert(x11851 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/checked_bytes(recursion::CheckedBytesInst)/eval_point(Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":67:34))
    auto x11852 = args[0][8 * steps + ((cycle - 0) & mask)];
    assert(x11852 != Fp::invalid());
    {
      host_args.at(0) = x11852;
      host(ctx, "womRead", "", host_args.data(), 1, host_outs.data(), 4);
      auto x11853 = host_outs.at(0);
      auto x11854 = host_outs.at(1);
      auto x11855 = host_outs.at(2);
      auto x11856 = host_outs.at(3);
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][6 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x11853);
        reg = x11853;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][7 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x11854);
        reg = x11854;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][8 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x11855);
        reg = x11855;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][9 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x11856);
        reg = x11856;
      }
    }
    // loc("zirgen/circuit/recursion/wom.cpp":82:3)
    {
      auto& reg = args[2][5 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11852);
      reg = x11852;
    }
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x11857 = args[2][6 * steps + ((cycle - 0) & mask)];
    assert(x11857 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x11858 = args[2][7 * steps + ((cycle - 0) & mask)];
    assert(x11858 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x11859 = args[2][8 * steps + ((cycle - 0) & mask)];
    assert(x11859 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
    auto x11860 = args[2][9 * steps + ((cycle - 0) & mask)];
    assert(x11860 != Fp::invalid());
    {
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11861 = x11857 * x11857;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11862 = x11857 * x11858;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11863 = x11857 * x11859;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11864 = x11857 * x11860;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11865 = x11858 * x11860;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11866 = x11859 * x11860;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11867 = x11860 * x11860;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11868 = x11858 * x11858;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11869 = x11858 * x11859;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11870 = x11859 * x11859;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11871 = x11867 * x299;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11872 = x11862 + x11862;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11873 = x11863 + x11868;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11874 = x11864 + x11869;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11875 = x11865 + x11870;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11876 = x11866 + x11866;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11877 = x11876 * x299;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11878 = x11873 + x11863;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11879 = x11874 + x11869;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11880 = x11875 + x11865;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11881 = x11878 + x11871;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11882 = x11879 + x11864;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11883 = x11872 + x11877;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11884 = x11880 * x299;
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":35:15)
      auto x11885 = x11861 + x11884;
      // loc("zirgen/components/fpext.cpp":28:5)
      {
        auto& reg = args[2][114 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x11885);
        reg = x11885;
      }
      // loc("zirgen/components/fpext.cpp":28:5)
      {
        auto& reg = args[2][115 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x11883);
        reg = x11883;
      }
      // loc("zirgen/components/fpext.cpp":28:5)
      {
        auto& reg = args[2][116 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x11881);
        reg = x11881;
      }
      // loc("zirgen/components/fpext.cpp":28:5)
      {
        auto& reg = args[2][117 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x11882);
        reg = x11882;
      }
    }
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[0](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":38:12))
    auto x11886 = args[2][114 * steps + ((cycle - 0) & mask)];
    assert(x11886 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[1](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":38:12))
    auto x11887 = args[2][115 * steps + ((cycle - 0) & mask)];
    assert(x11887 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[2](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":38:12))
    auto x11888 = args[2][116 * steps + ((cycle - 0) & mask)];
    assert(x11888 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[3](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":38:12))
    auto x11889 = args[2][117 * steps + ((cycle - 0) & mask)];
    assert(x11889 != Fp::invalid());
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11890 = x11886 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11891 = x11886 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11892 = x11886 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11893 = x11886 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11894 = x11887 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11895 = x11888 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11896 = x11889 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11897 = x11857 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11898 = x11857 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11899 = x11857 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11900 = x11857 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11901 = x11858 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11902 = x11859 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11903 = x11860 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11904 = x11887 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11905 = x11887 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11906 = x11888 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11907 = x11858 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11908 = x11858 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11909 = x11858 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11910 = x11859 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11911 = x11859 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11912 = x11859 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11913 = x11860 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11914 = x11860 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11915 = x11860 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11916 = x11896 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11917 = x11903 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11918 = x11891 + x11891;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11919 = x11892 + x11904;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11920 = x11893 + x11905;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11921 = x11894 + x11906;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11922 = x11895 + x11895;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11923 = x11898 + x11907;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11924 = x11899 + x11908;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11925 = x11900 + x11909;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11926 = x11901 + x11912;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11927 = x11902 + x11915;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11928 = x11922 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11929 = x11927 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11930 = x11919 + x11892;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11931 = x11920 + x11905;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11932 = x11921 + x11894;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11933 = x11924 + x11910;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11934 = x11925 + x11911;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11935 = x11926 + x11914;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11936 = x11930 + x11916;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11937 = x11931 + x11893;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11938 = x11918 + x11928;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11939 = x11933 + x11917;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11940 = x11934 + x11913;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11941 = x11923 + x11929;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11942 = x11932 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11943 = x11935 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":40:13)
    auto x11944 = x11890 + x11942;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":39:12)
    auto x11945 = x11897 + x11943;
    // loc("zirgen/components/fpext.cpp":28:5)
    {
      auto& reg = args[2][118 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11944);
      reg = x11944;
    }
    // loc("zirgen/components/fpext.cpp":28:5)
    {
      auto& reg = args[2][119 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11938);
      reg = x11938;
    }
    // loc("zirgen/components/fpext.cpp":28:5)
    {
      auto& reg = args[2][120 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11936);
      reg = x11936;
    }
    // loc("zirgen/components/fpext.cpp":28:5)
    {
      auto& reg = args[2][121 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11937);
      reg = x11937;
    }
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[0](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":41:12))
    auto x11946 = args[2][118 * steps + ((cycle - 0) & mask)];
    assert(x11946 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[1](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":41:12))
    auto x11947 = args[2][119 * steps + ((cycle - 0) & mask)];
    assert(x11947 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[2](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":41:12))
    auto x11948 = args[2][120 * steps + ((cycle - 0) & mask)];
    assert(x11948 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[3](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":41:12))
    auto x11949 = args[2][121 * steps + ((cycle - 0) & mask)];
    assert(x11949 != Fp::invalid());
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11950 = x11946 * x11946;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11951 = x11946 * x11947;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11952 = x11946 * x11948;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11953 = x11946 * x11949;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11954 = x11946 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11955 = x11946 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11956 = x11946 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11957 = x11946 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11958 = x11946 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11959 = x11946 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11960 = x11946 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11961 = x11946 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11962 = x11947 * x11949;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11963 = x11947 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11964 = x11947 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11965 = x11948 * x11949;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11966 = x11948 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11967 = x11948 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11968 = x11949 * x11949;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11969 = x11949 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11970 = x11949 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11971 = x11947 * x11947;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11972 = x11947 * x11948;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11973 = x11947 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11974 = x11947 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11975 = x11947 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11976 = x11947 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11977 = x11947 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11978 = x11947 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11979 = x11948 * x11948;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11980 = x11948 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11981 = x11948 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11982 = x11948 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11983 = x11948 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11984 = x11948 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11985 = x11948 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11986 = x11949 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11987 = x11949 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11988 = x11949 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11989 = x11949 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11990 = x11949 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11991 = x11949 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11992 = x11968 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11993 = x11969 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x11994 = x11970 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11995 = x11951 + x11951;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11996 = x11952 + x11971;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x11997 = x11953 + x11972;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11998 = x11955 + x11973;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x11999 = x11956 + x11974;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12000 = x11957 + x11975;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12001 = x11959 + x11976;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12002 = x11960 + x11977;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12003 = x11961 + x11978;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x12004 = x11962 + x11979;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12005 = x11963 + x11982;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12006 = x11964 + x11985;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x12007 = x11965 + x11965;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12008 = x11966 + x11988;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12009 = x11967 + x11991;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x12010 = x12007 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12011 = x12008 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12012 = x12009 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12013 = x11995 + x12010;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x12014 = x11996 + x11952;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x12015 = x11997 + x11972;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12016 = x11998 + x12011;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12017 = x11999 + x11980;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12018 = x12000 + x11981;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12019 = x12002 + x11983;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12020 = x12003 + x11984;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x12021 = x12004 + x11962;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12022 = x12005 + x11987;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12023 = x12006 + x11990;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x12024 = x12014 + x11992;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x12025 = x12015 + x11953;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12026 = x12017 + x11993;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12027 = x12018 + x11986;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12028 = x12019 + x11994;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12029 = x12020 + x11989;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12030 = x12001 + x12012;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12031 = x12013 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12032 = x12013 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12033 = x12016 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12034 = x12013 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12035 = x12013 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12036 = x12013 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12037 = x12013 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12038 = x12013 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12039 = x12013 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12040 = x12016 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12041 = x12016 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12042 = x12016 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":45:12)
    auto x12043 = x12021 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":43:12)
    auto x12044 = x12022 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12045 = x12023 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12046 = x11950 + x12043;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12047 = x11954 + x12044;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":42:12)
    auto x12048 = x11958 + x12045;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12049 = x12024 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12050 = x12024 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12051 = x12025 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12052 = x12025 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12053 = x12026 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12054 = x12027 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12055 = x12046 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12056 = x12046 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12057 = x12046 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12058 = x12046 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12059 = x12046 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12060 = x12046 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12061 = x12046 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12062 = x12046 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12063 = x12047 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12064 = x12047 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12065 = x12047 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12066 = x12047 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12067 = x12024 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12068 = x12024 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12069 = x12024 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12070 = x12024 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12071 = x12024 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12072 = x12024 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12073 = x12025 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12074 = x12025 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12075 = x12025 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12076 = x12025 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12077 = x12025 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12078 = x12025 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12079 = x12026 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12080 = x12026 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12081 = x12026 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12082 = x12027 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12083 = x12027 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12084 = x12027 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12085 = x12051 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12086 = x12052 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12087 = x12054 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12088 = x12049 + x12075;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12089 = x12050 + x12078;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12090 = x12053 + x12084;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12091 = x12031 + x12069;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12092 = x12032 + x12072;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12093 = x12033 + x12081;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12094 = x12056 + x12034;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12095 = x12057 + x12035;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12096 = x12058 + x12036;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12097 = x12060 + x12037;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12098 = x12061 + x12038;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12099 = x12062 + x12039;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12100 = x12064 + x12040;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12101 = x12065 + x12041;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12102 = x12066 + x12042;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12103 = x12088 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12104 = x12089 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12105 = x12090 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12106 = x12091 + x12074;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12107 = x12092 + x12077;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12108 = x12093 + x12083;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12109 = x12095 + x12067;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12110 = x12096 + x12068;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12111 = x12098 + x12070;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12112 = x12099 + x12071;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12113 = x12101 + x12079;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12114 = x12102 + x12080;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12115 = x12109 + x12085;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12116 = x12110 + x12073;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12117 = x12111 + x12086;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12118 = x12112 + x12076;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12119 = x12113 + x12087;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12120 = x12114 + x12082;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12121 = x12094 + x12103;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12122 = x12097 + x12104;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12123 = x12100 + x12105;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12124 = x12106 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12125 = x12107 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12126 = x12108 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":47:14)
    auto x12127 = x12055 + x12124;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":46:12)
    auto x12128 = x12059 + x12125;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":44:12)
    auto x12129 = x12063 + x12126;
    // loc("zirgen/components/fpext.cpp":28:5)
    {
      auto& reg = args[2][122 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12127);
      reg = x12127;
    }
    // loc("zirgen/components/fpext.cpp":28:5)
    {
      auto& reg = args[2][123 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12121);
      reg = x12121;
    }
    // loc("zirgen/components/fpext.cpp":28:5)
    {
      auto& reg = args[2][124 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12115);
      reg = x12115;
    }
    // loc("zirgen/components/fpext.cpp":28:5)
    {
      auto& reg = args[2][125 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12116);
      reg = x12116;
    }
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[0](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":48:13))
    auto x12130 = args[2][122 * steps + ((cycle - 0) & mask)];
    assert(x12130 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[1](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":48:13))
    auto x12131 = args[2][123 * steps + ((cycle - 0) & mask)];
    assert(x12131 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[2](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":48:13))
    auto x12132 = args[2][124 * steps + ((cycle - 0) & mask)];
    assert(x12132 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/FpExtReg/elem[3](Reg)"("zirgen/circuit/recursion/checked_bytes.cpp":48:13))
    auto x12133 = args[2][125 * steps + ((cycle - 0) & mask)];
    assert(x12133 != Fp::invalid());
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12134 = x12130 * x11939;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12135 = x12130 * x11940;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12136 = x12130 * x11941;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12137 = x12130 * x11945;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12138 = x12130 * x11946;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12139 = x12130 * x11947;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12140 = x12130 * x11948;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12141 = x12130 * x11949;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12142 = x12130 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12143 = x12130 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12144 = x12130 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12145 = x12130 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12146 = x12130 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12147 = x12130 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12148 = x12130 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12149 = x12130 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12150 = x12131 * x11940;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12151 = x12131 * x11949;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12152 = x12131 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12153 = x12131 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12154 = x12132 * x11940;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12155 = x12132 * x11949;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12156 = x12132 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12157 = x12132 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12158 = x12133 * x11940;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12159 = x12133 * x11949;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12160 = x12133 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12161 = x12133 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12162 = x12131 * x11939;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12163 = x12131 * x11941;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12164 = x12131 * x11945;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12165 = x12131 * x11946;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12166 = x12131 * x11947;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12167 = x12131 * x11948;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12168 = x12131 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12169 = x12131 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12170 = x12131 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12171 = x12131 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12172 = x12131 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12173 = x12131 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12174 = x12132 * x11939;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12175 = x12132 * x11941;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12176 = x12132 * x11945;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12177 = x12132 * x11946;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12178 = x12132 * x11947;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12179 = x12132 * x11948;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12180 = x12132 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12181 = x12132 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12182 = x12132 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12183 = x12132 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12184 = x12132 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12185 = x12132 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12186 = x12133 * x11939;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12187 = x12133 * x11941;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12188 = x12133 * x11945;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12189 = x12133 * x11946;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12190 = x12133 * x11947;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12191 = x12133 * x11948;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12192 = x12133 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12193 = x12133 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12194 = x12133 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12195 = x12133 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12196 = x12133 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12197 = x12133 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12198 = x12158 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12199 = x12159 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12200 = x12160 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12201 = x12161 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12202 = x12134 + x12163;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12203 = x12135 + x12162;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12204 = x12136 + x12164;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12205 = x12139 + x12165;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12206 = x12140 + x12166;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12207 = x12141 + x12167;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12208 = x12143 + x12168;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12209 = x12144 + x12169;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12210 = x12145 + x12170;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12211 = x12147 + x12171;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12212 = x12148 + x12172;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12213 = x12149 + x12173;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12214 = x12150 + x12174;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12215 = x12151 + x12179;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12216 = x12152 + x12182;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12217 = x12153 + x12185;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12218 = x12154 + x12186;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12219 = x12155 + x12191;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12220 = x12156 + x12194;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12221 = x12157 + x12197;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12222 = x12218 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12223 = x12219 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12224 = x12220 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12225 = x12221 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12226 = x12202 + x12176;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12227 = x12203 + x12175;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12228 = x12205 + x12223;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12229 = x12206 + x12177;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12230 = x12207 + x12178;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12231 = x12209 + x12180;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12232 = x12210 + x12181;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12233 = x12212 + x12183;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12234 = x12213 + x12184;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12235 = x12214 + x12187;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12236 = x12215 + x12190;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12237 = x12216 + x12193;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12238 = x12217 + x12196;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12239 = x12226 + x12198;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12240 = x12227 + x12188;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12241 = x12229 + x12199;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12242 = x12230 + x12189;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12243 = x12231 + x12200;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12244 = x12232 + x12192;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12245 = x12233 + x12201;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12246 = x12234 + x12195;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12247 = x12204 + x12222;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12248 = x12208 + x12224;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12249 = x12211 + x12225;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12250 = x12228 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12251 = x12228 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12252 = x12228 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12253 = x12228 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12254 = x12235 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":52:13)
    auto x12255 = x12236 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12256 = x12237 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12257 = x12238 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12258 = x12138 + x12255;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":51:13)
    auto x12259 = x12137 + x12254;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":50:13)
    auto x12260 = x12142 + x12256;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":49:13)
    auto x12261 = x12146 + x12257;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12262 = x12241 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12263 = x12242 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12264 = x12258 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12265 = x12258 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12266 = x12258 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12267 = x12258 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12268 = x12241 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12269 = x12241 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12270 = x12241 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12271 = x12242 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12272 = x12242 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12273 = x12242 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12274 = x12263 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12275 = x12262 + x12273;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12276 = x12250 + x12270;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12277 = x12265 + x12251;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12278 = x12266 + x12252;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12279 = x12267 + x12253;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12280 = x12275 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12281 = x12276 + x12272;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12282 = x12278 + x12268;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12283 = x12279 + x12269;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12284 = x12282 + x12274;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12285 = x12283 + x12271;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12286 = x12277 + x12280;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12287 = x12281 * x299;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":53:13)
    auto x12288 = x12264 + x12287;
    {
      host(ctx, "readCoefficients", "", host_args.data(), 0, host_outs.data(), 16);
      auto x12289 = host_outs.at(0);
      auto x12290 = host_outs.at(1);
      auto x12291 = host_outs.at(2);
      auto x12292 = host_outs.at(3);
      auto x12293 = host_outs.at(4);
      auto x12294 = host_outs.at(5);
      auto x12295 = host_outs.at(6);
      auto x12296 = host_outs.at(7);
      auto x12297 = host_outs.at(8);
      auto x12298 = host_outs.at(9);
      auto x12299 = host_outs.at(10);
      auto x12300 = host_outs.at(11);
      auto x12301 = host_outs.at(12);
      auto x12302 = host_outs.at(13);
      auto x12303 = host_outs.at(14);
      auto x12304 = host_outs.at(15);
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12305 = Fp(x12289.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][20 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12305);
        reg = x12305;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12306 = Fp(x12289.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][36 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12306);
        reg = x12306;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12307 = Fp(x12289.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][52 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12307);
        reg = x12307;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12308 = Fp(x12289.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][68 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12308);
        reg = x12308;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12309 = Fp(x12290.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][21 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12309);
        reg = x12309;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12310 = Fp(x12290.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][37 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12310);
        reg = x12310;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12311 = Fp(x12290.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][53 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12311);
        reg = x12311;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12312 = Fp(x12290.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][69 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12312);
        reg = x12312;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12313 = Fp(x12291.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][22 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12313);
        reg = x12313;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12314 = Fp(x12291.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][38 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12314);
        reg = x12314;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12315 = Fp(x12291.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][54 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12315);
        reg = x12315;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12316 = Fp(x12291.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][70 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12316);
        reg = x12316;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12317 = Fp(x12292.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][23 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12317);
        reg = x12317;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12318 = Fp(x12292.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][39 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12318);
        reg = x12318;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12319 = Fp(x12292.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][55 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12319);
        reg = x12319;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12320 = Fp(x12292.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][71 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12320);
        reg = x12320;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12321 = Fp(x12293.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][24 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12321);
        reg = x12321;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12322 = Fp(x12293.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][40 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12322);
        reg = x12322;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12323 = Fp(x12293.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][56 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12323);
        reg = x12323;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12324 = Fp(x12293.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][72 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12324);
        reg = x12324;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12325 = Fp(x12294.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][25 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12325);
        reg = x12325;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12326 = Fp(x12294.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][41 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12326);
        reg = x12326;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12327 = Fp(x12294.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][57 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12327);
        reg = x12327;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12328 = Fp(x12294.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][73 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12328);
        reg = x12328;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12329 = Fp(x12295.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][26 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12329);
        reg = x12329;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12330 = Fp(x12295.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][42 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12330);
        reg = x12330;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12331 = Fp(x12295.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][58 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12331);
        reg = x12331;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12332 = Fp(x12295.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][74 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12332);
        reg = x12332;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12333 = Fp(x12296.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][27 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12333);
        reg = x12333;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12334 = Fp(x12296.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][43 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12334);
        reg = x12334;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12335 = Fp(x12296.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][59 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12335);
        reg = x12335;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12336 = Fp(x12296.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][75 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12336);
        reg = x12336;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12337 = Fp(x12297.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][28 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12337);
        reg = x12337;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12338 = Fp(x12297.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][44 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12338);
        reg = x12338;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12339 = Fp(x12297.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][60 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12339);
        reg = x12339;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12340 = Fp(x12297.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][76 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12340);
        reg = x12340;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12341 = Fp(x12298.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][29 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12341);
        reg = x12341;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12342 = Fp(x12298.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12342);
        reg = x12342;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12343 = Fp(x12298.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][61 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12343);
        reg = x12343;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12344 = Fp(x12298.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][77 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12344);
        reg = x12344;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12345 = Fp(x12299.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][30 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12345);
        reg = x12345;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12346 = Fp(x12299.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12346);
        reg = x12346;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12347 = Fp(x12299.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][62 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12347);
        reg = x12347;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12348 = Fp(x12299.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][78 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12348);
        reg = x12348;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12349 = Fp(x12300.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][31 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12349);
        reg = x12349;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12350 = Fp(x12300.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12350);
        reg = x12350;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12351 = Fp(x12300.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][63 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12351);
        reg = x12351;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12352 = Fp(x12300.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][79 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12352);
        reg = x12352;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12353 = Fp(x12301.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][32 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12353);
        reg = x12353;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12354 = Fp(x12301.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12354);
        reg = x12354;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12355 = Fp(x12301.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][64 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12355);
        reg = x12355;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12356 = Fp(x12301.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][80 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12356);
        reg = x12356;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12357 = Fp(x12302.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][33 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12357);
        reg = x12357;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12358 = Fp(x12302.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12358);
        reg = x12358;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12359 = Fp(x12302.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][65 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12359);
        reg = x12359;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12360 = Fp(x12302.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][81 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12360);
        reg = x12360;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12361 = Fp(x12303.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][34 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12361);
        reg = x12361;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12362 = Fp(x12303.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][50 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12362);
        reg = x12362;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12363 = Fp(x12303.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][66 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12363);
        reg = x12363;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12364 = Fp(x12303.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][82 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12364);
        reg = x12364;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:26)
      auto x12365 = Fp(x12304.asUInt32() & x308.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":75:7)
      {
        auto& reg = args[2][35 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12365);
        reg = x12365;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:25)
      auto x12366 = Fp(x12304.asUInt32() & x2.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":76:7)
      {
        auto& reg = args[2][51 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12366);
        reg = x12366;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:25)
      auto x12367 = Fp(x12304.asUInt32() & x1.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":77:7)
      {
        auto& reg = args[2][67 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12367);
        reg = x12367;
      }
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:27)
      auto x12368 = Fp(x12304.asUInt32() & x0.asUInt32());
      // loc("zirgen/circuit/recursion/checked_bytes.cpp":78:7)
      {
        auto& reg = args[2][83 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x12368);
        reg = x12368;
      }
    }
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12369 = args[2][20 * steps + ((cycle - 0) & mask)];
    assert(x12369 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12370 = args[2][36 * steps + ((cycle - 0) & mask)];
    assert(x12370 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12371 = args[2][52 * steps + ((cycle - 0) & mask)];
    assert(x12371 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12372 = args[2][68 * steps + ((cycle - 0) & mask)];
    assert(x12372 != Fp::invalid());
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12373 = x12369 + x12370;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12374 = x12373 + x12371;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12375 = x12374 + x12372;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12376 = args[2][21 * steps + ((cycle - 0) & mask)];
    assert(x12376 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/checked_bytes(recursion::CheckedBytesInst)/keep_coeffs(Reg)"("./zirgen/compiler/edsl/edsl.h":118:61))
    auto x12377 = args[0][9 * steps + ((cycle - 0) & mask)];
    assert(x12377 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12378 = args[2][37 * steps + ((cycle - 0) & mask)];
    assert(x12378 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12379 = args[2][53 * steps + ((cycle - 0) & mask)];
    assert(x12379 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12380 = args[2][69 * steps + ((cycle - 0) & mask)];
    assert(x12380 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12381 = args[2][90 * steps + ((cycle - 1) & mask)];
    if (x12381 == Fp::invalid()) x12381 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12382 = x12377 * x285;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12383 = x12382 * x12381;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12384 = x12383 + x12375;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12385 = x12376 + x12378;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12386 = x12385 + x12379;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12387 = x12386 + x12380;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12388 = args[2][22 * steps + ((cycle - 0) & mask)];
    assert(x12388 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12389 = args[2][38 * steps + ((cycle - 0) & mask)];
    assert(x12389 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12390 = args[2][54 * steps + ((cycle - 0) & mask)];
    assert(x12390 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12391 = args[2][70 * steps + ((cycle - 0) & mask)];
    assert(x12391 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12392 = args[2][91 * steps + ((cycle - 1) & mask)];
    if (x12392 == Fp::invalid()) x12392 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12393 = x12387 * x11857;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12394 = x12387 * x11858;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12395 = x12387 * x11859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12396 = x12387 * x11860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12397 = x12382 * x12392;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12398 = x12397 + x12387;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12399 = x12375 + x12393;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12400 = x12388 + x12389;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12401 = x12400 + x12390;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12402 = x12401 + x12391;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12403 = args[2][23 * steps + ((cycle - 0) & mask)];
    assert(x12403 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12404 = args[2][39 * steps + ((cycle - 0) & mask)];
    assert(x12404 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12405 = args[2][55 * steps + ((cycle - 0) & mask)];
    assert(x12405 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12406 = args[2][71 * steps + ((cycle - 0) & mask)];
    assert(x12406 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12407 = args[2][92 * steps + ((cycle - 1) & mask)];
    if (x12407 == Fp::invalid()) x12407 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12408 = x12402 * x11886;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12409 = x12402 * x11887;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12410 = x12402 * x11888;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12411 = x12402 * x11889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12412 = x12382 * x12407;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12413 = x12412 + x12402;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12414 = x12394 + x12409;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12415 = x12395 + x12410;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12416 = x12396 + x12411;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12417 = x12399 + x12408;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12418 = x12403 + x12404;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12419 = x12418 + x12405;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12420 = x12419 + x12406;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12421 = args[2][24 * steps + ((cycle - 0) & mask)];
    assert(x12421 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12422 = args[2][40 * steps + ((cycle - 0) & mask)];
    assert(x12422 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12423 = args[2][56 * steps + ((cycle - 0) & mask)];
    assert(x12423 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12424 = args[2][72 * steps + ((cycle - 0) & mask)];
    assert(x12424 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12425 = args[2][93 * steps + ((cycle - 1) & mask)];
    if (x12425 == Fp::invalid()) x12425 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12426 = x12420 * x11939;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12427 = x12420 * x11940;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12428 = x12420 * x11941;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12429 = x12420 * x11945;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12430 = x12382 * x12425;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12431 = x12430 + x12420;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12432 = x12414 + x12428;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12433 = x12415 + x12426;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12434 = x12416 + x12427;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12435 = x12417 + x12429;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12436 = x12421 + x12422;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12437 = x12436 + x12423;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12438 = x12437 + x12424;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12439 = args[2][25 * steps + ((cycle - 0) & mask)];
    assert(x12439 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12440 = args[2][41 * steps + ((cycle - 0) & mask)];
    assert(x12440 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12441 = args[2][57 * steps + ((cycle - 0) & mask)];
    assert(x12441 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12442 = args[2][73 * steps + ((cycle - 0) & mask)];
    assert(x12442 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12443 = args[2][94 * steps + ((cycle - 1) & mask)];
    if (x12443 == Fp::invalid()) x12443 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12444 = x12438 * x11946;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12445 = x12438 * x11947;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12446 = x12438 * x11948;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12447 = x12438 * x11949;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12448 = x12382 * x12443;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12449 = x12448 + x12438;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12450 = x12432 + x12445;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12451 = x12433 + x12446;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12452 = x12434 + x12447;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12453 = x12435 + x12444;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12454 = x12439 + x12440;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12455 = x12454 + x12441;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12456 = x12455 + x12442;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12457 = args[2][26 * steps + ((cycle - 0) & mask)];
    assert(x12457 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12458 = args[2][42 * steps + ((cycle - 0) & mask)];
    assert(x12458 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12459 = args[2][58 * steps + ((cycle - 0) & mask)];
    assert(x12459 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12460 = args[2][74 * steps + ((cycle - 0) & mask)];
    assert(x12460 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12461 = args[2][95 * steps + ((cycle - 1) & mask)];
    if (x12461 == Fp::invalid()) x12461 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12462 = x12456 * x12028;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12463 = x12456 * x12029;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12464 = x12456 * x12030;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12465 = x12456 * x12048;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12466 = x12382 * x12461;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12467 = x12466 + x12456;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12468 = x12450 + x12464;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12469 = x12451 + x12462;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12470 = x12452 + x12463;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12471 = x12453 + x12465;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12472 = x12457 + x12458;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12473 = x12472 + x12459;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12474 = x12473 + x12460;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12475 = args[2][27 * steps + ((cycle - 0) & mask)];
    assert(x12475 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12476 = args[2][43 * steps + ((cycle - 0) & mask)];
    assert(x12476 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12477 = args[2][59 * steps + ((cycle - 0) & mask)];
    assert(x12477 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12478 = args[2][75 * steps + ((cycle - 0) & mask)];
    assert(x12478 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12479 = args[2][96 * steps + ((cycle - 1) & mask)];
    if (x12479 == Fp::invalid()) x12479 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12480 = x12474 * x12026;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12481 = x12474 * x12027;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12482 = x12474 * x12016;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12483 = x12474 * x12047;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12484 = x12382 * x12479;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12485 = x12484 + x12474;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12486 = x12468 + x12482;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12487 = x12469 + x12480;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12488 = x12470 + x12481;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12489 = x12471 + x12483;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12490 = x12475 + x12476;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12491 = x12490 + x12477;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12492 = x12491 + x12478;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12493 = args[2][28 * steps + ((cycle - 0) & mask)];
    assert(x12493 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12494 = args[2][44 * steps + ((cycle - 0) & mask)];
    assert(x12494 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12495 = args[2][60 * steps + ((cycle - 0) & mask)];
    assert(x12495 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12496 = args[2][76 * steps + ((cycle - 0) & mask)];
    assert(x12496 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12497 = args[2][97 * steps + ((cycle - 1) & mask)];
    if (x12497 == Fp::invalid()) x12497 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12498 = x12492 * x12119;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12499 = x12492 * x12120;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12500 = x12492 * x12123;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12501 = x12492 * x12129;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12502 = x12382 * x12497;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12503 = x12502 + x12492;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12504 = x12486 + x12500;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12505 = x12487 + x12498;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12506 = x12488 + x12499;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12507 = x12489 + x12501;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12508 = x12493 + x12494;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12509 = x12508 + x12495;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12510 = x12509 + x12496;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12511 = args[2][29 * steps + ((cycle - 0) & mask)];
    assert(x12511 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12512 = args[2][45 * steps + ((cycle - 0) & mask)];
    assert(x12512 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12513 = args[2][61 * steps + ((cycle - 0) & mask)];
    assert(x12513 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12514 = args[2][77 * steps + ((cycle - 0) & mask)];
    assert(x12514 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12515 = args[2][98 * steps + ((cycle - 1) & mask)];
    if (x12515 == Fp::invalid()) x12515 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12516 = x12510 * x12024;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12517 = x12510 * x12025;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12518 = x12510 * x12013;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12519 = x12510 * x12046;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12520 = x12382 * x12515;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12521 = x12520 + x12510;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12522 = x12504 + x12518;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12523 = x12505 + x12516;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12524 = x12506 + x12517;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12525 = x12507 + x12519;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12526 = x12511 + x12512;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12527 = x12526 + x12513;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12528 = x12527 + x12514;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12529 = args[2][30 * steps + ((cycle - 0) & mask)];
    assert(x12529 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12530 = args[2][46 * steps + ((cycle - 0) & mask)];
    assert(x12530 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12531 = args[2][62 * steps + ((cycle - 0) & mask)];
    assert(x12531 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12532 = args[2][78 * steps + ((cycle - 0) & mask)];
    assert(x12532 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12533 = args[2][99 * steps + ((cycle - 1) & mask)];
    if (x12533 == Fp::invalid()) x12533 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12534 = x12528 * x12117;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12535 = x12528 * x12118;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12536 = x12528 * x12122;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12537 = x12528 * x12128;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12538 = x12382 * x12533;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12539 = x12538 + x12528;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12540 = x12522 + x12536;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12541 = x12523 + x12534;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12542 = x12524 + x12535;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12543 = x12525 + x12537;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12544 = x12529 + x12530;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12545 = x12544 + x12531;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12546 = x12545 + x12532;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12547 = args[2][31 * steps + ((cycle - 0) & mask)];
    assert(x12547 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12548 = args[2][47 * steps + ((cycle - 0) & mask)];
    assert(x12548 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12549 = args[2][63 * steps + ((cycle - 0) & mask)];
    assert(x12549 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12550 = args[2][79 * steps + ((cycle - 0) & mask)];
    assert(x12550 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12551 = args[2][100 * steps + ((cycle - 1) & mask)];
    if (x12551 == Fp::invalid()) x12551 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12552 = x12546 * x12130;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12553 = x12546 * x12131;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12554 = x12546 * x12132;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12555 = x12546 * x12133;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12556 = x12382 * x12551;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12557 = x12556 + x12546;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12558 = x12540 + x12553;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12559 = x12541 + x12554;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12560 = x12542 + x12555;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12561 = x12543 + x12552;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12562 = x12547 + x12548;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12563 = x12562 + x12549;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12564 = x12563 + x12550;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12565 = args[2][32 * steps + ((cycle - 0) & mask)];
    assert(x12565 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12566 = args[2][48 * steps + ((cycle - 0) & mask)];
    assert(x12566 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12567 = args[2][64 * steps + ((cycle - 0) & mask)];
    assert(x12567 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12568 = args[2][80 * steps + ((cycle - 0) & mask)];
    assert(x12568 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12569 = args[2][101 * steps + ((cycle - 1) & mask)];
    if (x12569 == Fp::invalid()) x12569 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12570 = x12564 * x12245;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12571 = x12564 * x12246;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12572 = x12564 * x12249;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12573 = x12564 * x12261;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12574 = x12382 * x12569;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12575 = x12574 + x12564;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12576 = x12558 + x12572;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12577 = x12559 + x12570;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12578 = x12560 + x12571;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12579 = x12561 + x12573;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12580 = x12565 + x12566;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12581 = x12580 + x12567;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12582 = x12581 + x12568;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12583 = args[2][33 * steps + ((cycle - 0) & mask)];
    assert(x12583 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12584 = args[2][49 * steps + ((cycle - 0) & mask)];
    assert(x12584 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12585 = args[2][65 * steps + ((cycle - 0) & mask)];
    assert(x12585 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12586 = args[2][81 * steps + ((cycle - 0) & mask)];
    assert(x12586 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12587 = args[2][102 * steps + ((cycle - 1) & mask)];
    if (x12587 == Fp::invalid()) x12587 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12588 = x12582 * x12243;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12589 = x12582 * x12244;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12590 = x12582 * x12248;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12591 = x12582 * x12260;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12592 = x12382 * x12587;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12593 = x12592 + x12582;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12594 = x12576 + x12590;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12595 = x12577 + x12588;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12596 = x12578 + x12589;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12597 = x12579 + x12591;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12598 = x12583 + x12584;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12599 = x12598 + x12585;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12600 = x12599 + x12586;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12601 = args[2][34 * steps + ((cycle - 0) & mask)];
    assert(x12601 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12602 = args[2][50 * steps + ((cycle - 0) & mask)];
    assert(x12602 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12603 = args[2][66 * steps + ((cycle - 0) & mask)];
    assert(x12603 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12604 = args[2][82 * steps + ((cycle - 0) & mask)];
    assert(x12604 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12605 = args[2][103 * steps + ((cycle - 1) & mask)];
    if (x12605 == Fp::invalid()) x12605 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12606 = x12600 * x12239;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12607 = x12600 * x12240;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12608 = x12600 * x12247;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12609 = x12600 * x12259;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12610 = x12382 * x12605;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12611 = x12610 + x12600;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12612 = x12594 + x12608;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12613 = x12595 + x12606;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12614 = x12596 + x12607;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12615 = x12597 + x12609;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12616 = x12601 + x12602;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12617 = x12616 + x12603;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12618 = x12617 + x12604;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":83:19))
    auto x12619 = args[2][35 * steps + ((cycle - 0) & mask)];
    assert(x12619 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":84:18))
    auto x12620 = args[2][51 * steps + ((cycle - 0) & mask)];
    assert(x12620 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":85:18))
    auto x12621 = args[2][67 * steps + ((cycle - 0) & mask)];
    assert(x12621 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":86:20))
    auto x12622 = args[2][83 * steps + ((cycle - 0) & mask)];
    assert(x12622 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12623 = args[2][104 * steps + ((cycle - 1) & mask)];
    if (x12623 == Fp::invalid()) x12623 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12624 = x12618 * x12241;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12625 = x12618 * x12242;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12626 = x12618 * x12228;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12627 = x12618 * x12258;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12628 = x12382 * x12623;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12629 = x12628 + x12618;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12630 = x12612 + x12626;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12631 = x12613 + x12624;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12632 = x12614 + x12625;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12633 = x12615 + x12627;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12634 = x12619 + x12620;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12635 = x12634 + x12621;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":93:18)
    auto x12636 = x12635 + x12622;
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/checked_bytes(recursion::CheckedBytesInst)/keep_upper_state(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x12637 = args[0][10 * steps + ((cycle - 0) & mask)];
    assert(x12637 != Fp::invalid());
    // loc("top(recursion::Top)/code(recursion::Code)/inst(Mux)/checked_bytes(recursion::CheckedBytesInst)/prep_full(Reg)"("./zirgen/compiler/edsl/component.h":154:27))
    auto x12638 = args[0][11 * steps + ((cycle - 0) & mask)];
    assert(x12638 != Fp::invalid());
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":94:72))
    auto x12639 = args[2][105 * steps + ((cycle - 1) & mask)];
    if (x12639 == Fp::invalid()) x12639 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12640 = x12636 * x12284;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12641 = x12636 * x12285;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12642 = x12636 * x12286;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:17)
    auto x12643 = x12636 * x12288;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12644 = x12382 * x12639;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":94:13)
    auto x12645 = x12644 + x12636;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12646 = x12630 + x12642;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12647 = x12631 + x12640;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12648 = x12632 + x12641;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":96:11)
    auto x12649 = x12633 + x12643;
    host_args.at(0) = x11852;
    host_args.at(1) = x12377;
    host_args.at(2) = x12637;
    host_args.at(3) = x12638;
    host(ctx, "log", "CHECKED_BYTES_EVAL: evalPt(%u), keepCoeffs(%u), keepUpperState(%u), prepFull(%u)", host_args.data(), 4, host_outs.data(), 0);
    // loc("zirgen/circuit/recursion/wom.cpp":87:3)
    {
      auto& reg = args[2][10 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x11851);
      reg = x11851;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][11 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12649);
      reg = x12649;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][12 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12646);
      reg = x12646;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][13 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12647);
      reg = x12647;
    }
    // loc("zirgen/circuit/recursion/wom.cpp":51:5)
    {
      auto& reg = args[2][14 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12648);
      reg = x12648;
    }
    {
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12650 = args[2][10 * steps + ((cycle - 0) & mask)];
      assert(x12650 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12651 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x12651 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12652 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x12652 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12653 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x12653 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12654 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x12654 != Fp::invalid());
      host_args.at(0) = x12650;
      host_args.at(1) = x12651;
      host_args.at(2) = x12652;
      host_args.at(3) = x12653;
      host_args.at(4) = x12654;
      host(ctx, "womWrite", "", host_args.data(), 5, host_outs.data(), 0);
    }
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x12655 = x12557 + x12575;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x12656 = x12593 + x12611;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x12657 = x12629 + x12645;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x12658 = x12384 + x12398;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x12659 = x12413 + x12431;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x12660 = x12449 + x12467;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x12661 = x12485 + x12503;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x12662 = x12521 + x12539;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12663 = x12655 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12664 = x12656 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12665 = x12657 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12666 = x12658 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12667 = x12659 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12668 = x12660 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12669 = x12661 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12670 = x12662 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12671 = x12575 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12672 = x12611 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12673 = x12645 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12674 = x12398 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12675 = x12431 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12676 = x12467 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12677 = x12503 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12678 = x12539 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12679 = x12671 + x12662;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12680 = x12672 + x12657;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12681 = x12673 + x12656;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12682 = x12674 + x12659;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12683 = x12675 + x12658;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12684 = x12676 + x12661;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12685 = x12677 + x12660;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12686 = x12678 + x12655;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12687 = x12663 + x12679;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12688 = x12664 + x12680;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12689 = x12665 + x12681;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12690 = x12668 + x12684;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12691 = x12669 + x12685;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12692 = x12670 + x12686;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":107:70))
    auto x12693 = args[2][106 * steps + ((cycle - 1) & mask)];
    if (x12693 == Fp::invalid()) x12693 = 0;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":107:70))
    auto x12694 = args[2][107 * steps + ((cycle - 1) & mask)];
    if (x12694 == Fp::invalid()) x12694 = 0;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":107:70))
    auto x12695 = args[2][108 * steps + ((cycle - 1) & mask)];
    if (x12695 == Fp::invalid()) x12695 = 0;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":107:70))
    auto x12696 = args[2][109 * steps + ((cycle - 1) & mask)];
    if (x12696 == Fp::invalid()) x12696 = 0;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":107:70))
    auto x12697 = args[2][110 * steps + ((cycle - 1) & mask)];
    if (x12697 == Fp::invalid()) x12697 = 0;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":107:70))
    auto x12698 = args[2][111 * steps + ((cycle - 1) & mask)];
    if (x12698 == Fp::invalid()) x12698 = 0;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":107:70))
    auto x12699 = args[2][112 * steps + ((cycle - 1) & mask)];
    if (x12699 == Fp::invalid()) x12699 = 0;
    // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/Reg"("zirgen/circuit/recursion/checked_bytes.cpp":107:70))
    auto x12700 = args[2][113 * steps + ((cycle - 1) & mask)];
    if (x12700 == Fp::invalid()) x12700 = 0;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":107:13)
    auto x12701 = x12637 * x12693;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":107:13)
    auto x12702 = x12637 * x12695;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":107:13)
    auto x12703 = x12637 * x12697;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":107:13)
    auto x12704 = x12637 * x12699;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12705 = x12638 * x239;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":107:13)
    auto x12706 = x12637 * x12694;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":107:13)
    auto x12707 = x12637 * x12696;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":107:13)
    auto x12708 = x12637 * x12698;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":107:13)
    auto x12709 = x12637 * x12700;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:39)
    auto x12710 = x310 - x12638;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x12711 = x12679 + x12692;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x12712 = x12680 + x12689;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x12713 = x12681 + x12688;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x12714 = x12684 + x12691;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x12715 = x12685 + x12690;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x12716 = x12686 + x12687;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12717 = x12666 + x12682;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12718 = x12667 + x12683;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x12719 = x12701 + x12706;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x12720 = x12702 + x12707;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":14:12)
    auto x12721 = x12703 + x12708;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":15:12)
    auto x12722 = x12704 + x12709;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12723 = x12719 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12724 = x12720 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12725 = x12721 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12726 = x12722 * x307;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12727 = x12706 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12728 = x12707 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12729 = x12708 * x309;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12730 = x12709 * x309;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12731 = x12710 * x12384;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x12732 = x12682 + x12718;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x12733 = x12683 + x12717;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12734 = x12727 + x12720;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12735 = x12728 + x12719;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":16:12)
    auto x12736 = x12729 + x12722;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":17:12)
    auto x12737 = x12730 + x12721;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12738 = x12723 + x12734;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12739 = x12724 + x12735;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":19:12)
    auto x12740 = x12725 + x12736;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":18:12)
    auto x12741 = x12726 + x12737;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12742 = x12717 + x12690;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12743 = x12718 + x12691;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x12744 = x12734 + x12739;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x12745 = x12735 + x12738;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":21:12)
    auto x12746 = x12736 + x12741;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":20:12)
    auto x12747 = x12737 + x12740;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12748 = x12742 + x12692;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12749 = x12743 + x12687;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12750 = x12732 + x12714;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12751 = x12733 + x12715;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12752 = x12748 + x12688;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12753 = x12749 + x12689;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12754 = x12750 + x12716;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12755 = x12751 + x12711;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12756 = x12752 + x12738;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12757 = x12753 + x12739;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12758 = x12754 + x12712;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12759 = x12755 + x12713;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12760 = x12756 + x12740;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12761 = x12757 + x12741;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12762 = x12758 + x12744;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12763 = x12759 + x12745;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12764 = x12717 + x12760;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12765 = x12718 + x12761;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12766 = x12687 + x12761;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12767 = x12688 + x12760;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12768 = x12689 + x12761;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12769 = x12690 + x12760;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12770 = x12691 + x12761;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12771 = x12692 + x12760;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12772 = x12738 + x12760;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12773 = x12739 + x12761;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12774 = x12740 + x12760;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12775 = x12741 + x12761;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12776 = x12762 + x12746;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":35:21)
    auto x12777 = x12763 + x12747;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12778 = x12732 + x12776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12779 = x12733 + x12777;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12780 = x12711 + x12777;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12781 = x12712 + x12776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12782 = x12713 + x12777;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12783 = x12714 + x12776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12784 = x12715 + x12777;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12785 = x12716 + x12776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12786 = x12744 + x12776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12787 = x12745 + x12777;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12788 = x12746 + x12776;
    // loc("zirgen/circuit/recursion/poseidon2.cpp":40:14)
    auto x12789 = x12747 + x12777;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12790 = x12638 * x12779;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12791 = x12790 + x12731;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12792 = x12791 + x12705;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][90 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12792);
      reg = x12792;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12793 = x12638 * x12764;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12794 = x12638 * x238;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12795 = x12710 * x12398;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12796 = x12793 + x12795;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12797 = x12796 + x12794;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][91 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12797);
      reg = x12797;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12798 = x12638 * x12778;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12799 = x12638 * x237;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12800 = x12710 * x12413;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12801 = x12798 + x12800;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12802 = x12801 + x12799;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][92 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12802);
      reg = x12802;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12803 = x12638 * x12765;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12804 = x12638 * x236;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12805 = x12710 * x12431;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12806 = x12803 + x12805;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12807 = x12806 + x12804;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][93 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12807);
      reg = x12807;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12808 = x12638 * x12784;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12809 = x12638 * x235;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12810 = x12710 * x12449;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12811 = x12808 + x12810;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12812 = x12811 + x12809;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][94 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12812);
      reg = x12812;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12813 = x12638 * x12769;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12814 = x12638 * x234;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12815 = x12710 * x12467;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12816 = x12813 + x12815;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12817 = x12816 + x12814;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][95 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12817);
      reg = x12817;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12818 = x12638 * x12783;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12819 = x12638 * x233;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12820 = x12710 * x12485;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12821 = x12818 + x12820;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12822 = x12821 + x12819;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][96 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12822);
      reg = x12822;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12823 = x12638 * x12770;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12824 = x12638 * x232;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12825 = x12710 * x12503;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12826 = x12823 + x12825;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12827 = x12826 + x12824;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][97 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12827);
      reg = x12827;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12828 = x12638 * x12780;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12829 = x12638 * x231;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12830 = x12710 * x12521;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12831 = x12828 + x12830;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12832 = x12831 + x12829;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][98 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12832);
      reg = x12832;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12833 = x12638 * x12771;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12834 = x12638 * x230;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12835 = x12710 * x12539;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12836 = x12833 + x12835;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12837 = x12836 + x12834;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][99 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12837);
      reg = x12837;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12838 = x12638 * x12785;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12839 = x12638 * x229;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12840 = x12710 * x12557;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12841 = x12838 + x12840;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12842 = x12841 + x12839;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][100 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12842);
      reg = x12842;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12843 = x12638 * x12766;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12844 = x12638 * x228;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12845 = x12710 * x12575;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12846 = x12843 + x12845;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12847 = x12846 + x12844;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][101 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12847);
      reg = x12847;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12848 = x12638 * x12782;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12849 = x12638 * x227;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12850 = x12710 * x12593;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12851 = x12848 + x12850;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12852 = x12851 + x12849;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][102 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12852);
      reg = x12852;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12853 = x12638 * x12767;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12854 = x12638 * x226;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12855 = x12710 * x12611;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12856 = x12853 + x12855;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12857 = x12856 + x12854;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][103 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12857);
      reg = x12857;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12858 = x12638 * x12781;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12859 = x12638 * x225;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12860 = x12710 * x12629;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12861 = x12858 + x12860;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12862 = x12861 + x12859;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][104 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12862);
      reg = x12862;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12863 = x12638 * x12768;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12864 = x12638 * x224;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12865 = x12710 * x12645;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12866 = x12863 + x12865;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12867 = x12866 + x12864;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][105 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12867);
      reg = x12867;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12868 = x12638 * x12787;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12869 = x12638 * x223;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12870 = x12710 * x12701;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12871 = x12868 + x12870;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12872 = x12871 + x12869;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][106 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12872);
      reg = x12872;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12873 = x12638 * x12772;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12874 = x12638 * x222;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12875 = x12710 * x12706;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12876 = x12873 + x12875;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12877 = x12876 + x12874;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][107 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12877);
      reg = x12877;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12878 = x12638 * x12786;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12879 = x12638 * x221;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12880 = x12710 * x12702;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12881 = x12878 + x12880;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12882 = x12881 + x12879;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][108 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12882);
      reg = x12882;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12883 = x12638 * x12773;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12884 = x12638 * x220;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12885 = x12710 * x12707;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12886 = x12883 + x12885;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12887 = x12886 + x12884;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][109 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12887);
      reg = x12887;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12888 = x12638 * x12789;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12889 = x12638 * x219;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12890 = x12710 * x12703;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12891 = x12888 + x12890;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12892 = x12891 + x12889;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][110 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12892);
      reg = x12892;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12893 = x12638 * x12774;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12894 = x12638 * x218;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12895 = x12710 * x12708;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12896 = x12893 + x12895;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12897 = x12896 + x12894;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][111 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12897);
      reg = x12897;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12898 = x12638 * x12788;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12899 = x12638 * x217;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12900 = x12710 * x12704;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12901 = x12898 + x12900;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12902 = x12901 + x12899;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][112 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12902);
      reg = x12902;
    }
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12903 = x12638 * x12775;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:17)
    auto x12904 = x12638 * x216;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:38)
    auto x12905 = x12710 * x12709;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":113:11)
    auto x12906 = x12903 + x12905;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":114:11)
    auto x12907 = x12906 + x12904;
    // loc("zirgen/circuit/recursion/checked_bytes.cpp":115:5)
    {
      auto& reg = args[2][113 * steps + cycle];
      assert(reg == Fp::invalid() || reg == x12907);
      reg = x12907;
    }
  }
  if (x1360 != 0) {
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x12908 = args[0][8 * steps + ((cycle - 0) & mask)];
    assert(x12908 != Fp::invalid());
    if (x12908 != 0) {
      {
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][10 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x12909 = args[0][9 * steps + ((cycle - 0) & mask)];
    assert(x12909 != Fp::invalid());
    if (x12909 != 0) {
      {
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][10 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x12910 = args[0][10 * steps + ((cycle - 0) & mask)];
    assert(x12910 != Fp::invalid());
    if (x12910 != 0) {
      {
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][10 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x12911 = args[0][11 * steps + ((cycle - 0) & mask)];
    assert(x12911 != Fp::invalid());
    if (x12911 != 0) {
      {
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][10 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x12912 = args[0][12 * steps + ((cycle - 0) & mask)];
    assert(x12912 != Fp::invalid());
    if (x12912 != 0) {
      {
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][10 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x12913 = args[0][17 * steps + ((cycle - 0) & mask)];
    assert(x12913 != Fp::invalid());
    if (x12913 != 0) {
      {
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][5 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][6 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][7 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][8 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][9 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
        // loc("./zirgen/components/bits.h":37:46)
        {
          auto& reg = args[2][10 * steps + cycle];
          assert(reg == Fp::invalid() || reg == x311);
          reg = x311;
        }
      }
    }
  }
  if (x8811 != 0) {
    {
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
    }
  }
  if (x11720 != 0) {
    {
      // loc("zirgen/circuit/recursion/wom.cpp":12:3)
      {
        auto& reg = args[2][45 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][46 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][47 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][48 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
      // loc("zirgen/circuit/recursion/wom.cpp":51:5)
      {
        auto& reg = args[2][49 * steps + cycle];
        assert(reg == Fp::invalid() || reg == x311);
        reg = x311;
      }
    }
  }
  if (x312 != 0) {
    {
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12914 = args[2][5 * steps + ((cycle - 0) & mask)];
      assert(x12914 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12915 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x12915 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12916 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x12916 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12917 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x12917 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12918 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x12918 != Fp::invalid());
      host_args.at(0) = x12914;
      host_args.at(1) = x12915;
      host_args.at(2) = x12916;
      host_args.at(3) = x12917;
      host_args.at(4) = x12918;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12919 = args[2][10 * steps + ((cycle - 0) & mask)];
      assert(x12919 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12920 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x12920 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12921 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x12921 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12922 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x12922 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12923 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x12923 != Fp::invalid());
      host_args.at(0) = x12919;
      host_args.at(1) = x12920;
      host_args.at(2) = x12921;
      host_args.at(3) = x12922;
      host_args.at(4) = x12923;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12924 = args[2][15 * steps + ((cycle - 0) & mask)];
      assert(x12924 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12925 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x12925 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12926 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x12926 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12927 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x12927 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12928 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x12928 != Fp::invalid());
      host_args.at(0) = x12924;
      host_args.at(1) = x12925;
      host_args.at(2) = x12926;
      host_args.at(3) = x12927;
      host_args.at(4) = x12928;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12929 = args[2][20 * steps + ((cycle - 0) & mask)];
      assert(x12929 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12930 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x12930 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12931 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x12931 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12932 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x12932 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12933 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x12933 != Fp::invalid());
      host_args.at(0) = x12929;
      host_args.at(1) = x12930;
      host_args.at(2) = x12931;
      host_args.at(3) = x12932;
      host_args.at(4) = x12933;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12934 = args[2][25 * steps + ((cycle - 0) & mask)];
      assert(x12934 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12935 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x12935 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12936 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x12936 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12937 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x12937 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12938 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x12938 != Fp::invalid());
      host_args.at(0) = x12934;
      host_args.at(1) = x12935;
      host_args.at(2) = x12936;
      host_args.at(3) = x12937;
      host_args.at(4) = x12938;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12939 = args[2][30 * steps + ((cycle - 0) & mask)];
      assert(x12939 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12940 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x12940 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12941 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x12941 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12942 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x12942 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12943 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x12943 != Fp::invalid());
      host_args.at(0) = x12939;
      host_args.at(1) = x12940;
      host_args.at(2) = x12941;
      host_args.at(3) = x12942;
      host_args.at(4) = x12943;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12944 = args[2][35 * steps + ((cycle - 0) & mask)];
      assert(x12944 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12945 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x12945 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12946 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x12946 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12947 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x12947 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12948 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x12948 != Fp::invalid());
      host_args.at(0) = x12944;
      host_args.at(1) = x12945;
      host_args.at(2) = x12946;
      host_args.at(3) = x12947;
      host_args.at(4) = x12948;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12949 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x12949 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12950 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x12950 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12951 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x12951 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12952 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x12952 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12953 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x12953 != Fp::invalid());
      host_args.at(0) = x12949;
      host_args.at(1) = x12950;
      host_args.at(2) = x12951;
      host_args.at(3) = x12952;
      host_args.at(4) = x12953;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x12954 = args[2][45 * steps + ((cycle - 0) & mask)];
      assert(x12954 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12955 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x12955 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12956 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x12956 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12957 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x12957 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/micro_ops(recursion::MicroOps)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x12958 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x12958 != Fp::invalid());
      host_args.at(0) = x12954;
      host_args.at(1) = x12955;
      host_args.at(2) = x12956;
      host_args.at(3) = x12957;
      host_args.at(4) = x12958;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
    }
  }
  if (x1360 != 0) {
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x12959 = args[0][11 * steps + ((cycle - 0) & mask)];
    assert(x12959 != Fp::invalid());
    if (x12959 != 0) {
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x12960 = args[2][11 * steps + ((cycle - 0) & mask)];
        assert(x12960 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12961 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x12961 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12962 = args[2][13 * steps + ((cycle - 0) & mask)];
        assert(x12962 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12963 = args[2][14 * steps + ((cycle - 0) & mask)];
        assert(x12963 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12964 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x12964 != Fp::invalid());
        host_args.at(0) = x12960;
        host_args.at(1) = x12961;
        host_args.at(2) = x12962;
        host_args.at(3) = x12963;
        host_args.at(4) = x12964;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x12965 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x12965 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12966 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x12966 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12967 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x12967 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12968 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x12968 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12969 = args[2][20 * steps + ((cycle - 0) & mask)];
        assert(x12969 != Fp::invalid());
        host_args.at(0) = x12965;
        host_args.at(1) = x12966;
        host_args.at(2) = x12967;
        host_args.at(3) = x12968;
        host_args.at(4) = x12969;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x12970 = args[2][21 * steps + ((cycle - 0) & mask)];
        assert(x12970 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12971 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x12971 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12972 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x12972 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12973 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x12973 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_and_elem(recursion::BitAndElem)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12974 = args[2][25 * steps + ((cycle - 0) & mask)];
        assert(x12974 != Fp::invalid());
        host_args.at(0) = x12970;
        host_args.at(1) = x12971;
        host_args.at(2) = x12972;
        host_args.at(3) = x12973;
        host_args.at(4) = x12974;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x12975 = args[0][12 * steps + ((cycle - 0) & mask)];
    assert(x12975 != Fp::invalid());
    if (x12975 != 0) {
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x12976 = args[2][11 * steps + ((cycle - 0) & mask)];
        assert(x12976 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12977 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x12977 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12978 = args[2][13 * steps + ((cycle - 0) & mask)];
        assert(x12978 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12979 = args[2][14 * steps + ((cycle - 0) & mask)];
        assert(x12979 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12980 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x12980 != Fp::invalid());
        host_args.at(0) = x12976;
        host_args.at(1) = x12977;
        host_args.at(2) = x12978;
        host_args.at(3) = x12979;
        host_args.at(4) = x12980;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x12981 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x12981 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12982 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x12982 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12983 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x12983 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12984 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x12984 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12985 = args[2][20 * steps + ((cycle - 0) & mask)];
        assert(x12985 != Fp::invalid());
        host_args.at(0) = x12981;
        host_args.at(1) = x12982;
        host_args.at(2) = x12983;
        host_args.at(3) = x12984;
        host_args.at(4) = x12985;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x12986 = args[2][21 * steps + ((cycle - 0) & mask)];
        assert(x12986 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12987 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x12987 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12988 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x12988 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12989 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x12989 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/bit_op_shorts(recursion::BitOpShorts)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12990 = args[2][25 * steps + ((cycle - 0) & mask)];
        assert(x12990 != Fp::invalid());
        host_args.at(0) = x12986;
        host_args.at(1) = x12987;
        host_args.at(2) = x12988;
        host_args.at(3) = x12989;
        host_args.at(4) = x12990;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x12991 = args[0][13 * steps + ((cycle - 0) & mask)];
    assert(x12991 != Fp::invalid());
    if (x12991 != 0) {
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x12992 = args[2][11 * steps + ((cycle - 0) & mask)];
        assert(x12992 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12993 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x12993 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12994 = args[2][13 * steps + ((cycle - 0) & mask)];
        assert(x12994 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12995 = args[2][14 * steps + ((cycle - 0) & mask)];
        assert(x12995 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12996 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x12996 != Fp::invalid());
        host_args.at(0) = x12992;
        host_args.at(1) = x12993;
        host_args.at(2) = x12994;
        host_args.at(3) = x12995;
        host_args.at(4) = x12996;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x12997 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x12997 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12998 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x12998 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x12999 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x12999 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13000 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x13000 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_init(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13001 = args[2][20 * steps + ((cycle - 0) & mask)];
        assert(x13001 != Fp::invalid());
        host_args.at(0) = x12997;
        host_args.at(1) = x12998;
        host_args.at(2) = x12999;
        host_args.at(3) = x13000;
        host_args.at(4) = x13001;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x13002 = args[0][14 * steps + ((cycle - 0) & mask)];
    assert(x13002 != Fp::invalid());
    if (x13002 != 0) {
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13003 = args[2][11 * steps + ((cycle - 0) & mask)];
        assert(x13003 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13004 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x13004 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13005 = args[2][13 * steps + ((cycle - 0) & mask)];
        assert(x13005 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13006 = args[2][14 * steps + ((cycle - 0) & mask)];
        assert(x13006 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13007 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x13007 != Fp::invalid());
        host_args.at(0) = x13003;
        host_args.at(1) = x13004;
        host_args.at(2) = x13005;
        host_args.at(3) = x13006;
        host_args.at(4) = x13007;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13008 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x13008 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13009 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x13009 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13010 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x13010 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13011 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x13011 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_fini(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13012 = args[2][20 * steps + ((cycle - 0) & mask)];
        assert(x13012 != Fp::invalid());
        host_args.at(0) = x13008;
        host_args.at(1) = x13009;
        host_args.at(2) = x13010;
        host_args.at(3) = x13011;
        host_args.at(4) = x13012;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x13013 = args[0][15 * steps + ((cycle - 0) & mask)];
    assert(x13013 != Fp::invalid());
    if (x13013 != 0) {
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13014 = args[2][11 * steps + ((cycle - 0) & mask)];
        assert(x13014 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13015 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x13015 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13016 = args[2][13 * steps + ((cycle - 0) & mask)];
        assert(x13016 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13017 = args[2][14 * steps + ((cycle - 0) & mask)];
        assert(x13017 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13018 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x13018 != Fp::invalid());
        host_args.at(0) = x13014;
        host_args.at(1) = x13015;
        host_args.at(2) = x13016;
        host_args.at(3) = x13017;
        host_args.at(4) = x13018;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13019 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x13019 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13020 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x13020 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13021 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x13021 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13022 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x13022 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_load(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13023 = args[2][20 * steps + ((cycle - 0) & mask)];
        assert(x13023 != Fp::invalid());
        host_args.at(0) = x13019;
        host_args.at(1) = x13020;
        host_args.at(2) = x13021;
        host_args.at(3) = x13022;
        host_args.at(4) = x13023;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x13024 = args[0][16 * steps + ((cycle - 0) & mask)];
    assert(x13024 != Fp::invalid());
    if (x13024 != 0) {
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13025 = args[2][11 * steps + ((cycle - 0) & mask)];
        assert(x13025 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13026 = args[2][12 * steps + ((cycle - 0) & mask)];
        assert(x13026 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13027 = args[2][13 * steps + ((cycle - 0) & mask)];
        assert(x13027 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13028 = args[2][14 * steps + ((cycle - 0) & mask)];
        assert(x13028 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13029 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x13029 != Fp::invalid());
        host_args.at(0) = x13025;
        host_args.at(1) = x13026;
        host_args.at(2) = x13027;
        host_args.at(3) = x13028;
        host_args.at(4) = x13029;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13030 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x13030 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13031 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x13031 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13032 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x13032 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13033 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x13033 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/sha_mix(recursion::ShaWrap)/sha_cycle(recursion::ShaCycle)/recursion::WomBody/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13034 = args[2][20 * steps + ((cycle - 0) & mask)];
        assert(x13034 != Fp::invalid());
        host_args.at(0) = x13030;
        host_args.at(1) = x13031;
        host_args.at(2) = x13032;
        host_args.at(3) = x13033;
        host_args.at(4) = x13034;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      }
    }
    // loc("zirgen/compiler/edsl/component.cpp":39:15)
    auto x13035 = args[0][17 * steps + ((cycle - 0) & mask)];
    assert(x13035 != Fp::invalid());
    if (x13035 != 0) {
      {
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13036 = args[2][15 * steps + ((cycle - 0) & mask)];
        assert(x13036 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13037 = args[2][16 * steps + ((cycle - 0) & mask)];
        assert(x13037 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13038 = args[2][17 * steps + ((cycle - 0) & mask)];
        assert(x13038 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13039 = args[2][18 * steps + ((cycle - 0) & mask)];
        assert(x13039 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13040 = args[2][19 * steps + ((cycle - 0) & mask)];
        assert(x13040 != Fp::invalid());
        host_args.at(0) = x13036;
        host_args.at(1) = x13037;
        host_args.at(2) = x13038;
        host_args.at(3) = x13039;
        host_args.at(4) = x13040;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13041 = args[2][20 * steps + ((cycle - 0) & mask)];
        assert(x13041 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13042 = args[2][21 * steps + ((cycle - 0) & mask)];
        assert(x13042 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13043 = args[2][22 * steps + ((cycle - 0) & mask)];
        assert(x13043 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13044 = args[2][23 * steps + ((cycle - 0) & mask)];
        assert(x13044 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13045 = args[2][24 * steps + ((cycle - 0) & mask)];
        assert(x13045 != Fp::invalid());
        host_args.at(0) = x13041;
        host_args.at(1) = x13042;
        host_args.at(2) = x13043;
        host_args.at(3) = x13044;
        host_args.at(4) = x13045;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13046 = args[2][25 * steps + ((cycle - 0) & mask)];
        assert(x13046 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13047 = args[2][26 * steps + ((cycle - 0) & mask)];
        assert(x13047 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13048 = args[2][27 * steps + ((cycle - 0) & mask)];
        assert(x13048 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13049 = args[2][28 * steps + ((cycle - 0) & mask)];
        assert(x13049 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13050 = args[2][29 * steps + ((cycle - 0) & mask)];
        assert(x13050 != Fp::invalid());
        host_args.at(0) = x13046;
        host_args.at(1) = x13047;
        host_args.at(2) = x13048;
        host_args.at(3) = x13049;
        host_args.at(4) = x13050;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
        auto x13051 = args[2][30 * steps + ((cycle - 0) & mask)];
        assert(x13051 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13052 = args[2][31 * steps + ((cycle - 0) & mask)];
        assert(x13052 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13053 = args[2][32 * steps + ((cycle - 0) & mask)];
        assert(x13053 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13054 = args[2][33 * steps + ((cycle - 0) & mask)];
        assert(x13054 != Fp::invalid());
        // loc("top(recursion::Top)/mux(Mux)/macro_ops(recursion::MacroOp)/mux(Mux)/set_global(recursion::SetGlobal)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
        auto x13055 = args[2][34 * steps + ((cycle - 0) & mask)];
        assert(x13055 != Fp::invalid());
        host_args.at(0) = x13051;
        host_args.at(1) = x13052;
        host_args.at(2) = x13053;
        host_args.at(3) = x13054;
        host_args.at(4) = x13055;
        host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      }
    }
  }
  if (x8811 != 0) {
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13056 = args[2][5 * steps + ((cycle - 0) & mask)];
      assert(x13056 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13057 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x13057 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13058 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x13058 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13059 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x13059 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13060 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x13060 != Fp::invalid());
      host_args.at(0) = x13056;
      host_args.at(1) = x13057;
      host_args.at(2) = x13058;
      host_args.at(3) = x13059;
      host_args.at(4) = x13060;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13061 = args[2][10 * steps + ((cycle - 0) & mask)];
      assert(x13061 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13062 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x13062 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13063 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x13063 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13064 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x13064 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13065 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x13065 != Fp::invalid());
      host_args.at(0) = x13061;
      host_args.at(1) = x13062;
      host_args.at(2) = x13063;
      host_args.at(3) = x13064;
      host_args.at(4) = x13065;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13066 = args[2][15 * steps + ((cycle - 0) & mask)];
      assert(x13066 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13067 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x13067 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13068 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x13068 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13069 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x13069 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13070 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x13070 != Fp::invalid());
      host_args.at(0) = x13066;
      host_args.at(1) = x13067;
      host_args.at(2) = x13068;
      host_args.at(3) = x13069;
      host_args.at(4) = x13070;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13071 = args[2][20 * steps + ((cycle - 0) & mask)];
      assert(x13071 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13072 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x13072 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13073 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x13073 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13074 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x13074 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13075 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x13075 != Fp::invalid());
      host_args.at(0) = x13071;
      host_args.at(1) = x13072;
      host_args.at(2) = x13073;
      host_args.at(3) = x13074;
      host_args.at(4) = x13075;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13076 = args[2][25 * steps + ((cycle - 0) & mask)];
      assert(x13076 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13077 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x13077 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13078 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x13078 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13079 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x13079 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13080 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x13080 != Fp::invalid());
      host_args.at(0) = x13076;
      host_args.at(1) = x13077;
      host_args.at(2) = x13078;
      host_args.at(3) = x13079;
      host_args.at(4) = x13080;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13081 = args[2][30 * steps + ((cycle - 0) & mask)];
      assert(x13081 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13082 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x13082 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13083 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x13083 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13084 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x13084 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13085 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x13085 != Fp::invalid());
      host_args.at(0) = x13081;
      host_args.at(1) = x13082;
      host_args.at(2) = x13083;
      host_args.at(3) = x13084;
      host_args.at(4) = x13085;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13086 = args[2][35 * steps + ((cycle - 0) & mask)];
      assert(x13086 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13087 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x13087 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13088 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x13088 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13089 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x13089 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13090 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x13090 != Fp::invalid());
      host_args.at(0) = x13086;
      host_args.at(1) = x13087;
      host_args.at(2) = x13088;
      host_args.at(3) = x13089;
      host_args.at(4) = x13090;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13091 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x13091 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13092 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x13092 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13093 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x13093 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13094 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x13094 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13095 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x13095 != Fp::invalid());
      host_args.at(0) = x13091;
      host_args.at(1) = x13092;
      host_args.at(2) = x13093;
      host_args.at(3) = x13094;
      host_args.at(4) = x13095;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13096 = args[2][45 * steps + ((cycle - 0) & mask)];
      assert(x13096 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13097 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x13097 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13098 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x13098 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13099 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x13099 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_load(recursion::Poseidon2Load)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13100 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x13100 != Fp::invalid());
      host_args.at(0) = x13096;
      host_args.at(1) = x13097;
      host_args.at(2) = x13098;
      host_args.at(3) = x13099;
      host_args.at(4) = x13100;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
    }
  }
  if (x11720 != 0) {
    {
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13101 = args[2][5 * steps + ((cycle - 0) & mask)];
      assert(x13101 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13102 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x13102 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13103 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x13103 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13104 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x13104 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13105 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x13105 != Fp::invalid());
      host_args.at(0) = x13101;
      host_args.at(1) = x13102;
      host_args.at(2) = x13103;
      host_args.at(3) = x13104;
      host_args.at(4) = x13105;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13106 = args[2][10 * steps + ((cycle - 0) & mask)];
      assert(x13106 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13107 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x13107 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13108 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x13108 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13109 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x13109 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13110 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x13110 != Fp::invalid());
      host_args.at(0) = x13106;
      host_args.at(1) = x13107;
      host_args.at(2) = x13108;
      host_args.at(3) = x13109;
      host_args.at(4) = x13110;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13111 = args[2][15 * steps + ((cycle - 0) & mask)];
      assert(x13111 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13112 = args[2][16 * steps + ((cycle - 0) & mask)];
      assert(x13112 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13113 = args[2][17 * steps + ((cycle - 0) & mask)];
      assert(x13113 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13114 = args[2][18 * steps + ((cycle - 0) & mask)];
      assert(x13114 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13115 = args[2][19 * steps + ((cycle - 0) & mask)];
      assert(x13115 != Fp::invalid());
      host_args.at(0) = x13111;
      host_args.at(1) = x13112;
      host_args.at(2) = x13113;
      host_args.at(3) = x13114;
      host_args.at(4) = x13115;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13116 = args[2][20 * steps + ((cycle - 0) & mask)];
      assert(x13116 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13117 = args[2][21 * steps + ((cycle - 0) & mask)];
      assert(x13117 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13118 = args[2][22 * steps + ((cycle - 0) & mask)];
      assert(x13118 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13119 = args[2][23 * steps + ((cycle - 0) & mask)];
      assert(x13119 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13120 = args[2][24 * steps + ((cycle - 0) & mask)];
      assert(x13120 != Fp::invalid());
      host_args.at(0) = x13116;
      host_args.at(1) = x13117;
      host_args.at(2) = x13118;
      host_args.at(3) = x13119;
      host_args.at(4) = x13120;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13121 = args[2][25 * steps + ((cycle - 0) & mask)];
      assert(x13121 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13122 = args[2][26 * steps + ((cycle - 0) & mask)];
      assert(x13122 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13123 = args[2][27 * steps + ((cycle - 0) & mask)];
      assert(x13123 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13124 = args[2][28 * steps + ((cycle - 0) & mask)];
      assert(x13124 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13125 = args[2][29 * steps + ((cycle - 0) & mask)];
      assert(x13125 != Fp::invalid());
      host_args.at(0) = x13121;
      host_args.at(1) = x13122;
      host_args.at(2) = x13123;
      host_args.at(3) = x13124;
      host_args.at(4) = x13125;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13126 = args[2][30 * steps + ((cycle - 0) & mask)];
      assert(x13126 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13127 = args[2][31 * steps + ((cycle - 0) & mask)];
      assert(x13127 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13128 = args[2][32 * steps + ((cycle - 0) & mask)];
      assert(x13128 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13129 = args[2][33 * steps + ((cycle - 0) & mask)];
      assert(x13129 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13130 = args[2][34 * steps + ((cycle - 0) & mask)];
      assert(x13130 != Fp::invalid());
      host_args.at(0) = x13126;
      host_args.at(1) = x13127;
      host_args.at(2) = x13128;
      host_args.at(3) = x13129;
      host_args.at(4) = x13130;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13131 = args[2][35 * steps + ((cycle - 0) & mask)];
      assert(x13131 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13132 = args[2][36 * steps + ((cycle - 0) & mask)];
      assert(x13132 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13133 = args[2][37 * steps + ((cycle - 0) & mask)];
      assert(x13133 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13134 = args[2][38 * steps + ((cycle - 0) & mask)];
      assert(x13134 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13135 = args[2][39 * steps + ((cycle - 0) & mask)];
      assert(x13135 != Fp::invalid());
      host_args.at(0) = x13131;
      host_args.at(1) = x13132;
      host_args.at(2) = x13133;
      host_args.at(3) = x13134;
      host_args.at(4) = x13135;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13136 = args[2][40 * steps + ((cycle - 0) & mask)];
      assert(x13136 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13137 = args[2][41 * steps + ((cycle - 0) & mask)];
      assert(x13137 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13138 = args[2][42 * steps + ((cycle - 0) & mask)];
      assert(x13138 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13139 = args[2][43 * steps + ((cycle - 0) & mask)];
      assert(x13139 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13140 = args[2][44 * steps + ((cycle - 0) & mask)];
      assert(x13140 != Fp::invalid());
      host_args.at(0) = x13136;
      host_args.at(1) = x13137;
      host_args.at(2) = x13138;
      host_args.at(3) = x13139;
      host_args.at(4) = x13140;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13141 = args[2][45 * steps + ((cycle - 0) & mask)];
      assert(x13141 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13142 = args[2][46 * steps + ((cycle - 0) & mask)];
      assert(x13142 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13143 = args[2][47 * steps + ((cycle - 0) & mask)];
      assert(x13143 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13144 = args[2][48 * steps + ((cycle - 0) & mask)];
      assert(x13144 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/poseidon2_store(recursion::Poseidon2Store)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13145 = args[2][49 * steps + ((cycle - 0) & mask)];
      assert(x13145 != Fp::invalid());
      host_args.at(0) = x13141;
      host_args.at(1) = x13142;
      host_args.at(2) = x13143;
      host_args.at(3) = x13144;
      host_args.at(4) = x13145;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
    }
  }
  if (x11850 != 0) {
    {
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13146 = args[2][5 * steps + ((cycle - 0) & mask)];
      assert(x13146 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13147 = args[2][6 * steps + ((cycle - 0) & mask)];
      assert(x13147 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13148 = args[2][7 * steps + ((cycle - 0) & mask)];
      assert(x13148 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13149 = args[2][8 * steps + ((cycle - 0) & mask)];
      assert(x13149 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13150 = args[2][9 * steps + ((cycle - 0) & mask)];
      assert(x13150 != Fp::invalid());
      host_args.at(0) = x13146;
      host_args.at(1) = x13147;
      host_args.at(2) = x13148;
      host_args.at(3) = x13149;
      host_args.at(4) = x13150;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/addr(Reg)"("zirgen/circuit/recursion/wom.cpp":22:27))
      auto x13151 = args[2][10 * steps + ((cycle - 0) & mask)];
      assert(x13151 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[0](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13152 = args[2][11 * steps + ((cycle - 0) & mask)];
      assert(x13152 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[1](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13153 = args[2][12 * steps + ((cycle - 0) & mask)];
      assert(x13153 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[2](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13154 = args[2][13 * steps + ((cycle - 0) & mask)];
      assert(x13154 != Fp::invalid());
      // loc("top(recursion::Top)/mux(Mux)/checked_bytes(recursion::CheckedBytes)/wom_body(recursion::WomBody)/plonk_body(PlonkBody)/recursion::impl::WomPlonkElement/data[3](Reg)"("zirgen/circuit/recursion/wom.cpp":44:14))
      auto x13155 = args[2][14 * steps + ((cycle - 0) & mask)];
      assert(x13155 != Fp::invalid());
      host_args.at(0) = x13151;
      host_args.at(1) = x13152;
      host_args.at(2) = x13153;
      host_args.at(3) = x13154;
      host_args.at(4) = x13155;
      host(ctx, "plonkWrite", "wom", host_args.data(), 5, host_outs.data(), 0);
    }
  }
  return x311;
}

} // namespace risc0::circuit::recursion
// clang-format on
