// File: /workspace/github_cpp_makefile_star2_O1/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), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x2e90
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x2e90
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x32f4
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), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x2ee3
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x2ee3
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3324
leaq 0x210(%rsp), %rdi
callq 0x2340
movl %eax, (%r13)
movq 0x8(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x28(%rsp,%rax)
jne 0x2fb8
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 0x2f54
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x2f54
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3354
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), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x2fa7
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x2fa7
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x33b4
leaq 0x210(%rsp), %rdi
callq 0x2340
movl %eax, (%r12)
movq 0x8(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x28(%rsp,%rax)
jne 0x307b
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 0x3018
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x3018
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3384
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), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x306b
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x306b
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3414
leaq 0x210(%rsp), %rdi
callq 0x2340
movl %eax, (%r15)
movq 0x8(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x28(%rsp,%rax)
jne 0x313e
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 0x30db
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x30db
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x33e4
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), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x312e
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x312e
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3474
leaq 0x210(%rsp), %rdi
callq 0x2340
movl %eax, (%r14)
movq 0x8(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x28(%rsp,%rax)
jne 0x3204
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 0x319e
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x319e
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3444
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), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x31f1
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x31f1
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x34d4
leaq 0x210(%rsp), %rdi
callq 0x2340
movq (%rsp), %rcx
movl %eax, (%rcx)
movq 0x8(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x28(%rsp,%rax)
jne 0x32ce
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 0x3264
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x3264
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x34a4
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), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x28(%rsp,%rax)
jne 0x32b7
addq $-0x65, %rbx
cmpq $-0x65, %rbx
ja 0x32b7
movq 0xf0(%rsp,%rax), %rdi
movq 0x10(%rdi), %rax
cmpq 0x18(%rdi), %rax
jae 0x3504
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)
cmpl $-0x1, %eax
jne 0x2e90
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 0x2e90
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x2ee3
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 0x2ee3
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x2f54
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 0x2f54
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x3018
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 0x3018
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x2fa7
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 0x2fa7
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x30db
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 0x30db
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x306b
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 0x306b
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x319e
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 0x319e
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x312e
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 0x312e
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x3264
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 0x3264
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x31f1
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 0x31f1
movq (%rdi), %rax
callq *0x48(%rax)
cmpl $-0x1, %eax
jne 0x32b7
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 0x32b7
jmp 0x3536
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x2080
movq %rbx, %rdi
callq 0x2400
nop