// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::type_checker::verify(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned long&)
bool verify(const std::string& param_seq, std::size_t& pseq_index)
         {
            if (function_definition_list_.empty())
               return true;

            std::vector<std::pair<std::size_t,char> > error_list;

            for (std::size_t i = 0; i < function_definition_list_.size(); ++i)
            {
               details::char_t diff_value = 0;
               std::size_t     diff_index = 0;

               const bool result = details::sequence_match(function_definition_list_[i].param_seq,
                                                           param_seq,
                                                           diff_index, diff_value);

              if (result)
              {
                 pseq_index = i;
                 return true;
              }
              else
                 error_list.push_back(std::make_pair(diff_index, diff_value));
            }

            if (1 == error_list.size())
            {
               parser_.set_error(make_error(
                  parser_error::e_syntax,
                  parser_.current_token(),
                  "ERR132 - Failed parameter type check for function '" + function_name_ + "', "
                  "Expected '" + function_definition_list_[0].param_seq +
                  "' call set: '" + param_seq + "'",
                  exprtk_error_location));
            }
            else
            {
               // find first with largest diff_index;
               std::size_t max_diff_index = 0;

               for (std::size_t i = 1; i < error_list.size(); ++i)
               {
                  if (error_list[i].first > error_list[max_diff_index].first)
                  {
                     max_diff_index = i;
                  }
               }

               parser_.set_error(make_error(
                  parser_error::e_syntax,
                  parser_.current_token(),
                  "ERR133 - Failed parameter type check for function '" + function_name_ + "', "
                  "Best match: '" + function_definition_list_[max_diff_index].param_seq +
                  "' call set: '" + param_seq + "'",
                  exprtk_error_location));
            }

            return false;
         }

