// File: /workspace/github_cpp_makefile_star2_O3/auton1[P]viterbi/parameters.cpp
// Function: parameters::check_parameters()
void parameters::check_parameters()
{
	parameters defaults(0, 0);

	if (isatty(STDIN_FILENO) && stream_in)
		LOG.error("No input detected via stream.");

	if (chrs_to_keep.size() != 1)
		LOG.error("Require a chromosome.");

	if ((p_error < 0.0) || (p_error > 1.0)) LOG.error("Error probability must be between 0 and 1.", 1);

	if (num_outputs > 1) error("Only one output function may be called.",0);
	if (chrs_to_keep.size() > 0 && chrs_to_exclude.size() > 0) error("Cannot specify chromosomes to keep and to exclude", 1);
	if (end_pos < start_pos) error("End position must be greater than Start position.", 1);
	if (((end_pos != numeric_limits<int>::max()) || (start_pos != -1)) && (chrs_to_keep.size() != 1)) error("Require a single chromosome when specifying a range.", 2);
	if (max_maf < min_maf) error("Maximum MAF must be not be less than Minimum MAF.", 4);
	if (max_mac < min_mac) error("Maximum MAC must be not be less than Minimum MAC.", 4);
	if (min_maf != defaults.min_maf)
	{
		if ((min_maf < 0.0) || (min_maf > 1.0)) error("MAF must be between 0 and 1.", 4);
	}
	if (max_maf != defaults.max_maf)
	{
		if ((max_maf < 0.0) || (max_maf > 1.0)) error("Maximum MAF must be between 0 and 1.", 4);
	}
	if (min_non_ref_af != defaults.min_non_ref_af)
	{
		if ((min_non_ref_af < 0.0) || (min_non_ref_af > 1.0)) error("Non-Ref Allele Frequency must be between 0 and 1.", 4);
	}
	if (max_non_ref_af < min_non_ref_af) error("Maximum Non-Ref Allele Frequency must not be less that Minimum Non-Ref AF.", 4);
	if (max_non_ref_ac < min_non_ref_ac) error("Maximum Non-Ref Allele Count must not be less that Minimum Non-Ref AC.", 4);
	if (min_site_call_rate > 1) error("Minimum Call rate cannot be greater than 1.", 5);
	if (max_alleles < min_alleles) error("Max Number of Alleles must be greater than Min Number of Alleles.", 6);
	if (max_mean_depth < min_mean_depth) error("Max Mean Depth must be greater the Min Mean Depth.", 7);
	if (max_genotype_depth < min_genotype_depth) error("Max Genotype Depth must be greater than Min Genotype Depth.", 9);
	if (min_kept_mask_value > 9) error("Min Mask value must be between 0 and 9.", 14);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x7b8, %rsp            # imm = 0x7B8
movq %rdi, %rbx
leaq 0x268(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2f24c
xorl %edi, %edi
callq 0x57c0
testl %eax, %eax
je 0x31786
cmpb $0x1, (%rbx)
jne 0x31786
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x914e(%rip), %rsi      # 0x3a89e
leaq 0x9164(%rip), %rdx      # 0x3a8bb
leaq 0x48(%rsp), %rdi
callq 0xc85e
leaq 0x17d40(%rip), %rdi     # 0x494a8
leaq 0x48(%rsp), %rsi
movl $0x1, %edx
callq 0x36ec8
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x31786
callq 0x5410
cmpq $0x1, 0x80(%rbx)
je 0x317d6
leaq 0x38(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x911c(%rip), %rsi      # 0x3a8bc
leaq 0x912a(%rip), %rdx      # 0x3a8d1
leaq 0x28(%rsp), %rdi
callq 0xc85e
leaq 0x17cf0(%rip), %rdi     # 0x494a8
leaq 0x28(%rsp), %rsi
movl $0x1, %edx
callq 0x36ec8
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x317d6
callq 0x5410
movsd 0x520(%rbx), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x317f2
ucomisd 0x6828(%rip), %xmm0     # 0x38018
jbe 0x31838
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x90d0(%rip), %rsi      # 0x3a8d2
leaq 0x90f3(%rip), %rdx      # 0x3a8fc
leaq 0x8(%rsp), %rdi
callq 0xc85e
leaq 0x17c8e(%rip), %rdi     # 0x494a8
leaq 0x8(%rsp), %rsi
movl $0x1, %edx
callq 0x36ec8
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x31838
callq 0x5410
cmpl $0x2, 0x2b0(%rbx)
jge 0x319d0
movq 0x80(%rbx), %rax
testq %rax, %rax
je 0x3185c
cmpq $0x0, 0x50(%rbx)
jne 0x31a06
movl 0xa8(%rbx), %ecx
movl 0x430(%rbx), %edx
cmpl %edx, %ecx
jl 0x31a3f
xorl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
notl %edx
orl %ecx, %edx
sete %cl
cmpq $0x1, %rax
sete %al
orb %cl, %al
je 0x31a78
movsd 0x1e0(%rbx), %xmm1
movsd 0x218(%rbx), %xmm0
ucomisd %xmm0, %xmm1
ja 0x31ab1
movl 0x210(%rbx), %eax
cmpl 0x1dc(%rbx), %eax
jl 0x31aea
ucomisd 0x448(%rsp), %xmm1
jne 0x318c5
jnp 0x318e1
xorpd %xmm2, %xmm2
ucomisd %xmm1, %xmm2
ja 0x31ca9
ucomisd 0x673d(%rip), %xmm1     # 0x38018
ja 0x31ca9
ucomisd 0x480(%rsp), %xmm0
jne 0x318ee
jnp 0x3190a
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x31ce2
ucomisd 0x6714(%rip), %xmm0     # 0x38018
ja 0x31ce2
movsd 0x270(%rbx), %xmm0
ucomisd 0x4d8(%rsp), %xmm0
jne 0x3191f
jnp 0x3193b
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x31d1b
ucomisd 0x66e3(%rip), %xmm0     # 0x38018
ja 0x31d1b
ucomisd 0x230(%rbx), %xmm0
ja 0x31b23
movl 0x22c(%rbx), %eax
cmpl 0x268(%rbx), %eax
jl 0x31b5c
movsd 0x288(%rbx), %xmm0
ucomisd 0x66ad(%rip), %xmm0     # 0x38018
ja 0x31b95
movl 0x208(%rbx), %eax
cmpl 0x23c(%rbx), %eax
jl 0x31bce
movsd 0x260(%rbx), %xmm0
ucomisd 0x220(%rbx), %xmm0
ja 0x31c07
movl 0x20c(%rbx), %eax
cmpl 0x240(%rbx), %eax
jl 0x31c40
cmpl $0xa, 0x25c(%rbx)
jge 0x31c79
leaq 0x268(%rsp), %rdi
callq 0xc524
addq $0x7b8, %rsp            # imm = 0x7B8
popq %rbx
popq %r14
retq
leaq 0x258(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f1a(%rip), %rsi      # 0x3a8fd
leaq 0x8f3a(%rip), %rdx      # 0x3a924
leaq 0x248(%rsp), %rdi
callq 0xc85e
leaq 0x248(%rsp), %rdi
xorl %esi, %esi
callq 0x31640
leaq 0x238(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f0c(%rip), %rsi      # 0x3a925
leaq 0x8f36(%rip), %rdx      # 0x3a956
leaq 0x228(%rsp), %rdi
callq 0xc85e
leaq 0x228(%rsp), %rdi
movl $0x1, %esi
callq 0x31640
leaq 0x218(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f05(%rip), %rsi      # 0x3a957
leaq 0x8f2f(%rip), %rdx      # 0x3a988
leaq 0x208(%rsp), %rdi
callq 0xc85e
leaq 0x208(%rsp), %rdi
movl $0x1, %esi
callq 0x31640
leaq 0x1f8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8efe(%rip), %rsi      # 0x3a989
leaq 0x8f2b(%rip), %rdx      # 0x3a9bd
leaq 0x1e8(%rsp), %rdi
callq 0xc85e
leaq 0x1e8(%rsp), %rdi
movl $0x2, %esi
callq 0x31640
leaq 0x1d8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8efa(%rip), %rsi      # 0x3a9be
leaq 0x8f24(%rip), %rdx      # 0x3a9ef
leaq 0x1c8(%rsp), %rdi
callq 0xc85e
leaq 0x1c8(%rsp), %rdi
movl $0x4, %esi
callq 0x31640
leaq 0x1b8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8ef3(%rip), %rsi      # 0x3a9f0
leaq 0x8f1d(%rip), %rdx      # 0x3aa21
leaq 0x1a8(%rsp), %rdi
callq 0xc85e
leaq 0x1a8(%rsp), %rdi
movl $0x4, %esi
callq 0x31640
leaq 0x138(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f43(%rip), %rsi      # 0x3aa79
leaq 0x8f86(%rip), %rdx      # 0x3aac3
leaq 0x128(%rsp), %rdi
callq 0xc85e
leaq 0x128(%rsp), %rdi
movl $0x4, %esi
callq 0x31640
leaq 0x118(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f55(%rip), %rsi      # 0x3aac4
leaq 0x8f94(%rip), %rdx      # 0x3ab0a
leaq 0x108(%rsp), %rdi
callq 0xc85e
leaq 0x108(%rsp), %rdi
movl $0x4, %esi
callq 0x31640
leaq 0xf8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f63(%rip), %rsi      # 0x3ab0b
leaq 0x8f87(%rip), %rdx      # 0x3ab36
leaq 0xe8(%rsp), %rdi
callq 0xc85e
leaq 0xe8(%rsp), %rdi
movl $0x5, %esi
callq 0x31640
leaq 0xd8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f56(%rip), %rsi      # 0x3ab37
leaq 0x8f90(%rip), %rdx      # 0x3ab78
leaq 0xc8(%rsp), %rdi
callq 0xc85e
leaq 0xc8(%rsp), %rdi
movl $0x6, %esi
callq 0x31640
leaq 0xb8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f5f(%rip), %rsi      # 0x3ab79
leaq 0x8f8a(%rip), %rdx      # 0x3abab
leaq 0xa8(%rsp), %rdi
callq 0xc85e
leaq 0xa8(%rsp), %rdi
movl $0x7, %esi
callq 0x31640
leaq 0x98(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f59(%rip), %rsi      # 0x3abac
leaq 0x8f8d(%rip), %rdx      # 0x3abe7
leaq 0x88(%rsp), %rdi
callq 0xc85e
leaq 0x88(%rsp), %rdi
movl $0x9, %esi
callq 0x31640
leaq 0x78(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8f5f(%rip), %rsi      # 0x3abe8
leaq 0x8f7f(%rip), %rdx      # 0x3ac0f
leaq 0x68(%rsp), %rdi
callq 0xc85e
leaq 0x68(%rsp), %rdi
movl $0xe, %esi
callq 0x31640
leaq 0x198(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8d6e(%rip), %rsi      # 0x3aa2a
leaq 0x8d83(%rip), %rdx      # 0x3aa46
leaq 0x188(%rsp), %rdi
callq 0xc85e
leaq 0x188(%rsp), %rdi
movl $0x4, %esi
callq 0x31640
leaq 0x178(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8d2d(%rip), %rsi      # 0x3aa22
leaq 0x8d4a(%rip), %rdx      # 0x3aa46
leaq 0x168(%rsp), %rdi
callq 0xc85e
leaq 0x168(%rsp), %rdi
movl $0x4, %esi
callq 0x31640
leaq 0x158(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8d19(%rip), %rsi      # 0x3aa47
leaq 0x8d43(%rip), %rdx      # 0x3aa78
leaq 0x148(%rsp), %rdi
callq 0xc85e
leaq 0x148(%rsp), %rdi
movl $0x4, %esi
callq 0x31640
movq %rax, %rbx
movq 0x148(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x168(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x188(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x48(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x68(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x88(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x108(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x128(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x208(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
movq %rax, %rbx
movq 0x228(%rsp), %rdi
jmp 0x31e9b
movq %rax, %rbx
movq 0x248(%rsp), %rdi
jmp 0x31e9b
jmp 0x31ea9
jmp 0x31ea9
movq %rax, %rbx
movq 0x8(%rsp), %rdi
jmp 0x31e9b
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x31eac
callq 0x5410
jmp 0x31eac
jmp 0x31ea9
movq %rax, %rbx
leaq 0x268(%rsp), %rdi
callq 0xc524
movq %rbx, %rdi
callq 0x57d0
nop