#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 GLubyte;

/* Variables and functions */
int /*<<< orphan*/ GL_COLOR_BUFFER_BIT;
int /*<<< orphan*/ GL_POLYGON_STIPPLE;
int /*<<< orphan*/ glClear(int /*<<< orphan*/);
int /*<<< orphan*/ glColor3f(float, float, float);
int /*<<< orphan*/ glDisable(int /*<<< orphan*/);
int /*<<< orphan*/ glEnable(int /*<<< orphan*/);
int /*<<< orphan*/ glFlush();
int /*<<< orphan*/ glPolygonStipple(int *);
int /*<<< orphan*/ glRectf(float, float, float, float);
void display(void) {
  GLubyte fly[] = {
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0xC0,
      0x06, 0xC0, 0x03, 0x60, 0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20,
      0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20, 0x04, 0x06, 0x60, 0x20,
      0x44, 0x03, 0xC0, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
      0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
      0x44, 0x01, 0x80, 0x22, 0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC,
      0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, 0x07, 0xe1, 0x87, 0xe0,
      0x03, 0x3f, 0xfc, 0xc0, 0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0,
      0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, 0x18, 0xcc, 0x33, 0x18,
      0x10, 0xc4, 0x23, 0x08, 0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08,
      0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08};
  GLubyte halftone[] = {
      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55};
  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f(1.0f, 1.0f, 1.0f);
  glRectf(25.0f, 25.0f, 125.0f, 125.0f);
  glEnable(GL_POLYGON_STIPPLE);
  glPolygonStipple(fly);
  glRectf(125.0f, 25.0f, 225.0f, 125.0f);
  glPolygonStipple(halftone);
  glRectf(225.0f, 25.0f, 325.0f, 125.0f);
  glDisable(GL_POLYGON_STIPPLE);
  glFlush();
}


x86 assembly (clang, -O0):
<display>:
push   %rbp
mov    %rsp,%rbp
sub    $0x400,%rsp
lea    -0x200(%rbp),%rdi
lea    0xe87(%rip),%rsi
mov    $0x200,%edx
call   1070 <memcpy@plt>
lea    -0x400(%rbp),%rdi
lea    0x106f(%rip),%rsi
mov    $0x200,%edx
call   1070 <memcpy@plt>
mov    0x2e16(%rip),%rax
mov    (%rax),%edi
call   1040 <glClear@plt>
movss  0xe3f(%rip),%xmm2
movaps %xmm2,%xmm0
movaps %xmm2,%xmm1
call   1080 <glColor3f@plt>
movss  0xe20(%rip),%xmm1
movss  0xe20(%rip),%xmm3
movaps %xmm1,%xmm0
movaps %xmm3,%xmm2
call   1060 <glRectf@plt>
mov    0x2dfa(%rip),%rax
mov    (%rax),%edi
call   1050 <glEnable@plt>
lea    -0x200(%rbp),%rdi
call   1030 <glPolygonStipple@plt>
movss  0xdf3(%rip),%xmm3
movss  0xde3(%rip),%xmm1
movss  0xdd7(%rip),%xmm2
movaps %xmm3,%xmm0
call   1060 <glRectf@plt>
lea    -0x400(%rbp),%rdi
call   1030 <glPolygonStipple@plt>
movss  0xdbb(%rip),%xmm0
movss  0xdb7(%rip),%xmm1
movss  0xdb3(%rip),%xmm2
movss  0xdaf(%rip),%xmm3
call   1060 <glRectf@plt>
mov    0x2d8f(%rip),%rax
mov    (%rax),%edi
call   10a0 <glDisable@plt>
mov    $0x0,%al
call   1090 <glFlush@plt>
add    $0x400,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<display>:
push   %r15
push   %r14
push   %rbx
sub    $0x400,%rsp
lea    0xe8d(%rip),%rsi
lea    0x200(%rsp),%r15
mov    $0x200,%edx
mov    %r15,%rdi
call   1070 <memcpy@plt>
lea    0x1071(%rip),%rsi
mov    %rsp,%r14
mov    $0x200,%edx
mov    %r14,%rdi
call   1070 <memcpy@plt>
mov    0x2e12(%rip),%rax
mov    (%rax),%edi
call   1040 <glClear@plt>
movss  0xe2b(%rip),%xmm0
movaps %xmm0,%xmm1
movaps %xmm0,%xmm2
call   1080 <glColor3f@plt>
movss  0xe1c(%rip),%xmm0
movss  0xe18(%rip),%xmm2
movaps %xmm0,%xmm1
movaps %xmm2,%xmm3
call   1060 <glRectf@plt>
mov    0x2df6(%rip),%rbx
mov    (%rbx),%edi
call   1050 <glEnable@plt>
mov    %r15,%rdi
call   1030 <glPolygonStipple@plt>
movss  0xdf3(%rip),%xmm2
movss  0xde7(%rip),%xmm0
movss  0xddb(%rip),%xmm1
movaps %xmm0,%xmm3
call   1060 <glRectf@plt>
mov    %r14,%rdi
call   1030 <glPolygonStipple@plt>
movss  0xdcf(%rip),%xmm2
movss  0xdc3(%rip),%xmm0
movss  0xdb3(%rip),%xmm1
movss  0xdaf(%rip),%xmm3
call   1060 <glRectf@plt>
mov    (%rbx),%edi
call   10a0 <glDisable@plt>
xor    %eax,%eax
call   1090 <glFlush@plt>
add    $0x400,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@__const.display.fly = [128 x i32] [i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3, i32 128, i32 1, i32 192, i32 6, i32 192, i32 3, i32 96, i32 4, i32 96, i32 6, i32 32, i32 4, i32 48, i32 12, i32 32, i32 4, i32 24, i32 24, i32 32, i32 4, i32 12, i32 48, i32 32, i32 4, i32 6, i32 96, i32 32, i32 68, i32 3, i32 192, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 102, i32 1, i32 128, i32 102, i32 51, i32 1, i32 128, i32 204, i32 25, i32 129, i32 129, i32 152, i32 12, i32 193, i32 131, i32 48, i32 7, i32 225, i32 135, i32 224, i32 3, i32 63, i32 252, i32 192, i32 3, i32 49, i32 140, i32 192, i32 3, i32 51, i32 204, i32 192, i32 6, i32 100, i32 38, i32 96, i32 12, i32 204, i32 51, i32 48, i32 24, i32 204, i32 51, i32 24, i32 16, i32 196, i32 35, i32 8, i32 16, i32 99, i32 198, i32 8, i32 16, i32 48, i32 12, i32 8, i32 16, i32 24, i32 24, i32 8, i32 16, i32 0, i32 0, i32 8]
@__const.display.halftone = [128 x i32] [i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85]
@GL_COLOR_BUFFER_BIT = global i32 0
@GL_POLYGON_STIPPLE = global i32 0
define void @display() {
%1 = alloca [128 x i32]
%2 = alloca [128 x i32]
%3 = bitcast [128 x i32]* %1 to i8*
%4 = bitcast [128 x i32]* %2 to i8*
%5 = load i32, i32* @GL_COLOR_BUFFER_BIT
%6 = call i32 @glClear(i32 %5)
%7 = call i32 @glColor3f(float 1.000000e+00, float 1.000000e+00, float 1.000000e+00)
%8 = call i32 @glRectf(float 2.500000e+01, float 2.500000e+01, float 1.250000e+02, float 1.250000e+02)
%9 = load i32, i32* @GL_POLYGON_STIPPLE
%10 = call i32 @glEnable(i32 %9)
%11 = getelementptr inbounds [128 x i32], [128 x i32]* %1, i64 0, i64 0
%12 = call i32 @glPolygonStipple(i32* %11)
%13 = call i32 @glRectf(float 1.250000e+02, float 2.500000e+01, float 2.250000e+02, float 1.250000e+02)
%14 = getelementptr inbounds [128 x i32], [128 x i32]* %2, i64 0, i64 0
%15 = call i32 @glPolygonStipple(i32* %14)
%16 = call i32 @glRectf(float 2.250000e+02, float 2.500000e+01, float 3.250000e+02, float 1.250000e+02)
%17 = load i32, i32* @GL_POLYGON_STIPPLE
%18 = call i32 @glDisable(i32 %17)
%19 = call i32 (...) @glFlush()
ret void
}

