From e7e1479fe1c2b7a654518998cebc5fade9de4004 Mon Sep 17 00:00:00 2001 From: tequ Date: Thu, 5 Mar 2026 18:54:48 +0900 Subject: [PATCH] Add test for Emitting Batch from Hook (comment outed) --- src/test/app/SetHook_test.cpp | 221 +++++++++++++++++ src/test/app/SetHook_wasm.h | 445 +++++++++++++++++++++++++++------- 2 files changed, 574 insertions(+), 92 deletions(-) diff --git a/src/test/app/SetHook_test.cpp b/src/test/app/SetHook_test.cpp index 7edb45975..42d813ade 100644 --- a/src/test/app/SetHook_test.cpp +++ b/src/test/app/SetHook_test.cpp @@ -3854,6 +3854,227 @@ public: txcount++; BEAST_EXPECT(txcount == 0); } + + { + // Test batch transactions + /* + { + "TransactionType": "Batch", + "Account": "rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn", + "Flags": 65536, + "RawTransactions": [ + { + "RawTransaction": { + "TransactionType": "AccountSet", + "Flags": 1073741824, + "Account": "rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn", + "Sequence": 0, + "Fee": "0", + "SigningPubKey": "" + } + }, + { + "RawTransaction": { + "TransactionType": "Payment", + "Flags": 1073741824, + "Account": "rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn", + "Destination": "rhLkGGNZdjSpnHJw4XAFw1Jy7PD8TqxoET", + "Amount": "100000000", + "Sequence": 0, + "Fee": "0", + "SigningPubKey": "" + } + } + ] + } + */ + TestHook hook = wasm[R"[test.hook]( + #include + extern int32_t _g(uint32_t, uint32_t); + extern int64_t accept(uint32_t read_ptr, uint32_t read_len, int64_t error_code); + extern int64_t rollback(uint32_t read_ptr, uint32_t read_len, + int64_t error_code); + extern int64_t emit(uint32_t, uint32_t, uint32_t, uint32_t); + extern int64_t etxn_reserve(uint32_t); + extern int64_t hook_account(uint32_t, uint32_t); + extern int64_t ledger_seq(void); + extern int64_t etxn_details(uint32_t, uint32_t); + extern int64_t etxn_fee_base(uint32_t, uint32_t); + extern int64_t trace(uint32_t mread_ptr, uint32_t mread_len, uint32_t dread_ptr, + uint32_t dread_len, uint32_t as_hex); + + #define SBUF(x) (uint32_t) x, sizeof(x) + #define TRACEHEX(v) \ + trace((uint32_t)(#v), (uint32_t)(sizeof(#v) - 1), (uint32_t)(v), \ + (uint32_t)(sizeof(v)), 1); + + // clang-format off + uint8_t txn[339] = + { + /* size, upto, field name */ + /* 3, 0, tt = Batch */ 0x12U, 0x00U, 0x50U, + /* 5, 3, flags */ 0x22U, 0x00U, 0x01U, 0x00U, 0x00U, + /* 5, 8, sequence */ 0x24U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 6, 13, firstledgersequence */ 0x20U, 0x1AU, 0x00U, 0x00U, 0x00U, 0x00U, + /* 6, 19, lastledgersequence */ 0x20U, 0x1BU, 0x00U, 0x00U, 0x00U, 0x00U, + /* 9, 25, fee */ 0x68U, 0x40U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 35, 34, signingpubkey */ 0x73U, 0x21U, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 22, 69, account */ 0x81U, 0x14U, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 2, 91, rawtransactions */ 0xF0U, 0x1EU, + /* 2, 93, .rawtransaction */ 0xE0U, 0x22U, + /* 3, 95, .tt = AccountSet */ 0x12U, 0x00U, 0x03U, + /* 5, 98, .flags */ 0x22U, 0x40U, 0x00U, 0x00U, 0x00U, + /* 22, 103, .account */ 0x81U, 0x14U, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 5, 125, .sequence */ 0x24U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 9, 130, .fee */ 0x68U, 0x40U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 2, 139, .signingpubkey */ 0x73U, 0x00U, + /* 3, 141, .rawtransaction.end */ 0xE1U, + /* 2, 142, .rawtransaction */ 0xE0U, 0x22U, + /* 3, 144, .tt = Payment */ 0x12U, 0x00U, 0x00U, + /* 5, 147, .flags */ 0x22U, 0x40U, 0x00U, 0x00U, 0x00U, + /* 22, 152, .account */ 0x81U, 0x14U, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 22, 174, .destination */ 0x83U, 0x14U, 0x24U, 0xA4U, 0x65U, 0x17U, 0x16U, 0xD2U, 0x6EU, 0x97U, 0xDFU, 0xCCU, 0x3BU, 0x18U, 0xF3U, 0xEEU, 0xB0U, 0xC1U, 0x54U, 0x56U, 0x64U, 0x2EU, + /* 9, 196, .amount */ 0x61U, 0x40U, 0x00U, 0x00U, 0x00U, 0x05U, 0xF5U, 0xE1U, 0x00U, + /* 5, 205, .sequence */ 0x24U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 9, 210, .fee */ 0x68U, 0x40U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 2, 219, .signingpubkey */ 0x73U, 0x00U, + /* 3, 221, .rawtransaction.end */ 0xE1U, + /* 3, 222, .rawtransactions.end */ 0xF1U, + /* 116, 223, emit details */ + /* 0, 339, */ + }; + // clang-format on + + // TX BUILDER + #define FLAGS_OUT (txn + 4U) + #define FLS_OUT (txn + 15U) + #define LLS_OUT (txn + 21U) + #define FEE_OUT (txn + 26U) + #define ACCOUNT_OUT (txn + 71U) + #define RAWTXS_0_RAWTX_FLAGS_OUT (txn + 99U) + #define RAWTXS_0_RAWTX_ACCOUNT_OUT (txn + 105U) + #define RAWTXS_0_RAWTX_SEQ_OUT (txn + 126U) + #define RAWTXS_0_RAWTX_FEE_OUT (txn + 131U) + #define RAWTXS_1_RAWTX_FLAGS_OUT (txn + 148U) + #define RAWTXS_1_RAWTX_ACCOUNT_OUT (txn + 154U) + #define RAWTXS_1_RAWTX_DEST_OUT (txn + 176U) + #define RAWTXS_1_RAWTX_AMOUNT_OUT (txn + 197U) + #define RAWTXS_1_RAWTX_SEQ_OUT (txn + 206U) + #define RAWTXS_1_RAWTX_FEE_OUT (txn + 211U) + #define EMIT_OUT (txn + 223U) + + #define FLIP_ENDIAN_32(value) \ + (uint32_t)(((value & 0xFFU) << 24) | ((value & 0xFF00U) << 8) | \ + ((value & 0xFF0000U) >> 8) | ((value & 0xFF000000U) >> 24)) + + #define SET_UINT32(ptr, value) *((uint32_t *)(ptr)) = FLIP_ENDIAN_32(value); + + #define SET_NATIVE_AMOUNT(ptr, amount) \ + do { \ + uint8_t *b = (ptr); \ + *b++ = 0b01000000 + ((amount >> 56) & 0b00111111); \ + *b++ = (amount >> 48) & 0xFFU; \ + *b++ = (amount >> 40) & 0xFFU; \ + *b++ = (amount >> 32) & 0xFFU; \ + *b++ = (amount >> 24) & 0xFFU; \ + *b++ = (amount >> 16) & 0xFFU; \ + *b++ = (amount >> 8) & 0xFFU; \ + *b++ = (amount >> 0) & 0xFFU; \ + } while (0) + + #define SET_ACCOUNT(ptr_to, ptr_from) \ + { \ + unsigned char *buf_to = (unsigned char *)ptr_to; \ + unsigned char *buf_from = (unsigned char *)ptr_from; \ + *(uint64_t *)(buf_to + 0) = *(uint64_t *)(buf_from + 0); \ + *(uint64_t *)(buf_to + 8) = *(uint64_t *)(buf_from + 8); \ + *(uint32_t *)(buf_to + 16) = *(uint32_t *)(buf_from + 16); \ + } + + #define PREPARE_TXN() \ + do { \ + etxn_reserve(1); \ + uint32_t fls = (uint32_t)ledger_seq() + 1; \ + SET_UINT32(FLS_OUT, fls); \ + SET_UINT32(LLS_OUT, fls + 4); \ + hook_account(ACCOUNT_OUT, 20); \ + etxn_details(EMIT_OUT, 116U); \ + int64_t fee = etxn_fee_base(SBUF(txn)); \ + SET_NATIVE_AMOUNT(FEE_OUT, fee); \ + TRACEHEX(txn); \ + } while (0) + + /* + SET_UINT32(RAWTXS_0_RAWTX_FLAGS_OUT, 0); + SET_UINT32(RAWTXS_1_RAWTX_FLAGS_OUT, 0); + SET_NATIVE_AMOUNT(RAWTXS_0_RAWTX_FEE_OUT, 100); + SET_NATIVE_AMOUNT(RAWTXS_1_RAWTX_AMOUNT_OUT, 100); + SET_NATIVE_AMOUNT(RAWTXS_1_RAWTX_FEE_OUT, 100); + uint8_t account_buffer[20]; + SET_ACCOUNT(RAWTXS_0_RAWTX_ACCOUNT_OUT, account_buffer); + SET_ACCOUNT(RAWTXS_1_RAWTX_ACCOUNT_OUT, account_buffer); + SET_ACCOUNT(RAWTXS_1_RAWTX_DEST_OUT, account_buffer); + PREPARE_TXN(); + uint8_t emithash[32]; + int64_t emit_result = emit(SBUF(emithash), SBUF(txn)); + */ + int64_t hook(uint32_t reserved) { + _g(1, 1); + etxn_reserve(1); + hook_account(RAWTXS_0_RAWTX_ACCOUNT_OUT, 20); + hook_account(RAWTXS_1_RAWTX_ACCOUNT_OUT, 20); + SET_NATIVE_AMOUNT(RAWTXS_1_RAWTX_AMOUNT_OUT, 1000000000); + PREPARE_TXN(); + uint8_t emithash[32]; + int64_t emit_result = emit(emithash, 32, txn, sizeof(txn)); + if (emit_result == 32) { + return accept(0, 0, 0); + } else { + return rollback(0, 0, emit_result); + } + } + )[test.hook]"]; + + /** + TODO: + For EmittedTxn, the Sequence must be 0, but for InnerTxn within + a Batch, the Sequence must be non-zero. + + If we go with the former, we need to ensure that things like + Escrow use the TxID instead of the Sequence to determine the + object ID. + + If we go with the latter, we should investigate what kind of + issues might arise. + */ + // Env env{ + // *this, + // envconfig(), + // features, + // nullptr, + // beast::severities::kTrace}; + // env.fund(XRP(10000), alice, bob); + // env.close(); + + // env(ripple::test::jtx::hook(alice, {{hso(hook, overrideFlag)}}, + // 0), + // M("set emit batch"), + // HSFEE); + // env.close(); + + // // invoke the hook + // env(pay(bob, alice, XRP(1)), M("test emit batch"), fee(XRP(1))); + // env.close(); + + // env.close(); + // auto txnItr = env.closed()->txs; + // int txnCount = 0; + // for (auto& i : txnItr) + // { + // txnCount++; + // } + // BEAST_EXPECT(txnCount == 3); // 1 Outer + 2 Inner + } } void diff --git a/src/test/app/SetHook_wasm.h b/src/test/app/SetHook_wasm.h index 62a3d79c3..e4f406546 100644 --- a/src/test/app/SetHook_wasm.h +++ b/src/test/app/SetHook_wasm.h @@ -1161,6 +1161,267 @@ std::map> wasm = { }}, /* ==== WASM: 7 ==== */ + {R"[test.hook]( + #include + extern int32_t _g(uint32_t, uint32_t); + extern int64_t accept(uint32_t read_ptr, uint32_t read_len, int64_t error_code); + extern int64_t rollback(uint32_t read_ptr, uint32_t read_len, + int64_t error_code); + extern int64_t emit(uint32_t, uint32_t, uint32_t, uint32_t); + extern int64_t etxn_reserve(uint32_t); + extern int64_t hook_account(uint32_t, uint32_t); + extern int64_t ledger_seq(void); + extern int64_t etxn_details(uint32_t, uint32_t); + extern int64_t etxn_fee_base(uint32_t, uint32_t); + extern int64_t trace(uint32_t mread_ptr, uint32_t mread_len, uint32_t dread_ptr, + uint32_t dread_len, uint32_t as_hex); + + #define SBUF(x) (uint32_t) x, sizeof(x) + #define TRACEHEX(v) \ + trace((uint32_t)(#v), (uint32_t)(sizeof(#v) - 1), (uint32_t)(v), \ + (uint32_t)(sizeof(v)), 1); + + // clang-format off + uint8_t txn[339] = + { + /* size, upto, field name */ + /* 3, 0, tt = Batch */ 0x12U, 0x00U, 0x50U, + /* 5, 3, flags */ 0x22U, 0x00U, 0x01U, 0x00U, 0x00U, + /* 5, 8, sequence */ 0x24U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 6, 13, firstledgersequence */ 0x20U, 0x1AU, 0x00U, 0x00U, 0x00U, 0x00U, + /* 6, 19, lastledgersequence */ 0x20U, 0x1BU, 0x00U, 0x00U, 0x00U, 0x00U, + /* 9, 25, fee */ 0x68U, 0x40U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 35, 34, signingpubkey */ 0x73U, 0x21U, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 22, 69, account */ 0x81U, 0x14U, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 2, 91, rawtransactions */ 0xF0U, 0x1EU, + /* 2, 93, .rawtransaction */ 0xE0U, 0x22U, + /* 3, 95, .tt = AccountSet */ 0x12U, 0x00U, 0x03U, + /* 5, 98, .flags */ 0x22U, 0x40U, 0x00U, 0x00U, 0x00U, + /* 22, 103, .account */ 0x81U, 0x14U, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 5, 125, .sequence */ 0x24U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 9, 130, .fee */ 0x68U, 0x40U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 2, 139, .signingpubkey */ 0x73U, 0x00U, + /* 3, 141, .rawtransaction.end */ 0xE1U, + /* 2, 142, .rawtransaction */ 0xE0U, 0x22U, + /* 3, 144, .tt = Payment */ 0x12U, 0x00U, 0x00U, + /* 5, 147, .flags */ 0x22U, 0x40U, 0x00U, 0x00U, 0x00U, + /* 22, 152, .account */ 0x81U, 0x14U, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 22, 174, .destination */ 0x83U, 0x14U, 0x24U, 0xA4U, 0x65U, 0x17U, 0x16U, 0xD2U, 0x6EU, 0x97U, 0xDFU, 0xCCU, 0x3BU, 0x18U, 0xF3U, 0xEEU, 0xB0U, 0xC1U, 0x54U, 0x56U, 0x64U, 0x2EU, + /* 9, 196, .amount */ 0x61U, 0x40U, 0x00U, 0x00U, 0x00U, 0x05U, 0xF5U, 0xE1U, 0x00U, + /* 5, 205, .sequence */ 0x24U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 9, 210, .fee */ 0x68U, 0x40U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + /* 2, 219, .signingpubkey */ 0x73U, 0x00U, + /* 3, 221, .rawtransaction.end */ 0xE1U, + /* 3, 222, .rawtransactions.end */ 0xF1U, + /* 116, 223, emit details */ + /* 0, 339, */ + }; + // clang-format on + + // TX BUILDER + #define FLAGS_OUT (txn + 4U) + #define FLS_OUT (txn + 15U) + #define LLS_OUT (txn + 21U) + #define FEE_OUT (txn + 26U) + #define ACCOUNT_OUT (txn + 71U) + #define RAWTXS_0_RAWTX_FLAGS_OUT (txn + 99U) + #define RAWTXS_0_RAWTX_ACCOUNT_OUT (txn + 105U) + #define RAWTXS_0_RAWTX_SEQ_OUT (txn + 126U) + #define RAWTXS_0_RAWTX_FEE_OUT (txn + 131U) + #define RAWTXS_1_RAWTX_FLAGS_OUT (txn + 148U) + #define RAWTXS_1_RAWTX_ACCOUNT_OUT (txn + 154U) + #define RAWTXS_1_RAWTX_DEST_OUT (txn + 176U) + #define RAWTXS_1_RAWTX_AMOUNT_OUT (txn + 197U) + #define RAWTXS_1_RAWTX_SEQ_OUT (txn + 206U) + #define RAWTXS_1_RAWTX_FEE_OUT (txn + 211U) + #define EMIT_OUT (txn + 223U) + + #define FLIP_ENDIAN_32(value) \ + (uint32_t)(((value & 0xFFU) << 24) | ((value & 0xFF00U) << 8) | \ + ((value & 0xFF0000U) >> 8) | ((value & 0xFF000000U) >> 24)) + + #define SET_UINT32(ptr, value) *((uint32_t *)(ptr)) = FLIP_ENDIAN_32(value); + + #define SET_NATIVE_AMOUNT(ptr, amount) \ + do { \ + uint8_t *b = (ptr); \ + *b++ = 0b01000000 + ((amount >> 56) & 0b00111111); \ + *b++ = (amount >> 48) & 0xFFU; \ + *b++ = (amount >> 40) & 0xFFU; \ + *b++ = (amount >> 32) & 0xFFU; \ + *b++ = (amount >> 24) & 0xFFU; \ + *b++ = (amount >> 16) & 0xFFU; \ + *b++ = (amount >> 8) & 0xFFU; \ + *b++ = (amount >> 0) & 0xFFU; \ + } while (0) + + #define SET_ACCOUNT(ptr_to, ptr_from) \ + { \ + unsigned char *buf_to = (unsigned char *)ptr_to; \ + unsigned char *buf_from = (unsigned char *)ptr_from; \ + *(uint64_t *)(buf_to + 0) = *(uint64_t *)(buf_from + 0); \ + *(uint64_t *)(buf_to + 8) = *(uint64_t *)(buf_from + 8); \ + *(uint32_t *)(buf_to + 16) = *(uint32_t *)(buf_from + 16); \ + } + + #define PREPARE_TXN() \ + do { \ + etxn_reserve(1); \ + uint32_t fls = (uint32_t)ledger_seq() + 1; \ + SET_UINT32(FLS_OUT, fls); \ + SET_UINT32(LLS_OUT, fls + 4); \ + hook_account(ACCOUNT_OUT, 20); \ + etxn_details(EMIT_OUT, 116U); \ + int64_t fee = etxn_fee_base(SBUF(txn)); \ + SET_NATIVE_AMOUNT(FEE_OUT, fee); \ + TRACEHEX(txn); \ + } while (0) + + /* + SET_UINT32(RAWTXS_0_RAWTX_FLAGS_OUT, 0); + SET_UINT32(RAWTXS_1_RAWTX_FLAGS_OUT, 0); + SET_NATIVE_AMOUNT(RAWTXS_0_RAWTX_FEE_OUT, 100); + SET_NATIVE_AMOUNT(RAWTXS_1_RAWTX_AMOUNT_OUT, 100); + SET_NATIVE_AMOUNT(RAWTXS_1_RAWTX_FEE_OUT, 100); + uint8_t account_buffer[20]; + SET_ACCOUNT(RAWTXS_0_RAWTX_ACCOUNT_OUT, account_buffer); + SET_ACCOUNT(RAWTXS_1_RAWTX_ACCOUNT_OUT, account_buffer); + SET_ACCOUNT(RAWTXS_1_RAWTX_DEST_OUT, account_buffer); + PREPARE_TXN(); + uint8_t emithash[32]; + int64_t emit_result = emit(SBUF(emithash), SBUF(txn)); + */ + int64_t hook(uint32_t reserved) { + _g(1, 1); + etxn_reserve(1); + hook_account(RAWTXS_0_RAWTX_ACCOUNT_OUT, 20); + hook_account(RAWTXS_1_RAWTX_ACCOUNT_OUT, 20); + SET_NATIVE_AMOUNT(RAWTXS_1_RAWTX_AMOUNT_OUT, 1000000000); + PREPARE_TXN(); + uint8_t emithash[32]; + int64_t emit_result = emit(emithash, 32, txn, sizeof(txn)); + if (emit_result == 32) { + return accept(0, 0, 0); + } else { + return rollback(0, 0, emit_result); + } + } + )[test.hook]", + { + 0x00U, 0x61U, 0x73U, 0x6DU, 0x01U, 0x00U, 0x00U, 0x00U, 0x01U, 0x2EU, + 0x07U, 0x60U, 0x02U, 0x7FU, 0x7FU, 0x01U, 0x7FU, 0x60U, 0x01U, 0x7FU, + 0x01U, 0x7EU, 0x60U, 0x02U, 0x7FU, 0x7FU, 0x01U, 0x7EU, 0x60U, 0x00U, + 0x01U, 0x7EU, 0x60U, 0x05U, 0x7FU, 0x7FU, 0x7FU, 0x7FU, 0x7FU, 0x01U, + 0x7EU, 0x60U, 0x04U, 0x7FU, 0x7FU, 0x7FU, 0x7FU, 0x01U, 0x7EU, 0x60U, + 0x03U, 0x7FU, 0x7FU, 0x7EU, 0x01U, 0x7EU, 0x02U, 0x9BU, 0x01U, 0x0AU, + 0x03U, 0x65U, 0x6EU, 0x76U, 0x02U, 0x5FU, 0x67U, 0x00U, 0x00U, 0x03U, + 0x65U, 0x6EU, 0x76U, 0x0CU, 0x65U, 0x74U, 0x78U, 0x6EU, 0x5FU, 0x72U, + 0x65U, 0x73U, 0x65U, 0x72U, 0x76U, 0x65U, 0x00U, 0x01U, 0x03U, 0x65U, + 0x6EU, 0x76U, 0x0CU, 0x68U, 0x6FU, 0x6FU, 0x6BU, 0x5FU, 0x61U, 0x63U, + 0x63U, 0x6FU, 0x75U, 0x6EU, 0x74U, 0x00U, 0x02U, 0x03U, 0x65U, 0x6EU, + 0x76U, 0x0AU, 0x6CU, 0x65U, 0x64U, 0x67U, 0x65U, 0x72U, 0x5FU, 0x73U, + 0x65U, 0x71U, 0x00U, 0x03U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x0CU, 0x65U, + 0x74U, 0x78U, 0x6EU, 0x5FU, 0x64U, 0x65U, 0x74U, 0x61U, 0x69U, 0x6CU, + 0x73U, 0x00U, 0x02U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x0DU, 0x65U, 0x74U, + 0x78U, 0x6EU, 0x5FU, 0x66U, 0x65U, 0x65U, 0x5FU, 0x62U, 0x61U, 0x73U, + 0x65U, 0x00U, 0x02U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x05U, 0x74U, 0x72U, + 0x61U, 0x63U, 0x65U, 0x00U, 0x04U, 0x03U, 0x65U, 0x6EU, 0x76U, 0x04U, + 0x65U, 0x6DU, 0x69U, 0x74U, 0x00U, 0x05U, 0x03U, 0x65U, 0x6EU, 0x76U, + 0x06U, 0x61U, 0x63U, 0x63U, 0x65U, 0x70U, 0x74U, 0x00U, 0x06U, 0x03U, + 0x65U, 0x6EU, 0x76U, 0x08U, 0x72U, 0x6FU, 0x6CU, 0x6CU, 0x62U, 0x61U, + 0x63U, 0x6BU, 0x00U, 0x06U, 0x03U, 0x02U, 0x01U, 0x01U, 0x05U, 0x03U, + 0x01U, 0x00U, 0x02U, 0x06U, 0x27U, 0x06U, 0x7FU, 0x01U, 0x41U, 0xE0U, + 0x8AU, 0x04U, 0x0BU, 0x7FU, 0x00U, 0x41U, 0xD7U, 0x0AU, 0x0BU, 0x7FU, + 0x00U, 0x41U, 0x80U, 0x08U, 0x0BU, 0x7FU, 0x00U, 0x41U, 0xE0U, 0x8AU, + 0x04U, 0x0BU, 0x7FU, 0x00U, 0x41U, 0x80U, 0x08U, 0x0BU, 0x7FU, 0x00U, + 0x41U, 0x80U, 0x08U, 0x0BU, 0x07U, 0x08U, 0x01U, 0x04U, 0x68U, 0x6FU, + 0x6FU, 0x6BU, 0x00U, 0x0AU, 0x0AU, 0xD8U, 0x83U, 0x00U, 0x01U, 0xD4U, + 0x83U, 0x00U, 0x02U, 0x03U, 0x7FU, 0x01U, 0x7EU, 0x23U, 0x80U, 0x80U, + 0x80U, 0x80U, 0x00U, 0x41U, 0x20U, 0x6BU, 0x22U, 0x01U, 0x24U, 0x80U, + 0x80U, 0x80U, 0x80U, 0x00U, 0x41U, 0x01U, 0x41U, 0x01U, 0x10U, 0x80U, + 0x80U, 0x80U, 0x80U, 0x00U, 0x1AU, 0x41U, 0x01U, 0x10U, 0x81U, 0x80U, + 0x80U, 0x80U, 0x00U, 0x1AU, 0x41U, 0xE9U, 0x88U, 0x80U, 0x80U, 0x00U, + 0x41U, 0x14U, 0x10U, 0x82U, 0x80U, 0x80U, 0x80U, 0x00U, 0x1AU, 0x41U, + 0x9AU, 0x89U, 0x80U, 0x80U, 0x00U, 0x41U, 0x14U, 0x10U, 0x82U, 0x80U, + 0x80U, 0x80U, 0x00U, 0x1AU, 0x41U, 0x00U, 0x42U, 0xC0U, 0x80U, 0x80U, + 0x80U, 0xB0U, 0xC7U, 0xA6U, 0xE5U, 0x00U, 0x37U, 0x00U, 0xC5U, 0x89U, + 0x80U, 0x80U, 0x00U, 0x41U, 0x01U, 0x10U, 0x81U, 0x80U, 0x80U, 0x80U, + 0x00U, 0x1AU, 0x41U, 0x00U, 0x10U, 0x83U, 0x80U, 0x80U, 0x80U, 0x00U, + 0xA7U, 0x22U, 0x02U, 0x41U, 0x05U, 0x6AU, 0x22U, 0x03U, 0x41U, 0x18U, + 0x74U, 0x20U, 0x03U, 0x41U, 0x08U, 0x74U, 0x41U, 0x80U, 0x80U, 0xFCU, + 0x07U, 0x71U, 0x72U, 0x20U, 0x03U, 0x41U, 0x08U, 0x76U, 0x41U, 0x80U, + 0xFEU, 0x03U, 0x71U, 0x20U, 0x03U, 0x41U, 0x18U, 0x76U, 0x72U, 0x72U, + 0x36U, 0x02U, 0x95U, 0x88U, 0x80U, 0x80U, 0x00U, 0x41U, 0x00U, 0x20U, + 0x02U, 0x41U, 0x01U, 0x6AU, 0x22U, 0x03U, 0x41U, 0x18U, 0x74U, 0x20U, + 0x03U, 0x41U, 0x08U, 0x74U, 0x41U, 0x80U, 0x80U, 0xFCU, 0x07U, 0x71U, + 0x72U, 0x20U, 0x03U, 0x41U, 0x08U, 0x76U, 0x41U, 0x80U, 0xFEU, 0x03U, + 0x71U, 0x20U, 0x03U, 0x41U, 0x18U, 0x76U, 0x72U, 0x72U, 0x36U, 0x02U, + 0x8FU, 0x88U, 0x80U, 0x80U, 0x00U, 0x41U, 0xC7U, 0x88U, 0x80U, 0x80U, + 0x00U, 0x41U, 0x14U, 0x10U, 0x82U, 0x80U, 0x80U, 0x80U, 0x00U, 0x1AU, + 0x41U, 0xDFU, 0x89U, 0x80U, 0x80U, 0x00U, 0x41U, 0xF4U, 0x00U, 0x10U, + 0x84U, 0x80U, 0x80U, 0x80U, 0x00U, 0x1AU, 0x41U, 0x00U, 0x41U, 0x80U, + 0x88U, 0x80U, 0x80U, 0x00U, 0x41U, 0xD3U, 0x02U, 0x10U, 0x85U, 0x80U, + 0x80U, 0x80U, 0x00U, 0x22U, 0x04U, 0x3CU, 0x00U, 0xA1U, 0x88U, 0x80U, + 0x80U, 0x00U, 0x41U, 0x00U, 0x20U, 0x04U, 0x42U, 0x08U, 0x88U, 0x3CU, + 0x00U, 0xA0U, 0x88U, 0x80U, 0x80U, 0x00U, 0x41U, 0x00U, 0x20U, 0x04U, + 0x42U, 0x10U, 0x88U, 0x3CU, 0x00U, 0x9FU, 0x88U, 0x80U, 0x80U, 0x00U, + 0x41U, 0x00U, 0x20U, 0x04U, 0x42U, 0x18U, 0x88U, 0x3CU, 0x00U, 0x9EU, + 0x88U, 0x80U, 0x80U, 0x00U, 0x41U, 0x00U, 0x20U, 0x04U, 0x42U, 0x20U, + 0x88U, 0x3CU, 0x00U, 0x9DU, 0x88U, 0x80U, 0x80U, 0x00U, 0x41U, 0x00U, + 0x20U, 0x04U, 0x42U, 0x28U, 0x88U, 0x3CU, 0x00U, 0x9CU, 0x88U, 0x80U, + 0x80U, 0x00U, 0x41U, 0x00U, 0x20U, 0x04U, 0x42U, 0x30U, 0x88U, 0x3CU, + 0x00U, 0x9BU, 0x88U, 0x80U, 0x80U, 0x00U, 0x41U, 0x00U, 0x20U, 0x04U, + 0x42U, 0x38U, 0x88U, 0xA7U, 0x41U, 0x3FU, 0x71U, 0x41U, 0xC0U, 0x00U, + 0x72U, 0x3AU, 0x00U, 0x9AU, 0x88U, 0x80U, 0x80U, 0x00U, 0x41U, 0xD3U, + 0x8AU, 0x80U, 0x80U, 0x00U, 0x41U, 0x03U, 0x41U, 0x80U, 0x88U, 0x80U, + 0x80U, 0x00U, 0x41U, 0xD3U, 0x02U, 0x41U, 0x01U, 0x10U, 0x86U, 0x80U, + 0x80U, 0x80U, 0x00U, 0x1AU, 0x02U, 0x40U, 0x02U, 0x40U, 0x20U, 0x01U, + 0x41U, 0x20U, 0x41U, 0x80U, 0x88U, 0x80U, 0x80U, 0x00U, 0x41U, 0xD3U, + 0x02U, 0x10U, 0x87U, 0x80U, 0x80U, 0x80U, 0x00U, 0x22U, 0x04U, 0x42U, + 0x20U, 0x52U, 0x0DU, 0x00U, 0x41U, 0x00U, 0x41U, 0x00U, 0x42U, 0x00U, + 0x10U, 0x88U, 0x80U, 0x80U, 0x80U, 0x00U, 0x21U, 0x04U, 0x0CU, 0x01U, + 0x0BU, 0x41U, 0x00U, 0x41U, 0x00U, 0x20U, 0x04U, 0x10U, 0x89U, 0x80U, + 0x80U, 0x80U, 0x00U, 0x21U, 0x04U, 0x0BU, 0x20U, 0x01U, 0x41U, 0x20U, + 0x6AU, 0x24U, 0x80U, 0x80U, 0x80U, 0x80U, 0x00U, 0x20U, 0x04U, 0x0BU, + 0x0BU, 0xE5U, 0x02U, 0x02U, 0x00U, 0x41U, 0x80U, 0x08U, 0x0BU, 0xD3U, + 0x02U, 0x12U, 0x00U, 0x50U, 0x22U, 0x00U, 0x01U, 0x00U, 0x00U, 0x24U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x20U, 0x1AU, 0x00U, 0x00U, 0x00U, 0x00U, + 0x20U, 0x1BU, 0x00U, 0x00U, 0x00U, 0x00U, 0x68U, 0x40U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x73U, 0x21U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x81U, 0x14U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0xF0U, 0x1EU, 0xE0U, 0x22U, 0x12U, 0x00U, 0x03U, 0x22U, + 0x40U, 0x00U, 0x00U, 0x00U, 0x81U, 0x14U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x24U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x68U, 0x40U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x73U, 0x00U, 0xE1U, 0xE0U, 0x22U, 0x12U, 0x00U, 0x00U, 0x22U, 0x40U, + 0x00U, 0x00U, 0x00U, 0x81U, 0x14U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x83U, 0x14U, 0x24U, 0xA4U, 0x65U, + 0x17U, 0x16U, 0xD2U, 0x6EU, 0x97U, 0xDFU, 0xCCU, 0x3BU, 0x18U, 0xF3U, + 0xEEU, 0xB0U, 0xC1U, 0x54U, 0x56U, 0x64U, 0x2EU, 0x61U, 0x40U, 0x00U, + 0x00U, 0x00U, 0x05U, 0xF5U, 0xE1U, 0x00U, 0x24U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x68U, 0x40U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x73U, 0x00U, 0xE1U, 0xF1U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U, + 0x00U, 0x41U, 0xD3U, 0x0AU, 0x0BU, 0x04U, 0x74U, 0x78U, 0x6EU, 0x00U, + }}, + + /* ==== WASM: 8 ==== */ {R"[test.hook]( #include extern int32_t _g(uint32_t, uint32_t); @@ -1589,7 +1850,7 @@ std::map> wasm = { 0x00U, }}, - /* ==== WASM: 8 ==== */ + /* ==== WASM: 9 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -1795,7 +2056,7 @@ std::map> wasm = { 0x3DU, 0x20U, 0x30U, 0x78U, 0x45U, 0x31U, 0x00U, }}, - /* ==== WASM: 9 ==== */ + /* ==== WASM: 10 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -1917,7 +2178,7 @@ std::map> wasm = { 0x58U, 0x4EU, 0x00U, }}, - /* ==== WASM: 10 ==== */ + /* ==== WASM: 11 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -2050,7 +2311,7 @@ std::map> wasm = { 0x4FU, 0x4EU, 0x43U, 0x45U, 0x53U, 0x00U, }}, - /* ==== WASM: 11 ==== */ + /* ==== WASM: 12 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -2130,7 +2391,7 @@ std::map> wasm = { 0x54U, 0x00U, }}, - /* ==== WASM: 12 ==== */ + /* ==== WASM: 13 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -2175,7 +2436,7 @@ std::map> wasm = { 0x30U, 0x00U, }}, - /* ==== WASM: 13 ==== */ + /* ==== WASM: 14 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -2494,7 +2755,7 @@ std::map> wasm = { 0x80U, 0x80U, 0x80U, 0x00U, 0x0BU, }}, - /* ==== WASM: 14 ==== */ + /* ==== WASM: 15 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -3280,7 +3541,7 @@ std::map> wasm = { 0x37U, 0x36U, 0x33U, 0x4CU, 0x4CU, 0x20U, 0x29U, 0x00U, }}, - /* ==== WASM: 15 ==== */ + /* ==== WASM: 16 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -3670,7 +3931,7 @@ std::map> wasm = { 0x80U, 0x80U, 0x80U, 0x00U, 0x0BU, }}, - /* ==== WASM: 16 ==== */ + /* ==== WASM: 17 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -3851,7 +4112,7 @@ std::map> wasm = { 0x38U, 0x4CU, 0x4CU, 0x29U, 0x00U, }}, - /* ==== WASM: 17 ==== */ + /* ==== WASM: 18 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -4040,7 +4301,7 @@ std::map> wasm = { 0x29U, 0x00U, }}, - /* ==== WASM: 18 ==== */ + /* ==== WASM: 19 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -4279,7 +4540,7 @@ std::map> wasm = { 0x00U, 0x42U, 0x00U, 0x10U, 0x85U, 0x80U, 0x80U, 0x80U, 0x00U, 0x0BU, }}, - /* ==== WASM: 19 ==== */ + /* ==== WASM: 20 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -4981,7 +5242,7 @@ std::map> wasm = { 0x38U, 0x35U, 0x35U, 0x32U, 0x55U, 0x29U, 0x00U, }}, - /* ==== WASM: 20 ==== */ + /* ==== WASM: 21 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -6326,7 +6587,7 @@ std::map> wasm = { 0x20U, 0x29U, 0x00U, }}, - /* ==== WASM: 21 ==== */ + /* ==== WASM: 22 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -6428,7 +6689,7 @@ std::map> wasm = { 0x84U, 0x80U, 0x80U, 0x80U, 0x00U, 0x0BU, }}, - /* ==== WASM: 22 ==== */ + /* ==== WASM: 23 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -6471,7 +6732,7 @@ std::map> wasm = { 0x00U, 0x0BU, }}, - /* ==== WASM: 23 ==== */ + /* ==== WASM: 24 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -6619,7 +6880,7 @@ std::map> wasm = { 0x34U, 0x34U, 0x4CU, 0x4CU, 0x2CU, 0x20U, 0x33U, 0x29U, 0x00U, }}, - /* ==== WASM: 24 ==== */ + /* ==== WASM: 25 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -6947,7 +7208,7 @@ std::map> wasm = { 0x38U, 0x34U, 0x39U, 0x30U, 0x4CU, 0x4CU, 0x00U, }}, - /* ==== WASM: 25 ==== */ + /* ==== WASM: 26 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -7152,7 +7413,7 @@ std::map> wasm = { 0x10U, 0x85U, 0x80U, 0x80U, 0x80U, 0x00U, 0x0BU, }}, - /* ==== WASM: 26 ==== */ + /* ==== WASM: 27 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -7836,7 +8097,7 @@ std::map> wasm = { 0x20U, 0x3DU, 0x3DU, 0x20U, 0x30U, 0x00U, }}, - /* ==== WASM: 27 ==== */ + /* ==== WASM: 28 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -8131,7 +8392,7 @@ std::map> wasm = { 0x32U, 0x34U, 0x31U, 0x36U, 0x55U, 0x4CU, 0x4CU, 0x00U, }}, - /* ==== WASM: 28 ==== */ + /* ==== WASM: 29 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -8844,7 +9105,7 @@ std::map> wasm = { 0x31U, 0x33U, 0x33U, 0x38U, 0x20U, 0x29U, 0x00U, }}, - /* ==== WASM: 29 ==== */ + /* ==== WASM: 30 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -8929,7 +9190,7 @@ std::map> wasm = { 0x30U, 0x29U, 0x20U, 0x3DU, 0x3DU, 0x20U, 0x32U, 0x30U, 0x00U, }}, - /* ==== WASM: 30 ==== */ + /* ==== WASM: 31 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -8991,7 +9252,7 @@ std::map> wasm = { 0x80U, 0x80U, 0x00U, 0x0BU, }}, - /* ==== WASM: 31 ==== */ + /* ==== WASM: 32 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -9068,7 +9329,7 @@ std::map> wasm = { 0x31U, 0x29U, 0x20U, 0x3DU, 0x3DU, 0x20U, 0x33U, 0x32U, 0x00U, }}, - /* ==== WASM: 32 ==== */ + /* ==== WASM: 33 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -9145,7 +9406,7 @@ std::map> wasm = { 0x31U, 0x29U, 0x20U, 0x3DU, 0x3DU, 0x20U, 0x33U, 0x32U, 0x00U, }}, - /* ==== WASM: 33 ==== */ + /* ==== WASM: 34 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -9402,7 +9663,7 @@ std::map> wasm = { 0x00U, 0x00U, }}, - /* ==== WASM: 34 ==== */ + /* ==== WASM: 35 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -9560,7 +9821,7 @@ std::map> wasm = { 0x04U, 0x00U, 0x00U, }}, - /* ==== WASM: 35 ==== */ + /* ==== WASM: 36 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -9913,7 +10174,7 @@ std::map> wasm = { 0x00U, 0x2AU, 0x04U, 0x00U, 0x00U, 0x31U, 0x04U, 0x00U, 0x00U, }}, - /* ==== WASM: 36 ==== */ + /* ==== WASM: 37 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -9946,7 +10207,7 @@ std::map> wasm = { 0x82U, 0x80U, 0x80U, 0x80U, 0x00U, 0x1AU, 0x20U, 0x01U, 0x0BU, }}, - /* ==== WASM: 37 ==== */ + /* ==== WASM: 38 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -10173,7 +10434,7 @@ std::map> wasm = { 0x00U, }}, - /* ==== WASM: 38 ==== */ + /* ==== WASM: 39 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -10204,7 +10465,7 @@ std::map> wasm = { 0x80U, 0x80U, 0x00U, 0x1AU, 0x20U, 0x01U, 0x0BU, }}, - /* ==== WASM: 39 ==== */ + /* ==== WASM: 40 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -10515,7 +10776,7 @@ std::map> wasm = { 0x00U, }}, - /* ==== WASM: 40 ==== */ + /* ==== WASM: 41 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -10592,7 +10853,7 @@ std::map> wasm = { 0x29U, 0x20U, 0x3DU, 0x3DU, 0x20U, 0x33U, 0x32U, 0x00U, }}, - /* ==== WASM: 41 ==== */ + /* ==== WASM: 42 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -10626,7 +10887,7 @@ std::map> wasm = { 0x80U, 0x80U, 0x00U, 0x1AU, 0x20U, 0x01U, 0x0BU, }}, - /* ==== WASM: 42 ==== */ + /* ==== WASM: 43 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -10713,7 +10974,7 @@ std::map> wasm = { 0x32U, 0x00U, }}, - /* ==== WASM: 43 ==== */ + /* ==== WASM: 44 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -10747,7 +11008,7 @@ std::map> wasm = { 0x0BU, }}, - /* ==== WASM: 44 ==== */ + /* ==== WASM: 45 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -10887,7 +11148,7 @@ std::map> wasm = { 0x54U, 0x5FU, 0x4DU, 0x45U, 0x54U, 0x00U, }}, - /* ==== WASM: 45 ==== */ + /* ==== WASM: 46 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -11077,7 +11338,7 @@ std::map> wasm = { 0x31U, 0x34U, 0x00U, }}, - /* ==== WASM: 46 ==== */ + /* ==== WASM: 47 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -11231,7 +11492,7 @@ std::map> wasm = { 0x00U, }}, - /* ==== WASM: 47 ==== */ + /* ==== WASM: 48 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -11392,7 +11653,7 @@ std::map> wasm = { 0x00U, }}, - /* ==== WASM: 48 ==== */ + /* ==== WASM: 49 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -11549,7 +11810,7 @@ std::map> wasm = { 0x53U, 0x4CU, 0x4FU, 0x54U, 0x53U, 0x00U, }}, - /* ==== WASM: 49 ==== */ + /* ==== WASM: 50 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -11634,7 +11895,7 @@ std::map> wasm = { 0x74U, 0x79U, 0x70U, 0x65U, 0x28U, 0x29U, 0x00U, }}, - /* ==== WASM: 50 ==== */ + /* ==== WASM: 51 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -11891,7 +12152,7 @@ std::map> wasm = { 0x00U, 0x00U, }}, - /* ==== WASM: 51 ==== */ + /* ==== WASM: 52 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -12129,7 +12390,7 @@ std::map> wasm = { 0x3EU, 0x20U, 0x30U, 0x00U, }}, - /* ==== WASM: 52 ==== */ + /* ==== WASM: 53 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -12225,7 +12486,7 @@ std::map> wasm = { 0x53U, 0x54U, 0x00U, }}, - /* ==== WASM: 53 ==== */ + /* ==== WASM: 54 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -12335,7 +12596,7 @@ std::map> wasm = { 0x20U, 0x31U, 0x00U, }}, - /* ==== WASM: 54 ==== */ + /* ==== WASM: 55 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -12465,7 +12726,7 @@ std::map> wasm = { 0x30U, 0x30U, 0x30U, 0x4CU, 0x4CU, 0x00U, }}, - /* ==== WASM: 55 ==== */ + /* ==== WASM: 56 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -12739,7 +13000,7 @@ std::map> wasm = { 0x30U, 0x00U, }}, - /* ==== WASM: 56 ==== */ + /* ==== WASM: 57 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -12876,7 +13137,7 @@ std::map> wasm = { 0x2CU, 0x20U, 0x73U, 0x29U, 0x20U, 0x3DU, 0x3DU, 0x20U, 0x31U, 0x00U, }}, - /* ==== WASM: 57 ==== */ + /* ==== WASM: 58 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -13170,7 +13431,7 @@ std::map> wasm = { 0x5FU, 0x53U, 0x4CU, 0x4FU, 0x54U, 0x53U, 0x00U, }}, - /* ==== WASM: 58 ==== */ + /* ==== WASM: 59 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -13404,7 +13665,7 @@ std::map> wasm = { 0x5FU, 0x53U, 0x4CU, 0x4FU, 0x54U, 0x53U, 0x00U, }}, - /* ==== WASM: 59 ==== */ + /* ==== WASM: 60 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -13700,7 +13961,7 @@ std::map> wasm = { 0x2CU, 0x20U, 0x31U, 0x29U, 0x20U, 0x3DU, 0x3DU, 0x20U, 0x30U, 0x00U, }}, - /* ==== WASM: 60 ==== */ + /* ==== WASM: 61 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -13904,7 +14165,7 @@ std::map> wasm = { 0x6EU, 0x74U, 0x32U, 0x22U, 0x20U, 0x2BU, 0x20U, 0x69U, 0x29U, 0x00U, }}, - /* ==== WASM: 61 ==== */ + /* ==== WASM: 62 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -14021,7 +14282,7 @@ std::map> wasm = { 0x69U, 0x29U, 0x00U, }}, - /* ==== WASM: 62 ==== */ + /* ==== WASM: 63 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -14130,7 +14391,7 @@ std::map> wasm = { 0x6EU, 0x74U, 0x65U, 0x6EU, 0x74U, 0x32U, 0x22U, 0x29U, 0x00U, }}, - /* ==== WASM: 63 ==== */ + /* ==== WASM: 64 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -14403,7 +14664,7 @@ std::map> wasm = { 0x00U, }}, - /* ==== WASM: 64 ==== */ + /* ==== WASM: 65 ==== */ {R"[test.hook]( #include #define sfInvoiceID ((5U << 16U) + 17U) @@ -14622,7 +14883,7 @@ std::map> wasm = { 0x30U, 0x29U, 0x20U, 0x3DU, 0x3DU, 0x20U, 0x33U, 0x32U, 0x00U, }}, - /* ==== WASM: 65 ==== */ + /* ==== WASM: 66 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -14734,7 +14995,7 @@ std::map> wasm = { 0x58U, 0x49U, 0x53U, 0x54U, 0x00U, }}, - /* ==== WASM: 66 ==== */ + /* ==== WASM: 67 ==== */ {R"[test.hook]( #include #define sfInvoiceID ((5U << 16U) + 17U) @@ -14870,7 +15131,7 @@ std::map> wasm = { 0x3DU, 0x20U, 0x33U, 0x32U, 0x00U, }}, - /* ==== WASM: 67 ==== */ + /* ==== WASM: 68 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -15006,7 +15267,7 @@ std::map> wasm = { 0x49U, 0x47U, 0x00U, }}, - /* ==== WASM: 68 ==== */ + /* ==== WASM: 69 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -15145,7 +15406,7 @@ std::map> wasm = { 0x66U, 0x28U, 0x64U, 0x61U, 0x74U, 0x61U, 0x32U, 0x29U, 0x00U, }}, - /* ==== WASM: 69 ==== */ + /* ==== WASM: 70 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -15257,7 +15518,7 @@ std::map> wasm = { 0x29U, 0x20U, 0x3DU, 0x3DU, 0x20U, 0x30U, 0x00U, }}, - /* ==== WASM: 70 ==== */ + /* ==== WASM: 71 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -15351,7 +15612,7 @@ std::map> wasm = { 0x61U, 0x64U, 0x5BU, 0x69U, 0x5DU, 0x00U, }}, - /* ==== WASM: 71 ==== */ + /* ==== WASM: 72 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -15484,7 +15745,7 @@ std::map> wasm = { 0x64U, 0x5BU, 0x69U, 0x5DU, 0x00U, }}, - /* ==== WASM: 72 ==== */ + /* ==== WASM: 73 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -15572,7 +15833,7 @@ std::map> wasm = { 0x61U, 0x74U, 0x61U, 0x29U, 0x00U, }}, - /* ==== WASM: 73 ==== */ + /* ==== WASM: 74 ==== */ {R"[test.hook]( #include #define sfInvoiceID ((5U << 16U) + 17U) @@ -15683,7 +15944,7 @@ std::map> wasm = { 0x20U, 0x33U, 0x32U, 0x00U, }}, - /* ==== WASM: 74 ==== */ + /* ==== WASM: 75 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -15894,7 +16155,7 @@ std::map> wasm = { 0x00U, }}, - /* ==== WASM: 75 ==== */ + /* ==== WASM: 76 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -16002,7 +16263,7 @@ std::map> wasm = { 0x20U, 0x22U, 0x32U, 0x22U, 0x2CU, 0x20U, 0x31U, 0x29U, 0x00U, }}, - /* ==== WASM: 76 ==== */ + /* ==== WASM: 77 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -16614,7 +16875,7 @@ std::map> wasm = { 0x00U, }}, - /* ==== WASM: 77 ==== */ + /* ==== WASM: 78 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -16801,7 +17062,7 @@ std::map> wasm = { 0x63U, 0x65U, 0x29U, 0x20U, 0x3EU, 0x20U, 0x30U, 0x00U, }}, - /* ==== WASM: 78 ==== */ + /* ==== WASM: 79 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -17151,7 +17412,7 @@ std::map> wasm = { 0x20U, 0x30U, 0x00U, }}, - /* ==== WASM: 79 ==== */ + /* ==== WASM: 80 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -17287,7 +17548,7 @@ std::map> wasm = { 0x00U, }}, - /* ==== WASM: 80 ==== */ + /* ==== WASM: 81 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -17346,7 +17607,7 @@ std::map> wasm = { 0x64U, 0xE1U, 0xF1U, }}, - /* ==== WASM: 81 ==== */ + /* ==== WASM: 82 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -17519,7 +17780,7 @@ std::map> wasm = { 0x54U, 0x5FU, 0x45U, 0x58U, 0x49U, 0x53U, 0x54U, 0x00U, }}, - /* ==== WASM: 82 ==== */ + /* ==== WASM: 83 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -17667,7 +17928,7 @@ std::map> wasm = { 0x30U, 0x00U, 0x22U, 0x00U, 0x00U, 0x00U, 0x00U, }}, - /* ==== WASM: 83 ==== */ + /* ==== WASM: 84 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -17821,7 +18082,7 @@ std::map> wasm = { 0x0FU, 0x0BU, 0x02U, 0x56U, 0x00U, }}, - /* ==== WASM: 84 ==== */ + /* ==== WASM: 85 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -17918,7 +18179,7 @@ std::map> wasm = { 0x3DU, 0x20U, 0x30U, 0x00U, }}, - /* ==== WASM: 85 ==== */ + /* ==== WASM: 86 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -17977,7 +18238,7 @@ std::map> wasm = { 0x4FU, 0x46U, 0x5FU, 0x42U, 0x4FU, 0x55U, 0x4EU, 0x44U, 0x53U, 0x00U, }}, - /* ==== WASM: 86 ==== */ + /* ==== WASM: 87 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -18036,7 +18297,7 @@ std::map> wasm = { 0x4EU, 0x44U, 0x53U, 0x00U, }}, - /* ==== WASM: 87 ==== */ + /* ==== WASM: 88 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -19865,7 +20126,7 @@ std::map> wasm = { 0x53U, 0x4DU, 0x41U, 0x4CU, 0x4CU, 0x00U, }}, - /* ==== WASM: 88 ==== */ + /* ==== WASM: 89 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -21484,7 +21745,7 @@ std::map> wasm = { 0x29U, 0x29U, 0x00U, }}, - /* ==== WASM: 89 ==== */ + /* ==== WASM: 90 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -24417,7 +24678,7 @@ std::map> wasm = { 0x4FU, 0x4FU, 0x5FU, 0x53U, 0x4DU, 0x41U, 0x4CU, 0x4CU, 0x00U, }}, - /* ==== WASM: 90 ==== */ + /* ==== WASM: 91 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -26382,7 +26643,7 @@ std::map> wasm = { 0x54U, 0x4FU, 0x4FU, 0x5FU, 0x53U, 0x4DU, 0x41U, 0x4CU, 0x4CU, 0x00U, }}, - /* ==== WASM: 91 ==== */ + /* ==== WASM: 92 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -26667,7 +26928,7 @@ std::map> wasm = { 0x29U, 0x20U, 0x3DU, 0x3DU, 0x20U, 0x30U, 0x00U, }}, - /* ==== WASM: 92 ==== */ + /* ==== WASM: 93 ==== */ {R"[test.hook]( #include extern int32_t _g(uint32_t, uint32_t); @@ -27254,7 +27515,7 @@ std::map> wasm = { 0x4EU, 0x5FU, 0x46U, 0x41U, 0x49U, 0x4CU, 0x55U, 0x52U, 0x45U, 0x00U, }}, - /* ==== WASM: 93 ==== */ + /* ==== WASM: 94 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -27283,7 +27544,7 @@ std::map> wasm = { 0x0BU, }}, - /* ==== WASM: 94 ==== */ + /* ==== WASM: 95 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -27315,7 +27576,7 @@ std::map> wasm = { 0x20U, 0x52U, 0x65U, 0x6AU, 0x65U, 0x63U, 0x74U, 0x65U, 0x64U, 0x00U, }}, - /* ==== WASM: 95 ==== */ + /* ==== WASM: 96 ==== */ {R"[test.hook]( (module (type (;0;) (func (param i32 i32 i64) (result i64))) @@ -27342,7 +27603,7 @@ std::map> wasm = { 0x41U, 0x00U, 0x41U, 0x00U, 0x42U, 0x00U, 0x10U, 0x00U, 0x0BU, }}, - /* ==== WASM: 96 ==== */ + /* ==== WASM: 97 ==== */ {R"[test.hook]( (module (type (;0;) (func (param i32 i32) (result i32))) @@ -27395,7 +27656,7 @@ std::map> wasm = { 0x00U, 0x1AU, 0x0BU, }}, - /* ==== WASM: 97 ==== */ + /* ==== WASM: 98 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -34038,7 +34299,7 @@ std::map> wasm = { 0x39U, 0x30U, 0x31U, 0x32U, 0x33U, 0x00U, }}, - /* ==== WASM: 98 ==== */ + /* ==== WASM: 99 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter); @@ -34084,7 +34345,7 @@ std::map> wasm = { 0x0BU, 0x06U, 0x76U, 0x61U, 0x6CU, 0x75U, 0x65U, 0x00U, }}, - /* ==== WASM: 99 ==== */ + /* ==== WASM: 100 ==== */ {R"[test.hook]( #include extern int32_t _g (uint32_t id, uint32_t maxiter);