#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 help() {
  printf(
      "Usage: d64copy [OPTION]... [SOURCE] [TARGET]\n"
      "Copy .d64 disk images to a CBM-1541 or compatible drive and vice versa\n"
      "\n"
      "Options:\n"
      "  -h, --help               display this help and exit\n"
      "  -V, --version            display version information and exit\n"
      "  -q, --quiet              quiet output\n"
      "  -v, --verbose            control verbosity (repeatedly, up to 3 "
      "times)\n"
      "  -n, --no-progress        do not display progress information\n"
      "\n"
      "  -s, --start-track=TRACK  set start track\n"
      "  -e, --end-track=TRACK    set end track (start <= end <= 42/70)\n"
      "\n"
      "  -t, --transfer=TRANSFER  set transfermode; valid modes:\n"
      "                             auto (default)\n"
      "                             original       (slowest)\n"
      "                             serial1 or s1\n"
      "                             serial2 or s2\n"
      "                             parallel       (fastest)\n"
      "                           (can be abbreviated, if unambiguous)\n"
      "                           `original' and `serial1' should work in any "
      "case;\n"
      "                           `serial2' won't work if more than one device "
      "is\n"
      "                           connected to the IEC bus;\n"
      "                           `parallel' needs a XP1541/XP1571 cable in "
      "addition\n"
      "                           to the serial one.\n"
      "                           `auto' tries to determine the best option.\n"
      "\n"
      "  -i, --interleave=VALUE   set interleave value; ignored when reading "
      "with\n"
      "                           warp mode; default values are:\n"
      "\n"
      "                             original     16\n"
      "\n"
      "                                       turbo r/w   warp write\n"
      "                             serial1       4            6\n"
      "                             serial2      13           12\n"
      "                             parallel      7            4\n"
      "\n"
      "                           INTERLEAVE is ignored when reading with warp "
      "mode;\n"
      "                           if data transfer is very slow, increasing "
      "this\n"
      "                           value may help.\n"
      "\n"
      "  -w, --warp               enable warp mode; this is not possible if\n"
      "                           TRANSFER is set to `original'\n"
      "                           This is the default if transfer is not "
      "`original`.\n"
      "\n"
      "      --no-warp            disable warp mode; this is the default if\n"
      "                           TRANSFER is set to `original'.\n"
      "\n"
      "  -b, --bam-only           BAM-only copy; only allocated blocks are "
      "copied;\n"
      "                           for extended tracks (36-40), SpeedDOS BAM "
      "format\n"
      "                           is assumed. Use with caution.\n"
      "\n"
      "  -B, --bam-save           save BAM-only copy; this is like the `-b' "
      "option\n"
      "                           but copies always the entire directory "
      "track.\n"
      "\n"
      "  -d, --drive-type=TYPE    specify drive type:\n"
      "                             0 or 1541 = 1541\n"
      "                             1 or 1571 = 1570/1571\n"
      "\n"
      "  -r, --retry-count=COUNT  set retry count\n"
      "\n"
      "  -E, --error-map=WHEN     control whether the error map is appended.\n"
      "                           possible values for WHEN are (abbreviations\n"
      "                           available):\n"
      "                             always\n"
      "                             on_errors     (default)\n"
      "                             never\n"
      "\n"
      "  -2, --two-sided          two-sided disk transfer (.d71): Requires "
      "1571.\n"
      "                           Warp mode is not available for .d71 images.\n"
      "\n");
}


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

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

