// File: /workspace/github_cpp_makefile_star2_O2/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 $0x288, %rsp            # imm = 0x288
movq %r8, %r14
movq %rcx, %r15
movq %rdx, %r12
movq %rsi, %r13
movq %rdi, %rbp
movq 0x2c0(%rsp), %rcx
pushq $0x3
popq %rax
movl %eax, (%rdx)
movl $0x4, (%r15)
movl $0xa, (%r8)
movq %r9, 0x8(%rsp)
movl %eax, (%r9)
movl $0x2, (%rcx)
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
callq 0x21f0
pushq $0x8
popq %rdx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x2130
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x10(%rsp), %rdi
callq 0x22d0
movl %eax, (%r13)
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
movl 0xa0(%rsp,%rax), %eax
testb $0x2, %al
jne 0x2d32
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x10(%rsp), %rdi
callq 0x22d0
movl %eax, (%r12)
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
movl 0xa0(%rsp,%rax), %eax
testb $0x2, %al
jne 0x2d7a
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x10(%rsp), %rdi
callq 0x22d0
movl %eax, (%r15)
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
movl 0xa0(%rsp,%rax), %eax
testb $0x2, %al
jne 0x2dc2
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x10(%rsp), %rdi
callq 0x22d0
movl %eax, (%r14)
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
movl 0xa0(%rsp,%rax), %eax
testb $0x2, %al
jne 0x2e0e
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x10(%rsp), %rdi
callq 0x22d0
movq 0x8(%rsp), %rcx
movl %eax, (%rcx)
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
movl 0xa0(%rsp,%rax), %eax
testb $0x2, %al
jne 0x2e4a
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2eff
leaq 0x10(%rsp), %rdi
callq 0x22d0
movq 0x2c0(%rsp), %rcx
movl %eax, (%rcx)
leaq 0x80(%rsp), %rdi
callq 0x2060
leaq 0x80(%rsp), %rdi
callq 0x2070
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2e78
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x2070
movq %rbx, %rdi
callq 0x2380