#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*/ puts(char *);
void usage() {
  puts("SpecialProxy("
       "0.5"
       "):\n"
       "    -l [listenip:]listenport              \033[35G default ip is "
       "0.0.0.0\n"
       "    -p proxy header                       \033[35G default is 'Host'\n"
       "    -L local proxy header                 \033[35G default is 'Local'\n"
       "    -d dns query address                  \033[35G default is "
       "114.114.114.114"
       "\n"
       "    -s ssl proxy string                   \033[35G default is "
       "'CONNECT'\n"
       "    -t timeout  minute                    \033[35G default is no "
       "timeout\n"
       "    -u uid                                \033[35G running uid\n"
       "    -e ssl data encode code(128-255)               \033[35G default is "
       "0\n"
       "    -i ignore host before string count    \033[35G default is 0\n"
       "    -a                                    \033[35G all http requests "
       "repeat spilce\n"
       "    -h display this infomaction\n"
       "    -w worker process\n");
  exit(0);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [762 x i8] c"SpecialProxy(0.5):\0A -l [listenip:]listenport \1B[35G default ip is 0.0.0.0\0A -p proxy header \1B[35G default is 'Host'\0A -L local proxy header \1B[35G default is 'Local'\0A -d dns query address \1B[35G default is 114.114.114.114\0A -s ssl proxy string \1B[35G default is 'CONNECT'\0A -t timeout minute \1B[35G default is no timeout\0A -u uid \1B[35G running uid\0A -e ssl data encode code(128-255) \1B[35G default is 0\0A -i ignore host before string count \1B[35G default is 0\0A -a \1B[35G all http requests repeat spilce\0A -h display this infomaction\0A -w worker process\0A\00"
define void @usage() {
%1 = call i32 @puts(i8* getelementptr inbounds ([762 x i8], [762 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str = [762 x i8] c"SpecialProxy(0.5):\0A -l [listenip:]listenport \1B[35G default ip is 0.0.0.0\0A -p proxy header \1B[35G default is 'Host'\0A -L local proxy header \1B[35G default is 'Local'\0A -d dns query address \1B[35G default is 114.114.114.114\0A -s ssl proxy string \1B[35G default is 'CONNECT'\0A -t timeout minute \1B[35G default is no timeout\0A -u uid \1B[35G running uid\0A -e ssl data encode code(128-255) \1B[35G default is 0\0A -i ignore host before string count \1B[35G default is 0\0A -a \1B[35G all http requests repeat spilce\0A -h display this infomaction\0A -w worker process\0A\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([762 x i8], [762 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 0)
unreachable
}