#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*/ BarT(float, float, float, float, float, float, float, float,
                        float, float, float, float, int, int, int, int, int);
void QUAD(float x1, float y1, float z1, float x2, float y2, float z2, float x3,
          float y3, float z3, float x4, float y4, float z4, float zz, int t1,
          int t2, int t3, int t4, int t5, int t6, int a) {
  BarT(x2, y2, z2, x3, y3, z3, x4, y4, z4, x1, y1, z1, 255, 255, 255, a, t1);
  BarT(x2, y2, z2 + zz, x3, y3, z3 + zz, x4, y4, z4 + zz, x1, y1, z1 + zz, 255,
       255, 255, a, t2);
  BarT(x1, y1, z1, x2, y2, z2, x2, y2, z2 + zz, x1, y1, z1 + zz, 255, 255, 255,
       a, t3);
  BarT(x4, y4, z4, x3, y3, z3, x3, y3, z3 + zz, x4, y4, z4 + zz, 255, 255, 255,
       a, t4);
  BarT(x1, y1, z1, x4, y4, z4, x4, y4, z4 + zz, x1, y1, z1 + zz, 255, 255, 255,
       a, t5);
  BarT(x2, y2, z2, x3, y3, z3, x3, y3, z3 + zz, x2, y2, z2 + zz, 255, 255, 255,
       a, t6);
}


