#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
int /*<<< orphan*/ version(int /*<<< orphan*/);
void help() {
  version(stderr);
  fprintf(
      stderr,
      "\n"
      " -a                            - directs adb to listen on all "
      "interfaces for a connection\n"
      " -d                            - directs command to the only connected "
      "USB device\n"
      "                                 returns an error if more than one USB "
      "device is present.\n"
      " -e                            - directs command to the only running "
      "emulator.\n"
      "                                 returns an error if more than one "
      "emulator is running.\n"
      " -s <specific device>          - directs command to the device or "
      "emulator with the given\n"
      "                                 serial number or qualifier. Overrides "
      "ANDROID_SERIAL\n"
      "                                 environment variable.\n"
      " -p <product name or path>     - simple product name like 'sooner', or\n"
      "                                 a relative/absolute path to a product\n"
      "                                 out directory like "
      "'out/target/product/sooner'.\n"
      "                                 If -p is not specified, the "
      "ANDROID_PRODUCT_OUT\n"
      "                                 environment variable is used, which "
      "must\n"
      "                                 be an absolute path.\n"
      " -H                            - Name of adb server host (default: "
      "localhost)\n"
      " -P                            - Port of adb server (default: 5037)\n"
      " devices [-l]                  - list all connected devices\n"
      "                                 ('-l' will also list device "
      "qualifiers)\n"
      " connect <host>[:<port>]       - connect to a device via TCP/IP\n"
      "                                 Port 5555 is used by default if no "
      "port number is specified.\n"
      " disconnect [<host>[:<port>]]  - disconnect from a TCP/IP device.\n"
      "                                 Port 5555 is used by default if no "
      "port number is specified.\n"
      "                                 Using this command with no additional "
      "arguments\n"
      "                                 will disconnect from all connected "
      "TCP/IP devices.\n"
      "\n"
      "device commands:\n"
      "  adb push <local> <remote>    - copy file/dir to device\n"
      "  adb pull <remote> [<local>]  - copy file/dir from device\n"
      "  adb sync [ <directory> ]     - copy host->device only if changed\n"
      "                                 (-l means list but don't copy)\n"
      "                                 (see 'adb help all')\n"
      "  adb shell                    - run remote shell interactively\n"
      "  adb shell <command>          - run remote shell command\n"
      "  adb emu <command>            - run emulator console command\n"
      "  adb logcat [ <filter-spec> ] - View device log\n"
      "  adb forward --list           - list all forward socket connections.\n"
      "                                 the format is a list of lines with the "
      "following format:\n"
      "                                    <serial> \" \" <local> \" \" "
      "<remote> \"\\n\"\n"
      "  adb forward <local> <remote> - forward socket connections\n"
      "                                 forward specs are one of: \n"
      "                                   tcp:<port>\n"
      "                                   localabstract:<unix domain socket "
      "name>\n"
      "                                   localreserved:<unix domain socket "
      "name>\n"
      "                                   localfilesystem:<unix domain socket "
      "name>\n"
      "                                   dev:<character device name>\n"
      "                                   jdwp:<process pid> (remote only)\n"
      "  adb forward --no-rebind <local> <remote>\n"
      "                               - same as 'adb forward <local> <remote>' "
      "but fails\n"
      "                                 if <local> is already forwarded\n"
      "  adb forward --remove <local> - remove a specific forward socket "
      "connection\n"
      "  adb forward --remove-all     - remove all forward socket connections\n"
      "  adb jdwp                     - list PIDs of processes hosting a JDWP "
      "transport\n"
      "  adb install [-l] [-r] [-s] [--algo <algorithm name> --key "
      "<hex-encoded key> --iv <hex-encoded iv>] <file>\n"
      "                               - push this package file to the device "
      "and install it\n"
      "                                 ('-l' means forward-lock the app)\n"
      "                                 ('-r' means reinstall the app, keeping "
      "its data)\n"
      "                                 ('-s' means install on SD card instead "
      "of internal storage)\n"
      "                                 ('--algo', '--key', and '--iv' mean "
      "the file is encrypted already)\n"
      "  adb uninstall [-k] <package> - remove this app package from the "
      "device\n"
      "                                 ('-k' means keep the data and cache "
      "directories)\n"
      "  adb bugreport                - return all information from the "
      "device\n"
      "                                 that should be included in a bug "
      "report.\n"
      "\n"
      "  adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] "
      "[-system|-nosystem] [<packages...>]\n"
      "                               - write an archive of the device's data "
      "to <file>.\n"
      "                                 If no -f option is supplied then the "
      "data is written\n"
      "                                 to \"backup.ab\" in the current "
      "directory.\n"
      "                                 (-apk|-noapk enable/disable backup of "
      "the .apks themselves\n"
      "                                    in the archive; the default is "
      "noapk.)\n"
      "                                 (-shared|-noshared enable/disable "
      "backup of the device's\n"
      "                                    shared storage / SD card contents; "
      "the default is noshared.)\n"
      "                                 (-all means to back up all installed "
      "applications)\n"
      "                                 (-system|-nosystem toggles whether "
      "-all automatically includes\n"
      "                                    system applications; the default is "
      "to include system apps)\n"
      "                                 (<packages...> is the list of "
      "applications to be backed up.  If\n"
      "                                    the -all or -shared flags are "
      "passed, then the package\n"
      "                                    list is optional.  Applications "
      "explicitly given on the\n"
      "                                    command line will be included even "
      "if -nosystem would\n"
      "                                    ordinarily cause them to be "
      "omitted.)\n"
      "\n"
      "  adb restore <file>           - restore device contents from the "
      "<file> backup archive\n"
      "\n"
      "  adb help                     - show this help message\n"
      "  adb version                  - show version num\n"
      "\n"
      "scripting:\n"
      "  adb wait-for-device          - block until device is online\n"
      "  adb start-server             - ensure that there is a server running\n"
      "  adb kill-server              - kill the server if it is running\n"
      "  adb get-state                - prints: offline | bootloader | device\n"
      "  adb get-serialno             - prints: <serial-number>\n"
      "  adb get-devpath              - prints: <device-path>\n"
      "  adb status-window            - continuously print device status for a "
      "specified device\n"
      "  adb remount                  - remounts the /system partition on the "
      "device read-write\n"
      "  adb reboot [bootloader|recovery] - reboots the device, optionally "
      "into the bootloader or recovery program\n"
      "  adb reboot-bootloader        - reboots the device into the "
      "bootloader\n"
      "  adb root                     - restarts the adbd daemon with root "
      "permissions\n"
      "  adb usb                      - restarts the adbd daemon listening on "
      "USB\n"
      "  adb tcpip <port>             - restarts the adbd daemon listening on "
      "TCP on the specified port"
      "\n"
      "networking:\n"
      "  adb ppp <tty> [parameters]   - Run PPP over USB.\n"
      " Note: you should not automatically start a PPP connection.\n"
      " <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1\n"
      " [parameters] - Eg. defaultroute debug dump local notty usepeerdns\n"
      "\n"
      "adb sync notes: adb sync [ <directory> ]\n"
      "  <localdir> can be interpreted in several ways:\n"
      "\n"
      "  - If <directory> is not specified, both /system and /data partitions "
      "will be updated.\n"
      "\n"
      "  - If it is \"system\" or \"data\", only the corresponding partition\n"
      "    is updated.\n"
      "\n"
      "environmental variables:\n"
      "  ADB_TRACE                    - Print debug information. A comma "
      "separated list of the following values\n"
      "                                 1 or all, adb, sockets, packets, rwx, "
      "usb, sync, sysdeps, transport, jdwp\n"
      "  ANDROID_SERIAL               - The serial number to connect to. -s "
      "takes priority over this if given.\n"
      "  ANDROID_LOG_TAGS             - When used with the logcat option, only "
      "these debug tags are printed.\n");
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
mov    0x4eb5(%rip),%rax
mov    (%rax),%edi
call   1040 <version@plt>
mov    0x4ea7(%rip),%rax
mov    (%rax),%edi
lea    0xebe(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
push   %rbx
mov    0x4eb8(%rip),%rbx
mov    (%rbx),%edi
call   1040 <version@plt>
mov    (%rbx),%edi
lea    0xec8(%rip),%rsi
pop    %rbx
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [8007 x i8] c"\0A -a - directs adb to listen on all interfaces for a connection\0A -d - directs command to the only connected USB device\0A returns an error if more than one USB device is present.\0A -e - directs command to the only running emulator.\0A returns an error if more than one emulator is running.\0A -s <specific device> - directs command to the device or emulator with the given\0A serial number or qualifier. Overrides ANDROID_SERIAL\0A environment variable.\0A -p <product name or path> - simple product name like 'sooner', or\0A a relative/absolute path to a product\0A out directory like 'out/target/product/sooner'.\0A If -p is not specified, the ANDROID_PRODUCT_OUT\0A environment variable is used, which must\0A be an absolute path.\0A -H - Name of adb server host (default: localhost)\0A -P - Port of adb server (default: 5037)\0A devices [-l] - list all connected devices\0A ('-l' will also list device qualifiers)\0A connect <host>[:<port>] - connect to a device via TCP/IP\0A Port 5555 is used by default if no port number is specified.\0A disconnect [<host>[:<port>]] - disconnect from a TCP/IP device.\0A Port 5555 is used by default if no port number is specified.\0A Using this command with no additional arguments\0A will disconnect from all connected TCP/IP devices.\0A\0Adevice commands:\0A adb push <local> <remote> - copy file/dir to device\0A adb pull <remote> [<local>] - copy file/dir from device\0A adb sync [ <directory> ] - copy host->device only if changed\0A (-l means list but don't copy)\0A (see 'adb help all')\0A adb shell - run remote shell interactively\0A adb shell <command> - run remote shell command\0A adb emu <command> - run emulator console command\0A adb logcat [ <filter-spec> ] - View device log\0A adb forward --list - list all forward socket connections.\0A the format is a list of lines with the following format:\0A <serial> \22 \22 <local> \22 \22 <remote> \22\\n\22\0A adb forward <local> <remote> - forward socket connections\0A forward specs are one of: \0A tcp:<port>\0A localabstract:<unix domain socket name>\0A localreserved:<unix domain socket name>\0A localfilesystem:<unix domain socket name>\0A dev:<character device name>\0A jdwp:<process pid> (remote only)\0A adb forward --no-rebind <local> <remote>\0A - same as 'adb forward <local> <remote>' but fails\0A if <local> is already forwarded\0A adb forward --remove <local> - remove a specific forward socket connection\0A adb forward --remove-all - remove all forward socket connections\0A adb jdwp - list PIDs of processes hosting a JDWP transport\0A adb install [-l] [-r] [-s] [--algo <algorithm name> --key <hex-encoded key> --iv <hex-encoded iv>] <file>\0A - push this package file to the device and install it\0A ('-l' means forward-lock the app)\0A ('-r' means reinstall the app, keeping its data)\0A ('-s' means install on SD card instead of internal storage)\0A ('--algo', '--key', and '--iv' mean the file is encrypted already)\0A adb uninstall [-k] <package> - remove this app package from the device\0A ('-k' means keep the data and cache directories)\0A adb bugreport - return all information from the device\0A that should be included in a bug report.\0A\0A adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>]\0A - write an archive of the device's data to <file>.\0A If no -f option is supplied then the data is written\0A to \22backup.ab\22 in the current directory.\0A (-apk|-noapk enable/disable backup of the .apks themselves\0A in the archive; the default is noapk.)\0A (-shared|-noshared enable/disable backup of the device's\0A shared storage / SD card contents; the default is noshared.)\0A (-all means to back up all installed applications)\0A (-system|-nosystem toggles whether -all automatically includes\0A system applications; the default is to include system apps)\0A (<packages...> is the list of applications to be backed up. If\0A the -all or -shared flags are passed, then the package\0A list is optional. Applications explicitly given on the\0A command line will be included even if -nosystem would\0A ordinarily cause them to be omitted.)\0A\0A adb restore <file> - restore device contents from the <file> backup archive\0A\0A adb help - show this help message\0A adb version - show version num\0A\0Ascripting:\0A adb wait-for-device - block until device is online\0A adb start-server - ensure that there is a server running\0A adb kill-server - kill the server if it is running\0A adb get-state - prints: offline | bootloader | device\0A adb get-serialno - prints: <serial-number>\0A adb get-devpath - prints: <device-path>\0A adb status-window - continuously print device status for a specified device\0A adb remount - remounts the /system partition on the device read-write\0A adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program\0A adb reboot-bootloader - reboots the device into the bootloader\0A adb root - restarts the adbd daemon with root permissions\0A adb usb - restarts the adbd daemon listening on USB\0A adb tcpip <port> - restarts the adbd daemon listening on TCP on the specified port\0Anetworking:\0A adb ppp <tty> [parameters] - Run PPP over USB.\0A Note: you should not automatically start a PPP connection.\0A <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1\0A [parameters] - Eg. defaultroute debug dump local notty usepeerdns\0A\0Aadb sync notes: adb sync [ <directory> ]\0A <localdir> can be interpreted in several ways:\0A\0A - If <directory> is not specified, both /system and /data partitions will be updated.\0A\0A - If it is \22system\22 or \22data\22, only the corresponding partition\0A is updated.\0A\0Aenvironmental variables:\0A ADB_TRACE - Print debug information. A comma separated list of the following values\0A 1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp\0A ANDROID_SERIAL - The serial number to connect to. -s takes priority over this if given.\0A ANDROID_LOG_TAGS - When used with the logcat option, only these debug tags are printed.\0A\00"
define void @help() {
%1 = load i32, i32* @stderr
%2 = call i32 @version(i32 %1)
%3 = load i32, i32* @stderr
%4 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([8007 x i8], [8007 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [8007 x i8] c"\0A -a - directs adb to listen on all interfaces for a connection\0A -d - directs command to the only connected USB device\0A returns an error if more than one USB device is present.\0A -e - directs command to the only running emulator.\0A returns an error if more than one emulator is running.\0A -s <specific device> - directs command to the device or emulator with the given\0A serial number or qualifier. Overrides ANDROID_SERIAL\0A environment variable.\0A -p <product name or path> - simple product name like 'sooner', or\0A a relative/absolute path to a product\0A out directory like 'out/target/product/sooner'.\0A If -p is not specified, the ANDROID_PRODUCT_OUT\0A environment variable is used, which must\0A be an absolute path.\0A -H - Name of adb server host (default: localhost)\0A -P - Port of adb server (default: 5037)\0A devices [-l] - list all connected devices\0A ('-l' will also list device qualifiers)\0A connect <host>[:<port>] - connect to a device via TCP/IP\0A Port 5555 is used by default if no port number is specified.\0A disconnect [<host>[:<port>]] - disconnect from a TCP/IP device.\0A Port 5555 is used by default if no port number is specified.\0A Using this command with no additional arguments\0A will disconnect from all connected TCP/IP devices.\0A\0Adevice commands:\0A adb push <local> <remote> - copy file/dir to device\0A adb pull <remote> [<local>] - copy file/dir from device\0A adb sync [ <directory> ] - copy host->device only if changed\0A (-l means list but don't copy)\0A (see 'adb help all')\0A adb shell - run remote shell interactively\0A adb shell <command> - run remote shell command\0A adb emu <command> - run emulator console command\0A adb logcat [ <filter-spec> ] - View device log\0A adb forward --list - list all forward socket connections.\0A the format is a list of lines with the following format:\0A <serial> \22 \22 <local> \22 \22 <remote> \22\\n\22\0A adb forward <local> <remote> - forward socket connections\0A forward specs are one of: \0A tcp:<port>\0A localabstract:<unix domain socket name>\0A localreserved:<unix domain socket name>\0A localfilesystem:<unix domain socket name>\0A dev:<character device name>\0A jdwp:<process pid> (remote only)\0A adb forward --no-rebind <local> <remote>\0A - same as 'adb forward <local> <remote>' but fails\0A if <local> is already forwarded\0A adb forward --remove <local> - remove a specific forward socket connection\0A adb forward --remove-all - remove all forward socket connections\0A adb jdwp - list PIDs of processes hosting a JDWP transport\0A adb install [-l] [-r] [-s] [--algo <algorithm name> --key <hex-encoded key> --iv <hex-encoded iv>] <file>\0A - push this package file to the device and install it\0A ('-l' means forward-lock the app)\0A ('-r' means reinstall the app, keeping its data)\0A ('-s' means install on SD card instead of internal storage)\0A ('--algo', '--key', and '--iv' mean the file is encrypted already)\0A adb uninstall [-k] <package> - remove this app package from the device\0A ('-k' means keep the data and cache directories)\0A adb bugreport - return all information from the device\0A that should be included in a bug report.\0A\0A adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>]\0A - write an archive of the device's data to <file>.\0A If no -f option is supplied then the data is written\0A to \22backup.ab\22 in the current directory.\0A (-apk|-noapk enable/disable backup of the .apks themselves\0A in the archive; the default is noapk.)\0A (-shared|-noshared enable/disable backup of the device's\0A shared storage / SD card contents; the default is noshared.)\0A (-all means to back up all installed applications)\0A (-system|-nosystem toggles whether -all automatically includes\0A system applications; the default is to include system apps)\0A (<packages...> is the list of applications to be backed up. If\0A the -all or -shared flags are passed, then the package\0A list is optional. Applications explicitly given on the\0A command line will be included even if -nosystem would\0A ordinarily cause them to be omitted.)\0A\0A adb restore <file> - restore device contents from the <file> backup archive\0A\0A adb help - show this help message\0A adb version - show version num\0A\0Ascripting:\0A adb wait-for-device - block until device is online\0A adb start-server - ensure that there is a server running\0A adb kill-server - kill the server if it is running\0A adb get-state - prints: offline | bootloader | device\0A adb get-serialno - prints: <serial-number>\0A adb get-devpath - prints: <device-path>\0A adb status-window - continuously print device status for a specified device\0A adb remount - remounts the /system partition on the device read-write\0A adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program\0A adb reboot-bootloader - reboots the device into the bootloader\0A adb root - restarts the adbd daemon with root permissions\0A adb usb - restarts the adbd daemon listening on USB\0A adb tcpip <port> - restarts the adbd daemon listening on TCP on the specified port\0Anetworking:\0A adb ppp <tty> [parameters] - Run PPP over USB.\0A Note: you should not automatically start a PPP connection.\0A <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1\0A [parameters] - Eg. defaultroute debug dump local notty usepeerdns\0A\0Aadb sync notes: adb sync [ <directory> ]\0A <localdir> can be interpreted in several ways:\0A\0A - If <directory> is not specified, both /system and /data partitions will be updated.\0A\0A - If it is \22system\22 or \22data\22, only the corresponding partition\0A is updated.\0A\0Aenvironmental variables:\0A ADB_TRACE - Print debug information. A comma separated list of the following values\0A 1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp\0A ANDROID_SERIAL - The serial number to connect to. -s takes priority over this if given.\0A ANDROID_LOG_TAGS - When used with the logcat option, only these debug tags are printed.\0A\00"
define void @help() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @version(i32 %1)
%3 = load i32, i32* @stderr
%4 = tail call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([8007 x i8], [8007 x i8]* @.str, i64 0, i64 0))
ret void
}