// File: /workspace/github_c_makefile_star2_O0/heltilda[P]cicada/bytecd.c
// Function: navigate
void navigate(void (*stepFunction)(ccBool), ccBool defineMode, ccBool takeStep, ccBool allowStepToVoid)
{
    
        // find the member to step into (stored in GL_Path.stemMember)
    
    stepFunction(defineMode && canAddMembers);
    GL_Path.stemView = searchView;
    
    if (errCode != passed)  return;
    
    
        // perform the actual step
    
    if (takeStep)  {
        
        if ((searchView.width > 1) && (GL_Path.indices != GL_Path.stemMember->indices))
            {  setError(incomplete_member_err, pcCodePtr-1);  return;  }
        
        if (searchView.windowPtr->variable_ptr->type == composite_type)  {
            if (GL_Path.indices == 0)  {  setError(no_member_err, pcCodePtr-1);  return;  }
            else if (GL_Path.indices > 1)  {  setError(step_multiple_members_err, pcCodePtr-1);  return;  }     }
        
        stepView(&searchView, GL_Path.stemMember, GL_Path.offset, GL_Path.indices);
    }
    
    
        // set our object info before returning
    
    GL_Object.type = var_type;
    if ((allowStepToVoid) && (errCode == void_member_err))  {
        errCode = passed;
        GL_Object.type = no_type;       }
    
    if (searchView.windowPtr != NULL)  GL_Object.codeList = &(searchView.windowPtr->variable_ptr->codeList);
    codeNumber = 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movb %dl, %cl
movb %sil, %dl
movq %rdi, -0x8(%rbp)
movb %dl, -0x9(%rbp)
movb %cl, -0xa(%rbp)
movb %al, -0xb(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
xorl %eax, %eax
cmpb $0x0, -0x9(%rbp)
movb %al, -0xc(%rbp)
je 0x177ec
cmpb $0x0, 0x1503a(%rip)     # 0x2c820
setne %al
movb %al, -0xc(%rbp)
movq -0x18(%rbp), %rax
movb -0xc(%rbp), %cl
andb $0x1, %cl
movsbl %cl, %edi
callq *%rax
movq 0x150a6(%rip), %rax     # 0x2c8a8
movq %rax, 0x15067(%rip)     # 0x2c870
movq 0x150a0(%rip), %rax     # 0x2c8b0
movq %rax, 0x15061(%rip)     # 0x2c878
movq 0x1509a(%rip), %rax     # 0x2c8b8
movq %rax, 0x1505b(%rip)     # 0x2c880
cmpl $0x0, 0x14f3c(%rip)     # 0x2c768
je 0x17833
jmp 0x1794f
cmpb $0x0, -0xa(%rbp)
je 0x178f6
cmpl $0x1, 0x15070(%rip)     # 0x2c8b4
jle 0x17872
movl 0x1501c(%rip), %eax     # 0x2c868
movq 0x15005(%rip), %rcx     # 0x2c858
cmpl 0xc(%rcx), %eax
je 0x17872
movq 0x14fa9(%rip), %rsi     # 0x2c808
addq $-0x4, %rsi
movl $0x1c, %edi
callq 0xf740
jmp 0x1794f
movq 0x1502f(%rip), %rax     # 0x2c8a8
movq 0x10(%rax), %rax
cmpl $0x5, 0xc0(%rax)
jne 0x178d0
cmpl $0x0, 0x14fdb(%rip)     # 0x2c868
jne 0x178a9
movq 0x14f72(%rip), %rsi     # 0x2c808
addq $-0x4, %rsi
movl $0x18, %edi
callq 0xf740
jmp 0x1794f
cmpl $0x1, 0x14fb8(%rip)     # 0x2c868
jle 0x178cc
movq 0x14f4f(%rip), %rsi     # 0x2c808
addq $-0x4, %rsi
movl $0x1b, %edi
callq 0xf740
jmp 0x1794f
jmp 0x178ce
jmp 0x178d0
movq 0x14f81(%rip), %rsi     # 0x2c858
movl 0x14f87(%rip), %edx     # 0x2c864
movl 0x14f85(%rip), %ecx     # 0x2c868
leaq 0x14e66(%rip), %rdi     # 0x2c750
addq $0x158, %rdi            # imm = 0x158
callq 0xff50
movl $0xffffffff, 0x14f28(%rip) # imm = 0xFFFFFFFF
cmpb $0x0, -0xb(%rbp)
je 0x17923
cmpl $0x1a, 0x14e5b(%rip)    # 0x2c768
jne 0x17923
movl $0x0, 0x14e4f(%rip)     # 0x2c768
movl $0x7, 0x14f05(%rip)     # 0x2c828
cmpq $0x0, 0x14f7d(%rip)     # 0x2c8a8
je 0x17945
movq 0x14f74(%rip), %rax     # 0x2c8a8
movq 0x10(%rax), %rax
addq $0xd0, %rax
movq %rax, 0x14f0b(%rip)     # 0x2c850
movl $0x1, 0x14ff5(%rip)     # 0x2c944
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)