// File: 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
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x18(%rbp), %ecx
movb %al, -0x41(%rbp)
jge 0x947d
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
testb $0x1, %al
jne 0x9486
jmp 0x9491
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x9456
jmp 0x9493
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x18(%rbp), %ecx
movb %al, -0x42(%rbp)
jge 0x94bf
movq -0x10(%rbp), %rax
movl -0x18(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x42(%rbp)
movb -0x42(%rbp), %al
testb $0x1, %al
jne 0x94c8
jmp 0x94d3
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x9493
movl -0x14(%rbp), %eax
cmpl -0x18(%rbp), %eax
jne 0x94e7
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x27fe(%rip), %rcx      # 0xbcf6
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x9575
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x953a
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x9546
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movb $0x1, %al
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x43(%rbp)
jne 0x955b
cmpl $0x0, -0x30(%rbp)
setne %al
movb %al, -0x43(%rbp)
movb -0x43(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x2773(%rip), %rcx      # 0xbcf9
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x9603
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x95c8
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x95d4
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
xorl %eax, %eax
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x44(%rbp)
je 0x95e9
cmpl $0x0, -0x30(%rbp)
setne %al
movb %al, -0x44(%rbp)
movb -0x44(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x1feb(%rip), %rcx      # 0xb5ff
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x967a
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x9656
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x9662
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movl -0x2c(%rbp), %ecx
orl -0x30(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x2671(%rip), %rcx      # 0xbcfc
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x96f1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x96cd
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x96d9
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movl -0x2c(%rbp), %ecx
xorl -0x30(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x25f8(%rip), %rcx      # 0xbcfa
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x9768
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x9744
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x9750
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movl -0x2c(%rbp), %ecx
andl -0x30(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x2585(%rip), %rcx      # 0xbcfe
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x98b5
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x97c3
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x9895
jmp 0x97c5
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x24(%rbp), %ecx
movb %al, -0x45(%rbp)
jge 0x97f1
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x45(%rbp)
movb -0x45(%rbp), %al
testb $0x1, %al
jne 0x97fa
jmp 0x9805
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x97c5
jmp 0x9807
movl -0x18(%rbp), %ecx
xorl %eax, %eax
cmpl -0x28(%rbp), %ecx
movb %al, -0x46(%rbp)
jle 0x982e
movq -0x10(%rbp), %rax
movslq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x46(%rbp)
movb -0x46(%rbp), %al
testb $0x1, %al
jne 0x9837
jmp 0x9842
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x9807
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
je 0x985e
movq -0x20(%rbp), %rax
movl $0x1, (%rax)
jmp 0x9893
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movslq -0x28(%rbp), %rax
addq %rax, %rsi
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movslq %eax, %rdx
callq 0x2080
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
jmp 0x98a9
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setne %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x243b(%rip), %rcx      # 0xbd01
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x9a02
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x9910
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x99e2
jmp 0x9912
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x24(%rbp), %ecx
movb %al, -0x47(%rbp)
jge 0x993e
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x47(%rbp)
movb -0x47(%rbp), %al
testb $0x1, %al
jne 0x9947
jmp 0x9952
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x9912
jmp 0x9954
movl -0x18(%rbp), %ecx
xorl %eax, %eax
cmpl -0x28(%rbp), %ecx
movb %al, -0x48(%rbp)
jle 0x997b
movq -0x10(%rbp), %rax
movslq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x48(%rbp)
movb -0x48(%rbp), %al
testb $0x1, %al
jne 0x9984
jmp 0x998f
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x9954
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
je 0x99ab
movq -0x20(%rbp), %rax
movl $0x0, (%rax)
jmp 0x99e0
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movslq -0x28(%rbp), %rax
addq %rax, %rsi
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movslq %eax, %rdx
callq 0x2080
cmpl $0x0, %eax
sete %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
jmp 0x99f6
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
sete %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x22f1(%rip), %rcx      # 0xbd04
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x9a31
leaq 0x22db(%rip), %rdi      # 0xbd07
callq 0x35e0
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x22da(%rip), %rcx      # 0xbd1c
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x9bac
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x9a8c
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x9b8c
jmp 0x9a8e
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x24(%rbp), %ecx
movb %al, -0x49(%rbp)
jge 0x9aba
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
testb $0x1, %al
jne 0x9ac3
jmp 0x9ace
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x9a8e
jmp 0x9ad0
movl -0x18(%rbp), %ecx
xorl %eax, %eax
cmpl -0x28(%rbp), %ecx
movb %al, -0x4a(%rbp)
jle 0x9af7
movq -0x10(%rbp), %rax
movslq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x4a(%rbp)
movb -0x4a(%rbp), %al
testb $0x1, %al
jne 0x9b00
jmp 0x9b0b
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x9ad0
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
jle 0x9b2a
movl -0x18(%rbp), %eax
subl -0x28(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movslq -0x28(%rbp), %rax
addq %rax, %rsi
movslq -0x34(%rbp), %rdx
callq 0x2080
movl %eax, -0x2c(%rbp)
movb $0x1, %al
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x4b(%rbp)
jg 0x9b7c
xorl %eax, %eax
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x4c(%rbp)
jne 0x9b76
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
setge %al
movb %al, -0x4c(%rbp)
movb -0x4c(%rbp), %al
movb %al, -0x4b(%rbp)
movb -0x4b(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
jmp 0x9ba0
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setge %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x2162(%rip), %rcx      # 0xbd1f
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x9d27
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x9c07
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x9d07
jmp 0x9c09
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x24(%rbp), %ecx
movb %al, -0x4d(%rbp)
jge 0x9c35
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x4d(%rbp)
movb -0x4d(%rbp), %al
testb $0x1, %al
jne 0x9c3e
jmp 0x9c49
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x9c09
jmp 0x9c4b
movl -0x18(%rbp), %ecx
xorl %eax, %eax
cmpl -0x28(%rbp), %ecx
movb %al, -0x4e(%rbp)
jle 0x9c72
movq -0x10(%rbp), %rax
movslq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x4e(%rbp)
movb -0x4e(%rbp), %al
testb $0x1, %al
jne 0x9c7b
jmp 0x9c86
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x9c4b
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
jle 0x9ca5
movl -0x18(%rbp), %eax
subl -0x28(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movslq -0x28(%rbp), %rax
addq %rax, %rsi
movslq -0x34(%rbp), %rdx
callq 0x2080
movl %eax, -0x2c(%rbp)
movb $0x1, %al
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x4f(%rbp)
jg 0x9cf7
xorl %eax, %eax
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x50(%rbp)
jne 0x9cf1
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
setg %al
movb %al, -0x50(%rbp)
movb -0x50(%rbp), %al
movb %al, -0x4f(%rbp)
movb -0x4f(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
jmp 0x9d1b
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setg %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x1fe9(%rip), %rcx      # 0xbd21
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0x9ea2
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x9d82
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x9e82
jmp 0x9d84
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x24(%rbp), %ecx
movb %al, -0x51(%rbp)
jge 0x9db0
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x51(%rbp)
movb -0x51(%rbp), %al
testb $0x1, %al
jne 0x9db9
jmp 0x9dc4
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x9d84
jmp 0x9dc6
movl -0x18(%rbp), %ecx
xorl %eax, %eax
cmpl -0x28(%rbp), %ecx
movb %al, -0x52(%rbp)
jle 0x9ded
movq -0x10(%rbp), %rax
movslq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x52(%rbp)
movb -0x52(%rbp), %al
testb $0x1, %al
jne 0x9df6
jmp 0x9e01
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x9dc6
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
jle 0x9e20
movl -0x18(%rbp), %eax
subl -0x28(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movslq -0x28(%rbp), %rax
addq %rax, %rsi
movslq -0x34(%rbp), %rdx
callq 0x2080
movl %eax, -0x2c(%rbp)
movb $0x1, %al
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x53(%rbp)
jl 0x9e72
xorl %eax, %eax
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x54(%rbp)
jne 0x9e6c
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
setle %al
movb %al, -0x54(%rbp)
movb -0x54(%rbp), %al
movb %al, -0x53(%rbp)
movb -0x53(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
jmp 0x9e96
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setle %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x1e71(%rip), %rcx      # 0xbd24
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0xa01d
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0x9efd
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0x9ffd
jmp 0x9eff
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x24(%rbp), %ecx
movb %al, -0x55(%rbp)
jge 0x9f2b
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x55(%rbp)
movb -0x55(%rbp), %al
testb $0x1, %al
jne 0x9f34
jmp 0x9f3f
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x9eff
jmp 0x9f41
movl -0x18(%rbp), %ecx
xorl %eax, %eax
cmpl -0x28(%rbp), %ecx
movb %al, -0x56(%rbp)
jle 0x9f68
movq -0x10(%rbp), %rax
movslq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x9370
cmpl $0x0, %eax
setne %al
movb %al, -0x56(%rbp)
movb -0x56(%rbp), %al
testb $0x1, %al
jne 0x9f71
jmp 0x9f7c
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x9f41
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
jle 0x9f9b
movl -0x18(%rbp), %eax
subl -0x28(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movslq -0x28(%rbp), %rax
addq %rax, %rsi
movslq -0x34(%rbp), %rdx
callq 0x2080
movl %eax, -0x2c(%rbp)
movb $0x1, %al
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x57(%rbp)
jl 0x9fed
xorl %eax, %eax
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x58(%rbp)
jne 0x9fe7
movl -0x24(%rbp), %eax
subl -0x14(%rbp), %eax
movl -0x18(%rbp), %ecx
subl -0x28(%rbp), %ecx
cmpl %ecx, %eax
setl %al
movb %al, -0x58(%rbp)
movb -0x58(%rbp), %al
movb %al, -0x57(%rbp)
movb -0x57(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
jmp 0xa011
movl -0x2c(%rbp), %eax
cmpl -0x30(%rbp), %eax
setl %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x1cf8(%rip), %rcx      # 0xbd26
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0xa094
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0xa070
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0xa07c
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movl -0x2c(%rbp), %ecx
addl -0x30(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x1c83(%rip), %rcx      # 0xbd28
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0xa115
movl -0x24(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0xa113
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0xa0ef
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0xa0fb
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movl -0x2c(%rbp), %ecx
subl -0x30(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
jmp 0xa115
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x14eb(%rip), %rcx      # 0xb611
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0xa18d
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0xa168
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0xa174
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movl -0x2c(%rbp), %ecx
imull -0x30(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x1476(%rip), %rcx      # 0xb614
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0xa219
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0xa1e0
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0xa1ec
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
cmpl $0x0, -0x30(%rbp)
jne 0xa1fe
leaq 0x1b31(%rip), %rdi      # 0xbd2a
callq 0x35e0
movl -0x2c(%rbp), %eax
cltd
idivl -0x30(%rbp)
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq 0x1b1f(%rip), %rcx      # 0xbd49
leaq -0x24(%rbp), %r8
leaq -0x28(%rbp), %r9
callq 0xa4c0
cmpl $0x0, %eax
je 0xa2a3
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
je 0xa26c
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0xa278
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
cmpl $0x0, -0x30(%rbp)
jne 0xa28a
leaq 0x1aa5(%rip), %rdi      # 0xbd2a
callq 0x35e0
movl -0x2c(%rbp), %eax
cltd
idivl -0x30(%rbp)
movq -0x20(%rbp), %rax
movl %edx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x7e, %eax
jne 0xa2f3
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
addl $0x1, %esi
movl -0x18(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0xa2db
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movl -0x2c(%rbp), %ecx
xorl $-0x1, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x21, %eax
jne 0xa34b
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
addl $0x1, %esi
movl -0x18(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0xa32b
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
cmpl $0x0, -0x2c(%rbp)
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2d, %eax
jne 0xa39a
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
addl $0x1, %esi
movl -0x18(%rbp), %edx
leaq -0x2c(%rbp), %rcx
callq 0x9440
cmpl $0x0, %eax
jne 0xa383
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
xorl %ecx, %ecx
subl -0x2c(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rax
addq %rax, %rdi
leaq 0x199f(%rip), %rsi      # 0xbd4b
movl $0x7, %edx
callq 0x2080
cmpl $0x0, %eax
jne 0xa3fd
movq -0x10(%rbp), %rax
movl -0x18(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x29, %eax
je 0xa3dd
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movl -0x18(%rbp), %eax
subl -0x14(%rbp), %eax
cltq
subq $0x8, %rax
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x28, %eax
jne 0xa44e
movq -0x10(%rbp), %rax
movl -0x18(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x29, %eax
je 0xa430
movl $0x0, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
addl $0x1, %esi
movl -0x18(%rbp), %edx
subl $0x1, %edx
movq -0x20(%rbp), %rcx
callq 0x9440
movl %eax, -0x4(%rbp)
jmp 0xa4b1
movq -0x10(%rbp), %rax
movslq -0x18(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x35(%rbp)
movq -0x10(%rbp), %rax
movslq -0x18(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rax
addq %rax, %rdi
leaq -0x40(%rbp), %rsi
xorl %edx, %edx
callq 0x2200
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movb -0x35(%rbp), %dl
movq -0x10(%rbp), %rax
movslq -0x18(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x18(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)