LLVM IR (-O0):
@.str = [3237 x i8] c"Usage: d64copy [OPTION]... [SOURCE] [TARGET]\0ACopy .d64 disk images to a CBM-1541 or compatible drive and vice versa\0A\0AOptions:\0A -h, --help display this help and exit\0A -V, --version display version information and exit\0A -q, --quiet quiet output\0A -v, --verbose control verbosity (repeatedly, up to 3 times)\0A -n, --no-progress do not display progress information\0A\0A -s, --start-track=TRACK set start track\0A -e, --end-track=TRACK set end track (start <= end <= 42/70)\0A\0A -t, --transfer=TRANSFER set transfermode; valid modes:\0A auto (default)\0A original (slowest)\0A serial1 or s1\0A serial2 or s2\0A parallel (fastest)\0A (can be abbreviated, if unambiguous)\0A `original' and `serial1' should work in any case;\0A `serial2' won't work if more than one device is\0A connected to the IEC bus;\0A `parallel' needs a XP1541/XP1571 cable in addition\0A to the serial one.\0A `auto' tries to determine the best option.\0A\0A -i, --interleave=VALUE set interleave value; ignored when reading with\0A warp mode; default values are:\0A\0A original 16\0A\0A turbo r/w warp write\0A serial1 4 6\0A serial2 13 12\0A parallel 7 4\0A\0A INTERLEAVE is ignored when reading with warp mode;\0A if data transfer is very slow, increasing this\0A value may help.\0A\0A -w, --warp enable warp mode; this is not possible if\0A TRANSFER is set to `original'\0A This is the default if transfer is not `original`.\0A\0A --no-warp disable warp mode; this is the default if\0A TRANSFER is set to `original'.\0A\0A -b, --bam-only BAM-only copy; only allocated blocks are copied;\0A for extended tracks (36-40), SpeedDOS BAM format\0A is assumed. Use with caution.\0A\0A -B, --bam-save save BAM-only copy; this is like the `-b' option\0A but copies always the entire directory track.\0A\0A -d, --drive-type=TYPE specify drive type:\0A 0 or 1541 = 1541\0A 1 or 1571 = 1570/1571\0A\0A -r, --retry-count=COUNT set retry count\0A\0A -E, --error-map=WHEN control whether the error map is appended.\0A possible values for WHEN are (abbreviations\0A available):\0A always\0A on_errors (default)\0A never\0A\0A -2, --two-sided two-sided disk transfer (.d71): Requires 1571.\0A Warp mode is not available for .d71 images.\0A\0A\00"
define void @help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([3237 x i8], [3237 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [3236 x i8] c"Usage: d64copy [OPTION]... [SOURCE] [TARGET]\0ACopy .d64 disk images to a CBM-1541 or compatible drive and vice versa\0A\0AOptions:\0A -h, --help display this help and exit\0A -V, --version display version information and exit\0A -q, --quiet quiet output\0A -v, --verbose control verbosity (repeatedly, up to 3 times)\0A -n, --no-progress do not display progress information\0A\0A -s, --start-track=TRACK set start track\0A -e, --end-track=TRACK set end track (start <= end <= 42/70)\0A\0A -t, --transfer=TRANSFER set transfermode; valid modes:\0A auto (default)\0A original (slowest)\0A serial1 or s1\0A serial2 or s2\0A parallel (fastest)\0A (can be abbreviated, if unambiguous)\0A `original' and `serial1' should work in any case;\0A `serial2' won't work if more than one device is\0A connected to the IEC bus;\0A `parallel' needs a XP1541/XP1571 cable in addition\0A to the serial one.\0A `auto' tries to determine the best option.\0A\0A -i, --interleave=VALUE set interleave value; ignored when reading with\0A warp mode; default values are:\0A\0A original 16\0A\0A turbo r/w warp write\0A serial1 4 6\0A serial2 13 12\0A parallel 7 4\0A\0A INTERLEAVE is ignored when reading with warp mode;\0A if data transfer is very slow, increasing this\0A value may help.\0A\0A -w, --warp enable warp mode; this is not possible if\0A TRANSFER is set to `original'\0A This is the default if transfer is not `original`.\0A\0A --no-warp disable warp mode; this is the default if\0A TRANSFER is set to `original'.\0A\0A -b, --bam-only BAM-only copy; only allocated blocks are copied;\0A for extended tracks (36-40), SpeedDOS BAM format\0A is assumed. Use with caution.\0A\0A -B, --bam-save save BAM-only copy; this is like the `-b' option\0A but copies always the entire directory track.\0A\0A -d, --drive-type=TYPE specify drive type:\0A 0 or 1541 = 1541\0A 1 or 1571 = 1570/1571\0A\0A -r, --retry-count=COUNT set retry count\0A\0A -E, --error-map=WHEN control whether the error map is appended.\0A possible values for WHEN are (abbreviations\0A available):\0A always\0A on_errors (default)\0A never\0A\0A -2, --two-sided two-sided disk transfer (.d71): Requires 1571.\0A Warp mode is not available for .d71 images.\0A\00"
define void @help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([3236 x i8], [3236 x i8]* @str, i64 0, i64 0))
ret void
}