// File: /workspace/github_cpp_makefile_star2_O2/sile[P]mphf/./generator.hh
// Function: MPHF::Generator::assigning()
void assigning() {
      std::vector<bool> visited(hash_value_limit, false);
      std::vector<char> assign_tmp(hash_value_limit, 2);

      for(unsigned i=0; i < key_count; i++) {
	for(unsigned nth=0; nth < 2; nth++) {
	  unsigned v = graph[i][nth];
	  if(visited[v] == false) {
	    char tmp = nth;
	    for(unsigned nth=0; nth < 2; nth++)
	      tmp -= assign_tmp[graph[i][nth]];
	    assign_tmp[v] = abs(tmp%2);
	    break;
	  }
	}

	for(unsigned nth=0; nth < 2; nth++)
	  visited[graph[i][nth]] = true;
      }
      delete [] graph;
      graph = NULL;

      rank_bv        = BitVector::allocate(hash_value_limit, true);
      hash_assign_bv = BitVector::allocate(key_count, false);

      unsigned use_value_count=0;
      for(unsigned i=0; i < hash_value_limit; i++) {
	if(assign_tmp[i] != 2) {
	  if(assign_tmp[i] == 1)
	    hash_assign_bv->set_1bit(use_value_count);
	  use_value_count++;
	  
	  rank_bv->set_1bit(i);
	}
      }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
movl 0x2c(%rdi), %esi
leaq 0x8(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x20(%rsp), %rdi
leaq 0x6(%rsp), %r14
movq %r14, %rcx
callq 0x3358
movl 0x2c(%rbx), %esi
movb $0x2, (%r14)
leaq 0x8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
leaq 0x7(%rsp), %rcx
callq 0x33bc
xorl %r12d, %r12d
leaq 0x20(%rsp), %r14
xorl %r13d, %r13d
movl 0x28(%rbx), %eax
cmpq %rax, %r13
jae 0x293c
xorl %ebp, %ebp
cmpq $0x2, %rbp
je 0x290c
movq 0x10(%rbx), %rax
addq %r12, %rax
movl (%rax,%rbp,4), %r15d
movq %r14, %rdi
movq %r15, %rsi
callq 0x341a
testq %rdx, (%rax)
je 0x28de
incq %rbp
jmp 0x28b8
movq 0x8(%rsp), %rax
movq 0x10(%rbx), %rcx
addq %r12, %rcx
xorl %edx, %edx
cmpq $0x2, %rdx
je 0x2904
movl (%rcx,%rdx,4), %esi
movzbl (%rax,%rsi), %esi
movsbl %bpl, %ebp
subl %esi, %ebp
incq %rdx
jmp 0x28ec
andb $0x1, %bpl
movb %bpl, (%rax,%r15)
xorl %r15d, %r15d
cmpq $0x2, %r15
je 0x2930
movq 0x10(%rbx), %rax
addq %r12, %rax
movl (%rax,%r15,4), %esi
movq %r14, %rdi
callq 0x341a
orq %rdx, (%rax)
incq %r15
jmp 0x290f
incq %r13
addq $0x8, %r12
jmp 0x28aa
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x294a
callq 0x21b0
andq $0x0, 0x10(%rbx)
movl 0x2c(%rbx), %edi
pushq $0x1
popq %rbp
movl %ebp, %esi
callq 0x3438
movq %rax, 0x18(%rbx)
movl 0x28(%rbx), %edi
xorl %r14d, %r14d
xorl %esi, %esi
callq 0x3438
movq %rax, 0x20(%rbx)
movq 0x8(%rsp), %rsi
movq 0x18(%rbx), %rdi
xorl %edx, %edx
movl 0x2c(%rbx), %ecx
cmpq %rcx, %rdx
jae 0x29c8
movzbl (%rsi,%rdx), %ecx
cmpl $0x2, %ecx
je 0x29c3
cmpl $0x1, %ecx
jne 0x29a9
movq 0x8(%rax), %r8
movl %ebp, %r9d
movl %r14d, %ecx
shll %cl, %r9d
movl %r14d, %ecx
shrl $0x5, %ecx
orl %r9d, (%r8,%rcx,4)
incl %r14d
movq 0x8(%rdi), %r8
movl %ebp, %r9d
movl %edx, %ecx
shll %cl, %r9d
movq %rdx, %rcx
shrq $0x5, %rcx
orl %r9d, (%r8,%rcx,4)
incq %rdx
jmp 0x297c
leaq 0x8(%rsp), %rdi
callq 0x3604
leaq 0x20(%rsp), %rdi
callq 0x34bc
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x2a01
jmp 0x29f4
jmp 0x29f4
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3604
leaq 0x20(%rsp), %rdi
callq 0x34bc
movq %rbx, %rdi
callq 0x2220
nop