// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x101cb
leaq 0xffde(%rip), %rsi      # 0x1fbd1
leaq 0x10074(%rip), %rdx     # 0x1fc6e
movq %rbx, %rdi
xorl %eax, %eax
callq 0x21c0
leaq 0x1006c(%rip), %rsi     # 0x1fc77
leaq 0x1019e(%rip), %rdx     # 0x1fdb0
movq %rbx, %rdi
xorl %eax, %eax
callq 0x21c0
pushq $0xa
popq %rdi
movq %rbx, %rsi
callq 0x2180
leaq 0x1018b(%rip), %rdi     # 0x1fdb9
pushq $0x36
popq %rsi
pushq $0x1
popq %r14
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x101a9(%rip), %rdi     # 0x1fdf0
pushq $0x27
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x101bc(%rip), %rdi     # 0x1fe18
pushq $0x25
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x101cd(%rip), %rdi     # 0x1fe3e
pushq $0x21
popq %r12
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x101d6(%rip), %rdi     # 0x1fe60
pushq $0x2c
popq %r13
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x101ea(%rip), %rdi     # 0x1fe8d
pushq $0x2a
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10200(%rip), %rdi     # 0x1feb8
pushq $0x1f
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1020b(%rip), %rdi     # 0x1fed8
pushq $0x23
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1021a(%rip), %rdi     # 0x1fefc
pushq $0x78
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1027e(%rip), %rdi     # 0x1ff75
pushq $0x75
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x102df(%rip), %rdi     # 0x1ffeb
pushq $0x2d
popq %rbp
movq %rbp, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x102f5(%rip), %rdi     # 0x20019
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1030d(%rip), %rdi     # 0x20046
pushq $0x53
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1034c(%rip), %rdi     # 0x2009a
pushq $0x55
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1038d(%rip), %rdi     # 0x200f0
pushq $0x29
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x103a2(%rip), %rdi     # 0x2011a
pushq $0x24
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x103b2(%rip), %rdi     # 0x2013f
pushq $0x28
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x103c6(%rip), %rdi     # 0x20168
pushq $0x20
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x103d2(%rip), %rdi     # 0x20189
pushq $0x1d
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x103db(%rip), %rdi     # 0x201a7
pushq $0x2b
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x103f2(%rip), %rdi     # 0x201d3
pushq $0x3d
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1041b(%rip), %rdi     # 0x20211
pushq $0x6f
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10476(%rip), %rdi     # 0x20281
pushq $0x37
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10499(%rip), %rdi     # 0x202b9
pushq $0x40
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x104c5(%rip), %rdi     # 0x202fa
pushq $0x39
popq %r15
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x104e6(%rip), %rdi     # 0x20334
movq %rbp, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x104ff(%rip), %rdi     # 0x20362
pushq $0x50
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1053b(%rip), %rdi     # 0x203b3
pushq $0x49
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10570(%rip), %rdi     # 0x203fd
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1057d(%rip), %rdi     # 0x2041f
pushq $0x35
popq %r12
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1059a(%rip), %rdi     # 0x20455
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x105bb(%rip), %rdi     # 0x2048b
movq %r13, %rbp
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x105d0(%rip), %rdi     # 0x204b8
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x105e8(%rip), %rdi     # 0x204e5
pushq $0x27
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x105fb(%rip), %rdi     # 0x2050d
pushq $0x34
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1061b(%rip), %rdi     # 0x20542
pushq $0x32
popq %r12
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10635(%rip), %rdi     # 0x20575
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10653(%rip), %rdi     # 0x205a8
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10678(%rip), %rdi     # 0x205e2
pushq $0x24
popq %r13
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10684(%rip), %rdi     # 0x20607
pushq $0x46
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x106b6(%rip), %rdi     # 0x2064e
movq %rbp, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x106ce(%rip), %rdi     # 0x2067b
pushq $0x2d
popq %r15
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x106e3(%rip), %rdi     # 0x206a9
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x106fc(%rip), %rdi     # 0x206d7
pushq $0x2e
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10716(%rip), %rdi     # 0x20706
pushq $0x28
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1072a(%rip), %rdi     # 0x2072f
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1073a(%rip), %rdi     # 0x20754
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1074a(%rip), %rdi     # 0x20779
pushq $0x2f
popq %r15
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10761(%rip), %rdi     # 0x207a9
pushq $0x31
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1077e(%rip), %rdi     # 0x207db
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1079c(%rip), %rdi     # 0x2080e
pushq $0x35
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x107bd(%rip), %rdi     # 0x20844
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x107d8(%rip), %rdi     # 0x20874
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x107f3(%rip), %rdi     # 0x208a4
pushq $0x25
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10804(%rip), %rdi     # 0x208ca
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10814(%rip), %rdi     # 0x208ef
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1082f(%rip), %rdi     # 0x2091f
pushq $0x15
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10830(%rip), %rdi     # 0x20935
pushq $0x23
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1083f(%rip), %rdi     # 0x20959
pushq $0x21
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1084c(%rip), %rdi     # 0x2097b
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1085c(%rip), %rdi     # 0x209a0
pushq $0x36
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1087e(%rip), %rdi     # 0x209d7
pushq $0x1b
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10885(%rip), %rdi     # 0x209f3
pushq $0xf
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x10880(%rip), %rdi     # 0x20a03
pushq $0xc
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
movq %rbx, %rdi
callq 0x12b58
leaq 0x10870(%rip), %rdi     # 0x20a10
pushq $0x6a
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
leaq 0x108c6(%rip), %rdi     # 0x20a7b
pushq $0x1e
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x22b0
pushq $-0x1
popq %rdi
callq 0x22a0