#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*/ clientf(char *);
int /*<<< orphan*/ strcmp(char const *, char *);
void do_old_mhelp(const char *arg) {
  if (!strcmp(arg, "index")) {
    clientf("\33[1;36m"
            "MAPPER HELP"
            "\33[0;37m"
            "\r\n\r\n");
    clientf("- Index\r\n"
            "- GettingStarted\r\n"
            "- Commands\r\n");
  } else if (!strcmp(arg, "gettingstarted")) {
    clientf(
        "\33[1;36m"
        "MAPPER HELP"
        "\33[0;37m"
        " - Getting started.\r\n\r\n"
        "Greetings.  If you're reading this, then you obviously have a new\r\n"
        "mapper to play with.\r\n"
        "\r\n"
        "First thing you should do, is to check if it's working.  Do so with "
        "a\r\n"
        "simple 'look' command, in a common room.  If the area name is not "
        "shown\r\n"
        "after the room title, then you must set the room title color.  Do "
        "so\r\n"
        "with 'map color'.  When the color matches the one set on Imperian, "
        "and\r\n"
        "the room you're currently in is mapped, all should work.\r\n"
        "\r\n"
        "If the area name was shown, that means it now knows where it is, "
        "so\r\n"
        "the 'map' command is available.\r\n"
        "\r\n"
        "You will then most likely want to make a path to somewhere, and "
        "walk\r\n"
        "to it.  Do so by choosing a room to go to, and find its vnum "
        "(room's\r\n"
        "virtual number).  As an example, if you'd want to go to the Shuk, "
        "in\r\n"
        "Antioch, find its vnum with 'room find shuk'.  In this case, the "
        "vnum\r\n"
        "is 605, so a path to it would be made by 'map path 605'.  Once the\r\n"
        "path is built, use 'go' to start auto-walking, and 'stop' in the\r\n"
        "middle of an auto-walking to stop it.\r\n"
        "\r\n"
        "These are the basics of showing a map, and going somewhere.\r\n");
  } else if (!strcmp(arg, "commands")) {
    clientf(
        "\33[1;36m"
        "MAPPER HELP"
        "\33[0;37m"
        " - Commands.\r\n\r\n"
        "Basics\r\n"
        "------\r\n"
        "\r\n"
        "The mapper has four base commands, each having some subcommands.  "
        "The\r\n"
        "base commands are 'map', 'area', 'room' and 'exit'.  Each base\r\n"
        "command has the subcommand 'help', which lists all other "
        "subcommands.\r\n"
        "An example would be 'map help'.\r\n"
        "\r\n"
        "Abbreviating\r\n"
        "------------\r\n"
        "\r\n"
        "As an example, use 'area list'.  Base command is 'area', subcommand "
        "is\r\n"
        "'list'.  The subcommand may be abbreviated to any number of "
        "letters,\r\n"
        "so 'area lis', 'area li' and 'area l' all work.  The base command "
        "may\r\n"
        "be abbreviated only to the first letter, 'a l'.  Also, as typing a\r\n"
        "double space ('m p 605') is sometimes hard, the base command "
        "letter\r\n"
        "may be used as uppercase, with no space after it.  As an example,\r\n"
        "'Mp 605' instead of 'map path 605' or 'm p 605' would work.\r\n");
  } else
    clientf("Use 'mhelp index', for a list of mhelp files.\r\n");
}


