#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_indent(char *, char *, int);
int /*<<< orphan*/ printf(char *, char const *);
int /*<<< orphan*/ snprintf(char *, int, char *, ...);
void __tractorbeam_print_sendusage(const char *prg) {
  char buffer[1024];
  printf("USAGE: %s send OPTIONS... -- [ARGV...]\n", prg);
  __printf_indent(
      "",
      "  This program connects to a zookeeper cluster and regularly writes"
      "  the output of a given program into a ephemeral node.",
      60);
  snprintf(buffer, 1024, "The zookeeper cluster to connect to [default:%s];",
           "localhost:2181");
  __printf_indent("  --zookeeper STRING  ", buffer, 76);
  snprintf(buffer, 1024, "The path of the ephemeral node you want to create;");
  __printf_indent("  --path STRING       ", buffer, 76);
  snprintf(buffer, 1024,
           "The image to invoke. This should be the an absolute path (but it is"
           " not enforced);");
  __printf_indent("  --exec FILE         ", buffer, 76);
  snprintf(
      buffer, 1024,
      "Defines the interval at which the program gets called. The amount of"
      " time the program spent during its thing is not taken into account,"
      " but the runtime may not exceed this value [default:%d];",
      5);
  __printf_indent("  --delay SECONDS     ", buffer, 76);
  snprintf(buffer, 1024,
           "This defines how much time without communication zookeeper should"
           " consider the client still alive [default:%d];",
           5000);
  __printf_indent("  --timeout MILLISECS ", buffer, 76);
}


x86 assembly (clang, -O0):
<__tractorbeam_print_sendusage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x410,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xeb6(%rip),%rdi
call   1030 <printf@plt>
lea    0xed1(%rip),%rdi
lea    0xecb(%rip),%rsi
mov    $0x3c,%edx
call   1040 <__printf_indent@plt>
lea    -0x410(%rbp),%rdi
mov    $0x400,%esi
lea    0xf28(%rip),%rdx
lea    0xf53(%rip),%rcx
mov    $0x0,%al
call   1050 <snprintf@plt>
lea    -0x410(%rbp),%rsi
lea    0xf4d(%rip),%rdi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
lea    -0x410(%rbp),%rdi
mov    $0x400,%esi
lea    0xf47(%rip),%rdx
mov    $0x0,%al
call   1050 <snprintf@plt>
lea    -0x410(%rbp),%rsi
lea    0xf65(%rip),%rdi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
lea    -0x410(%rbp),%rdi
mov    $0x400,%esi
lea    0xf5f(%rip),%rdx
mov    $0x0,%al
call   1050 <snprintf@plt>
lea    -0x410(%rbp),%rsi
lea    0xf9d(%rip),%rdi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
lea    -0x410(%rbp),%rdi
mov    $0x400,%esi
lea    0xf97(%rip),%rdx
mov    $0x5,%ecx
mov    $0x0,%al
call   1050 <snprintf@plt>
lea    -0x410(%rbp),%rsi
lea    0x103d(%rip),%rdi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
lea    -0x410(%rbp),%rdi
mov    $0x400,%esi
lea    0x1037(%rip),%rdx
mov    $0x1388,%ecx
mov    $0x0,%al
call   1050 <snprintf@plt>
lea    -0x410(%rbp),%rsi
lea    0x108d(%rip),%rdi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
add    $0x410,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<__tractorbeam_print_sendusage>:
push   %rbx
sub    $0x400,%rsp
mov    %rdi,%rsi
lea    0xebe(%rip),%rdi
call   1030 <printf@plt>
lea    0xed9(%rip),%rdi
lea    0xed3(%rip),%rsi
mov    $0x3c,%edx
call   1040 <__printf_indent@plt>
lea    0xf3c(%rip),%rdx
lea    0xf67(%rip),%rcx
mov    %rsp,%rbx
mov    %rbx,%rdi
mov    $0x400,%esi
xor    %eax,%eax
call   1050 <snprintf@plt>
lea    0xf5d(%rip),%rdi
mov    %rbx,%rsi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
lea    0xf60(%rip),%rdx
mov    %rbx,%rdi
mov    $0x400,%esi
xor    %eax,%eax
call   1050 <snprintf@plt>
lea    0xf7d(%rip),%rdi
mov    %rbx,%rsi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
lea    0xf80(%rip),%rdx
mov    %rbx,%rdi
mov    $0x400,%esi
xor    %eax,%eax
call   1050 <snprintf@plt>
lea    0xfbd(%rip),%rdi
mov    %rbx,%rsi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
lea    0xfc0(%rip),%rdx
mov    %rbx,%rdi
mov    $0x400,%esi
mov    $0x5,%ecx
xor    %eax,%eax
call   1050 <snprintf@plt>
lea    0x1065(%rip),%rdi
mov    %rbx,%rsi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
lea    0x1068(%rip),%rdx
mov    %rbx,%rdi
mov    $0x400,%esi
mov    $0x1388,%ecx
xor    %eax,%eax
call   1050 <snprintf@plt>
lea    0x10bd(%rip),%rdi
mov    %rbx,%rsi
mov    $0x4c,%edx
call   1040 <__printf_indent@plt>
add    $0x400,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [40 x i8] c"USAGE: %s send OPTIONS... -- [ARGV...]\0A\00"
@.str.1 = [1 x i8] zeroinitializer
@.str.2 = [122 x i8] c" This program connects to a zookeeper cluster and regularly writes the output of a given program into a ephemeral node.\00"
@.str.3 = [50 x i8] c"The zookeeper cluster to connect to [default:%s];\00"
@.str.4 = [15 x i8] c"localhost:2181\00"
@.str.5 = [23 x i8] c" --zookeeper STRING \00"
@.str.6 = [51 x i8] c"The path of the ephemeral node you want to create;\00"
@.str.7 = [23 x i8] c" --path STRING \00"
@.str.8 = [83 x i8] c"The image to invoke. This should be the an absolute path (but it is not enforced);\00"
@.str.9 = [23 x i8] c" --exec FILE \00"
@.str.10 = [192 x i8] c"Defines the interval at which the program gets called. The amount of time the program spent during its thing is not taken into account, but the runtime may not exceed this value [default:%d];\00"
@.str.11 = [23 x i8] c" --delay SECONDS \00"
@.str.12 = [112 x i8] c"This defines how much time without communication zookeeper should consider the client still alive [default:%d];\00"
@.str.13 = [23 x i8] c" --timeout MILLISECS \00"
define void @__tractorbeam_print_sendusage(i8* %0) {
%2 = alloca i8*
%3 = alloca [1024 x i8]
store i8* %0, i8** %2
%4 = load i8*, i8** %2
%5 = call i32 @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* %4)
%6 = call i32 @__printf_indent(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([122 x i8], [122 x i8]* @.str.2, i64 0, i64 0), i32 60)
%7 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%8 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %7, i32 1024, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.4, i64 0, i64 0))
%9 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%10 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.5, i64 0, i64 0), i8* %9, i32 76)
%11 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%12 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %11, i32 1024, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.6, i64 0, i64 0))
%13 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%14 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.7, i64 0, i64 0), i8* %13, i32 76)
%15 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%16 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %15, i32 1024, i8* getelementptr inbounds ([83 x i8], [83 x i8]* @.str.8, i64 0, i64 0))
%17 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%18 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.9, i64 0, i64 0), i8* %17, i32 76)
%19 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%20 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %19, i32 1024, i8* getelementptr inbounds ([192 x i8], [192 x i8]* @.str.10, i64 0, i64 0), i32 5)
%21 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%22 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.11, i64 0, i64 0), i8* %21, i32 76)
%23 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%24 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %23, i32 1024, i8* getelementptr inbounds ([112 x i8], [112 x i8]* @.str.12, i64 0, i64 0), i32 5000)
%25 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%26 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.13, i64 0, i64 0), i8* %25, i32 76)
ret void
}

