// File: /workspace/github_cpp_makefile_star2_O1/cjxgm[P]libgpp/src/libgpp.cpp
// Function: (anonymous namespace)::do_arithm_eval(char*, int, int, int*)
int do_arithm_eval(char *buf, int pos1, int pos2, int *result) {
        int spl1, spl2, result1, result2, l;
        char c, *p;

        while ((pos1 < pos2) && is_white(buf[pos1]))
            pos1++;
        while ((pos1 < pos2) && is_white(buf[pos2 - 1]))
            pos2--;
        if (pos1 == pos2)
            return 0;

        // look for C operators starting with lowest precedence

        if (splice_infix(buf, pos1, pos2, "||", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2))
                return 0;
            *result = result1 || result2;
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "&&", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2))
                return 0;
            *result = result1 && result2;
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "|", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2))
                return 0;
            *result = result1 | result2;
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "^", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2))
                return 0;
            *result = result1 ^ result2;
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "&", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2))
                return 0;
            *result = result1 & result2;
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "!=", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2)) {
                // revert to string comparison
                while ((pos1 < spl1) && is_white(buf[spl1 - 1]))
                    spl1--;
                while ((pos2 > spl2) && is_white(buf[spl2]))
                    spl2++;
                if (spl1 - pos1 != pos2 - spl2)
                    *result = 1;
                else
                    *result = (strncmp(buf + pos1, buf + spl2, spl1 - pos1) != 0);
            } else
                *result = (result1 != result2);
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "==", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2)) {
                // revert to string comparison
                while ((pos1 < spl1) && is_white(buf[spl1 - 1]))
                    spl1--;
                while ((pos2 > spl2) && is_white(buf[spl2]))
                    spl2++;
                if (spl1 - pos1 != pos2 - spl2)
                    *result = 0;
                else
                    *result = (strncmp(buf + pos1, buf + spl2, spl1 - pos1) == 0);
            } else
                *result = (result1 == result2);
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "=~", &spl1, &spl2)) {
            bug("globbing not allowed");
        }

        if (splice_infix(buf, pos1, pos2, ">=", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2)) {
                // revert to string comparison
                while ((pos1 < spl1) && is_white(buf[spl1 - 1]))
                    spl1--;
                while ((pos2 > spl2) && is_white(buf[spl2]))
                    spl2++;
                l = spl1 - pos1;
                if (l > pos2 - spl2)
                    l = pos2 - spl2;
                result1 = strncmp(buf + pos1, buf + spl2, l);
                *result = (result1 > 0)
                        || ((result1 == 0) && (spl1 - pos1 >= pos2 - spl2));
            } else
                *result = (result1 >= result2);
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, ">", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2)) {
                // revert to string comparison
                while ((pos1 < spl1) && is_white(buf[spl1 - 1]))
                    spl1--;
                while ((pos2 > spl2) && is_white(buf[spl2]))
                    spl2++;
                l = spl1 - pos1;
                if (l > pos2 - spl2)
                    l = pos2 - spl2;
                result1 = strncmp(buf + pos1, buf + spl2, l);
                *result = (result1 > 0)
                        || ((result1 == 0) && (spl1 - pos1 > pos2 - spl2));
            } else
                *result = (result1 > result2);
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "<=", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2)) {
                // revert to string comparison
                while ((pos1 < spl1) && is_white(buf[spl1 - 1]))
                    spl1--;
                while ((pos2 > spl2) && is_white(buf[spl2]))
                    spl2++;
                l = spl1 - pos1;
                if (l > pos2 - spl2)
                    l = pos2 - spl2;
                result1 = strncmp(buf + pos1, buf + spl2, l);
                *result = (result1 < 0)
                        || ((result1 == 0) && (spl1 - pos1 <= pos2 - spl2));
            } else
                *result = (result1 <= result2);
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "<", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2)) {
                // revert to string comparison
                while ((pos1 < spl1) && is_white(buf[spl1 - 1]))
                    spl1--;
                while ((pos2 > spl2) && is_white(buf[spl2]))
                    spl2++;
                l = spl1 - pos1;
                if (l > pos2 - spl2)
                    l = pos2 - spl2;
                result1 = strncmp(buf + pos1, buf + spl2, l);
                *result = (result1 < 0)
                        || ((result1 == 0) && (spl1 - pos1 < pos2 - spl2));
            } else
                *result = (result1 < result2);
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "+", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2))
                return 0;
            *result = result1 + result2;
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "-", &spl1, &spl2))
            if (spl1 != pos1) {
                if (!do_arithm_eval(buf, pos1, spl1, &result1)
                        || !do_arithm_eval(buf, spl2, pos2, &result2))
                    return 0;
                *result = result1 - result2;
                return 1;
            }

        if (splice_infix(buf, pos1, pos2, "*", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2))
                return 0;
            *result = result1 * result2;
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "/", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2))
                return 0;
            if (result2 == 0)
                bug("division by zero in expression");
            *result = result1 / result2;
            return 1;
        }

        if (splice_infix(buf, pos1, pos2, "%", &spl1, &spl2)) {
            if (!do_arithm_eval(buf, pos1, spl1, &result1)
                    || !do_arithm_eval(buf, spl2, pos2, &result2))
                return 0;
            if (result2 == 0)
                bug("division by zero in expression");
            *result = result1 % result2;
            return 1;
        }

        if (buf[pos1] == '~') {
            if (!do_arithm_eval(buf, pos1 + 1, pos2, &result1))
                return 0;
            *result = ~result1;
            return 1;
        }

        if (buf[pos1] == '!') {
            if (!do_arithm_eval(buf, pos1 + 1, pos2, &result1))
                return 0;
            *result = !result1;
            return 1;
        }

        if (buf[pos1] == '-') {
            if (!do_arithm_eval(buf, pos1 + 1, pos2, &result1))
                return 0;
            *result = -result1;
            return 1;
        }

        // add the length() builtin to measure the length of the macro expansion
        if (strncmp(buf + pos1, "length(", strlen("length(")) == 0) {
            if (buf[pos2 - 1] != ')')
                return 0;
            *result = pos2 - pos1 - strlen("length()");
            return 1;
        }

        if (buf[pos1] == '(') {
            if (buf[pos2 - 1] != ')')
                return 0;
            return do_arithm_eval(buf, pos1 + 1, pos2 - 1, result);
        }

        c = buf[pos2];
        buf[pos2] = 0;
        *result = (int) strtol(buf + pos1, &p, 0);
        buf[pos2] = c;
        return (p == buf + pos2);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rcx, %rbx
