// File: /workspace/github_c_makefile_star2_O0/attractivechaos[P]rb-eval/./rb.hpp
// Function: rbtree_t<unsigned int, rbnode_map_t<unsigned int, int>, int_cmp>::insert(unsigned int const&, int*)
inline node_t *insert(const key_t &item, int *is_present) {
		node_t *pa[RB_MAX_HEIGHT], *p, *n;
		unsigned char da[RB_MAX_HEIGHT];
		int k, dir;
		pa[0] = (node_t*)&root;
		da[0] = 0;
		k = 1; *is_present = 0;
		for (p = root; p; p = p->rb_link[dir]) {
			int cmp = __cmp(item, p->key);
			if (cmp == 0) {
				*is_present = 1;
				return p;
			}
			pa[k] = p;
			da[k++] = dir = cmp > 0;
		}
		n = pa[k - 1]->rb_link[da[k - 1]] = (node_t*)malloc(sizeof(node_t));
		n->key = item;
		n->rb_link[0] = n->rb_link[1] = 0;
		n->color = RB_RED;
		++generation;
		while (k >= 3 && pa[k - 1]->color == RB_RED) {
			if (da[k - 2] == 0) {
				node_t *y = pa[k - 2]->rb_link[1];
				if (y && y->color == RB_RED) {
					pa[k - 1]->color = y->color = RB_BLACK;
					pa[k - 2]->color = RB_RED;
					k -= 2;
				} else {
					node_t *x;
					if (da[k - 1] == 0) y = pa[k - 1];
					else {
						x = pa[k - 1];
						y = x->rb_link[1];
						x->rb_link[1] = y->rb_link[0];
						y->rb_link[0] = x;
						pa[k - 2]->rb_link[0] = y;
					}
					x = pa[k - 2];
					x->color = RB_RED;
					y->color = RB_BLACK;
					x->rb_link[0] = y->rb_link[1];
					y->rb_link[1] = x;
					pa[k - 3]->rb_link[da[k - 3]] = y;
					break;
				}
			} else {
				node_t *y = pa[k - 2]->rb_link[0];
				if (y && y->color == RB_RED) {
					pa[k - 1]->color = y->color = RB_BLACK;
					pa[k - 2]->color = RB_RED;
					k -= 2;
				} else {
					node_t *x;
					if (da[k - 1] == 1) y = pa[k - 1];
					else {
						x = pa[k - 1];
						y = x->rb_link[0];
						x->rb_link[0] = y->rb_link[1];
						y->rb_link[1] = x;
						pa[k - 2]->rb_link[1] = y;
					}
					x = pa[k - 2];
					x->color = RB_RED;
					y->color = RB_BLACK;
					x->rb_link[1] = y->rb_link[0];
					y->rb_link[0] = x;
					pa[k - 3]->rb_link[da[k - 3]] = y;
					break;
				}
			}
		}
		root->color = RB_BLACK;
		return n;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x220, %rsp            # imm = 0x220
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x218(%rbp)
movq %rax, %rcx
addq $0x8, %rcx
movq %rcx, -0x1a0(%rbp)
movb $0x0, -0x1e0(%rbp)
movl $0x1, -0x1e4(%rbp)
movq -0x20(%rbp), %rcx
movl $0x0, (%rcx)
movq 0x8(%rax), %rax
movq %rax, -0x1a8(%rbp)
cmpq $0x0, -0x1a8(%rbp)
je 0x158e
movq -0x218(%rbp), %rdi
movq -0x18(%rbp), %rax
movl (%rax), %esi
movq -0x1a8(%rbp), %rax
movl 0x10(%rax), %edx
callq 0x24d0
movl %eax, -0x1ec(%rbp)
cmpl $0x0, -0x1ec(%rbp)
jne 0x1529
movq -0x20(%rbp), %rax
movl $0x1, (%rax)
movq -0x1a8(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1a06
movq -0x1a8(%rbp), %rcx
movslq -0x1e4(%rbp), %rax
movq %rcx, -0x1a0(%rbp,%rax,8)
cmpl $0x0, -0x1ec(%rbp)
setg %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x1e8(%rbp)
movb %al, %cl
movl -0x1e4(%rbp), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, -0x1e4(%rbp)
cltq
movb %cl, -0x1e0(%rbp,%rax)
movq -0x1a8(%rbp), %rax
movslq -0x1e8(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x1a8(%rbp)
jmp 0x14d6
movl $0x20, %edi
callq 0x1060
movq %rax, %rcx
movq -0x218(%rbp), %rax
movl -0x1e4(%rbp), %edx
subl $0x1, %edx
movslq %edx, %rdx
movq -0x1a0(%rbp,%rdx,8), %rdx
movl -0x1e4(%rbp), %esi
subl $0x1, %esi
movslq %esi, %rsi
movzbl -0x1e0(%rbp,%rsi), %esi
movq %rcx, (%rdx,%rsi,8)
movq %rcx, -0x1b0(%rbp)
movq -0x18(%rbp), %rcx
movl (%rcx), %edx
movq -0x1b0(%rbp), %rcx
movl %edx, 0x10(%rcx)
movq -0x1b0(%rbp), %rcx
movq $0x0, 0x8(%rcx)
movq -0x1b0(%rbp), %rcx
movq $0x0, (%rcx)
movq -0x1b0(%rbp), %rcx
movb $0x1, 0x18(%rcx)
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
xorl %eax, %eax
cmpl $0x3, -0x1e4(%rbp)
movb %al, -0x219(%rbp)
jl 0x164d
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movsbl 0x18(%rax), %eax
cmpl $0x1, %eax
sete %al
movb %al, -0x219(%rbp)
movb -0x219(%rbp), %al
testb $0x1, %al
jne 0x165c
jmp 0x19ec
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
cltq
movzbl -0x1e0(%rbp,%rax), %eax
cmpl $0x0, %eax
jne 0x1833
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq 0x8(%rax), %rax
movq %rax, -0x1f8(%rbp)
cmpq $0x0, -0x1f8(%rbp)
je 0x16fd
movq -0x1f8(%rbp), %rax
movsbl 0x18(%rax), %eax
cmpl $0x1, %eax
jne 0x16fd
movq -0x1f8(%rbp), %rax
movb $0x0, 0x18(%rax)
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movb $0x0, 0x18(%rax)
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movb $0x1, 0x18(%rax)
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
movl %eax, -0x1e4(%rbp)
jmp 0x182e
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
cltq
movzbl -0x1e0(%rbp,%rax), %eax
cmpl $0x0, %eax
jne 0x1731
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq %rax, -0x1f8(%rbp)
jmp 0x17a0
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq %rax, -0x200(%rbp)
movq -0x200(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x1f8(%rbp)
movq -0x1f8(%rbp), %rax
movq (%rax), %rcx
movq -0x200(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x200(%rbp), %rcx
movq -0x1f8(%rbp), %rax
movq %rcx, (%rax)
movq -0x1f8(%rbp), %rcx
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq %rcx, (%rax)
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq %rax, -0x200(%rbp)
movq -0x200(%rbp), %rax
movb $0x1, 0x18(%rax)
movq -0x1f8(%rbp), %rax
movb $0x0, 0x18(%rax)
movq -0x1f8(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x200(%rbp), %rax
movq %rcx, (%rax)
movq -0x200(%rbp), %rcx
movq -0x1f8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x1f8(%rbp), %rdx
movl -0x1e4(%rbp), %eax
subl $0x3, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movl -0x1e4(%rbp), %ecx
subl $0x3, %ecx
movslq %ecx, %rcx
movzbl -0x1e0(%rbp,%rcx), %ecx
movq %rdx, (%rax,%rcx,8)
jmp 0x19ec
jmp 0x19e7
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq (%rax), %rax
movq %rax, -0x208(%rbp)
cmpq $0x0, -0x208(%rbp)
je 0x18b7
movq -0x208(%rbp), %rax
movsbl 0x18(%rax), %eax
cmpl $0x1, %eax
jne 0x18b7
movq -0x208(%rbp), %rax
movb $0x0, 0x18(%rax)
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movb $0x0, 0x18(%rax)
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movb $0x1, 0x18(%rax)
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
movl %eax, -0x1e4(%rbp)
jmp 0x19e5
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
cltq
movzbl -0x1e0(%rbp,%rax), %eax
cmpl $0x1, %eax
jne 0x18eb
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq %rax, -0x208(%rbp)
jmp 0x195b
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x210(%rbp), %rax
movq %rcx, (%rax)
movq -0x210(%rbp), %rcx
movq -0x208(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x208(%rbp), %rcx
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq %rcx, 0x8(%rax)
movl -0x1e4(%rbp), %eax
subl $0x2, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rax
movb $0x1, 0x18(%rax)
movq -0x208(%rbp), %rax
movb $0x0, 0x18(%rax)
movq -0x208(%rbp), %rax
movq (%rax), %rcx
movq -0x210(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x210(%rbp), %rcx
movq -0x208(%rbp), %rax
movq %rcx, (%rax)
movq -0x208(%rbp), %rdx
movl -0x1e4(%rbp), %eax
subl $0x3, %eax
cltq
movq -0x1a0(%rbp,%rax,8), %rax
movl -0x1e4(%rbp), %ecx
subl $0x3, %ecx
movslq %ecx, %rcx
movzbl -0x1e0(%rbp,%rcx), %ecx
movq %rdx, (%rax,%rcx,8)
jmp 0x19ec
jmp 0x19e7
jmp 0x1619
movq -0x218(%rbp), %rax
movq 0x8(%rax), %rax
movb $0x0, 0x18(%rax)
movq -0x1b0(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x220, %rsp            # imm = 0x220
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)