#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 usage(void) {
  printf("[A]bused is [B]anks [U]ber-[S]exy-[E]dition [D]aemon\"\n\n");
  printf("USAGE: abused [OPTIONS]\n");
  printf("OPTIONS:\n");
  printf("\t-i                Interface to use, default is all\n");
  printf("\t-I                Interface IP address to use, default is a "
         "bind-all address\n");
  printf("\t-t                TTL value (routers to hop), default is 1\n");
  printf("\t-f <string>       Filter for capturing, 'grep'-like effect. Also "
         "works\n");
  printf("\t                  for -u and -U where you can specify a list of\n");
  printf("\t                  comma separated filters\n");
  printf("\t-M                Don't ignore UPnP M-SEARCH messages\n");
  printf("\t-S                Run as a server,\n");
  printf("\t                  listens on port 43210 and returns a\n");
  printf("\t                  UPnP scan result (formatted list) for AXIS "
         "devices\n");
  printf("\t                  upon receiving the string 'abused'\n");
  printf("\t-d                Run as a UNIX daemon,\n");
  printf("\t                  only works in combination with -S or -a\n");
  printf("\t-u                Listen for local UPnP (SSDP) notifications\n");
  printf("\t-U                Perform an active search for UPnP devices\n");
  printf(
      "\t-a <ip>:<port>    Forward the events to the specified ip and port,\n");
  printf("\t                  also works in combination with -u.\n");
  printf("\t-F                Do not try to parse the \"Location\" header and "
         "fetch device info\n");
  printf("\t-x                Convert results to XML\n");
  printf("\t-m                Monochrome mode (disable all colors)\n");
  printf("\t-q                Be quiet!\n");
  printf("\t-T                The time to wait for a devices answer a search "
         "query\n");
  printf("\t-L                Enable multicast loopback traffic\n");
  printf("\t-R                Print full SSDP messagesd (Rich mode)\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0xf11(%rip),%rdi
call   1030 <printf@plt>
lea    0xf1e(%rip),%rdi
call   1030 <printf@plt>
lea    0xf1c(%rip),%rdi
call   1030 <printf@plt>
lea    0xf45(%rip),%rdi
call   1030 <printf@plt>
lea    0xf88(%rip),%rdi
call   1030 <printf@plt>
lea    0xfb9(%rip),%rdi
call   1030 <printf@plt>
lea    0xff6(%rip),%rdi
call   1030 <printf@plt>
lea    0x102c(%rip),%rdi
call   1030 <printf@plt>
lea    0x104c(%rip),%rdi
call   1030 <printf@plt>
lea    0x1078(%rip),%rdi
call   1030 <printf@plt>
lea    0x1091(%rip),%rdi
call   1030 <printf@plt>
lea    0x10bd(%rip),%rdi
call   1030 <printf@plt>
lea    0x10f8(%rip),%rdi
call   1030 <printf@plt>
lea    0x1123(%rip),%rdi
call   1030 <printf@plt>
lea    0x1141(%rip),%rdi
call   1030 <printf@plt>
lea    0x1171(%rip),%rdi
call   1030 <printf@plt>
lea    0x11a4(%rip),%rdi
call   1030 <printf@plt>
lea    0x11d6(%rip),%rdi
call   1030 <printf@plt>
lea    0x120f(%rip),%rdi
call   1030 <printf@plt>
lea    0x123a(%rip),%rdi
call   1030 <printf@plt>
lea    0x1282(%rip),%rdi
call   1030 <printf@plt>
lea    0x12a1(%rip),%rdi
call   1030 <printf@plt>
lea    0x12ce(%rip),%rdi
call   1030 <printf@plt>
lea    0x12e0(%rip),%rdi
call   1030 <printf@plt>
lea    0x131d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1347(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0xf13(%rip),%rdi
call   1030 <puts@plt>
lea    0xf1f(%rip),%rdi
call   1030 <puts@plt>
lea    0xf1c(%rip),%rdi
call   1030 <puts@plt>
lea    0xf44(%rip),%rdi
call   1030 <puts@plt>
lea    0xf86(%rip),%rdi
call   1030 <puts@plt>
lea    0xfb6(%rip),%rdi
call   1030 <puts@plt>
lea    0xff2(%rip),%rdi
call   1030 <puts@plt>
lea    0x1027(%rip),%rdi
call   1030 <puts@plt>
lea    0x1046(%rip),%rdi
call   1030 <puts@plt>
lea    0x1071(%rip),%rdi
call   1030 <puts@plt>
lea    0x1089(%rip),%rdi
call   1030 <puts@plt>
lea    0x10b4(%rip),%rdi
call   1030 <puts@plt>
lea    0x10ee(%rip),%rdi
call   1030 <puts@plt>
lea    0x1118(%rip),%rdi
call   1030 <puts@plt>
lea    0x1135(%rip),%rdi
call   1030 <puts@plt>
lea    0x1164(%rip),%rdi
call   1030 <puts@plt>
lea    0x1196(%rip),%rdi
call   1030 <puts@plt>
lea    0x11c7(%rip),%rdi
call   1030 <puts@plt>
lea    0x11ff(%rip),%rdi
call   1030 <puts@plt>
lea    0x1229(%rip),%rdi
call   1030 <puts@plt>
lea    0x1270(%rip),%rdi
call   1030 <puts@plt>
lea    0x128e(%rip),%rdi
call   1030 <puts@plt>
lea    0x12ba(%rip),%rdi
call   1030 <puts@plt>
lea    0x12cb(%rip),%rdi
call   1030 <puts@plt>
lea    0x1307(%rip),%rdi
call   1030 <puts@plt>
lea    0x1330(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [56 x i8] c"[A]bused is [B]anks [U]ber-[S]exy-[E]dition [D]aemon\22\0A\0A\00"
@.str.1 = [25 x i8] c"USAGE: abused [OPTIONS]\0A\00"
@.str.2 = [10 x i8] c"OPTIONS:\0A\00"
@.str.3 = [53 x i8] c"\09-i Interface to use, default is all\0A\00"
@.str.4 = [79 x i8] c"\09-I Interface IP address to use, default is a bind-all address\0A\00"
@.str.5 = [61 x i8] c"\09-t TTL value (routers to hop), default is 1\0A\00"
@.str.6 = [73 x i8] c"\09-f <string> Filter for capturing, 'grep'-like effect. Also works\0A\00"
@.str.7 = [66 x i8] c"\09 for -u and -U where you can specify a list of\0A\00"
@.str.8 = [44 x i8] c"\09 comma separated filters\0A\00"
@.str.9 = [56 x i8] c"\09-M Don't ignore UPnP M-SEARCH messages\0A\00"
@.str.10 = [37 x i8] c"\09-S Run as a server,\0A\00"
@.str.11 = [56 x i8] c"\09 listens on port 43210 and returns a\0A\00"
@.str.12 = [71 x i8] c"\09 UPnP scan result (formatted list) for AXIS devices\0A\00"
@.str.13 = [55 x i8] c"\09 upon receiving the string 'abused'\0A\00"
@.str.14 = [42 x i8] c"\09-d Run as a UNIX daemon,\0A\00"
@.str.15 = [60 x i8] c"\09 only works in combination with -S or -a\0A\00"
@.str.16 = [63 x i8] c"\09-u Listen for local UPnP (SSDP) notifications\0A\00"
@.str.17 = [62 x i8] c"\09-U Perform an active search for UPnP devices\0A\00"
@.str.18 = [69 x i8] c"\09-a <ip>:<port> Forward the events to the specified ip and port,\0A\00"
@.str.19 = [55 x i8] c"\09 also works in combination with -u.\0A\00"
@.str.20 = [84 x i8] c"\09-F Do not try to parse the \22Location\22 header and fetch device info\0A\00"
@.str.21 = [43 x i8] c"\09-x Convert results to XML\0A\00"
@.str.22 = [57 x i8] c"\09-m Monochrome mode (disable all colors)\0A\00"
@.str.23 = [30 x i8] c"\09-q Be quiet!\0A\00"
@.str.24 = [73 x i8] c"\09-T The time to wait for a devices answer a search query\0A\00"
@.str.25 = [54 x i8] c"\09-L Enable multicast loopback traffic\0A\00"
@.str.26 = [58 x i8] c"\09-R Print full SSDP messagesd (Rich mode)\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.5, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.6, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.7, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.8, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.9, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0))
%12 = call i32 @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.11, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.12, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.13, i64 0, i64 0))
%15 = call i32 @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.14, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.15, i64 0, i64 0))
%17 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.16, i64 0, i64 0))
%18 = call i32 @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i64 0, i64 0))
%19 = call i32 @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.18, i64 0, i64 0))
%20 = call i32 @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.19, i64 0, i64 0))
%21 = call i32 @printf(i8* getelementptr inbounds ([84 x i8], [84 x i8]* @.str.20, i64 0, i64 0))
%22 = call i32 @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.21, i64 0, i64 0))
%23 = call i32 @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.22, i64 0, i64 0))
%24 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.23, i64 0, i64 0))
%25 = call i32 @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.24, i64 0, i64 0))
%26 = call i32 @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.25, i64 0, i64 0))
%27 = call i32 @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.26, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [55 x i8] c"[A]bused is [B]anks [U]ber-[S]exy-[E]dition [D]aemon\22\0A\00"
@str.27 = [24 x i8] c"USAGE: abused [OPTIONS]\00"
@str.28 = [9 x i8] c"OPTIONS:\00"
@str.29 = [52 x i8] c"\09-i Interface to use, default is all\00"
@str.30 = [78 x i8] c"\09-I Interface IP address to use, default is a bind-all address\00"
@str.31 = [60 x i8] c"\09-t TTL value (routers to hop), default is 1\00"
@str.32 = [72 x i8] c"\09-f <string> Filter for capturing, 'grep'-like effect. Also works\00"
@str.33 = [65 x i8] c"\09 for -u and -U where you can specify a list of\00"
@str.34 = [43 x i8] c"\09 comma separated filters\00"
@str.35 = [55 x i8] c"\09-M Don't ignore UPnP M-SEARCH messages\00"
@str.36 = [36 x i8] c"\09-S Run as a server,\00"
@str.37 = [55 x i8] c"\09 listens on port 43210 and returns a\00"
@str.38 = [70 x i8] c"\09 UPnP scan result (formatted list) for AXIS devices\00"
@str.39 = [54 x i8] c"\09 upon receiving the string 'abused'\00"
@str.40 = [41 x i8] c"\09-d Run as a UNIX daemon,\00"
@str.41 = [59 x i8] c"\09 only works in combination with -S or -a\00"
@str.42 = [62 x i8] c"\09-u Listen for local UPnP (SSDP) notifications\00"
@str.43 = [61 x i8] c"\09-U Perform an active search for UPnP devices\00"
@str.44 = [68 x i8] c"\09-a <ip>:<port> Forward the events to the specified ip and port,\00"
@str.45 = [54 x i8] c"\09 also works in combination with -u.\00"
@str.46 = [83 x i8] c"\09-F Do not try to parse the \22Location\22 header and fetch device info\00"
@str.47 = [42 x i8] c"\09-x Convert results to XML\00"
@str.48 = [56 x i8] c"\09-m Monochrome mode (disable all colors)\00"
@str.49 = [29 x i8] c"\09-q Be quiet!\00"
@str.50 = [72 x i8] c"\09-T The time to wait for a devices answer a search query\00"
@str.51 = [53 x i8] c"\09-L Enable multicast loopback traffic\00"
@str.52 = [57 x i8] c"\09-R Print full SSDP messagesd (Rich mode)\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.27, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @str.28, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @str.29, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.30, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.31, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.32, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([65 x i8], [65 x i8]* @str.33, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.34, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @str.35, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @str.36, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @str.37, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.38, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @str.39, i64 0, i64 0))
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @str.40, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.41, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @str.42, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.43, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([68 x i8], [68 x i8]* @str.44, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @str.45, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([83 x i8], [83 x i8]* @str.46, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.47, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @str.48, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @str.49, i64 0, i64 0))
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.50, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.51, i64 0, i64 0))
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.52, i64 0, i64 0))
ret void
}