// File: /workspace/github_c_makefile_star2_O0/chatziko-k08[P]lecture-code/tests/../include/acutest.h
// Function: main
int
main(int argc, char** argv)
{
    int i;

    acutest_argv0_ = argv[0];

#if defined ACUTEST_UNIX_
    acutest_colorize_ = isatty(STDOUT_FILENO);
#elif defined ACUTEST_WIN_
 #if defined _BORLANDC_
    acutest_colorize_ = isatty(_fileno(stdout));
 #else
    acutest_colorize_ = _isatty(_fileno(stdout));
 #endif
#else
    acutest_colorize_ = 0;
#endif

    /* Count all test units */
    acutest_list_size_ = 0;
    for(i = 0; acutest_list_[i].func != NULL; i++)
        acutest_list_size_++;

    acutest_test_data_ = (struct acutest_test_data_*)calloc(acutest_list_size_, sizeof(struct acutest_test_data_));
    if(acutest_test_data_ == NULL) {
        fprintf(stderr, "Out of memory.\n");
        acutest_exit_(2);
    }

    /* Parse options */
    acutest_cmdline_read_(acutest_cmdline_options_, argc, argv, acutest_cmdline_callback_);

    /* Initialize the proper timer. */
    acutest_timer_init_();

#if defined(ACUTEST_WIN_)
    SetUnhandledExceptionFilter(acutest_seh_exception_filter_);
#ifdef _MSC_VER
    _set_abort_behavior(0, _WRITE_ABORT_MSG);
#endif
#endif

    /* By default, we want to run all tests. */
    if(acutest_count_ == 0) {
        for(i = 0; acutest_list_[i].func != NULL; i++)
            acutest_remember_(i);
    }

    /* Guess whether we want to run unit tests as child processes. */
    if(acutest_no_exec_ < 0) {
        acutest_no_exec_ = 0;

        if(acutest_count_ <= 1) {
            acutest_no_exec_ = 1;
        } else {
#ifdef ACUTEST_WIN_
            if(IsDebuggerPresent())
                acutest_no_exec_ = 1;
#endif
#ifdef ACUTEST_LINUX_
            if(acutest_is_tracer_present_())
                acutest_no_exec_ = 1;
#endif
#ifdef ACUTEST_MACOS_
            if(acutest_AmIBeingDebugged())
                acutest_no_exec_ = 1;
#endif
#ifdef RUNNING_ON_VALGRIND
            /* RUNNING_ON_VALGRIND is provided by optionally included <valgrind.h> */
            if(RUNNING_ON_VALGRIND)
                acutest_no_exec_ = 1;
#endif
        }
    }

    if(acutest_tap_) {
        /* TAP requires we know test result ("ok", "not ok") before we output
         * anything about the test, and this gets problematic for larger verbose
         * levels. */
        if(acutest_verbose_level_ > 2)
            acutest_verbose_level_ = 2;

        /* TAP harness should provide some summary. */
        acutest_no_summary_ = 1;

        if(!acutest_worker_)
            printf("1..%d\n", (int) acutest_count_);
    }

    int index = acutest_worker_index_;
    for(i = 0; acutest_list_[i].func != NULL; i++) {
        int run = (acutest_test_data_[i].flags & ACUTEST_FLAG_RUN_);
        if (acutest_skip_mode_) /* Run all tests except those listed. */
            run = !run;
        if(run)
            acutest_run_(&acutest_list_[i], index++, i);
    }

    /* Write a summary */
    if(!acutest_no_summary_ && acutest_verbose_level_ >= 1) {
        if(acutest_verbose_level_ >= 3) {
            acutest_colored_printf_(ACUTEST_COLOR_DEFAULT_INTENSIVE_, "Summary:\n");

            printf("  Count of all unit tests:     %4d\n", (int) acutest_list_size_);
            printf("  Count of run unit tests:     %4d\n", acutest_stat_run_units_);
            printf("  Count of failed unit tests:  %4d\n", acutest_stat_failed_units_);
            printf("  Count of skipped unit tests: %4d\n", (int) acutest_list_size_ - acutest_stat_run_units_);
        }

        if(acutest_stat_failed_units_ == 0) {
            acutest_colored_printf_(ACUTEST_COLOR_GREEN_INTENSIVE_, "SUCCESS:");
            printf(" All unit tests have passed.\n");
        } else {
            acutest_colored_printf_(ACUTEST_COLOR_RED_INTENSIVE_, "FAILED:");
            printf(" %d of %d unit tests %s failed.\n",
                    acutest_stat_failed_units_, acutest_stat_run_units_,
                    (acutest_stat_failed_units_ == 1) ? "has" : "have");
        }

        if(acutest_verbose_level_ >= 3)
            printf("\n");
    }

    if (acutest_xml_output_) {
#if defined ACUTEST_UNIX_
        char *suite_name = basename(argv[0]);
#elif defined ACUTEST_WIN_
        char suite_name[_MAX_FNAME];
        _splitpath(argv[0], NULL, NULL, suite_name, NULL);
#else
        const char *suite_name = argv[0];
#endif
        fprintf(acutest_xml_output_, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
        fprintf(acutest_xml_output_, "<testsuite name=\"%s\" tests=\"%d\" errors=\"%d\" failures=\"%d\" skip=\"%d\">\n",
            suite_name, (int)acutest_list_size_, acutest_stat_failed_units_, acutest_stat_failed_units_,
            (int)acutest_list_size_ - acutest_stat_run_units_);
        for(i = 0; acutest_list_[i].func != NULL; i++) {
            struct acutest_test_data_ *details = &acutest_test_data_[i];
            fprintf(acutest_xml_output_, "  <testcase name=\"%s\" time=\"%.2f\">\n", acutest_list_[i].name, details->duration);
            if (details->flags & ACUTEST_FLAG_FAILURE_)
                fprintf(acutest_xml_output_, "    <failure />\n");
            if (!(details->flags & ACUTEST_FLAG_FAILURE_) && !(details->flags & ACUTEST_FLAG_SUCCESS_))
                fprintf(acutest_xml_output_, "    <skipped />\n");
            fprintf(acutest_xml_output_, "  </testcase>\n");
        }
        fprintf(acutest_xml_output_, "</testsuite>\n");
        fclose(acutest_xml_output_);
    }

    acutest_cleanup_();

    return (acutest_stat_failed_units_ == 0) ? 0 : 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, 0x93d1(%rip)      # 0xc298
movl $0x1, %edi
callq 0x2070
movl %eax, 0x93c9(%rip)      # 0xc2a0
movq $0x0, 0x93c6(%rip) # 0xc2a8
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rcx
leaq 0x8e6c(%rip), %rax      # 0xbd60
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, 0x8(%rax)
je 0x2f1f
movq 0x939f(%rip), %rax      # 0xc2a8
addq $0x1, %rax
movq %rax, 0x9394(%rip)      # 0xc2a8
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x2ee9
movq 0x9382(%rip), %rdi      # 0xc2a8
movl $0x10, %esi
callq 0x2140
movq %rax, 0x9379(%rip)      # 0xc2b0
cmpq $0x0, 0x9371(%rip)      # 0xc2b0
jne 0x2f63
movq 0x90b0(%rip), %rax      # 0xbff8
movq (%rax), %rdi
leaq 0x51b4(%rip), %rsi      # 0x8106
movb $0x0, %al
callq 0x2160
movl $0x2, %edi
callq 0x3410
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq 0x8c6f(%rip), %rdi      # 0xbbe0
leaq 0x978(%rip), %rcx       # 0x38f0
callq 0x3430
callq 0x3e70
cmpq $0x0, 0x932e(%rip)      # 0xc2b8
jne 0x2fc1
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rcx
leaq 0x8dc2(%rip), %rax      # 0xbd60
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, 0x8(%rax)
je 0x2fbf
movl -0x14(%rbp), %edi
callq 0x3ea0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x2f93
jmp 0x2fc1
cmpl $0x0, 0x9184(%rip)      # 0xc14c
jge 0x3073
movl $0x0, 0x9174(%rip)      # 0xc14c
cmpq $0x1, 0x92d8(%rip)      # 0xc2b8
ja 0x2ff1
movl $0x1, 0x9160(%rip)      # 0xc14c
jmp 0x3071
callq 0x3f00
cmpl $0x0, %eax
je 0x3005
movl $0x1, 0x9147(%rip)      # 0xc14c
movq $0x1001, -0x50(%rbp)    # imm = 0x1001
movq $0x0, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x28(%rbp)
leaq -0x50(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
rolq $0x3, %rdi
rolq $0xd, %rdi
rolq $0x3d, %rdi
rolq $0x33, %rdi
xchgq %rbx, %rbx
movq %rdx, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpl $0x0, %eax
je 0x306f
movl $0x1, 0x90dd(%rip)      # 0xc14c
jmp 0x3071
jmp 0x3073
cmpl $0x0, 0x9246(%rip)      # 0xc2c0
je 0x30bb
cmpl $0x2, 0x90c5(%rip)      # 0xc148
jle 0x308f
movl $0x2, 0x90b9(%rip)      # 0xc148
movl $0x1, 0x922b(%rip)      # 0xc2c4
cmpl $0x0, 0x9228(%rip)      # 0xc2c8
jne 0x30b9
movq 0x920f(%rip), %rax      # 0xc2b8
movl %eax, %esi
leaq 0x5064(%rip), %rdi      # 0x8116
movb $0x0, %al
callq 0x20d0
jmp 0x30bb
movl 0x920b(%rip), %eax      # 0xc2cc
movl %eax, -0x64(%rbp)
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rcx
leaq 0x8c8a(%rip), %rax      # 0xbd60
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, 0x8(%rax)
je 0x3154
movq 0x91c5(%rip), %rax      # 0xc2b0
movslq -0x14(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movzbl (%rax), %eax
andl $0x1, %eax
movl %eax, -0x68(%rbp)
cmpl $0x0, 0x91ca(%rip)      # 0xc2d0
je 0x3119
cmpl $0x0, -0x68(%rbp)
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0x3144
movslq -0x14(%rbp), %rax
leaq 0x8c36(%rip), %rdi      # 0xbd60
shlq $0x4, %rax
addq %rax, %rdi
movl -0x64(%rbp), %esi
movl %esi, %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
movl -0x14(%rbp), %edx
callq 0x40a0
jmp 0x3146
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x30cb
cmpl $0x0, 0x9169(%rip)      # 0xc2c4
jne 0x3273
cmpl $0x1, 0x8fe0(%rip)      # 0xc148
jl 0x3273
cmpl $0x3, 0x8fd3(%rip)      # 0xc148
jl 0x31e6
movl $0x3, %edi
leaq 0x4f9a(%rip), %rsi      # 0x811d
movb $0x0, %al
callq 0x2760
movq 0x9117(%rip), %rax      # 0xc2a8
movl %eax, %esi
leaq 0x4f8d(%rip), %rdi      # 0x8127
movb $0x0, %al
callq 0x20d0
movl 0x912d(%rip), %esi      # 0xc2d4
leaq 0x4f9d(%rip), %rdi      # 0x814b
movb $0x0, %al
callq 0x20d0
movl 0x911d(%rip), %esi      # 0xc2d8
leaq 0x4fad(%rip), %rdi      # 0x816f
movb $0x0, %al
callq 0x20d0
movq 0x90d8(%rip), %rax      # 0xc2a8
movl %eax, %esi
subl 0x90fc(%rip), %esi      # 0xc2d4
leaq 0x4fb4(%rip), %rdi      # 0x8193
movb $0x0, %al
callq 0x20d0
cmpl $0x0, 0x90eb(%rip)      # 0xc2d8
jne 0x3212
movl $0x4, %edi
leaq 0x4fbc(%rip), %rsi      # 0x81b7
movb $0x0, %al
callq 0x2760
leaq 0x4fb7(%rip), %rdi      # 0x81c0
movb $0x0, %al
callq 0x20d0
jmp 0x325a
movl $0x5, %edi
leaq 0x4fc0(%rip), %rsi      # 0x81de
movb $0x0, %al
callq 0x2760
movl 0x90ad(%rip), %esi      # 0xc2d8
movl 0x90a3(%rip), %edx      # 0xc2d4
movl 0x90a1(%rip), %edi      # 0xc2d8
leaq 0x4fcd(%rip), %rcx      # 0x820b
leaq 0x4fc2(%rip), %rax      # 0x8207
cmpl $0x1, %edi
cmoveq %rax, %rcx
leaq 0x4f93(%rip), %rdi      # 0x81e6
movb $0x0, %al
callq 0x20d0
cmpl $0x3, 0x8ee7(%rip)      # 0xc148
jl 0x3271
leaq 0x555f(%rip), %rdi      # 0x87c9
movb $0x0, %al
callq 0x20d0
jmp 0x3273
cmpq $0x0, 0x9065(%rip)      # 0xc2e0
je 0x33ee
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x2170
movq %rax, -0x70(%rbp)
movq 0x9048(%rip), %rdi      # 0xc2e0
leaq 0x4f71(%rip), %rsi      # 0x8210
movb $0x0, %al
callq 0x2160
movq 0x9033(%rip), %rdi      # 0xc2e0
movq -0x70(%rbp), %rdx
movq 0x8ff0(%rip), %rax      # 0xc2a8
movl %eax, %ecx
movl 0x9017(%rip), %r8d      # 0xc2d8
movl 0x9010(%rip), %r9d      # 0xc2d8
movq 0x8fd9(%rip), %rax      # 0xc2a8
subl 0x8fff(%rip), %eax      # 0xc2d4
leaq 0x4f5c(%rip), %rsi      # 0x8238
movl %eax, (%rsp)
movb $0x0, %al
callq 0x2160
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rcx
leaq 0x8a68(%rip), %rax      # 0xbd60
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, 0x8(%rax)
je 0x33cd
movq 0x8f9f(%rip), %rax      # 0xc2b0
movslq -0x14(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x78(%rbp)
movq 0x8fb9(%rip), %rdi      # 0xc2e0
movslq -0x14(%rbp), %rcx
leaq 0x8a2e(%rip), %rax      # 0xbd60
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rdx
movq -0x78(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq 0x4f32(%rip), %rsi      # 0x827e
movb $0x1, %al
callq 0x2160
movq -0x78(%rbp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3377
movq 0x8f77(%rip), %rdi      # 0xc2e0
leaq 0x4f32(%rip), %rsi      # 0x82a2
movb $0x0, %al
callq 0x2160
movq -0x78(%rbp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x33aa
movq -0x78(%rbp), %rax
movzbl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x33aa
movq 0x8f44(%rip), %rdi      # 0xc2e0
leaq 0x4f10(%rip), %rsi      # 0x82b3
movb $0x0, %al
callq 0x2160
movq 0x8f2f(%rip), %rdi      # 0xc2e0
leaq 0x4f0c(%rip), %rsi      # 0x82c4
movb $0x0, %al
callq 0x2160
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x32ed
movq 0x8f0c(%rip), %rdi      # 0xc2e0
leaq 0x4ef8(%rip), %rsi      # 0x82d3
movb $0x0, %al
callq 0x2160
movq 0x8ef7(%rip), %rdi      # 0xc2e0
callq 0x20a0
callq 0x4380
movl 0x8edf(%rip), %edx      # 0xc2d8
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
addq $0x80, %rsp
popq %rbp
retq
nop