// File: /workspace/github_c_makefile_star2_O1/oridb[P]mc/6/ra.c
// Function: decdegree
static void
decdegree(Isel *s, regid m)
{
	int before, after;
	int found;
	size_t idx, i;
	regid n;

	assert(m < s->nreg);
	before = istrivial(s, m);
	s->degree[m]--;
	after = istrivial(s, m);

	if (before != after) {
		enablemove(s, m);
		for (i = 0; i < s->ngadj[m]; i++) {
			n = s->gadj[m][i];
			if (adjavail(s, n))
				enablemove(s, n);
		}

		/* Subtle:
		 *
		 * If this code is being called from coalesce(),
		 * then the degree could have been bumped up only
		 * temporarily. This means that the node can already
		 * be on wlfreeze or wlsimp.
		 *
		 * Therefore, if we don't find it on wlspill, we assert
		 * that the node is already on the list that we'd be
		 * moving it to.
		 */
		found = wlfind(s->wlspill, s->nwlspill, m, &idx);
		if (found)
			wldel(s, &s->wlspill, &s->nwlspill, idx);
		if (moverelated(s, m)) {
			if (!found) {
				assert(wlfind(s->wlfreeze, s->nwlfreeze, m, &idx) != 0);
			} else {
				wlput(&s->wlfreeze, &s->nwlfreeze, locmap[m]);
			}
		} else {
			if (!found) {
				assert(wlfind(s->wlsimp, s->nwlsimp, m, &idx));
			} else {
				wlput(&s->wlsimp, &s->nwlsimp, locmap[m]);
			}
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
cmpq %rsi, 0x3d0(%rdi)
jbe 0xe549
movq %rsi, %rbx
movq %rdi, %r14
callq 0xe24a
movl %eax, %ebp
movq 0x3d8(%r14), %rax
decl (%rax,%rbx,4)
movq %r14, %rdi
movq %rbx, %rsi
callq 0xe24a
cmpl %eax, %ebp
je 0xe540
movq %r14, %rdi
movq %rbx, %rsi
callq 0xe568
movq 0x3c0(%r14), %rax
cmpq $0x0, (%rax,%rbx,8)
je 0xe3f6
xorl %r12d, %r12d
movq 0x3b8(%r14), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r12,8), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0xe313
testl %eax, %eax
je 0xe3e6
movq %r14, %rdi
movq %r15, %rsi
callq 0xe568
incq %r12
movq 0x3c0(%r14), %rax
cmpq (%rax,%rbx,8), %r12
jb 0xe3bd
movq 0x470(%r14), %rax
movq 0x478(%r14), %rcx
movq $-0x1, %rdx
testq %rcx, %rcx
je 0xe42a
xorl %esi, %esi
movq (%rax,%rsi,8), %rdi
cmpq %rbx, 0x10(%rdi)
setne %bpl
je 0xe42f
incq %rsi
cmpq %rsi, %rcx
jne 0xe412
jmp 0xe432
movb $0x1, %bpl
jmp 0xe432
movq %rsi, %rdx
testb %bpl, %bpl
jne 0xe456
leaq 0x470(%r14), %rdi
leaq 0x478(%r14), %rsi
movq (%rax,%rdx,8), %rax
movq $0x0, 0x8(%rax)
callq 0x2d4cc
movq %r14, %rdi
movq %rbx, %rsi
callq 0xe28d
testl %eax, %eax
je 0xe4b8
testb %bpl, %bpl
je 0xe503
movq 0x488(%r14), %rax
testq %rax, %rax
je 0xe499
movq 0x480(%r14), %rcx
xorl %edx, %edx
movq (%rcx,%rdx,8), %rsi
cmpq %rbx, 0x10(%rsi)
je 0xe540
incq %rdx
cmpq %rdx, %rax
jne 0xe483
leaq 0x23ad3(%rip), %rdi     # 0x31f73
leaq 0x23a0d(%rip), %rsi     # 0x31eb4
leaq 0x23aa7(%rip), %rcx     # 0x31f55
movl $0x2f6, %edx            # imm = 0x2F6
callq 0x4180
testb %bpl, %bpl
je 0xe511
movq 0x498(%r14), %rax
testq %rax, %rax
je 0xe4e4
movq 0x490(%r14), %rcx
xorl %edx, %edx
movq (%rcx,%rdx,8), %rsi
cmpq %rbx, 0x10(%rsi)
je 0xe540
incq %rdx
cmpq %rdx, %rax
jne 0xe4d2
leaq 0x23ab8(%rip), %rdi     # 0x31fa3
leaq 0x239c2(%rip), %rsi     # 0x31eb4
leaq 0x23a5c(%rip), %rcx     # 0x31f55
movl $0x2fc, %edx            # imm = 0x2FC
callq 0x4180
leaq 0x480(%r14), %r15
movl $0x488, %eax            # imm = 0x488
jmp 0xe51d
leaq 0x490(%r14), %r15
movl $0x498, %eax            # imm = 0x498
addq %rax, %r14
leaq 0x52959(%rip), %rax     # 0x60e80
movq (%rax), %rax
movq (%rax,%rbx,8), %rbx
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x2d3ff
movq %r15, 0x8(%rbx)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x239f9(%rip), %rdi     # 0x31f49
leaq 0x2395d(%rip), %rsi     # 0x31eb4
leaq 0x239f7(%rip), %rcx     # 0x31f55
movl $0x2d9, %edx            # imm = 0x2D9
callq 0x4180