// File: /workspace/github_c_makefile_star2_O0/heltilda[P]cicada/intrpt.c
// Function: combVariables
void combVariables()
{
    ccInt variableCounter, memberCounter, windowCounter, fibrilCounter, codeCounter, codeTop, membersTop;
    variable *loopVariable;
    member *loopMember;
    
    
        // First flag all accessible regions of memory
    
    combBranch(baseView.windowPtr->variable_ptr, ccTrue);
    for (windowCounter = 1; windowCounter <= PCStack.top; windowCounter++)
        combBranch(((view *) element(&(PCStack.data), windowCounter))->windowPtr->variable_ptr, ccTrue);
        
        
        // Now scan for variables that have their flags cleared
    
    for (variableCounter = VariableList.data.elementNum; variableCounter >= 1; variableCounter--)   {
    if (*LL_int(&(VariableList.references), variableCounter) != 0)   {
        loopVariable = (variable *) element(&(VariableList.data), variableCounter);
        
        if (!isBusy(loopVariable, busy_comb_flag))  {
        
            refVariable(loopVariable);            // make sure the variable won't be deleted while we're still dismembering it
            
            codeTop = loopVariable->codeList.elementNum;     // remove its code, since the anchor references the variable indirectly
            for (codeCounter = 1; codeCounter <= codeTop; codeCounter++)   {
                derefCodeRef((code_ref *) element(&(loopVariable->codeList), codeCounter));   }
            deleteElements(&(loopVariable->codeList), 1, codeTop);
            
            if (loopVariable->type >= composite_type)  {      // composite?  then remove its members' code lists and window *s
                membersTop = loopVariable->mem.members.elementNum;      // have it stored separately for deleteElements()
                for (memberCounter = 1; memberCounter <= membersTop; memberCounter++)  {
                    loopMember = LL_member(loopVariable, memberCounter);
                    for (codeCounter = 1; codeCounter <= loopMember->codeList.elementNum; codeCounter++)  {
                        derefCodeRef((code_ref *) element(&(loopMember->codeList), codeCounter));   }
                    if (loopMember->memberWindow != NULL)  unlinkWindow(loopVariable, &(loopMember->memberWindow), memberCounter);
                    deleteLinkedList(&(loopMember->codeList));
                }
                deleteElements(&(loopVariable->mem.members), 1, membersTop);      // ?
            }
            
            for (fibrilCounter = 1; fibrilCounter <= loopVariable->pathList.data.elementNum; fibrilCounter++)  {
            if (*LL_int(&(loopVariable->pathList.references), fibrilCounter) != 0)  {
                derefPath(&(((searchPath *) element(&(loopVariable->pathList.data), fibrilCounter))->stem));
            }}
            derefVariable(loopVariable);      // the mortal blow
        }
    }}
    
    
        // remove the accessibility flags
    
    combBranch(baseView.windowPtr->variable_ptr, ccFalse);
    for (windowCounter = 1; windowCounter <= PCStack.top; windowCounter++)
        combBranch(((view *) element(&(PCStack.data), windowCounter))->windowPtr->variable_ptr, ccFalse);
    
    return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
leaq 0x196b1(%rip), %rax     # 0x2c750
movq 0x140(%rax), %rax
movq 0x10(%rax), %rdi
movl $0x1, %esi
callq 0x13360
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl 0x19664(%rip), %eax     # 0x2c728
jg 0x130fc
movl -0xc(%rbp), %esi
leaq 0x195c8(%rip), %rdi     # 0x2c698
addq $0x90, %rdi
addq $0x8, %rdi
callq 0x9700
movq (%rax), %rax
movq 0x10(%rax), %rdi
movl $0x1, %esi
callq 0x13360
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x130bb
movl 0x195de(%rip), %eax     # 0x2c6e0
movl %eax, -0x4(%rbp)
cmpl $0x1, -0x4(%rbp)
jl 0x132ed
movl -0x4(%rbp), %esi
leaq 0x1957f(%rip), %rdi     # 0x2c698
addq $0x48, %rdi
addq $0x20, %rdi
callq 0x9700
cmpl $0x0, (%rax)
je 0x132dd
movl -0x4(%rbp), %esi
leaq 0x1955f(%rip), %rdi     # 0x2c698
addq $0x48, %rdi
callq 0x9700
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movl 0xf4(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x132db
movq -0x28(%rbp), %rdi
callq 0x12e90
movq -0x28(%rbp), %rax
movl 0xd0(%rax), %eax
movl %eax, -0x18(%rbp)
movl $0x1, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x18(%rbp), %eax
jg 0x131a7
movq -0x28(%rbp), %rdi
addq $0xd0, %rdi
movl -0x14(%rbp), %esi
callq 0x9700
movq %rax, %rdi
callq 0x12c40
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x13179
movq -0x28(%rbp), %rdi
addq $0xd0, %rdi
movl -0x18(%rbp), %edx
movl $0x1, %esi
callq 0x8880
movq -0x28(%rbp), %rax
cmpl $0x5, 0xc0(%rax)
jl 0x1327d
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x1c(%rbp)
movl $0x1, -0x8(%rbp)
movl -0x8(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jg 0x13268
movq -0x28(%rbp), %rdi
addq $0x10, %rdi
movl -0x8(%rbp), %esi
callq 0x9700
movq %rax, -0x30(%rbp)
movl $0x1, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x30(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jg 0x13233
movq -0x30(%rbp), %rdi
addq $0x20, %rdi
movl -0x14(%rbp), %esi
callq 0x9700
movq %rax, %rdi
callq 0x12c40
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x13204
movq -0x30(%rbp), %rax
cmpq $0x0, (%rax)
je 0x1324d
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movl -0x8(%rbp), %edx
callq 0x13550
movq -0x30(%rbp), %rdi
addq $0x20, %rdi
callq 0x8540
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x131e1
movq -0x28(%rbp), %rdi
addq $0x10, %rdi
movl -0x1c(%rbp), %edx
movl $0x1, %esi
callq 0x8880
movl $0x1, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x78(%rcx), %eax
jg 0x132d2
movq -0x28(%rbp), %rdi
addq $0x78, %rdi
addq $0x20, %rdi
movl -0x10(%rbp), %esi
callq 0x9700
cmpl $0x0, (%rax)
je 0x132c5
movq -0x28(%rbp), %rdi
addq $0x78, %rdi
movl -0x10(%rbp), %esi
callq 0x9700
movq %rax, %rdi
addq $0x20, %rdi
callq 0x13630
jmp 0x132c7
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x13284
movq -0x28(%rbp), %rdi
callq 0x12eb0
jmp 0x132dd
jmp 0x132df
movl -0x4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x13105
leaq 0x1945c(%rip), %rax     # 0x2c750
movq 0x140(%rax), %rax
movq 0x10(%rax), %rdi
xorl %esi, %esi
callq 0x13360
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl 0x19412(%rip), %eax     # 0x2c728
jg 0x1334b
movl -0xc(%rbp), %esi
leaq 0x19376(%rip), %rdi     # 0x2c698
addq $0x90, %rdi
addq $0x8, %rdi
callq 0x9700
movq (%rax), %rax
movq 0x10(%rax), %rdi
xorl %esi, %esi
callq 0x13360
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1330d
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)