// File: /workspace/github_c_makefile_star2_O0/Paxa[P]fast_excel/libxlsxwriter/src/vml.c
// Function: vml_write_button_shape
STATIC void
_vml_write_button_shape(lxw_vml *self, uint32_t vml_shape_id,
                        uint32_t z_index, lxw_vml_obj *vml_obj)
{
    struct xml_attribute_list attributes;
    struct xml_attribute *attribute;
    char type[] = "#_x0000_t201";
    char o_button[] = "t";
    char fillcolor[] = "buttonFace [67]";
    char strokecolor[] = "windowText [64]";
    char o_insetmode[] = "auto";

    char id[LXW_ATTR_32];
    char margin_left[LXW_ATTR_32];
    char margin_top[LXW_ATTR_32];
    char width[LXW_ATTR_32];
    char height[LXW_ATTR_32];
    char style[LXW_MAX_ATTRIBUTE_LENGTH];

    lxw_sprintf_dbl(margin_left, vml_obj->col_absolute * 0.75);
    lxw_sprintf_dbl(margin_top, vml_obj->row_absolute * 0.75);
    lxw_sprintf_dbl(width, vml_obj->width * 0.75);
    lxw_sprintf_dbl(height, vml_obj->height * 0.75);

    lxw_snprintf(id, LXW_ATTR_32, "_x0000_s%d", vml_shape_id);

    lxw_snprintf(style,
                 LXW_MAX_ATTRIBUTE_LENGTH,
                 "position:absolute;"
                 "margin-left:%spt;"
                 "margin-top:%spt;"
                 "width:%spt;"
                 "height:%spt;"
                 "z-index:%d;"
                 "mso-wrap-style:tight",
                 margin_left, margin_top, width, height, z_index);

    LXW_INIT_ATTRIBUTES();
    LXW_PUSH_ATTRIBUTES_STR("id", id);
    LXW_PUSH_ATTRIBUTES_STR("type", type);

    if (vml_obj->text)
        LXW_PUSH_ATTRIBUTES_STR("alt", vml_obj->text);

    LXW_PUSH_ATTRIBUTES_STR("style", style);
    LXW_PUSH_ATTRIBUTES_STR("o:button", o_button);
    LXW_PUSH_ATTRIBUTES_STR("fillcolor", fillcolor);
    LXW_PUSH_ATTRIBUTES_STR("strokecolor", strokecolor);
    LXW_PUSH_ATTRIBUTES_STR("o:insetmode", o_insetmode);

    lxw_xml_start_tag(self->file, "v:shape", &attributes);

    /* Write the v:fill element. */
    _vml_write_button_fill(self);

    /* Write the o:lock element. */
    _vml_write_rotation_lock(self);

    /* Write the v:textbox element. */
    _vml_write_button_textbox(self, vml_obj);

    /* Write the x:ClientData element. */
    _vml_write_button_client_data(self, vml_obj);

    lxw_xml_end_tag(self->file, "v:shape");

    LXW_FREE_ATTRIBUTES();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x990, %rsp            # imm = 0x990
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movabsq $0x313032745f3030, %rax # imm = 0x313032745F3030
movq %rax, -0x3b(%rbp)
movabsq $0x5f30303030785f23, %rax # imm = 0x5F30303030785F23
movq %rax, -0x40(%rbp)
movw $0x74, -0x42(%rbp)
movaps 0x3312e(%rip), %xmm0    # 0x6b610
movaps %xmm0, -0x60(%rbp)
movaps 0x33133(%rip), %xmm0    # 0x6b620
movaps %xmm0, -0x70(%rbp)
movb $0x0, -0x74(%rbp)
movl $0x6f747561, -0x78(%rbp) # imm = 0x6F747561
movq -0x18(%rbp), %rax
movq 0x18(%rax), %xmm0
movaps 0x32af4(%rip), %xmm1    # 0x6b000
movaps %xmm1, -0x980(%rbp)
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x32af1(%rip), %xmm1    # 0x6b010
movaps %xmm1, -0x970(%rbp)
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x32a9b(%rip), %xmm1    # 0x6afd8
movsd %xmm1, -0x960(%rbp)
mulsd %xmm1, %xmm0
leaq 0x2ea39(%rip), %rdx     # 0x66f89
movq %rdx, -0x950(%rbp)
leaq -0xc0(%rbp), %rdi
movl $0x20, %esi
movq %rsi, -0x958(%rbp)
movb $0x1, %al
movb %al, -0x941(%rbp)
callq 0xc5d0
movaps -0x980(%rbp), %xmm3
movaps -0x970(%rbp), %xmm2
movsd -0x960(%rbp), %xmm1
movq -0x958(%rbp), %rsi
movq -0x950(%rbp), %rdx
movb -0x941(%rbp), %al
movq -0x18(%rbp), %rcx
movq 0x20(%rcx), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm2
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm2, %xmm0
mulsd %xmm1, %xmm0
leaq -0xe0(%rbp), %rdi
callq 0xc5d0
movsd -0x960(%rbp), %xmm1
movq -0x958(%rbp), %rsi
movq -0x950(%rbp), %rdx
movb -0x941(%rbp), %al
movq -0x18(%rbp), %rcx
movl 0x28(%rcx), %ecx
cvtsi2sd %rcx, %xmm0
mulsd %xmm1, %xmm0
leaq -0x100(%rbp), %rdi
callq 0xc5d0
leaq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x2c(%rax), %eax
cvtsi2sd %rax, %xmm0
movsd 0x329b8(%rip), %xmm1    # 0x6afd8
mulsd %xmm1, %xmm0
movl $0x20, %esi
leaq 0x2e959(%rip), %rdx     # 0x66f89
movb $0x1, %al
callq 0xc5d0
leaq -0xa0(%rbp), %rdi
movl -0xc(%rbp), %ecx
movl $0x20, %esi
leaq 0x32abd(%rip), %rdx     # 0x6b10a
movb $0x0, %al
callq 0xc5d0
leaq -0x940(%rbp), %rdi
leaq -0xc0(%rbp), %rcx
leaq -0xe0(%rbp), %r8
leaq -0x100(%rbp), %r9
leaq -0x120(%rbp), %r10
movl -0x10(%rbp), %eax
movl $0x820, %esi            # imm = 0x820
leaq 0x32a8f(%rip), %rdx     # 0x6b115
movq %r10, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0xc5d0
movq $0x0, -0x28(%rbp)
leaq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x386a7
leaq -0xa0(%rbp), %rsi
leaq 0x364d0(%rip), %rdi     # 0x6eb85
callq 0xc030
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x1040(%rax)
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
addq $0x1040, %rax           # imm = 0x1040
movq %rax, -0x20(%rbp)
jmp 0x386e8
jmp 0x386ea
leaq -0x40(%rbp), %rsi
leaq 0x2fcbb(%rip), %rdi     # 0x683b0
callq 0xc030
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x1040(%rax)
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
addq $0x1040, %rax           # imm = 0x1040
movq %rax, -0x20(%rbp)
jmp 0x38728
movq -0x18(%rbp), %rax
cmpq $0x0, 0x98(%rax)
je 0x3877f
jmp 0x38738
movq -0x18(%rbp), %rax
movq 0x98(%rax), %rsi
leaq 0x32a35(%rip), %rdi     # 0x6b17f
callq 0xc030
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x1040(%rax)
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
addq $0x1040, %rax           # imm = 0x1040
movq %rax, -0x20(%rbp)
jmp 0x3877d
jmp 0x3877f
jmp 0x38781
leaq -0x940(%rbp), %rsi
leaq 0x2eeb7(%rip), %rdi     # 0x67646
callq 0xc030
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x1040(%rax)
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
addq $0x1040, %rax           # imm = 0x1040
movq %rax, -0x20(%rbp)
jmp 0x387c2
jmp 0x387c4
leaq -0x42(%rbp), %rsi
leaq 0x329b4(%rip), %rdi     # 0x6b183
callq 0xc030
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x1040(%rax)
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
addq $0x1040, %rax           # imm = 0x1040
movq %rax, -0x20(%rbp)
jmp 0x38802
jmp 0x38804
leaq -0x60(%rbp), %rsi
leaq 0x3297d(%rip), %rdi     # 0x6b18c
callq 0xc030
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x1040(%rax)
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
addq $0x1040, %rax           # imm = 0x1040
movq %rax, -0x20(%rbp)
jmp 0x38842
jmp 0x38844
leaq -0x70(%rbp), %rsi
leaq 0x32947(%rip), %rdi     # 0x6b196
callq 0xc030
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x1040(%rax)
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
addq $0x1040, %rax           # imm = 0x1040
movq %rax, -0x20(%rbp)
jmp 0x38882
jmp 0x38884
leaq -0x78(%rbp), %rsi
leaq 0x32913(%rip), %rdi     # 0x6b1a2
callq 0xc030
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x1040(%rax)
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
addq $0x1040, %rax           # imm = 0x1040
movq %rax, -0x20(%rbp)
jmp 0x388c2
movq -0x8(%rbp), %rax
movq (%rax), %rdi
leaq 0x328de(%rip), %rsi     # 0x6b1ae
leaq -0x28(%rbp), %rdx
callq 0xc390
movq -0x8(%rbp), %rdi
callq 0x39a70
movq -0x8(%rbp), %rdi
callq 0x39b80
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x39c90
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x39dc0
movq -0x8(%rbp), %rax
movq (%rax), %rdi
leaq 0x3289b(%rip), %rsi     # 0x6b1ae
callq 0xc060
jmp 0x3891a
cmpq $0x0, -0x28(%rbp)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x3892a
jmp 0x3895c
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
movq 0x1040(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x3894f
leaq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x38951
movq -0x30(%rbp), %rdi
callq 0xc0d0
jmp 0x3891a
jmp 0x3895e
addq $0x990, %rsp            # imm = 0x990
popq %rbp
retq
nopw (%rax,%rax)