#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);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void yuvscaler_print_usage(char *argv[]) {
  fprintf(
      stderr,
      "usage: yuvscaler -I [input_keyword] -M [mode_keyword] -O "
      "[output_keyword] [-S 0|1] [-n p|s|n] [-v 0-2] [-h]\n"
      "yuvscaler UPscales or DOWNscales arbitrary-sized YUV frames coming from "
      "stdin (in YUV4MPEG 4:2:2 format)\n"
      "to a specified YUV frame sizes to stdout. Please use yuvcorrect for "
      "interlacing or color corrections\n"
      "\n"
      "yuvscaler is keyword driven :\n"
      "\t -I for keyword concerning INPUT  frame characteristics\n"
      "\t -M for keyword concerning the scaling MODE of yuvscaler\n"
      "\t -O for keyword concerning OUTPUT frame characteristics\n"
      "\n"
      "Possible input keyword are:\n"
      "\t USE_WidthxHeight+WidthOffset+HeightOffset to select a useful area of "
      "the input frame (all multiple of 2,\n"
      "\t    Height and HeightOffset multiple of 4 if interlaced), the rest of "
      "the image being discarded\n"
      "\t ACTIVE_WidthxHeight+WidthOffset+HeightOffset to select an active "
      "area of the input frame (all multiple of 2,\n"
      "\t    Height and HeightOffset multiple of 4 if interlaced), the rest of "
      "the image being made black\n"
      "\n"
      "Possible mode keyword are:\n"
      "\t BICUBIC       to use the (Mitchell-Netravalli) high-quality bicubic "
      "upscaling and/or downscaling algorithm\n"
      "\t RESAMPLE      to use a classical resampling algorithm -only for "
      "downscaling- that goes much faster than bicubic\n"
      "\t For coherence reason, yuvscaler will use RESAMPLE if only "
      "downscaling is necessary, BICUBIC otherwise\n"
      "\t WIDE2STD      to converts widescreen (16:9) input frames to standard "
      "output (4:3), generating necessary black lines\n"
      "\t RATIO_WidthIn_WidthOut_HeightIn_HeightOut to specified conversion "
      "ratios of\n"
      "\t     WidthIn/WidthOut for width and HeightIN/HeightOut for height to "
      "be applied to the useful area.\n"
      "\t     The output active area that results from scaling the input "
      "useful area might be different\n"
      "\t     from the display area specified thereafter using the -O KEYWORD "
      "syntax.\n"
      "\t     In that case, yuvscaler will automatically generate necessary "
      "black lines and columns and/or skip necessary\n"
      "\t     lines and columns to get an active output centered within the "
      "display size.\n"
      "\t WIDE2VCD      to transcode wide (16:9) frames  to VCD (equivalent to "
      "-M WIDE2STD -O VCD)\n"
      "\t FASTVCD       to transcode full sized frames to VCD (equivalent to "
      "-M RATIO_2_1_2_1 -O VCD)\n"
      "\t FAST_WIDE2VCD to transcode full sized wide (16:9) frames to VCD (-M "
      "WIDE2STD -M RATIO_2_1_2_1 -O VCD)\n"
      "\t NO_HEADER     to suppress stream header generation on output "
      "(chaining scaling with different ratios)\n"
      "\t By default, yuvscaler will use either interlaced or not-interlaced "
      "scaling according to the input header interlace information.\n"
      "\t If this information is missing in the header (cf. mpeg2dec), "
      "yuvscaler will use interlaced acaling\n"
      "\n"
      "Possible output keywords are:\n"
      "\t MONOCHROME to generate monochrome frames on output\n"
      "\t  VCD to generate  VCD compliant frames, taking care of PAL and NTSC "
      "standards, not-interlaced/progressive frames\n"
      "\t SVCD to generate SVCD compliant frames, taking care of PAL and NTSC "
      "standards, any interlacing types\n"
      "\t  DVD to generate  DVD compliant frames, taking care of PAL and NTSC "
      "standards, any interlacing types\n"
      "\t      (SVCD and DVD: if input is not-interlaced/progressive, output "
      "interlacing will be taken as top_first)\n"
      "\t HIRESSTILL to generate HIgh-RESolution STILL images: "
      "not-interlaced/progressive frames of size 704x(PAL-576,NTSC-480)\n"
      "\t LOSVCDSTILL to generate LOw-resolution SVCD still images, "
      "not-interlaced/progressive frames, size 480x(PAL-576,NTSC-480)\n"
      "\t LOVCDSTILL  to generate LOw-resolution  VCD still images, "
      "not-interlaced/progressive frames, size 352x(PAL-288,NTSC-240)\n"
      "\t SIZE_WidthxHeight to generate frames of size WidthxHeight on output "
      "(multiple of 2, Height of 4 if interlaced)\n"
      "\n"
      "-n  (usually not necessary) if norm could not be determined from data "
      "flux, specifies the OUTPUT norm for VCD/SVCD p=pal,s=secam,n=ntsc\n"
      "-v  Specifies the degree of verbosity: 0=quiet, 1=normal, "
      "2=verbose/debug\n"
      "-h : print this lot!\n");
  exit(1);
}


