// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::lexer::token_inserter::process(exprtk::lexer::generator&)
inline std::size_t process(generator& g) exprtk_override
         {
            if (g.token_list_.empty())
               return 0;
            else if (g.token_list_.size() < stride_)
               return 0;

            std::size_t changes = 0;

            typedef std::pair<std::size_t, token> insert_t;
            std::vector<insert_t> insert_list;
            insert_list.reserve(10000);

            for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i)
            {
               int insert_index = -1;
               token t;

               switch (stride_)
               {
                  case 1 : insert_index = insert(g.token_list_[i],t);
                           break;

                  case 2 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], t);
                           break;

                  case 3 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], t);
                           break;

                  case 4 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], t);
                           break;

                  case 5 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], g.token_list_[i + 4], t);
                           break;
               }

               if ((insert_index >= 0) && (insert_index <= (static_cast<int>(stride_) + 1)))
               {
                  insert_list.push_back(insert_t(i, t));
                  changes++;
               }
            }

            if (!insert_list.empty())
            {
               generator::token_list_t token_list;

               std::size_t insert_index = 0;

               for (std::size_t i = 0; i < g.token_list_.size(); ++i)
               {
                  token_list.push_back(g.token_list_[i]);

                  if (
                       (insert_index < insert_list.size()) &&
                       (insert_list[insert_index].first == i)
                     )
                  {
                     token_list.push_back(insert_list[insert_index].second);
                     insert_index++;
                  }
               }

               std::swap(g.token_list_,token_list);
            }

            return changes;
         }