LLVM IR (-O2):
@__const.display.fly = [128 x i32] [i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3, i32 128, i32 1, i32 192, i32 6, i32 192, i32 3, i32 96, i32 4, i32 96, i32 6, i32 32, i32 4, i32 48, i32 12, i32 32, i32 4, i32 24, i32 24, i32 32, i32 4, i32 12, i32 48, i32 32, i32 4, i32 6, i32 96, i32 32, i32 68, i32 3, i32 192, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 68, i32 1, i32 128, i32 34, i32 102, i32 1, i32 128, i32 102, i32 51, i32 1, i32 128, i32 204, i32 25, i32 129, i32 129, i32 152, i32 12, i32 193, i32 131, i32 48, i32 7, i32 225, i32 135, i32 224, i32 3, i32 63, i32 252, i32 192, i32 3, i32 49, i32 140, i32 192, i32 3, i32 51, i32 204, i32 192, i32 6, i32 100, i32 38, i32 96, i32 12, i32 204, i32 51, i32 48, i32 24, i32 204, i32 51, i32 24, i32 16, i32 196, i32 35, i32 8, i32 16, i32 99, i32 198, i32 8, i32 16, i32 48, i32 12, i32 8, i32 16, i32 24, i32 24, i32 8, i32 16, i32 0, i32 0, i32 8]
@__const.display.halftone = [128 x i32] [i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85, i32 170, i32 170, i32 170, i32 170, i32 85, i32 85, i32 85, i32 85]
@GL_COLOR_BUFFER_BIT = global i32 0
@GL_POLYGON_STIPPLE = global i32 0
define void @display() {
%1 = alloca [128 x i32]
%2 = alloca [128 x i32]
%3 = bitcast [128 x i32]* %1 to i8*
%4 = bitcast [128 x i32]* %2 to i8*
%5 = load i32, i32* @GL_COLOR_BUFFER_BIT
%6 = tail call i32 @glClear(i32 %5)
%7 = tail call i32 @glColor3f(float 1.000000e+00, float 1.000000e+00, float 1.000000e+00)
%8 = tail call i32 @glRectf(float 2.500000e+01, float 2.500000e+01, float 1.250000e+02, float 1.250000e+02)
%9 = load i32, i32* @GL_POLYGON_STIPPLE
%10 = tail call i32 @glEnable(i32 %9)
%11 = getelementptr inbounds [128 x i32], [128 x i32]* %1, i64 0, i64 0
%12 = call i32 @glPolygonStipple(i32* %11)
%13 = call i32 @glRectf(float 1.250000e+02, float 2.500000e+01, float 2.250000e+02, float 1.250000e+02)
%14 = getelementptr inbounds [128 x i32], [128 x i32]* %2, i64 0, i64 0
%15 = call i32 @glPolygonStipple(i32* %14)
%16 = call i32 @glRectf(float 2.250000e+02, float 2.500000e+01, float 3.250000e+02, float 1.250000e+02)
%17 = load i32, i32* @GL_POLYGON_STIPPLE
%18 = call i32 @glDisable(i32 %17)
%19 = call i32 (...) @glFlush()
ret void
}