x86 assembly (clang, -O0):
<yuvscaler_print_usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x3ead(%rip),%rax
mov    (%rax),%edi
lea    0xec4(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<yuvscaler_print_usage>:
push   %rax
mov    0x3eb8(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [3831 x i8] c"usage: yuvscaler -I [input_keyword] -M [mode_keyword] -O [output_keyword] [-S 0|1] [-n p|s|n] [-v 0-2] [-h]\0Ayuvscaler UPscales or DOWNscales arbitrary-sized YUV frames coming from stdin (in YUV4MPEG 4:2:2 format)\0Ato a specified YUV frame sizes to stdout. Please use yuvcorrect for interlacing or color corrections\0A\0Ayuvscaler is keyword driven :\0A\09 -I for keyword concerning INPUT frame characteristics\0A\09 -M for keyword concerning the scaling MODE of yuvscaler\0A\09 -O for keyword concerning OUTPUT frame characteristics\0A\0APossible input keyword are:\0A\09 USE_WidthxHeight+WidthOffset+HeightOffset to select a useful area of the input frame (all multiple of 2,\0A\09 Height and HeightOffset multiple of 4 if interlaced), the rest of the image being discarded\0A\09 ACTIVE_WidthxHeight+WidthOffset+HeightOffset to select an active area of the input frame (all multiple of 2,\0A\09 Height and HeightOffset multiple of 4 if interlaced), the rest of the image being made black\0A\0APossible mode keyword are:\0A\09 BICUBIC to use the (Mitchell-Netravalli) high-quality bicubic upscaling and/or downscaling algorithm\0A\09 RESAMPLE to use a classical resampling algorithm -only for downscaling- that goes much faster than bicubic\0A\09 For coherence reason, yuvscaler will use RESAMPLE if only downscaling is necessary, BICUBIC otherwise\0A\09 WIDE2STD to converts widescreen (16:9) input frames to standard output (4:3), generating necessary black lines\0A\09 RATIO_WidthIn_WidthOut_HeightIn_HeightOut to specified conversion ratios of\0A\09 WidthIn/WidthOut for width and HeightIN/HeightOut for height to be applied to the useful area.\0A\09 The output active area that results from scaling the input useful area might be different\0A\09 from the display area specified thereafter using the -O KEYWORD syntax.\0A\09 In that case, yuvscaler will automatically generate necessary black lines and columns and/or skip necessary\0A\09 lines and columns to get an active output centered within the display size.\0A\09 WIDE2VCD to transcode wide (16:9) frames to VCD (equivalent to -M WIDE2STD -O VCD)\0A\09 FASTVCD to transcode full sized frames to VCD (equivalent to -M RATIO_2_1_2_1 -O VCD)\0A\09 FAST_WIDE2VCD to transcode full sized wide (16:9) frames to VCD (-M WIDE2STD -M RATIO_2_1_2_1 -O VCD)\0A\09 NO_HEADER to suppress stream header generation on output (chaining scaling with different ratios)\0A\09 By default, yuvscaler will use either interlaced or not-interlaced scaling according to the input header interlace information.\0A\09 If this information is missing in the header (cf. mpeg2dec), yuvscaler will use interlaced acaling\0A\0APossible output keywords are:\0A\09 MONOCHROME to generate monochrome frames on output\0A\09 VCD to generate VCD compliant frames, taking care of PAL and NTSC standards, not-interlaced/progressive frames\0A\09 SVCD to generate SVCD compliant frames, taking care of PAL and NTSC standards, any interlacing types\0A\09 DVD to generate DVD compliant frames, taking care of PAL and NTSC standards, any interlacing types\0A\09 (SVCD and DVD: if input is not-interlaced/progressive, output interlacing will be taken as top_first)\0A\09 HIRESSTILL to generate HIgh-RESolution STILL images: not-interlaced/progressive frames of size 704x(PAL-576,NTSC-480)\0A\09 LOSVCDSTILL to generate LOw-resolution SVCD still images, not-interlaced/progressive frames, size 480x(PAL-576,NTSC-480)\0A\09 LOVCDSTILL to generate LOw-resolution VCD still images, not-interlaced/progressive frames, size 352x(PAL-288,NTSC-240)\0A\09 SIZE_WidthxHeight to generate frames of size WidthxHeight on output (multiple of 2, Height of 4 if interlaced)\0A\0A-n (usually not necessary) if norm could not be determined from data flux, specifies the OUTPUT norm for VCD/SVCD p=pal,s=secam,n=ntsc\0A-v Specifies the degree of verbosity: 0=quiet, 1=normal, 2=verbose/debug\0A-h : print this lot!\0A\00"
define void @yuvscaler_print_usage(i8** %0) {
%2 = alloca i8**
store i8** %0, i8*** %2
%3 = load i32, i32* @stderr
%4 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([3831 x i8], [3831 x i8]* @.str, i64 0, i64 0))
%5 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [3831 x i8] c"usage: yuvscaler -I [input_keyword] -M [mode_keyword] -O [output_keyword] [-S 0|1] [-n p|s|n] [-v 0-2] [-h]\0Ayuvscaler UPscales or DOWNscales arbitrary-sized YUV frames coming from stdin (in YUV4MPEG 4:2:2 format)\0Ato a specified YUV frame sizes to stdout. Please use yuvcorrect for interlacing or color corrections\0A\0Ayuvscaler is keyword driven :\0A\09 -I for keyword concerning INPUT frame characteristics\0A\09 -M for keyword concerning the scaling MODE of yuvscaler\0A\09 -O for keyword concerning OUTPUT frame characteristics\0A\0APossible input keyword are:\0A\09 USE_WidthxHeight+WidthOffset+HeightOffset to select a useful area of the input frame (all multiple of 2,\0A\09 Height and HeightOffset multiple of 4 if interlaced), the rest of the image being discarded\0A\09 ACTIVE_WidthxHeight+WidthOffset+HeightOffset to select an active area of the input frame (all multiple of 2,\0A\09 Height and HeightOffset multiple of 4 if interlaced), the rest of the image being made black\0A\0APossible mode keyword are:\0A\09 BICUBIC to use the (Mitchell-Netravalli) high-quality bicubic upscaling and/or downscaling algorithm\0A\09 RESAMPLE to use a classical resampling algorithm -only for downscaling- that goes much faster than bicubic\0A\09 For coherence reason, yuvscaler will use RESAMPLE if only downscaling is necessary, BICUBIC otherwise\0A\09 WIDE2STD to converts widescreen (16:9) input frames to standard output (4:3), generating necessary black lines\0A\09 RATIO_WidthIn_WidthOut_HeightIn_HeightOut to specified conversion ratios of\0A\09 WidthIn/WidthOut for width and HeightIN/HeightOut for height to be applied to the useful area.\0A\09 The output active area that results from scaling the input useful area might be different\0A\09 from the display area specified thereafter using the -O KEYWORD syntax.\0A\09 In that case, yuvscaler will automatically generate necessary black lines and columns and/or skip necessary\0A\09 lines and columns to get an active output centered within the display size.\0A\09 WIDE2VCD to transcode wide (16:9) frames to VCD (equivalent to -M WIDE2STD -O VCD)\0A\09 FASTVCD to transcode full sized frames to VCD (equivalent to -M RATIO_2_1_2_1 -O VCD)\0A\09 FAST_WIDE2VCD to transcode full sized wide (16:9) frames to VCD (-M WIDE2STD -M RATIO_2_1_2_1 -O VCD)\0A\09 NO_HEADER to suppress stream header generation on output (chaining scaling with different ratios)\0A\09 By default, yuvscaler will use either interlaced or not-interlaced scaling according to the input header interlace information.\0A\09 If this information is missing in the header (cf. mpeg2dec), yuvscaler will use interlaced acaling\0A\0APossible output keywords are:\0A\09 MONOCHROME to generate monochrome frames on output\0A\09 VCD to generate VCD compliant frames, taking care of PAL and NTSC standards, not-interlaced/progressive frames\0A\09 SVCD to generate SVCD compliant frames, taking care of PAL and NTSC standards, any interlacing types\0A\09 DVD to generate DVD compliant frames, taking care of PAL and NTSC standards, any interlacing types\0A\09 (SVCD and DVD: if input is not-interlaced/progressive, output interlacing will be taken as top_first)\0A\09 HIRESSTILL to generate HIgh-RESolution STILL images: not-interlaced/progressive frames of size 704x(PAL-576,NTSC-480)\0A\09 LOSVCDSTILL to generate LOw-resolution SVCD still images, not-interlaced/progressive frames, size 480x(PAL-576,NTSC-480)\0A\09 LOVCDSTILL to generate LOw-resolution VCD still images, not-interlaced/progressive frames, size 352x(PAL-288,NTSC-240)\0A\09 SIZE_WidthxHeight to generate frames of size WidthxHeight on output (multiple of 2, Height of 4 if interlaced)\0A\0A-n (usually not necessary) if norm could not be determined from data flux, specifies the OUTPUT norm for VCD/SVCD p=pal,s=secam,n=ntsc\0A-v Specifies the degree of verbosity: 0=quiet, 1=normal, 2=verbose/debug\0A-h : print this lot!\0A\00"
define void @yuvscaler_print_usage(i8** nocapture readnone %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([3831 x i8], [3831 x i8]* @.str, i64 0, i64 0))
%4 = tail call i32 @exit(i32 1)
unreachable
}