// File: /workspace/github_c_makefile_star2_O0/videolan[P]bitstream/examples/./bitstream/dvb/si/desc_4e.h
// Function: desc4e_print
static inline void desc4e_print(uint8_t *p_desc,
                                f_print pf_print, void *print_opaque,
                                f_iconv pf_iconv, void *iconv_opaque,
                                print_type_t i_print_type)
{
    uint8_t i_text_length;
    uint8_t *p_text = desc4e_get_text(p_desc, &i_text_length);

    char *psz_text = dvb_string_get(p_text, i_text_length,
                                    pf_iconv, iconv_opaque);

    switch (i_print_type) {
    case PRINT_XML:
        psz_text = dvb_string_xml_escape(psz_text);
        pf_print(print_opaque,
                 "<EXTENDED_EVENT_DESC desc_number=\"%u\" last_desc_number=\"%u\""
                 " lang=\"%3.3s\" text=\"%s\">",
                 desc4e_get_desc_number(p_desc),
                 desc4e_get_last_desc_number(p_desc),
                 (char *)desc4e_get_lang(p_desc),
                 psz_text
                );
        break;
    default:
        pf_print(print_opaque,
                 "    - desc 4e extended_event desc_number=%u"
                 " last_desc_number=%u lang=%3.3s text=\"%s\"",
                 desc4e_get_desc_number(p_desc),
                 desc4e_get_last_desc_number(p_desc),
                 (char *)desc4e_get_lang(p_desc),
                 psz_text
                );
    }
    free( psz_text );

    desc4e_each_item(p_desc, p_desc_n) {
        uint8_t i_desc_length, i_item_length;
        const uint8_t *p_desc = desc4en_get_item_description(p_desc_n, &i_desc_length);
        const uint8_t *p_item = desc4en_get_item_text(p_desc_n, &i_item_length);
        char *psz_desc = dvb_string_get(p_desc, i_desc_length, pf_iconv, iconv_opaque);
        char *psz_item = dvb_string_get(p_item, i_item_length, pf_iconv, iconv_opaque);

        switch (i_print_type) {
        case PRINT_XML:
            psz_desc = dvb_string_xml_escape(psz_desc);
            psz_item = dvb_string_xml_escape(psz_item);
            pf_print(print_opaque, "<EXTENDED_EVENT_ITEM description=\"%s\" text=\"%s\"/>",
                     psz_desc, psz_item);
            break;
        default:
            pf_print(print_opaque,"       - extended_event_item description=\"%s\" text=\"%s\"",
                     psz_desc, psz_item);
        }

        free(psz_desc);
        free(psz_item);
    }

    if (i_print_type == PRINT_XML)
        pf_print(print_opaque, "</EXTENDED_EVENT_DESC>");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movl %r9d, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x2d(%rbp), %rsi
callq 0x184c0
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movzbl -0x2d(%rbp), %eax
movl %eax, %esi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x16a70
movq %rax, -0x40(%rbp)
movl -0x2c(%rbp), %eax
subl $0x1, %eax
jne 0xd956
jmp 0xd8e9
movq -0x40(%rbp), %rdi
callq 0x16ab0
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x8(%rbp), %rdi
callq 0x18520
movzbl %al, %eax
movl %eax, -0x80(%rbp)
movq -0x8(%rbp), %rdi
callq 0x18540
movzbl %al, %eax
movl %eax, -0x7c(%rbp)
movq -0x8(%rbp), %rdi
callq 0x18560
movq -0x88(%rbp), %rdi
movl -0x80(%rbp), %edx
movl -0x7c(%rbp), %ecx
movq -0x78(%rbp), %r10
movq %rax, %r8
movq -0x40(%rbp), %r9
leaq 0x1a1c6(%rip), %rsi     # 0x27b15
movb $0x0, %al
callq *%r10
jmp 0xd9c6
movq -0x10(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x8(%rbp), %rdi
callq 0x18520
movzbl %al, %eax
movl %eax, -0x98(%rbp)
movq -0x8(%rbp), %rdi
callq 0x18540
movzbl %al, %eax
movl %eax, -0x94(%rbp)
movq -0x8(%rbp), %rdi
callq 0x18560
movq -0xa0(%rbp), %rdi
movl -0x98(%rbp), %edx
movl -0x94(%rbp), %ecx
movq -0x90(%rbp), %r10
movq %rax, %r8
movq -0x40(%rbp), %r9
leaq 0x1a1a8(%rip), %rsi     # 0x27b69
movb $0x0, %al
callq *%r10
movq -0x40(%rbp), %rdi
callq 0x2030
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x18580
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0xdac9
movq -0x48(%rbp), %rdi
leaq -0x49(%rbp), %rsi
callq 0x185f0
movq %rax, -0x58(%rbp)
movq -0x48(%rbp), %rdi
leaq -0x4a(%rbp), %rsi
callq 0x18620
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rdi
movzbl -0x49(%rbp), %eax
movl %eax, %esi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x16a70
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
movzbl -0x4a(%rbp), %eax
movl %eax, %esi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x16a70
movq %rax, -0x70(%rbp)
movl -0x2c(%rbp), %eax
subl $0x1, %eax
jne 0xda85
jmp 0xda4d
movq -0x68(%rbp), %rdi
callq 0x16ab0
movq %rax, -0x68(%rbp)
movq -0x70(%rbp), %rdi
callq 0x16ab0
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %r8
movq -0x18(%rbp), %rdi
movq -0x68(%rbp), %rdx
movq -0x70(%rbp), %rcx
leaq 0x1a140(%rip), %rsi     # 0x27bbe
movb $0x0, %al
callq *%r8
jmp 0xdaa1
movq -0x10(%rbp), %r8
movq -0x18(%rbp), %rdi
movq -0x68(%rbp), %rdx
movq -0x70(%rbp), %rcx
leaq 0x1a154(%rip), %rsi     # 0x27bf0
movb $0x0, %al
callq *%r8
movq -0x68(%rbp), %rdi
callq 0x2030
movq -0x70(%rbp), %rdi
callq 0x2030
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x18580
movq %rax, -0x48(%rbp)
jmp 0xd9e0
cmpl $0x1, -0x2c(%rbp)
jne 0xdae2
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdi
leaq 0x1a14a(%rip), %rsi     # 0x27c28
movb $0x0, %al
callq *%rcx
addq $0xa0, %rsp
popq %rbp
retq
nopl (%rax,%rax)