#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 *, char *);
void usage() {
  printf(
      "%s\n",
      "\n"
      "CleanDNS"
      " "
      "0.4.5"
      "\n\nUsage:\n\ncleandns [-c CHNROUTE_FILE] [-l CHINA_IP] [-f "
      "FOREIGN_IP]\n         [-b BIND_ADDR] [-p BIND_PORT] [-s DNS] [-t "
      "TIMEOUT] [-m]\n         [--config=CONFIG_PATH] [--daemon] "
      "[--pid=PID_FILE_PATH]\n         [--log=LOG_FILE_PATH] "
      "[--log-level=LOG_LEVEL]\n         [--proxy=PROXY_URL] [-v] [-V] "
      "[-h]\n\nForward DNS requests with ECS (edns-client-subnet) "
      "support.\n\nOptions:\n\n  -l CHINA_IP           China ip address, e.g. "
      "114.114.114.114/24.\n                        Use comma to separate IPv4 "
      "and IPv6,\n                        e.g. "
      "114.114.114.114/24,2405:2d80::/32.\n  -f FOREIGN_IP         Foreign ip "
      "address, e.g. 8.8.8.8/24.\n                        Use comma to "
      "separate IPv4 and IPv6,\n                        e.g. "
      "8.8.8.8/24,2001:df2:8300::/48.\n  -c CHNROUTE_FILE      Path to china "
      "route file, default: "
      "chnroute.txt"
      ".\n                        Use comma to separate multi files, e.g. "
      "chnroute_ipv4.txt,chnroute_ipv6.txt.\n  -b BIND_ADDR          Address "
      "that listens, default: "
      "0.0.0.0"
      ".\n                        Use comma to separate multi addresses, e.g. "
      "127.0.0.1:5354,[::1]:5354.\n  -p BIND_PORT          Port that listen "
      "on, default: "
      "5354"
      ".\n                        The port specified in \"-b\" is priority .\n "
      " -s DNS                DNS server to use, default: "
      "8.8.8.8:53,114.114.114.114:53"
      ".\n                        tcp://IP[:PORT] means forward request to "
      "upstream by TCP protocol,\n                        [udp://]IP[:PORT] "
      "means forward request to upstream by UDP protocol.\n                    "
      "    Forward by UDP protocol default, and default port of upstream is "
      "53.\n  -m                    Use DNS compression pointer mutation, only "
      "available on foreign dns server.\n  -t TIMEOUT            Timeout, "
      "default: "
      "5"
      ".\n  --daemon              Daemonize.\n  --pid=PID_FILE_PATH   pid "
      "file, default: "
      "/var/run/cleandns.pid"
      ", only available on daemonize.\n  --log=LOG_FILE_PATH   Write log to a "
      "file.\n  --log-level=LOG_LEVEL Log level, range: [0, 7], default: "
      "5"
      ".\n  --config=CONFIG_PATH  Config file, find sample at "
      "https://github.com/GangZhuo/CleanDNS.\n  --lazy                Disable "
      "pollution detection.\n  --proxy=PROXY_URL     Proxy server, e.g. "
      "socks5://127.0.0.1:1080, only available on foreign dns server.\n        "
      "                Now, only socks5 with no authentication is supported.\n "
      " -v                    Verbose logging.\n  -h                    Show "
      "this help message and exit.\n  -V                    Print version and "
      "then exit.\n\nOnline help: <https://github.com/GangZhuo/CleanDNS>\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
lea    0xee2(%rip),%rsi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
lea    0xee9(%rip),%rdi
lea    0xee6(%rip),%rsi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [4 x i8] c"%s\0A\00"
@.str.1 = [2491 x i8] c"\0ACleanDNS 0.4.5\0A\0AUsage:\0A\0Acleandns [-c CHNROUTE_FILE] [-l CHINA_IP] [-f FOREIGN_IP]\0A [-b BIND_ADDR] [-p BIND_PORT] [-s DNS] [-t TIMEOUT] [-m]\0A [--config=CONFIG_PATH] [--daemon] [--pid=PID_FILE_PATH]\0A [--log=LOG_FILE_PATH] [--log-level=LOG_LEVEL]\0A [--proxy=PROXY_URL] [-v] [-V] [-h]\0A\0AForward DNS requests with ECS (edns-client-subnet) support.\0A\0AOptions:\0A\0A -l CHINA_IP China ip address, e.g. 114.114.114.114/24.\0A Use comma to separate IPv4 and IPv6,\0A e.g. 114.114.114.114/24,2405:2d80::/32.\0A -f FOREIGN_IP Foreign ip address, e.g. 8.8.8.8/24.\0A Use comma to separate IPv4 and IPv6,\0A e.g. 8.8.8.8/24,2001:df2:8300::/48.\0A -c CHNROUTE_FILE Path to china route file, default: chnroute.txt.\0A Use comma to separate multi files, e.g. chnroute_ipv4.txt,chnroute_ipv6.txt.\0A -b BIND_ADDR Address that listens, default: 0.0.0.0.\0A Use comma to separate multi addresses, e.g. 127.0.0.1:5354,[::1]:5354.\0A -p BIND_PORT Port that listen on, default: 5354.\0A The port specified in \22-b\22 is priority .\0A -s DNS DNS server to use, default: 8.8.8.8:53,114.114.114.114:53.\0A tcp://IP[:PORT] means forward request to upstream by TCP protocol,\0A [udp://]IP[:PORT] means forward request to upstream by UDP protocol.\0A Forward by UDP protocol default, and default port of upstream is 53.\0A -m Use DNS compression pointer mutation, only available on foreign dns server.\0A -t TIMEOUT Timeout, default: 5.\0A --daemon Daemonize.\0A --pid=PID_FILE_PATH pid file, default: /var/run/cleandns.pid, only available on daemonize.\0A --log=LOG_FILE_PATH Write log to a file.\0A --log-level=LOG_LEVEL Log level, range: [0, 7], default: 5.\0A --config=CONFIG_PATH Config file, find sample at https://github.com/GangZhuo/CleanDNS.\0A --lazy Disable pollution detection.\0A --proxy=PROXY_URL Proxy server, e.g. socks5://127.0.0.1:1080, only available on foreign dns server.\0A Now, only socks5 with no authentication is supported.\0A -v Verbose logging.\0A -h Show this help message and exit.\0A -V Print version and then exit.\0A\0AOnline help: <https://github.com/GangZhuo/CleanDNS>\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2491 x i8], [2491 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [4 x i8] c"%s\0A\00"
@.str.1 = [2491 x i8] c"\0ACleanDNS 0.4.5\0A\0AUsage:\0A\0Acleandns [-c CHNROUTE_FILE] [-l CHINA_IP] [-f FOREIGN_IP]\0A [-b BIND_ADDR] [-p BIND_PORT] [-s DNS] [-t TIMEOUT] [-m]\0A [--config=CONFIG_PATH] [--daemon] [--pid=PID_FILE_PATH]\0A [--log=LOG_FILE_PATH] [--log-level=LOG_LEVEL]\0A [--proxy=PROXY_URL] [-v] [-V] [-h]\0A\0AForward DNS requests with ECS (edns-client-subnet) support.\0A\0AOptions:\0A\0A -l CHINA_IP China ip address, e.g. 114.114.114.114/24.\0A Use comma to separate IPv4 and IPv6,\0A e.g. 114.114.114.114/24,2405:2d80::/32.\0A -f FOREIGN_IP Foreign ip address, e.g. 8.8.8.8/24.\0A Use comma to separate IPv4 and IPv6,\0A e.g. 8.8.8.8/24,2001:df2:8300::/48.\0A -c CHNROUTE_FILE Path to china route file, default: chnroute.txt.\0A Use comma to separate multi files, e.g. chnroute_ipv4.txt,chnroute_ipv6.txt.\0A -b BIND_ADDR Address that listens, default: 0.0.0.0.\0A Use comma to separate multi addresses, e.g. 127.0.0.1:5354,[::1]:5354.\0A -p BIND_PORT Port that listen on, default: 5354.\0A The port specified in \22-b\22 is priority .\0A -s DNS DNS server to use, default: 8.8.8.8:53,114.114.114.114:53.\0A tcp://IP[:PORT] means forward request to upstream by TCP protocol,\0A [udp://]IP[:PORT] means forward request to upstream by UDP protocol.\0A Forward by UDP protocol default, and default port of upstream is 53.\0A -m Use DNS compression pointer mutation, only available on foreign dns server.\0A -t TIMEOUT Timeout, default: 5.\0A --daemon Daemonize.\0A --pid=PID_FILE_PATH pid file, default: /var/run/cleandns.pid, only available on daemonize.\0A --log=LOG_FILE_PATH Write log to a file.\0A --log-level=LOG_LEVEL Log level, range: [0, 7], default: 5.\0A --config=CONFIG_PATH Config file, find sample at https://github.com/GangZhuo/CleanDNS.\0A --lazy Disable pollution detection.\0A --proxy=PROXY_URL Proxy server, e.g. socks5://127.0.0.1:1080, only available on foreign dns server.\0A Now, only socks5 with no authentication is supported.\0A -v Verbose logging.\0A -h Show this help message and exit.\0A -V Print version and then exit.\0A\0AOnline help: <https://github.com/GangZhuo/CleanDNS>\0A\00"
define void @usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2491 x i8], [2491 x i8]* @.str.1, i64 0, i64 0))
ret void
}