// File: /workspace/github_cpp_makefile_star2_O3/nataly-enne[P]pet-fera/pet_fera_cadastrar.cpp
// Function: cadastrar(std::map<int, VETERINARIO, std::less<int>, std::allocator<std::pair<int const, VETERINARIO>>>&)
void cadastrar(map <int, VETERINARIO> &vets){ 
	int id, idade;
	unsigned int old_size;
	long int cpf;
	string nome, especialidade, crmv, tipo_sang, id_string, cpf_string, idade_string, tipo_sang_string, fator_rh_string;
	char fator_rh, continuar, sucesso;
	bool check;
	old_size = vets.size();
	ofstream veterinarios;
	
	do{
		// Recebe o ID e verifica se é valido.
		do{
			cout << "Digite o id:" << endl;
			cin >> id_string;
			if(!verifica_ID(vets, id_string, sucesso)){
				cout << "O ID deve conter apenas inteiros ou ID já cadastrado!" << endl << endl;
			}
			else{
				stringstream ss(id_string); // Converte string para int.
				ss >> id;
			}

		}while(sucesso == 'n');

		// Recebe o nome e verifica se é valido.
		do{	
			cout << "Digite o nome:" << endl;
			cin.ignore();
			getline(cin, nome);
			if(!verifica_nome(nome, sucesso)){
				cout << "ERRO: só pode ser inserido letra ou espaço!" << endl << endl;
			}
		}while(sucesso == 'n');

		// Recebe o CPF e verifica se é valido.
		do{
			cout << "Digite o CPF: " << endl;
			getline(cin, cpf_string);
			if(!verifica_CPF(cpf_string, sucesso)){
				cout << "CPF deve conter apenas numeros" << endl << endl;
			}
			else{
				cpf = stoll(cpf_string); //Transforma a string em long int.
				check = check_CPF(vets, cpf); // Checa se o CPF existe.
				if(check){
					cout << "CPF já cadastrado!" << endl;
					sucesso = 'n';
				}
			}
		}while(sucesso == 'n');

		// Recebe a idade e verifica se é valida.
		do{
			cout << "Digite a idade: " << endl;
			getline(cin, idade_string);
			if(!verifica_idade(idade_string, sucesso)){
				cout << "Idade deve conter apenas inteiros positivos!" << endl << endl;
			}
			else{
				stringstream ss(idade_string);
				ss >> idade;
			}
		}while(sucesso == 'n');

		// Recebe o tipo sanguineo e verifica se é valido.
		do{
			cout << "Insira o tipo sanguineo: " << endl;
			getline(cin, tipo_sang_string);
			if(!verifica_tipo_sang(tipo_sang_string, sucesso)){
				cout << "ERRO: O tipo sanguineo deve ser: A, B, AB ou O!" << endl << endl;
			}
			else{
				tipo_sang = tipo_sang_string;
			}
		}while(sucesso == 'n');

		// Recebe o fator RH e verifica se é valido.
		do{
			cout << "Insira o fator RH: " << endl;
			getline(cin, fator_rh_string);
			if(!verifica_fator(fator_rh_string, sucesso)){
				cout << "ERRO: O fator RH deve ser: + ou -" << endl << endl;
			}
			else{
				fator_rh = (char)fator_rh_string[0];
			}
		}while(sucesso == 'n');

		// Recebe a especialidade e verifica se é valida.
		do{
			cout << "Digite a especialidade: " << endl;
			getline(cin, especialidade);
			if(!verifica_especialidade(especialidade, sucesso)){
				cout << "ERRO: A especialidade deve conter apenas letras!" << endl << endl;
			}
			else{
				transform(especialidade.begin(), especialidade.end(), especialidade.begin(), ::tolower);
				especialidade = especialidade;
			}
		}while(sucesso == 'n');

		
		
		do{
			cout << "Digite o crmv: "<< endl;
			getline(cin, crmv);
			if(!verifica_CRMV(vets, crmv, sucesso)){
				cout << "ERRO: Crmv deve conter pelo menos um '-' " << endl << endl;
			}
			else{
				transform(crmv.begin(), crmv.end(), crmv.begin(), ::tolower);
				crmv = crmv;
			}
		}while(sucesso == 'n');

		// Armazenando os valores recebidos pelo usuário no map.
		vets.insert(pair <int, VETERINARIO> (id,VETERINARIO(id, nome, cpf, idade, tipo_sang, fator_rh, especialidade, crmv)));
		
		cout << "Deseja cadastrar um novo funcionario? s/n" << endl;
		cin >> continuar;
	}while(continuar == 's');

	if (vets.size() == old_size){ 
		cout << "Falha no cadastro do funcionario!" << endl;
	}
	else{
		if(!vets.empty()){
			veterinarios.open("veterinarios.txt");
			for(auto it = vets.begin(); it != vets.end(); it++){
				veterinarios << (*it).second;
			}
			veterinarios.close();
		}
		cout << "Cadastro efetuado com sucesso!!" << endl;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x6d8, %rsp            # imm = 0x6D8
leaq -0x128(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x88(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x68(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x340(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x108(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xe8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xc8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x320(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xa8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq %rdi, -0x38(%rbp)
movl 0x28(%rdi), %eax
movq %rax, -0x140(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0x3360
leaq -0x4f8(%rbp), %rax
leaq 0x80(%rax), %r14
leaq 0x36ee5(%rip), %rax     # 0x47ab0
addq $0x10, %rax
movq %rax, -0x48(%rbp)
movq 0x373f6(%rip), %r12     # 0x47fd0
movq 0x373ff(%rip), %r13     # 0x47fe0
movq %r14, -0x50(%rbp)
movl $0xc, %edx
movq %r12, %rdi
leaq 0x29b4b(%rip), %rsi     # 0x3a73f
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %r13, %rdi
leaq -0x118(%rbp), %rsi
callq 0x3270
leaq -0x300(%rbp), %rax
movq %rax, -0x310(%rbp)
movq -0x118(%rbp), %rsi
movq -0x110(%rbp), %rdx
addq %rsi, %rdx
leaq -0x310(%rbp), %rdi
callq 0x4574
movq -0x38(%rbp), %rdi
leaq -0x310(%rbp), %rsi
leaq -0x29(%rbp), %rdx
callq 0x37078
movl %eax, %ebx
movq -0x310(%rbp), %rdi
leaq -0x300(%rbp), %rax
cmpq %rax, %rdi
je 0x10c89
callq 0x31d0
testb %bl, %bl
je 0x10ccd
leaq -0x4f8(%rbp), %rbx
movq %rbx, %rdi
leaq -0x118(%rbp), %rsi
movl $0x18, %edx
callq 0x3310
movq %rbx, %rdi
leaq -0x3c(%rbp), %rsi
callq 0x3120
movq %rbx, %rdi
movq 0x372f2(%rip), %rsi     # 0x47fb0
callq 0x3160
movq %r14, %rdi
callq 0x30d0
jmp 0x10d33
movl $0x36, %edx
movq %r12, %rdi
leaq 0x29a70(%rip), %rsi     # 0x3a74c
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x10be5
movl $0xe, %edx
movq %r12, %rdi
leaq 0x29a37(%rip), %rsi     # 0x3a783
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %r13, %rdi
callq 0x33a0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %r13, %rdi
leaq -0x138(%rbp), %rsi
callq 0x33c0
leaq -0x138(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x3821c
testb %al, %al
jne 0x10e22
movl $0x2d, %edx
movq %r12, %rdi
leaq 0x299c7(%rip), %rsi     # 0x3a792
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x10d3d
movl $0xe, %edx
movq %r12, %rdi
leaq 0x29985(%rip), %rsi     # 0x3a7c0
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %r13, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x33c0
leaq -0x2e0(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movq -0xf8(%rbp), %rsi
movq -0xf0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2f0(%rbp), %rdi
callq 0x4574
leaq -0x2f0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x38462
movl %eax, %ebx
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0x10ee4
callq 0x31d0
testb %bl, %bl
je 0x10f32
movq -0xf8(%rbp), %rbx
callq 0x3040
movq %rax, %r15
movl (%rax), %r14d
movl $0x0, (%rax)
movq %rbx, %rdi
leaq -0x4f8(%rbp), %rsi
movl $0xa, %edx
callq 0x3060
cmpq %rbx, -0x4f8(%rbp)
je 0x11cd8
movl (%r15), %ecx
testl %ecx, %ecx
je 0x10f9a
cmpl $0x22, %ecx
jne 0x10f9d
jmp 0x11ce4
movl $0x1e, %edx
movq %r12, %rdi
leaq 0x2988e(%rip), %rsi     # 0x3a7cf
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
jmp 0x10ffd
movl %r14d, (%r15)
movq -0x38(%rbp), %rdi
movq %rax, -0x148(%rbp)
movq %rax, %rsi
callq 0x36c90
movq -0x50(%rbp), %r14
testb %al, %al
je 0x10ffd
movl $0x13, %edx
movq %r12, %rdi
leaq 0x29827(%rip), %rsi     # 0x3a7ee
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movb $0x6e, -0x29(%rbp)
jmp 0x10e2c
cmpb $0x6e, -0x29(%rbp)
je 0x10e2c
movl $0x10, %edx
movq %r12, %rdi
leaq 0x297ec(%rip), %rsi     # 0x3a802
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %r13, %rdi
leaq -0xd8(%rbp), %rsi
callq 0x33c0
leaq -0x2c0(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2d0(%rbp), %rdi
callq 0x4574
leaq -0x2d0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x38511
movl %eax, %ebx
movq -0x2d0(%rbp), %rdi
leaq -0x2c0(%rbp), %rax
cmpq %rax, %rdi
je 0x110bf
callq 0x31d0
testb %bl, %bl
je 0x11103
leaq -0x4f8(%rbp), %rbx
movq %rbx, %rdi
leaq -0xd8(%rbp), %rsi
movl $0x18, %edx
callq 0x3310
movq %rbx, %rdi
leaq -0x58(%rbp), %rsi
callq 0x3120
movq %rbx, %rdi
movq 0x36ebc(%rip), %rsi     # 0x47fb0
callq 0x3160
movq %r14, %rdi
callq 0x30d0
jmp 0x11169
movl $0x2c, %edx
movq %r12, %rdi
leaq 0x29701(%rip), %rsi     # 0x3a813
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x11007
movl $0x19, %edx
movq %r12, %rdi
leaq 0x296be(%rip), %rsi     # 0x3a840
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %r13, %rdi
leaq -0x330(%rbp), %rsi
callq 0x33c0
leaq -0x330(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x3866f
testb %al, %al
je 0x111ff
leaq -0x350(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x30f0
jmp 0x11265
movl $0x2f, %edx
movq %r12, %rdi
leaq 0x2964c(%rip), %rsi     # 0x3a85a
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x11173
movl $0x13, %edx
movq %r12, %rdi
leaq 0x2960c(%rip), %rsi     # 0x3a88a
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %r13, %rdi
leaq -0xb8(%rbp), %rsi
callq 0x33c0
leaq -0x2a0(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2b0(%rbp), %rdi
callq 0x4574
leaq -0x2b0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x387c0
movl %eax, %ebx
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0x11327
callq 0x31d0
testb %bl, %bl
je 0x11339
movq -0xb8(%rbp), %rax
movb (%rax), %al
movb %al, -0x2a(%rbp)
jmp 0x1139f
movl $0x21, %edx
movq %r12, %rdi
leaq 0x29556(%rip), %rsi     # 0x3a89e
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x1126f
movl $0x18, %edx
movq %r12, %rdi
leaq 0x29508(%rip), %rsi     # 0x3a8c0
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %r13, %rdi
leaq -0x98(%rbp), %rsi
callq 0x33c0
leaq -0x280(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
addq %rsi, %rdx
leaq -0x290(%rbp), %rdi
callq 0x4574
leaq -0x290(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x38873
movl %eax, %ebx
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0x11461
callq 0x31d0
testb %bl, %bl
je 0x114a6
movq -0x90(%rbp), %rbx
testq %rbx, %rbx
je 0x11491
movq -0x98(%rbp), %r14
xorl %r15d, %r15d
movsbl (%r14,%r15), %edi
callq 0x32c0
movb %al, (%r14,%r15)
incq %r15
cmpq %r15, %rbx
jne 0x1147b
leaq -0x98(%rbp), %rdi
movq %rdi, %rsi
callq 0x30f0
movq -0x50(%rbp), %r14
jmp 0x1150c
movl $0x30, %edx
movq %r12, %rdi
leaq 0x29424(%rip), %rsi     # 0x3a8d9
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x113a9
movl $0xf, %edx
movq %r12, %rdi
leaq 0x293e5(%rip), %rsi     # 0x3a90a
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %r13, %rdi
leaq -0x78(%rbp), %rsi
callq 0x33c0
leaq -0x260(%rbp), %rax
movq %rax, -0x270(%rbp)
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
addq %rsi, %rdx
leaq -0x270(%rbp), %rdi
callq 0x4574
movq -0x38(%rbp), %rdi
leaq -0x270(%rbp), %rsi
leaq -0x29(%rbp), %rdx
callq 0x38974
movl %eax, %ebx
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0x115c9
callq 0x31d0
testb %bl, %bl
je 0x11605
movq -0x70(%rbp), %rbx
testq %rbx, %rbx
je 0x115f3
movq -0x78(%rbp), %r14
xorl %r15d, %r15d
movsbl (%r14,%r15), %edi
callq 0x32c0
movb %al, (%r14,%r15)
incq %r15
cmpq %r15, %rbx
jne 0x115dd
leaq -0x78(%rbp), %rdi
movq %rdi, %rsi
callq 0x30f0
movq -0x50(%rbp), %r14
jmp 0x1166b
movl $0x29, %edx
movq %r12, %rdi
leaq 0x29306(%rip), %rsi     # 0x3a91a
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x11516
movl -0x3c(%rbp), %r15d
leaq -0x198(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1a8(%rbp), %rdi
callq 0x4574
movl -0x58(%rbp), %ebx
leaq -0x178(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x350(%rbp), %rsi
movq -0x348(%rbp), %rdx
addq %rsi, %rdx
leaq -0x188(%rbp), %rdi
callq 0x4574
movl %ebx, -0x54(%rbp)
leaq -0x158(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
addq %rsi, %rdx
leaq -0x168(%rbp), %rdi
callq 0x4574
leaq -0x360(%rbp), %rax
movq %rax, -0x370(%rbp)
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
addq %rsi, %rdx
leaq -0x370(%rbp), %rbx
movq %rbx, %rdi
callq 0x4574
subq $0x8, %rsp
movsbl -0x2a(%rbp), %eax
leaq -0x250(%rbp), %rdi
movl %r15d, %esi
leaq -0x1a8(%rbp), %rdx
movq -0x148(%rbp), %rcx
movl -0x54(%rbp), %r8d
leaq -0x188(%rbp), %r9
pushq %rbx
leaq -0x168(%rbp), %r10
pushq %r10
pushq %rax
callq 0xf31c
addq $0x20, %rsp
movl -0x3c(%rbp), %eax
movl %eax, -0x4f8(%rbp)
leaq 0x360c1(%rip), %rax     # 0x47838
movq %rax, -0x4f0(%rbp)
movl -0x248(%rbp), %eax
movl %eax, -0x4e8(%rbp)
leaq -0x4d0(%rbp), %rcx
movq %rcx, -0x4e0(%rbp)
movq -0x240(%rbp), %rax
leaq -0x230(%rbp), %rdx
cmpq %rdx, %rax
je 0x117c2
movq %rax, -0x4e0(%rbp)
movq -0x230(%rbp), %rax
movq %rax, -0x4d0(%rbp)
jmp 0x117c8
movups (%rdx), %xmm0
movups %xmm0, (%rcx)
movq -0x238(%rbp), %rax
movq %rax, -0x4d8(%rbp)
movq %rdx, -0x240(%rbp)
movq $0x0, -0x238(%rbp)
movb $0x0, -0x230(%rbp)
movl 0x18(%rdx), %eax
leaq -0x4f8(%rbp), %rcx
movl %eax, 0x40(%rcx)
movq 0x10(%rdx), %rax
movq %rax, 0x38(%rcx)
leaq -0x4a0(%rbp), %rcx
movq %rcx, -0x4b0(%rbp)
movq -0x210(%rbp), %rax
leaq -0x200(%rbp), %rdx
cmpq %rdx, %rax
je 0x1183c
movq %rax, -0x4b0(%rbp)
movq -0x200(%rbp), %rax
movq %rax, -0x4a0(%rbp)
jmp 0x11842
movups (%rdx), %xmm0
movups %xmm0, (%rcx)
movq -0x208(%rbp), %rax
movq %rax, -0x4a8(%rbp)
movq %rdx, -0x210(%rbp)
movq $0x0, -0x208(%rbp)
movb $0x0, -0x200(%rbp)
movb -0x1f0(%rbp), %al
movb %al, -0x490(%rbp)
movq %r14, -0x488(%rbp)
movq -0x1e8(%rbp), %rax
leaq -0x1d8(%rbp), %rdx
cmpq %rdx, %rax
je 0x118a6
movq %rax, -0x488(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0x478(%rbp)
jmp 0x118ad
movups (%rdx), %xmm0
movups %xmm0, (%r14)
movq -0x1e0(%rbp), %rcx
movq -0x1c8(%rbp), %rax
movq %rcx, -0x480(%rbp)
movq %rdx, -0x1e8(%rbp)
movq $0x0, -0x1e0(%rbp)
movb $0x0, -0x1d8(%rbp)
movq -0x48(%rbp), %rcx
movq %rcx, -0x4f0(%rbp)
leaq -0x458(%rbp), %rcx
movq %rcx, -0x468(%rbp)
leaq -0x1b8(%rbp), %rdx
cmpq %rdx, %rax
je 0x11917
movq %rax, -0x468(%rbp)
movq -0x1b8(%rbp), %rax
movq %rax, -0x458(%rbp)
jmp 0x1191d
movups (%rdx), %xmm0
movups %xmm0, (%rcx)
movq -0x1c0(%rbp), %rax
movq %rax, -0x460(%rbp)
movq %rdx, -0x1c8(%rbp)
movq $0x0, -0x1c0(%rbp)
movb $0x0, -0x1b8(%rbp)
movq -0x38(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
callq 0x1d52a
movq -0x48(%rbp), %rax
movq %rax, -0x4f0(%rbp)
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x11977
callq 0x31d0
leaq 0x35eba(%rip), %rax     # 0x47838
movq %rax, -0x4f0(%rbp)
movq -0x488(%rbp), %rdi
cmpq %r14, %rdi
je 0x11996
callq 0x31d0
movq -0x4b0(%rbp), %rdi
leaq -0x4a0(%rbp), %rax
cmpq %rax, %rdi
je 0x119ae
callq 0x31d0
movq -0x4e0(%rbp), %rdi
leaq -0x4d0(%rbp), %rax
cmpq %rax, %rdi
je 0x119c6
callq 0x31d0
movq -0x48(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0x1c8(%rbp), %rdi
leaq -0x1b8(%rbp), %rax
cmpq %rax, %rdi
je 0x119e9
callq 0x31d0
leaq 0x35e48(%rip), %rax     # 0x47838
movq %rax, -0x250(%rbp)
movq -0x1e8(%rbp), %rdi
leaq -0x1d8(%rbp), %rax
cmpq %rax, %rdi
je 0x11a0f
callq 0x31d0
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x11a27
callq 0x31d0
movq -0x240(%rbp), %rdi
leaq -0x230(%rbp), %rax
cmpq %rax, %rdi
je 0x11a3f
callq 0x31d0
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0x11a57
callq 0x31d0
movq -0x168(%rbp), %rdi
leaq -0x158(%rbp), %rax
cmpq %rax, %rdi
je 0x11a6f
callq 0x31d0
movq -0x188(%rbp), %rdi
leaq -0x178(%rbp), %rax
cmpq %rax, %rdi
je 0x11a87
callq 0x31d0
movq -0x1a8(%rbp), %rdi
leaq -0x198(%rbp), %rax
cmpq %rax, %rdi
je 0x11a9f
callq 0x31d0
movl $0x29, %edx
movq %r12, %rdi
leaq 0x28e96(%rip), %rsi     # 0x3a944
callq 0x3250
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %r13, %rdi
leaq -0x2b(%rbp), %rsi
callq 0x3280
cmpb $0x73, -0x2b(%rbp)
je 0x10be5
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
cmpq -0x140(%rbp), %rax
jne 0x11b11
movl $0x21, %r14d
leaq 0x28e5f(%rip), %r15     # 0x3a96e
jmp 0x11b7e
movl $0x1f, %r14d
leaq 0x28e83(%rip), %r15     # 0x3a9a1
testq %rax, %rax
je 0x11b7e
leaq 0x28e66(%rip), %rsi     # 0x3a990
leaq -0x6f8(%rbp), %rdi
movl $0x10, %edx
callq 0x3050
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x11b72
movq %rax, %r13
leaq -0x6f8(%rbp), %r12
leaq 0x28(%rbx), %rsi
movq %r12, %rdi
callq 0xf835
movq %rbx, %rdi
callq 0x3140
movq %rax, %rbx
cmpq %r13, %rax
jne 0x11b56
leaq -0x6f8(%rbp), %rdi
callq 0x32a0
movq 0x3644b(%rip), %rbx     # 0x47fd0
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x3250
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq 0x3641f(%rip), %rdi     # 0x47fd0
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq 0x36403(%rip), %rax     # 0x47fc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x6f0(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x6f8(%rbp,%rcx)
callq 0x3190
leaq -0x600(%rbp), %rdi
callq 0x30d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x11c0c
callq 0x31d0
movq -0x330(%rbp), %rdi
leaq -0x320(%rbp), %rax
cmpq %rax, %rdi
je 0x11c24
callq 0x31d0
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x11c3c
callq 0x31d0
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0x11c54
callq 0x31d0
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x11c6c
callq 0x31d0
movq -0x350(%rbp), %rdi
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0x11c84
callq 0x31d0
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x11c96
callq 0x31d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x11cae
callq 0x31d0
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x11cc6
callq 0x31d0
addq $0x6d8, %rsp            # imm = 0x6D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x294cd(%rip), %rdi     # 0x3b1ac
callq 0x3110
leaq 0x294c1(%rip), %rdi     # 0x3b1ac
callq 0x32b0
movq %rax, %rbx
jmp 0x11ec3
jmp 0x11e8a
jmp 0x11e8a
jmp 0x11e8a
movq %rax, %rbx
jmp 0x11d7e
movq %rax, %rbx
jmp 0x11d66
movq %rax, %rbx
jmp 0x11d4e
movq %rax, %rbx
jmp 0x11d36
movq %rax, %rbx
leaq -0x4f8(%rbp), %rdi
callq 0x1cc8c
leaq -0x250(%rbp), %rdi
callq 0x1cd0a
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0x11d4e
callq 0x31d0
movq -0x168(%rbp), %rdi
leaq -0x158(%rbp), %rax
cmpq %rax, %rdi
je 0x11d66
callq 0x31d0
movq -0x188(%rbp), %rdi
leaq -0x178(%rbp), %rax
cmpq %rax, %rdi
je 0x11d7e
callq 0x31d0
movq -0x1a8(%rbp), %rdi
leaq -0x198(%rbp), %rax
cmpq %rax, %rdi
je 0x11e8d
jmp 0x11e75
jmp 0x11e8a
jmp 0x11e8a
jmp 0x11da6
movq %rax, %rbx
movq 0x36200(%rip), %rsi     # 0x47fb0
leaq -0x4f8(%rbp), %rdi
callq 0x3160
movq %r14, %rdi
callq 0x30d0
jmp 0x11e8d
jmp 0x11e8a
movq %rax, %rbx
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0x11e8d
jmp 0x11e75
movq %rax, %rbx
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0x11e8d
jmp 0x11e75
movq %rax, %rbx
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0x11e8d
jmp 0x11e75
movq %rax, %rbx
movq -0x2d0(%rbp), %rdi
leaq -0x2c0(%rbp), %rax
cmpq %rax, %rdi
je 0x11e8d
jmp 0x11e75
movq %rax, %rbx
cmpl $0x0, (%r15)
jne 0x11e8d
movl %r14d, (%r15)
jmp 0x11e8d
movq %rax, %rbx
movq -0x310(%rbp), %rdi
leaq -0x300(%rbp), %rax
cmpq %rax, %rdi
je 0x11e8d
jmp 0x11e75
movq %rax, %rbx
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0x11e8d
callq 0x31d0
jmp 0x11e8d
jmp 0x11e8a
jmp 0x11e8a
jmp 0x11e8a
jmp 0x11e8a
jmp 0x11e8a
jmp 0x11e8a
jmp 0x11e8a
movq %rax, %rbx
movq 0x36134(%rip), %rax     # 0x47fc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x6f0(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x6f8(%rbp,%rcx)
callq 0x3190
leaq -0x600(%rbp), %rdi
callq 0x30d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x11edb
callq 0x31d0
movq -0x330(%rbp), %rdi
leaq -0x320(%rbp), %rax
cmpq %rax, %rdi
je 0x11ef3
callq 0x31d0
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x11f0b
callq 0x31d0
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0x11f23
callq 0x31d0
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x11f3b
callq 0x31d0
movq -0x350(%rbp), %rdi
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0x11f53
callq 0x31d0
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x11f65
callq 0x31d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x11f7d
callq 0x31d0
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x11f95
callq 0x31d0
movq %rbx, %rdi
callq 0x3380