Home | History | Annotate | Download | only in Thumb2
      1 ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim -O3
      2 
      3 	%0 = type { i16, i8, i8 }		; type %0
      4 	%1 = type { [2 x i32], [2 x i32] }		; type %1
      5 	%2 = type { %struct.GAP }		; type %2
      6 	%3 = type { %struct.rec* }		; type %3
      7 	%4 = type { i8, i8, i16, i8, i8, i8, i8 }		; type %4
      8 	%5 = type { i8, i8, i8, i8 }		; type %5
      9 	%struct.COMPOSITE = type { i8, i16, i16 }
     10 	%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
     11 	%struct.FILE_POS = type { i8, i8, i16, i32 }
     12 	%struct.FIRST_UNION = type { %struct.FILE_POS }
     13 	%struct.FONT_INFO = type { %struct.metrics*, i8*, i16*, %struct.COMPOSITE*, i32, %struct.rec*, %struct.rec*, i16, i16, i16*, i8*, i8*, i16* }
     14 	%struct.FOURTH_UNION = type { %struct.STYLE }
     15 	%struct.GAP = type { i8, i8, i16 }
     16 	%struct.LIST = type { %struct.rec*, %struct.rec* }
     17 	%struct.SECOND_UNION = type { %0 }
     18 	%struct.STYLE = type { %2, %2, i16, i16, i32 }
     19 	%struct.THIRD_UNION = type { %1 }
     20 	%struct.__sFILEX = type opaque
     21 	%struct.__sbuf = type { i8*, i32 }
     22 	%struct.head_type = type { [2 x %struct.LIST], %struct.FIRST_UNION, %struct.SECOND_UNION, %struct.THIRD_UNION, %struct.FOURTH_UNION, %struct.rec*, %3, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, i32 }
     23 	%struct.metrics = type { i16, i16, i16, i16, i16 }
     24 	%struct.rec = type { %struct.head_type }
     25 @.str24239 = external constant [20 x i8], align 1		; <[20 x i8]*> [#uses=1]
     26 @no_file_pos = external global %4		; <%4*> [#uses=1]
     27 @.str19294 = external constant [9 x i8], align 1		; <[9 x i8]*> [#uses=1]
     28 @zz_lengths = external global [150 x i8]		; <[150 x i8]*> [#uses=1]
     29 @next_free.4772 = external global i8**		; <i8***> [#uses=3]
     30 @top_free.4773 = external global i8**		; <i8***> [#uses=2]
     31 @.str1575 = external constant [32 x i8], align 1		; <[32 x i8]*> [#uses=1]
     32 @zz_free = external global [524 x %struct.rec*]		; <[524 x %struct.rec*]*> [#uses=2]
     33 @zz_hold = external global %struct.rec*		; <%struct.rec**> [#uses=5]
     34 @zz_tmp = external global %struct.rec*		; <%struct.rec**> [#uses=2]
     35 @zz_res = external global %struct.rec*		; <%struct.rec**> [#uses=2]
     36 @xx_link = external global %struct.rec*		; <%struct.rec**> [#uses=2]
     37 @font_count = external global i32		; <i32*> [#uses=1]
     38 @.str81872 = external constant [10 x i8], align 1		; <[10 x i8]*> [#uses=1]
     39 @.str101874 = external constant [30 x i8], align 1		; <[30 x i8]*> [#uses=1]
     40 @.str111875 = external constant [17 x i8], align 1		; <[17 x i8]*> [#uses=1]
     41 @.str141878 = external constant [27 x i8], align 1		; <[27 x i8]*> [#uses=1]
     42 @out_fp = external global %struct.FILE*		; <%struct.FILE**> [#uses=3]
     43 @.str192782 = external constant [17 x i8], align 1		; <[17 x i8]*> [#uses=1]
     44 @cpexists = external global i32		; <i32*> [#uses=2]
     45 @.str212784 = external constant [17 x i8], align 1		; <[17 x i8]*> [#uses=1]
     46 @currentfont = external global i32		; <i32*> [#uses=3]
     47 @wordcount = external global i32		; <i32*> [#uses=1]
     48 @needs = external global %struct.rec*		; <%struct.rec**> [#uses=1]
     49 @.str742838 = external constant [6 x i8], align 1		; <[6 x i8]*> [#uses=1]
     50 @.str752839 = external constant [10 x i8], align 1		; <[10 x i8]*> [#uses=1]
     51 @.str1802944 = external constant [40 x i8], align 1		; <[40 x i8]*> [#uses=1]
     52 @.str1822946 = external constant [8 x i8], align 1		; <[8 x i8]*> [#uses=1]
     53 @.str1842948 = external constant [11 x i8], align 1		; <[11 x i8]*> [#uses=1]
     54 @.str1852949 = external constant [23 x i8], align 1		; <[23 x i8]*> [#uses=1]
     55 @.str1872951 = external constant [17 x i8], align 1		; <[17 x i8]*> [#uses=1]
     56 @.str1932957 = external constant [26 x i8], align 1		; <[26 x i8]*> [#uses=1]
     57 
     58 declare i32 @fprintf(%struct.FILE* nocapture, i8* nocapture, ...) nounwind
     59 
     60 declare i32 @"\01_fwrite"(i8*, i32, i32, i8*)
     61 
     62 declare i32 @remove(i8* nocapture) nounwind
     63 
     64 declare %struct.FILE* @OpenIncGraphicFile(i8*, i8 zeroext, %struct.rec** nocapture, %struct.FILE_POS*, i32* nocapture) nounwind
     65 
     66 declare %struct.rec* @MakeWord(i32, i8* nocapture, %struct.FILE_POS*) nounwind
     67 
     68 declare void @Error(i32, i32, i8*, i32, %struct.FILE_POS*, ...) nounwind
     69 
     70 declare i32 @"\01_fputs"(i8*, %struct.FILE*)
     71 
     72 declare noalias i8* @calloc(i32, i32) nounwind
     73 
     74 declare i8* @fgets(i8*, i32, %struct.FILE* nocapture) nounwind
     75 
     76 define void @PS_PrintGraphicInclude(%struct.rec* %x, i32 %colmark, i32 %rowmark) nounwind {
     77 entry:
     78 	%buff = alloca [512 x i8], align 4		; <[512 x i8]*> [#uses=5]
     79 	%0 = getelementptr %struct.rec, %struct.rec* %x, i32 0, i32 0, i32 1, i32 0, i32 0		; <i8*> [#uses=2]
     80 	%1 = load i8, i8* %0, align 4		; <i8> [#uses=1]
     81 	%2 = add i8 %1, -94		; <i8> [#uses=1]
     82 	%3 = icmp ugt i8 %2, 1		; <i1> [#uses=1]
     83 	br i1 %3, label %bb, label %bb1
     84 
     85 bb:		; preds = %entry
     86 	br label %bb1
     87 
     88 bb1:		; preds = %bb, %entry
     89 	%4 = getelementptr %struct.rec, %struct.rec* %x, i32 0, i32 0, i32 2		; <%struct.SECOND_UNION*> [#uses=1]
     90 	%5 = bitcast %struct.SECOND_UNION* %4 to %5*		; <%5*> [#uses=1]
     91 	%6 = getelementptr %5, %5* %5, i32 0, i32 1		; <i8*> [#uses=1]
     92 	%7 = load i8, i8* %6, align 1		; <i8> [#uses=1]
     93 	%8 = icmp eq i8 %7, 0		; <i1> [#uses=1]
     94 	br i1 %8, label %bb2, label %bb3
     95 
     96 bb2:		; preds = %bb1
     97 	call  void (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 1, i32 2, i8* getelementptr ([20 x i8], [20 x i8]* @.str24239, i32 0, i32 0), i32 0, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*), i8* getelementptr ([40 x i8], [40 x i8]* @.str1802944, i32 0, i32 0)) nounwind
     98 	br label %bb3
     99 
    100 bb3:		; preds = %bb2, %bb1
    101 	%9 = load %struct.rec*, %struct.rec** undef, align 4		; <%struct.rec*> [#uses=0]
    102 	br label %bb5
    103 
    104 bb5:		; preds = %bb5, %bb3
    105 	%y.0 = load %struct.rec*, %struct.rec** null		; <%struct.rec*> [#uses=2]
    106 	br i1 false, label %bb5, label %bb6
    107 
    108 bb6:		; preds = %bb5
    109 	%10 = load i8, i8* %0, align 4		; <i8> [#uses=1]
    110 	%11 = getelementptr %struct.rec, %struct.rec* %y.0, i32 0, i32 0, i32 1, i32 0		; <%struct.FILE_POS*> [#uses=1]
    111 	%12 = call  %struct.FILE* @OpenIncGraphicFile(i8* undef, i8 zeroext %10, %struct.rec** null, %struct.FILE_POS* %11, i32* undef) nounwind		; <%struct.FILE*> [#uses=4]
    112 	br i1 false, label %bb7, label %bb8
    113 
    114 bb7:		; preds = %bb6
    115 	unreachable
    116 
    117 bb8:		; preds = %bb6
    118 	%13 = and i32 undef, 4095		; <i32> [#uses=2]
    119 	%14 = load i32, i32* @currentfont, align 4		; <i32> [#uses=0]
    120 	br i1 false, label %bb10, label %bb9
    121 
    122 bb9:		; preds = %bb8
    123 	%15 = icmp ult i32 0, %13		; <i1> [#uses=1]
    124 	br i1 %15, label %bb.i, label %FontHalfXHeight.exit
    125 
    126 bb.i:		; preds = %bb9
    127 	call  void (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 1, i32 2, i8* getelementptr ([20 x i8], [20 x i8]* @.str24239, i32 0, i32 0), i32 0, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*), i8* getelementptr ([17 x i8], [17 x i8]* @.str111875, i32 0, i32 0)) nounwind
    128 	%.pre186 = load i32, i32* @currentfont, align 4		; <i32> [#uses=1]
    129 	br label %FontHalfXHeight.exit
    130 
    131 FontHalfXHeight.exit:		; preds = %bb.i, %bb9
    132 	%16 = phi i32 [ %.pre186, %bb.i ], [ %13, %bb9 ]		; <i32> [#uses=1]
    133 	br i1 false, label %bb.i1, label %bb1.i
    134 
    135 bb.i1:		; preds = %FontHalfXHeight.exit
    136 	br label %bb1.i
    137 
    138 bb1.i:		; preds = %bb.i1, %FontHalfXHeight.exit
    139 	br i1 undef, label %bb2.i, label %FontSize.exit
    140 
    141 bb2.i:		; preds = %bb1.i
    142 	call  void (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 37, i32 61, i8* getelementptr ([30 x i8], [30 x i8]* @.str101874, i32 0, i32 0), i32 1, %struct.FILE_POS* null) nounwind
    143 	unreachable
    144 
    145 FontSize.exit:		; preds = %bb1.i
    146 	%17 = getelementptr %struct.FONT_INFO, %struct.FONT_INFO* undef, i32 %16, i32 5		; <%struct.rec**> [#uses=0]
    147 	%18 = load i32, i32* undef, align 4		; <i32> [#uses=1]
    148 	%19 = load i32, i32* @currentfont, align 4		; <i32> [#uses=2]
    149 	%20 = load i32, i32* @font_count, align 4		; <i32> [#uses=1]
    150 	%21 = icmp ult i32 %20, %19		; <i1> [#uses=1]
    151 	br i1 %21, label %bb.i5, label %FontName.exit
    152 
    153 bb.i5:		; preds = %FontSize.exit
    154 	call  void (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 1, i32 2, i8* getelementptr ([20 x i8], [20 x i8]* @.str24239, i32 0, i32 0), i32 0, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*), i8* getelementptr ([10 x i8], [10 x i8]* @.str81872, i32 0, i32 0)) nounwind
    155 	br label %FontName.exit
    156 
    157 FontName.exit:		; preds = %bb.i5, %FontSize.exit
    158 	%22 = phi %struct.FONT_INFO* [ undef, %bb.i5 ], [ undef, %FontSize.exit ]		; <%struct.FONT_INFO*> [#uses=1]
    159 	%23 = getelementptr %struct.FONT_INFO, %struct.FONT_INFO* %22, i32 %19, i32 5		; <%struct.rec**> [#uses=0]
    160 	%24 = call  i32 (%struct.FILE*, i8*, ...) @fprintf(%struct.FILE* undef, i8* getelementptr ([8 x i8], [8 x i8]* @.str1822946, i32 0, i32 0), i32 %18, i8* null) nounwind		; <i32> [#uses=0]
    161 	br label %bb10
    162 
    163 bb10:		; preds = %FontName.exit, %bb8
    164 	%25 = call  i32 @"\01_fwrite"(i8* getelementptr ([11 x i8], [11 x i8]* @.str1842948, i32 0, i32 0), i32 1, i32 10, i8* undef) nounwind		; <i32> [#uses=0]
    165 	%26 = sub i32 %rowmark, undef		; <i32> [#uses=1]
    166 	%27 = load %struct.FILE*, %struct.FILE** @out_fp, align 4		; <%struct.FILE*> [#uses=1]
    167 	%28 = call  i32 (%struct.FILE*, i8*, ...) @fprintf(%struct.FILE* %27, i8* getelementptr ([17 x i8], [17 x i8]* @.str212784, i32 0, i32 0), i32 undef, i32 %26) nounwind		; <i32> [#uses=0]
    168 	store i32 0, i32* @cpexists, align 4
    169 	%29 = call  i32 (%struct.FILE*, i8*, ...) @fprintf(%struct.FILE* undef, i8* getelementptr ([17 x i8], [17 x i8]* @.str192782, i32 0, i32 0), double 2.000000e+01, double 2.000000e+01) nounwind		; <i32> [#uses=0]
    170 	%30 = getelementptr %struct.rec, %struct.rec* %y.0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0		; <i32*> [#uses=1]
    171 	%31 = load i32, i32* %30, align 4		; <i32> [#uses=1]
    172 	%32 = sub i32 0, %31		; <i32> [#uses=1]
    173 	%33 = load i32, i32* undef, align 4		; <i32> [#uses=1]
    174 	%34 = sub i32 0, %33		; <i32> [#uses=1]
    175 	%35 = load %struct.FILE*, %struct.FILE** @out_fp, align 4		; <%struct.FILE*> [#uses=1]
    176 	%36 = call  i32 (%struct.FILE*, i8*, ...) @fprintf(%struct.FILE* %35, i8* getelementptr ([17 x i8], [17 x i8]* @.str212784, i32 0, i32 0), i32 %32, i32 %34) nounwind		; <i32> [#uses=0]
    177 	store i32 0, i32* @cpexists, align 4
    178 	%37 = load %struct.rec*, %struct.rec** null, align 4		; <%struct.rec*> [#uses=1]
    179 	%38 = getelementptr %struct.rec, %struct.rec* %37, i32 0, i32 0, i32 4		; <%struct.FOURTH_UNION*> [#uses=1]
    180 	%39 = call  i32 (%struct.FILE*, i8*, ...) @fprintf(%struct.FILE* undef, i8* getelementptr ([23 x i8], [23 x i8]* @.str1852949, i32 0, i32 0), %struct.FOURTH_UNION* %38) nounwind		; <i32> [#uses=0]
    181 	%buff14 = getelementptr [512 x i8], [512 x i8]* %buff, i32 0, i32 0		; <i8*> [#uses=5]
    182 	%40 = call  i8* @fgets(i8* %buff14, i32 512, %struct.FILE* %12) nounwind		; <i8*> [#uses=0]
    183 	%iftmp.506.0 = select i1 undef, i32 2, i32 0		; <i32> [#uses=1]
    184 	%41 = getelementptr [512 x i8], [512 x i8]* %buff, i32 0, i32 26		; <i8*> [#uses=1]
    185 	br label %bb100.outer.outer
    186 
    187 bb100.outer.outer:		; preds = %bb83, %bb10
    188 	%state.0.ph.ph = phi i32 [ %iftmp.506.0, %bb10 ], [ undef, %bb83 ]		; <i32> [#uses=1]
    189 	%x_addr.0.ph.ph = phi %struct.rec* [ %x, %bb10 ], [ %71, %bb83 ]		; <%struct.rec*> [#uses=1]
    190 	%42 = getelementptr %struct.rec, %struct.rec* %x_addr.0.ph.ph, i32 0, i32 0, i32 1, i32 0		; <%struct.FILE_POS*> [#uses=0]
    191 	br label %bb100.outer
    192 
    193 bb.i80:		; preds = %bb3.i85
    194 	%43 = icmp eq i8 %44, %46		; <i1> [#uses=1]
    195 	%indvar.next.i79 = add i32 %indvar.i81, 1		; <i32> [#uses=1]
    196 	br i1 %43, label %bb2.i84, label %bb2.i51
    197 
    198 bb2.i84:		; preds = %bb100.outer, %bb.i80
    199 	%indvar.i81 = phi i32 [ %indvar.next.i79, %bb.i80 ], [ 0, %bb100.outer ]		; <i32> [#uses=3]
    200 	%pp.0.i82 = getelementptr [27 x i8], [27 x i8]* @.str141878, i32 0, i32 %indvar.i81		; <i8*> [#uses=2]
    201 	%sp.0.i83 = getelementptr [512 x i8], [512 x i8]* %buff, i32 0, i32 %indvar.i81		; <i8*> [#uses=1]
    202 	%44 = load i8, i8* %sp.0.i83, align 1		; <i8> [#uses=2]
    203 	%45 = icmp eq i8 %44, 0		; <i1> [#uses=1]
    204 	br i1 %45, label %StringBeginsWith.exit88thread-split, label %bb3.i85
    205 
    206 bb3.i85:		; preds = %bb2.i84
    207 	%46 = load i8, i8* %pp.0.i82, align 1		; <i8> [#uses=3]
    208 	%47 = icmp eq i8 %46, 0		; <i1> [#uses=1]
    209 	br i1 %47, label %StringBeginsWith.exit88, label %bb.i80
    210 
    211 StringBeginsWith.exit88thread-split:		; preds = %bb2.i84
    212 	%.pr = load i8, i8* %pp.0.i82		; <i8> [#uses=1]
    213 	br label %StringBeginsWith.exit88
    214 
    215 StringBeginsWith.exit88:		; preds = %StringBeginsWith.exit88thread-split, %bb3.i85
    216 	%48 = phi i8 [ %.pr, %StringBeginsWith.exit88thread-split ], [ %46, %bb3.i85 ]		; <i8> [#uses=1]
    217 	%phitmp91 = icmp eq i8 %48, 0		; <i1> [#uses=1]
    218 	br i1 %phitmp91, label %bb3.i77, label %bb2.i51
    219 
    220 bb2.i.i68:		; preds = %bb3.i77
    221 	br i1 false, label %bb2.i51, label %bb2.i75
    222 
    223 bb2.i75:		; preds = %bb2.i.i68
    224 	br label %bb3.i77
    225 
    226 bb3.i77:		; preds = %bb2.i75, %StringBeginsWith.exit88
    227 	%sp.0.i76 = getelementptr [512 x i8], [512 x i8]* %buff, i32 0, i32 undef		; <i8*> [#uses=1]
    228 	%49 = load i8, i8* %sp.0.i76, align 1		; <i8> [#uses=1]
    229 	%50 = icmp eq i8 %49, 0		; <i1> [#uses=1]
    230 	br i1 %50, label %bb24, label %bb2.i.i68
    231 
    232 bb24:		; preds = %bb3.i77
    233 	%51 = call  %struct.rec* @MakeWord(i32 11, i8* %41, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*)) nounwind		; <%struct.rec*> [#uses=0]
    234 	%52 = load i8, i8* getelementptr ([150 x i8], [150 x i8]* @zz_lengths, i32 0, i32 0), align 4		; <i8> [#uses=1]
    235 	%53 = zext i8 %52 to i32		; <i32> [#uses=2]
    236 	%54 = getelementptr [524 x %struct.rec*], [524 x %struct.rec*]* @zz_free, i32 0, i32 %53		; <%struct.rec**> [#uses=2]
    237 	%55 = load %struct.rec*, %struct.rec** %54, align 4		; <%struct.rec*> [#uses=3]
    238 	%56 = icmp eq %struct.rec* %55, null		; <i1> [#uses=1]
    239 	br i1 %56, label %bb27, label %bb28
    240 
    241 bb27:		; preds = %bb24
    242 	br i1 undef, label %bb.i56, label %GetMemory.exit62
    243 
    244 bb.i56:		; preds = %bb27
    245 	br i1 undef, label %bb1.i58, label %bb2.i60
    246 
    247 bb1.i58:		; preds = %bb.i56
    248 	call  void (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 31, i32 1, i8* getelementptr ([32 x i8], [32 x i8]* @.str1575, i32 0, i32 0), i32 1, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*)) nounwind
    249 	br label %bb2.i60
    250 
    251 bb2.i60:		; preds = %bb1.i58, %bb.i56
    252 	%.pre1.i59 = phi i8** [ undef, %bb1.i58 ], [ undef, %bb.i56 ]		; <i8**> [#uses=1]
    253 	store i8** undef, i8*** @top_free.4773, align 4
    254 	br label %GetMemory.exit62
    255 
    256 GetMemory.exit62:		; preds = %bb2.i60, %bb27
    257 	%57 = phi i8** [ %.pre1.i59, %bb2.i60 ], [ undef, %bb27 ]		; <i8**> [#uses=1]
    258 	%58 = getelementptr i8*, i8** %57, i32 %53		; <i8**> [#uses=1]
    259 	store i8** %58, i8*** @next_free.4772, align 4
    260 	store %struct.rec* undef, %struct.rec** @zz_hold, align 4
    261 	br label %bb29
    262 
    263 bb28:		; preds = %bb24
    264 	store %struct.rec* %55, %struct.rec** @zz_hold, align 4
    265 	%59 = load %struct.rec*, %struct.rec** null, align 4		; <%struct.rec*> [#uses=1]
    266 	store %struct.rec* %59, %struct.rec** %54, align 4
    267 	br label %bb29
    268 
    269 bb29:		; preds = %bb28, %GetMemory.exit62
    270 	%.pre184 = phi %struct.rec* [ %55, %bb28 ], [ undef, %GetMemory.exit62 ]		; <%struct.rec*> [#uses=3]
    271 	store i8 0, i8* undef
    272 	store %struct.rec* %.pre184, %struct.rec** @xx_link, align 4
    273 	br i1 undef, label %bb35, label %bb31
    274 
    275 bb31:		; preds = %bb29
    276 	store %struct.rec* %.pre184, %struct.rec** undef
    277 	br label %bb35
    278 
    279 bb35:		; preds = %bb31, %bb29
    280 	br i1 undef, label %bb41, label %bb37
    281 
    282 bb37:		; preds = %bb35
    283 	%60 = load %struct.rec*, %struct.rec** null, align 4		; <%struct.rec*> [#uses=1]
    284 	store %struct.rec* %60, %struct.rec** undef
    285 	store %struct.rec* undef, %struct.rec** null
    286 	store %struct.rec* %.pre184, %struct.rec** null, align 4
    287 	br label %bb41
    288 
    289 bb41:		; preds = %bb37, %bb35
    290 	%61 = call  i8* @fgets(i8* %buff14, i32 512, %struct.FILE* %12) nounwind		; <i8*> [#uses=1]
    291 	%62 = icmp eq i8* %61, null		; <i1> [#uses=1]
    292 	%iftmp.554.0 = select i1 %62, i32 2, i32 1		; <i32> [#uses=1]
    293 	br label %bb100.outer
    294 
    295 bb.i47:		; preds = %bb3.i52
    296 	%63 = icmp eq i8 %64, %65		; <i1> [#uses=1]
    297 	br i1 %63, label %bb2.i51, label %bb2.i41
    298 
    299 bb2.i51:		; preds = %bb.i47, %bb2.i.i68, %StringBeginsWith.exit88, %bb.i80
    300 	%pp.0.i49 = getelementptr [17 x i8], [17 x i8]* @.str1872951, i32 0, i32 0		; <i8*> [#uses=1]
    301 	%64 = load i8, i8* null, align 1		; <i8> [#uses=1]
    302 	br i1 false, label %StringBeginsWith.exit55thread-split, label %bb3.i52
    303 
    304 bb3.i52:		; preds = %bb2.i51
    305 	%65 = load i8, i8* %pp.0.i49, align 1		; <i8> [#uses=1]
    306 	br i1 false, label %StringBeginsWith.exit55, label %bb.i47
    307 
    308 StringBeginsWith.exit55thread-split:		; preds = %bb2.i51
    309 	br label %StringBeginsWith.exit55
    310 
    311 StringBeginsWith.exit55:		; preds = %StringBeginsWith.exit55thread-split, %bb3.i52
    312 	br i1 false, label %bb49, label %bb2.i41
    313 
    314 bb49:		; preds = %StringBeginsWith.exit55
    315 	br label %bb2.i41
    316 
    317 bb2.i41:		; preds = %bb2.i41, %bb49, %StringBeginsWith.exit55, %bb.i47
    318 	br i1 false, label %bb2.i41, label %bb2.i.i15
    319 
    320 bb2.i.i15:		; preds = %bb2.i41
    321 	%pp.0.i.i13 = getelementptr [6 x i8], [6 x i8]* @.str742838, i32 0, i32 0		; <i8*> [#uses=1]
    322 	br i1 false, label %StringBeginsWith.exitthread-split.i18, label %bb3.i.i16
    323 
    324 bb3.i.i16:		; preds = %bb2.i.i15
    325 	%66 = load i8, i8* %pp.0.i.i13, align 1		; <i8> [#uses=1]
    326 	br label %StringBeginsWith.exit.i20
    327 
    328 StringBeginsWith.exitthread-split.i18:		; preds = %bb2.i.i15
    329 	br label %StringBeginsWith.exit.i20
    330 
    331 StringBeginsWith.exit.i20:		; preds = %StringBeginsWith.exitthread-split.i18, %bb3.i.i16
    332 	%67 = phi i8 [ undef, %StringBeginsWith.exitthread-split.i18 ], [ %66, %bb3.i.i16 ]		; <i8> [#uses=1]
    333 	%phitmp.i19 = icmp eq i8 %67, 0		; <i1> [#uses=1]
    334 	br i1 %phitmp.i19, label %bb58, label %bb2.i6.i26
    335 
    336 bb2.i6.i26:		; preds = %bb2.i6.i26, %StringBeginsWith.exit.i20
    337 	%indvar.i3.i23 = phi i32 [ %indvar.next.i1.i21, %bb2.i6.i26 ], [ 0, %StringBeginsWith.exit.i20 ]		; <i32> [#uses=3]
    338 	%sp.0.i5.i25 = getelementptr [512 x i8], [512 x i8]* %buff, i32 0, i32 %indvar.i3.i23		; <i8*> [#uses=0]
    339 	%pp.0.i4.i24 = getelementptr [10 x i8], [10 x i8]* @.str752839, i32 0, i32 %indvar.i3.i23		; <i8*> [#uses=1]
    340 	%68 = load i8, i8* %pp.0.i4.i24, align 1		; <i8> [#uses=0]
    341 	%indvar.next.i1.i21 = add i32 %indvar.i3.i23, 1		; <i32> [#uses=1]
    342 	br i1 undef, label %bb2.i6.i26, label %bb55
    343 
    344 bb55:		; preds = %bb2.i6.i26
    345 	%69 = call  i32 @"\01_fputs"(i8* %buff14, %struct.FILE* undef) nounwind		; <i32> [#uses=0]
    346 	unreachable
    347 
    348 bb58:		; preds = %StringBeginsWith.exit.i20
    349 	%70 = call  i8* @fgets(i8* %buff14, i32 512, %struct.FILE* %12) nounwind		; <i8*> [#uses=0]
    350 	%iftmp.560.0 = select i1 undef, i32 2, i32 0		; <i32> [#uses=1]
    351 	br label %bb100.outer
    352 
    353 bb.i7:		; preds = %bb3.i
    354 	br i1 false, label %bb2.i8, label %bb2.i.i
    355 
    356 bb2.i8:		; preds = %bb100.outer, %bb.i7
    357 	br i1 undef, label %StringBeginsWith.exitthread-split, label %bb3.i
    358 
    359 bb3.i:		; preds = %bb2.i8
    360 	br i1 undef, label %StringBeginsWith.exit, label %bb.i7
    361 
    362 StringBeginsWith.exitthread-split:		; preds = %bb2.i8
    363 	br label %StringBeginsWith.exit
    364 
    365 StringBeginsWith.exit:		; preds = %StringBeginsWith.exitthread-split, %bb3.i
    366 	%phitmp93 = icmp eq i8 undef, 0		; <i1> [#uses=1]
    367 	br i1 %phitmp93, label %bb66, label %bb2.i.i
    368 
    369 bb66:		; preds = %StringBeginsWith.exit
    370 	%71 = call  %struct.rec* @MakeWord(i32 11, i8* undef, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*)) nounwind		; <%struct.rec*> [#uses=4]
    371 	%72 = load i8, i8* getelementptr ([150 x i8], [150 x i8]* @zz_lengths, i32 0, i32 0), align 4		; <i8> [#uses=1]
    372 	%73 = zext i8 %72 to i32		; <i32> [#uses=2]
    373 	%74 = getelementptr [524 x %struct.rec*], [524 x %struct.rec*]* @zz_free, i32 0, i32 %73		; <%struct.rec**> [#uses=2]
    374 	%75 = load %struct.rec*, %struct.rec** %74, align 4		; <%struct.rec*> [#uses=3]
    375 	%76 = icmp eq %struct.rec* %75, null		; <i1> [#uses=1]
    376 	br i1 %76, label %bb69, label %bb70
    377 
    378 bb69:		; preds = %bb66
    379 	br i1 undef, label %bb.i2, label %GetMemory.exit
    380 
    381 bb.i2:		; preds = %bb69
    382 	%77 = call  noalias i8* @calloc(i32 1020, i32 4) nounwind		; <i8*> [#uses=1]
    383 	%78 = bitcast i8* %77 to i8**		; <i8**> [#uses=3]
    384 	store i8** %78, i8*** @next_free.4772, align 4
    385 	br i1 undef, label %bb1.i3, label %bb2.i4
    386 
    387 bb1.i3:		; preds = %bb.i2
    388 	call  void (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 31, i32 1, i8* getelementptr ([32 x i8], [32 x i8]* @.str1575, i32 0, i32 0), i32 1, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*)) nounwind
    389 	br label %bb2.i4
    390 
    391 bb2.i4:		; preds = %bb1.i3, %bb.i2
    392 	%.pre1.i = phi i8** [ undef, %bb1.i3 ], [ %78, %bb.i2 ]		; <i8**> [#uses=1]
    393 	%79 = phi i8** [ undef, %bb1.i3 ], [ %78, %bb.i2 ]		; <i8**> [#uses=1]
    394 	%80 = getelementptr i8*, i8** %79, i32 1020		; <i8**> [#uses=1]
    395 	store i8** %80, i8*** @top_free.4773, align 4
    396 	br label %GetMemory.exit
    397 
    398 GetMemory.exit:		; preds = %bb2.i4, %bb69
    399 	%81 = phi i8** [ %.pre1.i, %bb2.i4 ], [ undef, %bb69 ]		; <i8**> [#uses=2]
    400 	%82 = bitcast i8** %81 to %struct.rec*		; <%struct.rec*> [#uses=3]
    401 	%83 = getelementptr i8*, i8** %81, i32 %73		; <i8**> [#uses=1]
    402 	store i8** %83, i8*** @next_free.4772, align 4
    403 	store %struct.rec* %82, %struct.rec** @zz_hold, align 4
    404 	br label %bb71
    405 
    406 bb70:		; preds = %bb66
    407 	%84 = load %struct.rec*, %struct.rec** null, align 4		; <%struct.rec*> [#uses=1]
    408 	store %struct.rec* %84, %struct.rec** %74, align 4
    409 	br label %bb71
    410 
    411 bb71:		; preds = %bb70, %GetMemory.exit
    412 	%.pre185 = phi %struct.rec* [ %75, %bb70 ], [ %82, %GetMemory.exit ]		; <%struct.rec*> [#uses=8]
    413 	%85 = phi %struct.rec* [ %75, %bb70 ], [ %82, %GetMemory.exit ]		; <%struct.rec*> [#uses=1]
    414 	%86 = getelementptr %struct.rec, %struct.rec* %85, i32 0, i32 0, i32 1, i32 0, i32 0		; <i8*> [#uses=0]
    415 	%87 = getelementptr %struct.rec, %struct.rec* %.pre185, i32 0, i32 0, i32 0, i32 1, i32 1		; <%struct.rec**> [#uses=0]
    416 	%88 = getelementptr %struct.rec, %struct.rec* %.pre185, i32 0, i32 0, i32 0, i32 1, i32 0		; <%struct.rec**> [#uses=1]
    417 	store %struct.rec* %.pre185, %struct.rec** @xx_link, align 4
    418 	store %struct.rec* %.pre185, %struct.rec** @zz_res, align 4
    419 	%89 = load %struct.rec*, %struct.rec** @needs, align 4		; <%struct.rec*> [#uses=2]
    420 	store %struct.rec* %89, %struct.rec** @zz_hold, align 4
    421 	br i1 false, label %bb77, label %bb73
    422 
    423 bb73:		; preds = %bb71
    424 	%90 = getelementptr %struct.rec, %struct.rec* %89, i32 0, i32 0, i32 0, i32 0, i32 0		; <%struct.rec**> [#uses=1]
    425 	store %struct.rec* null, %struct.rec** @zz_tmp, align 4
    426 	store %struct.rec* %.pre185, %struct.rec** %90
    427 	store %struct.rec* %.pre185, %struct.rec** undef, align 4
    428 	br label %bb77
    429 
    430 bb77:		; preds = %bb73, %bb71
    431 	store %struct.rec* %.pre185, %struct.rec** @zz_res, align 4
    432 	store %struct.rec* %71, %struct.rec** @zz_hold, align 4
    433 	br i1 undef, label %bb83, label %bb79
    434 
    435 bb79:		; preds = %bb77
    436 	%91 = getelementptr %struct.rec, %struct.rec* %71, i32 0, i32 0, i32 0, i32 1, i32 0		; <%struct.rec**> [#uses=1]
    437 	store %struct.rec* null, %struct.rec** @zz_tmp, align 4
    438 	%92 = load %struct.rec*, %struct.rec** %88, align 4		; <%struct.rec*> [#uses=1]
    439 	store %struct.rec* %92, %struct.rec** %91
    440 	%93 = getelementptr %struct.rec, %struct.rec* undef, i32 0, i32 0, i32 0, i32 1, i32 1		; <%struct.rec**> [#uses=1]
    441 	store %struct.rec* %71, %struct.rec** %93, align 4
    442 	store %struct.rec* %.pre185, %struct.rec** undef, align 4
    443 	br label %bb83
    444 
    445 bb83:		; preds = %bb79, %bb77
    446 	br label %bb100.outer.outer
    447 
    448 bb.i.i:		; preds = %bb3.i.i
    449 	br i1 undef, label %bb2.i.i, label %bb2.i6.i
    450 
    451 bb2.i.i:		; preds = %bb.i.i, %StringBeginsWith.exit, %bb.i7
    452 	br i1 undef, label %StringBeginsWith.exitthread-split.i, label %bb3.i.i
    453 
    454 bb3.i.i:		; preds = %bb2.i.i
    455 	br i1 undef, label %StringBeginsWith.exit.i, label %bb.i.i
    456 
    457 StringBeginsWith.exitthread-split.i:		; preds = %bb2.i.i
    458 	br label %StringBeginsWith.exit.i
    459 
    460 StringBeginsWith.exit.i:		; preds = %StringBeginsWith.exitthread-split.i, %bb3.i.i
    461 	br i1 false, label %bb94, label %bb2.i6.i
    462 
    463 bb.i2.i:		; preds = %bb3.i7.i
    464 	br i1 false, label %bb2.i6.i, label %bb91
    465 
    466 bb2.i6.i:		; preds = %bb.i2.i, %StringBeginsWith.exit.i, %bb.i.i
    467 	br i1 undef, label %strip_out.exitthread-split, label %bb3.i7.i
    468 
    469 bb3.i7.i:		; preds = %bb2.i6.i
    470 	%94 = load i8, i8* undef, align 1		; <i8> [#uses=1]
    471 	br i1 undef, label %strip_out.exit, label %bb.i2.i
    472 
    473 strip_out.exitthread-split:		; preds = %bb2.i6.i
    474 	%.pr100 = load i8, i8* undef		; <i8> [#uses=1]
    475 	br label %strip_out.exit
    476 
    477 strip_out.exit:		; preds = %strip_out.exitthread-split, %bb3.i7.i
    478 	%95 = phi i8 [ %.pr100, %strip_out.exitthread-split ], [ %94, %bb3.i7.i ]		; <i8> [#uses=0]
    479 	br i1 undef, label %bb94, label %bb91
    480 
    481 bb91:		; preds = %strip_out.exit, %bb.i2.i
    482 	unreachable
    483 
    484 bb94:		; preds = %strip_out.exit, %StringBeginsWith.exit.i
    485 	%96 = call  i8* @fgets(i8* %buff14, i32 512, %struct.FILE* %12) nounwind		; <i8*> [#uses=0]
    486 	unreachable
    487 
    488 bb100.outer:		; preds = %bb58, %bb41, %bb100.outer.outer
    489 	%state.0.ph = phi i32 [ %state.0.ph.ph, %bb100.outer.outer ], [ %iftmp.560.0, %bb58 ], [ %iftmp.554.0, %bb41 ]		; <i32> [#uses=1]
    490 	switch i32 %state.0.ph, label %bb2.i84 [
    491 		i32 2, label %bb101.split
    492 		i32 1, label %bb2.i8
    493 	]
    494 
    495 bb101.split:		; preds = %bb100.outer
    496 	%97 = icmp eq i32 undef, 0		; <i1> [#uses=1]
    497 	br i1 %97, label %bb103, label %bb102
    498 
    499 bb102:		; preds = %bb101.split
    500 	%98 = call  i32 @remove(i8* getelementptr ([9 x i8], [9 x i8]* @.str19294, i32 0, i32 0)) nounwind		; <i32> [#uses=0]
    501 	unreachable
    502 
    503 bb103:		; preds = %bb101.split
    504 	%99 = load %struct.FILE*, %struct.FILE** @out_fp, align 4		; <%struct.FILE*> [#uses=1]
    505 	%100 = call  i32 (%struct.FILE*, i8*, ...) @fprintf(%struct.FILE* %99, i8* getelementptr ([26 x i8], [26 x i8]* @.str1932957, i32 0, i32 0)) nounwind		; <i32> [#uses=0]
    506 	store i32 0, i32* @wordcount, align 4
    507 	ret void
    508 }
    509