// File: /workspace/github_c_makefile_star2_O3/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 0x133b7
leaq 0x10f6a(%rip), %rsi     # 0x23c67
leaq 0x11000(%rip), %rdx     # 0x23d04
movq %rbx, %rdi
xorl %eax, %eax
callq 0x21c0
leaq 0x10ff8(%rip), %rsi     # 0x23d0d
leaq 0x1112a(%rip), %rdx     # 0x23e46
movq %rbx, %rdi
xorl %eax, %eax
callq 0x21c0
movl $0xa, %edi
movq %rbx, %rsi
callq 0x2180
leaq 0x11115(%rip), %rdi     # 0x23e4f
movl $0x36, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11133(%rip), %rdi     # 0x23e86
movl $0x27, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11142(%rip), %rdi     # 0x23eae
movl $0x25, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1114f(%rip), %rdi     # 0x23ed4
movl $0x21, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11158(%rip), %rdi     # 0x23ef6
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1116c(%rip), %rdi     # 0x23f23
movl $0x2a, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1117e(%rip), %rdi     # 0x23f4e
movl $0x1f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11185(%rip), %rdi     # 0x23f6e
movl $0x23, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11190(%rip), %rdi     # 0x23f92
movl $0x78, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x111f0(%rip), %rdi     # 0x2400b
movl $0x75, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1124d(%rip), %rdi     # 0x24081
movl $0x2d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11262(%rip), %rdi     # 0x240af
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11276(%rip), %rdi     # 0x240dc
movl $0x53, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x112b1(%rip), %rdi     # 0x24130
movl $0x55, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x112ee(%rip), %rdi     # 0x24186
movl $0x29, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x112ff(%rip), %rdi     # 0x241b0
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1130b(%rip), %rdi     # 0x241d5
movl $0x28, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1131b(%rip), %rdi     # 0x241fe
movl $0x20, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11323(%rip), %rdi     # 0x2421f
movl $0x1d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11328(%rip), %rdi     # 0x2423d
movl $0x2b, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1133b(%rip), %rdi     # 0x24269
movl $0x3d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11360(%rip), %rdi     # 0x242a7
movl $0x6f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x113b7(%rip), %rdi     # 0x24317
movl $0x37, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x113d6(%rip), %rdi     # 0x2434f
movl $0x40, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x113fe(%rip), %rdi     # 0x24390
movl $0x39, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1141f(%rip), %rdi     # 0x243ca
movl $0x2d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11434(%rip), %rdi     # 0x243f8
movl $0x50, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1146c(%rip), %rdi     # 0x24449
movl $0x49, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1149d(%rip), %rdi     # 0x24493
movl $0x21, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x114a6(%rip), %rdi     # 0x244b5
movl $0x35, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x114c3(%rip), %rdi     # 0x244eb
movl $0x35, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x114e0(%rip), %rdi     # 0x24521
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x114f4(%rip), %rdi     # 0x2454e
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11508(%rip), %rdi     # 0x2457b
movl $0x27, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11517(%rip), %rdi     # 0x245a3
movl $0x34, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11533(%rip), %rdi     # 0x245d8
movl $0x32, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1154d(%rip), %rdi     # 0x2460b
movl $0x32, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11567(%rip), %rdi     # 0x2463e
movl $0x39, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11588(%rip), %rdi     # 0x24678
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11594(%rip), %rdi     # 0x2469d
movl $0x46, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x115c2(%rip), %rdi     # 0x246e4
movl $0x2c, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x115d6(%rip), %rdi     # 0x24711
movl $0x2d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x115eb(%rip), %rdi     # 0x2473f
movl $0x2d, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11600(%rip), %rdi     # 0x2476d
movl $0x2e, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11616(%rip), %rdi     # 0x2479c
movl $0x28, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11626(%rip), %rdi     # 0x247c5
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11632(%rip), %rdi     # 0x247ea
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1163e(%rip), %rdi     # 0x2480f
movl $0x2f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11655(%rip), %rdi     # 0x2483f
movl $0x31, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1166e(%rip), %rdi     # 0x24871
movl $0x32, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11688(%rip), %rdi     # 0x248a4
movl $0x35, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x116a5(%rip), %rdi     # 0x248da
movl $0x2f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x116bc(%rip), %rdi     # 0x2490a
movl $0x2f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x116d3(%rip), %rdi     # 0x2493a
movl $0x25, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x116e0(%rip), %rdi     # 0x24960
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x116ec(%rip), %rdi     # 0x24985
movl $0x2f, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11703(%rip), %rdi     # 0x249b5
movl $0x15, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11700(%rip), %rdi     # 0x249cb
movl $0x23, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1170b(%rip), %rdi     # 0x249ef
movl $0x21, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11714(%rip), %rdi     # 0x24a11
movl $0x24, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11720(%rip), %rdi     # 0x24a36
movl $0x36, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x1173e(%rip), %rdi     # 0x24a6d
movl $0x1b, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11741(%rip), %rdi     # 0x24a89
movl $0xf, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11738(%rip), %rdi     # 0x24a99
movl $0xc, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
movq %rbx, %rdi
callq 0x160a2
leaq 0x11724(%rip), %rdi     # 0x24aa6
movl $0x6a, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
leaq 0x11776(%rip), %rdi     # 0x24b11
movl $0x1e, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x22b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0