// File: /workspace/github_c_makefile_star2_O0/samtools[P]htslib/header.c
// Function: sam_hrecs_find_type_pos
static sam_hrec_type_t *sam_hrecs_find_type_pos(sam_hrecs_t *hrecs,
                                                const char *type, int idx) {
    sam_hrec_type_t *first, *itr;

    if (idx < 0)
        return NULL;

    if (type[0] == 'S' && type[1] == 'Q')
        return idx < hrecs->nref ? hrecs->ref[idx].ty : NULL;

    if (type[0] == 'R' && type[1] == 'G')
        return idx < hrecs->nrg ? hrecs->rg[idx].ty : NULL;

    if (type[0] == 'P' && type[1] == 'G')
        return idx < hrecs->npg ? hrecs->pg[idx].ty : NULL;

    first = itr = sam_hrecs_find_type_id(hrecs, type, NULL, NULL);
    if (!first)
        return NULL;

    while (idx > 0) {
        itr = itr->next;
        if (itr == first)
            break;
        --idx;
    }

    return idx == 0 ? itr : NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
jge 0xd9ef6
movq $0x0, -0x8(%rbp)
jmp 0xda06f
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x53, %eax
jne 0xd9f4d
movq -0x18(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x51, %eax
jne 0xd9f4d
movl -0x1c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jge 0xd9f38
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movslq -0x1c(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
jmp 0xd9f40
xorl %eax, %eax
movq %rax, -0x38(%rbp)
jmp 0xd9f40
movq -0x38(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xda06f
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x52, %eax
jne 0xd9fa4
movq -0x18(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x47, %eax
jne 0xd9fa4
movl -0x1c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x40(%rcx), %eax
jge 0xd9f8f
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x1c(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0xd9f97
xorl %eax, %eax
movq %rax, -0x40(%rbp)
jmp 0xd9f97
movq -0x40(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xda06f
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x50, %eax
jne 0xd9ff8
movq -0x18(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x47, %eax
jne 0xd9ff8
movl -0x1c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x58(%rcx), %eax
jge 0xd9fe6
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0xd9fee
xorl %eax, %eax
movq %rax, -0x48(%rbp)
jmp 0xd9fee
movq -0x48(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xda06f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %ecx
movq %rcx, %rdx
callq 0xd9960
movq %rax, -0x30(%rbp)
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0xda025
movq $0x0, -0x8(%rbp)
jmp 0xda06f
jmp 0xda027
cmpl $0x0, -0x1c(%rbp)
jle 0xda04f
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0xda044
jmp 0xda04f
movl -0x1c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0xda027
cmpl $0x0, -0x1c(%rbp)
jne 0xda05f
movq -0x30(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0xda067
xorl %eax, %eax
movq %rax, -0x50(%rbp)
jmp 0xda067
movq -0x50(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)