#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fputs(char const *, int /*<<< orphan*/ *);
void print_common_setup(FILE *f) {
  const char *common_setup =
      "%------------------------------------------------------------------\n"
      "/Times-Roman      /Times-Roman-ISOLatin1 Recode\n"
      "/Times-Bold       /Times-Bold-ISOLatin1 Recode\n"
      "/Courier          /Courier-ISOLatin1 Recode\n"
      "/Courier-Bold     /Courier-Bold-ISOLatin1 Recode\n"
      "/Helvetica        /Helvetica-ISOLatin1 Recode\n"
      "%------------------------------------------------------------------\n"
      "% Based on the paper size, work out the scaling and fontsize for\n"
      "% the page.\n"
      "\n"
      "PaperSizes {\n"
      "        /PaperArray edef\n"
      "        PaperArray 0 get PageSize eq {\n"
      "                /ScaleX PaperArray 2 get A4X div def\n"
      "                /ScaleY PaperArray 1 get A4Y div def\n"
      "                /fontsize PaperArray 3 get def\n"
      "                /linespacing fontsize 1.1 mul def\n"
      "        } if\n"
      "} forall\n";
  fputs(common_setup, f);
}


x86 assembly (clang, -O0):
<print_common_setup>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
lea    0xedd(%rip),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x8(%rbp),%rsi
call   1030 <fputs@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_common_setup>:
mov    %rdi,%rcx
lea    0xee6(%rip),%rdi
mov    $0x2ee,%esi
mov    $0x1,%edx
jmp    1030 <fwrite@plt>

LLVM IR (-O0):
@.str = [751 x i8] c"%------------------------------------------------------------------\0A/Times-Roman /Times-Roman-ISOLatin1 Recode\0A/Times-Bold /Times-Bold-ISOLatin1 Recode\0A/Courier /Courier-ISOLatin1 Recode\0A/Courier-Bold /Courier-Bold-ISOLatin1 Recode\0A/Helvetica /Helvetica-ISOLatin1 Recode\0A%------------------------------------------------------------------\0A% Based on the paper size, work out the scaling and fontsize for\0A% the page.\0A\0APaperSizes {\0A /PaperArray edef\0A PaperArray 0 get PageSize eq {\0A /ScaleX PaperArray 2 get A4X div def\0A /ScaleY PaperArray 1 get A4Y div def\0A /fontsize PaperArray 3 get def\0A /linespacing fontsize 1.1 mul def\0A } if\0A} forall\0A\00"
define void @print_common_setup(i32* %0) {
%2 = alloca i32*
%3 = alloca i8*
store i32* %0, i32** %2
store i8* getelementptr inbounds ([751 x i8], [751 x i8]* @.str, i64 0, i64 0), i8** %3
%4 = load i8*, i8** %3
%5 = load i32*, i32** %2
%6 = call i32 @fputs(i8* %4, i32* %5)
ret void
}

LLVM IR (-O2):
@.str = [751 x i8] c"%------------------------------------------------------------------\0A/Times-Roman /Times-Roman-ISOLatin1 Recode\0A/Times-Bold /Times-Bold-ISOLatin1 Recode\0A/Courier /Courier-ISOLatin1 Recode\0A/Courier-Bold /Courier-Bold-ISOLatin1 Recode\0A/Helvetica /Helvetica-ISOLatin1 Recode\0A%------------------------------------------------------------------\0A% Based on the paper size, work out the scaling and fontsize for\0A% the page.\0A\0APaperSizes {\0A /PaperArray edef\0A PaperArray 0 get PageSize eq {\0A /ScaleX PaperArray 2 get A4X div def\0A /ScaleY PaperArray 1 get A4Y div def\0A /fontsize PaperArray 3 get def\0A /linespacing fontsize 1.1 mul def\0A } if\0A} forall\0A\00"
define void @print_common_setup(i32* nocapture %0) {
%2 = tail call i64 @fwrite(i8* getelementptr inbounds ([751 x i8], [751 x i8]* @.str, i64 0, i64 0), i64 750, i64 1, i32* %0)
ret void
}