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

   T x[] = { T(1), T(2), T(3), T(4), T(5) };

   std::vector<T> y;

   y.push_back(T(5)); y.push_back(T(6));
   y.push_back(T(7)); y.push_back(T(8));
   y.push_back(T(9)); y.push_back(T(0));

   symbol_table_t symbol_table;
   symbol_table.add_vector("x", x);
   symbol_table.add_vector("y", y);

   norm<T> norm_;

   symbol_table.add_function("norm",norm_);

   const std::string vector_norm_program[] =
      {
         " norm(x)          ",
         " norm(x,1)        ",
         " norm(x,2)        ",
         " norm(x,3)        ",
         " norm(x,4)        ",
         " norm(x,5)        ",
         " norm(2x+1)       ",
         " norm(2x+1,1)     ",
         " norm(2x+1,2)     ",
         " norm(2x+1,3)     ",
         " norm(2x+1,4)     ",
         " norm(2x+1,5)     ",
         " norm(2x+y/3-4)   ",
         " norm(2x+y/3-4,1) ",
         " norm(2x+y/3-4,2) ",
         " norm(2x+y/3-4,3) ",
         " norm(2x+y/3-4,4) ",
         " norm(2x+y/3-4,5) "
      };

   const std::size_t vecnorm_program_size = sizeof(vector_norm_program) / sizeof(std::string);

   parser_t parser;

   for (std::size_t i = 0; i < vecnorm_program_size; ++i)
   {
      expression_t expression;
      expression.register_symbol_table(symbol_table);

      parser.compile(vector_norm_program[i], expression);

      printf("%s = %15.8f\n",
             vector_norm_program[i].c_str(),
             expression.value());
   }
}

