// File: /workspace/github_cpp_makefile_star2_O3/sonnyit[P]profiler/example.cpp
// Function: main
int main() {
  srand(time(NULL));
  func1();
  func2();

  cout << "\n";
  cout << "- func1: \n\tnum_calls: " << PROFILER_GET(func1).count << "\n\ttotal_time_passed: " << PROFILER_GET(func1).time_pass << " microsecond" << "\n\tlast_execution_time: " << PROFILER_GET(func1).last_time_pass << " microsecond\n";
  cout << "- func2: \n\tnum_calls: " << PROFILER_GET(func2).count << "\n\ttotal_time_passed: " << PROFILER_GET(func2).time_pass << " microsecond" << "\n\tlast_execution_time: " << PROFILER_GET(func2).last_time_pass << " microsecond\n";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
xorl %edi, %edi
callq 0x2160
movl %eax, %edi
callq 0x2190
callq 0x2cd4
callq 0x2e05
movq 0x3062(%rip), %rbx      # 0x5fd0
leaq 0x1160(%rip), %rsi      # 0x40d5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x21d0
leaq 0x10ee(%rip), %rsi      # 0x4077
movl $0x16, %edx
movq %rbx, %rdi
callq 0x21d0
callq 0x24ca
movq %rax, %rbx
leaq -0x78(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x10a2(%rip), %rsi      # 0x404f
leaq 0x10a0(%rip), %rdx      # 0x4054
leaq -0x88(%rbp), %rdi
callq 0x32e4
leaq -0xd0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
movq %rbx, %rsi
callq 0x26b0
movq -0xc8(%rbp), %rsi
movq 0x2fec(%rip), %rdi      # 0x5fd0
callq 0x2080
movq %rax, %rbx
leaq 0x109b(%rip), %rsi      # 0x408e
movl $0x15, %edx
movq %rax, %rdi
callq 0x21d0
callq 0x24ca
movq %rax, %r14
leaq -0x58(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x1037(%rip), %rsi      # 0x404f
leaq 0x1035(%rip), %rdx      # 0x4054
leaq -0x68(%rbp), %rdi
callq 0x32e4
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rdx
movq %r14, %rsi
callq 0x26b0
movq -0xb8(%rbp), %rsi
movq %rbx, %rdi
callq 0x2080
movq %rax, %rbx
leaq 0x1050(%rip), %rsi      # 0x40a4
movl $0xc, %edx
movq %rax, %rdi
callq 0x21d0
leaq 0x1049(%rip), %rsi      # 0x40b1
movl $0x17, %edx
movq %rbx, %rdi
callq 0x21d0
callq 0x24ca
movq %rax, %r14
leaq -0x38(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0xfc3(%rip), %rsi       # 0x404f
leaq 0xfc1(%rip), %rdx       # 0x4054
leaq -0x48(%rbp), %rdi
callq 0x32e4
leaq -0xa0(%rbp), %rdi
leaq -0x48(%rbp), %rdx
movq %r14, %rsi
callq 0x26b0
movq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x2180
leaq 0x1004(%rip), %rsi      # 0x40c9
movl $0xd, %edx
movq %rax, %rdi
callq 0x21d0
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x30e0
callq 0x2170
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
je 0x30ee
callq 0x2170
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x30ff
callq 0x2170
movq 0x2eca(%rip), %rdi      # 0x5fd0
leaq 0xfca(%rip), %rsi       # 0x40d7
movl $0x16, %edx
callq 0x21d0
callq 0x24ca
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
movq %r15, (%rdi)
leaq 0xf33(%rip), %rsi       # 0x4063
leaq 0xf31(%rip), %rdx       # 0x4068
callq 0x32e4
leaq -0xd0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
movq %rbx, %rsi
callq 0x26b0
movq -0xc8(%rbp), %rsi
movq 0x2e70(%rip), %rdi      # 0x5fd0
callq 0x2080
movq %rax, %rbx
leaq 0xf1f(%rip), %rsi       # 0x408e
movl $0x15, %edx
movq %rax, %rdi
callq 0x21d0
callq 0x24ca
movq %rax, %r14
leaq -0x68(%rbp), %rdi
movq %r12, (%rdi)
leaq 0xed1(%rip), %rsi       # 0x4063
leaq 0xecf(%rip), %rdx       # 0x4068
callq 0x32e4
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rdx
movq %r14, %rsi
callq 0x26b0
movq -0xb8(%rbp), %rsi
movq %rbx, %rdi
callq 0x2080
movq %rax, %rbx
leaq 0xeda(%rip), %rsi       # 0x40a4
movl $0xc, %edx
movq %rax, %rdi
callq 0x21d0
leaq 0xed3(%rip), %rsi       # 0x40b1
movl $0x17, %edx
movq %rbx, %rdi
callq 0x21d0
callq 0x24ca
movq %rax, %r14
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0xe62(%rip), %rsi       # 0x4063
leaq 0xe60(%rip), %rdx       # 0x4068
callq 0x32e4
leaq -0xa0(%rbp), %rdi
leaq -0x48(%rbp), %rdx
movq %r14, %rsi
callq 0x26b0
movq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x2180
leaq 0xe93(%rip), %rsi       # 0x40c9
movl $0xd, %edx
movq %rax, %rdi
callq 0x21d0
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3251
callq 0x2170
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
je 0x325f
callq 0x2170
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x3270
callq 0x2170
xorl %eax, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x32b9
jmp 0x32b9
jmp 0x32b2
jmp 0x32b2
jmp 0x3296
jmp 0x32b9
jmp 0x32b9
jmp 0x32b2
jmp 0x32b2
movq %rax, %rbx
jmp 0x32db
jmp 0x329f
jmp 0x32b2
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x32bc
callq 0x2170
jmp 0x32bc
movq %rax, %rbx
jmp 0x32ca
jmp 0x32b9
movq %rax, %rbx
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
je 0x32ca
callq 0x2170
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x32db
callq 0x2170
movq %rbx, %rdi
callq 0x2250
nop