// File: /workspace/github_c_makefile_star2_O1/dapogon[P]cellcoal/src/cellcoal.c
// Function: PrintUsage
void PrintUsage(FILE *fp)
{
	PrintHeader(fp);
    fprintf (fp, "\n%s generates a coalescent tree and simulates a sample of diploid genomes from somatic cells (no recombination), together with a (healthy) cell as outgroup.", PROGRAM_NAME);
	fprintf (fp, "\n\nUsage: %s [-FTXT -n# -s# -l# -e# -g# -h# (# # #) -k# -q# -i# -b# -c# -u# -d# -H# -j# -S# (# #) -m# -p# -w# -f# # # # -t# -a# -r# # # # # # # # # # # # # # # # -G# -C# -V# -I# -D# -P# -Q# -R# -A# # # -E# -B# -X# # # # # # # # # # # # # # # # -1 -2 -3 -4 -5 -6 -7 -8 -9 -Y -v -x -oTXT -TTXT -UTXT -W# -y# -## -?]", PROGRAM_NAME_LOWERCASE);
	fprintf (fp,"\n");

	fprintf (fp,"\n-F: user-defined parameter file (e.g. -Fmyparameters)");
	fprintf (fp,"\n-n: number of replicates (e.g. -n1000)");
    fprintf (fp,"\n-s: sample size (# cells) (e.g. -s8)");
    fprintf (fp,"\n-l: number of sites (e.g. -l500)");
    fprintf (fp,"\n-e: effective population size (e.g. -e1000)");
	fprintf (fp,"\n-g: exponential growth rate (e.g. -g1e-5)");
	fprintf (fp,"\n-K: cell birth rate (e.g. -K1)");
	fprintf (fp,"\n-L: cell death rate (e.g. -L0.001)");
   	fprintf (fp,"\n-h: number of demographic periods followed by effective population size at the beginning and at the end of the period, ");
    fprintf (fp, "\n    and the duration of the period in generations. (e.g. -d1 100 200 30000) (e.g. -d2 100 100 40000 1000 2000 20000)");
	fprintf (fp,"\n-k: transforming branch length (e.g. -u1e-2)");
    fprintf (fp,"\n-q: healthy tip branch length (e.g. -q1e-6)");
    fprintf (fp,"\n-i: shape of the gamma distribution for rate variation among lineages (e.g. -i0.5)");
	fprintf (fp,"\n-N: number of tree rate switches followed by the rate multipliers  (e.g. -N2 10 0.2)");
	fprintf (fp,"\n-b: alphabet [0:binary 1:DNA] (e.g. -b0)");
	fprintf (fp,"\n-c: germline SNP rate (e.g. -c1e-5)");
	fprintf (fp,"\n-u: somatic mutation rate (e.g. -u1e-6)");
	fprintf (fp,"\n-d: deletion rate (e.g. -d1e-5)");
	fprintf (fp,"\n-H: CNLOH rate (e.g. -H1e-5)");
    fprintf (fp,"\n-j: fixed number of mutations (e.g. -j100)");
    fprintf (fp,"\n-S: trinucleotide genetic signatures (e.g. -S2 3 0.8 13 0.2)");
    fprintf (fp,"\n-m: alternative mutation model [0:ISMhap 1:Mk2 2:finiteDNA] [default mutation model is ISM diploid] (e.g. -m2)");
    fprintf (fp,"\n-p: proportion of alternative model sites (e.g. -p0.1)");
    fprintf (fp,"\n-w: alternative/default model relative mutation rate (e.g. -w1)");
	fprintf (fp,"\n-f: nucleotide base frequencies (e.g. -f0.4 0.3 0.2 0.1)");
	fprintf (fp,"\n-t: transition/transversion ratio (e.g. -t2)");
    fprintf (fp,"\n-a: shape of the gamma distribution for rate variation among sites (e.g. -a0.2)");
	fprintf (fp,"\n-r: mutation matrix ACGT x ACGT (e.g. -r0 1 2 3 1 0 4 5 2 4 0 1 3 5 1 0)");

	fprintf (fp,"\n-D: allelic dropout (e.g. -D0.1)");
	fprintf (fp,"\n-P: allelic dropout variation among cells (e.g. -P1)");
	fprintf (fp,"\n-Q: allelic dropout variation among sites (e.g. -Q1)");
	fprintf (fp,"\n-I: maternal allelic imbalance (e.g. -I0.5)");
	fprintf (fp,"\n-A: amplification error (e.g. -A0.1 0.01 0)");
	fprintf (fp,"\n-B: doublet rate per cell (e.g. -B0.1)");

	fprintf (fp,"\n-G: genotyping error [no read counts] (e.g. -G0.01)");

	fprintf (fp,"\n-C: sequencing coverage [read counts] (e.g. -C60)");
	fprintf (fp,"\n-V: sequencing coverage overdispersion (e.g. -V5)");
	fprintf (fp,"\n-R: ADO/deletion haploid coverage reduction (e.g. -R0.5)");
	fprintf (fp,"\n-E: sequencing error (e.g. -E0.001)");
	fprintf (fp,"\n-X: error matrix ACGT x ACGT (e.g. -X0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0)");

    fprintf (fp,"\n-1: print SNV genotypes to a file (e.g. -1)");
    fprintf (fp,"\n-2: print SNV haplotypes to a file (e.g. -2)");
    fprintf (fp,"\n-3: print full genotypes to a file (e.g. -3)");
    fprintf (fp,"\n-4: print full haplotypes to a file (e.g. -4)");
    fprintf (fp,"\n-5: print ancestral genotypes (e.g. -5)");
    fprintf (fp,"\n-6: print trees to a file (e.g. -6)");
    fprintf (fp,"\n-7: print times to a file (e.g. -7)");
    fprintf (fp,"\n-8: print read counts in CATG format (e.g. -8)");
	fprintf (fp,"\n-9: print read counts in PILEUP format (e.g. -9)");
    fprintf (fp,"\n-Y: print true SNV haplotypes to a file (e.g. -Y)");
	fprintf (fp,"\n-v: print replicates in individual folders (e.g. -v)");
	fprintf (fp,"\n-x: print consensus/IUPAC haplotypes (e.g. -x)");
	fprintf (fp,"\n-o: results folder name (e.g. -oresultsFolder)");
	fprintf (fp,"\n-T: user-tree file (e.g. -Tusertree)");
	fprintf (fp,"\n-U: user genome (e.g. -Uusergenome)");
	fprintf (fp,"\n-W: use tumor nomenclature for cells (e.g. -W)");
	fprintf (fp,"\n-y: noisy (e.g. -y1)");
    fprintf (fp,"\n      = 0: does not print anything");
    fprintf (fp,"\n      = 1:  + simulation summary");
    fprintf (fp,"\n      = 2:  + replicate information");
    fprintf (fp,"\n      = 3: + calculation status and event information");
    fprintf (fp,"\n-#: seed (e.g. -#37864287)");
    fprintf (fp,"\n-?: Print help");
	
    fprintf (fp,"\n\nDefaults: ");
    PrintDefaults (fp);
	fprintf (fp, "\n--------------------------------------------------------------------------------------------------------\n");
	fprintf (fp,"\n...now exiting to system...\n\n");
    exit(-1);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x13238
leaq 0x22029(%rip), %rsi     # 0x34ba7
leaq 0x220bf(%rip), %rdx     # 0x34c44
movq %rbx, %rdi
xorl %eax, %eax
callq 0x21c0
leaq 0x220b7(%rip), %rsi     # 0x34c4d
leaq 0x221e9(%rip), %rdx     # 0x34d86
movq %rbx, %rdi
xorl %eax, %eax
callq 0x21c0
movl $0xa, %edi
movq %rbx, %rsi
callq 0x2180
leaq 0x221d4(%rip), %rdi     # 0x34d8f
movl $0x36, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x221f2(%rip), %rdi     # 0x34dc6
movl $0x27, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22201(%rip), %rdi     # 0x34dee
movl $0x25, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2220e(%rip), %rdi     # 0x34e14
movl $0x21, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22217(%rip), %rdi     # 0x34e36
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2222b(%rip), %rdi     # 0x34e63
movl $0x2a, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2223d(%rip), %rdi     # 0x34e8e
movl $0x1f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22244(%rip), %rdi     # 0x34eae
movl $0x23, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2224f(%rip), %rdi     # 0x34ed2
movl $0x78, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x222af(%rip), %rdi     # 0x34f4b
movl $0x75, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2230c(%rip), %rdi     # 0x34fc1
movl $0x2d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22321(%rip), %rdi     # 0x34fef
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22335(%rip), %rdi     # 0x3501c
movl $0x53, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22370(%rip), %rdi     # 0x35070
movl $0x55, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x223ad(%rip), %rdi     # 0x350c6
movl $0x29, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x223be(%rip), %rdi     # 0x350f0
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x223ca(%rip), %rdi     # 0x35115
movl $0x28, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x223da(%rip), %rdi     # 0x3513e
movl $0x20, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x223e2(%rip), %rdi     # 0x3515f
movl $0x1d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x223e7(%rip), %rdi     # 0x3517d
movl $0x2b, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x223fa(%rip), %rdi     # 0x351a9
movl $0x3d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2241f(%rip), %rdi     # 0x351e7
movl $0x6f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22476(%rip), %rdi     # 0x35257
movl $0x37, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22495(%rip), %rdi     # 0x3528f
movl $0x40, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x224bd(%rip), %rdi     # 0x352d0
movl $0x39, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x224de(%rip), %rdi     # 0x3530a
movl $0x2d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x224f3(%rip), %rdi     # 0x35338
movl $0x50, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2252b(%rip), %rdi     # 0x35389
movl $0x49, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2255c(%rip), %rdi     # 0x353d3
movl $0x21, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22565(%rip), %rdi     # 0x353f5
movl $0x35, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22582(%rip), %rdi     # 0x3542b
movl $0x35, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2259f(%rip), %rdi     # 0x35461
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x225b3(%rip), %rdi     # 0x3548e
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x225c7(%rip), %rdi     # 0x354bb
movl $0x27, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x225d6(%rip), %rdi     # 0x354e3
movl $0x34, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x225f2(%rip), %rdi     # 0x35518
movl $0x32, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2260c(%rip), %rdi     # 0x3554b
movl $0x32, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22626(%rip), %rdi     # 0x3557e
movl $0x39, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22647(%rip), %rdi     # 0x355b8
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22653(%rip), %rdi     # 0x355dd
movl $0x46, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22681(%rip), %rdi     # 0x35624
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22695(%rip), %rdi     # 0x35651
movl $0x2d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x226aa(%rip), %rdi     # 0x3567f
movl $0x2d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x226bf(%rip), %rdi     # 0x356ad
movl $0x2e, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x226d5(%rip), %rdi     # 0x356dc
movl $0x28, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x226e5(%rip), %rdi     # 0x35705
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x226f1(%rip), %rdi     # 0x3572a
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x226fd(%rip), %rdi     # 0x3574f
movl $0x2f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22714(%rip), %rdi     # 0x3577f
movl $0x31, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2272d(%rip), %rdi     # 0x357b1
movl $0x32, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22747(%rip), %rdi     # 0x357e4
movl $0x35, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22764(%rip), %rdi     # 0x3581a
movl $0x2f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2277b(%rip), %rdi     # 0x3584a
movl $0x2f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22792(%rip), %rdi     # 0x3587a
movl $0x25, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x2279f(%rip), %rdi     # 0x358a0
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x227ab(%rip), %rdi     # 0x358c5
movl $0x2f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x227c2(%rip), %rdi     # 0x358f5
movl $0x15, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x227bf(%rip), %rdi     # 0x3590b
movl $0x23, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x227ca(%rip), %rdi     # 0x3592f
movl $0x21, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x227d3(%rip), %rdi     # 0x35951
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x227df(%rip), %rdi     # 0x35976
movl $0x36, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x227fd(%rip), %rdi     # 0x359ad
movl $0x1b, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22800(%rip), %rdi     # 0x359c9
movl $0xf, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x227f7(%rip), %rdi     # 0x359d9
movl $0xc, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
movq %rbx, %rdi
callq 0x15dea
leaq 0x227e3(%rip), %rdi     # 0x359e6
movl $0x6a, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x22835(%rip), %rdi     # 0x35a51
movl $0x1e, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0