// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::parse_multi_sequence(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)
inline expression_node_ptr parse_multi_sequence(const std::string& source = "",
                                                      const bool enforce_crlbrackets = false)
      {
         token_t::token_type open_bracket  = token_t::e_lcrlbracket;
         token_t::token_type close_bracket = token_t::e_rcrlbracket;
         token_t::token_type separator     = token_t::e_eof;

         if (!token_is(open_bracket))
         {
            if (!enforce_crlbrackets && token_is(token_t::e_lbracket))
            {
               open_bracket  = token_t::e_lbracket;
               close_bracket = token_t::e_rbracket;
               separator     = token_t::e_comma;
            }
            else
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR111 - Expected '" + token_t::to_str(open_bracket) + "' for call to multi-sequence" +
                  ((!source.empty()) ? std::string(" section of " + source): ""),
                  exprtk_error_location));

               return error_node();
            }
         }
         else if (token_is(close_bracket))
         {
            return node_allocator_.allocate<details::null_node<T> >();
         }

         std::vector<expression_node_ptr> arg_list;
         std::vector<bool> side_effect_list;

         scoped_vec_delete<expression_node_t> svd((*this), arg_list);

         scope_handler sh(*this);

         scoped_bool_or_restorer sbr(state_.side_effect_present);

         for ( ; ; )
         {
            state_.side_effect_present = false;

            expression_node_ptr arg = parse_expression();

            if (0 == arg)
               return error_node();
            else
            {
               arg_list.push_back(arg);
               side_effect_list.push_back(state_.side_effect_present);
            }

            if (token_is(close_bracket))
               break;

            const bool is_next_close = peek_token_is(close_bracket);

            if (!token_is(separator) && is_next_close)
            {
               set_error(make_error(
                  parser_error::e_syntax,
                  current_token(),
                  "ERR112 - Expected '" + lexer::token::seperator_to_str(separator) + "' for call to multi-sequence section of " + source,
                  exprtk_error_location));

               return error_node();
            }

            if (token_is(close_bracket))
               break;
         }

         expression_node_ptr result = simplify(arg_list, side_effect_list, source.empty());

         svd.delete_ptr = (0 == result);
         return result;
      }