x86 assembly (clang, -O0):
<do_old_mhelp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xec9(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1162 <do_old_mhelp+0x42>
lea    0xeba(%rip),%rdi
call   1030 <clientf@plt>
lea    0xecc(%rip),%rdi
call   1030 <clientf@plt>
jmp    11cc <do_old_mhelp+0xac>
mov    -0x8(%rbp),%rdi
lea    0xedf(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    118c <do_old_mhelp+0x6c>
lea    0xed9(%rip),%rdi
call   1030 <clientf@plt>
jmp    11c7 <do_old_mhelp+0xa7>
mov    -0x8(%rbp),%rdi
lea    0x1317(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    11b6 <do_old_mhelp+0x96>
lea    0x130b(%rip),%rdi
call   1030 <clientf@plt>
jmp    11c2 <do_old_mhelp+0xa2>
lea    0x1623(%rip),%rdi
call   1030 <clientf@plt>
jmp    11c7 <do_old_mhelp+0xa7>
jmp    11cc <do_old_mhelp+0xac>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<do_old_mhelp>:
push   %rbx
mov    %rdi,%rbx
lea    0xed5(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1170 <do_old_mhelp+0x50>
lea    0xf11(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1189 <do_old_mhelp+0x69>
lea    0x1360(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
lea    0x1358(%rip),%rax
lea    0x167a(%rip),%rdi
cmove  %rax,%rdi
pop    %rbx
jmp    1030 <clientf@plt>
lea    0xe8f(%rip),%rdi
call   1030 <clientf@plt>
lea    0xea1(%rip),%rdi
pop    %rbx
jmp    1030 <clientf@plt>
lea    0xecb(%rip),%rdi
pop    %rbx
jmp    1030 <clientf@plt>

LLVM IR (-O0):
@.str = [6 x i8] c"index\00"
@.str.1 = [30 x i8] c"\1B[1;36mMAPPER HELP\1B[0;37m\0D\0A\0D\0A\00"
@.str.2 = [40 x i8] c"- Index\0D\0A- GettingStarted\0D\0A- Commands\0D\0A\00"
@.str.3 = [15 x i8] c"gettingstarted\00"
@.str.4 = [1107 x i8] c"\1B[1;36mMAPPER HELP\1B[0;37m - Getting started.\0D\0A\0D\0AGreetings. If you're reading this, then you obviously have a new\0D\0Amapper to play with.\0D\0A\0D\0AFirst thing you should do, is to check if it's working. Do so with a\0D\0Asimple 'look' command, in a common room. If the area name is not shown\0D\0Aafter the room title, then you must set the room title color. Do so\0D\0Awith 'map color'. When the color matches the one set on Imperian, and\0D\0Athe room you're currently in is mapped, all should work.\0D\0A\0D\0AIf the area name was shown, that means it now knows where it is, so\0D\0Athe 'map' command is available.\0D\0A\0D\0AYou will then most likely want to make a path to somewhere, and walk\0D\0Ato it. Do so by choosing a room to go to, and find its vnum (room's\0D\0Avirtual number). As an example, if you'd want to go to the Shuk, in\0D\0AAntioch, find its vnum with 'room find shuk'. In this case, the vnum\0D\0Ais 605, so a path to it would be made by 'map path 605'. Once the\0D\0Apath is built, use 'go' to start auto-walking, and 'stop' in the\0D\0Amiddle of an auto-walking to stop it.\0D\0A\0D\0AThese are the basics of showing a map, and going somewhere.\0D\0A\00"
@.str.5 = [9 x i8] c"commands\00"
@.str.6 = [809 x i8] c"\1B[1;36mMAPPER HELP\1B[0;37m - Commands.\0D\0A\0D\0ABasics\0D\0A------\0D\0A\0D\0AThe mapper has four base commands, each having some subcommands. The\0D\0Abase commands are 'map', 'area', 'room' and 'exit'. Each base\0D\0Acommand has the subcommand 'help', which lists all other subcommands.\0D\0AAn example would be 'map help'.\0D\0A\0D\0AAbbreviating\0D\0A------------\0D\0A\0D\0AAs an example, use 'area list'. Base command is 'area', subcommand is\0D\0A'list'. The subcommand may be abbreviated to any number of letters,\0D\0Aso 'area lis', 'area li' and 'area l' all work. The base command may\0D\0Abe abbreviated only to the first letter, 'a l'. Also, as typing a\0D\0Adouble space ('m p 605') is sometimes hard, the base command letter\0D\0Amay be used as uppercase, with no space after it. As an example,\0D\0A'Mp 605' instead of 'map path 605' or 'm p 605' would work.\0D\0A\00"
@.str.7 = [48 x i8] c"Use 'mhelp index', for a list of mhelp files.\0D\0A\00"
define void @do_old_mhelp(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @strcmp(i8* %3, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%5 = icmp ne i32 %4, 0
br i1 %5, label %9, label %6
6: ; preds = %1
%7 = call i32 @clientf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.1, i64 0, i64 0))
%8 = call i32 @clientf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.2, i64 0, i64 0))
br label %25
9: ; preds = %1
%10 = load i8*, i8** %2
%11 = call i32 @strcmp(i8* %10, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.3, i64 0, i64 0))
%12 = icmp ne i32 %11, 0
br i1 %12, label %15, label %13
13: ; preds = %9
%14 = call i32 @clientf(i8* getelementptr inbounds ([1107 x i8], [1107 x i8]* @.str.4, i64 0, i64 0))
br label %24
15: ; preds = %9
%16 = load i8*, i8** %2
%17 = call i32 @strcmp(i8* %16, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0))
%18 = icmp ne i32 %17, 0
br i1 %18, label %21, label %19
19: ; preds = %15
%20 = call i32 @clientf(i8* getelementptr inbounds ([809 x i8], [809 x i8]* @.str.6, i64 0, i64 0))
br label %23
21: ; preds = %15
%22 = call i32 @clientf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.7, i64 0, i64 0))
br label %23
23: ; preds = %21, %19
br label %24
24: ; preds = %23, %13
br label %25
25: ; preds = %24, %6
ret void
}