movl %edx, %r14d
movl %esi, %ebp
movq %rdi, %r15
cmpl %edx, %esi
jge 0x7008
movslq %ebp, %rax
addq %r15, %rax
movabsq $0x100000600, %rcx      # imm = 0x100000600
movzbl (%rax), %edx
cmpq $0x20, %rdx
ja 0x7008
btq %rdx, %rcx
jae 0x7008
incl %ebp
incq %rax
cmpl %ebp, %r14d
jne 0x6fec
movl %r14d, %ebp
cmpl %r14d, %ebp
jge 0x703a
movslq %r14d, %r14
movslq %ebp, %rax
movabsq $0x100000600, %rcx      # imm = 0x100000600
movzbl -0x1(%r15,%r14), %edx
cmpq $0x20, %rdx
ja 0x703a
btq %rdx, %rcx
jae 0x703a
decq %r14
cmpq %rax, %r14
jg 0x701d
movl %ebp, %r14d
xorl %r12d, %r12d
movl %r14d, %r13d
subl %ebp, %r13d
je 0x724f
leaq 0x1b9d(%rip), %rcx      # 0x8bed
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x70b6
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0xc(%rsp), %eax
xorl %ecx, %ecx
orl 0x10(%rsp), %eax
setne %cl
movl %ecx, (%rbx)
jmp 0x7249
leaq 0x1b33(%rip), %rcx      # 0x8bf0
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x7129
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
cmpl $0x0, 0x10(%rsp)
setne %al
cmpl $0x0, 0xc(%rsp)
setne %cl
andb %al, %cl
movzbl %cl, %eax
jmp 0x7247
leaq 0x1413(%rip), %rcx      # 0x8543
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x718f
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0xc(%rsp), %eax
orl 0x10(%rsp), %eax
jmp 0x7247
leaq 0x1a5d(%rip), %rcx      # 0x8bf3
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x71ee
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0xc(%rsp), %eax
xorl 0x10(%rsp), %eax
jmp 0x7247
leaq 0x19fc(%rip), %rcx      # 0x8bf1
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x7261
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0xc(%rsp), %eax
andl 0x10(%rsp), %eax
movl %eax, (%rbx)
movl $0x1, %r12d
movl %r12d, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x198d(%rip), %rcx      # 0x8bf5
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x7360
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x72c5
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x72c5
movl 0x10(%rsp), %eax
xorl %ecx, %ecx
cmpl 0xc(%rsp), %eax
jmp 0x70ac
movl 0x8(%rsp), %eax
cmpl %eax, %ebp
jge 0x72f8
cltq
movslq %ebp, %rcx
movabsq $0x100000600, %rdx      # imm = 0x100000600
movzbl -0x1(%r15,%rax), %esi
cmpq $0x20, %rsi
ja 0x72f8
btq %rsi, %rdx
jae 0x72f8
decq %rax
cmpq %rcx, %rax
jg 0x72dc
movl %ebp, %eax
movl %eax, 0x8(%rsp)
movl 0x4(%rsp), %ecx
cmpl %ecx, %r14d
jle 0x7331
movslq %ecx, %rdx
addq %r15, %rdx
movabsq $0x100000600, %rsi      # imm = 0x100000600
movzbl (%rdx), %edi
cmpq $0x20, %rdi
ja 0x7331
btq %rdi, %rsi
jae 0x7331
incl %ecx
incq %rdx
cmpl %ecx, %r14d
jne 0x7315
movl %r14d, %ecx
movl %ecx, 0x4(%rsp)
subl %ebp, %eax
subl %ecx, %r14d
cmpl %r14d, %eax
jne 0x73c4
movslq %ebp, %rdi
addq %r15, %rdi
movslq %ecx, %rsi
addq %r15, %rsi
movslq %eax, %rdx
callq 0x2080
xorl %ecx, %ecx
testl %eax, %eax
jmp 0x70ac
leaq 0x1891(%rip), %rcx      # 0x8bf8
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x746d
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x73cf
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x73cf
movl 0x10(%rsp), %eax
xorl %ecx, %ecx
cmpl 0xc(%rsp), %eax
jmp 0x7465
movl $0x1, (%rbx)
jmp 0x7249
movl 0x8(%rsp), %eax
cmpl %eax, %ebp
jge 0x7402
cltq
movslq %ebp, %rcx
movabsq $0x100000600, %rdx      # imm = 0x100000600
movzbl -0x1(%r15,%rax), %esi
cmpq $0x20, %rsi
ja 0x7402
btq %rsi, %rdx
jae 0x7402
decq %rax
cmpq %rcx, %rax
jg 0x73e6
movl %ebp, %eax
movl %eax, 0x8(%rsp)
movl 0x4(%rsp), %ecx
cmpl %ecx, %r14d
jle 0x743b
movslq %ecx, %rdx
addq %r15, %rdx
movabsq $0x100000600, %rsi      # imm = 0x100000600
movzbl (%rdx), %edi
cmpq $0x20, %rdi
ja 0x743b
btq %rdi, %rsi
jae 0x743b
incl %ecx
incq %rdx
cmpl %ecx, %r14d
jne 0x741f
movl %r14d, %ecx
movl %ecx, 0x4(%rsp)
subl %ebp, %eax
subl %ecx, %r14d
cmpl %r14d, %eax
jne 0x74f8
movslq %ebp, %rdi
addq %r15, %rdi
movslq %ecx, %rsi
addq %r15, %rsi
movslq %eax, %rdx
callq 0x2080
xorl %ecx, %ecx
testl %eax, %eax
sete %cl
jmp 0x70af
leaq 0x1787(%rip), %rcx      # 0x8bfb
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
jne 0x7c6b
leaq 0x1779(%rip), %rcx      # 0x8c13
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x75b8
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x7503
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x7503
movl 0x10(%rsp), %eax
cmpl 0xc(%rsp), %eax
setge %cl
jmp 0x7121
movl $0x0, (%rbx)
jmp 0x7249
movl 0x8(%rsp), %r12d
cmpl %r12d, %ebp
jge 0x753a
movslq %r12d, %r12
movslq %ebp, %rax
movabsq $0x100000600, %rcx      # imm = 0x100000600
movzbl -0x1(%r15,%r12), %edx
cmpq $0x20, %rdx
ja 0x753a
btq %rdx, %rcx
jae 0x753a
decq %r12
cmpq %rax, %r12
jg 0x751d
movl %ebp, %r12d
movl %r12d, 0x8(%rsp)
movl 0x4(%rsp), %eax
cmpl %eax, %r14d
jle 0x7574
movslq %eax, %rcx
addq %r15, %rcx
movabsq $0x100000600, %rdx      # imm = 0x100000600
movzbl (%rcx), %esi
cmpq $0x20, %rsi
ja 0x7574
btq %rsi, %rdx
jae 0x7574
incl %eax
incq %rcx
cmpl %eax, %r14d
jne 0x7558
movl %r14d, %eax
movl %eax, 0x4(%rsp)
subl %ebp, %r12d
subl %eax, %r14d
cmpl %r14d, %r12d
movl %r14d, %ecx
cmovll %r12d, %ecx
movslq %ebp, %rdi
addq %r15, %rdi
movslq %eax, %rsi
addq %r15, %rsi
movslq %ecx, %rdx
callq 0x2080
movl %eax, 0x10(%rsp)
movb $0x1, %cl
testl %eax, %eax
jg 0x7121
sete %al
cmpl %r14d, %r12d
setge %cl
jmp 0x711f
leaq 0x1657(%rip), %rcx      # 0x8c16
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x76d6
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x761d
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x761d
movl 0x10(%rsp), %eax
cmpl 0xc(%rsp), %eax
setg %cl
jmp 0x7121
movl 0x8(%rsp), %r12d
cmpl %r12d, %ebp
jge 0x7654
movslq %r12d, %r12
movslq %ebp, %rax
movabsq $0x100000600, %rcx      # imm = 0x100000600
movzbl -0x1(%r15,%r12), %edx
cmpq $0x20, %rdx
ja 0x7654
btq %rdx, %rcx
jae 0x7654
decq %r12
cmpq %rax, %r12
jg 0x7637
movl %ebp, %r12d
movl %r12d, 0x8(%rsp)
movl 0x4(%rsp), %eax
cmpl %eax, %r14d
jle 0x768e
movslq %eax, %rcx
addq %r15, %rcx
movabsq $0x100000600, %rdx      # imm = 0x100000600
movzbl (%rcx), %esi
cmpq $0x20, %rsi
ja 0x768e
btq %rsi, %rdx
jae 0x768e
incl %eax
incq %rcx
cmpl %eax, %r14d
jne 0x7672
movl %r14d, %eax
movl %eax, 0x4(%rsp)
subl %ebp, %r12d
subl %eax, %r14d
cmpl %r14d, %r12d
movl %r14d, %ecx
cmovll %r12d, %ecx
movslq %ebp, %rdi
addq %r15, %rdi
movslq %eax, %rsi
addq %r15, %rsi
movslq %ecx, %rdx
callq 0x2080
movl %eax, 0x10(%rsp)
movb $0x1, %cl
testl %eax, %eax
jg 0x7121
cmpl %r14d, %r12d
setg %dl
testl %eax, %eax
sete %cl
andb %dl, %cl
jmp 0x7121
leaq 0x153b(%rip), %rcx      # 0x8c18
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x77f0
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x773b
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x773b
movl 0x10(%rsp), %eax
cmpl 0xc(%rsp), %eax
setle %cl
jmp 0x7121
movl 0x8(%rsp), %r12d
cmpl %r12d, %ebp
jge 0x7772
movslq %r12d, %r12
movslq %ebp, %rax
movabsq $0x100000600, %rcx      # imm = 0x100000600
movzbl -0x1(%r15,%r12), %edx
cmpq $0x20, %rdx
ja 0x7772
btq %rdx, %rcx
jae 0x7772
decq %r12
cmpq %rax, %r12
jg 0x7755
movl %ebp, %r12d
movl %r12d, 0x8(%rsp)
movl 0x4(%rsp), %eax
cmpl %eax, %r14d
jle 0x77ac
movslq %eax, %rcx
addq %r15, %rcx
movabsq $0x100000600, %rdx      # imm = 0x100000600
movzbl (%rcx), %esi
cmpq $0x20, %rsi
ja 0x77ac
btq %rsi, %rdx
jae 0x77ac
incl %eax
incq %rcx
cmpl %eax, %r14d
jne 0x7790
movl %r14d, %eax
movl %eax, 0x4(%rsp)
subl %ebp, %r12d
subl %eax, %r14d
cmpl %r14d, %r12d
movl %r14d, %ecx
cmovll %r12d, %ecx
movslq %ebp, %rdi
addq %r15, %rdi
movslq %eax, %rsi
addq %r15, %rsi
movslq %ecx, %rdx
callq 0x2080
movl %eax, 0x10(%rsp)
movb $0x1, %cl
testl %eax, %eax
js 0x7121
sete %al
cmpl %r14d, %r12d
setle %cl
jmp 0x711f
leaq 0x1424(%rip), %rcx      # 0x8c1b
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x790a
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x7855
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x7855
movl 0x10(%rsp), %eax
cmpl 0xc(%rsp), %eax
setl %cl
jmp 0x7121
movl 0x8(%rsp), %r12d
cmpl %r12d, %ebp
jge 0x788c
movslq %r12d, %r12
movslq %ebp, %rax
movabsq $0x100000600, %rcx      # imm = 0x100000600
movzbl -0x1(%r15,%r12), %edx
cmpq $0x20, %rdx
ja 0x788c
btq %rdx, %rcx
jae 0x788c
decq %r12
cmpq %rax, %r12
jg 0x786f
movl %ebp, %r12d
movl %r12d, 0x8(%rsp)
movl 0x4(%rsp), %eax
cmpl %eax, %r14d
jle 0x78c6
movslq %eax, %rcx
addq %r15, %rcx
movabsq $0x100000600, %rdx      # imm = 0x100000600
movzbl (%rcx), %esi
cmpq $0x20, %rsi
ja 0x78c6
btq %rsi, %rdx
jae 0x78c6
incl %eax
incq %rcx
cmpl %eax, %r14d
jne 0x78aa
movl %r14d, %eax
movl %eax, 0x4(%rsp)
subl %ebp, %r12d
subl %eax, %r14d
cmpl %r14d, %r12d
movl %r14d, %ecx
cmovll %r12d, %ecx
movslq %ebp, %rdi
addq %r15, %rdi
movslq %eax, %rsi
addq %r15, %rsi
movslq %ecx, %rdx
callq 0x2080
movl %eax, 0x10(%rsp)
movb $0x1, %cl
testl %eax, %eax
js 0x7121
sete %al
cmpl %r14d, %r12d
setl %cl
jmp 0x711f
leaq 0x130c(%rip), %rcx      # 0x8c1d
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x7970
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0xc(%rsp), %eax
addl 0x10(%rsp), %eax
jmp 0x7247
leaq 0x12a8(%rip), %rcx      # 0x8c1f
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x799a
movl 0x8(%rsp), %edx
cmpl %ebp, %edx
jne 0x7a05
leaq 0xbb4(%rip), %rcx       # 0x8555
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x7a45
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0xc(%rsp), %eax
imull 0x10(%rsp), %eax
jmp 0x7247
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x10(%rsp), %eax
subl 0xc(%rsp), %eax
jmp 0x7247
leaq 0xb0c(%rip), %rcx       # 0x8558
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x7ab6
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0xc(%rsp), %ecx
testl %ecx, %ecx
je 0x7c77
movl 0x10(%rsp), %eax
cltd
idivl %ecx
jmp 0x7247
leaq 0x1183(%rip), %rcx      # 0x8c40
leaq 0x8(%rsp), %r8
leaq 0x4(%rsp), %r9
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x7c83
testl %eax, %eax
je 0x7b29
movl 0x8(%rsp), %edx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x4(%rsp), %esi
leaq 0xc(%rsp), %rcx
movq %r15, %rdi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0xc(%rsp), %ecx
testl %ecx, %ecx
je 0x7c77
movl 0x10(%rsp), %eax
cltd
idivl %ecx
movl %edx, (%rbx)
jmp 0x7249
movslq %ebp, %rax
movq %rax, %rdi
movzbl (%r15,%rax), %eax
movl %eax, 0x1c(%rsp)
cmpl $0x21, %eax
je 0x7b72
cmpl $0x2d, 0x1c(%rsp)
je 0x7b9d
cmpl $0x7e, 0x1c(%rsp)
jne 0x7bc4
incl %ebp
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
movl 0x10(%rsp), %eax
notl %eax
jmp 0x7247
incl %ebp
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
xorl %eax, %eax
cmpl $0x0, 0x10(%rsp)
sete %al
jmp 0x7247
incl %ebp
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0x6fbf
testl %eax, %eax
je 0x724f
xorl %eax, %eax
subl 0x10(%rsp), %eax
jmp 0x7247
addq %r15, %rdi
leaq 0x1074(%rip), %rsi      # 0x8c42
movl $0x7, %edx
movq %rdi, 0x20(%rsp)
callq 0x2080
testl %eax, %eax
je 0x7c17
cmpb $0x28, 0x1c(%rsp)
jne 0x7c32
movslq %r14d, %rdx
cmpb $0x29, -0x1(%r15,%rdx)
jne 0x724f
decq %rdx
incl %ebp
movq %r15, %rdi
movl %ebp, %esi
movq %rbx, %rcx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x6fbf
movslq %r14d, %rax
cmpb $0x29, -0x1(%r15,%rax)
jne 0x724f
addl $-0x8, %r13d
movl %r13d, (%rbx)
jmp 0x7249
movslq %r14d, %r12
leaq (%r15,%r12), %r13
movb (%r15,%r12), %bpl
movb $0x0, (%r15,%r12)
leaq 0x10(%rsp), %r14
movq 0x20(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x21c0
movl %eax, (%rbx)
movb %bpl, (%r15,%r12)
xorl %r12d, %r12d
cmpq %r13, (%r14)
sete %r12b
jmp 0x724f
leaq 0xf8c(%rip), %rdi       # 0x8bfe
callq 0x2fc4
leaq 0xfa3(%rip), %rdi       # 0x8c21
callq 0x2fc4