// Assembly:
subq $0xfe8, %rsp            # imm = 0xFE8
xorps %xmm0, %xmm0
movaps %xmm0, 0xfd0(%rsp)
movaps %xmm0, 0xfc0(%rsp)
movq $0x0, 0xfe0(%rsp)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0xfc0(%rsp)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, 0xfc8(%rsp)
movabsq $0x4008000000000000, %rax # imm = 0x4008000000000000
movq %rax, 0xfd0(%rsp)
movabsq $0x4010000000000000, %rax # imm = 0x4010000000000000
movq %rax, 0xfd8(%rsp)
movabsq $0x4014000000000000, %rax # imm = 0x4014000000000000
movq %rax, 0x188(%rsp)
movq %rax, 0xfe0(%rsp)
leaq 0xfa8(%rsp), %rdi
movq %rdi, 0x190(%rsp)
callq 0x119a60
movq 0x188(%rsp), %rax
movq 0x190(%rsp), %rdi
movq %rax, 0xfa0(%rsp)
leaq 0xfa0(%rsp), %rsi
callq 0x119a70
jmp 0x1188d4
movabsq $0x4018000000000000, %rax # imm = 0x4018000000000000
movq %rax, 0xf88(%rsp)
leaq 0xfa8(%rsp), %rdi
leaq 0xf88(%rsp), %rsi
callq 0x119a70
jmp 0x1188fd
movabsq $0x401c000000000000, %rax # imm = 0x401C000000000000
movq %rax, 0xf80(%rsp)
leaq 0xfa8(%rsp), %rdi
leaq 0xf80(%rsp), %rsi
callq 0x119a70
jmp 0x118926
movabsq $0x4020000000000000, %rax # imm = 0x4020000000000000
movq %rax, 0xf78(%rsp)
leaq 0xfa8(%rsp), %rdi
leaq 0xf78(%rsp), %rsi
callq 0x119a70
jmp 0x11894f
movabsq $0x4022000000000000, %rax # imm = 0x4022000000000000
movq %rax, 0xf70(%rsp)
leaq 0xfa8(%rsp), %rdi
leaq 0xf70(%rsp), %rsi
callq 0x119a70
jmp 0x118978
movq $0x0, 0xf68(%rsp)
leaq 0xfa8(%rsp), %rdi
leaq 0xf68(%rsp), %rsi
callq 0x119a70
jmp 0x11899b
leaq 0xf60(%rsp), %rdi
movl $0x1, %esi
callq 0x119aa0
jmp 0x1189af
leaq 0xf3f(%rsp), %rdi
movq %rdi, 0x180(%rsp)
callq 0x111650
movq 0x180(%rsp), %rdx
leaq 0x334c2e(%rip), %rsi    # 0x44d601
leaq 0xf40(%rsp), %rdi
callq 0x118750
jmp 0x1189e2
leaq 0xf60(%rsp), %rdi
leaq 0xf40(%rsp), %rsi
leaq 0xfc0(%rsp), %rdx
callq 0x119ae0
jmp 0x118a01
leaq 0xf40(%rsp), %rdi
callq 0x111788
leaq 0xf3f(%rsp), %rdi
callq 0x111770
leaq 0xf17(%rsp), %rdi
movq %rdi, 0x178(%rsp)
callq 0x111650
movq 0x178(%rsp), %rdx
leaq 0x334c6a(%rip), %rsi    # 0x44d6a9
leaq 0xf18(%rsp), %rdi
callq 0x118750
jmp 0x118a4e
leaq 0xf60(%rsp), %rdi
leaq 0xf18(%rsp), %rsi
leaq 0xfa8(%rsp), %rdx
callq 0x119b80
jmp 0x118a6d
leaq 0xf18(%rsp), %rdi
callq 0x111788
leaq 0xf17(%rsp), %rdi
callq 0x111770
leaq 0xec8(%rsp), %rdi
callq 0x119c40
jmp 0x118a96
leaq 0xea7(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x111650
movq 0x170(%rsp), %rdx
leaq 0x334bf1(%rip), %rsi    # 0x44d6ab
leaq 0xea8(%rsp), %rdi
callq 0x118750
jmp 0x118ac9
leaq 0xf60(%rsp), %rdi
leaq 0xea8(%rsp), %rsi
leaq 0xec8(%rsp), %rdx
callq 0x119d00
jmp 0x118ae8
leaq 0xea8(%rsp), %rdi
callq 0x111788
leaq 0xea7(%rsp), %rdi
callq 0x111770
movb $0x1, 0xc45(%rsp)
leaq 0xc60(%rsp), %rax
movq %rax, 0x160(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc57(%rsp), %rdi
movq %rdi, 0x168(%rsp)
callq 0x111650
movq 0x160(%rsp), %rdi
movq 0x168(%rsp), %rdx
leaq 0x334b62(%rip), %rsi    # 0x44d6b0
callq 0x118750
jmp 0x118b55
leaq 0xc80(%rsp), %rax
movq %rax, 0x150(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc56(%rsp), %rdi
movq %rdi, 0x158(%rsp)
callq 0x111650
movq 0x150(%rsp), %rdi
movq 0x158(%rsp), %rdx
leaq 0x334b2a(%rip), %rsi    # 0x44d6c3
callq 0x118750
jmp 0x118ba0
leaq 0xca0(%rsp), %rax
movq %rax, 0x140(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc55(%rsp), %rdi
movq %rdi, 0x148(%rsp)
callq 0x111650
movq 0x140(%rsp), %rdi
movq 0x148(%rsp), %rdx
leaq 0x334af2(%rip), %rsi    # 0x44d6d6
callq 0x118750
jmp 0x118beb
leaq 0xcc0(%rsp), %rax
movq %rax, 0x130(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc54(%rsp), %rdi
movq %rdi, 0x138(%rsp)
callq 0x111650
movq 0x130(%rsp), %rdi
movq 0x138(%rsp), %rdx
leaq 0x334aba(%rip), %rsi    # 0x44d6e9
callq 0x118750
jmp 0x118c36
leaq 0xce0(%rsp), %rax
movq %rax, 0x120(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc53(%rsp), %rdi
movq %rdi, 0x128(%rsp)
callq 0x111650
movq 0x120(%rsp), %rdi
movq 0x128(%rsp), %rdx
leaq 0x334a82(%rip), %rsi    # 0x44d6fc
callq 0x118750
jmp 0x118c81
leaq 0xd00(%rsp), %rax
movq %rax, 0x110(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc52(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x111650
movq 0x110(%rsp), %rdi
movq 0x118(%rsp), %rdx
leaq 0x334a4a(%rip), %rsi    # 0x44d70f
callq 0x118750
jmp 0x118ccc
leaq 0xd20(%rsp), %rax
movq %rax, 0x100(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc51(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0x111650
movq 0x100(%rsp), %rdi
movq 0x108(%rsp), %rdx
leaq 0x334a12(%rip), %rsi    # 0x44d722
callq 0x118750
jmp 0x118d17
leaq 0xd40(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc50(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x111650
movq 0xf0(%rsp), %rdi
movq 0xf8(%rsp), %rdx
leaq 0x3349da(%rip), %rsi    # 0x44d735
callq 0x118750
jmp 0x118d62
leaq 0xd60(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc4f(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x111650
movq 0xe0(%rsp), %rdi
movq 0xe8(%rsp), %rdx
leaq 0x3349a2(%rip), %rsi    # 0x44d748
callq 0x118750
jmp 0x118dad
leaq 0xd80(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc4e(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0x111650
movq 0xd0(%rsp), %rdi
movq 0xd8(%rsp), %rdx
leaq 0x33496a(%rip), %rsi    # 0x44d75b
callq 0x118750
jmp 0x118df8
leaq 0xda0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc4d(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0x111650
movq 0xc0(%rsp), %rdi
movq 0xc8(%rsp), %rdx
leaq 0x334932(%rip), %rsi    # 0x44d76e
callq 0x118750
jmp 0x118e43
leaq 0xdc0(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc4c(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x111650
movq 0xb0(%rsp), %rdi
movq 0xb8(%rsp), %rdx
leaq 0x3348fa(%rip), %rsi    # 0x44d781
callq 0x118750
jmp 0x118e8e
leaq 0xde0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc4b(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x111650
movq 0xa0(%rsp), %rdi
movq 0xa8(%rsp), %rdx
leaq 0x3348c2(%rip), %rsi    # 0x44d794
callq 0x118750
jmp 0x118ed9
leaq 0xe00(%rsp), %rax
movq %rax, 0x90(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc4a(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x111650
movq 0x90(%rsp), %rdi
movq 0x98(%rsp), %rdx
leaq 0x33488a(%rip), %rsi    # 0x44d7a7
callq 0x118750
jmp 0x118f24
leaq 0xe20(%rsp), %rax
movq %rax, 0x80(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc49(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x111650
movq 0x80(%rsp), %rdi
movq 0x88(%rsp), %rdx
leaq 0x334852(%rip), %rsi    # 0x44d7ba
callq 0x118750
jmp 0x118f6f
leaq 0xe40(%rsp), %rax
movq %rax, 0x70(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc48(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x111650
movq 0x70(%rsp), %rdi
movq 0x78(%rsp), %rdx
leaq 0x334826(%rip), %rsi    # 0x44d7cd
callq 0x118750
jmp 0x118fae
leaq 0xe60(%rsp), %rax
movq %rax, 0x60(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc47(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x111650
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rdx
leaq 0x3347fa(%rip), %rsi    # 0x44d7e0
callq 0x118750
jmp 0x118fed
leaq 0xe80(%rsp), %rax
movq %rax, 0x50(%rsp)
movq %rax, 0xc58(%rsp)
leaq 0xc46(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x111650
movq 0x50(%rsp), %rdi
movq 0x58(%rsp), %rdx
leaq 0x3347ce(%rip), %rsi    # 0x44d7f3
callq 0x118750
jmp 0x11902c
movb $0x0, 0xc45(%rsp)
leaq 0xc46(%rsp), %rdi
callq 0x111770
leaq 0xc47(%rsp), %rdi
callq 0x111770
leaq 0xc48(%rsp), %rdi
callq 0x111770
leaq 0xc49(%rsp), %rdi
callq 0x111770
leaq 0xc4a(%rsp), %rdi
callq 0x111770
leaq 0xc4b(%rsp), %rdi
callq 0x111770
leaq 0xc4c(%rsp), %rdi
callq 0x111770
leaq 0xc4d(%rsp), %rdi
callq 0x111770
leaq 0xc4e(%rsp), %rdi
callq 0x111770
leaq 0xc4f(%rsp), %rdi
callq 0x111770
leaq 0xc50(%rsp), %rdi
callq 0x111770
leaq 0xc51(%rsp), %rdi
callq 0x111770
leaq 0xc52(%rsp), %rdi
callq 0x111770
leaq 0xc53(%rsp), %rdi
callq 0x111770
leaq 0xc54(%rsp), %rdi
callq 0x111770
leaq 0xc55(%rsp), %rdi
callq 0x111770
leaq 0xc56(%rsp), %rdi
callq 0x111770
leaq 0xc57(%rsp), %rdi
callq 0x111770
movq $0x12, 0xc38(%rsp)
leaq 0x1c0(%rsp), %rdi
movl $0x7f, %esi
callq 0x119f00
jmp 0x11913e
leaq 0x310(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x11a030
jmp 0x119155
leaq 0x1c0(%rsp), %rdi
callq 0x11a860
movq $0x0, 0x1b8(%rsp)
cmpq $0x12, 0x1b8(%rsp)
jae 0x1196bf
leaq 0x198(%rsp), %rdi
callq 0x11a8d0
jmp 0x11918c
leaq 0x198(%rsp), %rdi
leaq 0xf60(%rsp), %rsi
callq 0x11a980
jmp 0x1191a3
movq 0x1b8(%rsp), %rax
shlq $0x5, %rax
leaq 0xc60(%rsp,%rax), %rsi
leaq 0x310(%rsp), %rdi
leaq 0x198(%rsp), %rdx
callq 0x11aa30
jmp 0x1191ce
movq 0x1b8(%rsp), %rax
shlq $0x5, %rax
leaq 0xc60(%rsp,%rax), %rdi
callq 0x1110f0
movq %rax, 0x40(%rsp)
leaq 0x198(%rsp), %rdi
callq 0x11b2c0
movsd %xmm0, 0x48(%rsp)
jmp 0x119201
movsd 0x48(%rsp), %xmm0
movq 0x40(%rsp), %rsi
leaq 0x3345f3(%rip), %rdi    # 0x44d806
movb $0x1, %al
callq 0x111080
jmp 0x11921c
leaq 0x198(%rsp), %rdi
callq 0x11b2e0
movq 0x1b8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1b8(%rsp)
jmp 0x11916e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x1197a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119292
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
leaq 0xf40(%rsp), %rdi
callq 0x111788
leaq 0xf3f(%rsp), %rdi
callq 0x111770
jmp 0x119793
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x1192db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
leaq 0xf18(%rsp), %rdi
callq 0x111788
leaq 0xf17(%rsp), %rdi
callq 0x111770
jmp 0x119793
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119793
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x11933d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
leaq 0xea8(%rsp), %rdi
callq 0x111788
leaq 0xea7(%rsp), %rdi
callq 0x111770
jmp 0x119786
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x1195e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x1195d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x1195c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x1195b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x1195ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x11959f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119592
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119585
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119578
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x11956b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x11955e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119551
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119544
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119537
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x11952a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x11951d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119510
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
leaq 0xc46(%rsp), %rdi
callq 0x111770
leaq 0xc47(%rsp), %rdi
callq 0x111770
leaq 0xc48(%rsp), %rdi
callq 0x111770
leaq 0xc49(%rsp), %rdi
callq 0x111770
leaq 0xc4a(%rsp), %rdi
callq 0x111770
leaq 0xc4b(%rsp), %rdi
callq 0x111770
leaq 0xc4c(%rsp), %rdi
callq 0x111770
leaq 0xc4d(%rsp), %rdi
callq 0x111770
leaq 0xc4e(%rsp), %rdi
callq 0x111770
leaq 0xc4f(%rsp), %rdi
callq 0x111770
leaq 0xc50(%rsp), %rdi
callq 0x111770
leaq 0xc51(%rsp), %rdi
callq 0x111770
leaq 0xc52(%rsp), %rdi
callq 0x111770
leaq 0xc53(%rsp), %rdi
callq 0x111770
leaq 0xc54(%rsp), %rdi
callq 0x111770
leaq 0xc55(%rsp), %rdi
callq 0x111770
leaq 0xc56(%rsp), %rdi
callq 0x111770
leaq 0xc57(%rsp), %rdi
callq 0x111770
testb $0x1, 0xc45(%rsp)
jne 0x1195f9
jmp 0x11963f
movq 0xc58(%rsp), %rax
leaq 0xc60(%rsp), %rcx
cmpq %rax, %rcx
movq %rax, 0x38(%rsp)
je 0x11963d
movq 0x38(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, 0x30(%rsp)
callq 0x111788
movq 0x30(%rsp), %rax
leaq 0xc60(%rsp), %rcx
cmpq %rcx, %rax
movq %rax, 0x38(%rsp)
jne 0x119613
jmp 0x11963f
jmp 0x119786
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x119747
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
leaq 0x1c0(%rsp), %rdi
callq 0x11a860
jmp 0x119747
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
jmp 0x11973a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf98(%rsp)
movl %eax, 0xf94(%rsp)
leaq 0x198(%rsp), %rdi
callq 0x11b2e0
jmp 0x11973a
leaq 0x310(%rsp), %rdi
callq 0x11b320
leaq 0xc60(%rsp), %rax
movq %rax, 0x20(%rsp)
addq $0x240, %rax            # imm = 0x240
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, 0x18(%rsp)
callq 0x111788
movq 0x20(%rsp), %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
movq %rax, 0x28(%rsp)
jne 0x1196e4
leaq 0xec8(%rsp), %rdi
callq 0x11b520
leaq 0xf60(%rsp), %rdi
callq 0x11b530
leaq 0xfa8(%rsp), %rdi
callq 0x11b5b0
addq $0xfe8, %rsp            # imm = 0xFE8
retq
leaq 0x310(%rsp), %rdi
callq 0x11b320
leaq 0xc60(%rsp), %rax
movq %rax, 0x8(%rsp)
addq $0x240, %rax            # imm = 0x240
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, (%rsp)
callq 0x111788
movq 0x8(%rsp), %rcx
movq (%rsp), %rax
cmpq %rcx, %rax
movq %rax, 0x10(%rsp)
jne 0x11975f
jmp 0x119786
leaq 0xec8(%rsp), %rdi
callq 0x11b520
leaq 0xf60(%rsp), %rdi
callq 0x11b530
leaq 0xfa8(%rsp), %rdi
callq 0x11b5b0
movq 0xf98(%rsp), %rdi
callq 0x111450
nopw (%rax,%rax)