#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*/ GL_TRIANGLE_FAN;
int /*<<< orphan*/ GL_TRIANGLE_STRIP;
double M_PI;
double cos(double);
int /*<<< orphan*/ glBegin(int /*<<< orphan*/);
int /*<<< orphan*/ glEnd();
int /*<<< orphan*/ glNormal3d(double, double, double);
int /*<<< orphan*/ glNormal3dv(double *);
int /*<<< orphan*/ glVertex3d(double, double, double);
int /*<<< orphan*/ normiraj(double *);
double sin(double);
int /*<<< orphan*/ vprodukt(double *, double, double, double, double, double,
                            double);
void stozacV3(double r, double h, int n) {
  double t, s, v[] = {0.0, 0.0, 0.0};
  int i;
  glBegin(GL_TRIANGLE_FAN);
  glNormal3d(0.0, 0.0, -1.0);
  glVertex3d(0.0, 0.0, 0.0);
  t = 0.0;
  for (i = 0; i <= n; i++) {
    glVertex3d(r * cos(t), r * sin(t), 0.0);
    t += 2.0 * M_PI / n;
  }
  glEnd();
  glBegin(GL_TRIANGLE_STRIP);
  t = 2.0 * M_PI;
  for (i = 0; i <= n; i++) {
    vprodukt(v, r * cos(t), r * sin(t), -h, cos(t + M_PI / 2.0),
             sin(t + M_PI / 2.0), 0.0);
    normiraj(v);
    glNormal3dv(v);
    glVertex3d(r * cos(t), r * sin(t), 0.0);
    t -= M_PI / n;
    vprodukt(v, r * cos(t), r * sin(t), -h, cos(t + M_PI / 2.0),
             sin(t + M_PI / 2.0), 0.0);
    normiraj(v);
    glNormal3dv(v);
    glVertex3d(0.0, 0.0, h);
    t -= M_PI / n;
  }
  glEnd();
}


