// File: /workspace/github_cpp_makefile_star2_O1/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 0x30(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
leaq 0x6(%rsp), %r14
movq %r14, %rcx
callq 0x3856
movl 0x2c(%rbx), %esi
movb $0x2, (%r14)
leaq 0x30(%rsp), %rdi
leaq 0x6(%rsp), %rdx
leaq 0x7(%rsp), %rcx
callq 0x38be
cmpl $0x0, 0x28(%rbx)
je 0x2d45
xorl %eax, %eax
xorl %edx, %edx
xorl %esi, %esi
movq 0x10(%rbx), %rdi
leaq (%rdi,%rdx,8), %rcx
movl %esi, %r8d
movl (%rcx,%r8,4), %ecx
movq 0x8(%rsp), %r9
movl $0x1, %r8d
shlq %cl, %r8
movl %ecx, %r10d
shrl $0x6, %r10d
andq (%r9,%r10,8), %r8
jne 0x2cfa
movq 0x30(%rsp), %r10
addq %rax, %rdi
xorl %r11d, %r11d
movl %esi, %r9d
movl (%rdi,%r11,4), %r14d
movzbl (%r10,%r14), %ebp
movsbl %r9b, %r9d
subl %ebp, %r9d
incq %r11
cmpq $0x1, %r11
je 0x2ccf
andb $0x1, %r9b
movq 0x30(%rsp), %rdi
movb %r9b, (%rdi,%rcx)
testq %r8, %r8
je 0x2d02
testl %esi, %esi
jne 0x2d02
incl %esi
jmp 0x2c97
movq 0x8(%rsp), %rsi
movq 0x10(%rbx), %rdi
addq %rax, %rdi
xorl %r8d, %r8d
movl (%rdi,%r8,4), %ecx
movl %ecx, %r9d
movl $0x1, %r10d
shlq %cl, %r10
shrl $0x6, %r9d
orq %r10, (%rsi,%r9,8)
incq %r8
cmpq $0x1, %r8
je 0x2d11
incq %rdx
movl 0x28(%rbx), %ecx
addq $0x8, %rax
cmpq %rcx, %rdx
jb 0x2c95
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x2d53
callq 0x21c0
movq $0x0, 0x10(%rbx)
movl 0x2c(%rbx), %edi
movl $0x1, %esi
callq 0x391e
movq %rax, %r14
movq %rax, 0x18(%rbx)
movl 0x28(%rbx), %r13d
leal 0x1f(%r13), %r12d
shrl $0x3, %r12d
andl $-0x4, %r12d
movq %r12, %rdi
callq 0x2030
movq %rax, %r15
movq %rax, %rdi
xorl %esi, %esi
movq %r12, %rdx
callq 0x20e0
movl $0x18, %edi
callq 0x2170
movl %r13d, (%rax)
movq %r15, 0x8(%rax)
movq $0x0, 0x10(%rax)
movq %rax, 0x20(%rbx)
cmpl $0x0, 0x2c(%rbx)
je 0x2e08
xorl %eax, %eax
movq 0x30(%rsp), %rsi
xorl %edx, %edx
movzbl (%rsi,%rax), %ecx
cmpl $0x2, %ecx
je 0x2dfd
cmpl $0x1, %ecx
jne 0x2de3
movl $0x1, %edi
movl %edx, %ecx
shll %cl, %edi
movl %edx, %ecx
shrl $0x5, %ecx
orl %edi, (%r15,%rcx,4)
incl %edx
movq 0x8(%r14), %rdi
movl $0x1, %r8d
movl %eax, %ecx
shll %cl, %r8d
movl %eax, %ecx
shrl $0x5, %ecx
orl %r8d, (%rdi,%rcx,4)
incq %rax
movl 0x2c(%rbx), %ecx
cmpq %rcx, %rax
jb 0x2dc3
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x2e1f
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x2e4f
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
xorl %eax, %eax
movq %rax, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movl %eax, 0x20(%rsp)
movq %rax, 0x28(%rsp)
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x2e7d
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x2e7d
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x2ead
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
xorl %eax, %eax
movq %rax, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movl %eax, 0x20(%rsp)
movq %rax, 0x28(%rsp)
movq %rbx, %rdi
callq 0x2240
nop