// File: /workspace/github_c_makefile_star2_O3/space222[P]silo/./nuklear.h
// Function: nk_contextual_begin
NK_API int
nk_contextual_begin(struct nk_context *ctx, nk_flags flags, struct nk_vec2 size,
    struct nk_rect trigger_bounds)
{
    struct nk_window *win;
    struct nk_window *popup;
    struct nk_rect body;

    NK_STORAGE const struct nk_rect null_rect = {-1,-1,0,0};
    int is_clicked = 0;
    int is_open = 0;
    int ret = 0;

    NK_ASSERT(ctx);
    NK_ASSERT(ctx->current);
    NK_ASSERT(ctx->current->layout);
    if (!ctx || !ctx->current || !ctx->current->layout)
        return 0;

    win = ctx->current;
    ++win->popup.con_count;
    if (ctx->current != ctx->active)
        return 0;

    /* check if currently active contextual is active */
    popup = win->popup.win;
    is_open = (popup && win->popup.type == NK_PANEL_CONTEXTUAL);
    is_clicked = nk_input_mouse_clicked(&ctx->input, NK_BUTTON_RIGHT, trigger_bounds);
    if (win->popup.active_con && win->popup.con_count != win->popup.active_con)
        return 0;
    if (!is_open && win->popup.active_con)
        win->popup.active_con = 0;
    if ((!is_open && !is_clicked))
        return 0;

    /* calculate contextual position on click */
    win->popup.active_con = win->popup.con_count;
    if (is_clicked) {
        body.x = ctx->input.mouse.pos.x;
        body.y = ctx->input.mouse.pos.y;
    } else {
        body.x = popup->bounds.x;
        body.y = popup->bounds.y;
    }
    body.w = size.x;
    body.h = size.y;

    /* start nonblocking contextual popup */
    ret = nk_nonblock_begin(ctx, flags|NK_WINDOW_NO_SCROLLBAR, body,
            null_rect, NK_PANEL_CONTEXTUAL);
    if (ret) win->popup.type = NK_PANEL_CONTEXTUAL;
    else {
        win->popup.active_con = 0;
        win->popup.type = NK_PANEL_NONE;
        if (win->popup.win)
            win->popup.win->flags = 0;
    }
    return ret;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
testq %rdi, %rdi
je 0xe845
movq %rdi, %r14
movq 0x3fe8(%rdi), %r15
testq %r15, %r15
je 0xe864
cmpq $0x0, 0xa8(%r15)
je 0xe883
movl 0x164(%r15), %r13d
incl %r13d
movl %r13d, 0x164(%r15)
xorl %ebp, %ebp
cmpq 0x3fe0(%r14), %r15
je 0xe6e8
movl %ebp, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %esi, %r12d
movaps %xmm0, 0x10(%rsp)
movq 0x120(%r15), %rax
testq %rax, %rax
movq %rax, 0x8(%rsp)
je 0xe760
movl %r12d, 0x4(%rsp)
movl 0x128(%r15), %r12d
cmpl $0x10, %r12d
sete %bl
movq %r14, %rdi
movl $0x2, %esi
movaps %xmm1, %xmm0
movaps %xmm2, %xmm1
callq 0x887e
leaq 0x16c(%r15), %rcx
movl 0x16c(%r15), %edx
testl %edx, %edx
je 0xe792
cmpl %edx, %r13d
jne 0xe6d7
cmpl $0x10, %r12d
jne 0xe799
movl %r13d, (%rcx)
testl %eax, %eax
movl 0x4(%rsp), %r12d
jne 0xe7c2
movq 0x8(%rsp), %rax
movss 0x4c(%rax), %xmm1
addq $0x50, %rax
jmp 0xe7d2
movq %r14, %rdi
movl $0x2, %esi
movaps %xmm1, %xmm0
movaps %xmm2, %xmm1
callq 0x887e
leaq 0x16c(%r15), %rcx
movl 0x16c(%r15), %edx
xorl %ebp, %ebp
testl %edx, %edx
je 0xe7a4
cmpl %edx, %r13d
jne 0xe6d7
jmp 0xe79e
movl 0x4(%rsp), %r12d
jmp 0xe7a6
movl 0x4(%rsp), %r12d
movl $0x0, (%rcx)
xorl %ebx, %ebx
testl %eax, %eax
setne %dl
orb %bl, %dl
movl $0x0, %ebp
cmpb $0x1, %dl
jne 0xe6d7
movl %r13d, (%rcx)
testl %eax, %eax
je 0xe750
movss 0x144(%r14), %xmm1
leaq 0x148(%r14), %rax
orl $0x20, %r12d
movss (%rax), %xmm0
movlhps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0]
shufps $0xe2, %xmm1, %xmm0     # xmm0 = xmm0[2,0],xmm1[2,3]
movaps 0x14b58(%rip), %xmm2    # 0x23340
xorps %xmm3, %xmm3
movq %r14, %rdi
movl %r12d, %esi
movaps 0x10(%rsp), %xmm1
movl $0x10, %edx
callq 0xe8a2
testl %eax, %eax
je 0xe819
movl $0x10, 0x128(%r15)
movl $0x1, %ebp
jmp 0xe6d7
xorl %ebp, %ebp
movl %ebp, 0x16c(%r15)
movl %ebp, 0x128(%r15)
movq 0x120(%r15), %rax
testq %rax, %rax
je 0xe6d7
movl $0x0, 0x48(%rax)
jmp 0xe6d7
leaq 0x17ec7(%rip), %rdi     # 0x26713
leaq 0x14e80(%rip), %rsi     # 0x236d3
leaq 0x17240(%rip), %rcx     # 0x25a9a
movl $0x42ae, %edx           # imm = 0x42AE
callq 0x20a0
leaq 0x16930(%rip), %rdi     # 0x2519b
leaq 0x14e61(%rip), %rsi     # 0x236d3
leaq 0x17221(%rip), %rcx     # 0x25a9a
movl $0x42af, %edx           # imm = 0x42AF
callq 0x20a0
leaq 0x16a8d(%rip), %rdi     # 0x25317
leaq 0x14e42(%rip), %rsi     # 0x236d3
leaq 0x17202(%rip), %rcx     # 0x25a9a
movl $0x42b0, %edx           # imm = 0x42B0
callq 0x20a0