#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 zcntools_main(void) {
  printf("zcntools "
         "1.2"
         " - (c) 1999,2000 Russell Marks for improbabledesigns.\n\n");
  printf(
      "\n"
      "Run as one of the following, making sure you put any ZCN wildcards in "
      "quotes:\n"
      "\n"
      "zcncat du:file		(dump a file from the card to stdout)\n"
      "zcndf			(show disk space free on card's drives)\n"
      "zcnformat d:		(format a logical drive on the card)\n"
      "zcnget du:filespec dir	(copy file(s) from card to specified dir)\n"
      "zcninfo			(gives overall info on card)\n"
      "zcnls [-l] [du:]	(list files just like ZCN's ls does)\n"
      "zcnput file(s) du:	(copy file(s) to card)\n"
      "zcnren du:file newname	(rename a file)\n"
      "zcnrm du:filespec	(delete file(s))\n"
      "zcntools		(gives this help)\n"
      "zcnzero			(zero out unused space, for better gzipping "
      "etc.)\n"
      "\n"
      "Default drive/user is drive A: user 0.\n"
      "\n"
      "Above, `d:' = drive specification, e.g. `d:' :-), and `du:' =\n"
      "  drive/user specification, e.g. `a:' (drive A:), `2:' (user 2), `a2:'\n"
      "  (drive A: user 2). `filespec' = a filename or wildcard.\n"
      "\n");
}


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

x86 assembly (clang, -O2):
<zcntools_main>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0xf1f(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [68 x i8] c"zcntools 1.2 - (c) 1999,2000 Russell Marks for improbabledesigns.\0A\0A\00"
@.str.1 = [829 x i8] c"\0ARun as one of the following, making sure you put any ZCN wildcards in quotes:\0A\0Azcncat du:file\09\09(dump a file from the card to stdout)\0Azcndf\09\09\09(show disk space free on card's drives)\0Azcnformat d:\09\09(format a logical drive on the card)\0Azcnget du:filespec dir\09(copy file(s) from card to specified dir)\0Azcninfo\09\09\09(gives overall info on card)\0Azcnls [-l] [du:]\09(list files just like ZCN's ls does)\0Azcnput file(s) du:\09(copy file(s) to card)\0Azcnren du:file newname\09(rename a file)\0Azcnrm du:filespec\09(delete file(s))\0Azcntools\09\09(gives this help)\0Azcnzero\09\09\09(zero out unused space, for better gzipping etc.)\0A\0ADefault drive/user is drive A: user 0.\0A\0AAbove, `d:' = drive specification, e.g. `d:' :-), and `du:' =\0A drive/user specification, e.g. `a:' (drive A:), `2:' (user 2), `a2:'\0A (drive A: user 2). `filespec' = a filename or wildcard.\0A\0A\00"
define void @zcntools_main() {
%1 = call i32 @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([829 x i8], [829 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [67 x i8] c"zcntools 1.2 - (c) 1999,2000 Russell Marks for improbabledesigns.\0A\00"
@str.2 = [828 x i8] c"\0ARun as one of the following, making sure you put any ZCN wildcards in quotes:\0A\0Azcncat du:file\09\09(dump a file from the card to stdout)\0Azcndf\09\09\09(show disk space free on card's drives)\0Azcnformat d:\09\09(format a logical drive on the card)\0Azcnget du:filespec dir\09(copy file(s) from card to specified dir)\0Azcninfo\09\09\09(gives overall info on card)\0Azcnls [-l] [du:]\09(list files just like ZCN's ls does)\0Azcnput file(s) du:\09(copy file(s) to card)\0Azcnren du:file newname\09(rename a file)\0Azcnrm du:filespec\09(delete file(s))\0Azcntools\09\09(gives this help)\0Azcnzero\09\09\09(zero out unused space, for better gzipping etc.)\0A\0ADefault drive/user is drive A: user 0.\0A\0AAbove, `d:' = drive specification, e.g. `d:' :-), and `du:' =\0A drive/user specification, e.g. `a:' (drive A:), `2:' (user 2), `a2:'\0A (drive A: user 2). `filespec' = a filename or wildcard.\0A\00"
define void @zcntools_main() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([67 x i8], [67 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([828 x i8], [828 x i8]* @str.2, i64 0, i64 0))
ret void
}