#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*/ fzz_addRule(char *);
int /*<<< orphan*/ fzz_init(int, int);
int /*<<< orphan*/ fzz_initInputFcns(int, int, char *);
int /*<<< orphan*/ fzz_initOutputFcns(int /*<<< orphan*/, int, char *);
int /*<<< orphan*/ fzz_setInputFcn(int, int, double, double, double, char *);
int /*<<< orphan*/ fzz_setOutputFcn(int, int /*<<< orphan*/, double, double,
                                    double, char *);
int /*<<< orphan*/ printf(char *);
void createExample() {
  printf("Fuzzy system init ...");
  fzz_init(2, 1);
  printf(" completed");
  printf("\nInitialization of sets of input and output fuzzy sets ...");
  fzz_initInputFcns(0, 3, "distance");
  fzz_initInputFcns(1, 3, "speed");
  fzz_initOutputFcns(0, 5, "throttle");
  printf(" completed");
  printf("\nCreating input and output fuzzy sets ...");
  fzz_setInputFcn(0, 0, -0.5, 0.0, 0.5, "small");
  fzz_setInputFcn(1, 0, 0.0, 0.5, 1.0, "medium");
  fzz_setInputFcn(2, 0, 0.5, 1.0, 1.5, "big");
  fzz_setInputFcn(0, 1, -1.0, 0.0, 1.0, "slow");
  fzz_setInputFcn(1, 1, 0.0, 1.0, 2.0, "medium");
  fzz_setInputFcn(2, 1, 1.0, 2.0, 3.0, "fast");
  fzz_setOutputFcn(0, 0, -1.5, -1.0, -0.5, "negativeBig");
  fzz_setOutputFcn(1, 0, -1.0, -0.5, 0.0, "negative");
  fzz_setOutputFcn(2, 0, -0.5, 0.0, 0.5, "zero");
  fzz_setOutputFcn(3, 0, 0.0, 0.5, 1.0, "pozitive");
  fzz_setOutputFcn(4, 0, 0.5, 1.0, 1.5, "pozitiveBig");
  printf(" completed");
  printf("\nAdding rules for inferential mechanism ...");
  fzz_addRule("if distance is small and speed is slow then throttle is zero");
  fzz_addRule(
      "if distance is small and speed is medium then throttle is negative");
  fzz_addRule(
      "if distance is small and speed is fast then throttle is negativeBig");
  fzz_addRule(
      "if distance is medium and speed is slow then throttle is pozitive");
  fzz_addRule(
      "if distance is medium and speed is medium then throttle is zero");
  fzz_addRule(
      "if distance is medium and speed is fast then throttle is negative");
  fzz_addRule(
      "if distance is big and speed is slow then throttle is pozitiveBig");
  fzz_addRule(
      "if distance is big and speed is medium then throttle is pozitive");
  fzz_addRule("if distance is big and speed is fast then throttle is zero");
  printf(" completed\n");
}


