#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 */
typedef struct TYPE_3__ TYPE_1__;

/* Type definitions */
struct _ftsent {
  struct _ftsent *fts_link;
};
struct TYPE_3__ {
  int fts_nitems;
  struct _ftsent **fts_array;
  int /*<<< orphan*/ fts_compar;
};
typedef struct _ftsent FTSENT;
typedef TYPE_1__ FTS;

/* Variables and functions */
int /*<<< orphan*/ free(struct _ftsent **);
int /*<<< orphan*/ qsort(void *, int, int, int /*<<< orphan*/);
struct _ftsent **reallocarray(struct _ftsent **, int, int);
FTSENT *fts_sort(FTS *sp, FTSENT *head, int nitems) {
  FTSENT **ap, *p;
  if (nitems > sp->fts_nitems) {
    struct _ftsent **a;
    sp->fts_nitems = nitems + 40;
    if ((a = reallocarray(sp->fts_array, sp->fts_nitems, sizeof(FTSENT *))) ==
        NULL) {
      if (sp->fts_array)
        free(sp->fts_array);
      sp->fts_array = NULL;
      sp->fts_nitems = 0;
      return (head);
    }
    sp->fts_array = a;
  }
  for (ap = sp->fts_array, p = head; p; p = p->fts_link)
    *ap++ = p;
  qsort((void *)sp->fts_array, nitems, sizeof(FTSENT *), sp->fts_compar);
  for (head = *(ap = sp->fts_array); --nitems; ++ap)
    ap[0]->fts_link = ap[1];
  ap[0]->fts_link = NULL;
  return (head);
}


