// File: SYZYGYfpga[P]brain-tools/src/smartvio-brain.cpp
// Function: printHelp(char*)
void printHelp (char *progname)
{
	printf("Usage: %s [option [argument]] <i2c device>\n", progname);
	printf("  <i2c device> is required for all commands. It must contain the\n");
	printf("               path to the Linux i2c device\n");
	printf("\n");
	printf("  Exactly one of the following options must be specified:\n");
	printf("    -r - run smartVIO, queries attached MCU's and sets voltages accordingly\n");
	printf("    -s - set VIO voltages to the values provided by -1 and -2 options\n");
	printf("    -j - print out a JSON object with DNA and SmartVIO information\n");
	printf("    -h - print this text\n");
	printf("    -w <filename> - write a binary DNA to a peripheral, takes the DNA filename\n");
	printf("                    as an argument\n");
	printf("    -d <filename> - dump the DNA from a peripheral to a binary file, takes the\n");
	printf("                    DNA filename as an argument\n");
	printf("\n");
	printf("  The following options may be used in conjunction with the above options:\n");
	printf("    -1 <vio1> - Sets the voltage for VIO1\n");
	printf("    -2 <vio2> - Sets the voltage for VIO2\n");
	printf("          <vio1> and <vio2> must be specified as numbers in 10's of mV\n");
	printf("    -p <number> - Specifies the peripheral number for the -w or -d options\n");
	printf("\n");
	printf("  Examples:\n");
	printf("    Run SmartVIO sequence:\n");
	printf("      %s -r /dev/i2c-1\n", progname);
	printf("    Dump DNA from the MCU on Port 1:\n");
	printf("      %s -d dna_file.bin -p 1 /dev/i2c-1\n", progname);
	printf("    Set VIO1 to 3.3V:\n");
	printf("      %s -s -1 330 /dev/i2c-1\n", progname);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rsi
leaq 0xfae3(%rip), %rdi      # 0x1444a
movb $0x0, %al
callq 0x3050
leaq 0xfb01(%rip), %rdi      # 0x14476
movb $0x0, %al
callq 0x3050
leaq 0xfb35(%rip), %rdi      # 0x144b8
movb $0x0, %al
callq 0x3050
leaq 0x10196(%rip), %rdi     # 0x14b27
movb $0x0, %al
callq 0x3050
leaq 0xfb46(%rip), %rdi      # 0x144e5
movb $0x0, %al
callq 0x3050
leaq 0xfb73(%rip), %rdi      # 0x14520
movb $0x0, %al
callq 0x3050
leaq 0xfbb2(%rip), %rdi      # 0x1456d
movb $0x0, %al
callq 0x3050
leaq 0xfbeb(%rip), %rdi      # 0x145b4
movb $0x0, %al
callq 0x3050
leaq 0xfc21(%rip), %rdi      # 0x145f8
movb $0x0, %al
callq 0x3050
leaq 0xfc2d(%rip), %rdi      # 0x14612
movb $0x0, %al
callq 0x3050
leaq 0xfc6f(%rip), %rdi      # 0x14662
movb $0x0, %al
callq 0x3050
leaq 0xfc85(%rip), %rdi      # 0x14686
movb $0x0, %al
callq 0x3050
leaq 0xfcc7(%rip), %rdi      # 0x146d6
movb $0x0, %al
callq 0x3050
leaq 0x1010a(%rip), %rdi     # 0x14b27
movb $0x0, %al
callq 0x3050
leaq 0xfcdc(%rip), %rdi      # 0x14707
movb $0x0, %al
callq 0x3050
leaq 0xfd1a(%rip), %rdi      # 0x14753
movb $0x0, %al
callq 0x3050
leaq 0xfd37(%rip), %rdi      # 0x1477e
movb $0x0, %al
callq 0x3050
leaq 0xfd54(%rip), %rdi      # 0x147a9
movb $0x0, %al
callq 0x3050
leaq 0xfd8e(%rip), %rdi      # 0x147f1
movb $0x0, %al
callq 0x3050
leaq 0x100b6(%rip), %rdi     # 0x14b27
movb $0x0, %al
callq 0x3050
leaq 0xfdbe(%rip), %rdi      # 0x1483d
movb $0x0, %al
callq 0x3050
leaq 0xfdbd(%rip), %rdi      # 0x1484a
movb $0x0, %al
callq 0x3050
movq -0x8(%rbp), %rsi
leaq 0xfdc7(%rip), %rdi      # 0x14866
movb $0x0, %al
callq 0x3050
leaq 0xfdd1(%rip), %rdi      # 0x1487e
movb $0x0, %al
callq 0x3050
movq -0x8(%rbp), %rsi
leaq 0xfde5(%rip), %rdi      # 0x148a4
movb $0x0, %al
callq 0x3050
leaq 0xfe01(%rip), %rdi      # 0x148ce
movb $0x0, %al
callq 0x3050
movq -0x8(%rbp), %rsi
leaq 0xfe06(%rip), %rdi      # 0x148e5
movb $0x0, %al
callq 0x3050
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)