#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 print_usage(void) {
  printf(
      "\n"
      "Usage: hacktv [options] input [input...]\n"
      "\n"
      "  -o, --output <target>          Set the output device or file, "
      "Default: hackrf\n"
      "  -m, --mode <name>              Set the television mode. Default: i\n"
      "  -s, --samplerate <value>       Set the sample rate in Hz. Default: "
      "16MHz\n"
      "      --pixelrate <value>        Set the video pixel rate in Hz. "
      "Default: Sample rate\n"
      "  -l, --level <value>            Set the output level. Default: 1.0\n"
      "  -D, --deviation <value>        Override the mode's FM peak deviation. "
      "(Hz)\n"
      "  -G, --gamma <value>            Override the mode's gamma correction "
      "value.\n"
      "  -i, --interlace                Update image each field instead of "
      "each frame.\n"
      "  -r, --repeat                   Repeat the inputs forever.\n"
      "  -v, --verbose                  Enable verbose output.\n"
      "      --teletext <path>          Enable teletext output. (625 line "
      "modes only)\n"
      "      --wss <mode>               Enable WSS output. (625 line modes "
      "only)\n"
      "      --videocrypt <mode>        Enable Videocrypt I scrambling. (PAL "
      "only)\n"
      "      --videocrypt2 <mode>       Enable Videocrypt II scrambling. (PAL "
      "only)\n"
      "      --videocrypts <mode>       Enable Videocrypt S scrambling. (PAL "
      "only)\n"
      "      --syster                   Enable Nagravision Syster scambling. "
      "(PAL only)\n"
      "      --systeraudio              Invert the audio spectrum when using "
      "Syster.\n"
      "      --acp                      Enable Analogue Copy Protection "
      "signal.\n"
      "      --vits                     Enable VITS test signals.\n"
      "      --filter                   Enable experimental VSB modulation "
      "filter.\n"
      "      --nocolour                 Disable the colour subcarrier (PAL, "
      "SECAM, NTSC only).\n"
      "      --noaudio                  Suppress all audio subcarriers.\n"
      "      --nonicam                  Disable the NICAM subcarrier if "
      "present.\n"
      "      --a2stereo                 Enable Zweikanalton / A2 Stereo, "
      "disables NICAM.\n"
      "      --single-cut               Enable D/D2-MAC single cut video "
      "scrambling.\n"
      "      --double-cut               Enable D/D2-MAC double cut video "
      "scrambling.\n"
      "      --eurocrypt <mode>         Enable Eurocrypt conditional access "
      "for D/D2-MAC.\n"
      "      --scramble-audio           Scramble audio data when using "
      "D/D2-MAC modes.\n"
      "      --chid <id>                Set the channel ID (D/D2-MAC).\n"
      "      --offset <value>           Add a frequency offset in Hz (Complex "
      "modes only).\n"
      "      --passthru <file>          Read and add an int16 complex signal.\n"
      "\n"
      "Input options\n"
      "\n"
      "  test:colourbars    Generate and transmit a test pattern.\n"
      "  ffmpeg:<file|url>  Decode and transmit a video file with ffmpeg.\n"
      "\n"
      "  If no valid input prefix is provided, ffmpeg: is assumed.\n"
      "\n"
      "HackRF output options\n"
      "\n"
      "  -o, --output hackrf[:<serial>] Open a HackRF for output.\n"
      "  -f, --frequency <value>        Set the RF frequency in Hz, 0MHz to "
      "7250MHz.\n"
      "  -a, --amp                      Enable the TX RF amplifier.\n"
      "  -g, --gain <value>             Set the TX VGA (IF) gain, 0-47dB. "
      "Default: 0dB\n"
      "\n"
      "  Only modes with a complex output are supported by the HackRF.\n"
      "\n"
      "SoapySDR output options\n"
      "\n"
      "  -o, --output soapysdr[:<opts>] Open a SoapySDR device for output.\n"
      "  -f, --frequency <value>        Set the RF frequency in Hz.\n"
      "  -g, --gain <value>             Set the TX level. Default: 0dB\n"
      "  -A, --antenna <name>           Set the antenna.\n"
      "\n"
      "fl2k output options\n"
      "\n"
      "  -o, --output fl2k[:<dev>]      Open an fl2k device for output.\n"
      "\n"
      "  Real signals are output on the Red channel. Complex signals are "
      "output\n"
      "  on the Red (I) and Green (Q) channels.\n"
      "\n"
      "  The 0.7v p-p voltage level of the FL2K is too low to create a "
      "correct\n"
      "  composite video signal, it will appear too dark without "
      "amplification.\n"
      "\n"
      "File output options\n"
      "\n"
      "  -o, --output file:<filename>   Open a file for output. Use - for "
      "stdout.\n"
      "  -t, --type <type>              Set the file data type.\n"
      "\n"
      "Supported file types:\n"
      "\n"
      "  uint8\n"
      "  int8\n"
      "  uint16\n"
      "  int16\n"
      "  int32\n"
      "  float\n"
      "\n"
      "  The default output is int16. The TV mode will determine if the "
      "output\n"
      "  is real or complex.\n"
      "\n"
      "  If no valid output prefix is provided, file: is assumed.\n"
      "\n"
      "Supported television modes:\n"
      "\n"
      "  i             = PAL colour, 25 fps, 625 lines, AM (complex), 6.0 MHz "
      "FM audio\n"
      "  b, g          = PAL colour, 25 fps, 625 lines, AM (complex), 5.5 MHz "
      "FM audio\n"
      "  pal-fm        = PAL colour, 25 fps, 625 lines, FM (complex), 6.5 MHz "
      "FM audio\n"
      "  pal           = PAL colour, 25 fps, 625 lines, unmodulated (real)\n"
      "  pal-m         = PAL colour, 30/1.001 fps, 525 lines, AM (complex), "
      "4.5 MHz FM audio\n"
      "  525pal        = PAL colour, 30/1.001 fps, 525 lines, unmodulated "
      "(real)\n"
      "  m             = NTSC colour, 30/1.001 fps, 525 lines, AM (complex), "
      "4.5 MHz FM audio\n"
      "  ntsc-fm       = NTSC colour, 30/1.001 fps, 525 lines, FM (complex), "
      "6.5 MHz FM audio\n"
      "  ntsc-bs       = NTSC colour, 30/1.001 fps, 525 lines, FM (complex), "
      "BS digital audio\n"
      "  ntsc          = NTSC colour, 30/1.001 fps, 525 lines, unmodulated "
      "(real)\n"
      "  l             = SECAM colour, 25 fps, 625 lines, AM (complex), 6.5 "
      "MHz AM\n"
      "                  audio\n"
      "  d, k          = SECAM colour, 25 fps, 625 lines, AM (complex), 6.5 "
      "MHz FM\n"
      "                  audio\n"
      "  secam-i       = SECAM colour, 25 fps, 625 lines, AM (complex), 6.0 "
      "MHz FM audio\n"
      "  secam-fm      = SECAM colour, 25 fps, 625 lines, FM (complex), 6.5 "
      "MHz FM audio\n"
      "  secam         = SECAM colour, 25 fps, 625 lines, unmodulated (real)\n"
      "  d2mac-fm      = D2-MAC, 25 fps, 625 lines, FM (complex)\n"
      "  d2mac-am      = D2-MAC, 25 fps, 625 lines, AM (complex)\n"
      "  d2mac         = D2-MAC, 25 fps, 625 lines, unmodulated (real)\n"
      "  dmac-fm       = D-MAC, 25 fps, 625 lines, FM (complex)\n"
      "  dmac-am       = D-MAC, 25 fps, 625 lines, AM (complex)\n"
      "  dmac          = D-MAC, 25 fps, 625 lines, unmodulated (real)\n"
      "  e             = No colour, 25 fps, 819 lines, AM (complex)\n"
      "  819           = No colour, 25 fps, 819 lines, unmodulated (real)\n"
      "  a             = No colour, 25 fps, 405 lines, AM (complex)\n"
      "  405           = No colour, 25 fps, 405 lines, unmodulated (real)\n"
      "  240-am        = No colour, 25 fps, 240 lines, AM (complex)\n"
      "  240           = No colour, 25 fps, 240 lines, unmodulated (real)\n"
      "  30-am         = No colour, 12.5 fps, 30 lines, AM (complex)\n"
      "  30            = No colour, 12.5 fps, 30 lines, unmodulated (real)\n"
      "  nbtv-am       = No colour, 12.5 fps, 32 lines, AM (complex)\n"
      "  nbtv          = No colour, 12.5 fps, 32 lines, unmodulated (real)\n"
      "  apollo-fsc-fm = Field sequential colour, 30/1.001 fps, 525 lines, FM "
      "(complex)\n"
      "                  1.25 MHz FM audio\n"
      "  apollo-fsc    = Field sequential colour, 30/1.001 fps, 525 lines, "
      "unmodulated\n"
      "                  (real)\n"
      "  apollo-fm     = No colour, 10 fps, 320 lines, FM (complex), 1.25 MHz "
      "FM audio\n"
      "  apollo        = No colour, 10 fps, 320 lines, unmodulated (real)\n"
      "  m-cbs405      = Field sequential colour, 72 fps, 405 lines, VSB "
      "(complex),\n"
      "                  4.5MHz FM audio\n"
      "  cbs405        = Field sequential colour, 72 fps, 405 lines, "
      "unmodulated (real)\n"
      "\n"
      "NOTE: The number of samples per line is rounded to the nearest "
      "integer,\n"
      "which may result in a slight frame rate error.\n"
      "\n"
      "For modes which include audio you also need to ensure the sample rate\n"
      "is adequate to contain both the video signal and audio subcarriers.\n"
      "\n"
      "16MHz works well with PAL modes, and 13.5MHz for NTSC modes.\n"
      "\n"
      "20.25MHz is ideal for the D/D2-MAC modes, but may not work with all "
      "hackrfs.\n"
      "\n"
      "Teletext\n"
      "\n"
      "Teletext is a digital information service transmitted within the VBI "
      "lines of\n"
      "the video signal. Developed in the UK in the 1970s, it was used "
      "throughout\n"
      "much of Europe until the end of analogue TV in the 2010s.\n"
      "\n"
      "hacktv supports TTI files. The path can be either a single file or a\n"
      "directory. All files in the directory will be loaded.\n"
      "\n"
      "Raw packet sources are also supported with the raw:<source> path name.\n"
      "The input is expected to be 42 byte teletext packets. Use - for stdin.\n"
      "\n"
      "Lines 7-22 and 320-335 are used, 16 lines per field.\n"
      "\n"
      "Teletext support in hacktv is only compatible with 625 line PAL modes.\n"
      "NTSC and SECAM variations exist and may be supported in the future.\n"
      "\n"
      "WSS (Widescreen Signaling)\n"
      "\n"
      "WSS provides a method to signal to a TV the intended aspect ratio of\n"
      "the video. The following modes are supported:\n"
      "\n"
      "  4:3            = Video is 4:3.\n"
      "  16:9           = Video is 16:9 (Anamorphic).\n"
      "  14:9-letterbox = Crop a 4:3 video to 14:9.\n"
      "  16:9-letterbox = Crop a 4:3 video to 16:9.\n"
      "  auto           = Automatically switch between 4:3 and 16:9.\n"
      "\n"
      "Currently only supported in 625 line modes. A 525 line variant exists "
      "and\n"
      "may be supported in future.\n"
      "\n"
      "Videocrypt I\n"
      "\n"
      "A video scrambling system used by the Sky TV analogue satellite service "
      "in\n"
      "the UK in the 1990s. Each line of the image is cut at a point "
      "determined by\n"
      "a pseudorandom number generator, then the two parts are swapped.\n"
      "\n"
      "hacktv supports the following modes:\n"
      "\n"
      "  free        = Free-access, no sudirription card is required to "
      "decode.\n"
      "  conditional = A valid Sky card is required to decode. Sample data "
      "from MTV.\n"
      "\n"
      "Videocrypt is only compatiable with 625 line PAL modes. This version\n"
      "works best when used with samples rates at multiples of 14MHz.\n"
      "\n"
      "Videocrypt II\n"
      "\n"
      "A variation of Videocrypt I used throughout Europe. The scrambling "
      "method is\n"
      "identical to VC1, but has a higher VBI data rate.\n"
      "\n"
      "hacktv supports the following modes:\n"
      "\n"
      "  free        = Free-access, no sudirription card is required to "
      "decode.\n"
      "\n"
      "Both VC1 and VC2 cannot be used together except if both are in "
      "free-access mode.\n"
      "\n"
      "Videocrypt S\n"
      "\n"
      "A variation of Videocrypt II used on the short lived BBC Select "
      "service. This\n"
      "mode uses line-shuffling rather than line cut-and-rotate.\n"
      "\n"
      "hacktv supports the following modes:\n"
      "\n"
      "  free        = Free-access, no sudirription card is required to "
      "decode.\n"
      "  conditional = A valid BBC Select card is required to decode. (Does "
      "not work yet)\n"
      "\n"
      "Audio inversion is not yet supported.\n"
      "\n"
      "Nagravision Syster\n"
      "\n"
      "Another video scrambling system used in the 1990s in Europe. The video "
      "lines\n"
      "are vertically shuffled within a field.\n"
      "\n"
      "Syster is only compatible with 625 line PAL modes and does not "
      "currently work\n"
      "with most hardware.\n"
      "\n"
      "Some decoders will invert the audio around 12.8 kHz. For these devices "
      "you need\n"
      "to use the --systeraudio option.\n"
      "\n"
      "Eurocrypt\n"
      "\n"
      "Conditional access (CA) system used by D/D2MAC services, M and S2 "
      "versions are\n"
      "supported.\n"
      "\n"
      "hacktv supports the following modes:\n"
      "\n"
      "  filmnet     = (M) A valid FilmNet card is required to decode.\n"
      "  tv1000      = (M) A valid Viasat card is required to decode.\n"
      "  ctv         = (M) A valid CTV card is required to decode.\n"
      "  ctvs        = (S) A valid CTV card is required to decode.\n"
      "  tvplus      = (M) A valid TV Plus (Netherlands) card is required to "
      "decode.\n"
      "  tvs         = (S) A valid TVS (Denmark) card is required to decode.\n"
      "  rdv         = (S) A valid RDV card is required to decode.\n"
      "  nrk         = (S) A valid NRK card is required to decode.\n"
      "\n"
      "MultiMac style cards can also be used.\n"
      "\n");
}


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

