#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_prolog(FILE *f) {
  const char *common_prolog =
      "/Recode {\n"
      "  exch\n"
      "  findfont\n"
      "  dup length dict\n"
      "  begin\n"
      "    { def } forall\n"
      "    /Encoding ISOLatin1Encoding def\n"
      "    currentdict\n"
      "  end\n"
      "  definefont pop\n"
      "} bind def\n\n"
      "/inch {72 mul} def\n"
      "/edef { exch def } def\n"
      "/esub { exch sub } def\n"
      "/l    { lineto } def\n"
      "/m    { moveto } def\n"
      "/rm   { rmoveto } def\n"
      "/rl   { rlineto } def\n"
      "/strw { stringwidth } def\n"
      "/nstr 10 string def\n"
      "/slw  { setlinewidth } def\n"
      "\n"
      "%------------------------------------------------------------------\n"
      "/CenterText {\n"
      "    dup strw pop 2 div 5 2 roll 3 -1 roll dup 3 1 roll sub 2 div\n"
      "    add 3 -1 roll sub exch m show\n"
      "} def\n"
      "/RightText { dup strw pop 4 -1 roll exch sub 3 -1 roll m show } def\n"
      "%------------------------------------------------------------------\n"
      "% Should leave the minimum of 2 values on the stack\n"
      "\n"
      "/Min { 2 copy gt { exch } if pop } def\n"
      "\n"
      "%------------------------------------------------------------------\n"
      "% This is an array of paper sizes lifted from ghostview; the A4\n"
      "% definitions are here because we scale everything else relative to\n"
      "% an A4 page.\n"
      "\n"
      "/A4X 842 def\n"
      "/A4Y 595 def\n"
      "\n"
      "/PaperSizes [\n"
      "        [ (Letter)       612     792 10 ]\n"
      "        [ (Legal)        612    1008 10 ]\n"
      "        [ (Statement)    396     612 10 ]\n"
      "        [ (Tabloid)      792    1224 10 ]\n"
      "        [ (Ledger)      1224     792 10 ]\n"
      "        [ (Folio)        612     936 10 ]\n"
      "        [ (Quarto)       610     780 10 ]\n"
      "        [ (7x9)          504     648 10 ]\n"
      "        [ (9x11)         648     792 10 ]\n"
      "        [ (9x12)         648     864 10 ]\n"
      "        [ (10x13)        720     936 10 ]\n"
      "        [ (10x14)        720    1008 10 ]\n"
      "        [ (Executive)    540     720 10 ]\n"
      "        [ (A0)          2384    3370 10 ]\n"
      "        [ (A1)          1684    2384 10 ]\n"
      "        [ (A2)          1191    1684 10 ]\n"
      "        [ (A3)           842    1191  9 ]\n"
      "        [ (A4)           595     842 10 ]\n"
      "        [ (A5)           420     595 12 ]\n"
      "        [ (A6)           297     420 10 ]\n"
      "        [ (A7)           210     297 10 ]\n"
      "        [ (A8)           148     210 10 ]\n"
      "        [ (A9)           105     148 10 ]\n"
      "        [ (A10)           73     105 10 ]\n"
      "        [ (B0)          2920    4127 10 ]\n"
      "        [ (B1)          2064    2920 10 ]\n"
      "        [ (B2)          1460    2064 10 ]\n"
      "        [ (B3)          1032    1460 10 ]\n"
      "        [ (B4)           729    1032 10 ]\n"
      "        [ (B5)           516     729 10 ]\n"
      "        [ (B6)           363     516 10 ]\n"
      "        [ (B7)           258     363 10 ]\n"
      "        [ (B8)           181     258 10 ]\n"
      "        [ (B9)           127     181 10 ]\n"
      "        [ (B10)           91     127 10 ]\n"
      "        [ (ISOB0)       2835    4008 10 ]\n"
      "        [ (ISOB1)       2004    2835 10 ]\n"
      "        [ (ISOB2)       1417    2004 10 ]\n"
      "        [ (ISOB3)       1001    1417 10 ]\n"
      "        [ (ISOB4)        709    1001 10 ]\n"
      "        [ (ISOB5)        499     709 10 ]\n"
      "        [ (ISOB6)        354     499 10 ]\n"
      "        [ (ISOB7)        249     354 10 ]\n"
      "        [ (ISOB8)        176     249 10 ]\n"
      "        [ (ISOB9)        125     176 10 ]\n"
      "        [ (ISOB10)        88     125 10 ]\n"
      "        [ (C0)          2599    3676 10 ]\n"
      "        [ (C1)          1837    2599 10 ]\n"
      "        [ (C2)          1298    1837 10 ]\n"
      "        [ (C3)           918    1296 10 ]\n"
      "        [ (C4)           649     918 10 ]\n"
      "        [ (C5)           459     649 10 ]\n"
      "        [ (C6)           323     459 10 ]\n"
      "        [ (C7)           230     323 10 ]\n"
      "        [ (DL)           312     624 10 ]\n"
      "        [ (Filo)         270     487 12 ]\n"
      "] def\n"
      "\n";
  fputs(common_prolog, f);
}


