#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*/ fprintf(int /*<<< orphan*/, char *, float, float);
double pow(float, int);
float r1(float, float);
float r2(float, float, float);
float r3(float, float, float);
float r4(float, float, float);
float r5(float, float, float);
float sr3(float, float, float);
int /*<<< orphan*/ stderr;
float *zeros_f(int);
float *tinti(float *t, int nt, float Tr, float Ts, float t0, float slip) {
  int i;
  float t_shift;
  float k;
  float *stf_out;
  stf_out = zeros_f(nt);
  k = 2 / (3.14159265358979323846 * Tr * pow(Ts, 2));
  for (i = 0; i < nt; i++) {
    if (t0 > 0.0) {
      t_shift = t[i] - t0;
    } else {
      t_shift = t[i];
    }
    if (Tr > 2 * Ts) {
      if ((t_shift >= 0) && (t_shift <= Ts)) {
        stf_out[i] = k * r1(t_shift, Tr);
      } else if ((t_shift > Ts) && (t_shift < 2 * Ts)) {
        stf_out[i] = k * r2(t_shift, Tr, Ts);
      } else if ((t_shift >= 2 * Ts) && (t_shift < Tr)) {
        stf_out[i] = k * r3(t_shift, Tr, Ts);
      } else if ((t_shift >= Tr) && (t_shift < Tr + Ts)) {
        stf_out[i] = k * r4(t_shift, Tr, Ts);
      } else if ((t_shift >= Tr + Ts) && (t_shift < Tr + 2 * Ts)) {
        stf_out[i] = k * r5(t_shift, Tr, Ts);
      } else {
        stf_out[i] = 0.0;
      }
    } else if ((Tr > Ts) && (Tr <= 2 * Ts)) {
      if ((t_shift >= 0) && (t_shift <= Ts)) {
        stf_out[i] = k * r1(t_shift, Tr);
      } else if ((t_shift > Ts) && (t_shift < Tr)) {
        stf_out[i] = k * r2(t_shift, Tr, Ts);
      } else if ((t_shift >= Tr) && (t_shift < 2 * Ts)) {
        stf_out[i] = k * sr3(t_shift, Tr, Ts);
      } else if ((t_shift >= 2 * Ts) && (t_shift < Ts + Tr)) {
        stf_out[i] = k * r4(t_shift, Tr, Ts);
      } else if ((t_shift >= Ts + Tr) && (t_shift < 2 * Ts + Tr)) {
        stf_out[i] = k * r5(t_shift, Tr, Ts);
      } else {
        stf_out[i] = 0.0;
      }
    } else {
      fprintf(stderr, "Warning! Tr (%f) must be greater than Ts (%f)!\n", Tr,
              Ts);
    }
    stf_out[i] *= slip;
  }
  return stf_out;
}