// Assembly:
subq $0x448, %rsp            # imm = 0x448
movq %rdi, 0x438(%rsp)
movq %rsi, 0x430(%rsp)
movq %rdx, 0x428(%rsp)
movq 0x438(%rsp), %rdi
movq %rdi, 0x58(%rsp)
addq $0x38, %rdi
callq 0x552cd0
testb $0x1, %al
jne 0x54f4bb
jmp 0x54f4c8
movb $0x1, 0x447(%rsp)
jmp 0x54fd63
leaq 0x410(%rsp), %rdi
callq 0x552d20
movq $0x0, 0x408(%rsp)
movq 0x58(%rsp), %rdi
movq 0x408(%rsp), %rax
movq %rax, 0x50(%rsp)
addq $0x38, %rdi
callq 0x552520
movq %rax, %rcx
movq 0x50(%rsp), %rax
cmpq %rcx, %rax
jae 0x54f646
movq 0x58(%rsp), %rdi
movb $0x0, 0x407(%rsp)
movq $0x0, 0x3f8(%rsp)
addq $0x38, %rdi
movq 0x408(%rsp), %rsi
callq 0x553060
movq %rax, %rdi
addq $0x8, %rdi
movq 0x430(%rsp), %rsi
leaq 0x3f8(%rsp), %rdx
leaq 0x407(%rsp), %rcx
callq 0x552d30
movb %al, 0x4f(%rsp)
jmp 0x54f561
movb 0x4f(%rsp), %al
andb $0x1, %al
movb %al, 0x3f7(%rsp)
testb $0x1, 0x3f7(%rsp)
je 0x54f5bc
movq 0x408(%rsp), %rcx
movq 0x428(%rsp), %rax
movq %rcx, (%rax)
movb $0x1, 0x447(%rsp)
movl $0x1, 0x3e0(%rsp)
jmp 0x54fd45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54fd54
leaq 0x3f8(%rsp), %rdi
leaq 0x407(%rsp), %rsi
callq 0x5530b0
movb %dl, 0x3f(%rsp)
movq %rax, 0x40(%rsp)
jmp 0x54f5dc
movb 0x3f(%rsp), %al
movq 0x40(%rsp), %rcx
movq %rcx, 0x3c0(%rsp)
movb %al, 0x3c8(%rsp)
movb 0x3c8(%rsp), %al
movb %al, 0x3d8(%rsp)
movq 0x3c0(%rsp), %rax
movq %rax, 0x3d0(%rsp)
leaq 0x410(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
callq 0x553080
jmp 0x54f629
jmp 0x54f62b
jmp 0x54f62d
movq 0x408(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x408(%rsp)
jmp 0x54f4e1
leaq 0x410(%rsp), %rdi
callq 0x5530e0
movq %rax, %rcx
movl $0x1, %eax
cmpq %rcx, %rax
jne 0x54f97c
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq %rdi, 0x28(%rsp)
callq 0x373e90
movq %rax, 0x30(%rsp)
jmp 0x54f67e
movq 0x58(%rsp), %rdx
addq $0x10, %rdx
leaq 0x5b6a9(%rip), %rsi     # 0x5aad37
leaq 0x258(%rsp), %rdi
callq 0x3784f0
jmp 0x54f69d
leaq 0x5b6c7(%rip), %rdx     # 0x5aad6b
leaq 0x278(%rsp), %rdi
leaq 0x258(%rsp), %rsi
callq 0x29dc30
jmp 0x54f6bb
movq 0x58(%rsp), %rdi
addq $0x38, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x553060
movq %rax, %rdx
addq $0x8, %rdx
leaq 0x298(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0x378400
jmp 0x54f6eb
leaq 0x5b687(%rip), %rdx     # 0x5aad79
leaq 0x2b8(%rsp), %rdi
leaq 0x298(%rsp), %rsi
callq 0x29dc30
jmp 0x54f709
movq 0x430(%rsp), %rdx
leaq 0x2d8(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x378400
jmp 0x54f728
leaq 0x5a382(%rip), %rdx     # 0x5a9ab1
leaq 0x2f8(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0x29dc30
jmp 0x54f746
leaq 0x218(%rsp), %rdi
movl $0x6f52, %esi           # imm = 0x6F52
callq 0x371f20
jmp 0x54f75a
leaq 0x577b2(%rip), %rsi     # 0x5a6f13
leaq 0x238(%rsp), %rdi
leaq 0x218(%rsp), %rdx
callq 0x29dd70
jmp 0x54f778
movq 0x30(%rsp), %rdx
leaq 0x318(%rsp), %rdi
movl $0x1, %esi
leaq 0x2f8(%rsp), %rcx
leaq 0x238(%rsp), %r8
callq 0x3741e0
jmp 0x54f7a1
movq 0x28(%rsp), %rdi
leaq 0x318(%rsp), %rsi
callq 0x371e40
jmp 0x54f7b5
leaq 0x318(%rsp), %rdi
callq 0x371330
leaq 0x238(%rsp), %rdi
callq 0x11b838
leaq 0x218(%rsp), %rdi
callq 0x11b838
leaq 0x2f8(%rsp), %rdi
callq 0x11b838
leaq 0x2d8(%rsp), %rdi
callq 0x11b838
leaq 0x2b8(%rsp), %rdi
callq 0x11b838
leaq 0x298(%rsp), %rdi
callq 0x11b838
leaq 0x278(%rsp), %rdi
callq 0x11b838
leaq 0x258(%rsp), %rdi
callq 0x11b838
jmp 0x54fd32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54f96a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54f95d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54f950
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54f943
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54f936
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54f929
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54f91c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54f90f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
leaq 0x318(%rsp), %rdi
callq 0x371330
leaq 0x238(%rsp), %rdi
callq 0x11b838
leaq 0x218(%rsp), %rdi
callq 0x11b838
leaq 0x2f8(%rsp), %rdi
callq 0x11b838
leaq 0x2d8(%rsp), %rdi
callq 0x11b838
leaq 0x2b8(%rsp), %rdi
callq 0x11b838
leaq 0x298(%rsp), %rdi
callq 0x11b838
leaq 0x278(%rsp), %rdi
callq 0x11b838
leaq 0x258(%rsp), %rdi
callq 0x11b838
jmp 0x54fd54
movq $0x0, 0x210(%rsp)
movq $0x1, 0x208(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0x410(%rsp), %rdi
callq 0x5530e0
movq %rax, %rcx
movq 0x20(%rsp), %rax
cmpq %rcx, %rax
jae 0x54fa25
movq 0x208(%rsp), %rsi
leaq 0x410(%rsp), %rdi
callq 0x553100
movq (%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x210(%rsp), %rsi
leaq 0x410(%rsp), %rdi
callq 0x553100
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq (%rcx), %rax
jbe 0x54fa0a
movq 0x208(%rsp), %rax
movq %rax, 0x210(%rsp)
jmp 0x54fa0c
movq 0x208(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x208(%rsp)
jmp 0x54f994
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rdi
movq %rdi, 0x8(%rsp)
callq 0x373e90
movq %rax, 0x10(%rsp)
jmp 0x54fa3f
movq 0x58(%rsp), %rdx
addq $0x10, %rdx
leaq 0x5b338(%rip), %rsi     # 0x5aad87
leaq 0xa0(%rsp), %rdi
callq 0x3784f0
jmp 0x54fa5e
leaq 0x5b356(%rip), %rdx     # 0x5aadbb
leaq 0xc0(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x29dc30
jmp 0x54fa7c
movq 0x58(%rsp), %rdi
addq $0x38, %rdi
movq 0x210(%rsp), %rsi
callq 0x553060
movq %rax, %rdx
addq $0x8, %rdx
leaq 0xe0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x378400
jmp 0x54fab0
leaq 0x5b2c2(%rip), %rdx     # 0x5aad79
leaq 0x100(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x29dc30
jmp 0x54face
movq 0x430(%rsp), %rdx
leaq 0x120(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x378400
jmp 0x54faed
leaq 0x59fbd(%rip), %rdx     # 0x5a9ab1
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x29dc30
jmp 0x54fb0b
leaq 0x60(%rsp), %rdi
movl $0x6f67, %esi           # imm = 0x6F67
callq 0x371f20
jmp 0x54fb1c
leaq 0x573f0(%rip), %rsi     # 0x5a6f13
leaq 0x80(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x29dd70
jmp 0x54fb37
movq 0x10(%rsp), %rdx
leaq 0x160(%rsp), %rdi
movl $0x1, %esi
leaq 0x140(%rsp), %rcx
leaq 0x80(%rsp), %r8
callq 0x3741e0
jmp 0x54fb60
movq 0x8(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x371e40
jmp 0x54fb74
leaq 0x160(%rsp), %rdi
callq 0x371330
leaq 0x80(%rsp), %rdi
callq 0x11b838
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0x140(%rsp), %rdi
callq 0x11b838
leaq 0x120(%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 0x54fd32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54fd23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54fd16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54fd09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54fcfc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54fcef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54fce2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54fcd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
jmp 0x54fccb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3e8(%rsp)
movl %eax, 0x3e4(%rsp)
leaq 0x160(%rsp), %rdi
callq 0x371330
leaq 0x80(%rsp), %rdi
callq 0x11b838
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0x140(%rsp), %rdi
callq 0x11b838
leaq 0x120(%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 0x54fd54
movb $0x0, 0x447(%rsp)
movl $0x1, 0x3e0(%rsp)
leaq 0x410(%rsp), %rdi
callq 0x553120
jmp 0x54fd63
leaq 0x410(%rsp), %rdi
callq 0x553120
jmp 0x54fd74
movb 0x447(%rsp), %al
andb $0x1, %al
addq $0x448, %rsp            # imm = 0x448
retq
movq 0x3e8(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)