Re-apply 75490, 75806 and 76177 with fixes and tests. Efficiency comes
authorDavid Greene <greened@obbligato.org>
Mon, 20 Jul 2009 22:02:59 +0000 (22:02 +0000)
committerDavid Greene <greened@obbligato.org>
Mon, 20 Jul 2009 22:02:59 +0000 (22:02 +0000)
next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76486 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetAsmInfo.h
lib/Target/TargetAsmInfo.cpp
test/CodeGen/PIC16/2009-07-17-PR4566-pic16.ll [new file with mode: 0644]
test/CodeGen/PIC16/dg.exp [new file with mode: 0644]
test/CodeGen/Thumb/2009-07-17-PR4566-thumb.ll [new file with mode: 0644]
test/FrontendC++/2009-07-15-LineNumbers.cpp
utils/TableGen/AsmWriterEmitter.cpp

index 6cdb7ccec8f7dbe46233fbb42cc0e0b75a2adb20..a89b90669a597e188058e21413890a64d0d6c1b6 100644 (file)
@@ -222,6 +222,14 @@ namespace llvm {
     /// assembler.
     const char *CommentString;            // Defaults to "#"
 
+    /// FirstOperandColumn - The output column where the first operand
+    /// should be printed
+    unsigned FirstOperandColumn;          // Defaults to 0 (ignored)
+
+    /// MaxOperandLength - The maximum length of any printed asm
+    /// operand
+    unsigned MaxOperandLength;            // Defaults to 0 (ignored)
+
     /// GlobalPrefix - If this is set to a non-empty string, it is prepended
     /// onto all global symbols.  This is often used for "_" or ".".
     const char *GlobalPrefix;             // Defaults to ""
@@ -691,6 +699,9 @@ namespace llvm {
     const char *getCommentString() const {
       return CommentString;
     }
+    unsigned getOperandColumn(int operand) const {
+      return FirstOperandColumn + (MaxOperandLength+1)*(operand-1);
+    }
     const char *getGlobalPrefix() const {
       return GlobalPrefix;
     }
index 5236786ddad0e19c27b7224a00c1dba4beebb977..5b7ddbfa4a7eaac929b0f80833f53e44d0bb4d67 100644 (file)
@@ -45,6 +45,8 @@ TargetAsmInfo::TargetAsmInfo(const TargetMachine &tm)
   SeparatorChar = ';';
   CommentColumn = 60;
   CommentString = "#";
+  FirstOperandColumn = 0;
+  MaxOperandLength = 0;
   GlobalPrefix = "";
   PrivateGlobalPrefix = ".";
   LessPrivateGlobalPrefix = "";
diff --git a/test/CodeGen/PIC16/2009-07-17-PR4566-pic16.ll b/test/CodeGen/PIC16/2009-07-17-PR4566-pic16.ll
new file mode 100644 (file)
index 0000000..aa2c51e
--- /dev/null
@@ -0,0 +1,29 @@
+; RUN: llvm-as < %s | llc -march=pic16 | grep {movf \\+@i + 0, \\+W}
+
+target datalayout = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8-f32:32:32"
+target triple = "pic16-"
+@i = global i32 -10, align 1           ; <i32*> [#uses=1]
+@j = global i32 -20, align 1           ; <i32*> [#uses=1]
+@pc = global i8* inttoptr (i64 160 to i8*), align 1            ; <i8**> [#uses=3]
+@main.auto.k = internal global i32 0           ; <i32*> [#uses=2]
+
+define void @main() nounwind {
+entry:
+       %tmp = load i32* @i             ; <i32> [#uses=1]
+       %tmp1 = load i32* @j            ; <i32> [#uses=1]
+       %add = add i32 %tmp, %tmp1              ; <i32> [#uses=1]
+       store i32 %add, i32* @main.auto.k
+       %tmp2 = load i32* @main.auto.k          ; <i32> [#uses=1]
+       %add3 = add i32 %tmp2, 32               ; <i32> [#uses=1]
+       %conv = trunc i32 %add3 to i8           ; <i8> [#uses=1]
+       %tmp4 = load i8** @pc           ; <i8*> [#uses=1]
+       store i8 %conv, i8* %tmp4
+       %tmp5 = load i8** @pc           ; <i8*> [#uses=1]
+       %tmp6 = load i8* %tmp5          ; <i8> [#uses=1]
+       %conv7 = sext i8 %tmp6 to i16           ; <i16> [#uses=1]
+       %sub = sub i16 %conv7, 1                ; <i16> [#uses=1]
+       %conv8 = trunc i16 %sub to i8           ; <i8> [#uses=1]
+       %tmp9 = load i8** @pc           ; <i8*> [#uses=1]
+       store i8 %conv8, i8* %tmp9
+       ret void
+}
diff --git a/test/CodeGen/PIC16/dg.exp b/test/CodeGen/PIC16/dg.exp
new file mode 100644 (file)
index 0000000..b08b985
--- /dev/null
@@ -0,0 +1,5 @@
+load_lib llvm.exp
+
+if { [llvm_supports_target PIC16] } {
+  RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]]
+}
diff --git a/test/CodeGen/Thumb/2009-07-17-PR4566-thumb.ll b/test/CodeGen/Thumb/2009-07-17-PR4566-thumb.ll
new file mode 100644 (file)
index 0000000..7c18ef4
--- /dev/null
@@ -0,0 +1,2891 @@
+; RUN: llvm-as < %s | llc -march=thumb | grep {rsbs \\+r\[0-9\]\\+, \\+r\[0-9\]\\+, \\+#0}
+
+target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32"
+target triple = "thumbv6-elf"
+       type { i32 }            ; type %0
+       %llvm.dbg.basictype.type = type { i32, { }*, i8*, { }*, i32, i64, i64, i64, i32, i32 }
+       %llvm.dbg.compile_unit.type = type { i32, { }*, i32, i8*, i8*, i8*, i1, i1, i8*, i32 }
+       %llvm.dbg.composite.type = type { i32, { }*, i8*, { }*, i32, i64, i64, i64, i32, { }*, { }*, i32 }
+       %llvm.dbg.derivedtype.type = type { i32, { }*, i8*, { }*, i32, i64, i64, i64, i32, { }* }
+       %llvm.dbg.subprogram.type = type { i32, { }*, { }*, i8*, i8*, i8*, { }*, i32, { }*, i1, i1 }
+       %struct.anon = type { %struct.dwarf_fde* }
+       %struct.dwarf_cie = type <{ i32, i32, i8, [0 x i8], [3 x i8] }>
+       %struct.dwarf_eh_bases = type { i8*, i8*, i8* }
+       %struct.dwarf_fde = type <{ i32, i32, [0 x i8] }>
+       %struct.fde_accumulator = type { %struct.fde_vector*, %struct.fde_vector* }
+       %struct.fde_vector = type { i8*, i32, [0 x %struct.dwarf_fde*] }
+       %struct.object = type { i8*, i8*, i8*, %struct.anon, %0, %struct.object* }
+@.str = internal constant [17 x i8] c"unwind-dw2-fde.c\00", section "llvm.metadata"            ; <[17 x i8]*> [#uses=1]
+@.str1 = internal constant [61 x i8] c"/home/asl/proj/llvm/llvm-gcc-4.2/build_arm/gcc/../../src/gcc\00", section "llvm.metadata"               ; <[61 x i8]*> [#uses=1]
+@.str2 = internal constant [52 x i8] c"4.2.1 (Based on Apple Inc. build 5646) (LLVM build)\00", section "llvm.metadata"                ; <[52 x i8]*> [#uses=1]
+@llvm.dbg.compile_unit = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([17 x i8]* @.str, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 true, i1 true, i8* null, i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.compile_unit.type*> [#uses=1]
+@.str3 = internal constant [14 x i8] c"unsigned char\00", section "llvm.metadata"              ; <[14 x i8]*> [#uses=1]
+@llvm.dbg.basictype = internal constant %llvm.dbg.basictype.type { i32 458788, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([14 x i8]* @.str3, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 8, i64 8, i64 0, i32 0, i32 8 }, section "llvm.metadata"                ; <%llvm.dbg.basictype.type*> [#uses=1]
+@llvm.dbg.derivedtype = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 8, i64 8, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype4 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str5 = internal constant [13 x i8] c"unsigned int\00", section "llvm.metadata"               ; <[13 x i8]*> [#uses=1]
+@llvm.dbg.basictype6 = internal constant %llvm.dbg.basictype.type { i32 458788, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str5, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, i32 7 }, section "llvm.metadata"             ; <%llvm.dbg.basictype.type*> [#uses=1]
+@.str7 = internal constant [9 x i8] c"unwind.h\00", section "llvm.metadata"            ; <[9 x i8]*> [#uses=1]
+@.str8 = internal constant [57 x i8] c"/home/asl/proj/llvm/llvm-gcc-4.2/build_arm/gcc/./include\00", section "llvm.metadata"           ; <[57 x i8]*> [#uses=1]
+@llvm.dbg.compile_unit9 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([9 x i8]* @.str7, i32 0, i32 0), i8* getelementptr ([57 x i8]* @.str8, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata"            ; <%llvm.dbg.compile_unit.type*> [#uses=1]
+@.str10 = internal constant [13 x i8] c"_Unwind_Word\00", section "llvm.metadata"              ; <[13 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype11 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str10, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 47, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype6 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype12 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype11 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype12 to { }*)], section "llvm.metadata"             ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array to { }*), i32 0 }, section "llvm.metadata"            ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str13 = internal constant [12 x i8] c"unwind-pe.h\00", section "llvm.metadata"               ; <[12 x i8]*> [#uses=1]
+@llvm.dbg.compile_unit14 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([12 x i8]* @.str13, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata"         ; <%llvm.dbg.compile_unit.type*> [#uses=1]
+@.str15 = internal constant [13 x i8] c"read_uleb128\00", section "llvm.metadata"              ; <[13 x i8]*> [#uses=1]
+@llvm.dbg.subprogram = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str15, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str15, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str15, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*), i32 134, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite to { }*), i1 true, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str16 = internal constant [4 x i8] c"int\00", section "llvm.metadata"                ; <[4 x i8]*> [#uses=1]
+@llvm.dbg.basictype17 = internal constant %llvm.dbg.basictype.type { i32 458788, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([4 x i8]* @.str16, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, i32 5 }, section "llvm.metadata"            ; <%llvm.dbg.basictype.type*> [#uses=1]
+@.str18 = internal constant [12 x i8] c"coretypes.h\00", section "llvm.metadata"               ; <[12 x i8]*> [#uses=1]
+@llvm.dbg.compile_unit19 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([12 x i8]* @.str18, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata"         ; <%llvm.dbg.compile_unit.type*> [#uses=1]
+@.str20 = internal constant [8 x i8] c"wchar_t\00", section "llvm.metadata"            ; <[8 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype21 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([8 x i8]* @.str20, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit19 to { }*), i32 72, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str22 = internal constant [14 x i8] c"_Unwind_Sword\00", section "llvm.metadata"             ; <[14 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype23 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([14 x i8]* @.str22, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 51, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype21 to { }*) }, section "llvm.metadata"          ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype24 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype23 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array25 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype24 to { }*)], section "llvm.metadata"           ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite26 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array25 to { }*), i32 0 }, section "llvm.metadata"                ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str27 = internal constant [13 x i8] c"read_sleb128\00", section "llvm.metadata"              ; <[13 x i8]*> [#uses=1]
+@llvm.dbg.subprogram28 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str27, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str27, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str27, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*), i32 156, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite26 to { }*), i1 true, i1 true }, section "llvm.metadata"         ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str29 = internal constant [17 x i8] c"unwind-dw2-fde.h\00", section "llvm.metadata"          ; <[17 x i8]*> [#uses=1]
+@llvm.dbg.compile_unit30 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([17 x i8]* @.str29, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata"         ; <%llvm.dbg.compile_unit.type*> [#uses=1]
+@.str31 = internal constant [10 x i8] c"dwarf_cie\00", section "llvm.metadata"         ; <[10 x i8]*> [#uses=1]
+@.str33 = internal constant [12 x i8] c"_Unwind_Ptr\00", section "llvm.metadata"               ; <[12 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype34 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([12 x i8]* @.str33, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 53, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype11 to { }*) }, section "llvm.metadata"          ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str35 = internal constant [21 x i8] c"_Unwind_Internal_Ptr\00", section "llvm.metadata"              ; <[21 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype36 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([21 x i8]* @.str35, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 59, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype34 to { }*) }, section "llvm.metadata"          ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype37 = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype36 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str38 = internal constant [6 x i8] c"uword\00", section "llvm.metadata"              ; <[6 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype39 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str38, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 114, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype37 to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str40 = internal constant [7 x i8] c"length\00", section "llvm.metadata"             ; <[7 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype41 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str40, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 142, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype39 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str42 = internal constant [15 x i8] c"_Unwind_Action\00", section "llvm.metadata"            ; <[15 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype43 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str42, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 115, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype23 to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype44 = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype43 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str45 = internal constant [6 x i8] c"sword\00", section "llvm.metadata"              ; <[6 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype46 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str45, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 113, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype44 to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str47 = internal constant [7 x i8] c"CIE_id\00", section "llvm.metadata"             ; <[7 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype48 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str47, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 143, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype46 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str49 = internal constant [6 x i8] c"ubyte\00", section "llvm.metadata"              ; <[6 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype50 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str49, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 141, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype to { }*) }, section "llvm.metadata"           ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str51 = internal constant [8 x i8] c"version\00", section "llvm.metadata"            ; <[8 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype52 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([8 x i8]* @.str51, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 144, i64 8, i64 8, i64 64, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype50 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array53 = internal constant [0 x { }*] zeroinitializer, section "llvm.metadata"              ; <[0 x { }*]*> [#uses=1]
+@llvm.dbg.composite54 = internal constant %llvm.dbg.composite.type { i32 458753, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 8, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*), { }* bitcast ([0 x { }*]* @llvm.dbg.array53 to { }*), i32 0 }, section "llvm.metadata"             ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str55 = internal constant [13 x i8] c"augmentation\00", section "llvm.metadata"              ; <[13 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype56 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str55, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 145, i64 0, i64 8, i64 72, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite54 to { }*) }, section "llvm.metadata"           ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array57 = internal constant [4 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype41 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype48 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype52 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype56 to { }*)], section "llvm.metadata"             ; <[4 x { }*]*> [#uses=1]
+@llvm.dbg.composite58 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str31, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 141, i64 96, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array57 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@llvm.dbg.derivedtype59 = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 96, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite58 to { }*) }, section "llvm.metadata"          ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype60 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype59 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str61 = internal constant [10 x i8] c"dwarf_fde\00", section "llvm.metadata"         ; <[10 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype63 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str40, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 151, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype39 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str64 = internal constant [10 x i8] c"CIE_delta\00", section "llvm.metadata"         ; <[10 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype65 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str64, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 152, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype46 to { }*) }, section "llvm.metadata"             ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str67 = internal constant [9 x i8] c"pc_begin\00", section "llvm.metadata"           ; <[9 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype68 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str67, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 153, i64 0, i64 8, i64 64, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite54 to { }*) }, section "llvm.metadata"            ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array69 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype63 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype65 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype68 to { }*)], section "llvm.metadata"         ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite70 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str61, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 43, i64 64, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array69 to { }*), i32 0 }, section "llvm.metadata"               ; <%llvm.dbg.composite.type*> [#uses=1]
+@llvm.dbg.derivedtype71 = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 64, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite70 to { }*) }, section "llvm.metadata"          ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype72 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype71 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array73 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype60 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype72 to { }*)], section "llvm.metadata"             ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite74 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array73 to { }*), i32 0 }, section "llvm.metadata"                ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str75 = internal constant [8 x i8] c"get_cie\00", section "llvm.metadata"            ; <[8 x i8]*> [#uses=1]
+@llvm.dbg.subprogram76 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([8 x i8]* @.str75, i32 0, i32 0), i8* getelementptr ([8 x i8]* @.str75, i32 0, i32 0), i8* getelementptr ([8 x i8]* @.str75, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 162, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite74 to { }*), i1 true, i1 true }, section "llvm.metadata"            ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str77 = internal constant [4 x i8] c"fde\00", section "llvm.metadata"                ; <[4 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype78 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([4 x i8]* @.str77, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 162, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype71 to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype79 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([4 x i8]* @.str77, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 162, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype78 to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype80 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype79 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array81 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata"             ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite82 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array81 to { }*), i32 0 }, section "llvm.metadata"                ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str83 = internal constant [9 x i8] c"next_fde\00", section "llvm.metadata"           ; <[9 x i8]*> [#uses=1]
+@llvm.dbg.subprogram84 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str83, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str83, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str83, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 168, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite82 to { }*), i1 true, i1 true }, section "llvm.metadata"            ; <%llvm.dbg.subprogram.type*> [#uses=0]
+@.str85 = internal constant [7 x i8] c"object\00", section "llvm.metadata"             ; <[7 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype87 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* null }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype88 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str67, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 48, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str89 = internal constant [6 x i8] c"tbase\00", section "llvm.metadata"              ; <[6 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype90 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str89, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 49, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str91 = internal constant [6 x i8] c"dbase\00", section "llvm.metadata"              ; <[6 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype92 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str91, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 50, i64 32, i64 32, i64 64, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str94 = internal constant [7 x i8] c"single\00", section "llvm.metadata"             ; <[7 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype95 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str94, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 52, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype72 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype96 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite70 to { }*) }, section "llvm.metadata"          ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype97 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype96 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str98 = internal constant [6 x i8] c"array\00", section "llvm.metadata"              ; <[6 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype99 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str98, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 53, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype97 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str100 = internal constant [11 x i8] c"fde_vector\00", section "llvm.metadata"               ; <[11 x i8]*> [#uses=1]
+@.str103 = internal constant [10 x i8] c"orig_data\00", section "llvm.metadata"                ; <[10 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype104 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str103, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 41, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata"             ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str105 = internal constant [18 x i8] c"long unsigned int\00", section "llvm.metadata"                ; <[18 x i8]*> [#uses=1]
+@llvm.dbg.basictype106 = internal constant %llvm.dbg.basictype.type { i32 458788, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([18 x i8]* @.str105, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, i32 7 }, section "llvm.metadata"         ; <%llvm.dbg.basictype.type*> [#uses=1]
+@.str107 = internal constant [9 x i8] c"stddef.h\00", section "llvm.metadata"          ; <[9 x i8]*> [#uses=1]
+@llvm.dbg.compile_unit108 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([9 x i8]* @.str107, i32 0, i32 0), i8* getelementptr ([57 x i8]* @.str8, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata"                ; <%llvm.dbg.compile_unit.type*> [#uses=1]
+@.str109 = internal constant [7 x i8] c"size_t\00", section "llvm.metadata"            ; <[7 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype110 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str109, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit108 to { }*), i32 326, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str111 = internal constant [6 x i8] c"count\00", section "llvm.metadata"             ; <[6 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype112 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str111, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 42, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*) }, section "llvm.metadata"            ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.composite113 = internal constant %llvm.dbg.composite.type { i32 458753, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype72 to { }*), { }* bitcast ([0 x { }*]* @llvm.dbg.array53 to { }*), i32 0 }, section "llvm.metadata"             ; <%llvm.dbg.composite.type*> [#uses=1]
+@llvm.dbg.derivedtype114 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str98, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 43, i64 0, i64 32, i64 64, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite113 to { }*) }, section "llvm.metadata"          ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array115 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype104 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype112 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype114 to { }*)], section "llvm.metadata"             ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite116 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([11 x i8]* @.str100, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 40, i64 64, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array115 to { }*), i32 0 }, section "llvm.metadata"            ; <%llvm.dbg.composite.type*> [#uses=1]
+@llvm.dbg.derivedtype117 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite116 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str118 = internal constant [5 x i8] c"sort\00", section "llvm.metadata"              ; <[5 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype119 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([5 x i8]* @.str118, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 54, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*) }, section "llvm.metadata"             ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array120 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype95 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype99 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype119 to { }*)], section "llvm.metadata"               ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite121 = internal constant %llvm.dbg.composite.type { i32 458775, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 51, i64 32, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array120 to { }*), i32 0 }, section "llvm.metadata"         ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str122 = internal constant [2 x i8] c"u\00", section "llvm.metadata"         ; <[2 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype123 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([2 x i8]* @.str122, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 55, i64 32, i64 32, i64 96, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite121 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str126 = internal constant [7 x i8] c"sorted\00", section "llvm.metadata"            ; <[7 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype127 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str126, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 59, i64 1, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata"          ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str128 = internal constant [11 x i8] c"from_array\00", section "llvm.metadata"               ; <[11 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype129 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([11 x i8]* @.str128, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 60, i64 1, i64 32, i64 1, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str130 = internal constant [15 x i8] c"mixed_encoding\00", section "llvm.metadata"           ; <[15 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype131 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str130, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 61, i64 1, i64 32, i64 2, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str132 = internal constant [9 x i8] c"encoding\00", section "llvm.metadata"          ; <[9 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype133 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str132, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 62, i64 8, i64 32, i64 3, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata"          ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype134 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str111, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 65, i64 21, i64 32, i64 11, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array135 = internal constant [5 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype127 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype129 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype131 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype133 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype134 to { }*)], section "llvm.metadata"           ; <[5 x { }*]*> [#uses=1]
+@llvm.dbg.composite136 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 58, i64 32, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([5 x { }*]* @llvm.dbg.array135 to { }*), i32 0 }, section "llvm.metadata"         ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str137 = internal constant [2 x i8] c"b\00", section "llvm.metadata"         ; <[2 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype138 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([2 x i8]* @.str137, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 66, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite136 to { }*) }, section "llvm.metadata"         ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str139 = internal constant [2 x i8] c"i\00", section "llvm.metadata"         ; <[2 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype140 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([2 x i8]* @.str139, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 67, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*) }, section "llvm.metadata"             ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array141 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype138 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype140 to { }*)], section "llvm.metadata"          ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite142 = internal constant %llvm.dbg.composite.type { i32 458775, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 57, i64 32, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array141 to { }*), i32 0 }, section "llvm.metadata"         ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str143 = internal constant [2 x i8] c"s\00", section "llvm.metadata"         ; <[2 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype144 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([2 x i8]* @.str143, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 68, i64 32, i64 32, i64 128, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite142 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype145 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite149 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str146 = internal constant [5 x i8] c"next\00", section "llvm.metadata"              ; <[5 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype147 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([5 x i8]* @.str146, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 74, i64 32, i64 32, i64 160, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*) }, section "llvm.metadata"           ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array148 = internal constant [6 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype88 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype90 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype92 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype123 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype144 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype147 to { }*)], section "llvm.metadata"         ; <[6 x { }*]*> [#uses=1]
+@llvm.dbg.composite149 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str85, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 47, i64 192, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([6 x { }*]* @llvm.dbg.array148 to { }*), i32 0 }, section "llvm.metadata"             ; <%llvm.dbg.composite.type*> [#uses=1]
+@llvm.dbg.array151 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata"           ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite152 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array151 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str153 = internal constant [9 x i8] c"last_fde\00", section "llvm.metadata"          ; <[9 x i8]*> [#uses=1]
+@llvm.dbg.subprogram154 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str153, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str153, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str153, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 176, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite152 to { }*), i1 true, i1 true }, section "llvm.metadata"               ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str155 = internal constant [6 x i8] c"saddr\00", section "llvm.metadata"             ; <[6 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype156 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str155, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 116, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype46 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype157 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str45, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 113, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype156 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str158 = internal constant [14 x i8] c"gthr-single.h\00", section "llvm.metadata"            ; <[14 x i8]*> [#uses=1]
+@llvm.dbg.compile_unit159 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([14 x i8]* @.str158, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata"               ; <%llvm.dbg.compile_unit.type*> [#uses=1]
+@.str160 = internal constant [18 x i8] c"__gthread_mutex_t\00", section "llvm.metadata"                ; <[18 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype161 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([18 x i8]* @.str160, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*), i32 35, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype157 to { }*) }, section "llvm.metadata"             ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype162 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype161 to { }*) }, section "llvm.metadata"            ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array163 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype162 to { }*)], section "llvm.metadata"               ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite164 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array163 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str165 = internal constant [21 x i8] c"__gthread_mutex_lock\00", section "llvm.metadata"             ; <[21 x i8]*> [#uses=1]
+@llvm.dbg.subprogram166 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([21 x i8]* @.str165, i32 0, i32 0), i8* getelementptr ([21 x i8]* @.str165, i32 0, i32 0), i8* getelementptr ([21 x i8]* @.str165, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*), i32 220, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite164 to { }*), i1 true, i1 true }, section "llvm.metadata"           ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str167 = internal constant [23 x i8] c"__gthread_mutex_unlock\00", section "llvm.metadata"           ; <[23 x i8]*> [#uses=1]
+@llvm.dbg.subprogram168 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([23 x i8]* @.str167, i32 0, i32 0), i8* getelementptr ([23 x i8]* @.str167, i32 0, i32 0), i8* getelementptr ([23 x i8]* @.str167, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*), i32 232, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite164 to { }*), i1 true, i1 true }, section "llvm.metadata"           ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array169 = internal constant [5 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata"                ; <[5 x { }*]*> [#uses=1]
+@llvm.dbg.composite170 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([5 x { }*]* @llvm.dbg.array169 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str171 = internal constant [28 x i8] c"__register_frame_info_bases\00", section "llvm.metadata"              ; <[28 x i8]*> [#uses=1]
+@llvm.dbg.subprogram172 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([28 x i8]* @.str171, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str171, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str171, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 80, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite170 to { }*), i1 false, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@unseen_objects = internal global %struct.object* null         ; <%struct.object**> [#uses=15]
+@llvm.dbg.array173 = internal constant [3 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*)], section "llvm.metadata"                ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite174 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array173 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str175 = internal constant [22 x i8] c"__register_frame_info\00", section "llvm.metadata"            ; <[22 x i8]*> [#uses=1]
+@llvm.dbg.subprogram176 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([22 x i8]* @.str175, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str175, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str175, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 106, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite174 to { }*), i1 false, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str179 = internal constant [34 x i8] c"__register_frame_info_table_bases\00", section "llvm.metadata"                ; <[34 x i8]*> [#uses=1]
+@llvm.dbg.subprogram180 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([34 x i8]* @.str179, i32 0, i32 0), i8* getelementptr ([34 x i8]* @.str179, i32 0, i32 0), i8* getelementptr ([34 x i8]* @.str179, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 130, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite170 to { }*), i1 false, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str183 = internal constant [28 x i8] c"__register_frame_info_table\00", section "llvm.metadata"              ; <[28 x i8]*> [#uses=1]
+@llvm.dbg.subprogram184 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([28 x i8]* @.str183, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str183, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str183, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 150, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite174 to { }*), i1 false, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array185 = internal constant [4 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata"               ; <[4 x { }*]*> [#uses=1]
+@llvm.dbg.composite186 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array185 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str187 = internal constant [22 x i8] c"fde_unencoded_compare\00", section "llvm.metadata"            ; <[22 x i8]*> [#uses=1]
+@llvm.dbg.subprogram188 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([22 x i8]* @.str187, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str187, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str187, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 325, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite186 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str189 = internal constant [16 x i8] c"fde_accumulator\00", section "llvm.metadata"          ; <[16 x i8]*> [#uses=1]
+@.str191 = internal constant [7 x i8] c"linear\00", section "llvm.metadata"            ; <[7 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype192 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str191, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 389, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str193 = internal constant [8 x i8] c"erratic\00", section "llvm.metadata"           ; <[8 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype194 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([8 x i8]* @.str193, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 390, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*) }, section "llvm.metadata"             ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array195 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype192 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype194 to { }*)], section "llvm.metadata"          ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite196 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([16 x i8]* @.str189, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 388, i64 64, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array195 to { }*), i32 0 }, section "llvm.metadata"             ; <%llvm.dbg.composite.type*> [#uses=1]
+@llvm.dbg.derivedtype197 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite196 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array198 = internal constant [3 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype197 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata"                ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite199 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array198 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str200 = internal constant [11 x i8] c"fde_insert\00", section "llvm.metadata"               ; <[11 x i8]*> [#uses=1]
+@llvm.dbg.subprogram201 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([11 x i8]* @.str200, i32 0, i32 0), i8* getelementptr ([11 x i8]* @.str200, i32 0, i32 0), i8* getelementptr ([11 x i8]* @.str200, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 414, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite199 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=0]
+@llvm.dbg.derivedtype202 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite186 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str203 = internal constant [14 x i8] c"fde_compare_t\00", section "llvm.metadata"            ; <[14 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype204 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([14 x i8]* @.str203, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 388, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype202 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array205 = internal constant [5 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype204 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*)], section "llvm.metadata"             ; <[5 x { }*]*> [#uses=1]
+@llvm.dbg.composite206 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([5 x { }*]* @llvm.dbg.array205 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str207 = internal constant [10 x i8] c"fde_split\00", section "llvm.metadata"                ; <[10 x i8]*> [#uses=1]
+@llvm.dbg.subprogram208 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str207, i32 0, i32 0), i8* getelementptr ([10 x i8]* @.str207, i32 0, i32 0), i8* getelementptr ([10 x i8]* @.str207, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 434, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite206 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@marker.2702 = internal global %struct.dwarf_fde* null         ; <%struct.dwarf_fde**> [#uses=2]
+@llvm.dbg.derivedtype209 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*) }, section "llvm.metadata"             ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array210 = internal constant [6 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype204 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype209 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*)], section "llvm.metadata"          ; <[6 x { }*]*> [#uses=1]
+@llvm.dbg.composite211 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([6 x { }*]* @llvm.dbg.array210 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str212 = internal constant [15 x i8] c"frame_downheap\00", section "llvm.metadata"           ; <[15 x i8]*> [#uses=1]
+@llvm.dbg.subprogram213 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str212, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str212, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str212, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 480, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite211 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array214 = internal constant [4 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype204 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*)], section "llvm.metadata"          ; <[4 x { }*]*> [#uses=1]
+@llvm.dbg.composite215 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array214 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str216 = internal constant [15 x i8] c"frame_heapsort\00", section "llvm.metadata"           ; <[15 x i8]*> [#uses=1]
+@llvm.dbg.subprogram217 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str216, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str216, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str216, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 506, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite215 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str218 = internal constant [10 x i8] c"fde_merge\00", section "llvm.metadata"                ; <[10 x i8]*> [#uses=1]
+@llvm.dbg.subprogram219 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str218, i32 0, i32 0), i8* getelementptr ([10 x i8]* @.str218, i32 0, i32 0), i8* getelementptr ([10 x i8]* @.str218, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 538, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite206 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array220 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata"               ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite221 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array220 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str222 = internal constant [29 x i8] c"binary_search_unencoded_fdes\00", section "llvm.metadata"             ; <[29 x i8]*> [#uses=1]
+@llvm.dbg.subprogram223 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([29 x i8]* @.str222, i32 0, i32 0), i8* getelementptr ([29 x i8]* @.str222, i32 0, i32 0), i8* getelementptr ([29 x i8]* @.str222, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 840, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite221 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array224 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype6 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*)], section "llvm.metadata"               ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite225 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array224 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str226 = internal constant [22 x i8] c"size_of_encoded_value\00", section "llvm.metadata"            ; <[22 x i8]*> [#uses=1]
+@llvm.dbg.subprogram227 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([22 x i8]* @.str226, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str226, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str226, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*), i32 75, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite225 to { }*), i1 true, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array228 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype34 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*)], section "llvm.metadata"             ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite229 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array228 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str230 = internal constant [17 x i8] c"base_from_object\00", section "llvm.metadata"         ; <[17 x i8]*> [#uses=1]
+@llvm.dbg.subprogram231 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str230, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str230, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str230, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 241, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite229 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.derivedtype232 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype34 to { }*) }, section "llvm.metadata"             ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array233 = internal constant [5 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype34 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype232 to { }*)], section "llvm.metadata"               ; <[5 x { }*]*> [#uses=1]
+@llvm.dbg.composite234 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([5 x { }*]* @llvm.dbg.array233 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str235 = internal constant [29 x i8] c"read_encoded_value_with_base\00", section "llvm.metadata"             ; <[29 x i8]*> [#uses=1]
+@llvm.dbg.subprogram236 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([29 x i8]* @.str235, i32 0, i32 0), i8* getelementptr ([29 x i8]* @.str235, i32 0, i32 0), i8* getelementptr ([29 x i8]* @.str235, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*), i32 185, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite234 to { }*), i1 true, i1 true }, section "llvm.metadata"            ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array237 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype60 to { }*)], section "llvm.metadata"                ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite238 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array237 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str239 = internal constant [17 x i8] c"get_cie_encoding\00", section "llvm.metadata"         ; <[17 x i8]*> [#uses=1]
+@llvm.dbg.subprogram240 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str239, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str239, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str239, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 266, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite238 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array241 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata"              ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite242 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array241 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str243 = internal constant [26 x i8] c"classify_object_over_fdes\00", section "llvm.metadata"                ; <[26 x i8]*> [#uses=1]
+@llvm.dbg.subprogram244 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([26 x i8]* @.str243, i32 0, i32 0), i8* getelementptr ([26 x i8]* @.str243, i32 0, i32 0), i8* getelementptr ([26 x i8]* @.str243, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 599, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite242 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array245 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype72 to { }*)], section "llvm.metadata"                ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite246 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array245 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str247 = internal constant [17 x i8] c"get_fde_encoding\00", section "llvm.metadata"         ; <[17 x i8]*> [#uses=1]
+@llvm.dbg.subprogram248 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str247, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str247, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str247, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 311, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite246 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array249 = internal constant [4 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype197 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata"           ; <[4 x { }*]*> [#uses=1]
+@llvm.dbg.composite250 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array249 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str251 = internal constant [9 x i8] c"add_fdes\00", section "llvm.metadata"          ; <[9 x i8]*> [#uses=1]
+@llvm.dbg.subprogram252 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str251, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str251, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str251, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 654, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite250 to { }*), i1 true, i1 true }, section "llvm.metadata"         ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str253 = internal constant [28 x i8] c"fde_single_encoding_compare\00", section "llvm.metadata"              ; <[28 x i8]*> [#uses=1]
+@llvm.dbg.subprogram254 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([28 x i8]* @.str253, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str253, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str253, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 338, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite186 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str255 = internal constant [27 x i8] c"fde_mixed_encoding_compare\00", section "llvm.metadata"               ; <[27 x i8]*> [#uses=1]
+@llvm.dbg.subprogram256 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([27 x i8]* @.str255, i32 0, i32 0), i8* getelementptr ([27 x i8]* @.str255, i32 0, i32 0), i8* getelementptr ([27 x i8]* @.str255, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 354, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite186 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str257 = internal constant [34 x i8] c"binary_search_mixed_encoding_fdes\00", section "llvm.metadata"                ; <[34 x i8]*> [#uses=1]
+@llvm.dbg.subprogram258 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([34 x i8]* @.str257, i32 0, i32 0), i8* getelementptr ([34 x i8]* @.str257, i32 0, i32 0), i8* getelementptr ([34 x i8]* @.str257, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 897, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite221 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str259 = internal constant [35 x i8] c"binary_search_single_encoding_fdes\00", section "llvm.metadata"               ; <[35 x i8]*> [#uses=1]
+@llvm.dbg.subprogram260 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([35 x i8]* @.str259, i32 0, i32 0), i8* getelementptr ([35 x i8]* @.str259, i32 0, i32 0), i8* getelementptr ([35 x i8]* @.str259, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 867, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite221 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array261 = internal constant [4 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata"           ; <[4 x { }*]*> [#uses=1]
+@llvm.dbg.composite262 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array261 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str263 = internal constant [19 x i8] c"linear_search_fdes\00", section "llvm.metadata"               ; <[19 x i8]*> [#uses=1]
+@llvm.dbg.subprogram264 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([19 x i8]* @.str263, i32 0, i32 0), i8* getelementptr ([19 x i8]* @.str263, i32 0, i32 0), i8* getelementptr ([19 x i8]* @.str263, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 771, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite262 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array265 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype197 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*)], section "llvm.metadata"          ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite266 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array265 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str267 = internal constant [15 x i8] c"start_fde_sort\00", section "llvm.metadata"           ; <[15 x i8]*> [#uses=1]
+@llvm.dbg.subprogram268 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str267, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str267, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str267, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 395, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite266 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array269 = internal constant [2 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata"             ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite270 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array269 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str271 = internal constant [23 x i8] c"__register_frame_table\00", section "llvm.metadata"           ; <[23 x i8]*> [#uses=1]
+@llvm.dbg.subprogram272 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([23 x i8]* @.str271, i32 0, i32 0), i8* getelementptr ([23 x i8]* @.str271, i32 0, i32 0), i8* getelementptr ([23 x i8]* @.str271, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 156, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite270 to { }*), i1 false, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str273 = internal constant [17 x i8] c"__register_frame\00", section "llvm.metadata"         ; <[17 x i8]*> [#uses=1]
+@llvm.dbg.subprogram274 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str273, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str273, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str273, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 112, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite270 to { }*), i1 false, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array275 = internal constant [4 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype197 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*)], section "llvm.metadata"          ; <[4 x { }*]*> [#uses=1]
+@llvm.dbg.composite276 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array275 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str277 = internal constant [13 x i8] c"end_fde_sort\00", section "llvm.metadata"             ; <[13 x i8]*> [#uses=1]
+@llvm.dbg.subprogram278 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str277, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str277, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str277, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 564, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite276 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@llvm.dbg.array279 = internal constant [2 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*)], section "llvm.metadata"            ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite280 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array279 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str281 = internal constant [12 x i8] c"init_object\00", section "llvm.metadata"              ; <[12 x i8]*> [#uses=1]
+@llvm.dbg.subprogram282 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([12 x i8]* @.str281, i32 0, i32 0), i8* getelementptr ([12 x i8]* @.str281, i32 0, i32 0), i8* getelementptr ([12 x i8]* @.str281, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 717, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite280 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str283 = internal constant [14 x i8] c"search_object\00", section "llvm.metadata"            ; <[14 x i8]*> [#uses=1]
+@llvm.dbg.subprogram284 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([14 x i8]* @.str283, i32 0, i32 0), i8* getelementptr ([14 x i8]* @.str283, i32 0, i32 0), i8* getelementptr ([14 x i8]* @.str283, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 928, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite221 to { }*), i1 true, i1 true }, section "llvm.metadata"              ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str285 = internal constant [15 x i8] c"dwarf_eh_bases\00", section "llvm.metadata"           ; <[15 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype287 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str89, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 93, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata"               ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.derivedtype288 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str91, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 94, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata"              ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@.str289 = internal constant [5 x i8] c"func\00", section "llvm.metadata"              ; <[5 x i8]*> [#uses=1]
+@llvm.dbg.derivedtype290 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([5 x i8]* @.str289, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 95, i64 32, i64 32, i64 64, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata"             ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array291 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype287 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype288 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype290 to { }*)], section "llvm.metadata"             ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite292 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str285, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 92, i64 96, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array291 to { }*), i32 0 }, section "llvm.metadata"            ; <%llvm.dbg.composite.type*> [#uses=1]
+@llvm.dbg.derivedtype293 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite292 to { }*) }, section "llvm.metadata"                ; <%llvm.dbg.derivedtype.type*> [#uses=1]
+@llvm.dbg.array294 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype293 to { }*)], section "llvm.metadata"               ; <[3 x { }*]*> [#uses=1]
+@llvm.dbg.composite295 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array294 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str296 = internal constant [17 x i8] c"_Unwind_Find_FDE\00", section "llvm.metadata"         ; <[17 x i8]*> [#uses=1]
+@llvm.dbg.subprogram297 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str296, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str296, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str296, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 972, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite295 to { }*), i1 false, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@seen_objects = internal global %struct.object* null           ; <%struct.object**> [#uses=3]
+@llvm.dbg.array298 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata"            ; <[2 x { }*]*> [#uses=1]
+@llvm.dbg.composite299 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array298 to { }*), i32 0 }, section "llvm.metadata"              ; <%llvm.dbg.composite.type*> [#uses=1]
+@.str300 = internal constant [30 x i8] c"__deregister_frame_info_bases\00", section "llvm.metadata"            ; <[30 x i8]*> [#uses=1]
+@llvm.dbg.subprogram301 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([30 x i8]* @.str300, i32 0, i32 0), i8* getelementptr ([30 x i8]* @.str300, i32 0, i32 0), i8* getelementptr ([30 x i8]* @.str300, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 175, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite299 to { }*), i1 false, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str302 = internal constant [24 x i8] c"__deregister_frame_info\00", section "llvm.metadata"          ; <[24 x i8]*> [#uses=1]
+@llvm.dbg.subprogram303 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([24 x i8]* @.str302, i32 0, i32 0), i8* getelementptr ([24 x i8]* @.str302, i32 0, i32 0), i8* getelementptr ([24 x i8]* @.str302, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 223, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite299 to { }*), i1 false, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+@.str304 = internal constant [19 x i8] c"__deregister_frame\00", section "llvm.metadata"               ; <[19 x i8]*> [#uses=1]
+@llvm.dbg.subprogram305 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([19 x i8]* @.str304, i32 0, i32 0), i8* getelementptr ([19 x i8]* @.str304, i32 0, i32 0), i8* getelementptr ([19 x i8]* @.str304, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 229, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite270 to { }*), i1 false, i1 true }, section "llvm.metadata"             ; <%llvm.dbg.subprogram.type*> [#uses=1]
+
+define arm_apcscc void @__register_frame_info_bases(i8* %begin, %struct.object* %ob, i8* %tbase, i8* %dbase) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 82, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = icmp eq i8* %begin, null           ; <i1> [#uses=1]
+       br i1 %0, label %return, label %bb
+
+bb:            ; preds = %entry
+       %1 = bitcast i8* %begin to i32*         ; <i32*> [#uses=1]
+       %2 = load i32* %1, align 4              ; <i32> [#uses=1]
+       %3 = icmp eq i32 %2, 0          ; <i1> [#uses=1]
+       br i1 %3, label %return, label %bb1
+
+bb1:           ; preds = %bb
+       tail call void @llvm.dbg.stoppoint(i32 85, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = getelementptr %struct.object* %ob, i32 0, i32 0            ; <i8**> [#uses=1]
+       store i8* inttoptr (i64 4294967295 to i8*), i8** %4, align 4
+       tail call void @llvm.dbg.stoppoint(i32 86, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %5 = getelementptr %struct.object* %ob, i32 0, i32 1            ; <i8**> [#uses=1]
+       store i8* %tbase, i8** %5, align 4
+       tail call void @llvm.dbg.stoppoint(i32 87, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %6 = getelementptr %struct.object* %ob, i32 0, i32 2            ; <i8**> [#uses=1]
+       store i8* %dbase, i8** %6, align 4
+       tail call void @llvm.dbg.stoppoint(i32 88, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %7 = bitcast i8* %begin to %struct.dwarf_fde*           ; <%struct.dwarf_fde*> [#uses=1]
+       %8 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0             ; <%struct.dwarf_fde**> [#uses=1]
+       store %struct.dwarf_fde* %7, %struct.dwarf_fde** %8, align 4
+       tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %9 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0             ; <i32*> [#uses=1]
+       store i32 2040, i32* %9
+       tail call void @llvm.dbg.stoppoint(i32 96, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 98, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       %10 = load %struct.object** @unseen_objects, align 4            ; <%struct.object*> [#uses=1]
+       %11 = getelementptr %struct.object* %ob, i32 0, i32 5           ; <%struct.object**> [#uses=1]
+       store %struct.object* %10, %struct.object** %11, align 4
+       tail call void @llvm.dbg.stoppoint(i32 99, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       store %struct.object* %ob, %struct.object** @unseen_objects, align 4
+       tail call void @llvm.dbg.stoppoint(i32 101, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*))
+       ret void
+
+return:                ; preds = %bb, %entry
+       tail call void @llvm.dbg.stoppoint(i32 101, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret void
+}
+
+declare void @llvm.dbg.func.start({ }*) nounwind readnone
+
+declare void @llvm.dbg.stoppoint(i32, i32, { }*) nounwind readnone
+
+declare void @llvm.dbg.region.end({ }*) nounwind readnone
+
+define internal arm_apcscc i8* @read_sleb128(i8* %p, i32* nocapture %val) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram28 to { }*))
+       br label %bb
+
+bb:            ; preds = %bb, %entry
+       %indvar = phi i32 [ 0, %entry ], [ %tmp, %bb ]          ; <i32> [#uses=3]
+       %result.0 = phi i32 [ 0, %entry ], [ %4, %bb ]          ; <i32> [#uses=1]
+       %shift.0 = mul i32 %indvar, 7           ; <i32> [#uses=2]
+       %tmp12 = add i32 %shift.0, 7            ; <i32> [#uses=2]
+       %tmp = add i32 %indvar, 1               ; <i32> [#uses=2]
+       %scevgep = getelementptr i8* %p, i32 %tmp               ; <i8*> [#uses=1]
+       %p_addr.0 = getelementptr i8* %p, i32 %indvar           ; <i8*> [#uses=1]
+       %0 = load i8* %p_addr.0, align 1                ; <i8> [#uses=2]
+       %1 = zext i8 %0 to i32          ; <i32> [#uses=2]
+       %2 = and i32 %1, 127            ; <i32> [#uses=1]
+       %3 = shl i32 %2, %shift.0               ; <i32> [#uses=1]
+       %4 = or i32 %3, %result.0               ; <i32> [#uses=4]
+       %5 = icmp slt i8 %0, 0          ; <i1> [#uses=1]
+       br i1 %5, label %bb, label %bb1
+
+bb1:           ; preds = %bb
+       tail call void @llvm.dbg.stoppoint(i32 171, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %6 = icmp ugt i32 %tmp12, 31            ; <i1> [#uses=1]
+       br i1 %6, label %bb4, label %bb2
+
+bb2:           ; preds = %bb1
+       %7 = and i32 %1, 64             ; <i32> [#uses=1]
+       %8 = icmp eq i32 %7, 0          ; <i1> [#uses=1]
+       br i1 %8, label %bb4, label %bb3
+
+bb3:           ; preds = %bb2
+       tail call void @llvm.dbg.stoppoint(i32 172, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %9 = shl i32 1, %tmp12          ; <i32> [#uses=1]
+       %10 = sub i32 0, %9             ; <i32> [#uses=1]
+       %11 = or i32 %4, %10            ; <i32> [#uses=1]
+       br label %bb4
+
+bb4:           ; preds = %bb3, %bb2, %bb1
+       %result.1 = phi i32 [ %11, %bb3 ], [ %4, %bb1 ], [ %4, %bb2 ]           ; <i32> [#uses=1]
+       tail call void @llvm.dbg.stoppoint(i32 174, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       store i32 %result.1, i32* %val, align 4
+       tail call void @llvm.dbg.stoppoint(i32 175, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram28 to { }*))
+       ret i8* %scevgep
+}
+
+define arm_apcscc void @__register_frame_info(i8* %begin, %struct.object* %ob) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram176 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 107, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 82, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = icmp eq i8* %begin, null           ; <i1> [#uses=1]
+       br i1 %0, label %__register_frame_info_bases.exit, label %bb.i
+
+bb.i:          ; preds = %entry
+       %1 = bitcast i8* %begin to i32*         ; <i32*> [#uses=1]
+       %2 = load i32* %1, align 4              ; <i32> [#uses=1]
+       %3 = icmp eq i32 %2, 0          ; <i1> [#uses=1]
+       br i1 %3, label %__register_frame_info_bases.exit, label %bb1.i
+
+bb1.i:         ; preds = %bb.i
+       tail call void @llvm.dbg.stoppoint(i32 85, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = getelementptr %struct.object* %ob, i32 0, i32 0            ; <i8**> [#uses=1]
+       store i8* inttoptr (i64 4294967295 to i8*), i8** %4, align 4
+       tail call void @llvm.dbg.stoppoint(i32 86, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %5 = getelementptr %struct.object* %ob, i32 0, i32 1            ; <i8**> [#uses=1]
+       store i8* null, i8** %5, align 4
+       tail call void @llvm.dbg.stoppoint(i32 87, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %6 = getelementptr %struct.object* %ob, i32 0, i32 2            ; <i8**> [#uses=1]
+       store i8* null, i8** %6, align 4
+       tail call void @llvm.dbg.stoppoint(i32 88, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %7 = bitcast i8* %begin to %struct.dwarf_fde*           ; <%struct.dwarf_fde*> [#uses=1]
+       %8 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0             ; <%struct.dwarf_fde**> [#uses=1]
+       store %struct.dwarf_fde* %7, %struct.dwarf_fde** %8, align 4
+       tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %9 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0             ; <i32*> [#uses=1]
+       store i32 2040, i32* %9
+       tail call void @llvm.dbg.stoppoint(i32 96, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 98, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       %10 = load %struct.object** @unseen_objects, align 4            ; <%struct.object*> [#uses=1]
+       %11 = getelementptr %struct.object* %ob, i32 0, i32 5           ; <%struct.object**> [#uses=1]
+       store %struct.object* %10, %struct.object** %11, align 4
+       tail call void @llvm.dbg.stoppoint(i32 99, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       store %struct.object* %ob, %struct.object** @unseen_objects, align 4
+       tail call void @llvm.dbg.stoppoint(i32 101, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram176 to { }*))
+       ret void
+
+__register_frame_info_bases.exit:              ; preds = %bb.i, %entry
+       tail call void @llvm.dbg.stoppoint(i32 108, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*))
+       ret void
+}
+
+define arm_apcscc void @__register_frame_info_table_bases(i8* %begin, %struct.object* %ob, i8* %tbase, i8* %dbase) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 131, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.object* %ob, i32 0, i32 0            ; <i8**> [#uses=1]
+       store i8* inttoptr (i64 4294967295 to i8*), i8** %0, align 4
+       tail call void @llvm.dbg.stoppoint(i32 132, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %1 = getelementptr %struct.object* %ob, i32 0, i32 1            ; <i8**> [#uses=1]
+       store i8* %tbase, i8** %1, align 4
+       tail call void @llvm.dbg.stoppoint(i32 133, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %2 = getelementptr %struct.object* %ob, i32 0, i32 2            ; <i8**> [#uses=1]
+       store i8* %dbase, i8** %2, align 4
+       tail call void @llvm.dbg.stoppoint(i32 134, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %3 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0             ; <%struct.dwarf_fde**> [#uses=1]
+       %.c = bitcast i8* %begin to %struct.dwarf_fde*          ; <%struct.dwarf_fde*> [#uses=1]
+       store %struct.dwarf_fde* %.c, %struct.dwarf_fde** %3
+       tail call void @llvm.dbg.stoppoint(i32 137, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0             ; <i32*> [#uses=1]
+       store i32 2042, i32* %4
+       tail call void @llvm.dbg.stoppoint(i32 140, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 142, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       %5 = load %struct.object** @unseen_objects, align 4             ; <%struct.object*> [#uses=1]
+       %6 = getelementptr %struct.object* %ob, i32 0, i32 5            ; <%struct.object**> [#uses=1]
+       store %struct.object* %5, %struct.object** %6, align 4
+       tail call void @llvm.dbg.stoppoint(i32 143, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       store %struct.object* %ob, %struct.object** @unseen_objects, align 4
+       tail call void @llvm.dbg.stoppoint(i32 145, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 146, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*))
+       ret void
+}
+
+define arm_apcscc void @__register_frame_info_table(i8* %begin, %struct.object* %ob) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram184 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 151, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 131, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.object* %ob, i32 0, i32 0            ; <i8**> [#uses=1]
+       store i8* inttoptr (i64 4294967295 to i8*), i8** %0, align 4
+       tail call void @llvm.dbg.stoppoint(i32 132, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %1 = getelementptr %struct.object* %ob, i32 0, i32 1            ; <i8**> [#uses=1]
+       store i8* null, i8** %1, align 4
+       tail call void @llvm.dbg.stoppoint(i32 133, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %2 = getelementptr %struct.object* %ob, i32 0, i32 2            ; <i8**> [#uses=1]
+       store i8* null, i8** %2, align 4
+       tail call void @llvm.dbg.stoppoint(i32 134, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %3 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0             ; <%struct.dwarf_fde**> [#uses=1]
+       %.c.i = bitcast i8* %begin to %struct.dwarf_fde*                ; <%struct.dwarf_fde*> [#uses=1]
+       store %struct.dwarf_fde* %.c.i, %struct.dwarf_fde** %3
+       tail call void @llvm.dbg.stoppoint(i32 137, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0             ; <i32*> [#uses=1]
+       store i32 2042, i32* %4
+       tail call void @llvm.dbg.stoppoint(i32 140, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 142, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       %5 = load %struct.object** @unseen_objects, align 4             ; <%struct.object*> [#uses=1]
+       %6 = getelementptr %struct.object* %ob, i32 0, i32 5            ; <%struct.object**> [#uses=1]
+       store %struct.object* %5, %struct.object** %6, align 4
+       tail call void @llvm.dbg.stoppoint(i32 143, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       store %struct.object* %ob, %struct.object** @unseen_objects, align 4
+       tail call void @llvm.dbg.stoppoint(i32 145, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 146, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 152, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram184 to { }*))
+       ret void
+}
+
+define internal arm_apcscc i32 @fde_unencoded_compare(%struct.object* nocapture %ob, %struct.dwarf_fde* nocapture %x, %struct.dwarf_fde* nocapture %y) nounwind readonly {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram188 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 326, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.dwarf_fde* %x, i32 0, i32 2          ; <[0 x i8]*> [#uses=1]
+       %1 = bitcast [0 x i8]* %0 to i32*               ; <i32*> [#uses=1]
+       %2 = load i32* %1, align 4              ; <i32> [#uses=2]
+       tail call void @llvm.dbg.stoppoint(i32 327, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %3 = getelementptr %struct.dwarf_fde* %y, i32 0, i32 2          ; <[0 x i8]*> [#uses=1]
+       %4 = bitcast [0 x i8]* %3 to i32*               ; <i32*> [#uses=1]
+       %5 = load i32* %4, align 4              ; <i32> [#uses=2]
+       tail call void @llvm.dbg.stoppoint(i32 329, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %6 = icmp ugt i32 %2, %5                ; <i1> [#uses=1]
+       br i1 %6, label %bb4, label %bb1
+
+bb1:           ; preds = %entry
+       tail call void @llvm.dbg.stoppoint(i32 331, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %7 = icmp ult i32 %2, %5                ; <i1> [#uses=1]
+       %retval = select i1 %7, i32 -1, i32 0           ; <i32> [#uses=1]
+       ret i32 %retval
+
+bb4:           ; preds = %entry
+       tail call void @llvm.dbg.stoppoint(i32 333, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret i32 1
+}
+
+define internal arm_apcscc void @frame_downheap(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* nocapture %fde_compare, %struct.dwarf_fde** nocapture %a, i32 %lo, i32 %hi) {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram213 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 483, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       br label %bb5
+
+bb:            ; preds = %bb5
+       %0 = add i32 %j.1, 1            ; <i32> [#uses=2]
+       %1 = icmp slt i32 %0, %hi               ; <i1> [#uses=1]
+       br i1 %1, label %bb1, label %bb3
+
+bb1:           ; preds = %bb
+       %2 = getelementptr %struct.dwarf_fde** %a, i32 %j.1             ; <%struct.dwarf_fde**> [#uses=1]
+       %3 = load %struct.dwarf_fde** %2, align 4               ; <%struct.dwarf_fde*> [#uses=1]
+       %4 = getelementptr %struct.dwarf_fde** %a, i32 %0               ; <%struct.dwarf_fde**> [#uses=1]
+       %5 = load %struct.dwarf_fde** %4, align 4               ; <%struct.dwarf_fde*> [#uses=1]
+       %6 = tail call arm_apcscc  i32 %fde_compare(%struct.object* %ob, %struct.dwarf_fde* %3, %struct.dwarf_fde* %5)          ; <i32> [#uses=1]
+       %.lobit = lshr i32 %6, 31               ; <i32> [#uses=1]
+       %.j.1 = add i32 %.lobit, %j.1           ; <i32> [#uses=1]
+       br label %bb3
+
+bb3:           ; preds = %bb1, %bb
+       %j.0 = phi i32 [ %.j.1, %bb1 ], [ %j.1, %bb ]           ; <i32> [#uses=3]
+       %7 = getelementptr %struct.dwarf_fde** %a, i32 %i.0             ; <%struct.dwarf_fde**> [#uses=3]
+       %8 = load %struct.dwarf_fde** %7, align 4               ; <%struct.dwarf_fde*> [#uses=1]
+       %9 = getelementptr %struct.dwarf_fde** %a, i32 %j.0             ; <%struct.dwarf_fde**> [#uses=3]
+       %10 = load %struct.dwarf_fde** %9, align 4              ; <%struct.dwarf_fde*> [#uses=1]
+       %11 = tail call arm_apcscc  i32 %fde_compare(%struct.object* %ob, %struct.dwarf_fde* %8, %struct.dwarf_fde* %10)                ; <i32> [#uses=1]
+       %12 = icmp slt i32 %11, 0               ; <i1> [#uses=1]
+       br i1 %12, label %bb4, label %return
+
+bb4:           ; preds = %bb3
+       %13 = load %struct.dwarf_fde** %7, align 4              ; <%struct.dwarf_fde*> [#uses=1]
+       %14 = load %struct.dwarf_fde** %9, align 4              ; <%struct.dwarf_fde*> [#uses=1]
+       store %struct.dwarf_fde* %14, %struct.dwarf_fde** %7, align 4
+       store %struct.dwarf_fde* %13, %struct.dwarf_fde** %9, align 4
+       br label %bb5
+
+bb5:           ; preds = %bb4, %entry
+       %j.1.in.in = phi i32 [ %lo, %entry ], [ %j.0, %bb4 ]            ; <i32> [#uses=1]
+       %i.0 = phi i32 [ %lo, %entry ], [ %j.0, %bb4 ]          ; <i32> [#uses=1]
+       %j.1.in = shl i32 %j.1.in.in, 1         ; <i32> [#uses=1]
+       %j.1 = or i32 %j.1.in, 1                ; <i32> [#uses=5]
+       %15 = icmp slt i32 %j.1, %hi            ; <i1> [#uses=1]
+       br i1 %15, label %bb, label %return
+
+return:                ; preds = %bb5, %bb3
+       tail call void @llvm.dbg.stoppoint(i32 498, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram213 to { }*))
+       ret void
+}
+
+define internal arm_apcscc void @frame_heapsort(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* nocapture %fde_compare, %struct.fde_vector* nocapture %erratic) {
+entry:
+       %erratic15 = bitcast %struct.fde_vector* %erratic to i8*                ; <i8*> [#uses=1]
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram217 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 510, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.fde_vector* %erratic, i32 0, i32 2, i32 0            ; <%struct.dwarf_fde**> [#uses=4]
+       tail call void @llvm.dbg.stoppoint(i32 514, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %1 = getelementptr %struct.fde_vector* %erratic, i32 0, i32 1           ; <i32*> [#uses=1]
+       %2 = load i32* %1, align 4              ; <i32> [#uses=4]
+       tail call void @llvm.dbg.stoppoint(i32 520, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %3 = lshr i32 %2, 1             ; <i32> [#uses=2]
+       %m.010 = add i32 %3, -1         ; <i32> [#uses=2]
+       %4 = icmp slt i32 %m.010, 0             ; <i1> [#uses=1]
+       br i1 %4, label %bb4.loopexit, label %bb.nph12
+
+bb.nph12:              ; preds = %entry
+       %tmp25 = add i32 %3, -2         ; <i32> [#uses=1]
+       br label %bb
+
+bb:            ; preds = %bb, %bb.nph12
+       %indvar21 = phi i32 [ 0, %bb.nph12 ], [ %indvar.next22, %bb ]           ; <i32> [#uses=3]
+       %m.011 = sub i32 %m.010, %indvar21              ; <i32> [#uses=1]
+       tail call arm_apcscc  void @frame_downheap(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* %fde_compare, %struct.dwarf_fde** %0, i32 %m.011, i32 %2)
+       %m.0 = sub i32 %tmp25, %indvar21                ; <i32> [#uses=1]
+       %5 = icmp slt i32 %m.0, 0               ; <i1> [#uses=1]
+       %indvar.next22 = add i32 %indvar21, 1           ; <i32> [#uses=1]
+       br i1 %5, label %bb4.loopexit, label %bb
+
+bb.nph:                ; preds = %bb4.loopexit
+       %tmp17 = shl i32 %2, 2          ; <i32> [#uses=1]
+       %tmp18 = add i32 %tmp17, 4              ; <i32> [#uses=1]
+       br label %bb3
+
+bb3:           ; preds = %bb3, %bb.nph
+       %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb3 ]                ; <i32> [#uses=3]
+       %m.18 = sub i32 %m.17, %indvar          ; <i32> [#uses=1]
+       %tmp16 = mul i32 %indvar, -4            ; <i32> [#uses=1]
+       %tmp19 = add i32 %tmp16, %tmp18         ; <i32> [#uses=1]
+       %scevgep = getelementptr i8* %erratic15, i32 %tmp19             ; <i8*> [#uses=1]
+       %scevgep20 = bitcast i8* %scevgep to %struct.dwarf_fde**                ; <%struct.dwarf_fde**> [#uses=2]
+       %6 = load %struct.dwarf_fde** %0, align 4               ; <%struct.dwarf_fde*> [#uses=1]
+       %7 = load %struct.dwarf_fde** %scevgep20, align 4               ; <%struct.dwarf_fde*> [#uses=1]
+       store %struct.dwarf_fde* %7, %struct.dwarf_fde** %0, align 4
+       store %struct.dwarf_fde* %6, %struct.dwarf_fde** %scevgep20, align 4
+       tail call arm_apcscc  void @frame_downheap(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* %fde_compare, %struct.dwarf_fde** %0, i32 0, i32 %m.18)
+       %indvar.next = add i32 %indvar, 1               ; <i32> [#uses=2]
+       %exitcond = icmp eq i32 %indvar.next, %m.17             ; <i1> [#uses=1]
+       br i1 %exitcond, label %return, label %bb3
+
+bb4.loopexit:          ; preds = %bb, %entry
+       %m.17 = add i32 %2, -1          ; <i32> [#uses=3]
+       tail call void @llvm.dbg.stoppoint(i32 526, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %8 = icmp sgt i32 %m.17, 0              ; <i1> [#uses=1]
+       br i1 %8, label %bb.nph, label %return
+
+return:                ; preds = %bb4.loopexit, %bb3
+       tail call void @llvm.dbg.stoppoint(i32 532, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram217 to { }*))
+       ret void
+}
+
+define internal arm_apcscc i32 @size_of_encoded_value(i8 zeroext %encoding) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram227 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 76, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %0 = icmp eq i8 %encoding, -1           ; <i1> [#uses=1]
+       br i1 %0, label %bb7, label %bb1
+
+bb1:           ; preds = %entry
+       tail call void @llvm.dbg.stoppoint(i32 79, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %1 = zext i8 %encoding to i32           ; <i32> [#uses=1]
+       %2 = and i32 %1, 7              ; <i32> [#uses=1]
+       switch i32 %2, label %bb6 [
+               i32 0, label %bb7
+               i32 2, label %bb3
+               i32 3, label %bb7
+               i32 4, label %bb5
+       ]
+
+bb3:           ; preds = %bb1
+       tail call void @llvm.dbg.stoppoint(i32 84, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram227 to { }*))
+       ret i32 2
+
+bb5:           ; preds = %bb1
+       tail call void @llvm.dbg.stoppoint(i32 88, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       ret i32 8
+
+bb6:           ; preds = %bb1
+       tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       tail call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+bb7:           ; preds = %bb1, %bb1, %entry
+       %.0 = phi i32 [ 0, %entry ], [ 4, %bb1 ], [ 4, %bb1 ]           ; <i32> [#uses=1]
+       tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       ret i32 %.0
+}
+
+declare arm_apcscc void @abort() noreturn nounwind
+
+define internal arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %encoding, i32 %base, i8* %p, i32* nocapture %val) nounwind {
+entry:
+       %tmp = alloca i32, align 4              ; <i32*> [#uses=2]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram236 to { }*))
+       call void @llvm.dbg.stoppoint(i32 200, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %0 = icmp eq i8 %encoding, 80           ; <i1> [#uses=1]
+       br i1 %0, label %bb, label %bb2
+
+bb:            ; preds = %entry
+       call void @llvm.dbg.stoppoint(i32 203, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %ctg2 = getelementptr i8* %p, i32 3             ; <i8*> [#uses=1]
+       %1 = ptrtoint i8* %ctg2 to i32          ; <i32> [#uses=1]
+       %2 = and i32 %1, -4             ; <i32> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 204, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %3 = inttoptr i32 %2 to i32*            ; <i32*> [#uses=1]
+       %4 = load i32* %3, align 4              ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 205, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %tmp21 = inttoptr i32 %2 to i8*         ; <i8*> [#uses=1]
+       %5 = getelementptr i8* %tmp21, i32 4            ; <i8*> [#uses=1]
+       br label %bb19
+
+bb2:           ; preds = %entry
+       call void @llvm.dbg.stoppoint(i32 209, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %6 = zext i8 %encoding to i32           ; <i32> [#uses=2]
+       %7 = and i32 %6, 15             ; <i32> [#uses=1]
+       switch i32 %7, label %bb12 [
+               i32 0, label %bb3
+               i32 1, label %bb.i
+               i32 2, label %bb6
+               i32 3, label %bb7
+               i32 4, label %bb8
+               i32 9, label %bb5
+               i32 10, label %bb9
+               i32 11, label %bb10
+               i32 12, label %bb11
+       ]
+
+bb3:           ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 212, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %8 = bitcast i8* %p to i8**             ; <i8**> [#uses=1]
+       %9 = load i8** %8, align 1              ; <i8*> [#uses=1]
+       %10 = ptrtoint i8* %9 to i32            ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 213, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %11 = getelementptr i8* %p, i32 4               ; <i8*> [#uses=1]
+       br label %bb13
+
+bb.i:          ; preds = %bb.i, %bb2
+       %indvar.i = phi i32 [ 0, %bb2 ], [ %18, %bb.i ]         ; <i32> [#uses=3]
+       %result.0.i = phi i32 [ 0, %bb2 ], [ %16, %bb.i ]               ; <i32> [#uses=1]
+       %p_addr.0.i = getelementptr i8* %p, i32 %indvar.i               ; <i8*> [#uses=1]
+       %shift.0.i = mul i32 %indvar.i, 7               ; <i32> [#uses=1]
+       %12 = load i8* %p_addr.0.i, align 1             ; <i8> [#uses=2]
+       %13 = zext i8 %12 to i32                ; <i32> [#uses=1]
+       %14 = and i32 %13, 127          ; <i32> [#uses=1]
+       %15 = shl i32 %14, %shift.0.i           ; <i32> [#uses=1]
+       %16 = or i32 %15, %result.0.i           ; <i32> [#uses=2]
+       %17 = icmp slt i8 %12, 0                ; <i1> [#uses=1]
+       %18 = add i32 %indvar.i, 1              ; <i32> [#uses=2]
+       br i1 %17, label %bb.i, label %read_uleb128.exit
+
+read_uleb128.exit:             ; preds = %bb.i
+       %scevgep.i = getelementptr i8* %p, i32 %18              ; <i8*> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 220, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram to { }*))
+       br label %bb13
+
+bb5:           ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 227, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %19 = call arm_apcscc  i8* @read_sleb128(i8* %p, i32* %tmp)             ; <i8*> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 228, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %20 = load i32* %tmp, align 4           ; <i32> [#uses=1]
+       br label %bb13
+
+bb6:           ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %21 = bitcast i8* %p to i16*            ; <i16*> [#uses=1]
+       %22 = load i16* %21, align 1            ; <i16> [#uses=1]
+       %23 = zext i16 %22 to i32               ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 234, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %24 = getelementptr i8* %p, i32 2               ; <i8*> [#uses=1]
+       br label %bb13
+
+bb7:           ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 237, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %25 = bitcast i8* %p to i32*            ; <i32*> [#uses=1]
+       %26 = load i32* %25, align 1            ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 238, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %27 = getelementptr i8* %p, i32 4               ; <i8*> [#uses=1]
+       br label %bb13
+
+bb8:           ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 241, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %28 = bitcast i8* %p to i64*            ; <i64*> [#uses=1]
+       %29 = load i64* %28, align 1            ; <i64> [#uses=1]
+       %30 = trunc i64 %29 to i32              ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %31 = getelementptr i8* %p, i32 8               ; <i8*> [#uses=1]
+       br label %bb13
+
+bb9:           ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 246, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %32 = bitcast i8* %p to i16*            ; <i16*> [#uses=1]
+       %33 = load i16* %32, align 1            ; <i16> [#uses=1]
+       %34 = sext i16 %33 to i32               ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 247, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %35 = getelementptr i8* %p, i32 2               ; <i8*> [#uses=1]
+       br label %bb13
+
+bb10:          ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 250, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %36 = bitcast i8* %p to i32*            ; <i32*> [#uses=1]
+       %37 = load i32* %36, align 1            ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 251, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %38 = getelementptr i8* %p, i32 4               ; <i8*> [#uses=1]
+       br label %bb13
+
+bb11:          ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 254, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %39 = bitcast i8* %p to i64*            ; <i64*> [#uses=1]
+       %40 = load i64* %39, align 1            ; <i64> [#uses=1]
+       %41 = trunc i64 %40 to i32              ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %42 = getelementptr i8* %p, i32 8               ; <i8*> [#uses=1]
+       br label %bb13
+
+bb12:          ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 259, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+bb13:          ; preds = %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %read_uleb128.exit, %bb3
+       %p_addr.1 = phi i8* [ %42, %bb11 ], [ %38, %bb10 ], [ %35, %bb9 ], [ %19, %bb5 ], [ %31, %bb8 ], [ %27, %bb7 ], [ %24, %bb6 ], [ %scevgep.i, %read_uleb128.exit ], [ %11, %bb3 ]                ; <i8*> [#uses=3]
+       %result.1 = phi i32 [ %41, %bb11 ], [ %37, %bb10 ], [ %34, %bb9 ], [ %20, %bb5 ], [ %30, %bb8 ], [ %26, %bb7 ], [ %23, %bb6 ], [ %16, %read_uleb128.exit ], [ %10, %bb3 ]               ; <i32> [#uses=3]
+       call void @llvm.dbg.stoppoint(i32 262, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %43 = icmp eq i32 %result.1, 0          ; <i1> [#uses=1]
+       br i1 %43, label %bb19, label %bb14
+
+bb14:          ; preds = %bb13
+       call void @llvm.dbg.stoppoint(i32 264, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %44 = and i32 %6, 112           ; <i32> [#uses=1]
+       %45 = icmp eq i32 %44, 16               ; <i1> [#uses=1]
+       br i1 %45, label %bb15, label %bb17
+
+bb15:          ; preds = %bb14
+       %46 = ptrtoint i8* %p to i32            ; <i32> [#uses=1]
+       br label %bb17
+
+bb17:          ; preds = %bb15, %bb14
+       %iftmp.9.0 = phi i32 [ %46, %bb15 ], [ %base, %bb14 ]           ; <i32> [#uses=1]
+       %47 = add i32 %iftmp.9.0, %result.1             ; <i32> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 266, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %48 = icmp slt i8 %encoding, 0          ; <i1> [#uses=1]
+       br i1 %48, label %bb18, label %bb19
+
+bb18:          ; preds = %bb17
+       call void @llvm.dbg.stoppoint(i32 267, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       %49 = inttoptr i32 %47 to i32*          ; <i32*> [#uses=1]
+       %50 = load i32* %49, align 4            ; <i32> [#uses=1]
+       br label %bb19
+
+bb19:          ; preds = %bb18, %bb17, %bb13, %bb
+       %p_addr.0 = phi i8* [ %5, %bb ], [ %p_addr.1, %bb18 ], [ %p_addr.1, %bb13 ], [ %p_addr.1, %bb17 ]               ; <i8*> [#uses=1]
+       %result.0 = phi i32 [ %4, %bb ], [ %50, %bb18 ], [ %result.1, %bb13 ], [ %47, %bb17 ]           ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 271, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       store i32 %result.0, i32* %val, align 4
+       call void @llvm.dbg.stoppoint(i32 272, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram236 to { }*))
+       ret i8* %p_addr.0
+}
+
+define internal arm_apcscc i32 @get_cie_encoding(%struct.dwarf_cie* %cie) nounwind {
+entry:
+       %cie37 = bitcast %struct.dwarf_cie* %cie to i8*         ; <i8*> [#uses=1]
+       %stmp = alloca i32, align 4             ; <i32*> [#uses=1]
+       %dummy = alloca i32, align 4            ; <i32*> [#uses=1]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram240 to { }*))
+       call void @llvm.dbg.stoppoint(i32 272, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.dwarf_cie* %cie, i32 0, i32 3, i32 0         ; <i8*> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 273, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %1 = load i8* %0, align 1               ; <i8> [#uses=1]
+       %2 = icmp eq i8 %1, 122         ; <i1> [#uses=1]
+       br i1 %2, label %bb1, label %bb13
+
+bb1:           ; preds = %entry
+       %3 = call arm_apcscc  i32 @strlen(i8* %0) nounwind readonly             ; <i32> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 277, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %tmp38 = add i32 %3, 10         ; <i32> [#uses=1]
+       br label %bb.i
+
+bb.i:          ; preds = %bb.i, %bb1
+       %indvar.i = phi i32 [ 0, %bb1 ], [ %6, %bb.i ]          ; <i32> [#uses=3]
+       %tmp39 = add i32 %indvar.i, %tmp38              ; <i32> [#uses=1]
+       %p_addr.0.i = getelementptr i8* %cie37, i32 %tmp39              ; <i8*> [#uses=1]
+       %4 = load i8* %p_addr.0.i, align 1              ; <i8> [#uses=1]
+       %5 = icmp slt i8 %4, 0          ; <i1> [#uses=1]
+       %6 = add i32 %indvar.i, 1               ; <i32> [#uses=1]
+       br i1 %5, label %bb.i, label %read_uleb128.exit
+
+read_uleb128.exit:             ; preds = %bb.i
+       call void @llvm.dbg.stoppoint(i32 276, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram to { }*))
+       %.sum40 = add i32 %indvar.i, %3         ; <i32> [#uses=1]
+       %.sum31 = add i32 %.sum40, 2            ; <i32> [#uses=1]
+       %scevgep.i = getelementptr %struct.dwarf_cie* %cie, i32 0, i32 3, i32 %.sum31           ; <i8*> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 278, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram to { }*))
+       %7 = call arm_apcscc  i8* @read_sleb128(i8* %scevgep.i, i32* %stmp)             ; <i8*> [#uses=3]
+       call void @llvm.dbg.stoppoint(i32 279, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %8 = getelementptr %struct.dwarf_cie* %cie, i32 0, i32 2                ; <i8*> [#uses=1]
+       %9 = load i8* %8, align 1               ; <i8> [#uses=1]
+       %10 = icmp eq i8 %9, 1          ; <i1> [#uses=1]
+       br i1 %10, label %bb2, label %bb.i20
+
+bb2:           ; preds = %read_uleb128.exit
+       call void @llvm.dbg.stoppoint(i32 280, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %11 = getelementptr i8* %7, i32 1               ; <i8*> [#uses=1]
+       br label %bb.i28
+
+bb.i20:                ; preds = %bb.i20, %read_uleb128.exit
+       %indvar.i15 = phi i32 [ 0, %read_uleb128.exit ], [ %14, %bb.i20 ]               ; <i32> [#uses=2]
+       %p_addr.0.i18 = getelementptr i8* %7, i32 %indvar.i15           ; <i8*> [#uses=1]
+       %12 = load i8* %p_addr.0.i18, align 1           ; <i8> [#uses=1]
+       %13 = icmp slt i8 %12, 0                ; <i1> [#uses=1]
+       %14 = add i32 %indvar.i15, 1            ; <i32> [#uses=2]
+       br i1 %13, label %bb.i20, label %read_uleb128.exit22
+
+read_uleb128.exit22:           ; preds = %bb.i20
+       %scevgep.i21 = getelementptr i8* %7, i32 %14            ; <i8*> [#uses=1]
+       tail call void @llvm.dbg.stoppoint(i32 149, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       br label %bb.i28
+
+bb.i28:                ; preds = %bb.i28, %read_uleb128.exit22, %bb2
+       %p.0.ph = phi i8* [ %11, %bb2 ], [ %scevgep.i21, %read_uleb128.exit22 ], [ %p.0.ph, %bb.i28 ]           ; <i8*> [#uses=3]
+       %indvar.i23 = phi i32 [ 0, %read_uleb128.exit22 ], [ 0, %bb2 ], [ %17, %bb.i28 ]                ; <i32> [#uses=2]
+       %p_addr.0.i26 = getelementptr i8* %p.0.ph, i32 %indvar.i23              ; <i8*> [#uses=1]
+       %15 = load i8* %p_addr.0.i26, align 1           ; <i8> [#uses=1]
+       %16 = icmp slt i8 %15, 0                ; <i1> [#uses=1]
+       %17 = add i32 %indvar.i23, 1            ; <i32> [#uses=2]
+       br i1 %16, label %bb.i28, label %read_uleb128.exit30
+
+read_uleb128.exit30:           ; preds = %bb.i28
+       %scevgep.i29 = getelementptr i8* %p.0.ph, i32 %17               ; <i8*> [#uses=1]
+       tail call void @llvm.dbg.stoppoint(i32 149, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*))
+       br label %bb5
+
+bb5:           ; preds = %bb5.backedge, %read_uleb128.exit30
+       %indvar = phi i32 [ 1, %read_uleb128.exit30 ], [ %phitmp, %bb5.backedge ]               ; <i32> [#uses=2]
+       %p.2 = phi i8* [ %scevgep.i29, %read_uleb128.exit30 ], [ %p.2.be, %bb5.backedge ]               ; <i8*> [#uses=4]
+       %aug.0 = getelementptr %struct.dwarf_cie* %cie, i32 0, i32 4, i32 %indvar               ; <i8*> [#uses=1]
+       %18 = load i8* %aug.0, align 1          ; <i8> [#uses=1]
+       switch i8 %18, label %bb13 [
+               i8 82, label %bb6
+               i8 80, label %bb8
+               i8 76, label %bb10
+       ]
+
+bb6:           ; preds = %bb5
+       call void @llvm.dbg.stoppoint(i32 290, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %19 = load i8* %p.2, align 1            ; <i8> [#uses=1]
+       %20 = zext i8 %19 to i32                ; <i32> [#uses=1]
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram240 to { }*))
+       ret i32 %20
+
+bb8:           ; preds = %bb5
+       %21 = load i8* %p.2, align 1            ; <i8> [#uses=1]
+       %22 = and i8 %21, 127           ; <i8> [#uses=1]
+       %23 = getelementptr i8* %p.2, i32 1             ; <i8*> [#uses=1]
+       %24 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %22, i32 0, i8* %23, i32* %dummy)           ; <i8*> [#uses=1]
+       br label %bb5.backedge
+
+bb10:          ; preds = %bb5
+       %25 = getelementptr i8* %p.2, i32 1             ; <i8*> [#uses=1]
+       br label %bb5.backedge
+
+bb5.backedge:          ; preds = %bb10, %bb8
+       %p.2.be = phi i8* [ %24, %bb8 ], [ %25, %bb10 ]         ; <i8*> [#uses=1]
+       %phitmp = add i32 %indvar, 1            ; <i32> [#uses=1]
+       br label %bb5
+
+bb13:          ; preds = %bb5, %entry
+       call void @llvm.dbg.stoppoint(i32 305, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret i32 0
+}
+
+declare arm_apcscc i32 @strlen(i8* nocapture) nounwind readonly
+
+define internal arm_apcscc i32 @classify_object_over_fdes(%struct.object* nocapture %ob, %struct.dwarf_fde* %this_fde) nounwind {
+entry:
+       %pc_begin = alloca i32, align 4         ; <i32*> [#uses=2]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram244 to { }*))
+       call void @llvm.dbg.stoppoint(i32 603, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.object* %ob, i32 0, i32 0            ; <i8**> [#uses=2]
+       %1 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0             ; <i32*> [#uses=3]
+       %2 = getelementptr %struct.object* %ob, i32 0, i32 1            ; <i8**> [#uses=1]
+       %3 = getelementptr %struct.object* %ob, i32 0, i32 2            ; <i8**> [#uses=1]
+       br label %bb13
+
+bb:            ; preds = %bb13
+       %4 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 1            ; <i32*> [#uses=2]
+       %5 = load i32* %4, align 1              ; <i32> [#uses=2]
+       %6 = icmp eq i32 %5, 0          ; <i1> [#uses=1]
+       br i1 %6, label %bb12, label %bb1
+
+bb1:           ; preds = %bb
+       %7 = bitcast i32* %4 to i8*             ; <i8*> [#uses=1]
+       %8 = sub i32 0, %5              ; <i32> [#uses=1]
+       %9 = getelementptr i8* %7, i32 %8               ; <i8*> [#uses=1]
+       %10 = bitcast i8* %9 to %struct.dwarf_cie*              ; <%struct.dwarf_cie*> [#uses=5]
+       %11 = icmp eq %struct.dwarf_cie* %10, %last_cie.2               ; <i1> [#uses=1]
+       br i1 %11, label %bb6, label %bb2
+
+bb2:           ; preds = %bb1
+       %12 = call arm_apcscc  i32 @get_cie_encoding(%struct.dwarf_cie* %10)            ; <i32> [#uses=7]
+       %13 = trunc i32 %12 to i8               ; <i8> [#uses=1]
+       %14 = icmp eq i8 %13, -1                ; <i1> [#uses=1]
+       br i1 %14, label %base_from_object.exit, label %bb1.i
+
+bb1.i:         ; preds = %bb2
+       %15 = and i32 %12, 112          ; <i32> [#uses=1]
+       switch i32 %15, label %bb5.i [
+               i32 0, label %base_from_object.exit
+               i32 16, label %base_from_object.exit
+               i32 32, label %bb3.i
+               i32 48, label %bb4.i
+               i32 80, label %base_from_object.exit
+       ]
+
+bb3.i:         ; preds = %bb1.i
+       %16 = load i8** %2, align 4             ; <i8*> [#uses=1]
+       %17 = ptrtoint i8* %16 to i32           ; <i32> [#uses=1]
+       br label %base_from_object.exit
+
+bb4.i:         ; preds = %bb1.i
+       %18 = load i8** %3, align 4             ; <i8*> [#uses=1]
+       %19 = ptrtoint i8* %18 to i32           ; <i32> [#uses=1]
+       br label %base_from_object.exit
+
+bb5.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 605, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*))
+       call void @llvm.dbg.stoppoint(i32 616, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*))
+       call void @llvm.dbg.stoppoint(i32 617, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*))
+       call void @llvm.dbg.stoppoint(i32 621, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+base_from_object.exit:         ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %bb2
+       %20 = phi i32 [ %19, %bb4.i ], [ %17, %bb3.i ], [ 0, %bb2 ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ]                ; <i32> [#uses=3]
+       %21 = load i32* %1              ; <i32> [#uses=4]
+       %22 = and i32 %21, 2040         ; <i32> [#uses=1]
+       %23 = icmp eq i32 %22, 2040             ; <i1> [#uses=1]
+       br i1 %23, label %bb3, label %bb4
+
+bb3:           ; preds = %base_from_object.exit
+       %24 = shl i32 %12, 3            ; <i32> [#uses=1]
+       %25 = and i32 %24, 2040         ; <i32> [#uses=1]
+       %26 = and i32 %21, -2041                ; <i32> [#uses=1]
+       %27 = or i32 %26, %25           ; <i32> [#uses=1]
+       store i32 %27, i32* %1
+       br label %bb6
+
+bb4:           ; preds = %base_from_object.exit
+       %28 = lshr i32 %21, 3           ; <i32> [#uses=1]
+       %29 = and i32 %28, 255          ; <i32> [#uses=1]
+       %30 = icmp eq i32 %29, %12              ; <i1> [#uses=1]
+       br i1 %30, label %bb6, label %bb5
+
+bb5:           ; preds = %bb4
+       %31 = or i32 %21, 4             ; <i32> [#uses=1]
+       store i32 %31, i32* %1
+       br label %bb6
+
+bb6:           ; preds = %bb5, %bb4, %bb3, %bb1
+       %base.0 = phi i32 [ %20, %bb3 ], [ %20, %bb5 ], [ %base.2, %bb1 ], [ %20, %bb4 ]                ; <i32> [#uses=4]
+       %encoding.0 = phi i32 [ %12, %bb3 ], [ %12, %bb5 ], [ %encoding.2, %bb1 ], [ %12, %bb4 ]                ; <i32> [#uses=4]
+       %last_cie.0 = phi %struct.dwarf_cie* [ %10, %bb3 ], [ %10, %bb5 ], [ %last_cie.2, %bb1 ], [ %10, %bb4 ]         ; <%struct.dwarf_cie*> [#uses=3]
+       %32 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2, i32 0            ; <i8*> [#uses=1]
+       %33 = trunc i32 %encoding.0 to i8               ; <i8> [#uses=2]
+       %34 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %33, i32 %base.0, i8* %32, i32* %pc_begin)          ; <i8*> [#uses=0]
+       %35 = call arm_apcscc  i32 @size_of_encoded_value(i8 zeroext %33)               ; <i32> [#uses=2]
+       %36 = icmp ugt i32 %35, 3               ; <i1> [#uses=1]
+       br i1 %36, label %bb9, label %bb7
+
+bb7:           ; preds = %bb6
+       %37 = shl i32 %35, 3            ; <i32> [#uses=1]
+       %38 = shl i32 1, %37            ; <i32> [#uses=1]
+       %39 = add i32 %38, -1           ; <i32> [#uses=1]
+       br label %bb9
+
+bb9:           ; preds = %bb7, %bb6
+       %mask.0 = phi i32 [ %39, %bb7 ], [ -1, %bb6 ]           ; <i32> [#uses=1]
+       %40 = load i32* %pc_begin, align 4              ; <i32> [#uses=2]
+       %41 = and i32 %40, %mask.0              ; <i32> [#uses=1]
+       %42 = icmp eq i32 %41, 0                ; <i1> [#uses=1]
+       br i1 %42, label %bb12, label %bb10
+
+bb10:          ; preds = %bb9
+       %43 = add i32 %count.1, 1               ; <i32> [#uses=2]
+       %44 = load i8** %0, align 4             ; <i8*> [#uses=1]
+       %45 = inttoptr i32 %40 to i8*           ; <i8*> [#uses=2]
+       %46 = icmp ugt i8* %44, %45             ; <i1> [#uses=1]
+       br i1 %46, label %bb11, label %bb12
+
+bb11:          ; preds = %bb10
+       store i8* %45, i8** %0, align 4
+       br label %bb12
+
+bb12:          ; preds = %bb11, %bb10, %bb9, %bb
+       %base.1 = phi i32 [ %base.0, %bb11 ], [ %base.2, %bb ], [ %base.0, %bb9 ], [ %base.0, %bb10 ]           ; <i32> [#uses=1]
+       %encoding.1 = phi i32 [ %encoding.0, %bb11 ], [ %encoding.2, %bb ], [ %encoding.0, %bb9 ], [ %encoding.0, %bb10 ]               ; <i32> [#uses=1]
+       %count.0 = phi i32 [ %43, %bb11 ], [ %count.1, %bb ], [ %count.1, %bb9 ], [ %43, %bb10 ]                ; <i32> [#uses=1]
+       %last_cie.1 = phi %struct.dwarf_cie* [ %last_cie.0, %bb11 ], [ %last_cie.2, %bb ], [ %last_cie.0, %bb9 ], [ %last_cie.0, %bb10 ]                ; <%struct.dwarf_cie*> [#uses=1]
+       %47 = bitcast %struct.dwarf_fde* %this_fde_addr.0 to i8*                ; <i8*> [#uses=1]
+       %48 = load i32* %51, align 1            ; <i32> [#uses=1]
+       %.sum.i = add i32 %48, 4                ; <i32> [#uses=1]
+       %49 = getelementptr i8* %47, i32 %.sum.i                ; <i8*> [#uses=1]
+       %50 = bitcast i8* %49 to %struct.dwarf_fde*             ; <%struct.dwarf_fde*> [#uses=1]
+       br label %bb13
+
+bb13:          ; preds = %bb12, %entry
+       %base.2 = phi i32 [ 0, %entry ], [ %base.1, %bb12 ]             ; <i32> [#uses=2]
+       %encoding.2 = phi i32 [ 0, %entry ], [ %encoding.1, %bb12 ]             ; <i32> [#uses=2]
+       %count.1 = phi i32 [ 0, %entry ], [ %count.0, %bb12 ]           ; <i32> [#uses=4]
+       %this_fde_addr.0 = phi %struct.dwarf_fde* [ %this_fde, %entry ], [ %50, %bb12 ]         ; <%struct.dwarf_fde*> [#uses=4]
+       %last_cie.2 = phi %struct.dwarf_cie* [ null, %entry ], [ %last_cie.1, %bb12 ]           ; <%struct.dwarf_cie*> [#uses=3]
+       %51 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 0           ; <i32*> [#uses=2]
+       %52 = load i32* %51, align 1            ; <i32> [#uses=1]
+       %53 = icmp eq i32 %52, 0                ; <i1> [#uses=1]
+       br i1 %53, label %bb14, label %bb
+
+bb14:          ; preds = %bb13
+       call void @llvm.dbg.stoppoint(i32 605, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*))
+       call void @llvm.dbg.stoppoint(i32 649, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram244 to { }*))
+       ret i32 %count.1
+}
+
+define internal arm_apcscc void @add_fdes(%struct.object* nocapture %ob, %struct.fde_accumulator* nocapture %accu, %struct.dwarf_fde* %this_fde) nounwind {
+entry:
+       %pc_begin = alloca i32, align 4         ; <i32*> [#uses=2]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram252 to { }*))
+       call void @llvm.dbg.stoppoint(i32 656, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0             ; <i32*> [#uses=2]
+       %1 = load i32* %0               ; <i32> [#uses=1]
+       %2 = lshr i32 %1, 3             ; <i32> [#uses=3]
+       %3 = and i32 %2, 255            ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 657, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = trunc i32 %2 to i8         ; <i8> [#uses=1]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %5 = icmp eq i8 %4, -1          ; <i1> [#uses=1]
+       br i1 %5, label %bb12.preheader, label %bb1.i
+
+bb1.i:         ; preds = %entry
+       call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %6 = and i32 %2, 112            ; <i32> [#uses=1]
+       switch i32 %6, label %bb5.i [
+               i32 0, label %bb12.preheader
+               i32 16, label %bb12.preheader
+               i32 32, label %bb3.i
+               i32 48, label %bb4.i
+               i32 80, label %bb12.preheader
+       ]
+
+bb12.preheader:                ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %entry
+       %base.2.ph = phi i32 [ %15, %bb4.i ], [ %12, %bb3.i ], [ 0, %entry ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ]               ; <i32> [#uses=1]
+       %7 = getelementptr %struct.fde_accumulator* %accu, i32 0, i32 0         ; <%struct.fde_vector**> [#uses=1]
+       %8 = getelementptr %struct.object* %ob, i32 0, i32 1            ; <i8**> [#uses=1]
+       %9 = getelementptr %struct.object* %ob, i32 0, i32 2            ; <i8**> [#uses=1]
+       br label %bb12
+
+bb3.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %10 = getelementptr %struct.object* %ob, i32 0, i32 1           ; <i8**> [#uses=1]
+       %11 = load i8** %10, align 4            ; <i8*> [#uses=1]
+       %12 = ptrtoint i8* %11 to i32           ; <i32> [#uses=1]
+       br label %bb12.preheader
+
+bb4.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %13 = getelementptr %struct.object* %ob, i32 0, i32 2           ; <i8**> [#uses=1]
+       %14 = load i8** %13, align 4            ; <i8*> [#uses=1]
+       %15 = ptrtoint i8* %14 to i32           ; <i32> [#uses=1]
+       br label %bb12.preheader
+
+bb5.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+bb:            ; preds = %bb12
+       %16 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 1           ; <i32*> [#uses=2]
+       %17 = load i32* %16, align 1            ; <i32> [#uses=2]
+       %18 = icmp eq i32 %17, 0                ; <i1> [#uses=1]
+       br i1 %18, label %bb11, label %bb1
+
+bb1:           ; preds = %bb
+       %19 = load i32* %0              ; <i32> [#uses=1]
+       %20 = and i32 %19, 4            ; <i32> [#uses=1]
+       %21 = icmp eq i32 %20, 0                ; <i1> [#uses=1]
+       br i1 %21, label %bb4, label %bb2
+
+bb2:           ; preds = %bb1
+       %22 = bitcast i32* %16 to i8*           ; <i8*> [#uses=1]
+       %23 = sub i32 0, %17            ; <i32> [#uses=1]
+       %24 = getelementptr i8* %22, i32 %23            ; <i8*> [#uses=1]
+       %25 = bitcast i8* %24 to %struct.dwarf_cie*             ; <%struct.dwarf_cie*> [#uses=8]
+       %26 = icmp eq %struct.dwarf_cie* %25, %last_cie.2               ; <i1> [#uses=1]
+       br i1 %26, label %bb4, label %bb3
+
+bb3:           ; preds = %bb2
+       %27 = call arm_apcscc  i32 @get_cie_encoding(%struct.dwarf_cie* %25)            ; <i32> [#uses=8]
+       %28 = trunc i32 %27 to i8               ; <i8> [#uses=1]
+       %29 = icmp eq i8 %28, -1                ; <i1> [#uses=1]
+       br i1 %29, label %bb4, label %bb1.i14
+
+bb1.i14:               ; preds = %bb3
+       %30 = and i32 %27, 112          ; <i32> [#uses=1]
+       switch i32 %30, label %bb5.i17 [
+               i32 0, label %bb4
+               i32 16, label %bb4
+               i32 32, label %bb3.i15
+               i32 48, label %bb4.i16
+               i32 80, label %bb4
+       ]
+
+bb3.i15:               ; preds = %bb1.i14
+       %31 = load i8** %8, align 4             ; <i8*> [#uses=1]
+       %32 = ptrtoint i8* %31 to i32           ; <i32> [#uses=1]
+       br label %bb4
+
+bb4.i16:               ; preds = %bb1.i14
+       %33 = load i8** %9, align 4             ; <i8*> [#uses=1]
+       %34 = ptrtoint i8* %33 to i32           ; <i32> [#uses=1]
+       br label %bb4
+
+bb5.i17:               ; preds = %bb1.i14
+       call void @llvm.dbg.stoppoint(i32 659, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*))
+       call void @llvm.dbg.stoppoint(i32 671, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*))
+       call void @llvm.dbg.stoppoint(i32 672, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*))
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+bb4:           ; preds = %bb4.i16, %bb3.i15, %bb1.i14, %bb1.i14, %bb1.i14, %bb3, %bb2, %bb1
+       %base.0 = phi i32 [ %34, %bb4.i16 ], [ %32, %bb3.i15 ], [ %base.2, %bb1 ], [ %base.2, %bb2 ], [ 0, %bb3 ], [ 0, %bb1.i14 ], [ 0, %bb1.i14 ], [ 0, %bb1.i14 ]            ; <i32> [#uses=5]
+       %encoding.0 = phi i32 [ %27, %bb3.i15 ], [ %27, %bb4.i16 ], [ %encoding.2, %bb1 ], [ %encoding.2, %bb2 ], [ %27, %bb3 ], [ %27, %bb1.i14 ], [ %27, %bb1.i14 ], [ %27, %bb1.i14 ]                ; <i32> [#uses=6]
+       %last_cie.0 = phi %struct.dwarf_cie* [ %25, %bb3.i15 ], [ %25, %bb4.i16 ], [ %last_cie.2, %bb1 ], [ %last_cie.2, %bb2 ], [ %25, %bb3 ], [ %25, %bb1.i14 ], [ %25, %bb1.i14 ], [ %25, %bb1.i14 ]         ; <%struct.dwarf_cie*> [#uses=4]
+       %35 = icmp eq i32 %encoding.0, 0                ; <i1> [#uses=1]
+       br i1 %35, label %bb5, label %bb6
+
+bb5:           ; preds = %bb4
+       %36 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2           ; <[0 x i8]*> [#uses=1]
+       %37 = bitcast [0 x i8]* %36 to i32*             ; <i32*> [#uses=1]
+       %38 = load i32* %37, align 4            ; <i32> [#uses=1]
+       %39 = icmp eq i32 %38, 0                ; <i1> [#uses=1]
+       br i1 %39, label %bb11, label %bb10
+
+bb6:           ; preds = %bb4
+       %40 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2, i32 0            ; <i8*> [#uses=1]
+       %41 = trunc i32 %encoding.0 to i8               ; <i8> [#uses=2]
+       %42 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %41, i32 %base.0, i8* %40, i32* %pc_begin)          ; <i8*> [#uses=0]
+       %43 = call arm_apcscc  i32 @size_of_encoded_value(i8 zeroext %41)               ; <i32> [#uses=2]
+       %44 = icmp ugt i32 %43, 3               ; <i1> [#uses=1]
+       br i1 %44, label %bb9, label %bb7
+
+bb7:           ; preds = %bb6
+       %45 = shl i32 %43, 3            ; <i32> [#uses=1]
+       %46 = shl i32 1, %45            ; <i32> [#uses=1]
+       %47 = add i32 %46, -1           ; <i32> [#uses=1]
+       br label %bb9
+
+bb9:           ; preds = %bb7, %bb6
+       %mask.0 = phi i32 [ %47, %bb7 ], [ -1, %bb6 ]           ; <i32> [#uses=1]
+       %48 = load i32* %pc_begin, align 4              ; <i32> [#uses=1]
+       %49 = and i32 %48, %mask.0              ; <i32> [#uses=1]
+       %50 = icmp eq i32 %49, 0                ; <i1> [#uses=1]
+       br i1 %50, label %bb11, label %bb10
+
+bb10:          ; preds = %bb9, %bb5
+       %51 = load %struct.fde_vector** %7, align 4             ; <%struct.fde_vector*> [#uses=3]
+       %52 = icmp eq %struct.fde_vector* %51, null             ; <i1> [#uses=1]
+       br i1 %52, label %bb11, label %bb.i
+
+bb.i:          ; preds = %bb10
+       %53 = getelementptr %struct.fde_vector* %51, i32 0, i32 1               ; <i32*> [#uses=2]
+       %54 = load i32* %53, align 4            ; <i32> [#uses=2]
+       %55 = getelementptr %struct.fde_vector* %51, i32 0, i32 2, i32 %54              ; <%struct.dwarf_fde**> [#uses=1]
+       store %struct.dwarf_fde* %this_fde_addr.0, %struct.dwarf_fde** %55, align 4
+       %56 = add i32 %54, 1            ; <i32> [#uses=1]
+       store i32 %56, i32* %53, align 4
+       br label %bb11
+
+bb11:          ; preds = %bb.i, %bb10, %bb9, %bb5, %bb
+       %base.1 = phi i32 [ %base.0, %bb.i ], [ %base.2, %bb ], [ %base.0, %bb5 ], [ %base.0, %bb9 ], [ %base.0, %bb10 ]                ; <i32> [#uses=1]
+       %encoding.1 = phi i32 [ %encoding.0, %bb.i ], [ %encoding.2, %bb ], [ %encoding.0, %bb5 ], [ %encoding.0, %bb9 ], [ %encoding.0, %bb10 ]                ; <i32> [#uses=1]
+       %last_cie.1 = phi %struct.dwarf_cie* [ %last_cie.0, %bb.i ], [ %last_cie.2, %bb ], [ %last_cie.0, %bb5 ], [ %last_cie.0, %bb9 ], [ %last_cie.0, %bb10 ]         ; <%struct.dwarf_cie*> [#uses=1]
+       %57 = bitcast %struct.dwarf_fde* %this_fde_addr.0 to i8*                ; <i8*> [#uses=1]
+       %58 = load i32* %61, align 1            ; <i32> [#uses=1]
+       %.sum.i = add i32 %58, 4                ; <i32> [#uses=1]
+       %59 = getelementptr i8* %57, i32 %.sum.i                ; <i8*> [#uses=1]
+       %60 = bitcast i8* %59 to %struct.dwarf_fde*             ; <%struct.dwarf_fde*> [#uses=1]
+       br label %bb12
+
+bb12:          ; preds = %bb11, %bb12.preheader
+       %base.2 = phi i32 [ %base.1, %bb11 ], [ %base.2.ph, %bb12.preheader ]           ; <i32> [#uses=3]
+       %this_fde_addr.0 = phi %struct.dwarf_fde* [ %60, %bb11 ], [ %this_fde, %bb12.preheader ]                ; <%struct.dwarf_fde*> [#uses=6]
+       %encoding.2 = phi i32 [ %encoding.1, %bb11 ], [ %3, %bb12.preheader ]           ; <i32> [#uses=3]
+       %last_cie.2 = phi %struct.dwarf_cie* [ %last_cie.1, %bb11 ], [ null, %bb12.preheader ]          ; <%struct.dwarf_cie*> [#uses=4]
+       %61 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 0           ; <i32*> [#uses=2]
+       %62 = load i32* %61, align 1            ; <i32> [#uses=1]
+       %63 = icmp eq i32 %62, 0                ; <i1> [#uses=1]
+       br i1 %63, label %return, label %bb
+
+return:                ; preds = %bb12
+       call void @llvm.dbg.stoppoint(i32 659, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*))
+       call void @llvm.dbg.stoppoint(i32 708, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram252 to { }*))
+       ret void
+}
+
+define internal arm_apcscc i32 @fde_single_encoding_compare(%struct.object* nocapture %ob, %struct.dwarf_fde* %x, %struct.dwarf_fde* %y) nounwind {
+entry:
+       %y_ptr = alloca i32, align 4            ; <i32*> [#uses=2]
+       %x_ptr = alloca i32, align 4            ; <i32*> [#uses=2]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram254 to { }*))
+       call void @llvm.dbg.stoppoint(i32 341, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0             ; <i32*> [#uses=2]
+       %1 = load i32* %0               ; <i32> [#uses=1]
+       %2 = lshr i32 %1, 3             ; <i32> [#uses=2]
+       %3 = trunc i32 %2 to i8         ; <i8> [#uses=2]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %4 = icmp eq i8 %3, -1          ; <i1> [#uses=1]
+       br i1 %4, label %base_from_object.exit, label %bb1.i
+
+bb1.i:         ; preds = %entry
+       call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %5 = and i32 %2, 112            ; <i32> [#uses=1]
+       switch i32 %5, label %bb5.i [
+               i32 0, label %base_from_object.exit
+               i32 16, label %base_from_object.exit
+               i32 32, label %bb3.i
+               i32 48, label %bb4.i
+               i32 80, label %base_from_object.exit
+       ]
+
+bb3.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %6 = getelementptr %struct.object* %ob, i32 0, i32 1            ; <i8**> [#uses=1]
+       %7 = load i8** %6, align 4              ; <i8*> [#uses=1]
+       %8 = ptrtoint i8* %7 to i32             ; <i32> [#uses=1]
+       br label %base_from_object.exit
+
+bb4.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %9 = getelementptr %struct.object* %ob, i32 0, i32 2            ; <i8**> [#uses=1]
+       %10 = load i8** %9, align 4             ; <i8*> [#uses=1]
+       %11 = ptrtoint i8* %10 to i32           ; <i32> [#uses=1]
+       br label %base_from_object.exit
+
+bb5.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+base_from_object.exit:         ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %entry
+       %12 = phi i32 [ %11, %bb4.i ], [ %8, %bb3.i ], [ 0, %entry ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ]               ; <i32> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 342, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*))
+       %13 = getelementptr %struct.dwarf_fde* %x, i32 0, i32 2, i32 0          ; <i8*> [#uses=1]
+       %14 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %3, i32 %12, i8* %13, i32* %x_ptr)          ; <i8*> [#uses=0]
+       call void @llvm.dbg.stoppoint(i32 343, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %15 = load i32* %0              ; <i32> [#uses=1]
+       %16 = lshr i32 %15, 3           ; <i32> [#uses=1]
+       %17 = getelementptr %struct.dwarf_fde* %y, i32 0, i32 2, i32 0          ; <i8*> [#uses=1]
+       %18 = trunc i32 %16 to i8               ; <i8> [#uses=1]
+       %19 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %18, i32 %12, i8* %17, i32* %y_ptr)         ; <i8*> [#uses=0]
+       call void @llvm.dbg.stoppoint(i32 345, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %20 = load i32* %x_ptr, align 4         ; <i32> [#uses=2]
+       %21 = load i32* %y_ptr, align 4         ; <i32> [#uses=2]
+       %22 = icmp ugt i32 %20, %21             ; <i1> [#uses=1]
+       br i1 %22, label %bb4, label %bb1
+
+bb1:           ; preds = %base_from_object.exit
+       call void @llvm.dbg.stoppoint(i32 347, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %23 = icmp ult i32 %20, %21             ; <i1> [#uses=1]
+       %retval = select i1 %23, i32 -1, i32 0          ; <i32> [#uses=1]
+       ret i32 %retval
+
+bb4:           ; preds = %base_from_object.exit
+       call void @llvm.dbg.stoppoint(i32 349, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret i32 1
+}
+
+define internal arm_apcscc i32 @fde_mixed_encoding_compare(%struct.object* nocapture %ob, %struct.dwarf_fde* %x, %struct.dwarf_fde* %y) nounwind {
+entry:
+       %y_ptr = alloca i32, align 4            ; <i32*> [#uses=2]
+       %x_ptr = alloca i32, align 4            ; <i32*> [#uses=2]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram256 to { }*))
+       call void @llvm.dbg.stoppoint(i32 358, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 312, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 163, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*)) nounwind
+       %0 = getelementptr %struct.dwarf_fde* %x, i32 0, i32 1          ; <i32*> [#uses=2]
+       %1 = bitcast i32* %0 to i8*             ; <i8*> [#uses=1]
+       %2 = load i32* %0, align 1              ; <i32> [#uses=1]
+       %3 = sub i32 0, %2              ; <i32> [#uses=1]
+       %4 = getelementptr i8* %1, i32 %3               ; <i8*> [#uses=1]
+       %5 = bitcast i8* %4 to %struct.dwarf_cie*               ; <%struct.dwarf_cie*> [#uses=1]
+       %6 = call arm_apcscc  i32 @get_cie_encoding(%struct.dwarf_cie* %5) nounwind             ; <i32> [#uses=2]
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 359, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*))
+       %7 = trunc i32 %6 to i8         ; <i8> [#uses=2]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %8 = icmp eq i8 %7, -1          ; <i1> [#uses=1]
+       br i1 %8, label %base_from_object.exit, label %bb1.i
+
+bb1.i:         ; preds = %entry
+       call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %9 = and i32 %6, 112            ; <i32> [#uses=1]
+       switch i32 %9, label %bb5.i [
+               i32 0, label %base_from_object.exit
+               i32 16, label %base_from_object.exit
+               i32 32, label %bb3.i
+               i32 48, label %bb4.i
+               i32 80, label %base_from_object.exit
+       ]
+
+bb3.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %10 = getelementptr %struct.object* %ob, i32 0, i32 1           ; <i8**> [#uses=1]
+       %11 = load i8** %10, align 4            ; <i8*> [#uses=1]
+       %12 = ptrtoint i8* %11 to i32           ; <i32> [#uses=1]
+       br label %base_from_object.exit
+
+bb4.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %13 = getelementptr %struct.object* %ob, i32 0, i32 2           ; <i8**> [#uses=1]
+       %14 = load i8** %13, align 4            ; <i8*> [#uses=1]
+       %15 = ptrtoint i8* %14 to i32           ; <i32> [#uses=1]
+       br label %base_from_object.exit
+
+bb5.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+base_from_object.exit:         ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %entry
+       %16 = phi i32 [ %15, %bb4.i ], [ %12, %bb3.i ], [ 0, %entry ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ]              ; <i32> [#uses=1]
+       %17 = getelementptr %struct.dwarf_fde* %x, i32 0, i32 2, i32 0          ; <i8*> [#uses=1]
+       %18 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %7, i32 %16, i8* %17, i32* %x_ptr)          ; <i8*> [#uses=0]
+       call void @llvm.dbg.stoppoint(i32 362, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*))
+       %19 = getelementptr %struct.dwarf_fde* %y, i32 0, i32 1         ; <i32*> [#uses=2]
+       %20 = bitcast i32* %19 to i8*           ; <i8*> [#uses=1]
+       %21 = load i32* %19, align 1            ; <i32> [#uses=1]
+       %22 = sub i32 0, %21            ; <i32> [#uses=1]
+       %23 = getelementptr i8* %20, i32 %22            ; <i8*> [#uses=1]
+       %24 = bitcast i8* %23 to %struct.dwarf_cie*             ; <%struct.dwarf_cie*> [#uses=1]
+       %25 = call arm_apcscc  i32 @get_cie_encoding(%struct.dwarf_cie* %24) nounwind           ; <i32> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 363, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %26 = trunc i32 %25 to i8               ; <i8> [#uses=2]
+       %27 = icmp eq i8 %26, -1                ; <i1> [#uses=1]
+       br i1 %27, label %base_from_object.exit11, label %bb1.i6
+
+bb1.i6:                ; preds = %base_from_object.exit
+       call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %28 = and i32 %25, 112          ; <i32> [#uses=1]
+       switch i32 %28, label %bb5.i9 [
+               i32 0, label %base_from_object.exit11
+               i32 16, label %base_from_object.exit11
+               i32 32, label %bb3.i7
+               i32 48, label %bb4.i8
+               i32 80, label %base_from_object.exit11
+       ]
+
+bb3.i7:                ; preds = %bb1.i6
+       call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %29 = getelementptr %struct.object* %ob, i32 0, i32 1           ; <i8**> [#uses=1]
+       %30 = load i8** %29, align 4            ; <i8*> [#uses=1]
+       %31 = ptrtoint i8* %30 to i32           ; <i32> [#uses=1]
+       br label %base_from_object.exit11
+
+bb4.i8:                ; preds = %bb1.i6
+       call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %32 = getelementptr %struct.object* %ob, i32 0, i32 2           ; <i8**> [#uses=1]
+       %33 = load i8** %32, align 4            ; <i8*> [#uses=1]
+       %34 = ptrtoint i8* %33 to i32           ; <i32> [#uses=1]
+       br label %base_from_object.exit11
+
+bb5.i9:                ; preds = %bb1.i6
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+base_from_object.exit11:               ; preds = %bb4.i8, %bb3.i7, %bb1.i6, %bb1.i6, %bb1.i6, %base_from_object.exit
+       %35 = phi i32 [ %34, %bb4.i8 ], [ %31, %bb3.i7 ], [ 0, %base_from_object.exit ], [ 0, %bb1.i6 ], [ 0, %bb1.i6 ], [ 0, %bb1.i6 ]         ; <i32> [#uses=1]
+       %36 = getelementptr %struct.dwarf_fde* %y, i32 0, i32 2, i32 0          ; <i8*> [#uses=1]
+       %37 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %26, i32 %35, i8* %36, i32* %y_ptr)         ; <i8*> [#uses=0]
+       call void @llvm.dbg.stoppoint(i32 366, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %38 = load i32* %x_ptr, align 4         ; <i32> [#uses=2]
+       %39 = load i32* %y_ptr, align 4         ; <i32> [#uses=2]
+       %40 = icmp ugt i32 %38, %39             ; <i1> [#uses=1]
+       br i1 %40, label %bb4, label %bb1
+
+bb1:           ; preds = %base_from_object.exit11
+       call void @llvm.dbg.stoppoint(i32 368, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %41 = icmp ult i32 %38, %39             ; <i1> [#uses=1]
+       %retval = select i1 %41, i32 -1, i32 0          ; <i32> [#uses=1]
+       ret i32 %retval
+
+bb4:           ; preds = %base_from_object.exit11
+       call void @llvm.dbg.stoppoint(i32 370, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret i32 1
+}
+
+define internal arm_apcscc %struct.dwarf_fde* @linear_search_fdes(%struct.object* nocapture %ob, %struct.dwarf_fde* %this_fde, i8* %pc) nounwind {
+entry:
+       %pc_range = alloca i32, align 4         ; <i32*> [#uses=3]
+       %pc_begin = alloca i32, align 4         ; <i32*> [#uses=3]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram264 to { }*))
+       call void @llvm.dbg.stoppoint(i32 773, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0             ; <i32*> [#uses=2]
+       %1 = load i32* %0               ; <i32> [#uses=1]
+       %2 = lshr i32 %1, 3             ; <i32> [#uses=3]
+       %3 = and i32 %2, 255            ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 774, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = trunc i32 %2 to i8         ; <i8> [#uses=1]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %5 = icmp eq i8 %4, -1          ; <i1> [#uses=1]
+       br i1 %5, label %bb13.preheader, label %bb1.i
+
+bb1.i:         ; preds = %entry
+       call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %6 = and i32 %2, 112            ; <i32> [#uses=1]
+       switch i32 %6, label %bb5.i [
+               i32 0, label %bb13.preheader
+               i32 16, label %bb13.preheader
+               i32 32, label %bb3.i
+               i32 48, label %bb4.i
+               i32 80, label %bb13.preheader
+       ]
+
+bb13.preheader:                ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %entry
+       %base.2.ph = phi i32 [ %15, %bb4.i ], [ %12, %bb3.i ], [ 0, %entry ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ]               ; <i32> [#uses=1]
+       %7 = ptrtoint i8* %pc to i32            ; <i32> [#uses=1]
+       %8 = getelementptr %struct.object* %ob, i32 0, i32 1            ; <i8**> [#uses=1]
+       %9 = getelementptr %struct.object* %ob, i32 0, i32 2            ; <i8**> [#uses=1]
+       br label %bb13
+
+bb3.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %10 = getelementptr %struct.object* %ob, i32 0, i32 1           ; <i8**> [#uses=1]
+       %11 = load i8** %10, align 4            ; <i8*> [#uses=1]
+       %12 = ptrtoint i8* %11 to i32           ; <i32> [#uses=1]
+       br label %bb13.preheader
+
+bb4.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %13 = getelementptr %struct.object* %ob, i32 0, i32 2           ; <i8**> [#uses=1]
+       %14 = load i8** %13, align 4            ; <i8*> [#uses=1]
+       %15 = ptrtoint i8* %14 to i32           ; <i32> [#uses=1]
+       br label %bb13.preheader
+
+bb5.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+bb:            ; preds = %bb13
+       %16 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 1           ; <i32*> [#uses=2]
+       %17 = load i32* %16, align 1            ; <i32> [#uses=2]
+       %18 = icmp eq i32 %17, 0                ; <i1> [#uses=1]
+       br i1 %18, label %bb12, label %bb1
+
+bb1:           ; preds = %bb
+       %19 = load i32* %0              ; <i32> [#uses=1]
+       %20 = and i32 %19, 4            ; <i32> [#uses=1]
+       %21 = icmp eq i32 %20, 0                ; <i1> [#uses=1]
+       br i1 %21, label %bb4, label %bb2
+
+bb2:           ; preds = %bb1
+       %22 = bitcast i32* %16 to i8*           ; <i8*> [#uses=1]
+       %23 = sub i32 0, %17            ; <i32> [#uses=1]
+       %24 = getelementptr i8* %22, i32 %23            ; <i8*> [#uses=1]
+       %25 = bitcast i8* %24 to %struct.dwarf_cie*             ; <%struct.dwarf_cie*> [#uses=8]
+       %26 = icmp eq %struct.dwarf_cie* %25, %last_cie.2               ; <i1> [#uses=1]
+       br i1 %26, label %bb4, label %bb3
+
+bb3:           ; preds = %bb2
+       %27 = call arm_apcscc  i32 @get_cie_encoding(%struct.dwarf_cie* %25)            ; <i32> [#uses=8]
+       %28 = trunc i32 %27 to i8               ; <i8> [#uses=1]
+       %29 = icmp eq i8 %28, -1                ; <i1> [#uses=1]
+       br i1 %29, label %bb4, label %bb1.i17
+
+bb1.i17:               ; preds = %bb3
+       %30 = and i32 %27, 112          ; <i32> [#uses=1]
+       switch i32 %30, label %bb5.i20 [
+               i32 0, label %bb4
+               i32 16, label %bb4
+               i32 32, label %bb3.i18
+               i32 48, label %bb4.i19
+               i32 80, label %bb4
+       ]
+
+bb3.i18:               ; preds = %bb1.i17
+       %31 = load i8** %8, align 4             ; <i8*> [#uses=1]
+       %32 = ptrtoint i8* %31 to i32           ; <i32> [#uses=1]
+       br label %bb4
+
+bb4.i19:               ; preds = %bb1.i17
+       %33 = load i8** %9, align 4             ; <i8*> [#uses=1]
+       %34 = ptrtoint i8* %33 to i32           ; <i32> [#uses=1]
+       br label %bb4
+
+bb5.i20:               ; preds = %bb1.i17
+       call void @llvm.dbg.stoppoint(i32 776, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*))
+       call void @llvm.dbg.stoppoint(i32 789, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*))
+       call void @llvm.dbg.stoppoint(i32 790, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*))
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+bb4:           ; preds = %bb4.i19, %bb3.i18, %bb1.i17, %bb1.i17, %bb1.i17, %bb3, %bb2, %bb1
+       %base.0 = phi i32 [ %34, %bb4.i19 ], [ %32, %bb3.i18 ], [ %base.2, %bb1 ], [ %base.2, %bb2 ], [ 0, %bb3 ], [ 0, %bb1.i17 ], [ 0, %bb1.i17 ], [ 0, %bb1.i17 ]            ; <i32> [#uses=4]
+       %encoding.0 = phi i32 [ %27, %bb3.i18 ], [ %27, %bb4.i19 ], [ %encoding.2, %bb1 ], [ %encoding.2, %bb2 ], [ %27, %bb3 ], [ %27, %bb1.i17 ], [ %27, %bb1.i17 ], [ %27, %bb1.i17 ]                ; <i32> [#uses=5]
+       %last_cie.0 = phi %struct.dwarf_cie* [ %25, %bb3.i18 ], [ %25, %bb4.i19 ], [ %last_cie.2, %bb1 ], [ %last_cie.2, %bb2 ], [ %25, %bb3 ], [ %25, %bb1.i17 ], [ %25, %bb1.i17 ], [ %25, %bb1.i17 ]         ; <%struct.dwarf_cie*> [#uses=3]
+       %35 = icmp eq i32 %encoding.0, 0                ; <i1> [#uses=1]
+       br i1 %35, label %bb5, label %bb6
+
+bb5:           ; preds = %bb4
+       %36 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2           ; <[0 x i8]*> [#uses=1]
+       %37 = bitcast [0 x i8]* %36 to i32*             ; <i32*> [#uses=2]
+       %38 = load i32* %37, align 4            ; <i32> [#uses=3]
+       store i32 %38, i32* %pc_begin, align 4
+       %39 = getelementptr i32* %37, i32 1             ; <i32*> [#uses=1]
+       %40 = load i32* %39, align 4            ; <i32> [#uses=1]
+       store i32 %40, i32* %pc_range, align 4
+       %41 = icmp eq i32 %38, 0                ; <i1> [#uses=1]
+       br i1 %41, label %bb12, label %bb10
+
+bb6:           ; preds = %bb4
+       %42 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2, i32 0            ; <i8*> [#uses=1]
+       %43 = trunc i32 %encoding.0 to i8               ; <i8> [#uses=3]
+       %44 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %43, i32 %base.0, i8* %42, i32* %pc_begin)          ; <i8*> [#uses=1]
+       %45 = and i8 %43, 15            ; <i8> [#uses=1]
+       %46 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %45, i32 0, i8* %44, i32* %pc_range)                ; <i8*> [#uses=0]
+       %47 = call arm_apcscc  i32 @size_of_encoded_value(i8 zeroext %43)               ; <i32> [#uses=2]
+       %48 = icmp ugt i32 %47, 3               ; <i1> [#uses=1]
+       br i1 %48, label %bb9, label %bb7
+
+bb7:           ; preds = %bb6
+       %49 = shl i32 %47, 3            ; <i32> [#uses=1]
+       %50 = shl i32 1, %49            ; <i32> [#uses=1]
+       %51 = add i32 %50, -1           ; <i32> [#uses=1]
+       br label %bb9
+
+bb9:           ; preds = %bb7, %bb6
+       %mask.0 = phi i32 [ %51, %bb7 ], [ -1, %bb6 ]           ; <i32> [#uses=1]
+       %52 = load i32* %pc_begin, align 4              ; <i32> [#uses=2]
+       %53 = and i32 %52, %mask.0              ; <i32> [#uses=1]
+       %54 = icmp eq i32 %53, 0                ; <i1> [#uses=1]
+       br i1 %54, label %bb12, label %bb10
+
+bb10:          ; preds = %bb9, %bb5
+       %55 = phi i32 [ %38, %bb5 ], [ %52, %bb9 ]              ; <i32> [#uses=1]
+       %56 = sub i32 %7, %55           ; <i32> [#uses=1]
+       %57 = load i32* %pc_range, align 4              ; <i32> [#uses=1]
+       %58 = icmp ult i32 %56, %57             ; <i1> [#uses=1]
+       br i1 %58, label %bb15, label %bb12
+
+bb12:          ; preds = %bb10, %bb9, %bb5, %bb
+       %base.1 = phi i32 [ %base.2, %bb ], [ %base.0, %bb5 ], [ %base.0, %bb9 ], [ %base.0, %bb10 ]            ; <i32> [#uses=1]
+       %encoding.1 = phi i32 [ %encoding.2, %bb ], [ %encoding.0, %bb5 ], [ %encoding.0, %bb9 ], [ %encoding.0, %bb10 ]                ; <i32> [#uses=1]
+       %last_cie.1 = phi %struct.dwarf_cie* [ %last_cie.2, %bb ], [ %last_cie.0, %bb5 ], [ %last_cie.0, %bb9 ], [ %last_cie.0, %bb10 ]         ; <%struct.dwarf_cie*> [#uses=1]
+       %59 = bitcast %struct.dwarf_fde* %this_fde_addr.0 to i8*                ; <i8*> [#uses=1]
+       %60 = load i32* %63, align 1            ; <i32> [#uses=1]
+       %.sum.i = add i32 %60, 4                ; <i32> [#uses=1]
+       %61 = getelementptr i8* %59, i32 %.sum.i                ; <i8*> [#uses=1]
+       %62 = bitcast i8* %61 to %struct.dwarf_fde*             ; <%struct.dwarf_fde*> [#uses=1]
+       br label %bb13
+
+bb13:          ; preds = %bb12, %bb13.preheader
+       %base.2 = phi i32 [ %base.1, %bb12 ], [ %base.2.ph, %bb13.preheader ]           ; <i32> [#uses=3]
+       %encoding.2 = phi i32 [ %encoding.1, %bb12 ], [ %3, %bb13.preheader ]           ; <i32> [#uses=3]
+       %last_cie.2 = phi %struct.dwarf_cie* [ %last_cie.1, %bb12 ], [ null, %bb13.preheader ]          ; <%struct.dwarf_cie*> [#uses=4]
+       %this_fde_addr.0 = phi %struct.dwarf_fde* [ %62, %bb12 ], [ %this_fde, %bb13.preheader ]                ; <%struct.dwarf_fde*> [#uses=6]
+       %63 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 0           ; <i32*> [#uses=2]
+       %64 = load i32* %63, align 1            ; <i32> [#uses=1]
+       %65 = icmp eq i32 %64, 0                ; <i1> [#uses=1]
+       br i1 %65, label %bb15, label %bb
+
+bb15:          ; preds = %bb13, %bb10
+       %.0 = phi %struct.dwarf_fde* [ %this_fde_addr.0, %bb10 ], [ null, %bb13 ]               ; <%struct.dwarf_fde*> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 776, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*))
+       call void @llvm.dbg.stoppoint(i32 832, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram264 to { }*))
+       ret %struct.dwarf_fde* %.0
+}
+
+define arm_apcscc void @__register_frame_table(i8* %begin) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram272 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 157, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = malloc %struct.object              ; <%struct.object*> [#uses=7]
+       tail call void @llvm.dbg.stoppoint(i32 158, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram184 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 151, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 131, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %1 = getelementptr %struct.object* %0, i32 0, i32 0             ; <i8**> [#uses=1]
+       store i8* inttoptr (i64 4294967295 to i8*), i8** %1, align 4
+       tail call void @llvm.dbg.stoppoint(i32 132, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %2 = getelementptr %struct.object* %0, i32 0, i32 1             ; <i8**> [#uses=1]
+       store i8* null, i8** %2, align 4
+       tail call void @llvm.dbg.stoppoint(i32 133, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %3 = getelementptr %struct.object* %0, i32 0, i32 2             ; <i8**> [#uses=1]
+       store i8* null, i8** %3, align 4
+       tail call void @llvm.dbg.stoppoint(i32 134, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = getelementptr %struct.object* %0, i32 0, i32 3, i32 0              ; <%struct.dwarf_fde**> [#uses=1]
+       %.c.i.i = bitcast i8* %begin to %struct.dwarf_fde*              ; <%struct.dwarf_fde*> [#uses=1]
+       store %struct.dwarf_fde* %.c.i.i, %struct.dwarf_fde** %4
+       tail call void @llvm.dbg.stoppoint(i32 137, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %5 = getelementptr %struct.object* %0, i32 0, i32 4, i32 0              ; <i32*> [#uses=1]
+       store i32 2042, i32* %5
+       tail call void @llvm.dbg.stoppoint(i32 140, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 142, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       %6 = load %struct.object** @unseen_objects, align 4             ; <%struct.object*> [#uses=1]
+       %7 = getelementptr %struct.object* %0, i32 0, i32 5             ; <%struct.object**> [#uses=1]
+       store %struct.object* %6, %struct.object** %7, align 4
+       tail call void @llvm.dbg.stoppoint(i32 143, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       store %struct.object* %0, %struct.object** @unseen_objects, align 4
+       tail call void @llvm.dbg.stoppoint(i32 145, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 146, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 152, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 159, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram184 to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram272 to { }*))
+       ret void
+}
+
+define arm_apcscc void @__register_frame(i8* %begin) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram274 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 116, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = bitcast i8* %begin to i32*         ; <i32*> [#uses=1]
+       %1 = load i32* %0, align 4              ; <i32> [#uses=1]
+       %2 = icmp eq i32 %1, 0          ; <i1> [#uses=1]
+       br i1 %2, label %return, label %bb
+
+bb:            ; preds = %entry
+       tail call void @llvm.dbg.stoppoint(i32 119, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %3 = malloc %struct.object              ; <%struct.object*> [#uses=7]
+       tail call void @llvm.dbg.stoppoint(i32 120, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram176 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 107, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 82, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = icmp eq i8* %begin, null           ; <i1> [#uses=1]
+       br i1 %4, label %__register_frame_info.exit, label %bb.i.i
+
+bb.i.i:                ; preds = %bb
+       tail call void @llvm.dbg.stoppoint(i32 85, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %5 = getelementptr %struct.object* %3, i32 0, i32 0             ; <i8**> [#uses=1]
+       store i8* inttoptr (i64 4294967295 to i8*), i8** %5, align 4
+       tail call void @llvm.dbg.stoppoint(i32 86, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %6 = getelementptr %struct.object* %3, i32 0, i32 1             ; <i8**> [#uses=1]
+       store i8* null, i8** %6, align 4
+       tail call void @llvm.dbg.stoppoint(i32 87, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %7 = getelementptr %struct.object* %3, i32 0, i32 2             ; <i8**> [#uses=1]
+       store i8* null, i8** %7, align 4
+       tail call void @llvm.dbg.stoppoint(i32 88, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %8 = bitcast i8* %begin to %struct.dwarf_fde*           ; <%struct.dwarf_fde*> [#uses=1]
+       %9 = getelementptr %struct.object* %3, i32 0, i32 3, i32 0              ; <%struct.dwarf_fde**> [#uses=1]
+       store %struct.dwarf_fde* %8, %struct.dwarf_fde** %9, align 4
+       tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %10 = getelementptr %struct.object* %3, i32 0, i32 4, i32 0             ; <i32*> [#uses=1]
+       store i32 2040, i32* %10
+       tail call void @llvm.dbg.stoppoint(i32 96, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 98, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       %11 = load %struct.object** @unseen_objects, align 4            ; <%struct.object*> [#uses=1]
+       %12 = getelementptr %struct.object* %3, i32 0, i32 5            ; <%struct.object**> [#uses=1]
+       store %struct.object* %11, %struct.object** %12, align 4
+       tail call void @llvm.dbg.stoppoint(i32 99, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       store %struct.object* %3, %struct.object** @unseen_objects, align 4
+       tail call void @llvm.dbg.stoppoint(i32 101, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram274 to { }*))
+       ret void
+
+__register_frame_info.exit:            ; preds = %bb
+       ret void
+
+return:                ; preds = %entry
+       tail call void @llvm.dbg.stoppoint(i32 120, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret void
+}
+
+define internal arm_apcscc %struct.dwarf_fde* @search_object(%struct.object* %ob, i8* %pc) {
+entry:
+       %pc_range.i33 = alloca i32, align 4             ; <i32*> [#uses=2]
+       %pc_begin.i34 = alloca i32, align 4             ; <i32*> [#uses=2]
+       %pc_range.i = alloca i32, align 4               ; <i32*> [#uses=2]
+       %pc_begin.i = alloca i32, align 4               ; <i32*> [#uses=2]
+       %accu.i = alloca %struct.fde_accumulator, align 4               ; <%struct.fde_accumulator*> [#uses=4]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram284 to { }*))
+       call void @llvm.dbg.stoppoint(i32 931, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0             ; <i32*> [#uses=7]
+       %1 = load i32* %0               ; <i32> [#uses=6]
+       %2 = and i32 %1, 1              ; <i32> [#uses=1]
+       %3 = icmp eq i32 %2, 0          ; <i1> [#uses=1]
+       br i1 %3, label %bb, label %bb2
+
+bb:            ; preds = %entry
+       call void @llvm.dbg.stoppoint(i32 933, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram282 to { }*))
+       call void @llvm.dbg.stoppoint(i32 721, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = lshr i32 %1, 11            ; <i32> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 722, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %5 = icmp eq i32 %4, 0          ; <i1> [#uses=1]
+       br i1 %5, label %bb.i, label %bb8.i
+
+bb.i:          ; preds = %bb
+       call void @llvm.dbg.stoppoint(i32 724, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %6 = and i32 %1, 2              ; <i32> [#uses=1]
+       %7 = icmp eq i32 %6, 0          ; <i1> [#uses=1]
+       %8 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0             ; <%struct.dwarf_fde**> [#uses=2]
+       br i1 %7, label %bb5.i, label %bb2.i
+
+bb2.i:         ; preds = %bb.i
+       call void @llvm.dbg.stoppoint(i32 726, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %9 = load %struct.dwarf_fde** %8                ; <%struct.dwarf_fde*> [#uses=3]
+       %10 = bitcast %struct.dwarf_fde* %9 to i8*              ; <i8*> [#uses=1]
+       %11 = bitcast %struct.dwarf_fde* %9 to %struct.dwarf_fde**              ; <%struct.dwarf_fde**> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 727, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %12 = load %struct.dwarf_fde** %11, align 4             ; <%struct.dwarf_fde*> [#uses=1]
+       %13 = icmp eq %struct.dwarf_fde* %12, null              ; <i1> [#uses=1]
+       br i1 %13, label %bb6.i, label %bb3.i
+
+bb3.i:         ; preds = %bb3.i, %bb2.i
+       %indvar.i = phi i32 [ 0, %bb2.i ], [ %indvar.next.i, %bb3.i ]           ; <i32> [#uses=3]
+       %count.221.i = phi i32 [ 0, %bb2.i ], [ %16, %bb3.i ]           ; <i32> [#uses=1]
+       %scevgep = getelementptr %struct.dwarf_fde* %9, i32 0, i32 1            ; <i32*> [#uses=1]
+       %scevgep60 = getelementptr i32* %scevgep, i32 %indvar.i         ; <i32*> [#uses=1]
+       %scevgep2728.i = bitcast i32* %scevgep60 to %struct.dwarf_fde**         ; <%struct.dwarf_fde**> [#uses=1]
+       %tmp = shl i32 %indvar.i, 2             ; <i32> [#uses=1]
+       %scevgep62 = getelementptr i8* %10, i32 %tmp            ; <i8*> [#uses=1]
+       %p1.020.i = bitcast i8* %scevgep62 to %struct.dwarf_fde**               ; <%struct.dwarf_fde**> [#uses=1]
+       %14 = load %struct.dwarf_fde** %p1.020.i, align 4               ; <%struct.dwarf_fde*> [#uses=1]
+       %15 = call arm_apcscc  i32 @classify_object_over_fdes(%struct.object* %ob, %struct.dwarf_fde* %14)              ; <i32> [#uses=1]
+       %16 = add i32 %15, %count.221.i         ; <i32> [#uses=2]
+       %17 = load %struct.dwarf_fde** %scevgep2728.i, align 4          ; <%struct.dwarf_fde*> [#uses=1]
+       %18 = icmp eq %struct.dwarf_fde* %17, null              ; <i1> [#uses=1]
+       %indvar.next.i = add i32 %indvar.i, 1           ; <i32> [#uses=1]
+       br i1 %18, label %bb6.i, label %bb3.i
+
+bb5.i:         ; preds = %bb.i
+       call void @llvm.dbg.stoppoint(i32 731, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %19 = load %struct.dwarf_fde** %8, align 4              ; <%struct.dwarf_fde*> [#uses=1]
+       %20 = call arm_apcscc  i32 @classify_object_over_fdes(%struct.object* %ob, %struct.dwarf_fde* %19)              ; <i32> [#uses=1]
+       br label %bb6.i
+
+bb6.i:         ; preds = %bb5.i, %bb3.i, %bb2.i
+       %count.0.i = phi i32 [ %20, %bb5.i ], [ 0, %bb2.i ], [ %16, %bb3.i ]            ; <i32> [#uses=5]
+       call void @llvm.dbg.stoppoint(i32 738, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %21 = load i32* %0              ; <i32> [#uses=1]
+       %22 = shl i32 %count.0.i, 11            ; <i32> [#uses=1]
+       %23 = and i32 %21, 2047         ; <i32> [#uses=4]
+       %24 = or i32 %23, %22           ; <i32> [#uses=3]
+       store i32 %24, i32* %0
+       call void @llvm.dbg.stoppoint(i32 739, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %25 = and i32 %count.0.i, 2097151               ; <i32> [#uses=1]
+       %26 = icmp eq i32 %25, %count.0.i               ; <i1> [#uses=1]
+       br i1 %26, label %bb8.i, label %bb7.i
+
+bb7.i:         ; preds = %bb6.i
+       call void @llvm.dbg.stoppoint(i32 740, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       store i32 %23, i32* %0
+       br label %bb8.i
+
+bb8.i:         ; preds = %bb7.i, %bb6.i, %bb
+       %.rle121 = phi i32 [ %23, %bb7.i ], [ %1, %bb ], [ %24, %bb6.i ]                ; <i32> [#uses=2]
+       %27 = phi i32 [ %23, %bb7.i ], [ %1, %bb ], [ %24, %bb6.i ]             ; <i32> [#uses=1]
+       %count.1.i = phi i32 [ %count.0.i, %bb7.i ], [ %4, %bb ], [ %count.0.i, %bb6.i ]                ; <i32> [#uses=4]
+       call void @llvm.dbg.stoppoint(i32 743, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram268 to { }*))
+       call void @llvm.dbg.stoppoint(i32 397, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %28 = icmp eq i32 %count.1.i, 0         ; <i1> [#uses=1]
+       br i1 %28, label %init_object.exit, label %bb1.i.i
+
+bb1.i.i:               ; preds = %bb8.i
+       call void @llvm.dbg.stoppoint(i32 400, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %29 = shl i32 %count.1.i, 2             ; <i32> [#uses=1]
+       %30 = add i32 %29, 8            ; <i32> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 401, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %31 = malloc i8, i32 %30                ; <i8*> [#uses=3]
+       %32 = bitcast i8* %31 to %struct.fde_vector*            ; <%struct.fde_vector*> [#uses=1]
+       %33 = getelementptr %struct.fde_accumulator* %accu.i, i32 0, i32 0              ; <%struct.fde_vector**> [#uses=6]
+       store %struct.fde_vector* %32, %struct.fde_vector** %33, align 4
+       %34 = icmp eq i8* %31, null             ; <i1> [#uses=1]
+       br i1 %34, label %init_object.exit, label %bb2.i.i
+
+bb2.i.i:               ; preds = %bb1.i.i
+       call void @llvm.dbg.stoppoint(i32 403, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %35 = getelementptr i8* %31, i32 4              ; <i8*> [#uses=1]
+       %36 = bitcast i8* %35 to i32*           ; <i32*> [#uses=1]
+       store i32 0, i32* %36, align 4
+       call void @llvm.dbg.stoppoint(i32 404, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %37 = malloc i8, i32 %30                ; <i8*> [#uses=3]
+       %38 = bitcast i8* %37 to %struct.fde_vector*            ; <%struct.fde_vector*> [#uses=1]
+       %39 = getelementptr %struct.fde_accumulator* %accu.i, i32 0, i32 1              ; <%struct.fde_vector**> [#uses=5]
+       store %struct.fde_vector* %38, %struct.fde_vector** %39, align 4
+       %40 = icmp eq i8* %37, null             ; <i1> [#uses=1]
+       br i1 %40, label %bb9.i, label %start_fde_sort.exit.thread.i
+
+start_fde_sort.exit.thread.i:          ; preds = %bb2.i.i
+       call void @llvm.dbg.stoppoint(i32 405, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %41 = getelementptr i8* %37, i32 4              ; <i8*> [#uses=1]
+       %42 = bitcast i8* %41 to i32*           ; <i32*> [#uses=1]
+       store i32 0, i32* %42, align 4
+       br label %bb9.i
+
+bb9.i:         ; preds = %start_fde_sort.exit.thread.i, %bb2.i.i
+       call void @llvm.dbg.stoppoint(i32 746, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %43 = and i32 %27, 2            ; <i32> [#uses=1]
+       %44 = icmp eq i32 %43, 0                ; <i1> [#uses=1]
+       %45 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0            ; <%struct.dwarf_fde**> [#uses=4]
+       br i1 %44, label %bb13.i, label %bb10.i
+
+bb10.i:                ; preds = %bb9.i
+       call void @llvm.dbg.stoppoint(i32 749, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %46 = load %struct.dwarf_fde** %45              ; <%struct.dwarf_fde*> [#uses=3]
+       %47 = bitcast %struct.dwarf_fde* %46 to i8*             ; <i8*> [#uses=1]
+       %48 = bitcast %struct.dwarf_fde* %46 to %struct.dwarf_fde**             ; <%struct.dwarf_fde**> [#uses=1]
+       %49 = load %struct.dwarf_fde** %48, align 4             ; <%struct.dwarf_fde*> [#uses=1]
+       %50 = icmp eq %struct.dwarf_fde* %49, null              ; <i1> [#uses=1]
+       br i1 %50, label %bb14.i, label %bb11.i
+
+bb11.i:                ; preds = %bb11.i, %bb10.i
+       %indvar29.i = phi i32 [ 0, %bb10.i ], [ %indvar.next30.i, %bb11.i ]             ; <i32> [#uses=3]
+       %scevgep64 = getelementptr %struct.dwarf_fde* %46, i32 0, i32 1         ; <i32*> [#uses=1]
+       %scevgep65 = getelementptr i32* %scevgep64, i32 %indvar29.i             ; <i32*> [#uses=1]
+       %scevgep3536.i = bitcast i32* %scevgep65 to %struct.dwarf_fde**         ; <%struct.dwarf_fde**> [#uses=1]
+       %tmp67 = shl i32 %indvar29.i, 2         ; <i32> [#uses=1]
+       %scevgep68 = getelementptr i8* %47, i32 %tmp67          ; <i8*> [#uses=1]
+       %p.023.i = bitcast i8* %scevgep68 to %struct.dwarf_fde**                ; <%struct.dwarf_fde**> [#uses=1]
+       %51 = load %struct.dwarf_fde** %p.023.i, align 4                ; <%struct.dwarf_fde*> [#uses=1]
+       call arm_apcscc  void @add_fdes(%struct.object* %ob, %struct.fde_accumulator* %accu.i, %struct.dwarf_fde* %51)
+       %52 = load %struct.dwarf_fde** %scevgep3536.i, align 4          ; <%struct.dwarf_fde*> [#uses=1]
+       %53 = icmp eq %struct.dwarf_fde* %52, null              ; <i1> [#uses=1]
+       %indvar.next30.i = add i32 %indvar29.i, 1               ; <i32> [#uses=1]
+       br i1 %53, label %bb14.i, label %bb11.i
+
+bb13.i:                ; preds = %bb9.i
+       call void @llvm.dbg.stoppoint(i32 753, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %54 = load %struct.dwarf_fde** %45, align 4             ; <%struct.dwarf_fde*> [#uses=1]
+       call arm_apcscc  void @add_fdes(%struct.object* %ob, %struct.fde_accumulator* %accu.i, %struct.dwarf_fde* %54)
+       br label %bb14.i
+
+bb14.i:                ; preds = %bb13.i, %bb11.i, %bb10.i
+       call void @llvm.dbg.stoppoint(i32 755, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram278 to { }*))
+       call void @llvm.dbg.stoppoint(i32 567, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %55 = load %struct.fde_vector** %33, align 4            ; <%struct.fde_vector*> [#uses=8]
+       %56 = icmp eq %struct.fde_vector* %55, null             ; <i1> [#uses=1]
+       br i1 %56, label %bb2.i17.i, label %bb.i.i
+
+bb.i.i:                ; preds = %bb14.i
+       %57 = getelementptr %struct.fde_vector* %55, i32 0, i32 1               ; <i32*> [#uses=1]
+       %58 = load i32* %57, align 4            ; <i32> [#uses=1]
+       %59 = icmp eq i32 %58, %count.1.i               ; <i1> [#uses=1]
+       br i1 %59, label %bb2.i17.i, label %bb1.i16.i
+
+bb1.i16.i:             ; preds = %bb.i.i
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+bb2.i17.i:             ; preds = %bb.i.i, %bb14.i
+       call void @llvm.dbg.stoppoint(i32 569, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %60 = load i32* %0              ; <i32> [#uses=2]
+       %61 = and i32 %60, 4            ; <i32> [#uses=1]
+       %62 = icmp eq i32 %61, 0                ; <i1> [#uses=1]
+       br i1 %62, label %bb4.i.i, label %bb7.i.i
+
+bb4.i.i:               ; preds = %bb2.i17.i
+       call void @llvm.dbg.stoppoint(i32 571, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %63 = and i32 %60, 2040         ; <i32> [#uses=1]
+       %64 = icmp eq i32 %63, 0                ; <i1> [#uses=1]
+       br i1 %64, label %bb7.i.i, label %bb6.i18.i
+
+bb6.i18.i:             ; preds = %bb4.i.i
+       call void @llvm.dbg.stoppoint(i32 574, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       br label %bb7.i.i
+
+bb7.i.i:               ; preds = %bb6.i18.i, %bb4.i.i, %bb2.i17.i
+       %fde_compare.0.i.i = phi i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* [ @fde_single_encoding_compare, %bb6.i18.i ], [ @fde_mixed_encoding_compare, %bb2.i17.i ], [ @fde_unencoded_compare, %bb4.i.i ]         ; <i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)*> [#uses=4]
+       call void @llvm.dbg.stoppoint(i32 576, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %65 = load %struct.fde_vector** %39, align 4            ; <%struct.fde_vector*> [#uses=5]
+       %66 = icmp eq %struct.fde_vector* %65, null             ; <i1> [#uses=1]
+       br i1 %66, label %bb11.i.i, label %bb8.i.i
+
+bb8.i.i:               ; preds = %bb7.i.i
+       call void @llvm.dbg.stoppoint(i32 578, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram208 to { }*))
+       call void @llvm.dbg.stoppoint(i32 436, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %67 = getelementptr %struct.fde_vector* %55, i32 0, i32 1               ; <i32*> [#uses=2]
+       %68 = load i32* %67, align 4            ; <i32> [#uses=3]
+       call void @llvm.dbg.stoppoint(i32 445, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %69 = icmp eq i32 %68, 0                ; <i1> [#uses=2]
+       br i1 %69, label %fde_split.exit.i.i, label %bb.nph20.i.i.i
+
+bb1.i.i.i:             ; preds = %bb3.i.i.i
+       %70 = ptrtoint %struct.dwarf_fde** %probe.0.i.i.i to i32                ; <i32> [#uses=1]
+       %71 = sub i32 %70, %84          ; <i32> [#uses=1]
+       %72 = ashr i32 %71, 2           ; <i32> [#uses=1]
+       %73 = getelementptr %struct.fde_vector* %65, i32 0, i32 2, i32 %72              ; <%struct.dwarf_fde**> [#uses=2]
+       %74 = load %struct.dwarf_fde** %73, align 4             ; <%struct.dwarf_fde*> [#uses=1]
+       %75 = bitcast %struct.dwarf_fde* %74 to %struct.dwarf_fde**             ; <%struct.dwarf_fde**> [#uses=2]
+       store %struct.dwarf_fde* null, %struct.dwarf_fde** %73, align 4
+       br label %bb2.i.i.i
+
+bb2.i.i.i:             ; preds = %bb2.preheader.i.i.i, %bb1.i.i.i
+       %probe.0.i.i.i = phi %struct.dwarf_fde** [ %75, %bb1.i.i.i ], [ %chain_end.119.i.i.i, %bb2.preheader.i.i.i ]            ; <%struct.dwarf_fde**> [#uses=3]
+       %chain_end.0.i.i.i = phi %struct.dwarf_fde** [ %75, %bb1.i.i.i ], [ %chain_end.119.i.i.i, %bb2.preheader.i.i.i ]                ; <%struct.dwarf_fde**> [#uses=1]
+       %76 = icmp eq %struct.dwarf_fde** %probe.0.i.i.i, @marker.2702          ; <i1> [#uses=1]
+       br i1 %76, label %bb4.i.i.i, label %bb3.i.i.i
+
+bb3.i.i.i:             ; preds = %bb2.i.i.i
+       %scevgep333437.i.i.i = load i8** %scevgep33.i.i.i               ; <i8*> [#uses=1]
+       %77 = bitcast i8* %scevgep333437.i.i.i to %struct.dwarf_fde*            ; <%struct.dwarf_fde*> [#uses=1]
+       %78 = load %struct.dwarf_fde** %probe.0.i.i.i, align 4          ; <%struct.dwarf_fde*> [#uses=1]
+       %79 = call arm_apcscc  i32 %fde_compare.0.i.i(%struct.object* %ob, %struct.dwarf_fde* %77, %struct.dwarf_fde* %78)              ; <i32> [#uses=1]
+       %80 = icmp slt i32 %79, 0               ; <i1> [#uses=1]
+       br i1 %80, label %bb1.i.i.i, label %bb4.i.i.i
+
+bb4.i.i.i:             ; preds = %bb3.i.i.i, %bb2.i.i.i
+       %.c.i.i.i = bitcast %struct.dwarf_fde** %chain_end.0.i.i.i to i8*               ; <i8*> [#uses=1]
+       store i8* %.c.i.i.i, i8** %scevgep30.i.i.i
+       %81 = getelementptr %struct.fde_vector* %55, i32 0, i32 2, i32 %i.018.i.i.i             ; <%struct.dwarf_fde**> [#uses=1]
+       %82 = add i32 %i.018.i.i.i, 1           ; <i32> [#uses=2]
+       %exitcond77 = icmp eq i32 %82, %umax76          ; <i1> [#uses=1]
+       br i1 %exitcond77, label %bb11.loopexit.i.i.i, label %bb2.preheader.i.i.i
+
+bb.nph20.i.i.i:                ; preds = %bb8.i.i
+       %83 = getelementptr %struct.fde_vector* %55, i32 0, i32 2               ; <[0 x %struct.dwarf_fde*]*> [#uses=1]
+       %84 = ptrtoint [0 x %struct.dwarf_fde*]* %83 to i32             ; <i32> [#uses=1]
+       %tmp75 = icmp ugt i32 %68, 1            ; <i1> [#uses=1]
+       %umax76 = select i1 %tmp75, i32 %68, i32 1              ; <i32> [#uses=2]
+       br label %bb2.preheader.i.i.i
+
+bb2.preheader.i.i.i:           ; preds = %bb.nph20.i.i.i, %bb4.i.i.i
+       %chain_end.119.i.i.i = phi %struct.dwarf_fde** [ @marker.2702, %bb.nph20.i.i.i ], [ %81, %bb4.i.i.i ]           ; <%struct.dwarf_fde**> [#uses=2]
+       %i.018.i.i.i = phi i32 [ 0, %bb.nph20.i.i.i ], [ %82, %bb4.i.i.i ]              ; <i32> [#uses=4]
+       %scevgep78 = getelementptr %struct.fde_vector* %55, i32 1, i32 0                ; <i8**> [#uses=2]
+       %scevgep33.i.i.i = getelementptr i8** %scevgep78, i32 %i.018.i.i.i              ; <i8**> [#uses=1]
+       %scevgep80 = getelementptr %struct.fde_vector* %65, i32 1, i32 0                ; <i8**> [#uses=2]
+       %scevgep30.i.i.i = getelementptr i8** %scevgep80, i32 %i.018.i.i.i              ; <i8**> [#uses=1]
+       br label %bb2.i.i.i
+
+bb7.i.i.i:             ; preds = %bb11.loopexit.i.i.i, %bb10.i.i.i
+       %i.115.i.i.i = phi i32 [ %91, %bb10.i.i.i ], [ 0, %bb11.loopexit.i.i.i ]                ; <i32> [#uses=3]
+       %j.114.i.i.i = phi i32 [ %j.0.i.i.i, %bb10.i.i.i ], [ 0, %bb11.loopexit.i.i.i ]         ; <i32> [#uses=3]
+       %k.113.i.i.i = phi i32 [ %k.0.i.i.i, %bb10.i.i.i ], [ 0, %bb11.loopexit.i.i.i ]         ; <i32> [#uses=3]
+       %scevgep24.i.i.i = getelementptr i8** %scevgep80, i32 %i.115.i.i.i              ; <i8**> [#uses=1]
+       %scevgep21.i.i.i = getelementptr i8** %scevgep78, i32 %i.115.i.i.i              ; <i8**> [#uses=1]
+       %scevgep242536.i.i.i = load i8** %scevgep24.i.i.i               ; <i8*> [#uses=1]
+       %85 = icmp eq i8* %scevgep242536.i.i.i, null            ; <i1> [#uses=1]
+       %scevgep212235.i.i.i = load i8** %scevgep21.i.i.i               ; <i8*> [#uses=1]
+       %86 = bitcast i8* %scevgep212235.i.i.i to %struct.dwarf_fde*            ; <%struct.dwarf_fde*> [#uses=2]
+       br i1 %85, label %bb9.i.i.i, label %bb8.i.i.i
+
+bb8.i.i.i:             ; preds = %bb7.i.i.i
+       %87 = getelementptr %struct.fde_vector* %55, i32 0, i32 2, i32 %j.114.i.i.i             ; <%struct.dwarf_fde**> [#uses=1]
+       store %struct.dwarf_fde* %86, %struct.dwarf_fde** %87, align 4
+       %88 = add i32 %j.114.i.i.i, 1           ; <i32> [#uses=1]
+       br label %bb10.i.i.i
+
+bb9.i.i.i:             ; preds = %bb7.i.i.i
+       %89 = getelementptr %struct.fde_vector* %65, i32 0, i32 2, i32 %k.113.i.i.i             ; <%struct.dwarf_fde**> [#uses=1]
+       store %struct.dwarf_fde* %86, %struct.dwarf_fde** %89, align 4
+       %90 = add i32 %k.113.i.i.i, 1           ; <i32> [#uses=1]
+       br label %bb10.i.i.i
+
+bb10.i.i.i:            ; preds = %bb9.i.i.i, %bb8.i.i.i
+       %k.0.i.i.i = phi i32 [ %k.113.i.i.i, %bb8.i.i.i ], [ %90, %bb9.i.i.i ]          ; <i32> [#uses=2]
+       %j.0.i.i.i = phi i32 [ %88, %bb8.i.i.i ], [ %j.114.i.i.i, %bb9.i.i.i ]          ; <i32> [#uses=2]
+       %91 = add i32 %i.115.i.i.i, 1           ; <i32> [#uses=2]
+       %exitcond = icmp eq i32 %91, %umax76            ; <i1> [#uses=1]
+       br i1 %exitcond, label %fde_split.exit.i.i, label %bb7.i.i.i
+
+bb11.loopexit.i.i.i:           ; preds = %bb4.i.i.i
+       call void @llvm.dbg.stoppoint(i32 463, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       br i1 %69, label %fde_split.exit.i.i, label %bb7.i.i.i
+
+fde_split.exit.i.i:            ; preds = %bb11.loopexit.i.i.i, %bb10.i.i.i, %bb8.i.i
+       %j.1.lcssa.i.i.i = phi i32 [ 0, %bb8.i.i ], [ 0, %bb11.loopexit.i.i.i ], [ %j.0.i.i.i, %bb10.i.i.i ]            ; <i32> [#uses=1]
+       %k.1.lcssa.i.i.i = phi i32 [ 0, %bb8.i.i ], [ 0, %bb11.loopexit.i.i.i ], [ %k.0.i.i.i, %bb10.i.i.i ]            ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 468, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       store i32 %j.1.lcssa.i.i.i, i32* %67, align 4
+       call void @llvm.dbg.stoppoint(i32 469, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %92 = getelementptr %struct.fde_vector* %65, i32 0, i32 1               ; <i32*> [#uses=1]
+       store i32 %k.1.lcssa.i.i.i, i32* %92, align 4
+       call void @llvm.dbg.stoppoint(i32 579, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram208 to { }*))
+       %93 = load %struct.fde_vector** %33, align 4            ; <%struct.fde_vector*> [#uses=1]
+       %94 = getelementptr %struct.fde_vector* %93, i32 0, i32 1               ; <i32*> [#uses=1]
+       %95 = load i32* %94, align 4            ; <i32> [#uses=1]
+       %96 = load %struct.fde_vector** %39, align 4            ; <%struct.fde_vector*> [#uses=2]
+       %97 = getelementptr %struct.fde_vector* %96, i32 0, i32 1               ; <i32*> [#uses=1]
+       %98 = load i32* %97, align 4            ; <i32> [#uses=1]
+       %99 = add i32 %98, %95          ; <i32> [#uses=1]
+       %100 = icmp eq i32 %99, %count.1.i              ; <i1> [#uses=1]
+       br i1 %100, label %bb10.i.i, label %bb9.i.i
+
+bb9.i.i:               ; preds = %fde_split.exit.i.i
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+bb10.i.i:              ; preds = %fde_split.exit.i.i
+       call void @llvm.dbg.stoppoint(i32 580, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call arm_apcscc  void @frame_heapsort(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* %fde_compare.0.i.i, %struct.fde_vector* %96)
+       call void @llvm.dbg.stoppoint(i32 581, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %101 = load %struct.fde_vector** %33, align 4           ; <%struct.fde_vector*> [#uses=3]
+       %v19.i.i.i = bitcast %struct.fde_vector* %101 to i8*            ; <i8*> [#uses=2]
+       %102 = load %struct.fde_vector** %39, align 4           ; <%struct.fde_vector*> [#uses=3]
+       %v230.i.i.i = bitcast %struct.fde_vector* %102 to i8*           ; <i8*> [#uses=1]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram219 to { }*))
+       call void @llvm.dbg.stoppoint(i32 542, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %103 = getelementptr %struct.fde_vector* %102, i32 0, i32 1             ; <i32*> [#uses=2]
+       %104 = load i32* %103, align 4          ; <i32> [#uses=4]
+       call void @llvm.dbg.stoppoint(i32 543, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %105 = icmp eq i32 %104, 0              ; <i1> [#uses=1]
+       br i1 %105, label %fde_merge.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i:              ; preds = %bb10.i.i
+       %106 = getelementptr %struct.fde_vector* %101, i32 0, i32 1             ; <i32*> [#uses=3]
+       %107 = load i32* %106, align 4          ; <i32> [#uses=1]
+       %tmp18.i.i.i = add i32 %104, -1         ; <i32> [#uses=1]
+       %tmp104 = shl i32 %104, 2               ; <i32> [#uses=1]
+       %tmp105 = add i32 %tmp104, 4            ; <i32> [#uses=1]
+       br label %bb1.i13.i.i
+
+bb1.i13.i.i:           ; preds = %bb5.i.i.i, %bb.i.i.i
+       %indvar15.i.i.i = phi i32 [ 0, %bb.i.i.i ], [ %indvar.next16.i.i.i, %bb5.i.i.i ]                ; <i32> [#uses=3]
+       %i1.1.i.i.i = phi i32 [ %107, %bb.i.i.i ], [ %i1.0.i.i.i, %bb5.i.i.i ]          ; <i32> [#uses=4]
+       %tmp100 = sub i32 %tmp18.i.i.i, %indvar15.i.i.i         ; <i32> [#uses=2]
+       %tmp103 = mul i32 %indvar15.i.i.i, -4           ; <i32> [#uses=1]
+       %tmp106 = add i32 %tmp103, %tmp105              ; <i32> [#uses=1]
+       %scevgep107 = getelementptr i8* %v230.i.i.i, i32 %tmp106                ; <i8*> [#uses=1]
+       %scevgep3536.i.i.i = bitcast i8* %scevgep107 to %struct.dwarf_fde**             ; <%struct.dwarf_fde**> [#uses=1]
+       %108 = load %struct.dwarf_fde** %scevgep3536.i.i.i, align 4             ; <%struct.dwarf_fde*> [#uses=2]
+       %tmp85 = add i32 %i1.1.i.i.i, %tmp100           ; <i32> [#uses=1]
+       %tmp86 = shl i32 %tmp85, 2              ; <i32> [#uses=1]
+       %tmp87 = add i32 %tmp86, 8              ; <i32> [#uses=1]
+       %tmp91 = shl i32 %i1.1.i.i.i, 2         ; <i32> [#uses=1]
+       %tmp92 = add i32 %tmp91, 4              ; <i32> [#uses=1]
+       br label %bb3.i17.i.i
+
+bb2.i14.i.i:           ; preds = %bb4.i18.i.i
+       %109 = load %struct.dwarf_fde** %scevgep14.i.i.i, align 4               ; <%struct.dwarf_fde*> [#uses=1]
+       store %struct.dwarf_fde* %109, %struct.dwarf_fde** %scevgep2425.i.i.i, align 4
+       %indvar.next.i.i.i = add i32 %110, 1            ; <i32> [#uses=1]
+       br label %bb3.i17.i.i
+
+bb3.i17.i.i:           ; preds = %bb2.i14.i.i, %bb1.i13.i.i
+       %110 = phi i32 [ 0, %bb1.i13.i.i ], [ %indvar.next.i.i.i, %bb2.i14.i.i ]                ; <i32> [#uses=4]
+       %tmp82 = mul i32 %110, -4               ; <i32> [#uses=2]
+       %tmp88 = add i32 %tmp82, %tmp87         ; <i32> [#uses=1]
+       %scevgep89 = getelementptr i8* %v19.i.i.i, i32 %tmp88           ; <i8*> [#uses=1]
+       %scevgep2425.i.i.i = bitcast i8* %scevgep89 to %struct.dwarf_fde**              ; <%struct.dwarf_fde**> [#uses=1]
+       %tmp93 = add i32 %tmp82, %tmp92         ; <i32> [#uses=1]
+       %scevgep94 = getelementptr i8* %v19.i.i.i, i32 %tmp93           ; <i8*> [#uses=1]
+       %scevgep14.i.i.i = bitcast i8* %scevgep94 to %struct.dwarf_fde**                ; <%struct.dwarf_fde**> [#uses=2]
+       %i1.0.i.i.i = sub i32 %i1.1.i.i.i, %110         ; <i32> [#uses=2]
+       %111 = icmp eq i32 %i1.1.i.i.i, %110            ; <i1> [#uses=1]
+       br i1 %111, label %bb5.i.i.i, label %bb4.i18.i.i
+
+bb4.i18.i.i:           ; preds = %bb3.i17.i.i
+       %112 = load %struct.dwarf_fde** %scevgep14.i.i.i, align 4               ; <%struct.dwarf_fde*> [#uses=1]
+       %113 = call arm_apcscc  i32 %fde_compare.0.i.i(%struct.object* %ob, %struct.dwarf_fde* %112, %struct.dwarf_fde* %108)           ; <i32> [#uses=1]
+       %114 = icmp sgt i32 %113, 0             ; <i1> [#uses=1]
+       br i1 %114, label %bb2.i14.i.i, label %bb5.i.i.i
+
+bb5.i.i.i:             ; preds = %bb4.i18.i.i, %bb3.i17.i.i
+       %tmp29.i.i.i = add i32 %i1.0.i.i.i, %tmp100             ; <i32> [#uses=1]
+       %115 = getelementptr %struct.fde_vector* %101, i32 0, i32 2, i32 %tmp29.i.i.i           ; <%struct.dwarf_fde**> [#uses=1]
+       store %struct.dwarf_fde* %108, %struct.dwarf_fde** %115, align 4
+       %indvar.next16.i.i.i = add i32 %indvar15.i.i.i, 1               ; <i32> [#uses=2]
+       %exitcond98 = icmp eq i32 %indvar.next16.i.i.i, %104            ; <i1> [#uses=1]
+       br i1 %exitcond98, label %bb6.i.i.i, label %bb1.i13.i.i
+
+bb6.i.i.i:             ; preds = %bb5.i.i.i
+       call void @llvm.dbg.stoppoint(i32 558, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %116 = load i32* %106, align 4          ; <i32> [#uses=1]
+       %117 = load i32* %103, align 4          ; <i32> [#uses=1]
+       %118 = add i32 %117, %116               ; <i32> [#uses=1]
+       store i32 %118, i32* %106, align 4
+       %.pre.i.i = load %struct.fde_vector** %39, align 4              ; <%struct.fde_vector*> [#uses=1]
+       br label %fde_merge.exit.i.i
+
+fde_merge.exit.i.i:            ; preds = %bb6.i.i.i, %bb10.i.i
+       %119 = phi %struct.fde_vector* [ %.pre.i.i, %bb6.i.i.i ], [ %102, %bb10.i.i ]           ; <%struct.fde_vector*> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 582, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram219 to { }*))
+       free %struct.fde_vector* %119
+       br label %end_fde_sort.exit.i
+
+bb11.i.i:              ; preds = %bb7.i.i
+       call void @llvm.dbg.stoppoint(i32 588, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call arm_apcscc  void @frame_heapsort(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* %fde_compare.0.i.i, %struct.fde_vector* %55)
+       br label %end_fde_sort.exit.i
+
+end_fde_sort.exit.i:           ; preds = %bb11.i.i, %fde_merge.exit.i.i
+       call void @llvm.dbg.stoppoint(i32 759, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram278 to { }*))
+       %120 = load %struct.fde_vector** %33, align 4           ; <%struct.fde_vector*> [#uses=1]
+       %121 = load %struct.dwarf_fde** %45, align 4            ; <%struct.dwarf_fde*> [#uses=1]
+       %122 = getelementptr %struct.fde_vector* %120, i32 0, i32 0             ; <i8**> [#uses=1]
+       %123 = bitcast %struct.dwarf_fde* %121 to i8*           ; <i8*> [#uses=1]
+       store i8* %123, i8** %122, align 4
+       call void @llvm.dbg.stoppoint(i32 760, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %124 = load %struct.fde_vector** %33, align 4           ; <%struct.fde_vector*> [#uses=1]
+       %.c.i = bitcast %struct.fde_vector* %124 to %struct.dwarf_fde*          ; <%struct.dwarf_fde*> [#uses=1]
+       store %struct.dwarf_fde* %.c.i, %struct.dwarf_fde** %45
+       call void @llvm.dbg.stoppoint(i32 762, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %125 = load i32* %0             ; <i32> [#uses=1]
+       %126 = or i32 %125, 1           ; <i32> [#uses=2]
+       store i32 %126, i32* %0
+       br label %init_object.exit
+
+init_object.exit:              ; preds = %end_fde_sort.exit.i, %bb1.i.i, %bb8.i
+       %.rle120 = phi i32 [ %126, %end_fde_sort.exit.i ], [ %.rle121, %bb8.i ], [ %.rle121, %bb1.i.i ]         ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 938, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram282 to { }*))
+       %127 = getelementptr %struct.object* %ob, i32 0, i32 0          ; <i8**> [#uses=1]
+       %128 = load i8** %127, align 4          ; <i8*> [#uses=1]
+       %129 = icmp ugt i8* %128, %pc           ; <i1> [#uses=1]
+       br i1 %129, label %bb16, label %bb2
+
+bb2:           ; preds = %init_object.exit, %entry
+       %130 = phi i32 [ %1, %entry ], [ %.rle120, %init_object.exit ]          ; <i32> [#uses=5]
+       call void @llvm.dbg.stoppoint(i32 942, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %131 = and i32 %130, 1          ; <i32> [#uses=1]
+       %132 = icmp eq i32 %131, 0              ; <i1> [#uses=1]
+       br i1 %132, label %bb8, label %bb3
+
+bb3:           ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 944, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %133 = and i32 %130, 4          ; <i32> [#uses=1]
+       %134 = icmp eq i32 %133, 0              ; <i1> [#uses=1]
+       br i1 %134, label %bb5, label %bb4
+
+bb4:           ; preds = %bb3
+       call void @llvm.dbg.stoppoint(i32 945, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram258 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 898, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %135 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0           ; <%struct.dwarf_fde**> [#uses=1]
+       %136 = load %struct.dwarf_fde** %135            ; <%struct.dwarf_fde*> [#uses=2]
+       %137 = bitcast %struct.dwarf_fde* %136 to %struct.fde_vector*           ; <%struct.fde_vector*> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 901, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %138 = getelementptr %struct.dwarf_fde* %136, i32 0, i32 1              ; <i32*> [#uses=1]
+       %139 = load i32* %138, align 4          ; <i32> [#uses=1]
+       %140 = ptrtoint i8* %pc to i32          ; <i32> [#uses=2]
+       %141 = getelementptr %struct.object* %ob, i32 0, i32 1          ; <i8**> [#uses=1]
+       %142 = getelementptr %struct.object* %ob, i32 0, i32 2          ; <i8**> [#uses=1]
+       br label %bb5.i23
+
+bb.i18:                ; preds = %bb5.i23
+       %143 = add i32 %lo.0.i, %hi.0.ph.i.ph           ; <i32> [#uses=1]
+       %144 = lshr i32 %143, 1         ; <i32> [#uses=3]
+       %145 = getelementptr %struct.fde_vector* %137, i32 0, i32 2, i32 %144           ; <%struct.dwarf_fde**> [#uses=1]
+       %146 = load %struct.dwarf_fde** %145, align 4           ; <%struct.dwarf_fde*> [#uses=3]
+       %147 = getelementptr %struct.dwarf_fde* %146, i32 0, i32 1              ; <i32*> [#uses=2]
+       %148 = bitcast i32* %147 to i8*         ; <i8*> [#uses=1]
+       %149 = load i32* %147, align 1          ; <i32> [#uses=1]
+       %150 = sub i32 0, %149          ; <i32> [#uses=1]
+       %151 = getelementptr i8* %148, i32 %150         ; <i8*> [#uses=1]
+       %152 = bitcast i8* %151 to %struct.dwarf_cie*           ; <%struct.dwarf_cie*> [#uses=1]
+       %153 = call arm_apcscc  i32 @get_cie_encoding(%struct.dwarf_cie* %152) nounwind         ; <i32> [#uses=2]
+       %154 = trunc i32 %153 to i8             ; <i8> [#uses=3]
+       %155 = icmp eq i8 %154, -1              ; <i1> [#uses=1]
+       br i1 %155, label %base_from_object.exit.i, label %bb1.i.i19
+
+bb1.i.i19:             ; preds = %bb.i18
+       %156 = and i32 %153, 112                ; <i32> [#uses=1]
+       switch i32 %156, label %bb5.i.i [
+               i32 0, label %base_from_object.exit.i
+               i32 16, label %base_from_object.exit.i
+               i32 32, label %bb3.i.i
+               i32 48, label %bb4.i.i20
+               i32 80, label %base_from_object.exit.i
+       ]
+
+bb3.i.i:               ; preds = %bb1.i.i19
+       %157 = load i8** %141, align 4          ; <i8*> [#uses=1]
+       %158 = ptrtoint i8* %157 to i32         ; <i32> [#uses=1]
+       br label %base_from_object.exit.i
+
+bb4.i.i20:             ; preds = %bb1.i.i19
+       %159 = load i8** %142, align 4          ; <i8*> [#uses=1]
+       %160 = ptrtoint i8* %159 to i32         ; <i32> [#uses=1]
+       br label %base_from_object.exit.i
+
+bb5.i.i:               ; preds = %bb1.i.i19
+       call void @llvm.dbg.stoppoint(i32 909, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 312, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 163, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*)) nounwind
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 910, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*)) nounwind
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+base_from_object.exit.i:               ; preds = %bb4.i.i20, %bb3.i.i, %bb1.i.i19, %bb1.i.i19, %bb1.i.i19, %bb.i18
+       %161 = phi i32 [ %160, %bb4.i.i20 ], [ %158, %bb3.i.i ], [ 0, %bb.i18 ], [ 0, %bb1.i.i19 ], [ 0, %bb1.i.i19 ], [ 0, %bb1.i.i19 ]                ; <i32> [#uses=1]
+       %162 = getelementptr %struct.dwarf_fde* %146, i32 0, i32 2, i32 0               ; <i8*> [#uses=1]
+       %163 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %154, i32 %161, i8* %162, i32* %pc_begin.i) nounwind               ; <i8*> [#uses=1]
+       %164 = and i8 %154, 15          ; <i8> [#uses=1]
+       %165 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %164, i32 0, i8* %163, i32* %pc_range.i) nounwind          ; <i8*> [#uses=0]
+       %166 = load i32* %pc_begin.i, align 4           ; <i32> [#uses=2]
+       %167 = icmp ult i32 %140, %166          ; <i1> [#uses=1]
+       br i1 %167, label %bb5.i23, label %bb2.i21
+
+bb2.i21:               ; preds = %base_from_object.exit.i
+       %168 = load i32* %pc_range.i, align 4           ; <i32> [#uses=1]
+       %169 = add i32 %168, %166               ; <i32> [#uses=1]
+       %170 = icmp ult i32 %140, %169          ; <i1> [#uses=1]
+       br i1 %170, label %binary_search_mixed_encoding_fdes.exit, label %bb3.i22
+
+bb3.i22:               ; preds = %bb2.i21
+       %171 = add i32 %144, 1          ; <i32> [#uses=1]
+       br label %bb5.i23
+
+bb5.i23:               ; preds = %bb3.i22, %base_from_object.exit.i, %bb4
+       %hi.0.ph.i.ph = phi i32 [ %139, %bb4 ], [ %144, %base_from_object.exit.i ], [ %hi.0.ph.i.ph, %bb3.i22 ]         ; <i32> [#uses=3]
+       %lo.0.i = phi i32 [ %171, %bb3.i22 ], [ 0, %bb4 ], [ %lo.0.i, %base_from_object.exit.i ]                ; <i32> [#uses=3]
+       %172 = icmp ult i32 %lo.0.i, %hi.0.ph.i.ph              ; <i1> [#uses=1]
+       br i1 %172, label %bb.i18, label %binary_search_mixed_encoding_fdes.exit
+
+binary_search_mixed_encoding_fdes.exit:                ; preds = %bb5.i23, %bb2.i21
+       %.0.i = phi %struct.dwarf_fde* [ %146, %bb2.i21 ], [ null, %bb5.i23 ]           ; <%struct.dwarf_fde*> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 923, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram284 to { }*))
+       ret %struct.dwarf_fde* %.0.i
+
+bb5:           ; preds = %bb3
+       call void @llvm.dbg.stoppoint(i32 946, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %173 = and i32 %130, 2040               ; <i32> [#uses=1]
+       %174 = icmp eq i32 %173, 0              ; <i1> [#uses=1]
+       %175 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0           ; <%struct.dwarf_fde**> [#uses=1]
+       %176 = load %struct.dwarf_fde** %175            ; <%struct.dwarf_fde*> [#uses=3]
+       %177 = bitcast %struct.dwarf_fde* %176 to %struct.fde_vector*           ; <%struct.fde_vector*> [#uses=2]
+       br i1 %174, label %bb6, label %bb7
+
+bb6:           ; preds = %bb5
+       call void @llvm.dbg.stoppoint(i32 947, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram223 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 844, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %178 = getelementptr %struct.dwarf_fde* %176, i32 0, i32 1              ; <i32*> [#uses=1]
+       %179 = load i32* %178, align 4          ; <i32> [#uses=1]
+       br label %bb5.i30
+
+bb.i25:                ; preds = %bb5.i30
+       %180 = add i32 %lo.0.i29, %hi.0.ph.i28.ph               ; <i32> [#uses=1]
+       %181 = lshr i32 %180, 1         ; <i32> [#uses=3]
+       %182 = getelementptr %struct.fde_vector* %177, i32 0, i32 2, i32 %181           ; <%struct.dwarf_fde**> [#uses=1]
+       %183 = load %struct.dwarf_fde** %182, align 4           ; <%struct.dwarf_fde*> [#uses=2]
+       %184 = getelementptr %struct.dwarf_fde* %183, i32 0, i32 2              ; <[0 x i8]*> [#uses=2]
+       %185 = bitcast [0 x i8]* %184 to i8**           ; <i8**> [#uses=1]
+       %186 = load i8** %185, align 4          ; <i8*> [#uses=2]
+       %187 = icmp ugt i8* %186, %pc           ; <i1> [#uses=1]
+       br i1 %187, label %bb5.i30, label %bb2.i26
+
+bb2.i26:               ; preds = %bb.i25
+       %188 = bitcast [0 x i8]* %184 to i32*           ; <i32*> [#uses=1]
+       %189 = getelementptr i32* %188, i32 1           ; <i32*> [#uses=1]
+       %190 = load i32* %189, align 4          ; <i32> [#uses=1]
+       %191 = getelementptr i8* %186, i32 %190         ; <i8*> [#uses=1]
+       %192 = icmp ugt i8* %191, %pc           ; <i1> [#uses=1]
+       br i1 %192, label %binary_search_unencoded_fdes.exit, label %bb3.i27
+
+bb3.i27:               ; preds = %bb2.i26
+       %193 = add i32 %181, 1          ; <i32> [#uses=1]
+       br label %bb5.i30
+
+bb5.i30:               ; preds = %bb3.i27, %bb.i25, %bb6
+       %hi.0.ph.i28.ph = phi i32 [ %179, %bb6 ], [ %181, %bb.i25 ], [ %hi.0.ph.i28.ph, %bb3.i27 ]              ; <i32> [#uses=3]
+       %lo.0.i29 = phi i32 [ %193, %bb3.i27 ], [ 0, %bb6 ], [ %lo.0.i29, %bb.i25 ]             ; <i32> [#uses=3]
+       %194 = icmp ult i32 %lo.0.i29, %hi.0.ph.i28.ph          ; <i1> [#uses=1]
+       br i1 %194, label %bb.i25, label %binary_search_unencoded_fdes.exit
+
+binary_search_unencoded_fdes.exit:             ; preds = %bb5.i30, %bb2.i26
+       %.0.i31 = phi %struct.dwarf_fde* [ %183, %bb2.i26 ], [ null, %bb5.i30 ]         ; <%struct.dwarf_fde*> [#uses=1]
+       tail call void @llvm.dbg.stoppoint(i32 862, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret %struct.dwarf_fde* %.0.i31
+
+bb7:           ; preds = %bb5
+       call void @llvm.dbg.stoppoint(i32 949, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram260 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 869, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %195 = lshr i32 %130, 3         ; <i32> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 870, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %196 = trunc i32 %195 to i8             ; <i8> [#uses=3]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %197 = icmp eq i8 %196, -1              ; <i1> [#uses=1]
+       br i1 %197, label %base_from_object.exit.i39, label %bb1.i.i35
+
+bb1.i.i35:             ; preds = %bb7
+       call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %198 = and i32 %195, 112                ; <i32> [#uses=1]
+       switch i32 %198, label %bb5.i.i38 [
+               i32 0, label %base_from_object.exit.i39
+               i32 16, label %base_from_object.exit.i39
+               i32 32, label %bb3.i.i36
+               i32 48, label %bb4.i.i37
+               i32 80, label %base_from_object.exit.i39
+       ]
+
+bb3.i.i36:             ; preds = %bb1.i.i35
+       call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %199 = getelementptr %struct.object* %ob, i32 0, i32 1          ; <i8**> [#uses=1]
+       %200 = load i8** %199, align 4          ; <i8*> [#uses=1]
+       %201 = ptrtoint i8* %200 to i32         ; <i32> [#uses=1]
+       br label %base_from_object.exit.i39
+
+bb4.i.i37:             ; preds = %bb1.i.i35
+       call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %202 = getelementptr %struct.object* %ob, i32 0, i32 2          ; <i8**> [#uses=1]
+       %203 = load i8** %202, align 4          ; <i8*> [#uses=1]
+       %204 = ptrtoint i8* %203 to i32         ; <i32> [#uses=1]
+       br label %base_from_object.exit.i39
+
+bb5.i.i38:             ; preds = %bb1.i.i35
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+base_from_object.exit.i39:             ; preds = %bb4.i.i37, %bb3.i.i36, %bb1.i.i35, %bb1.i.i35, %bb1.i.i35, %bb7
+       %205 = phi i32 [ %204, %bb4.i.i37 ], [ %201, %bb3.i.i36 ], [ 0, %bb7 ], [ 0, %bb1.i.i35 ], [ 0, %bb1.i.i35 ], [ 0, %bb1.i.i35 ]         ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 873, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind
+       %206 = getelementptr %struct.dwarf_fde* %176, i32 0, i32 1              ; <i32*> [#uses=1]
+       %207 = load i32* %206, align 4          ; <i32> [#uses=1]
+       %208 = and i8 %196, 15          ; <i8> [#uses=1]
+       %209 = ptrtoint i8* %pc to i32          ; <i32> [#uses=2]
+       br label %bb5.i45
+
+bb.i40:                ; preds = %bb5.i45
+       %210 = add i32 %lo.0.i44, %hi.0.ph.i43.ph               ; <i32> [#uses=1]
+       %211 = lshr i32 %210, 1         ; <i32> [#uses=3]
+       %212 = getelementptr %struct.fde_vector* %177, i32 0, i32 2, i32 %211           ; <%struct.dwarf_fde**> [#uses=1]
+       %213 = load %struct.dwarf_fde** %212, align 4           ; <%struct.dwarf_fde*> [#uses=2]
+       %214 = getelementptr %struct.dwarf_fde* %213, i32 0, i32 2, i32 0               ; <i8*> [#uses=1]
+       %215 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %196, i32 %205, i8* %214, i32* %pc_begin.i34) nounwind             ; <i8*> [#uses=1]
+       %216 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %208, i32 0, i8* %215, i32* %pc_range.i33) nounwind                ; <i8*> [#uses=0]
+       %217 = load i32* %pc_begin.i34, align 4         ; <i32> [#uses=2]
+       %218 = icmp ult i32 %209, %217          ; <i1> [#uses=1]
+       br i1 %218, label %bb5.i45, label %bb2.i41
+
+bb2.i41:               ; preds = %bb.i40
+       %219 = load i32* %pc_range.i33, align 4         ; <i32> [#uses=1]
+       %220 = add i32 %219, %217               ; <i32> [#uses=1]
+       %221 = icmp ult i32 %209, %220          ; <i1> [#uses=1]
+       br i1 %221, label %binary_search_single_encoding_fdes.exit, label %bb3.i42
+
+bb3.i42:               ; preds = %bb2.i41
+       %222 = add i32 %211, 1          ; <i32> [#uses=1]
+       br label %bb5.i45
+
+bb5.i45:               ; preds = %bb3.i42, %bb.i40, %base_from_object.exit.i39
+       %hi.0.ph.i43.ph = phi i32 [ %207, %base_from_object.exit.i39 ], [ %211, %bb.i40 ], [ %hi.0.ph.i43.ph, %bb3.i42 ]                ; <i32> [#uses=3]
+       %lo.0.i44 = phi i32 [ %222, %bb3.i42 ], [ 0, %base_from_object.exit.i39 ], [ %lo.0.i44, %bb.i40 ]               ; <i32> [#uses=3]
+       %223 = icmp ult i32 %lo.0.i44, %hi.0.ph.i43.ph          ; <i1> [#uses=1]
+       br i1 %223, label %bb.i40, label %binary_search_single_encoding_fdes.exit
+
+binary_search_single_encoding_fdes.exit:               ; preds = %bb5.i45, %bb2.i41
+       %.0.i46 = phi %struct.dwarf_fde* [ %213, %bb2.i41 ], [ null, %bb5.i45 ]         ; <%struct.dwarf_fde*> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 892, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       ret %struct.dwarf_fde* %.0.i46
+
+bb8:           ; preds = %bb2
+       call void @llvm.dbg.stoppoint(i32 954, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %224 = and i32 %130, 2          ; <i32> [#uses=1]
+       %225 = icmp eq i32 %224, 0              ; <i1> [#uses=1]
+       %226 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0           ; <%struct.dwarf_fde**> [#uses=2]
+       br i1 %225, label %bb15, label %bb9
+
+bb9:           ; preds = %bb8
+       call void @llvm.dbg.stoppoint(i32 957, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %227 = load %struct.dwarf_fde** %226            ; <%struct.dwarf_fde*> [#uses=1]
+       %228 = bitcast %struct.dwarf_fde* %227 to i8*           ; <i8*> [#uses=1]
+       br label %bb13
+
+bb10:          ; preds = %bb13
+       %229 = call arm_apcscc  %struct.dwarf_fde* @linear_search_fdes(%struct.object* %ob, %struct.dwarf_fde* %231, i8* %pc)           ; <%struct.dwarf_fde*> [#uses=2]
+       %230 = icmp eq %struct.dwarf_fde* %229, null            ; <i1> [#uses=1]
+       br i1 %230, label %bb12, label %bb16
+
+bb12:          ; preds = %bb10
+       %indvar.next = add i32 %indvar, 1               ; <i32> [#uses=1]
+       br label %bb13
+
+bb13:          ; preds = %bb12, %bb9
+       %indvar = phi i32 [ 0, %bb9 ], [ %indvar.next, %bb12 ]          ; <i32> [#uses=2]
+       %tmp117 = shl i32 %indvar, 2            ; <i32> [#uses=1]
+       %scevgep118 = getelementptr i8* %228, i32 %tmp117               ; <i8*> [#uses=1]
+       %p.0 = bitcast i8* %scevgep118 to %struct.dwarf_fde**           ; <%struct.dwarf_fde**> [#uses=1]
+       %231 = load %struct.dwarf_fde** %p.0, align 4           ; <%struct.dwarf_fde*> [#uses=2]
+       %232 = icmp eq %struct.dwarf_fde* %231, null            ; <i1> [#uses=1]
+       br i1 %232, label %bb16, label %bb10
+
+bb15:          ; preds = %bb8
+       call void @llvm.dbg.stoppoint(i32 966, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %233 = load %struct.dwarf_fde** %226, align 4           ; <%struct.dwarf_fde*> [#uses=1]
+       %234 = call arm_apcscc  %struct.dwarf_fde* @linear_search_fdes(%struct.object* %ob, %struct.dwarf_fde* %233, i8* %pc)           ; <%struct.dwarf_fde*> [#uses=1]
+       ret %struct.dwarf_fde* %234
+
+bb16:          ; preds = %bb13, %bb10, %init_object.exit
+       %.0 = phi %struct.dwarf_fde* [ null, %init_object.exit ], [ %229, %bb10 ], [ null, %bb13 ]              ; <%struct.dwarf_fde*> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 966, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret %struct.dwarf_fde* %.0
+}
+
+define arm_apcscc %struct.dwarf_fde* @_Unwind_Find_FDE(i8* %pc, %struct.dwarf_eh_bases* nocapture %bases) {
+entry:
+       %func = alloca i32, align 4             ; <i32*> [#uses=2]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram297 to { }*))
+       call void @llvm.dbg.stoppoint(i32 977, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       call void @llvm.dbg.stoppoint(i32 982, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*))
+       br label %bb3
+
+bb:            ; preds = %bb3
+       %0 = getelementptr %struct.object* %ob.0, i32 0, i32 0          ; <i8**> [#uses=1]
+       %1 = load i8** %0, align 4              ; <i8*> [#uses=1]
+       %2 = icmp ugt i8* %1, %pc               ; <i1> [#uses=1]
+       br i1 %2, label %bb2, label %bb1
+
+bb1:           ; preds = %bb
+       call void @llvm.dbg.stoppoint(i32 985, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %3 = call arm_apcscc  %struct.dwarf_fde* @search_object(%struct.object* %ob.0, i8* %pc)         ; <%struct.dwarf_fde*> [#uses=3]
+       call void @llvm.dbg.stoppoint(i32 986, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %4 = icmp eq %struct.dwarf_fde* %3, null                ; <i1> [#uses=1]
+       br i1 %4, label %bb9, label %fini
+
+bb2:           ; preds = %bb
+       %5 = getelementptr %struct.object* %ob.0, i32 0, i32 5          ; <%struct.object**> [#uses=1]
+       br label %bb3
+
+bb3:           ; preds = %bb2, %entry
+       %ob.0.in = phi %struct.object** [ @seen_objects, %entry ], [ %5, %bb2 ]         ; <%struct.object**> [#uses=1]
+       %ob.0 = load %struct.object** %ob.0.in          ; <%struct.object*> [#uses=5]
+       %6 = icmp eq %struct.object* %ob.0, null                ; <i1> [#uses=1]
+       br i1 %6, label %bb9, label %bb
+
+bb4:           ; preds = %bb9
+       %7 = getelementptr %struct.object* %19, i32 0, i32 5            ; <%struct.object**> [#uses=2]
+       %8 = load %struct.object** %7, align 4          ; <%struct.object*> [#uses=1]
+       store %struct.object* %8, %struct.object** @unseen_objects, align 4
+       %9 = call arm_apcscc  %struct.dwarf_fde* @search_object(%struct.object* %19, i8* %pc)           ; <%struct.dwarf_fde*> [#uses=3]
+       %10 = getelementptr %struct.object* %19, i32 0, i32 0           ; <i8**> [#uses=1]
+       br label %bb7
+
+bb5:           ; preds = %bb7
+       %11 = getelementptr %struct.object* %16, i32 0, i32 0           ; <i8**> [#uses=1]
+       %12 = load i8** %11, align 4            ; <i8*> [#uses=1]
+       %13 = load i8** %10, align 4            ; <i8*> [#uses=1]
+       %14 = icmp ult i8* %12, %13             ; <i1> [#uses=1]
+       br i1 %14, label %bb8, label %bb6
+
+bb6:           ; preds = %bb5
+       %15 = getelementptr %struct.object* %16, i32 0, i32 5           ; <%struct.object**> [#uses=1]
+       br label %bb7
+
+bb7:           ; preds = %bb6, %bb4
+       %p.0 = phi %struct.object** [ @seen_objects, %bb4 ], [ %15, %bb6 ]              ; <%struct.object**> [#uses=2]
+       %16 = load %struct.object** %p.0, align 4               ; <%struct.object*> [#uses=4]
+       %17 = icmp eq %struct.object* %16, null         ; <i1> [#uses=1]
+       br i1 %17, label %bb8, label %bb5
+
+bb8:           ; preds = %bb7, %bb5
+       store %struct.object* %16, %struct.object** %7, align 4
+       store %struct.object* %19, %struct.object** %p.0, align 4
+       %18 = icmp eq %struct.dwarf_fde* %9, null               ; <i1> [#uses=1]
+       br i1 %18, label %bb9, label %fini
+
+bb9:           ; preds = %bb8, %bb3, %bb1
+       %f.0 = phi %struct.dwarf_fde* [ %9, %bb8 ], [ %3, %bb1 ], [ null, %bb3 ]                ; <%struct.dwarf_fde*> [#uses=1]
+       %19 = load %struct.object** @unseen_objects, align 4            ; <%struct.object*> [#uses=7]
+       %20 = icmp eq %struct.object* %19, null         ; <i1> [#uses=1]
+       br i1 %20, label %fini, label %bb4
+
+fini:          ; preds = %bb9, %bb8, %bb1
+       %f.1 = phi %struct.dwarf_fde* [ %3, %bb1 ], [ %9, %bb8 ], [ %f.0, %bb9 ]                ; <%struct.dwarf_fde*> [#uses=5]
+       %ob.1 = phi %struct.object* [ %ob.0, %bb1 ], [ %19, %bb9 ], [ %19, %bb8 ]               ; <%struct.object*> [#uses=3]
+       call void @llvm.dbg.stoppoint(i32 1011, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       call void @llvm.dbg.stoppoint(i32 1013, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       %21 = icmp eq %struct.dwarf_fde* %f.1, null             ; <i1> [#uses=1]
+       br i1 %21, label %bb13, label %bb10
+
+bb10:          ; preds = %fini
+       call void @llvm.dbg.stoppoint(i32 1018, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %22 = getelementptr %struct.object* %ob.1, i32 0, i32 1         ; <i8**> [#uses=2]
+       %23 = load i8** %22, align 4            ; <i8*> [#uses=1]
+       %24 = getelementptr %struct.dwarf_eh_bases* %bases, i32 0, i32 0                ; <i8**> [#uses=1]
+       store i8* %23, i8** %24, align 4
+       call void @llvm.dbg.stoppoint(i32 1019, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %25 = getelementptr %struct.object* %ob.1, i32 0, i32 2         ; <i8**> [#uses=2]
+       %26 = load i8** %25, align 4            ; <i8*> [#uses=1]
+       %27 = getelementptr %struct.dwarf_eh_bases* %bases, i32 0, i32 1                ; <i8**> [#uses=1]
+       store i8* %26, i8** %27, align 4
+       call void @llvm.dbg.stoppoint(i32 1021, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %28 = getelementptr %struct.object* %ob.1, i32 0, i32 4, i32 0          ; <i32*> [#uses=1]
+       %29 = load i32* %28             ; <i32> [#uses=2]
+       %30 = lshr i32 %29, 3           ; <i32> [#uses=1]
+       %31 = and i32 %30, 255          ; <i32> [#uses=1]
+       call void @llvm.dbg.stoppoint(i32 1022, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %32 = and i32 %29, 4            ; <i32> [#uses=1]
+       %33 = icmp eq i32 %32, 0                ; <i1> [#uses=1]
+       br i1 %33, label %bb12, label %bb11
+
+bb11:          ; preds = %bb10
+       call void @llvm.dbg.stoppoint(i32 1023, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 312, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 163, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*)) nounwind
+       %34 = getelementptr %struct.dwarf_fde* %f.1, i32 0, i32 1               ; <i32*> [#uses=2]
+       %35 = bitcast i32* %34 to i8*           ; <i8*> [#uses=1]
+       %36 = load i32* %34, align 1            ; <i32> [#uses=1]
+       %37 = sub i32 0, %36            ; <i32> [#uses=1]
+       %38 = getelementptr i8* %35, i32 %37            ; <i8*> [#uses=1]
+       %39 = bitcast i8* %38 to %struct.dwarf_cie*             ; <%struct.dwarf_cie*> [#uses=1]
+       %40 = call arm_apcscc  i32 @get_cie_encoding(%struct.dwarf_cie* %39) nounwind           ; <i32> [#uses=1]
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind
+       br label %bb12
+
+bb12:          ; preds = %bb11, %bb10
+       %encoding.0 = phi i32 [ %40, %bb11 ], [ %31, %bb10 ]            ; <i32> [#uses=2]
+       call void @llvm.dbg.stoppoint(i32 1024, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %41 = trunc i32 %encoding.0 to i8               ; <i8> [#uses=2]
+       call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind
+       call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %42 = icmp eq i8 %41, -1                ; <i1> [#uses=1]
+       br i1 %42, label %base_from_object.exit, label %bb1.i
+
+bb1.i:         ; preds = %bb12
+       call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %43 = and i32 %encoding.0, 112          ; <i32> [#uses=1]
+       switch i32 %43, label %bb5.i [
+               i32 0, label %base_from_object.exit
+               i32 16, label %base_from_object.exit
+               i32 32, label %bb3.i
+               i32 48, label %bb4.i
+               i32 80, label %base_from_object.exit
+       ]
+
+bb3.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %44 = load i8** %22, align 4            ; <i8*> [#uses=1]
+       %45 = ptrtoint i8* %44 to i32           ; <i32> [#uses=1]
+       br label %base_from_object.exit
+
+bb4.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %46 = load i8** %25, align 4            ; <i8*> [#uses=1]
+       %47 = ptrtoint i8* %46 to i32           ; <i32> [#uses=1]
+       br label %base_from_object.exit
+
+bb5.i:         ; preds = %bb1.i
+       call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+base_from_object.exit:         ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %bb12
+       %48 = phi i32 [ %47, %bb4.i ], [ %45, %bb3.i ], [ 0, %bb12 ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ]               ; <i32> [#uses=1]
+       %49 = getelementptr %struct.dwarf_fde* %f.1, i32 0, i32 2, i32 0                ; <i8*> [#uses=1]
+       %50 = call arm_apcscc  i8* @read_encoded_value_with_base(i8 zeroext %41, i32 %48, i8* %49, i32* %func)          ; <i8*> [#uses=0]
+       call void @llvm.dbg.stoppoint(i32 1026, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*))
+       %51 = load i32* %func, align 4          ; <i32> [#uses=1]
+       %52 = inttoptr i32 %51 to i8*           ; <i8*> [#uses=1]
+       %53 = getelementptr %struct.dwarf_eh_bases* %bases, i32 0, i32 2                ; <i8**> [#uses=1]
+       store i8* %52, i8** %53, align 4
+       call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram297 to { }*))
+       ret %struct.dwarf_fde* %f.1
+
+bb13:          ; preds = %fini
+       call void @llvm.dbg.stoppoint(i32 1029, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret %struct.dwarf_fde* %f.1
+}
+
+define arm_apcscc i8* @__deregister_frame_info_bases(i8* %begin) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram301 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 180, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = icmp eq i8* %begin, null           ; <i1> [#uses=1]
+       br i1 %0, label %bb17, label %bb
+
+bb:            ; preds = %entry
+       %1 = bitcast i8* %begin to i32*         ; <i32*> [#uses=1]
+       %2 = load i32* %1, align 4              ; <i32> [#uses=1]
+       %3 = icmp eq i32 %2, 0          ; <i1> [#uses=1]
+       br i1 %3, label %bb17, label %bb6
+
+bb3:           ; preds = %bb6
+       %4 = getelementptr %struct.object* %10, i32 0, i32 3, i32 0             ; <%struct.dwarf_fde**> [#uses=1]
+       %5 = load %struct.dwarf_fde** %4, align 4               ; <%struct.dwarf_fde*> [#uses=1]
+       %6 = bitcast %struct.dwarf_fde* %5 to i8*               ; <i8*> [#uses=1]
+       %7 = icmp eq i8* %6, %begin             ; <i1> [#uses=1]
+       %8 = getelementptr %struct.object* %10, i32 0, i32 5            ; <%struct.object**> [#uses=2]
+       br i1 %7, label %bb4, label %bb6
+
+bb4:           ; preds = %bb3
+       tail call void @llvm.dbg.stoppoint(i32 190, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %9 = load %struct.object** %8, align 4          ; <%struct.object*> [#uses=1]
+       store %struct.object* %9, %struct.object** %p.0, align 4
+       br label %out
+
+bb6:           ; preds = %bb3, %bb
+       %p.0 = phi %struct.object** [ @unseen_objects, %bb ], [ %8, %bb3 ]              ; <%struct.object**> [#uses=2]
+       %10 = load %struct.object** %p.0, align 4               ; <%struct.object*> [#uses=4]
+       %11 = icmp eq %struct.object* %10, null         ; <i1> [#uses=1]
+       br i1 %11, label %bb14, label %bb3
+
+bb8:           ; preds = %bb14
+       %12 = getelementptr %struct.object* %30, i32 0, i32 4, i32 0            ; <i32*> [#uses=1]
+       %13 = load i32* %12             ; <i32> [#uses=1]
+       %14 = and i32 %13, 1            ; <i32> [#uses=1]
+       %15 = icmp eq i32 %14, 0                ; <i1> [#uses=1]
+       %16 = getelementptr %struct.object* %30, i32 0, i32 3, i32 0            ; <%struct.dwarf_fde**> [#uses=3]
+       br i1 %15, label %bb11, label %bb9
+
+bb9:           ; preds = %bb8
+       %17 = load %struct.dwarf_fde** %16              ; <%struct.dwarf_fde*> [#uses=1]
+       %18 = bitcast %struct.dwarf_fde* %17 to i8**            ; <i8**> [#uses=1]
+       %19 = load i8** %18, align 4            ; <i8*> [#uses=1]
+       %20 = icmp eq i8* %19, %begin           ; <i1> [#uses=1]
+       br i1 %20, label %bb10, label %bb13
+
+bb10:          ; preds = %bb9
+       tail call void @llvm.dbg.stoppoint(i32 200, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %21 = getelementptr %struct.object* %30, i32 0, i32 5           ; <%struct.object**> [#uses=1]
+       %22 = load %struct.object** %21, align 4                ; <%struct.object*> [#uses=1]
+       store %struct.object* %22, %struct.object** %p.1, align 4
+       tail call void @llvm.dbg.stoppoint(i32 201, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %23 = load %struct.dwarf_fde** %16              ; <%struct.dwarf_fde*> [#uses=1]
+       free %struct.dwarf_fde* %23
+       br label %out
+
+bb11:          ; preds = %bb8
+       %24 = load %struct.dwarf_fde** %16, align 4             ; <%struct.dwarf_fde*> [#uses=1]
+       %25 = bitcast %struct.dwarf_fde* %24 to i8*             ; <i8*> [#uses=1]
+       %26 = icmp eq i8* %25, %begin           ; <i1> [#uses=1]
+       br i1 %26, label %bb12, label %bb13
+
+bb12:          ; preds = %bb11
+       tail call void @llvm.dbg.stoppoint(i32 210, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %27 = getelementptr %struct.object* %30, i32 0, i32 5           ; <%struct.object**> [#uses=1]
+       %28 = load %struct.object** %27, align 4                ; <%struct.object*> [#uses=1]
+       store %struct.object* %28, %struct.object** %p.1, align 4
+       br label %out
+
+bb13:          ; preds = %bb11, %bb9
+       %29 = getelementptr %struct.object* %30, i32 0, i32 5           ; <%struct.object**> [#uses=1]
+       br label %bb14
+
+bb14:          ; preds = %bb13, %bb6
+       %p.1 = phi %struct.object** [ %29, %bb13 ], [ @seen_objects, %bb6 ]             ; <%struct.object**> [#uses=3]
+       %30 = load %struct.object** %p.1, align 4               ; <%struct.object*> [#uses=8]
+       %31 = icmp eq %struct.object* %30, null         ; <i1> [#uses=1]
+       br i1 %31, label %bb15, label %bb8
+
+out:           ; preds = %bb12, %bb10, %bb4
+       %ob.0 = phi %struct.object* [ %10, %bb4 ], [ %30, %bb10 ], [ %30, %bb12 ]               ; <%struct.object*> [#uses=2]
+       tail call void @llvm.dbg.stoppoint(i32 216, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 217, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*))
+       %32 = icmp eq %struct.object* %ob.0, null               ; <i1> [#uses=1]
+       br i1 %32, label %bb15, label %bb16
+
+bb15:          ; preds = %out, %bb14
+       tail call void @llvm.dbg.stoppoint(i32 217, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call arm_apcscc  void @abort() noreturn nounwind
+       unreachable
+
+bb16:          ; preds = %out
+       tail call void @llvm.dbg.stoppoint(i32 218, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %33 = bitcast %struct.object* %ob.0 to i8*              ; <i8*> [#uses=1]
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram301 to { }*))
+       ret i8* %33
+
+bb17:          ; preds = %bb, %entry
+       tail call void @llvm.dbg.stoppoint(i32 218, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret i8* null
+}
+
+define arm_apcscc i8* @__deregister_frame_info(i8* %begin) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram303 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 224, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = tail call arm_apcscc  i8* @__deregister_frame_info_bases(i8* %begin)               ; <i8*> [#uses=1]
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram303 to { }*))
+       ret i8* %0
+}
+
+define arm_apcscc void @__deregister_frame(i8* %begin) nounwind {
+entry:
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram305 to { }*))
+       tail call void @llvm.dbg.stoppoint(i32 231, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       %0 = bitcast i8* %begin to i32*         ; <i32*> [#uses=1]
+       %1 = load i32* %0, align 4              ; <i32> [#uses=1]
+       %2 = icmp eq i32 %1, 0          ; <i1> [#uses=1]
+       br i1 %2, label %return, label %bb
+
+bb:            ; preds = %entry
+       tail call void @llvm.dbg.stoppoint(i32 232, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram303 to { }*)) nounwind
+       tail call void @llvm.dbg.stoppoint(i32 224, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind
+       %3 = tail call arm_apcscc  i8* @__deregister_frame_info_bases(i8* %begin) nounwind              ; <i8*> [#uses=1]
+       free i8* %3
+       tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram305 to { }*))
+       ret void
+
+return:                ; preds = %entry
+       tail call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
+       ret void
+}
index 6030c172acf155d9b04d37cd0d1e1fc03dea6454..c02fe0fa3f3f1d25da9b138b1c7ead320e89dcc6 100644 (file)
@@ -2,7 +2,6 @@
 // print line numbers in asm.
 // RUN: %llvmgcc -S -O0 -g %s -o - | llvm-as | \
 // RUN:    llc --disable-fp-elim -f -O0 -relocation-model=pic | grep {# SrcLine 25}
-// XFAIL: *
 
 #include <stdlib.h>
 
index f34feef0c28d64df01f2abf77c1625570f29e0c3..206c90b75db5d3e1335b97f5ec1af9e987c608ce 100644 (file)
@@ -19,6 +19,7 @@
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/MathExtras.h"
 #include <algorithm>
+#include <sstream>
 #include <iostream>
 using namespace llvm;
 
@@ -32,7 +33,11 @@ static bool isIdentChar(char C) {
 // This should be an anon namespace, this works around a GCC warning.
 namespace llvm {  
   struct AsmWriterOperand {
-    enum { isLiteralTextOperand, isMachineInstrOperand } OperandType;
+    enum OpType {
+      isLiteralTextOperand, 
+      isMachineInstrOperand,
+      isLiteralStatementOperand
+    } OperandType;
 
     /// Str - For isLiteralTextOperand, this IS the literal text.  For
     /// isMachineInstrOperand, this is the PrinterMethodName for the operand.
@@ -47,14 +52,16 @@ namespace llvm {
     std::string MiModifier;
 
     // To make VS STL happy
-    AsmWriterOperand():OperandType(isLiteralTextOperand) {}
+    AsmWriterOperand(OpType op = isLiteralTextOperand):OperandType(op) {}
 
-    explicit AsmWriterOperand(const std::string &LitStr)
-      : OperandType(isLiteralTextOperand), Str(LitStr) {}
+    AsmWriterOperand(const std::string &LitStr,
+                     OpType op = isLiteralTextOperand)
+      : OperandType(op), Str(LitStr) {}
 
     AsmWriterOperand(const std::string &Printer, unsigned OpNo, 
-                     const std::string &Modifier) 
-      : OperandType(isMachineInstrOperand), Str(Printer), MIOpNo(OpNo),
+                     const std::string &Modifier,
+                     OpType op = isMachineInstrOperand) 
+      : OperandType(op), Str(Printer), MIOpNo(OpNo),
       MiModifier(Modifier) {}
 
     bool operator!=(const AsmWriterOperand &Other) const {
@@ -78,6 +85,22 @@ namespace llvm {
     std::vector<AsmWriterOperand> Operands;
     const CodeGenInstruction *CGI;
 
+    /// MAX_GROUP_NESTING_LEVEL - The maximum number of group nesting
+    /// levels we ever expect to see in an asm operand.
+    static const int MAX_GROUP_NESTING_LEVEL = 10;
+
+    /// GroupLevel - The level of nesting of the current operand
+    /// group, such as [reg + (reg + offset)].  -1 means we are not in
+    /// a group.
+    int GroupLevel;
+
+    /// GroupDelim - Remember the delimeter for a group operand.
+    char GroupDelim[MAX_GROUP_NESTING_LEVEL];
+
+    /// InGroup - Determine whether we are in the middle of an
+    /// operand group.
+    bool InGroup() const { return GroupLevel != -1; }
+
     AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant);
 
     /// MatchesAllButOneOp - If this instruction is exactly identical to the
@@ -89,6 +112,70 @@ namespace llvm {
     void AddLiteralString(const std::string &Str) {
       // If the last operand was already a literal text string, append this to
       // it, otherwise add a new operand.
+
+      std::string::size_type SearchStart = 0;
+      std::string::size_type SpaceStartPos = std::string::npos;
+      do {
+        // Search for whitespace and replace with calls to set the
+        // output column.
+        SpaceStartPos = Str.find_first_of(" \t", SearchStart);
+        // Assume grouped text is one operand.
+        std::string::size_type StartDelimPos = Str.find_first_of("[{(", SearchStart);
+
+        SearchStart = std::string::npos;
+
+        if (StartDelimPos != std::string::npos) {
+          ++GroupLevel;
+          assert(GroupLevel < MAX_GROUP_NESTING_LEVEL
+                 && "Exceeded maximum operand group nesting level");
+          GroupDelim[GroupLevel] = Str[StartDelimPos];
+          if (SpaceStartPos != std::string::npos &&
+              SpaceStartPos > StartDelimPos) {
+            // This space doesn't count.
+            SpaceStartPos = std::string::npos;
+          }
+        }
+
+        if (InGroup()) {
+          // Find the end delimiter.
+          char EndDelim = (GroupDelim[GroupLevel] == '{' ? '}' : 
+                           (GroupDelim[GroupLevel] == '(' ? ')' : ']'));
+          std::string::size_type EndDelimSearchStart =
+            StartDelimPos == std::string::npos ? 0 : StartDelimPos+1;
+          std::string::size_type EndDelimPos = Str.find(EndDelim,
+                                                        EndDelimSearchStart);
+          SearchStart = EndDelimPos;
+          if (EndDelimPos != std::string::npos) {
+            // Iterate.
+            SearchStart = EndDelimPos + 1;
+            --GroupLevel;
+            assert(GroupLevel > -2 && "Too many end delimeters!");
+          }
+          if (InGroup())
+            SpaceStartPos = std::string::npos;
+        }
+      } while (SearchStart != std::string::npos);
+
+
+      if (SpaceStartPos != std::string::npos) {
+        std::string::size_type SpaceEndPos = 
+          Str.find_first_not_of(" \t", SpaceStartPos+1);
+        if (SpaceStartPos != 0) {
+          // Emit the first part of the string.
+          AddLiteralString(Str.substr(0, SpaceStartPos));
+        }
+        Operands.push_back(
+          AsmWriterOperand(
+            "O.PadToColumn(TAI->getOperandColumn(OperandColumn++), 1);\n",
+            AsmWriterOperand::isLiteralStatementOperand));
+        if (SpaceEndPos != std::string::npos) {
+          // Emit the last part of the string.
+          AddLiteralString(Str.substr(SpaceEndPos));
+        }
+        // We've emitted the whole string.
+        return;
+      }
+      
       if (!Operands.empty() &&
           Operands.back().OperandType == AsmWriterOperand::isLiteralTextOperand)
         Operands.back().Str.append(Str);
@@ -103,6 +190,18 @@ std::string AsmWriterOperand::getCode() const {
   if (OperandType == isLiteralTextOperand)
     return "O << \"" + Str + "\"; ";
 
+  if (OperandType == isLiteralStatementOperand) {
+    return Str;
+  }
+
+  if (OperandType == isLiteralStatementOperand) {
+    return Str;
+  }
+
+  if (OperandType == isLiteralStatementOperand) {
+    return Str;
+  }
+
   std::string Result = Str + "(MI";
   if (MIOpNo != ~0U)
     Result += ", " + utostr(MIOpNo);
@@ -115,7 +214,8 @@ std::string AsmWriterOperand::getCode() const {
 /// ParseAsmString - Parse the specified Instruction's AsmString into this
 /// AsmWriterInst.
 ///
-AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant) {
+AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant)
+    : GroupLevel(-1) {
   this->CGI = &CGI;
   unsigned CurVariant = ~0U;  // ~0 if we are outside a {.|.|.} region, other #.
 
@@ -188,7 +288,7 @@ AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant) {
     } else {
       // Get the name of the variable.
       std::string::size_type VarEnd = DollarPos+1;
-
       // handle ${foo}bar as $foo by detecting whether the character following
       // the dollar sign is a curly brace.  If so, advance VarEnd and DollarPos
       // so the variable name does not contain the leading curly brace.
@@ -260,6 +360,9 @@ AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant) {
     }
   }
 
+  Operands.push_back(
+    AsmWriterOperand("EmitComments(*MI);\n",
+                     AsmWriterOperand::isLiteralStatementOperand));
   AddLiteralString("\\n");
 }
 
@@ -357,7 +460,6 @@ static void EmitInstructions(std::vector<AsmWriterInst> &Insts,
     }
     O << "\n";
   }
-
   O << "    break;\n";
 }
 
@@ -385,8 +487,9 @@ FindUniqueOperandCommands(std::vector<std::string> &UniqueOperandCommands,
     Command = "    " + Inst->Operands[0].getCode() + "\n";
 
     // If this is the last operand, emit a return.
-    if (Inst->Operands.size() == 1)
+    if (Inst->Operands.size() == 1) {
       Command += "    return true;\n";
+    }
     
     // Check to see if we already have 'Command' in UniqueOperandCommands.
     // If not, add it.
@@ -431,7 +534,10 @@ FindUniqueOperandCommands(std::vector<std::string> &UniqueOperandCommands,
       // Otherwise, scan to see if all of the other instructions in this command
       // set share the operand.
       bool AllSame = true;
-      
+      // Keep track of the maximum, number of operands or any
+      // instruction we see in the group.
+      size_t MaxSize = FirstInst->Operands.size();
+
       for (NIT = std::find(NIT+1, InstIdxs.end(), CommandIdx);
            NIT != InstIdxs.end();
            NIT = std::find(NIT+1, InstIdxs.end(), CommandIdx)) {
@@ -439,6 +545,11 @@ FindUniqueOperandCommands(std::vector<std::string> &UniqueOperandCommands,
         // matches, we're ok, otherwise bail out.
         const AsmWriterInst *OtherInst = 
           getAsmWriterInstByID(NIT-InstIdxs.begin());
+
+        if (OtherInst &&
+            OtherInst->Operands.size() > FirstInst->Operands.size())
+          MaxSize = std::max(MaxSize, OtherInst->Operands.size());
+
         if (!OtherInst || OtherInst->Operands.size() == Op ||
             OtherInst->Operands[Op] != FirstInst->Operands[Op]) {
           AllSame = false;
@@ -452,8 +563,12 @@ FindUniqueOperandCommands(std::vector<std::string> &UniqueOperandCommands,
       std::string Command = "    " + FirstInst->Operands[Op].getCode() + "\n";
       
       // If this is the last operand, emit a return after the code.
-      if (FirstInst->Operands.size() == Op+1)
+      if (FirstInst->Operands.size() == Op+1 &&
+          // Don't early-out too soon.  Other instructions in this
+          // group may have more operands.
+          FirstInst->Operands.size() == MaxSize) {
         Command += "    return true;\n";
+      }
       
       UniqueOperandCommands[CommandIdx] += Command;
       InstOpsUsed[CommandIdx]++;
@@ -567,7 +682,7 @@ void AsmWriterEmitter::run(raw_ostream &O) {
       UniqueOperandCommands.push_back("    return true;\n");
       isFirst = false;
     }
-    
+
     std::vector<unsigned> InstIdxs;
     std::vector<unsigned> NumInstOpsHandled;
     FindUniqueOperandCommands(UniqueOperandCommands, InstIdxs,
@@ -675,8 +790,16 @@ void AsmWriterEmitter::run(raw_ostream &O) {
 
   O << "  // Emit the opcode for the instruction.\n"
     << "  unsigned Bits = OpInfo[MI->getOpcode()];\n"
-    << "  if (Bits == 0) return false;\n"
-    << "  O << AsmStrs+(Bits & " << (1 << AsmStrBits)-1 << ");\n\n";
+    << "  if (Bits == 0) return false;\n\n";
+
+  O << "  std::string OpStr(AsmStrs+(Bits & " << (1 << AsmStrBits)-1 << "));\n"
+    << "  unsigned OperandColumn = 1;\n"
+    << "  O << OpStr;\n\n";
+
+  O << "  if (OpStr.find_last_of(\" \\t\") == OpStr.size()-1) {\n"
+    << "    O.PadToColumn(TAI->getOperandColumn(1));\n"
+    << "    OperandColumn = 2;\n"
+    << "  }\n\n";
 
   // Output the table driven operand information.
   BitsLeft = 32-AsmStrBits;
@@ -741,6 +864,7 @@ void AsmWriterEmitter::run(raw_ostream &O) {
     O << "  }\n";
     O << "  return true;\n";
   }
-  
+
+  O << "  return true;\n";
   O << "}\n";
 }