x86 assembly (clang, -O0):
<tinti>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movss  %xmm0,-0x10(%rbp)
movss  %xmm1,-0x14(%rbp)
movss  %xmm2,-0x18(%rbp)
movss  %xmm3,-0x1c(%rbp)
mov    -0xc(%rbp),%edi
call   10a0 <zeros_f@plt>
mov    %rax,-0x30(%rbp)
movss  -0x10(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe38(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movss  -0x14(%rbp),%xmm0
mov    $0x2,%edi
call   1090 <pow@plt>
movsd  -0x38(%rbp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0xe07(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1741 <tinti+0x5b1>
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    124b <tinti+0xbb>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
subss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    125d <tinti+0xcd>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x10(%rbp),%xmm0
movss  0xda6(%rip),%xmm1
mulss  -0x14(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jbe    14a3 <tinti+0x313>
movss  -0x24(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     12d3 <tinti+0x143>
movss  -0x24(%rbp),%xmm1
movss  -0x14(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     12d3 <tinti+0x143>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
call   10b0 <r1@plt>
movaps %xmm0,%xmm1
movss  -0x3c(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    149e <tinti+0x30e>
movss  -0x24(%rbp),%xmm0
ucomiss -0x14(%rbp),%xmm0
jbe    1339 <tinti+0x1a9>
movss  -0x24(%rbp),%xmm1
movss  0xd21(%rip),%xmm0
mulss  -0x14(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1339 <tinti+0x1a9>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
call   1070 <r2@plt>
movaps %xmm0,%xmm1
movss  -0x40(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    1499 <tinti+0x309>
movss  -0x24(%rbp),%xmm0
movss  0xcca(%rip),%xmm1
mulss  -0x14(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jb     13a3 <tinti+0x213>
movss  -0x24(%rbp),%xmm1
movss  -0x10(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    13a3 <tinti+0x213>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
call   1030 <r3@plt>
movaps %xmm0,%xmm1
movss  -0x44(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    1494 <tinti+0x304>
movss  -0x24(%rbp),%xmm0
ucomiss -0x10(%rbp),%xmm0
jb     1406 <tinti+0x276>
movss  -0x24(%rbp),%xmm1
movss  -0x10(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1406 <tinti+0x276>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
call   1080 <r4@plt>
movaps %xmm0,%xmm1
movss  -0x48(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    148f <tinti+0x2ff>
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
addss  -0x14(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jb     147a <tinti+0x2ea>
movss  -0x24(%rbp),%xmm1
movss  -0x10(%rbp),%xmm2
movss  -0x14(%rbp),%xmm0
addss  %xmm0,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    147a <tinti+0x2ea>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
call   1040 <r5@plt>
movaps %xmm0,%xmm1
movss  -0x4c(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    148a <tinti+0x2fa>
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    148f <tinti+0x2ff>
jmp    1494 <tinti+0x304>
jmp    1499 <tinti+0x309>
jmp    149e <tinti+0x30e>
jmp    171c <tinti+0x58c>
movss  -0x10(%rbp),%xmm0
ucomiss -0x14(%rbp),%xmm0
jbe    16f8 <tinti+0x568>
movss  -0x10(%rbp),%xmm1
movss  0xb51(%rip),%xmm0
mulss  -0x14(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     16f8 <tinti+0x568>
movss  -0x24(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1528 <tinti+0x398>
movss  -0x24(%rbp),%xmm1
movss  -0x14(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1528 <tinti+0x398>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
call   10b0 <r1@plt>
movaps %xmm0,%xmm1
movss  -0x50(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    16f3 <tinti+0x563>
movss  -0x24(%rbp),%xmm0
ucomiss -0x14(%rbp),%xmm0
jbe    1586 <tinti+0x3f6>
movss  -0x24(%rbp),%xmm1
movss  -0x10(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1586 <tinti+0x3f6>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
call   1070 <r2@plt>
movaps %xmm0,%xmm1
movss  -0x54(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    16ee <tinti+0x55e>
movss  -0x24(%rbp),%xmm0
ucomiss -0x10(%rbp),%xmm0
jb     15ec <tinti+0x45c>
movss  -0x24(%rbp),%xmm1
movss  0xa6e(%rip),%xmm0
mulss  -0x14(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    15ec <tinti+0x45c>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
call   1050 <sr3@plt>
movaps %xmm0,%xmm1
movss  -0x58(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    16e9 <tinti+0x559>
movss  -0x24(%rbp),%xmm0
movss  0xa17(%rip),%xmm1
mulss  -0x14(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jb     165b <tinti+0x4cb>
movss  -0x24(%rbp),%xmm1
movss  -0x14(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    165b <tinti+0x4cb>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
call   1080 <r4@plt>
movaps %xmm0,%xmm1
movss  -0x5c(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    16e4 <tinti+0x554>
movss  -0x24(%rbp),%xmm0
movss  -0x14(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jb     16cf <tinti+0x53f>
movss  -0x24(%rbp),%xmm1
movss  -0x14(%rbp),%xmm0
movss  -0x10(%rbp),%xmm2
addss  %xmm0,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    16cf <tinti+0x53f>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
call   1040 <r5@plt>
movaps %xmm0,%xmm1
movss  -0x60(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    16df <tinti+0x54f>
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    16e4 <tinti+0x554>
jmp    16e9 <tinti+0x559>
jmp    16ee <tinti+0x55e>
jmp    16f3 <tinti+0x563>
jmp    1717 <tinti+0x587>
mov    0x28e1(%rip),%rax
mov    (%rax),%edi
movss  -0x10(%rbp),%xmm0
movss  -0x14(%rbp),%xmm1
lea    0x902(%rip),%rsi
call   1060 <fprintf@plt>
jmp    171c <tinti+0x58c>
movss  -0x1c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    120d <tinti+0x7d>
mov    -0x30(%rbp),%rax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<tinti>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
movss  %xmm3,0x24(%rsp)
movss  %xmm2,0x1c(%rsp)
movss  %xmm1,0x8(%rsp)
movss  %xmm0,0xc(%rsp)
mov    %esi,%ebp
mov    %rdi,%r14
mov    %esi,%edi
call   10a0 <zeros_f@plt>
mov    %rax,%rbx
movss  0x8(%rsp),%xmm0
mov    $0x2,%edi
call   1090 <pow@plt>
movss  0xc(%rsp),%xmm2
test   %ebp,%ebp
jle    13e6 <tinti+0x256>
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
mulsd  0xe0e(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  0xe0a(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x10(%rsp)
movss  0x8(%rsp),%xmm0
movaps %xmm0,%xmm1
addss  %xmm0,%xmm1
ucomiss %xmm0,%xmm2
setbe  %al
ucomiss %xmm2,%xmm1
setb   %r12b
or     %al,%r12b
movaps %xmm2,%xmm3
addss  %xmm0,%xmm3
movss  %xmm3,0x18(%rsp)
movss  %xmm1,0x14(%rsp)
addss  %xmm2,%xmm1
movss  %xmm1,0x20(%rsp)
mov    %ebp,%r13d
xorps  %xmm1,%xmm1
movss  0x1c(%rsp),%xmm0
maxss  %xmm1,%xmm0
movss  %xmm0,0x1c(%rsp)
xor    %ebp,%ebp
lea    0xdaf(%rip),%r15
jmp    129f <tinti+0x10f>
nopw   0x0(%rax,%rax,1)
movaps %xmm2,%xmm1
call   10b0 <r1@plt>
movss  0xc(%rsp),%xmm2
movaps %xmm0,%xmm1
mulss  0x10(%rsp),%xmm1
mulss  0x24(%rsp),%xmm1
movss  %xmm1,(%rbx,%rbp,4)
add    $0x1,%rbp
cmp    %rbp,%r13
je     13e6 <tinti+0x256>
ucomiss 0x14(%rsp),%xmm2
movss  (%r14,%rbp,4),%xmm0
subss  0x1c(%rsp),%xmm0
jbe    1300 <tinti+0x170>
ucomiss 0xd57(%rip),%xmm0
jb     12c6 <tinti+0x136>
movss  0x8(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jae    1270 <tinti+0xe0>
ucomiss 0x8(%rsp),%xmm0
jbe    12d8 <tinti+0x148>
movss  0x14(%rsp),%xmm1
ucomiss %xmm0,%xmm1
ja     1354 <tinti+0x1c4>
ucomiss 0x14(%rsp),%xmm0
jb     1367 <tinti+0x1d7>
ucomiss %xmm0,%xmm2
jbe    1367 <tinti+0x1d7>
movaps %xmm2,%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <r3@plt>
jmp    1278 <tinti+0xe8>
nop
test   %r12b,%r12b
je     1330 <tinti+0x1a0>
mov    0x2cd4(%rip),%rax
mov    (%rax),%edi
mov    %r15,%rsi
movaps %xmm2,%xmm0
movss  0x8(%rsp),%xmm1
call   1060 <fprintf@plt>
movss  0xc(%rsp),%xmm2
movss  (%rbx,%rbp,4),%xmm1
jmp    1287 <tinti+0xf7>
nop
ucomiss 0xcd9(%rip),%xmm0
jb     1348 <tinti+0x1b8>
movss  0x8(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jae    1270 <tinti+0xe0>
ucomiss 0x8(%rsp),%xmm0
jbe    136e <tinti+0x1de>
ucomiss %xmm0,%xmm2
jbe    136e <tinti+0x1de>
movaps %xmm2,%xmm1
movss  0x8(%rsp),%xmm2
call   1070 <r2@plt>
jmp    1278 <tinti+0xe8>
ucomiss %xmm2,%xmm0
jae    1398 <tinti+0x208>
jmp    13b6 <tinti+0x226>
ucomiss %xmm2,%xmm0
jb     1391 <tinti+0x201>
movss  0x14(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jbe    1391 <tinti+0x201>
movaps %xmm2,%xmm1
movss  0x8(%rsp),%xmm2
call   1050 <sr3@plt>
jmp    1278 <tinti+0xe8>
ucomiss 0x14(%rsp),%xmm0
jb     13b6 <tinti+0x226>
movss  0x18(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jbe    13b6 <tinti+0x226>
movaps %xmm2,%xmm1
movss  0x8(%rsp),%xmm2
call   1080 <r4@plt>
jmp    1278 <tinti+0xe8>
ucomiss 0x18(%rsp),%xmm0
xorps  %xmm1,%xmm1
jb     1287 <tinti+0xf7>
movss  0x20(%rsp),%xmm3
ucomiss %xmm0,%xmm3
jbe    1287 <tinti+0xf7>
movaps %xmm2,%xmm1
movss  0x8(%rsp),%xmm2
call   1040 <r5@plt>
jmp    1278 <tinti+0xe8>
mov    %rbx,%rax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@stderr = global i32 0
@.str = [48 x i8] c"Warning! Tr (%f) must be greater than Ts (%f)!\0A\00"
define float* @tinti(float* %0, i32 %1, float %2, float %3, float %4, float %5) {
%7 = alloca float*
%8 = alloca i32
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca i32
%14 = alloca float
%15 = alloca float
%16 = alloca float*
store float* %0, float** %7
store i32 %1, i32* %8
store float %2, float* %9
store float %3, float* %10
store float %4, float* %11
store float %5, float* %12
%17 = load i32, i32* %8
%18 = call float* @zeros_f(i32 %17)
store float* %18, float** %16
%19 = load float, float* %9
%20 = fpext float %19 to double
%21 = fmul double 0x400921FB54442D18, %20
%22 = load float, float* %10
%23 = call double @pow(float %22, i32 2)
%24 = fmul double %21, %23
%25 = fdiv double 2.000000e+00, %24
%26 = fptrunc double %25 to float
store float %26, float* %15
store i32 0, i32* %13
br label %27
27: ; preds = %299, %6
%28 = load i32, i32* %13
%29 = load i32, i32* %8
%30 = icmp slt i32 %28, %29
br i1 %30, label %31, label %302
31: ; preds = %27
%32 = load float, float* %11
%33 = fpext float %32 to double
%34 = fcmp ogt double %33, 0.000000e+00
br i1 %34, label %35, label %43
35: ; preds = %31
%36 = load float*, float** %7
%37 = load i32, i32* %13
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds float, float* %36, i64 %38
%40 = load float, float* %39
%41 = load float, float* %11
%42 = fsub float %40, %41
store float %42, float* %14
br label %49
43: ; preds = %31
%44 = load float*, float** %7
%45 = load i32, i32* %13
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds float, float* %44, i64 %46
%48 = load float, float* %47
store float %48, float* %14
br label %49
49: ; preds = %43, %35
%50 = load float, float* %9
%51 = load float, float* %10
%52 = fmul float 2.000000e+00, %51
%53 = fcmp ogt float %50, %52
br i1 %53, label %54, label %165
54: ; preds = %49
%55 = load float, float* %14
%56 = fcmp oge float %55, 0.000000e+00
br i1 %56, label %57, label %71
57: ; preds = %54
%58 = load float, float* %14
%59 = load float, float* %10
%60 = fcmp ole float %58, %59
br i1 %60, label %61, label %71
61: ; preds = %57
%62 = load float, float* %15
%63 = load float, float* %14
%64 = load float, float* %9
%65 = call float @r1(float %63, float %64)
%66 = fmul float %62, %65
%67 = load float*, float** %16
%68 = load i32, i32* %13
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds float, float* %67, i64 %69
store float %66, float* %70
br label %164
71: ; preds = %57, %54
%72 = load float, float* %14
%73 = load float, float* %10
%74 = fcmp ogt float %72, %73
br i1 %74, label %75, label %91
75: ; preds = %71
%76 = load float, float* %14
%77 = load float, float* %10
%78 = fmul float 2.000000e+00, %77
%79 = fcmp olt float %76, %78
br i1 %79, label %80, label %91
80: ; preds = %75
%81 = load float, float* %15
%82 = load float, float* %14
%83 = load float, float* %9
%84 = load float, float* %10
%85 = call float @r2(float %82, float %83, float %84)
%86 = fmul float %81, %85
%87 = load float*, float** %16
%88 = load i32, i32* %13
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds float, float* %87, i64 %89
store float %86, float* %90
br label %163
91: ; preds = %75, %71
%92 = load float, float* %14
%93 = load float, float* %10
%94 = fmul float 2.000000e+00, %93
%95 = fcmp oge float %92, %94
br i1 %95, label %96, label %111
96: ; preds = %91
%97 = load float, float* %14
%98 = load float, float* %9
%99 = fcmp olt float %97, %98
br i1 %99, label %100, label %111
100: ; preds = %96
%101 = load float, float* %15
%102 = load float, float* %14
%103 = load float, float* %9
%104 = load float, float* %10
%105 = call float @r3(float %102, float %103, float %104)
%106 = fmul float %101, %105
%107 = load float*, float** %16
%108 = load i32, i32* %13
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds float, float* %107, i64 %109
store float %106, float* %110
br label %162
111: ; preds = %96, %91
%112 = load float, float* %14
%113 = load float, float* %9
%114 = fcmp oge float %112, %113
br i1 %114, label %115, label %132
115: ; preds = %111
%116 = load float, float* %14
%117 = load float, float* %9
%118 = load float, float* %10
%119 = fadd float %117, %118
%120 = fcmp olt float %116, %119
br i1 %120, label %121, label %132
121: ; preds = %115
%122 = load float, float* %15
%123 = load float, float* %14
%124 = load float, float* %9
%125 = load float, float* %10
%126 = call float @r4(float %123, float %124, float %125)
%127 = fmul float %122, %126
%128 = load float*, float** %16
%129 = load i32, i32* %13
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds float, float* %128, i64 %130
store float %127, float* %131
br label %161
132: ; preds = %115, %111
%133 = load float, float* %14
%134 = load float, float* %9
%135 = load float, float* %10
%136 = fadd float %134, %135
%137 = fcmp oge float %133, %136
br i1 %137, label %138, label %155
138: ; preds = %132
%139 = load float, float* %14
%140 = load float, float* %9
%141 = load float, float* %10
%142 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %141, float %140)
%143 = fcmp olt float %139, %142
br i1 %143, label %144, label %155
144: ; preds = %138
%145 = load float, float* %15
%146 = load float, float* %14
%147 = load float, float* %9
%148 = load float, float* %10
%149 = call float @r5(float %146, float %147, float %148)
%150 = fmul float %145, %149
%151 = load float*, float** %16
%152 = load i32, i32* %13
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds float, float* %151, i64 %153
store float %150, float* %154
br label %160
155: ; preds = %138, %132
%156 = load float*, float** %16
%157 = load i32, i32* %13
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds float, float* %156, i64 %158
store float 0.000000e+00, float* %159
br label %160
160: ; preds = %155, %144
br label %161
161: ; preds = %160, %121
br label %162
162: ; preds = %161, %100
br label %163
163: ; preds = %162, %80
br label %164
164: ; preds = %163, %61
br label %291
165: ; preds = %49
%166 = load float, float* %9
%167 = load float, float* %10
%168 = fcmp ogt float %166, %167
br i1 %168, label %169, label %285
169: ; preds = %165
%170 = load float, float* %9
%171 = load float, float* %10
%172 = fmul float 2.000000e+00, %171
%173 = fcmp ole float %170, %172
br i1 %173, label %174, label %285
174: ; preds = %169
%175 = load float, float* %14
%176 = fcmp oge float %175, 0.000000e+00
br i1 %176, label %177, label %191
177: ; preds = %174
%178 = load float, float* %14
%179 = load float, float* %10
%180 = fcmp ole float %178, %179
br i1 %180, label %181, label %191
181: ; preds = %177
%182 = load float, float* %15
%183 = load float, float* %14
%184 = load float, float* %9
%185 = call float @r1(float %183, float %184)
%186 = fmul float %182, %185
%187 = load float*, float** %16
%188 = load i32, i32* %13
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds float, float* %187, i64 %189
store float %186, float* %190
br label %284
191: ; preds = %177, %174
%192 = load float, float* %14
%193 = load float, float* %10
%194 = fcmp ogt float %192, %193
br i1 %194, label %195, label %210
195: ; preds = %191
%196 = load float, float* %14
%197 = load float, float* %9
%198 = fcmp olt float %196, %197
br i1 %198, label %199, label %210
199: ; preds = %195
%200 = load float, float* %15
%201 = load float, float* %14
%202 = load float, float* %9
%203 = load float, float* %10
%204 = call float @r2(float %201, float %202, float %203)
%205 = fmul float %200, %204
%206 = load float*, float** %16
%207 = load i32, i32* %13
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds float, float* %206, i64 %208
store float %205, float* %209
br label %283
210: ; preds = %195, %191
%211 = load float, float* %14
%212 = load float, float* %9
%213 = fcmp oge float %211, %212
br i1 %213, label %214, label %230
214: ; preds = %210
%215 = load float, float* %14
%216 = load float, float* %10
%217 = fmul float 2.000000e+00, %216
%218 = fcmp olt float %215, %217
br i1 %218, label %219, label %230
219: ; preds = %214
%220 = load float, float* %15
%221 = load float, float* %14
%222 = load float, float* %9
%223 = load float, float* %10
%224 = call float @sr3(float %221, float %222, float %223)
%225 = fmul float %220, %224
%226 = load float*, float** %16
%227 = load i32, i32* %13
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds float, float* %226, i64 %228
store float %225, float* %229
br label %282
230: ; preds = %214, %210
%231 = load float, float* %14
%232 = load float, float* %10
%233 = fmul float 2.000000e+00, %232
%234 = fcmp oge float %231, %233
br i1 %234, label %235, label %252
235: ; preds = %230
%236 = load float, float* %14
%237 = load float, float* %10
%238 = load float, float* %9
%239 = fadd float %237, %238
%240 = fcmp olt float %236, %239
br i1 %240, label %241, label %252
241: ; preds = %235
%242 = load float, float* %15
%243 = load float, float* %14
%244 = load float, float* %9
%245 = load float, float* %10
%246 = call float @r4(float %243, float %244, float %245)
%247 = fmul float %242, %246
%248 = load float*, float** %16
%249 = load i32, i32* %13
%250 = sext i32 %249 to i64
%251 = getelementptr inbounds float, float* %248, i64 %250
store float %247, float* %251
br label %281
252: ; preds = %235, %230
%253 = load float, float* %14
%254 = load float, float* %10
%255 = load float, float* %9
%256 = fadd float %254, %255
%257 = fcmp oge float %253, %256
br i1 %257, label %258, label %275
258: ; preds = %252
%259 = load float, float* %14
%260 = load float, float* %10
%261 = load float, float* %9
%262 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %260, float %261)
%263 = fcmp olt float %259, %262
br i1 %263, label %264, label %275
264: ; preds = %258
%265 = load float, float* %15
%266 = load float, float* %14
%267 = load float, float* %9
%268 = load float, float* %10
%269 = call float @r5(float %266, float %267, float %268)
%270 = fmul float %265, %269
%271 = load float*, float** %16
%272 = load i32, i32* %13
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds float, float* %271, i64 %273
store float %270, float* %274
br label %280
275: ; preds = %258, %252
%276 = load float*, float** %16
%277 = load i32, i32* %13
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds float, float* %276, i64 %278
store float 0.000000e+00, float* %279
br label %280
280: ; preds = %275, %264
br label %281
281: ; preds = %280, %241
br label %282
282: ; preds = %281, %219
br label %283
283: ; preds = %282, %199
br label %284
284: ; preds = %283, %181
br label %290
285: ; preds = %169, %165
%286 = load i32, i32* @stderr
%287 = load float, float* %9
%288 = load float, float* %10
%289 = call i32 @fprintf(i32 %286, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str, i64 0, i64 0), float %287, float %288)
br label %290
290: ; preds = %285, %284
br label %291
291: ; preds = %290, %164
%292 = load float, float* %12
%293 = load float*, float** %16
%294 = load i32, i32* %13
%295 = sext i32 %294 to i64
%296 = getelementptr inbounds float, float* %293, i64 %295
%297 = load float, float* %296
%298 = fmul float %297, %292
store float %298, float* %296
br label %299
299: ; preds = %291
%300 = load i32, i32* %13
%301 = add nsw i32 %300, 1
store i32 %301, i32* %13
br label %27
302: ; preds = %27
%303 = load float*, float** %16
ret float* %303
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [48 x i8] c"Warning! Tr (%f) must be greater than Ts (%f)!\0A\00"
define float* @tinti(float* nocapture %0, i32 %1, float %2, float %3, float %4, float %5) {
%7 = tail call float* @zeros_f(i32 %1)
%8 = fpext float %2 to double
%9 = fmul double %8, 0x400921FB54442D18
%10 = tail call double @pow(float %3, i32 2)
%11 = fmul double %9, %10
%12 = fdiv double 2.000000e+00, %11
%13 = fptrunc double %12 to float
%14 = icmp sgt i32 %1, 0
br i1 %14, label %15, label %113
15: ; preds = %6
%16 = fcmp ogt float %4, 0.000000e+00
%17 = fmul float %3, 2.000000e+00
%18 = fcmp olt float %17, %2
%19 = fcmp ule float %2, %3
%20 = fcmp ult float %17, %2
%21 = or i1 %19, %20
%22 = fadd float %2, %3
%23 = tail call float @llvm.fmuladd.f32(float %3, float 2.000000e+00, float %2)
%24 = zext i32 %1 to i64
%25 = select i1 %16, float %4, float 0.000000e+00
br label %26
26: ; preds = %15, %107
%27 = phi i64 [ 0, %15 ], [ %111, %107 ]
%28 = getelementptr inbounds float, float* %0, i64 %27
%29 = load float, float* %28
%30 = fsub float %29, %25
br i1 %18, label %31, label %66
31: ; preds = %26
%32 = fcmp ult float %30, 0.000000e+00
%33 = fcmp ugt float %30, %3
%34 = or i1 %32, %33
br i1 %34, label %38, label %35
35: ; preds = %31
%36 = tail call float @r1(float %30, float %2)
%37 = fmul float %36, %13
br label %107
38: ; preds = %31
%39 = fcmp ogt float %30, %3
%40 = fcmp olt float %30, %17
%41 = and i1 %39, %40
br i1 %41, label %42, label %45
42: ; preds = %38
%43 = tail call float @r2(float %30, float %2, float %3)
%44 = fmul float %43, %13
br label %107
45: ; preds = %38
%46 = fcmp oge float %30, %17
%47 = fcmp olt float %30, %2
%48 = and i1 %46, %47
br i1 %48, label %49, label %52
49: ; preds = %45
%50 = tail call float @r3(float %30, float %2, float %3)
%51 = fmul float %50, %13
br label %107
52: ; preds = %45
%53 = fcmp oge float %30, %2
%54 = fcmp olt float %30, %22
%55 = and i1 %53, %54
br i1 %55, label %56, label %59
56: ; preds = %52
%57 = tail call float @r4(float %30, float %2, float %3)
%58 = fmul float %57, %13
br label %107
59: ; preds = %52
%60 = fcmp oge float %30, %22
%61 = fcmp olt float %30, %23
%62 = select i1 %60, i1 %61, i1 false
br i1 %62, label %63, label %107
63: ; preds = %59
%64 = tail call float @r5(float %30, float %2, float %3)
%65 = fmul float %64, %13
br label %107
66: ; preds = %26
br i1 %21, label %102, label %67
67: ; preds = %66
%68 = fcmp ult float %30, 0.000000e+00
%69 = fcmp ugt float %30, %3
%70 = or i1 %68, %69
br i1 %70, label %74, label %71
71: ; preds = %67
%72 = tail call float @r1(float %30, float %2)
%73 = fmul float %72, %13
br label %107
74: ; preds = %67
%75 = fcmp ogt float %30, %3
%76 = fcmp olt float %30, %2
%77 = and i1 %75, %76
br i1 %77, label %78, label %81
78: ; preds = %74
%79 = tail call float @r2(float %30, float %2, float %3)
%80 = fmul float %79, %13
br label %107
81: ; preds = %74
%82 = fcmp oge float %30, %2
%83 = fcmp olt float %30, %17
%84 = and i1 %82, %83
br i1 %84, label %85, label %88
85: ; preds = %81
%86 = tail call float @sr3(float %30, float %2, float %3)
%87 = fmul float %86, %13
br label %107
88: ; preds = %81
%89 = fcmp oge float %30, %17
%90 = fcmp olt float %30, %22
%91 = and i1 %89, %90
br i1 %91, label %92, label %95
92: ; preds = %88
%93 = tail call float @r4(float %30, float %2, float %3)
%94 = fmul float %93, %13
br label %107
95: ; preds = %88
%96 = fcmp oge float %30, %22
%97 = fcmp olt float %30, %23
%98 = select i1 %96, i1 %97, i1 false
br i1 %98, label %99, label %107
99: ; preds = %95
%100 = tail call float @r5(float %30, float %2, float %3)
%101 = fmul float %100, %13
br label %107
102: ; preds = %66
%103 = load i32, i32* @stderr
%104 = tail call i32 @fprintf(i32 %103, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str, i64 0, i64 0), float %2, float %3)
%105 = getelementptr inbounds float, float* %7, i64 %27
%106 = load float, float* %105
br label %107
107: ; preds = %95, %59, %102, %78, %92, %99, %85, %71, %35, %49, %63, %56, %42
%108 = phi float [ %106, %102 ], [ %80, %78 ], [ %94, %92 ], [ %101, %99 ], [ %87, %85 ], [ %73, %71 ], [ %37, %35 ], [ %51, %49 ], [ %65, %63 ], [ %58, %56 ], [ %44, %42 ], [ 0.000000e+00, %59 ], [ 0.000000e+00, %95 ]
%109 = getelementptr inbounds float, float* %7, i64 %27
%110 = fmul float %108, %5
store float %110, float* %109
%111 = add nuw nsw i64 %27, 1
%112 = icmp eq i64 %111, %24
br i1 %112, label %113, label %26
113: ; preds = %107, %6
ret float* %7
}