// File: /workspace/github_cpp_makefile_star2_O3/nikosgalanis[P]Vectors-Similarity-Search-and-Clustering/programs/common/io_utils.cc
// Function: parse_clustering_config(char*, int*, int*, int*, int*, int*, int*)
void parse_clustering_config(char* file, int* k, int* l_lsh, int* k_lsh,
	int* M_hc, int* k_hc, int* probes_hc) {
		// default arguments
		*l_lsh = 3; *k_lsh = 4; *M_hc = 10; *k_hc = 3; *probes_hc = 2;
		// open the config file 
		ifstream config;
		config.open(file);
		char data[100];
		// garbage for k
		config >> data;

		config >> data;
		*k = atoi(data);

		if (! config.eof()) {
			// garbage
			config >> data;

			config >> data;
			*l_lsh = atoi(data);
		}

		if (! config.eof()) {
			// garbage
			config >> data;

			config >> data;
			*k_lsh = atoi(data);
		}

		if (! config.eof()) {
			// garbage
			config >> data;

			config >> data;
			*M_hc = atoi(data);
		}

		if (! config.eof()) {
			// garbage
			config >> data;

			config >> data;
			*k_hc = atoi(data);
		}

		if (! config.eof()) {
			// garbage
			config >> data;

			config >> data;
			*probes_hc = atoi(data);
		}
		config.close();
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x278, %rsp            # imm = 0x278
movq %r8, %r14
movq %rcx, %r15
movq %rdx, %r12
movq %rsi, %r13
movq %rdi, %rbp
movq 0x2b0(%rsp), %rcx
movl $0x3, %eax
movl %eax, (%rdx)
movl $0x4, (%r15)
movl $0xa, (%r8)
movq %r9, (%rsp)
movl %eax, (%r9)
movl $0x2, (%rcx)
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x2250
movq %rbx, %rdi
movq %rbp, %rsi
movl $0x8, %edx
callq 0x2150
leaq 0x8(%rsp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
movq 0x18(%rsp,%rax), %rbx
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rcx
movq -0x18(%rcx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x2ec8
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x2ec8
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x330b
movq -0x18(%rcx), %rax
movq 0x18(%rsp,%rax), %rbp
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rbx
movq -0x18(%rbx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x2f18
addq $-0x65, %rbp
cmpq $-0x65, %rbp
ja 0x2f18
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3340
leaq 0x210(%rsp), %rdi
callq 0x2340
movl %eax, (%r13)
movq -0x18(%rbx), %rax
movl 0x28(%rsp,%rax), %ecx
testb $0x2, %cl
jne 0x2fef
movq 0x18(%rsp,%rax), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rcx
movq -0x18(%rcx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x2f86
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x2f86
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3375
movq -0x18(%rcx), %rax
movq 0x18(%rsp,%rax), %r13
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rbx
movq -0x18(%rbx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x2fd6
addq $-0x65, %r13
cmpq $-0x65, %r13
ja 0x2fd6
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x33df
leaq 0x210(%rsp), %rdi
callq 0x2340
movl %eax, (%r12)
movq -0x18(%rbx), %rax
movl 0x28(%rsp,%rax), %ecx
testb $0x2, %cl
jne 0x30ac
movq 0x18(%rsp,%rax), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rcx
movq -0x18(%rcx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x3044
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x3044
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x33aa
movq -0x18(%rcx), %rax
movq 0x18(%rsp,%rax), %r12
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rbx
movq -0x18(%rbx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x3094
addq $-0x65, %r12
cmpq $-0x65, %r12
ja 0x3094
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3449
leaq 0x210(%rsp), %rdi
callq 0x2340
movl %eax, (%r15)
movq -0x18(%rbx), %rax
movl 0x28(%rsp,%rax), %ecx
testb $0x2, %cl
jne 0x3169
movq 0x18(%rsp,%rax), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rcx
movq -0x18(%rcx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x3101
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x3101
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3414
movq -0x18(%rcx), %rax
movq 0x18(%rsp,%rax), %r15
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rbx
movq -0x18(%rbx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x3151
addq $-0x65, %r15
cmpq $-0x65, %r15
ja 0x3151
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x34b3
leaq 0x210(%rsp), %rdi
callq 0x2340
movl %eax, (%r14)
movq -0x18(%rbx), %rax
movl 0x28(%rsp,%rax), %ecx
testb $0x2, %cl
jne 0x3229
movq 0x18(%rsp,%rax), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rcx
movq -0x18(%rcx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x31be
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x31be
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x347e
movq -0x18(%rcx), %rax
movq 0x18(%rsp,%rax), %r14
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rbx
movq -0x18(%rbx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x320e
addq $-0x65, %r14
cmpq $-0x65, %r14
ja 0x320e
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x351d
leaq 0x210(%rsp), %rdi
callq 0x2340
movq (%rsp), %rcx
movl %eax, (%rcx)
movq -0x18(%rbx), %rax
movl 0x28(%rsp,%rax), %ecx
testb $0x2, %cl
jne 0x32e5
movq 0x18(%rsp,%rax), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rcx
movq -0x18(%rcx), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x327e
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x327e
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x34e8
movq -0x18(%rcx), %rax
movq 0x18(%rsp,%rax), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x210(%rsp), %rsi
movl $0x64, %edx
callq 0x23e0
movq 0x8(%rsp), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x32ce
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x32ce
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3552
leaq 0x210(%rsp), %rdi
callq 0x2340
movq 0x2b0(%rsp), %rcx
movl %eax, (%rcx)
leaq 0x8(%rsp), %rdi
callq 0x2070
leaq 0x8(%rsp), %rdi
callq 0x2080
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rcx
cmpl $-0x1, %eax
jne 0x2ec8
movq -0x18(%rcx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rcx
jmp 0x2ec8
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rbx
cmpl $-0x1, %eax
jne 0x2f18
movq -0x18(%rbx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rbx
jmp 0x2f18
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rcx
cmpl $-0x1, %eax
jne 0x2f86
movq -0x18(%rcx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rcx
jmp 0x2f86
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rcx
cmpl $-0x1, %eax
jne 0x3044
movq -0x18(%rcx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rcx
jmp 0x3044
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rbx
cmpl $-0x1, %eax
jne 0x2fd6
movq -0x18(%rbx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rbx
jmp 0x2fd6
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rcx
cmpl $-0x1, %eax
jne 0x3101
movq -0x18(%rcx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rcx
jmp 0x3101
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rbx
cmpl $-0x1, %eax
jne 0x3094
movq -0x18(%rbx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rbx
jmp 0x3094
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rcx
cmpl $-0x1, %eax
jne 0x31be
movq -0x18(%rcx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rcx
jmp 0x31be
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rbx
cmpl $-0x1, %eax
jne 0x3151
movq -0x18(%rbx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rbx
jmp 0x3151
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rcx
cmpl $-0x1, %eax
jne 0x327e
movq -0x18(%rcx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rcx
jmp 0x327e
movq (%rdi), %rax
callq *0x48(%rax)
movq 0x8(%rsp), %rbx
cmpl $-0x1, %eax
jne 0x320e
movq -0x18(%rbx), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
movq 0x8(%rsp), %rbx
jmp 0x320e
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x32ce
movq 0x8(%rsp), %rax
movq -0x18(%rax), %rax
leaq (%rsp,%rax), %rdi
addq $0x8, %rdi
movl 0x20(%rdi), %esi
orl $0x2, %esi
callq 0x23c0
jmp 0x32ce
jmp 0x3584
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x2080
movq %rbx, %rdi
callq 0x2400
nop