// File: /workspace/github_c_makefile_star2_O0/nemequ[P]safe-math/munit/munit.c
// Function: munit_test_runner_exec
static MunitResult
munit_test_runner_exec(MunitTestRunner* runner, const MunitTest* test, const MunitParameter params[], MunitReport* report) {
  unsigned int iterations = runner->iterations;
  MunitResult result = MUNIT_FAIL;
#if defined(MUNIT_ENABLE_TIMING)
  MunitWallClock wall_clock_begin, wall_clock_end;
  MunitCpuClock cpu_clock_begin, cpu_clock_end;
#endif
  unsigned int i = 0;

  if ((test->options & MUNIT_TEST_OPTION_SINGLE_ITERATION) == MUNIT_TEST_OPTION_SINGLE_ITERATION)
    iterations = 1;
  else if (iterations == 0)
    iterations = runner->suite->iterations;

  munit_rand_seed(runner->seed);

  do {
    void* data = (test->setup == NULL) ? runner->user_data : test->setup(params, runner->user_data);

#if defined(MUNIT_ENABLE_TIMING)
    munit_wall_clock_get_time(&wall_clock_begin);
    munit_cpu_clock_get_time(&cpu_clock_begin);
#endif

    result = test->test(params, data);

#if defined(MUNIT_ENABLE_TIMING)
    munit_wall_clock_get_time(&wall_clock_end);
    munit_cpu_clock_get_time(&cpu_clock_end);
#endif

    if (test->tear_down != NULL)
      test->tear_down(data);

    if (MUNIT_LIKELY(result == MUNIT_OK)) {
      report->successful++;
#if defined(MUNIT_ENABLE_TIMING)
      report->wall_clock += munit_wall_clock_get_elapsed(&wall_clock_begin, &wall_clock_end);
      report->cpu_clock += munit_cpu_clock_get_elapsed(&cpu_clock_begin, &cpu_clock_end);
#endif
    } else {
      switch (result) {
        case MUNIT_SKIP:
          report->skipped++;
          break;
        case MUNIT_FAIL:
          report->failed++;
          break;
        case MUNIT_ERROR:
          report->errored++;
          break;
        case MUNIT_OK:
        default:
          break;
      }
      break;
    }
  } while (++i < iterations);

  return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x24(%rbp)
movl $0x1, -0x28(%rbp)
movl $0x0, -0x6c(%rbp)
movq -0x10(%rbp), %rax
movl 0x20(%rax), %eax
andl $0x1, %eax
cmpl $0x1, %eax
jne 0x1337b
movl $0x1, -0x24(%rbp)
jmp 0x13391
cmpl $0x0, -0x24(%rbp)
jne 0x1338f
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x18(%rax), %eax
movl %eax, -0x24(%rbp)
jmp 0x13391
movq -0x8(%rbp), %rax
movl 0x18(%rax), %edi
callq 0x10ab0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x133b6
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x80(%rbp)
jmp 0x133d0
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rsi
callq *%rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x78(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x13670
leaq -0x58(%rbp), %rdi
callq 0x136c0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq *%rax
movl %eax, -0x28(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x13670
leaq -0x68(%rbp), %rdi
callq 0x136c0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x1342a
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x78(%rbp), %rdi
callq *%rax
cmpl $0x0, -0x28(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x13481
movq -0x20(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
leaq -0x38(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x13710
movq -0x20(%rbp), %rax
addsd 0x18(%rax), %xmm0
movsd %xmm0, 0x18(%rax)
leaq -0x58(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x13760
movq -0x20(%rbp), %rax
addsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
jmp 0x134db
movl -0x28(%rbp), %eax
movq %rax, -0x88(%rbp)
subq $0x3, %rax
ja 0x134d7
movq -0x88(%rbp), %rax
leaq 0x6cf1(%rip), %rcx      # 0x1a190
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x20(%rbp), %rax
movl 0x4(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x4(%rax)
jmp 0x134d9
movq -0x20(%rbp), %rax
movl 0x8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x8(%rax)
jmp 0x134d9
movq -0x20(%rbp), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
jmp 0x134d9
jmp 0x134d7
jmp 0x134d9
jmp 0x134ef
jmp 0x134dd
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
cmpl -0x24(%rbp), %eax
jb 0x1339d
movl -0x28(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
nopl (%rax,%rax)