LLVM IR (-O2):
@.str = [40 x i8] c"USAGE: %s send OPTIONS... -- [ARGV...]\0A\00"
@.str.1 = [1 x i8] zeroinitializer
@.str.2 = [122 x i8] c" This program connects to a zookeeper cluster and regularly writes the output of a given program into a ephemeral node.\00"
@.str.3 = [50 x i8] c"The zookeeper cluster to connect to [default:%s];\00"
@.str.4 = [15 x i8] c"localhost:2181\00"
@.str.5 = [23 x i8] c" --zookeeper STRING \00"
@.str.6 = [51 x i8] c"The path of the ephemeral node you want to create;\00"
@.str.7 = [23 x i8] c" --path STRING \00"
@.str.8 = [83 x i8] c"The image to invoke. This should be the an absolute path (but it is not enforced);\00"
@.str.9 = [23 x i8] c" --exec FILE \00"
@.str.10 = [192 x i8] c"Defines the interval at which the program gets called. The amount of time the program spent during its thing is not taken into account, but the runtime may not exceed this value [default:%d];\00"
@.str.11 = [23 x i8] c" --delay SECONDS \00"
@.str.12 = [112 x i8] c"This defines how much time without communication zookeeper should consider the client still alive [default:%d];\00"
@.str.13 = [23 x i8] c" --timeout MILLISECS \00"
define void @__tractorbeam_print_sendusage(i8* %0) {
%2 = alloca [1024 x i8]
%3 = getelementptr inbounds [1024 x i8], [1024 x i8]* %2, i64 0, i64 0
%4 = tail call i32 @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* %0)
%5 = tail call i32 @__printf_indent(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([122 x i8], [122 x i8]* @.str.2, i64 0, i64 0), i32 60)
%6 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %3, i32 1024, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.4, i64 0, i64 0))
%7 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.5, i64 0, i64 0), i8* %3, i32 76)
%8 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %3, i32 1024, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.6, i64 0, i64 0))
%9 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.7, i64 0, i64 0), i8* %3, i32 76)
%10 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %3, i32 1024, i8* getelementptr inbounds ([83 x i8], [83 x i8]* @.str.8, i64 0, i64 0))
%11 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.9, i64 0, i64 0), i8* %3, i32 76)
%12 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %3, i32 1024, i8* getelementptr inbounds ([192 x i8], [192 x i8]* @.str.10, i64 0, i64 0), i32 5)
%13 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.11, i64 0, i64 0), i8* %3, i32 76)
%14 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* %3, i32 1024, i8* getelementptr inbounds ([112 x i8], [112 x i8]* @.str.12, i64 0, i64 0), i32 5000)
%15 = call i32 @__printf_indent(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.13, i64 0, i64 0), i8* %3, i32 76)
ret void
}