x86 assembly (clang, -O0):
<createExample>:
push   %rbp
mov    %rsp,%rbp
lea    0xec5(%rip),%rdi
call   1060 <printf@plt>
mov    $0x2,%edi
mov    $0x1,%esi
call   1040 <fzz_init@plt>
lea    0xec0(%rip),%rdi
call   1060 <printf@plt>
lea    0xebf(%rip),%rdi
call   1060 <printf@plt>
xor    %edi,%edi
mov    $0x3,%esi
lea    0xee7(%rip),%rdx
call   1070 <fzz_initInputFcns@plt>
mov    $0x1,%edi
mov    $0x3,%esi
lea    0xeda(%rip),%rdx
call   1070 <fzz_initInputFcns@plt>
xor    %edi,%edi
mov    $0x5,%esi
lea    0xecd(%rip),%rdx
call   1050 <fzz_initOutputFcns@plt>
lea    0xe6c(%rip),%rdi
call   1060 <printf@plt>
lea    0xebe(%rip),%rdi
call   1060 <printf@plt>
xor    %esi,%esi
movsd  0xe13(%rip),%xmm0
xorps  %xmm1,%xmm1
movsd  0xdf0(%rip),%xmm2
lea    0xec7(%rip),%rdx
mov    %esi,%edi
call   1080 <fzz_setInputFcn@plt>
mov    $0x1,%edi
xor    %esi,%esi
xorps  %xmm0,%xmm0
movsd  0xdd0(%rip),%xmm1
movsd  0xdd0(%rip),%xmm2
lea    0xea5(%rip),%rdx
call   1080 <fzz_setInputFcn@plt>
mov    $0x2,%edi
xor    %esi,%esi
movsd  0xdad(%rip),%xmm0
movsd  0xdad(%rip),%xmm1
movsd  0xdad(%rip),%xmm2
lea    0xe81(%rip),%rdx
call   1080 <fzz_setInputFcn@plt>
xor    %edi,%edi
mov    $0x1,%esi
movsd  0xda2(%rip),%xmm0
xorps  %xmm1,%xmm1
movsd  0xd7f(%rip),%xmm2
lea    0xe5f(%rip),%rdx
call   1080 <fzz_setInputFcn@plt>
mov    $0x1,%esi
xorps  %xmm0,%xmm0
movsd  0xd63(%rip),%xmm1
movsd  0xd83(%rip),%xmm2
lea    0xe30(%rip),%rdx
mov    %esi,%edi
call   1080 <fzz_setInputFcn@plt>
mov    $0x2,%edi
mov    $0x1,%esi
movsd  0xd3b(%rip),%xmm0
movsd  0xd5b(%rip),%xmm1
movsd  0xd5b(%rip),%xmm2
lea    0xe10(%rip),%rdx
call   1080 <fzz_setInputFcn@plt>
xor    %esi,%esi
movsd  0xd35(%rip),%xmm0
movsd  0xd25(%rip),%xmm1
movsd  0xd15(%rip),%xmm2
lea    0xed3(%rip),%rdx
mov    %esi,%edi
call   1090 <fzz_setOutputFcn@plt>
mov    $0x1,%edi
xor    %esi,%esi
movsd  0xd00(%rip),%xmm0
movsd  0xcf0(%rip),%xmm1
xorps  %xmm2,%xmm2
lea    0xe6a(%rip),%rdx
call   1090 <fzz_setOutputFcn@plt>
mov    $0x2,%edi
xor    %esi,%esi
movsd  0xcd2(%rip),%xmm0
xorps  %xmm1,%xmm1
movsd  0xcaf(%rip),%xmm2
lea    0xf0e(%rip),%rdx
call   1090 <fzz_setOutputFcn@plt>
mov    $0x3,%edi
xor    %esi,%esi
xorps  %xmm0,%xmm0
movsd  0xc91(%rip),%xmm1
movsd  0xc91(%rip),%xmm2
lea    0xfa9(%rip),%rdx
call   1090 <fzz_setOutputFcn@plt>
mov    $0x4,%edi
xor    %esi,%esi
movsd  0xc6e(%rip),%xmm0
movsd  0xc6e(%rip),%xmm1
movsd  0xc6e(%rip),%xmm2
lea    0xf3a(%rip),%rdx
call   1090 <fzz_setOutputFcn@plt>
lea    0xca1(%rip),%rdi
call   1060 <printf@plt>
lea    0xd38(%rip),%rdi
call   1060 <printf@plt>
lea    0xd58(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xd89(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xdc0(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xdf8(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xe2e(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xe62(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xe98(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xece(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xf03(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xf32(%rip),%rdi
call   1060 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<createExample>:
push   %r14
push   %rbx
push   %rax
lea    0xeb5(%rip),%rdi
call   1070 <printf@plt>
mov    $0x2,%edi
mov    $0x1,%esi
call   1050 <fzz_init@plt>
lea    0x11ba(%rip),%r14
mov    %r14,%rdi
call   1070 <printf@plt>
lea    0xea1(%rip),%rdi
call   1070 <printf@plt>
lea    0xed0(%rip),%rdx
xor    %edi,%edi
mov    $0x3,%esi
call   1080 <fzz_initInputFcns@plt>
lea    0xec6(%rip),%rdx
mov    $0x1,%edi
mov    $0x3,%esi
call   1080 <fzz_initInputFcns@plt>
lea    0xeb6(%rip),%rdx
xor    %edi,%edi
mov    $0x5,%esi
call   1060 <fzz_initOutputFcns@plt>
mov    %r14,%rdi
call   1070 <printf@plt>
lea    0xea4(%rip),%rdi
call   1070 <printf@plt>
lea    0xec2(%rip),%rdx
movsd  0xde7(%rip),%xmm0
movsd  0xde7(%rip),%xmm2
xorps  %xmm1,%xmm1
xor    %edi,%edi
xor    %esi,%esi
call   1090 <fzz_setInputFcn@plt>
lea    0xea5(%rip),%rbx
movsd  0xdd4(%rip),%xmm2
xorps  %xmm0,%xmm0
mov    $0x1,%edi
xor    %esi,%esi
movsd  0xdba(%rip),%xmm1
mov    %rbx,%rdx
call   1090 <fzz_setInputFcn@plt>
lea    0xe83(%rip),%rdx
movsd  0xdb3(%rip),%xmm2
mov    $0x2,%edi
xor    %esi,%esi
movsd  0xd94(%rip),%xmm0
movsd  0xd94(%rip),%xmm1
call   1090 <fzz_setInputFcn@plt>
lea    0xe5c(%rip),%rdx
movsd  0xd90(%rip),%xmm0
xorps  %xmm1,%xmm1
xor    %edi,%edi
mov    $0x1,%esi
movsd  0xd6e(%rip),%xmm2
call   1090 <fzz_setInputFcn@plt>
movsd  0xd79(%rip),%xmm2
xorps  %xmm0,%xmm0
mov    $0x1,%edi
mov    $0x1,%esi
movsd  0xd4c(%rip),%xmm1
mov    %rbx,%rdx
call   1090 <fzz_setInputFcn@plt>
lea    0xe16(%rip),%rdx
movsd  0xd55(%rip),%xmm2
mov    $0x2,%edi
mov    $0x1,%esi
movsd  0xd23(%rip),%xmm0
movsd  0xd33(%rip),%xmm1
call   1090 <fzz_setInputFcn@plt>
lea    0xed1(%rip),%rdx
movsd  0xd2f(%rip),%xmm0
xor    %edi,%edi
xor    %esi,%esi
movsd  0xd0b(%rip),%xmm1
movsd  0xce3(%rip),%xmm2
call   10a0 <fzz_setOutputFcn@plt>
lea    0xe68(%rip),%rdx
xorps  %xmm2,%xmm2
mov    $0x1,%edi
xor    %esi,%esi
movsd  0xce5(%rip),%xmm0
movsd  0xcbd(%rip),%xmm1
call   10a0 <fzz_setOutputFcn@plt>
lea    0xf0c(%rip),%rdx
xorps  %xmm1,%xmm1
mov    $0x2,%edi
xor    %esi,%esi
movsd  0xc9f(%rip),%xmm0
movsd  0xc9f(%rip),%xmm2
call   10a0 <fzz_setOutputFcn@plt>
lea    0xfa7(%rip),%rdx
xorps  %xmm0,%xmm0
mov    $0x3,%edi
xor    %esi,%esi
movsd  0xc81(%rip),%xmm1
movsd  0xc81(%rip),%xmm2
call   10a0 <fzz_setOutputFcn@plt>
lea    0xf3d(%rip),%rdx
mov    $0x4,%edi
xor    %esi,%esi
movsd  0xc5e(%rip),%xmm0
movsd  0xc5e(%rip),%xmm1
movsd  0xc5e(%rip),%xmm2
call   10a0 <fzz_setOutputFcn@plt>
mov    %r14,%rdi
call   1070 <printf@plt>
lea    0xd20(%rip),%rdi
call   1070 <printf@plt>
lea    0xd40(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xd71(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xda8(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xde0(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xe16(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xe4a(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xe80(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xeb6(%rip),%rdi
call   1030 <fzz_addRule@plt>
lea    0xeeb(%rip),%rdi
call   1030 <fzz_addRule@plt>
mov    %r14,%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r14
jmp    1040 <puts@plt>

LLVM IR (-O0):
@.str = [22 x i8] c"Fuzzy system init ...\00"
@.str.1 = [11 x i8] c" completed\00"
@.str.2 = [59 x i8] c"\0AInitialization of sets of input and output fuzzy sets ...\00"
@.str.3 = [9 x i8] c"distance\00"
@.str.4 = [6 x i8] c"speed\00"
@.str.5 = [9 x i8] c"throttle\00"
@.str.6 = [42 x i8] c"\0ACreating input and output fuzzy sets ...\00"
@.str.7 = [6 x i8] c"small\00"
@.str.8 = [7 x i8] c"medium\00"
@.str.9 = [4 x i8] c"big\00"
@.str.10 = [5 x i8] c"slow\00"
@.str.11 = [5 x i8] c"fast\00"
@.str.12 = [12 x i8] c"negativeBig\00"
@.str.13 = [9 x i8] c"negative\00"
@.str.14 = [5 x i8] c"zero\00"
@.str.15 = [9 x i8] c"pozitive\00"
@.str.16 = [12 x i8] c"pozitiveBig\00"
@.str.17 = [44 x i8] c"\0AAdding rules for inferential mechanism ...\00"
@.str.18 = [61 x i8] c"if distance is small and speed is slow then throttle is zero\00"
@.str.19 = [67 x i8] c"if distance is small and speed is medium then throttle is negative\00"
@.str.20 = [68 x i8] c"if distance is small and speed is fast then throttle is negativeBig\00"
@.str.21 = [66 x i8] c"if distance is medium and speed is slow then throttle is pozitive\00"
@.str.22 = [64 x i8] c"if distance is medium and speed is medium then throttle is zero\00"
@.str.23 = [66 x i8] c"if distance is medium and speed is fast then throttle is negative\00"
@.str.24 = [66 x i8] c"if distance is big and speed is slow then throttle is pozitiveBig\00"
@.str.25 = [65 x i8] c"if distance is big and speed is medium then throttle is pozitive\00"
@.str.26 = [59 x i8] c"if distance is big and speed is fast then throttle is zero\00"
@.str.27 = [12 x i8] c" completed\0A\00"
define void @createExample() {
%1 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @fzz_init(i32 2, i32 1)
%3 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.2, i64 0, i64 0))
%5 = call i32 @fzz_initInputFcns(i32 0, i32 3, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%6 = call i32 @fzz_initInputFcns(i32 1, i32 3, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0))
%7 = call i32 @fzz_initOutputFcns(i32 0, i32 5, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0))
%10 = call i32 @fzz_setInputFcn(i32 0, i32 0, double -5.000000e-01, double 0.000000e+00, double 5.000000e-01, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
%11 = call i32 @fzz_setInputFcn(i32 1, i32 0, double 0.000000e+00, double 5.000000e-01, double 1.000000e+00, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0))
%12 = call i32 @fzz_setInputFcn(i32 2, i32 0, double 5.000000e-01, double 1.000000e+00, double 1.500000e+00, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0))
%13 = call i32 @fzz_setInputFcn(i32 0, i32 1, double -1.000000e+00, double 0.000000e+00, double 1.000000e+00, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%14 = call i32 @fzz_setInputFcn(i32 1, i32 1, double 0.000000e+00, double 1.000000e+00, double 2.000000e+00, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 @fzz_setInputFcn(i32 2, i32 1, double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
%16 = call i32 @fzz_setOutputFcn(i32 0, i32 0, double -1.500000e+00, double -1.000000e+00, double -5.000000e-01, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0))
%17 = call i32 @fzz_setOutputFcn(i32 1, i32 0, double -1.000000e+00, double -5.000000e-01, double 0.000000e+00, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0))
%18 = call i32 @fzz_setOutputFcn(i32 2, i32 0, double -5.000000e-01, double 0.000000e+00, double 5.000000e-01, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0))
%19 = call i32 @fzz_setOutputFcn(i32 3, i32 0, double 0.000000e+00, double 5.000000e-01, double 1.000000e+00, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0))
%20 = call i32 @fzz_setOutputFcn(i32 4, i32 0, double 5.000000e-01, double 1.000000e+00, double 1.500000e+00, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0))
%21 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%22 = call i32 @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.17, i64 0, i64 0))
%23 = call i32 @fzz_addRule(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.18, i64 0, i64 0))
%24 = call i32 @fzz_addRule(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.19, i64 0, i64 0))
%25 = call i32 @fzz_addRule(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.20, i64 0, i64 0))
%26 = call i32 @fzz_addRule(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.21, i64 0, i64 0))
%27 = call i32 @fzz_addRule(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.22, i64 0, i64 0))
%28 = call i32 @fzz_addRule(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.23, i64 0, i64 0))
%29 = call i32 @fzz_addRule(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.24, i64 0, i64 0))
%30 = call i32 @fzz_addRule(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.25, i64 0, i64 0))
%31 = call i32 @fzz_addRule(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.26, i64 0, i64 0))
%32 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.27, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [22 x i8] c"Fuzzy system init ...\00"
@.str.2 = [59 x i8] c"\0AInitialization of sets of input and output fuzzy sets ...\00"
@.str.3 = [9 x i8] c"distance\00"
@.str.4 = [6 x i8] c"speed\00"
@.str.5 = [9 x i8] c"throttle\00"
@.str.6 = [42 x i8] c"\0ACreating input and output fuzzy sets ...\00"
@.str.7 = [6 x i8] c"small\00"
@.str.8 = [7 x i8] c"medium\00"
@.str.9 = [4 x i8] c"big\00"
@.str.10 = [5 x i8] c"slow\00"
@.str.11 = [5 x i8] c"fast\00"
@.str.12 = [12 x i8] c"negativeBig\00"
@.str.13 = [9 x i8] c"negative\00"
@.str.14 = [5 x i8] c"zero\00"
@.str.15 = [9 x i8] c"pozitive\00"
@.str.16 = [12 x i8] c"pozitiveBig\00"
@.str.17 = [44 x i8] c"\0AAdding rules for inferential mechanism ...\00"
@.str.18 = [61 x i8] c"if distance is small and speed is slow then throttle is zero\00"
@.str.19 = [67 x i8] c"if distance is small and speed is medium then throttle is negative\00"
@.str.20 = [68 x i8] c"if distance is small and speed is fast then throttle is negativeBig\00"
@.str.21 = [66 x i8] c"if distance is medium and speed is slow then throttle is pozitive\00"
@.str.22 = [64 x i8] c"if distance is medium and speed is medium then throttle is zero\00"
@.str.23 = [66 x i8] c"if distance is medium and speed is fast then throttle is negative\00"
@.str.24 = [66 x i8] c"if distance is big and speed is slow then throttle is pozitiveBig\00"
@.str.25 = [65 x i8] c"if distance is big and speed is medium then throttle is pozitive\00"
@.str.26 = [59 x i8] c"if distance is big and speed is fast then throttle is zero\00"
@str = [11 x i8] c" completed\00"
define void @createExample() {
%1 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @fzz_init(i32 2, i32 1)
%3 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str, i64 0, i64 0))
%4 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.2, i64 0, i64 0))
%5 = tail call i32 @fzz_initInputFcns(i32 0, i32 3, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%6 = tail call i32 @fzz_initInputFcns(i32 1, i32 3, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0))
%7 = tail call i32 @fzz_initOutputFcns(i32 0, i32 5, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0))
%8 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str, i64 0, i64 0))
%9 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0))
%10 = tail call i32 @fzz_setInputFcn(i32 0, i32 0, double -5.000000e-01, double 0.000000e+00, double 5.000000e-01, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
%11 = tail call i32 @fzz_setInputFcn(i32 1, i32 0, double 0.000000e+00, double 5.000000e-01, double 1.000000e+00, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0))
%12 = tail call i32 @fzz_setInputFcn(i32 2, i32 0, double 5.000000e-01, double 1.000000e+00, double 1.500000e+00, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0))
%13 = tail call i32 @fzz_setInputFcn(i32 0, i32 1, double -1.000000e+00, double 0.000000e+00, double 1.000000e+00, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%14 = tail call i32 @fzz_setInputFcn(i32 1, i32 1, double 0.000000e+00, double 1.000000e+00, double 2.000000e+00, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0))
%15 = tail call i32 @fzz_setInputFcn(i32 2, i32 1, double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
%16 = tail call i32 @fzz_setOutputFcn(i32 0, i32 0, double -1.500000e+00, double -1.000000e+00, double -5.000000e-01, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0))
%17 = tail call i32 @fzz_setOutputFcn(i32 1, i32 0, double -1.000000e+00, double -5.000000e-01, double 0.000000e+00, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0))
%18 = tail call i32 @fzz_setOutputFcn(i32 2, i32 0, double -5.000000e-01, double 0.000000e+00, double 5.000000e-01, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0))
%19 = tail call i32 @fzz_setOutputFcn(i32 3, i32 0, double 0.000000e+00, double 5.000000e-01, double 1.000000e+00, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0))
%20 = tail call i32 @fzz_setOutputFcn(i32 4, i32 0, double 5.000000e-01, double 1.000000e+00, double 1.500000e+00, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0))
%21 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str, i64 0, i64 0))
%22 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @.str.17, i64 0, i64 0))
%23 = tail call i32 @fzz_addRule(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.18, i64 0, i64 0))
%24 = tail call i32 @fzz_addRule(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.19, i64 0, i64 0))
%25 = tail call i32 @fzz_addRule(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.20, i64 0, i64 0))
%26 = tail call i32 @fzz_addRule(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.21, i64 0, i64 0))
%27 = tail call i32 @fzz_addRule(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.22, i64 0, i64 0))
%28 = tail call i32 @fzz_addRule(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.23, i64 0, i64 0))
%29 = tail call i32 @fzz_addRule(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.24, i64 0, i64 0))
%30 = tail call i32 @fzz_addRule(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.25, i64 0, i64 0))
%31 = tail call i32 @fzz_addRule(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.26, i64 0, i64 0))
%32 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str, i64 0, i64 0))
ret void
}