#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 print_help() {
  printf("Usage: mktorrent [OPTIONS] <target directory or filename>\n\n"
         "Options:\n"
         "-a <url>[,<url>]* : specify the full announce URLs\n"
         "                    at least one is required\n"
         "                    additional -a adds backup trackers\n"
         "-c <comment>      : add a comment to the metainfo\n"
         "-d                : don't write the creation date\n"
         "-h                : show this help screen\n"
         "-l <n>            : set the piece length to 2^n bytes,\n"
         "                    default is 18, that is 2^18 = 256kb\n"
         "-n <name>         : set the name of the torrent,\n"
         "                    default is the basename of the target\n"
         "-o <filename>     : set the path and filename of the created file\n"
         "                    default is <name>.torrent\n"
         "-p                : set the private flag\n"
         "-v                : be verbose\n"
         "-w <url>[,<url>]* : add web seed URLs\n"
         "                    additional -w adds more URLs\n"
         "\nPlease send bug reports, patches, feature requests, praise and\n"
         "general gossip about the program to: esmil@users.sourceforge.net\n");
}


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

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

LLVM IR (-O0):
@.str = [980 x i8] c"Usage: mktorrent [OPTIONS] <target directory or filename>\0A\0AOptions:\0A-a <url>[,<url>]* : specify the full announce URLs\0A at least one is required\0A additional -a adds backup trackers\0A-c <comment> : add a comment to the metainfo\0A-d : don't write the creation date\0A-h : show this help screen\0A-l <n> : set the piece length to 2^n bytes,\0A default is 18, that is 2^18 = 256kb\0A-n <name> : set the name of the torrent,\0A default is the basename of the target\0A-o <filename> : set the path and filename of the created file\0A default is <name>.torrent\0A-p : set the private flag\0A-v : be verbose\0A-w <url>[,<url>]* : add web seed URLs\0A additional -w adds more URLs\0A\0APlease send bug reports, patches, feature requests, praise and\0Ageneral gossip about the program to: esmil@users.sourceforge.net\0A\00"
define void @print_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([980 x i8], [980 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [979 x i8] c"Usage: mktorrent [OPTIONS] <target directory or filename>\0A\0AOptions:\0A-a <url>[,<url>]* : specify the full announce URLs\0A at least one is required\0A additional -a adds backup trackers\0A-c <comment> : add a comment to the metainfo\0A-d : don't write the creation date\0A-h : show this help screen\0A-l <n> : set the piece length to 2^n bytes,\0A default is 18, that is 2^18 = 256kb\0A-n <name> : set the name of the torrent,\0A default is the basename of the target\0A-o <filename> : set the path and filename of the created file\0A default is <name>.torrent\0A-p : set the private flag\0A-v : be verbose\0A-w <url>[,<url>]* : add web seed URLs\0A additional -w adds more URLs\0A\0APlease send bug reports, patches, feature requests, praise and\0Ageneral gossip about the program to: esmil@users.sourceforge.net\00"
define void @print_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([979 x i8], [979 x i8]* @str, i64 0, i64 0))
ret void
}