#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
int help() {
  fprintf(stderr,
          "Usage: \n"
          "record_ctrl <enable/disable> <record_type> <value> <log_file> "
          "[<record_mode> <print_log> <separate_memory>]\n"
          "\t<record_type> : PREEMPTION, UNSYNC_PREEMPTION, TIMER\n"
          "\t<record_mode> : SOFT, HARD_MMU, HARD_MEMSLOT; default is SOFT\n"
          "\t<print_log> : ON/OFF, default is on\n"
          "\t<separate_memory> : ON/OFF, default is OFF; valid only under "
          "HARD_MMU\n"
          "record_ctrl flush\n"
          "\tFlushes all the data out to the <log_file>. This will stop "
          "writting more data\n"
          "\tto the logger module and flush all the remaining data out to the "
          "<log_file>. \n"
          "\tAfter that the record_ctrl will stop working and return. This "
          "command is normally\n"
          "\tused when the virtual machine has been shutdown.\n"
          "record_ctrl clean\n"
          "\tDelete all the data in the logger module and sotp the record_ctrl "
          "program working in\n"
          "\tthe userspace(if any).!NOT IMPLEMENTED YET!\n"
          "record_ctrl help\n"
          "\tDisplay the help infomation.\n");
  return -1;
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0xffffffff,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
push   %rax
mov    0x2ec8(%rip),%rax
mov    (%rax),%edi
lea    0xedf(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0xffffffff,%eax
pop    %rcx
ret

LLVM IR (-O0):
@stderr = global i32 0
@.str = [847 x i8] c"Usage: \0Arecord_ctrl <enable/disable> <record_type> <value> <log_file> [<record_mode> <print_log> <separate_memory>]\0A\09<record_type> : PREEMPTION, UNSYNC_PREEMPTION, TIMER\0A\09<record_mode> : SOFT, HARD_MMU, HARD_MEMSLOT; default is SOFT\0A\09<print_log> : ON/OFF, default is on\0A\09<separate_memory> : ON/OFF, default is OFF; valid only under HARD_MMU\0Arecord_ctrl flush\0A\09Flushes all the data out to the <log_file>. This will stop writting more data\0A\09to the logger module and flush all the remaining data out to the <log_file>. \0A\09After that the record_ctrl will stop working and return. This command is normally\0A\09used when the virtual machine has been shutdown.\0Arecord_ctrl clean\0A\09Delete all the data in the logger module and sotp the record_ctrl program working in\0A\09the userspace(if any).!NOT IMPLEMENTED YET!\0Arecord_ctrl help\0A\09Display the help infomation.\0A\00"
define i32 @help() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([847 x i8], [847 x i8]* @.str, i64 0, i64 0))
ret i32 -1
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [847 x i8] c"Usage: \0Arecord_ctrl <enable/disable> <record_type> <value> <log_file> [<record_mode> <print_log> <separate_memory>]\0A\09<record_type> : PREEMPTION, UNSYNC_PREEMPTION, TIMER\0A\09<record_mode> : SOFT, HARD_MMU, HARD_MEMSLOT; default is SOFT\0A\09<print_log> : ON/OFF, default is on\0A\09<separate_memory> : ON/OFF, default is OFF; valid only under HARD_MMU\0Arecord_ctrl flush\0A\09Flushes all the data out to the <log_file>. This will stop writting more data\0A\09to the logger module and flush all the remaining data out to the <log_file>. \0A\09After that the record_ctrl will stop working and return. This command is normally\0A\09used when the virtual machine has been shutdown.\0Arecord_ctrl clean\0A\09Delete all the data in the logger module and sotp the record_ctrl program working in\0A\09the userspace(if any).!NOT IMPLEMENTED YET!\0Arecord_ctrl help\0A\09Display the help infomation.\0A\00"
define i32 @help() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([847 x i8], [847 x i8]* @.str, i64 0, i64 0))
ret i32 -1
}