#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*/ cyl(float, float, float, int);
int /*<<< orphan*/ diff();
int /*<<< orphan*/ end();
int /*<<< orphan*/ onion();
int randn(int);
int /*<<< orphan*/ random_cylinder_protrusions(float, float, float, int);
int /*<<< orphan*/ random_cylinder_ribs(float, float, float, int);
int /*<<< orphan*/ random_cylinder_rings(float, float, float, int);
int /*<<< orphan*/ rotate(int, int /*<<< orphan*/, int, int /*<<< orphan*/);
int /*<<< orphan*/ sphere(float);
int /*<<< orphan*/ thruster_cluster(float);
int /*<<< orphan*/ xlate(int /*<<< orphan*/, int /*<<< orphan*/, float);
void elaborate_cylinder(float length, float r1, float r2, int nelaborations,
                        int with_spheres) {
  int i;
  onion();
  cyl(length, r1, r2, 1);
  for (i = 0; i < nelaborations; i++) {
    int e = randn(3);
    switch (e) {
    case 0:
      random_cylinder_protrusions(length, r1, r2, nelaborations);
      break;
    case 1:
      random_cylinder_ribs(length, r1, r2, nelaborations);
      break;
    case 2:
      random_cylinder_rings(length, r1, r2, nelaborations);
      break;
    }
  }
  if (with_spheres) {
    xlate(0, 0, -length / 2);
    if (randn(100) < 30) {
      diff();
      sphere(r1);
      xlate(0, 0, -r1 / 2);
      cyl(r1 * 1.2, r1 * 0.9, r1 * 0.7, 1);
      end();
      end();
    } else if (randn(100) < 30) {
      rotate(180, 0, 1, 0);
      thruster_cluster(r1);
      end();
    } else {
      sphere(r1);
    }
    end();
    xlate(0, 0, length / 2);
    if (randn(100) < 50) {
      sphere(r2);
    } else {
      diff();
      sphere(r2);
      xlate(0, 0, r2 / 2);
      cyl(r1 * 1.2, r2 * 0.9, r2 * 0.7, 1);
      end();
      end();
    }
    end();
  }
  end();
}


