// beginning a Binaryen API trace

#include "binaryen-c.h"
#include <cassert>
#include <map>
#include <math.h>

int main() {
  std::map<size_t, BinaryenExpressionRef> expressions;
  std::map<size_t, BinaryenFunctionRef> functions;
  std::map<size_t, RelooperBlockRef> relooperBlocks;
  BinaryenModuleRef the_module = NULL;
  RelooperRef the_relooper = NULL;
  the_module = BinaryenModuleCreate();
  expressions[size_t(NULL)] = BinaryenExpressionRef(NULL);
  BinaryenModuleAutoDrop(the_module);
  {
    const char* segmentNames[] = {"0"};
    const char* segmentDatas[] = {0};
    bool segmentPassives[] = {false};
    BinaryenExpressionRef segmentOffsets[] = {0};
    BinaryenIndex segmentSizes[] = {0};
    BinaryenSetMemory(the_module,
                      256,
                      256,
                      "memory",
                      segmentNames,
                      segmentDatas,
                      segmentPassives,
                      segmentOffsets,
                      segmentSizes,
                      0,
                      0,
                      0,
                      "0");
  }
  the_relooper = RelooperCreate(the_module);
  expressions[1] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[2] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[3] = BinaryenStore(the_module,
                                 4,
                                 0,
                                 0,
                                 expressions[2],
                                 expressions[1],
                                 BinaryenTypeInt32(),
                                 "0");
  expressions[4] = BinaryenReturn(the_module, expressions[0]);
  {
    BinaryenExpressionRef children[] = {expressions[3], expressions[4]};
    expressions[5] =
      BinaryenBlock(the_module, "bb0", children, 2, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[5]);
  expressions[6] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[7] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[6], "0");
  expressions[8] = BinaryenLocalSet(the_module, 0, expressions[7]);
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[8]);
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[9] = RelooperRenderAndDispose(the_relooper, relooperBlocks[1], 1);
  {
    BinaryenType varTypes[] = {
      BinaryenTypeInt32(), BinaryenTypeInt32(), BinaryenTypeInt64()};
    functions[0] = BinaryenAddFunction(the_module,
                                       "tinycore::eh_personality",
                                       BinaryenTypeNone(),
                                       BinaryenTypeNone(),
                                       varTypes,
                                       3,
                                       expressions[9]);
  }
  BinaryenAddFunctionExport(
    the_module, "tinycore::eh_personality", "tinycore::eh_personality");
  the_relooper = RelooperCreate(the_module);
  expressions[10] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[11] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[12] = BinaryenStore(the_module,
                                  4,
                                  0,
                                  0,
                                  expressions[11],
                                  expressions[10],
                                  BinaryenTypeInt32(),
                                  "0");
  expressions[13] = BinaryenReturn(the_module, expressions[0]);
  {
    BinaryenExpressionRef children[] = {expressions[12], expressions[13]};
    expressions[14] =
      BinaryenBlock(the_module, "bb0", children, 2, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[14]);
  expressions[15] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[16] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[15], "0");
  expressions[17] = BinaryenLocalSet(the_module, 0, expressions[16]);
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[17]);
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[18] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[1], 1);
  {
    BinaryenType varTypes[] = {
      BinaryenTypeInt32(), BinaryenTypeInt32(), BinaryenTypeInt64()};
    functions[1] = BinaryenAddFunction(the_module,
                                       "tinycore::eh_unwind_resume",
                                       BinaryenTypeNone(),
                                       BinaryenTypeNone(),
                                       varTypes,
                                       3,
                                       expressions[18]);
  }
  BinaryenAddFunctionExport(
    the_module, "tinycore::eh_unwind_resume", "tinycore::eh_unwind_resume");
  the_relooper = RelooperCreate(the_module);
  {
    BinaryenExpressionRef children[] = {0};
    expressions[19] =
      BinaryenBlock(the_module, "bb0", children, 0, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[19]);
  {
    BinaryenExpressionRef children[] = {0};
    expressions[20] =
      BinaryenBlock(the_module, "bb1", children, 0, BinaryenTypeAuto());
  }
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[20]);
  RelooperAddBranch(
    relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[1], expressions[0], expressions[0]);
  expressions[21] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[22] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[21], "0");
  expressions[23] = BinaryenLocalSet(the_module, 0, expressions[22]);
  relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[23]);
  RelooperAddBranch(
    relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[24] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 1);
  {
    BinaryenType varTypes[] = {
      BinaryenTypeInt32(), BinaryenTypeInt32(), BinaryenTypeInt64()};
    functions[2] = BinaryenAddFunction(the_module,
                                       "tinycore::panic_fmt",
                                       BinaryenTypeNone(),
                                       BinaryenTypeNone(),
                                       varTypes,
                                       3,
                                       expressions[24]);
  }
  BinaryenAddFunctionExport(
    the_module, "tinycore::panic_fmt", "tinycore::panic_fmt");
  the_relooper = RelooperCreate(the_module);
  expressions[25] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[26] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[27] = BinaryenStore(the_module,
                                  4,
                                  0,
                                  0,
                                  expressions[26],
                                  expressions[25],
                                  BinaryenTypeInt32(),
                                  "0");
  expressions[28] = BinaryenReturn(the_module, expressions[0]);
  {
    BinaryenExpressionRef children[] = {expressions[27], expressions[28]};
    expressions[29] =
      BinaryenBlock(the_module, "bb0", children, 2, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[29]);
  expressions[30] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[31] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[30], "0");
  expressions[32] = BinaryenLocalSet(the_module, 0, expressions[31]);
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[32]);
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[33] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[1], 1);
  {
    BinaryenType varTypes[] = {
      BinaryenTypeInt32(), BinaryenTypeInt32(), BinaryenTypeInt64()};
    functions[3] = BinaryenAddFunction(the_module,
                                       "tinycore::rust_eh_register_frames",
                                       BinaryenTypeNone(),
                                       BinaryenTypeNone(),
                                       varTypes,
                                       3,
                                       expressions[33]);
  }
  BinaryenAddFunctionExport(the_module,
                            "tinycore::rust_eh_register_frames",
                            "tinycore::rust_eh_register_frames");
  the_relooper = RelooperCreate(the_module);
  expressions[34] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[35] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[36] = BinaryenStore(the_module,
                                  4,
                                  0,
                                  0,
                                  expressions[35],
                                  expressions[34],
                                  BinaryenTypeInt32(),
                                  "0");
  expressions[37] = BinaryenReturn(the_module, expressions[0]);
  {
    BinaryenExpressionRef children[] = {expressions[36], expressions[37]};
    expressions[38] =
      BinaryenBlock(the_module, "bb0", children, 2, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[38]);
  expressions[39] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[40] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[39], "0");
  expressions[41] = BinaryenLocalSet(the_module, 0, expressions[40]);
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[41]);
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[42] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[1], 1);
  {
    BinaryenType varTypes[] = {
      BinaryenTypeInt32(), BinaryenTypeInt32(), BinaryenTypeInt64()};
    functions[4] = BinaryenAddFunction(the_module,
                                       "tinycore::rust_eh_unregister_frames",
                                       BinaryenTypeNone(),
                                       BinaryenTypeNone(),
                                       varTypes,
                                       3,
                                       expressions[42]);
  }
  BinaryenAddFunctionExport(the_module,
                            "tinycore::rust_eh_unregister_frames",
                            "tinycore::rust_eh_unregister_frames");
  the_relooper = RelooperCreate(the_module);
  expressions[43] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[44] = BinaryenLocalSet(the_module, 1, expressions[43]);
  expressions[45] = BinaryenLocalGet(the_module, 1, BinaryenTypeInt32());
  expressions[46] = BinaryenLocalSet(the_module, 2, expressions[45]);
  BinaryenAddFunctionImport(the_module,
                            "print_i32",
                            "spectest",
                            "print",
                            BinaryenTypeInt32(),
                            BinaryenTypeNone());
  expressions[47] = BinaryenLocalGet(the_module, 2, BinaryenTypeInt32());
  {
    BinaryenExpressionRef operands[] = {expressions[47]};
    expressions[48] =
      BinaryenCall(the_module, "print_i32", operands, 1, BinaryenTypeNone());
  }
  {
    BinaryenExpressionRef children[] = {
      expressions[44], expressions[46], expressions[48]};
    expressions[49] =
      BinaryenBlock(the_module, "bb0", children, 3, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[49]);
  expressions[50] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt32());
  expressions[51] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[52] = BinaryenStore(the_module,
                                  4,
                                  0,
                                  0,
                                  expressions[51],
                                  expressions[50],
                                  BinaryenTypeInt32(),
                                  "0");
  expressions[53] = BinaryenReturn(the_module, expressions[0]);
  {
    BinaryenExpressionRef children[] = {expressions[52], expressions[53]};
    expressions[54] =
      BinaryenBlock(the_module, "bb1", children, 2, BinaryenTypeAuto());
  }
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[54]);
  RelooperAddBranch(
    relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
  expressions[55] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[56] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[55], "0");
  expressions[57] = BinaryenLocalSet(the_module, 3, expressions[56]);
  relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[57]);
  RelooperAddBranch(
    relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[58] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 4);
  {
    BinaryenType varTypes[] = {BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt64()};
    functions[5] = BinaryenAddFunction(the_module,
                                       "wasm::print_i32",
                                       BinaryenTypeInt32(),
                                       BinaryenTypeNone(),
                                       varTypes,
                                       5,
                                       expressions[58]);
  }
  BinaryenAddFunctionExport(the_module, "wasm::print_i32", "wasm::print_i32");
  the_relooper = RelooperCreate(the_module);
  expressions[59] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
  expressions[60] = BinaryenLocalSet(the_module, 0, expressions[59]);
  expressions[61] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[62] = BinaryenLocalSet(the_module, 2, expressions[61]);
  expressions[63] = BinaryenLocalGet(the_module, 2, BinaryenTypeInt32());
  expressions[64] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
  expressions[65] = BinaryenUnary(the_module, 22, expressions[63]);
  expressions[66] = BinaryenUnary(the_module, 22, expressions[64]);
  expressions[67] =
    BinaryenBinary(the_module, 25, expressions[65], expressions[66]);
  expressions[68] = BinaryenLocalSet(the_module, 8, expressions[67]);
  expressions[69] = BinaryenLocalGet(the_module, 8, BinaryenTypeInt64());
  expressions[70] = BinaryenUnary(the_module, 24, expressions[69]);
  expressions[71] = BinaryenConst(the_module, BinaryenLiteralInt64(32));
  expressions[72] = BinaryenLocalGet(the_module, 8, BinaryenTypeInt64());
  expressions[73] =
    BinaryenBinary(the_module, 36, expressions[72], expressions[71]);
  expressions[74] = BinaryenUnary(the_module, 24, expressions[73]);
  expressions[75] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[76] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[75], "0");
  expressions[77] = BinaryenConst(the_module, BinaryenLiteralInt32(128));
  expressions[78] =
    BinaryenBinary(the_module, 1, expressions[76], expressions[77]);
  expressions[79] =
    BinaryenLocalTee(the_module, 3, expressions[78], BinaryenTypeInt32());
  expressions[80] = BinaryenStore(the_module,
                                  4,
                                  0,
                                  0,
                                  expressions[75],
                                  expressions[79],
                                  BinaryenTypeInt32(),
                                  "0");
  expressions[81] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt32());
  expressions[82] = BinaryenStore(the_module,
                                  4,
                                  0,
                                  0,
                                  expressions[81],
                                  expressions[70],
                                  BinaryenTypeInt32(),
                                  "0");
  expressions[83] = BinaryenStore(the_module,
                                  4,
                                  4,
                                  0,
                                  expressions[81],
                                  expressions[74],
                                  BinaryenTypeInt32(),
                                  "0");
  {
    BinaryenExpressionRef children[] = {expressions[60],
                                        expressions[62],
                                        expressions[68],
                                        expressions[80],
                                        expressions[82],
                                        expressions[83]};
    expressions[84] =
      BinaryenBlock(the_module, "bb0", children, 6, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[84]);
  expressions[85] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt32());
  expressions[86] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[85], "0");
  expressions[87] = BinaryenLocalSet(the_module, 1, expressions[86]);
  expressions[88] = BinaryenLocalGet(the_module, 1, BinaryenTypeInt32());
  expressions[89] = BinaryenLocalSet(the_module, 4, expressions[88]);
  expressions[90] = BinaryenLocalGet(the_module, 4, BinaryenTypeInt32());
  expressions[91] = BinaryenLocalSet(the_module, 5, expressions[90]);
  expressions[92] = BinaryenLocalGet(the_module, 6, BinaryenTypeInt32());
  expressions[93] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[94] = BinaryenStore(the_module,
                                  4,
                                  0,
                                  0,
                                  expressions[93],
                                  expressions[92],
                                  BinaryenTypeInt32(),
                                  "0");
  expressions[95] = BinaryenLocalGet(the_module, 5, BinaryenTypeInt32());
  expressions[96] = BinaryenReturn(the_module, expressions[95]);
  {
    BinaryenExpressionRef children[] = {expressions[87],
                                        expressions[89],
                                        expressions[91],
                                        expressions[94],
                                        expressions[96]};
    expressions[97] =
      BinaryenBlock(the_module, "bb1", children, 5, BinaryenTypeAuto());
  }
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[97]);
  expressions[98] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt32());
  expressions[99] = BinaryenLoad(
    the_module, 4, 0, 8, 0, BinaryenTypeInt32(), expressions[98], "0");
  RelooperAddBranch(
    relooperBlocks[0], relooperBlocks[1], expressions[99], expressions[0]);
  expressions[100] = BinaryenUnreachable(the_module);
  relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[100]);
  RelooperAddBranch(
    relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]);
  expressions[101] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[102] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[101], "0");
  expressions[103] = BinaryenLocalSet(the_module, 6, expressions[102]);
  relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[103]);
  RelooperAddBranch(
    relooperBlocks[3], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[104] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[3], 7);
  {
    BinaryenType varTypes[] = {BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt64()};
    functions[6] = BinaryenAddFunction(the_module,
                                       "real_main",
                                       BinaryenTypeNone(),
                                       BinaryenTypeInt32(),
                                       varTypes,
                                       9,
                                       expressions[104]);
  }
  BinaryenAddFunctionExport(the_module, "real_main", "real_main");
  the_relooper = RelooperCreate(the_module);
  expressions[105] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[106] = BinaryenLocalSet(the_module, 2, expressions[105]);
  {
    BinaryenExpressionRef operands[] = {0};
    expressions[107] =
      BinaryenCall(the_module, "real_main", operands, 0, BinaryenTypeInt32());
  }
  expressions[108] = BinaryenLocalSet(the_module, 4, expressions[107]);
  {
    BinaryenExpressionRef children[] = {expressions[106], expressions[108]};
    expressions[109] =
      BinaryenBlock(the_module, "bb0", children, 2, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[109]);
  expressions[110] = BinaryenLocalGet(the_module, 4, BinaryenTypeInt32());
  expressions[111] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
  expressions[112] = BinaryenUnary(the_module, 22, expressions[110]);
  expressions[113] = BinaryenUnary(the_module, 22, expressions[111]);
  expressions[114] =
    BinaryenBinary(the_module, 25, expressions[112], expressions[113]);
  expressions[115] = BinaryenLocalSet(the_module, 11, expressions[114]);
  expressions[116] = BinaryenLocalGet(the_module, 11, BinaryenTypeInt64());
  expressions[117] = BinaryenUnary(the_module, 24, expressions[116]);
  expressions[118] = BinaryenConst(the_module, BinaryenLiteralInt64(32));
  expressions[119] = BinaryenLocalGet(the_module, 11, BinaryenTypeInt64());
  expressions[120] =
    BinaryenBinary(the_module, 36, expressions[119], expressions[118]);
  expressions[121] = BinaryenUnary(the_module, 24, expressions[120]);
  expressions[122] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[123] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[122], "0");
  expressions[124] = BinaryenConst(the_module, BinaryenLiteralInt32(128));
  expressions[125] =
    BinaryenBinary(the_module, 1, expressions[123], expressions[124]);
  expressions[126] =
    BinaryenLocalTee(the_module, 5, expressions[125], BinaryenTypeInt32());
  expressions[127] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[122],
                                   expressions[126],
                                   BinaryenTypeInt32(),
                                   "0");
  expressions[128] = BinaryenLocalGet(the_module, 5, BinaryenTypeInt32());
  expressions[129] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[128],
                                   expressions[117],
                                   BinaryenTypeInt32(),
                                   "0");
  expressions[130] = BinaryenStore(the_module,
                                   4,
                                   4,
                                   0,
                                   expressions[128],
                                   expressions[121],
                                   BinaryenTypeInt32(),
                                   "0");
  {
    BinaryenExpressionRef children[] = {
      expressions[115], expressions[127], expressions[129], expressions[130]};
    expressions[131] =
      BinaryenBlock(the_module, "bb1", children, 4, BinaryenTypeAuto());
  }
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[131]);
  expressions[132] = BinaryenLocalGet(the_module, 5, BinaryenTypeInt32());
  expressions[133] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[132], "0");
  expressions[134] = BinaryenLocalSet(the_module, 3, expressions[133]);
  expressions[135] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt32());
  expressions[136] = BinaryenLocalSet(the_module, 6, expressions[135]);
  expressions[137] = BinaryenLocalGet(the_module, 6, BinaryenTypeInt32());
  {
    BinaryenExpressionRef operands[] = {expressions[137]};
    expressions[138] = BinaryenCall(
      the_module, "wasm::print_i32", operands, 1, BinaryenTypeNone());
  }
  {
    BinaryenExpressionRef children[] = {
      expressions[134], expressions[136], expressions[138]};
    expressions[139] =
      BinaryenBlock(the_module, "bb2", children, 3, BinaryenTypeAuto());
  }
  relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[139]);
  expressions[140] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt32());
  expressions[141] = BinaryenLocalSet(the_module, 7, expressions[140]);
  expressions[142] = BinaryenLocalGet(the_module, 7, BinaryenTypeInt32());
  expressions[143] = BinaryenLocalSet(the_module, 8, expressions[142]);
  expressions[144] = BinaryenLocalGet(the_module, 9, BinaryenTypeInt32());
  expressions[145] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[146] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[145],
                                   expressions[144],
                                   BinaryenTypeInt32(),
                                   "0");
  expressions[147] = BinaryenLocalGet(the_module, 8, BinaryenTypeInt32());
  expressions[148] = BinaryenReturn(the_module, expressions[147]);
  {
    BinaryenExpressionRef children[] = {
      expressions[141], expressions[143], expressions[146], expressions[148]};
    expressions[149] =
      BinaryenBlock(the_module, "bb3", children, 4, BinaryenTypeAuto());
  }
  relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[149]);
  RelooperAddBranch(
    relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
  expressions[150] = BinaryenLocalGet(the_module, 5, BinaryenTypeInt32());
  expressions[151] = BinaryenLoad(
    the_module, 4, 0, 8, 0, BinaryenTypeInt32(), expressions[150], "0");
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[2], expressions[151], expressions[0]);
  expressions[152] = BinaryenUnreachable(the_module);
  relooperBlocks[4] = RelooperAddBlock(the_relooper, expressions[152]);
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[4], expressions[0], expressions[0]);
  RelooperAddBranch(
    relooperBlocks[2], relooperBlocks[3], expressions[0], expressions[0]);
  expressions[153] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[154] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[153], "0");
  expressions[155] = BinaryenLocalSet(the_module, 9, expressions[154]);
  relooperBlocks[5] = RelooperAddBlock(the_relooper, expressions[155]);
  RelooperAddBranch(
    relooperBlocks[5], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[156] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[5], 10);
  {
    BinaryenType varTypes[] = {BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt64()};
    BinaryenType ii_[2] = {BinaryenTypeInt32(), BinaryenTypeInt32()};
    BinaryenType ii = BinaryenTypeCreate(ii_, 2);
    functions[7] = BinaryenAddFunction(the_module,
                                       "main",
                                       ii,
                                       BinaryenTypeInt32(),
                                       varTypes,
                                       10,
                                       expressions[156]);
  }
  BinaryenAddFunctionExport(the_module, "main", "main");
  {
    const char* segmentNames[] = {"0"};
    const char* segmentDatas[] = {0};
    BinaryenExpressionRef segmentOffsets[] = {0};
    bool segmentPassives[] = {false};
    BinaryenIndex segmentSizes[] = {0};
    BinaryenSetMemory(the_module,
                      1,
                      1,
                      NULL,
                      segmentNames,
                      segmentDatas,
                      segmentPassives,
                      segmentOffsets,
                      segmentSizes,
                      0,
                      0,
                      0,
                      "0");
  }
  expressions[157] = BinaryenConst(the_module, BinaryenLiteralInt32(65535));
  expressions[158] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[159] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[158],
                                   expressions[157],
                                   BinaryenTypeInt32(),
                                   "0");
  expressions[160] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[161] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  {
    BinaryenExpressionRef operands[] = {expressions[160], expressions[161]};
    expressions[162] =
      BinaryenCall(the_module, "main", operands, 2, BinaryenTypeInt32());
  }
  expressions[163] = BinaryenDrop(the_module, expressions[162]);
  {
    BinaryenExpressionRef children[] = {expressions[159], expressions[163]};
    expressions[164] =
      BinaryenBlock(the_module, NULL, children, 2, BinaryenTypeAuto());
  }
  BinaryenAddFunctionExport(the_module, "__wasm_start", "rust_entry");
  {
    BinaryenType varTypes[] = {BinaryenTypeNone()};
    functions[8] = BinaryenAddFunction(the_module,
                                       "__wasm_start",
                                       BinaryenTypeNone(),
                                       BinaryenTypeNone(),
                                       varTypes,
                                       0,
                                       expressions[164]);
  }
  BinaryenSetStart(the_module, functions[8]);
  the_relooper = RelooperCreate(the_module);
  expressions[165] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[166] = BinaryenLocalSet(the_module, 2, expressions[165]);
  expressions[167] = BinaryenLocalGet(the_module, 1, BinaryenTypeInt32());
  expressions[168] = BinaryenLocalSet(the_module, 3, expressions[167]);
  expressions[169] = BinaryenLocalGet(the_module, 2, BinaryenTypeInt32());
  expressions[170] = BinaryenLocalSet(the_module, 4, expressions[169]);
  expressions[171] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt32());
  expressions[172] = BinaryenLocalSet(the_module, 5, expressions[171]);
  expressions[173] = BinaryenLocalGet(the_module, 4, BinaryenTypeInt32());
  expressions[174] = BinaryenLocalGet(the_module, 5, BinaryenTypeInt32());
  expressions[175] = BinaryenUnary(the_module, 22, expressions[173]);
  expressions[176] = BinaryenUnary(the_module, 22, expressions[174]);
  expressions[177] =
    BinaryenBinary(the_module, 25, expressions[175], expressions[176]);
  expressions[178] = BinaryenLocalSet(the_module, 10, expressions[177]);
  expressions[179] = BinaryenLocalGet(the_module, 10, BinaryenTypeInt64());
  expressions[180] = BinaryenUnary(the_module, 24, expressions[179]);
  expressions[181] = BinaryenConst(the_module, BinaryenLiteralInt64(32));
  expressions[182] = BinaryenLocalGet(the_module, 10, BinaryenTypeInt64());
  expressions[183] =
    BinaryenBinary(the_module, 36, expressions[182], expressions[181]);
  expressions[184] = BinaryenUnary(the_module, 24, expressions[183]);
  expressions[185] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[186] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[185], "0");
  expressions[187] = BinaryenConst(the_module, BinaryenLiteralInt32(128));
  expressions[188] =
    BinaryenBinary(the_module, 1, expressions[186], expressions[187]);
  expressions[189] =
    BinaryenLocalTee(the_module, 6, expressions[188], BinaryenTypeInt32());
  expressions[190] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[185],
                                   expressions[189],
                                   BinaryenTypeInt32(),
                                   "0");
  expressions[191] = BinaryenLocalGet(the_module, 6, BinaryenTypeInt32());
  expressions[192] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[191],
                                   expressions[180],
                                   BinaryenTypeInt32(),
                                   "0");
  expressions[193] = BinaryenStore(the_module,
                                   4,
                                   4,
                                   0,
                                   expressions[191],
                                   expressions[184],
                                   BinaryenTypeInt32(),
                                   "0");
  {
    BinaryenExpressionRef children[] = {expressions[166],
                                        expressions[168],
                                        expressions[170],
                                        expressions[172],
                                        expressions[178],
                                        expressions[190],
                                        expressions[192],
                                        expressions[193]};
    expressions[194] =
      BinaryenBlock(the_module, "bb0", children, 8, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[194]);
  expressions[195] = BinaryenLocalGet(the_module, 6, BinaryenTypeInt32());
  expressions[196] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[195], "0");
  expressions[197] = BinaryenLocalSet(the_module, 7, expressions[196]);
  expressions[198] = BinaryenLocalGet(the_module, 8, BinaryenTypeInt32());
  expressions[199] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[200] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[199],
                                   expressions[198],
                                   BinaryenTypeInt32(),
                                   "0");
  expressions[201] = BinaryenLocalGet(the_module, 7, BinaryenTypeInt32());
  expressions[202] = BinaryenReturn(the_module, expressions[201]);
  {
    BinaryenExpressionRef children[] = {
      expressions[197], expressions[200], expressions[202]};
    expressions[203] =
      BinaryenBlock(the_module, "bb1", children, 3, BinaryenTypeAuto());
  }
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[203]);
  expressions[204] = BinaryenLocalGet(the_module, 6, BinaryenTypeInt32());
  expressions[205] = BinaryenLoad(
    the_module, 4, 0, 8, 0, BinaryenTypeInt32(), expressions[204], "0");
  RelooperAddBranch(
    relooperBlocks[0], relooperBlocks[1], expressions[205], expressions[0]);
  expressions[206] = BinaryenUnreachable(the_module);
  relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[206]);
  RelooperAddBranch(
    relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]);
  expressions[207] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[208] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[207], "0");
  expressions[209] = BinaryenLocalSet(the_module, 8, expressions[208]);
  relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[209]);
  RelooperAddBranch(
    relooperBlocks[3], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[210] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[3], 9);
  {
    BinaryenType varTypes[] = {BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt64()};
    BinaryenType ii_[2] = {BinaryenTypeInt32(), BinaryenTypeInt32()};
    BinaryenType ii = BinaryenTypeCreate(ii_, 2);
    functions[9] = BinaryenAddFunction(the_module,
                                       "_isize_as_tinycore::Add_::add",
                                       ii,
                                       BinaryenTypeInt32(),
                                       varTypes,
                                       9,
                                       expressions[210]);
  }
  BinaryenAddFunctionExport(the_module,
                            "_isize_as_tinycore::Add_::add",
                            "_isize_as_tinycore::Add_::add");
  the_relooper = RelooperCreate(the_module);
  expressions[211] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[212] = BinaryenLocalSet(the_module, 1, expressions[211]);
  expressions[213] = BinaryenLocalGet(the_module, 1, BinaryenTypeInt32());
  expressions[214] = BinaryenLocalSet(the_module, 2, expressions[213]);
  expressions[215] = BinaryenLocalGet(the_module, 2, BinaryenTypeInt32());
  expressions[216] = BinaryenUnary(the_module, 20, expressions[215]);
  expressions[217] = BinaryenLocalSet(the_module, 3, expressions[216]);
  expressions[218] = BinaryenLocalGet(the_module, 4, BinaryenTypeInt32());
  expressions[219] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[220] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[219],
                                   expressions[218],
                                   BinaryenTypeInt32(),
                                   "0");
  expressions[221] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt32());
  expressions[222] = BinaryenReturn(the_module, expressions[221]);
  {
    BinaryenExpressionRef children[] = {expressions[212],
                                        expressions[214],
                                        expressions[217],
                                        expressions[220],
                                        expressions[222]};
    expressions[223] =
      BinaryenBlock(the_module, "bb0", children, 5, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[223]);
  expressions[224] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[225] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[224], "0");
  expressions[226] = BinaryenLocalSet(the_module, 4, expressions[225]);
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[226]);
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[227] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[1], 5);
  {
    BinaryenType varTypes[] = {BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt64()};
    functions[10] = BinaryenAddFunction(the_module,
                                        "_bool_as_tinycore::Not_::not",
                                        BinaryenTypeInt32(),
                                        BinaryenTypeInt32(),
                                        varTypes,
                                        6,
                                        expressions[227]);
  }
  BinaryenAddFunctionExport(
    the_module, "_bool_as_tinycore::Not_::not", "_bool_as_tinycore::Not_::not");
  the_relooper = RelooperCreate(the_module);
  expressions[228] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt32());
  expressions[229] = BinaryenLocalSet(the_module, 2, expressions[228]);
  expressions[230] = BinaryenLocalGet(the_module, 1, BinaryenTypeInt32());
  expressions[231] = BinaryenLocalSet(the_module, 3, expressions[230]);
  expressions[232] = BinaryenLocalGet(the_module, 2, BinaryenTypeInt32());
  expressions[233] = BinaryenLocalSet(the_module, 4, expressions[232]);
  expressions[234] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt32());
  expressions[235] = BinaryenLocalSet(the_module, 5, expressions[234]);
  expressions[236] = BinaryenLocalGet(the_module, 4, BinaryenTypeInt32());
  expressions[237] = BinaryenLocalGet(the_module, 5, BinaryenTypeInt32());
  expressions[238] =
    BinaryenBinary(the_module, 15, expressions[236], expressions[237]);
  expressions[239] = BinaryenLocalSet(the_module, 6, expressions[238]);
  expressions[240] = BinaryenLocalGet(the_module, 7, BinaryenTypeInt32());
  expressions[241] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[242] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[241],
                                   expressions[240],
                                   BinaryenTypeInt32(),
                                   "0");
  expressions[243] = BinaryenLocalGet(the_module, 6, BinaryenTypeInt32());
  expressions[244] = BinaryenReturn(the_module, expressions[243]);
  {
    BinaryenExpressionRef children[] = {expressions[229],
                                        expressions[231],
                                        expressions[233],
                                        expressions[235],
                                        expressions[239],
                                        expressions[242],
                                        expressions[244]};
    expressions[245] =
      BinaryenBlock(the_module, "bb0", children, 7, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[245]);
  expressions[246] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[247] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt32(), expressions[246], "0");
  expressions[248] = BinaryenLocalSet(the_module, 7, expressions[247]);
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[248]);
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[249] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[1], 8);
  {
    BinaryenType varTypes[] = {BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt64()};
    BinaryenType ii_[2] = {BinaryenTypeInt32(), BinaryenTypeInt32()};
    BinaryenType ii = BinaryenTypeCreate(ii_, 2);
    functions[11] = BinaryenAddFunction(the_module,
                                        "_i16_as_tinycore::PartialEq_::eq",
                                        ii,
                                        BinaryenTypeInt32(),
                                        varTypes,
                                        8,
                                        expressions[249]);
  }
  BinaryenAddFunctionExport(the_module,
                            "_i16_as_tinycore::PartialEq_::eq",
                            "_i16_as_tinycore::PartialEq_::eq");
  the_relooper = RelooperCreate(the_module);
  expressions[250] = BinaryenLocalGet(the_module, 0, BinaryenTypeInt64());
  expressions[251] = BinaryenLocalSet(the_module, 2, expressions[250]);
  expressions[252] = BinaryenLocalGet(the_module, 1, BinaryenTypeInt64());
  expressions[253] = BinaryenLocalSet(the_module, 3, expressions[252]);
  expressions[254] = BinaryenLocalGet(the_module, 2, BinaryenTypeInt64());
  expressions[255] = BinaryenLocalSet(the_module, 4, expressions[254]);
  expressions[256] = BinaryenLocalGet(the_module, 3, BinaryenTypeInt64());
  expressions[257] = BinaryenLocalSet(the_module, 5, expressions[256]);
  expressions[258] = BinaryenLocalGet(the_module, 4, BinaryenTypeInt64());
  expressions[259] = BinaryenLocalGet(the_module, 5, BinaryenTypeInt64());
  expressions[260] =
    BinaryenBinary(the_module, 40, expressions[258], expressions[259]);
  expressions[261] = BinaryenLocalSet(the_module, 6, expressions[260]);
  expressions[262] = BinaryenLocalGet(the_module, 7, BinaryenTypeInt64());
  expressions[263] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[264] = BinaryenStore(the_module,
                                   4,
                                   0,
                                   0,
                                   expressions[263],
                                   expressions[262],
                                   BinaryenTypeInt64(),
                                   "0");
  expressions[265] = BinaryenLocalGet(the_module, 6, BinaryenTypeInt32());
  expressions[266] = BinaryenReturn(the_module, expressions[265]);
  {
    BinaryenExpressionRef children[] = {expressions[251],
                                        expressions[253],
                                        expressions[255],
                                        expressions[257],
                                        expressions[261],
                                        expressions[264],
                                        expressions[266]};
    expressions[267] =
      BinaryenBlock(the_module, "bb0", children, 7, BinaryenTypeAuto());
  }
  relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[267]);
  expressions[268] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
  expressions[269] = BinaryenLoad(
    the_module, 4, 0, 0, 0, BinaryenTypeInt64(), expressions[268], "0");
  expressions[270] = BinaryenLocalSet(the_module, 7, expressions[269]);
  relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[270]);
  RelooperAddBranch(
    relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]);
  expressions[271] =
    RelooperRenderAndDispose(the_relooper, relooperBlocks[1], 8);
  {
    BinaryenType varTypes[] = {BinaryenTypeInt64(),
                               BinaryenTypeInt64(),
                               BinaryenTypeInt64(),
                               BinaryenTypeInt64(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt64(),
                               BinaryenTypeInt32(),
                               BinaryenTypeInt64()};
    BinaryenType ii_[2] = {BinaryenTypeInt64(), BinaryenTypeInt64()};
    BinaryenType ii = BinaryenTypeCreate(ii_, 2);
    functions[12] = BinaryenAddFunction(the_module,
                                        "_i64_as_tinycore::PartialEq_::eq",
                                        ii,
                                        BinaryenTypeInt32(),
                                        varTypes,
                                        8,
                                        expressions[271]);
  }
  BinaryenAddFunctionExport(the_module,
                            "_i64_as_tinycore::PartialEq_::eq",
                            "_i64_as_tinycore::PartialEq_::eq");
  assert(BinaryenModuleValidate(the_module));
  BinaryenModuleDispose(the_module);
  expressions.clear();
  functions.clear();
  relooperBlocks.clear();
}