x86 assembly (clang, -O2):
<print_usage>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [10652 x i8] c"\0AUsage: hacktv [options] input [input...]\0A\0A -o, --output <target> Set the output device or file, Default: hackrf\0A -m, --mode <name> Set the television mode. Default: i\0A -s, --samplerate <value> Set the sample rate in Hz. Default: 16MHz\0A --pixelrate <value> Set the video pixel rate in Hz. Default: Sample rate\0A -l, --level <value> Set the output level. Default: 1.0\0A -D, --deviation <value> Override the mode's FM peak deviation. (Hz)\0A -G, --gamma <value> Override the mode's gamma correction value.\0A -i, --interlace Update image each field instead of each frame.\0A -r, --repeat Repeat the inputs forever.\0A -v, --verbose Enable verbose output.\0A --teletext <path> Enable teletext output. (625 line modes only)\0A --wss <mode> Enable WSS output. (625 line modes only)\0A --videocrypt <mode> Enable Videocrypt I scrambling. (PAL only)\0A --videocrypt2 <mode> Enable Videocrypt II scrambling. (PAL only)\0A --videocrypts <mode> Enable Videocrypt S scrambling. (PAL only)\0A --syster Enable Nagravision Syster scambling. (PAL only)\0A --systeraudio Invert the audio spectrum when using Syster.\0A --acp Enable Analogue Copy Protection signal.\0A --vits Enable VITS test signals.\0A --filter Enable experimental VSB modulation filter.\0A --nocolour Disable the colour subcarrier (PAL, SECAM, NTSC only).\0A --noaudio Suppress all audio subcarriers.\0A --nonicam Disable the NICAM subcarrier if present.\0A --a2stereo Enable Zweikanalton / A2 Stereo, disables NICAM.\0A --single-cut Enable D/D2-MAC single cut video scrambling.\0A --double-cut Enable D/D2-MAC double cut video scrambling.\0A --eurocrypt <mode> Enable Eurocrypt conditional access for D/D2-MAC.\0A --scramble-audio Scramble audio data when using D/D2-MAC modes.\0A --chid <id> Set the channel ID (D/D2-MAC).\0A --offset <value> Add a frequency offset in Hz (Complex modes only).\0A --passthru <file> Read and add an int16 complex signal.\0A\0AInput options\0A\0A test:colourbars Generate and transmit a test pattern.\0A ffmpeg:<file|url> Decode and transmit a video file with ffmpeg.\0A\0A If no valid input prefix is provided, ffmpeg: is assumed.\0A\0AHackRF output options\0A\0A -o, --output hackrf[:<serial>] Open a HackRF for output.\0A -f, --frequency <value> Set the RF frequency in Hz, 0MHz to 7250MHz.\0A -a, --amp Enable the TX RF amplifier.\0A -g, --gain <value> Set the TX VGA (IF) gain, 0-47dB. Default: 0dB\0A\0A Only modes with a complex output are supported by the HackRF.\0A\0ASoapySDR output options\0A\0A -o, --output soapysdr[:<opts>] Open a SoapySDR device for output.\0A -f, --frequency <value> Set the RF frequency in Hz.\0A -g, --gain <value> Set the TX level. Default: 0dB\0A -A, --antenna <name> Set the antenna.\0A\0Afl2k output options\0A\0A -o, --output fl2k[:<dev>] Open an fl2k device for output.\0A\0A Real signals are output on the Red channel. Complex signals are output\0A on the Red (I) and Green (Q) channels.\0A\0A The 0.7v p-p voltage level of the FL2K is too low to create a correct\0A composite video signal, it will appear too dark without amplification.\0A\0AFile output options\0A\0A -o, --output file:<filename> Open a file for output. Use - for stdout.\0A -t, --type <type> Set the file data type.\0A\0ASupported file types:\0A\0A uint8\0A int8\0A uint16\0A int16\0A int32\0A float\0A\0A The default output is int16. The TV mode will determine if the output\0A is real or complex.\0A\0A If no valid output prefix is provided, file: is assumed.\0A\0ASupported television modes:\0A\0A i = PAL colour, 25 fps, 625 lines, AM (complex), 6.0 MHz FM audio\0A b, g = PAL colour, 25 fps, 625 lines, AM (complex), 5.5 MHz FM audio\0A pal-fm = PAL colour, 25 fps, 625 lines, FM (complex), 6.5 MHz FM audio\0A pal = PAL colour, 25 fps, 625 lines, unmodulated (real)\0A pal-m = PAL colour, 30/1.001 fps, 525 lines, AM (complex), 4.5 MHz FM audio\0A 525pal = PAL colour, 30/1.001 fps, 525 lines, unmodulated (real)\0A m = NTSC colour, 30/1.001 fps, 525 lines, AM (complex), 4.5 MHz FM audio\0A ntsc-fm = NTSC colour, 30/1.001 fps, 525 lines, FM (complex), 6.5 MHz FM audio\0A ntsc-bs = NTSC colour, 30/1.001 fps, 525 lines, FM (complex), BS digital audio\0A ntsc = NTSC colour, 30/1.001 fps, 525 lines, unmodulated (real)\0A l = SECAM colour, 25 fps, 625 lines, AM (complex), 6.5 MHz AM\0A audio\0A d, k = SECAM colour, 25 fps, 625 lines, AM (complex), 6.5 MHz FM\0A audio\0A secam-i = SECAM colour, 25 fps, 625 lines, AM (complex), 6.0 MHz FM audio\0A secam-fm = SECAM colour, 25 fps, 625 lines, FM (complex), 6.5 MHz FM audio\0A secam = SECAM colour, 25 fps, 625 lines, unmodulated (real)\0A d2mac-fm = D2-MAC, 25 fps, 625 lines, FM (complex)\0A d2mac-am = D2-MAC, 25 fps, 625 lines, AM (complex)\0A d2mac = D2-MAC, 25 fps, 625 lines, unmodulated (real)\0A dmac-fm = D-MAC, 25 fps, 625 lines, FM (complex)\0A dmac-am = D-MAC, 25 fps, 625 lines, AM (complex)\0A dmac = D-MAC, 25 fps, 625 lines, unmodulated (real)\0A e = No colour, 25 fps, 819 lines, AM (complex)\0A 819 = No colour, 25 fps, 819 lines, unmodulated (real)\0A a = No colour, 25 fps, 405 lines, AM (complex)\0A 405 = No colour, 25 fps, 405 lines, unmodulated (real)\0A 240-am = No colour, 25 fps, 240 lines, AM (complex)\0A 240 = No colour, 25 fps, 240 lines, unmodulated (real)\0A 30-am = No colour, 12.5 fps, 30 lines, AM (complex)\0A 30 = No colour, 12.5 fps, 30 lines, unmodulated (real)\0A nbtv-am = No colour, 12.5 fps, 32 lines, AM (complex)\0A nbtv = No colour, 12.5 fps, 32 lines, unmodulated (real)\0A apollo-fsc-fm = Field sequential colour, 30/1.001 fps, 525 lines, FM (complex)\0A 1.25 MHz FM audio\0A apollo-fsc = Field sequential colour, 30/1.001 fps, 525 lines, unmodulated\0A (real)\0A apollo-fm = No colour, 10 fps, 320 lines, FM (complex), 1.25 MHz FM audio\0A apollo = No colour, 10 fps, 320 lines, unmodulated (real)\0A m-cbs405 = Field sequential colour, 72 fps, 405 lines, VSB (complex),\0A 4.5MHz FM audio\0A cbs405 = Field sequential colour, 72 fps, 405 lines, unmodulated (real)\0A\0ANOTE: The number of samples per line is rounded to the nearest integer,\0Awhich may result in a slight frame rate error.\0A\0AFor modes which include audio you also need to ensure the sample rate\0Ais adequate to contain both the video signal and audio subcarriers.\0A\0A16MHz works well with PAL modes, and 13.5MHz for NTSC modes.\0A\0A20.25MHz is ideal for the D/D2-MAC modes, but may not work with all hackrfs.\0A\0ATeletext\0A\0ATeletext is a digital information service transmitted within the VBI lines of\0Athe video signal. Developed in the UK in the 1970s, it was used throughout\0Amuch of Europe until the end of analogue TV in the 2010s.\0A\0Ahacktv supports TTI files. The path can be either a single file or a\0Adirectory. All files in the directory will be loaded.\0A\0ARaw packet sources are also supported with the raw:<source> path name.\0AThe input is expected to be 42 byte teletext packets. Use - for stdin.\0A\0ALines 7-22 and 320-335 are used, 16 lines per field.\0A\0ATeletext support in hacktv is only compatible with 625 line PAL modes.\0ANTSC and SECAM variations exist and may be supported in the future.\0A\0AWSS (Widescreen Signaling)\0A\0AWSS provides a method to signal to a TV the intended aspect ratio of\0Athe video. The following modes are supported:\0A\0A 4:3 = Video is 4:3.\0A 16:9 = Video is 16:9 (Anamorphic).\0A 14:9-letterbox = Crop a 4:3 video to 14:9.\0A 16:9-letterbox = Crop a 4:3 video to 16:9.\0A auto = Automatically switch between 4:3 and 16:9.\0A\0ACurrently only supported in 625 line modes. A 525 line variant exists and\0Amay be supported in future.\0A\0AVideocrypt I\0A\0AA video scrambling system used by the Sky TV analogue satellite service in\0Athe UK in the 1990s. Each line of the image is cut at a point determined by\0Aa pseudorandom number generator, then the two parts are swapped.\0A\0Ahacktv supports the following modes:\0A\0A free = Free-access, no sudirription card is required to decode.\0A conditional = A valid Sky card is required to decode. Sample data from MTV.\0A\0AVideocrypt is only compatiable with 625 line PAL modes. This version\0Aworks best when used with samples rates at multiples of 14MHz.\0A\0AVideocrypt II\0A\0AA variation of Videocrypt I used throughout Europe. The scrambling method is\0Aidentical to VC1, but has a higher VBI data rate.\0A\0Ahacktv supports the following modes:\0A\0A free = Free-access, no sudirription card is required to decode.\0A\0ABoth VC1 and VC2 cannot be used together except if both are in free-access mode.\0A\0AVideocrypt S\0A\0AA variation of Videocrypt II used on the short lived BBC Select service. This\0Amode uses line-shuffling rather than line cut-and-rotate.\0A\0Ahacktv supports the following modes:\0A\0A free = Free-access, no sudirription card is required to decode.\0A conditional = A valid BBC Select card is required to decode. (Does not work yet)\0A\0AAudio inversion is not yet supported.\0A\0ANagravision Syster\0A\0AAnother video scrambling system used in the 1990s in Europe. The video lines\0Aare vertically shuffled within a field.\0A\0ASyster is only compatible with 625 line PAL modes and does not currently work\0Awith most hardware.\0A\0ASome decoders will invert the audio around 12.8 kHz. For these devices you need\0Ato use the --systeraudio option.\0A\0AEurocrypt\0A\0AConditional access (CA) system used by D/D2MAC services, M and S2 versions are\0Asupported.\0A\0Ahacktv supports the following modes:\0A\0A filmnet = (M) A valid FilmNet card is required to decode.\0A tv1000 = (M) A valid Viasat card is required to decode.\0A ctv = (M) A valid CTV card is required to decode.\0A ctvs = (S) A valid CTV card is required to decode.\0A tvplus = (M) A valid TV Plus (Netherlands) card is required to decode.\0A tvs = (S) A valid TVS (Denmark) card is required to decode.\0A rdv = (S) A valid RDV card is required to decode.\0A nrk = (S) A valid NRK card is required to decode.\0A\0AMultiMac style cards can also be used.\0A\0A\00"
define void @print_usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([10652 x i8], [10652 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [10651 x i8] c"\0AUsage: hacktv [options] input [input...]\0A\0A -o, --output <target> Set the output device or file, Default: hackrf\0A -m, --mode <name> Set the television mode. Default: i\0A -s, --samplerate <value> Set the sample rate in Hz. Default: 16MHz\0A --pixelrate <value> Set the video pixel rate in Hz. Default: Sample rate\0A -l, --level <value> Set the output level. Default: 1.0\0A -D, --deviation <value> Override the mode's FM peak deviation. (Hz)\0A -G, --gamma <value> Override the mode's gamma correction value.\0A -i, --interlace Update image each field instead of each frame.\0A -r, --repeat Repeat the inputs forever.\0A -v, --verbose Enable verbose output.\0A --teletext <path> Enable teletext output. (625 line modes only)\0A --wss <mode> Enable WSS output. (625 line modes only)\0A --videocrypt <mode> Enable Videocrypt I scrambling. (PAL only)\0A --videocrypt2 <mode> Enable Videocrypt II scrambling. (PAL only)\0A --videocrypts <mode> Enable Videocrypt S scrambling. (PAL only)\0A --syster Enable Nagravision Syster scambling. (PAL only)\0A --systeraudio Invert the audio spectrum when using Syster.\0A --acp Enable Analogue Copy Protection signal.\0A --vits Enable VITS test signals.\0A --filter Enable experimental VSB modulation filter.\0A --nocolour Disable the colour subcarrier (PAL, SECAM, NTSC only).\0A --noaudio Suppress all audio subcarriers.\0A --nonicam Disable the NICAM subcarrier if present.\0A --a2stereo Enable Zweikanalton / A2 Stereo, disables NICAM.\0A --single-cut Enable D/D2-MAC single cut video scrambling.\0A --double-cut Enable D/D2-MAC double cut video scrambling.\0A --eurocrypt <mode> Enable Eurocrypt conditional access for D/D2-MAC.\0A --scramble-audio Scramble audio data when using D/D2-MAC modes.\0A --chid <id> Set the channel ID (D/D2-MAC).\0A --offset <value> Add a frequency offset in Hz (Complex modes only).\0A --passthru <file> Read and add an int16 complex signal.\0A\0AInput options\0A\0A test:colourbars Generate and transmit a test pattern.\0A ffmpeg:<file|url> Decode and transmit a video file with ffmpeg.\0A\0A If no valid input prefix is provided, ffmpeg: is assumed.\0A\0AHackRF output options\0A\0A -o, --output hackrf[:<serial>] Open a HackRF for output.\0A -f, --frequency <value> Set the RF frequency in Hz, 0MHz to 7250MHz.\0A -a, --amp Enable the TX RF amplifier.\0A -g, --gain <value> Set the TX VGA (IF) gain, 0-47dB. Default: 0dB\0A\0A Only modes with a complex output are supported by the HackRF.\0A\0ASoapySDR output options\0A\0A -o, --output soapysdr[:<opts>] Open a SoapySDR device for output.\0A -f, --frequency <value> Set the RF frequency in Hz.\0A -g, --gain <value> Set the TX level. Default: 0dB\0A -A, --antenna <name> Set the antenna.\0A\0Afl2k output options\0A\0A -o, --output fl2k[:<dev>] Open an fl2k device for output.\0A\0A Real signals are output on the Red channel. Complex signals are output\0A on the Red (I) and Green (Q) channels.\0A\0A The 0.7v p-p voltage level of the FL2K is too low to create a correct\0A composite video signal, it will appear too dark without amplification.\0A\0AFile output options\0A\0A -o, --output file:<filename> Open a file for output. Use - for stdout.\0A -t, --type <type> Set the file data type.\0A\0ASupported file types:\0A\0A uint8\0A int8\0A uint16\0A int16\0A int32\0A float\0A\0A The default output is int16. The TV mode will determine if the output\0A is real or complex.\0A\0A If no valid output prefix is provided, file: is assumed.\0A\0ASupported television modes:\0A\0A i = PAL colour, 25 fps, 625 lines, AM (complex), 6.0 MHz FM audio\0A b, g = PAL colour, 25 fps, 625 lines, AM (complex), 5.5 MHz FM audio\0A pal-fm = PAL colour, 25 fps, 625 lines, FM (complex), 6.5 MHz FM audio\0A pal = PAL colour, 25 fps, 625 lines, unmodulated (real)\0A pal-m = PAL colour, 30/1.001 fps, 525 lines, AM (complex), 4.5 MHz FM audio\0A 525pal = PAL colour, 30/1.001 fps, 525 lines, unmodulated (real)\0A m = NTSC colour, 30/1.001 fps, 525 lines, AM (complex), 4.5 MHz FM audio\0A ntsc-fm = NTSC colour, 30/1.001 fps, 525 lines, FM (complex), 6.5 MHz FM audio\0A ntsc-bs = NTSC colour, 30/1.001 fps, 525 lines, FM (complex), BS digital audio\0A ntsc = NTSC colour, 30/1.001 fps, 525 lines, unmodulated (real)\0A l = SECAM colour, 25 fps, 625 lines, AM (complex), 6.5 MHz AM\0A audio\0A d, k = SECAM colour, 25 fps, 625 lines, AM (complex), 6.5 MHz FM\0A audio\0A secam-i = SECAM colour, 25 fps, 625 lines, AM (complex), 6.0 MHz FM audio\0A secam-fm = SECAM colour, 25 fps, 625 lines, FM (complex), 6.5 MHz FM audio\0A secam = SECAM colour, 25 fps, 625 lines, unmodulated (real)\0A d2mac-fm = D2-MAC, 25 fps, 625 lines, FM (complex)\0A d2mac-am = D2-MAC, 25 fps, 625 lines, AM (complex)\0A d2mac = D2-MAC, 25 fps, 625 lines, unmodulated (real)\0A dmac-fm = D-MAC, 25 fps, 625 lines, FM (complex)\0A dmac-am = D-MAC, 25 fps, 625 lines, AM (complex)\0A dmac = D-MAC, 25 fps, 625 lines, unmodulated (real)\0A e = No colour, 25 fps, 819 lines, AM (complex)\0A 819 = No colour, 25 fps, 819 lines, unmodulated (real)\0A a = No colour, 25 fps, 405 lines, AM (complex)\0A 405 = No colour, 25 fps, 405 lines, unmodulated (real)\0A 240-am = No colour, 25 fps, 240 lines, AM (complex)\0A 240 = No colour, 25 fps, 240 lines, unmodulated (real)\0A 30-am = No colour, 12.5 fps, 30 lines, AM (complex)\0A 30 = No colour, 12.5 fps, 30 lines, unmodulated (real)\0A nbtv-am = No colour, 12.5 fps, 32 lines, AM (complex)\0A nbtv = No colour, 12.5 fps, 32 lines, unmodulated (real)\0A apollo-fsc-fm = Field sequential colour, 30/1.001 fps, 525 lines, FM (complex)\0A 1.25 MHz FM audio\0A apollo-fsc = Field sequential colour, 30/1.001 fps, 525 lines, unmodulated\0A (real)\0A apollo-fm = No colour, 10 fps, 320 lines, FM (complex), 1.25 MHz FM audio\0A apollo = No colour, 10 fps, 320 lines, unmodulated (real)\0A m-cbs405 = Field sequential colour, 72 fps, 405 lines, VSB (complex),\0A 4.5MHz FM audio\0A cbs405 = Field sequential colour, 72 fps, 405 lines, unmodulated (real)\0A\0ANOTE: The number of samples per line is rounded to the nearest integer,\0Awhich may result in a slight frame rate error.\0A\0AFor modes which include audio you also need to ensure the sample rate\0Ais adequate to contain both the video signal and audio subcarriers.\0A\0A16MHz works well with PAL modes, and 13.5MHz for NTSC modes.\0A\0A20.25MHz is ideal for the D/D2-MAC modes, but may not work with all hackrfs.\0A\0ATeletext\0A\0ATeletext is a digital information service transmitted within the VBI lines of\0Athe video signal. Developed in the UK in the 1970s, it was used throughout\0Amuch of Europe until the end of analogue TV in the 2010s.\0A\0Ahacktv supports TTI files. The path can be either a single file or a\0Adirectory. All files in the directory will be loaded.\0A\0ARaw packet sources are also supported with the raw:<source> path name.\0AThe input is expected to be 42 byte teletext packets. Use - for stdin.\0A\0ALines 7-22 and 320-335 are used, 16 lines per field.\0A\0ATeletext support in hacktv is only compatible with 625 line PAL modes.\0ANTSC and SECAM variations exist and may be supported in the future.\0A\0AWSS (Widescreen Signaling)\0A\0AWSS provides a method to signal to a TV the intended aspect ratio of\0Athe video. The following modes are supported:\0A\0A 4:3 = Video is 4:3.\0A 16:9 = Video is 16:9 (Anamorphic).\0A 14:9-letterbox = Crop a 4:3 video to 14:9.\0A 16:9-letterbox = Crop a 4:3 video to 16:9.\0A auto = Automatically switch between 4:3 and 16:9.\0A\0ACurrently only supported in 625 line modes. A 525 line variant exists and\0Amay be supported in future.\0A\0AVideocrypt I\0A\0AA video scrambling system used by the Sky TV analogue satellite service in\0Athe UK in the 1990s. Each line of the image is cut at a point determined by\0Aa pseudorandom number generator, then the two parts are swapped.\0A\0Ahacktv supports the following modes:\0A\0A free = Free-access, no sudirription card is required to decode.\0A conditional = A valid Sky card is required to decode. Sample data from MTV.\0A\0AVideocrypt is only compatiable with 625 line PAL modes. This version\0Aworks best when used with samples rates at multiples of 14MHz.\0A\0AVideocrypt II\0A\0AA variation of Videocrypt I used throughout Europe. The scrambling method is\0Aidentical to VC1, but has a higher VBI data rate.\0A\0Ahacktv supports the following modes:\0A\0A free = Free-access, no sudirription card is required to decode.\0A\0ABoth VC1 and VC2 cannot be used together except if both are in free-access mode.\0A\0AVideocrypt S\0A\0AA variation of Videocrypt II used on the short lived BBC Select service. This\0Amode uses line-shuffling rather than line cut-and-rotate.\0A\0Ahacktv supports the following modes:\0A\0A free = Free-access, no sudirription card is required to decode.\0A conditional = A valid BBC Select card is required to decode. (Does not work yet)\0A\0AAudio inversion is not yet supported.\0A\0ANagravision Syster\0A\0AAnother video scrambling system used in the 1990s in Europe. The video lines\0Aare vertically shuffled within a field.\0A\0ASyster is only compatible with 625 line PAL modes and does not currently work\0Awith most hardware.\0A\0ASome decoders will invert the audio around 12.8 kHz. For these devices you need\0Ato use the --systeraudio option.\0A\0AEurocrypt\0A\0AConditional access (CA) system used by D/D2MAC services, M and S2 versions are\0Asupported.\0A\0Ahacktv supports the following modes:\0A\0A filmnet = (M) A valid FilmNet card is required to decode.\0A tv1000 = (M) A valid Viasat card is required to decode.\0A ctv = (M) A valid CTV card is required to decode.\0A ctvs = (S) A valid CTV card is required to decode.\0A tvplus = (M) A valid TV Plus (Netherlands) card is required to decode.\0A tvs = (S) A valid TVS (Denmark) card is required to decode.\0A rdv = (S) A valid RDV card is required to decode.\0A nrk = (S) A valid NRK card is required to decode.\0A\0AMultiMac style cards can also be used.\0A\00"
define void @print_usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([10651 x i8], [10651 x i8]* @str, i64 0, i64 0))
ret void
}