x86 assembly (clang, -O0):
<print_common_prolog>:
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_prolog>:
mov    %rdi,%rcx
lea    0xee6(%rip),%rdi
mov    $0xd58,%esi
mov    $0x1,%edx
jmp    1030 <fwrite@plt>

LLVM IR (-O0):
@.str = [3417 x i8] c"/Recode {\0A exch\0A findfont\0A dup length dict\0A begin\0A { def } forall\0A /Encoding ISOLatin1Encoding def\0A currentdict\0A end\0A definefont pop\0A} bind def\0A\0A/inch {72 mul} def\0A/edef { exch def } def\0A/esub { exch sub } def\0A/l { lineto } def\0A/m { moveto } def\0A/rm { rmoveto } def\0A/rl { rlineto } def\0A/strw { stringwidth } def\0A/nstr 10 string def\0A/slw { setlinewidth } def\0A\0A%------------------------------------------------------------------\0A/CenterText {\0A dup strw pop 2 div 5 2 roll 3 -1 roll dup 3 1 roll sub 2 div\0A add 3 -1 roll sub exch m show\0A} def\0A/RightText { dup strw pop 4 -1 roll exch sub 3 -1 roll m show } def\0A%------------------------------------------------------------------\0A% Should leave the minimum of 2 values on the stack\0A\0A/Min { 2 copy gt { exch } if pop } def\0A\0A%------------------------------------------------------------------\0A% This is an array of paper sizes lifted from ghostview; the A4\0A% definitions are here because we scale everything else relative to\0A% an A4 page.\0A\0A/A4X 842 def\0A/A4Y 595 def\0A\0A/PaperSizes [\0A [ (Letter) 612 792 10 ]\0A [ (Legal) 612 1008 10 ]\0A [ (Statement) 396 612 10 ]\0A [ (Tabloid) 792 1224 10 ]\0A [ (Ledger) 1224 792 10 ]\0A [ (Folio) 612 936 10 ]\0A [ (Quarto) 610 780 10 ]\0A [ (7x9) 504 648 10 ]\0A [ (9x11) 648 792 10 ]\0A [ (9x12) 648 864 10 ]\0A [ (10x13) 720 936 10 ]\0A [ (10x14) 720 1008 10 ]\0A [ (Executive) 540 720 10 ]\0A [ (A0) 2384 3370 10 ]\0A [ (A1) 1684 2384 10 ]\0A [ (A2) 1191 1684 10 ]\0A [ (A3) 842 1191 9 ]\0A [ (A4) 595 842 10 ]\0A [ (A5) 420 595 12 ]\0A [ (A6) 297 420 10 ]\0A [ (A7) 210 297 10 ]\0A [ (A8) 148 210 10 ]\0A [ (A9) 105 148 10 ]\0A [ (A10) 73 105 10 ]\0A [ (B0) 2920 4127 10 ]\0A [ (B1) 2064 2920 10 ]\0A [ (B2) 1460 2064 10 ]\0A [ (B3) 1032 1460 10 ]\0A [ (B4) 729 1032 10 ]\0A [ (B5) 516 729 10 ]\0A [ (B6) 363 516 10 ]\0A [ (B7) 258 363 10 ]\0A [ (B8) 181 258 10 ]\0A [ (B9) 127 181 10 ]\0A [ (B10) 91 127 10 ]\0A [ (ISOB0) 2835 4008 10 ]\0A [ (ISOB1) 2004 2835 10 ]\0A [ (ISOB2) 1417 2004 10 ]\0A [ (ISOB3) 1001 1417 10 ]\0A [ (ISOB4) 709 1001 10 ]\0A [ (ISOB5) 499 709 10 ]\0A [ (ISOB6) 354 499 10 ]\0A [ (ISOB7) 249 354 10 ]\0A [ (ISOB8) 176 249 10 ]\0A [ (ISOB9) 125 176 10 ]\0A [ (ISOB10) 88 125 10 ]\0A [ (C0) 2599 3676 10 ]\0A [ (C1) 1837 2599 10 ]\0A [ (C2) 1298 1837 10 ]\0A [ (C3) 918 1296 10 ]\0A [ (C4) 649 918 10 ]\0A [ (C5) 459 649 10 ]\0A [ (C6) 323 459 10 ]\0A [ (C7) 230 323 10 ]\0A [ (DL) 312 624 10 ]\0A [ (Filo) 270 487 12 ]\0A] def\0A\0A\00"
define void @print_common_prolog(i32* %0) {
%2 = alloca i32*
%3 = alloca i8*
store i32* %0, i32** %2
store i8* getelementptr inbounds ([3417 x i8], [3417 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 = [3417 x i8] c"/Recode {\0A exch\0A findfont\0A dup length dict\0A begin\0A { def } forall\0A /Encoding ISOLatin1Encoding def\0A currentdict\0A end\0A definefont pop\0A} bind def\0A\0A/inch {72 mul} def\0A/edef { exch def } def\0A/esub { exch sub } def\0A/l { lineto } def\0A/m { moveto } def\0A/rm { rmoveto } def\0A/rl { rlineto } def\0A/strw { stringwidth } def\0A/nstr 10 string def\0A/slw { setlinewidth } def\0A\0A%------------------------------------------------------------------\0A/CenterText {\0A dup strw pop 2 div 5 2 roll 3 -1 roll dup 3 1 roll sub 2 div\0A add 3 -1 roll sub exch m show\0A} def\0A/RightText { dup strw pop 4 -1 roll exch sub 3 -1 roll m show } def\0A%------------------------------------------------------------------\0A% Should leave the minimum of 2 values on the stack\0A\0A/Min { 2 copy gt { exch } if pop } def\0A\0A%------------------------------------------------------------------\0A% This is an array of paper sizes lifted from ghostview; the A4\0A% definitions are here because we scale everything else relative to\0A% an A4 page.\0A\0A/A4X 842 def\0A/A4Y 595 def\0A\0A/PaperSizes [\0A [ (Letter) 612 792 10 ]\0A [ (Legal) 612 1008 10 ]\0A [ (Statement) 396 612 10 ]\0A [ (Tabloid) 792 1224 10 ]\0A [ (Ledger) 1224 792 10 ]\0A [ (Folio) 612 936 10 ]\0A [ (Quarto) 610 780 10 ]\0A [ (7x9) 504 648 10 ]\0A [ (9x11) 648 792 10 ]\0A [ (9x12) 648 864 10 ]\0A [ (10x13) 720 936 10 ]\0A [ (10x14) 720 1008 10 ]\0A [ (Executive) 540 720 10 ]\0A [ (A0) 2384 3370 10 ]\0A [ (A1) 1684 2384 10 ]\0A [ (A2) 1191 1684 10 ]\0A [ (A3) 842 1191 9 ]\0A [ (A4) 595 842 10 ]\0A [ (A5) 420 595 12 ]\0A [ (A6) 297 420 10 ]\0A [ (A7) 210 297 10 ]\0A [ (A8) 148 210 10 ]\0A [ (A9) 105 148 10 ]\0A [ (A10) 73 105 10 ]\0A [ (B0) 2920 4127 10 ]\0A [ (B1) 2064 2920 10 ]\0A [ (B2) 1460 2064 10 ]\0A [ (B3) 1032 1460 10 ]\0A [ (B4) 729 1032 10 ]\0A [ (B5) 516 729 10 ]\0A [ (B6) 363 516 10 ]\0A [ (B7) 258 363 10 ]\0A [ (B8) 181 258 10 ]\0A [ (B9) 127 181 10 ]\0A [ (B10) 91 127 10 ]\0A [ (ISOB0) 2835 4008 10 ]\0A [ (ISOB1) 2004 2835 10 ]\0A [ (ISOB2) 1417 2004 10 ]\0A [ (ISOB3) 1001 1417 10 ]\0A [ (ISOB4) 709 1001 10 ]\0A [ (ISOB5) 499 709 10 ]\0A [ (ISOB6) 354 499 10 ]\0A [ (ISOB7) 249 354 10 ]\0A [ (ISOB8) 176 249 10 ]\0A [ (ISOB9) 125 176 10 ]\0A [ (ISOB10) 88 125 10 ]\0A [ (C0) 2599 3676 10 ]\0A [ (C1) 1837 2599 10 ]\0A [ (C2) 1298 1837 10 ]\0A [ (C3) 918 1296 10 ]\0A [ (C4) 649 918 10 ]\0A [ (C5) 459 649 10 ]\0A [ (C6) 323 459 10 ]\0A [ (C7) 230 323 10 ]\0A [ (DL) 312 624 10 ]\0A [ (Filo) 270 487 12 ]\0A] def\0A\0A\00"
define void @print_common_prolog(i32* nocapture %0) {
%2 = tail call i64 @fwrite(i8* getelementptr inbounds ([3417 x i8], [3417 x i8]* @.str, i64 0, i64 0), i64 3416, i64 1, i32* %0)
ret void
}