// File: viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::atualizar_animal(std::shared_ptr<Animal>)
bool Petfera::atualizar_animal(shared_ptr<Animal> animal)
{
	bool alterar_bool;
	string alterar_string;
	short escolha;
	string escolha_str;
	pelos alterar_pelos;
	TipoDeGestacao alterar_gestacao;
	stringstream ss;

	cout << "o que vc quer atualizar? "
			 << "\n"
			 << "# Temos as seguintes opcao : # "
			 << "\n"
			 << "    1 -> Alterar nome cientifico do animal"
			 << "\n"
			 << "    2 -> Alterar Nome do animal"
			 << "\n"
			 << "    3 -> Alterar Tipo de temperatura do animal"
			 << "\n"
			 << "    4 -> Alterar Tipo de pele do animal"
			 << "\n"
			 << "    5 -> Alterar Tipo de fecundacao do animal"
			 << "\n"
			 << "    6 -> Alterar Troca de pele do animal"
			 << "\n"
			 << "    7 -> Alterar Material eliminado do animal"
			 << endl;

	if (animal->getFamilia() == Mamiferos)
	{
		cout << "    8 -> Alterar se possui dentes" << endl;
		cout << "    9 -> Alterar pelagem" << endl;
		cout << "    10 -> Alterar tipo de gestacao" << endl;
	}
	else if (animal->getFamilia() == Aves)
	{
		cout << "    12 -> Alterar envergadura da asa" << endl;
		cout << "    13 -> Alterar tamanho do bico" << endl;
	}
	else if (animal->getFamilia() == Anfibios)
	{
		cout << "    14 -> Alterar habitat" << endl;
		cout << "    15 -> Alterar se possui ovos" << endl;
	}
	else if (animal->getFamilia() == Repteis)
	{
	}

	cout << "Escolha uma opcao"
			 << "\n";

	cin >> escolha_str;
	ss << escolha_str;
	ss >> escolha;

	if (escolha == 1)
	{
		cout << "Digite a nova especie \n";

		cin >> alterar_string;

		animal->setEspecie(alterar_string);
	}
	else if (escolha == 2)
	{
		cout << "Digite o novo nome \n";

		cin >> alterar_string;

		animal->setNome(alterar_string);
	}
	else if (escolha == 3)
	{
		cout << "Digite o novo tipo de temperatura \n";

		cin >> alterar_string;

		animal->setTipo_temperatura(alterar_string);
	}
	else if (escolha == 4)
	{
		cout << "Digite o novo tipo de pele \n";

		cin >> alterar_string;

		animal->setTipo_pele(alterar_string);
	}
	else if (escolha == 5)
	{
		cout << "Digite o novo tipo de fecundacao \n";

		cin >> alterar_string;

		animal->setTipo_fecundacao(alterar_string);
	}
	else if (escolha == 6)
	{
		cout << "Digite de S se troca de pele ou N se nao troca \n";

		cin >> alterar_bool;

		animal->setTroca_pele(alterar_bool);
	}
	else if (escolha == 7)
	{
		cout << "Digite o novo material eliminado \n";

		cin >> alterar_string;

		animal->setMaterial_eliminidado(alterar_string);
	}
	else if (escolha == 8)
	{
		alterar_bool = leBool("Possui Dentes? [S/n]");

		shared_ptr<Mamifero> mami_trat = dynamic_pointer_cast<Mamifero>(animal);

		mami_trat->setDentes(alterar_bool);
	}
	else if (escolha == 9)
	{
		alterar_pelos = lePelo("Digite o numero correspondende a pelagem do animal \n1-ausencia de pelos \n2-pelo reduzido \n3-pelo normal \n");

		shared_ptr<Mamifero> mami_trat = dynamic_pointer_cast<Mamifero>(animal);

		mami_trat->setPelagem(alterar_pelos);
	}
	else if (escolha == 10)
	{
		alterar_gestacao = leGestacao("Digite o numero que indique o tipo de gestacao do animal \n1-Marsupio \n2-Placenta");

		shared_ptr<Mamifero> mami_trat = dynamic_pointer_cast<Mamifero>(animal);

		mami_trat->setTipoGestacao(alterar_gestacao);
	}
	else if (escolha == 12)
	{
		cout << "Digite a nova envergadura \n";

		cin >> alterar_string;

		shared_ptr<Ave> ave_trat = dynamic_pointer_cast<Ave>(animal);

		ave_trat->setEnvergaduraAsas(alterar_string);
	}
	else if (escolha == 13)
	{
		cout << "Digite o novo tamanho do bico \n";

		cin >> alterar_string;

		shared_ptr<Ave> ave_trat = dynamic_pointer_cast<Ave>(animal);

		ave_trat->setTamanhoDoBico(alterar_string);
	}
	else if (escolha == 14)
	{
		cout << "Digite o novo habitat \n";

		cin >> alterar_string;

		shared_ptr<Anfibio> anfi_trat = dynamic_pointer_cast<Anfibio>(animal);

		anfi_trat->setHabitat(alterar_string);
	}
	else if (escolha == 15)
	{
		alterar_bool = leBool("Possui ovos? [S/n]");

		shared_ptr<Anfibio> anfi_trat = dynamic_pointer_cast<Anfibio>(animal);

		anfi_trat->setPossui_ovos(alterar_bool);
	}
	else if (escolha == 0 || escolha > 15)
	{
		cout << "Erro, escolha apenas as opções mostradas";

		return false;
	}

	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x600, %rsp            # imm = 0x600
movq %rsi, -0x450(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x448(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x4280
leaq -0x68(%rbp), %rdi
callq 0x4280
leaq -0x1f8(%rbp), %rdi
callq 0x4160
jmp 0x1d2b5
movq 0x3ed0c(%rip), %rdi     # 0x5bfc8
leaq 0x2aa48(%rip), %rsi     # 0x47d0b
callq 0x41c0
movq %rax, -0x458(%rbp)
jmp 0x1d2d1
movq -0x458(%rbp), %rdi
leaq 0x296c2(%rip), %rsi     # 0x469a1
callq 0x41c0
movq %rax, -0x460(%rbp)
jmp 0x1d2ed
movq -0x460(%rbp), %rdi
leaq 0x2aa2a(%rip), %rsi     # 0x47d25
callq 0x41c0
movq %rax, -0x468(%rbp)
jmp 0x1d309
movq -0x468(%rbp), %rdi
leaq 0x2968a(%rip), %rsi     # 0x469a1
callq 0x41c0
movq %rax, -0x470(%rbp)
jmp 0x1d325
movq -0x470(%rbp), %rdi
leaq 0x2ab89(%rip), %rsi     # 0x47ebc
callq 0x41c0
movq %rax, -0x478(%rbp)
jmp 0x1d341
movq -0x478(%rbp), %rdi
leaq 0x29652(%rip), %rsi     # 0x469a1
callq 0x41c0
movq %rax, -0x480(%rbp)
jmp 0x1d35d
movq -0x480(%rbp), %rdi
leaq 0x2ab7c(%rip), %rsi     # 0x47ee7
callq 0x41c0
movq %rax, -0x488(%rbp)
jmp 0x1d379
movq -0x488(%rbp), %rdi
leaq 0x2961a(%rip), %rsi     # 0x469a1
callq 0x41c0
movq %rax, -0x490(%rbp)
jmp 0x1d395
movq -0x490(%rbp), %rdi
leaq 0x2ab64(%rip), %rsi     # 0x47f07
callq 0x41c0
movq %rax, -0x498(%rbp)
jmp 0x1d3b1
movq -0x498(%rbp), %rdi
leaq 0x295e2(%rip), %rsi     # 0x469a1
callq 0x41c0
movq %rax, -0x4a0(%rbp)
jmp 0x1d3cd
movq -0x4a0(%rbp), %rdi
leaq 0x2ab5b(%rip), %rsi     # 0x47f36
callq 0x41c0
movq %rax, -0x4a8(%rbp)
jmp 0x1d3e9
movq -0x4a8(%rbp), %rdi
leaq 0x295aa(%rip), %rsi     # 0x469a1
callq 0x41c0
movq %rax, -0x4b0(%rbp)
jmp 0x1d405
movq -0x4b0(%rbp), %rdi
leaq 0x2ab4b(%rip), %rsi     # 0x47f5e
callq 0x41c0
movq %rax, -0x4b8(%rbp)
jmp 0x1d421
movq -0x4b8(%rbp), %rdi
leaq 0x29572(%rip), %rsi     # 0x469a1
callq 0x41c0
movq %rax, -0x4c0(%rbp)
jmp 0x1d43d
movq -0x4c0(%rbp), %rdi
leaq 0x2ab41(%rip), %rsi     # 0x47f8c
callq 0x41c0
movq %rax, -0x4c8(%rbp)
jmp 0x1d459
movq -0x4c8(%rbp), %rdi
leaq 0x2953a(%rip), %rsi     # 0x469a1
callq 0x41c0
movq %rax, -0x4d0(%rbp)
jmp 0x1d475
movq -0x4d0(%rbp), %rdi
leaq 0x2ab32(%rip), %rsi     # 0x47fb5
callq 0x41c0
movq %rax, -0x4d8(%rbp)
jmp 0x1d491
movq -0x4d8(%rbp), %rdi
movq 0x3eb11(%rip), %rsi     # 0x5bfb0
callq 0x41f0
jmp 0x1d4a6
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, %rdi
callq 0x7590
movl %eax, -0x4dc(%rbp)
jmp 0x1d4c2
movl -0x4dc(%rbp), %eax
cmpl $0x0, %eax
jne 0x1d597
movq 0x3eaf0(%rip), %rdi     # 0x5bfc8
leaq 0x2ab04(%rip), %rsi     # 0x47fe3
callq 0x41c0
movq %rax, -0x4e8(%rbp)
jmp 0x1d4ed
movq -0x4e8(%rbp), %rdi
movq 0x3eab5(%rip), %rsi     # 0x5bfb0
callq 0x41f0
jmp 0x1d502
movq 0x3eabf(%rip), %rdi     # 0x5bfc8
leaq 0x2aaf5(%rip), %rsi     # 0x48005
callq 0x41c0
movq %rax, -0x4f0(%rbp)
jmp 0x1d51e
movq -0x4f0(%rbp), %rdi
movq 0x3ea84(%rip), %rsi     # 0x5bfb0
callq 0x41f0
jmp 0x1d533
movq 0x3ea8e(%rip), %rdi     # 0x5bfc8
leaq 0x2aadd(%rip), %rsi     # 0x4801e
callq 0x41c0
movq %rax, -0x4f8(%rbp)
jmp 0x1d54f
movq -0x4f8(%rbp), %rdi
movq 0x3ea53(%rip), %rsi     # 0x5bfb0
callq 0x41f0
jmp 0x1d564
jmp 0x1d6df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x1e349
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x1e33d
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, %rdi
callq 0x7590
movl %eax, -0x4fc(%rbp)
jmp 0x1d5b3
movl -0x4fc(%rbp), %eax
cmpl $0x1, %eax
jne 0x1d625
movq 0x3ea03(%rip), %rdi     # 0x5bfc8
leaq 0x2aa75(%rip), %rsi     # 0x48041
callq 0x41c0
movq %rax, -0x508(%rbp)
jmp 0x1d5da
movq -0x508(%rbp), %rdi
movq 0x3e9c8(%rip), %rsi     # 0x5bfb0
callq 0x41f0
jmp 0x1d5ef
movq 0x3e9d2(%rip), %rdi     # 0x5bfc8
leaq 0x2aa69(%rip), %rsi     # 0x48066
callq 0x41c0
movq %rax, -0x510(%rbp)
jmp 0x1d60b
movq -0x510(%rbp), %rdi
movq 0x3e997(%rip), %rsi     # 0x5bfb0
callq 0x41f0
jmp 0x1d620
jmp 0x1d6dd
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, %rdi
callq 0x7590
movl %eax, -0x514(%rbp)
jmp 0x1d641
movl -0x514(%rbp), %eax
cmpl $0x2, %eax
jne 0x1d6b0
movq 0x3e975(%rip), %rdi     # 0x5bfc8
leaq 0x2aa2e(%rip), %rsi     # 0x48088
callq 0x41c0
movq %rax, -0x520(%rbp)
jmp 0x1d668
movq -0x520(%rbp), %rdi
movq 0x3e93a(%rip), %rsi     # 0x5bfb0
callq 0x41f0
jmp 0x1d67d
movq 0x3e944(%rip), %rdi     # 0x5bfc8
leaq 0x2aa17(%rip), %rsi     # 0x480a2
callq 0x41c0
movq %rax, -0x528(%rbp)
jmp 0x1d699
movq -0x528(%rbp), %rdi
movq 0x3e909(%rip), %rsi     # 0x5bfb0
callq 0x41f0
jmp 0x1d6ae
jmp 0x1d6db
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, %rdi
callq 0x7590
movl %eax, -0x52c(%rbp)
jmp 0x1d6cc
movl -0x52c(%rbp), %eax
cmpl $0x3, %eax
jne 0x1d6d9
jmp 0x1d6d9
jmp 0x1d6db
jmp 0x1d6dd
jmp 0x1d6df
movq 0x3e8e2(%rip), %rdi     # 0x5bfc8
leaq 0x2a706(%rip), %rsi     # 0x47df3
callq 0x41c0
movq %rax, -0x538(%rbp)
jmp 0x1d6fb
movq -0x538(%rbp), %rdi
leaq 0x29298(%rip), %rsi     # 0x469a1
callq 0x41c0
jmp 0x1d710
movq 0x3e8c9(%rip), %rdi     # 0x5bfe0
leaq -0x68(%rbp), %rsi
callq 0x4240
jmp 0x1d722
leaq -0x1e8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x41b0
jmp 0x1d734
leaq -0x1f8(%rbp), %rdi
leaq -0x42(%rbp), %rsi
callq 0x4050
jmp 0x1d746
movswl -0x42(%rbp), %eax
cmpl $0x1, %eax
jne 0x1d7e8
movq 0x3e86e(%rip), %rdi     # 0x5bfc8
leaq 0x2a962(%rip), %rsi     # 0x480c3
callq 0x41c0
jmp 0x1d768
movq 0x3e871(%rip), %rdi     # 0x5bfe0
leaq -0x40(%rbp), %rsi
callq 0x4240
jmp 0x1d77a
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, -0x540(%rbp)
leaq -0x228(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40e0
jmp 0x1d79f
movq -0x540(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x75b0
jmp 0x1d7b4
leaq -0x228(%rbp), %rdi
callq 0x4140
jmp 0x1e303
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x4140
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0x2, %eax
jne 0x1d88a
movq 0x3e7cc(%rip), %rdi     # 0x5bfc8
leaq 0x2a602(%rip), %rsi     # 0x47e05
callq 0x41c0
jmp 0x1d80a
movq 0x3e7cf(%rip), %rdi     # 0x5bfe0
leaq -0x40(%rbp), %rsi
callq 0x4240
jmp 0x1d81c
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, -0x548(%rbp)
leaq -0x248(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40e0
jmp 0x1d841
movq -0x548(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x75e0
jmp 0x1d856
leaq -0x248(%rbp), %rdi
callq 0x4140
jmp 0x1e301
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x4140
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0x3, %eax
jne 0x1d92c
movq 0x3e72a(%rip), %rdi     # 0x5bfc8
leaq 0x2a836(%rip), %rsi     # 0x480db
callq 0x41c0
jmp 0x1d8ac
movq 0x3e72d(%rip), %rdi     # 0x5bfe0
leaq -0x40(%rbp), %rsi
callq 0x4240
jmp 0x1d8be
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, -0x550(%rbp)
leaq -0x268(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40e0
jmp 0x1d8e3
movq -0x550(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x7610
jmp 0x1d8f8
leaq -0x268(%rbp), %rdi
callq 0x4140
jmp 0x1e2ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x4140
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0x4, %eax
jne 0x1d9ce
movq 0x3e688(%rip), %rdi     # 0x5bfc8
leaq 0x2a7b8(%rip), %rsi     # 0x480ff
callq 0x41c0
jmp 0x1d94e
movq 0x3e68b(%rip), %rdi     # 0x5bfe0
leaq -0x40(%rbp), %rsi
callq 0x4240
jmp 0x1d960
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, -0x558(%rbp)
leaq -0x288(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40e0
jmp 0x1d985
movq -0x558(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x7640
jmp 0x1d99a
leaq -0x288(%rbp), %rdi
callq 0x4140
jmp 0x1e2fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x4140
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0x5, %eax
jne 0x1da70
movq 0x3e5e6(%rip), %rdi     # 0x5bfc8
leaq 0x2a733(%rip), %rsi     # 0x4811c
callq 0x41c0
jmp 0x1d9f0
movq 0x3e5e9(%rip), %rdi     # 0x5bfe0
leaq -0x40(%rbp), %rsi
callq 0x4240
jmp 0x1da02
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, -0x560(%rbp)
leaq -0x2a8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40e0
jmp 0x1da27
movq -0x560(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x7670
jmp 0x1da3c
leaq -0x2a8(%rbp), %rdi
callq 0x4140
jmp 0x1e2fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x4140
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0x6, %eax
jne 0x1dac2
movq 0x3e548(%rip), %rdi     # 0x5bfc8
leaq 0x2a6b8(%rip), %rsi     # 0x4813f
callq 0x41c0
jmp 0x1da8e
movq 0x3e54b(%rip), %rdi     # 0x5bfe0
leaq -0x19(%rbp), %rsi
callq 0x4190
jmp 0x1daa0
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, %rdi
movzbl -0x19(%rbp), %esi
andl $0x1, %esi
callq 0x76a0
jmp 0x1dabd
jmp 0x1e2f9
movswl -0x42(%rbp), %eax
cmpl $0x7, %eax
jne 0x1db64
movq 0x3e4f2(%rip), %rdi     # 0x5bfc8
leaq 0x2a693(%rip), %rsi     # 0x48170
callq 0x41c0
jmp 0x1dae4
movq 0x3e4f5(%rip), %rdi     # 0x5bfe0
leaq -0x40(%rbp), %rsi
callq 0x4240
jmp 0x1daf6
movq -0x450(%rbp), %rdi
callq 0x20ac0
movq %rax, -0x568(%rbp)
leaq -0x2c8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40e0
jmp 0x1db1b
movq -0x568(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x76d0
jmp 0x1db30
leaq -0x2c8(%rbp), %rdi
callq 0x4140
jmp 0x1e2f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x4140
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0x8, %eax
jne 0x1dc8c
leaq -0x2e9(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x4330
movq -0x570(%rbp), %rdx
leaq 0x2a601(%rip), %rsi     # 0x48193
leaq -0x2e8(%rbp), %rdi
callq 0x4270
jmp 0x1dba0
movq -0x448(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x14520
movb %al, -0x571(%rbp)
jmp 0x1dbbb
movb -0x571(%rbp), %al
andb $0x1, %al
movb %al, -0x19(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x4140
leaq -0x2e9(%rbp), %rdi
callq 0x4200
movq -0x450(%rbp), %rsi
leaq -0x300(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x22520
movq -0x580(%rbp), %rdi
callq 0x225b0
movq %rax, %rdi
movzbl -0x19(%rbp), %esi
andl $0x1, %esi
callq 0x425c0
jmp 0x1dc15
leaq -0x300(%rbp), %rdi
callq 0x225d0
jmp 0x1e2f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x1dc58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x4140
leaq -0x2e9(%rbp), %rdi
callq 0x4200
jmp 0x1e33d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x225d0
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0x9, %eax
jne 0x1ddae
leaq -0x321(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x4330
movq -0x588(%rbp), %rdx
leaq 0x296ee(%rip), %rsi     # 0x473a8
leaq -0x320(%rbp), %rdi
callq 0x4270
jmp 0x1dcc8
movq -0x448(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x1a4b0
movl %eax, -0x58c(%rbp)
jmp 0x1dce3
movl -0x58c(%rbp), %eax
movl %eax, -0x6c(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x4140
leaq -0x321(%rbp), %rdi
callq 0x4200
movq -0x450(%rbp), %rsi
leaq -0x338(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0x22520
movq -0x598(%rbp), %rdi
callq 0x225b0
movq %rax, %rdi
movl -0x6c(%rbp), %esi
callq 0x42610
jmp 0x1dd37
leaq -0x338(%rbp), %rdi
callq 0x225d0
jmp 0x1e2f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x1dd7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x4140
leaq -0x321(%rbp), %rdi
callq 0x4200
jmp 0x1e33d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x225d0
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0xa, %eax
jne 0x1ded0
leaq -0x359(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x4330
movq -0x5a0(%rbp), %rdx
leaq 0x29636(%rip), %rsi     # 0x47412
leaq -0x358(%rbp), %rdi
callq 0x4270
jmp 0x1ddea
movq -0x448(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x1a4f0
movl %eax, -0x5a4(%rbp)
jmp 0x1de05
movl -0x5a4(%rbp), %eax
movl %eax, -0x70(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x4140
leaq -0x359(%rbp), %rdi
callq 0x4200
movq -0x450(%rbp), %rsi
leaq -0x370(%rbp), %rdi
movq %rdi, -0x5b0(%rbp)
callq 0x22520
movq -0x5b0(%rbp), %rdi
callq 0x225b0
movq %rax, %rdi
movl -0x70(%rbp), %esi
callq 0x42650
jmp 0x1de59
leaq -0x370(%rbp), %rdi
callq 0x225d0
jmp 0x1e2f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x1de9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x4140
leaq -0x359(%rbp), %rdi
callq 0x4200
jmp 0x1e33d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x370(%rbp), %rdi
callq 0x225d0
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0xc, %eax
jne 0x1dfb8
movq 0x3e0e4(%rip), %rdi     # 0x5bfc8
leaq 0x2a2bd(%rip), %rsi     # 0x481a8
callq 0x41c0
jmp 0x1def2
movq 0x3e0e7(%rip), %rdi     # 0x5bfe0
leaq -0x40(%rbp), %rsi
callq 0x4240
jmp 0x1df04
movq -0x450(%rbp), %rsi
leaq -0x380(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x225f0
movq -0x5c0(%rbp), %rdi
callq 0x22680
movq %rax, -0x5b8(%rbp)
leaq -0x3a0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40e0
jmp 0x1df43
movq -0x5b8(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x8290
jmp 0x1df58
leaq -0x3a0(%rbp), %rdi
callq 0x4140
leaq -0x380(%rbp), %rdi
callq 0x226a0
jmp 0x1e2ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x1dfa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x4140
leaq -0x380(%rbp), %rdi
callq 0x226a0
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0xd, %eax
jne 0x1e0a0
movq 0x3dffc(%rip), %rdi     # 0x5bfc8
leaq 0x2a1f1(%rip), %rsi     # 0x481c4
callq 0x41c0
jmp 0x1dfda
movq 0x3dfff(%rip), %rdi     # 0x5bfe0
leaq -0x40(%rbp), %rsi
callq 0x4240
jmp 0x1dfec
movq -0x450(%rbp), %rsi
leaq -0x3b0(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0x225f0
movq -0x5d0(%rbp), %rdi
callq 0x22680
movq %rax, -0x5c8(%rbp)
leaq -0x3d0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40e0
jmp 0x1e02b
movq -0x5c8(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x82c0
jmp 0x1e040
leaq -0x3d0(%rbp), %rdi
callq 0x4140
leaq -0x3b0(%rbp), %rdi
callq 0x226a0
jmp 0x1e2ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x1e08f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x4140
leaq -0x3b0(%rbp), %rdi
callq 0x226a0
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0xe, %eax
jne 0x1e188
movq 0x3df14(%rip), %rdi     # 0x5bfc8
leaq 0x2a129(%rip), %rsi     # 0x481e4
callq 0x41c0
jmp 0x1e0c2
movq 0x3df17(%rip), %rdi     # 0x5bfe0
leaq -0x40(%rbp), %rsi
callq 0x4240
jmp 0x1e0d4
movq -0x450(%rbp), %rsi
leaq -0x3e0(%rbp), %rdi
movq %rdi, -0x5e0(%rbp)
callq 0x226c0
movq -0x5e0(%rbp), %rdi
callq 0x22750
movq %rax, -0x5d8(%rbp)
leaq -0x400(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40e0
jmp 0x1e113
movq -0x5d8(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x4f80
jmp 0x1e128
leaq -0x400(%rbp), %rdi
callq 0x4140
leaq -0x3e0(%rbp), %rdi
callq 0x22770
jmp 0x1e2eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x1e177
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x4140
leaq -0x3e0(%rbp), %rdi
callq 0x22770
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0xf, %eax
jne 0x1e2b0
leaq -0x421(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
callq 0x4330
movq -0x5e8(%rbp), %rdx
leaq 0x2a046(%rip), %rsi     # 0x481fc
leaq -0x420(%rbp), %rdi
callq 0x4270
jmp 0x1e1c4
movq -0x448(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x14520
movb %al, -0x5e9(%rbp)
jmp 0x1e1df
movb -0x5e9(%rbp), %al
andb $0x1, %al
movb %al, -0x19(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x4140
leaq -0x421(%rbp), %rdi
callq 0x4200
movq -0x450(%rbp), %rsi
leaq -0x438(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x226c0
movq -0x5f8(%rbp), %rdi
callq 0x22750
movq %rax, %rdi
movzbl -0x19(%rbp), %esi
andl $0x1, %esi
callq 0x4fb0
jmp 0x1e239
leaq -0x438(%rbp), %rdi
callq 0x22770
jmp 0x1e2e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x1e27c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x4140
leaq -0x421(%rbp), %rdi
callq 0x4200
jmp 0x1e33d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x438(%rbp), %rdi
callq 0x22770
jmp 0x1e33d
movswl -0x42(%rbp), %eax
cmpl $0x0, %eax
je 0x1e2c2
movswl -0x42(%rbp), %eax
cmpl $0xf, %eax
jle 0x1e2e7
movq 0x3dcff(%rip), %rdi     # 0x5bfc8
leaq 0x29f3f(%rip), %rsi     # 0x4820f
callq 0x41c0
jmp 0x1e2d7
movb $0x0, -0x1(%rbp)
movl $0x1, -0x43c(%rbp)
jmp 0x1e311
jmp 0x1e2e9
jmp 0x1e2eb
jmp 0x1e2ed
jmp 0x1e2ef
jmp 0x1e2f1
jmp 0x1e2f3
jmp 0x1e2f5
jmp 0x1e2f7
jmp 0x1e2f9
jmp 0x1e2fb
jmp 0x1e2fd
jmp 0x1e2ff
jmp 0x1e301
jmp 0x1e303
movb $0x1, -0x1(%rbp)
movl $0x1, -0x43c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x4170
leaq -0x68(%rbp), %rdi
callq 0x4140
leaq -0x40(%rbp), %rdi
callq 0x4140
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x600, %rsp            # imm = 0x600
popq %rbp
retq
leaq -0x1f8(%rbp), %rdi
callq 0x4170
leaq -0x68(%rbp), %rdi
callq 0x4140
leaq -0x40(%rbp), %rdi
callq 0x4140
movq -0x200(%rbp), %rdi
callq 0x4320
nopw (%rax,%rax)