// File: chahk0129[P]hash_bench/./index/cuckoo_hash.h
// Function: CuckooHash<char [32]>::execute_path(std::vector<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&, char (&) [32], long, bool)
bool CuckooHash<Key_t>::execute_path(vector<pair<size_t,string>>& path, Key_t& key, Value_t value, bool flag) {
  for (int i = path.size()-1; i > 0; --i) {
	  memcpy(table[path[i].first].key, table[path[i-1].first].key, sizeof(Key_t));
	  memcpy(&table[path[i].first].value, &table[path[i-1].first].value,sizeof(Value_t));
	 // memcpy(&table[path[i].first], &table[path[i-1].first], sizeof(Pair<Key_t>));
    //table[path[i].first] = table[path[i-1].first];
  }
  memcpy(table[path[0].first].key, key, sizeof(Key_t));
  memcpy(&table[path[0].first].value, &value, sizeof(Value_t));
  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movb %r8b, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
andb $0x1, %al
movb %al, -0x21(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1fb60
subq $0x1, %rax
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
jle 0x200fc
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x28(%rbp), %rsi
callq 0x1fb90
movq -0x60(%rbp), %rcx
movq %rax, %rdx
movq -0x30(%rbp), %rax
imulq $0x28, (%rdx), %rdx
addq %rdx, %rcx
movq %rcx, -0x50(%rbp)
movq 0x38(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x1fb90
movq -0x58(%rbp), %rdx
movq -0x50(%rbp), %rcx
movq %rax, %rsi
movq -0x30(%rbp), %rax
imulq $0x28, (%rsi), %rsi
addq %rsi, %rdx
movq (%rdx), %rsi
movq %rsi, (%rcx)
movq 0x8(%rdx), %rsi
movq %rsi, 0x8(%rcx)
movq 0x10(%rdx), %rsi
movq %rsi, 0x10(%rcx)
movq 0x18(%rdx), %rdx
movq %rdx, 0x18(%rcx)
movq 0x38(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x28(%rbp), %rsi
callq 0x1fb90
movq -0x48(%rbp), %rcx
movq %rax, %rdx
movq -0x30(%rbp), %rax
imulq $0x28, (%rdx), %rdx
addq %rdx, %rcx
movq %rcx, -0x38(%rbp)
movq 0x38(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x1fb90
movq -0x40(%rbp), %rcx
movq %rax, %rdx
movq -0x38(%rbp), %rax
imulq $0x28, (%rdx), %rdx
addq %rdx, %rcx
movq 0x20(%rcx), %rcx
movq %rcx, 0x20(%rax)
movl -0x28(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x20008
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fb90
movq -0x70(%rbp), %rcx
movq %rax, %rdx
movq -0x30(%rbp), %rax
imulq $0x28, (%rdx), %rdx
addq %rdx, %rcx
movq -0x18(%rbp), %rdx
movq (%rdx), %rsi
movq %rsi, (%rcx)
movq 0x8(%rdx), %rsi
movq %rsi, 0x8(%rcx)
movq 0x10(%rdx), %rsi
movq %rsi, 0x10(%rcx)
movq 0x18(%rdx), %rdx
movq %rdx, 0x18(%rcx)
movq 0x38(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fb90
movq %rax, %rcx
movq -0x68(%rbp), %rax
imulq $0x28, (%rcx), %rcx
addq %rcx, %rax
movq -0x20(%rbp), %rcx
movq %rcx, 0x20(%rax)
movb $0x1, %al
andb $0x1, %al
addq $0x70, %rsp
popq %rbp
retq
nop