#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*/ drawLine(double, double, double, double);
int main(void) {
  int x = 50;
  int y = 40;
  drawLine(-26.95 + x, 13.18 + y, -26.95 + x, -13.18 + y);
  drawLine(-26.95 + x, -13.18 + y, -6.55 + x, -29.27 + y);
  drawLine(-6.55 + x, -29.27 + y, 18.75 + x, -23.42 + y);
  drawLine(18.75 + x, -23.42 + y, 30.00 + x, 0.00 + y);
  drawLine(30.00 + x, 0.00 + y, 18.75 + x, 23.42 + y);
  drawLine(18.75 + x, 23.42 + y, -6.55 + x, 29.27 + y);
  drawLine(-6.55 + x, 29.27 + y, -26.95 + x, 13.18 + y);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x32,-0x8(%rbp)
movl   $0x28,-0xc(%rbp)
cvtsi2sdl -0x8(%rbp),%xmm1
movsd  0xece(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm2
movsd  0xeb5(%rip),%xmm1
addsd  %xmm2,%xmm1
cvtsi2sdl -0x8(%rbp),%xmm3
movsd  0xeac(%rip),%xmm2
addsd  %xmm3,%xmm2
cvtsi2sdl -0xc(%rbp),%xmm4
movsd  0xedb(%rip),%xmm3
addsd  %xmm4,%xmm3
call   1030 <drawLine@plt>
cvtsi2sdl -0x8(%rbp),%xmm1
movsd  0xe85(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm2
movsd  0xeb4(%rip),%xmm1
addsd  %xmm2,%xmm1
cvtsi2sdl -0x8(%rbp),%xmm3
movsd  0xe73(%rip),%xmm2
addsd  %xmm3,%xmm2
cvtsi2sdl -0xc(%rbp),%xmm4
movsd  0xe8a(%rip),%xmm3
addsd  %xmm4,%xmm3
call   1030 <drawLine@plt>
cvtsi2sdl -0x8(%rbp),%xmm1
movsd  0xe4c(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm2
movsd  0xe63(%rip),%xmm1
addsd  %xmm2,%xmm1
cvtsi2sdl -0x8(%rbp),%xmm3
movsd  0xe3a(%rip),%xmm2
addsd  %xmm3,%xmm2
cvtsi2sdl -0xc(%rbp),%xmm4
movsd  0xe39(%rip),%xmm3
addsd  %xmm4,%xmm3
call   1030 <drawLine@plt>
cvtsi2sdl -0x8(%rbp),%xmm1
movsd  0xe13(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm2
movsd  0xe12(%rip),%xmm1
addsd  %xmm2,%xmm1
cvtsi2sdl -0x8(%rbp),%xmm3
movsd  0xdf9(%rip),%xmm2
addsd  %xmm3,%xmm2
cvtsi2sdl -0xc(%rbp),%xmm4
xorps  %xmm3,%xmm3
addsd  %xmm4,%xmm3
call   1030 <drawLine@plt>
cvtsi2sdl -0x8(%rbp),%xmm1
movsd  0xdd7(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm2,%xmm1
cvtsi2sdl -0x8(%rbp),%xmm3
movsd  0xdb2(%rip),%xmm2
addsd  %xmm3,%xmm2
cvtsi2sdl -0xc(%rbp),%xmm4
movsd  0xd99(%rip),%xmm3
addsd  %xmm4,%xmm3
call   1030 <drawLine@plt>
cvtsi2sdl -0x8(%rbp),%xmm1
movsd  0xd8b(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm2
movsd  0xd72(%rip),%xmm1
addsd  %xmm2,%xmm1
cvtsi2sdl -0x8(%rbp),%xmm3
movsd  0xd59(%rip),%xmm2
addsd  %xmm3,%xmm2
cvtsi2sdl -0xc(%rbp),%xmm4
movsd  0xd40(%rip),%xmm3
addsd  %xmm4,%xmm3
call   1030 <drawLine@plt>
cvtsi2sdl -0x8(%rbp),%xmm1
movsd  0xd32(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm2
movsd  0xd19(%rip),%xmm1
addsd  %xmm2,%xmm1
cvtsi2sdl -0x8(%rbp),%xmm3
movsd  0xd00(%rip),%xmm2
addsd  %xmm3,%xmm2
cvtsi2sdl -0xc(%rbp),%xmm4
movsd  0xce7(%rip),%xmm3
addsd  %xmm4,%xmm3
call   1030 <drawLine@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
movsd  0xee7(%rip),%xmm1
movsd  0xee7(%rip),%xmm0
movsd  0xee7(%rip),%xmm3
movaps %xmm0,%xmm2
call   1030 <drawLine@plt>
movsd  0xedf(%rip),%xmm2
movsd  0xedf(%rip),%xmm3
movsd  0xebf(%rip),%xmm0
movsd  0xebf(%rip),%xmm1
call   1030 <drawLine@plt>
movsd  0xeca(%rip),%xmm2
movsd  0xeca(%rip),%xmm3
movsd  0xeaa(%rip),%xmm0
movsd  0xeaa(%rip),%xmm1
call   1030 <drawLine@plt>
movsd  0xeb5(%rip),%xmm2
movsd  0xeb5(%rip),%xmm3
movsd  0xe95(%rip),%xmm0
movsd  0xe95(%rip),%xmm1
call   1030 <drawLine@plt>
movsd  0xea0(%rip),%xmm3
movsd  0xe88(%rip),%xmm0
movsd  0xe88(%rip),%xmm1
movsd  0xe68(%rip),%xmm2
call   1030 <drawLine@plt>
movsd  0xe83(%rip),%xmm3
movsd  0xe53(%rip),%xmm0
movsd  0xe6b(%rip),%xmm1
movsd  0xe33(%rip),%xmm2
call   1030 <drawLine@plt>
movsd  0xe26(%rip),%xmm0
movsd  0xe56(%rip),%xmm1
movsd  0xe06(%rip),%xmm2
movsd  0xdf6(%rip),%xmm3
call   1030 <drawLine@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
store i32 0, i32* %1
store i32 50, i32* %2
store i32 40, i32* %3
%4 = load i32, i32* %2
%5 = sitofp i32 %4 to double
%6 = fadd double -2.695000e+01, %5
%7 = load i32, i32* %3
%8 = sitofp i32 %7 to double
%9 = fadd double 1.318000e+01, %8
%10 = load i32, i32* %2
%11 = sitofp i32 %10 to double
%12 = fadd double -2.695000e+01, %11
%13 = load i32, i32* %3
%14 = sitofp i32 %13 to double
%15 = fadd double -1.318000e+01, %14
%16 = call i32 @drawLine(double %6, double %9, double %12, double %15)
%17 = load i32, i32* %2
%18 = sitofp i32 %17 to double
%19 = fadd double -2.695000e+01, %18
%20 = load i32, i32* %3
%21 = sitofp i32 %20 to double
%22 = fadd double -1.318000e+01, %21
%23 = load i32, i32* %2
%24 = sitofp i32 %23 to double
%25 = fadd double -6.550000e+00, %24
%26 = load i32, i32* %3
%27 = sitofp i32 %26 to double
%28 = fadd double -2.927000e+01, %27
%29 = call i32 @drawLine(double %19, double %22, double %25, double %28)
%30 = load i32, i32* %2
%31 = sitofp i32 %30 to double
%32 = fadd double -6.550000e+00, %31
%33 = load i32, i32* %3
%34 = sitofp i32 %33 to double
%35 = fadd double -2.927000e+01, %34
%36 = load i32, i32* %2
%37 = sitofp i32 %36 to double
%38 = fadd double 1.875000e+01, %37
%39 = load i32, i32* %3
%40 = sitofp i32 %39 to double
%41 = fadd double -2.342000e+01, %40
%42 = call i32 @drawLine(double %32, double %35, double %38, double %41)
%43 = load i32, i32* %2
%44 = sitofp i32 %43 to double
%45 = fadd double 1.875000e+01, %44
%46 = load i32, i32* %3
%47 = sitofp i32 %46 to double
%48 = fadd double -2.342000e+01, %47
%49 = load i32, i32* %2
%50 = sitofp i32 %49 to double
%51 = fadd double 3.000000e+01, %50
%52 = load i32, i32* %3
%53 = sitofp i32 %52 to double
%54 = fadd double 0.000000e+00, %53
%55 = call i32 @drawLine(double %45, double %48, double %51, double %54)
%56 = load i32, i32* %2
%57 = sitofp i32 %56 to double
%58 = fadd double 3.000000e+01, %57
%59 = load i32, i32* %3
%60 = sitofp i32 %59 to double
%61 = fadd double 0.000000e+00, %60
%62 = load i32, i32* %2
%63 = sitofp i32 %62 to double
%64 = fadd double 1.875000e+01, %63
%65 = load i32, i32* %3
%66 = sitofp i32 %65 to double
%67 = fadd double 2.342000e+01, %66
%68 = call i32 @drawLine(double %58, double %61, double %64, double %67)
%69 = load i32, i32* %2
%70 = sitofp i32 %69 to double
%71 = fadd double 1.875000e+01, %70
%72 = load i32, i32* %3
%73 = sitofp i32 %72 to double
%74 = fadd double 2.342000e+01, %73
%75 = load i32, i32* %2
%76 = sitofp i32 %75 to double
%77 = fadd double -6.550000e+00, %76
%78 = load i32, i32* %3
%79 = sitofp i32 %78 to double
%80 = fadd double 2.927000e+01, %79
%81 = call i32 @drawLine(double %71, double %74, double %77, double %80)
%82 = load i32, i32* %2
%83 = sitofp i32 %82 to double
%84 = fadd double -6.550000e+00, %83
%85 = load i32, i32* %3
%86 = sitofp i32 %85 to double
%87 = fadd double 2.927000e+01, %86
%88 = load i32, i32* %2
%89 = sitofp i32 %88 to double
%90 = fadd double -2.695000e+01, %89
%91 = load i32, i32* %3
%92 = sitofp i32 %91 to double
%93 = fadd double 1.318000e+01, %92
%94 = call i32 @drawLine(double %84, double %87, double %90, double %93)
ret i32 0
}

LLVM IR (-O2):
define i32 @main() {
%1 = tail call i32 @drawLine(double 2.305000e+01, double 5.318000e+01, double 2.305000e+01, double 2.682000e+01)
%2 = tail call i32 @drawLine(double 2.305000e+01, double 2.682000e+01, double 4.345000e+01, double 1.073000e+01)
%3 = tail call i32 @drawLine(double 4.345000e+01, double 1.073000e+01, double 6.875000e+01, double 1.658000e+01)
%4 = tail call i32 @drawLine(double 6.875000e+01, double 1.658000e+01, double 8.000000e+01, double 4.000000e+01)
%5 = tail call i32 @drawLine(double 8.000000e+01, double 4.000000e+01, double 6.875000e+01, double 6.342000e+01)
%6 = tail call i32 @drawLine(double 6.875000e+01, double 6.342000e+01, double 4.345000e+01, double 6.927000e+01)
%7 = tail call i32 @drawLine(double 4.345000e+01, double 6.927000e+01, double 2.305000e+01, double 5.318000e+01)
ret i32 0
}