// File: /workspace/github_cpp_makefile_star2_O3/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 %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
movl 0x2c(%rdi), %esi
leaq 0x10(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x28(%rsp), %rdi
leaq 0xe(%rsp), %r14
movq %r14, %rcx
callq 0x380a
movl 0x2c(%rbx), %esi
movb $0x2, (%r14)
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
leaq 0xf(%rsp), %rcx
callq 0x3872
cmpl $0x0, 0x28(%rbx)
movq 0x10(%rbx), %rdi
je 0x2d4f
movq 0x28(%rsp), %rdx
xorl %eax, %eax
leaq (%rdi,%rax,8), %rcx
movb $0x1, %r9b
xorl %esi, %esi
movl (%rcx,%rsi,4), %r8d
movl %r8d, %r10d
shrl $0x6, %r10d
movq (%rdx,%r10,8), %r10
btq %r8, %r10
jae 0x2cd0
movl $0x1, %esi
testb $0x1, %r9b
movl $0x0, %r9d
jne 0x2ca8
jmp 0x2d0d
movb $0x1, %dil
movq 0x10(%rsp), %rdx
xorl %r9d, %r9d
movl (%rcx,%r9,4), %r9d
movzbl (%rdx,%r9), %r9d
movsbl %sil, %esi
subl %r9d, %esi
movl $0x1, %r9d
testb $0x1, %dil
movl $0x0, %edi
jne 0x2cdb
andb $0x1, %sil
movb %sil, (%rdx,%r8)
movq 0x10(%rbx), %rdi
movq 0x28(%rsp), %rdx
leaq (%rdi,%rax,8), %rsi
movb $0x1, %r8b
xorl %ecx, %ecx
movl (%rsi,%rcx,4), %ecx
movl %ecx, %r9d
movl $0x1, %r10d
shlq %cl, %r10
shrl $0x6, %r9d
orq %r10, (%rdx,%r9,8)
movl $0x1, %ecx
testb $0x1, %r8b
movl $0x0, %r8d
jne 0x2d16
incq %rax
movl 0x28(%rbx), %ecx
cmpq %rcx, %rax
jb 0x2c9f
jmp 0x2d54
testq %rdi, %rdi
je 0x2d59
callq 0x21c0
movq $0x0, 0x10(%rbx)
movl 0x2c(%rbx), %edi
movl $0x1, %esi
callq 0x38d2
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)
movl 0x2c(%rbx), %ecx
movq 0x10(%rsp), %rdi
testl %ecx, %ecx
je 0x2e13
xorl %eax, %eax
xorl %edx, %edx
movzbl (%rdi,%rax), %esi
cmpl $0x2, %esi
je 0x2e07
cmpl $0x1, %esi
jne 0x2dea
movl $0x1, %esi
movl %edx, %ecx
shll %cl, %esi
movl %edx, %ecx
shrl $0x5, %ecx
orl %esi, (%r15,%rcx,4)
movl $0x1, %esi
movl %eax, %ecx
shll %cl, %esi
incl %edx
movq 0x8(%r14), %rcx
movq %rax, %r8
shrq $0x5, %r8
orl %esi, (%rcx,%r8,4)
movl 0x2c(%rbx), %ecx
incq %rax
movl %ecx, %esi
cmpq %rsi, %rax
jb 0x2dca
jmp 0x2e18
testq %rdi, %rdi
je 0x2e25
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x2e3c
movq 0x48(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
jmp 0x2e69
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2e69
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x2e80
movq 0x48(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq %rbx, %rdi
callq 0x2240