// File: /workspace/github_c_makefile_star2_O0/Paxa[P]fast_excel/libxlsxwriter/src/chart.c
// Function: chart_write_cat_axis
STATIC void
_chart_write_cat_axis(lxw_chart *self)
{
    lxw_xml_start_tag(self->file, "c:catAx", NULL);

    _chart_write_axis_id(self, self->axis_id_1);

    /* Write the c:scaling element. Note we can't set max, min, or log base
     * for a Category axis in Excel.*/
    _chart_write_scaling(self,
                         self->x_axis->reverse,
                         LXW_FALSE, 0.0, LXW_FALSE, 0.0, 0);

    /* Write the c:delete element to hide axis. */
    if (self->x_axis->hidden)
        _chart_write_delete(self);

    /* Write the c:axPos element. */
    _chart_write_axis_pos(self, self->x_axis->axis_position,
                          self->y_axis->reverse);

    /* Write the c:majorGridlines element. */
    _chart_write_major_gridlines(self, self->x_axis);

    /* Write the c:minorGridlines element. */
    _chart_write_minor_gridlines(self, self->x_axis);

    /* Write the axis title elements. */
    self->x_axis->title.is_horizontal = self->has_horiz_cat_axis;
    _chart_write_title(self, &self->x_axis->title);

    /* Write the c:numFmt element. */
    _chart_write_cat_number_format(self, self->x_axis);

    /* Write the c:majorTickMark element. */
    _chart_write_major_tick_mark(self, self->x_axis);

    /* Write the c:minorTickMark element. */
    _chart_write_minor_tick_mark(self, self->x_axis);

    /* Write the c:tickLblPos element. */
    _chart_write_tick_label_pos(self, self->x_axis);

    /* Write the c:spPr element for the axis line. */
    _chart_write_sp_pr(self, self->x_axis->line, self->x_axis->fill,
                       self->x_axis->pattern);

    /* Write the axis font elements. */
    _chart_write_axis_font(self, self->x_axis->num_font);

    /* Write the c:crossAx element. */
    _chart_write_cross_axis(self, self->axis_id_2);

    /* Write the c:crosses element. */
    if (!self->y_axis->has_crossing || self->y_axis->crossing_min
        || self->y_axis->crossing_max)
        _chart_write_crosses(self, self->y_axis);
    else
        _chart_write_crosses_at(self, self->y_axis);

    /* Write the c:auto element. */
    _chart_write_auto(self);

    /* Write the c:lblAlgn element. */
    _chart_write_label_align(self, self->x_axis);

    /* Write the c:lblOffset element. */
    _chart_write_label_offset(self);

    /* Write the c:tickLblSkip element. */
    _chart_write_tick_label_skip(self, self->x_axis);

    /* Write the c:tickMarkSkip element. */
    _chart_write_tick_mark_skip(self, self->x_axis);

    lxw_xml_end_tag(self->file, "c:catAx");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
leaq 0x49d54(%rip), %rsi     # 0x672ee
xorl %eax, %eax
movl %eax, %edx
callq 0xc390
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x84(%rax), %esi
callq 0x1d420
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
xorl %r8d, %r8d
xorps %xmm1, %xmm1
movzbl 0xb0(%rax), %esi
movl %r8d, %edx
movaps %xmm1, %xmm0
movl %r8d, %ecx
callq 0x1db40
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
cmpb $0x0, 0xaf(%rax)
je 0x1d5f7
movq -0x8(%rbp), %rdi
callq 0x1ab00
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movb 0xab(%rax), %cl
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movzbl %cl, %esi
movzbl 0xb0(%rax), %edx
callq 0x1dbe0
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1ddc0
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1de50
movq -0x8(%rbp), %rax
movb 0x98(%rax), %cl
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movb %cl, 0x19(%rax)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1dee0
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1df30
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1e0b0
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1e290
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1e470
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x90(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x98(%rax), %rdx
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0xa0(%rax), %rcx
callq 0x15030
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x88(%rax), %rsi
callq 0x1e650
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x88(%rax), %esi
callq 0x1e700
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
cmpb $0x0, 0xf8(%rax)
je 0x1d746
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movzbl 0xf9(%rax), %eax
cmpl $0x0, %eax
jne 0x1d746
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movzbl 0xfa(%rax), %eax
cmpl $0x0, %eax
je 0x1d759
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x1e7d0
jmp 0x1d76a
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x1e950
movq -0x8(%rbp), %rdi
callq 0x1ea20
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1eaf0
movq -0x8(%rbp), %rdi
callq 0x1ec70
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1ed40
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1ee30
movq -0x8(%rbp), %rax
movq (%rax), %rdi
leaq 0x49b31(%rip), %rsi     # 0x672ee
callq 0xc060
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)