#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 usage(void) {
  fprintf(
      stderr,
      "usage: test_dvb file PID [more PIDs...]\n"
      "       record a partial TS stream consisting of TS packets\n"
      "       with the selected PIDs to the given file.\n"
      "       Use PID 0x2000 to record the full TS stream (if\n"
      "       the hardware supports it).\n"
      "       The demux and dvr devices used can be changed by setting\n"
      "       the environment variables DEMUX and DVR.\n"
      "       You can override the input buffer size by setting BUF_SIZE to\n"
      "       the number of bytes wanted.\n"
      "       Note: There is no output buffering, so writing to stdout is\n"
      "       not really supported, but you can try something like:\n"
      "       BUF_SIZE=188 ./test_dvr /dev/stdout 0 2>/dev/null | xxd\n"
      "       ./test_dvr /dev/stdout 0x100 0x110 2>/dev/null| xine "
      "stdin://mpeg2\n"
      "\n");
  exit(1);
}


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

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%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 = [720 x i8] c"usage: test_dvb file PID [more PIDs...]\0A record a partial TS stream consisting of TS packets\0A with the selected PIDs to the given file.\0A Use PID 0x2000 to record the full TS stream (if\0A the hardware supports it).\0A The demux and dvr devices used can be changed by setting\0A the environment variables DEMUX and DVR.\0A You can override the input buffer size by setting BUF_SIZE to\0A the number of bytes wanted.\0A Note: There is no output buffering, so writing to stdout is\0A not really supported, but you can try something like:\0A BUF_SIZE=188 ./test_dvr /dev/stdout 0 2>/dev/null | xxd\0A ./test_dvr /dev/stdout 0x100 0x110 2>/dev/null| xine stdin://mpeg2\0A\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([720 x i8], [720 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [720 x i8] c"usage: test_dvb file PID [more PIDs...]\0A record a partial TS stream consisting of TS packets\0A with the selected PIDs to the given file.\0A Use PID 0x2000 to record the full TS stream (if\0A the hardware supports it).\0A The demux and dvr devices used can be changed by setting\0A the environment variables DEMUX and DVR.\0A You can override the input buffer size by setting BUF_SIZE to\0A the number of bytes wanted.\0A Note: There is no output buffering, so writing to stdout is\0A not really supported, but you can try something like:\0A BUF_SIZE=188 ./test_dvr /dev/stdout 0 2>/dev/null | xxd\0A ./test_dvr /dev/stdout 0x100 0x110 2>/dev/null| xine stdin://mpeg2\0A\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([720 x i8], [720 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}