// File: rtackx[P]ComSim/main.cpp
// Function: select_similarity(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Graph*&)
Projection* select_similarity(string similarity_index, Graph*& in_graph)
{
	if(similarity_index == "cn")
		return new CommonNeighbors(in_graph);
	else if(similarity_index == "ji")
		return new JaccardIndex(in_graph);
	else if(similarity_index == "aa")
		return new AdamicAdar(in_graph);
	else if(similarity_index == "ra")
		return new ResourceAllocator(in_graph);
	else if(similarity_index == "lhn")
		return new LHN1(in_graph);
	else if(similarity_index == "pan")
		return new PA_Neighbor(in_graph);

  return NULL;
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x38(%rsp)
movq %rdi, 0x58(%rsp)
movq %rsi, 0x50(%rsp)
leaq 0x1e620(%rip), %rsi     # 0x227ca
callq 0x5380
testb $0x1, %al
jne 0x41b5
jmp 0x4202
movl $0x20, %edi
callq 0x3250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x30(%rsp)
movq 0x50(%rsp), %rsi
callq 0xf420
jmp 0x41d6
movq 0x30(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x4400
movq 0x30(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
callq 0x3220
jmp 0x440a
movq 0x38(%rsp), %rdi
leaq 0x1e5bf(%rip), %rsi     # 0x227cd
callq 0x5380
testb $0x1, %al
jne 0x4219
jmp 0x4266
movl $0x20, %edi
callq 0x3250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x28(%rsp)
movq 0x50(%rsp), %rsi
callq 0xf700
jmp 0x423a
movq 0x28(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x4400
movq 0x28(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
callq 0x3220
jmp 0x440a
movq 0x38(%rsp), %rdi
leaq 0x1e55e(%rip), %rsi     # 0x227d0
callq 0x5380
testb $0x1, %al
jne 0x427d
jmp 0x42ca
movl $0x20, %edi
callq 0x3250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x20(%rsp)
movq 0x50(%rsp), %rsi
callq 0xfa70
jmp 0x429e
movq 0x20(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x4400
movq 0x20(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
callq 0x3220
jmp 0x440a
movq 0x38(%rsp), %rdi
leaq 0x1e4fd(%rip), %rsi     # 0x227d3
callq 0x5380
testb $0x1, %al
jne 0x42e1
jmp 0x432e
movl $0x20, %edi
callq 0x3250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x18(%rsp)
movq 0x50(%rsp), %rsi
callq 0xfc60
jmp 0x4302
movq 0x18(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x4400
movq 0x18(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
callq 0x3220
jmp 0x440a
movq 0x38(%rsp), %rdi
leaq 0x1e49c(%rip), %rsi     # 0x227d6
callq 0x5380
testb $0x1, %al
jne 0x4345
jmp 0x438f
movl $0x20, %edi
callq 0x3250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x10(%rsp)
movq 0x50(%rsp), %rsi
callq 0xfe20
jmp 0x4366
movq 0x10(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x4400
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
callq 0x3220
jmp 0x440a
movq 0x38(%rsp), %rdi
leaq 0x1e43f(%rip), %rsi     # 0x227da
callq 0x5380
testb $0x1, %al
jne 0x43a6
jmp 0x43ed
movl $0x20, %edi
callq 0x3250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
movq 0x50(%rsp), %rsi
callq 0x101b0
jmp 0x43c7
movq 0x8(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x4400
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
callq 0x3220
jmp 0x440a
jmp 0x43ef
jmp 0x43f1
jmp 0x43f3
jmp 0x43f5
jmp 0x43f7
movq $0x0, 0x60(%rsp)
movq 0x60(%rsp), %rax
addq $0x68, %rsp
retq
movq 0x48(%rsp), %rdi
callq 0x3400
nopw %cs:(%rax,%rax)