// File: /workspace/github_cpp_makefile_star2_O1/massykezzoul[P]jeu-de-la-vie/population/population.cpp
// Function: Population::Population(int, char const**)
Population::Population(int argc,const char** argv)
	:T(new Cellule[1]),generation(1),alive(0),alloc(1),probability(0.25),dimension(10),graine(0),speed(100000) {
	Option_tab tableau;
	int i = 1;
	int j = -1;
	float proba = -1;
	int dimension = -1;
	int speed = -1;
	string config = "";

	while (i < argc) {
		j = -1;
		if (tableau.is_nom(argv[i])) {
			// Est une option avec son nom long spécifié
			j = tableau.get_option(tableau.cherche(&argv[i][2]));
		} else if (tableau.is_raccourci(argv[i])) {
			// Est une option avec son raccourci spécifié
			j = tableau.get_option(tableau.cherche(argv[i][1]));
		}

		switch (j) {
			case 0:
				/* help */
				affiche_help();
				exit(0);
				break;
			case 1:
				/* version */
				affiche_version();
				exit(0);
				break;
			case 2:
				/* dimension */
				if ( (i + 1 < argc)  &&  (argv[i+1][0] != '-') ) {
					++i; // passe à l'argument de l'option
					dimension = strtod(argv[i],NULL); // recupere l'entier
				} else {
					cerr << "Argument manquant pour '" << argv[i] <<"'"
						<< endl;
				}	
				break;
			case 3:
				/* config */
				if ((i + 1 < argc)  &&  (argv[i+1][0] != '-')) {
					++i; // passe à l'argument de l'option
					config = argv[i]; // recupere la chaine
				} else {
					cerr << "Argument manquant pour '" << argv[i] <<"'"
						<< endl;
				}	
				break;
			case 4:
				/* probability */
				if ((i + 1 < argc)  &&  (argv[i+1][0] != '-')) {
					++i; // passe à l'argument de l'option
					proba = strtod(argv[i],NULL); // recupere l'entier
				} else {
					cerr << "Argument manquant pour '" << argv[i] <<"'"
						<< endl;
				}	
				break;
			case 5:
				/* speed */
				if ((i + 1 < argc)  &&  (argv[i+1][0] != '-')) {
					++i; // passe à l'argument de l'option
					speed = strtod(argv[i],NULL); // recupere l'entier
				} else {
					cerr << "Argument manquant pour '" << argv[i] <<"'"
						<< endl;
				}	
				break;
			default:
				cerr << "L'option \"" << argv[i] 
					<< "\" n'existe pas" << endl;
				break;
			}
			++i;
	}

	if (config != "") {
		// Initialisation avec un fichier de configuration
		string ligne,cle,valeur;
		ifstream file(config.c_str());
		if(file) {
			while (getline(file,ligne))
				if ( extraire_cle_valeur(ligne,cle,valeur) )
					set_cle_valeur(*this,cle,valeur);
		} else
			cerr << "Lecture du fichier de configuration impossible" << endl;
	}

	if (proba != -1) set_probability(proba);
	if (dimension != -1) set_dimension(dimension);
	if (speed != -1) set_speed(speed);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x668, %rsp            # imm = 0x668
movq %rdx, %r14
movl %esi, (%rsp)
movq %rdi, %rbx
movl $0x20, %edi
callq 0x2030
movq %rax, %r15
movq %rax, %rdi
callq 0x506c
movq %r15, (%rbx)
movl $0x1, %eax
movq %rax, 0x8(%rbx)
xorl %ecx, %ecx
movq %rcx, 0x10(%rbx)
movq %rax, 0x18(%rbx)
movl $0x3e800000, 0x20(%rbx) # imm = 0x3E800000
movq $0xa, 0x28(%rbx)
movq %rcx, 0x30(%rbx)
movl $0x186a0, 0x38(%rbx)    # imm = 0x186A0
leaq 0x340(%rsp), %rdi
callq 0x61b4
leaq 0x28(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4398(%rip), %rdx      # 0x70aa
leaq 0x18(%rsp), %rdi
movq %rdx, %rsi
callq 0x4f36
movq %rbx, 0x10(%rsp)
cmpl $0x2, (%rsp)
jl 0x3129
movl $0x1, %r13d
movss 0x42c8(%rip), %xmm0     # 0x7004
movss %xmm0, 0xc(%rsp)
movl $0xffffffff, 0x8(%rsp)  # imm = 0xFFFFFFFF
leaq 0x340(%rsp), %r12
movq 0x8297(%rip), %rbx      # 0xaff0
movl $0xffffffff, 0x4(%rsp)  # imm = 0xFFFFFFFF
movslq %r13d, %rbp
movq (%r14,%rbp,8), %rsi
leaq 0x118(%rsp), %r15
movq %r15, %rdi
leaq 0x138(%rsp), %rdx
callq 0x4e14
movq %r12, %rdi
movq %r15, %rsi
callq 0x6c50
movl %eax, %r15d
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x2db3
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x21a0
testb %r15b, %r15b
je 0x2e43
movq (%r14,%rbp,8), %r12
leaq 0x2(%r12), %r15
leaq 0x148(%rsp), %rax
movq %rax, 0x138(%rsp)
movq %r15, %rdi
callq 0x20c0
leaq (%r12,%rax), %rdx
addq $0x2, %rdx
leaq 0x138(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x4f36
leaq 0x340(%rsp), %rdi
movq %r12, %rsi
movq %rdi, %r12
callq 0x6b74
movq %r12, %rdi
movl %eax, %esi
callq 0x6ae6
movl %eax, %r15d
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x2ec2
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x2ec2
movq (%r14,%rbp,8), %rsi
leaq 0xf8(%rsp), %r15
movq %r15, %rdi
leaq 0x138(%rsp), %rdx
callq 0x4e14
movq %r12, %rdi
movq %r15, %rsi
callq 0x6d04
movl %eax, %r12d
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x2e92
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x21a0
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
testb %r12b, %r12b
leaq 0x340(%rsp), %r12
je 0x2ec2
movq (%r14,%rbp,8), %rax
movsbl 0x1(%rax), %esi
movq %r12, %rdi
callq 0x6c2c
movq %r12, %rdi
movl %eax, %esi
callq 0x6ae6
movl %eax, %r15d
cmpl $0x5, %r15d
ja 0x3008
movl %r15d, %eax
leaq 0x413a(%rip), %rcx      # 0x7010
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leal 0x1(%r13), %r15d
cmpl (%rsp), %r15d
jge 0x2ef9
movslq %r15d, %rax
movq (%r14,%rax,8), %rdi
cmpb $0x2d, (%rdi)
jne 0x3115
movl $0x18, %edx
movq %rbx, %rdi
leaq 0x41a3(%rip), %rsi      # 0x70ab
callq 0x21d0
jmp 0x2fa1
leal 0x1(%r13), %r15d
cmpl (%rsp), %r15d
jge 0x2f2c
movslq %r15d, %rax
movq (%r14,%rax,8), %rdi
cmpb $0x2d, (%rdi)
jne 0x30c2
movl $0x18, %edx
movq %rbx, %rdi
leaq 0x4170(%rip), %rsi      # 0x70ab
callq 0x21d0
jmp 0x2fa1
leal 0x1(%r13), %r15d
cmpl (%rsp), %r15d
jge 0x2f5c
movslq %r15d, %rax
movq (%r14,%rax,8), %rdi
cmpb $0x2d, (%rdi)
jne 0x30d5
movl $0x18, %edx
movq %rbx, %rdi
leaq 0x4140(%rip), %rsi      # 0x70ab
callq 0x21d0
jmp 0x2fa1
leal 0x1(%r13), %r12d
cmpl (%rsp), %r12d
jge 0x2f8d
movslq %r12d, %rax
movq (%r14,%rax,8), %r15
cmpb $0x2d, (%r15)
jne 0x30e6
movl $0x18, %edx
movq %rbx, %rdi
leaq 0x410f(%rip), %rsi      # 0x70ab
callq 0x21d0
movq (%r14,%rbp,8), %r12
testq %r12, %r12
je 0x2fda
movq %r12, %rdi
callq 0x20c0
movl $0x1, %r15d
movq %rbx, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x21d0
leaq 0x40f5(%rip), %rsi      # 0x70c2
leaq 0x340(%rsp), %r12
jmp 0x307e
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
movl $0x1, %r15d
callq 0x22c0
leaq 0x40c4(%rip), %rsi      # 0x70c2
leaq 0x340(%rsp), %r12
jmp 0x307e
movl $0xa, %edx
movq %rbx, %rdi
leaq 0x40ad(%rip), %rsi      # 0x70c4
callq 0x21d0
movq (%r14,%rbp,8), %r12
testq %r12, %r12
je 0x3052
movq %r12, %rdi
callq 0x20c0
movl $0xe, %r15d
movq %rbx, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x21d0
leaq 0x4087(%rip), %rsi      # 0x70cf
leaq 0x340(%rsp), %r12
jmp 0x307e
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
movl $0xe, %r15d
callq 0x22c0
leaq 0x4059(%rip), %rsi      # 0x70cf
leaq 0x340(%rsp), %r12
movq %rbx, %rdi
movq %r15, %rdx
callq 0x21d0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2100
incl %r13d
cmpl (%rsp), %r13d
jl 0x2d61
jmp 0x3147
xorl %esi, %esi
callq 0x2130
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xc(%rsp)
jmp 0x3124
xorl %esi, %esi
callq 0x2130
cvttsd2si %xmm0, %eax
movl %eax, 0x8(%rsp)
jmp 0x3124
movq 0x20(%rsp), %r13
movq %r15, %rdi
callq 0x20c0
leaq 0x18(%rsp), %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r15, %rcx
movq %rax, %r8
callq 0x2290
movl %r12d, %r13d
leaq 0x340(%rsp), %r12
jmp 0x30b0
xorl %esi, %esi
callq 0x2130
cvttsd2si %xmm0, %eax
movl %eax, 0x4(%rsp)
movl %r15d, %r13d
jmp 0x30b0
movl $0xffffffff, 0x4(%rsp)  # imm = 0xFFFFFFFF
movss 0x3ecb(%rip), %xmm0     # 0x7004
movss %xmm0, 0xc(%rsp)
movl $0xffffffff, 0x8(%rsp)  # imm = 0xFFFFFFFF
leaq 0x3f5c(%rip), %rsi      # 0x70aa
leaq 0x18(%rsp), %rdi
callq 0x20a0
testl %eax, %eax
movl 0x8(%rsp), %ebp
je 0x3287
leaq 0xa8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x88(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x68(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq 0x18(%rsp), %rsi
leaq 0x138(%rsp), %rbx
movq %rbx, %rdi
movl $0x8, %edx
callq 0x2300
movq 0x138(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x158(%rsp,%rax)
je 0x3333
movq 0x7e1c(%rip), %rbx      # 0xaff0
leaq 0x3f03(%rip), %rsi      # 0x70de
movl $0x2e, %edx
movq %rbx, %rdi
callq 0x21d0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x7dea(%rip), %rdi      # 0xaff0
callq 0x2040
movq %rax, %rdi
callq 0x2100
leaq 0x138(%rsp), %rdi
callq 0x2070
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x323c
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
movl 0x8(%rsp), %ebp
je 0x3262
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x3287
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x21a0
movss 0xc(%rsp), %xmm0
ucomiss 0x3d70(%rip), %xmm0     # 0x7004
movq 0x10(%rsp), %rbx
jne 0x329d
jnp 0x32a5
movq %rbx, %rdi
callq 0x3738
cmpl $-0x1, 0x4(%rsp)
je 0x32b9
movslq 0x4(%rsp), %rsi
movq %rbx, %rdi
callq 0x37ce
testl %ebp, %ebp
js 0x32c0
movl %ebp, 0x38(%rbx)
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x32dc
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x21a0
movq $-0x320, %rbx           # imm = 0xFCE0
leaq 0x658(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x32ff
movq (%r14), %rsi
incq %rsi
callq 0x21a0
movq -0x38(%r14), %rdi
leaq -0x28(%r14), %rax
cmpq %rdi, %rax
je 0x3317
movq (%rax), %rsi
incq %rsi
callq 0x21a0
addq $-0x50, %r14
addq $0x50, %rbx
jne 0x32eb
addq $0x668, %rsp            # imm = 0x668
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xe8(%rsp), %rbp
leaq 0x98(%rsp), %r14
leaq 0xd8(%rsp), %r15
leaq 0xb8(%rsp), %r12
movq 0x138(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2310
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x3213
movq %rbp, 0xd8(%rsp)
movq 0x98(%rsp), %rsi
movq 0xa0(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x4ea6
movq %r15, %rdi
leaq 0x78(%rsp), %rsi
leaq 0x58(%rsp), %rdx
callq 0x5660
movl %eax, %r13d
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x33e1
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x21a0
testb %r13b, %r13b
je 0x3353
leaq 0x48(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %rdi
callq 0x4ea6
leaq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x4ea6
movq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rsi
movq %r12, %rdx
callq 0x599b
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x346a
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x3353
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x3353
callq 0x36f3
jmp 0x349b
callq 0x3671
xorl %edi, %edi
callq 0x21e0
movq %rax, %rbx
jmp 0x35d8
movq %rax, %rbx
jmp 0x365c
movq %rax, %rbx
movl $0x20, %esi
movq %r15, %rdi
callq 0x2320
jmp 0x3669
jmp 0x35c8
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x34f9
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x34f9
movq %rax, %rbx
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x35cb
movq 0x48(%rsp), %rsi
jmp 0x3534
jmp 0x363d
movq %rax, %rbx
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x35cb
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x35cb
jmp 0x363d
jmp 0x363d
movq %rax, %rbx
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x3640
movq 0x108(%rsp), %rsi
jmp 0x3633
jmp 0x363d
movq %rax, %rbx
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x3640
movq 0x128(%rsp), %rsi
jmp 0x3633
movq %rax, %rbx
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x3640
movq 0x148(%rsp), %rsi
jmp 0x3633
movq %rax, %rbx
leaq 0x138(%rsp), %rdi
callq 0x2070
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x35f4
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x3616
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x3640
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x3640
movq %rax, %rbx
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x365c
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x340(%rsp), %rdi
callq 0x4e52
movq %rbx, %rdi
callq 0x22e0