// File: /workspace/github_c_makefile_star2_O2/stetre[P]moonnuklear/src/./nuklear/nuklear.h
// Function: nk_draw_symbol
NK_LIB void
nk_draw_symbol(struct nk_command_buffer *out, enum nk_symbol_type type,
    struct nk_rect content, struct nk_color background, struct nk_color foreground,
    float border_width, const struct nk_user_font *font)
{
    switch (type) {
    case NK_SYMBOL_X:
    case NK_SYMBOL_UNDERSCORE:
    case NK_SYMBOL_PLUS:
    case NK_SYMBOL_MINUS: {
        /* single character text symbol */
        const char *X = (type == NK_SYMBOL_X) ? "x":
            (type == NK_SYMBOL_UNDERSCORE) ? "_":
            (type == NK_SYMBOL_PLUS) ? "+": "-";
        struct nk_text text;
        text.padding = nk_vec2(0,0);
        text.background = background;
        text.text = foreground;
        nk_widget_text(out, content, X, 1, &text, NK_TEXT_CENTERED, font);
    } break;
    case NK_SYMBOL_CIRCLE_SOLID:
    case NK_SYMBOL_CIRCLE_OUTLINE:
    case NK_SYMBOL_RECT_SOLID:
    case NK_SYMBOL_RECT_OUTLINE: {
        /* simple empty/filled shapes */
        if (type == NK_SYMBOL_RECT_SOLID || type == NK_SYMBOL_RECT_OUTLINE) {
            nk_fill_rect(out, content,  0, foreground);
            if (type == NK_SYMBOL_RECT_OUTLINE)
                nk_fill_rect(out, nk_shrink_rect(content, border_width), 0, background);
        } else {
            nk_fill_circle(out, content, foreground);
            if (type == NK_SYMBOL_CIRCLE_OUTLINE)
                nk_fill_circle(out, nk_shrink_rect(content, 1), background);
        }
    } break;
    case NK_SYMBOL_TRIANGLE_UP:
    case NK_SYMBOL_TRIANGLE_DOWN:
    case NK_SYMBOL_TRIANGLE_LEFT:
    case NK_SYMBOL_TRIANGLE_RIGHT: {
        enum nk_heading heading;
        struct nk_vec2 points[3];
        heading = (type == NK_SYMBOL_TRIANGLE_RIGHT) ? NK_RIGHT :
            (type == NK_SYMBOL_TRIANGLE_LEFT) ? NK_LEFT:
            (type == NK_SYMBOL_TRIANGLE_UP) ? NK_UP: NK_DOWN;
        nk_triangle_from_direction(points, content, 0, 0, heading);
        nk_fill_triangle(out, points[0].x, points[0].y, points[1].x, points[1].y,
            points[2].x, points[2].y, foreground);
    } break;
    default:
    case NK_SYMBOL_NONE:
    case NK_SYMBOL_MAX: break;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movl %esi, %r15d
leal -0x1(%r15), %eax
cmpl $0xb, %eax
ja 0x4d6dc
movq %r8, %r9
movl %ecx, %ebp
movl %edx, %r14d
movq %rdi, %rbx
leaq 0x194dc(%rip), %rcx     # 0x66a54
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leal -0x5(%r15), %eax
cmpl $0x1, %eax
movaps %xmm1, 0x20(%rsp)
movaps %xmm0, 0x10(%rsp)
ja 0x4d5f8
movss %xmm2, 0xc(%rsp)
xorps %xmm2, %xmm2
movq %rbx, %rdi
movaps 0x10(%rsp), %xmm0
movaps 0x20(%rsp), %xmm1
movl %ebp, %esi
callq 0x12f00
movss 0xc(%rsp), %xmm2
movaps 0x10(%rsp), %xmm0
movaps 0x20(%rsp), %xmm1
cmpl $0x6, %r15d
jne 0x4d6dc
callq 0x4b175
xorps %xmm2, %xmm2
movq %rbx, %rdi
movl %r14d, %esi
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x12f00
cmpl $0x9, %r15d
je 0x4d65a
cmpl $0xa, %r15d
jne 0x4d65f
pushq $0x1
jmp 0x4d65c
movq %rbx, %rdi
movaps 0x10(%rsp), %xmm0
movaps 0x20(%rsp), %xmm1
movl %ebp, %esi
callq 0x13ff0
movaps 0x10(%rsp), %xmm0
movaps 0x20(%rsp), %xmm1
cmpl $0x4, %r15d
jne 0x4d6dc
movss 0x1920c(%rip), %xmm2    # 0x66834
callq 0x4b175
movq %rbx, %rdi
movl %r14d, %esi
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x13ff0
cmpl $0xb, %r15d
leaq 0x1d2b6(%rip), %rax     # 0x6a903
leaq 0x1d2b1(%rip), %rsi     # 0x6a905
cmoveq %rax, %rsi
jmp 0x4d6bd
pushq $0x3
popq %rsi
jmp 0x4d66b
xorl %esi, %esi
cmpl $0x7, %r15d
setne %sil
addl %esi, %esi
leaq 0x30(%rsp), %r14
xorps %xmm2, %xmm2
xorps %xmm3, %xmm3
movq %r14, %rdi
callq 0x143b0
movss (%r14), %xmm0
movss 0x4(%r14), %xmm1
movss 0x8(%r14), %xmm2
movss 0xc(%r14), %xmm3
movss 0x10(%r14), %xmm4
movss 0x14(%r14), %xmm5
movq %rbx, %rdi
movl %ebp, %esi
callq 0x13ad0
jmp 0x4d6dc
leaq 0x1cdff(%rip), %rsi     # 0x6a4b3
jmp 0x4d6bd
leaq 0x1c8b7(%rip), %rsi     # 0x69f74
leaq 0x30(%rsp), %rcx
andq $0x0, (%rcx)
movl %r14d, 0x8(%rcx)
movl %ebp, 0xc(%rcx)
pushq $0x1
popq %rdx
pushq $0x12
popq %r8
movq %rbx, %rdi
callq 0x41852
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq