#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *);
int /*<<< orphan*/ showVersion();
void showHelp() {
  showVersion();
  printf("\n"
         "bigsync: backup large files to a slow media.\n\n"
         "Bigsync will read the source file in chunks calculating checksums "
         "for each one.\n"
         "It will compare them with previously stored values for the "
         "destination file and\n"
         "overwrite changed chunks in it if checksums differ.\n\n"
         "Usage: bigsync [options]\n"
         "  --source <path>     | -s <path>        source file name to be read "
         "(mandatory)\n"
         "  --dest <path>       | -d <path>        destination, file name or "
         "directory\n"
         "                                         (if directory specified, "
         "then file will\n"
         "                                         have the same name in that "
         "directory,\n"
         "                                         mandatory)\n"
         "  --blocksize <MB>    | -b <MB>          block size in MB, defaults "
         "to 15\n"
         "  --sparse            | -S               destination file to be "
         "sparsa (man dd)\n"
         "  --rebuild           | -r               only create checksums file, "
         "do not actually copy data\n"
         "  --notruncate        | -t               do not truncate the "
         "destinatation file\n"
         "  --checksum <path>   | -c               file name to use as "
         "checksum file\n"
         "                                         (if none is given then "
         "\"<DEST>.bigsync\" is used)\n"
         "\n"
         "  --verbose           | -v               verbose output\n"
         "  --quiet             | -q               only show errors\n"
         "\n"
         "  --version           | -V               version number\n"
         "  --help              | -h               this help\n\n"
         "Examples:\n"
         "  bigsync --source /home/egor/Documents.dmg --dest "
         "/media/backup/documents.dmg.backup\n"
         "  bigsync --blocksize 4 --verbose --source /home/egor/WinSucks.vdi "
         "--dest /backup/virtualmachines/\n\n"
         "See man bigsync(1) for more info.\n\n");
}


x86 assembly (clang, -O0):
<showHelp>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1040 <showVersion@plt>
lea    0xece(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<showHelp>:
push   %rax
xor    %eax,%eax
call   1040 <showVersion@plt>
lea    0xed1(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1605 x i8] c"\0Abigsync: backup large files to a slow media.\0A\0ABigsync will read the source file in chunks calculating checksums for each one.\0AIt will compare them with previously stored values for the destination file and\0Aoverwrite changed chunks in it if checksums differ.\0A\0AUsage: bigsync [options]\0A --source <path> | -s <path> source file name to be read (mandatory)\0A --dest <path> | -d <path> destination, file name or directory\0A (if directory specified, then file will\0A have the same name in that directory,\0A mandatory)\0A --blocksize <MB> | -b <MB> block size in MB, defaults to 15\0A --sparse | -S destination file to be sparsa (man dd)\0A --rebuild | -r only create checksums file, do not actually copy data\0A --notruncate | -t do not truncate the destinatation file\0A --checksum <path> | -c file name to use as checksum file\0A (if none is given then \22<DEST>.bigsync\22 is used)\0A\0A --verbose | -v verbose output\0A --quiet | -q only show errors\0A\0A --version | -V version number\0A --help | -h this help\0A\0AExamples:\0A bigsync --source /home/egor/Documents.dmg --dest /media/backup/documents.dmg.backup\0A bigsync --blocksize 4 --verbose --source /home/egor/WinSucks.vdi --dest /backup/virtualmachines/\0A\0ASee man bigsync(1) for more info.\0A\0A\00"
define void @showHelp() {
%1 = call i32 (...) @showVersion()
%2 = call i32 @printf(i8* getelementptr inbounds ([1605 x i8], [1605 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1604 x i8] c"\0Abigsync: backup large files to a slow media.\0A\0ABigsync will read the source file in chunks calculating checksums for each one.\0AIt will compare them with previously stored values for the destination file and\0Aoverwrite changed chunks in it if checksums differ.\0A\0AUsage: bigsync [options]\0A --source <path> | -s <path> source file name to be read (mandatory)\0A --dest <path> | -d <path> destination, file name or directory\0A (if directory specified, then file will\0A have the same name in that directory,\0A mandatory)\0A --blocksize <MB> | -b <MB> block size in MB, defaults to 15\0A --sparse | -S destination file to be sparsa (man dd)\0A --rebuild | -r only create checksums file, do not actually copy data\0A --notruncate | -t do not truncate the destinatation file\0A --checksum <path> | -c file name to use as checksum file\0A (if none is given then \22<DEST>.bigsync\22 is used)\0A\0A --verbose | -v verbose output\0A --quiet | -q only show errors\0A\0A --version | -V version number\0A --help | -h this help\0A\0AExamples:\0A bigsync --source /home/egor/Documents.dmg --dest /media/backup/documents.dmg.backup\0A bigsync --blocksize 4 --verbose --source /home/egor/WinSucks.vdi --dest /backup/virtualmachines/\0A\0ASee man bigsync(1) for more info.\0A\00"
define void @showHelp() {
%1 = tail call i32 (...) @showVersion()
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1604 x i8], [1604 x i8]* @str, i64 0, i64 0))
ret void
}