#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*/ helper_double_1(double *);
int /*<<< orphan*/ helper_double_10(double *);
int /*<<< orphan*/ helper_double_11(double *);
int /*<<< orphan*/ helper_double_12(double *);
int /*<<< orphan*/ helper_double_13(double *);
int /*<<< orphan*/ helper_double_14(double *);
int /*<<< orphan*/ helper_double_15(double *);
int /*<<< orphan*/ helper_double_16(double *);
int /*<<< orphan*/ helper_double_17(double *);
int /*<<< orphan*/ helper_double_18(double *);
int /*<<< orphan*/ helper_double_19(double *);
int /*<<< orphan*/ helper_double_2(double *);
int /*<<< orphan*/ helper_double_20(double *);
int /*<<< orphan*/ helper_double_21(double *);
int /*<<< orphan*/ helper_double_22(double *);
int /*<<< orphan*/ helper_double_23(double *);
int /*<<< orphan*/ helper_double_24(double *);
int /*<<< orphan*/ helper_double_25(double *);
int /*<<< orphan*/ helper_double_26(double *);
int /*<<< orphan*/ helper_double_27(double *);
int /*<<< orphan*/ helper_double_28(double *);
int /*<<< orphan*/ helper_double_29(double *);
int /*<<< orphan*/ helper_double_3(double *);
int /*<<< orphan*/ helper_double_30(double *);
int /*<<< orphan*/ helper_double_4(double *);
int /*<<< orphan*/ helper_double_5(double *);
int /*<<< orphan*/ helper_double_6(double *);
int /*<<< orphan*/ helper_double_7(double *);
int /*<<< orphan*/ helper_double_8(double *);
int /*<<< orphan*/ helper_double_9(double *);
int fht_double(double *buf, int log_n) {
  if (log_n == 0) {
    return 0;
  }
  if (log_n == 1) {
    helper_double_1(buf);
    return 0;
  }
  if (log_n == 2) {
    helper_double_2(buf);
    return 0;
  }
  if (log_n == 3) {
    helper_double_3(buf);
    return 0;
  }
  if (log_n == 4) {
    helper_double_4(buf);
    return 0;
  }
  if (log_n == 5) {
    helper_double_5(buf);
    return 0;
  }
  if (log_n == 6) {
    helper_double_6(buf);
    return 0;
  }
  if (log_n == 7) {
    helper_double_7(buf);
    return 0;
  }
  if (log_n == 8) {
    helper_double_8(buf);
    return 0;
  }
  if (log_n == 9) {
    helper_double_9(buf);
    return 0;
  }
  if (log_n == 10) {
    helper_double_10(buf);
    return 0;
  }
  if (log_n == 11) {
    helper_double_11(buf);
    return 0;
  }
  if (log_n == 12) {
    helper_double_12(buf);
    return 0;
  }
  if (log_n == 13) {
    helper_double_13(buf);
    return 0;
  }
  if (log_n == 14) {
    helper_double_14(buf);
    return 0;
  }
  if (log_n == 15) {
    helper_double_15(buf);
    return 0;
  }
  if (log_n == 16) {
    helper_double_16(buf);
    return 0;
  }
  if (log_n == 17) {
    helper_double_17(buf);
    return 0;
  }
  if (log_n == 18) {
    helper_double_18(buf);
    return 0;
  }
  if (log_n == 19) {
    helper_double_19(buf);
    return 0;
  }
  if (log_n == 20) {
    helper_double_20(buf);
    return 0;
  }
  if (log_n == 21) {
    helper_double_21(buf);
    return 0;
  }
  if (log_n == 22) {
    helper_double_22(buf);
    return 0;
  }
  if (log_n == 23) {
    helper_double_23(buf);
    return 0;
  }
  if (log_n == 24) {
    helper_double_24(buf);
    return 0;
  }
  if (log_n == 25) {
    helper_double_25(buf);
    return 0;
  }
  if (log_n == 26) {
    helper_double_26(buf);
    return 0;
  }
  if (log_n == 27) {
    helper_double_27(buf);
    return 0;
  }
  if (log_n == 28) {
    helper_double_28(buf);
    return 0;
  }
  if (log_n == 29) {
    helper_double_29(buf);
    return 0;
  }
  if (log_n == 30) {
    helper_double_30(buf);
    return 0;
  }
  return 1;
}


