// File: /workspace/github_c_makefile_star2_O3/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 $0x88, %rsp
movl %edi, %ebx
movl $0x0, 0xc(%rsp)
callq 0x12bea
cmpl $0x0, 0x12828(%rip)     # 0x25778
jne 0x1310f
movq 0x129eb(%rip), %rax     # 0x25948
movq %rax, 0x40(%rsp)
movups 0x129cf(%rip), %xmm0    # 0x25938
movaps %xmm0, 0x30(%rsp)
movups 0x12913(%rip), %xmm0    # 0x25888
movaps %xmm0, 0x70(%rsp)
movups 0x128f7(%rip), %xmm0    # 0x25878
movaps %xmm0, 0x60(%rsp)
movups 0x128db(%rip), %xmm0    # 0x25868
movaps %xmm0, 0x50(%rsp)
movq 0x1292f(%rip), %rax     # 0x258c8
movq %rax, 0x20(%rsp)
movups 0x12913(%rip), %xmm0    # 0x258b8
movaps %xmm0, 0x10(%rsp)
movq 0x12917(%rip), %rax     # 0x258c8
movq %rax, 0x12990(%rip)     # 0x25948
movups 0x128f9(%rip), %xmm0    # 0x258b8
movups %xmm0, 0x12972(%rip)    # 0x25938
movl $0x2, %edi
callq 0x10814
movq 0x40(%rsp), %rax
movq %rax, 0x1296c(%rip)     # 0x25948
movaps 0x30(%rsp), %xmm0
movups %xmm0, 0x12950(%rip)    # 0x25938
movaps 0x50(%rsp), %xmm0
movaps 0x60(%rsp), %xmm1
movaps 0x70(%rsp), %xmm2
movups %xmm0, 0x1286a(%rip)    # 0x25868
movups %xmm1, 0x12873(%rip)    # 0x25878
movups %xmm2, 0x1287c(%rip)    # 0x25888
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x128a0(%rip)    # 0x258b8
movq 0x20(%rsp), %rax
movq %rax, 0x128a4(%rip)     # 0x258c8
cmpl $0x0, 0x1274d(%rip)     # 0x25778
jne 0x1310f
movl 0x12794(%rip), %r14d    # 0x257cc
movq 0x12909(%rip), %rax     # 0x25948
movq %rax, 0x40(%rsp)
movups 0x128ed(%rip), %xmm0    # 0x25938
movaps %xmm0, 0x30(%rsp)
movups 0x12831(%rip), %xmm0    # 0x25888
movaps %xmm0, 0x70(%rsp)
movups 0x12815(%rip), %xmm0    # 0x25878
movaps %xmm0, 0x60(%rsp)
movups 0x127f9(%rip), %xmm0    # 0x25868
movaps %xmm0, 0x50(%rsp)
movq 0x1284d(%rip), %rax     # 0x258c8
movq %rax, 0x20(%rsp)
movups 0x12831(%rip), %xmm0    # 0x258b8
movaps %xmm0, 0x10(%rsp)
movq 0x12835(%rip), %rax     # 0x258c8
movq %rax, 0x128ae(%rip)     # 0x25948
movups 0x12817(%rip), %xmm0    # 0x258b8
movups %xmm0, 0x12890(%rip)    # 0x25938
movl $0x2, %edi
callq 0x10814
movq 0x40(%rsp), %rax
movq %rax, 0x1288a(%rip)     # 0x25948
movaps 0x30(%rsp), %xmm0
movups %xmm0, 0x1286e(%rip)    # 0x25938
movaps 0x50(%rsp), %xmm0
movaps 0x60(%rsp), %xmm1
movaps 0x70(%rsp), %xmm2
movups %xmm0, 0x12788(%rip)    # 0x25868
movups %xmm1, 0x12791(%rip)    # 0x25878
movups %xmm2, 0x1279a(%rip)    # 0x25888
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x127be(%rip)    # 0x258b8
movq 0x20(%rsp), %rax
movq %rax, 0x127c2(%rip)     # 0x258c8
cmpl $0x0, 0x1266b(%rip)     # 0x25778
je 0x1311d
addq $0x88, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl 0x126a9(%rip), %ebp     # 0x257cc
leal -0x1(%r14), %r15d
cmpl %r15d, %ebp
jge 0x13141
movq 0x126e5(%rip), %rsi     # 0x25818
addq $-0x4, %rsi
movl $0x20, %edi
jmp 0x131d3
movb $0x1, 0x12780(%rip)     # 0x258c8
movl %ebp, %eax
subl %r14d, %eax
incl %eax
movl %eax, 0x12723(%rip)     # 0x25878
jne 0x1318e
movq 0x1275a(%rip), %rax     # 0x258b8
movq 0x10(%rax), %rdi
cmpl $0x6, 0xc0(%rdi)
jne 0x1318e
addq $0x10, %rdi
movl $0x1, %esi
callq 0x91d8
movq %rax, 0x126e8(%rip)     # 0x25868
testl %r14d, %r14d
jle 0x1318e
cmpl 0xc(%rax), %ebp
jle 0x1323d
movq 0x12723(%rip), %rax     # 0x258b8
movq 0x10(%rax), %rdi
movl 0x12721(%rip), %esi     # 0x258c0
movsbl %bl, %ebx
movl %ebx, (%rsp)
leaq 0x126bc(%rip), %rcx     # 0x25868
leaq 0x126bd(%rip), %r8      # 0x25870
leaq 0x126ba(%rip), %r9      # 0x25874
movl %r14d, %edx
callq 0xee01
testl %eax, %eax
je 0x131e5
movq 0x1264b(%rip), %rsi     # 0x25818
addq $-0x4, %rsi
movl %eax, %edi
addq $0x88, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xcfa3
cmpl %r14d, %ebp
jle 0x1310f
movq 0x126c3(%rip), %rax     # 0x258b8
movq 0x10(%rax), %rdi
movl 0x126c1(%rip), %esi     # 0x258c0
movl 0x125c7(%rip), %edx     # 0x257cc
movl %ebx, (%rsp)
leaq 0x12659(%rip), %rcx     # 0x25868
leaq 0xc(%rsp), %r8
leaq 0x50(%rsp), %r9
callq 0xee01
testl %eax, %eax
je 0x1310f
movq 0x125eb(%rip), %rsi     # 0x25818
addq $-0x4, %rsi
movl %eax, %edi
callq 0xcfa3
jmp 0x1310f
movl $0x1, 0x12629(%rip)     # 0x25870
movl %r15d, 0x12626(%rip)    # 0x25874
jmp 0x1310f