// Assembly:
subq $0x198, %rsp            # imm = 0x198
movq %rdi, 0x188(%rsp)
movq %rsi, 0x180(%rsp)
movq 0x188(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x180(%rsp), %rdi
callq 0x254a30
testb $0x1, %al
jne 0x253eea
jmp 0x253efb
movq $0x0, 0x190(%rsp)
jmp 0x254584
movq 0x180(%rsp), %rdi
callq 0x254a80
movq 0xa8(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x253f27
movq $0x0, 0x190(%rsp)
jmp 0x254584
jmp 0x253f29
movq $0x0, 0x178(%rsp)
leaq 0x160(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x254aa0
movq 0xa0(%rsp), %rdi
movl $0x2710, %esi           # imm = 0x2710
callq 0x254ab0
jmp 0x253f5e
movq $0x0, 0x148(%rsp)
movq 0x148(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x180(%rsp), %rdi
callq 0x254a80
movq 0xa8(%rsp), %rdx
movq %rax, %rcx
movq 0x98(%rsp), %rax
subq 0x8(%rdx), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jae 0x2543dc
movl $0xffffffff, 0x144(%rsp) # imm = 0xFFFFFFFF
leaq 0x110(%rsp), %rdi
callq 0x251250
jmp 0x253fc5
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
decq %rax
movq %rax, 0x90(%rsp)
subq $0x4, %rax
ja 0x254300
movq 0x90(%rsp), %rax
leaq 0x3471ff(%rip), %rcx    # 0x59b1f4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x158(%rsp)
movl %eax, 0x154(%rsp)
jmp 0x254575
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
callq 0x254bc0
movq 0xa8(%rsp), %rdi
movq %rax, %rsi
movq (%rdi), %rax
movq 0x30(%rax), %rax
leaq 0x110(%rsp), %rdx
callq *%rax
movl %eax, 0x8c(%rsp)
jmp 0x254051
movl 0x8c(%rsp), %eax
movl %eax, 0x144(%rsp)
jmp 0x254300
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x158(%rsp)
movl %eax, 0x154(%rsp)
jmp 0x2543ca
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
callq 0x254bc0
movq %rax, 0x80(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x254bc0
movq 0xa8(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq %rax, %rdx
movq (%rdi), %rax
movq 0x38(%rax), %rax
leaq 0x110(%rsp), %rcx
callq *%rax
movl %eax, 0x88(%rsp)
jmp 0x2540df
movl 0x88(%rsp), %eax
movl %eax, 0x144(%rsp)
jmp 0x254300
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
callq 0x254bc0
movq %rax, 0x68(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x254bc0
movq %rax, 0x70(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
addq $0x2, %rsi
callq 0x254bc0
movq 0xa8(%rsp), %rdi
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq %rax, %rcx
movq (%rdi), %rax
movq 0x40(%rax), %rax
leaq 0x110(%rsp), %r8
callq *%rax
movl %eax, 0x7c(%rsp)
jmp 0x25416e
movl 0x7c(%rsp), %eax
movl %eax, 0x144(%rsp)
jmp 0x254300
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
callq 0x254bc0
movq %rax, 0x48(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x254bc0
movq %rax, 0x50(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
addq $0x2, %rsi
callq 0x254bc0
movq %rax, 0x58(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
addq $0x3, %rsi
callq 0x254bc0
movq 0xa8(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x58(%rsp), %rcx
movq %rax, %r8
movq (%rdi), %rax
movq 0x48(%rax), %rax
leaq 0x110(%rsp), %r9
callq *%rax
movl %eax, 0x64(%rsp)
jmp 0x25421d
movl 0x64(%rsp), %eax
movl %eax, 0x144(%rsp)
jmp 0x254300
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
callq 0x254bc0
movq %rax, 0x20(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x254bc0
movq %rax, 0x28(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
addq $0x2, %rsi
callq 0x254bc0
movq %rax, 0x30(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
addq $0x3, %rsi
callq 0x254bc0
movq %rax, 0x38(%rsp)
movq 0x180(%rsp), %rdi
movq 0x148(%rsp), %rsi
addq $0x4, %rsi
callq 0x254bc0
movq 0xa8(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x30(%rsp), %rcx
movq 0x38(%rsp), %r8
movq %rax, %r9
movq (%rdi), %rax
movq 0x50(%rax), %rax
movq %rsp, %r10
leaq 0x110(%rsp), %r11
movq %r11, (%r10)
callq *%rax
movl %eax, 0x44(%rsp)
jmp 0x2542f5
movl 0x44(%rsp), %eax
movl %eax, 0x144(%rsp)
cmpl $0x0, 0x144(%rsp)
jl 0x2543a4
movq 0xa8(%rsp), %rcx
movl 0x144(%rsp), %eax
movq 0x8(%rcx), %rcx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0x2543a4
leaq 0xd8(%rsp), %rdi
leaq 0x148(%rsp), %rsi
leaq 0x110(%rsp), %rdx
callq 0x254c10
jmp 0x254347
leaq 0x160(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x254be0
jmp 0x25435e
leaq 0xd8(%rsp), %rdi
callq 0x254c50
movq 0x178(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x178(%rsp)
jmp 0x2543a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x158(%rsp)
movl %eax, 0x154(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x254c50
jmp 0x2543ca
leaq 0x110(%rsp), %rdi
callq 0x2512e0
movq 0x148(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x148(%rsp)
jmp 0x253f6a
leaq 0x110(%rsp), %rdi
callq 0x2512e0
jmp 0x254575
leaq 0x160(%rsp), %rdi
callq 0x254c70
testb $0x1, %al
jne 0x254556
leaq 0xc0(%rsp), %rdi
callq 0x251330
movq $0x0, 0xb8(%rsp)
movq $0x0, 0xb0(%rsp)
movq 0xb0(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x180(%rsp), %rdi
callq 0x254a80
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jae 0x254534
movq 0x180(%rsp), %rdi
movq 0xb0(%rsp), %rsi
callq 0x254bc0
movq %rax, %rsi
leaq 0xc0(%rsp), %rdi
callq 0x254cc0
jmp 0x254468
movq 0xb8(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x160(%rsp), %rdi
callq 0x254d30
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jae 0x254519
movq 0xb8(%rsp), %rsi
leaq 0x160(%rsp), %rdi
callq 0x254d50
movq (%rax), %rax
cmpq 0xb0(%rsp), %rax
jne 0x254519
movq 0xb8(%rsp), %rsi
leaq 0x160(%rsp), %rdi
callq 0x254d50
movq %rax, %rsi
addq $0x8, %rsi
leaq 0xc0(%rsp), %rdi
callq 0x254cc0
jmp 0x2544e0
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0x254519
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x158(%rsp)
movl %eax, 0x154(%rsp)
leaq 0xc0(%rsp), %rdi
callq 0x2513d0
jmp 0x254575
jmp 0x25451b
movq 0xb0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb0(%rsp)
jmp 0x254416
movq 0x180(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x254d70
leaq 0xc0(%rsp), %rdi
callq 0x2513d0
movq 0x178(%rsp), %rax
movq %rax, 0x190(%rsp)
leaq 0x160(%rsp), %rdi
callq 0x254da0
jmp 0x254584
leaq 0x160(%rsp), %rdi
callq 0x254da0
jmp 0x254594
movq 0x190(%rsp), %rax
addq $0x198, %rsp            # imm = 0x198
retq
movq 0x158(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)