#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*/ dprintf(int, char *);
void print_help(int fd) {
  dprintf(fd, "Short Help Text:\n"
              "  h, help                 - Show this Help text\n"
              "  frame_debug <on/off>    - Set state of Frame Debugging\n"
              "  list [class]            - Show Parameter List\n"
              "  g, get <p_name>         - Query Parameter\n"
              "  s, set <p_name> <value> - Set Parameter\n"
              "  gvu <p_name>            - Get Value of Parameter with Unit\n"
              "  gc <class>              - Query a Class of Parameters\n"
              "     Parameter Classes:\n"
              "       P_ALL        0\n"
              "       P_ERRORS     1\n"
              "       P_GENERAL    2\n"
              "       P_BOILER     3\n"
              "       P_HOTWATER   4\n"
              "       P_HEATING    5\n"
              "       P_BURNER     6\n"
              "       P_HYDRAULIC  7\n"
              "       P_SOLAR      8\n"
              "  rg <address> [<bytes>]  - Query RAW Memory Address\n"
              "  rs <address> <value(s)> - Set RAW Memory Address\n"
              "  q, quit, exit           - Quit session\n"
              "\n$");
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
mov    -0x4(%rbp),%edi
lea    0xedb(%rip),%rsi
call   1030 <dprintf@plt>
add    $0x10,%rsp
pop    %rbp
ret

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

LLVM IR (-O0):
@.str = [743 x i8] c"Short Help Text:\0A h, help - Show this Help text\0A frame_debug <on/off> - Set state of Frame Debugging\0A list [class] - Show Parameter List\0A g, get <p_name> - Query Parameter\0A s, set <p_name> <value> - Set Parameter\0A gvu <p_name> - Get Value of Parameter with Unit\0A gc <class> - Query a Class of Parameters\0A Parameter Classes:\0A P_ALL 0\0A P_ERRORS 1\0A P_GENERAL 2\0A P_BOILER 3\0A P_HOTWATER 4\0A P_HEATING 5\0A P_BURNER 6\0A P_HYDRAULIC 7\0A P_SOLAR 8\0A rg <address> [<bytes>] - Query RAW Memory Address\0A rs <address> <value(s)> - Set RAW Memory Address\0A q, quit, exit - Quit session\0A\0A$\00"
define void @print_help(i32 %0) {
%2 = alloca i32
store i32 %0, i32* %2
%3 = load i32, i32* %2
%4 = call i32 @dprintf(i32 %3, i8* getelementptr inbounds ([743 x i8], [743 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [743 x i8] c"Short Help Text:\0A h, help - Show this Help text\0A frame_debug <on/off> - Set state of Frame Debugging\0A list [class] - Show Parameter List\0A g, get <p_name> - Query Parameter\0A s, set <p_name> <value> - Set Parameter\0A gvu <p_name> - Get Value of Parameter with Unit\0A gc <class> - Query a Class of Parameters\0A Parameter Classes:\0A P_ALL 0\0A P_ERRORS 1\0A P_GENERAL 2\0A P_BOILER 3\0A P_HOTWATER 4\0A P_HEATING 5\0A P_BURNER 6\0A P_HYDRAULIC 7\0A P_SOLAR 8\0A rg <address> [<bytes>] - Query RAW Memory Address\0A rs <address> <value(s)> - Set RAW Memory Address\0A q, quit, exit - Quit session\0A\0A$\00"
define void @print_help(i32 %0) {
%2 = tail call i32 @dprintf(i32 %0, i8* getelementptr inbounds ([743 x i8], [743 x i8]* @.str, i64 0, i64 0))
ret void
}