// File: Lupo-CalPoly[P]cpe315-thumbsim/thumbsim_driver.cpp
// Function: Stats::print()
void Stats::print() {
  cout << dec
       << "Total number of dynamic instructions: " << instrs << endl
       << "Number of Memory Reads: " << numMemReads << endl
       << "Number of Memory Writes: " << numMemWrites << endl
       << "Number of Register Reads: " << numRegReads << endl
       << "Number of Register Writes: " << numRegWrites << endl
       << "Branches: " << endl
       << "  Forward:" << endl
       << "    Taken: " << numForwardBranchesTaken << endl
       << "    Not taken: " << numForwardBranchesNotTaken << endl
       << "  Backward:" << endl
       << "    Taken: " << numBackwardBranchesTaken << endl
       << "    Not taken: " << numBackwardBranchesNotTaken << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq 0xc8ed(%rip), %rdi      # 0x14fc8
leaq -0x3272(%rip), %rsi     # 0x5470
callq 0x2090
movq %rax, %rdi
leaq 0x5bdf(%rip), %rsi      # 0xe2d0
callq 0x21d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl (%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0xc8a2(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5bda(%rip), %rsi      # 0xe2f7
callq 0x21d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0xc(%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0xc875(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5bc6(%rip), %rsi      # 0xe310
callq 0x21d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0xc848(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5bb3(%rip), %rsi      # 0xe32a
callq 0x21d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0xc81b(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5ba1(%rip), %rsi      # 0xe345
callq 0x21d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x14(%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0xc7ee(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5b90(%rip), %rsi      # 0xe361
callq 0x21d0
movq %rax, %rdi
movq 0xc7d0(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5b7d(%rip), %rsi      # 0xe36c
callq 0x21d0
movq %rax, %rdi
movq 0xc7b2(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5b6a(%rip), %rsi      # 0xe377
callq 0x21d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x1c(%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0xc785(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5b49(%rip), %rsi      # 0xe383
callq 0x21d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x20(%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0xc758(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5b2c(%rip), %rsi      # 0xe393
callq 0x21d0
movq %rax, %rdi
movq 0xc73a(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5af2(%rip), %rsi      # 0xe377
callq 0x21d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x24(%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0xc70d(%rip), %rsi      # 0x14fb0
callq 0x2200
movq %rax, %rdi
leaq 0x5ad1(%rip), %rsi      # 0xe383
callq 0x21d0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movl 0x28(%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0xc6e0(%rip), %rsi      # 0x14fb0
callq 0x2200
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)