// File: 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:
subq $0x2b8, %rsp            # imm = 0x2B8
movq 0x2c0(%rsp), %rax
movq %rdi, 0x2b0(%rsp)
movq %rsi, 0x2a8(%rsp)
movq %rdx, 0x2a0(%rsp)
movq %rcx, 0x298(%rsp)
movq %r8, 0x290(%rsp)
movq %r9, 0x288(%rsp)
movq 0x2a0(%rsp), %rax
movl $0x3, (%rax)
movq 0x298(%rsp), %rax
movl $0x4, (%rax)
movq 0x290(%rsp), %rax
movl $0xa, (%rax)
movq 0x288(%rsp), %rax
movl $0x3, (%rax)
movq 0x2c0(%rsp), %rax
movl $0x2, (%rax)
leaq 0x80(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x2200
movq 0x8(%rsp), %rdi
movq 0x2b0(%rsp), %rsi
movl $0x8, %edx
callq 0x2120
jmp 0x3100
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x3114
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x3128
leaq 0x10(%rsp), %rdi
callq 0x2310
movl %eax, %ecx
movq 0x2a8(%rsp), %rax
movl %ecx, (%rax)
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x80(%rsp,%rax), %rdi
callq 0x23f0
movb %al, 0x7(%rsp)
jmp 0x315d
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x31c7
jmp 0x3167
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x317b
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x318f
leaq 0x10(%rsp), %rdi
callq 0x2310
movl %eax, %ecx
movq 0x2a0(%rsp), %rax
movl %ecx, (%rax)
jmp 0x31c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x2080
jmp 0x3387
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x80(%rsp,%rax), %rdi
callq 0x23f0
movb %al, 0x6(%rsp)
jmp 0x31e6
movb 0x6(%rsp), %al
testb $0x1, %al
jne 0x322e
jmp 0x31f0
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x3204
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x3218
leaq 0x10(%rsp), %rdi
callq 0x2310
movl %eax, %ecx
movq 0x298(%rsp), %rax
movl %ecx, (%rax)
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x80(%rsp,%rax), %rdi
callq 0x23f0
movb %al, 0x5(%rsp)
jmp 0x324d
movb 0x5(%rsp), %al
testb $0x1, %al
jne 0x3295
jmp 0x3257
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x326b
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x327f
leaq 0x10(%rsp), %rdi
callq 0x2310
movl %eax, %ecx
movq 0x290(%rsp), %rax
movl %ecx, (%rax)
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x80(%rsp,%rax), %rdi
callq 0x23f0
movb %al, 0x4(%rsp)
jmp 0x32b4
movb 0x4(%rsp), %al
testb $0x1, %al
jne 0x32fc
jmp 0x32be
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x32d2
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x32e6
leaq 0x10(%rsp), %rdi
callq 0x2310
movl %eax, %ecx
movq 0x288(%rsp), %rax
movl %ecx, (%rax)
movq 0x80(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x80(%rsp,%rax), %rdi
callq 0x23f0
movb %al, 0x3(%rsp)
jmp 0x331b
movb 0x3(%rsp), %al
testb $0x1, %al
jne 0x3363
jmp 0x3325
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x3339
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x35d0
jmp 0x334d
leaq 0x10(%rsp), %rdi
callq 0x2310
movl %eax, %ecx
movq 0x2c0(%rsp), %rax
movl %ecx, (%rax)
leaq 0x80(%rsp), %rdi
callq 0x2060
jmp 0x3372
leaq 0x80(%rsp), %rdi
callq 0x2080
addq $0x2b8, %rsp            # imm = 0x2B8
retq
movq 0x78(%rsp), %rdi
callq 0x23c0
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)