#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 /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, char *, char *, char *, char *);
void printUsage(int args, char *bin) {
  printf("Usage\n======\n\n sudo %s [OPTIONS] targets\n\n"
         "OPTIONS\n========\n\n"
         "-t\tNumber of spotter threads(i.e. 3).\n"
         "-p\tPort scan range (i.e. 80 or 20-80).\n"
         "-d\tDelay between packages sent in us(i.e. 100).\n"
         "-s\tNo service discoverage (less bandwith load).\n"
         "-m\tModule to run. For instance, Service.\n"
         "-h\tShow this help.\n\n"
         "\tIp address seed (i.e. 192.168.01).\n"
         "Examples\n========\n\n %s -t 5 -p 80 -s 74.125.0.0-74.125.255.255 "
         "#SYN scan Google Servers\n\n"
         " %s -t 3 -p 20-80 188.160.0.0-200.0.0.0 -d 1 -m Service #Service "
         "Discoverage Plugin\n\n"
         " %s -t 2 1.1.1.1-255.1.1.1 -m Backdoor32764 -p 32764 #32764/TCP "
         "Backdoor Plugin\n\n",
         bin, bin, bin, bin);
  exit(0);
}


x86 assembly (clang, -O0):
<printUsage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x10(%rbp),%rcx
mov    -0x10(%rbp),%r8
lea    0xeba(%rip),%rdi
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<printUsage>:
push   %rax
lea    0xed8(%rip),%rdi
mov    %rsi,%rdx
mov    %rsi,%rcx
mov    %rsi,%r8
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [586 x i8] c"Usage\0A======\0A\0A sudo %s [OPTIONS] targets\0A\0AOPTIONS\0A========\0A\0A-t\09Number of spotter threads(i.e. 3).\0A-p\09Port scan range (i.e. 80 or 20-80).\0A-d\09Delay between packages sent in us(i.e. 100).\0A-s\09No service discoverage (less bandwith load).\0A-m\09Module to run. For instance, Service.\0A-h\09Show this help.\0A\0A\09Ip address seed (i.e. 192.168.01).\0AExamples\0A========\0A\0A %s -t 5 -p 80 -s 74.125.0.0-74.125.255.255 #SYN scan Google Servers\0A\0A %s -t 3 -p 20-80 188.160.0.0-200.0.0.0 -d 1 -m Service #Service Discoverage Plugin\0A\0A %s -t 2 1.1.1.1-255.1.1.1 -m Backdoor32764 -p 32764/TCP Backdoor Plugin\0A\0A\00"
define void @printUsage(i32 %0, i8* %1) {
%3 = alloca i32
%4 = alloca i8*
store i32 %0, i32* %3
store i8* %1, i8** %4
%5 = load i8*, i8** %4
%6 = load i8*, i8** %4
%7 = load i8*, i8** %4
%8 = load i8*, i8** %4
%9 = call i32 @printf(i8* getelementptr inbounds ([586 x i8], [586 x i8]* @.str, i64 0, i64 0), i8* %5, i8* %6, i8* %7, i8* %8)
%10 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str = [586 x i8] c"Usage\0A======\0A\0A sudo %s [OPTIONS] targets\0A\0AOPTIONS\0A========\0A\0A-t\09Number of spotter threads(i.e. 3).\0A-p\09Port scan range (i.e. 80 or 20-80).\0A-d\09Delay between packages sent in us(i.e. 100).\0A-s\09No service discoverage (less bandwith load).\0A-m\09Module to run. For instance, Service.\0A-h\09Show this help.\0A\0A\09Ip address seed (i.e. 192.168.01).\0AExamples\0A========\0A\0A %s -t 5 -p 80 -s 74.125.0.0-74.125.255.255 #SYN scan Google Servers\0A\0A %s -t 3 -p 20-80 188.160.0.0-200.0.0.0 -d 1 -m Service #Service Discoverage Plugin\0A\0A %s -t 2 1.1.1.1-255.1.1.1 -m Backdoor32764 -p 32764/TCP Backdoor Plugin\0A\0A\00"
define void @printUsage(i32 %0, i8* %1) {
%3 = tail call i32 @printf(i8* getelementptr inbounds ([586 x i8], [586 x i8]* @.str, i64 0, i64 0), i8* %1, i8* %1, i8* %1, i8* %1)
%4 = tail call i32 @exit(i32 0)
unreachable
}