x86 assembly (clang, -O0):
<fht_double>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
jne    1305 <fht_double+0x25>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x1,-0x14(%rbp)
jne    1324 <fht_double+0x44>
mov    -0x10(%rbp),%rdi
call   1110 <helper_double_1@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x2,-0x14(%rbp)
jne    1343 <fht_double+0x63>
mov    -0x10(%rbp),%rdi
call   1050 <helper_double_2@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x3,-0x14(%rbp)
jne    1362 <fht_double+0x82>
mov    -0x10(%rbp),%rdi
call   1130 <helper_double_3@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x4,-0x14(%rbp)
jne    1381 <fht_double+0xa1>
mov    -0x10(%rbp),%rdi
call   1030 <helper_double_4@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x5,-0x14(%rbp)
jne    13a0 <fht_double+0xc0>
mov    -0x10(%rbp),%rdi
call   1120 <helper_double_5@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x6,-0x14(%rbp)
jne    13bf <fht_double+0xdf>
mov    -0x10(%rbp),%rdi
call   1200 <helper_double_6@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x7,-0x14(%rbp)
jne    13de <fht_double+0xfe>
mov    -0x10(%rbp),%rdi
call   1100 <helper_double_7@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x8,-0x14(%rbp)
jne    13fd <fht_double+0x11d>
mov    -0x10(%rbp),%rdi
call   11f0 <helper_double_8@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x9,-0x14(%rbp)
jne    141c <fht_double+0x13c>
mov    -0x10(%rbp),%rdi
call   10f0 <helper_double_9@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0xa,-0x14(%rbp)
jne    143b <fht_double+0x15b>
mov    -0x10(%rbp),%rdi
call   1170 <helper_double_10@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0xb,-0x14(%rbp)
jne    145a <fht_double+0x17a>
mov    -0x10(%rbp),%rdi
call   1090 <helper_double_11@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0xc,-0x14(%rbp)
jne    1479 <fht_double+0x199>
mov    -0x10(%rbp),%rdi
call   1190 <helper_double_12@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0xd,-0x14(%rbp)
jne    1498 <fht_double+0x1b8>
mov    -0x10(%rbp),%rdi
call   1070 <helper_double_13@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0xe,-0x14(%rbp)
jne    14b7 <fht_double+0x1d7>
mov    -0x10(%rbp),%rdi
call   1150 <helper_double_14@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0xf,-0x14(%rbp)
jne    14d6 <fht_double+0x1f6>
mov    -0x10(%rbp),%rdi
call   1080 <helper_double_15@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x10,-0x14(%rbp)
jne    14f5 <fht_double+0x215>
mov    -0x10(%rbp),%rdi
call   1160 <helper_double_16@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x11,-0x14(%rbp)
jne    1514 <fht_double+0x234>
mov    -0x10(%rbp),%rdi
call   1040 <helper_double_17@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x12,-0x14(%rbp)
jne    1533 <fht_double+0x253>
mov    -0x10(%rbp),%rdi
call   1140 <helper_double_18@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x13,-0x14(%rbp)
jne    1552 <fht_double+0x272>
mov    -0x10(%rbp),%rdi
call   1060 <helper_double_19@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x14,-0x14(%rbp)
jne    1571 <fht_double+0x291>
mov    -0x10(%rbp),%rdi
call   11e0 <helper_double_20@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x15,-0x14(%rbp)
jne    1590 <fht_double+0x2b0>
mov    -0x10(%rbp),%rdi
call   10d0 <helper_double_21@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x16,-0x14(%rbp)
jne    15af <fht_double+0x2cf>
mov    -0x10(%rbp),%rdi
call   11c0 <helper_double_22@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x17,-0x14(%rbp)
jne    15ce <fht_double+0x2ee>
mov    -0x10(%rbp),%rdi
call   10e0 <helper_double_23@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x18,-0x14(%rbp)
jne    15ed <fht_double+0x30d>
mov    -0x10(%rbp),%rdi
call   11d0 <helper_double_24@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x19,-0x14(%rbp)
jne    160c <fht_double+0x32c>
mov    -0x10(%rbp),%rdi
call   10b0 <helper_double_25@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x1a,-0x14(%rbp)
jne    162b <fht_double+0x34b>
mov    -0x10(%rbp),%rdi
call   11a0 <helper_double_26@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x1b,-0x14(%rbp)
jne    164a <fht_double+0x36a>
mov    -0x10(%rbp),%rdi
call   10c0 <helper_double_27@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x1c,-0x14(%rbp)
jne    1669 <fht_double+0x389>
mov    -0x10(%rbp),%rdi
call   11b0 <helper_double_28@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x1d,-0x14(%rbp)
jne    1688 <fht_double+0x3a8>
mov    -0x10(%rbp),%rdi
call   1180 <helper_double_29@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
cmpl   $0x1e,-0x14(%rbp)
jne    16a7 <fht_double+0x3c7>
mov    -0x10(%rbp),%rdi
call   10a0 <helper_double_30@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ae <fht_double+0x3ce>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<fht_double>:
push   %rax
cmp    $0x1e,%esi
ja     1304 <fht_double+0x24>
mov    %esi,%eax
mov    %esi,%ecx
lea    0xd0f(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
call   1110 <helper_double_1@plt>
jmp    13f2 <fht_double+0x112>
mov    $0x1,%eax
pop    %rcx
ret
call   1050 <helper_double_2@plt>
jmp    13f2 <fht_double+0x112>
call   1130 <helper_double_3@plt>
jmp    13f2 <fht_double+0x112>
call   1030 <helper_double_4@plt>
jmp    13f2 <fht_double+0x112>
call   1120 <helper_double_5@plt>
jmp    13f2 <fht_double+0x112>
call   1200 <helper_double_6@plt>
jmp    13f2 <fht_double+0x112>
call   1100 <helper_double_7@plt>
jmp    13f2 <fht_double+0x112>
call   11f0 <helper_double_8@plt>
jmp    13f2 <fht_double+0x112>
call   10f0 <helper_double_9@plt>
jmp    13f2 <fht_double+0x112>
call   1170 <helper_double_10@plt>
jmp    13f2 <fht_double+0x112>
call   1090 <helper_double_11@plt>
jmp    13f2 <fht_double+0x112>
call   1190 <helper_double_12@plt>
jmp    13f2 <fht_double+0x112>
call   1070 <helper_double_13@plt>
jmp    13f2 <fht_double+0x112>
call   1150 <helper_double_14@plt>
jmp    13f2 <fht_double+0x112>
call   1080 <helper_double_15@plt>
jmp    13f2 <fht_double+0x112>
call   1160 <helper_double_16@plt>
jmp    13f2 <fht_double+0x112>
call   1040 <helper_double_17@plt>
jmp    13f2 <fht_double+0x112>
call   1140 <helper_double_18@plt>
jmp    13f2 <fht_double+0x112>
call   1060 <helper_double_19@plt>
jmp    13f2 <fht_double+0x112>
call   11e0 <helper_double_20@plt>
jmp    13f2 <fht_double+0x112>
call   10d0 <helper_double_21@plt>
jmp    13f2 <fht_double+0x112>
call   11c0 <helper_double_22@plt>
jmp    13f2 <fht_double+0x112>
call   10e0 <helper_double_23@plt>
jmp    13f2 <fht_double+0x112>
call   11d0 <helper_double_24@plt>
jmp    13f2 <fht_double+0x112>
call   10b0 <helper_double_25@plt>
jmp    13f2 <fht_double+0x112>
call   11a0 <helper_double_26@plt>
jmp    13f2 <fht_double+0x112>
call   10c0 <helper_double_27@plt>
jmp    13f2 <fht_double+0x112>
call   11b0 <helper_double_28@plt>
jmp    13f2 <fht_double+0x112>
call   1180 <helper_double_29@plt>
jmp    13f2 <fht_double+0x112>
call   10a0 <helper_double_30@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
define i32 @fht_double(double* %0, i32 %1) {
%3 = alloca i32
%4 = alloca double*
%5 = alloca i32
store double* %0, double** %4
store i32 %1, i32* %5
%6 = load i32, i32* %5
%7 = icmp eq i32 %6, 0
br i1 %7, label %8, label %9
8: ; preds = %2
store i32 0, i32* %3
br label %190
9: ; preds = %2
%10 = load i32, i32* %5
%11 = icmp eq i32 %10, 1
br i1 %11, label %12, label %15
12: ; preds = %9
%13 = load double*, double** %4
%14 = call i32 @helper_double_1(double* %13)
store i32 0, i32* %3
br label %190
15: ; preds = %9
%16 = load i32, i32* %5
%17 = icmp eq i32 %16, 2
br i1 %17, label %18, label %21
18: ; preds = %15
%19 = load double*, double** %4
%20 = call i32 @helper_double_2(double* %19)
store i32 0, i32* %3
br label %190
21: ; preds = %15
%22 = load i32, i32* %5
%23 = icmp eq i32 %22, 3
br i1 %23, label %24, label %27
24: ; preds = %21
%25 = load double*, double** %4
%26 = call i32 @helper_double_3(double* %25)
store i32 0, i32* %3
br label %190
27: ; preds = %21
%28 = load i32, i32* %5
%29 = icmp eq i32 %28, 4
br i1 %29, label %30, label %33
30: ; preds = %27
%31 = load double*, double** %4
%32 = call i32 @helper_double_4(double* %31)
store i32 0, i32* %3
br label %190
33: ; preds = %27
%34 = load i32, i32* %5
%35 = icmp eq i32 %34, 5
br i1 %35, label %36, label %39
36: ; preds = %33
%37 = load double*, double** %4
%38 = call i32 @helper_double_5(double* %37)
store i32 0, i32* %3
br label %190
39: ; preds = %33
%40 = load i32, i32* %5
%41 = icmp eq i32 %40, 6
br i1 %41, label %42, label %45
42: ; preds = %39
%43 = load double*, double** %4
%44 = call i32 @helper_double_6(double* %43)
store i32 0, i32* %3
br label %190
45: ; preds = %39
%46 = load i32, i32* %5
%47 = icmp eq i32 %46, 7
br i1 %47, label %48, label %51
48: ; preds = %45
%49 = load double*, double** %4
%50 = call i32 @helper_double_7(double* %49)
store i32 0, i32* %3
br label %190
51: ; preds = %45
%52 = load i32, i32* %5
%53 = icmp eq i32 %52, 8
br i1 %53, label %54, label %57
54: ; preds = %51
%55 = load double*, double** %4
%56 = call i32 @helper_double_8(double* %55)
store i32 0, i32* %3
br label %190
57: ; preds = %51
%58 = load i32, i32* %5
%59 = icmp eq i32 %58, 9
br i1 %59, label %60, label %63
60: ; preds = %57
%61 = load double*, double** %4
%62 = call i32 @helper_double_9(double* %61)
store i32 0, i32* %3
br label %190
63: ; preds = %57
%64 = load i32, i32* %5
%65 = icmp eq i32 %64, 10
br i1 %65, label %66, label %69
66: ; preds = %63
%67 = load double*, double** %4
%68 = call i32 @helper_double_10(double* %67)
store i32 0, i32* %3
br label %190
69: ; preds = %63
%70 = load i32, i32* %5
%71 = icmp eq i32 %70, 11
br i1 %71, label %72, label %75
72: ; preds = %69
%73 = load double*, double** %4
%74 = call i32 @helper_double_11(double* %73)
store i32 0, i32* %3
br label %190
75: ; preds = %69
%76 = load i32, i32* %5
%77 = icmp eq i32 %76, 12
br i1 %77, label %78, label %81
78: ; preds = %75
%79 = load double*, double** %4
%80 = call i32 @helper_double_12(double* %79)
store i32 0, i32* %3
br label %190
81: ; preds = %75
%82 = load i32, i32* %5
%83 = icmp eq i32 %82, 13
br i1 %83, label %84, label %87
84: ; preds = %81
%85 = load double*, double** %4
%86 = call i32 @helper_double_13(double* %85)
store i32 0, i32* %3
br label %190
87: ; preds = %81
%88 = load i32, i32* %5
%89 = icmp eq i32 %88, 14
br i1 %89, label %90, label %93
90: ; preds = %87
%91 = load double*, double** %4
%92 = call i32 @helper_double_14(double* %91)
store i32 0, i32* %3
br label %190
93: ; preds = %87
%94 = load i32, i32* %5
%95 = icmp eq i32 %94, 15
br i1 %95, label %96, label %99
96: ; preds = %93
%97 = load double*, double** %4
%98 = call i32 @helper_double_15(double* %97)
store i32 0, i32* %3
br label %190
99: ; preds = %93
%100 = load i32, i32* %5
%101 = icmp eq i32 %100, 16
br i1 %101, label %102, label %105
102: ; preds = %99
%103 = load double*, double** %4
%104 = call i32 @helper_double_16(double* %103)
store i32 0, i32* %3
br label %190
105: ; preds = %99
%106 = load i32, i32* %5
%107 = icmp eq i32 %106, 17
br i1 %107, label %108, label %111
108: ; preds = %105
%109 = load double*, double** %4
%110 = call i32 @helper_double_17(double* %109)
store i32 0, i32* %3
br label %190
111: ; preds = %105
%112 = load i32, i32* %5
%113 = icmp eq i32 %112, 18
br i1 %113, label %114, label %117
114: ; preds = %111
%115 = load double*, double** %4
%116 = call i32 @helper_double_18(double* %115)
store i32 0, i32* %3
br label %190
117: ; preds = %111
%118 = load i32, i32* %5
%119 = icmp eq i32 %118, 19
br i1 %119, label %120, label %123
120: ; preds = %117
%121 = load double*, double** %4
%122 = call i32 @helper_double_19(double* %121)
store i32 0, i32* %3
br label %190
123: ; preds = %117
%124 = load i32, i32* %5
%125 = icmp eq i32 %124, 20
br i1 %125, label %126, label %129
126: ; preds = %123
%127 = load double*, double** %4
%128 = call i32 @helper_double_20(double* %127)
store i32 0, i32* %3
br label %190
129: ; preds = %123
%130 = load i32, i32* %5
%131 = icmp eq i32 %130, 21
br i1 %131, label %132, label %135
132: ; preds = %129
%133 = load double*, double** %4
%134 = call i32 @helper_double_21(double* %133)
store i32 0, i32* %3
br label %190
135: ; preds = %129
%136 = load i32, i32* %5
%137 = icmp eq i32 %136, 22
br i1 %137, label %138, label %141
138: ; preds = %135
%139 = load double*, double** %4
%140 = call i32 @helper_double_22(double* %139)
store i32 0, i32* %3
br label %190
141: ; preds = %135
%142 = load i32, i32* %5
%143 = icmp eq i32 %142, 23
br i1 %143, label %144, label %147
144: ; preds = %141
%145 = load double*, double** %4
%146 = call i32 @helper_double_23(double* %145)
store i32 0, i32* %3
br label %190
147: ; preds = %141
%148 = load i32, i32* %5
%149 = icmp eq i32 %148, 24
br i1 %149, label %150, label %153
150: ; preds = %147
%151 = load double*, double** %4
%152 = call i32 @helper_double_24(double* %151)
store i32 0, i32* %3
br label %190
153: ; preds = %147
%154 = load i32, i32* %5
%155 = icmp eq i32 %154, 25
br i1 %155, label %156, label %159
156: ; preds = %153
%157 = load double*, double** %4
%158 = call i32 @helper_double_25(double* %157)
store i32 0, i32* %3
br label %190
159: ; preds = %153
%160 = load i32, i32* %5
%161 = icmp eq i32 %160, 26
br i1 %161, label %162, label %165
162: ; preds = %159
%163 = load double*, double** %4
%164 = call i32 @helper_double_26(double* %163)
store i32 0, i32* %3
br label %190
165: ; preds = %159
%166 = load i32, i32* %5
%167 = icmp eq i32 %166, 27
br i1 %167, label %168, label %171
168: ; preds = %165
%169 = load double*, double** %4
%170 = call i32 @helper_double_27(double* %169)
store i32 0, i32* %3
br label %190
171: ; preds = %165
%172 = load i32, i32* %5
%173 = icmp eq i32 %172, 28
br i1 %173, label %174, label %177
174: ; preds = %171
%175 = load double*, double** %4
%176 = call i32 @helper_double_28(double* %175)
store i32 0, i32* %3
br label %190
177: ; preds = %171
%178 = load i32, i32* %5
%179 = icmp eq i32 %178, 29
br i1 %179, label %180, label %183
180: ; preds = %177
%181 = load double*, double** %4
%182 = call i32 @helper_double_29(double* %181)
store i32 0, i32* %3
br label %190
183: ; preds = %177
%184 = load i32, i32* %5
%185 = icmp eq i32 %184, 30
br i1 %185, label %186, label %189
186: ; preds = %183
%187 = load double*, double** %4
%188 = call i32 @helper_double_30(double* %187)
store i32 0, i32* %3
br label %190
189: ; preds = %183
store i32 1, i32* %3
br label %190
190: ; preds = %189, %186, %180, %174, %168, %162, %156, %150, %144, %138, %132, %126, %120, %114, %108, %102, %96, %90, %84, %78, %72, %66, %60, %54, %48, %42, %36, %30, %24, %18, %12, %8
%191 = load i32, i32* %3
ret i32 %191
}

LLVM IR (-O2):
define i32 @fht_double(double* %0, i32 %1) {
switch i32 %1, label %63 [
i32 0, label %64
i32 1, label %3
i32 2, label %5
i32 3, label %7
i32 4, label %9
i32 5, label %11
i32 6, label %13
i32 7, label %15
i32 8, label %17
i32 9, label %19
i32 10, label %21
i32 11, label %23
i32 12, label %25
i32 13, label %27
i32 14, label %29
i32 15, label %31
i32 16, label %33
i32 17, label %35
i32 18, label %37
i32 19, label %39
i32 20, label %41
i32 21, label %43
i32 22, label %45
i32 23, label %47
i32 24, label %49
i32 25, label %51
i32 26, label %53
i32 27, label %55
i32 28, label %57
i32 29, label %59
i32 30, label %61
]
3: ; preds = %2
%4 = tail call i32 @helper_double_1(double* %0)
br label %64
5: ; preds = %2
%6 = tail call i32 @helper_double_2(double* %0)
br label %64
7: ; preds = %2
%8 = tail call i32 @helper_double_3(double* %0)
br label %64
9: ; preds = %2
%10 = tail call i32 @helper_double_4(double* %0)
br label %64
11: ; preds = %2
%12 = tail call i32 @helper_double_5(double* %0)
br label %64
13: ; preds = %2
%14 = tail call i32 @helper_double_6(double* %0)
br label %64
15: ; preds = %2
%16 = tail call i32 @helper_double_7(double* %0)
br label %64
17: ; preds = %2
%18 = tail call i32 @helper_double_8(double* %0)
br label %64
19: ; preds = %2
%20 = tail call i32 @helper_double_9(double* %0)
br label %64
21: ; preds = %2
%22 = tail call i32 @helper_double_10(double* %0)
br label %64
23: ; preds = %2
%24 = tail call i32 @helper_double_11(double* %0)
br label %64
25: ; preds = %2
%26 = tail call i32 @helper_double_12(double* %0)
br label %64
27: ; preds = %2
%28 = tail call i32 @helper_double_13(double* %0)
br label %64
29: ; preds = %2
%30 = tail call i32 @helper_double_14(double* %0)
br label %64
31: ; preds = %2
%32 = tail call i32 @helper_double_15(double* %0)
br label %64
33: ; preds = %2
%34 = tail call i32 @helper_double_16(double* %0)
br label %64
35: ; preds = %2
%36 = tail call i32 @helper_double_17(double* %0)
br label %64
37: ; preds = %2
%38 = tail call i32 @helper_double_18(double* %0)
br label %64
39: ; preds = %2
%40 = tail call i32 @helper_double_19(double* %0)
br label %64
41: ; preds = %2
%42 = tail call i32 @helper_double_20(double* %0)
br label %64
43: ; preds = %2
%44 = tail call i32 @helper_double_21(double* %0)
br label %64
45: ; preds = %2
%46 = tail call i32 @helper_double_22(double* %0)
br label %64
47: ; preds = %2
%48 = tail call i32 @helper_double_23(double* %0)
br label %64
49: ; preds = %2
%50 = tail call i32 @helper_double_24(double* %0)
br label %64
51: ; preds = %2
%52 = tail call i32 @helper_double_25(double* %0)
br label %64
53: ; preds = %2
%54 = tail call i32 @helper_double_26(double* %0)
br label %64
55: ; preds = %2
%56 = tail call i32 @helper_double_27(double* %0)
br label %64
57: ; preds = %2
%58 = tail call i32 @helper_double_28(double* %0)
br label %64
59: ; preds = %2
%60 = tail call i32 @helper_double_29(double* %0)
br label %64
61: ; preds = %2
%62 = tail call i32 @helper_double_30(double* %0)
br label %64
63: ; preds = %2
br label %64
64: ; preds = %2, %63, %61, %59, %57, %55, %53, %51, %49, %47, %45, %43, %41, %39, %37, %35, %33, %31, %29, %27, %25, %23, %21, %19, %17, %15, %13, %11, %9, %7, %5, %3
%65 = phi i32 [ 0, %3 ], [ 0, %5 ], [ 0, %7 ], [ 0, %9 ], [ 0, %11 ], [ 0, %13 ], [ 0, %15 ], [ 0, %17 ], [ 0, %19 ], [ 0, %21 ], [ 0, %23 ], [ 0, %25 ], [ 0, %27 ], [ 0, %29 ], [ 0, %31 ], [ 0, %33 ], [ 0, %35 ], [ 0, %37 ], [ 0, %39 ], [ 0, %41 ], [ 0, %43 ], [ 0, %45 ], [ 0, %47 ], [ 0, %49 ], [ 0, %51 ], [ 0, %53 ], [ 0, %55 ], [ 0, %57 ], [ 0, %59 ], [ 0, %61 ], [ 1, %63 ], [ %1, %2 ]
ret i32 %65
}