#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*/ outs(char *);
void Help(char *param) {
  if (!param) {
    outs("214 The following commands are recognized (* =>'s unimplemented).");
    outs("214   USER    PASS    ACCT*   CWD     XCWD    CDUP    XCUP    SMNT*  "
         " ");
    outs("214   QUIT    REIN*   PORT    PASV    TYPE    STRU*   MODE*   RETR   "
         " ");
    outs("214   STOR    STOU*   APPE    ALLO*   REST    RNFR    RNTO    ABOR   "
         " ");
    outs("214   DELE    MDTM    RMD     XRMD    MKD     XMKD    PWD     XPWD   "
         " ");
    outs("214   SIZE    LIST    NLST    SITE    SYST    STAT    HELP    NOOP   "
         " ");
    outs("214 Direct comments to nolove@263.net");
  } else {
    outs("214 Sorry, I haven't write the topic help.");
  };
}


x86 assembly (clang, -O0):
<Help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
cmpq   $0x0,-0x8(%rbp)
jne    1180 <Help+0x70>
lea    0xed2(%rip),%rdi
call   1030 <outs@plt>
lea    0xf08(%rip),%rdi
call   1030 <outs@plt>
lea    0xf43(%rip),%rdi
call   1030 <outs@plt>
lea    0xf7e(%rip),%rdi
call   1030 <outs@plt>
lea    0xfb9(%rip),%rdi
call   1030 <outs@plt>
lea    0xff4(%rip),%rdi
call   1030 <outs@plt>
lea    0x102f(%rip),%rdi
call   1030 <outs@plt>
jmp    118c <Help+0x7c>
lea    0x1044(%rip),%rdi
call   1030 <outs@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Help>:
test   %rdi,%rdi
je     1121 <Help+0x11>
lea    0x10af(%rip),%rdi
jmp    1030 <outs@plt>
push   %rax
lea    0xed7(%rip),%rdi
call   1030 <outs@plt>
lea    0xf0d(%rip),%rdi
call   1030 <outs@plt>
lea    0xf48(%rip),%rdi
call   1030 <outs@plt>
lea    0xf83(%rip),%rdi
call   1030 <outs@plt>
lea    0xfbe(%rip),%rdi
call   1030 <outs@plt>
lea    0xff9(%rip),%rdi
call   1030 <outs@plt>
lea    0x1034(%rip),%rdi
add    $0x8,%rsp
jmp    1030 <outs@plt>

LLVM IR (-O0):
@.str = [66 x i8] c"214 The following commands are recognized (* =>'s unimplemented).\00"
@.str.1 = [71 x i8] c"214 USER PASS ACCT* CWD XCWD CDUP XCUP SMNT* \00"
@.str.2 = [71 x i8] c"214 QUIT REIN* PORT PASV TYPE STRU* MODE* RETR \00"
@.str.3 = [71 x i8] c"214 STOR STOU* APPE ALLO* REST RNFR RNTO ABOR \00"
@.str.4 = [71 x i8] c"214 DELE MDTM RMD XRMD MKD XMKD PWD XPWD \00"
@.str.5 = [71 x i8] c"214 SIZE LIST NLST SITE SYST STAT HELP NOOP \00"
@.str.6 = [38 x i8] c"214 Direct comments to nolove@263.net\00"
@.str.7 = [43 x i8] c"214 Sorry, I haven't write the topic help.\00"
define void @Help(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = icmp ne i8* %3, null
br i1 %4, label %13, label %5
5: ; preds = %1
%6 = call i32 @outs(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%7 = call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.1, i64 0, i64 0))
%8 = call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.2, i64 0, i64 0))
%9 = call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.3, i64 0, i64 0))
%10 = call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.4, i64 0, i64 0))
%11 = call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.5, i64 0, i64 0))
%12 = call i32 @outs(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.6, i64 0, i64 0))
br label %15
13: ; preds = %1
%14 = call i32 @outs(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.7, i64 0, i64 0))
br label %15
15: ; preds = %13, %5
ret void
}

LLVM IR (-O2):
@.str = [66 x i8] c"214 The following commands are recognized (* =>'s unimplemented).\00"
@.str.1 = [71 x i8] c"214 USER PASS ACCT* CWD XCWD CDUP XCUP SMNT* \00"
@.str.2 = [71 x i8] c"214 QUIT REIN* PORT PASV TYPE STRU* MODE* RETR \00"
@.str.3 = [71 x i8] c"214 STOR STOU* APPE ALLO* REST RNFR RNTO ABOR \00"
@.str.4 = [71 x i8] c"214 DELE MDTM RMD XRMD MKD XMKD PWD XPWD \00"
@.str.5 = [71 x i8] c"214 SIZE LIST NLST SITE SYST STAT HELP NOOP \00"
@.str.6 = [38 x i8] c"214 Direct comments to nolove@263.net\00"
@.str.7 = [43 x i8] c"214 Sorry, I haven't write the topic help.\00"
define void @Help(i8* readnone %0) {
%2 = icmp eq i8* %0, null
br i1 %2, label %3, label %10
3: ; preds = %1
%4 = tail call i32 @outs(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%5 = tail call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.1, i64 0, i64 0))
%6 = tail call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.2, i64 0, i64 0))
%7 = tail call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.3, i64 0, i64 0))
%8 = tail call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.4, i64 0, i64 0))
%9 = tail call i32 @outs(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.5, i64 0, i64 0))
br label %10
10: ; preds = %1, %3
%11 = phi i8* [ getelementptr inbounds ([38 x i8], [38 x i8]* @.str.6, i64 0, i64 0), %3 ], [ getelementptr inbounds ([43 x i8], [43 x i8]* @.str.7, i64 0, i64 0), %1 ]
%12 = tail call i32 @outs(i8* %11)
ret void
}