LLVM IR (-O2):
@.str = [6 x i8] c"index\00"
@.str.1 = [30 x i8] c"\1B[1;36mMAPPER HELP\1B[0;37m\0D\0A\0D\0A\00"
@.str.2 = [40 x i8] c"- Index\0D\0A- GettingStarted\0D\0A- Commands\0D\0A\00"
@.str.3 = [15 x i8] c"gettingstarted\00"
@.str.4 = [1107 x i8] c"\1B[1;36mMAPPER HELP\1B[0;37m - Getting started.\0D\0A\0D\0AGreetings. If you're reading this, then you obviously have a new\0D\0Amapper to play with.\0D\0A\0D\0AFirst thing you should do, is to check if it's working. Do so with a\0D\0Asimple 'look' command, in a common room. If the area name is not shown\0D\0Aafter the room title, then you must set the room title color. Do so\0D\0Awith 'map color'. When the color matches the one set on Imperian, and\0D\0Athe room you're currently in is mapped, all should work.\0D\0A\0D\0AIf the area name was shown, that means it now knows where it is, so\0D\0Athe 'map' command is available.\0D\0A\0D\0AYou will then most likely want to make a path to somewhere, and walk\0D\0Ato it. Do so by choosing a room to go to, and find its vnum (room's\0D\0Avirtual number). As an example, if you'd want to go to the Shuk, in\0D\0AAntioch, find its vnum with 'room find shuk'. In this case, the vnum\0D\0Ais 605, so a path to it would be made by 'map path 605'. Once the\0D\0Apath is built, use 'go' to start auto-walking, and 'stop' in the\0D\0Amiddle of an auto-walking to stop it.\0D\0A\0D\0AThese are the basics of showing a map, and going somewhere.\0D\0A\00"
@.str.5 = [9 x i8] c"commands\00"
@.str.6 = [809 x i8] c"\1B[1;36mMAPPER HELP\1B[0;37m - Commands.\0D\0A\0D\0ABasics\0D\0A------\0D\0A\0D\0AThe mapper has four base commands, each having some subcommands. The\0D\0Abase commands are 'map', 'area', 'room' and 'exit'. Each base\0D\0Acommand has the subcommand 'help', which lists all other subcommands.\0D\0AAn example would be 'map help'.\0D\0A\0D\0AAbbreviating\0D\0A------------\0D\0A\0D\0AAs an example, use 'area list'. Base command is 'area', subcommand is\0D\0A'list'. The subcommand may be abbreviated to any number of letters,\0D\0Aso 'area lis', 'area li' and 'area l' all work. The base command may\0D\0Abe abbreviated only to the first letter, 'a l'. Also, as typing a\0D\0Adouble space ('m p 605') is sometimes hard, the base command letter\0D\0Amay be used as uppercase, with no space after it. As an example,\0D\0A'Mp 605' instead of 'map path 605' or 'm p 605' would work.\0D\0A\00"
@.str.7 = [48 x i8] c"Use 'mhelp index', for a list of mhelp files.\0D\0A\00"
define void @do_old_mhelp(i8* nocapture %0) {
%2 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%3 = icmp eq i32 %2, 0
br i1 %3, label %4, label %6
4: ; preds = %1
%5 = tail call i32 @clientf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.1, i64 0, i64 0))
br label %13
6: ; preds = %1
%7 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(15) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.3, i64 0, i64 0))
%8 = icmp eq i32 %7, 0
br i1 %8, label %13, label %9
9: ; preds = %6
%10 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(9) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0))
%11 = icmp eq i32 %10, 0
%12 = select i1 %11, i8* getelementptr inbounds ([809 x i8], [809 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.7, i64 0, i64 0)
br label %13
13: ; preds = %9, %6, %4
%14 = phi i8* [ getelementptr inbounds ([40 x i8], [40 x i8]* @.str.2, i64 0, i64 0), %4 ], [ getelementptr inbounds ([1107 x i8], [1107 x i8]* @.str.4, i64 0, i64 0), %6 ], [ %12, %9 ]
%15 = tail call i32 @clientf(i8* %14)
ret void
}