#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*/ printf(char *);
void help(void) {
  printf("braa 0.83 - (c) by Mateusz 'mteg' Golicz <mtg@elsat.net.pl> and "
         "contributors, 2003 - 2015\n");
  printf("usage: braa [options] [query1] [query2] ...\n");
  printf("  -h        Show this help.\n");
  printf("  -2        Claim to be a SNMP2C agent.\n");
  printf("  -v        Show short summary after doing all queries.\n");
  printf("  -x        Hexdump octet-strings\n");
  printf("  -t 
    Wait 
 seconds for responses.\n");
  printf("  -d 
    Wait 
 microseconds after sending each packet.\n");
  printf("  -w 
    Wait 
 microseconds after sending a group of query "
         "packets.\n");
  printf("  -p 
    Wait 
 miliseconds between subsequent passes.\n");
  printf("  -f <file> Load queries from file <file> (one by line).\n");
  printf(
      "  -a <time> Quit after <time> seconds, independent on what happens.\n");
  printf("  -r <rc>   Retry count (default: 3).\n");
  printf("\n");
  printf("Query format:\n");
  printf("  GET:   [community@]iprange[:port]:oid[/id]\n");
  printf("  WALK:  [community@]iprange[:port]:oid.*[/id]\n");
  printf("  SET:   [community@]iprange[:port]:oid=value[/id]\n");
  printf("\nExamples:\n");
  printf("         public@10.253.101.1:161:.1.3.6.*\n");
  printf("         10.253.101.1-10.253.101.255:.1.3.6.1.2.1.1.4.0=sme\n");
  printf("         10.253.101.1:.1.3.6.1.2.1.1.1.0/description\n");
  printf("\nIt is also possible to specify multiple queries at once:\n");
  printf(
      "         10.253.101.1-10.253.101.255:.1.3.6.1.2.1.1.4.0=sme,.1.3.6.*\n");
  printf("         (Will set .1.3.6.1.2.1.1.4.0 to 'me' and do a walk starting "
         "from .1.3.6)\n");
  printf("\n\nValues for SET queries have to be prepended with a character "
         "specifying the value type:\n");
  printf("  i      is INTEGER\n");
  printf("  a      is IPADDRESS\n");
  printf("  s      is OCTET STRING\n");
  printf("  o      is OBJECT IDENTIFIER\n");
  printf("If the type specifier is missing, the value type is auto-detected\n");
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0xf34(%rip),%rdi
call   1030 <printf@plt>
lea    0xf55(%rip),%rdi
call   1030 <printf@plt>
lea    0xf66(%rip),%rdi
call   1030 <printf@plt>
lea    0xf83(%rip),%rdi
call   1030 <printf@plt>
lea    0xfb0(%rip),%rdi
call   1030 <printf@plt>
lea    0xfc7(%rip),%rdi
call   1030 <printf@plt>
lea    0xfe8(%rip),%rdi
call   1030 <printf@plt>
lea    0x101a(%rip),%rdi
call   1030 <printf@plt>
lea    0x1059(%rip),%rdi
call   1030 <printf@plt>
lea    0x108a(%rip),%rdi
call   1030 <printf@plt>
lea    0x10b8(%rip),%rdi
call   1030 <printf@plt>
lea    0x10f1(%rip),%rdi
call   1030 <printf@plt>
lea    0x1329(%rip),%rdi
call   1030 <printf@plt>
lea    0x1100(%rip),%rdi
call   1030 <printf@plt>
lea    0x1103(%rip),%rdi
call   1030 <printf@plt>
lea    0x1125(%rip),%rdi
call   1030 <printf@plt>
lea    0x1149(%rip),%rdi
call   1030 <printf@plt>
lea    0x1171(%rip),%rdi
call   1030 <printf@plt>
lea    0x1171(%rip),%rdi
call   1030 <printf@plt>
lea    0x1190(%rip),%rdi
call   1030 <printf@plt>
lea    0x11c1(%rip),%rdi
call   1030 <printf@plt>
lea    0x11eb(%rip),%rdi
call   1030 <printf@plt>
lea    0x121a(%rip),%rdi
call   1030 <printf@plt>
lea    0x1254(%rip),%rdi
call   1030 <printf@plt>
lea    0x129b(%rip),%rdi
call   1030 <printf@plt>
lea    0x12ea(%rip),%rdi
call   1030 <printf@plt>
lea    0x12f3(%rip),%rdi
call   1030 <printf@plt>
lea    0x12fe(%rip),%rdi
call   1030 <printf@plt>
lea    0x130c(%rip),%rdi
call   1030 <printf@plt>
lea    0x131f(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
push   %rax
lea    0xed8(%rip),%rdi
call   1040 <puts@plt>
lea    0xf26(%rip),%rdi
call   1040 <puts@plt>
lea    0xf46(%rip),%rdi
call   1040 <puts@plt>
lea    0xf56(%rip),%rdi
call   1040 <puts@plt>
lea    0xf72(%rip),%rdi
call   1040 <puts@plt>
lea    0xf9e(%rip),%rdi
call   1040 <puts@plt>
lea    0xfb4(%rip),%rdi
call   1040 <puts@plt>
lea    0xfd4(%rip),%rdi
call   1040 <puts@plt>
lea    0x1005(%rip),%rdi
call   1040 <puts@plt>
lea    0x1043(%rip),%rdi
call   1040 <puts@plt>
lea    0x1073(%rip),%rdi
call   1040 <puts@plt>
lea    0x10a0(%rip),%rdi
call   1040 <puts@plt>
lea    0x10d8(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x10e8(%rip),%rdi
call   1040 <puts@plt>
lea    0x10ea(%rip),%rdi
call   1040 <puts@plt>
lea    0x110b(%rip),%rdi
call   1040 <puts@plt>
lea    0x112e(%rip),%rdi
call   1040 <puts@plt>
lea    0x1155(%rip),%rdi
call   1040 <puts@plt>
lea    0x1154(%rip),%rdi
call   1040 <puts@plt>
lea    0x1172(%rip),%rdi
call   1040 <puts@plt>
lea    0x11a2(%rip),%rdi
call   1040 <puts@plt>
lea    0x11cb(%rip),%rdi
call   1040 <puts@plt>
lea    0x11f9(%rip),%rdi
call   1040 <puts@plt>
lea    0x1232(%rip),%rdi
call   1040 <puts@plt>
lea    0x1278(%rip),%rdi
call   1040 <puts@plt>
lea    0x12c6(%rip),%rdi
call   1040 <puts@plt>
lea    0x12ce(%rip),%rdi
call   1040 <puts@plt>
lea    0x12d8(%rip),%rdi
call   1040 <puts@plt>
lea    0x12e5(%rip),%rdi
call   1040 <puts@plt>
lea    0x12f7(%rip),%rdi
pop    %rax
jmp    1040 <puts@plt>

LLVM IR (-O0):
@.str = [91 x i8] c"braa 0.83 - (c) by Mateusz 'mteg' Golicz <mtg@elsat.net.pl> and contributors, 2003 - 2015\0A\00"
@.str.1 = [45 x i8] c"usage: braa [options] [query1] [query2] ...\0A\00"
@.str.2 = [29 x i8] c" -h Show this help.\0A\00"
@.str.3 = [41 x i8] c" -2 Claim to be a SNMP2C agent.\0A\00"
@.str.4 = [57 x i8] c" -v Show short summary after doing all queries.\0A\00"
@.str.5 = [35 x i8] c" -x Hexdump octet-strings\0A\00"
@.str.6 = [45 x i8] c" -t 
 Wait 
 seconds for responses.\0A\00"
@.str.7 = [62 x i8] c" -d 
 Wait 
 microseconds after sending each packet.\0A\00"
@.str.8 = [75 x i8] c" -w 
 Wait 
 microseconds after sending a group of query packets.\0A\00"
@.str.9 = [61 x i8] c" -p 
 Wait 
 miliseconds between subsequent passes.\0A\00"
@.str.10 = [58 x i8] c" -f <file> Load queries from file <file> (one by line).\0A\00"
@.str.11 = [69 x i8] c" -a <time> Quit after <time> seconds, independent on what happens.\0A\00"
@.str.12 = [39 x i8] c" -r <rc> Retry count (default: 3).\0A\00"
@.str.13 = [2 x i8] c"\0A\00"
@.str.14 = [15 x i8] c"Query format:\0A\00"
@.str.15 = [46 x i8] c" GET: [community@]iprange[:port]:oid[/id]\0A\00"
@.str.16 = [48 x i8] c" WALK: [community@]iprange[:port]:oid.*[/id]\0A\00"
@.str.17 = [52 x i8] c" SET: [community@]iprange[:port]:oid=value[/id]\0A\00"
@.str.18 = [12 x i8] c"\0AExamples:\0A\00"
@.str.19 = [43 x i8] c" public@10.253.101.1:161:.1.3.6.*\0A\00"
@.str.20 = [61 x i8] c" 10.253.101.1-10.253.101.255:.1.3.6.1.2.1.1.4.0=sme\0A\00"
@.str.21 = [54 x i8] c" 10.253.101.1:.1.3.6.1.2.1.1.1.0/description\0A\00"
@.str.22 = [59 x i8] c"\0AIt is also possible to specify multiple queries at once:\0A\00"
@.str.23 = [70 x i8] c" 10.253.101.1-10.253.101.255:.1.3.6.1.2.1.1.4.0=sme,.1.3.6.*\0A\00"
@.str.24 = [83 x i8] c" (Will set .1.3.6.1.2.1.1.4.0 to 'me' and do a walk starting from .1.3.6)\0A\00"
@.str.25 = [91 x i8] c"\0A\0AValues for SET queries have to be prepended with a character specifying the value type:\0A\00"
@.str.26 = [21 x i8] c" i is INTEGER\0A\00"
@.str.27 = [23 x i8] c" a is IPADDRESS\0A\00"
@.str.28 = [26 x i8] c" s is OCTET STRING\0A\00"
@.str.29 = [31 x i8] c" o is OBJECT IDENTIFIER\0A\00"
@.str.30 = [67 x i8] c"If the type specifier is missing, the value type is auto-detected\0A\00"
define void @help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([91 x i8], [91 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.5, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.6, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.7, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([75 x i8], [75 x i8]* @.str.8, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.9, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.10, i64 0, i64 0))
%12 = call i32 @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.11, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.12, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0))
%15 = call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.15, i64 0, i64 0))
%17 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.16, i64 0, i64 0))
%18 = call i32 @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.17, i64 0, i64 0))
%19 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
%20 = call i32 @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.19, i64 0, i64 0))
%21 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.20, i64 0, i64 0))
%22 = call i32 @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.21, i64 0, i64 0))
%23 = call i32 @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.22, i64 0, i64 0))
%24 = call i32 @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.23, i64 0, i64 0))
%25 = call i32 @printf(i8* getelementptr inbounds ([83 x i8], [83 x i8]* @.str.24, i64 0, i64 0))
%26 = call i32 @printf(i8* getelementptr inbounds ([91 x i8], [91 x i8]* @.str.25, i64 0, i64 0))
%27 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.26, i64 0, i64 0))
%28 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.27, i64 0, i64 0))
%29 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.28, i64 0, i64 0))
%30 = call i32 @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.29, i64 0, i64 0))
%31 = call i32 @printf(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.30, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [90 x i8] c"braa 0.83 - (c) by Mateusz 'mteg' Golicz <mtg@elsat.net.pl> and contributors, 2003 - 2015\00"
@str.31 = [44 x i8] c"usage: braa [options] [query1] [query2] ...\00"
@str.32 = [28 x i8] c" -h Show this help.\00"
@str.33 = [40 x i8] c" -2 Claim to be a SNMP2C agent.\00"
@str.34 = [56 x i8] c" -v Show short summary after doing all queries.\00"
@str.35 = [34 x i8] c" -x Hexdump octet-strings\00"
@str.36 = [44 x i8] c" -t 
 Wait 
 seconds for responses.\00"
@str.37 = [61 x i8] c" -d 
 Wait 
 microseconds after sending each packet.\00"
@str.38 = [74 x i8] c" -w 
 Wait 
 microseconds after sending a group of query packets.\00"
@str.39 = [60 x i8] c" -p 
 Wait 
 miliseconds between subsequent passes.\00"
@str.40 = [57 x i8] c" -f <file> Load queries from file <file> (one by line).\00"
@str.41 = [68 x i8] c" -a <time> Quit after <time> seconds, independent on what happens.\00"
@str.42 = [38 x i8] c" -r <rc> Retry count (default: 3).\00"
@str.43 = [14 x i8] c"Query format:\00"
@str.44 = [45 x i8] c" GET: [community@]iprange[:port]:oid[/id]\00"
@str.45 = [47 x i8] c" WALK: [community@]iprange[:port]:oid.*[/id]\00"
@str.46 = [51 x i8] c" SET: [community@]iprange[:port]:oid=value[/id]\00"
@str.47 = [11 x i8] c"\0AExamples:\00"
@str.48 = [42 x i8] c" public@10.253.101.1:161:.1.3.6.*\00"
@str.49 = [60 x i8] c" 10.253.101.1-10.253.101.255:.1.3.6.1.2.1.1.4.0=sme\00"
@str.50 = [53 x i8] c" 10.253.101.1:.1.3.6.1.2.1.1.1.0/description\00"
@str.51 = [58 x i8] c"\0AIt is also possible to specify multiple queries at once:\00"
@str.52 = [69 x i8] c" 10.253.101.1-10.253.101.255:.1.3.6.1.2.1.1.4.0=sme,.1.3.6.*\00"
@str.53 = [82 x i8] c" (Will set .1.3.6.1.2.1.1.4.0 to 'me' and do a walk starting from .1.3.6)\00"
@str.54 = [90 x i8] c"\0A\0AValues for SET queries have to be prepended with a character specifying the value type:\00"
@str.55 = [20 x i8] c" i is INTEGER\00"
@str.56 = [22 x i8] c" a is IPADDRESS\00"
@str.57 = [25 x i8] c" s is OCTET STRING\00"
@str.58 = [30 x i8] c" o is OBJECT IDENTIFIER\00"
@str.59 = [66 x i8] c"If the type specifier is missing, the value type is auto-detected\00"
define void @help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([90 x i8], [90 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.31, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.32, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.33, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @str.34, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.35, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.36, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.37, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([74 x i8], [74 x i8]* @str.38, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.39, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.40, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([68 x i8], [68 x i8]* @str.41, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @str.42, i64 0, i64 0))
%14 = tail call i32 @putchar(i32 10)
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.43, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @str.44, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.45, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str.46, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.47, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.48, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.49, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.50, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @str.51, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.52, i64 0, i64 0))
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([82 x i8], [82 x i8]* @str.53, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([90 x i8], [90 x i8]* @str.54, i64 0, i64 0))
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.55, i64 0, i64 0))
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @str.56, i64 0, i64 0))
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.57, i64 0, i64 0))
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.58, i64 0, i64 0))
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @str.59, i64 0, i64 0))
ret void
}