// File: /workspace/github_c_makefile_star2_O3/heltilda[P]cicada/intrpt.c
// Function: searchMember
void searchMember(ccInt soughtMemberID, member **stemMember, ccInt *stemMemberNumber, ccBool allowAddMember, ccBool ifHiddenMember)
{
    searchPath *searchPosition;
    ccInt rtrn;
    
    searchPosition = pcSearchPath;
    searchView = baseView;
    
    do  {
        searchView.windowPtr = searchPosition->jamb;
        rtrn = findMemberID(searchView.windowPtr->variable_ptr, soughtMemberID, stemMember, stemMemberNumber, allowAddMember, ifHiddenMember);
        if (rtrn == passed)  {
            return;    }
        else if (rtrn != member_not_found_err)  {
            setError(rtrn, pcCodePtr);
            return;    }
        
        if (searchPosition->stem == NULL)  break;
        else if (searchPosition->stemIndices == 0)
            searchView.offset = 0;
        else
            searchView.offset = (searchView.offset - searchView.windowPtr->offset) / searchPosition->stemIndices;
        
        if (searchView.width > 1)  searchView.width /= searchPosition->stemIndices;
        else if (searchPosition->stemIndices == 0)  {           // if we stepped through a 0-sized member, recalculate indices
            searchView.width = 1;
            searchPath *SP2 = searchPosition->stem;
            while (SP2->stem != NULL)  {
                searchView.width *= SP2->stemIndices;
                SP2 = SP2->stem;
        }   }
        if (searchView.multipleIndices)  searchView.multipleIndices = (searchView.width != 1);
        
        searchPosition = searchPosition->stem;
    }  while (ccTrue);
    
    setError(member_not_found_err, pcCodePtr);
    return;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, (%rsp)
movq %rsi, %r15
movl %edi, %ebp
leaq 0x16c0e(%rip), %rbx     # 0x25760
movq 0x170(%rbx), %r14
movups 0x140(%rbx), %xmm0
movups %xmm0, 0x158(%rbx)
movq 0x150(%rbx), %rax
movq %rax, 0x168(%rbx)
movsbl %cl, %r12d
movsbl %r8b, %r13d
movq 0x18(%r14), %rax
movq %rax, 0x158(%rbx)
movq 0x10(%rax), %rdi
movl %ebp, %esi
movq %r15, %rdx
movq (%rsp), %rcx
movl %r12d, %r8d
movl %r13d, %r9d
callq 0xec8a
cmpl $0x17, %eax
jne 0xec47
movq 0x20(%r14), %rcx
testq %rcx, %rcx
je 0xec5a
movl 0x28(%r14), %esi
testl %esi, %esi
je 0xebe4
movl 0x160(%rbx), %eax
movq 0x158(%rbx), %rdx
subl 0x18(%rdx), %eax
cltd
idivl %esi
movl %eax, 0x160(%rbx)
movl 0x164(%rbx), %eax
cmpl $0x2, %eax
jge 0xebf9
jmp 0xec02
movl $0x0, 0x160(%rbx)
movl 0x164(%rbx), %eax
cmpl $0x1, %eax
jle 0xec24
cltd
idivl %esi
movl %eax, 0x164(%rbx)
cmpb $0x0, 0x168(%rbx)
movq %rcx, %r14
je 0xeb7d
cmpl $0x1, %eax
setne 0x168(%rbx)
movq %rcx, %r14
jmp 0xeb7d
movq 0x20(%rcx), %rdx
movl $0x1, %eax
testq %rdx, %rdx
je 0xebfc
movq %rcx, %rsi
imull 0x28(%rsi), %eax
movq %rdx, %rsi
movq 0x20(%rdx), %rdx
testq %rdx, %rdx
jne 0xec35
jmp 0xebfc
testl %eax, %eax
jne 0xec5f
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x17, %eax
movq 0xb8(%rbx), %rdi
leaq 0x18(%rbx), %rdx
leaq 0x1c(%rbx), %rcx
addq $0x28, %rbx
movl %eax, %esi
movq %rbx, %r8
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xef9a