// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::synthesize_cocob_expression::process(exprtk::parser<double>::expression_generator<double>&, exprtk::details::operator_type const&, exprtk::details::expression_node<double>* (&) [2])
static inline expression_node_ptr process(expression_generator<Type>& expr_gen,
                                                      const details::operator_type& operation,
                                                      expression_node_ptr (&branch)[2])
            {
               expression_node_ptr result = error_node();

               // (cob) o c --> cob
               if (details::is_cob_node(branch[0]))
               {
                  details::cob_base_node<Type>* cobnode = static_cast<details::cob_base_node<Type>*>(branch[0]);

                  const Type c = static_cast<details::literal_node<Type>*>(branch[1])->value();

                  if (std::equal_to<T>()(T(0),c) && (details::e_mul == operation))
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[0]);
                     details::free_node(*expr_gen.node_allocator_, branch[1]);

                     return expr_gen(T(0));
                  }
                  else if (std::equal_to<T>()(T(0),c) && (details::e_div == operation))
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[0]);
                     details::free_node(*expr_gen.node_allocator_, branch[1]);

                     return expr_gen(T(std::numeric_limits<T>::quiet_NaN()));
                  }
                  else if (std::equal_to<T>()(T(0),c) && (details::e_add == operation))
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[1]);

                     return branch[0];
                  }
                  else if (std::equal_to<T>()(T(1),c) && (details::e_mul == operation))
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[1]);

                     return branch[0];
                  }
                  else if (std::equal_to<T>()(T(1),c) && (details::e_div == operation))
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[1]);

                     return branch[0];
                  }

                  const bool op_addsub = (details::e_add == cobnode->operation()) ||
                                         (details::e_sub == cobnode->operation()) ;

                  if (op_addsub)
                  {
                     switch (operation)
                     {
                        case details::e_add : cobnode->set_c(cobnode->c() + c); break;
                        case details::e_sub : cobnode->set_c(cobnode->c() - c); break;
                        default             : return error_node();
                     }

                     result = cobnode;
                  }
                  else if (details::e_mul == cobnode->operation())
                  {
                     switch (operation)
                     {
                        case details::e_mul : cobnode->set_c(cobnode->c() * c); break;
                        case details::e_div : cobnode->set_c(cobnode->c() / c); break;
                        default             : return error_node();
                     }

                     result = cobnode;
                  }
                  else if (details::e_div == cobnode->operation())
                  {
                     if (details::e_mul == operation)
                     {
                        cobnode->set_c(cobnode->c() * c);
                        result = cobnode;
                     }
                     else if (details::e_div == operation)
                     {
                        result = expr_gen.node_allocator_->
                                    template allocate_tt<typename details::cob_node<Type,details::div_op<Type> > >
                                       (cobnode->c() / c, cobnode->move_branch(0));

                        details::free_node(*expr_gen.node_allocator_, branch[0]);
                     }
                  }

                  if (result)
                  {
                     details::free_node(*expr_gen.node_allocator_,branch[1]);
                  }
               }

               // c o (cob) --> cob
               else if (details::is_cob_node(branch[1]))
               {
                  details::cob_base_node<Type>* cobnode = static_cast<details::cob_base_node<Type>*>(branch[1]);

                  const Type c = static_cast<details::literal_node<Type>*>(branch[0])->value();

                  if (std::equal_to<T>()(T(0),c) && (details::e_mul == operation))
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[0]);
                     details::free_node(*expr_gen.node_allocator_, branch[1]);

                     return expr_gen(T(0));
                  }
                  else if (std::equal_to<T>()(T(0),c) && (details::e_div == operation))
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[0]);
                     details::free_node(*expr_gen.node_allocator_, branch[1]);

                     return expr_gen(T(0));
                  }
                  else if (std::equal_to<T>()(T(0),c) && (details::e_add == operation))
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[0]);

                     return branch[1];
                  }
                  else if (std::equal_to<T>()(T(1),c) && (details::e_mul == operation))
                  {
                     details::free_node(*expr_gen.node_allocator_, branch[0]);

                     return branch[1];
                  }

                  if (details::e_add == cobnode->operation())
                  {
                     if (details::e_add == operation)
                     {
                        cobnode->set_c(c + cobnode->c());
                        result = cobnode;
                     }
                     else if (details::e_sub == operation)
                     {
                        result = expr_gen.node_allocator_->
                                    template allocate_tt<typename details::cob_node<Type,details::sub_op<Type> > >
                                       (c - cobnode->c(), cobnode->move_branch(0));

                        details::free_node(*expr_gen.node_allocator_,branch[1]);
                     }
                  }
                  else if (details::e_sub == cobnode->operation())
                  {
                     if (details::e_add == operation)
                     {
                        cobnode->set_c(c + cobnode->c());
                        result = cobnode;
                     }
                     else if (details::e_sub == operation)
                     {
                        result = expr_gen.node_allocator_->
                                    template allocate_tt<typename details::cob_node<Type,details::add_op<Type> > >
                                       (c - cobnode->c(), cobnode->move_branch(0));

                        details::free_node(*expr_gen.node_allocator_,branch[1]);
                     }
                  }
                  else if (details::e_mul == cobnode->operation())
                  {
                     if (details::e_mul == operation)
                     {
                        cobnode->set_c(c * cobnode->c());
                        result = cobnode;
                     }
                     else if (details::e_div == operation)
                     {
                        result = expr_gen.node_allocator_->
                                    template allocate_tt<typename details::cob_node<Type,details::div_op<Type> > >
                                       (c / cobnode->c(), cobnode->move_branch(0));

                        details::free_node(*expr_gen.node_allocator_,branch[1]);
                     }
                  }
                  else if (details::e_div == cobnode->operation())
                  {
                     if (details::e_mul == operation)
                     {
                        cobnode->set_c(c * cobnode->c());
                        result = cobnode;
                     }
                     else if (details::e_div == operation)
                     {
                        result = expr_gen.node_allocator_->
                                    template allocate_tt<typename details::cob_node<Type,details::mul_op<Type> > >
                                       (c / cobnode->c(), cobnode->move_branch(0));

                        details::free_node(*expr_gen.node_allocator_,branch[1]);
                     }
                  }

                  if (result)
                  {
                     details::free_node(*expr_gen.node_allocator_,branch[0]);
                  }
               }

               return result;
            }

