// File: nataly-enne[P]pet-fera/pet_fera_checagem.cpp
// Function: check_tratador(bool, std::map<int, TRATADOR, std::less<int>, std::allocator<std::pair<int const, TRATADOR>>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, char)
bool check_tratador(bool venenoso, map <int, TRATADOR> &tratadores, string nome, char tipo){
	int cont_nome = 0; // cont_nivel = 0;
	transform(nome.begin(), nome.end(), nome.begin(), ::toupper); // Converte a string nome para caracteres maiúsculos.
	if(tipo == 'v'){
		for(auto it = tratadores.begin(); it != tratadores.end();it++){
			if(it->second.getNome() == nome && (it->second.getNivel_seguranca() == 0 || it->second.getNivel_seguranca() == 1)){
				cont_nome++;
			}
		}
		if(cont_nome == 1){
			return 1;
		}
		else return 0;
	}
	else if(tipo == 'r' && venenoso == 1){ 
		for(auto it = tratadores.begin(); it != tratadores.end();it++){
			if(it->second.getNome() == nome && it->second.getNivel_seguranca() == 2){
				cont_nome++;
			}
		}
		if(cont_nome == 1){
			return 1;
		}
		else return 0;


	}
	else{
		for(auto it = tratadores.begin(); it != tratadores.end();it++){
			if(it->second.getNome() == nome &&(it->second.getNivel_seguranca() == 1)){
				cont_nome++;
			}
		}
		if(cont_nome == 1 ){ 
			return 1;
		}
		else return 0;
	}		
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movl %ecx, %eax
movq %rdx, -0x100(%rbp)
movl %edi, %ecx
movq -0x100(%rbp), %rdi
andb $0x1, %cl
movb %cl, -0x2(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdi, -0x18(%rbp)
movb %al, -0x19(%rbp)
movl $0x0, -0x20(%rbp)
callq 0x31e0
movq -0x100(%rbp), %rdi
movq %rax, -0x28(%rbp)
callq 0x3120
movq -0x100(%rbp), %rdi
movq %rax, -0x30(%rbp)
callq 0x31e0
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq 0x1371f(%rip), %rcx     # 0x50fe0
callq 0x1f5a0
movq %rax, -0x40(%rbp)
movsbl -0x19(%rbp), %eax
cmpl $0x76, %eax
jne 0x3da23
movq -0x10(%rbp), %rdi
callq 0x1f8b0
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f910
movq %rax, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1f8e0
testb $0x1, %al
jne 0x3d907
jmp 0x3da0b
leaq -0x48(%rbp), %rdi
callq 0x3d5d0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x70(%rbp), %rdi
callq 0x12440
movq -0x100(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x3d540
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x101(%rbp)
jne 0x3d941
jmp 0x3d9ac
leaq -0x48(%rbp), %rdi
callq 0x3d5d0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x12d20
movl %eax, -0x108(%rbp)
jmp 0x3d95e
movl -0x108(%rbp), %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x109(%rbp)
je 0x3d9a0
leaq -0x48(%rbp), %rdi
callq 0x3d5d0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x12d20
movl %eax, -0x110(%rbp)
jmp 0x3d98e
movl -0x110(%rbp), %eax
cmpl $0x1, %eax
sete %al
movb %al, -0x109(%rbp)
movb -0x109(%rbp), %al
movb %al, -0x101(%rbp)
movb -0x101(%rbp), %al
movb %al, -0x111(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x3180
movb -0x111(%rbp), %al
testb $0x1, %al
jne 0x3d9cd
jmp 0x3d9f2
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x3d9f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x3180
jmp 0x3dca6
jmp 0x3d9f4
leaq -0x48(%rbp), %rdi
xorl %esi, %esi
callq 0x1f960
movq %rax, -0x88(%rbp)
jmp 0x3d8e4
cmpl $0x1, -0x20(%rbp)
jne 0x3da1a
movb $0x1, -0x1(%rbp)
jmp 0x3dc98
movb $0x0, -0x1(%rbp)
jmp 0x3dc98
movsbl -0x19(%rbp), %eax
cmpl $0x72, %eax
jne 0x3db72
movb -0x2(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x3db72
movq -0x10(%rbp), %rdi
callq 0x1f8b0
movq %rax, -0x90(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f910
movq %rax, -0x98(%rbp)
leaq -0x90(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x1f8e0
testb $0x1, %al
jne 0x3da7d
jmp 0x3db5a
leaq -0x90(%rbp), %rdi
callq 0x3d5d0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x12440
movq -0x100(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
callq 0x3d540
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x112(%rbp)
jne 0x3dac0
jmp 0x3daf2
leaq -0x90(%rbp), %rdi
callq 0x3d5d0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x12d20
movl %eax, -0x118(%rbp)
jmp 0x3dae0
movl -0x118(%rbp), %eax
cmpl $0x2, %eax
sete %al
movb %al, -0x112(%rbp)
movb -0x112(%rbp), %al
movb %al, -0x119(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x3180
movb -0x119(%rbp), %al
testb $0x1, %al
jne 0x3db16
jmp 0x3db3e
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x3db3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x3180
jmp 0x3dca6
jmp 0x3db40
leaq -0x90(%rbp), %rdi
xorl %esi, %esi
callq 0x1f960
movq %rax, -0xc0(%rbp)
jmp 0x3da51
cmpl $0x1, -0x20(%rbp)
jne 0x3db69
movb $0x1, -0x1(%rbp)
jmp 0x3dc98
movb $0x0, -0x1(%rbp)
jmp 0x3dc98
movq -0x10(%rbp), %rdi
callq 0x1f8b0
movq %rax, -0xc8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f910
movq %rax, -0xd0(%rbp)
leaq -0xc8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x1f8e0
testb $0x1, %al
jne 0x3dbae
jmp 0x3dc88
leaq -0xc8(%rbp), %rdi
callq 0x3d5d0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0xf0(%rbp), %rdi
callq 0x12440
movq -0x100(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x3d540
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x11a(%rbp)
jne 0x3dbf1
jmp 0x3dc23
leaq -0xc8(%rbp), %rdi
callq 0x3d5d0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x12d20
movl %eax, -0x120(%rbp)
jmp 0x3dc11
movl -0x120(%rbp), %eax
cmpl $0x1, %eax
sete %al
movb %al, -0x11a(%rbp)
movb -0x11a(%rbp), %al
movb %al, -0x121(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x3180
movb -0x121(%rbp), %al
testb $0x1, %al
jne 0x3dc47
jmp 0x3dc6c
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x3dc6c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x3180
jmp 0x3dca6
jmp 0x3dc6e
leaq -0xc8(%rbp), %rdi
xorl %esi, %esi
callq 0x1f960
movq %rax, -0xf8(%rbp)
jmp 0x3db82
cmpl $0x1, -0x20(%rbp)
jne 0x3dc94
movb $0x1, -0x1(%rbp)
jmp 0x3dc98
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
movq -0x78(%rbp), %rdi
callq 0x33d0
nop