// File: /workspace/github_cpp_makefile_star2_O3/millanek[P]evo/process_vcf_utils.cpp
// Function: GeneralSetCounts::checkForGenotypeLikelihoodsOrProbabilities(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&)
int GeneralSetCounts::checkForGenotypeLikelihoodsOrProbabilities(const std::vector<std::string>& vcfLineFields) {
    std::vector<std::string> format = split(vcfLineFields[8], ':');
    if (format.size() == 1) return LikelihoodsProbabilitiesAbsent; // The GT tag must be present in the first place
    
    int likelihoodsOrProbabilitiesTagPosition = returnFormatTagPosition(format, "GP");
    if (likelihoodsOrProbabilitiesTagPosition != std::numeric_limits<int>::min()) { likelihoodsProbabilitiesType = LikelihoodsProbabilitiesGP; }
    else {
        likelihoodsOrProbabilitiesTagPosition = returnFormatTagPosition(format, "GL");
        if (likelihoodsOrProbabilitiesTagPosition != std::numeric_limits<int>::min()) { likelihoodsProbabilitiesType = LikelihoodsProbabilitiesGL; }
        else {
            likelihoodsOrProbabilitiesTagPosition = returnFormatTagPosition(format, "PL");
            if (likelihoodsOrProbabilitiesTagPosition != std::numeric_limits<int>::min()) { likelihoodsProbabilitiesType = LikelihoodsProbabilitiesPL; }
        }
    }
    return likelihoodsOrProbabilitiesTagPosition;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
movl $0x100, %eax            # imm = 0x100
addq (%rsi), %rax
movq %rsp, %r14
movq %r14, %rdi
movq %rax, %rsi
movl $0x3a, %edx
callq 0x4d650
movq 0x8(%r14), %rax
subq (%r14), %rax
xorl %ebp, %ebp
cmpq $0x20, %rax
je 0x51835
leaq 0x28(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7ef84(%rip), %rsi     # 0xd066d
leaq 0x7ef7f(%rip), %rdx     # 0xd066f
leaq 0x18(%rsp), %rdi
callq 0x28a52
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x5775a
movq %rax, %r14
movq 0x8(%rsp), %r13
movq (%rsp), %rax
movq %r14, %r12
subq %rax, %r12
movq 0x18(%rsp), %rdi
cmpq %r15, %rdi
je 0x51736
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x8480
cmpq %r13, %r14
je 0x5174f
shrq $0x5, %r12
movl $0x1, %eax
movl %r12d, %ecx
negl %ecx
jno 0x5182c
leaq 0x18(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x7ef12(%rip), %rsi     # 0xd0670
leaq 0x7ef0d(%rip), %rdx     # 0xd0672
callq 0x28a52
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x5775a
movq %rax, %r14
movq 0x8(%rsp), %r13
movq (%rsp), %rax
movq %r14, %r12
subq %rax, %r12
movq 0x18(%rsp), %rdi
cmpq %r15, %rdi
je 0x517a6
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x8480
cmpq %r13, %r14
je 0x517bb
shrq $0x5, %r12
movl $0x2, %eax
movl %r12d, %ecx
negl %ecx
jno 0x5182c
leaq 0x18(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x7eea9(%rip), %rsi     # 0xd0673
leaq 0x7eea4(%rip), %rdx     # 0xd0675
callq 0x28a52
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x5775a
movq %rax, %r14
movq 0x8(%rsp), %r13
movq (%rsp), %rax
movq %r14, %r12
subq %rax, %r12
movq 0x18(%rsp), %rdi
cmpq %r15, %rdi
je 0x51812
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x80000000, %ebp       # imm = 0x80000000
cmpq %r13, %r14
je 0x51835
shrq $0x5, %r12
movl $0x3, %eax
movl %r12d, %ecx
negl %ecx
jo 0x51835
movl %eax, 0x1d8(%rbx)
movl %r12d, %ebp
movq %rsp, %rdi
callq 0x2e784
movl %ebp, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x51856
jmp 0x51872
jmp 0x51856
jmp 0x51872
movq %rax, %rbx
movq 0x18(%rsp), %rdi
cmpq %r15, %rdi
je 0x51875
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x51875
movq %rax, %rbx
movq %rsp, %rdi
callq 0x2e784
movq %rbx, %rdi
callq 0x8840