// File: /workspace/github_c_makefile_star2_O0/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:
subq $0xc8, %rsp
movlpd %xmm0, 0xb8(%rsp)
movlpd %xmm1, 0xc0(%rsp)
movl %edx, 0xb4(%rsp)
movl %ecx, 0xb0(%rsp)
movq %rdi, 0xa8(%rsp)
movl %esi, 0xa4(%rsp)
movss %xmm2, 0xa0(%rsp)
movq %r8, 0x98(%rsp)
movl 0xa4(%rsp), %eax
movq %rax, 0x28(%rsp)
subq $0xd, %rax
ja 0x79a4f
movq 0x28(%rsp), %rax
leaq 0x33f3b(%rip), %rcx     # 0xad6b4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x1, 0xa4(%rsp)
jne 0x7979a
leaq 0x385ee(%rip), %rax     # 0xb1d81
movq %rax, 0x20(%rsp)
jmp 0x797dd
cmpl $0x2, 0xa4(%rsp)
jne 0x797b2
leaq 0x37f64(%rip), %rax     # 0xb170f
movq %rax, 0x18(%rsp)
jmp 0x797d3
movl 0xa4(%rsp), %edx
leaq 0x38a2c(%rip), %rax     # 0xb21ec
leaq 0x38a23(%rip), %rcx     # 0xb21ea
cmpl $0xb, %edx
cmoveq %rcx, %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x90(%rsp)
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0x13460
movlpd %xmm0, 0x78(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x80(%rsp)
movl 0xb4(%rsp), %eax
movl %eax, 0x88(%rsp)
movl 0xb0(%rsp), %eax
movl %eax, 0x8c(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %r9
movsd 0xb8(%rsp), %xmm0
movsd 0xc0(%rsp), %xmm1
movl $0x1, %edx
leaq 0x80(%rsp), %rcx
movl $0x12, %r8d
callq 0x66ac0
jmp 0x79a53
cmpl $0x5, 0xa4(%rsp)
je 0x79883
cmpl $0x6, 0xa4(%rsp)
jne 0x79914
movq 0xa8(%rsp), %rdi
movsd 0xb8(%rsp), %xmm0
movsd 0xc0(%rsp), %xmm1
movl 0xb0(%rsp), %esi
xorps %xmm2, %xmm2
callq 0x13f10
cmpl $0x6, 0xa4(%rsp)
jne 0x7990f
movq 0xa8(%rsp), %rax
movq %rax, 0x10(%rsp)
movss 0xa0(%rsp), %xmm2
movsd 0xb8(%rsp), %xmm0
movsd 0xc0(%rsp), %xmm1
callq 0x75600
movq 0x10(%rsp), %rdi
movlpd %xmm0, 0x68(%rsp)
movlpd %xmm1, 0x70(%rsp)
movsd 0x68(%rsp), %xmm0
movsd 0x70(%rsp), %xmm1
movl 0xb4(%rsp), %esi
xorps %xmm2, %xmm2
callq 0x13f10
jmp 0x7999b
movq 0xa8(%rsp), %rdi
movsd 0xb8(%rsp), %xmm0
movsd 0xc0(%rsp), %xmm1
movl 0xb0(%rsp), %esi
callq 0x15030
cmpl $0x4, 0xa4(%rsp)
jne 0x79999
movq 0xa8(%rsp), %rax
movq %rax, 0x8(%rsp)
movsd 0xb8(%rsp), %xmm0
movsd 0xc0(%rsp), %xmm1
movss 0x33b7d(%rip), %xmm2    # 0xad4e8
callq 0x75600
movq 0x8(%rsp), %rdi
movlpd %xmm0, 0x58(%rsp)
movlpd %xmm1, 0x60(%rsp)
movsd 0x58(%rsp), %xmm0
movsd 0x60(%rsp), %xmm1
movl 0xb4(%rsp), %esi
callq 0x15030
jmp 0x7999b
jmp 0x79a53
cmpl $0xa, 0xa4(%rsp)
jne 0x799b5
movl $0x1, %eax
movl %eax, 0x4(%rsp)
jmp 0x799e7
cmpl $0x9, 0xa4(%rsp)
jne 0x799c9
movl $0x3, %eax
movl %eax, (%rsp)
jmp 0x799e0
movl 0xa4(%rsp), %edx
movl $0x2, %eax
xorl %ecx, %ecx
cmpl $0x7, %edx
cmovel %ecx, %eax
movl %eax, (%rsp)
movl (%rsp), %eax
movl %eax, 0x4(%rsp)
movl 0x4(%rsp), %eax
movl %eax, 0x54(%rsp)
leaq 0x30(%rsp), %rdi
movl 0x54(%rsp), %esi
movsd 0xb8(%rsp), %xmm0
movsd 0xc0(%rsp), %xmm1
xorps %xmm3, %xmm3
movaps %xmm3, %xmm2
callq 0x15420
movq 0xa8(%rsp), %rdi
movss 0x30(%rsp), %xmm0
movss 0x34(%rsp), %xmm1
movss 0x38(%rsp), %xmm2
movss 0x3c(%rsp), %xmm3
movss 0x40(%rsp), %xmm4
movss 0x44(%rsp), %xmm5
movl 0xb0(%rsp), %esi
callq 0x14b10
jmp 0x79a53
jmp 0x79a51
jmp 0x79a53
addq $0xc8, %rsp
retq
nopl (%rax,%rax)