// File: /workspace/github_c_makefile_star2_O0/chatziko-k08[P]lecture-code/tests/../include/acutest.h
// Function: acutest_colored_printf_
acutest_colored_printf_(int color, const char* fmt, ...)
{
    va_list args;
    char buffer[256];
    int n;

    va_start(args, fmt);
    vsnprintf(buffer, sizeof(buffer), fmt, args);
    va_end(args);
    buffer[sizeof(buffer)-1] = '\0';

    if(!acutest_colorize_) {
        return printf("%s", buffer);
    }

#if defined ACUTEST_UNIX_
    {
        const char* col_str;
        switch(color) {
            case ACUTEST_COLOR_GREEN_:              col_str = "\033[0;32m"; break;
            case ACUTEST_COLOR_RED_:                col_str = "\033[0;31m"; break;
            case ACUTEST_COLOR_GREEN_INTENSIVE_:    col_str = "\033[1;32m"; break;
            case ACUTEST_COLOR_RED_INTENSIVE_:      col_str = "\033[1;31m"; break;
            case ACUTEST_COLOR_DEFAULT_INTENSIVE_:  col_str = "\033[1m"; break;
            default:                                col_str = "\033[0m"; break;
        }
        printf("%s", col_str);
        n = printf("%s", buffer);
        printf("\033[0m");
        return n;
    }
#elif defined ACUTEST_WIN_
    {
        HANDLE h;
        CONSOLE_SCREEN_BUFFER_INFO info;
        WORD attr;

        h = GetStdHandle(STD_OUTPUT_HANDLE);
        GetConsoleScreenBufferInfo(h, &info);

        switch(color) {
            case ACUTEST_COLOR_GREEN_:              attr = FOREGROUND_GREEN; break;
            case ACUTEST_COLOR_RED_:                attr = FOREGROUND_RED; break;
            case ACUTEST_COLOR_GREEN_INTENSIVE_:    attr = FOREGROUND_GREEN | FOREGROUND_INTENSITY; break;
            case ACUTEST_COLOR_RED_INTENSIVE_:      attr = FOREGROUND_RED | FOREGROUND_INTENSITY; break;
            case ACUTEST_COLOR_DEFAULT_INTENSIVE_:  attr = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY; break;
            default:                                attr = 0; break;
        }
        if(attr != 0)
            SetConsoleTextAttribute(h, attr);
        n = printf("%s", buffer);
        SetConsoleTextAttribute(h, info.wAttributes);
        return n;
    }
#else
    n = printf("%s", buffer);
    return n;
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x200, %rsp            # imm = 0x200
testb %al, %al
je 0x27a7
movaps %xmm0, -0x1c0(%rbp)
movaps %xmm1, -0x1b0(%rbp)
movaps %xmm2, -0x1a0(%rbp)
movaps %xmm3, -0x190(%rbp)
movaps %xmm4, -0x180(%rbp)
movaps %xmm5, -0x170(%rbp)
movaps %xmm6, -0x160(%rbp)
movaps %xmm7, -0x150(%rbp)
movq %r9, -0x1c8(%rbp)
movq %r8, -0x1d0(%rbp)
movq %rcx, -0x1d8(%rbp)
movq %rdx, -0x1e0(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rax
leaq -0x1f0(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq 0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movl $0x30, 0x4(%rax)
movl $0x10, (%rax)
leaq -0x130(%rbp), %rdi
movq -0x10(%rbp), %rdx
leaq -0x30(%rbp), %rcx
movl $0x100, %esi            # imm = 0x100
callq 0x2080
leaq -0x30(%rbp), %rax
movb $0x0, -0x31(%rbp)
cmpl $0x0, 0x9a8a(%rip)      # 0xc2a0
jne 0x2835
leaq -0x130(%rbp), %rsi
leaq 0x5e30(%rip), %rdi      # 0x8656
movb $0x0, %al
callq 0x20d0
movl %eax, -0x4(%rbp)
jmp 0x2904
movl -0x8(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x1f8(%rbp)
subl $0x4, %eax
ja 0x28af
movq -0x1f8(%rbp), %rax
leaq 0x57ba(%rip), %rcx      # 0x8010
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x5dc4(%rip), %rax      # 0x862a
movq %rax, -0x140(%rbp)
jmp 0x28bd
leaq 0x5dbc(%rip), %rax      # 0x8632
movq %rax, -0x140(%rbp)
jmp 0x28bd
leaq 0x5db4(%rip), %rax      # 0x863a
movq %rax, -0x140(%rbp)
jmp 0x28bd
leaq 0x5dac(%rip), %rax      # 0x8642
movq %rax, -0x140(%rbp)
jmp 0x28bd
leaq 0x5da4(%rip), %rax      # 0x864a
movq %rax, -0x140(%rbp)
jmp 0x28bd
leaq 0x5d99(%rip), %rax      # 0x864f
movq %rax, -0x140(%rbp)
movq -0x140(%rbp), %rsi
leaq 0x5d8b(%rip), %rdi      # 0x8656
movb $0x0, %al
callq 0x20d0
leaq -0x130(%rbp), %rsi
leaq 0x5d76(%rip), %rdi      # 0x8656
movb $0x0, %al
callq 0x20d0
movl %eax, -0x134(%rbp)
leaq 0x5d5b(%rip), %rdi      # 0x864f
movb $0x0, %al
callq 0x20d0
movl -0x134(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x200, %rsp            # imm = 0x200
popq %rbp
retq