#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 *);
void usage() {
  printf(
      "ddless by Steffen Plotner, release date: "
      "2012.10.20"
      "\n"
      "\n"
      "Copy source to target keeping track of the segment checksums. "
      "Subsequent\n"
      "copies are faster because we assume that not all of the source blocks "
      "change.\n"
      "\n"
      "	ddless	[-d] -s <source> [-m ddmap ][-r <read_rate_mb_s>] -c "
      "<checksum>\n"
      "		[-b] -t <target> [-w #] [-v]\n"
      "\n"
      "Produce a checksum file using the specified device. Hint: the device "
      "could be\n"
      "source or target. Use the target and a new checksum file, then compare "
      "it to\n"
      "the existing checksum file to ensure data integrity of the target.\n"
      "\n"
      "	ddless	[-d] -s <source> -c <checksum> [-v]\n"
      "\n"
      "Determine disk read speed zones, outputs data to stdout.\n"
      "\n"
      "	ddless	[-d] -s <source> [-v]\n"
      "\n"
      "Outputs the built in parameters\n"
      "\n"
      "	ddless	-p\n"
      "\n"
      "Parameters\n"
      "	-d	direct io enabled (i.e. bypasses buffer cache)\n"
      "\n"
      "	-s	source device\n"
      "	-r	max read rate of source device in megabytes/sec\n"
      "	-c	checksum file (/dev/null skips checksum file)\n"
      "	-b	bail out with exit code 3 because a new checksum file is\n"
      "		required, no data is copied from source to target\n"
      "	-t	target device\n"
      "	-w	number of worker threads, each thread gets a region of the "
      "device\n"
      "\n"
      "	-p	display parameters (segment size is known as chunksize in "
      "LVM2)\n"
      "	-v	verbose\n"
      "	-z	zip the delta file\n"
      "	-l	zip level 1 - 9\n"
      "	-vv	verbose+debug\n"
      "\n"
      "Exit codes:\n"
      "	0	successful\n"
      "	1	a runtime error code, unable to complete task (detailed "
      "perror\n"
      "		and logical error message are output via stderr)\n"
      "	2	reserved\n"
      "	3	new checksum file required, only returned if -b is specified, "
      "lvm_tools\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1470 x i8] c"ddless by Steffen Plotner, release date: 2012.10.20\0A\0ACopy source to target keeping track of the segment checksums. Subsequent\0Acopies are faster because we assume that not all of the source blocks change.\0A\0A\09ddless\09[-d] -s <source> [-m ddmap ][-r <read_rate_mb_s>] -c <checksum>\0A\09\09[-b] -t <target> [-w #] [-v]\0A\0AProduce a checksum file using the specified device. Hint: the device could be\0Asource or target. Use the target and a new checksum file, then compare it to\0Athe existing checksum file to ensure data integrity of the target.\0A\0A\09ddless\09[-d] -s <source> -c <checksum> [-v]\0A\0ADetermine disk read speed zones, outputs data to stdout.\0A\0A\09ddless\09[-d] -s <source> [-v]\0A\0AOutputs the built in parameters\0A\0A\09ddless\09-p\0A\0AParameters\0A\09-d\09direct io enabled (i.e. bypasses buffer cache)\0A\0A\09-s\09source device\0A\09-r\09max read rate of source device in megabytes/sec\0A\09-c\09checksum file (/dev/null skips checksum file)\0A\09-b\09bail out with exit code 3 because a new checksum file is\0A\09\09required, no data is copied from source to target\0A\09-t\09target device\0A\09-w\09number of worker threads, each thread gets a region of the device\0A\0A\09-p\09display parameters (segment size is known as chunksize in LVM2)\0A\09-v\09verbose\0A\09-z\09zip the delta file\0A\09-l\09zip level 1 - 9\0A\09-vv\09verbose+debug\0A\0AExit codes:\0A\090\09successful\0A\091\09a runtime error code, unable to complete task (detailed perror\0A\09\09and logical error message are output via stderr)\0A\092\09reserved\0A\093\09new checksum file required, only returned if -b is specified, lvm_tools\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1470 x i8], [1470 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1469 x i8] c"ddless by Steffen Plotner, release date: 2012.10.20\0A\0ACopy source to target keeping track of the segment checksums. Subsequent\0Acopies are faster because we assume that not all of the source blocks change.\0A\0A\09ddless\09[-d] -s <source> [-m ddmap ][-r <read_rate_mb_s>] -c <checksum>\0A\09\09[-b] -t <target> [-w #] [-v]\0A\0AProduce a checksum file using the specified device. Hint: the device could be\0Asource or target. Use the target and a new checksum file, then compare it to\0Athe existing checksum file to ensure data integrity of the target.\0A\0A\09ddless\09[-d] -s <source> -c <checksum> [-v]\0A\0ADetermine disk read speed zones, outputs data to stdout.\0A\0A\09ddless\09[-d] -s <source> [-v]\0A\0AOutputs the built in parameters\0A\0A\09ddless\09-p\0A\0AParameters\0A\09-d\09direct io enabled (i.e. bypasses buffer cache)\0A\0A\09-s\09source device\0A\09-r\09max read rate of source device in megabytes/sec\0A\09-c\09checksum file (/dev/null skips checksum file)\0A\09-b\09bail out with exit code 3 because a new checksum file is\0A\09\09required, no data is copied from source to target\0A\09-t\09target device\0A\09-w\09number of worker threads, each thread gets a region of the device\0A\0A\09-p\09display parameters (segment size is known as chunksize in LVM2)\0A\09-v\09verbose\0A\09-z\09zip the delta file\0A\09-l\09zip level 1 - 9\0A\09-vv\09verbose+debug\0A\0AExit codes:\0A\090\09successful\0A\091\09a runtime error code, unable to complete task (detailed perror\0A\09\09and logical error message are output via stderr)\0A\092\09reserved\0A\093\09new checksum file required, only returned if -b is specified, lvm_tools\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1469 x i8], [1469 x i8]* @str, i64 0, i64 0))
ret void
}