// Assembly:
subq $0x418, %rsp            # imm = 0x418
movb %dl, %al
movq %rdi, 0x408(%rsp)
movq %rsi, 0x400(%rsp)
andb $0x1, %al
movb %al, 0x3ff(%rsp)
movq 0x408(%rsp), %rdi
movq %rdi, 0x50(%rsp)
movl $0x7b, 0x3f8(%rsp)
movl $0x7d, 0x3f4(%rsp)
movl $0x6, 0x3f0(%rsp)
leaq 0x3f8(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
testb $0x1, %al
jne 0x39975f
xorl %eax, %eax
testb $0x1, 0x3ff(%rsp)
movb %al, 0x4f(%rsp)
jne 0x3993e0
movq 0x50(%rsp), %rdi
movl $0x28, 0x3ec(%rsp)
leaq 0x3ec(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
movb %al, 0x4f(%rsp)
movb 0x4f(%rsp), %al
testb $0x1, %al
jne 0x3993ea
jmp 0x399410
movl $0x28, 0x3f8(%rsp)
movl $0x29, 0x3f4(%rsp)
movl $0x2c, 0x3f0(%rsp)
jmp 0x39975d
movq 0x50(%rsp), %rdi
callq 0x373e90
movq %rax, 0x38(%rsp)
movl 0x3f8(%rsp), %esi
leaq 0x2c0(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x39b6e0
movq 0x40(%rsp), %rdx
leaq 0x20e170(%rip), %rsi    # 0x5a75b4
leaq 0x2e0(%rsp), %rdi
callq 0x29dd70
jmp 0x399453
leaq 0x20e16e(%rip), %rdx    # 0x5a75c8
leaq 0x300(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x29dc30
jmp 0x399471
movq 0x400(%rsp), %rdi
callq 0x11b260
movb $0x0, 0x28e(%rsp)
testb $0x1, %al
jne 0x3994aa
movq 0x400(%rsp), %rdx
leaq 0x20e17c(%rip), %rsi    # 0x5a7615
leaq 0x290(%rsp), %rdi
callq 0x3784f0
jmp 0x3994a8
jmp 0x3994e1
leaq 0x28f(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x11b6f0
movq 0x30(%rsp), %rdx
movb $0x1, 0x28e(%rsp)
leaq 0x21c778(%rip), %rsi    # 0x5b5c48
leaq 0x290(%rsp), %rdi
callq 0x134520
jmp 0x3994df
jmp 0x3994e1
leaq 0x320(%rsp), %rdi
leaq 0x300(%rsp), %rsi
leaq 0x290(%rsp), %rdx
callq 0x29dc80
jmp 0x399500
leaq 0x248(%rsp), %rdi
movl $0x6c82, %esi           # imm = 0x6C82
callq 0x371f20
jmp 0x399514
leaq 0x20d9f8(%rip), %rsi    # 0x5a6f13
leaq 0x268(%rsp), %rdi
leaq 0x248(%rsp), %rdx
callq 0x29dd70
jmp 0x399532
movq 0x38(%rsp), %rdx
leaq 0x340(%rsp), %rdi
movl $0x1, %esi
leaq 0x320(%rsp), %rcx
leaq 0x268(%rsp), %r8
callq 0x3741e0
jmp 0x39955b
movq 0x50(%rsp), %rdi
leaq 0x340(%rsp), %rsi
callq 0x371e40
jmp 0x39956f
leaq 0x340(%rsp), %rdi
callq 0x371330
leaq 0x268(%rsp), %rdi
callq 0x11b838
leaq 0x248(%rsp), %rdi
callq 0x11b838
leaq 0x320(%rsp), %rdi
callq 0x11b838
leaq 0x290(%rsp), %rdi
callq 0x11b838
testb $0x1, 0x28e(%rsp)
jne 0x3995bc
jmp 0x3995c9
leaq 0x28f(%rsp), %rdi
callq 0x11b820
leaq 0x300(%rsp), %rdi
callq 0x11b838
leaq 0x2e0(%rsp), %rdi
callq 0x11b838
leaq 0x2c0(%rsp), %rdi
callq 0x11b838
callq 0x2821f0
movq %rax, 0x410(%rsp)
jmp 0x399cf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x39974b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x39973e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399731
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399716
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399709
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x3996fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x3996ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x3996e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
leaq 0x340(%rsp), %rdi
callq 0x371330
leaq 0x268(%rsp), %rdi
callq 0x11b838
leaq 0x248(%rsp), %rdi
callq 0x11b838
leaq 0x320(%rsp), %rdi
callq 0x11b838
leaq 0x290(%rsp), %rdi
callq 0x11b838
testb $0x1, 0x28e(%rsp)
jne 0x399722
jmp 0x39972f
leaq 0x28f(%rsp), %rdi
callq 0x11b820
jmp 0x399731
leaq 0x300(%rsp), %rdi
callq 0x11b838
leaq 0x2e0(%rsp), %rdi
callq 0x11b838
leaq 0x2c0(%rsp), %rdi
callq 0x11b838
jmp 0x399d04
jmp 0x39979c
movq 0x50(%rsp), %rdi
leaq 0x3f4(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
testb $0x1, %al
jne 0x39977c
jmp 0x39979a
movq 0x50(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
callq 0x39c7b0
movq %rax, 0x410(%rsp)
jmp 0x399cf4
jmp 0x39979c
leaq 0x230(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x3798f0
leaq 0x208(%rsp), %rdi
callq 0x379900
movq 0x50(%rsp), %rsi
movq 0x28(%rsp), %rdx
leaq 0x1f0(%rsp), %rdi
callq 0x379910
jmp 0x3997d4
movq 0x50(%rsp), %rsi
leaq 0x1e8(%rsp), %rdi
callq 0x39c810
jmp 0x3997e8
movq 0x50(%rsp), %rsi
addq $0x3ac, %rsi            # imm = 0x3AC
leaq 0x1d8(%rsp), %rdi
callq 0x39c840
jmp 0x399803
jmp 0x399805
movq 0x50(%rsp), %rdi
movb $0x0, 0x3ac(%rdi)
xorl %esi, %esi
callq 0x379940
movq %rax, 0x20(%rsp)
jmp 0x39981f
movq 0x20(%rsp), %rax
movq %rax, 0x1d0(%rsp)
xorl %eax, %eax
cmpq 0x1d0(%rsp), %rax
jne 0x3998bd
callq 0x2821f0
movq %rax, 0x410(%rsp)
movl $0x1, 0x1cc(%rsp)
jmp 0x399c6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399cd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399ccb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399cbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399cb1
leaq 0x230(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x37d3b0
jmp 0x3998d4
movq 0x50(%rsp), %rax
movzbl 0x3ac(%rax), %esi
andl $0x1, %esi
leaq 0x208(%rsp), %rdi
callq 0x37d420
jmp 0x3998f2
jmp 0x3998f4
movq 0x50(%rsp), %rdi
leaq 0x3f4(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
movb %al, 0x1f(%rsp)
jmp 0x399911
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0x39991b
jmp 0x399920
jmp 0x399c0a
movq 0x50(%rsp), %rdi
leaq 0x3f4(%rsp), %rsi
callq 0x39c870
movb %al, 0x1e(%rsp)
jmp 0x399938
movq 0x50(%rsp), %rdi
movb 0x1e(%rsp), %al
andb $0x1, %al
movb %al, 0x1cb(%rsp)
leaq 0x3f0(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
movb %al, 0x1d(%rsp)
jmp 0x399962
movb 0x1d(%rsp), %al
testb $0x1, %al
jne 0x399bdc
jmp 0x399970
testb $0x1, 0x1cb(%rsp)
je 0x399bdc
movq 0x50(%rsp), %rdi
callq 0x373e90
movq %rax, 0x10(%rsp)
jmp 0x39998f
movl 0x3f0(%rsp), %esi
leaq 0xa0(%rsp), %rdi
callq 0x39c8a0
jmp 0x3999a5
leaq 0x20dc39(%rip), %rsi    # 0x5a75e5
leaq 0xc0(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x29dd70
jmp 0x3999c3
leaq 0x20dc2f(%rip), %rdx    # 0x5a75f9
leaq 0xe0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x29dc30
jmp 0x3999e1
movq 0x400(%rsp), %rdx
leaq 0x100(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x378400
jmp 0x399a00
leaq 0x60(%rsp), %rdi
movl $0x6cae, %esi           # imm = 0x6CAE
callq 0x371f20
jmp 0x399a11
leaq 0x20d4fb(%rip), %rsi    # 0x5a6f13
leaq 0x80(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x29dd70
jmp 0x399a2c
movq 0x10(%rsp), %rdx
leaq 0x120(%rsp), %rdi
movl $0x1, %esi
leaq 0x100(%rsp), %rcx
leaq 0x80(%rsp), %r8
callq 0x3741e0
jmp 0x399a55
movq 0x50(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x371e40
jmp 0x399a69
leaq 0x120(%rsp), %rdi
callq 0x371330
leaq 0x80(%rsp), %rdi
callq 0x11b838
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0x100(%rsp), %rdi
callq 0x11b838
leaq 0xe0(%rsp), %rdi
callq 0x11b838
leaq 0xc0(%rsp), %rdi
callq 0x11b838
leaq 0xa0(%rsp), %rdi
callq 0x11b838
callq 0x2821f0
movq %rax, 0x410(%rsp)
movl $0x1, 0x1cc(%rsp)
jmp 0x399c6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399bca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399bbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399bb0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399ba3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399b99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x399b8c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x371330
leaq 0x80(%rsp), %rdi
callq 0x11b838
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0x100(%rsp), %rdi
callq 0x11b838
leaq 0xe0(%rsp), %rdi
callq 0x11b838
leaq 0xc0(%rsp), %rdi
callq 0x11b838
leaq 0xa0(%rsp), %rdi
callq 0x11b838
jmp 0x399cb1
movq 0x50(%rsp), %rdi
leaq 0x3f4(%rsp), %rsi
movl $0x1, %edx
callq 0x37d640
movb %al, 0xf(%rsp)
jmp 0x399bf9
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x399c03
jmp 0x399c05
jmp 0x399c0a
jmp 0x399805
movq 0x400(%rsp), %rdi
callq 0x11b260
movq 0x50(%rsp), %rdi
movzbl %al, %ecx
leaq 0x230(%rsp), %rsi
leaq 0x208(%rsp), %rdx
callq 0x37d820
movq %rax, (%rsp)
jmp 0x399c3a
movq (%rsp), %rax
movq %rax, 0x58(%rsp)
xorl %eax, %eax
cmpq 0x58(%rsp), %rax
sete %al
andb $0x1, %al
movb %al, 0x1f0(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x410(%rsp)
movl $0x1, 0x1cc(%rsp)
leaq 0x1d8(%rsp), %rdi
callq 0x39ca40
leaq 0x1e8(%rsp), %rdi
callq 0x39ca80
leaq 0x1f0(%rsp), %rdi
callq 0x37dec0
leaq 0x208(%rsp), %rdi
callq 0x37df80
leaq 0x230(%rsp), %rdi
callq 0x37df90
jmp 0x399cf4
leaq 0x1d8(%rsp), %rdi
callq 0x39ca40
leaq 0x1e8(%rsp), %rdi
callq 0x39ca80
leaq 0x1f0(%rsp), %rdi
callq 0x37dec0
leaq 0x208(%rsp), %rdi
callq 0x37df80
leaq 0x230(%rsp), %rdi
callq 0x37df90
jmp 0x399d04
movq 0x410(%rsp), %rax
addq $0x418, %rsp            # imm = 0x418
retq
movq 0x2b8(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)