// File: /workspace/github_c_makefile_star2_O3/archer1357[P]Offline-Raytracer/redblack.c
// Function: rbdelete
RB_STATIC const RB_ENTRY(data_t) * 
RB_ENTRY(delete)(const RB_ENTRY(data_t) *key, struct RB_ENTRY(tree) *rbinfo)
{
	struct RB_ENTRY(node) *x;
	const RB_ENTRY(data_t) * y;

	if (rbinfo==NULL)
		return(NULL);

	x=RB_ENTRY(_traverse)(0, key, rbinfo);

	if (x==RBNULL)
	{
		return(NULL);
	}
	else
	{
		y=RB_GET(x, key);
		RB_ENTRY(_delete)(&rbinfo->rb_root, x);

		return(y);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rsi, %rsi
je 0x409c06
movq %rsi, %r14
movq 0x10(%rsi), %rbp
leaq 0x10f613(%rip), %r12    # 0x5191e8
cmpq %r12, %rbp
je 0x409c06
movq %rdi, %r15
leaq 0x10(%r14), %r13
xorl %ebx, %ebx
movq 0x20(%rbp), %rsi
movq 0x8(%r14), %rdx
movq %r15, %rdi
callq *(%r14)
testl %eax, %eax
js 0x409bfb
je 0x409c1a
addq $0x8, %rbp
movq (%rbp), %rbp
cmpq %r12, %rbp
jne 0x409be3
jmp 0x409c08
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%rbp), %r8
movq %rbp, %rdi
cmpq %r12, %r8
je 0x409c3d
movq 0x8(%rbp), %rax
movq %rbp, %rdi
cmpq %r12, %rax
je 0x409c41
movq %rax, %rdi
movq (%rax), %rax
cmpq %r12, %rax
jne 0x409c32
movq 0x8(%rdi), %r8
movq 0x20(%rbp), %rbx
movq 0x10(%rdi), %rax
movq %rax, 0x10(%r8)
movq %r13, %rcx
cmpq %r12, %rax
je 0x409c61
xorl %ecx, %ecx
cmpq (%rax), %rdi
setne %cl
leaq (%rax,%rcx,8), %rcx
movq %r8, (%rcx)
cmpq %rbp, %rdi
je 0x409c71
movq 0x20(%rdi), %rax
movq %rax, 0x20(%rbp)
cmpl $0x0, 0x18(%rdi)
jne 0x409ef2
cmpq %r8, (%r13)
je 0x409eea
xorl %eax, %eax
cmpl $0x0, 0x18(%r8)
jne 0x409eea
leaq 0x10(%r8), %rdx
movq 0x10(%r8), %rcx
movq (%rcx), %rsi
cmpq %rsi, %r8
je 0x409d71
cmpl $0x1, 0x18(%rsi)
jne 0x409cf9
movl $0x0, 0x18(%rsi)
movl $0x1, 0x18(%rcx)
movq 0x8(%rsi), %r8
movq %r8, (%rcx)
cmpq %r12, %r8
je 0x409cca
movq %rcx, 0x10(%r8)
movq 0x10(%rcx), %r8
movq %r8, 0x10(%rsi)
movq %r13, %r9
cmpq %r12, %r8
je 0x409ce8
xorl %r9d, %r9d
cmpq %rcx, (%r8)
setne %r9b
leaq (%r8,%r9,8), %r9
movq %rsi, (%r9)
movq %rcx, 0x8(%rsi)
movq %rsi, 0x10(%rcx)
movq (%rdx), %rcx
movq (%rcx), %rsi
movq (%rsi), %r9
movq 0x8(%rsi), %r8
cmpl $0x0, 0x18(%r8)
movl 0x18(%r9), %r10d
je 0x409e3f
testl %r10d, %r10d
jne 0x409e48
movl $0x0, 0x18(%r8)
movl $0x1, 0x18(%rsi)
movq (%r8), %rcx
movq %rcx, 0x8(%rsi)
cmpq %r12, %rcx
je 0x409d37
movq %rsi, 0x10(%rcx)
movq 0x10(%rsi), %rcx
movq %rcx, 0x10(%r8)
movq %r13, %r9
cmpq %r12, %rcx
je 0x409d55
xorl %r9d, %r9d
cmpq %rsi, (%rcx)
setne %r9b
leaq (%rcx,%r9,8), %r9
movq %r8, (%r9)
movq %rsi, (%r8)
movq %r8, 0x10(%rsi)
movq (%rdx), %rcx
movq (%rcx), %rsi
movq (%rsi), %r9
movq 0x8(%rsi), %r8
jmp 0x409e48
movq 0x8(%rcx), %rsi
cmpl $0x1, 0x18(%rsi)
jne 0x409dc8
movl $0x0, 0x18(%rsi)
movl $0x1, 0x18(%rcx)
movq (%rsi), %r8
movq %r8, 0x8(%rcx)
cmpq %r12, %r8
je 0x409d99
movq %rcx, 0x10(%r8)
movq 0x10(%rcx), %r8
movq %r8, 0x10(%rsi)
movq %r13, %r9
cmpq %r12, %r8
je 0x409db7
xorl %r9d, %r9d
cmpq %rcx, (%r8)
setne %r9b
leaq (%r8,%r9,8), %r9
movq %rsi, (%r9)
movq %rcx, (%rsi)
movq %rsi, 0x10(%rcx)
movq (%rdx), %rcx
movq 0x8(%rcx), %rsi
movq (%rsi), %r8
movq 0x8(%rsi), %r9
cmpl $0x0, 0x18(%r8)
movl 0x18(%r9), %r10d
je 0x409e88
testl %r10d, %r10d
jne 0x409e8d
movl $0x0, 0x18(%r8)
movl $0x1, 0x18(%rsi)
movq 0x8(%r8), %rcx
movq %rcx, (%rsi)
cmpq %r12, %rcx
je 0x409e06
movq %rsi, 0x10(%rcx)
movq 0x10(%rsi), %rcx
movq %rcx, 0x10(%r8)
movq %r13, %r9
cmpq %r12, %rcx
je 0x409e24
xorl %r9d, %r9d
cmpq %rsi, (%rcx)
setne %r9b
leaq (%rcx,%r9,8), %r9
movq %r8, (%r9)
movq %rsi, 0x8(%r8)
movq %r8, 0x10(%rsi)
movq (%rdx), %rcx
movq 0x8(%rcx), %rsi
movq (%rsi), %r8
movq 0x8(%rsi), %r9
jmp 0x409e8d
testl %r10d, %r10d
je 0x409ee1
movl 0x18(%rcx), %edx
movl %edx, 0x18(%rsi)
movl %eax, 0x18(%rcx)
movl %eax, 0x18(%r9)
movq %r8, (%rcx)
cmpq %r12, %r8
je 0x409e61
movq %rcx, 0x10(%r8)
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rsi)
movq %r13, %r8
cmpq %r12, %rdx
je 0x409e7f
xorl %r8d, %r8d
cmpq %rcx, (%rdx)
setne %r8b
leaq (%rdx,%r8,8), %r8
movq %rsi, (%r8)
movq %rcx, 0x8(%rsi)
jmp 0x409ecb
testl %r10d, %r10d
je 0x409ee1
movl 0x18(%rcx), %edx
movl %edx, 0x18(%rsi)
movl %eax, 0x18(%rcx)
movl %eax, 0x18(%r9)
movq %r8, 0x8(%rcx)
cmpq %r12, %r8
je 0x409ea7
movq %rcx, 0x10(%r8)
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rsi)
movq %r13, %r8
cmpq %r12, %rdx
je 0x409ec5
xorl %r8d, %r8d
cmpq %rcx, (%rdx)
setne %r8b
leaq (%rdx,%r8,8), %r8
movq %rsi, (%r8)
movq %rcx, (%rsi)
movq %rsi, 0x10(%rcx)
movq %r13, %rdx
movq (%rdx), %r8
cmpq (%r13), %r8
jne 0x409c87
jmp 0x409eea
movl $0x1, 0x18(%rsi)
jmp 0x409ed2
movl $0x0, 0x18(%r8)
callq 0x445c00
jmp 0x409c08