x86 assembly (clang, -O0):
<stozacV3>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
mov    %edi,-0x14(%rbp)
lea    -0x40(%rbp),%rdi
xor    %esi,%esi
mov    $0x18,%edx
call   1070 <memset@plt>
mov    0x2e01(%rip),%rax
mov    (%rax),%edi
call   10b0 <glBegin@plt>
xorps  %xmm1,%xmm1
movsd  0xe1f(%rip),%xmm2
movaps %xmm1,%xmm0
call   1030 <glNormal3d@plt>
xorps  %xmm2,%xmm2
movaps %xmm2,%xmm0
movaps %xmm2,%xmm1
call   1060 <glVertex3d@plt>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     1298 <stozacV3+0xf8>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x20(%rbp),%xmm0
call   10a0 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x60(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1090 <sin@plt>
movsd  -0x58(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x50(%rbp),%xmm0
mulsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
call   1060 <glVertex3d@plt>
movsd  0xd9c(%rip),%xmm0
mov    0x2d6d(%rip),%rax
mulsd  (%rax),%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
divsd  %xmm1,%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1206 <stozacV3+0x66>
mov    $0x0,%al
call   1080 <glEnd@plt>
mov    0x2d52(%rip),%rax
mov    (%rax),%edi
call   10b0 <glBegin@plt>
movsd  0xd53(%rip),%xmm0
mov    0x2d24(%rip),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x20(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     15c8 <stozacV3+0x428>
lea    -0x40(%rbp),%rax
mov    %rax,-0xd8(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   10a0 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1090 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
mov    0x2c71(%rip),%rax
movsd  (%rax),%xmm1
movsd  0xc8d(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
call   10a0 <cos@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
mov    0x2c44(%rip),%rax
movsd  (%rax),%xmm1
movsd  0xc60(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
call   1090 <sin@plt>
mov    -0xd8(%rbp),%rdi
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm3
ff
movaps %xmm0,%xmm4
movsd  -0xb8(%rbp),%xmm0
ff
xorps  %xmm5,%xmm5
call   10c0 <vprodukt@plt>
lea    -0x40(%rbp),%rdi
call   1050 <normiraj@plt>
lea    -0x40(%rbp),%rdi
call   1040 <glNormal3dv@plt>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   10a0 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1090 <sin@plt>
movsd  -0xa8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
call   1060 <glVertex3d@plt>
mov    0x2b7c(%rip),%rax
movsd  (%rax),%xmm1
cvtsi2sdl -0x14(%rbp),%xmm0
divsd  %xmm0,%xmm1
movsd  -0x20(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
lea    -0x40(%rbp),%rax
mov    %rax,-0x88(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   10a0 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x98(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1090 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x90(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x10(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x20(%rbp),%xmm0
mov    0x2ad3(%rip),%rax
movsd  (%rax),%xmm1
movsd  0xaef(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
call   10a0 <cos@plt>
movsd  %xmm0,-0x70(%rbp)
movsd  -0x20(%rbp),%xmm0
mov    0x2aa9(%rip),%rax
movsd  (%rax),%xmm1
movsd  0xac5(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
call   1090 <sin@plt>
mov    -0x88(%rbp),%rdi
movsd  -0x80(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm3
movaps %xmm0,%xmm4
movsd  -0x68(%rbp),%xmm0
xorps  %xmm5,%xmm5
call   10c0 <vprodukt@plt>
lea    -0x40(%rbp),%rdi
call   1050 <normiraj@plt>
lea    -0x40(%rbp),%rdi
call   1040 <glNormal3dv@plt>
movsd  -0x10(%rbp),%xmm2
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   1060 <glVertex3d@plt>
mov    0x2a41(%rip),%rax
movsd  (%rax),%xmm1
cvtsi2sdl -0x14(%rbp),%xmm0
divsd  %xmm0,%xmm1
movsd  -0x20(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    12cc <stozacV3+0x12c>
mov    $0x0,%al
call   1080 <glEnd@plt>
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<stozacV3>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0x68,%rsp
mov    %edi,%ebx
movapd %xmm1,0x40(%rsp)
movsd  %xmm0,0x8(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,0x50(%rsp)
movq   $0x0,0x60(%rsp)
mov    0x2e0e(%rip),%rax
mov    (%rax),%edi
call   10a0 <glBegin@plt>
movsd  0xe2f(%rip),%xmm2
xorpd  %xmm0,%xmm0
xorpd  %xmm1,%xmm1
call   1030 <glNormal3d@plt>
xorpd  %xmm0,%xmm0
xorpd  %xmm1,%xmm1
xorps  %xmm2,%xmm2
call   1060 <glVertex3d@plt>
test   %ebx,%ebx
js     148f <stozacV3+0x2ff>
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x28(%rsp)
mov    $0xffffffff,%ebp
mov    0x2dd1(%rip),%r15
xorpd  %xmm0,%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  %xmm0,(%rsp)
movsd  (%rsp),%xmm0
call   1090 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sin@plt>
movapd %xmm0,%xmm1
mulsd  0x8(%rsp),%xmm1
xorps  %xmm2,%xmm2
movsd  0x30(%rsp),%xmm0
call   1060 <glVertex3d@plt>
movsd  (%r15),%xmm0
addsd  %xmm0,%xmm0
divsd  0x28(%rsp),%xmm0
movsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  (%rsp),%xmm0
add    $0x1,%ebp
cmp    %ebp,%ebx
jne    1220 <stozacV3+0x90>
xor    %eax,%eax
call   1070 <glEnd@plt>
mov    0x2d64(%rip),%rax
mov    (%rax),%edi
call   10a0 <glBegin@plt>
test   %ebx,%ebx
js     14a4 <stozacV3+0x314>
movsd  (%r15),%xmm0
addsd  %xmm0,%xmm0
movapd 0xd5c(%rip),%xmm1
xorpd  0x40(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
add    $0x1,%ebx
lea    0x50(%rsp),%r14
nopl   0x0(%rax,%rax,1)
movsd  %xmm0,(%rsp)
movsd  (%rsp),%xmm0
call   1090 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sin@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  (%r15),%xmm0
movsd  0xcfa(%rip),%xmm1
mulsd  %xmm1,%xmm0
addsd  (%rsp),%xmm0
call   1090 <cos@plt>
movsd  %xmm0,0x18(%rsp)
movsd  (%r15),%xmm0
mulsd  0xcd9(%rip),%xmm0
addsd  (%rsp),%xmm0
call   1080 <sin@plt>
movapd %xmm0,%xmm4
xorps  %xmm5,%xmm5
mov    %r14,%rdi
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
movaps 0x30(%rsp),%xmm2
movsd  0x18(%rsp),%xmm3
call   10b0 <vprodukt@plt>
mov    %r14,%rdi
call   1050 <normiraj@plt>
mov    %r14,%rdi
call   1040 <glNormal3dv@plt>
movsd  (%rsp),%xmm0
call   1090 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sin@plt>
movapd %xmm0,%xmm1
mulsd  0x8(%rsp),%xmm1
xorps  %xmm2,%xmm2
movsd  0x10(%rsp),%xmm0
call   1060 <glVertex3d@plt>
movsd  (%r15),%xmm0
divsd  0x28(%rsp),%xmm0
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  (%rsp),%xmm0
call   1090 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sin@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  (%r15),%xmm0
mulsd  0xc0f(%rip),%xmm0
addsd  (%rsp),%xmm0
call   1090 <cos@plt>
movsd  %xmm0,0x18(%rsp)
movsd  (%r15),%xmm0
mulsd  0xbf2(%rip),%xmm0
addsd  (%rsp),%xmm0
call   1080 <sin@plt>
movapd %xmm0,%xmm4
xorps  %xmm5,%xmm5
mov    %r14,%rdi
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
movaps 0x30(%rsp),%xmm2
movsd  0x18(%rsp),%xmm3
call   10b0 <vprodukt@plt>
mov    %r14,%rdi
call   1050 <normiraj@plt>
mov    %r14,%rdi
call   1040 <glNormal3dv@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
movaps 0x40(%rsp),%xmm2
call   1060 <glVertex3d@plt>
movsd  (%r15),%xmm0
divsd  0x28(%rsp),%xmm0
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  (%rsp),%xmm0
add    $0xffffffff,%ebx
jne    12d0 <stozacV3+0x140>
jmp    14a4 <stozacV3+0x314>
xor    %eax,%eax
call   1070 <glEnd@plt>
mov    0x2b5b(%rip),%rax
mov    (%rax),%edi
call   10a0 <glBegin@plt>
xor    %eax,%eax
call   1070 <glEnd@plt>
add    $0x68,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@GL_TRIANGLE_FAN = global i32 0
@M_PI = global double 0.000000e+00
@GL_TRIANGLE_STRIP = global i32 0
define void @stozacV3(double %0, double %1, i32 %2) {
%4 = alloca double
%5 = alloca double
%6 = alloca i32
%7 = alloca double
%8 = alloca double
%9 = alloca [3 x double]
%10 = alloca i32
store double %0, double* %4
store double %1, double* %5
store i32 %2, i32* %6
%11 = bitcast [3 x double]* %9 to i8*
%12 = load i32, i32* @GL_TRIANGLE_FAN
%13 = call i32 @glBegin(i32 %12)
%14 = call i32 @glNormal3d(double 0.000000e+00, double 0.000000e+00, double -1.000000e+00)
%15 = call i32 @glVertex3d(double 0.000000e+00, double 0.000000e+00, double 0.000000e+00)
store double 0.000000e+00, double* %7
store i32 0, i32* %10
br label %16
16: ; preds = %37, %3
%17 = load i32, i32* %10
%18 = load i32, i32* %6
%19 = icmp sle i32 %17, %18
br i1 %19, label %20, label %40
20: ; preds = %16
%21 = load double, double* %4
%22 = load double, double* %7
%23 = call double @cos(double %22)
%24 = fmul double %21, %23
%25 = load double, double* %4
%26 = load double, double* %7
%27 = call double @sin(double %26)
%28 = fmul double %25, %27
%29 = call i32 @glVertex3d(double %24, double %28, double 0.000000e+00)
%30 = load double, double* @M_PI
%31 = fmul double 2.000000e+00, %30
%32 = load i32, i32* %6
%33 = sitofp i32 %32 to double
%34 = fdiv double %31, %33
%35 = load double, double* %7
%36 = fadd double %35, %34
store double %36, double* %7
br label %37
37: ; preds = %20
%38 = load i32, i32* %10
%39 = add nsw i32 %38, 1
store i32 %39, i32* %10
br label %16
40: ; preds = %16
%41 = call i32 (...) @glEnd()
%42 = load i32, i32* @GL_TRIANGLE_STRIP
%43 = call i32 @glBegin(i32 %42)
%44 = load double, double* @M_PI
%45 = fmul double 2.000000e+00, %44
store double %45, double* %7
store i32 0, i32* %10
br label %46
46: ; preds = %126, %40
%47 = load i32, i32* %10
%48 = load i32, i32* %6
%49 = icmp sle i32 %47, %48
br i1 %49, label %50, label %129
50: ; preds = %46
%51 = getelementptr inbounds [3 x double], [3 x double]* %9, i64 0, i64 0
%52 = load double, double* %4
%53 = load double, double* %7
%54 = call double @cos(double %53)
%55 = fmul double %52, %54
%56 = load double, double* %4
%57 = load double, double* %7
%58 = call double @sin(double %57)
%59 = fmul double %56, %58
%60 = load double, double* %5
%61 = fneg double %60
%62 = load double, double* %7
%63 = load double, double* @M_PI
%64 = fdiv double %63, 2.000000e+00
%65 = fadd double %62, %64
%66 = call double @cos(double %65)
%67 = load double, double* %7
%68 = load double, double* @M_PI
%69 = fdiv double %68, 2.000000e+00
%70 = fadd double %67, %69
%71 = call double @sin(double %70)
%72 = call i32 @vprodukt(double* %51, double %55, double %59, double %61, double %66, double %71, double 0.000000e+00)
%73 = getelementptr inbounds [3 x double], [3 x double]* %9, i64 0, i64 0
%74 = call i32 @normiraj(double* %73)
%75 = getelementptr inbounds [3 x double], [3 x double]* %9, i64 0, i64 0
%76 = call i32 @glNormal3dv(double* %75)
%77 = load double, double* %4
%78 = load double, double* %7
%79 = call double @cos(double %78)
%80 = fmul double %77, %79
%81 = load double, double* %4
%82 = load double, double* %7
%83 = call double @sin(double %82)
%84 = fmul double %81, %83
%85 = call i32 @glVertex3d(double %80, double %84, double 0.000000e+00)
%86 = load double, double* @M_PI
%87 = load i32, i32* %6
%88 = sitofp i32 %87 to double
%89 = fdiv double %86, %88
%90 = load double, double* %7
%91 = fsub double %90, %89
store double %91, double* %7
%92 = getelementptr inbounds [3 x double], [3 x double]* %9, i64 0, i64 0
%93 = load double, double* %4
%94 = load double, double* %7
%95 = call double @cos(double %94)
%96 = fmul double %93, %95
%97 = load double, double* %4
%98 = load double, double* %7
%99 = call double @sin(double %98)
%100 = fmul double %97, %99
%101 = load double, double* %5
%102 = fneg double %101
%103 = load double, double* %7
%104 = load double, double* @M_PI
%105 = fdiv double %104, 2.000000e+00
%106 = fadd double %103, %105
%107 = call double @cos(double %106)
%108 = load double, double* %7
%109 = load double, double* @M_PI
%110 = fdiv double %109, 2.000000e+00
%111 = fadd double %108, %110
%112 = call double @sin(double %111)
%113 = call i32 @vprodukt(double* %92, double %96, double %100, double %102, double %107, double %112, double 0.000000e+00)
%114 = getelementptr inbounds [3 x double], [3 x double]* %9, i64 0, i64 0
%115 = call i32 @normiraj(double* %114)
%116 = getelementptr inbounds [3 x double], [3 x double]* %9, i64 0, i64 0
%117 = call i32 @glNormal3dv(double* %116)
%118 = load double, double* %5
%119 = call i32 @glVertex3d(double 0.000000e+00, double 0.000000e+00, double %118)
%120 = load double, double* @M_PI
%121 = load i32, i32* %6
%122 = sitofp i32 %121 to double
%123 = fdiv double %120, %122
%124 = load double, double* %7
%125 = fsub double %124, %123
store double %125, double* %7
br label %126
126: ; preds = %50
%127 = load i32, i32* %10
%128 = add nsw i32 %127, 1
store i32 %128, i32* %10
br label %46
129: ; preds = %46
%130 = call i32 (...) @glEnd()
ret void
}

LLVM IR (-O2):
@GL_TRIANGLE_FAN = global i32 0
@M_PI = global double 0.000000e+00
@GL_TRIANGLE_STRIP = global i32 0
define void @stozacV3(double %0, double %1, i32 %2) {
%4 = alloca [3 x double]
%5 = bitcast [3 x double]* %4 to i8*
%6 = load i32, i32* @GL_TRIANGLE_FAN
%7 = tail call i32 @glBegin(i32 %6)
%8 = tail call i32 @glNormal3d(double 0.000000e+00, double 0.000000e+00, double -1.000000e+00)
%9 = tail call i32 @glVertex3d(double 0.000000e+00, double 0.000000e+00, double 0.000000e+00)
%10 = icmp slt i32 %2, 0
br i1 %10, label %84, label %11
11: ; preds = %3
%12 = sitofp i32 %2 to double
br label %13
13: ; preds = %11, %13
%14 = phi i32 [ 0, %11 ], [ %25, %13 ]
%15 = phi double [ 0.000000e+00, %11 ], [ %24, %13 ]
%16 = tail call double @cos(double %15)
%17 = fmul double %16, %0
%18 = tail call double @sin(double %15)
%19 = fmul double %18, %0
%20 = tail call i32 @glVertex3d(double %17, double %19, double 0.000000e+00)
%21 = load double, double* @M_PI
%22 = fmul double %21, 2.000000e+00
%23 = fdiv double %22, %12
%24 = fadd double %15, %23
%25 = add nuw i32 %14, 1
%26 = icmp eq i32 %14, %2
br i1 %26, label %27, label %13
27: ; preds = %13
%28 = tail call i32 (...) @glEnd()
%29 = load i32, i32* @GL_TRIANGLE_STRIP
%30 = tail call i32 @glBegin(i32 %29)
br i1 %10, label %88, label %31
31: ; preds = %27
%32 = load double, double* @M_PI
%33 = fmul double %32, 2.000000e+00
%34 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0
%35 = fneg double %1
%36 = sitofp i32 %2 to double
br label %37
37: ; preds = %31, %37
%38 = phi i32 [ 0, %31 ], [ %82, %37 ]
%39 = phi double [ %33, %31 ], [ %81, %37 ]
%40 = call double @cos(double %39)
%41 = fmul double %40, %0
%42 = call double @sin(double %39)
%43 = fmul double %42, %0
%44 = load double, double* @M_PI
%45 = fmul double %44, 5.000000e-01
%46 = fadd double %39, %45
%47 = call double @cos(double %46)
%48 = load double, double* @M_PI
%49 = fmul double %48, 5.000000e-01
%50 = fadd double %39, %49
%51 = call double @sin(double %50)
%52 = call i32 @vprodukt(double* %34, double %41, double %43, double %35, double %47, double %51, double 0.000000e+00)
%53 = call i32 @normiraj(double* %34)
%54 = call i32 @glNormal3dv(double* %34)
%55 = call double @cos(double %39)
%56 = fmul double %55, %0
%57 = call double @sin(double %39)
%58 = fmul double %57, %0
%59 = call i32 @glVertex3d(double %56, double %58, double 0.000000e+00)
%60 = load double, double* @M_PI
%61 = fdiv double %60, %36
%62 = fsub double %39, %61
%63 = call double @cos(double %62)
%64 = fmul double %63, %0
%65 = call double @sin(double %62)
%66 = fmul double %65, %0
%67 = load double, double* @M_PI
%68 = fmul double %67, 5.000000e-01
%69 = fadd double %62, %68
%70 = call double @cos(double %69)
%71 = load double, double* @M_PI
%72 = fmul double %71, 5.000000e-01
%73 = fadd double %62, %72
%74 = call double @sin(double %73)
%75 = call i32 @vprodukt(double* %34, double %64, double %66, double %35, double %70, double %74, double 0.000000e+00)
%76 = call i32 @normiraj(double* %34)
%77 = call i32 @glNormal3dv(double* %34)
%78 = call i32 @glVertex3d(double 0.000000e+00, double 0.000000e+00, double %1)
%79 = load double, double* @M_PI
%80 = fdiv double %79, %36
%81 = fsub double %62, %80
%82 = add nuw i32 %38, 1
%83 = icmp eq i32 %38, %2
br i1 %83, label %88, label %37
84: ; preds = %3
%85 = tail call i32 (...) @glEnd()
%86 = load i32, i32* @GL_TRIANGLE_STRIP
%87 = tail call i32 @glBegin(i32 %86)
br label %88
88: ; preds = %37, %84, %27
%89 = call i32 (...) @glEnd()
ret void
}