// File: 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
subq $0xb30, %rsp            # imm = 0xB30
movq %rdi, -0x8(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x3300
leaq -0x60(%rbp), %rdi
callq 0x3300
leaq -0x80(%rbp), %rdi
callq 0x3300
leaq -0xa0(%rbp), %rdi
callq 0x3300
leaq -0xc0(%rbp), %rdi
callq 0x3300
leaq -0xe0(%rbp), %rdi
callq 0x3300
leaq -0x100(%rbp), %rdi
callq 0x3300
leaq -0x120(%rbp), %rdi
callq 0x3300
leaq -0x140(%rbp), %rdi
callq 0x3300
movq -0x8(%rbp), %rdi
callq 0x1f540
movl %eax, -0x14(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x33b0
jmp 0x14a2c
jmp 0x14a2e
jmp 0x14a30
movq 0x3c581(%rip), %rdi     # 0x50fb8
leaq 0x2ccc1(%rip), %rsi     # 0x416ff
callq 0x3240
movq %rax, -0x970(%rbp)
jmp 0x14a4c
movq -0x970(%rbp), %rdi
movq 0x3c546(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x14a61
movq 0x3c570(%rip), %rdi     # 0x50fd8
leaq -0xc0(%rbp), %rsi
callq 0x32c0
jmp 0x14a76
movq -0x8(%rbp), %rax
movq %rax, -0x978(%rbp)
leaq -0x378(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3100
jmp 0x14a96
movq -0x978(%rbp), %rdi
leaq -0x378(%rbp), %rsi
leaq -0x143(%rbp), %rdx
callq 0x3dcb0
movb %al, -0x979(%rbp)
jmp 0x14ab8
movb -0x979(%rbp), %al
xorb $-0x1, %al
movb %al, -0x97a(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x3180
movb -0x97a(%rbp), %al
testb $0x1, %al
jne 0x14ae1
jmp 0x14b84
movq 0x3c4d0(%rip), %rdi     # 0x50fb8
leaq 0x2cc1d(%rip), %rsi     # 0x4170c
callq 0x3240
movq %rax, -0x988(%rbp)
jmp 0x14afd
movq -0x988(%rbp), %rdi
movq 0x3c495(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x990(%rbp)
jmp 0x14b19
movq -0x990(%rbp), %rdi
movq 0x3c479(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x14b2e
jmp 0x14bf9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
jmp 0x159fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
jmp 0x159ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x3180
jmp 0x159ee
movl $0x10, %edi
movl $0x8, %esi
callq 0x13c90
movl %eax, -0x994(%rbp)
jmp 0x14b9b
movl -0x994(%rbp), %edx
leaq -0x500(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3370
jmp 0x14bb6
leaq -0x500(%rbp), %rdi
leaq -0xc(%rbp), %rsi
callq 0x3170
jmp 0x14bc8
leaq -0x500(%rbp), %rdi
callq 0x31b0
jmp 0x14bf9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
leaq -0x500(%rbp), %rdi
callq 0x31b0
jmp 0x159ee
jmp 0x14bfb
movsbl -0x143(%rbp), %eax
cmpl $0x6e, %eax
je 0x14a30
jmp 0x14c0d
movq 0x3c3a4(%rip), %rdi     # 0x50fb8
leaq 0x2cb28(%rip), %rsi     # 0x41743
callq 0x3240
movq %rax, -0x9a0(%rbp)
jmp 0x14c29
movq -0x9a0(%rbp), %rdi
movq 0x3c369(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x14c3e
movq 0x3c393(%rip), %rdi     # 0x50fd8
callq 0x33f0
jmp 0x14c4c
movq 0x3c385(%rip), %rdi     # 0x50fd8
leaq -0x40(%rbp), %rsi
callq 0x3070
jmp 0x14c5e
leaq -0x40(%rbp), %rdi
leaq -0x143(%rbp), %rsi
callq 0x3f480
movb %al, -0x9a1(%rbp)
jmp 0x14c76
movb -0x9a1(%rbp), %al
testb $0x1, %al
jne 0x14cd1
jmp 0x14c82
movq 0x3c32f(%rip), %rdi     # 0x50fb8
leaq 0x2cac2(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x9b0(%rbp)
jmp 0x14c9e
movq -0x9b0(%rbp), %rdi
movq 0x3c2f4(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x9b8(%rbp)
jmp 0x14cba
movq -0x9b8(%rbp), %rdi
movq 0x3c2d8(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x14ccf
jmp 0x14cd1
jmp 0x14cd3
movsbl -0x143(%rbp), %eax
cmpl $0x6e, %eax
je 0x14c0d
jmp 0x14ce5
movq 0x3c2cc(%rip), %rdi     # 0x50fb8
leaq 0x2ca8d(%rip), %rsi     # 0x41780
callq 0x3240
movq %rax, -0x9c0(%rbp)
jmp 0x14d01
movq -0x9c0(%rbp), %rdi
movq 0x3c291(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x14d16
movq 0x3c2bb(%rip), %rdi     # 0x50fd8
leaq -0xe0(%rbp), %rsi
callq 0x3070
jmp 0x14d2b
leaq -0x520(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3100
jmp 0x14d40
leaq -0x520(%rbp), %rdi
leaq -0x143(%rbp), %rsi
callq 0x3f760
movb %al, -0x9c1(%rbp)
jmp 0x14d5b
movb -0x9c1(%rbp), %al
xorb $-0x1, %al
movb %al, -0x9c2(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x3180
movb -0x9c2(%rbp), %al
testb $0x1, %al
jne 0x14d81
jmp 0x14df6
movq 0x3c230(%rip), %rdi     # 0x50fb8
leaq 0x2ca00(%rip), %rsi     # 0x4178f
callq 0x3240
movq %rax, -0x9d0(%rbp)
jmp 0x14d9d
movq -0x9d0(%rbp), %rdi
movq 0x3c1f5(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x9d8(%rbp)
jmp 0x14db9
movq -0x9d8(%rbp), %rdi
movq 0x3c1d9(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x14dce
jmp 0x14e85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x3180
jmp 0x159ee
xorl %eax, %eax
movl %eax, %esi
leaq -0xe0(%rbp), %rdi
movl $0xa, %edx
callq 0x1f560
movq %rax, -0x9e0(%rbp)
jmp 0x14e14
movq -0x9e0(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x3d680
movb %al, -0x9e1(%rbp)
jmp 0x14e34
movb -0x9e1(%rbp), %al
andb $0x1, %al
movb %al, -0x144(%rbp)
testb $0x1, -0x144(%rbp)
je 0x14e83
movq 0x3c166(%rip), %rdi     # 0x50fb8
leaq 0x2c955(%rip), %rsi     # 0x417ae
callq 0x3240
movq %rax, -0x9f0(%rbp)
jmp 0x14e67
movq -0x9f0(%rbp), %rdi
movq 0x3c12b(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x14e7c
movb $0x6e, -0x143(%rbp)
jmp 0x14e85
jmp 0x14e87
movsbl -0x143(%rbp), %eax
cmpl $0x6e, %eax
je 0x14ce5
jmp 0x14e99
movq 0x3c118(%rip), %rdi     # 0x50fb8
leaq 0x2c91b(%rip), %rsi     # 0x417c2
callq 0x3240
movq %rax, -0x9f8(%rbp)
jmp 0x14eb5
movq -0x9f8(%rbp), %rdi
movq 0x3c0dd(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x14eca
movq 0x3c107(%rip), %rdi     # 0x50fd8
leaq -0x100(%rbp), %rsi
callq 0x3070
jmp 0x14edf
leaq -0x540(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3100
jmp 0x14ef4
leaq -0x540(%rbp), %rdi
leaq -0x143(%rbp), %rsi
callq 0x3f860
movb %al, -0x9f9(%rbp)
jmp 0x14f0f
movb -0x9f9(%rbp), %al
xorb $-0x1, %al
movb %al, -0x9fa(%rbp)
leaq -0x540(%rbp), %rdi
callq 0x3180
movb -0x9fa(%rbp), %al
testb $0x1, %al
jne 0x14f35
jmp 0x14faa
movq 0x3c07c(%rip), %rdi     # 0x50fb8
leaq 0x2c890(%rip), %rsi     # 0x417d3
callq 0x3240
movq %rax, -0xa08(%rbp)
jmp 0x14f51
movq -0xa08(%rbp), %rdi
movq 0x3c041(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0xa10(%rbp)
jmp 0x14f6d
movq -0xa10(%rbp), %rdi
movq 0x3c025(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x14f82
jmp 0x1501f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
leaq -0x540(%rbp), %rdi
callq 0x3180
jmp 0x159ee
movl $0x10, %edi
movl $0x8, %esi
callq 0x13c90
movl %eax, -0xa14(%rbp)
jmp 0x14fc1
movl -0xa14(%rbp), %edx
leaq -0x6c8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3370
jmp 0x14fdc
leaq -0x6c8(%rbp), %rdi
leaq -0x10(%rbp), %rsi
callq 0x3170
jmp 0x14fee
leaq -0x6c8(%rbp), %rdi
callq 0x31b0
jmp 0x1501f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
leaq -0x6c8(%rbp), %rdi
callq 0x31b0
jmp 0x159ee
jmp 0x15021
movsbl -0x143(%rbp), %eax
cmpl $0x6e, %eax
je 0x14e99
jmp 0x15033
movq 0x3bf7e(%rip), %rdi     # 0x50fb8
leaq 0x2c7bf(%rip), %rsi     # 0x41800
callq 0x3240
movq %rax, -0xa20(%rbp)
jmp 0x1504f
movq -0xa20(%rbp), %rdi
movq 0x3bf43(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x15064
movq 0x3bf6d(%rip), %rdi     # 0x50fd8
leaq -0x120(%rbp), %rsi
callq 0x3070
jmp 0x15079
leaq -0x120(%rbp), %rdi
leaq -0x143(%rbp), %rsi
callq 0x3fa60
movb %al, -0xa21(%rbp)
jmp 0x15094
movb -0xa21(%rbp), %al
testb $0x1, %al
jne 0x150ef
jmp 0x150a0
movq 0x3bf11(%rip), %rdi     # 0x50fb8
leaq 0x2c76c(%rip), %rsi     # 0x4181a
callq 0x3240
movq %rax, -0xa30(%rbp)
jmp 0x150bc
movq -0xa30(%rbp), %rdi
movq 0x3bed6(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0xa38(%rbp)
jmp 0x150d8
movq -0xa38(%rbp), %rdi
movq 0x3beba(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x150ed
jmp 0x15106
leaq -0xa0(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x3030
jmp 0x15104
jmp 0x15106
jmp 0x15108
movsbl -0x143(%rbp), %eax
cmpl $0x6e, %eax
je 0x15033
jmp 0x1511a
movq 0x3be97(%rip), %rdi     # 0x50fb8
leaq 0x2c722(%rip), %rsi     # 0x4184a
callq 0x3240
movq %rax, -0xa40(%rbp)
jmp 0x15136
movq -0xa40(%rbp), %rdi
movq 0x3be5c(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1514b
movq 0x3be86(%rip), %rdi     # 0x50fd8
leaq -0x140(%rbp), %rsi
callq 0x3070
jmp 0x15160
leaq -0x6e8(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x3100
jmp 0x15175
leaq -0x6e8(%rbp), %rdi
leaq -0x143(%rbp), %rsi
callq 0x3fc10
movb %al, -0xa41(%rbp)
jmp 0x15190
movb -0xa41(%rbp), %al
xorb $-0x1, %al
movb %al, -0xa42(%rbp)
leaq -0x6e8(%rbp), %rdi
callq 0x3180
movb -0xa42(%rbp), %al
testb $0x1, %al
jne 0x151b6
jmp 0x15228
movq 0x3bdfb(%rip), %rdi     # 0x50fb8
leaq 0x2c69a(%rip), %rsi     # 0x4185e
callq 0x3240
movq %rax, -0xa50(%rbp)
jmp 0x151d2
movq -0xa50(%rbp), %rdi
movq 0x3bdc0(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0xa58(%rbp)
jmp 0x151ee
movq -0xa58(%rbp), %rdi
movq 0x3bda4(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x15203
jmp 0x15250
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
leaq -0x6e8(%rbp), %rdi
callq 0x3180
jmp 0x159ee
xorl %eax, %eax
movl %eax, %esi
leaq -0x140(%rbp), %rdi
callq 0x3430
movq %rax, -0xa60(%rbp)
jmp 0x15241
movq -0xa60(%rbp), %rax
movb (%rax), %al
movb %al, -0x141(%rbp)
jmp 0x15252
movsbl -0x143(%rbp), %eax
cmpl $0x6e, %eax
je 0x1511a
jmp 0x15264
movq 0x3bd4d(%rip), %rdi     # 0x50fb8
leaq 0x2c60e(%rip), %rsi     # 0x41880
callq 0x3240
movq %rax, -0xa68(%rbp)
jmp 0x15280
movq -0xa68(%rbp), %rdi
movq 0x3bd12(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x15295
movq 0x3bd3c(%rip), %rdi     # 0x50fd8
leaq -0x60(%rbp), %rsi
callq 0x3070
jmp 0x152a7
leaq -0x708(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3100
jmp 0x152b9
leaq -0x708(%rbp), %rdi
leaq -0x143(%rbp), %rsi
callq 0x3fd30
movb %al, -0xa69(%rbp)
jmp 0x152d4
movb -0xa69(%rbp), %al
xorb $-0x1, %al
movb %al, -0xa6a(%rbp)
leaq -0x708(%rbp), %rdi
callq 0x3180
movb -0xa6a(%rbp), %al
testb $0x1, %al
jne 0x152fa
jmp 0x1536f
movq 0x3bcb7(%rip), %rdi     # 0x50fb8
leaq 0x2c591(%rip), %rsi     # 0x41899
callq 0x3240
movq %rax, -0xa78(%rbp)
jmp 0x15316
movq -0xa78(%rbp), %rdi
movq 0x3bc7c(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0xa80(%rbp)
jmp 0x15332
movq -0xa80(%rbp), %rdi
movq 0x3bc60(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x15347
jmp 0x153f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
leaq -0x708(%rbp), %rdi
callq 0x3180
jmp 0x159ee
leaq -0x60(%rbp), %rdi
movq %rdi, -0xa90(%rbp)
callq 0x31e0
movq -0xa90(%rbp), %rdi
movq %rax, -0x710(%rbp)
callq 0x3120
movq -0xa90(%rbp), %rdi
movq %rax, -0x718(%rbp)
callq 0x31e0
movq %rax, -0x720(%rbp)
movq -0x710(%rbp), %rdi
movq -0x718(%rbp), %rsi
movq -0x720(%rbp), %rdx
movq 0x3bc00(%rip), %rcx     # 0x50fc8
callq 0x1f5a0
movq %rax, -0xa88(%rbp)
jmp 0x153d6
movq -0xa88(%rbp), %rax
movq %rax, -0x728(%rbp)
leaq -0x60(%rbp), %rsi
movq %rsi, %rdi
callq 0x3030
jmp 0x153f2
jmp 0x153f4
jmp 0x153f6
movsbl -0x143(%rbp), %eax
cmpl $0x6e, %eax
je 0x15264
jmp 0x15408
movq 0x3bba9(%rip), %rdi     # 0x50fb8
leaq 0x2c4b4(%rip), %rsi     # 0x418ca
callq 0x3240
movq %rax, -0xa98(%rbp)
jmp 0x15424
movq -0xa98(%rbp), %rdi
movq 0x3bb6e(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x15439
movq 0x3bb98(%rip), %rdi     # 0x50fd8
leaq -0x80(%rbp), %rsi
callq 0x3070
jmp 0x1544b
movq -0x8(%rbp), %rax
movq %rax, -0xaa0(%rbp)
leaq -0x748(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3100
jmp 0x15468
movq -0xaa0(%rbp), %rdi
leaq -0x748(%rbp), %rsi
leaq -0x143(%rbp), %rdx
callq 0x3fe80
movb %al, -0xaa1(%rbp)
jmp 0x1548a
movb -0xaa1(%rbp), %al
xorb $-0x1, %al
movb %al, -0xaa2(%rbp)
leaq -0x748(%rbp), %rdi
callq 0x3180
movb -0xaa2(%rbp), %al
testb $0x1, %al
jne 0x154b0
jmp 0x15525
movq 0x3bb01(%rip), %rdi     # 0x50fb8
leaq 0x2c41c(%rip), %rsi     # 0x418da
callq 0x3240
movq %rax, -0xab0(%rbp)
jmp 0x154cc
movq -0xab0(%rbp), %rdi
movq 0x3bac6(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0xab8(%rbp)
jmp 0x154e8
movq -0xab8(%rbp), %rdi
movq 0x3baaa(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x154fd
jmp 0x155aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
leaq -0x748(%rbp), %rdi
callq 0x3180
jmp 0x159ee
leaq -0x80(%rbp), %rdi
movq %rdi, -0xac8(%rbp)
callq 0x31e0
movq -0xac8(%rbp), %rdi
movq %rax, -0x750(%rbp)
callq 0x3120
movq -0xac8(%rbp), %rdi
movq %rax, -0x758(%rbp)
callq 0x31e0
movq %rax, -0x760(%rbp)
movq -0x750(%rbp), %rdi
movq -0x758(%rbp), %rsi
movq -0x760(%rbp), %rdx
movq 0x3ba4a(%rip), %rcx     # 0x50fc8
callq 0x1f5a0
movq %rax, -0xac0(%rbp)
jmp 0x1558c
movq -0xac0(%rbp), %rax
movq %rax, -0x768(%rbp)
leaq -0x80(%rbp), %rsi
movq %rsi, %rdi
callq 0x3030
jmp 0x155a8
jmp 0x155aa
jmp 0x155ac
movsbl -0x143(%rbp), %eax
cmpl $0x6e, %eax
je 0x15408
movq -0x8(%rbp), %rax
movq %rax, -0xad8(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0xacc(%rbp)
leaq -0x8e0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3100
jmp 0x155e2
movq -0x20(%rbp), %rax
movq %rax, -0xae8(%rbp)
movl -0x10(%rbp), %eax
movl %eax, -0xadc(%rbp)
leaq -0x900(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3100
jmp 0x1560b
movb -0x141(%rbp), %al
movb %al, -0xae9(%rbp)
leaq -0x920(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3100
jmp 0x15629
leaq -0x940(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3100
jmp 0x1563b
movl -0xadc(%rbp), %r8d
movq -0xae8(%rbp), %rcx
movl -0xacc(%rbp), %esi
movb -0xae9(%rbp), %dl
movq %rsp, %rax
leaq -0x940(%rbp), %rdi
movq %rdi, 0x10(%rax)
leaq -0x920(%rbp), %rdi
movq %rdi, 0x8(%rax)
movsbl %dl, %edx
movl %edx, (%rax)
leaq -0x8c0(%rbp), %rdi
leaq -0x8e0(%rbp), %rdx
leaq -0x900(%rbp), %r9
callq 0x125c0
jmp 0x1568f
leaq -0x818(%rbp), %rdi
leaq -0xc(%rbp), %rsi
leaq -0x8c0(%rbp), %rdx
callq 0x1f660
jmp 0x156a8
movq -0xad8(%rbp), %rdi
leaq -0x818(%rbp), %rsi
callq 0x1f620
movb %dl, -0xaf9(%rbp)
movq %rax, -0xaf8(%rbp)
jmp 0x156ca
movb -0xaf9(%rbp), %al
movq -0xaf8(%rbp), %rcx
movq %rcx, -0x950(%rbp)
movb %al, -0x948(%rbp)
leaq -0x818(%rbp), %rdi
callq 0x1f6a0
leaq -0x8c0(%rbp), %rdi
callq 0x5980
leaq -0x940(%rbp), %rdi
callq 0x3180
leaq -0x920(%rbp), %rdi
callq 0x3180
leaq -0x900(%rbp), %rdi
callq 0x3180
leaq -0x8e0(%rbp), %rdi
callq 0x3180
movq 0x3b885(%rip), %rdi     # 0x50fb8
leaq 0x2c1ca(%rip), %rsi     # 0x41904
callq 0x3240
movq %rax, -0xb08(%rbp)
jmp 0x15748
movq -0xb08(%rbp), %rdi
movq 0x3b84a(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1575d
movq 0x3b874(%rip), %rdi     # 0x50fd8
leaq -0x142(%rbp), %rsi
callq 0x32e0
jmp 0x15772
jmp 0x15774
movsbl -0x142(%rbp), %eax
cmpl $0x73, %eax
je 0x14a2e
movq -0x8(%rbp), %rdi
callq 0x1f540
movl -0x14(%rbp), %ecx
cmpq %rcx, %rax
jne 0x15895
movq 0x3b818(%rip), %rdi     # 0x50fb8
leaq 0x2c187(%rip), %rsi     # 0x4192e
callq 0x3240
movq %rax, -0xb10(%rbp)
jmp 0x157b5
movq -0xb10(%rbp), %rdi
movq 0x3b7dd(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x157ca
jmp 0x15976
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
jmp 0x15884
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
jmp 0x15878
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
jmp 0x1586c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
jmp 0x15860
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
jmp 0x15854
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x350(%rbp)
movl %eax, -0x354(%rbp)
leaq -0x818(%rbp), %rdi
callq 0x1f6a0
leaq -0x8c0(%rbp), %rdi
callq 0x5980
leaq -0x940(%rbp), %rdi
callq 0x3180
leaq -0x920(%rbp), %rdi
callq 0x3180
leaq -0x900(%rbp), %rdi
callq 0x3180
leaq -0x8e0(%rbp), %rdi
callq 0x3180
jmp 0x159ee
movq -0x8(%rbp), %rdi
callq 0x1f6c0
testb $0x1, %al
jne 0x15943
leaq 0x2c0a3(%rip), %rsi     # 0x41950
leaq -0x348(%rbp), %rdi
movl $0x10, %edx
callq 0x3050
jmp 0x158c0
movq -0x8(%rbp), %rdi
callq 0x1f6e0
movq %rax, -0x958(%rbp)
movq -0x8(%rbp), %rdi
callq 0x1f740
movq %rax, -0x960(%rbp)
leaq -0x958(%rbp), %rdi
leaq -0x960(%rbp), %rsi
callq 0x1f710
testb $0x1, %al
jne 0x158f9
jmp 0x15933
leaq -0x958(%rbp), %rdi
callq 0x1f770
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x348(%rbp), %rdi
callq 0x12a50
jmp 0x1591a
jmp 0x1591c
leaq -0x958(%rbp), %rdi
xorl %esi, %esi
callq 0x1f790
movq %rax, -0x968(%rbp)
jmp 0x158d0
leaq -0x348(%rbp), %rdi
callq 0x3310
jmp 0x15941
jmp 0x15943
movq 0x3b66e(%rip), %rdi     # 0x50fb8
leaq 0x2c010(%rip), %rsi     # 0x41961
callq 0x3240
movq %rax, -0xb18(%rbp)
jmp 0x1595f
movq -0xb18(%rbp), %rdi
movq 0x3b633(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x15974
jmp 0x15976
leaq -0x348(%rbp), %rdi
callq 0x3340
leaq -0x140(%rbp), %rdi
callq 0x3180
leaq -0x120(%rbp), %rdi
callq 0x3180
leaq -0x100(%rbp), %rdi
callq 0x3180
leaq -0xe0(%rbp), %rdi
callq 0x3180
leaq -0xc0(%rbp), %rdi
callq 0x3180
leaq -0xa0(%rbp), %rdi
callq 0x3180
leaq -0x80(%rbp), %rdi
callq 0x3180
leaq -0x60(%rbp), %rdi
callq 0x3180
leaq -0x40(%rbp), %rdi
callq 0x3180
addq $0xb30, %rsp            # imm = 0xB30
popq %rbp
retq
leaq -0x348(%rbp), %rdi
callq 0x3340
leaq -0x140(%rbp), %rdi
callq 0x3180
leaq -0x120(%rbp), %rdi
callq 0x3180
leaq -0x100(%rbp), %rdi
callq 0x3180
leaq -0xe0(%rbp), %rdi
callq 0x3180
leaq -0xc0(%rbp), %rdi
callq 0x3180
leaq -0xa0(%rbp), %rdi
callq 0x3180
leaq -0x80(%rbp), %rdi
callq 0x3180
leaq -0x60(%rbp), %rdi
callq 0x3180
leaq -0x40(%rbp), %rdi
callq 0x3180
movq -0x350(%rbp), %rdi
callq 0x33d0
nopl (%rax)