// File: 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
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movl 0x2c(%rax), %eax
movq %rax, -0xb8(%rbp)
movb $0x0, -0x31(%rbp)
leaq -0x32(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x4a40
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rcx
leaq -0x30(%rbp), %rdi
leaq -0x31(%rbp), %rdx
callq 0x4a60
jmp 0x2cf5
leaq -0x32(%rbp), %rdi
callq 0x4ae0
movq -0xc0(%rbp), %rax
movl 0x2c(%rax), %eax
movq %rax, -0xd0(%rbp)
movb $0x2, -0x61(%rbp)
leaq -0x62(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x22c0
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rcx
leaq -0x60(%rbp), %rdi
leaq -0x61(%rbp), %rdx
callq 0x4b00
jmp 0x2d40
leaq -0x62(%rbp), %rdi
callq 0x21c0
movl $0x0, -0x68(%rbp)
movq -0xc0(%rbp), %rcx
movl -0x68(%rbp), %eax
cmpl 0x28(%rcx), %eax
jae 0x2f80
movl $0x0, -0x6c(%rbp)
cmpl $0x2, -0x6c(%rbp)
jae 0x2ee2
movq -0xc0(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x68(%rbp), %ecx
leaq (%rax,%rcx,8), %rdi
movl -0x6c(%rbp), %esi
callq 0x3a10
movl (%rax), %eax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
movl %eax, %esi
leaq -0x30(%rbp), %rdi
callq 0x4b80
movq %rdx, -0xe0(%rbp)
movq %rax, -0xd8(%rbp)
jmp 0x2db1
movq -0xe0(%rbp), %rax
movq -0xd8(%rbp), %rcx
movq %rcx, -0x80(%rbp)
movq %rax, -0x78(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x4be0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x2ed2
movl -0x6c(%rbp), %eax
movb %al, -0x81(%rbp)
movl $0x0, -0x88(%rbp)
cmpl $0x2, -0x88(%rbp)
jae 0x2e9c
movq -0xc0(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x68(%rbp), %eax
shlq $0x3, %rax
addq %rax, %rdi
movl -0x88(%rbp), %esi
callq 0x3a10
movl (%rax), %eax
movl %eax, %esi
leaq -0x60(%rbp), %rdi
callq 0x4c10
movsbl (%rax), %ecx
movsbl -0x81(%rbp), %eax
subl %ecx, %eax
movb %al, -0x81(%rbp)
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
jmp 0x2df1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x32(%rbp), %rdi
callq 0x4ae0
jmp 0x30d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x62(%rbp), %rdi
callq 0x21c0
jmp 0x30cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x4de0
jmp 0x30cf
movsbl -0x81(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %edx, %eax
negl %eax
cmovnsl %eax, %edx
movb %dl, %al
movb %al, -0xe1(%rbp)
movl -0x70(%rbp), %eax
movl %eax, %esi
leaq -0x60(%rbp), %rdi
callq 0x4c10
movb -0xe1(%rbp), %cl
movb %cl, (%rax)
jmp 0x2ee2
jmp 0x2ed4
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x2d6a
movl $0x0, -0x8c(%rbp)
cmpl $0x2, -0x8c(%rbp)
jae 0x2f70
movq -0xc0(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x68(%rbp), %ecx
leaq (%rax,%rcx,8), %rdi
movl -0x8c(%rbp), %esi
callq 0x3a10
movl (%rax), %eax
movl %eax, %esi
leaq -0x30(%rbp), %rdi
callq 0x4b80
movq %rdx, -0xf8(%rbp)
movq %rax, -0xf0(%rbp)
jmp 0x2f2f
movq -0xf8(%rbp), %rax
movq -0xf0(%rbp), %rcx
movq %rcx, -0xa0(%rbp)
movq %rax, -0x98(%rbp)
leaq -0xa0(%rbp), %rdi
movl $0x1, %esi
callq 0x4c30
movl -0x8c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c(%rbp)
jmp 0x2eec
jmp 0x2f72
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x2d50
movq -0xc0(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x100(%rbp)
cmpq $0x0, %rax
je 0x2fa4
movq -0x100(%rbp), %rdi
callq 0x2210
movq -0xc0(%rbp), %rax
movq $0x0, 0x10(%rax)
movl 0x2c(%rax), %edi
movl $0x1, %esi
callq 0x4c80
movq %rax, -0x108(%rbp)
jmp 0x2fc9
movq -0xc0(%rbp), %rax
movq -0x108(%rbp), %rcx
movq %rcx, 0x18(%rax)
movl 0x28(%rax), %edi
xorl %esi, %esi
callq 0x4c80
movq %rax, -0x110(%rbp)
jmp 0x2fee
movq -0xc0(%rbp), %rax
movq -0x110(%rbp), %rcx
movq %rcx, 0x20(%rax)
movl $0x0, -0xa4(%rbp)
movl $0x0, -0xa8(%rbp)
movq -0xc0(%rbp), %rcx
movl -0xa8(%rbp), %eax
cmpl 0x2c(%rcx), %eax
jae 0x30b4
movl -0xa8(%rbp), %eax
movl %eax, %esi
leaq -0x60(%rbp), %rdi
callq 0x4c10
movsbl (%rax), %eax
cmpl $0x2, %eax
je 0x309e
movl -0xa8(%rbp), %eax
movl %eax, %esi
leaq -0x60(%rbp), %rdi
callq 0x4c10
movsbl (%rax), %eax
cmpl $0x1, %eax
jne 0x3076
movq -0xc0(%rbp), %rax
movq 0x20(%rax), %rdi
movl -0xa4(%rbp), %esi
callq 0x4da0
jmp 0x3074
jmp 0x3076
movq -0xc0(%rbp), %rax
movl -0xa4(%rbp), %ecx
incl %ecx
movl %ecx, -0xa4(%rbp)
movq 0x18(%rax), %rdi
movl -0xa8(%rbp), %esi
callq 0x4da0
jmp 0x309c
jmp 0x309e
jmp 0x30a0
movl -0xa8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa8(%rbp)
jmp 0x3014
leaq -0x60(%rbp), %rdi
callq 0x4de0
leaq -0x30(%rbp), %rdi
callq 0x4e40
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x4e40
movq -0x40(%rbp), %rdi
callq 0x22b0
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)