// File: BUSEC[P]RPKI_Downgrade_Detector/./exp.cpp
// Function: operator<<(std::ostream&, UnknownToInvalidDowngrade)
ostream& operator<<(ostream& os, UnknownToInvalidDowngrade g) //LEOCOM: should be a const &, but I can do that until I fix replace range
{

  for(unordered_map<int,PrefixRange*>::iterator i = g.getExceptions()->begin(); i != g.getExceptions()->end(); ++i){
    int as = i->first;
    PrefixRange* exception =  i->second;

    os<<"[";
      os<<"R:{";
        os<<"AS:"<<g.getROA()->getAS();
        os<<",";
        os<<"Prefix:"<<g.getROA()->getPrefix()<<"-"<<g.getROA()->getMaxlen();
      os<<"},";
      os<<"R.UnknownToKnown:{";
        os<<*g.getUnknownToKnown(); 
      os<<"},";
      os<<"Except:{";
        os<<"AS:"<<as;
      os<<",";
        os<<"Prefix:"<<*exception;
      os<<"}";
    os<<"]";
    os<<endl;
  }
  return os;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rsi, -0x48(%rbp)
movq %rdi, %rax
movq -0x48(%rbp), %rdi
movq %rdi, -0x40(%rbp)
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
callq 0x5d50
movq %rax, %rdi
callq 0x5d70
movq %rax, -0x18(%rbp)
movq -0x40(%rbp), %rdi
callq 0x5d50
movq %rax, %rdi
callq 0x5dd0
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x5da0
testb $0x1, %al
jne 0x39bb
jmp 0x3b81
leaq -0x18(%rbp), %rdi
callq 0x5e00
movl (%rax), %eax
movl %eax, -0x24(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x5e00
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x10646(%rip), %rsi     # 0x1402b
callq 0x3260
movq -0x8(%rbp), %rdi
leaq 0x10638(%rip), %rsi     # 0x1402d
callq 0x3260
movq -0x8(%rbp), %rdi
leaq 0x10609(%rip), %rsi     # 0x1400e
callq 0x3260
movq -0x40(%rbp), %rdi
movq %rax, -0x68(%rbp)
callq 0x5e30
movq %rax, %rdi
callq 0x5b50
movq -0x68(%rbp), %rdi
movl %eax, %esi
callq 0x33f0
movq -0x8(%rbp), %rdi
leaq 0x105fd(%rip), %rsi     # 0x14032
callq 0x3260
movq -0x8(%rbp), %rdi
leaq 0x105cf(%rip), %rsi     # 0x14014
callq 0x3260
movq -0x40(%rbp), %rdi
movq %rax, -0x60(%rbp)
callq 0x5e30
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
callq 0x5b70
movq -0x60(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x3640
movq %rax, %rdi
leaq 0x105a2(%rip), %rsi     # 0x1401c
callq 0x3260
movq -0x40(%rbp), %rdi
movq %rax, -0x58(%rbp)
callq 0x5e30
movq %rax, %rdi
callq 0x5ba0
movq -0x58(%rbp), %rdi
movl %eax, %esi
callq 0x33f0
movq -0x8(%rbp), %rdi
leaq 0x10587(%rip), %rsi     # 0x14031
callq 0x3260
movq -0x8(%rbp), %rdi
leaq 0x1057a(%rip), %rsi     # 0x14034
callq 0x3260
movq -0x40(%rbp), %rdi
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
callq 0x5e40
movq -0x50(%rbp), %rdi
movq %rax, %rsi
callq 0x36a0
movq -0x8(%rbp), %rdi
leaq 0x1054a(%rip), %rsi     # 0x14031
callq 0x3260
movq -0x8(%rbp), %rdi
leaq 0x10550(%rip), %rsi     # 0x14047
callq 0x3260
movq -0x8(%rbp), %rdi
leaq 0x10507(%rip), %rsi     # 0x1400e
callq 0x3260
movq %rax, %rdi
movl -0x24(%rbp), %esi
callq 0x33f0
movq -0x8(%rbp), %rdi
leaq 0x10510(%rip), %rsi     # 0x14032
callq 0x3260
movq -0x8(%rbp), %rdi
leaq 0x104e2(%rip), %rsi     # 0x14014
callq 0x3260
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x36a0
movq -0x8(%rbp), %rdi
leaq 0x104d8(%rip), %rsi     # 0x14026
callq 0x3260
movq -0x8(%rbp), %rdi
leaq 0x106f5(%rip), %rsi     # 0x14253
callq 0x3260
movq -0x8(%rbp), %rdi
movq 0x1a45a(%rip), %rsi     # 0x1dfc8
callq 0x32a0
leaq -0x18(%rbp), %rdi
callq 0x5e60
jmp 0x3990
movq -0x8(%rbp), %rax
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax,%rax)