#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*/ exit(int);
int /*<<< orphan*/ printf(char *, char *, int);
void usage(void) {
  printf(
      "options:\n"
      "    -d <database file>        this option is mandatory\n"
      "    -o <output file>          this option is mandatory\n"
      "    -on <GROUP or ID>         turn log ON for given GROUP or ID\n"
      "    -off <GROUP or ID>        turn log OFF for given GROUP or ID\n"
      "    -ON                       turn all logs ON\n"
      "    -OFF                      turn all logs OFF\n"
      "                              note: you may pass several "
      "-on/-off/-ON/-OFF,\n"
      "                                    they will be processed in order\n"
      "                                    by default, all is off\n"
      "    -ip <host>                connect to given IP address (default %s)\n"
      "    -p <port>                 connect to given port (default %d)\n",
      "127.0.0.1", 2021);
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
lea    0x1179(%rip),%rsi
mov    $0x7e5,%edx
call   1030 <printf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xed8(%rip),%rdi
lea    0x117c(%rip),%rsi
mov    $0x7e5,%edx
call   1030 <printf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [683 x i8] c"options:\0A -d <database file> this option is mandatory\0A -o <output file> this option is mandatory\0A -on <GROUP or ID> turn log ON for given GROUP or ID\0A -off <GROUP or ID> turn log OFF for given GROUP or ID\0A -ON turn all logs ON\0A -OFF turn all logs OFF\0A note: you may pass several -on/-off/-ON/-OFF,\0A they will be processed in order\0A by default, all is off\0A -ip <host> connect to given IP address (default %s)\0A -p <port> connect to given port (default %d)\0A\00"
@.str.1 = [10 x i8] c"127.0.0.1\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([683 x i8], [683 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.1, i64 0, i64 0), i32 2021)
%2 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@.str = [683 x i8] c"options:\0A -d <database file> this option is mandatory\0A -o <output file> this option is mandatory\0A -on <GROUP or ID> turn log ON for given GROUP or ID\0A -off <GROUP or ID> turn log OFF for given GROUP or ID\0A -ON turn all logs ON\0A -OFF turn all logs OFF\0A note: you may pass several -on/-off/-ON/-OFF,\0A they will be processed in order\0A by default, all is off\0A -ip <host> connect to given IP address (default %s)\0A -p <port> connect to given port (default %d)\0A\00"
@.str.1 = [10 x i8] c"127.0.0.1\00"
define void @usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([683 x i8], [683 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.1, i64 0, i64 0), i32 2021)
%2 = tail call i32 @exit(i32 1)
unreachable
}