#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 *, char const *, int,
                           char const *);
int /*<<< orphan*/ stderr;
void print_help(const char *self) {
  fprintf(stderr,
          "  Userspace I2C utility for: Melexis MLX90614 Remote Temperature "
          "Sensor\n  (C) Chi Zhang (dword1511) <zhangchi866@gmail.com>\n  \n  "
          "Usage:\n    %s -b <bus number> [list of operations]\n  \n  "
          "Operations will be carried out in argument list order.\n  Bus "
          "number and address can be overrided in the middle of the list.\n  "
          "\n  List of operations:\n    -a <int>: override device address "
          "(default: 0x%02x, in range 0x03 to 0x7f).\n              NOTE: this "
          "value will NOT be reset to default after switching\n                "
          "    bus.\n              WARN: use this option only when you know "
          "what you are doing!\n    -A      : print all information provided "
          "by the sensor.\n    -b <int>: set bus number (must be set prior to "
          "any operations).\n              NOTE: you can use `i2cdetect -l' to "
          "list I2C buses present in the\n                    system.\n    -l  "
          "    : print local (die) temperature.\n    -o      : print remote "
          "(object) temperature.\n  \n  Example:\n    Print object temperature "
          "measured by MLX90614 on i2c-1:\n      %s -b 1 -o\n  \n",
          self, (0x5a), self);
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ebd(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
mov    -0x8(%rbp),%r8
lea    0xecc(%rip),%rsi
mov    $0x5a,%ecx
call   1030 <fprintf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
mov    %rdi,%rdx
mov    0x2ec6(%rip),%rax
mov    (%rax),%edi
lea    0xedd(%rip),%rsi
mov    $0x5a,%ecx
mov    %rdx,%r8
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1015 x i8] c" Userspace I2C utility for: Melexis MLX90614 Remote Temperature Sensor\0A (C) Chi Zhang (dword1511) <zhangchi866@gmail.com>\0A \0A Usage:\0A %s -b <bus number> [list of operations]\0A \0A Operations will be carried out in argument list order.\0A Bus number and address can be overrided in the middle of the list.\0A \0A List of operations:\0A -a <int>: override device address (default: 0x%02x, in range 0x03 to 0x7f).\0A NOTE: this value will NOT be reset to default after switching\0A bus.\0A WARN: use this option only when you know what you are doing!\0A -A : print all information provided by the sensor.\0A -b <int>: set bus number (must be set prior to any operations).\0A NOTE: you can use `i2cdetect -l' to list I2C buses present in the\0A system.\0A -l : print local (die) temperature.\0A -o : print remote (object) temperature.\0A \0A Example:\0A Print object temperature measured by MLX90614 on i2c-1:\0A %s -b 1 -o\0A \0A\00"
define void @print_help(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i32, i32* @stderr
%4 = load i8*, i8** %2
%5 = load i8*, i8** %2
%6 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([1015 x i8], [1015 x i8]* @.str, i64 0, i64 0), i8* %4, i32 90, i8* %5)
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1015 x i8] c" Userspace I2C utility for: Melexis MLX90614 Remote Temperature Sensor\0A (C) Chi Zhang (dword1511) <zhangchi866@gmail.com>\0A \0A Usage:\0A %s -b <bus number> [list of operations]\0A \0A Operations will be carried out in argument list order.\0A Bus number and address can be overrided in the middle of the list.\0A \0A List of operations:\0A -a <int>: override device address (default: 0x%02x, in range 0x03 to 0x7f).\0A NOTE: this value will NOT be reset to default after switching\0A bus.\0A WARN: use this option only when you know what you are doing!\0A -A : print all information provided by the sensor.\0A -b <int>: set bus number (must be set prior to any operations).\0A NOTE: you can use `i2cdetect -l' to list I2C buses present in the\0A system.\0A -l : print local (die) temperature.\0A -o : print remote (object) temperature.\0A \0A Example:\0A Print object temperature measured by MLX90614 on i2c-1:\0A %s -b 1 -o\0A \0A\00"
define void @print_help(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([1015 x i8], [1015 x i8]* @.str, i64 0, i64 0), i8* %0, i32 90, i8* %0)
ret void
}