// File: /workspace/github_c_makefile_star2_O0/videolan[P]bitstream/examples/dvb_gen_si.c
// Function: generate_rst
static void generate_rst(void) {
    uint8_t *rst = psi_allocate();
    uint8_t *rst_n;
    uint8_t j = 0;

    // Generate empty rst
    rst_init(rst);
    rst_set_length(rst, 0);
    output_psi_section(rst, RST_PID, &cc);

    // Add couple of statuses to rst
    rst_set_length(rst, PSI_MAX_SIZE);

    rst_n = rst_get_status(rst, j++);
    rstn_init(rst_n);
    rstn_set_tsid(rst_n, tsid);
    rstn_set_onid(rst_n, onid);
    rstn_set_service_id(rst_n, sid);
    rstn_set_event_id(rst_n, event_id);
    rstn_set_running(rst_n, 1);

    rst_n = rst_get_status(rst, j++);
    rstn_init(rst_n);
    rstn_set_tsid(rst_n, tsid + 100);
    rstn_set_onid(rst_n, onid + 100);
    rstn_set_service_id(rst_n, sid + 100);
    rstn_set_event_id(rst_n, event_id + 100);
    rstn_set_running(rst_n, 2);

    rst_n = rst_get_status(rst, j++);
    rstn_init(rst_n);
    rstn_set_tsid(rst_n, tsid + 200);
    rstn_set_onid(rst_n, onid + 200);
    rstn_set_service_id(rst_n, sid + 200);
    rstn_set_event_id(rst_n, event_id + 200);
    rstn_set_running(rst_n, 3);

    // Set correct rst length
    rst_n = rst_get_status(rst, j); // Get offset of the end of last status
    rst_set_length(rst, rst_n - rst - RST_HEADER_SIZE);

    output_psi_section(rst, RST_PID, &cc);

    free(rst);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
callq 0x4f30
movq %rax, -0x8(%rbp)
movb $0x0, -0x11(%rbp)
movq -0x8(%rbp), %rdi
callq 0xdf70
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0xdfa0
movq -0x8(%rbp), %rdi
movl $0x13, %esi
leaq 0x1d970(%rip), %rdx     # 0x210b9
callq 0x5170
movq -0x8(%rbp), %rdi
movl $0x3fd, %esi            # imm = 0x3FD
callq 0xdfa0
movq -0x8(%rbp), %rdi
movb -0x11(%rbp), %al
movb %al, %cl
addb $0x1, %cl
movb %cl, -0x11(%rbp)
movzbl %al, %esi
callq 0xdfd0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xe050
movq -0x10(%rbp), %rdi
movzwl 0x1d8fd(%rip), %esi     # 0x21088
callq 0xe070
movq -0x10(%rbp), %rdi
movzwl 0x1d8f3(%rip), %esi     # 0x2108e
callq 0xe0b0
movq -0x10(%rbp), %rdi
movzwl 0x1d8df(%rip), %esi     # 0x2108a
callq 0xe0f0
movq -0x10(%rbp), %rdi
movzwl 0x1d8d1(%rip), %esi     # 0x2108c
callq 0xe130
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0xe170
movq -0x8(%rbp), %rdi
movb -0x11(%rbp), %al
movb %al, %cl
addb $0x1, %cl
movb %cl, -0x11(%rbp)
movzbl %al, %esi
callq 0xdfd0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xe050
movq -0x10(%rbp), %rdi
movzwl 0x1d88b(%rip), %eax     # 0x21088
addl $0x64, %eax
movzwl %ax, %esi
callq 0xe070
movq -0x10(%rbp), %rdi
movzwl 0x1d87b(%rip), %eax     # 0x2108e
addl $0x64, %eax
movzwl %ax, %esi
callq 0xe0b0
movq -0x10(%rbp), %rdi
movzwl 0x1d861(%rip), %eax     # 0x2108a
addl $0x64, %eax
movzwl %ax, %esi
callq 0xe0f0
movq -0x10(%rbp), %rdi
movzwl 0x1d84d(%rip), %eax     # 0x2108c
addl $0x64, %eax
movzwl %ax, %esi
callq 0xe130
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0xe170
movq -0x8(%rbp), %rdi
movb -0x11(%rbp), %al
movb %al, %cl
addb $0x1, %cl
movb %cl, -0x11(%rbp)
movzbl %al, %esi
callq 0xdfd0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xe050
movq -0x10(%rbp), %rdi
movzwl 0x1d801(%rip), %eax     # 0x21088
addl $0xc8, %eax
movzwl %ax, %esi
callq 0xe070
movq -0x10(%rbp), %rdi
movzwl 0x1d7ef(%rip), %eax     # 0x2108e
addl $0xc8, %eax
movzwl %ax, %esi
callq 0xe0b0
movq -0x10(%rbp), %rdi
movzwl 0x1d7d3(%rip), %eax     # 0x2108a
addl $0xc8, %eax
movzwl %ax, %esi
callq 0xe0f0
movq -0x10(%rbp), %rdi
movzwl 0x1d7bd(%rip), %eax     # 0x2108c
addl $0xc8, %eax
movzwl %ax, %esi
callq 0xe130
movq -0x10(%rbp), %rdi
movl $0x3, %esi
callq 0xe170
movq -0x8(%rbp), %rdi
movzbl -0x11(%rbp), %esi
callq 0xdfd0
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
subq $0x3, %rax
movzwl %ax, %esi
callq 0xdfa0
movq -0x8(%rbp), %rdi
movl $0x13, %esi
leaq 0x1d793(%rip), %rdx     # 0x210b9
callq 0x5170
movq -0x8(%rbp), %rdi
callq 0x1030
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)