Merge "sw/vec_iree: Add build option for intermediate output"
diff --git a/samples/branch_mul/CMakeLists.txt b/samples/branch_mul/CMakeLists.txt
new file mode 100644
index 0000000..5f7b9f8
--- /dev/null
+++ b/samples/branch_mul/CMakeLists.txt
@@ -0,0 +1,33 @@
+sparrow_static_module(
+  NAME
+    branch_mul
+  SRC
+    "branch_mul.mlir"
+  FLAGS
+    "-iree-input-type=tosa"
+    # NB: iree seems to step on the input tensors
+    # without this.
+    "-iree-flow-trace-dispatch-tensors"
+  EMITC
+  RVV_OFF
+)
+
+sparrow_test(
+  NAME
+    branch_mul_emitc_static
+  SRCS
+    "branch_mul.c"
+  DEPS
+    ::branch_mul_emitc
+    ::branch_mul_lib
+    iree::base
+    iree::vm::bytecode::module
+    iree::hal::local::executable_environment
+    iree::hal::local::elf::elf_module
+  LINKOPTS
+     "LINKER:--defsym=__stack_size__=300k"
+     "LINKER:--defsym=__heap_size__=750k"
+     "LINKER:--defsym=__tcm_length__=4M"
+  TESTFILES
+    "branch_mul.run"
+)
diff --git a/samples/branch_mul/branch_mul.c b/samples/branch_mul/branch_mul.c
new file mode 100644
index 0000000..910d655
--- /dev/null
+++ b/samples/branch_mul/branch_mul.c
@@ -0,0 +1,133 @@
+// Copyright 2023 Google, LLC.
+// Copyright 2021 The IREE Authors
+//
+// Licensed under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+// Heavily based on the `runtime/src/iree/hal/local/elf/elf_module_test_main.c`
+// sample from IREE.
+
+#include "iree/base/api.h"
+#include "iree/base/internal/cpu.h"
+#include "iree/hal/local/elf/elf_module.h"
+#include "iree/hal/local/executable_environment.h"
+#include "iree/hal/local/executable_library.h"
+#include "samples/branch_mul/branch_mul_arg0.h"
+#include "samples/branch_mul/branch_mul_arg1.h"
+#include "samples/branch_mul/branch_mul_arg2.h"
+#include "samples/branch_mul/branch_mul_c.h"
+#include "samples/branch_mul/branch_mul_emitc.h"
+#include "samples/branch_mul/branch_mul_expected.h"
+
+static int8_t ret0[3][2][256] = { 0 };
+static iree_status_t run_test() {
+  iree_hal_executable_environment_v0_t environment;
+  iree_hal_executable_environment_initialize(iree_allocator_system(),
+                                             &environment);
+
+  void* query_fn_ptr = &llvm_module_linked_llvm_cpu_library_query;
+
+  union {
+    const iree_hal_executable_library_header_t** header;
+    const iree_hal_executable_library_v0_t* v0;
+  } library;
+  library.header =
+      (const iree_hal_executable_library_header_t**)iree_elf_call_p_ip(
+          query_fn_ptr, IREE_HAL_EXECUTABLE_LIBRARY_VERSION_LATEST,
+          &environment);
+  if (library.header == NULL) {
+    return iree_make_status(IREE_STATUS_NOT_FOUND,
+                            "library header is empty (version mismatch?)");
+  }
+
+  const iree_hal_executable_library_header_t* header = *library.header;
+  if (header->version != IREE_HAL_EXECUTABLE_LIBRARY_VERSION_LATEST) {
+    return iree_make_status(IREE_STATUS_INVALID_ARGUMENT,
+                            "library version error");
+  }
+
+  if (strncmp(header->name, "llvm_module_linked_llvm_cpu",
+              strlen(header->name)) != 0) {
+    return iree_make_status(IREE_STATUS_INVALID_ARGUMENT,
+                            "library name mismatches");
+  }
+
+  if (library.v0->exports.count != 6) {
+    return iree_make_status(IREE_STATUS_INVALID_ARGUMENT,
+                            "entry point count mismatches");
+  }
+
+  size_t binding_lengths[4] = {
+      sizeof(arg0),
+      sizeof(arg1),
+      sizeof(arg2),
+      sizeof(ret0),
+  };
+  void* binding_ptrs[4] = {
+      arg0,
+      arg1,
+      arg2,
+      ret0,
+  };
+  const iree_hal_executable_dispatch_state_v0_t dispatch_state = {
+      .workgroup_size_x = 1,
+      .workgroup_size_y = 1,
+      .workgroup_size_z = 1,
+      .workgroup_count_x = 1,
+      .workgroup_count_y = 1,
+      .workgroup_count_z = 1,
+      .max_concurrency = 1,
+      .binding_count = 1,
+      .binding_lengths = binding_lengths,
+      .binding_ptrs = binding_ptrs,
+  };
+  const iree_hal_executable_workgroup_state_v0_t workgroup_state = {
+      .workgroup_id_x = 0,
+      .workgroup_id_y = 0,
+      .workgroup_id_z = 0,
+      .processor_id = iree_cpu_query_processor_id(),
+  };
+  int ret = iree_elf_call_i_ppp((const void*)library.v0->exports.ptrs[5],
+                                (void*)&environment, (void*)&dispatch_state,
+                                (void*)&workgroup_state);
+  if (ret != 0) {
+    return iree_make_status(IREE_STATUS_INTERNAL,
+                            "dispatch function returned failure: %d", ret);
+  }
+
+  int mismatch_count = 0;
+  iree_status_t status = iree_ok_status();
+  for (int i = 0; i < 3; ++i) {
+    for (int j = 0; j < 2; ++j) {
+      for (int k = 0; k < 256; ++k) {
+        int8_t out = ret0[i][j][k];
+        int8_t expect = expected[i][j][k];
+        if (out != expect) {
+          mismatch_count++;
+          fprintf(stdout, "mismatch at [%d][%d][%d] %x != %x\n", i, j, k, out,
+                  expect);
+          fprintf(stdout, "ins: %x %x %x\n", arg0[i][j][k], arg1[k],
+                  arg2[i][j][k]);
+        }
+      }
+    }
+  }
+  if (mismatch_count) {
+    status = iree_make_status(
+        IREE_STATUS_INTERNAL,
+        "%d mismatches between actual and expected output", mismatch_count);
+  }
+
+  return status;
+}
+
+int main() {
+  const iree_status_t result = run_test();
+  int ret = (int)iree_status_code(result);
+  if (!iree_status_is_ok(result)) {
+    iree_status_fprint(stderr, result);
+    iree_status_free(result);
+  }
+  return ret;
+}
diff --git a/samples/branch_mul/branch_mul.mlir b/samples/branch_mul/branch_mul.mlir
new file mode 100644
index 0000000..826920b
--- /dev/null
+++ b/samples/branch_mul/branch_mul.mlir
Binary files differ
diff --git a/samples/branch_mul/branch_mul.run b/samples/branch_mul/branch_mul.run
new file mode 100644
index 0000000..5f8c701
--- /dev/null
+++ b/samples/branch_mul/branch_mul.run
@@ -0,0 +1 @@
+// RUN: ${TEST_RUNNER_CMD} %S/branch_mul_emitc_static
diff --git a/samples/branch_mul/branch_mul_arg0.h b/samples/branch_mul/branch_mul_arg0.h
new file mode 100644
index 0000000..59aeca6
--- /dev/null
+++ b/samples/branch_mul/branch_mul_arg0.h
@@ -0,0 +1,162 @@
+#ifndef DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG0_H_
+#define DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG0_H_
+
+int32_t arg0[3][2][256] = {
+    {{49163, 39296, 47490, 46186, 48142, 35193, 34298, 38115, 40865, 31744,
+      37957, 36338, 27958, 25986, -2445, 33464, 33996, 35141, 31692, 41384,
+      34695, 27280, 38186, 38103, 33810, 51195, 35215, 35597, 47560, 41230,
+      22883, 32145, 36772, 51865, 57408, 43500, 31464, 41112, 32753, 56186,
+      48838, 45257, 40447, 39930, 53540, 38016, 36552, 48644, 33656, 37770,
+      46227, 37636, 39103, 38740, 39254, 31003, 45361, 47539, 36883, 30846,
+      41018, 35664, 48196, 25437, 35559, 38892, 46667, 36407, 46496, 31782,
+      32274, 35295, 41009, 44750, 27384, 45100, 19412, 47392, 36107, 30351,
+      60205, 45476, 16420, 40184, 42052, 37309, 30727, 36992, 52433, 25192,
+      37577, 41866, 48061, 33515, 31908, 33464, 40468, 31160, 41293, 43578,
+      27059, 25121, 47052, 40806, 43767, 33729, 48898, 31331, 29416, 42965,
+      42500, 50930, 39955, 26024, 67928, 28831, 39769, 32954, 29182, 48404,
+      51369, 33092, 31618, -2835, 44458, 34051, 40349, 44464, 40864, 33721,
+      42162, 39482, 48241, 37396, 41366, 39252, 49384, 34136, 16768, 49536,
+      52212, 49248, 39171, 43546, 51122, 39533, 40806, 42641, 37108, 32853,
+      50297, 40942, 43596, 30535, 32615, 57834, 33792, 42975, 32657, 45319,
+      31137, 43133, 55266, 43204, 34917, 32533, 42746, 34833, 38105, 24267,
+      37612, 29619, 37552, 29783, 31186, 46877, 33083, 61460, 44698, 39925,
+      48017, 19360, 36326, 33024, 48174, 35613, 60819, 36330, 35866, 51863,
+      28726, 35482, 36141, 39092, 34034, 36807, 48338, 29582, 27196, 29380,
+      53076, 51486, 40372, 33882, 57728, 43467, 41643, 34126, 43283, 43451,
+      41347, 47527, 43652, 42938, 55279, 322,   48551, 78419, 43094, 29107,
+      28197, 50348, 50604, 49348, 31840, 39827, 30541, 47429, 34163, 50816,
+      40669, 28671, 38825, 34171, 35277, 48542, 24021, 48650, 33677, 24756,
+      39333, 43658, 36864, 29332, 33020, 35668, 45411, 32548, 45977, 38670,
+      44452, 25719, 45411, 32546, 28335, 64384},
+     {39423, 38393, 43015, 45737, 48976, 28692, 34463, 39097, 48186, 35748,
+      40334, 38528, 30512, 19837, -8042, 39234, 38264, 36412, 33611, 46687,
+      34995, 26438, 44218, 40274, 39072, 64928, 33873, 38464, 40556, 46130,
+      18335, 33049, 31110, 52828, 45741, 44787, 32712, 45874, 40117, 56704,
+      52232, 45824, 39927, 41344, 47478, 38016, 40176, 51428, 31135, 44386,
+      46976, 36539, 43921, 38879, 43758, 24214, 46336, 36528, 44421, 36700,
+      43864, 36283, 49152, 20548, 28272, 40704, 49881, 36174, 48488, 35725,
+      36182, 34670, 44870, 46976, 31335, 44612, 12075, 48034, 36736, 33823,
+      52400, 47057, 14674, 39853, 45569, 37504, 37760, 36464, 47757, 23352,
+      35689, 41414, 48256, 31804, 35242, 35772, 47048, 32000, 38043, 47362,
+      29600, 32513, 42571, 40802, 35084, 36976, 50304, 35480, 34850, 45095,
+      42488, 51360, 42240, 31734, 56685, 30948, 42854, 34944, 22855, 49152,
+      42360, 33184, 33660, -1803, 47096, 37888, 42756, 31066, 37016, 38405,
+      44894, 44815, 47164, 41068, 44416, 40902, 50792, 28954, 13122, 49536,
+      52608, 49252, 41604, 41576, 51118, 42929, 44103, 44765, 40791, 36859,
+      34444, 41600, 44252, 23865, 33876, 53343, 33792, 44237, 34081, 48005,
+      32700, 44976, 56064, 33994, 35004, 24601, 46640, 32836, 42523, 31841,
+      38601, 32044, 33496, 36600, 33382, 37879, 35718, 52996, 30864, 46996,
+      49664, 21386, 41978, 45952, 44379, 40704, 61046, 38656, 34628, 44897,
+      33747, 35269, 42240, 34365, 35628, 37744, 50432, 34730, 32841, 28182,
+      55040, 47100, 41473, 34210, 57728, 44766, 39268, 35839, 45376, 45996,
+      42496, 49672, 46095, 48128, 56251, 5248,  50058, 69076, 45216, 32512,
+      30052, 47204, 47004, 45311, 33854, 41519, 18473, 49920, 37856, 42726,
+      42892, 32141, 45488, 38875, 36932, 51200, 22497, 48896, 26393, 9373,
+      51696, 45800, 36864, 27625, 25413, 41078, 48332, 35200, 29367, 43403,
+      48468, 26368, 36375, 20366, 22391, 64384}},
+    {{49408, 39296, 47393, 47104, 47031, 35885, 34858, 38156, 41607, 32389,
+      37798, 35086, 25839, 25325, -2499, 30329, 37974, 35465, 30449, 38529,
+      33227, 21832, 37449, 38334, 32985, 50980, 33671, 35513, 48375, 41991,
+      19693, 32297, 36129, 52027, 57685, 42197, 32557, 43993, 28721, 55520,
+      48792, 45312, 36673, 40261, 52110, 38016, 34758, 46238, 32894, 40776,
+      46391, 32856, 38429, 38956, 41380, 30844, 44941, 47824, 31156, 29754,
+      44164, 35611, 46172, 20196, 35415, 39426, 43094, 31594, 42276, 30332,
+      30465, 33647, 40292, 42817, 29325, 45382, 19002, 47512, 35367, 28626,
+      59884, 45723, 16149, 41275, 43755, 37309, 29783, 36992, 52565, 24175,
+      38272, 44301, 47866, 37114, 29939, 32428, 43234, 31118, 42911, 43190,
+      23985, 23150, 47790, 40832, 45308, 33285, 48553, 36625, 27912, 43235,
+      43555, 49846, 38773, 21231, 68238, 29786, 39849, 32937, 29467, 47940,
+      51717, 32945, 32291, -8118, 46904, 32790, 40690, 44996, 42433, 32484,
+      39982, 36023, 48088, 35080, 39772, 38072, 48115, 36585, 16768, 49536,
+      52168, 49408, 38978, 44845, 51200, 45443, 40530, 40855, 37012, 29375,
+      51645, 39738, 43331, 30883, 32018, 56151, 33792, 41787, 34591, 44716,
+      31645, 43165, 52260, 46460, 35328, 31548, 45854, 37680, 36589, 24687,
+      38512, 28428, 37255, 30302, 28888, 42529, 35452, 61208, 44358, 36399,
+      47519, 35217, 35427, 25280, 48408, 34002, 60933, 35198, 32942, 51960,
+      28844, 33050, 35976, 39168, 34420, 39976, 49567, 28298, 27555, 32538,
+      52952, 51240, 41345, 34816, 57728, 42234, 40073, 34621, 41862, 42005,
+      40871, 48366, 42779, 41998, 54797, -315,  48873, 78464, 42743, 28371,
+      27216, 49784, 51840, 46715, 33863, 39851, 31298, 45982, 34144, 50816,
+      40418, 26212, 37847, 32243, 35290, 47962, 26563, 48896, 34560, 25120,
+      35238, 44036, 36864, 29886, 33985, 36014, 45181, 31756, 46986, 35841,
+      44107, 25475, 46096, 29590, 26978, 64318},
+     {40574, 37910, 42755, 47104, 47976, 29366, 34902, 39272, 50533, 38069,
+      39892, 38528, 30008, 19080, -6788, 39588, 41147, 36480, 33499, 46071,
+      34118, 24363, 44306, 40300, 39264, 64021, 32644, 38105, 40941, 46298,
+      16078, 33280, 32444, 52992, 46594, 43701, 33024, 47310, 40556, 56704,
+      52736, 45824, 34027, 41344, 47298, 38016, 39752, 50168, 30426, 45574,
+      46976, 34390, 44086, 38787, 44288, 22623, 46336, 37668, 43034, 36844,
+      45184, 36120, 49152, 17718, 29811, 40704, 48950, 30258, 47062, 35261,
+      33551, 34735, 44666, 46262, 32480, 44027, 12092, 47768, 36736, 33406,
+      51922, 47084, 14813, 41054, 46447, 37504, 37760, 36992, 49266, 23758,
+      38233, 44588, 48256, 35247, 34770, 35704, 48306, 32000, 38294, 47512,
+      28226, 33038, 41801, 40832, 36367, 36868, 50304, 38648, 34954, 45312,
+      43469, 50557, 42240, 30794, 57175, 31138, 43448, 34944, 23667, 49152,
+      38338, 33121, 32547, -2249, 48873, 37888, 42789, 31696, 35574, 38528,
+      43602, 43651, 47411, 41216, 44416, 41669, 50392, 30393, 13242, 49536,
+      52608, 49408, 41870, 43608, 51200, 45775, 44140, 42893, 41042, 34947,
+      33208, 41536, 44497, 25071, 33626, 52770, 33792, 43565, 35045, 47866,
+      32868, 45338, 55768, 36085, 35328, 24076, 47706, 35592, 42040, 30743,
+      39098, 33714, 35055, 37640, 33103, 34714, 37638, 52997, 30132, 47824,
+      49664, 30293, 41795, 45952, 44390, 40704, 61255, 38542, 35641, 46070,
+      33989, 34212, 42240, 33669, 35968, 40586, 50432, 34479, 33924, 29519,
+      55040, 46878, 41672, 34816, 57728, 43891, 38806, 36348, 44905, 46122,
+      42496, 50050, 45568, 48128, 56257, 5248,  50304, 69356, 44405, 32512,
+      30380, 46035, 48872, 43699, 34299, 43057, 19332, 49920, 38332, 43036,
+      43537, 32458, 45377, 38435, 36992, 51200, 24367, 48896, 26233, 7912,
+      51647, 45838, 36864, 26613, 26307, 41344, 48619, 35108, 29374, 43162,
+      48278, 26368, 36097, 18908, 20944, 64384}},
+    {{49408, 28700, 50039, 39018, 41779, 32473, 26002, 31146, 44096, 24547,
+      39771, 27713, 36384, 27611, -1900, 39822, 26297, 27229, 23953, 34743,
+      22570, 17197, 35407, 32188, 25711, 54612, 42667, 27284, 48740, 35649,
+      27791, 22898, 40323, 40719, 61580, 28701, 20525, 40550, 20920, 47770,
+      42947, 33804, 35681, 25551, 54870, 31359, 29202, 40523, 35341, 35916,
+      37404, 42542, 33515, 33803, 38434, 34214, 37577, 47869, 40694, 23639,
+      35210, 26704, 37581, 30688, 39032, 30094, 34092, 33641, 37036, 36141,
+      27961, 23879, 35895, 37018, 22504, 47751, 20012, 41737, 30664, 23664,
+      60144, 36514, 18024, 45110, 40914, 29092, 25954, 32037, 53294, 26150,
+      38272, 34957, 33553, 38528, 26270, 26074, 43817, 20729, 41589, 45252,
+      31408, 15195, 48948, 26520, 48481, 27771, 35607, 26850, 37740, 37617,
+      33713, 47243, 29066, 18436, 68352, 21218, 33250, 24854, 32913, 41334,
+      52224, 25790, 35434, -3714, 45928, 28677, 23685, 45234, 43206, 29348,
+      33691, 31043, 51298, 30677, 31880, 22078, 42592, 39088, 16768, 38171,
+      39514, 37475, 33617, 45440, 40712, 34123, 35528, 34008, 30726, 20998,
+      52748, 28514, 31881, 32768, 21545, 59108, 24521, 36611, 25642, 37142,
+      22328, 44896, 55782, 49152, 27889, 33135, 39124, 40017, 32388, 24226,
+      29379, 22634, 40584, 36396, 22467, 48188, 37273, 61568, 45176, 29386,
+      38909, 33827, 28913, 25547, 48640, 34473, 53250, 30396, 19837, 52464,
+      25481, 32263, 35082, 39168, 25621, 42784, 41739, 22875, 24046, 37952,
+      41021, 52623, 28885, 27292, 47483, 42468, 42351, 27593, 33760, 33850,
+      37008, 40911, 37570, 46232, 47468, -2582, 38462, 78464, 30743, 22451,
+      34296, 52356, 46935, 51086, 28538, 44617, 31488, 35531, 25956, 50816,
+      34563, 18354, 34567, 29169, 28427, 36499, 29696, 39576, 34560, 25600,
+      48171, 36013, 24882, 31360, 34619, 29668, 40660, 34946, 45604, 32398,
+      43725, 15965, 44813, 34444, 30713, 39788},
+     {46914, 29749, 48724, 40208, 45116, 33006, 31555, 36472, 51525, 33070,
+      40494, 35260, 37152, 25864, -2764, 43304, 33855, 33906, 31603, 42664,
+      28821, 24023, 43396, 38160, 35669, 79400, 42654, 34351, 46688, 42350,
+      26698, 29297, 40104, 47834, 58443, 36112, 26647, 45440, 33884, 55224,
+      49499, 37154, 33962, 32663, 53698, 34056, 37384, 47210, 34384, 43432,
+      43239, 43160, 41908, 36964, 42503, 31562, 43154, 43927, 47080, 33185,
+      36568, 31036, 45609, 30120, 38014, 37130, 43787, 30664, 44575, 38004,
+      30028, 29665, 42538, 44154, 29520, 46973, 17972, 45724, 35626, 31828,
+      58344, 43344, 17772, 45180, 45232, 33904, 34822, 31584, 52392, 26252,
+      38272, 39148, 41548, 37475, 33404, 32950, 48232, 28704, 39243, 47872,
+      32408, 27557, 46984, 31539, 45160, 34564, 44653, 32480, 38752, 43166,
+      37270, 49715, 37708, 27563, 66138, 27856, 40208, 31776, 31032, 46562,
+      48493, 30590, 36417, 1808,  49173, 35127, 32227, 38268, 41020, 36641,
+      40414, 41387, 51358, 38811, 39776, 32074, 48072, 37312, 15679, 44874,
+      46264, 44767, 39324, 45224, 46497, 39205, 41772, 39290, 38482, 30467,
+      46401, 37034, 39098, 31136, 28134, 59265, 30519, 42088, 31798, 44772,
+      28444, 45440, 56064, 46036, 32370, 31149, 44340, 39453, 39468, 30337,
+      36140, 28626, 40048, 38144, 31006, 45344, 38016, 58944, 39351, 41653,
+      46115, 35851, 37363, 42590, 47424, 40392, 58170, 35882, 28954, 50984,
+      32406, 32889, 40986, 34613, 32507, 41539, 47597, 31653, 32175, 38008,
+      48531, 51311, 32949, 31752, 53644, 43024, 42280, 34198, 40510, 42202,
+      41204, 46648, 43656, 48128, 53800, 4688,  45986, 76168, 37297, 30336,
+      36003, 51231, 45184, 50220, 32252, 45751, 27142, 44341, 33960, 48416,
+      41169, 26343, 42879, 36488, 34472, 45177, 28544, 44568, 31937, 19960,
+      53209, 42418, 29080, 30075, 32590, 37886, 45749, 35820, 33766, 41844,
+      47480, 22113, 40931, 31528, 28850, 52826}}};
+
+#endif  // DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG0_H_
diff --git a/samples/branch_mul/branch_mul_arg1.h b/samples/branch_mul/branch_mul_arg1.h
new file mode 100644
index 0000000..05ec099
--- /dev/null
+++ b/samples/branch_mul/branch_mul_arg1.h
@@ -0,0 +1,28 @@
+#ifndef DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG1_H_
+#define DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG1_H_
+
+int32_t arg1[256] = {
+    -386, -307, -400, -368, -387, -361, -274, -309, -467, -312, -318, -301,
+    -299, -227, 14,   -353, -343, -285, -266, -382, -277, -295, -370, -335,
+    -311, -482, -369, -304, -382, -364, -242, -260, -333, -414, -489, -355,
+    -258, -370, -318, -443, -412, -358, -367, -323, -439, -297, -323, -406,
+    -281, -359, -367, -366, -347, -311, -346, -275, -362, -377, -386, -290,
+    -353, -288, -384, -271, -314, -318, -393, -301, -380, -309, -313, -307,
+    -363, -377, -255, -376, -159, -383, -287, -276, -473, -398, -147, -365,
+    -368, -293, -295, -289, -417, -212, -299, -352, -377, -301, -291, -280,
+    -397, -250, -372, -379, -270, -281, -388, -319, -381, -290, -393, -316,
+    -309, -354, -347, -423, -330, -285, -534, -257, -341, -273, -261, -384,
+    -408, -267, -314, -45,  -393, -296, -336, -354, -338, -301, -356, -379,
+    -409, -322, -347, -346, -399, -311, -131, -387, -411, -386, -328, -355,
+    -400, -374, -346, -351, -323, -311, -418, -325, -349, -256, -276, -480,
+    -264, -392, -276, -380, -262, -355, -438, -384, -276, -264, -373, -317,
+    -338, -292, -315, -284, -320, -298, -274, -385, -297, -481, -362, -377,
+    -388, -355, -336, -359, -380, -318, -485, -302, -288, -413, -276, -313,
+    -330, -306, -281, -344, -394, -283, -283, -325, -430, -414, -328, -272,
+    -451, -372, -342, -298, -357, -363, -332, -392, -368, -376, -449, -41,
+    -393, -613, -371, -254, -296, -417, -405, -412, -279, -362, -246, -390,
+    -300, -397, -341, -287, -363, -315, -289, -400, -232, -382, -270, -200,
+    -416, -359, -288, -250, -273, -323, -384, -284, -372, -359, -384, -206,
+    -385, -284, -247, -503};
+
+#endif  // DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG1_H_
diff --git a/samples/branch_mul/branch_mul_arg2.h b/samples/branch_mul/branch_mul_arg2.h
new file mode 100644
index 0000000..19e34e8
--- /dev/null
+++ b/samples/branch_mul/branch_mul_arg2.h
@@ -0,0 +1,163 @@
+#ifndef DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG2_H_
+#define DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG2_H_
+
+int32_t arg2[3][2][256] = {
+    {{-1147, -1152, -1059, -1130, -1113, -887,  -1130, -1109, -736,  -910,
+      -1079, -1099, -845,  -1035, -1126, -853,  -883,  -1119, -1087, -962,
+      -1125, -838,  -914,  -1021, -973,  -937,  -881,  -1065, -1118, -1010,
+      -866,  -1118, -983,  -1123, -1051, -1103, -1106, -990,  -931,  -1138,
+      -1048, -1138, -991,  -1111, -1090, -1152, -1027, -1068, -1086, -934,
+      -1133, -932,  -1013, -1123, -1016, -1033, -1123, -1137, -821,  -992,
+      -1034, -1119, -1125, -845,  -1010, -1105, -1069, -1087, -1088, -924,
+      -921,  -1036, -1010, -1080, -1018, -1065, -1124, -1107, -1135, -1014,
+      -1144, -1022, -1091, -970,  -1016, -1147, -970,  -1152, -1129, -1098,
+      -1134, -1072, -1147, -1011, -990,  -1091, -899,  -1132, -999,  -1022,
+      -919,  -845,  -1084, -1151, -1016, -1061, -1114, -909,  -869,  -1084,
+      -1106, -1058, -1084, -830,  -1141, -1023, -1045, -1094, -1016, -1130,
+      -1132, -1124, -902,  -492,  -984,  -1057, -1090, -1133, -1083, -1029,
+      -1058, -937,  -1053, -1049, -1072, -1015, -1104, -998,  -1152, -1152,
+      -1143, -1148, -1075, -1099, -1150, -929,  -1052, -1086, -1042, -951,
+      -1069, -1131, -1123, -1085, -1069, -1047, -1152, -990,  -1077, -1070,
+      -1088, -1082, -1130, -990,  -1141, -1108, -1016, -969,  -1006, -754,
+      -1082, -945,  -1057, -927,  -1035, -1103, -1020, -1149, -1112, -924,
+      -1110, -481,  -964,  -823,  -1138, -1016, -1122, -1095, -1120, -1128,
+      -959,  -1011, -1002, -1150, -1099, -957,  -1094, -955,  -908,  -823,
+      -1105, -1110, -1115, -1124, -1152, -1044, -1094, -1029, -1089, -1070,
+      -1116, -1081, -1063, -1017, -1088, -1028, -1107, -1151, -1046, -1063,
+      -884,  -1080, -1118, -1063, -1036, -973,  -1111, -1084, -1015, -1152,
+      -1077, -894,  -940,  -965,  -1100, -1071, -972,  -1146, -1131, -1137,
+      -792,  -1085, -1152, -1078, -1078, -1009, -1051, -1054, -1106, -965,
+      -1020, -1135, -1061, -1023, -1033, -1152},
+     {-921,  -1131, -920,  -1117, -1138, -704,  -1134, -1139, -897,  -1049,
+      -1141, -1152, -921,  -868,  -952,  -1003, -1017, -1150, -1137, -1092,
+      -1140, -809,  -1070, -1065, -1129, -947,  -798,  -1140, -946,  -1141,
+      -774,  -1145, -854,  -1148, -752,  -1132, -1144, -1120, -1134, -1152,
+      -1140, -1152, -970,  -1152, -944,  -1152, -1125, -1140, -1015, -1104,
+      -1152, -873,  -1137, -1130, -1136, -851,  -1152, -858,  -1018, -1140,
+      -1119, -1119, -1152, -698,  -819,  -1152, -1143, -1082, -1148, -1055,
+      -1041, -1022, -1104, -1109, -1119, -1051, -906,  -1127, -1152, -1103,
+      -950,  -1070, -1047, -950,  -1112, -1152, -1152, -1136, -1009, -1046,
+      -1085, -1058, -1152, -973,  -1093, -1150, -1061, -1152, -913,  -1125,
+      -1007, -1069, -965,  -1151, -786,  -1148, -1152, -1014, -1031, -1146,
+      -1106, -1099, -1152, -1008, -929,  -1092, -1132, -1152, -831,  -1152,
+      -923,  -1124, -960,  -877,  -1043, -1152, -1143, -787,  -978,  -1149,
+      -1133, -1073, -1021, -1148, -1152, -1055, -1145, -876,  -1050, -1152,
+      -1152, -1148, -1142, -1047, -1150, -1028, -1147, -1147, -1139, -1078,
+      -844,  -1152, -1140, -879,  -1107, -978,  -1152, -1016, -1113, -1137,
+      -1120, -1138, -1152, -744,  -1141, -880,  -1123, -954,  -1128, -992,
+      -1110, -1023, -957,  -1102, -1102, -876,  -1082, -931,  -802,  -1117,
+      -1152, -533,  -1123, -1152, -1042, -1152, -1128, -1152, -1084, -964,
+      -1108, -1017, -1152, -1021, -1142, -978,  -1152, -1110, -1065, -789,
+      -1152, -996,  -1128, -1134, -1152, -1078, -1022, -1084, -1144, -1140,
+      -1152, -1140, -1127, -1152, -1118, -1152, -1146, -932,  -1099, -1152,
+      -933,  -994,  -1028, -958,  -1090, -1028, -771,  -1152, -1136, -948,
+      -1132, -1013, -1127, -1106, -1150, -1152, -950,  -1152, -965,  -868,
+      -1108, -1148, -1152, -1027, -890,  -1145, -1132, -1122, -730,  -1078,
+      -1134, -1152, -823,  -680,  -871,  -1152}},
+    {{-1152, -1152, -1066, -1152, -1083, -899,  -1146, -1111, -741,  -950,
+      -1077, -1067, -788,  -1010, -1127, -779,  -993,  -1127, -1052, -888,
+      -1078, -678,  -892,  -1029, -938,  -933,  -854,  -1066, -1139, -1028,
+      -741,  -1123, -971,  -1127, -1058, -1079, -1139, -1062, -812,  -1120,
+      -1042, -1140, -902,  -1116, -1059, -1152, -981,  -1012, -1064, -1005,
+      -1137, -807,  -995,  -1128, -1073, -1030, -1111, -1143, -689,  -966,
+      -1122, -1116, -1071, -684,  -1018, -1119, -980,  -938,  -986,  -877,
+      -872,  -991,  -992,  -1034, -1068, -1076, -1112, -1110, -1115, -965,
+      -1137, -1030, -1084, -991,  -1063, -1147, -946,  -1152, -1131, -1069,
+      -1152, -1133, -1142, -1115, -937,  -1063, -935,  -1131, -1042, -1008,
+      -819,  -800,  -1106, -1152, -1055, -1051, -1105, -1049, -830,  -1091,
+      -1131, -1028, -1051, -693,  -1149, -1048, -1048, -1093, -1031, -1117,
+      -1139, -1121, -919,  86,    -1058, -1025, -1100, -1144, -1127, -998,
+      -1012, -842,  -1054, -991,  -1029, -979,  -1070, -1072, -1152, -1152,
+      -1142, -1152, -1071, -1135, -1152, -1089, -1045, -1042, -1042, -843,
+      -1084, -1097, -1111, -1098, -1049, -1025, -1152, -964,  -1133, -1058,
+      -1102, -1082, -1048, -1077, -1152, -1074, -1099, -1059, -969,  -766,
+      -1106, -921,  -1050, -946,  -964,  -991,  -1086, -1142, -1104, -841,
+      -1098, -900,  -940,  -629,  -1145, -971,  -1124, -1065, -1035, -1130,
+      -971,  -943,  -1000, -1152, -1108, -1025, -1129, -918,  -924,  -901,
+      -1102, -1104, -1137, -1152, -1152, -1013, -1056, -1050, -1057, -1033,
+      -1102, -1104, -1042, -995,  -1076, -1012, -1115, -1152, -1038, -1041,
+      -861,  -1068, -1152, -998,  -1092, -970,  -1142, -1047, -1007, -1152,
+      -1068, -824,  -914,  -904,  -1100, -1053, -1073, -1152, -1152, -1144,
+      -689,  -1097, -1152, -1093, -1112, -1019, -1043, -1033, -1137, -899,
+      -1008, -1128, -1074, -922,  -993,  -1149},
+     {-946,  -1116, -913,  -1152, -1114, -719,  -1147, -1144, -946,  -1106,
+      -1128, -1152, -909,  -843,  -992,  -1012, -1081, -1152, -1133, -1075,
+      -1115, -751,  -1072, -1066, -1135, -959,  -761,  -1131, -956,  -1145,
+      -696,  -1152, -888,  -1152, -773,  -1098, -1152, -1151, -1148, -1152,
+      -1152, -1152, -818,  -1152, -941,  -1152, -1115, -1111, -994,  -1140,
+      -1152, -811,  -1142, -1128, -1152, -806,  -1152, -884,  -984,  -1144,
+      -1152, -1118, -1152, -607,  -856,  -1152, -1120, -909,  -1106, -1050,
+      -974,  -1026, -1099, -1088, -1148, -1035, -907,  -1120, -1152, -1088,
+      -937,  -1071, -1050, -982,  -1135, -1152, -1152, -1152, -1047, -1057,
+      -1151, -1139, -1152, -1068, -1080, -1148, -1087, -1152, -918,  -1127,
+      -963,  -1082, -945,  -1152, -822,  -1145, -1152, -1102, -1033, -1152,
+      -1131, -1083, -1152, -980,  -935,  -1098, -1147, -1152, -859,  -1152,
+      -826,  -1121, -924,  -770,  -1103, -1152, -1143, -805,  -938,  -1152,
+      -1096, -1047, -1031, -1152, -1152, -1078, -1135, -910,  -1054, -1152,
+      -1152, -1152, -1149, -1100, -1152, -1100, -1148, -1093, -1145, -1033,
+      -825,  -1150, -1147, -918,  -1099, -963,  -1152, -1000, -1143, -1133,
+      -1126, -1149, -1144, -796,  -1152, -865,  -1151, -1023, -1109, -957,
+      -1123, -1076, -997,  -1137, -1093, -793,  -1138, -932,  -781,  -1140,
+      -1152, -777,  -1118, -1152, -1042, -1152, -1133, -1149, -1115, -990,
+      -1115, -986,  -1152, -999,  -1152, -1050, -1152, -1103, -1092, -837,
+      -1152, -990,  -1139, -1152, -1152, -1056, -1007, -1100, -1132, -1143,
+      -1152, -1149, -1114, -1152, -1118, -1152, -1152, -940,  -1079, -1152,
+      -941,  -963,  -1074, -916,  -1105, -1068, -798,  -1152, -1150, -956,
+      -1149, -1023, -1124, -1094, -1152, -1152, -1008, -1152, -961,  -843,
+      -1107, -1149, -1152, -998,  -916,  -1152, -1139, -1120, -750,  -1071,
+      -1129, -1152, -813,  -638,  -830,  -1152}},
+    {{-1152, -855,  -1128, -942,  -939,  -796,  -902,  -912,  -762,  -707,
+      -1129, -875,  -1093, -1103, -1148, -1018, -681,  -907,  -891,  -746,
+      -784,  -572,  -823,  -857,  -768,  -724,  -1051, -840,  -1149, -851,
+      -1018, -845,  -1090, -838,  -1134, -726,  -813,  -972,  -606,  -914,
+      -874,  -833,  -860,  -710,  -1125, -976,  -842,  -848,  -1133, -892,
+      -894,  -1052, -866,  -998,  -985,  -1123, -914,  -1143, -936,  -797,
+      -876,  -848,  -846,  -1017, -1122, -872,  -739,  -1001, -839,  -1054,
+      -825,  -737,  -859,  -873,  -902,  -1142, -1142, -963,  -987,  -847,
+      -1142, -765,  -1130, -1106, -983,  -910,  -821,  -1003, -1150, -1123,
+      -1152, -880,  -775,  -1152, -851,  -885,  -957,  -854,  -985,  -1065,
+      -1048, -650,  -1135, -761,  -1145, -911,  -787,  -798,  -1098, -948,
+      -888,  -931,  -801,  -633,  -1152, -822,  -872,  -865,  -1137, -939,
+      -1152, -918,  -1016, -439,  -1033, -898,  -656,  -1150, -1150, -898,
+      -835,  -705,  -1135, -875,  -826,  -539,  -919,  -1134, -1152, -875,
+      -824,  -849,  -916,  -1152, -886,  -776,  -916,  -861,  -876,  -618,
+      -1125, -802,  -796,  -1152, -764,  -1074, -867,  -796,  -894,  -854,
+      -854,  -1135, -1146, -1152, -936,  -1128, -909,  -1135, -848,  -768,
+      -867,  -764,  -1144, -1106, -812,  -1131, -1133, -1152, -1123, -619,
+      -870,  -841,  -765,  -631,  -1152, -981,  -938,  -923,  -661,  -1142,
+      -890,  -931,  -970,  -1152, -884,  -1113, -913,  -781,  -845,  -1057,
+      -801,  -1143, -775,  -935,  -893,  -1017, -1117, -871,  -837,  -823,
+      -1006, -901,  -910,  -1104, -882,  -947,  -845,  -1152, -724,  -867,
+      -1055, -1128, -1017, -1113, -927,  -1103, -1152, -782,  -801,  -1152,
+      -915,  -615,  -826,  -822,  -898,  -785,  -1152, -905,  -1152, -1152,
+      -1032, -884,  -837,  -1134, -1139, -837,  -908,  -1115, -1096, -799,
+      -992,  -868,  -1036, -1084, -1117, -716},
+     {-1094, -873,  -1084, -976,  -1041, -813,  -1049, -1064, -955,  -955,
+      -1146, -1066, -1117, -1062, -1116, -1105, -878,  -1074, -1062, -987,
+      -959,  -744,  -1043, -1026, -1028, -818,  -1030, -1029, -1098, -1051,
+      -1014, -1033, -1086, -1024, -1056, -899,  -970,  -1104, -964,  -1112,
+      -1069, -932,  -818,  -901,  -1097, -1026, -1054, -1039, -1104, -1082,
+      -1051, -1052, -1076, -1075, -1101, -1045, -1066, -1041, -1096, -1037,
+      -930,  -993,  -1056, -1003, -1086, -1053, -991,  -922,  -1041, -1116,
+      -882,  -879,  -1047, -1037, -1074, -1119, -1082, -1069, -1122, -1048,
+      -1097, -967,  -1123, -1108, -1104, -1052, -1074, -1000, -1128, -1126,
+      -1152, -1004, -980,  -1125, -1040, -1067, -1084, -1049, -936,  -1136,
+      -1088, -951,  -1085, -879,  -1064, -1081, -1004, -935,  -1132, -1094,
+      -954,  -1057, -1024, -888,  -1098, -996,  -1066, -1056, -1080, -1082,
+      -1061, -1054, -1041, -975,  -1113, -1081, -870,  -978,  -1084, -1101,
+      -1006, -972,  -1129, -1087, -1028, -826,  -1077, -1088, -1119, -1046,
+      -1002, -1033, -1082, -1146, -1037, -924,  -1084, -1000, -1066, -898,
+      -1040, -1014, -992,  -1101, -947,  -1077, -1053, -958,  -1042, -1053,
+      -983,  -1152, -1152, -1070, -1065, -1073, -1062, -1123, -1046, -955,
+      -1037, -936,  -1128, -1152, -1028, -1056, -1152, -1088, -988,  -967,
+      -1061, -904,  -998,  -1064, -1120, -1144, -1067, -1079, -926,  -1105,
+      -1071, -948,  -1119, -1022, -1051, -1083, -1071, -1017, -1040, -1061,
+      -1011, -1111, -937,  -1062, -1052, -1035, -1108, -1043, -1019, -1040,
+      -1114, -1068, -1062, -1152, -1052, -1136, -1046, -1096, -891,  -1088,
+      -1098, -1097, -990,  -1091, -1044, -1137, -1025, -1013, -1024, -1092,
+      -1085, -849,  -1062, -1044, -1068, -992,  -1116, -1044, -1091, -1058,
+      -1151, -1059, -893,  -1097, -1082, -1061, -1069, -1138, -888,  -1034,
+      -1108, -1037, -935,  -1009, -1066, -917}},
+};
+
+#endif  // DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG2_H_
diff --git a/samples/branch_mul/branch_mul_expected.h b/samples/branch_mul/branch_mul_expected.h
new file mode 100644
index 0000000..c75b61a
--- /dev/null
+++ b/samples/branch_mul/branch_mul_expected.h
@@ -0,0 +1,138 @@
+#ifndef DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_EXPECTED_H_
+#define DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_EXPECTED_H_
+
+const int8_t expected[3][2][256] = {
+    {{0x38, 0x38, 0x37, 0x37, 0x38, 0x32, 0x38, 0x39, 0x26, 0x3c, 0x38, 0x37,
+      0x3d, 0x3e, 0x3a, 0x35, 0x38, 0x37, 0x38, 0x36, 0x39, 0x3e, 0x36, 0x38,
+      0x3b, 0x2b, 0x2e, 0x38, 0x38, 0x37, 0x45, 0x39, 0x3a, 0x38, 0x31, 0x37,
+      0x39, 0x37, 0x39, 0x38, 0x38, 0x38, 0x35, 0x39, 0x36, 0x38, 0x37, 0x37,
+      0x39, 0x37, 0x38, 0x33, 0x37, 0x38, 0x38, 0x39, 0x39, 0x37, 0x37, 0x36,
+      0x39, 0x38, 0x38, 0x43, 0x3b, 0x38, 0x35, 0x39, 0x39, 0x3b, 0x3c, 0x39,
+      0x37, 0x34, 0x36, 0x39, 0x38, 0x38, 0x38, 0x39, 0x38, 0x35, 0x37, 0x39,
+      0x38, 0x38, 0x36, 0x38, 0x38, 0x38, 0x38, 0x37, 0x38, 0x39, 0x3b, 0x37,
+      0x33, 0x37, 0x35, 0x37, 0x3e, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x37,
+      0x3a, 0x39, 0x37, 0x39, 0x39, 0x3f, 0x38, 0x3c, 0x38, 0x39, 0x3c, 0x38,
+      0x37, 0x38, 0x3b, 0x88, 0x3a, 0x36, 0x36, 0x37, 0x39, 0x37, 0x38, 0x33,
+      0x36, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
+      0x38, 0x38, 0x39, 0x39, 0x37, 0x3a, 0x37, 0x39, 0x38, 0x39, 0x3a, 0x39,
+      0x38, 0x32, 0x39, 0x37, 0x38, 0x39, 0x38, 0x38, 0x38, 0x3a, 0x38, 0x3d,
+      0x39, 0x40, 0x37, 0x3d, 0x39, 0x38, 0x3a, 0x35, 0x38, 0x38, 0x37, 0x39,
+      0x38, 0x32, 0x39, 0x34, 0x38, 0x38, 0x37, 0x37, 0x39, 0x37, 0x3b, 0x3b,
+      0x35, 0x38, 0x38, 0x38, 0x38, 0x3b, 0x38, 0x38, 0x37, 0x38, 0x37, 0x39,
+      0x38, 0x37, 0x38, 0x3b, 0x38, 0x38, 0x39, 0x38, 0x37, 0x37, 0x39, 0x36,
+      0x38, 0x38, 0x36, 0x37, 0x39, 0x36, 0x38, 0x38, 0x3a, 0x39, 0x3b, 0x38,
+      0x3c, 0x38, 0x37, 0x40, 0x39, 0x3c, 0x39, 0x3a, 0x3d, 0x38, 0x37, 0x37,
+      0x35, 0x39, 0x38, 0x38, 0x3c, 0x36, 0x38, 0x37, 0x38, 0x36, 0x39, 0x38,
+      0x35, 0x3d, 0x3e, 0x38},
+     {0x31, 0x37, 0x3a, 0x38, 0x38, 0x33, 0x38, 0x38, 0x2d, 0x36, 0x38, 0x38,
+      0x3c, 0x3f, 0x3e, 0x36, 0x35, 0x38, 0x39, 0x38, 0x38, 0x3f, 0x37, 0x3b,
+      0x39, 0x6f, 0x37, 0x38, 0x34, 0x38, 0x3f, 0x38, 0x36, 0x38, 0x2e, 0x38,
+      0x38, 0x36, 0x38, 0x38, 0x38, 0x38, 0x36, 0x38, 0x33, 0x38, 0x37, 0x38,
+      0x39, 0x39, 0x38, 0x38, 0x38, 0x37, 0x38, 0x39, 0x38, 0x34, 0x38, 0x38,
+      0x37, 0x3b, 0x38, 0x46, 0x3a, 0x38, 0x38, 0x39, 0x38, 0x37, 0x39, 0x39,
+      0x39, 0x3a, 0x38, 0x39, 0x3c, 0x38, 0x38, 0x3a, 0x35, 0x34, 0x37, 0x3b,
+      0x38, 0x38, 0x38, 0x38, 0x36, 0x39, 0x37, 0x37, 0x38, 0x37, 0x39, 0x38,
+      0x36, 0x38, 0x34, 0x37, 0x3a, 0x36, 0x37, 0x38, 0x37, 0x38, 0x38, 0x39,
+      0x37, 0x38, 0x37, 0x34, 0x38, 0x3b, 0x27, 0x39, 0x38, 0x38, 0x3f, 0x38,
+      0x31, 0x38, 0x3b, 0x45, 0x3c, 0x38, 0x38, 0x34, 0x39, 0x38, 0x38, 0x34,
+      0x36, 0x38, 0x38, 0x39, 0x38, 0x35, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38,
+      0x38, 0x36, 0x38, 0x38, 0x38, 0x37, 0x11, 0x38, 0x38, 0x3e, 0x39, 0x30,
+      0x38, 0x33, 0x39, 0x38, 0x3a, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x38, 0x36,
+      0x39, 0x3a, 0x37, 0x3a, 0x37, 0x3a, 0x39, 0x32, 0x39, 0x36, 0x2b, 0x38,
+      0x38, 0x32, 0x38, 0x38, 0x37, 0x38, 0x37, 0x38, 0x39, 0x33, 0x38, 0x39,
+      0x38, 0x38, 0x38, 0x39, 0x38, 0x38, 0x37, 0x38, 0x38, 0x37, 0x3a, 0x38,
+      0x38, 0x37, 0x3a, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
+      0x38, 0x32, 0x36, 0x38, 0x39, 0x36, 0x37, 0x37, 0x3a, 0x37, 0x3e, 0x38,
+      0x38, 0x35, 0x38, 0x3b, 0x38, 0x39, 0x38, 0x38, 0x39, 0x38, 0x32, 0x1b,
+      0x38, 0x38, 0x38, 0x39, 0x39, 0x38, 0x38, 0x38, 0x2b, 0x39, 0x38, 0x38,
+      0x34, 0x40, 0x3e, 0x38}},
+    {{0x38, 0x38, 0x35, 0x38, 0x38, 0x33, 0x38, 0x39, 0x29, 0x38, 0x37, 0x36,
+      0x3d, 0x40, 0x39, 0x33, 0x38, 0x38, 0x39, 0x35, 0x3b, 0x40, 0x37, 0x38,
+      0x3e, 0x2b, 0x2b, 0x37, 0x38, 0x38, 0x4c, 0x38, 0x39, 0x38, 0x31, 0x35,
+      0x38, 0x38, 0x3b, 0x38, 0x39, 0x38, 0x33, 0x39, 0x35, 0x38, 0x37, 0x35,
+      0x39, 0x39, 0x38, 0x32, 0x37, 0x38, 0x38, 0x39, 0x39, 0x37, 0x32, 0x36,
+      0x38, 0x38, 0x38, 0x46, 0x39, 0x38, 0x34, 0x3d, 0x37, 0x3d, 0x3c, 0x3a,
+      0x37, 0x33, 0x37, 0x38, 0x39, 0x38, 0x38, 0x39, 0x37, 0x34, 0x37, 0x3b,
+      0x38, 0x38, 0x36, 0x38, 0x38, 0x39, 0x38, 0x38, 0x38, 0x38, 0x3b, 0x37,
+      0x3a, 0x37, 0x35, 0x38, 0x41, 0x39, 0x37, 0x38, 0x39, 0x37, 0x38, 0x38,
+      0x39, 0x39, 0x38, 0x39, 0x39, 0x41, 0x38, 0x3c, 0x38, 0x39, 0x3b, 0x38,
+      0x38, 0x38, 0x3c, 0xda, 0x38, 0x36, 0x36, 0x38, 0x38, 0x36, 0x36, 0x33,
+      0x35, 0x37, 0x38, 0x39, 0x38, 0x37, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
+      0x38, 0x37, 0x39, 0x38, 0x37, 0x3d, 0x3b, 0x39, 0x39, 0x39, 0x3b, 0x35,
+      0x38, 0x31, 0x38, 0x36, 0x38, 0x3a, 0x38, 0x38, 0x38, 0x3b, 0x38, 0x3b,
+      0x38, 0x40, 0x37, 0x3b, 0x38, 0x37, 0x3c, 0x34, 0x37, 0x38, 0x37, 0x36,
+      0x37, 0x33, 0x39, 0x31, 0x38, 0x38, 0x37, 0x37, 0x3a, 0x38, 0x39, 0x3c,
+      0x35, 0x38, 0x38, 0x3b, 0x38, 0x3c, 0x37, 0x39, 0x37, 0x38, 0x38, 0x38,
+      0x38, 0x37, 0x37, 0x39, 0x36, 0x38, 0x39, 0x38, 0x37, 0x36, 0x39, 0x36,
+      0x38, 0x38, 0x35, 0x38, 0x38, 0x36, 0x38, 0x36, 0x3a, 0x39, 0x39, 0x38,
+      0x3e, 0x38, 0x37, 0x40, 0x39, 0x3e, 0x39, 0x3a, 0x37, 0x38, 0x38, 0x37,
+      0x34, 0x39, 0x38, 0x38, 0x3b, 0x36, 0x38, 0x37, 0x38, 0x34, 0x39, 0x38,
+      0x36, 0x41, 0x3e, 0x38},
+     {0x32, 0x38, 0x3a, 0x38, 0x37, 0x34, 0x38, 0x38, 0x30, 0x37, 0x38, 0x38,
+      0x3c, 0x3f, 0x3d, 0x36, 0x37, 0x38, 0x39, 0x38, 0x38, 0x3f, 0x38, 0x3b,
+      0x38, 0x68, 0x37, 0x38, 0x34, 0x38, 0x42, 0x38, 0x36, 0x38, 0x2e, 0x39,
+      0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x35, 0x38, 0x32, 0x38, 0x37, 0x37,
+      0x3a, 0x38, 0x38, 0x39, 0x38, 0x37, 0x38, 0x39, 0x38, 0x35, 0x37, 0x38,
+      0x38, 0x3b, 0x38, 0x48, 0x3b, 0x38, 0x37, 0x3c, 0x39, 0x35, 0x38, 0x39,
+      0x39, 0x3a, 0x38, 0x39, 0x3c, 0x38, 0x38, 0x3a, 0x35, 0x34, 0x37, 0x3b,
+      0x38, 0x38, 0x38, 0x38, 0x37, 0x39, 0x38, 0x38, 0x38, 0x37, 0x39, 0x38,
+      0x37, 0x38, 0x35, 0x38, 0x3b, 0x36, 0x37, 0x38, 0x37, 0x38, 0x38, 0x38,
+      0x37, 0x38, 0x37, 0x33, 0x38, 0x3b, 0x28, 0x39, 0x38, 0x38, 0x3e, 0x38,
+      0x2f, 0x38, 0x3c, 0x57, 0x3a, 0x38, 0x39, 0x34, 0x39, 0x38, 0x39, 0x33,
+      0x36, 0x38, 0x38, 0x39, 0x38, 0x36, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38,
+      0x38, 0x37, 0x38, 0x39, 0x38, 0x36, 0xe,  0x38, 0x38, 0x3d, 0x39, 0x2f,
+      0x38, 0x33, 0x38, 0x38, 0x39, 0x38, 0x38, 0x39, 0x38, 0x3d, 0x38, 0x37,
+      0x3a, 0x3b, 0x37, 0x39, 0x37, 0x38, 0x39, 0x31, 0x39, 0x36, 0x2b, 0x38,
+      0x38, 0x32, 0x38, 0x38, 0x37, 0x38, 0x37, 0x38, 0x39, 0x34, 0x38, 0x39,
+      0x38, 0x39, 0x38, 0x3a, 0x38, 0x38, 0x38, 0x36, 0x38, 0x37, 0x39, 0x38,
+      0x38, 0x37, 0x3a, 0x39, 0x38, 0x38, 0x38, 0x38, 0x37, 0x38, 0x38, 0x38,
+      0x38, 0x32, 0x36, 0x38, 0x3a, 0x36, 0x38, 0x36, 0x3a, 0x37, 0x3d, 0x38,
+      0x38, 0x35, 0x38, 0x3b, 0x38, 0x39, 0x38, 0x38, 0x38, 0x38, 0x32, 0x18,
+      0x38, 0x38, 0x38, 0x3a, 0x38, 0x38, 0x38, 0x38, 0x27, 0x39, 0x38, 0x38,
+      0x35, 0x40, 0x3e, 0x38}},
+    {{0x38, 0x3a, 0x37, 0x36, 0x39, 0x35, 0x39, 0x3a, 0x32, 0x3d, 0x38, 0x35,
+      0x3a, 0x3a, 0x38, 0x36, 0x37, 0x37, 0x36, 0x3c, 0x3c, 0x3d, 0x39, 0x39,
+      0x39, 0x65, 0x34, 0x38, 0x38, 0x39, 0x41, 0x3d, 0x38, 0x35, 0x36, 0x33,
+      0x38, 0x37, 0x3a, 0x37, 0x3b, 0x37, 0x35, 0x3b, 0x36, 0x37, 0x35, 0x37,
+      0x38, 0x36, 0x38, 0x35, 0x36, 0x36, 0x3a, 0x38, 0x38, 0x38, 0x34, 0x36,
+      0x39, 0x3e, 0x37, 0x3d, 0x38, 0x37, 0x33, 0x3c, 0x38, 0x39, 0x38, 0x38,
+      0x39, 0x33, 0x33, 0x38, 0x38, 0x37, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38,
+      0x38, 0x3b, 0x3a, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x34, 0x38, 0x39, 0x39,
+      0x39, 0x37, 0x39, 0x38, 0x3c, 0x2d, 0x38, 0x39, 0x38, 0x36, 0x32, 0x35,
+      0x39, 0x37, 0x33, 0x3e, 0x37, 0x3e, 0x38, 0x3b, 0x38, 0x3b, 0x38, 0x38,
+      0x38, 0x39, 0x39, 0x8e, 0x38, 0x39, 0x33, 0x38, 0x38, 0x39, 0x37, 0x33,
+      0x36, 0x37, 0x36, 0x3a, 0x39, 0x38, 0x38, 0x32, 0x33, 0x34, 0x3a, 0x38,
+      0x35, 0x39, 0x38, 0x37, 0x36, 0x3d, 0x39, 0x37, 0x3a, 0x38, 0x3b, 0x3b,
+      0x3e, 0x36, 0x37, 0x36, 0x37, 0x38, 0x38, 0x38, 0x3b, 0x39, 0x3a, 0x38,
+      0x3a, 0x3d, 0x36, 0x3b, 0x38, 0x38, 0x38, 0x36, 0x38, 0x38, 0x38, 0x3c,
+      0x36, 0x37, 0x39, 0x32, 0x38, 0x38, 0x33, 0x39, 0x3e, 0x38, 0x37, 0x3a,
+      0x36, 0x38, 0x36, 0x39, 0x39, 0x3a, 0x34, 0x37, 0x33, 0x38, 0x3c, 0x3b,
+      0x35, 0x37, 0x37, 0x37, 0x37, 0x36, 0x38, 0x38, 0x35, 0x37, 0x38, 0x37,
+      0x36, 0x38, 0x33, 0x3a, 0x38, 0x37, 0x38, 0x37, 0x3e, 0x38, 0x38, 0x34,
+      0x3b, 0x38, 0x36, 0x40, 0x39, 0x3d, 0x3c, 0x32, 0x38, 0x37, 0x38, 0x38,
+      0x35, 0x38, 0x36, 0x38, 0x39, 0x38, 0x3b, 0x38, 0x38, 0x35, 0x3b, 0x39,
+      0x37, 0x3b, 0x3a, 0xd},
+     {0x36, 0x3c, 0x38, 0x36, 0x36, 0x35, 0x39, 0x39, 0x33, 0x3a, 0x38, 0x38,
+      0x39, 0x39, 0x3a, 0x37, 0x38, 0x3a, 0x3d, 0x37, 0x3b, 0x3f, 0x38, 0x38,
+      0x3a, 0xd1, 0x38, 0x38, 0x37, 0x35, 0x3c, 0x3a, 0x38, 0x36, 0x35, 0x38,
+      0x3a, 0x37, 0x39, 0x38, 0x37, 0x35, 0x35, 0x3b, 0x36, 0x3c, 0x36, 0x35,
+      0x39, 0x38, 0x38, 0x38, 0x3a, 0x38, 0x39, 0x3a, 0x38, 0x37, 0x37, 0x3a,
+      0x36, 0x38, 0x38, 0x3d, 0x39, 0x38, 0x35, 0x3b, 0x38, 0x37, 0x38, 0x3a,
+      0x38, 0x39, 0x37, 0x38, 0x39, 0x37, 0x38, 0x3a, 0x37, 0x34, 0x38, 0x38,
+      0x38, 0x39, 0x38, 0x39, 0x38, 0x38, 0x38, 0x36, 0x36, 0x38, 0x3a, 0x39,
+      0x38, 0x3b, 0x36, 0x38, 0x39, 0x33, 0x37, 0x3c, 0x36, 0x38, 0x37, 0x38,
+      0x38, 0x38, 0x39, 0x33, 0x39, 0x3c, 0x37, 0x3c, 0x37, 0x3a, 0x39, 0x38,
+      0x36, 0x38, 0x3a, 0x45, 0x3a, 0x37, 0x36, 0x35, 0x39, 0x38, 0x39, 0x36,
+      0x37, 0x38, 0x38, 0x37, 0x37, 0x37, 0x39, 0x34, 0x34, 0x37, 0x38, 0x38,
+      0x36, 0x37, 0x38, 0x38, 0x3a, 0x38, 0x29, 0x3b, 0x3a, 0x39, 0x3a, 0x3b,
+      0x3a, 0x33, 0x3b, 0x37, 0x3e, 0x38, 0x38, 0x38, 0x39, 0x39, 0x38, 0x38,
+      0x39, 0x39, 0x38, 0x39, 0x38, 0x38, 0x3b, 0x36, 0x38, 0x37, 0x33, 0x39,
+      0x37, 0x36, 0x38, 0x37, 0x38, 0x38, 0x34, 0x38, 0x3a, 0x37, 0x38, 0x3a,
+      0x38, 0x39, 0x39, 0x38, 0x39, 0x3a, 0x38, 0x37, 0x31, 0x37, 0x33, 0x39,
+      0x36, 0x37, 0x39, 0x38, 0x37, 0x37, 0x39, 0x36, 0x37, 0x38, 0x38, 0x38,
+      0x36, 0x37, 0x35, 0x39, 0x39, 0x37, 0x35, 0x37, 0x3b, 0x38, 0x3a, 0x36,
+      0x3a, 0x37, 0x38, 0x3c, 0x37, 0x39, 0x3b, 0x37, 0x39, 0x36, 0x36, 0x2d,
+      0x38, 0x38, 0x41, 0x39, 0x39, 0x38, 0x36, 0x38, 0x23, 0x39, 0x38, 0x38,
+      0x36, 0x3a, 0x3a, 0x29}}};
+
+#endif  // DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_EXPECTED_H_