x86 assembly (clang, -O0):
<elaborate_cylinder>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
mov    %edi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    $0x0,%al
call   1040 <onion@plt>
movss  -0x4(%rbp),%xmm0
movss  -0x8(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
mov    $0x1,%edi
call   10d0 <cyl@plt>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    12b4 <elaborate_cylinder+0xf4>
mov    $0x3,%edi
call   10a0 <randn@plt>
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x20(%rbp)
test   %eax,%eax
je     1252 <elaborate_cylinder+0x92>
jmp    1230 <elaborate_cylinder+0x70>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
je     126e <elaborate_cylinder+0xae>
jmp    1241 <elaborate_cylinder+0x81>
mov    -0x20(%rbp),%eax
sub    $0x2,%eax
je     128a <elaborate_cylinder+0xca>
jmp    12a1 <elaborate_cylinder+0xe1>
movss  -0x4(%rbp),%xmm0
movss  -0x8(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
mov    -0x10(%rbp),%edi
call   1090 <random_cylinder_protrusions@plt>
jmp    12a1 <elaborate_cylinder+0xe1>
movss  -0x4(%rbp),%xmm0
movss  -0x8(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
mov    -0x10(%rbp),%edi
call   10c0 <random_cylinder_ribs@plt>
jmp    12a1 <elaborate_cylinder+0xe1>
movss  -0x4(%rbp),%xmm0
movss  -0x8(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
mov    -0x10(%rbp),%edi
call   1050 <random_cylinder_rings@plt>
jmp    12a6 <elaborate_cylinder+0xe6>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1204 <elaborate_cylinder+0x44>
cmpl   $0x0,-0x14(%rbp)
je     14bb <elaborate_cylinder+0x2fb>
movss  -0x4(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  0xd28(%rip),%xmm1
divss  %xmm1,%xmm0
xor    %esi,%esi
mov    %esi,%edi
call   1030 <xlate@plt>
mov    $0x64,%edi
call   10a0 <randn@plt>
cmp    $0x1e,%eax
jge    1398 <elaborate_cylinder+0x1d8>
mov    $0x0,%al
call   10e0 <diff@plt>
movss  -0x8(%rbp),%xmm0
call   10b0 <sphere@plt>
movss  -0x8(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  0xcdd(%rip),%xmm1
divss  %xmm1,%xmm0
xor    %esi,%esi
mov    %esi,%edi
call   1030 <xlate@plt>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xcd7(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x8(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xcb6(%rip),%xmm2
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
movss  -0x8(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
movsd  0xc95(%rip),%xmm3
mulsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
mov    $0x1,%edi
call   10d0 <cyl@plt>
mov    $0x0,%al
call   1060 <end@plt>
mov    $0x0,%al
call   1060 <end@plt>
jmp    13e3 <elaborate_cylinder+0x223>
mov    $0x64,%edi
call   10a0 <randn@plt>
cmp    $0x1e,%eax
jge    13d4 <elaborate_cylinder+0x214>
mov    $0xb4,%edi
xor    %ecx,%ecx
mov    $0x1,%edx
mov    %ecx,%esi
call   1080 <rotate@plt>
movss  -0x8(%rbp),%xmm0
call   1070 <thruster_cluster@plt>
mov    $0x0,%al
call   1060 <end@plt>
jmp    13de <elaborate_cylinder+0x21e>
movss  -0x8(%rbp),%xmm0
call   10b0 <sphere@plt>
jmp    13e3 <elaborate_cylinder+0x223>
mov    $0x0,%al
call   1060 <end@plt>
movss  -0x4(%rbp),%xmm0
movss  0xc09(%rip),%xmm1
divss  %xmm1,%xmm0
xor    %esi,%esi
mov    %esi,%edi
call   1030 <xlate@plt>
mov    $0x64,%edi
call   10a0 <randn@plt>
cmp    $0x32,%eax
jge    1426 <elaborate_cylinder+0x266>
movss  -0xc(%rbp),%xmm0
call   10b0 <sphere@plt>
jmp    14b4 <elaborate_cylinder+0x2f4>
mov    $0x0,%al
call   10e0 <diff@plt>
movss  -0xc(%rbp),%xmm0
call   10b0 <sphere@plt>
movss  -0xc(%rbp),%xmm0
movss  0xbbc(%rip),%xmm1
divss  %xmm1,%xmm0
xor    %esi,%esi
mov    %esi,%edi
call   1030 <xlate@plt>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbb6(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xb95(%rip),%xmm2
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
movss  -0xc(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
movsd  0xb74(%rip),%xmm3
mulsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
mov    $0x1,%edi
call   10d0 <cyl@plt>
mov    $0x0,%al
call   1060 <end@plt>
mov    $0x0,%al
call   1060 <end@plt>
mov    $0x0,%al
call   1060 <end@plt>
mov    $0x0,%al
call   1060 <end@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<elaborate_cylinder>:
push   %rbp
push   %r14
push   %rbx
sub    $0x10,%rsp
mov    %esi,%r14d
mov    %edi,%ebx
movss  %xmm2,0x8(%rsp)
movss  %xmm1,0x4(%rsp)
movss  %xmm0,0xc(%rsp)
xor    %eax,%eax
call   1040 <onion@plt>
movss  0xc(%rsp),%xmm0
movss  0x4(%rsp),%xmm1
movss  0x8(%rsp),%xmm2
mov    $0x1,%edi
call   10d0 <cyl@plt>
test   %ebx,%ebx
jle    128b <elaborate_cylinder+0xcb>
mov    %ebx,%ebp
jmp    122e <elaborate_cylinder+0x6e>
xchg   %ax,%ax
movss  0xc(%rsp),%xmm0
movss  0x4(%rsp),%xmm1
movss  0x8(%rsp),%xmm2
mov    %ebx,%edi
call   10c0 <random_cylinder_ribs@plt>
add    $0xffffffff,%ebp
je     128b <elaborate_cylinder+0xcb>
mov    $0x3,%edi
call   10a0 <randn@plt>
cmp    $0x2,%eax
je     1270 <elaborate_cylinder+0xb0>
cmp    $0x1,%eax
je     1210 <elaborate_cylinder+0x50>
test   %eax,%eax
jne    1229 <elaborate_cylinder+0x69>
movss  0xc(%rsp),%xmm0
movss  0x4(%rsp),%xmm1
movss  0x8(%rsp),%xmm2
mov    %ebx,%edi
call   1090 <random_cylinder_protrusions@plt>
jmp    1229 <elaborate_cylinder+0x69>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movss  0xc(%rsp),%xmm0
movss  0x4(%rsp),%xmm1
movss  0x8(%rsp),%xmm2
mov    %ebx,%edi
call   1050 <random_cylinder_rings@plt>
jmp    1229 <elaborate_cylinder+0x69>
test   %r14d,%r14d
je     1434 <elaborate_cylinder+0x274>
movss  0xd64(%rip),%xmm0
mulss  0xc(%rsp),%xmm0
xor    %edi,%edi
xor    %esi,%esi
call   1030 <xlate@plt>
mov    $0x64,%edi
call   10a0 <randn@plt>
cmp    $0x1d,%eax
jg     132f <elaborate_cylinder+0x16f>
xor    %eax,%eax
call   10e0 <diff@plt>
movss  0x4(%rsp),%xmm0
call   10b0 <sphere@plt>
movss  0xd2c(%rip),%xmm0
mulss  0x4(%rsp),%xmm0
xor    %edi,%edi
xor    %esi,%esi
call   1030 <xlate@plt>
movss  0x4(%rsp),%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
movsd  0xd10(%rip),%xmm0
mulsd  %xmm2,%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  0xd08(%rip),%xmm1
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
mulsd  0xd00(%rip),%xmm2
cvtsd2ss %xmm2,%xmm2
mov    $0x1,%edi
call   10d0 <cyl@plt>
xor    %eax,%eax
call   1060 <end@plt>
jmp    135c <elaborate_cylinder+0x19c>
mov    $0x64,%edi
call   10a0 <randn@plt>
cmp    $0x1d,%eax
jg     1365 <elaborate_cylinder+0x1a5>
mov    $0xb4,%edi
xor    %esi,%esi
mov    $0x1,%edx
xor    %ecx,%ecx
call   1080 <rotate@plt>
movss  0x4(%rsp),%xmm0
call   1070 <thruster_cluster@plt>
xor    %eax,%eax
call   1060 <end@plt>
jmp    1370 <elaborate_cylinder+0x1b0>
movss  0x4(%rsp),%xmm0
call   10b0 <sphere@plt>
xor    %eax,%eax
call   1060 <end@plt>
movss  0xc(%rsp),%xmm0
mulss  0xc7f(%rip),%xmm0
xor    %edi,%edi
xor    %esi,%esi
call   1030 <xlate@plt>
mov    $0x64,%edi
call   10a0 <randn@plt>
cmp    $0x31,%eax
jg     13ad <elaborate_cylinder+0x1ed>
movss  0x8(%rsp),%xmm0
call   10b0 <sphere@plt>
jmp    142d <elaborate_cylinder+0x26d>
xor    %eax,%eax
call   10e0 <diff@plt>
movss  0x8(%rsp),%xmm0
call   10b0 <sphere@plt>
movss  0xc3d(%rip),%xmm0
mulss  0x8(%rsp),%xmm0
xor    %edi,%edi
xor    %esi,%esi
call   1030 <xlate@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xc20(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  0x8(%rsp),%xmm1
xorps  %xmm2,%xmm2
cvtss2sd %xmm1,%xmm2
movsd  0xc0f(%rip),%xmm1
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
mulsd  0xc07(%rip),%xmm2
cvtsd2ss %xmm2,%xmm2
mov    $0x1,%edi
call   10d0 <cyl@plt>
xor    %eax,%eax
call   1060 <end@plt>
xor    %eax,%eax
call   1060 <end@plt>
xor    %eax,%eax
call   1060 <end@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %rbp
jmp    1060 <end@plt>

LLVM IR (-O0):
define void @elaborate_cylinder(float %0, float %1, float %2, i32 %3, i32 %4) {
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
store float %0, float* %6
store float %1, float* %7
store float %2, float* %8
store i32 %3, i32* %9
store i32 %4, i32* %10
%13 = call i32 (...) @onion()
%14 = load float, float* %6
%15 = load float, float* %7
%16 = load float, float* %8
%17 = call i32 @cyl(float %14, float %15, float %16, i32 1)
store i32 0, i32* %11
br label %18
18: ; preds = %44, %5
%19 = load i32, i32* %11
%20 = load i32, i32* %9
%21 = icmp slt i32 %19, %20
br i1 %21, label %22, label %47
22: ; preds = %18
%23 = call i32 @randn(i32 3)
store i32 %23, i32* %12
%24 = load i32, i32* %12
switch i32 %24, label %43 [
i32 0, label %25
i32 1, label %31
i32 2, label %37
]
25: ; preds = %22
%26 = load float, float* %6
%27 = load float, float* %7
%28 = load float, float* %8
%29 = load i32, i32* %9
%30 = call i32 @random_cylinder_protrusions(float %26, float %27, float %28, i32 %29)
br label %43
31: ; preds = %22
%32 = load float, float* %6
%33 = load float, float* %7
%34 = load float, float* %8
%35 = load i32, i32* %9
%36 = call i32 @random_cylinder_ribs(float %32, float %33, float %34, i32 %35)
br label %43
37: ; preds = %22
%38 = load float, float* %6
%39 = load float, float* %7
%40 = load float, float* %8
%41 = load i32, i32* %9
%42 = call i32 @random_cylinder_rings(float %38, float %39, float %40, i32 %41)
br label %43
43: ; preds = %22, %37, %31, %25
br label %44
44: ; preds = %43
%45 = load i32, i32* %11
%46 = add nsw i32 %45, 1
store i32 %46, i32* %11
br label %18
47: ; preds = %18
%48 = load i32, i32* %10
%49 = icmp ne i32 %48, 0
br i1 %49, label %50, label %126
50: ; preds = %47
%51 = load float, float* %6
%52 = fneg float %51
%53 = fdiv float %52, 2.000000e+00
%54 = call i32 @xlate(i32 0, i32 0, float %53)
%55 = call i32 @randn(i32 100)
%56 = icmp slt i32 %55, 30
br i1 %56, label %57, label %80
57: ; preds = %50
%58 = call i32 (...) @diff()
%59 = load float, float* %7
%60 = call i32 @sphere(float %59)
%61 = load float, float* %7
%62 = fneg float %61
%63 = fdiv float %62, 2.000000e+00
%64 = call i32 @xlate(i32 0, i32 0, float %63)
%65 = load float, float* %7
%66 = fpext float %65 to double
%67 = fmul double %66, 1.200000e+00
%68 = fptrunc double %67 to float
%69 = load float, float* %7
%70 = fpext float %69 to double
%71 = fmul double %70, 9.000000e-01
%72 = fptrunc double %71 to float
%73 = load float, float* %7
%74 = fpext float %73 to double
%75 = fmul double %74, 0x3FE6666666666666
%76 = fptrunc double %75 to float
%77 = call i32 @cyl(float %68, float %72, float %76, i32 1)
%78 = call i32 (...) @end()
%79 = call i32 (...) @end()
br label %92
80: ; preds = %50
%81 = call i32 @randn(i32 100)
%82 = icmp slt i32 %81, 30
br i1 %82, label %83, label %88
83: ; preds = %80
%84 = call i32 @rotate(i32 180, i32 0, i32 1, i32 0)
%85 = load float, float* %7
%86 = call i32 @thruster_cluster(float %85)
%87 = call i32 (...) @end()
br label %91
88: ; preds = %80
%89 = load float, float* %7
%90 = call i32 @sphere(float %89)
br label %91
91: ; preds = %88, %83
br label %92
92: ; preds = %91, %57
%93 = call i32 (...) @end()
%94 = load float, float* %6
%95 = fdiv float %94, 2.000000e+00
%96 = call i32 @xlate(i32 0, i32 0, float %95)
%97 = call i32 @randn(i32 100)
%98 = icmp slt i32 %97, 50
br i1 %98, label %99, label %102
99: ; preds = %92
%100 = load float, float* %8
%101 = call i32 @sphere(float %100)
br label %124
102: ; preds = %92
%103 = call i32 (...) @diff()
%104 = load float, float* %8
%105 = call i32 @sphere(float %104)
%106 = load float, float* %8
%107 = fdiv float %106, 2.000000e+00
%108 = call i32 @xlate(i32 0, i32 0, float %107)
%109 = load float, float* %7
%110 = fpext float %109 to double
%111 = fmul double %110, 1.200000e+00
%112 = fptrunc double %111 to float
%113 = load float, float* %8
%114 = fpext float %113 to double
%115 = fmul double %114, 9.000000e-01
%116 = fptrunc double %115 to float
%117 = load float, float* %8
%118 = fpext float %117 to double
%119 = fmul double %118, 0x3FE6666666666666
%120 = fptrunc double %119 to float
%121 = call i32 @cyl(float %112, float %116, float %120, i32 1)
%122 = call i32 (...) @end()
%123 = call i32 (...) @end()
br label %124
124: ; preds = %102, %99
%125 = call i32 (...) @end()
br label %126
126: ; preds = %124, %47
%127 = call i32 (...) @end()
ret void
}

LLVM IR (-O2):
define void @elaborate_cylinder(float %0, float %1, float %2, i32 %3, i32 %4) {
%6 = tail call i32 (...) @onion()
%7 = tail call i32 @cyl(float %0, float %1, float %2, i32 1)
%8 = icmp sgt i32 %3, 0
br i1 %8, label %9, label %21
9: ; preds = %5, %18
%10 = phi i32 [ %19, %18 ], [ 0, %5 ]
%11 = tail call i32 @randn(i32 3)
switch i32 %11, label %18 [
i32 0, label %12
i32 1, label %14
i32 2, label %16
]
12: ; preds = %9
%13 = tail call i32 @random_cylinder_protrusions(float %0, float %1, float %2, i32 %3)
br label %18
14: ; preds = %9
%15 = tail call i32 @random_cylinder_ribs(float %0, float %1, float %2, i32 %3)
br label %18
16: ; preds = %9
%17 = tail call i32 @random_cylinder_rings(float %0, float %1, float %2, i32 %3)
br label %18
18: ; preds = %9, %16, %14, %12
%19 = add nuw nsw i32 %10, 1
%20 = icmp eq i32 %19, %3
br i1 %20, label %21, label %9
21: ; preds = %18, %5
%22 = icmp eq i32 %4, 0
br i1 %22, label %78, label %23
23: ; preds = %21
%24 = fmul float %0, -5.000000e-01
%25 = tail call i32 @xlate(i32 0, i32 0, float %24)
%26 = tail call i32 @randn(i32 100)
%27 = icmp slt i32 %26, 30
br i1 %27, label %28, label %43
28: ; preds = %23
%29 = tail call i32 (...) @diff()
%30 = tail call i32 @sphere(float %1)
%31 = fmul float %1, -5.000000e-01
%32 = tail call i32 @xlate(i32 0, i32 0, float %31)
%33 = fpext float %1 to double
%34 = fmul double %33, 1.200000e+00
%35 = fptrunc double %34 to float
%36 = fmul double %33, 9.000000e-01
%37 = fptrunc double %36 to float
%38 = fmul double %33, 0x3FE6666666666666
%39 = fptrunc double %38 to float
%40 = tail call i32 @cyl(float %35, float %37, float %39, i32 1)
%41 = tail call i32 (...) @end()
%42 = tail call i32 (...) @end()
br label %52
43: ; preds = %23
%44 = tail call i32 @randn(i32 100)
%45 = icmp slt i32 %44, 30
br i1 %45, label %46, label %50
46: ; preds = %43
%47 = tail call i32 @rotate(i32 180, i32 0, i32 1, i32 0)
%48 = tail call i32 @thruster_cluster(float %1)
%49 = tail call i32 (...) @end()
br label %52
50: ; preds = %43
%51 = tail call i32 @sphere(float %1)
br label %52
52: ; preds = %46, %50, %28
%53 = tail call i32 (...) @end()
%54 = fmul float %0, 5.000000e-01
%55 = tail call i32 @xlate(i32 0, i32 0, float %54)
%56 = tail call i32 @randn(i32 100)
%57 = icmp slt i32 %56, 50
br i1 %57, label %58, label %60
58: ; preds = %52
%59 = tail call i32 @sphere(float %2)
br label %76
60: ; preds = %52
%61 = tail call i32 (...) @diff()
%62 = tail call i32 @sphere(float %2)
%63 = fmul float %2, 5.000000e-01
%64 = tail call i32 @xlate(i32 0, i32 0, float %63)
%65 = fpext float %1 to double
%66 = fmul double %65, 1.200000e+00
%67 = fptrunc double %66 to float
%68 = fpext float %2 to double
%69 = fmul double %68, 9.000000e-01
%70 = fptrunc double %69 to float
%71 = fmul double %68, 0x3FE6666666666666
%72 = fptrunc double %71 to float
%73 = tail call i32 @cyl(float %67, float %70, float %72, i32 1)
%74 = tail call i32 (...) @end()
%75 = tail call i32 (...) @end()
br label %76
76: ; preds = %60, %58
%77 = tail call i32 (...) @end()
br label %78
78: ; preds = %76, %21
%79 = tail call i32 (...) @end()
ret void
}