x86 assembly (clang, -O0):
<fts_sort>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x10(%rbp),%rcx
cmp    (%rcx),%eax
jle    11cf <fts_sort+0x9f>
mov    -0x1c(%rbp),%ecx
add    $0x28,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    $0x8,%edx
call   1050 <reallocarray@plt>
mov    %rax,-0x38(%rbp)
cmp    $0x0,%rax
jne    11c3 <fts_sort+0x93>
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     11a0 <fts_sort+0x70>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1030 <free@plt>
mov    -0x10(%rbp),%rax
movq   $0x0,0x8(%rax)
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    128e <fts_sort+0x15e>
mov    -0x38(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x8(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x30(%rbp)
cmpq   $0x0,-0x30(%rbp)
je     1214 <fts_sort+0xe4>
mov    -0x30(%rbp),%rcx
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x8,%rdx
mov    %rdx,-0x28(%rbp)
mov    %rcx,(%rax)
mov    -0x30(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x30(%rbp)
jmp    11e3 <fts_sort+0xb3>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
mov    $0x8,%edx
call   1040 <qsort@plt>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x28(%rbp)
mov    (%rax),%rax
mov    %rax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
cmp    $0x0,%eax
je     1278 <fts_sort+0x148>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rcx
mov    -0x28(%rbp),%rax
mov    (%rax),%rax
mov    %rcx,(%rax)
mov    -0x28(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x28(%rbp)
jmp    1243 <fts_sort+0x113>
mov    -0x28(%rbp),%rax
mov    (%rax),%rax
movq   $0x0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<fts_sort>:
push   %r15
push   %r14
push   %rbx
mov    %edx,%r14d
mov    %rsi,%rbx
mov    %rdi,%r15
cmp    %edx,(%rdi)
jge    116e <fts_sort+0x3e>
lea    0x28(%r14),%esi
mov    %esi,(%r15)
mov    0x8(%r15),%rdi
mov    $0x8,%edx
call   1050 <reallocarray@plt>
test   %rax,%rax
je     1257 <fts_sort+0x127>
mov    %rax,%rdi
mov    %rax,0x8(%r15)
test   %rbx,%rbx
jne    1180 <fts_sort+0x50>
jmp    1193 <fts_sort+0x63>
mov    0x8(%r15),%rdi
test   %rbx,%rbx
je     1193 <fts_sort+0x63>
nopw   0x0(%rax,%rax,1)
mov    %rbx,(%rdi)
add    $0x8,%rdi
mov    (%rbx),%rbx
test   %rbx,%rbx
jne    1180 <fts_sort+0x50>
mov    0x8(%r15),%rdi
mov    0x10(%r15),%ecx
mov    %r14d,%esi
mov    $0x8,%edx
call   1040 <qsort@plt>
mov    0x8(%r15),%rax
mov    (%rax),%rbx
mov    %rbx,%rcx
cmp    $0x1,%r14d
je     1247 <fts_sort+0x117>
mov    0x8(%rax),%rcx
add    $0x8,%rax
mov    %rcx,(%rbx)
mov    %r14d,%ecx
add    $0xfffffffe,%ecx
je     1244 <fts_sort+0x114>
lea    -0x3(%r14),%r8d
test   $0x3,%cl
je     1209 <fts_sort+0xd9>
add    $0x2,%r14b
movzbl %r14b,%r9d
and    $0x3,%r9d
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%rax),%rdx
mov    0x8(%rax),%rsi
add    $0x8,%rax
mov    %rsi,(%rdx)
add    $0x1,%rdi
cmp    %edi,%r9d
jne    11f0 <fts_sort+0xc0>
sub    %edi,%ecx
cmp    $0x3,%r8d
jb     1244 <fts_sort+0x114>
nop
mov    (%rax),%rdx
mov    0x8(%rax),%rsi
mov    %rsi,(%rdx)
mov    0x8(%rax),%rdx
mov    0x10(%rax),%rsi
mov    %rsi,(%rdx)
mov    0x10(%rax),%rdx
mov    0x18(%rax),%rsi
mov    %rsi,(%rdx)
mov    0x18(%rax),%rdx
mov    0x20(%rax),%rsi
add    $0x20,%rax
mov    %rsi,(%rdx)
add    $0xfffffffc,%ecx
jne    1210 <fts_sort+0xe0>
mov    (%rax),%rcx
movq   $0x0,(%rcx)
mov    %rbx,%rax
pop    %rbx
pop    %r14
pop    %r15
ret
mov    0x8(%r15),%rdi
test   %rdi,%rdi
je     1265 <fts_sort+0x135>
call   1030 <free@plt>
movq   $0x0,0x8(%r15)
movl   $0x0,(%r15)
jmp    124e <fts_sort+0x11e>

LLVM IR (-O0):
%struct.TYPE_3__ = type { i32, %struct._ftsent**, i32 }
%struct._ftsent = type { %struct._ftsent* }
define %struct._ftsent* @fts_sort(%struct.TYPE_3__* %0, %struct._ftsent* %1, i32 %2) {
%4 = alloca %struct._ftsent*
%5 = alloca %struct.TYPE_3__*
%6 = alloca %struct._ftsent*
%7 = alloca i32
%8 = alloca %struct._ftsent**
%9 = alloca %struct._ftsent*
%10 = alloca %struct._ftsent**
store %struct.TYPE_3__* %0, %struct.TYPE_3__** %5
store %struct._ftsent* %1, %struct._ftsent** %6
store i32 %2, i32* %7
%11 = load i32, i32* %7
%12 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%13 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %12, i32 0, i32 0
%14 = load i32, i32* %13
%15 = icmp sgt i32 %11, %14
br i1 %15, label %16, label %49
16: ; preds = %3
%17 = load i32, i32* %7
%18 = add nsw i32 %17, 40
%19 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%20 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %19, i32 0, i32 0
store i32 %18, i32* %20
%21 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%22 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %21, i32 0, i32 1
%23 = load %struct._ftsent**, %struct._ftsent*** %22
%24 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%25 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %24, i32 0, i32 0
%26 = load i32, i32* %25
%27 = call %struct._ftsent** @reallocarray(%struct._ftsent** %23, i32 %26, i32 8)
store %struct._ftsent** %27, %struct._ftsent*** %10
%28 = icmp eq %struct._ftsent** %27, null
br i1 %28, label %29, label %45
29: ; preds = %16
%30 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%31 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %30, i32 0, i32 1
%32 = load %struct._ftsent**, %struct._ftsent*** %31
%33 = icmp ne %struct._ftsent** %32, null
br i1 %33, label %34, label %39
34: ; preds = %29
%35 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%36 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %35, i32 0, i32 1
%37 = load %struct._ftsent**, %struct._ftsent*** %36
%38 = call i32 @free(%struct._ftsent** %37)
br label %39
39: ; preds = %34, %29
%40 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%41 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %40, i32 0, i32 1
store %struct._ftsent** null, %struct._ftsent*** %41
%42 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%43 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %42, i32 0, i32 0
store i32 0, i32* %43
%44 = load %struct._ftsent*, %struct._ftsent** %6
store %struct._ftsent* %44, %struct._ftsent** %4
br label %100
45: ; preds = %16
%46 = load %struct._ftsent**, %struct._ftsent*** %10
%47 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%48 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %47, i32 0, i32 1
store %struct._ftsent** %46, %struct._ftsent*** %48
br label %49
49: ; preds = %45, %3
%50 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%51 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %50, i32 0, i32 1
%52 = load %struct._ftsent**, %struct._ftsent*** %51
store %struct._ftsent** %52, %struct._ftsent*** %8
%53 = load %struct._ftsent*, %struct._ftsent** %6
store %struct._ftsent* %53, %struct._ftsent** %9
br label %54
54: ; preds = %61, %49
%55 = load %struct._ftsent*, %struct._ftsent** %9
%56 = icmp ne %struct._ftsent* %55, null
br i1 %56, label %57, label %65
57: ; preds = %54
%58 = load %struct._ftsent*, %struct._ftsent** %9
%59 = load %struct._ftsent**, %struct._ftsent*** %8
%60 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %59, i32 1
store %struct._ftsent** %60, %struct._ftsent*** %8
store %struct._ftsent* %58, %struct._ftsent** %59
br label %61
61: ; preds = %57
%62 = load %struct._ftsent*, %struct._ftsent** %9
%63 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %62, i32 0, i32 0
%64 = load %struct._ftsent*, %struct._ftsent** %63
store %struct._ftsent* %64, %struct._ftsent** %9
br label %54
65: ; preds = %54
%66 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%67 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %66, i32 0, i32 1
%68 = load %struct._ftsent**, %struct._ftsent*** %67
%69 = bitcast %struct._ftsent** %68 to i8*
%70 = load i32, i32* %7
%71 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%72 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %71, i32 0, i32 2
%73 = load i32, i32* %72
%74 = call i32 @qsort(i8* %69, i32 %70, i32 8, i32 %73)
%75 = load %struct.TYPE_3__*, %struct.TYPE_3__** %5
%76 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %75, i32 0, i32 1
%77 = load %struct._ftsent**, %struct._ftsent*** %76
store %struct._ftsent** %77, %struct._ftsent*** %8
%78 = load %struct._ftsent*, %struct._ftsent** %77
store %struct._ftsent* %78, %struct._ftsent** %6
br label %79
79: ; preds = %91, %65
%80 = load i32, i32* %7
%81 = add nsw i32 %80, -1
store i32 %81, i32* %7
%82 = icmp ne i32 %81, 0
br i1 %82, label %83, label %94
83: ; preds = %79
%84 = load %struct._ftsent**, %struct._ftsent*** %8
%85 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %84, i64 1
%86 = load %struct._ftsent*, %struct._ftsent** %85
%87 = load %struct._ftsent**, %struct._ftsent*** %8
%88 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %87, i64 0
%89 = load %struct._ftsent*, %struct._ftsent** %88
%90 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %89, i32 0, i32 0
store %struct._ftsent* %86, %struct._ftsent** %90
br label %91
91: ; preds = %83
%92 = load %struct._ftsent**, %struct._ftsent*** %8
%93 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %92, i32 1
store %struct._ftsent** %93, %struct._ftsent*** %8
br label %79
94: ; preds = %79
%95 = load %struct._ftsent**, %struct._ftsent*** %8
%96 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %95, i64 0
%97 = load %struct._ftsent*, %struct._ftsent** %96
%98 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %97, i32 0, i32 0
store %struct._ftsent* null, %struct._ftsent** %98
%99 = load %struct._ftsent*, %struct._ftsent** %6
store %struct._ftsent* %99, %struct._ftsent** %4
br label %100
100: ; preds = %94, %39
%101 = load %struct._ftsent*, %struct._ftsent** %4
ret %struct._ftsent* %101
}

LLVM IR (-O2):
%struct.TYPE_3__ = type { i32, %struct._ftsent**, i32 }
%struct._ftsent = type { %struct._ftsent* }
define %struct._ftsent* @fts_sort(%struct.TYPE_3__* nocapture %0, %struct._ftsent* %1, i32 %2) {
%4 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %0, i64 0, i32 0
%5 = load i32, i32* %4
%6 = icmp slt i32 %5, %2
br i1 %6, label %10, label %7
7: ; preds = %3
%8 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %0, i64 0, i32 1
%9 = load %struct._ftsent**, %struct._ftsent*** %8
br label %23
10: ; preds = %3
%11 = add nsw i32 %2, 40
store i32 %11, i32* %4
%12 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %0, i64 0, i32 1
%13 = load %struct._ftsent**, %struct._ftsent*** %12
%14 = tail call %struct._ftsent** @reallocarray(%struct._ftsent** %13, i32 %11, i32 8)
%15 = icmp eq %struct._ftsent** %14, null
br i1 %15, label %16, label %22
16: ; preds = %10
%17 = load %struct._ftsent**, %struct._ftsent*** %12
%18 = icmp eq %struct._ftsent** %17, null
br i1 %18, label %21, label %19
19: ; preds = %16
%20 = tail call i32 @free(%struct._ftsent** %17)
br label %21
21: ; preds = %16, %19
store %struct._ftsent** null, %struct._ftsent*** %12
store i32 0, i32* %4
br label %100
22: ; preds = %10
store %struct._ftsent** %14, %struct._ftsent*** %12
br label %23
23: ; preds = %7, %22
%24 = phi %struct._ftsent** [ %9, %7 ], [ %14, %22 ]
%25 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %0, i64 0, i32 1
%26 = icmp eq %struct._ftsent* %1, null
br i1 %26, label %27, label %29
27: ; preds = %23
%28 = bitcast %struct._ftsent** %24 to i8*
br label %39
29: ; preds = %23, %29
%30 = phi %struct._ftsent* [ %34, %29 ], [ %1, %23 ]
%31 = phi %struct._ftsent** [ %32, %29 ], [ %24, %23 ]
%32 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %31, i64 1
store %struct._ftsent* %30, %struct._ftsent** %31
%33 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %30, i64 0, i32 0
%34 = load %struct._ftsent*, %struct._ftsent** %33
%35 = icmp eq %struct._ftsent* %34, null
br i1 %35, label %36, label %29
36: ; preds = %29
%37 = bitcast %struct._ftsent*** %25 to i8**
%38 = load i8*, i8** %37
br label %39
39: ; preds = %27, %36
%40 = phi i8* [ %38, %36 ], [ %28, %27 ]
%41 = getelementptr inbounds %struct.TYPE_3__, %struct.TYPE_3__* %0, i64 0, i32 2
%42 = load i32, i32* %41
%43 = tail call i32 @qsort(i8* %40, i32 %2, i32 8, i32 %42)
%44 = load %struct._ftsent**, %struct._ftsent*** %25
%45 = load %struct._ftsent*, %struct._ftsent** %44
%46 = icmp eq i32 %2, 1
br i1 %46, label %97, label %47
47: ; preds = %39
%48 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %44, i64 1
%49 = load %struct._ftsent*, %struct._ftsent** %48
%50 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %45, i64 0, i32 0
store %struct._ftsent* %49, %struct._ftsent** %50
%51 = add i32 %2, -2
%52 = icmp eq i32 %51, 0
br i1 %52, label %94, label %53
53: ; preds = %47
%54 = add i32 %2, -3
%55 = and i32 %51, 3
%56 = icmp eq i32 %55, 0
br i1 %56, label %68, label %57
57: ; preds = %53, %57
%58 = phi i32 [ %65, %57 ], [ %51, %53 ]
%59 = phi %struct._ftsent** [ %62, %57 ], [ %48, %53 ]
%60 = phi i32 [ %66, %57 ], [ 0, %53 ]
%61 = load %struct._ftsent*, %struct._ftsent** %59
%62 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %59, i64 1
%63 = load %struct._ftsent*, %struct._ftsent** %62
%64 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %61, i64 0, i32 0
store %struct._ftsent* %63, %struct._ftsent** %64
%65 = add nsw i32 %58, -1
%66 = add i32 %60, 1
%67 = icmp eq i32 %66, %55
br i1 %67, label %68, label %57
68: ; preds = %57, %53
%69 = phi %struct._ftsent** [ undef, %53 ], [ %62, %57 ]
%70 = phi i32 [ %51, %53 ], [ %65, %57 ]
%71 = phi %struct._ftsent** [ %48, %53 ], [ %62, %57 ]
%72 = icmp ult i32 %54, 3
br i1 %72, label %94, label %73
73: ; preds = %68, %73
%74 = phi i32 [ %92, %73 ], [ %70, %68 ]
%75 = phi %struct._ftsent** [ %89, %73 ], [ %71, %68 ]
%76 = load %struct._ftsent*, %struct._ftsent** %75
%77 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %75, i64 1
%78 = load %struct._ftsent*, %struct._ftsent** %77
%79 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %76, i64 0, i32 0
store %struct._ftsent* %78, %struct._ftsent** %79
%80 = load %struct._ftsent*, %struct._ftsent** %77
%81 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %75, i64 2
%82 = load %struct._ftsent*, %struct._ftsent** %81
%83 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %80, i64 0, i32 0
store %struct._ftsent* %82, %struct._ftsent** %83
%84 = load %struct._ftsent*, %struct._ftsent** %81
%85 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %75, i64 3
%86 = load %struct._ftsent*, %struct._ftsent** %85
%87 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %84, i64 0, i32 0
store %struct._ftsent* %86, %struct._ftsent** %87
%88 = load %struct._ftsent*, %struct._ftsent** %85
%89 = getelementptr inbounds %struct._ftsent*, %struct._ftsent** %75, i64 4
%90 = load %struct._ftsent*, %struct._ftsent** %89
%91 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %88, i64 0, i32 0
store %struct._ftsent* %90, %struct._ftsent** %91
%92 = add nsw i32 %74, -4
%93 = icmp eq i32 %92, 0
br i1 %93, label %94, label %73
94: ; preds = %68, %73, %47
%95 = phi %struct._ftsent** [ %48, %47 ], [ %69, %68 ], [ %89, %73 ]
%96 = load %struct._ftsent*, %struct._ftsent** %95
br label %97
97: ; preds = %94, %39
%98 = phi %struct._ftsent* [ %45, %39 ], [ %96, %94 ]
%99 = getelementptr inbounds %struct._ftsent, %struct._ftsent* %98, i64 0, i32 0
store %struct._ftsent* null, %struct._ftsent** %99
br label %100
100: ; preds = %21, %97
%101 = phi %struct._ftsent* [ %45, %97 ], [ %1, %21 ]
ret %struct._ftsent* %101
}