// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/dominate.c
// Function: visit
static void visit(struct piggy *bank, struct basic_block_list **idf, struct basic_block *x, int curr_level)
{
	struct basic_block *y;

	x->generation |= 1;
	FOR_EACH_PTR(x->children, y) {
		unsigned flags = y->generation & FLAGS;
		if (y->idom == x)	// J-edges will be processed later
			continue;
		if (y->dom_level > curr_level)
			continue;
		if (flags & INPHI)
			continue;
		y->generation |= INPHI;
		add_bb(idf, y);
		if (flags & ALPHA)
			continue;
		bank_put(bank, y);
	} END_FOR_EACH_PTR(y);

	FOR_EACH_PTR(x->doms, y) {
		if (y->generation & VISITED)
			continue;
		visit(bank, idf, y, curr_level);
	} END_FOR_EACH_PTR(y);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
orq $0x1, %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x4a8ef
jmp 0x4a9d7
jmp 0x4a8f1
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
movq -0x38(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x4a9bf
movq -0x38(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
movq -0x38(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x4a940
cmpq $0x0, -0x28(%rbp)
jne 0x4a940
jmp 0x4a9b1
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
andq $0x7, %rax
movl %eax, -0x48(%rbp)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
cmpq -0x18(%rbp), %rax
jne 0x4a95f
jmp 0x4a9b1
movq -0x28(%rbp), %rax
movl 0x3c(%rax), %eax
cmpl -0x1c(%rbp), %eax
jle 0x4a96d
jmp 0x4a9b1
movl -0x48(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x4a97a
jmp 0x4a9b1
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rcx
orq $0x2, %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x4acf0
movl -0x48(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x4a9a4
jmp 0x4a9b1
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x4a7b0
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x4a8f8
jmp 0x4a9c1
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
cmpq -0x30(%rbp), %rax
jne 0x4a8f1
jmp 0x4a9d9
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x4aa01
jmp 0x4aa99
jmp 0x4aa03
movl $0x0, -0x64(%rbp)
movl -0x64(%rbp), %eax
movq -0x58(%rbp), %rcx
movw (%rcx), %cx
shlw $0x8, %cx
sarw $0x8, %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x4aa81
movq -0x58(%rbp), %rax
movslq -0x64(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
movq -0x58(%rbp), %rax
movw (%rax), %ax
sarw $0x8, %ax
cwtl
cmpl $0x0, %eax
je 0x4aa4e
cmpq $0x0, -0x28(%rbp)
jne 0x4aa4e
jmp 0x4aa76
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x4aa62
jmp 0x4aa76
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x28(%rbp), %rdx
movl -0x1c(%rbp), %ecx
callq 0x4a8a0
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x4aa0a
jmp 0x4aa83
movq -0x58(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
cmpq -0x50(%rbp), %rax
jne 0x4aa03
addq $0x70, %rsp
popq %rbp
retq
nop