// Assembly:
subq $0x228, %rsp            # imm = 0x228
movq %rdi, 0x218(%rsp)
movq %rsi, 0x210(%rsp)
movq %rdx, 0x208(%rsp)
callq 0x2821f0
movq %rax, 0x200(%rsp)
movq 0x208(%rsp), %rax
movq (%rax), %rdi
callq 0x484260
testb $0x1, %al
jne 0x3e28f5
jmp 0x3e2fd8
movq 0x208(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x1f8(%rsp)
movq 0x208(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x284bc0
movsd %xmm0, 0x1f0(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x1e0(%rsp)
leaq 0x1ef(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
leaq 0x1f0(%rsp), %rdx
callq 0x266f00
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xff(%rsp)
jne 0x3e295d
jmp 0x3e2976
movq 0x210(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
sete %al
movb %al, 0xff(%rsp)
movb 0xff(%rsp), %al
testb $0x1, %al
jne 0x3e2983
jmp 0x3e29e7
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
callq 0x284bd0
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
movq 0x218(%rsp), %rdi
xorps %xmm0, %xmm0
movsd %xmm0, 0x1d8(%rsp)
leaq 0x1d8(%rsp), %rsi
callq 0x284c20
movq %rax, 0x220(%rsp)
jmp 0x3e381b
xorps %xmm0, %xmm0
movsd %xmm0, 0x1c8(%rsp)
leaq 0x1d7(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
leaq 0x1f0(%rsp), %rdx
callq 0x266f00
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xfe(%rsp)
jne 0x3e2a22
jmp 0x3e2a3b
movq 0x210(%rsp), %rcx
movl $0x5, %eax
cmpl (%rcx), %eax
sete %al
movb %al, 0xfe(%rsp)
movb 0xfe(%rsp), %al
testb $0x1, %al
jne 0x3e2a48
jmp 0x3e2abe
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
callq 0x284bd0
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
movq 0x218(%rsp), %rax
movq %rax, 0xf0(%rsp)
callq 0x2361c0
movq 0xf0(%rsp), %rdi
movsd %xmm0, 0x1c0(%rsp)
leaq 0x1c0(%rsp), %rsi
callq 0x284c20
movq %rax, 0x220(%rsp)
jmp 0x3e381b
xorps %xmm0, %xmm0
movsd %xmm0, 0x1b0(%rsp)
leaq 0x1bf(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x1f0(%rsp), %rdx
callq 0x266f00
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xef(%rsp)
jne 0x3e2af9
jmp 0x3e2b12
movq 0x210(%rsp), %rcx
movl $0x2, %eax
cmpl (%rcx), %eax
sete %al
movb %al, 0xef(%rsp)
movb 0xef(%rsp), %al
testb $0x1, %al
jne 0x3e2b1f
jmp 0x3e2b54
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
movq 0x208(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x220(%rsp)
jmp 0x3e381b
movsd 0x1b84e4(%rip), %xmm0   # 0x59b040
movsd %xmm0, 0x1a0(%rsp)
leaq 0x1af(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
leaq 0x1f0(%rsp), %rdx
callq 0x266f00
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xee(%rsp)
jne 0x3e2b94
jmp 0x3e2bad
movq 0x210(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
sete %al
movb %al, 0xee(%rsp)
movb 0xee(%rsp), %al
testb $0x1, %al
jne 0x3e2bba
jmp 0x3e2bef
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
movq 0x208(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x220(%rsp)
jmp 0x3e381b
movsd 0x1b8449(%rip), %xmm0   # 0x59b040
movsd %xmm0, 0x190(%rsp)
leaq 0x19f(%rsp), %rdi
leaq 0x190(%rsp), %rsi
leaq 0x1f0(%rsp), %rdx
callq 0x266f00
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xed(%rsp)
jne 0x3e2c2f
jmp 0x3e2c48
movq 0x210(%rsp), %rcx
movl $0x5, %eax
cmpl (%rcx), %eax
sete %al
movb %al, 0xed(%rsp)
movb 0xed(%rsp), %al
testb $0x1, %al
jne 0x3e2c55
jmp 0x3e2c8a
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
movq 0x208(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x220(%rsp)
jmp 0x3e381b
jmp 0x3e2c8c
jmp 0x3e2c8e
jmp 0x3e2c90
jmp 0x3e2c92
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, %edx
movb $0x1, %al
movl $0x2, %ecx
cmpl %edx, %ecx
movb %al, 0xec(%rsp)
je 0x3e2cd5
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, %ecx
movl $0x3, %eax
cmpl %ecx, %eax
sete %al
movb %al, 0xec(%rsp)
movb 0xec(%rsp), %al
andb $0x1, %al
movb %al, 0x18f(%rsp)
testb $0x1, 0x18f(%rsp)
je 0x3e2dae
movq 0x210(%rsp), %rax
movl (%rax), %eax
movl %eax, 0xe8(%rsp)
subl $0x2, %eax
je 0x3e2d19
jmp 0x3e2d0b
movl 0xe8(%rsp), %eax
subl $0x3, %eax
je 0x3e2d50
jmp 0x3e2d87
movq 0x1f8(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq 0xe0(%rsp), %rdi
addsd 0x1f0(%rsp), %xmm0
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0x3e2d99
movq 0x1f8(%rsp), %rax
movq %rax, 0xd8(%rsp)
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq 0xd8(%rsp), %rdi
subsd 0x1f0(%rsp), %xmm0
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0x3e2d99
callq 0x2821f0
movq %rax, 0x220(%rsp)
jmp 0x3e381b
movq 0x1f8(%rsp), %rax
movq %rax, 0x200(%rsp)
jmp 0x3e2fab
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, %ecx
movl $0x4, %eax
cmpl %ecx, %eax
jne 0x3e2e86
movq 0x210(%rsp), %rax
movl (%rax), %eax
movl %eax, 0xd4(%rsp)
subl $0x4, %eax
je 0x3e2df1
jmp 0x3e2de3
movl 0xd4(%rsp), %eax
subl $0x5, %eax
je 0x3e2e28
jmp 0x3e2e5f
movq 0x1f8(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq 0xc8(%rsp), %rdi
mulsd 0x1f0(%rsp), %xmm0
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0x3e2e71
movq 0x1f8(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq 0xc0(%rsp), %rdi
divsd 0x1f0(%rsp), %xmm0
movq (%rdi), %rax
callq *0x48(%rax)
jmp 0x3e2e71
callq 0x2821f0
movq %rax, 0x220(%rsp)
jmp 0x3e381b
movq 0x1f8(%rsp), %rax
movq %rax, 0x200(%rsp)
jmp 0x3e2fa9
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, %ecx
movl $0x5, %eax
cmpl %ecx, %eax
jne 0x3e2fa7
movq 0x210(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
jne 0x3e2efe
movq 0x1f8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq 0xb8(%rsp), %rdi
mulsd 0x1f0(%rsp), %xmm0
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x1f8(%rsp), %rax
movq %rax, 0x200(%rsp)
jmp 0x3e2fa5
movq 0x210(%rsp), %rcx
movl $0x5, %eax
cmpl (%rcx), %eax
jne 0x3e2fa3
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0xa8(%rsp)
movq 0x1f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
divsd 0x1f0(%rsp), %xmm0
movsd %xmm0, 0xb0(%rsp)
movq 0x1f8(%rsp), %rdi
movq $0x0, 0x180(%rsp)
movq (%rdi), %rax
leaq 0x180(%rsp), %rsi
callq *0x50(%rax)
movq 0xa8(%rsp), %rdi
movsd 0xb0(%rsp), %xmm0
movq %rax, %rsi
callq 0x4842c0
movq %rax, 0x200(%rsp)
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
callq 0x284bd0
jmp 0x3e2fa5
jmp 0x3e2fa7
jmp 0x3e2fa9
jmp 0x3e2fab
cmpq $0x0, 0x200(%rsp)
je 0x3e2fd3
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
jmp 0x3e380b
movq 0x208(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x484260
testb $0x1, %al
jne 0x3e2ff2
jmp 0x3e3809
movq 0x208(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x178(%rsp)
movq 0x208(%rsp), %rax
movq (%rax), %rdi
callq 0x284bc0
movsd %xmm0, 0x170(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x160(%rsp)
leaq 0x16f(%rsp), %rdi
leaq 0x160(%rsp), %rsi
leaq 0x170(%rsp), %rdx
callq 0x266f00
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xa7(%rsp)
jne 0x3e305a
jmp 0x3e3073
movq 0x210(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
sete %al
movb %al, 0xa7(%rsp)
movb 0xa7(%rsp), %al
testb $0x1, %al
jne 0x3e3080
jmp 0x3e30e4
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
callq 0x284bd0
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
movq 0x218(%rsp), %rdi
xorps %xmm0, %xmm0
movsd %xmm0, 0x158(%rsp)
leaq 0x158(%rsp), %rsi
callq 0x284c20
movq %rax, 0x220(%rsp)
jmp 0x3e381b
xorps %xmm0, %xmm0
movsd %xmm0, 0x148(%rsp)
leaq 0x157(%rsp), %rdi
leaq 0x148(%rsp), %rsi
leaq 0x170(%rsp), %rdx
callq 0x266f00
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xa6(%rsp)
jne 0x3e311f
jmp 0x3e3138
movq 0x210(%rsp), %rcx
movl $0x5, %eax
cmpl (%rcx), %eax
sete %al
movb %al, 0xa6(%rsp)
movb 0xa6(%rsp), %al
testb $0x1, %al
jne 0x3e3145
jmp 0x3e31a9
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
callq 0x284bd0
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
movq 0x218(%rsp), %rdi
xorps %xmm0, %xmm0
movsd %xmm0, 0x140(%rsp)
leaq 0x140(%rsp), %rsi
callq 0x284c20
movq %rax, 0x220(%rsp)
jmp 0x3e381b
xorps %xmm0, %xmm0
movsd %xmm0, 0x130(%rsp)
leaq 0x13f(%rsp), %rdi
leaq 0x130(%rsp), %rsi
leaq 0x170(%rsp), %rdx
callq 0x266f00
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xa5(%rsp)
jne 0x3e31e4
jmp 0x3e31fd
movq 0x210(%rsp), %rcx
movl $0x2, %eax
cmpl (%rcx), %eax
sete %al
movb %al, 0xa5(%rsp)
movb 0xa5(%rsp), %al
testb $0x1, %al
jne 0x3e320a
jmp 0x3e323c
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
callq 0x284bd0
movq 0x208(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x220(%rsp)
jmp 0x3e381b
movsd 0x1b7dfc(%rip), %xmm0   # 0x59b040
movsd %xmm0, 0x120(%rsp)
leaq 0x12f(%rsp), %rdi
leaq 0x120(%rsp), %rsi
leaq 0x170(%rsp), %rdx
callq 0x266f00
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xa4(%rsp)
jne 0x3e327c
jmp 0x3e3295
movq 0x210(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
sete %al
movb %al, 0xa4(%rsp)
movb 0xa4(%rsp), %al
testb $0x1, %al
jne 0x3e32a2
jmp 0x3e32d4
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
callq 0x284bd0
movq 0x208(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x220(%rsp)
jmp 0x3e381b
jmp 0x3e32d6
jmp 0x3e32d8
jmp 0x3e32da
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, %ecx
movl $0x2, %eax
cmpl %ecx, %eax
jne 0x3e342e
movq 0x210(%rsp), %rcx
movl $0x2, %eax
cmpl (%rcx), %eax
jne 0x3e336b
movq 0x178(%rsp), %rax
movq %rax, 0x90(%rsp)
movsd 0x170(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq 0x90(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x98(%rsp), %xmm0
addsd %xmm1, %xmm0
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x178(%rsp), %rax
movq %rax, 0x200(%rsp)
jmp 0x3e3429
movq 0x210(%rsp), %rcx
movl $0x3, %eax
cmpl (%rcx), %eax
jne 0x3e3427
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x80(%rsp)
movsd 0x170(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movaps %xmm0, %xmm1
movsd 0x78(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x88(%rsp)
movq 0x178(%rsp), %rdi
movq $0x0, 0x118(%rsp)
movq (%rdi), %rax
leaq 0x118(%rsp), %rsi
callq *0x50(%rax)
movq 0x80(%rsp), %rdi
movsd 0x88(%rsp), %xmm0
movq %rax, %rsi
callq 0x484350
movq %rax, 0x200(%rsp)
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
jmp 0x3e3429
jmp 0x3e37e3
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, %ecx
movl $0x3, %eax
cmpl %ecx, %eax
jne 0x3e356a
movq 0x210(%rsp), %rcx
movl $0x2, %eax
cmpl (%rcx), %eax
jne 0x3e34b3
movq 0x178(%rsp), %rax
movq %rax, 0x68(%rsp)
movsd 0x170(%rsp), %xmm0
movsd %xmm0, 0x70(%rsp)
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq 0x68(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x70(%rsp), %xmm0
addsd %xmm1, %xmm0
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x178(%rsp), %rax
movq %rax, 0x200(%rsp)
jmp 0x3e3565
movq 0x210(%rsp), %rcx
movl $0x3, %eax
cmpl (%rcx), %eax
jne 0x3e3563
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x58(%rsp)
movsd 0x170(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movaps %xmm0, %xmm1
movsd 0x50(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movq 0x178(%rsp), %rdi
movq $0x0, 0x110(%rsp)
movq (%rdi), %rax
leaq 0x110(%rsp), %rsi
callq *0x50(%rax)
movq 0x58(%rsp), %rdi
movsd 0x60(%rsp), %xmm0
movq %rax, %rsi
callq 0x4843e0
movq %rax, 0x200(%rsp)
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
jmp 0x3e3565
jmp 0x3e37e1
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, %ecx
movl $0x4, %eax
cmpl %ecx, %eax
jne 0x3e36a6
movq 0x210(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
jne 0x3e35ef
movq 0x178(%rsp), %rax
movq %rax, 0x40(%rsp)
movsd 0x170(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq 0x40(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x48(%rsp), %xmm0
mulsd %xmm1, %xmm0
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x178(%rsp), %rax
movq %rax, 0x200(%rsp)
jmp 0x3e36a1
movq 0x210(%rsp), %rcx
movl $0x5, %eax
cmpl (%rcx), %eax
jne 0x3e369f
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x30(%rsp)
movsd 0x170(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movaps %xmm0, %xmm1
movsd 0x28(%rsp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movq 0x178(%rsp), %rdi
movq $0x0, 0x108(%rsp)
movq (%rdi), %rax
leaq 0x108(%rsp), %rsi
callq *0x50(%rax)
movq 0x30(%rsp), %rdi
movsd 0x38(%rsp), %xmm0
movq %rax, %rsi
callq 0x4842c0
movq %rax, 0x200(%rsp)
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
jmp 0x3e36a1
jmp 0x3e37df
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movl %eax, %ecx
movl $0x5, %eax
cmpl %ecx, %eax
jne 0x3e37dd
movq 0x210(%rsp), %rcx
movl $0x4, %eax
cmpl (%rcx), %eax
jne 0x3e372b
movq 0x178(%rsp), %rax
movq %rax, 0x18(%rsp)
movsd 0x170(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movq 0x18(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x20(%rsp), %xmm0
mulsd %xmm1, %xmm0
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x178(%rsp), %rax
movq %rax, 0x200(%rsp)
jmp 0x3e37db
movq 0x210(%rsp), %rcx
movl $0x5, %eax
cmpl (%rcx), %eax
jne 0x3e37d9
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
movsd 0x170(%rsp), %xmm0
movsd %xmm0, (%rsp)
movq 0x178(%rsp), %rdi
movq (%rdi), %rax
callq *0x40(%rax)
movaps %xmm0, %xmm1
movsd (%rsp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x178(%rsp), %rdi
movq $0x0, 0x100(%rsp)
movq (%rdi), %rax
leaq 0x100(%rsp), %rsi
callq *0x50(%rax)
movq 0x8(%rsp), %rdi
movsd 0x10(%rsp), %xmm0
movq %rax, %rsi
callq 0x484470
movq %rax, 0x200(%rsp)
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
addq $0x8, %rsi
callq 0x284bd0
jmp 0x3e37db
jmp 0x3e37dd
jmp 0x3e37df
jmp 0x3e37e1
jmp 0x3e37e3
cmpq $0x0, 0x200(%rsp)
je 0x3e3807
movq 0x218(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x208(%rsp), %rsi
callq 0x284bd0
jmp 0x3e3809
jmp 0x3e380b
movq 0x200(%rsp), %rax
movq %rax, 0x220(%rsp)
movq 0x220(%rsp), %rax
addq $0x228, %rsp            # imm = 0x228
retq
nopl (%rax,%rax)