// File: /workspace/github_c_makefile_star2_O2/heltilda[P]cicada/bytecd.c
// Function: sticsStep
void sticsStep(ccBool allowAddMember)
{
    ccInt firstIndex, lastIndex, secondMemberNumber = 0, secondOffset, rtrn;
    
    
        // get the first steps in the path
    
    callSearchPathFunction();
    if (errCode != passed)  return;
    
    
        // get the first index to step into
    
    firstIndex = callIndexFunction();
    if (errCode != passed)  return;
    
    
        // get the last index to step into
    
    lastIndex = callIndexFunction();
    if (errCode != passed)  return;
    
    if (lastIndex < firstIndex-1)  {  setError(index_argument_err, pcCodePtr-1);  return;  }
    
    
    searchView.multipleIndices = ccTrue;
    GL_Path.indices = lastIndex - firstIndex + 1;
    
    
        // special case:  allow us to step into 0 indices of a size-0 array
    
    if ((GL_Path.indices == 0) && (searchView.windowPtr->variable_ptr->type == array_type))  {
        GL_Path.stemMember = LL_member(searchView.windowPtr->variable_ptr, 1);
        if ((firstIndex >= 1) && (lastIndex <= GL_Path.stemMember->indices))  {
            GL_Path.stemMemberNumber = 1;
            GL_Path.offset = firstIndex - 1;
            
            return;
    }   }
    
    
        // otherwise find the first and last indices, and make sure they're in the same member
    
    rtrn = findMemberIndex(searchView.windowPtr->variable_ptr, searchView.offset, firstIndex, &(GL_Path.stemMember),
                                                                &(GL_Path.stemMemberNumber), &(GL_Path.offset), allowAddMember);
    if (rtrn != passed)  {  setError(rtrn, pcCodePtr-1);  return;  }
    
    if (lastIndex > firstIndex)  {
        rtrn = findMemberIndex(searchView.windowPtr->variable_ptr, searchView.offset, intRegister, &(GL_Path.stemMember),
                                                    &secondMemberNumber, &secondOffset, allowAddMember);
        if (rtrn != passed)  setError(rtrn, pcCodePtr-1);       }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movl %edi, %ebp
andl $0x0, 0x10(%rsp)
callq 0x11be6
cmpl $0x0, 0x12973(%rip)     # 0x24778
jne 0x11e25
callq 0x11cfc
cmpl $0x0, 0x12965(%rip)     # 0x24778
jne 0x11e25
movl %eax, %ebx
callq 0x11cfc
cmpl $0x0, 0x12955(%rip)     # 0x24778
je 0x11e30
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl %eax, %r14d
leal -0x1(%rbx), %r15d
cmpl %r15d, %eax
jge 0x11e4f
movq 0x129d5(%rip), %rsi     # 0x24818
addq $-0x4, %rsi
pushq $0x20
popq %rdi
jmp 0x11edf
movb $0x1, 0x12a72(%rip)     # 0x248c8
movl %r14d, %eax
subl %ebx, %eax
incl %eax
movl %eax, 0x12a15(%rip)     # 0x24878
jne 0x11e9a
movq 0x12a4c(%rip), %rax     # 0x248b8
movq 0x10(%rax), %rdi
cmpl $0x6, 0xc0(%rdi)
jne 0x11e9a
addq $0x10, %rdi
pushq $0x1
popq %rsi
callq 0x9088
movq %rax, 0x129dc(%rip)     # 0x24868
testl %ebx, %ebx
jle 0x11e9a
cmpl 0xc(%rax), %r14d
jle 0x11f46
movq 0x12a17(%rip), %rax     # 0x248b8
movq 0x10(%rax), %rdi
movl 0x12a15(%rip), %esi     # 0x248c0
movsbl %bpl, %ebp
movl %ebp, (%rsp)
leaq 0x129af(%rip), %rcx     # 0x24868
leaq 0x129b0(%rip), %r8      # 0x24870
leaq 0x129ad(%rip), %r9      # 0x24874
movl %ebx, %edx
callq 0xe374
testl %eax, %eax
je 0x11eee
movq 0x1293f(%rip), %rsi     # 0x24818
addq $-0x4, %rsi
movl %eax, %edi
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xc7c2
cmpl %ebx, %r14d
jle 0x11e25
movq 0x129ba(%rip), %rax     # 0x248b8
movq 0x10(%rax), %rdi
movl 0x129b8(%rip), %esi     # 0x248c0
movl 0x128be(%rip), %edx     # 0x247cc
movl %ebp, (%rsp)
leaq 0x12950(%rip), %rcx     # 0x24868
leaq 0x10(%rsp), %r8
leaq 0x14(%rsp), %r9
callq 0xe374
testl %eax, %eax
je 0x11e25
movq 0x128e2(%rip), %rsi     # 0x24818
addq $-0x4, %rsi
movl %eax, %edi
callq 0xc7c2
jmp 0x11e25
movl $0x1, 0x12920(%rip)     # 0x24870
movl %r15d, 0x1291d(%rip)    # 0x24874
jmp 0x11e25