#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*/ list_debugs();
int /*<<< orphan*/ printf(char *, ...);
void debug_usage(void) {
  printf("Usage: %s -D Debugs [OPTIONS] [COMMAND] [FILES]\n", "subnet-tools");
  printf("Debugs looks like : symbol1:level,symbol2:level;...\n");
  printf("symbol is the  symbol to  debug, increasing level gives more info, "
         "ie :\n");
  printf("level 1 : get more infos on errors (badly formatted file, bad IP "
         "etc...)\n");
  printf("level 4+ : print  internal program debug info ; wont tell you "
         "anything without source code\n");
  printf("level 9 : if implemented, print info for each loop of the program\n");
  printf("Example 1 :\n");
  printf("'%s -D memory:1,parseopts:2,trucmuche:3 simplify1 MYFILE'\n",
         "subnet-tools");
  printf("Example 2 :\n");
  printf("'%s -D loadcsv:3 sort MYFILE' will tell you every invalid line in "
         "your file.\n\n",
         "subnet-tools");
  printf("Available symbols :\n");
  list_debugs();
}


x86 assembly (clang, -O0):
<debug_usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
lea    0xeff(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xefe(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf25(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf60(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf9c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xfea(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x101f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x101e(%rip),%rdi
lea    0xe96(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1044(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1043(%rip),%rdi
lea    0xe73(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x107d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    $0x0,%al
call   1040 <list_debugs@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<debug_usage>:
push   %rbx
lea    0xec8(%rip),%rdi
lea    0xef2(%rip),%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf78(%rip),%rdi
call   1030 <puts@plt>
lea    0xfa0(%rip),%rdi
call   1030 <puts@plt>
lea    0xfdc(%rip),%rdi
call   1030 <puts@plt>
lea    0x1019(%rip),%rdi
call   1030 <puts@plt>
lea    0x1068(%rip),%rdi
call   1030 <puts@plt>
lea    0x109e(%rip),%rdi
call   1030 <puts@plt>
lea    0xea6(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x108d(%rip),%rdi
call   1030 <puts@plt>
lea    0xec4(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x107c(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
pop    %rbx
jmp    1050 <list_debugs@plt>

LLVM IR (-O0):
@.str = [49 x i8] c"Usage: %s -D Debugs [OPTIONS] [COMMAND] [FILES]\0A\00"
@.str.1 = [13 x i8] c"subnet-tools\00"
@.str.2 = [53 x i8] c"Debugs looks like : symbol1:level,symbol2:level;...\0A\00"
@.str.3 = [73 x i8] c"symbol is the symbol to debug, increasing level gives more info, ie :\0A\00"
@.str.4 = [74 x i8] c"level 1 : get more infos on errors (badly formatted file, bad IP etc...)\0A\00"
@.str.5 = [92 x i8] c"level 4+ : print internal program debug info ; wont tell you anything without source code\0A\00"
@.str.6 = [67 x i8] c"level 9 : if implemented, print info for each loop of the program\0A\00"
@.str.7 = [13 x i8] c"Example 1 :\0A\00"
@.str.8 = [59 x i8] c"'%s -D memory:1,parseopts:2,trucmuche:3 simplify1 MYFILE'\0A\00"
@.str.9 = [13 x i8] c"Example 2 :\0A\00"
@.str.10 = [79 x i8] c"'%s -D loadcsv:3 sort MYFILE' will tell you every invalid line in your file.\0A\0A\00"
@.str.11 = [21 x i8] c"Available symbols :\0A\00"
define void @debug_usage() {
%1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0))
%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.2, i64 0, i64 0))
%3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.3, i64 0, i64 0))
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.4, i64 0, i64 0))
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.5, i64 0, i64 0))
%6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.6, i64 0, i64 0))
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0))
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0))
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0))
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.11, i64 0, i64 0))
%12 = call i32 (...) @list_debugs()
ret void
}

LLVM IR (-O2):
@.str = [49 x i8] c"Usage: %s -D Debugs [OPTIONS] [COMMAND] [FILES]\0A\00"
@.str.1 = [13 x i8] c"subnet-tools\00"
@.str.8 = [59 x i8] c"'%s -D memory:1,parseopts:2,trucmuche:3 simplify1 MYFILE'\0A\00"
@.str.10 = [79 x i8] c"'%s -D loadcsv:3 sort MYFILE' will tell you every invalid line in your file.\0A\0A\00"
@str = [52 x i8] c"Debugs looks like : symbol1:level,symbol2:level;...\00"
@str.12 = [72 x i8] c"symbol is the symbol to debug, increasing level gives more info, ie :\00"
@str.13 = [73 x i8] c"level 1 : get more infos on errors (badly formatted file, bad IP etc...)\00"
@str.14 = [91 x i8] c"level 4+ : print internal program debug info ; wont tell you anything without source code\00"
@str.15 = [66 x i8] c"level 9 : if implemented, print info for each loop of the program\00"
@str.16 = [12 x i8] c"Example 1 :\00"
@str.17 = [12 x i8] c"Example 2 :\00"
@str.18 = [20 x i8] c"Available symbols :\00"
define void @debug_usage() {
%1 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.12, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.13, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([91 x i8], [91 x i8]* @str.14, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @str.15, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.16, i64 0, i64 0))
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.17, i64 0, i64 0))
%10 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.18, i64 0, i64 0))
%12 = tail call i32 (...) @list_debugs()
ret void
}