x86 assembly (clang, -O0):
<QUAD>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0x38(%rbp),%eax
movss  0x30(%rbp),%xmm8
movss  0x28(%rbp),%xmm8
movss  0x20(%rbp),%xmm8
movss  0x18(%rbp),%xmm8
movss  0x10(%rbp),%xmm8
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
movss  %xmm3,-0x10(%rbp)
movss  %xmm4,-0x14(%rbp)
movss  %xmm5,-0x18(%rbp)
movss  %xmm6,-0x1c(%rbp)
movss  %xmm7,-0x20(%rbp)
mov    %edi,-0x24(%rbp)
mov    %esi,-0x28(%rbp)
mov    %edx,-0x2c(%rbp)
mov    %ecx,-0x30(%rbp)
mov    %r8d,-0x34(%rbp)
mov    %r9d,-0x38(%rbp)
movss  -0x10(%rbp),%xmm0
movss  -0x14(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
movss  -0x1c(%rbp),%xmm3
movss  -0x20(%rbp),%xmm4
movss  0x10(%rbp),%xmm5
movss  0x18(%rbp),%xmm6
movss  0x20(%rbp),%xmm7
movss  0x28(%rbp),%xmm11
movss  -0x4(%rbp),%xmm10
movss  -0x8(%rbp),%xmm9
movss  -0xc(%rbp),%xmm8
mov    0x38(%rbp),%ecx
mov    -0x24(%rbp),%r8d
mov    $0xff,%edx
movss  %xmm11,(%rsp)
movss  %xmm10,0x8(%rsp)
movss  %xmm9,0x10(%rsp)
movss  %xmm8,0x18(%rsp)
mov    %edx,%edi
mov    %edx,%esi
call   1030 <BarT@plt>
movss  -0x10(%rbp),%xmm0
movss  -0x14(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
addss  0x30(%rbp),%xmm2
movss  -0x1c(%rbp),%xmm3
movss  -0x20(%rbp),%xmm4
movss  0x10(%rbp),%xmm5
addss  0x30(%rbp),%xmm5
movss  0x18(%rbp),%xmm6
movss  0x20(%rbp),%xmm7
movss  0x28(%rbp),%xmm11
addss  0x30(%rbp),%xmm11
movss  -0x4(%rbp),%xmm10
movss  -0x8(%rbp),%xmm9
movss  -0xc(%rbp),%xmm8
addss  0x30(%rbp),%xmm8
mov    0x38(%rbp),%ecx
mov    -0x28(%rbp),%r8d
mov    $0xff,%edx
movss  %xmm11,(%rsp)
movss  %xmm10,0x8(%rsp)
movss  %xmm9,0x10(%rsp)
movss  %xmm8,0x18(%rsp)
mov    %edx,%edi
mov    %edx,%esi
call   1030 <BarT@plt>
movss  -0x4(%rbp),%xmm0
movss  -0x8(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
movss  -0x10(%rbp),%xmm3
movss  -0x14(%rbp),%xmm4
movss  -0x18(%rbp),%xmm5
movss  -0x10(%rbp),%xmm6
movss  -0x14(%rbp),%xmm7
movss  -0x18(%rbp),%xmm11
addss  0x30(%rbp),%xmm11
movss  -0x4(%rbp),%xmm10
movss  -0x8(%rbp),%xmm9
movss  -0xc(%rbp),%xmm8
addss  0x30(%rbp),%xmm8
mov    0x38(%rbp),%ecx
mov    -0x2c(%rbp),%r8d
mov    $0xff,%edx
movss  %xmm11,(%rsp)
movss  %xmm10,0x8(%rsp)
movss  %xmm9,0x10(%rsp)
movss  %xmm8,0x18(%rsp)
mov    %edx,%edi
mov    %edx,%esi
call   1030 <BarT@plt>
movss  0x18(%rbp),%xmm0
movss  0x20(%rbp),%xmm1
movss  0x28(%rbp),%xmm2
movss  -0x1c(%rbp),%xmm3
movss  -0x20(%rbp),%xmm4
movss  0x10(%rbp),%xmm5
movss  -0x1c(%rbp),%xmm6
movss  -0x20(%rbp),%xmm7
movss  0x10(%rbp),%xmm11
addss  0x30(%rbp),%xmm11
movss  0x18(%rbp),%xmm10
movss  0x20(%rbp),%xmm9
movss  0x28(%rbp),%xmm8
addss  0x30(%rbp),%xmm8
mov    0x38(%rbp),%ecx
mov    -0x30(%rbp),%r8d
mov    $0xff,%edx
movss  %xmm11,(%rsp)
movss  %xmm10,0x8(%rsp)
movss  %xmm9,0x10(%rsp)
movss  %xmm8,0x18(%rsp)
mov    %edx,%edi
mov    %edx,%esi
call   1030 <BarT@plt>
movss  -0x4(%rbp),%xmm0
movss  -0x8(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
movss  0x18(%rbp),%xmm3
movss  0x20(%rbp),%xmm4
movss  0x28(%rbp),%xmm5
movss  0x18(%rbp),%xmm6
movss  0x20(%rbp),%xmm7
movss  0x28(%rbp),%xmm11
addss  0x30(%rbp),%xmm11
movss  -0x4(%rbp),%xmm10
movss  -0x8(%rbp),%xmm9
movss  -0xc(%rbp),%xmm8
addss  0x30(%rbp),%xmm8
mov    0x38(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    $0xff,%edx
movss  %xmm11,(%rsp)
movss  %xmm10,0x8(%rsp)
movss  %xmm9,0x10(%rsp)
movss  %xmm8,0x18(%rsp)
mov    %edx,%edi
mov    %edx,%esi
call   1030 <BarT@plt>
movss  -0x10(%rbp),%xmm0
movss  -0x14(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
movss  -0x1c(%rbp),%xmm3
movss  -0x20(%rbp),%xmm4
movss  0x10(%rbp),%xmm5
movss  -0x1c(%rbp),%xmm6
movss  -0x20(%rbp),%xmm7
movss  0x10(%rbp),%xmm11
addss  0x30(%rbp),%xmm11
movss  -0x10(%rbp),%xmm10
movss  -0x14(%rbp),%xmm9
movss  -0x18(%rbp),%xmm8
addss  0x30(%rbp),%xmm8
mov    0x38(%rbp),%ecx
mov    -0x38(%rbp),%r8d
mov    $0xff,%edx
movss  %xmm11,(%rsp)
movss  %xmm10,0x8(%rsp)
movss  %xmm9,0x10(%rsp)
movss  %xmm8,0x18(%rsp)
mov    %edx,%edi
mov    %edx,%esi
call   1030 <BarT@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<QUAD>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %r9d,%r14d
mov    %r8d,%r15d
mov    %ecx,%r12d
mov    %edx,%r13d
mov    %esi,%ebx
mov    %edi,%r8d
movaps %xmm7,%xmm8
movss  %xmm7,0x3c(%rsp)
movaps %xmm6,%xmm9
movss  %xmm6,0x38(%rsp)
movaps %xmm5,%xmm10
movss  %xmm5,0x44(%rsp)
movss  %xmm4,0x30(%rsp)
movss  %xmm3,0x34(%rsp)
movss  %xmm2,0x40(%rsp)
movss  %xmm1,0x2c(%rsp)
movss  %xmm0,0x28(%rsp)
movss  0x90(%rsp),%xmm5
movss  0x98(%rsp),%xmm6
movss  0xa0(%rsp),%xmm7
mov    0xb8(%rsp),%ebp
movss  0xa8(%rsp),%xmm11
movss  %xmm2,0x18(%rsp)
movss  %xmm1,0x10(%rsp)
movss  %xmm0,0x8(%rsp)
movss  %xmm11,(%rsp)
movaps %xmm3,%xmm0
movaps %xmm4,%xmm1
movaps %xmm10,%xmm2
movaps %xmm9,%xmm3
movaps %xmm8,%xmm4
mov    $0xff,%edi
mov    $0xff,%esi
mov    $0xff,%edx
mov    %ebp,%ecx
call   1030 <BarT@plt>
movss  0x44(%rsp),%xmm0
movss  0xb0(%rsp),%xmm1
addss  %xmm1,%xmm0
movaps %xmm0,%xmm2
movss  %xmm0,0x50(%rsp)
movss  0x90(%rsp),%xmm0
addss  %xmm1,%xmm0
movaps %xmm0,%xmm5
movss  %xmm0,0x54(%rsp)
movss  0xa8(%rsp),%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,0x48(%rsp)
addss  0x40(%rsp),%xmm1
movss  %xmm1,0x4c(%rsp)
movss  %xmm1,0x18(%rsp)
movss  0x2c(%rsp),%xmm1
movss  %xmm1,0x10(%rsp)
movss  0x28(%rsp),%xmm1
movss  %xmm1,0x8(%rsp)
movss  %xmm0,(%rsp)
movss  0x34(%rsp),%xmm0
movss  0x30(%rsp),%xmm1
movss  0x38(%rsp),%xmm3
movss  0x3c(%rsp),%xmm4
movss  0x98(%rsp),%xmm6
movss  0xa0(%rsp),%xmm7
mov    $0xff,%edi
mov    $0xff,%esi
mov    $0xff,%edx
mov    %ebp,%ecx
mov    %ebx,%r8d
call   1030 <BarT@plt>
movss  0x4c(%rsp),%xmm0
movss  %xmm0,0x18(%rsp)
movss  0x2c(%rsp),%xmm1
movss  %xmm1,0x10(%rsp)
movss  0x28(%rsp),%xmm0
movss  %xmm0,0x8(%rsp)
movss  0x50(%rsp),%xmm2
movss  %xmm2,(%rsp)
movss  0x40(%rsp),%xmm2
movss  0x34(%rsp),%xmm3
movss  0x30(%rsp),%xmm4
movss  0x44(%rsp),%xmm5
movaps %xmm3,%xmm6
movaps %xmm4,%xmm7
mov    $0xff,%edi
mov    $0xff,%esi
mov    $0xff,%edx
mov    %ebp,%ecx
mov    %r13d,%r8d
call   1030 <BarT@plt>
movss  0x48(%rsp),%xmm0
movss  %xmm0,0x18(%rsp)
movss  0xa0(%rsp),%xmm1
movss  %xmm1,0x10(%rsp)
movss  0x98(%rsp),%xmm0
movss  %xmm0,0x8(%rsp)
movss  0x54(%rsp),%xmm2
movss  %xmm2,(%rsp)
movss  0xa8(%rsp),%xmm2
movss  0x38(%rsp),%xmm3
movss  0x3c(%rsp),%xmm4
movss  0x90(%rsp),%xmm5
movaps %xmm3,%xmm6
movaps %xmm4,%xmm7
mov    $0xff,%edi
mov    $0xff,%esi
mov    $0xff,%edx
mov    %ebp,%ecx
mov    %r12d,%r8d
call   1030 <BarT@plt>
movss  0x4c(%rsp),%xmm0
movss  %xmm0,0x18(%rsp)
movss  0x2c(%rsp),%xmm1
movss  %xmm1,0x10(%rsp)
movss  0x28(%rsp),%xmm2
movss  %xmm2,0x8(%rsp)
movss  0x48(%rsp),%xmm0
movss  %xmm0,(%rsp)
movaps %xmm2,%xmm0
movss  0x40(%rsp),%xmm2
movss  0x98(%rsp),%xmm3
movss  0xa0(%rsp),%xmm4
movss  0xa8(%rsp),%xmm5
movaps %xmm3,%xmm6
movaps %xmm4,%xmm7
mov    $0xff,%edi
mov    $0xff,%esi
mov    $0xff,%edx
mov    %ebp,%ecx
mov    %r15d,%r8d
call   1030 <BarT@plt>
movss  0x50(%rsp),%xmm0
movss  %xmm0,0x18(%rsp)
movss  0x30(%rsp),%xmm1
movss  %xmm1,0x10(%rsp)
movss  0x34(%rsp),%xmm2
movss  %xmm2,0x8(%rsp)
movss  0x54(%rsp),%xmm0
movss  %xmm0,(%rsp)
movaps %xmm2,%xmm0
movss  0x44(%rsp),%xmm2
movss  0x38(%rsp),%xmm3
movss  0x3c(%rsp),%xmm4
movss  0x90(%rsp),%xmm5
movaps %xmm3,%xmm6
movaps %xmm4,%xmm7
mov    $0xff,%edi
mov    $0xff,%esi
mov    $0xff,%edx
mov    %ebp,%ecx
mov    %r14d,%r8d
call   1030 <BarT@plt>
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @QUAD(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7, float %8, float %9, float %10, float %11, float %12, i32 %13, i32 %14, i32 %15, i32 %16, i32 %17, i32 %18, i32 %19) {
%21 = alloca float
%22 = alloca float
%23 = alloca float
%24 = alloca float
%25 = alloca float
%26 = alloca float
%27 = alloca float
%28 = alloca float
%29 = alloca float
%30 = alloca float
%31 = alloca float
%32 = alloca float
%33 = alloca float
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
store float %0, float* %21
store float %1, float* %22
store float %2, float* %23
store float %3, float* %24
store float %4, float* %25
store float %5, float* %26
store float %6, float* %27
store float %7, float* %28
store float %8, float* %29
store float %9, float* %30
store float %10, float* %31
store float %11, float* %32
store float %12, float* %33
store i32 %13, i32* %34
store i32 %14, i32* %35
store i32 %15, i32* %36
store i32 %16, i32* %37
store i32 %17, i32* %38
store i32 %18, i32* %39
store i32 %19, i32* %40
%41 = load float, float* %24
%42 = load float, float* %25
%43 = load float, float* %26
%44 = load float, float* %27
%45 = load float, float* %28
%46 = load float, float* %29
%47 = load float, float* %30
%48 = load float, float* %31
%49 = load float, float* %32
%50 = load float, float* %21
%51 = load float, float* %22
%52 = load float, float* %23
%53 = load i32, i32* %40
%54 = load i32, i32* %34
%55 = call i32 @BarT(float %41, float %42, float %43, float %44, float %45, float %46, float %47, float %48, float %49, float %50, float %51, float %52, i32 255, i32 255, i32 255, i32 %53, i32 %54)
%56 = load float, float* %24
%57 = load float, float* %25
%58 = load float, float* %26
%59 = load float, float* %33
%60 = fadd float %58, %59
%61 = load float, float* %27
%62 = load float, float* %28
%63 = load float, float* %29
%64 = load float, float* %33
%65 = fadd float %63, %64
%66 = load float, float* %30
%67 = load float, float* %31
%68 = load float, float* %32
%69 = load float, float* %33
%70 = fadd float %68, %69
%71 = load float, float* %21
%72 = load float, float* %22
%73 = load float, float* %23
%74 = load float, float* %33
%75 = fadd float %73, %74
%76 = load i32, i32* %40
%77 = load i32, i32* %35
%78 = call i32 @BarT(float %56, float %57, float %60, float %61, float %62, float %65, float %66, float %67, float %70, float %71, float %72, float %75, i32 255, i32 255, i32 255, i32 %76, i32 %77)
%79 = load float, float* %21
%80 = load float, float* %22
%81 = load float, float* %23
%82 = load float, float* %24
%83 = load float, float* %25
%84 = load float, float* %26
%85 = load float, float* %24
%86 = load float, float* %25
%87 = load float, float* %26
%88 = load float, float* %33
%89 = fadd float %87, %88
%90 = load float, float* %21
%91 = load float, float* %22
%92 = load float, float* %23
%93 = load float, float* %33
%94 = fadd float %92, %93
%95 = load i32, i32* %40
%96 = load i32, i32* %36
%97 = call i32 @BarT(float %79, float %80, float %81, float %82, float %83, float %84, float %85, float %86, float %89, float %90, float %91, float %94, i32 255, i32 255, i32 255, i32 %95, i32 %96)
%98 = load float, float* %30
%99 = load float, float* %31
%100 = load float, float* %32
%101 = load float, float* %27
%102 = load float, float* %28
%103 = load float, float* %29
%104 = load float, float* %27
%105 = load float, float* %28
%106 = load float, float* %29
%107 = load float, float* %33
%108 = fadd float %106, %107
%109 = load float, float* %30
%110 = load float, float* %31
%111 = load float, float* %32
%112 = load float, float* %33
%113 = fadd float %111, %112
%114 = load i32, i32* %40
%115 = load i32, i32* %37
%116 = call i32 @BarT(float %98, float %99, float %100, float %101, float %102, float %103, float %104, float %105, float %108, float %109, float %110, float %113, i32 255, i32 255, i32 255, i32 %114, i32 %115)
%117 = load float, float* %21
%118 = load float, float* %22
%119 = load float, float* %23
%120 = load float, float* %30
%121 = load float, float* %31
%122 = load float, float* %32
%123 = load float, float* %30
%124 = load float, float* %31
%125 = load float, float* %32
%126 = load float, float* %33
%127 = fadd float %125, %126
%128 = load float, float* %21
%129 = load float, float* %22
%130 = load float, float* %23
%131 = load float, float* %33
%132 = fadd float %130, %131
%133 = load i32, i32* %40
%134 = load i32, i32* %38
%135 = call i32 @BarT(float %117, float %118, float %119, float %120, float %121, float %122, float %123, float %124, float %127, float %128, float %129, float %132, i32 255, i32 255, i32 255, i32 %133, i32 %134)
%136 = load float, float* %24
%137 = load float, float* %25
%138 = load float, float* %26
%139 = load float, float* %27
%140 = load float, float* %28
%141 = load float, float* %29
%142 = load float, float* %27
%143 = load float, float* %28
%144 = load float, float* %29
%145 = load float, float* %33
%146 = fadd float %144, %145
%147 = load float, float* %24
%148 = load float, float* %25
%149 = load float, float* %26
%150 = load float, float* %33
%151 = fadd float %149, %150
%152 = load i32, i32* %40
%153 = load i32, i32* %39
%154 = call i32 @BarT(float %136, float %137, float %138, float %139, float %140, float %141, float %142, float %143, float %146, float %147, float %148, float %151, i32 255, i32 255, i32 255, i32 %152, i32 %153)
ret void
}

LLVM IR (-O2):
define void @QUAD(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7, float %8, float %9, float %10, float %11, float %12, i32 %13, i32 %14, i32 %15, i32 %16, i32 %17, i32 %18, i32 %19) {
%21 = tail call i32 @BarT(float %3, float %4, float %5, float %6, float %7, float %8, float %9, float %10, float %11, float %0, float %1, float %2, i32 255, i32 255, i32 255, i32 %19, i32 %13)
%22 = fadd float %5, %12
%23 = fadd float %8, %12
%24 = fadd float %11, %12
%25 = fadd float %2, %12
%26 = tail call i32 @BarT(float %3, float %4, float %22, float %6, float %7, float %23, float %9, float %10, float %24, float %0, float %1, float %25, i32 255, i32 255, i32 255, i32 %19, i32 %14)
%27 = tail call i32 @BarT(float %0, float %1, float %2, float %3, float %4, float %5, float %3, float %4, float %22, float %0, float %1, float %25, i32 255, i32 255, i32 255, i32 %19, i32 %15)
%28 = tail call i32 @BarT(float %9, float %10, float %11, float %6, float %7, float %8, float %6, float %7, float %23, float %9, float %10, float %24, i32 255, i32 255, i32 255, i32 %19, i32 %16)
%29 = tail call i32 @BarT(float %0, float %1, float %2, float %9, float %10, float %11, float %9, float %10, float %24, float %0, float %1, float %25, i32 255, i32 255, i32 255, i32 %19, i32 %17)
%30 = tail call i32 @BarT(float %3, float %4, float %5, float %6, float %7, float %8, float %6, float %7, float %23, float %3, float %4, float %22, i32 255, i32 255, i32 255, i32 %19, i32 %18)
ret void
}