// File: /workspace/github_cpp_makefile_star2_O1/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 %r14
pushq %rbx
subq $0x40, %rsp
movq %rdi, %rbx
movl $0x100, %eax            # imm = 0x100
addq (%rsi), %rax
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
movl $0x3a, %edx
callq 0x50624
movq 0x8(%r14), %rax
subq (%r14), %rax
xorl %ebp, %ebp
cmpq $0x20, %rax
je 0x549cb
leaq 0x30(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x828b4(%rip), %rsi     # 0xd7141
leaq 0x828af(%rip), %rdx     # 0xd7143
leaq 0x20(%rsp), %rdi
callq 0x28952
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x575e4
movq %rax, %rcx
subq 0x8(%rsp), %rcx
shrq $0x5, %rcx
cmpq 0x10(%rsp), %rax
movl $0x80000000, %ebp       # imm = 0x80000000
cmovnel %ecx, %ebp
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0x548e2
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x1, %eax
movl %ebp, %ecx
negl %ecx
jno 0x549c5
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x82844(%rip), %rsi     # 0xd7144
leaq 0x8283f(%rip), %rdx     # 0xd7146
callq 0x28952
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x575e4
movq %rax, %rcx
subq 0x8(%rsp), %rcx
shrq $0x5, %rcx
cmpq 0x10(%rsp), %rax
movl $0x80000000, %ebp       # imm = 0x80000000
cmovnel %ecx, %ebp
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0x54950
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x2, %eax
movl %ebp, %ecx
negl %ecx
jno 0x549c5
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x827dd(%rip), %rsi     # 0xd7147
leaq 0x827d8(%rip), %rdx     # 0xd7149
callq 0x28952
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x575e4
movq %rax, %rcx
subq 0x8(%rsp), %rcx
shrq $0x5, %rcx
cmpq 0x10(%rsp), %rax
movl $0x80000000, %ebp       # imm = 0x80000000
cmovnel %ecx, %ebp
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0x549ba
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x3, %eax
movl %ebp, %ecx
negl %ecx
jo 0x549cb
movl %eax, 0x1d8(%rbx)
leaq 0x8(%rsp), %rdi
callq 0x3123c
movl %ebp, %eax
addq $0x40, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x549e8
jmp 0x54a04
jmp 0x549e8
jmp 0x54a04
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0x54a07
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x54a07
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3123c
movq %rbx, %rdi
callq 0x8840