#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*/ fputs(char *, int /*<<< orphan*/);
int /*<<< orphan*/ stderr;
void usage(void) {
  fputs(
      "Program to stabilize a video stream.\n"
      "Works only non-interlaced yuv4mpeg streams for now.\n"
      "\n"
      "Usage: y4mstabilizer [-v] [-a <alpha>] [-r <srchRadius>]\n"
      "\n"
      "	-v		Verbose.  Repeat -v to increase verbosity/debug info\n"
      "	-a <alpha>	A \"viscosity\" measure (see below).\n"
      "	-r <srchRadius>	How far to look for movement.\n"
      "	-s <stride>	How far apart the motion search points are.\n"
      "	-n		Do not supersample the chroma to get 1-pixel shifts.\n"
      "	-i		Try alternate interlaced mode (does not work yet)\n"
      "\n"
      "Legal <alpha> values are beween 0 and 1.\n"
      "Useful <alpha> values are beween 0.7 (or so) and .95.\n"
      "Higher values resist panning more at the expense of greater\n"
      "shifting.  <alpha> defaults to 0.95, a fairly high value, on the "
      "theory\n"
      "that you probably have some significant vibrations that need "
      "smoothing.\n"
      "Separate alpha values for the X- and Y-axes can be specified by "
      "separating\n"
      "them with a colon.  For example,\n"
      "	-a 0.7:0.9\n"
      "would set the X-axis alpha to 0.7, and the Y-axis alpha to 0.9.  Thus,\n"
      "the stabilizer would be much more responsive to side-to-side movement,\n"
      "while resisting up-and-down motion.\n"
      "\n"
      "The <srchRadius> defaults to 15.  Smaller values speed things up,\n"
      "but won't be able to cope with large/fast movements as well.\n"
      "\n"
      "The <stride> defaults to 48 pixels.  Giving a larger number here will\n"
      "speed the process tremendously, but makes it easier for the motion "
      "search\n"
      "to be fooled by local movement.  Use a smaller number if the search "
      "seems\n"
      "to be following local movements.\n"
      "\n"
      "No file arguments are needed since this is a filter only program.\n"
      "\n"
      "This program presently works best when given 444, deinterlaced input.\n"
      "Very good results can be obtained with the following pipeline:\n"
      "    ... | yuvdeinterlace | \\\n"
      "	   y4mscaler -v 0 -O sar=src -O chromass=444 | \\\n"
      "	   y4mstabilizer | \\\n"
      "	   y4mscaler -v 0 -O sar=src -O chromass=420_MPEG2 | ...\n",
      stderr);
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%esi
lea    0xecc(%rip),%rdi
call   1030 <fputs@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%esi
lea    0xecf(%rip),%rdi
call   1030 <fputs@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [1809 x i8] c"Program to stabilize a video stream.\0AWorks only non-interlaced yuv4mpeg streams for now.\0A\0AUsage: y4mstabilizer [-v] [-a <alpha>] [-r <srchRadius>]\0A\0A\09-v\09\09Verbose. Repeat -v to increase verbosity/debug info\0A\09-a <alpha>\09A \22viscosity\22 measure (see below).\0A\09-r <srchRadius>\09How far to look for movement.\0A\09-s <stride>\09How far apart the motion search points are.\0A\09-n\09\09Do not supersample the chroma to get 1-pixel shifts.\0A\09-i\09\09Try alternate interlaced mode (does not work yet)\0A\0ALegal <alpha> values are beween 0 and 1.\0AUseful <alpha> values are beween 0.7 (or so) and .95.\0AHigher values resist panning more at the expense of greater\0Ashifting. <alpha> defaults to 0.95, a fairly high value, on the theory\0Athat you probably have some significant vibrations that need smoothing.\0ASeparate alpha values for the X- and Y-axes can be specified by separating\0Athem with a colon. For example,\0A\09-a 0.7:0.9\0Awould set the X-axis alpha to 0.7, and the Y-axis alpha to 0.9. Thus,\0Athe stabilizer would be much more responsive to side-to-side movement,\0Awhile resisting up-and-down motion.\0A\0AThe <srchRadius> defaults to 15. Smaller values speed things up,\0Abut won't be able to cope with large/fast movements as well.\0A\0AThe <stride> defaults to 48 pixels. Giving a larger number here will\0Aspeed the process tremendously, but makes it easier for the motion search\0Ato be fooled by local movement. Use a smaller number if the search seems\0Ato be following local movements.\0A\0ANo file arguments are needed since this is a filter only program.\0A\0AThis program presently works best when given 444, deinterlaced input.\0AVery good results can be obtained with the following pipeline:\0A ... | yuvdeinterlace | \\\0A\09 y4mscaler -v 0 -O sar=src -O chromass=444 | \\\0A\09 y4mstabilizer | \\\0A\09 y4mscaler -v 0 -O sar=src -O chromass=420_MPEG2 | ...\0A\00"
@stderr = global i32 0
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fputs(i8* getelementptr inbounds ([1809 x i8], [1809 x i8]* @.str, i64 0, i64 0), i32 %1)
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@.str = [1809 x i8] c"Program to stabilize a video stream.\0AWorks only non-interlaced yuv4mpeg streams for now.\0A\0AUsage: y4mstabilizer [-v] [-a <alpha>] [-r <srchRadius>]\0A\0A\09-v\09\09Verbose. Repeat -v to increase verbosity/debug info\0A\09-a <alpha>\09A \22viscosity\22 measure (see below).\0A\09-r <srchRadius>\09How far to look for movement.\0A\09-s <stride>\09How far apart the motion search points are.\0A\09-n\09\09Do not supersample the chroma to get 1-pixel shifts.\0A\09-i\09\09Try alternate interlaced mode (does not work yet)\0A\0ALegal <alpha> values are beween 0 and 1.\0AUseful <alpha> values are beween 0.7 (or so) and .95.\0AHigher values resist panning more at the expense of greater\0Ashifting. <alpha> defaults to 0.95, a fairly high value, on the theory\0Athat you probably have some significant vibrations that need smoothing.\0ASeparate alpha values for the X- and Y-axes can be specified by separating\0Athem with a colon. For example,\0A\09-a 0.7:0.9\0Awould set the X-axis alpha to 0.7, and the Y-axis alpha to 0.9. Thus,\0Athe stabilizer would be much more responsive to side-to-side movement,\0Awhile resisting up-and-down motion.\0A\0AThe <srchRadius> defaults to 15. Smaller values speed things up,\0Abut won't be able to cope with large/fast movements as well.\0A\0AThe <stride> defaults to 48 pixels. Giving a larger number here will\0Aspeed the process tremendously, but makes it easier for the motion search\0Ato be fooled by local movement. Use a smaller number if the search seems\0Ato be following local movements.\0A\0ANo file arguments are needed since this is a filter only program.\0A\0AThis program presently works best when given 444, deinterlaced input.\0AVery good results can be obtained with the following pipeline:\0A ... | yuvdeinterlace | \\\0A\09 y4mscaler -v 0 -O sar=src -O chromass=444 | \\\0A\09 y4mstabilizer | \\\0A\09 y4mscaler -v 0 -O sar=src -O chromass=420_MPEG2 | ...\0A\00"
@stderr = global i32 0
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fputs(i8* getelementptr inbounds ([1809 x i8], [1809 x i8]* @.str, i64 0, i64 0), i32 %1)
%3 = tail call i32 @exit(i32 1)
unreachable
}