// File: /workspace/github_c_makefile_star2_O0/deplinenoise[P]tundra/unittest/googletest/googletest/src/gtest.cc
// Function: testing::TestInfo::Run()
void TestInfo::Run() {
  if (!should_run_) return;

  // Tells UnitTest where to store test result.
  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
  impl->set_current_test_info(this);

  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();

  // Notifies the unit test event listeners that a test is about to start.
  repeater->OnTestStart(*this);

  const TimeInMillis start = internal::GetTimeInMillis();

  impl->os_stack_trace_getter()->UponLeavingGTest();

  // Creates the test object.
  Test* const test = internal::HandleExceptionsInMethodIfSupported(
      factory_, &internal::TestFactoryBase::CreateTest,
      "the test fixture's constructor");

  // Runs the test only if the test object was created and its
  // constructor didn't generate a fatal failure.
  if ((test != NULL) && !Test::HasFatalFailure()) {
    // This doesn't throw as all user code that can throw are wrapped into
    // exception handling code.
    test->Run();
  }

  // Deletes the test object.
  impl->os_stack_trace_getter()->UponLeavingGTest();
  internal::HandleExceptionsInMethodIfSupported(
      test, &Test::DeleteSelf_, "the test fixture's destructor");

  result_.set_elapsed_time(internal::GetTimeInMillis() - start);

  // Notifies the unit test event listener that a test has just finished.
  repeater->OnTestEnd(*this);

  // Tells UnitTest to stop associating assertion results to this
  // test.
  impl->set_current_test_info(NULL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
testb $0x1, 0x80(%rax)
jne 0x1de02
jmp 0x1df2a
callq 0x30ae0
movq -0x50(%rbp), %rsi
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x34570
callq 0x14160
movq %rax, %rdi
callq 0x1df30
movq %rax, %rdi
callq 0x164f0
movq -0x50(%rbp), %rsi
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
callq 0x16b30
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x16ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq -0x50(%rbp), %rax
movq 0x88(%rax), %rdi
movq $0x0, -0x30(%rbp)
movq $0x11, -0x38(%rbp)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq 0x6cd11(%rip), %rcx     # 0x8ab9b
callq 0x34590
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1deac
callq 0x1d2f0
testb $0x1, %al
jne 0x1deac
movq -0x28(%rbp), %rdi
callq 0x1d1f0
movq -0x10(%rbp), %rdi
callq 0x16ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq -0x28(%rbp), %rdi
leaq 0x16934(%rip), %rax     # 0x34800
movq %rax, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq 0x6ccd3(%rip), %rcx     # 0x8abba
callq 0x34020
movq -0x50(%rbp), %rax
addq $0x90, %rax
movq %rax, -0x58(%rbp)
callq 0x16b30
movq -0x58(%rbp), %rdi
movq %rax, %rsi
subq -0x20(%rbp), %rsi
callq 0x34830
movq -0x50(%rbp), %rsi
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
callq *0x48(%rax)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x34570
addq $0x60, %rsp
popq %rbp
retq