// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk-extras/exprtk_bsm_benchmark.cpp
// Function: void black_scholes_merton_model<double>()
void black_scholes_merton_model()
{
   typedef exprtk::symbol_table<T> symbol_table_t;
   typedef exprtk::expression<T>   expression_t;
   typedef exprtk::parser<T>       parser_t;

   const std::string bsm_model_program =
      " var d1 := (log(s / k) + (r + v^2 / 2) * t) / (v * sqrt(t)); "
      " var d2 := d1 - v * sqrt(t);                                 "
      "                                                             "
      " if (callput_flag == 'call')                                 "
      "    s * ncdf(d1) - k * e^(-r * t) * ncdf(d2);                "
      " else if (callput_flag == 'put')                             "
      "    k * e^(-r * t) * ncdf(-d2) - s * ncdf(-d1);              "
      "                                                             ";

   const std::string bsm_model_program_opt1 =
      " var v_sqrtt := (v * sqrt(t));                               "
      " var d1   := (log(s / k) + (r + v * v / 2) * t) / v_sqrtt;   "
      " var d2   := d1 - v_sqrtt;                                   "
      " var kert := k * exp(-r * t);                                "
      "                                                             "
      " if (callput_flag == 'call')                                 "
      "    s * ncdf(d1) - kert * ncdf(d2);                          "
      " else if (callput_flag == 'put')                             "
      "    kert * ncdf(-d2) - s * ncdf(-d1);                        "
      "                                                             ";

   const std::string bsm_model_program_opt2 =
      " var v_sqrtt := (v * sqrt(t));                               "
      " var d1   := (log(s / k) + (r + v * v / 2) * t) / v_sqrtt;   "
      " var d2   := d1 - v_sqrtt;                                   "
      "                                                             "
      " if (callput_flag == 'call')                                 "
      "    s * ncdf(d1) - (k * exp(-r * t)) * ncdf(d2);             "
      " else if (callput_flag == 'put')                             "
      "    (k * exp(-r * t)) * ncdf(-d2) - s * ncdf(-d1);           "
      "                                                             ";

   const std::string bsm_model_program_opt3 =
      " if (callput_flag == 'call')                                 "
      "    call_bsm_model(s, k, t, r, v);                           "
      " else if (callput_flag == 'put')                             "
      "    put_bsm_model(s, k, t, r, v);                            "
      "                                                             ";

   bsm_parameters<T> parameters;

   std::string callput_flag;

   static const T e = exprtk::details::numeric::constant::e;

   symbol_table_t symbol_table;
   symbol_table.add_variable ( "s", parameters.s );
   symbol_table.add_variable ( "k", parameters.k );
   symbol_table.add_variable ( "t", parameters.t );
   symbol_table.add_variable ( "r", parameters.r );
   symbol_table.add_variable ( "v", parameters.v );
   symbol_table.add_constant ( "e", e            );
   symbol_table.add_stringvar( "callput_flag"  , callput_flag   );
   symbol_table.add_function ( "call_bsm_model", call_bsm_model );
   symbol_table.add_function ( "put_bsm_model" , put_bsm_model  );

   expression_t bsm_expression     (symbol_table);
   expression_t bsm_expression_opt1(symbol_table);
   expression_t bsm_expression_opt2(symbol_table);
   expression_t bsm_expression_opt3(symbol_table);

   parser_t parser;

   parser.compile(bsm_model_program     , bsm_expression     );
   parser.compile(bsm_model_program_opt1, bsm_expression_opt1);
   parser.compile(bsm_model_program_opt2, bsm_expression_opt2);
   parser.compile(bsm_model_program_opt3, bsm_expression_opt3);

   {
      exprtk::timer timer;
      timer.start();

      T total = T(0);

      for (std::size_t i = 0; i < rounds; ++i)
      {
         const bsm_parameters<T>& current_parameters = bsm_list[i % bsm_list_size];

         parameters = current_parameters;

         callput_flag = "call";
         total += bsm_expression.value();

         callput_flag = "put";
         total += bsm_expression.value();
      }

      timer.stop();

      printf("[exprtk0] Total: %13.5f Time:%6.3fsec Rate:%13.3fbsm/sec execrt: %6.3fns\n",
             total,
             timer.time(),
             (2.0 * rounds) / timer.time(),
             1e9 / ((2.0 * rounds) / timer.time()));
   }

   {
      exprtk::timer timer;
      timer.start();

      T total = T(0);

      for (std::size_t i = 0; i < rounds; ++i)
      {
         const bsm_parameters<T>& current_parameters = bsm_list[i % bsm_list_size];

         parameters = current_parameters;

         callput_flag = "call";
         total += bsm_expression_opt1.value();

         callput_flag = "put";
         total += bsm_expression_opt1.value();
      }

      timer.stop();

      printf("[exprtk1] Total: %13.5f Time:%6.3fsec Rate:%13.3fbsm/sec execrt: %6.3fns\n",
             total,
             timer.time(),
             (2.0 * rounds) / timer.time(),
             1e9 / ((2.0 * rounds) / timer.time()));
   }

   {
      exprtk::timer timer;
      timer.start();

      T total = T(0);

      for (std::size_t i = 0; i < rounds; ++i)
      {
         const bsm_parameters<T>& current_parameters = bsm_list[i % bsm_list_size];

         parameters = current_parameters;

         callput_flag = "call";
         total += bsm_expression_opt2.value();

         callput_flag = "put";
         total += bsm_expression_opt2.value();
      }

      timer.stop();

      printf("[exprtk2] Total: %13.5f Time:%6.3fsec Rate:%13.3fbsm/sec execrt: %6.3fns\n",
             total,
             timer.time(),
             (2.0 * rounds) / timer.time(),
             1e9 / ((2.0 * rounds) / timer.time()));
   }

   {
      exprtk::timer timer;
      timer.start();

      T total = T(0);

      for (std::size_t i = 0; i < rounds; ++i)
      {
         const bsm_parameters<T>& current_parameters = bsm_list[i % bsm_list_size];

         parameters = current_parameters;

         callput_flag = "call";
         total += bsm_expression_opt3.value();

         callput_flag = "put";
         total += bsm_expression_opt3.value();
      }

      timer.stop();

      printf("[exprtk3] Total: %13.5f Time:%6.3fsec Rate:%13.3fbsm/sec execrt: %6.3fns\n",
             total,
             timer.time(),
             (2.0 * rounds) / timer.time(),
             1e9 / ((2.0 * rounds) / timer.time()));
   }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xbe0, %rsp            # imm = 0xBE0
leaq 0x12bdf3(%rip), %rsi    # 0x23c111
leaq 0x148(%rsp), %rdi
leaq 0x2b8(%rsp), %rdx
callq 0x1102cc
leaq 0x12bfc0(%rip), %rsi    # 0x23c2fa
leaq 0x128(%rsp), %rdi
leaq 0x2b8(%rsp), %rdx
callq 0x1102cc
leaq 0x12c207(%rip), %rsi    # 0x23c55d
leaq 0x108(%rsp), %rdi
leaq 0x2b8(%rsp), %rdx
callq 0x1102cc
leaq 0x12c411(%rip), %rsi    # 0x23c783
leaq 0xe8(%rsp), %rdi
leaq 0x2b8(%rsp), %rdx
callq 0x1102cc
leaq 0x58(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x11104a
leaq 0x12bc15(%rip), %rsi    # 0x23bfc1
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1102cc
leaq 0x10(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
leaq 0x20(%rsp), %rdx
xorl %ecx, %ecx
callq 0x11106e
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
leaq 0x12bb66(%rip), %rsi    # 0x23bf54
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1102cc
leaq 0x28(%rsp), %rdx
leaq 0x10(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
xorl %ecx, %ecx
callq 0x11106e
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
leaq 0x12cc7e(%rip), %rsi    # 0x23d0ae
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1102cc
leaq 0x38(%rsp), %rdx
leaq 0x10(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
xorl %ecx, %ecx
callq 0x11106e
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
leaq 0x12bb3a(%rip), %rsi    # 0x23bfac
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1102cc
leaq 0x40(%rsp), %rdx
leaq 0x10(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
xorl %ecx, %ecx
callq 0x11106e
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
leaq 0x12c401(%rip), %rsi    # 0x23c8b5
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1102cc
leaq 0x30(%rsp), %rdx
leaq 0x10(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
xorl %ecx, %ecx
callq 0x11106e
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
leaq 0x12d2aa(%rip), %rsi    # 0x23d7a0
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1102cc
leaq 0x131046(%rip), %rdx    # 0x241558
leaq 0x10(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x1110da
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
leaq 0x12c37f(%rip), %rsi    # 0x23c8b7
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1102cc
leaq 0x10(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
leaq 0x48(%rsp), %rdx
xorl %ecx, %ecx
callq 0x111156
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
leaq 0x12c34a(%rip), %rsi    # 0x23c8c4
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1102cc
leaq 0xce6(%rip), %rdx       # 0x11127c
leaq 0x10(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x1111c8
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
leaq 0x12c317(%rip), %rsi    # 0x23c8d3
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x1102cc
leaq 0xdcc(%rip), %rdx       # 0x1113a4
leaq 0x10(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x1111c8
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
leaq 0xc8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1114da
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1114da
leaq 0x88(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1114da
leaq 0x68(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1114da
leaq 0x168(%rsp), %rdi
pushq $0x7f
popq %rsi
callq 0x111546
leaq 0x2b8(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x111656
leaq 0x168(%rsp), %rdi
callq 0x111c6e
leaq 0x2b8(%rsp), %rdi
leaq 0x148(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
callq 0x111cb6
leaq 0x2b8(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0x111cb6
leaq 0x2b8(%rsp), %rdi
leaq 0x108(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x111cb6
leaq 0x2b8(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x111cb6
leaq 0x168(%rsp), %rdi
movb $0x0, (%rdi)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x8(%rdi)
movupd %xmm0, 0x18(%rdi)
callq 0x112138
xorpd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
xorl %r13d, %r13d
leaq 0x130e4f(%rip), %r12    # 0x241560
leaq 0x12fbf9(%rip), %rbx    # 0x240311
leaq 0x48(%rsp), %r14
leaq 0x12c1bd(%rip), %r15    # 0x23c8e1
cmpq $0x1312d00, %r13        # imm = 0x1312D00
je 0x1107b8
movl %r13d, %eax
andl $0xf, %eax
imulq $0x28, %rax, %rax
movq 0x20(%rax,%r12), %rcx
movq %rcx, 0x40(%rsp)
movupd (%rax,%r12), %xmm0
movups 0x10(%rax,%r12), %xmm1
movaps %xmm1, 0x30(%rsp)
movapd %xmm0, 0x20(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x10e580
movq 0xc8(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd %xmm0, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x10e580
movq 0xc8(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd 0x8(%rsp), %xmm1
addsd (%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
incq %r13
jmp 0x110724
leaq 0x168(%rsp), %rbx
movq %rbx, %rdi
callq 0x112146
movq %rbx, %rdi
callq 0x11215a
movsd %xmm0, (%rsp)
leaq 0x168(%rsp), %rdi
callq 0x11215a
movsd %xmm0, 0x18(%rsp)
leaq 0x168(%rsp), %rdi
callq 0x11215a
movsd 0x12680b(%rip), %xmm1   # 0x237008
movapd %xmm1, %xmm2
divsd 0x18(%rsp), %xmm2
divsd %xmm0, %xmm1
movsd 0x1267fd(%rip), %xmm3   # 0x237010
divsd %xmm1, %xmm3
leaq 0x12c0c7(%rip), %rdi    # 0x23c8e5
movsd 0x8(%rsp), %xmm0
movsd (%rsp), %xmm1
movb $0x4, %al
callq 0x10e060
leaq 0x168(%rsp), %rdi
movb $0x0, (%rdi)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x8(%rdi)
movupd %xmm0, 0x18(%rdi)
callq 0x112138
xorpd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
xorl %r13d, %r13d
leaq 0x12faaf(%rip), %rbx    # 0x240311
leaq 0x48(%rsp), %r14
leaq 0x12c073(%rip), %r15    # 0x23c8e1
cmpq $0x1312d00, %r13        # imm = 0x1312D00
je 0x110902
movl %r13d, %eax
andl $0xf, %eax
imulq $0x28, %rax, %rax
movq 0x20(%rax,%r12), %rcx
movq %rcx, 0x40(%rsp)
movupd (%rax,%r12), %xmm0
movups 0x10(%rax,%r12), %xmm1
movaps %xmm1, 0x30(%rsp)
movapd %xmm0, 0x20(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x10e580
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd %xmm0, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x10e580
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd 0x8(%rsp), %xmm1
addsd (%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
incq %r13
jmp 0x11086e
leaq 0x168(%rsp), %rbx
movq %rbx, %rdi
callq 0x112146
movq %rbx, %rdi
callq 0x11215a
movsd %xmm0, (%rsp)
leaq 0x168(%rsp), %rdi
callq 0x11215a
movsd %xmm0, 0x18(%rsp)
leaq 0x168(%rsp), %rdi
callq 0x11215a
movsd 0x1266c1(%rip), %xmm1   # 0x237008
movapd %xmm1, %xmm2
divsd 0x18(%rsp), %xmm2
divsd %xmm0, %xmm1
movsd 0x1266b3(%rip), %xmm3   # 0x237010
divsd %xmm1, %xmm3
leaq 0x12bfc7(%rip), %rdi    # 0x23c92f
movsd 0x8(%rsp), %xmm0
movsd (%rsp), %xmm1
movb $0x4, %al
callq 0x10e060
leaq 0x168(%rsp), %rdi
movb $0x0, (%rdi)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x8(%rdi)
movupd %xmm0, 0x18(%rdi)
callq 0x112138
xorpd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
xorl %r13d, %r13d
leaq 0x12f965(%rip), %rbx    # 0x240311
leaq 0x48(%rsp), %r14
leaq 0x12bf29(%rip), %r15    # 0x23c8e1
cmpq $0x1312d00, %r13        # imm = 0x1312D00
je 0x110a4c
movl %r13d, %eax
andl $0xf, %eax
imulq $0x28, %rax, %rax
movq 0x20(%rax,%r12), %rcx
movq %rcx, 0x40(%rsp)
movupd (%rax,%r12), %xmm0
movups 0x10(%rax,%r12), %xmm1
movaps %xmm1, 0x30(%rsp)
movapd %xmm0, 0x20(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x10e580
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd %xmm0, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x10e580
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd 0x8(%rsp), %xmm1
addsd (%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
incq %r13
jmp 0x1109b8
leaq 0x168(%rsp), %rbx
movq %rbx, %rdi
callq 0x112146
movq %rbx, %rdi
callq 0x11215a
movsd %xmm0, (%rsp)
leaq 0x168(%rsp), %rdi
callq 0x11215a
movsd %xmm0, 0x18(%rsp)
leaq 0x168(%rsp), %rdi
callq 0x11215a
movsd 0x126577(%rip), %xmm1   # 0x237008
movapd %xmm1, %xmm2
divsd 0x18(%rsp), %xmm2
divsd %xmm0, %xmm1
movsd 0x126569(%rip), %xmm3   # 0x237010
divsd %xmm1, %xmm3
leaq 0x12bec7(%rip), %rdi    # 0x23c979
movsd 0x8(%rsp), %xmm0
movsd (%rsp), %xmm1
movb $0x4, %al
callq 0x10e060
leaq 0x168(%rsp), %rdi
movb $0x0, (%rdi)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x8(%rdi)
movupd %xmm0, 0x18(%rdi)
callq 0x112138
xorpd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
xorl %r13d, %r13d
leaq 0x12f81b(%rip), %rbx    # 0x240311
leaq 0x48(%rsp), %r14
leaq 0x12bddf(%rip), %r15    # 0x23c8e1
cmpq $0x1312d00, %r13        # imm = 0x1312D00
je 0x110b90
movl %r13d, %eax
andl $0xf, %eax
imulq $0x28, %rax, %rax
movq 0x20(%rax,%r12), %rcx
movq %rcx, 0x40(%rsp)
movupd (%rax,%r12), %xmm0
movups 0x10(%rax,%r12), %xmm1
movaps %xmm1, 0x30(%rsp)
movapd %xmm0, 0x20(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x10e580
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd %xmm0, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x10e580
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd 0x8(%rsp), %xmm1
addsd (%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
incq %r13
jmp 0x110b02
leaq 0x168(%rsp), %rbx
movq %rbx, %rdi
callq 0x112146
movq %rbx, %rdi
callq 0x11215a
movsd %xmm0, (%rsp)
leaq 0x168(%rsp), %rdi
callq 0x11215a
movsd %xmm0, 0x18(%rsp)
leaq 0x168(%rsp), %rdi
callq 0x11215a
movsd 0x126433(%rip), %xmm1   # 0x237008
movapd %xmm1, %xmm2
divsd 0x18(%rsp), %xmm2
divsd %xmm0, %xmm1
movsd 0x126425(%rip), %xmm3   # 0x237010
divsd %xmm1, %xmm3
leaq 0x12bdcd(%rip), %rdi    # 0x23c9c3
movsd 0x8(%rsp), %xmm0
movsd (%rsp), %xmm1
movb $0x4, %al
callq 0x10e060
leaq 0x2b8(%rsp), %rdi
callq 0x11218c
leaq 0x68(%rsp), %rdi
callq 0x1122c6
leaq 0x88(%rsp), %rdi
callq 0x1122c6
leaq 0xa8(%rsp), %rdi
callq 0x1122c6
leaq 0xc8(%rsp), %rdi
callq 0x1122c6
leaq 0x10(%rsp), %rdi
callq 0x1122dc
leaq 0x48(%rsp), %rdi
callq 0x10e5c8
leaq 0xe8(%rsp), %rdi
callq 0x10e5c8
leaq 0x108(%rsp), %rdi
callq 0x10e5c8
leaq 0x128(%rsp), %rdi
callq 0x10e5c8
leaq 0x148(%rsp), %rdi
callq 0x10e5c8
addq $0xbe0, %rsp            # imm = 0xBE0
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
callq 0x111c6e
jmp 0x110d4a
movq %rax, %rbx
jmp 0x110d4a
movq %rax, %rbx
jmp 0x110d54
movq %rax, %rbx
jmp 0x110d61
movq %rax, %rbx
jmp 0x110d6e
jmp 0x110d08
jmp 0x110cf6
jmp 0x110d08
jmp 0x110cf6
jmp 0x110d08
jmp 0x110cf6
jmp 0x110d08
jmp 0x110cf6
jmp 0x110d08
jmp 0x110cf6
jmp 0x110d08
jmp 0x110cf6
jmp 0x110d08
jmp 0x110cf6
jmp 0x110d08
jmp 0x110cf6
jmp 0x110d08
movq %rax, %rbx
leaq 0x2b8(%rsp), %rdi
callq 0x10e5c8
jmp 0x110d7b
movq %rax, %rbx
jmp 0x110d7b
movq %rax, %rbx
jmp 0x110d85
movq %rax, %rbx
jmp 0x110d9c
movq %rax, %rbx
jmp 0x110da9
movq %rax, %rbx
jmp 0x110db6
jmp 0x110d3a
jmp 0x110d3a
jmp 0x110d3a
jmp 0x110d3a
jmp 0x110d3a
jmp 0x110d3a
jmp 0x110d3a
jmp 0x110d3a
movq %rax, %rbx
leaq 0x2b8(%rsp), %rdi
callq 0x11218c
leaq 0x68(%rsp), %rdi
callq 0x1122c6
leaq 0x88(%rsp), %rdi
callq 0x1122c6
leaq 0xa8(%rsp), %rdi
callq 0x1122c6
leaq 0xc8(%rsp), %rdi
callq 0x1122c6
leaq 0x10(%rsp), %rdi
callq 0x1122dc
leaq 0x48(%rsp), %rdi
callq 0x10e5c8
leaq 0xe8(%rsp), %rdi
callq 0x10e5c8
leaq 0x108(%rsp), %rdi
callq 0x10e5c8
leaq 0x128(%rsp), %rdi
callq 0x10e5c8
leaq 0x148(%rsp), %rdi
callq 0x10e5c8
movq %rbx, %rdi
callq 0x10e320