// File: /workspace/github_cpp_makefile_star2_O2/millanek[P]evo/./process_vcf_seq_utils.h
// Function: returnGenotypeBaseAndZeroOne(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::vector<char, std::allocator<char>> const&, char)
inline std::vector<std::string> returnGenotypeBaseAndZeroOne(const std::string& ref, const std::string& alt, const std::vector<char>& genotype, char hetTreatment) {
    std::vector<std::string> baseZeroOne;
    if (genotype[0] == '0' && genotype[1] == '0') {
        baseZeroOne.push_back(ref); baseZeroOne.push_back("0");
        return baseZeroOne;
    } else if (genotype[0] == '1' && genotype[1] == '1') {
        baseZeroOne.push_back(alt); baseZeroOne.push_back("1");
        return baseZeroOne;
    } else if (genotype[0] == '.' && genotype[1] == '.') { // Missing data
        baseZeroOne.push_back("."); baseZeroOne.push_back("0");
        return baseZeroOne;
    } else {
        if (hetTreatment == 'r') {
            double rn = ((double) rand() / RAND_MAX);
            if (rn <= 0.5) {
                baseZeroOne.push_back(ref); baseZeroOne.push_back("0");
                return baseZeroOne;
            } else {
                baseZeroOne.push_back(alt); baseZeroOne.push_back("1");
                return baseZeroOne;
            }
        } else if(hetTreatment == 'p') {
            if (genotype[0] == '0') {
                baseZeroOne.push_back(ref); baseZeroOne.push_back("0");
                return baseZeroOne;
            } else if (genotype[0] == '1') {
                baseZeroOne.push_back(alt); baseZeroOne.push_back("1");
                return baseZeroOne;
            }
        } else if (hetTreatment == 'b') {
            if (genotype[1] == '0') {
                baseZeroOne.push_back(ref); baseZeroOne.push_back("0");
                return baseZeroOne;
            } else if (genotype[1] == '1') {
                baseZeroOne.push_back(alt); baseZeroOne.push_back("1");
                return baseZeroOne;
            }
        } else {
            exit(1);
        }
    }
    exit(1);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
xorpd %xmm0, %xmm0
andq $0x0, 0x10(%rdi)
movupd %xmm0, (%rdi)
movq (%rcx), %rcx
movzbl (%rcx), %eax
cmpl $0x30, %eax
jne 0x550cb
cmpb $0x30, 0x1(%rcx)
jne 0x55173
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2b0a4
leaq 0x4257b(%rip), %rsi     # 0x97625
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
jmp 0x552fd
cmpl $0x2e, %eax
je 0x55118
cmpl $0x31, %eax
jne 0x55173
movb $0x1, %dl
cmpb $0x31, 0x1(%rcx)
jne 0x55175
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2b0a4
leaq 0x5cb8d(%rip), %rsi     # 0xb1c84
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
jmp 0x552fd
cmpb $0x2e, 0x1(%rcx)
jne 0x55173
leaq 0x53125(%rip), %rsi     # 0xa824a
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
leaq 0x10(%rsp), %rdi
callq 0x8978
leaq 0x424d3(%rip), %rsi     # 0x97625
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
jmp 0x552fd
xorl %edx, %edx
movsbl %r8b, %esi
cmpl $0x62, %esi
je 0x5521e
cmpl $0x70, %esi
je 0x551e6
cmpl $0x72, %esi
jne 0x55314
callq 0x8160
cvtsi2sd %eax, %xmm0
divsd 0x3cf7f(%rip), %xmm0    # 0x92120
movsd 0x42457(%rip), %xmm1    # 0x97600
ucomisd %xmm0, %xmm1
jae 0x5529f
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2b0a4
leaq 0x5cabf(%rip), %rsi     # 0xb1c84
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
jmp 0x552fd
cmpl $0x30, %eax
jne 0x55267
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2b0a4
leaq 0x42428(%rip), %rsi     # 0x97625
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
jmp 0x552fd
movzbl 0x1(%rcx), %eax
cmpl $0x31, %eax
je 0x552cf
cmpl $0x30, %eax
jne 0x55314
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2b0a4
leaq 0x423df(%rip), %rsi     # 0x97625
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
jmp 0x552fd
testb %dl, %dl
je 0x55314
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2b0a4
leaq 0x5ca03(%rip), %rsi     # 0xb1c84
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
jmp 0x552fd
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2b0a4
leaq 0x42374(%rip), %rsi     # 0x97625
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
jmp 0x552fd
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2b0a4
leaq 0x5c9a3(%rip), %rsi     # 0xb1c84
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x21904
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
leaq 0x10(%rsp), %rdi
callq 0x8978
movq %rbx, %rax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %r15
retq
pushq $0x1
popq %rdi
callq 0x8540
jmp 0x55342
jmp 0x55353
jmp 0x55342
jmp 0x55342
jmp 0x55353
jmp 0x55353
jmp 0x55342
jmp 0x55342
jmp 0x55342
jmp 0x55342
jmp 0x55342
jmp 0x55353
jmp 0x55342
jmp 0x55353
jmp 0x55353
jmp 0x55353
jmp 0x55353
jmp 0x55353
jmp 0x55353
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x8978
jmp 0x55356
jmp 0x55353
movq %rax, %r14
movq %rbx, %rdi
callq 0x28a08
movq %r14, %rdi
callq 0x8870