[LLVMdev] LiveIntervals analysis problem

Tomas Minac minac.tomas at gmail.com
Thu Feb 14 08:26:53 PST 2013


Hello everyone,

please I need your help.

To reproduce my problem I created simple pass for backends (TestPass.cpp 
in attached files). That pass I call from Mips backend in this way 
(MipsTargetMachine.cpp):
bool MipsPassConfig::addPreRegAlloc() {
      addPass(createTestPass());
      return false;
}

The problem becomes, when I am trying compile file ldtoa.ll (in attached 
files). Compiling process ends with errors from LiveIntervalsAnalysis. 
Everything is ok without TestPass.

I don't understand what's going on. My pass doesn't do anything but call 
analyse. It is strange that the compiling process fails few passes after 
my pass.

Some suggestions?

Greetings,
Tom

P.S.: I work with LLVM 3.2 release.


-------------- next part --------------
; ModuleID = '../../../../../newlib/newlib/libc/stdlib/ldtoa.c'
target datalayout = "e-p:32:32:32-S32-a0:0:32-n32"
target triple = "codasip"

%struct._reent = type { i32, %struct.__sFILE*, %struct.__sFILE*, %struct.__sFILE*, i32, [25 x i8], i32, i8*, i32, void (%struct._reent*)*, %struct._Bigint*, i32, %struct._Bigint*, %struct._Bigint**, i32, i8*, %union.anon.0, %struct._atexit*, %struct._atexit, void (i32)**, %struct._glue, [3 x %struct.__sFILE] }
%struct.__sFILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (%struct._reent*, i8*, i8*, i32)*, i32 (%struct._reent*, i8*, i8*, i32)*, i32 (%struct._reent*, i8*, i32, i32)*, i32 (%struct._reent*, i8*)*, %struct.__sbuf, i8*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i32, %struct._reent*, i32, %struct._mbstate_t, i32 }
%struct.__sbuf = type { i8*, i32 }
%struct._mbstate_t = type { i32, %union.anon }
%union.anon = type { i32 }
%struct._Bigint = type { %struct._Bigint*, i32, i32, i32, i32, [1 x i32] }
%union.anon.0 = type { %struct.anon.1 }
%struct.anon.1 = type { [30 x i8*], [30 x i32] }
%struct._atexit = type { %struct._atexit*, i32, [32 x void ()*], %struct._on_exit_args }
%struct._on_exit_args = type { [32 x i8*], [32 x i8*], i32, i32 }
%struct._glue = type { %struct._glue*, i32, %struct.__sFILE* }
%struct.LDPARMS = type { i32, i32, i32, i32, i32, i16, i16, i16, [13 x i16], [13 x i16] }

@etens = internal global [13 x [10 x i16]] [[10 x i16] [i16 25974, i16 19090, i16 -32694, i16 5439, i16 -14004, i16 -26726, i16 -30176, i16 20994, i16 -15264, i16 29989], [10 x i16] [i16 27186, i16 -12718, i16 12954, i16 10446, i16 -22707, i16 24036, i16 -15043, i16 15197, i16 -24949, i16 23186], [10 x i16] [i16 21100, i16 20686, i16 -3701, i16 15656, i16 25869, i16 3095, i16 -32395, i16 30086, i16 -13962, i16 19784], [10 x i16] [i16 -25498, i16 22776, i16 -17328, i16 23636, i16 -13211, i16 -28218, i16 -23026, i16 -24402, i16 -7399, i16 18083], [10 x i16] [i16 -31458, i16 -5449, i16 -26370, i16 -28645, i16 -8773, i16 -8563, i16 -25095, i16 -5125, i16 -21890, i16 17233], [10 x i16] [i16 565, i16 311, i16 14001, i16 13164, i16 -14737, i16 -29473, i16 -32535, i16 18377, i16 -27718, i16 16808], [10 x i16] [i16 20728, i16 9723, i16 -14485, i16 27505, i16 15551, i16 -22827, i16 -49, i16 8009, i16 -15752, i16 16595], [10 x i16] [i16 0, i16 0, i16 0, i16 0, i16 -4064, i16 -19043, i16 11120, i16 -21080, i16 -25147, i16 16489], [10 x i16] [i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 1024, i16 -13889, i16 -29157, i16 16436], [10 x i16] [i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 8192, i16 -16708, i16 16409], [10 x i16] [i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 -25536, i16 16396], [10 x i16] [i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 -14336, i16 16389], [10 x i16] [i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 -24576, i16 16386]], align 2
@eone = internal global [10 x i16] [i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 -32768, i16 16383], align 2
@ezero = internal global [10 x i16] zeroinitializer, align 2
@nan113 = internal unnamed_addr constant [8 x i16] [i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 -32768, i16 32767], align 2
@nan64 = internal unnamed_addr constant [6 x i16] [i16 0, i16 0, i16 0, i16 0, i16 -16384, i16 32767], align 2
@nan53 = internal unnamed_addr constant [4 x i16] [i16 0, i16 0, i16 0, i16 32760], align 2
@nan24 = internal unnamed_addr constant [2 x i16] [i16 0, i16 32704], align 2
@.str = private unnamed_addr constant [6 x i8] c" NaN \00", align 1
@.str1 = private unnamed_addr constant [12 x i8] c" -Infinity \00", align 1
@.str2 = private unnamed_addr constant [11 x i8] c" Infinity \00", align 1
@.str3 = private unnamed_addr constant [4 x i8] c"NaN\00", align 1
@emtens = internal global [13 x [10 x i16]] [[10 x i16] [i16 8240, i16 -12292, i16 -24125, i16 -32477, i16 11747, i16 -24610, i16 -11570, i16 1224, i16 -22819, i16 2776], [10 x i16] [i16 -32156, i16 -11573, i16 -3350, i16 4820, i16 18725, i16 11748, i16 13366, i16 21327, i16 -12626, i16 9579], [10 x i16] [i16 -2753, i16 -2408, i16 27603, i16 344, i16 -30810, i16 -16195, i16 -9641, i16 -32091, i16 -23898, i16 12981], [10 x i16] [i16 -6351, i16 1236, i16 -7182, i16 -11470, i16 28978, i16 -11748, i16 -9437, i16 -4558, i16 -28599, i16 14682], [10 x i16] [i16 -24002, i16 21256, i16 -261, i16 4437, i16 -1391, i16 6457, i16 25466, i16 17189, i16 -16335, i16 15532], [10 x i16] [i16 -7571, i16 -9250, i16 -12195, i16 -19466, i16 -21380, i16 -7008, i16 25788, i16 18044, i16 -8752, i16 15957], [10 x i16] [i16 10784, i16 25124, i16 18355, i16 -26409, i16 16163, i16 -5723, i16 -23239, i16 -5593, i16 -22401, i16 16170], [10 x i16] [i16 2907, i16 19186, i16 -23167, i16 6381, i16 26590, i16 -27462, i16 17721, i16 7853, i16 -12367, i16 16276], [10 x i16] [i16 -16527, i16 -22093, i16 31113, i16 -16792, i16 19502, i16 -7845, i16 -15283, i16 -27458, i16 -6507, i16 16329], [10 x i16] [i16 15693, i16 31805, i16 14010, i16 3371, i16 -574, i16 -12548, i16 -31647, i16 30481, i16 -21556, i16 16356], [10 x i16] [i16 -16043, i16 -23384, i16 16462, i16 24851, i16 -11325, i16 25899, i16 -7655, i16 5976, i16 -11849, i16 16369], [10 x i16] [i16 -10486, i16 28835, i16 2621, i16 -23593, i16 15728, i16 -10486, i16 28835, i16 2621, i16 -23593, i16 16376], [10 x i16] [i16 -13107, i16 -13108, i16 -13108, i16 -13108, i16 -13108, i16 -13108, i16 -13108, i16 -13108, i16 -13108, i16 16379]], align 2
@.str4 = private unnamed_addr constant [4 x i8] c"E%d\00", align 1
@bmask = internal unnamed_addr constant [17 x i16] [i16 -1, i16 -2, i16 -4, i16 -8, i16 -16, i16 -32, i16 -64, i16 -128, i16 -256, i16 -512, i16 -1024, i16 -2048, i16 -4096, i16 -8192, i16 -16384, i16 -32768, i16 0], align 2

define i8* @_ldtoa_r(%struct._reent* %ptr, double %d, i32 %mode, i32 %ndigits, i32* nocapture %decpt, i32* nocapture %sign, i8** %rve) nounwind {
entry:
  %ai.i.i.i.i = alloca [13 x i16], align 2
  %bi.i.i.i.i = alloca [13 x i16], align 2
  %f.i.i = alloca [10 x i16], align 2
  %y.i = alloca [13 x i16], align 2
  %t.i = alloca [13 x i16], align 2
  %u.i = alloca [13 x i16], align 2
  %w.i = alloca [13 x i16], align 2
  %e = alloca [13 x i16], align 2
  %rnd = alloca %struct.LDPARMS, align 4
  %outbuf = alloca [57 x i8], align 1
  %du = alloca double, align 4
  store double %d, double* %du, align 4, !tbaa !0
  %rlast = getelementptr inbounds %struct.LDPARMS* %rnd, i32 0, i32 0
  store i32 -1, i32* %rlast, align 4, !tbaa !3
  %rndprc = getelementptr inbounds %struct.LDPARMS* %rnd, i32 0, i32 1
  store i32 144, i32* %rndprc, align 4, !tbaa !3
  %_result = getelementptr inbounds %struct._reent* %ptr, i32 0, i32 10
  %0 = load %struct._Bigint** %_result, align 4, !tbaa !4
  %tobool = icmp eq %struct._Bigint* %0, null
  br i1 %tobool, label %if.end, label %if.then

if.then:                                          ; preds = %entry
  %_result_k = getelementptr inbounds %struct._reent* %ptr, i32 0, i32 11
  %1 = load i32* %_result_k, align 4, !tbaa !3
  %_k = getelementptr inbounds %struct._Bigint* %0, i32 0, i32 1
  store i32 %1, i32* %_k, align 4, !tbaa !3
  %2 = load i32* %_result_k, align 4, !tbaa !3
  %shl = shl i32 1, %2
  %_maxwds = getelementptr inbounds %struct._Bigint* %0, i32 0, i32 2
  store i32 %shl, i32* %_maxwds, align 4, !tbaa !3
  call void @_Bfree(%struct._reent* %ptr, %struct._Bigint* %0) nounwind
  store %struct._Bigint* null, %struct._Bigint** %_result, align 4, !tbaa !4
  br label %if.end

if.end:                                           ; preds = %entry, %if.then
  %pe = bitcast double* %du to i16*
  %arraydecay = getelementptr inbounds [13 x i16]* %e, i32 0, i32 0
  call fastcc void @e53toe(i16* %pe, i16* %arraydecay)
  %arrayidx.i.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 9
  %3 = load i16* %arrayidx.i.i, align 2, !tbaa !5
  %and.i.i = and i16 %3, 32767
  %cmp.i.i = icmp eq i16 %and.i.i, 32767
  %4 = load i16* %arraydecay, align 2, !tbaa !5
  br i1 %cmp.i.i, label %for.cond.preheader.i.i, label %if.end.i

for.cond.preheader.i.i:                           ; preds = %if.end
  %cmp5.i.i = icmp eq i16 %4, 0
  br i1 %cmp5.i.i, label %for.inc.i.i, label %eisneg.exit

for.inc.i.i:                                      ; preds = %for.cond.preheader.i.i
  %incdec.ptr.i.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 1
  %5 = load i16* %incdec.ptr.i.i, align 2, !tbaa !5
  %cmp5.1.i.i = icmp eq i16 %5, 0
  br i1 %cmp5.1.i.i, label %for.inc.1.i.i, label %eisneg.exit

for.inc.1.i.i:                                    ; preds = %for.inc.i.i
  %incdec.ptr.1.i.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 2
  %6 = load i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  %cmp5.2.i.i = icmp eq i16 %6, 0
  br i1 %cmp5.2.i.i, label %for.inc.2.i.i, label %eisneg.exit

for.inc.2.i.i:                                    ; preds = %for.inc.1.i.i
  %incdec.ptr.2.i.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 3
  %7 = load i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  %cmp5.3.i.i = icmp eq i16 %7, 0
  br i1 %cmp5.3.i.i, label %for.inc.3.i.i, label %eisneg.exit

for.inc.3.i.i:                                    ; preds = %for.inc.2.i.i
  %incdec.ptr.3.i.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 4
  %8 = load i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  %cmp5.4.i.i = icmp eq i16 %8, 0
  br i1 %cmp5.4.i.i, label %for.inc.4.i.i, label %eisneg.exit

for.inc.4.i.i:                                    ; preds = %for.inc.3.i.i
  %incdec.ptr.4.i.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 5
  %9 = load i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  %cmp5.5.i.i = icmp eq i16 %9, 0
  br i1 %cmp5.5.i.i, label %for.inc.5.i.i, label %eisneg.exit

for.inc.5.i.i:                                    ; preds = %for.inc.4.i.i
  %incdec.ptr.5.i.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 6
  %10 = load i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  %cmp5.6.i.i = icmp eq i16 %10, 0
  br i1 %cmp5.6.i.i, label %for.inc.6.i.i, label %eisneg.exit

for.inc.6.i.i:                                    ; preds = %for.inc.5.i.i
  %incdec.ptr.6.i.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 7
  %11 = load i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  %cmp5.7.i.i = icmp eq i16 %11, 0
  br i1 %cmp5.7.i.i, label %eisnan.exit.i, label %eisneg.exit

eisnan.exit.i:                                    ; preds = %for.inc.6.i.i
  %incdec.ptr.7.i.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 8
  %12 = load i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  %not.cmp5.8.i.i = icmp eq i16 %12, 0
  br i1 %not.cmp5.8.i.i, label %if.end.i, label %eisneg.exit

if.end.i:                                         ; preds = %if.end, %eisnan.exit.i
  %.pre = phi i16 [ 0, %eisnan.exit.i ], [ %4, %if.end ]
  %phitmp = icmp sgt i16 %3, -1
  br label %eisneg.exit

eisneg.exit:                                      ; preds = %eisnan.exit.i, %for.inc.6.i.i, %for.inc.5.i.i, %for.inc.4.i.i, %for.inc.3.i.i, %for.inc.2.i.i, %for.inc.1.i.i, %for.inc.i.i, %for.cond.preheader.i.i, %if.end.i
  %13 = phi i16 [ %.pre, %if.end.i ], [ %4, %for.cond.preheader.i.i ], [ 0, %for.inc.i.i ], [ 0, %for.inc.1.i.i ], [ 0, %for.inc.2.i.i ], [ 0, %for.inc.3.i.i ], [ 0, %for.inc.4.i.i ], [ 0, %for.inc.5.i.i ], [ 0, %for.inc.6.i.i ], [ 0, %eisnan.exit.i ]
  %retval.0.i = phi i1 [ %phitmp, %if.end.i ], [ true, %for.cond.preheader.i.i ], [ true, %for.inc.i.i ], [ true, %for.inc.1.i.i ], [ true, %for.inc.2.i.i ], [ true, %for.inc.3.i.i ], [ true, %for.inc.4.i.i ], [ true, %for.inc.5.i.i ], [ true, %for.inc.6.i.i ], [ true, %eisnan.exit.i ]
  %14 = zext i1 %retval.0.i to i32
  %. = xor i32 %14, 1
  store i32 %., i32* %sign, align 4
  %cmp = icmp eq i32 %mode, 3
  %not.cmp = xor i1 %cmp, true
  %sub = sext i1 %not.cmp to i32
  %ndigits.addr.0 = add nsw i32 %sub, %ndigits
  %cmp13 = icmp eq i32 %mode, 0
  %.ndigits.addr.0 = select i1 %cmp13, i32 20, i32 %ndigits.addr.0
  %cmp16 = icmp sgt i32 %.ndigits.addr.0, 42
  %ndigits.addr.2 = select i1 %cmp16, i32 42, i32 %.ndigits.addr.0
  %arraydecay20 = getelementptr inbounds [57 x i8]* %outbuf, i32 0, i32 0
  %15 = bitcast [13 x i16]* %y.i to i8*
  call void @llvm.lifetime.start(i64 -1, i8* %15) nounwind
  %16 = bitcast [13 x i16]* %t.i to i8*
  call void @llvm.lifetime.start(i64 -1, i8* %16) nounwind
  %17 = bitcast [13 x i16]* %u.i to i8*
  call void @llvm.lifetime.start(i64 -1, i8* %17) nounwind
  %18 = bitcast [13 x i16]* %w.i to i8*
  call void @llvm.lifetime.start(i64 -1, i8* %18) nounwind
  %19 = load i32* %rndprc, align 4, !tbaa !3
  br i1 %cmp.i.i, label %for.cond.preheader.i.i231, label %entry.if.end_crit_edge.i

entry.if.end_crit_edge.i:                         ; preds = %eisneg.exit
  %incdec.ptr.i495.phi.trans.insert.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 1
  %.pre996.i = load i16* %incdec.ptr.i495.phi.trans.insert.i, align 2, !tbaa !5
  %incdec.ptr.1.i496.phi.trans.insert.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 2
  %.pre997.i = load i16* %incdec.ptr.1.i496.phi.trans.insert.i, align 2, !tbaa !5
  %incdec.ptr.2.i497.phi.trans.insert.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 3
  %.pre998.i = load i16* %incdec.ptr.2.i497.phi.trans.insert.i, align 2, !tbaa !5
  %incdec.ptr.3.i498.phi.trans.insert.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 4
  %.pre999.i = load i16* %incdec.ptr.3.i498.phi.trans.insert.i, align 2, !tbaa !5
  %incdec.ptr.4.i499.phi.trans.insert.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 5
  %.pre1000.i = load i16* %incdec.ptr.4.i499.phi.trans.insert.i, align 2, !tbaa !5
  %incdec.ptr.5.i500.phi.trans.insert.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 6
  %.pre1001.i = load i16* %incdec.ptr.5.i500.phi.trans.insert.i, align 2, !tbaa !5
  %incdec.ptr.6.i501.phi.trans.insert.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 7
  %.pre1002.i = load i16* %incdec.ptr.6.i501.phi.trans.insert.i, align 2, !tbaa !5
  %incdec.ptr.7.i502.phi.trans.insert.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 8
  %.pre1003.i = load i16* %incdec.ptr.7.i502.phi.trans.insert.i, align 2, !tbaa !5
  br label %if.end.i257

for.cond.preheader.i.i231:                        ; preds = %eisneg.exit
  %cmp5.i.i230 = icmp eq i16 %13, 0
  br i1 %cmp5.i.i230, label %for.inc.i.i234, label %if.then.i

for.inc.i.i234:                                   ; preds = %for.cond.preheader.i.i231
  %incdec.ptr.i.i232 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 1
  %20 = load i16* %incdec.ptr.i.i232, align 2, !tbaa !5
  %cmp5.1.i.i233 = icmp eq i16 %20, 0
  br i1 %cmp5.1.i.i233, label %for.inc.1.i.i237, label %if.then.i

for.inc.1.i.i237:                                 ; preds = %for.inc.i.i234
  %incdec.ptr.1.i.i235 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 2
  %21 = load i16* %incdec.ptr.1.i.i235, align 2, !tbaa !5
  %cmp5.2.i.i236 = icmp eq i16 %21, 0
  br i1 %cmp5.2.i.i236, label %for.inc.2.i.i240, label %if.then.i

for.inc.2.i.i240:                                 ; preds = %for.inc.1.i.i237
  %incdec.ptr.2.i.i238 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 3
  %22 = load i16* %incdec.ptr.2.i.i238, align 2, !tbaa !5
  %cmp5.3.i.i239 = icmp eq i16 %22, 0
  br i1 %cmp5.3.i.i239, label %for.inc.3.i.i243, label %if.then.i

for.inc.3.i.i243:                                 ; preds = %for.inc.2.i.i240
  %incdec.ptr.3.i.i241 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 4
  %23 = load i16* %incdec.ptr.3.i.i241, align 2, !tbaa !5
  %cmp5.4.i.i242 = icmp eq i16 %23, 0
  br i1 %cmp5.4.i.i242, label %for.inc.4.i.i246, label %if.then.i

for.inc.4.i.i246:                                 ; preds = %for.inc.3.i.i243
  %incdec.ptr.4.i.i244 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 5
  %24 = load i16* %incdec.ptr.4.i.i244, align 2, !tbaa !5
  %cmp5.5.i.i245 = icmp eq i16 %24, 0
  br i1 %cmp5.5.i.i245, label %for.inc.5.i.i249, label %if.then.i

for.inc.5.i.i249:                                 ; preds = %for.inc.4.i.i246
  %incdec.ptr.5.i.i247 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 6
  %25 = load i16* %incdec.ptr.5.i.i247, align 2, !tbaa !5
  %cmp5.6.i.i248 = icmp eq i16 %25, 0
  br i1 %cmp5.6.i.i248, label %for.inc.6.i.i252, label %if.then.i

for.inc.6.i.i252:                                 ; preds = %for.inc.5.i.i249
  %incdec.ptr.6.i.i250 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 7
  %26 = load i16* %incdec.ptr.6.i.i250, align 2, !tbaa !5
  %cmp5.7.i.i251 = icmp eq i16 %26, 0
  br i1 %cmp5.7.i.i251, label %eisnan.exit.i255, label %if.then.i

eisnan.exit.i255:                                 ; preds = %for.inc.6.i.i252
  %incdec.ptr.7.i.i253 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 8
  %27 = load i16* %incdec.ptr.7.i.i253, align 2, !tbaa !5
  %not.cmp5.8.i.i254 = icmp eq i16 %27, 0
  br i1 %not.cmp5.8.i.i254, label %if.end.i257, label %if.then.i

if.then.i:                                        ; preds = %eisnan.exit.i255, %for.inc.6.i.i252, %for.inc.5.i.i249, %for.inc.4.i.i246, %for.inc.3.i.i243, %for.inc.2.i.i240, %for.inc.1.i.i237, %for.inc.i.i234, %for.cond.preheader.i.i231
  %call2.i = call i32 (i8*, i8*, ...)* @sprintf(i8* %arraydecay20, i8* getelementptr inbounds ([6 x i8]* @.str, i32 0, i32 0)) nounwind
  br label %etoasc.exit

if.end.i257:                                      ; preds = %eisnan.exit.i255, %entry.if.end_crit_edge.i
  %28 = phi i16 [ %.pre1003.i, %entry.if.end_crit_edge.i ], [ 0, %eisnan.exit.i255 ]
  %29 = phi i16 [ %.pre1002.i, %entry.if.end_crit_edge.i ], [ 0, %eisnan.exit.i255 ]
  %30 = phi i16 [ %.pre1001.i, %entry.if.end_crit_edge.i ], [ 0, %eisnan.exit.i255 ]
  %31 = phi i16 [ %.pre1000.i, %entry.if.end_crit_edge.i ], [ 0, %eisnan.exit.i255 ]
  %32 = phi i16 [ %.pre999.i, %entry.if.end_crit_edge.i ], [ 0, %eisnan.exit.i255 ]
  %33 = phi i16 [ %.pre998.i, %entry.if.end_crit_edge.i ], [ 0, %eisnan.exit.i255 ]
  %34 = phi i16 [ %.pre997.i, %entry.if.end_crit_edge.i ], [ 0, %eisnan.exit.i255 ]
  %35 = phi i16 [ %.pre996.i, %entry.if.end_crit_edge.i ], [ 0, %eisnan.exit.i255 ]
  %36 = phi i16 [ %13, %entry.if.end_crit_edge.i ], [ 0, %eisnan.exit.i255 ]
  store i32 144, i32* %rndprc, align 4, !tbaa !3
  %arraydecay4.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 0
  %incdec.ptr1.i.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 1
  store i16 %36, i16* %arraydecay4.i, align 2, !tbaa !5
  %incdec.ptr1.1.i.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 2
  store i16 %35, i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  %incdec.ptr1.2.i.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 3
  store i16 %34, i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  %incdec.ptr1.3.i.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 4
  store i16 %33, i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  %incdec.ptr1.4.i.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 5
  store i16 %32, i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  %incdec.ptr1.5.i.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 6
  store i16 %31, i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  %incdec.ptr1.6.i.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 7
  store i16 %30, i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  %incdec.ptr1.7.i.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 8
  store i16 %29, i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  %incdec.ptr1.8.i.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 9
  store i16 %28, i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  %conv.i = zext i16 %3 to i32
  %and.i256 = and i32 %conv.i, 32768
  %tobool5.i = icmp eq i32 %and.i256, 0
  br i1 %tobool5.i, label %if.end11.i, label %if.then6.i

if.then6.i:                                       ; preds = %if.end.i257
  %and9.i = and i32 %conv.i, 32767
  %conv10.i = trunc i32 %and9.i to i16
  br label %if.end11.i

if.end11.i:                                       ; preds = %if.then6.i, %if.end.i257
  %storemerge.i = phi i16 [ %conv10.i, %if.then6.i ], [ %3, %if.end.i257 ]
  %sign.0.i = phi i16 [ -1, %if.then6.i ], [ 0, %if.end.i257 ]
  store i16 %storemerge.i, i16* %incdec.ptr1.8.i.i, align 2
  %arraydecay12.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 0
  %37 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), align 2, !tbaa !5
  %incdec.ptr1.i503.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 1
  store i16 %37, i16* %arraydecay12.i, align 2, !tbaa !5
  %38 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 1), align 2, !tbaa !5
  %incdec.ptr1.1.i504.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 2
  store i16 %38, i16* %incdec.ptr1.i503.i, align 2, !tbaa !5
  %39 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 2), align 2, !tbaa !5
  %incdec.ptr1.2.i505.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 3
  store i16 %39, i16* %incdec.ptr1.1.i504.i, align 2, !tbaa !5
  %40 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 3), align 2, !tbaa !5
  %incdec.ptr1.3.i506.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 4
  store i16 %40, i16* %incdec.ptr1.2.i505.i, align 2, !tbaa !5
  %41 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 4), align 2, !tbaa !5
  %incdec.ptr1.4.i507.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 5
  store i16 %41, i16* %incdec.ptr1.3.i506.i, align 2, !tbaa !5
  %42 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 5), align 2, !tbaa !5
  %incdec.ptr1.5.i508.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 6
  store i16 %42, i16* %incdec.ptr1.4.i507.i, align 2, !tbaa !5
  %43 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 6), align 2, !tbaa !5
  %incdec.ptr1.6.i509.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 7
  store i16 %43, i16* %incdec.ptr1.5.i508.i, align 2, !tbaa !5
  %44 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 7), align 2, !tbaa !5
  %incdec.ptr1.7.i510.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 8
  store i16 %44, i16* %incdec.ptr1.6.i509.i, align 2, !tbaa !5
  %45 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 8), align 2, !tbaa !5
  %incdec.ptr1.8.i511.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 9
  store i16 %45, i16* %incdec.ptr1.7.i510.i, align 2, !tbaa !5
  %46 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 9), align 2, !tbaa !5
  store i16 %46, i16* %incdec.ptr1.8.i511.i, align 2, !tbaa !5
  switch i16 %storemerge.i, label %land.lhs.true.i [
    i16 0, label %for.cond.i
    i16 32767, label %if.then30.i
  ]

for.cond.i:                                       ; preds = %if.end11.i, %for.body.i
  %k.0.i = phi i32 [ %inc.i, %for.body.i ], [ 0, %if.end11.i ]
  %cmp17.i = icmp slt i32 %k.0.i, 9
  br i1 %cmp17.i, label %for.body.i, label %isone.i

for.body.i:                                       ; preds = %for.cond.i
  %arrayidx19.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 %k.0.i
  %47 = load i16* %arrayidx19.i, align 2, !tbaa !5
  %cmp21.i = icmp eq i16 %47, 0
  %inc.i = add nsw i32 %k.0.i, 1
  br i1 %cmp21.i, label %for.cond.i, label %if.end49.i

if.then30.i:                                      ; preds = %if.end11.i
  %tobool31.i = icmp eq i16 %sign.0.i, 0
  br i1 %tobool31.i, label %if.else34.i, label %if.then32.i

if.then32.i:                                      ; preds = %if.then30.i
  %call33.i = call i32 (i8*, i8*, ...)* @sprintf(i8* %arraydecay20, i8* getelementptr inbounds ([12 x i8]* @.str1, i32 0, i32 0)) nounwind
  br label %etoasc.exit

if.else34.i:                                      ; preds = %if.then30.i
  %call35.i = call i32 (i8*, i8*, ...)* @sprintf(i8* %arraydecay20, i8* getelementptr inbounds ([11 x i8]* @.str2, i32 0, i32 0)) nounwind
  br label %etoasc.exit

land.lhs.true.i:                                  ; preds = %if.end11.i
  %cmp45.i = icmp sgt i16 %28, -1
  br i1 %cmp45.i, label %if.then47.i, label %if.end49.i

if.then47.i:                                      ; preds = %land.lhs.true.i
  %call48.i = call i32 (i8*, i8*, ...)* @sprintf(i8* %arraydecay20, i8* getelementptr inbounds ([4 x i8]* @.str3, i32 0, i32 0)) nounwind
  br label %etoasc.exit

if.end49.i:                                       ; preds = %for.body.i, %land.lhs.true.i
  %call51.i = call fastcc i32 @ecmp(i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), i16* %arraydecay4.i) nounwind
  %cmp52.i = icmp eq i32 %call51.i, 0
  br i1 %cmp52.i, label %isone.i, label %if.end55.i

if.end55.i:                                       ; preds = %if.end49.i
  %cmp56.i = icmp slt i32 %call51.i, 0
  br i1 %cmp56.i, label %if.then58.i, label %if.else123.i

if.then58.i:                                      ; preds = %if.end55.i
  %arraydecay60.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 0
  %48 = load i16* %arraydecay4.i, align 2, !tbaa !5
  %incdec.ptr1.i513.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 1
  store i16 %48, i16* %arraydecay60.i, align 2, !tbaa !5
  %49 = load i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  %incdec.ptr1.1.i515.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 2
  store i16 %49, i16* %incdec.ptr1.i513.i, align 2, !tbaa !5
  %50 = load i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  %incdec.ptr1.2.i517.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 3
  store i16 %50, i16* %incdec.ptr1.1.i515.i, align 2, !tbaa !5
  %51 = load i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  %incdec.ptr1.3.i519.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 4
  store i16 %51, i16* %incdec.ptr1.2.i517.i, align 2, !tbaa !5
  %52 = load i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  %incdec.ptr1.4.i521.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 5
  store i16 %52, i16* %incdec.ptr1.3.i519.i, align 2, !tbaa !5
  %53 = load i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  %incdec.ptr1.5.i523.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 6
  store i16 %53, i16* %incdec.ptr1.4.i521.i, align 2, !tbaa !5
  %54 = load i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  %incdec.ptr1.6.i525.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 7
  store i16 %54, i16* %incdec.ptr1.5.i523.i, align 2, !tbaa !5
  %55 = load i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  %incdec.ptr1.7.i527.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 8
  store i16 %55, i16* %incdec.ptr1.6.i525.i, align 2, !tbaa !5
  %56 = load i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  %incdec.ptr1.8.i529.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 9
  store i16 %56, i16* %incdec.ptr1.7.i527.i, align 2, !tbaa !5
  store i16 16526, i16* %incdec.ptr1.8.i529.i, align 2, !tbaa !5
  %arraydecay65.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 0
  %57 = bitcast [10 x i16]* %f.i.i to i8*
  %arraydecay.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 0
  %incdec.ptr1.i.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 1
  %incdec.ptr1.1.i.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 2
  %incdec.ptr1.2.i.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 3
  %incdec.ptr1.3.i.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 4
  %incdec.ptr1.4.i.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 5
  %incdec.ptr1.5.i.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 6
  %incdec.ptr1.6.i.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 7
  %incdec.ptr1.7.i.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 8
  %incdec.ptr1.8.i.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 9
  %incdec.ptr.i48.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 1
  %incdec.ptr.1.i49.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 2
  %incdec.ptr.2.i50.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 3
  %incdec.ptr.3.i51.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 4
  %incdec.ptr.4.i52.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 5
  %incdec.ptr.5.i53.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 6
  %incdec.ptr.6.i54.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 7
  %incdec.ptr.7.i55.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 8
  %incdec.ptr.8.i56.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 9
  %58 = bitcast [13 x i16]* %ai.i.i.i.i to i8*
  %59 = bitcast [13 x i16]* %bi.i.i.i.i to i8*
  %arraydecay.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 0
  %arraydecay8.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 0
  %arrayidx14.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 1
  %arrayidx16.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 1
  %incdec.ptr.1.i151.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 2
  %incdec.ptr.2.i153.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 3
  %incdec.ptr.3.i155.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 4
  %incdec.ptr.4.i157.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 5
  %incdec.ptr.5.i159.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 6
  %incdec.ptr.6.i161.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 7
  %incdec.ptr.7.i163.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 8
  %incdec.ptr.8.i165.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 9
  %incdec.ptr.9.i167.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 10
  %incdec.ptr.10.i169.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 11
  %incdec.ptr.1.i197.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 2
  %incdec.ptr.2.i199.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 3
  %incdec.ptr.3.i201.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 4
  %incdec.ptr.4.i203.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 5
  %incdec.ptr.5.i205.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 6
  %incdec.ptr.6.i207.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 7
  %incdec.ptr.7.i209.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 8
  %incdec.ptr.8.i211.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 9
  %incdec.ptr.9.i213.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 10
  %incdec.ptr.10.i215.i.i.i.i = getelementptr inbounds [13 x i16]* %ai.i.i.i.i, i32 0, i32 11
  %scevgep.i217.i.i.i.i = getelementptr [13 x i16]* %bi.i.i.i.i, i32 0, i32 12
  %scevgep.i194.i.i.i.i = getelementptr [13 x i16]* %ai.i.i.i.i, i32 0, i32 12
  br label %do.body.i

do.body.i:                                        ; preds = %noint.i, %if.then58.i
  %expon.0.i = phi i32 [ 0, %if.then58.i ], [ %expon.1.i, %noint.i ]
  %p.0.i = phi i16* [ getelementptr inbounds ([13 x [10 x i16]]* @etens, i32 0, i32 8, i32 0), %if.then58.i ], [ %add.ptr.i, %noint.i ]
  %m.0.i = phi i16 [ 16, %if.then58.i ], [ %shr492.i, %noint.i ]
  call fastcc void @ediv(i16* %p.0.i, i16* %arraydecay60.i, i16* %arraydecay12.i, %struct.LDPARMS* %rnd) nounwind
  call void @llvm.lifetime.start(i64 -1, i8* %57) nounwind
  %60 = load i16* %arraydecay12.i, align 2, !tbaa !5
  store i16 %60, i16* %arraydecay.i.i, align 2, !tbaa !5
  %61 = load i16* %incdec.ptr1.i503.i, align 2, !tbaa !5
  store i16 %61, i16* %incdec.ptr1.i.i.i, align 2, !tbaa !5
  %62 = load i16* %incdec.ptr1.1.i504.i, align 2, !tbaa !5
  store i16 %62, i16* %incdec.ptr1.1.i.i.i, align 2, !tbaa !5
  %63 = load i16* %incdec.ptr1.2.i505.i, align 2, !tbaa !5
  store i16 %63, i16* %incdec.ptr1.2.i.i.i, align 2, !tbaa !5
  %64 = load i16* %incdec.ptr1.3.i506.i, align 2, !tbaa !5
  store i16 %64, i16* %incdec.ptr1.3.i.i.i, align 2, !tbaa !5
  %65 = load i16* %incdec.ptr1.4.i507.i, align 2, !tbaa !5
  store i16 %65, i16* %incdec.ptr1.4.i.i.i, align 2, !tbaa !5
  %66 = load i16* %incdec.ptr1.5.i508.i, align 2, !tbaa !5
  store i16 %66, i16* %incdec.ptr1.5.i.i.i, align 2, !tbaa !5
  %67 = load i16* %incdec.ptr1.6.i509.i, align 2, !tbaa !5
  store i16 %67, i16* %incdec.ptr1.6.i.i.i, align 2, !tbaa !5
  %68 = load i16* %incdec.ptr1.7.i510.i, align 2, !tbaa !5
  store i16 %68, i16* %incdec.ptr1.7.i.i.i, align 2, !tbaa !5
  %69 = load i16* %incdec.ptr1.8.i511.i, align 2, !tbaa !5
  store i16 %69, i16* %incdec.ptr1.8.i.i.i, align 2, !tbaa !5
  %conv.i.i = zext i16 %69 to i32
  %and.i530.i = and i32 %conv.i.i, 32767
  %sub.i.i = add nsw i32 %and.i530.i, -16382
  %cmp.i531.i = icmp slt i32 %sub.i.i, 1
  br i1 %cmp.i531.i, label %if.then.i.i, label %if.end.i.i

if.then.i.i:                                      ; preds = %do.body.i
  store i16 0, i16* %arraydecay65.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.i48.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i49.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.2.i50.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.3.i51.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.4.i52.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i53.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.6.i54.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i55.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i56.i.i, align 2, !tbaa !5
  br label %isitneg.i.i

if.end.i.i:                                       ; preds = %do.body.i
  %sub2.i.i = sub i32 16526, %and.i530.i
  store i16 %60, i16* %arraydecay65.i, align 2, !tbaa !5
  store i16 %61, i16* %incdec.ptr.i48.i.i, align 2, !tbaa !5
  store i16 %62, i16* %incdec.ptr.1.i49.i.i, align 2, !tbaa !5
  store i16 %63, i16* %incdec.ptr.2.i50.i.i, align 2, !tbaa !5
  store i16 %64, i16* %incdec.ptr.3.i51.i.i, align 2, !tbaa !5
  store i16 %65, i16* %incdec.ptr.4.i52.i.i, align 2, !tbaa !5
  store i16 %66, i16* %incdec.ptr.5.i53.i.i, align 2, !tbaa !5
  store i16 %67, i16* %incdec.ptr.6.i54.i.i, align 2, !tbaa !5
  store i16 %68, i16* %incdec.ptr.7.i55.i.i, align 2, !tbaa !5
  store i16 %69, i16* %incdec.ptr.8.i56.i.i, align 2, !tbaa !5
  %cmp4.i.i = icmp slt i32 %sub2.i.i, 1
  br i1 %cmp4.i.i, label %for.cond66.i, label %while.cond.preheader.i.i

while.cond.preheader.i.i:                         ; preds = %if.end.i.i
  %cmp975.i.i = icmp sgt i32 %sub2.i.i, 15
  br i1 %cmp975.i.i, label %while.body.lr.ph.i.i, label %while.end.i.i

while.body.lr.ph.i.i:                             ; preds = %while.cond.preheader.i.i
  %70 = sub i32 16510, %and.i530.i
  %71 = lshr i32 %70, 4
  br label %while.body.i.i

while.body.i.i:                                   ; preds = %while.body.i.i, %while.body.lr.ph.i.i
  %p.077.i.i = phi i16* [ %arraydecay65.i, %while.body.lr.ph.i.i ], [ %incdec.ptr.i532.i, %while.body.i.i ]
  %e.076.i.i = phi i32 [ %sub2.i.i, %while.body.lr.ph.i.i ], [ %sub11.i.i, %while.body.i.i ]
  %incdec.ptr.i532.i = getelementptr inbounds i16* %p.077.i.i, i32 1
  store i16 0, i16* %p.077.i.i, align 2, !tbaa !5
  %sub11.i.i = add nsw i32 %e.076.i.i, -16
  %cmp9.i.i = icmp sgt i32 %sub11.i.i, 15
  br i1 %cmp9.i.i, label %while.body.i.i, label %while.cond.while.end_crit_edge.i.i

while.cond.while.end_crit_edge.i.i:               ; preds = %while.body.i.i
  %72 = shl nuw i32 %71, 4
  %73 = add i32 %71, 1
  %74 = sub i32 %70, %72
  %scevgep.i.i = getelementptr [13 x i16]* %w.i, i32 0, i32 %73
  %.pre.i.i = load i16* %scevgep.i.i, align 2, !tbaa !5
  br label %while.end.i.i

while.end.i.i:                                    ; preds = %while.cond.while.end_crit_edge.i.i, %while.cond.preheader.i.i
  %75 = phi i16 [ %.pre.i.i, %while.cond.while.end_crit_edge.i.i ], [ %60, %while.cond.preheader.i.i ]
  %p.0.lcssa.i.i = phi i16* [ %scevgep.i.i, %while.cond.while.end_crit_edge.i.i ], [ %arraydecay65.i, %while.cond.preheader.i.i ]
  %e.0.lcssa.i.i = phi i32 [ %74, %while.cond.while.end_crit_edge.i.i ], [ %sub2.i.i, %while.cond.preheader.i.i ]
  %arrayidx12.i.i = getelementptr inbounds [17 x i16]* @bmask, i32 0, i32 %e.0.lcssa.i.i
  %76 = load i16* %arrayidx12.i.i, align 2, !tbaa !5
  %and1547.i.i = and i16 %76, %75
  store i16 %and1547.i.i, i16* %p.0.lcssa.i.i, align 2, !tbaa !5
  br label %isitneg.i.i

isitneg.i.i:                                      ; preds = %while.end.i.i, %if.then.i.i
  %tobool.i.i = icmp slt i16 %69, 0
  br i1 %tobool.i.i, label %for.cond.i.i, label %for.cond66.i

for.cond.i.i:                                     ; preds = %isitneg.i.i, %for.body.i.i
  %i.0.i.i = phi i32 [ %inc.i.i, %for.body.i.i ], [ 0, %isitneg.i.i ]
  %cmp21.i.i = icmp slt i32 %i.0.i.i, 9
  br i1 %cmp21.i.i, label %for.body.i.i, label %for.cond66.i

for.body.i.i:                                     ; preds = %for.cond.i.i
  %arrayidx23.i.i = getelementptr inbounds [10 x i16]* %f.i.i, i32 0, i32 %i.0.i.i
  %77 = load i16* %arrayidx23.i.i, align 2, !tbaa !5
  %arrayidx25.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 %i.0.i.i
  %78 = load i16* %arrayidx25.i.i, align 2, !tbaa !5
  %cmp27.i.i = icmp eq i16 %77, %78
  %inc.i.i = add nsw i32 %i.0.i.i, 1
  br i1 %cmp27.i.i, label %for.cond.i.i, label %if.then29.i.i

if.then29.i.i:                                    ; preds = %for.body.i.i
  %79 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 9), align 2, !tbaa !5
  %and.i.i.i.i = and i16 %79, 32767
  %cmp.i.i.i.i = icmp eq i16 %and.i.i.i.i, 32767
  br i1 %cmp.i.i.i.i, label %for.cond.preheader.i.i.i.i, label %if.end.i.i.i

for.cond.preheader.i.i.i.i:                       ; preds = %if.then29.i.i
  %80 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), align 2, !tbaa !5
  %81 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 1), align 2, !tbaa !5
  %82 = or i16 %81, %80
  %83 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 2), align 2, !tbaa !5
  %84 = or i16 %82, %83
  %85 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 3), align 2, !tbaa !5
  %86 = or i16 %84, %85
  %87 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 4), align 2, !tbaa !5
  %88 = or i16 %86, %87
  %89 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 5), align 2, !tbaa !5
  %90 = or i16 %88, %89
  %91 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 6), align 2, !tbaa !5
  %92 = or i16 %90, %91
  %93 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 7), align 2, !tbaa !5
  %94 = or i16 %92, %93
  %95 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 8), align 2, !tbaa !5
  %96 = or i16 %94, %95
  %97 = icmp eq i16 %96, 0
  br i1 %97, label %if.end.i.i.i, label %if.then.i.i.i

if.then.i.i.i:                                    ; preds = %for.cond.preheader.i.i.i.i
  store i16 %80, i16* %arraydecay65.i, align 2, !tbaa !5
  store i16 %81, i16* %incdec.ptr.i48.i.i, align 2, !tbaa !5
  store i16 %83, i16* %incdec.ptr.1.i49.i.i, align 2, !tbaa !5
  store i16 %85, i16* %incdec.ptr.2.i50.i.i, align 2, !tbaa !5
  store i16 %87, i16* %incdec.ptr.3.i51.i.i, align 2, !tbaa !5
  store i16 %89, i16* %incdec.ptr.4.i52.i.i, align 2, !tbaa !5
  store i16 %91, i16* %incdec.ptr.5.i53.i.i, align 2, !tbaa !5
  store i16 %93, i16* %incdec.ptr.6.i54.i.i, align 2, !tbaa !5
  store i16 %95, i16* %incdec.ptr.7.i55.i.i, align 2, !tbaa !5
  store i16 %79, i16* %incdec.ptr.8.i56.i.i, align 2, !tbaa !5
  br label %for.cond66.i

if.end.i.i.i:                                     ; preds = %for.cond.preheader.i.i.i.i, %if.then29.i.i
  %98 = load i16* %incdec.ptr.8.i56.i.i, align 2, !tbaa !5
  %and.i5.i.i.i = and i16 %98, 32767
  %cmp.i6.i.i.i = icmp eq i16 %and.i5.i.i.i, 32767
  br i1 %cmp.i6.i.i.i, label %for.cond.preheader.i8.i.i.i, label %if.end4.i.i.i

for.cond.preheader.i8.i.i.i:                      ; preds = %if.end.i.i.i
  %99 = load i16* %arraydecay65.i, align 2, !tbaa !5
  %cmp5.i7.i.i.i = icmp eq i16 %99, 0
  br i1 %cmp5.i7.i.i.i, label %for.inc.i10.i.i.i, label %if.then3.i.i.i

for.inc.i10.i.i.i:                                ; preds = %for.cond.preheader.i8.i.i.i
  %100 = load i16* %incdec.ptr.i48.i.i, align 2, !tbaa !5
  %cmp5.1.i9.i.i.i = icmp eq i16 %100, 0
  br i1 %cmp5.1.i9.i.i.i, label %for.inc.1.i14.i.i.i, label %if.then3.i.i.i

for.inc.1.i14.i.i.i:                              ; preds = %for.inc.i10.i.i.i
  %101 = load i16* %incdec.ptr.1.i49.i.i, align 2, !tbaa !5
  %cmp5.2.i13.i.i.i = icmp eq i16 %101, 0
  br i1 %cmp5.2.i13.i.i.i, label %for.inc.2.i16.i.i.i, label %if.then3.i.i.i

for.inc.2.i16.i.i.i:                              ; preds = %for.inc.1.i14.i.i.i
  %102 = load i16* %incdec.ptr.2.i50.i.i, align 2, !tbaa !5
  %cmp5.3.i15.i.i.i = icmp eq i16 %102, 0
  br i1 %cmp5.3.i15.i.i.i, label %for.inc.3.i18.i.i.i, label %if.then3.i.i.i

for.inc.3.i18.i.i.i:                              ; preds = %for.inc.2.i16.i.i.i
  %103 = load i16* %incdec.ptr.3.i51.i.i, align 2, !tbaa !5
  %cmp5.4.i17.i.i.i = icmp eq i16 %103, 0
  br i1 %cmp5.4.i17.i.i.i, label %for.inc.4.i20.i.i.i, label %if.then3.i.i.i

for.inc.4.i20.i.i.i:                              ; preds = %for.inc.3.i18.i.i.i
  %104 = load i16* %incdec.ptr.4.i52.i.i, align 2, !tbaa !5
  %cmp5.5.i19.i.i.i = icmp eq i16 %104, 0
  br i1 %cmp5.5.i19.i.i.i, label %for.inc.5.i22.i.i.i, label %if.then3.i.i.i

for.inc.5.i22.i.i.i:                              ; preds = %for.inc.4.i20.i.i.i
  %105 = load i16* %incdec.ptr.5.i53.i.i, align 2, !tbaa !5
  %cmp5.6.i21.i.i.i = icmp eq i16 %105, 0
  br i1 %cmp5.6.i21.i.i.i, label %for.inc.6.i24.i.i.i, label %if.then3.i.i.i

for.inc.6.i24.i.i.i:                              ; preds = %for.inc.5.i22.i.i.i
  %106 = load i16* %incdec.ptr.6.i54.i.i, align 2, !tbaa !5
  %cmp5.7.i23.i.i.i = icmp eq i16 %106, 0
  br i1 %cmp5.7.i23.i.i.i, label %eisnan.exit28.i.i.i, label %if.then3.i.i.i

eisnan.exit28.i.i.i:                              ; preds = %for.inc.6.i24.i.i.i
  %107 = load i16* %incdec.ptr.7.i55.i.i, align 2, !tbaa !5
  %not.cmp5.8.i25.i.i.i = icmp eq i16 %107, 0
  br i1 %not.cmp5.8.i25.i.i.i, label %if.end4.i.i.i, label %if.then3.i.i.i

if.then3.i.i.i:                                   ; preds = %eisnan.exit28.i.i.i, %for.inc.6.i24.i.i.i, %for.inc.5.i22.i.i.i, %for.inc.4.i20.i.i.i, %for.inc.3.i18.i.i.i, %for.inc.2.i16.i.i.i, %for.inc.1.i14.i.i.i, %for.inc.i10.i.i.i, %for.cond.preheader.i8.i.i.i
  store i16 %99, i16* %arraydecay65.i, align 2, !tbaa !5
  br label %for.cond66.i

if.end4.i.i.i:                                    ; preds = %eisnan.exit28.i.i.i, %if.end.i.i.i
  br i1 %cmp.i.i.i.i, label %for.cond.preheader.i.i.i.i.i, label %if.end3.i.i.i.i

for.cond.preheader.i.i.i.i.i:                     ; preds = %if.end4.i.i.i
  %108 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), align 2, !tbaa !5
  %109 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 1), align 2, !tbaa !5
  %110 = or i16 %109, %108
  %111 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 2), align 2, !tbaa !5
  %112 = or i16 %110, %111
  %113 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 3), align 2, !tbaa !5
  %114 = or i16 %112, %113
  %115 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 4), align 2, !tbaa !5
  %116 = or i16 %114, %115
  %117 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 5), align 2, !tbaa !5
  %118 = or i16 %116, %117
  %119 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 6), align 2, !tbaa !5
  %120 = or i16 %118, %119
  %121 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 7), align 2, !tbaa !5
  %122 = or i16 %120, %121
  %123 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 8), align 2, !tbaa !5
  %124 = or i16 %122, %123
  %125 = icmp eq i16 %124, 0
  br i1 %125, label %land.lhs.true.i.i.i, label %if.end3.i.i.i.i

land.lhs.true.i.i.i:                              ; preds = %for.cond.preheader.i.i.i.i.i
  br i1 %cmp.i6.i.i.i, label %for.cond.preheader.i.i65.i.i.i, label %if.end.i.i.i.i.i

for.cond.preheader.i.i65.i.i.i:                   ; preds = %land.lhs.true.i.i.i
  %126 = load i16* %arraydecay65.i, align 2, !tbaa !5
  %cmp5.i.i64.i.i.i = icmp eq i16 %126, 0
  br i1 %cmp5.i.i64.i.i.i, label %for.inc.i.i67.i.i.i, label %if.end.i.i.i.i.i

for.inc.i.i67.i.i.i:                              ; preds = %for.cond.preheader.i.i65.i.i.i
  %127 = load i16* %incdec.ptr.i48.i.i, align 2, !tbaa !5
  %cmp5.1.i.i66.i.i.i = icmp eq i16 %127, 0
  br i1 %cmp5.1.i.i66.i.i.i, label %for.inc.1.i.i69.i.i.i, label %if.end.i.i.i.i.i

for.inc.1.i.i69.i.i.i:                            ; preds = %for.inc.i.i67.i.i.i
  %128 = load i16* %incdec.ptr.1.i49.i.i, align 2, !tbaa !5
  %cmp5.2.i.i68.i.i.i = icmp eq i16 %128, 0
  br i1 %cmp5.2.i.i68.i.i.i, label %for.inc.2.i.i71.i.i.i, label %if.end.i.i.i.i.i

for.inc.2.i.i71.i.i.i:                            ; preds = %for.inc.1.i.i69.i.i.i
  %129 = load i16* %incdec.ptr.2.i50.i.i, align 2, !tbaa !5
  %cmp5.3.i.i70.i.i.i = icmp eq i16 %129, 0
  br i1 %cmp5.3.i.i70.i.i.i, label %for.inc.3.i.i73.i.i.i, label %if.end.i.i.i.i.i

for.inc.3.i.i73.i.i.i:                            ; preds = %for.inc.2.i.i71.i.i.i
  %130 = load i16* %incdec.ptr.3.i51.i.i, align 2, !tbaa !5
  %cmp5.4.i.i72.i.i.i = icmp eq i16 %130, 0
  br i1 %cmp5.4.i.i72.i.i.i, label %for.inc.4.i.i75.i.i.i, label %if.end.i.i.i.i.i

for.inc.4.i.i75.i.i.i:                            ; preds = %for.inc.3.i.i73.i.i.i
  %131 = load i16* %incdec.ptr.4.i52.i.i, align 2, !tbaa !5
  %cmp5.5.i.i74.i.i.i = icmp eq i16 %131, 0
  br i1 %cmp5.5.i.i74.i.i.i, label %for.inc.5.i.i77.i.i.i, label %if.end.i.i.i.i.i

for.inc.5.i.i77.i.i.i:                            ; preds = %for.inc.4.i.i75.i.i.i
  %132 = load i16* %incdec.ptr.5.i53.i.i, align 2, !tbaa !5
  %cmp5.6.i.i76.i.i.i = icmp eq i16 %132, 0
  br i1 %cmp5.6.i.i76.i.i.i, label %for.inc.6.i.i79.i.i.i, label %if.end.i.i.i.i.i

for.inc.6.i.i79.i.i.i:                            ; preds = %for.inc.5.i.i77.i.i.i
  %133 = load i16* %incdec.ptr.6.i54.i.i, align 2, !tbaa !5
  %cmp5.7.i.i78.i.i.i = icmp eq i16 %133, 0
  br i1 %cmp5.7.i.i78.i.i.i, label %for.inc.7.i.i81.i.i.i, label %if.end.i.i.i.i.i

for.inc.7.i.i81.i.i.i:                            ; preds = %for.inc.6.i.i79.i.i.i
  %134 = load i16* %incdec.ptr.7.i55.i.i, align 2, !tbaa !5
  %phitmp.i80.i.i.i = icmp eq i16 %134, 0
  br i1 %phitmp.i80.i.i.i, label %eisneg.exit142.i.i.i, label %if.end.i.i.i.i.i

eisneg.exit142.i.i.i:                             ; preds = %for.inc.7.i.i81.i.i.i
  %.lobit.i.i.i.i = lshr i16 %79, 15
  %.lobit.i138.i.i.i = lshr i16 %98, 15
  %cmp.i.i.i = icmp eq i16 %.lobit.i.i.i.i, %.lobit.i138.i.i.i
  br i1 %cmp.i.i.i, label %if.then12.i.i.i, label %if.end.i.i.i.i.i

if.then12.i.i.i:                                  ; preds = %eisneg.exit142.i.i.i
  store i16 0, i16* %arraydecay65.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.i48.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i49.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.2.i50.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.3.i51.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.4.i52.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i53.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.6.i54.i.i, align 2, !tbaa !5
  store i16 -16384, i16* %incdec.ptr.7.i55.i.i, align 2, !tbaa !5
  store i16 32767, i16* %incdec.ptr.8.i56.i.i, align 2, !tbaa !5
  br label %for.cond66.i

if.end.i.i.i.i.i:                                 ; preds = %eisneg.exit142.i.i.i, %for.inc.7.i.i81.i.i.i, %for.inc.6.i.i79.i.i.i, %for.inc.5.i.i77.i.i.i, %for.inc.4.i.i75.i.i.i, %for.inc.3.i.i73.i.i.i, %for.inc.2.i.i71.i.i.i, %for.inc.1.i.i69.i.i.i, %for.inc.i.i67.i.i.i, %for.cond.preheader.i.i65.i.i.i, %land.lhs.true.i.i.i
  call void @llvm.lifetime.start(i64 -1, i8* %58) nounwind
  call void @llvm.lifetime.start(i64 -1, i8* %59) nounwind
  store i16 %108, i16* %arraydecay65.i, align 2, !tbaa !5
  store i16 %109, i16* %incdec.ptr.i48.i.i, align 2, !tbaa !5
  store i16 %111, i16* %incdec.ptr.1.i49.i.i, align 2, !tbaa !5
  store i16 %113, i16* %incdec.ptr.2.i50.i.i, align 2, !tbaa !5
  store i16 %115, i16* %incdec.ptr.3.i51.i.i, align 2, !tbaa !5
  store i16 %117, i16* %incdec.ptr.4.i52.i.i, align 2, !tbaa !5
  store i16 %119, i16* %incdec.ptr.5.i53.i.i, align 2, !tbaa !5
  store i16 %121, i16* %incdec.ptr.6.i54.i.i, align 2, !tbaa !5
  store i16 %123, i16* %incdec.ptr.7.i55.i.i, align 2, !tbaa !5
  %conv.i.i.i.i.i = zext i16 %79 to i32
  %xor.i.i.i.i.i = xor i32 %conv.i.i.i.i.i, 32768
  %conv1.i.i.i.i.i = trunc i32 %xor.i.i.i.i.i to i16
  store i16 %conv1.i.i.i.i.i, i16* %incdec.ptr.8.i56.i.i, align 2, !tbaa !5
  br label %for.cond66.i

if.end3.i.i.i.i:                                  ; preds = %for.cond.preheader.i.i.i.i.i, %if.end4.i.i.i
  br i1 %cmp.i6.i.i.i, label %for.cond.preheader.i.i21.i.i.i.i, label %if.end7.i.i.i.i

for.cond.preheader.i.i21.i.i.i.i:                 ; preds = %if.end3.i.i.i.i
  %135 = load i16* %arraydecay65.i, align 2, !tbaa !5
  %cmp5.i.i20.i.i.i.i = icmp eq i16 %135, 0
  br i1 %cmp5.i.i20.i.i.i.i, label %for.inc.i.i24.i.i.i.i, label %if.end7.i.i.i.i

for.inc.i.i24.i.i.i.i:                            ; preds = %for.cond.preheader.i.i21.i.i.i.i
  %136 = load i16* %incdec.ptr.i48.i.i, align 2, !tbaa !5
  %cmp5.1.i.i23.i.i.i.i = icmp eq i16 %136, 0
  br i1 %cmp5.1.i.i23.i.i.i.i, label %for.inc.1.i.i27.i.i.i.i, label %if.end7.i.i.i.i

for.inc.1.i.i27.i.i.i.i:                          ; preds = %for.inc.i.i24.i.i.i.i
  %137 = load i16* %incdec.ptr.1.i49.i.i, align 2, !tbaa !5
  %cmp5.2.i.i26.i.i.i.i = icmp eq i16 %137, 0
  br i1 %cmp5.2.i.i26.i.i.i.i, label %for.inc.2.i.i30.i.i.i.i, label %if.end7.i.i.i.i

for.inc.2.i.i30.i.i.i.i:                          ; preds = %for.inc.1.i.i27.i.i.i.i
  %138 = load i16* %incdec.ptr.2.i50.i.i, align 2, !tbaa !5
  %cmp5.3.i.i29.i.i.i.i = icmp eq i16 %138, 0
  br i1 %cmp5.3.i.i29.i.i.i.i, label %for.inc.3.i.i33.i.i.i.i, label %if.end7.i.i.i.i

for.inc.3.i.i33.i.i.i.i:                          ; preds = %for.inc.2.i.i30.i.i.i.i
  %139 = load i16* %incdec.ptr.3.i51.i.i, align 2, !tbaa !5
  %cmp5.4.i.i32.i.i.i.i = icmp eq i16 %139, 0
  br i1 %cmp5.4.i.i32.i.i.i.i, label %for.inc.4.i.i36.i.i.i.i, label %if.end7.i.i.i.i

for.inc.4.i.i36.i.i.i.i:                          ; preds = %for.inc.3.i.i33.i.i.i.i
  %140 = load i16* %incdec.ptr.4.i52.i.i, align 2, !tbaa !5
  %cmp5.5.i.i35.i.i.i.i = icmp eq i16 %140, 0
  br i1 %cmp5.5.i.i35.i.i.i.i, label %for.inc.5.i.i39.i.i.i.i, label %if.end7.i.i.i.i

for.inc.5.i.i39.i.i.i.i:                          ; preds = %for.inc.4.i.i36.i.i.i.i
  %141 = load i16* %incdec.ptr.5.i53.i.i, align 2, !tbaa !5
  %cmp5.6.i.i38.i.i.i.i = icmp eq i16 %141, 0
  br i1 %cmp5.6.i.i38.i.i.i.i, label %for.inc.6.i.i42.i.i.i.i, label %if.end7.i.i.i.i

for.inc.6.i.i42.i.i.i.i:                          ; preds = %for.inc.5.i.i39.i.i.i.i
  %142 = load i16* %incdec.ptr.6.i54.i.i, align 2, !tbaa !5
  %cmp5.7.i.i41.i.i.i.i = icmp eq i16 %142, 0
  br i1 %cmp5.7.i.i41.i.i.i.i, label %for.inc.7.i.i45.i.i.i.i, label %if.end7.i.i.i.i

for.inc.7.i.i45.i.i.i.i:                          ; preds = %for.inc.6.i.i42.i.i.i.i
  %143 = load i16* %incdec.ptr.7.i55.i.i, align 2, !tbaa !5
  %phitmp.i44.i.i.i.i = icmp eq i16 %143, 0
  br i1 %phitmp.i44.i.i.i.i, label %if.then6.i.i.i.i, label %if.end7.i.i.i.i

if.then6.i.i.i.i:                                 ; preds = %for.inc.7.i.i45.i.i.i.i
  store i16 0, i16* %arraydecay65.i, align 2, !tbaa !5
  br label %for.cond66.i

if.end7.i.i.i.i:                                  ; preds = %for.inc.7.i.i45.i.i.i.i, %for.inc.6.i.i42.i.i.i.i, %for.inc.5.i.i39.i.i.i.i, %for.inc.4.i.i36.i.i.i.i, %for.inc.3.i.i33.i.i.i.i, %for.inc.2.i.i30.i.i.i.i, %for.inc.1.i.i27.i.i.i.i, %for.inc.i.i24.i.i.i.i, %for.cond.preheader.i.i21.i.i.i.i, %if.end3.i.i.i.i
  call fastcc void @emovi(i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), i16* %arraydecay.i.i.i.i) nounwind
  call fastcc void @emovi(i16* %arraydecay65.i, i16* %arraydecay8.i.i.i.i) nounwind
  %144 = load i16* %arraydecay.i.i.i.i, align 2, !tbaa !5
  %conv.i.i.i.i = zext i16 %144 to i32
  %neg.i.i.i.i = xor i32 %conv.i.i.i.i, 65535
  %conv11.i.i.i.i = trunc i32 %neg.i.i.i.i to i16
  store i16 %conv11.i.i.i.i, i16* %arraydecay.i.i.i.i, align 2, !tbaa !5
  %145 = load i16* %arrayidx14.i.i.i.i, align 2, !tbaa !5
  %conv15.i.i.i.i = zext i16 %145 to i32
  %146 = load i16* %arrayidx16.i.i.i.i, align 2, !tbaa !5
  %conv17.i.i.i.i = zext i16 %146 to i32
  %sub.i.i.i.i = sub nsw i32 %conv15.i.i.i.i, %conv17.i.i.i.i
  %cmp.i3.i.i.i = icmp sgt i32 %sub.i.i.i.i, 0
  br i1 %cmp.i3.i.i.i, label %if.then19.i.i.i.i, label %if.end29.i.i.i.i

if.then19.i.i.i.i:                                ; preds = %if.end7.i.i.i.i
  %147 = load i16* %arraydecay8.i.i.i.i, align 2, !tbaa !5
  %148 = load i16* %incdec.ptr.1.i151.i.i.i.i, align 2, !tbaa !5
  %149 = load i16* %incdec.ptr.2.i153.i.i.i.i, align 2, !tbaa !5
  %150 = load i16* %incdec.ptr.3.i155.i.i.i.i, align 2, !tbaa !5
  %151 = load i16* %incdec.ptr.4.i157.i.i.i.i, align 2, !tbaa !5
  %152 = load i16* %incdec.ptr.5.i159.i.i.i.i, align 2, !tbaa !5
  %153 = load i16* %incdec.ptr.6.i161.i.i.i.i, align 2, !tbaa !5
  %154 = load i16* %incdec.ptr.7.i163.i.i.i.i, align 2, !tbaa !5
  %155 = load i16* %incdec.ptr.8.i165.i.i.i.i, align 2, !tbaa !5
  %156 = load i16* %incdec.ptr.9.i167.i.i.i.i, align 2, !tbaa !5
  %157 = load i16* %incdec.ptr.10.i169.i.i.i.i, align 2, !tbaa !5
  store i16 %conv11.i.i.i.i, i16* %arraydecay8.i.i.i.i, align 2, !tbaa !5
  store i16 %145, i16* %arrayidx16.i.i.i.i, align 2, !tbaa !5
  %158 = load i16* %incdec.ptr.1.i197.i.i.i.i, align 2, !tbaa !5
  store i16 %158, i16* %incdec.ptr.1.i151.i.i.i.i, align 2, !tbaa !5
  %159 = load i16* %incdec.ptr.2.i199.i.i.i.i, align 2, !tbaa !5
  store i16 %159, i16* %incdec.ptr.2.i153.i.i.i.i, align 2, !tbaa !5
  %160 = load i16* %incdec.ptr.3.i201.i.i.i.i, align 2, !tbaa !5
  store i16 %160, i16* %incdec.ptr.3.i155.i.i.i.i, align 2, !tbaa !5
  %161 = load i16* %incdec.ptr.4.i203.i.i.i.i, align 2, !tbaa !5
  store i16 %161, i16* %incdec.ptr.4.i157.i.i.i.i, align 2, !tbaa !5
  %162 = load i16* %incdec.ptr.5.i205.i.i.i.i, align 2, !tbaa !5
  store i16 %162, i16* %incdec.ptr.5.i159.i.i.i.i, align 2, !tbaa !5
  %163 = load i16* %incdec.ptr.6.i207.i.i.i.i, align 2, !tbaa !5
  store i16 %163, i16* %incdec.ptr.6.i161.i.i.i.i, align 2, !tbaa !5
  %164 = load i16* %incdec.ptr.7.i209.i.i.i.i, align 2, !tbaa !5
  store i16 %164, i16* %incdec.ptr.7.i163.i.i.i.i, align 2, !tbaa !5
  %165 = load i16* %incdec.ptr.8.i211.i.i.i.i, align 2, !tbaa !5
  store i16 %165, i16* %incdec.ptr.8.i165.i.i.i.i, align 2, !tbaa !5
  %166 = load i16* %incdec.ptr.9.i213.i.i.i.i, align 2, !tbaa !5
  store i16 %166, i16* %incdec.ptr.9.i167.i.i.i.i, align 2, !tbaa !5
  %167 = load i16* %incdec.ptr.10.i215.i.i.i.i, align 2, !tbaa !5
  store i16 %167, i16* %incdec.ptr.10.i169.i.i.i.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i217.i.i.i.i, align 2, !tbaa !5
  store i16 %147, i16* %arraydecay.i.i.i.i, align 2, !tbaa !5
  store i16 %146, i16* %arrayidx14.i.i.i.i, align 2, !tbaa !5
  store i16 %148, i16* %incdec.ptr.1.i197.i.i.i.i, align 2, !tbaa !5
  store i16 %149, i16* %incdec.ptr.2.i199.i.i.i.i, align 2, !tbaa !5
  store i16 %150, i16* %incdec.ptr.3.i201.i.i.i.i, align 2, !tbaa !5
  store i16 %151, i16* %incdec.ptr.4.i203.i.i.i.i, align 2, !tbaa !5
  store i16 %152, i16* %incdec.ptr.5.i205.i.i.i.i, align 2, !tbaa !5
  store i16 %153, i16* %incdec.ptr.6.i207.i.i.i.i, align 2, !tbaa !5
  store i16 %154, i16* %incdec.ptr.7.i209.i.i.i.i, align 2, !tbaa !5
  store i16 %155, i16* %incdec.ptr.8.i211.i.i.i.i, align 2, !tbaa !5
  store i16 %156, i16* %incdec.ptr.9.i213.i.i.i.i, align 2, !tbaa !5
  store i16 %157, i16* %incdec.ptr.10.i215.i.i.i.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i194.i.i.i.i, align 2, !tbaa !5
  %sub28.i.i.i.i = sub nsw i32 0, %sub.i.i.i.i
  br label %if.end29.i.i.i.i

if.end29.i.i.i.i:                                 ; preds = %if.then19.i.i.i.i, %if.end7.i.i.i.i
  %168 = phi i16 [ %146, %if.then19.i.i.i.i ], [ %145, %if.end7.i.i.i.i ]
  %169 = phi i16 [ %145, %if.then19.i.i.i.i ], [ %146, %if.end7.i.i.i.i ]
  %170 = phi i16 [ %147, %if.then19.i.i.i.i ], [ %conv11.i.i.i.i, %if.end7.i.i.i.i ]
  %lt.0.i.i.i.i = phi i32 [ %sub28.i.i.i.i, %if.then19.i.i.i.i ], [ %sub.i.i.i.i, %if.end7.i.i.i.i ]
  %ltb.0.i.i.i.i = phi i32 [ %conv15.i.i.i.i, %if.then19.i.i.i.i ], [ %conv17.i.i.i.i, %if.end7.i.i.i.i ]
  %cmp30.i.i.i.i = icmp eq i32 %lt.0.i.i.i.i, 0
  br i1 %cmp30.i.i.i.i, label %if.else.i.i.i.i, label %if.then32.i.i.i.i

if.then32.i.i.i.i:                                ; preds = %if.end29.i.i.i.i
  %cmp33.i.i.i.i = icmp slt i32 %lt.0.i.i.i.i, -145
  br i1 %cmp33.i.i.i.i, label %done.i.i.i.i, label %if.end36.i.i.i.i

if.end36.i.i.i.i:                                 ; preds = %if.then32.i.i.i.i
  %call38.i.i.i.i = call fastcc i32 @eshift(i16* %arraydecay.i.i.i.i, i32 %lt.0.i.i.i.i) nounwind
  %.pre.i.i.i.i = load i16* %arraydecay.i.i.i.i, align 2, !tbaa !5
  br label %if.end85.i.i.i.i

if.else.i.i.i.i:                                  ; preds = %if.end29.i.i.i.i
  %171 = load i16* %incdec.ptr.1.i197.i.i.i.i, align 2, !tbaa !5
  %172 = load i16* %incdec.ptr.1.i151.i.i.i.i, align 2, !tbaa !5
  %cmp4.i.i.i.i.i = icmp eq i16 %171, %172
  br i1 %cmp4.i.i.i.i.i, label %for.inc.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.i.i.i.i.i:                                ; preds = %if.else.i.i.i.i
  %173 = load i16* %incdec.ptr.2.i199.i.i.i.i, align 2, !tbaa !5
  %174 = load i16* %incdec.ptr.2.i153.i.i.i.i, align 2, !tbaa !5
  %cmp4.1.i.i.i.i.i = icmp eq i16 %173, %174
  br i1 %cmp4.1.i.i.i.i.i, label %for.inc.1.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.1.i.i.i.i.i:                              ; preds = %for.inc.i.i.i.i.i
  %175 = load i16* %incdec.ptr.3.i201.i.i.i.i, align 2, !tbaa !5
  %176 = load i16* %incdec.ptr.3.i155.i.i.i.i, align 2, !tbaa !5
  %cmp4.2.i.i.i.i.i = icmp eq i16 %175, %176
  br i1 %cmp4.2.i.i.i.i.i, label %for.inc.2.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.2.i.i.i.i.i:                              ; preds = %for.inc.1.i.i.i.i.i
  %177 = load i16* %incdec.ptr.4.i203.i.i.i.i, align 2, !tbaa !5
  %178 = load i16* %incdec.ptr.4.i157.i.i.i.i, align 2, !tbaa !5
  %cmp4.3.i.i.i.i.i = icmp eq i16 %177, %178
  br i1 %cmp4.3.i.i.i.i.i, label %for.inc.3.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.3.i.i.i.i.i:                              ; preds = %for.inc.2.i.i.i.i.i
  %179 = load i16* %incdec.ptr.5.i205.i.i.i.i, align 2, !tbaa !5
  %180 = load i16* %incdec.ptr.5.i159.i.i.i.i, align 2, !tbaa !5
  %cmp4.4.i.i.i.i.i = icmp eq i16 %179, %180
  br i1 %cmp4.4.i.i.i.i.i, label %for.inc.4.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.4.i.i.i.i.i:                              ; preds = %for.inc.3.i.i.i.i.i
  %181 = load i16* %incdec.ptr.6.i207.i.i.i.i, align 2, !tbaa !5
  %182 = load i16* %incdec.ptr.6.i161.i.i.i.i, align 2, !tbaa !5
  %cmp4.5.i.i.i.i.i = icmp eq i16 %181, %182
  br i1 %cmp4.5.i.i.i.i.i, label %for.inc.5.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.5.i.i.i.i.i:                              ; preds = %for.inc.4.i.i.i.i.i
  %183 = load i16* %incdec.ptr.7.i209.i.i.i.i, align 2, !tbaa !5
  %184 = load i16* %incdec.ptr.7.i163.i.i.i.i, align 2, !tbaa !5
  %cmp4.6.i.i.i.i.i = icmp eq i16 %183, %184
  br i1 %cmp4.6.i.i.i.i.i, label %for.inc.6.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.6.i.i.i.i.i:                              ; preds = %for.inc.5.i.i.i.i.i
  %185 = load i16* %incdec.ptr.8.i211.i.i.i.i, align 2, !tbaa !5
  %186 = load i16* %incdec.ptr.8.i165.i.i.i.i, align 2, !tbaa !5
  %cmp4.7.i.i.i.i.i = icmp eq i16 %185, %186
  br i1 %cmp4.7.i.i.i.i.i, label %for.inc.7.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.7.i.i.i.i.i:                              ; preds = %for.inc.6.i.i.i.i.i
  %187 = load i16* %incdec.ptr.9.i213.i.i.i.i, align 2, !tbaa !5
  %188 = load i16* %incdec.ptr.9.i167.i.i.i.i, align 2, !tbaa !5
  %cmp4.8.i.i.i.i.i = icmp eq i16 %187, %188
  br i1 %cmp4.8.i.i.i.i.i, label %for.inc.8.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.8.i.i.i.i.i:                              ; preds = %for.inc.7.i.i.i.i.i
  %189 = load i16* %incdec.ptr.10.i215.i.i.i.i, align 2, !tbaa !5
  %190 = load i16* %incdec.ptr.10.i169.i.i.i.i, align 2, !tbaa !5
  %cmp4.9.i.i.i.i.i = icmp eq i16 %189, %190
  br i1 %cmp4.9.i.i.i.i.i, label %for.inc.9.i.i.i.i.i, label %if.end74.i.i.i.i

for.inc.9.i.i.i.i.i:                              ; preds = %for.inc.8.i.i.i.i.i
  %191 = load i16* %scevgep.i194.i.i.i.i, align 2, !tbaa !5
  %192 = load i16* %scevgep.i217.i.i.i.i, align 2, !tbaa !5
  %cmp4.10.i.i.i.i.i = icmp eq i16 %191, %192
  br i1 %cmp4.10.i.i.i.i.i, label %if.then44.i.i.i.i, label %if.end74.i.i.i.i

if.then44.i.i.i.i:                                ; preds = %for.inc.9.i.i.i.i.i
  %193 = load i16* %arraydecay8.i.i.i.i, align 2, !tbaa !5
  %cmp49.i.i.i.i = icmp eq i16 %170, %193
  br i1 %cmp49.i.i.i.i, label %if.end52.i.i.i.i, label %if.then51.i.i.i.i

if.then51.i.i.i.i:                                ; preds = %if.then44.i.i.i.i
  store i16 0, i16* %arraydecay65.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.i48.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i49.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.2.i50.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.3.i51.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.4.i52.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i53.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.6.i54.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i55.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i56.i.i, align 2, !tbaa !5
  br label %for.cond66.i

if.end52.i.i.i.i:                                 ; preds = %if.then44.i.i.i.i
  %cmp55.i.i.i.i = icmp eq i16 %169, 0
  %cmp59.i.i.i.i = icmp sgt i16 %173, -1
  %or.cond254.i.i.i.i = and i1 %cmp55.i.i.i.i, %cmp59.i.i.i.i
  br i1 %or.cond254.i.i.i.i, label %for.body.i.i.i.i.i, label %for.cond.i.i.i.i

for.body.i.i.i.i.i:                               ; preds = %if.end52.i.i.i.i, %if.end.i126.for.body.i_crit_edge.i.i.i.i
  %194 = phi i16 [ %.pre246.i.i.i.i, %if.end.i126.for.body.i_crit_edge.i.i.i.i ], [ %191, %if.end52.i.i.i.i ]
  %i.025.i.i.i.i.i = phi i32 [ %phitmp.i.i.i.i, %if.end.i126.for.body.i_crit_edge.i.i.i.i ], [ 3, %if.end52.i.i.i.i ]
  %bits.024.i.i.i.i.i = phi i16 [ %conv15.i.i.i.i.i, %if.end.i126.for.body.i_crit_edge.i.i.i.i ], [ 0, %if.end52.i.i.i.i ]
  %x.addr.023.i.i.i.i.i = phi i16* [ %incdec.ptr.i125.i.i.i.i, %if.end.i126.for.body.i_crit_edge.i.i.i.i ], [ %scevgep.i217.i.i.i.i, %if.end52.i.i.i.i ]
  %tobool.i.i.i.i.i = icmp slt i16 %194, 0
  br i1 %tobool.i.i.i.i.i, label %if.then.i.i.i.i.i, label %if.end.i126.i.i.i.i

if.then.i.i.i.i.i:                                ; preds = %for.body.i.i.i.i.i
  %conv1.i124.i.i.i.i = zext i16 %bits.024.i.i.i.i.i to i32
  %or.i.i.i.i.i = or i32 %conv1.i124.i.i.i.i, 1
  %conv2.i.i.i.i.i = trunc i32 %or.i.i.i.i.i to i16
  br label %if.end.i126.i.i.i.i

if.end.i126.i.i.i.i:                              ; preds = %if.then.i.i.i.i.i, %for.body.i.i.i.i.i
  %bits.1.i.i.i.i.i = phi i16 [ %conv2.i.i.i.i.i, %if.then.i.i.i.i.i ], [ %bits.024.i.i.i.i.i, %for.body.i.i.i.i.i ]
  %conv3.i.i.i.i.i = zext i16 %194 to i32
  %shl.i.i.i.i.i = shl nuw nsw i32 %conv3.i.i.i.i.i, 1
  %conv5.i.i.i.i.i = zext i16 %bits.1.i.i.i.i.i to i32
  %and6.i.i.i.i.i = lshr i32 %conv5.i.i.i.i.i, 1
  %and6.lobit.i.i.i.i.i = and i32 %and6.i.i.i.i.i, 1
  %storemerge.in.i.i.i.i.i = or i32 %and6.lobit.i.i.i.i.i, %shl.i.i.i.i.i
  %storemerge.i.i.i.i.i = trunc i32 %storemerge.in.i.i.i.i.i to i16
  store i16 %storemerge.i.i.i.i.i, i16* %x.addr.023.i.i.i.i.i, align 2
  %incdec.ptr.i125.i.i.i.i = getelementptr inbounds i16* %x.addr.023.i.i.i.i.i, i32 -1
  %exitcond.i.i.i.i.i = icmp eq i32 %i.025.i.i.i.i.i, 13
  br i1 %exitcond.i.i.i.i.i, label %done.i.i.i.i, label %if.end.i126.for.body.i_crit_edge.i.i.i.i

if.end.i126.for.body.i_crit_edge.i.i.i.i:         ; preds = %if.end.i126.i.i.i.i
  %shl14.i.i.i.i.i = shl nuw nsw i32 %conv5.i.i.i.i.i, 1
  %conv15.i.i.i.i.i = trunc i32 %shl14.i.i.i.i.i to i16
  %.pre246.i.i.i.i = load i16* %incdec.ptr.i125.i.i.i.i, align 2, !tbaa !5
  %phitmp.i.i.i.i = add i32 %i.025.i.i.i.i.i, 1
  br label %for.body.i.i.i.i.i

for.cond.i.i.i.i:                                 ; preds = %if.end52.i.i.i.i, %for.body.i.i.i.i
  %j.0.i.i.i.i = phi i32 [ %inc.i.i.i.i, %for.body.i.i.i.i ], [ 1, %if.end52.i.i.i.i ]
  %cmp64.i.i.i.i = icmp slt i32 %j.0.i.i.i.i, 12
  br i1 %cmp64.i.i.i.i, label %for.body.i.i.i.i, label %for.end.i.i.i.i

for.body.i.i.i.i:                                 ; preds = %for.cond.i.i.i.i
  %arrayidx66.i.i.i.i = getelementptr inbounds [13 x i16]* %bi.i.i.i.i, i32 0, i32 %j.0.i.i.i.i
  %195 = load i16* %arrayidx66.i.i.i.i, align 2, !tbaa !5
  %cmp68.i.i.i.i = icmp eq i16 %195, 0
  %inc.i.i.i.i = add nsw i32 %j.0.i.i.i.i, 1
  br i1 %cmp68.i.i.i.i, label %for.cond.i.i.i.i, label %if.then70.i.i.i.i

if.then70.i.i.i.i:                                ; preds = %for.body.i.i.i.i
  %add.i.i.i.i = add nsw i32 %ltb.0.i.i.i.i, 1
  br label %for.end.i.i.i.i

for.end.i.i.i.i:                                  ; preds = %for.cond.i.i.i.i, %if.then70.i.i.i.i
  %ltb.1.i.i.i.i = phi i32 [ %add.i.i.i.i, %if.then70.i.i.i.i ], [ %ltb.0.i.i.i.i, %for.cond.i.i.i.i ]
  %conv72.i.i.i.i = trunc i32 %ltb.1.i.i.i.i to i16
  store i16 %conv72.i.i.i.i, i16* %arrayidx16.i.i.i.i, align 2, !tbaa !5
  br label %done.i.i.i.i

if.end74.i.i.i.i:                                 ; preds = %for.inc.9.i.i.i.i.i, %for.inc.8.i.i.i.i.i, %for.inc.7.i.i.i.i.i, %for.inc.6.i.i.i.i.i, %for.inc.5.i.i.i.i.i, %for.inc.4.i.i.i.i.i, %for.inc.3.i.i.i.i.i, %for.inc.2.i.i.i.i.i, %for.inc.1.i.i.i.i.i, %for.inc.i.i.i.i.i, %if.else.i.i.i.i
  %.lcssa23.i.i.i.i.i = phi i16 [ %172, %if.else.i.i.i.i ], [ %174, %for.inc.i.i.i.i.i ], [ %176, %for.inc.1.i.i.i.i.i ], [ %178, %for.inc.2.i.i.i.i.i ], [ %180, %for.inc.3.i.i.i.i.i ], [ %182, %for.inc.4.i.i.i.i.i ], [ %184, %for.inc.5.i.i.i.i.i ], [ %186, %for.inc.6.i.i.i.i.i ], [ %188, %for.inc.7.i.i.i.i.i ], [ %190, %for.inc.8.i.i.i.i.i ], [ %192, %for.inc.9.i.i.i.i.i ]
  %.lcssa.i.i.i.i.i = phi i16 [ %171, %if.else.i.i.i.i ], [ %173, %for.inc.i.i.i.i.i ], [ %175, %for.inc.1.i.i.i.i.i ], [ %177, %for.inc.2.i.i.i.i.i ], [ %179, %for.inc.3.i.i.i.i.i ], [ %181, %for.inc.4.i.i.i.i.i ], [ %183, %for.inc.5.i.i.i.i.i ], [ %185, %for.inc.6.i.i.i.i.i ], [ %187, %for.inc.7.i.i.i.i.i ], [ %189, %for.inc.8.i.i.i.i.i ], [ %191, %for.inc.9.i.i.i.i.i ]
  %cmp10.i.i.i.i.i = icmp ugt i16 %.lcssa.i.i.i.i.i, %.lcssa23.i.i.i.i.i
  br i1 %cmp10.i.i.i.i.i, label %if.then77.i.i.i.i, label %if.end85.i.i.i.i

if.then77.i.i.i.i:                                ; preds = %if.end74.i.i.i.i
  %196 = load i16* %arraydecay8.i.i.i.i, align 2, !tbaa !5
  %197 = load i16* %incdec.ptr.2.i153.i.i.i.i, align 2, !tbaa !5
  %198 = load i16* %incdec.ptr.3.i155.i.i.i.i, align 2, !tbaa !5
  %199 = load i16* %incdec.ptr.4.i157.i.i.i.i, align 2, !tbaa !5
  %200 = load i16* %incdec.ptr.5.i159.i.i.i.i, align 2, !tbaa !5
  %201 = load i16* %incdec.ptr.6.i161.i.i.i.i, align 2, !tbaa !5
  %202 = load i16* %incdec.ptr.7.i163.i.i.i.i, align 2, !tbaa !5
  %203 = load i16* %incdec.ptr.8.i165.i.i.i.i, align 2, !tbaa !5
  %204 = load i16* %incdec.ptr.9.i167.i.i.i.i, align 2, !tbaa !5
  %205 = load i16* %incdec.ptr.10.i169.i.i.i.i, align 2, !tbaa !5
  store i16 %170, i16* %arraydecay8.i.i.i.i, align 2, !tbaa !5
  store i16 %168, i16* %arrayidx16.i.i.i.i, align 2, !tbaa !5
  store i16 %171, i16* %incdec.ptr.1.i151.i.i.i.i, align 2, !tbaa !5
  %206 = load i16* %incdec.ptr.2.i199.i.i.i.i, align 2, !tbaa !5
  store i16 %206, i16* %incdec.ptr.2.i153.i.i.i.i, align 2, !tbaa !5
  %207 = load i16* %incdec.ptr.3.i201.i.i.i.i, align 2, !tbaa !5
  store i16 %207, i16* %incdec.ptr.3.i155.i.i.i.i, align 2, !tbaa !5
  %208 = load i16* %incdec.ptr.4.i203.i.i.i.i, align 2, !tbaa !5
  store i16 %208, i16* %incdec.ptr.4.i157.i.i.i.i, align 2, !tbaa !5
  %209 = load i16* %incdec.ptr.5.i205.i.i.i.i, align 2, !tbaa !5
  store i16 %209, i16* %incdec.ptr.5.i159.i.i.i.i, align 2, !tbaa !5
  %210 = load i16* %incdec.ptr.6.i207.i.i.i.i, align 2, !tbaa !5
  store i16 %210, i16* %incdec.ptr.6.i161.i.i.i.i, align 2, !tbaa !5
  %211 = load i16* %incdec.ptr.7.i209.i.i.i.i, align 2, !tbaa !5
  store i16 %211, i16* %incdec.ptr.7.i163.i.i.i.i, align 2, !tbaa !5
  %212 = load i16* %incdec.ptr.8.i211.i.i.i.i, align 2, !tbaa !5
  store i16 %212, i16* %incdec.ptr.8.i165.i.i.i.i, align 2, !tbaa !5
  %213 = load i16* %incdec.ptr.9.i213.i.i.i.i, align 2, !tbaa !5
  store i16 %213, i16* %incdec.ptr.9.i167.i.i.i.i, align 2, !tbaa !5
  %214 = load i16* %incdec.ptr.10.i215.i.i.i.i, align 2, !tbaa !5
  store i16 %214, i16* %incdec.ptr.10.i169.i.i.i.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i217.i.i.i.i, align 2, !tbaa !5
  store i16 %196, i16* %arraydecay.i.i.i.i, align 2, !tbaa !5
  store i16 %169, i16* %arrayidx14.i.i.i.i, align 2, !tbaa !5
  store i16 %172, i16* %incdec.ptr.1.i197.i.i.i.i, align 2, !tbaa !5
  store i16 %197, i16* %incdec.ptr.2.i199.i.i.i.i, align 2, !tbaa !5
  store i16 %198, i16* %incdec.ptr.3.i201.i.i.i.i, align 2, !tbaa !5
  store i16 %199, i16* %incdec.ptr.4.i203.i.i.i.i, align 2, !tbaa !5
  store i16 %200, i16* %incdec.ptr.5.i205.i.i.i.i, align 2, !tbaa !5
  store i16 %201, i16* %incdec.ptr.6.i207.i.i.i.i, align 2, !tbaa !5
  store i16 %202, i16* %incdec.ptr.7.i209.i.i.i.i, align 2, !tbaa !5
  store i16 %203, i16* %incdec.ptr.8.i211.i.i.i.i, align 2, !tbaa !5
  store i16 %204, i16* %incdec.ptr.9.i213.i.i.i.i, align 2, !tbaa !5
  store i16 %205, i16* %incdec.ptr.10.i215.i.i.i.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i194.i.i.i.i, align 2, !tbaa !5
  br label %if.end85.i.i.i.i

if.end85.i.i.i.i:                                 ; preds = %if.end74.i.i.i.i, %if.then77.i.i.i.i, %if.end36.i.i.i.i
  %215 = phi i16 [ %.pre.i.i.i.i, %if.end36.i.i.i.i ], [ %196, %if.then77.i.i.i.i ], [ %170, %if.end74.i.i.i.i ]
  %lost.0.i.i.i.i = phi i32 [ %call38.i.i.i.i, %if.end36.i.i.i.i ], [ 0, %if.then77.i.i.i.i ], [ 0, %if.end74.i.i.i.i ]
  %216 = load i16* %arraydecay8.i.i.i.i, align 2, !tbaa !5
  %cmp90.i.i.i.i = icmp eq i16 %215, %216
  br i1 %cmp90.i.i.i.i, label %if.then92.i.i.i.i, label %if.else95.i.i.i.i

if.then92.i.i.i.i:                                ; preds = %if.end85.i.i.i.i
  call fastcc void @eaddm(i16* %arraydecay.i.i.i.i, i16* %arraydecay8.i.i.i.i) nounwind
  br label %if.end98.i.i.i.i

if.else95.i.i.i.i:                                ; preds = %if.end85.i.i.i.i
  call fastcc void @esubm(i16* %arraydecay.i.i.i.i, i16* %arraydecay8.i.i.i.i) nounwind
  br label %if.end98.i.i.i.i

if.end98.i.i.i.i:                                 ; preds = %if.else95.i.i.i.i, %if.then92.i.i.i.i
  %subflg.addr.0.i.i.i.i = phi i32 [ 0, %if.then92.i.i.i.i ], [ 1, %if.else95.i.i.i.i ]
  call fastcc void @emdnorm(i16* %arraydecay8.i.i.i.i, i32 %lost.0.i.i.i.i, i32 %subflg.addr.0.i.i.i.i, i32 %ltb.0.i.i.i.i, i32 64, %struct.LDPARMS* %rnd) nounwind
  br label %done.i.i.i.i

done.i.i.i.i:                                     ; preds = %if.end.i126.i.i.i.i, %if.end98.i.i.i.i, %for.end.i.i.i.i, %if.then32.i.i.i.i
  call fastcc void @emovo(i16* %arraydecay8.i.i.i.i, i16* %arraydecay65.i) nounwind
  br label %for.cond66.i

for.cond66.i:                                     ; preds = %done.i.i.i.i, %if.then51.i.i.i.i, %if.then6.i.i.i.i, %if.end.i.i.i.i.i, %if.then12.i.i.i, %if.then3.i.i.i, %if.then.i.i.i, %isitneg.i.i, %if.end.i.i, %for.cond.i.i, %for.body69.i
  %j.0.i = phi i32 [ %inc79.i, %for.body69.i ], [ 0, %for.cond.i.i ], [ 0, %if.end.i.i ], [ 0, %isitneg.i.i ], [ 0, %if.then.i.i.i ], [ 0, %if.then3.i.i.i ], [ 0, %if.then12.i.i.i ], [ 0, %if.end.i.i.i.i.i ], [ 0, %if.then6.i.i.i.i ], [ 0, %if.then51.i.i.i.i ], [ 0, %done.i.i.i.i ]
  %cmp67.i = icmp slt i32 %j.0.i, 9
  br i1 %cmp67.i, label %for.body69.i, label %for.end80.i

for.body69.i:                                     ; preds = %for.cond66.i
  %arrayidx70.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 %j.0.i
  %217 = load i16* %arrayidx70.i, align 2, !tbaa !5
  %arrayidx72.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 %j.0.i
  %218 = load i16* %arrayidx72.i, align 2, !tbaa !5
  %cmp74.i = icmp eq i16 %217, %218
  %inc79.i = add nsw i32 %j.0.i, 1
  br i1 %cmp74.i, label %for.cond66.i, label %noint.i

for.end80.i:                                      ; preds = %for.cond66.i
  %219 = load i16* %arraydecay12.i, align 2, !tbaa !5
  store i16 %219, i16* %arraydecay60.i, align 2, !tbaa !5
  %220 = load i16* %incdec.ptr1.i503.i, align 2, !tbaa !5
  store i16 %220, i16* %incdec.ptr1.i513.i, align 2, !tbaa !5
  %221 = load i16* %incdec.ptr1.1.i504.i, align 2, !tbaa !5
  store i16 %221, i16* %incdec.ptr1.1.i515.i, align 2, !tbaa !5
  %222 = load i16* %incdec.ptr1.2.i505.i, align 2, !tbaa !5
  store i16 %222, i16* %incdec.ptr1.2.i517.i, align 2, !tbaa !5
  %223 = load i16* %incdec.ptr1.3.i506.i, align 2, !tbaa !5
  store i16 %223, i16* %incdec.ptr1.3.i519.i, align 2, !tbaa !5
  %224 = load i16* %incdec.ptr1.4.i507.i, align 2, !tbaa !5
  store i16 %224, i16* %incdec.ptr1.4.i521.i, align 2, !tbaa !5
  %225 = load i16* %incdec.ptr1.5.i508.i, align 2, !tbaa !5
  store i16 %225, i16* %incdec.ptr1.5.i523.i, align 2, !tbaa !5
  %226 = load i16* %incdec.ptr1.6.i509.i, align 2, !tbaa !5
  store i16 %226, i16* %incdec.ptr1.6.i525.i, align 2, !tbaa !5
  %227 = load i16* %incdec.ptr1.7.i510.i, align 2, !tbaa !5
  store i16 %227, i16* %incdec.ptr1.7.i527.i, align 2, !tbaa !5
  %228 = load i16* %incdec.ptr1.8.i511.i, align 2, !tbaa !5
  store i16 %228, i16* %incdec.ptr1.8.i529.i, align 2, !tbaa !5
  %conv83.i = zext i16 %m.0.i to i32
  %add.i = add nsw i32 %conv83.i, %expon.0.i
  br label %noint.i

noint.i:                                          ; preds = %for.body69.i, %for.end80.i
  %expon.1.i = phi i32 [ %add.i, %for.end80.i ], [ %expon.0.i, %for.body69.i ]
  %add.ptr.i = getelementptr inbounds i16* %p.0.i, i32 10
  %shr492.i = lshr i16 %m.0.i, 1
  %cmp87.i = icmp eq i16 %shr492.i, 0
  br i1 %cmp87.i, label %do.end.i, label %do.body.i

do.end.i:                                         ; preds = %noint.i
  %229 = load i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  %conv90.i = zext i16 %229 to i32
  %sub.i = add i32 %conv90.i, 49010
  %230 = load i16* %incdec.ptr1.8.i529.i, align 2, !tbaa !5
  %conv92.i = zext i16 %230 to i32
  %add93.i = add i32 %sub.i, %conv92.i
  %conv94.i = trunc i32 %add93.i to i16
  store i16 %conv94.i, i16* %incdec.ptr1.8.i529.i, align 2, !tbaa !5
  %231 = load i16* %arraydecay60.i, align 2, !tbaa !5
  store i16 %231, i16* %arraydecay4.i, align 2, !tbaa !5
  %232 = load i16* %incdec.ptr1.i513.i, align 2, !tbaa !5
  store i16 %232, i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  %233 = load i16* %incdec.ptr1.1.i515.i, align 2, !tbaa !5
  store i16 %233, i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  %234 = load i16* %incdec.ptr1.2.i517.i, align 2, !tbaa !5
  store i16 %234, i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  %235 = load i16* %incdec.ptr1.3.i519.i, align 2, !tbaa !5
  store i16 %235, i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  %236 = load i16* %incdec.ptr1.4.i521.i, align 2, !tbaa !5
  store i16 %236, i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  %237 = load i16* %incdec.ptr1.5.i523.i, align 2, !tbaa !5
  store i16 %237, i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  %238 = load i16* %incdec.ptr1.6.i525.i, align 2, !tbaa !5
  store i16 %238, i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  %239 = load i16* %incdec.ptr1.7.i527.i, align 2, !tbaa !5
  store i16 %239, i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  store i16 %conv94.i, i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  %240 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), align 2, !tbaa !5
  store i16 %240, i16* %arraydecay12.i, align 2, !tbaa !5
  %241 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 1), align 2, !tbaa !5
  store i16 %241, i16* %incdec.ptr1.i503.i, align 2, !tbaa !5
  %242 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 2), align 2, !tbaa !5
  store i16 %242, i16* %incdec.ptr1.1.i504.i, align 2, !tbaa !5
  %243 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 3), align 2, !tbaa !5
  store i16 %243, i16* %incdec.ptr1.2.i505.i, align 2, !tbaa !5
  %244 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 4), align 2, !tbaa !5
  store i16 %244, i16* %incdec.ptr1.3.i506.i, align 2, !tbaa !5
  %245 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 5), align 2, !tbaa !5
  store i16 %245, i16* %incdec.ptr1.4.i507.i, align 2, !tbaa !5
  %246 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 6), align 2, !tbaa !5
  store i16 %246, i16* %incdec.ptr1.5.i508.i, align 2, !tbaa !5
  %247 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 7), align 2, !tbaa !5
  store i16 %247, i16* %incdec.ptr1.6.i509.i, align 2, !tbaa !5
  %248 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 8), align 2, !tbaa !5
  store i16 %248, i16* %incdec.ptr1.7.i510.i, align 2, !tbaa !5
  %249 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 9), align 2, !tbaa !5
  store i16 %249, i16* %incdec.ptr1.8.i511.i, align 2, !tbaa !5
  br label %while.cond.i

while.cond.i:                                     ; preds = %if.end113.i, %do.end.i
  %expon.2.i = phi i32 [ %expon.1.i, %do.end.i ], [ %expon.3.i, %if.end113.i ]
  %p.1.i = phi i16* [ getelementptr inbounds ([13 x [10 x i16]]* @etens, i32 0, i32 0, i32 0), %do.end.i ], [ %add.ptr122.i, %if.end113.i ]
  %m.1.i = phi i16 [ 4096, %do.end.i ], [ %shr115493.i, %if.end113.i ]
  %call99.i = call fastcc i32 @ecmp(i16* getelementptr inbounds ([13 x [10 x i16]]* @etens, i32 0, i32 12, i32 0), i16* %arraydecay60.i) nounwind
  %cmp100.i = icmp slt i32 %call99.i, 1
  br i1 %cmp100.i, label %while.body.i, label %isone.i

while.body.i:                                     ; preds = %while.cond.i
  %call103.i = call fastcc i32 @ecmp(i16* %p.1.i, i16* %arraydecay60.i) nounwind
  %cmp104.i = icmp slt i32 %call103.i, 1
  br i1 %cmp104.i, label %if.then106.i, label %if.end113.i

if.then106.i:                                     ; preds = %while.body.i
  call fastcc void @ediv(i16* %p.1.i, i16* %arraydecay60.i, i16* %arraydecay60.i, %struct.LDPARMS* %rnd) nounwind
  call fastcc void @emul(i16* %p.1.i, i16* %arraydecay12.i, i16* %arraydecay12.i, %struct.LDPARMS* %rnd) nounwind
  %conv111.i = zext i16 %m.1.i to i32
  %add112.i = add nsw i32 %conv111.i, %expon.2.i
  br label %if.end113.i

if.end113.i:                                      ; preds = %if.then106.i, %while.body.i
  %expon.3.i = phi i32 [ %add112.i, %if.then106.i ], [ %expon.2.i, %while.body.i ]
  %shr115493.i = lshr i16 %m.1.i, 1
  %cmp118.i = icmp eq i16 %shr115493.i, 0
  %add.ptr122.i = getelementptr inbounds i16* %p.1.i, i32 10
  br i1 %cmp118.i, label %isone.i, label %while.cond.i

if.else123.i:                                     ; preds = %if.end55.i
  %250 = load i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  %cmp126.i = icmp eq i16 %250, 0
  br i1 %cmp126.i, label %while.cond129.preheader.i, label %if.else140.i

while.cond129.preheader.i:                        ; preds = %if.else123.i
  %251 = load i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  %cmp133977.i = icmp sgt i16 %251, -1
  br i1 %cmp133977.i, label %while.body135.i, label %if.end197.loopexit.i

while.body135.i:                                  ; preds = %while.cond129.preheader.i, %while.body135.i
  %expon.4978.i = phi i32 [ %sub138.i, %while.body135.i ], [ 0, %while.cond129.preheader.i ]
  call fastcc void @emul(i16* getelementptr inbounds ([13 x [10 x i16]]* @etens, i32 0, i32 12, i32 0), i16* %arraydecay4.i, i16* %arraydecay4.i, %struct.LDPARMS* %rnd) nounwind
  %sub138.i = add nsw i32 %expon.4978.i, -1
  %252 = load i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  %cmp133.i = icmp sgt i16 %252, -1
  br i1 %cmp133.i, label %while.body135.i, label %if.end197.loopexit.i

if.else140.i:                                     ; preds = %if.else123.i
  %arraydecay142.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 0
  call fastcc void @emovi(i16* %arraydecay4.i, i16* %arraydecay142.i) nounwind
  %arrayidx147.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 12
  %arraydecay155.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 0
  %incdec.ptr.i578.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 1
  %incdec.ptr1.i579.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 1
  %incdec.ptr.1.i580.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 2
  %incdec.ptr1.1.i581.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 2
  %incdec.ptr.2.i582.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 3
  %incdec.ptr1.2.i583.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 3
  %incdec.ptr.3.i584.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 4
  %incdec.ptr1.3.i585.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 4
  %incdec.ptr.4.i586.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 5
  %incdec.ptr1.4.i587.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 5
  %incdec.ptr.5.i588.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 6
  %incdec.ptr1.5.i589.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 6
  %incdec.ptr.6.i590.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 7
  %incdec.ptr1.6.i591.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 7
  %incdec.ptr.7.i592.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 8
  %incdec.ptr1.7.i593.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 8
  %incdec.ptr.8.i594.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 9
  %incdec.ptr1.8.i595.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 9
  %incdec.ptr.9.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 10
  %incdec.ptr1.9.i.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 10
  %incdec.ptr.10.i.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 11
  %incdec.ptr1.10.i.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 11
  %scevgep.i596.i = getelementptr [13 x i16]* %u.i, i32 0, i32 12
  %.pre994.i = load i16* %arrayidx147.i, align 2, !tbaa !5
  %phitmp.i258 = and i16 %.pre994.i, 7
  %phitmp1008.i = icmp eq i16 %phitmp.i258, 0
  br label %for.body146.i

for.body146.i:                                    ; preds = %if.end188.i, %if.else140.i
  %253 = phi i1 [ %phitmp1008.i, %if.else140.i ], [ true, %if.end188.i ]
  %expon.5984.i = phi i32 [ 0, %if.else140.i ], [ %sub191.i, %if.end188.i ]
  %i.0983.i = phi i32 [ 0, %if.else140.i ], [ %inc193.i, %if.end188.i ]
  br i1 %253, label %if.end153.i, label %for.end194.i

if.end153.i:                                      ; preds = %for.body146.i
  %254 = load i16* %arraydecay142.i, align 2, !tbaa !5
  store i16 %254, i16* %arraydecay155.i, align 2, !tbaa !5
  %255 = load i16* %incdec.ptr.i578.i, align 2, !tbaa !5
  store i16 %255, i16* %incdec.ptr1.i579.i, align 2, !tbaa !5
  %256 = load i16* %incdec.ptr.1.i580.i, align 2, !tbaa !5
  store i16 %256, i16* %incdec.ptr1.1.i581.i, align 2, !tbaa !5
  %257 = load i16* %incdec.ptr.2.i582.i, align 2, !tbaa !5
  store i16 %257, i16* %incdec.ptr1.2.i583.i, align 2, !tbaa !5
  %258 = load i16* %incdec.ptr.3.i584.i, align 2, !tbaa !5
  store i16 %258, i16* %incdec.ptr1.3.i585.i, align 2, !tbaa !5
  %259 = load i16* %incdec.ptr.4.i586.i, align 2, !tbaa !5
  store i16 %259, i16* %incdec.ptr1.4.i587.i, align 2, !tbaa !5
  %260 = load i16* %incdec.ptr.5.i588.i, align 2, !tbaa !5
  store i16 %260, i16* %incdec.ptr1.5.i589.i, align 2, !tbaa !5
  %261 = load i16* %incdec.ptr.6.i590.i, align 2, !tbaa !5
  store i16 %261, i16* %incdec.ptr1.6.i591.i, align 2, !tbaa !5
  %262 = load i16* %incdec.ptr.7.i592.i, align 2, !tbaa !5
  store i16 %262, i16* %incdec.ptr1.7.i593.i, align 2, !tbaa !5
  %263 = load i16* %incdec.ptr.8.i594.i, align 2, !tbaa !5
  store i16 %263, i16* %incdec.ptr1.8.i595.i, align 2, !tbaa !5
  %264 = load i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  store i16 %264, i16* %incdec.ptr1.9.i.i, align 2, !tbaa !5
  %265 = load i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 %265, i16* %incdec.ptr1.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i596.i, align 2, !tbaa !5
  br label %for.body.i599.i

for.body.i599.i:                                  ; preds = %if.end12.i.for.body.i599_crit_edge.i, %if.end153.i
  %266 = phi i16 [ %256, %if.end153.i ], [ %.pre1004.i, %if.end12.i.for.body.i599_crit_edge.i ]
  %i.025.i.i = phi i32 [ 3, %if.end153.i ], [ %phitmp1011.i, %if.end12.i.for.body.i599_crit_edge.i ]
  %bits.024.i.i = phi i16 [ 0, %if.end153.i ], [ %conv14.i.i, %if.end12.i.for.body.i599_crit_edge.i ]
  %x.addr.023.i.i = phi i16* [ %incdec.ptr1.1.i581.i, %if.end153.i ], [ %incdec.ptr.i602.i, %if.end12.i.for.body.i599_crit_edge.i ]
  %and.i597.i = and i16 %266, 1
  %tobool.i598.i = icmp eq i16 %and.i597.i, 0
  br i1 %tobool.i598.i, label %if.end.i601.i, label %if.then.i600.i

if.then.i600.i:                                   ; preds = %for.body.i599.i
  %conv1.i.i = zext i16 %bits.024.i.i to i32
  %or.i.i = or i32 %conv1.i.i, 1
  %conv2.i.i = trunc i32 %or.i.i to i16
  br label %if.end.i601.i

if.end.i601.i:                                    ; preds = %if.then.i600.i, %for.body.i599.i
  %bits.1.i.i = phi i16 [ %conv2.i.i, %if.then.i600.i ], [ %bits.024.i.i, %for.body.i599.i ]
  %shr22.i.i = lshr i16 %266, 1
  %conv5.i.i = zext i16 %bits.1.i.i to i32
  %and6.i.i = and i32 %conv5.i.i, 2
  %tobool7.i.i = icmp eq i32 %and6.i.i, 0
  br i1 %tobool7.i.i, label %if.end12.i.i, label %if.then8.i.i

if.then8.i.i:                                     ; preds = %if.end.i601.i
  %conv9.i.i = zext i16 %shr22.i.i to i32
  %or10.i.i = or i32 %conv9.i.i, 32768
  %conv11.i.i = trunc i32 %or10.i.i to i16
  br label %if.end12.i.i

if.end12.i.i:                                     ; preds = %if.then8.i.i, %if.end.i601.i
  %storemerge.i.i = phi i16 [ %conv11.i.i, %if.then8.i.i ], [ %shr22.i.i, %if.end.i601.i ]
  store i16 %storemerge.i.i, i16* %x.addr.023.i.i, align 2
  %incdec.ptr.i602.i = getelementptr inbounds i16* %x.addr.023.i.i, i32 1
  %exitcond.i.i = icmp eq i32 %i.025.i.i, 13
  br i1 %exitcond.i.i, label %for.body.i610.i, label %if.end12.i.for.body.i599_crit_edge.i

if.end12.i.for.body.i599_crit_edge.i:             ; preds = %if.end12.i.i
  %shl.i.i = shl nuw nsw i32 %conv5.i.i, 1
  %conv14.i.i = trunc i32 %shl.i.i to i16
  %.pre1004.i = load i16* %incdec.ptr.i602.i, align 2, !tbaa !5
  %phitmp1011.i = add i32 %i.025.i.i, 1
  br label %for.body.i599.i

for.body.i610.i:                                  ; preds = %if.end12.i.i, %if.end12.i631.i
  %i.025.i605.i = phi i32 [ %inc.i629.i, %if.end12.i631.i ], [ 2, %if.end12.i.i ]
  %bits.024.i606.i = phi i16 [ %conv14.i627.i, %if.end12.i631.i ], [ 0, %if.end12.i.i ]
  %x.addr.023.i607.i = phi i16* [ %incdec.ptr.i628.i, %if.end12.i631.i ], [ %incdec.ptr1.1.i581.i, %if.end12.i.i ]
  %267 = load i16* %x.addr.023.i607.i, align 2, !tbaa !5
  %and.i608.i = and i16 %267, 1
  %tobool.i609.i = icmp eq i16 %and.i608.i, 0
  br i1 %tobool.i609.i, label %if.end.i620.i, label %if.then.i614.i

if.then.i614.i:                                   ; preds = %for.body.i610.i
  %conv1.i611.i = zext i16 %bits.024.i606.i to i32
  %or.i612.i = or i32 %conv1.i611.i, 1
  %conv2.i613.i = trunc i32 %or.i612.i to i16
  br label %if.end.i620.i

if.end.i620.i:                                    ; preds = %if.then.i614.i, %for.body.i610.i
  %bits.1.i615.i = phi i16 [ %conv2.i613.i, %if.then.i614.i ], [ %bits.024.i606.i, %for.body.i610.i ]
  %shr22.i616.i = lshr i16 %267, 1
  %conv5.i617.i = zext i16 %bits.1.i615.i to i32
  %and6.i618.i = and i32 %conv5.i617.i, 2
  %tobool7.i619.i = icmp eq i32 %and6.i618.i, 0
  br i1 %tobool7.i619.i, label %if.end12.i631.i, label %if.then8.i624.i

if.then8.i624.i:                                  ; preds = %if.end.i620.i
  %conv9.i621.i = zext i16 %shr22.i616.i to i32
  %or10.i622.i = or i32 %conv9.i621.i, 32768
  %conv11.i623.i = trunc i32 %or10.i622.i to i16
  br label %if.end12.i631.i

if.end12.i631.i:                                  ; preds = %if.then8.i624.i, %if.end.i620.i
  %storemerge.i625.i = phi i16 [ %conv11.i623.i, %if.then8.i624.i ], [ %shr22.i616.i, %if.end.i620.i ]
  store i16 %storemerge.i625.i, i16* %x.addr.023.i607.i, align 2
  %shl.i626.i = shl nuw nsw i32 %conv5.i617.i, 1
  %conv14.i627.i = trunc i32 %shl.i626.i to i16
  %incdec.ptr.i628.i = getelementptr inbounds i16* %x.addr.023.i607.i, i32 1
  %inc.i629.i = add nsw i32 %i.025.i605.i, 1
  %exitcond.i630.i = icmp eq i32 %inc.i629.i, 13
  br i1 %exitcond.i630.i, label %eshdn1.exit632.i, label %for.body.i610.i

eshdn1.exit632.i:                                 ; preds = %if.end12.i631.i
  call fastcc void @eaddm(i16* %arraydecay142.i, i16* %arraydecay155.i) nounwind
  %268 = load i16* %incdec.ptr1.i579.i, align 2, !tbaa !5
  %conv161.i = zext i16 %268 to i32
  %add162.i = add nsw i32 %conv161.i, 3
  %storemerge491980.i = trunc i32 %add162.i to i16
  store i16 %storemerge491980.i, i16* %incdec.ptr1.i579.i, align 2
  %269 = load i16* %incdec.ptr1.1.i581.i, align 2, !tbaa !5
  %cmp167981.i = icmp eq i16 %269, 0
  br i1 %cmp167981.i, label %while.end175.i, label %for.body.i639.i

for.body.i639.i:                                  ; preds = %eshdn1.exit661.i, %if.end12.i660.for.body.i639_crit_edge.i, %eshdn1.exit632.i
  %270 = phi i16 [ %269, %eshdn1.exit632.i ], [ %.pre1005.i, %if.end12.i660.for.body.i639_crit_edge.i ], [ %272, %eshdn1.exit661.i ]
  %i.025.i634.i = phi i32 [ 3, %eshdn1.exit632.i ], [ %phitmp1012.i, %if.end12.i660.for.body.i639_crit_edge.i ], [ 3, %eshdn1.exit661.i ]
  %bits.024.i635.i = phi i16 [ 0, %eshdn1.exit632.i ], [ %conv14.i656.i, %if.end12.i660.for.body.i639_crit_edge.i ], [ 0, %eshdn1.exit661.i ]
  %x.addr.023.i636.i = phi i16* [ %incdec.ptr1.1.i581.i, %eshdn1.exit632.i ], [ %incdec.ptr.i657.i, %if.end12.i660.for.body.i639_crit_edge.i ], [ %incdec.ptr1.1.i581.i, %eshdn1.exit661.i ]
  %and.i637.i = and i16 %270, 1
  %tobool.i638.i = icmp eq i16 %and.i637.i, 0
  br i1 %tobool.i638.i, label %if.end.i649.i, label %if.then.i643.i

if.then.i643.i:                                   ; preds = %for.body.i639.i
  %conv1.i640.i = zext i16 %bits.024.i635.i to i32
  %or.i641.i = or i32 %conv1.i640.i, 1
  %conv2.i642.i = trunc i32 %or.i641.i to i16
  br label %if.end.i649.i

if.end.i649.i:                                    ; preds = %if.then.i643.i, %for.body.i639.i
  %bits.1.i644.i = phi i16 [ %conv2.i642.i, %if.then.i643.i ], [ %bits.024.i635.i, %for.body.i639.i ]
  %shr22.i645.i = lshr i16 %270, 1
  %conv5.i646.i = zext i16 %bits.1.i644.i to i32
  %and6.i647.i = and i32 %conv5.i646.i, 2
  %tobool7.i648.i = icmp eq i32 %and6.i647.i, 0
  br i1 %tobool7.i648.i, label %if.end12.i660.i, label %if.then8.i653.i

if.then8.i653.i:                                  ; preds = %if.end.i649.i
  %conv9.i650.i = zext i16 %shr22.i645.i to i32
  %or10.i651.i = or i32 %conv9.i650.i, 32768
  %conv11.i652.i = trunc i32 %or10.i651.i to i16
  br label %if.end12.i660.i

if.end12.i660.i:                                  ; preds = %if.then8.i653.i, %if.end.i649.i
  %storemerge.i654.i = phi i16 [ %conv11.i652.i, %if.then8.i653.i ], [ %shr22.i645.i, %if.end.i649.i ]
  store i16 %storemerge.i654.i, i16* %x.addr.023.i636.i, align 2
  %incdec.ptr.i657.i = getelementptr inbounds i16* %x.addr.023.i636.i, i32 1
  %exitcond.i659.i = icmp eq i32 %i.025.i634.i, 13
  br i1 %exitcond.i659.i, label %eshdn1.exit661.i, label %if.end12.i660.for.body.i639_crit_edge.i

if.end12.i660.for.body.i639_crit_edge.i:          ; preds = %if.end12.i660.i
  %shl.i655.i = shl nuw nsw i32 %conv5.i646.i, 1
  %conv14.i656.i = trunc i32 %shl.i655.i to i16
  %.pre1005.i = load i16* %incdec.ptr.i657.i, align 2, !tbaa !5
  %phitmp1012.i = add i32 %i.025.i634.i, 1
  br label %for.body.i639.i

eshdn1.exit661.i:                                 ; preds = %if.end12.i660.i
  %271 = load i16* %incdec.ptr1.i579.i, align 2, !tbaa !5
  %conv172.i = zext i16 %271 to i32
  %add173.i = add nsw i32 %conv172.i, 1
  %storemerge491.i = trunc i32 %add173.i to i16
  store i16 %storemerge491.i, i16* %incdec.ptr1.i579.i, align 2
  %272 = load i16* %incdec.ptr1.1.i581.i, align 2, !tbaa !5
  %cmp167.i = icmp eq i16 %272, 0
  br i1 %cmp167.i, label %while.end175.i, label %for.body.i639.i

while.end175.i:                                   ; preds = %eshdn1.exit661.i, %eshdn1.exit632.i
  %273 = phi i16 [ %storemerge491980.i, %eshdn1.exit632.i ], [ %storemerge491.i, %eshdn1.exit661.i ]
  %274 = load i16* %scevgep.i596.i, align 2, !tbaa !5
  %cmp178.i = icmp eq i16 %274, 0
  %275 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 9), align 2, !tbaa !5
  %cmp185.i = icmp ugt i16 %275, %273
  %or.cond.i = and i1 %cmp178.i, %cmp185.i
  br i1 %or.cond.i, label %if.end188.i, label %for.end194.i

if.end188.i:                                      ; preds = %while.end175.i
  %276 = load i16* %arraydecay155.i, align 2, !tbaa !5
  store i16 %276, i16* %arraydecay142.i, align 2, !tbaa !5
  store i16 %273, i16* %incdec.ptr.i578.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i580.i, align 2, !tbaa !5
  %277 = load i16* %incdec.ptr1.2.i583.i, align 2, !tbaa !5
  store i16 %277, i16* %incdec.ptr.2.i582.i, align 2, !tbaa !5
  %278 = load i16* %incdec.ptr1.3.i585.i, align 2, !tbaa !5
  store i16 %278, i16* %incdec.ptr.3.i584.i, align 2, !tbaa !5
  %279 = load i16* %incdec.ptr1.4.i587.i, align 2, !tbaa !5
  store i16 %279, i16* %incdec.ptr.4.i586.i, align 2, !tbaa !5
  %280 = load i16* %incdec.ptr1.5.i589.i, align 2, !tbaa !5
  store i16 %280, i16* %incdec.ptr.5.i588.i, align 2, !tbaa !5
  %281 = load i16* %incdec.ptr1.6.i591.i, align 2, !tbaa !5
  store i16 %281, i16* %incdec.ptr.6.i590.i, align 2, !tbaa !5
  %282 = load i16* %incdec.ptr1.7.i593.i, align 2, !tbaa !5
  store i16 %282, i16* %incdec.ptr.7.i592.i, align 2, !tbaa !5
  %283 = load i16* %incdec.ptr1.8.i595.i, align 2, !tbaa !5
  store i16 %283, i16* %incdec.ptr.8.i594.i, align 2, !tbaa !5
  %284 = load i16* %incdec.ptr1.9.i.i, align 2, !tbaa !5
  store i16 %284, i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  %285 = load i16* %incdec.ptr1.10.i.i, align 2, !tbaa !5
  store i16 %285, i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %arrayidx147.i, align 2, !tbaa !5
  %sub191.i = add nsw i32 %expon.5984.i, -1
  %inc193.i = add nsw i32 %i.0983.i, 1
  %cmp144.i = icmp slt i32 %inc193.i, 43
  br i1 %cmp144.i, label %for.body146.i, label %for.end194.i

for.end194.i:                                     ; preds = %if.end188.i, %while.end175.i, %for.body146.i
  %expon.5.lcssa.i = phi i32 [ %expon.5984.i, %while.end175.i ], [ %expon.5984.i, %for.body146.i ], [ %sub191.i, %if.end188.i ]
  call fastcc void @emovo(i16* %arraydecay142.i, i16* %arraydecay4.i) nounwind
  %.pre.i = load i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  br label %if.end197.i

if.end197.loopexit.i:                             ; preds = %while.body135.i, %while.cond129.preheader.i
  %286 = phi i16 [ %251, %while.cond129.preheader.i ], [ %252, %while.body135.i ]
  %expon.4.lcssa.i = phi i32 [ 0, %while.cond129.preheader.i ], [ %sub138.i, %while.body135.i ]
  %arraydecay199.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 0
  %incdec.ptr1.i778.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 1
  %incdec.ptr1.1.i780.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 2
  %incdec.ptr1.2.i782.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 3
  %incdec.ptr1.3.i784.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 4
  %incdec.ptr1.4.i786.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 5
  %incdec.ptr1.5.i788.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 6
  %incdec.ptr1.6.i790.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 7
  %incdec.ptr1.7.i792.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 8
  %incdec.ptr1.8.i794.pre.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 9
  br label %if.end197.i

if.end197.i:                                      ; preds = %if.end197.loopexit.i, %for.end194.i
  %incdec.ptr1.8.i794.pre-phi.i = phi i16* [ %incdec.ptr1.8.i794.pre.i, %if.end197.loopexit.i ], [ %incdec.ptr.8.i594.i, %for.end194.i ]
  %incdec.ptr1.7.i792.pre-phi.i = phi i16* [ %incdec.ptr1.7.i792.pre.i, %if.end197.loopexit.i ], [ %incdec.ptr.7.i592.i, %for.end194.i ]
  %incdec.ptr1.6.i790.pre-phi.i = phi i16* [ %incdec.ptr1.6.i790.pre.i, %if.end197.loopexit.i ], [ %incdec.ptr.6.i590.i, %for.end194.i ]
  %incdec.ptr1.5.i788.pre-phi.i = phi i16* [ %incdec.ptr1.5.i788.pre.i, %if.end197.loopexit.i ], [ %incdec.ptr.5.i588.i, %for.end194.i ]
  %incdec.ptr1.4.i786.pre-phi.i = phi i16* [ %incdec.ptr1.4.i786.pre.i, %if.end197.loopexit.i ], [ %incdec.ptr.4.i586.i, %for.end194.i ]
  %incdec.ptr1.3.i784.pre-phi.i = phi i16* [ %incdec.ptr1.3.i784.pre.i, %if.end197.loopexit.i ], [ %incdec.ptr.3.i584.i, %for.end194.i ]
  %incdec.ptr1.2.i782.pre-phi.i = phi i16* [ %incdec.ptr1.2.i782.pre.i, %if.end197.loopexit.i ], [ %incdec.ptr.2.i582.i, %for.end194.i ]
  %incdec.ptr1.1.i780.pre-phi.i = phi i16* [ %incdec.ptr1.1.i780.pre.i, %if.end197.loopexit.i ], [ %incdec.ptr.1.i580.i, %for.end194.i ]
  %incdec.ptr1.i778.pre-phi.i = phi i16* [ %incdec.ptr1.i778.pre.i, %if.end197.loopexit.i ], [ %incdec.ptr.i578.i, %for.end194.i ]
  %arraydecay199.pre-phi.i = phi i16* [ %arraydecay199.pre.i, %if.end197.loopexit.i ], [ %arraydecay142.i, %for.end194.i ]
  %287 = phi i16 [ %286, %if.end197.loopexit.i ], [ %.pre.i, %for.end194.i ]
  %expon.6.i = phi i32 [ %expon.4.lcssa.i, %if.end197.loopexit.i ], [ %expon.5.lcssa.i, %for.end194.i ]
  %288 = load i16* %arraydecay4.i, align 2, !tbaa !5
  store i16 %288, i16* %arraydecay199.pre-phi.i, align 2, !tbaa !5
  %289 = load i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  store i16 %289, i16* %incdec.ptr1.i778.pre-phi.i, align 2, !tbaa !5
  %290 = load i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  store i16 %290, i16* %incdec.ptr1.1.i780.pre-phi.i, align 2, !tbaa !5
  %291 = load i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  store i16 %291, i16* %incdec.ptr1.2.i782.pre-phi.i, align 2, !tbaa !5
  %292 = load i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  store i16 %292, i16* %incdec.ptr1.3.i784.pre-phi.i, align 2, !tbaa !5
  %293 = load i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  store i16 %293, i16* %incdec.ptr1.4.i786.pre-phi.i, align 2, !tbaa !5
  %294 = load i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  store i16 %294, i16* %incdec.ptr1.5.i788.pre-phi.i, align 2, !tbaa !5
  %295 = load i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  store i16 %295, i16* %incdec.ptr1.6.i790.pre-phi.i, align 2, !tbaa !5
  store i16 %287, i16* %incdec.ptr1.7.i792.pre-phi.i, align 2, !tbaa !5
  %296 = load i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  store i16 %296, i16* %incdec.ptr1.8.i794.pre-phi.i, align 2, !tbaa !5
  %297 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), align 2, !tbaa !5
  store i16 %297, i16* %arraydecay12.i, align 2, !tbaa !5
  %298 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 1), align 2, !tbaa !5
  store i16 %298, i16* %incdec.ptr1.i503.i, align 2, !tbaa !5
  %299 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 2), align 2, !tbaa !5
  store i16 %299, i16* %incdec.ptr1.1.i504.i, align 2, !tbaa !5
  %300 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 3), align 2, !tbaa !5
  store i16 %300, i16* %incdec.ptr1.2.i505.i, align 2, !tbaa !5
  %301 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 4), align 2, !tbaa !5
  store i16 %301, i16* %incdec.ptr1.3.i506.i, align 2, !tbaa !5
  %302 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 5), align 2, !tbaa !5
  store i16 %302, i16* %incdec.ptr1.4.i507.i, align 2, !tbaa !5
  %303 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 6), align 2, !tbaa !5
  store i16 %303, i16* %incdec.ptr1.5.i508.i, align 2, !tbaa !5
  %304 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 7), align 2, !tbaa !5
  store i16 %304, i16* %incdec.ptr1.6.i509.i, align 2, !tbaa !5
  %305 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 8), align 2, !tbaa !5
  store i16 %305, i16* %incdec.ptr1.7.i510.i, align 2, !tbaa !5
  %306 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 9), align 2, !tbaa !5
  store i16 %306, i16* %incdec.ptr1.8.i511.i, align 2, !tbaa !5
  %call203970.i = call fastcc i32 @ecmp(i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), i16* %arraydecay199.pre-phi.i) nounwind
  %cmp204971.i = icmp sgt i32 %call203970.i, 0
  br i1 %cmp204971.i, label %while.body206.i, label %while.end224.i

while.body206.i:                                  ; preds = %if.end197.i, %if.end221.i
  %p.2975.i = phi i16* [ %add.ptr222.i, %if.end221.i ], [ getelementptr inbounds ([13 x [10 x i16]]* @emtens, i32 0, i32 0, i32 0), %if.end197.i ]
  %expon.7974.i = phi i32 [ %expon.8.i, %if.end221.i ], [ %expon.6.i, %if.end197.i ]
  %k.1973.i = phi i32 [ %div.i, %if.end221.i ], [ -4096, %if.end197.i ]
  %r.0972.i = phi i16* [ %add.ptr223.i, %if.end221.i ], [ getelementptr inbounds ([13 x [10 x i16]]* @etens, i32 0, i32 0, i32 0), %if.end197.i ]
  %call208.i = call fastcc i32 @ecmp(i16* %p.2975.i, i16* %arraydecay199.pre-phi.i) nounwind
  %cmp209.i = icmp sgt i32 %call208.i, -1
  br i1 %cmp209.i, label %if.then211.i, label %if.end217.i

if.then211.i:                                     ; preds = %while.body206.i
  call fastcc void @emul(i16* %r.0972.i, i16* %arraydecay199.pre-phi.i, i16* %arraydecay199.pre-phi.i, %struct.LDPARMS* %rnd) nounwind
  call fastcc void @emul(i16* %r.0972.i, i16* %arraydecay12.i, i16* %arraydecay12.i, %struct.LDPARMS* %rnd) nounwind
  %add216.i = add nsw i32 %k.1973.i, %expon.7974.i
  br label %if.end217.i

if.end217.i:                                      ; preds = %if.then211.i, %while.body206.i
  %expon.8.i = phi i32 [ %add216.i, %if.then211.i ], [ %expon.7974.i, %while.body206.i ]
  %k.1.off.i = add i32 %k.1973.i, 1
  %307 = icmp ult i32 %k.1.off.i, 3
  br i1 %307, label %while.end224.i, label %if.end221.i

if.end221.i:                                      ; preds = %if.end217.i
  %div.i = sdiv i32 %k.1973.i, 2
  %add.ptr222.i = getelementptr inbounds i16* %p.2975.i, i32 10
  %add.ptr223.i = getelementptr inbounds i16* %r.0972.i, i32 10
  %call203.i = call fastcc i32 @ecmp(i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), i16* %arraydecay199.pre-phi.i) nounwind
  %cmp204.i = icmp sgt i32 %call203.i, 0
  br i1 %cmp204.i, label %while.body206.i, label %while.end224.i

while.end224.i:                                   ; preds = %if.end221.i, %if.end217.i, %if.end197.i
  %expon.9.i = phi i32 [ %expon.6.i, %if.end197.i ], [ %expon.8.i, %if.end217.i ], [ %expon.8.i, %if.end221.i ]
  call fastcc void @ediv(i16* %arraydecay12.i, i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), i16* %arraydecay12.i, %struct.LDPARMS* %rnd) nounwind
  br label %isone.i

isone.i:                                          ; preds = %for.cond.i, %if.end113.i, %while.cond.i, %while.end224.i, %if.end49.i
  %expon.10.i = phi i32 [ 0, %if.end49.i ], [ %expon.9.i, %while.end224.i ], [ %expon.3.i, %if.end113.i ], [ %expon.2.i, %while.cond.i ], [ 0, %for.cond.i ]
  %arraydecay229.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 0
  call fastcc void @emovi(i16* %arraydecay12.i, i16* %arraydecay229.i) nounwind
  %incdec.ptr.i902.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 1
  %308 = load i16* %arraydecay229.i, align 2, !tbaa !5
  store i16 %308, i16* %arraydecay12.i, align 2, !tbaa !5
  %incdec.ptr.1.i904.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 2
  %309 = load i16* %incdec.ptr.i902.i, align 2, !tbaa !5
  store i16 %309, i16* %incdec.ptr1.i503.i, align 2, !tbaa !5
  %incdec.ptr.2.i906.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 3
  %310 = load i16* %incdec.ptr.1.i904.i, align 2, !tbaa !5
  store i16 %310, i16* %incdec.ptr1.1.i504.i, align 2, !tbaa !5
  %incdec.ptr.3.i908.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 4
  %311 = load i16* %incdec.ptr.2.i906.i, align 2, !tbaa !5
  store i16 %311, i16* %incdec.ptr1.2.i505.i, align 2, !tbaa !5
  %incdec.ptr.4.i910.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 5
  %312 = load i16* %incdec.ptr.3.i908.i, align 2, !tbaa !5
  store i16 %312, i16* %incdec.ptr1.3.i506.i, align 2, !tbaa !5
  %incdec.ptr.5.i912.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 6
  %313 = load i16* %incdec.ptr.4.i910.i, align 2, !tbaa !5
  store i16 %313, i16* %incdec.ptr1.4.i507.i, align 2, !tbaa !5
  %incdec.ptr.6.i914.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 7
  %314 = load i16* %incdec.ptr.5.i912.i, align 2, !tbaa !5
  store i16 %314, i16* %incdec.ptr1.5.i508.i, align 2, !tbaa !5
  %incdec.ptr.7.i916.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 8
  %315 = load i16* %incdec.ptr.6.i914.i, align 2, !tbaa !5
  store i16 %315, i16* %incdec.ptr1.6.i509.i, align 2, !tbaa !5
  %incdec.ptr.8.i918.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 9
  %316 = load i16* %incdec.ptr.7.i916.i, align 2, !tbaa !5
  store i16 %316, i16* %incdec.ptr1.7.i510.i, align 2, !tbaa !5
  %incdec.ptr.9.i920.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 10
  %317 = load i16* %incdec.ptr.8.i918.i, align 2, !tbaa !5
  %incdec.ptr1.9.i921.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 10
  store i16 %317, i16* %incdec.ptr1.8.i511.i, align 2, !tbaa !5
  %incdec.ptr.10.i922.i = getelementptr inbounds [13 x i16]* %w.i, i32 0, i32 11
  %318 = load i16* %incdec.ptr.9.i920.i, align 2, !tbaa !5
  %incdec.ptr1.10.i923.i = getelementptr inbounds [13 x i16]* %t.i, i32 0, i32 11
  store i16 %318, i16* %incdec.ptr1.9.i921.i, align 2, !tbaa !5
  %319 = load i16* %incdec.ptr.10.i922.i, align 2, !tbaa !5
  store i16 %319, i16* %incdec.ptr1.10.i923.i, align 2, !tbaa !5
  %scevgep.i924.i = getelementptr [13 x i16]* %t.i, i32 0, i32 12
  store i16 0, i16* %scevgep.i924.i, align 2, !tbaa !5
  call fastcc void @emovi(i16* %arraydecay4.i, i16* %arraydecay229.i) nounwind
  %320 = load i16* %arraydecay229.i, align 2, !tbaa !5
  store i16 %320, i16* %arraydecay4.i, align 2, !tbaa !5
  %321 = load i16* %incdec.ptr.i902.i, align 2, !tbaa !5
  store i16 %321, i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  %322 = load i16* %incdec.ptr.1.i904.i, align 2, !tbaa !5
  store i16 %322, i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  %323 = load i16* %incdec.ptr.2.i906.i, align 2, !tbaa !5
  store i16 %323, i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  %324 = load i16* %incdec.ptr.3.i908.i, align 2, !tbaa !5
  store i16 %324, i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  %325 = load i16* %incdec.ptr.4.i910.i, align 2, !tbaa !5
  store i16 %325, i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  %326 = load i16* %incdec.ptr.5.i912.i, align 2, !tbaa !5
  store i16 %326, i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  %327 = load i16* %incdec.ptr.6.i914.i, align 2, !tbaa !5
  store i16 %327, i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  %328 = load i16* %incdec.ptr.7.i916.i, align 2, !tbaa !5
  store i16 %328, i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  %329 = load i16* %incdec.ptr.8.i918.i, align 2, !tbaa !5
  %incdec.ptr1.9.i944.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 10
  store i16 %329, i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  %330 = load i16* %incdec.ptr.9.i920.i, align 2, !tbaa !5
  %incdec.ptr1.10.i946.i = getelementptr inbounds [13 x i16]* %y.i, i32 0, i32 11
  store i16 %330, i16* %incdec.ptr1.9.i944.i, align 2, !tbaa !5
  %331 = load i16* %incdec.ptr.10.i922.i, align 2, !tbaa !5
  store i16 %331, i16* %incdec.ptr1.10.i946.i, align 2, !tbaa !5
  %scevgep.i947.i = getelementptr [13 x i16]* %y.i, i32 0, i32 12
  store i16 0, i16* %scevgep.i947.i, align 2, !tbaa !5
  call fastcc void @eiremain(i16* %arraydecay12.i, i16* %arraydecay4.i, %struct.LDPARMS* %rnd) nounwind
  %arrayidx238.i = getelementptr inbounds %struct.LDPARMS* %rnd, i32 0, i32 9, i32 12
  %332 = load i16* %arrayidx238.i, align 4, !tbaa !5
  %conv239.i = zext i16 %332 to i32
  %cmp241965.i = icmp eq i16 %332, 0
  br i1 %cmp241965.i, label %land.rhs.lr.ph.i, label %while.end260.i

land.rhs.lr.ph.i:                                 ; preds = %isone.i
  %arraydecay250.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 0
  %incdec.ptr1.i846.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 1
  %incdec.ptr1.1.i848.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 2
  %incdec.ptr1.2.i850.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 3
  %incdec.ptr1.3.i852.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 4
  %incdec.ptr1.4.i854.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 5
  %incdec.ptr1.5.i856.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 6
  %incdec.ptr1.6.i858.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 7
  %incdec.ptr1.7.i860.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 8
  %incdec.ptr1.8.i862.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 9
  %incdec.ptr1.9.i864.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 10
  %incdec.ptr1.10.i866.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 11
  %scevgep.i867.i = getelementptr [13 x i16]* %u.i, i32 0, i32 12
  br label %land.rhs.i

land.rhs.i:                                       ; preds = %eshup1.exit819.i, %land.rhs.lr.ph.i
  %digit.0967.i = phi i32 [ %conv239.i, %land.rhs.lr.ph.i ], [ %conv258.i, %eshup1.exit819.i ]
  %expon.11966.i = phi i32 [ %expon.10.i, %land.rhs.lr.ph.i ], [ %sub259.i, %eshup1.exit819.i ]
  %call244.i = call fastcc i32 @ecmp(i16* %arraydecay4.i, i16* getelementptr inbounds ([10 x i16]* @ezero, i32 0, i32 0)) nounwind
  %cmp245.i = icmp eq i32 %call244.i, 0
  br i1 %cmp245.i, label %while.end260.i, label %for.body.i873.i

for.body.i873.i:                                  ; preds = %land.rhs.i, %if.end.i891.i
  %i.025.i869.i = phi i32 [ %inc.i889.i, %if.end.i891.i ], [ 2, %land.rhs.i ]
  %bits.024.i870.i = phi i16 [ %conv15.i887.i, %if.end.i891.i ], [ 0, %land.rhs.i ]
  %x.addr.023.i871.i = phi i16* [ %incdec.ptr.i888.i, %if.end.i891.i ], [ %scevgep.i947.i, %land.rhs.i ]
  %333 = load i16* %x.addr.023.i871.i, align 2, !tbaa !5
  %tobool.i872.i = icmp slt i16 %333, 0
  br i1 %tobool.i872.i, label %if.then.i877.i, label %if.end.i891.i

if.then.i877.i:                                   ; preds = %for.body.i873.i
  %conv1.i874.i = zext i16 %bits.024.i870.i to i32
  %or.i875.i = or i32 %conv1.i874.i, 1
  %conv2.i876.i = trunc i32 %or.i875.i to i16
  br label %if.end.i891.i

if.end.i891.i:                                    ; preds = %if.then.i877.i, %for.body.i873.i
  %bits.1.i878.i = phi i16 [ %conv2.i876.i, %if.then.i877.i ], [ %bits.024.i870.i, %for.body.i873.i ]
  %conv3.i879.i = zext i16 %333 to i32
  %shl.i880.i = shl nuw nsw i32 %conv3.i879.i, 1
  %conv5.i881.i = zext i16 %bits.1.i878.i to i32
  %and6.i882.i = lshr i32 %conv5.i881.i, 1
  %and6.lobit.i883.i = and i32 %and6.i882.i, 1
  %storemerge.in.i884.i = or i32 %and6.lobit.i883.i, %shl.i880.i
  %storemerge.i885.i = trunc i32 %storemerge.in.i884.i to i16
  store i16 %storemerge.i885.i, i16* %x.addr.023.i871.i, align 2
  %shl14.i886.i = shl nuw nsw i32 %conv5.i881.i, 1
  %conv15.i887.i = trunc i32 %shl14.i886.i to i16
  %incdec.ptr.i888.i = getelementptr inbounds i16* %x.addr.023.i871.i, i32 -1
  %inc.i889.i = add nsw i32 %i.025.i869.i, 1
  %exitcond.i890.i = icmp eq i32 %inc.i889.i, 13
  br i1 %exitcond.i890.i, label %eshup1.exit892.i, label %for.body.i873.i

eshup1.exit892.i:                                 ; preds = %if.end.i891.i
  %334 = load i16* %arraydecay4.i, align 2, !tbaa !5
  store i16 %334, i16* %arraydecay250.i, align 2, !tbaa !5
  %335 = load i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  store i16 %335, i16* %incdec.ptr1.i846.i, align 2, !tbaa !5
  %336 = load i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  store i16 %336, i16* %incdec.ptr1.1.i848.i, align 2, !tbaa !5
  %337 = load i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  store i16 %337, i16* %incdec.ptr1.2.i850.i, align 2, !tbaa !5
  %338 = load i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  store i16 %338, i16* %incdec.ptr1.3.i852.i, align 2, !tbaa !5
  %339 = load i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  store i16 %339, i16* %incdec.ptr1.4.i854.i, align 2, !tbaa !5
  %340 = load i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  store i16 %340, i16* %incdec.ptr1.5.i856.i, align 2, !tbaa !5
  %341 = load i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  store i16 %341, i16* %incdec.ptr1.6.i858.i, align 2, !tbaa !5
  %342 = load i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  store i16 %342, i16* %incdec.ptr1.7.i860.i, align 2, !tbaa !5
  %343 = load i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  store i16 %343, i16* %incdec.ptr1.8.i862.i, align 2, !tbaa !5
  %344 = load i16* %incdec.ptr1.9.i944.i, align 2, !tbaa !5
  store i16 %344, i16* %incdec.ptr1.9.i864.i, align 2, !tbaa !5
  %345 = load i16* %incdec.ptr1.10.i946.i, align 2, !tbaa !5
  store i16 %345, i16* %incdec.ptr1.10.i866.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i867.i, align 2, !tbaa !5
  br label %for.body.i825.i

for.body.i825.i:                                  ; preds = %if.end.i843.for.body.i825_crit_edge.i, %eshup1.exit892.i
  %346 = phi i16 [ 0, %eshup1.exit892.i ], [ %.pre1006.i, %if.end.i843.for.body.i825_crit_edge.i ]
  %i.025.i821.i = phi i32 [ 3, %eshup1.exit892.i ], [ %phitmp1010.i, %if.end.i843.for.body.i825_crit_edge.i ]
  %bits.024.i822.i = phi i16 [ 0, %eshup1.exit892.i ], [ %conv15.i839.i, %if.end.i843.for.body.i825_crit_edge.i ]
  %x.addr.023.i823.i = phi i16* [ %scevgep.i867.i, %eshup1.exit892.i ], [ %incdec.ptr.i840.i, %if.end.i843.for.body.i825_crit_edge.i ]
  %tobool.i824.i = icmp slt i16 %346, 0
  br i1 %tobool.i824.i, label %if.then.i829.i, label %if.end.i843.i

if.then.i829.i:                                   ; preds = %for.body.i825.i
  %conv1.i826.i = zext i16 %bits.024.i822.i to i32
  %or.i827.i = or i32 %conv1.i826.i, 1
  %conv2.i828.i = trunc i32 %or.i827.i to i16
  br label %if.end.i843.i

if.end.i843.i:                                    ; preds = %if.then.i829.i, %for.body.i825.i
  %bits.1.i830.i = phi i16 [ %conv2.i828.i, %if.then.i829.i ], [ %bits.024.i822.i, %for.body.i825.i ]
  %conv3.i831.i = zext i16 %346 to i32
  %shl.i832.i = shl nuw nsw i32 %conv3.i831.i, 1
  %conv5.i833.i = zext i16 %bits.1.i830.i to i32
  %and6.i834.i = lshr i32 %conv5.i833.i, 1
  %and6.lobit.i835.i = and i32 %and6.i834.i, 1
  %storemerge.in.i836.i = or i32 %and6.lobit.i835.i, %shl.i832.i
  %storemerge.i837.i = trunc i32 %storemerge.in.i836.i to i16
  store i16 %storemerge.i837.i, i16* %x.addr.023.i823.i, align 2
  %incdec.ptr.i840.i = getelementptr inbounds i16* %x.addr.023.i823.i, i32 -1
  %exitcond.i842.i = icmp eq i32 %i.025.i821.i, 13
  br i1 %exitcond.i842.i, label %for.body.i800.i, label %if.end.i843.for.body.i825_crit_edge.i

if.end.i843.for.body.i825_crit_edge.i:            ; preds = %if.end.i843.i
  %shl14.i838.i = shl nuw nsw i32 %conv5.i833.i, 1
  %conv15.i839.i = trunc i32 %shl14.i838.i to i16
  %.pre1006.i = load i16* %incdec.ptr.i840.i, align 2, !tbaa !5
  %phitmp1010.i = add i32 %i.025.i821.i, 1
  br label %for.body.i825.i

for.body.i800.i:                                  ; preds = %if.end.i843.i, %if.end.i818.i
  %i.025.i796.i = phi i32 [ %inc.i816.i, %if.end.i818.i ], [ 2, %if.end.i843.i ]
  %bits.024.i797.i = phi i16 [ %conv15.i814.i, %if.end.i818.i ], [ 0, %if.end.i843.i ]
  %x.addr.023.i798.i = phi i16* [ %incdec.ptr.i815.i, %if.end.i818.i ], [ %scevgep.i867.i, %if.end.i843.i ]
  %347 = load i16* %x.addr.023.i798.i, align 2, !tbaa !5
  %tobool.i799.i = icmp slt i16 %347, 0
  br i1 %tobool.i799.i, label %if.then.i804.i, label %if.end.i818.i

if.then.i804.i:                                   ; preds = %for.body.i800.i
  %conv1.i801.i = zext i16 %bits.024.i797.i to i32
  %or.i802.i = or i32 %conv1.i801.i, 1
  %conv2.i803.i = trunc i32 %or.i802.i to i16
  br label %if.end.i818.i

if.end.i818.i:                                    ; preds = %if.then.i804.i, %for.body.i800.i
  %bits.1.i805.i = phi i16 [ %conv2.i803.i, %if.then.i804.i ], [ %bits.024.i797.i, %for.body.i800.i ]
  %conv3.i806.i = zext i16 %347 to i32
  %shl.i807.i = shl nuw nsw i32 %conv3.i806.i, 1
  %conv5.i808.i = zext i16 %bits.1.i805.i to i32
  %and6.i809.i = lshr i32 %conv5.i808.i, 1
  %and6.lobit.i810.i = and i32 %and6.i809.i, 1
  %storemerge.in.i811.i = or i32 %and6.lobit.i810.i, %shl.i807.i
  %storemerge.i812.i = trunc i32 %storemerge.in.i811.i to i16
  store i16 %storemerge.i812.i, i16* %x.addr.023.i798.i, align 2
  %shl14.i813.i = shl nuw nsw i32 %conv5.i808.i, 1
  %conv15.i814.i = trunc i32 %shl14.i813.i to i16
  %incdec.ptr.i815.i = getelementptr inbounds i16* %x.addr.023.i798.i, i32 -1
  %inc.i816.i = add nsw i32 %i.025.i796.i, 1
  %exitcond.i817.i = icmp eq i32 %inc.i816.i, 13
  br i1 %exitcond.i817.i, label %eshup1.exit819.i, label %for.body.i800.i

eshup1.exit819.i:                                 ; preds = %if.end.i818.i
  call fastcc void @eaddm(i16* %arraydecay250.i, i16* %arraydecay4.i) nounwind
  call fastcc void @eiremain(i16* %arraydecay12.i, i16* %arraydecay4.i, %struct.LDPARMS* %rnd) nounwind
  %348 = load i16* %arrayidx238.i, align 4, !tbaa !5
  %conv258.i = zext i16 %348 to i32
  %sub259.i = add nsw i32 %expon.11966.i, -1
  %cmp241.i = icmp eq i16 %348, 0
  br i1 %cmp241.i, label %land.rhs.i, label %while.end260.i

while.end260.i:                                   ; preds = %eshup1.exit819.i, %land.rhs.i, %isone.i
  %digit.0.lcssa.i = phi i32 [ %conv239.i, %isone.i ], [ %conv258.i, %eshup1.exit819.i ], [ %digit.0967.i, %land.rhs.i ]
  %expon.11.lcssa.i = phi i32 [ %expon.10.i, %isone.i ], [ %sub259.i, %eshup1.exit819.i ], [ %expon.11966.i, %land.rhs.i ]
  %tobool261.i = icmp eq i16 %sign.0.i, 0
  %incdec.ptr.i259 = getelementptr inbounds [57 x i8]* %outbuf, i32 0, i32 1
  %..i260 = select i1 %tobool261.i, i8 32, i8 45
  store i8 %..i260, i8* %arraydecay20, align 1
  %add269.i = select i1 %cmp, i32 %expon.11.lcssa.i, i32 0
  %ndigs.0.i = add nsw i32 %add269.i, %ndigits.addr.2
  %cmp271.i = icmp sgt i32 %ndigs.0.i, 42
  %.ndigs.0.i = select i1 %cmp271.i, i32 42, i32 %ndigs.0.i
  %cmp275.i = icmp eq i32 %digit.0.lcssa.i, 10
  br i1 %cmp275.i, label %if.then277.i, label %if.end298.i

if.then277.i:                                     ; preds = %while.end260.i
  %incdec.ptr278.i = getelementptr inbounds [57 x i8]* %outbuf, i32 0, i32 2
  store i8 49, i8* %incdec.ptr.i259, align 1, !tbaa !1
  %incdec.ptr279.i = getelementptr inbounds [57 x i8]* %outbuf, i32 0, i32 3
  store i8 46, i8* %incdec.ptr278.i, align 1, !tbaa !1
  %cmp280.i = icmp sgt i32 %.ndigs.0.i, 0
  br i1 %cmp280.i, label %if.then282.i, label %if.end285.i

if.then282.i:                                     ; preds = %if.then277.i
  %incdec.ptr283.i = getelementptr inbounds [57 x i8]* %outbuf, i32 0, i32 4
  store i8 48, i8* %incdec.ptr279.i, align 1, !tbaa !1
  %sub284.i = add nsw i32 %.ndigs.0.i, -1
  br label %if.end285.i

if.end285.i:                                      ; preds = %if.then282.i, %if.then277.i
  %ndigs.2.i = phi i32 [ %sub284.i, %if.then282.i ], [ %.ndigs.0.i, %if.then277.i ]
  %s.0.i = phi i8* [ %incdec.ptr283.i, %if.then282.i ], [ %incdec.ptr279.i, %if.then277.i ]
  %add286.i = add nsw i32 %expon.11.lcssa.i, 1
  %cmp287.i = icmp slt i32 %ndigs.2.i, 0
  br i1 %cmp287.i, label %doexp.i, label %for.body302.lr.ph.i

if.end298.i:                                      ; preds = %while.end260.i
  %add294.i = add nsw i32 %digit.0.lcssa.i, 48
  %conv295.i = trunc i32 %add294.i to i8
  %incdec.ptr296.i = getelementptr inbounds [57 x i8]* %outbuf, i32 0, i32 2
  store i8 %conv295.i, i8* %incdec.ptr.i259, align 1, !tbaa !1
  %incdec.ptr297.i = getelementptr inbounds [57 x i8]* %outbuf, i32 0, i32 3
  store i8 46, i8* %incdec.ptr296.i, align 1, !tbaa !1
  %cmp300961.i = icmp slt i32 %.ndigs.0.i, 0
  br i1 %cmp300961.i, label %for.end320.i, label %for.body302.lr.ph.i

for.body302.lr.ph.i:                              ; preds = %if.end298.i, %if.end285.i
  %s.11019.i = phi i8* [ %incdec.ptr297.i, %if.end298.i ], [ %s.0.i, %if.end285.i ]
  %ndigs.31018.i = phi i32 [ %.ndigs.0.i, %if.end298.i ], [ %ndigs.2.i, %if.end285.i ]
  %expon.121014.i = phi i32 [ %expon.11.lcssa.i, %if.end298.i ], [ %add286.i, %if.end285.i ]
  %arraydecay305.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 0
  %incdec.ptr1.i707.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 1
  %incdec.ptr1.1.i709.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 2
  %incdec.ptr1.2.i711.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 3
  %incdec.ptr1.3.i713.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 4
  %incdec.ptr1.4.i715.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 5
  %incdec.ptr1.5.i717.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 6
  %incdec.ptr1.6.i719.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 7
  %incdec.ptr1.7.i721.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 8
  %incdec.ptr1.8.i723.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 9
  %incdec.ptr1.9.i725.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 10
  %incdec.ptr1.10.i727.i = getelementptr inbounds [13 x i16]* %u.i, i32 0, i32 11
  %scevgep.i728.i = getelementptr [13 x i16]* %u.i, i32 0, i32 12
  %349 = add i32 %ndigs.31018.i, 1
  br label %for.body302.i

for.body302.i:                                    ; preds = %eshup1.exit.i, %for.body302.lr.ph.i
  %s.2963.i = phi i8* [ %s.11019.i, %for.body302.lr.ph.i ], [ %incdec.ptr317.i, %eshup1.exit.i ]
  %k.2962.i = phi i32 [ 0, %for.body302.lr.ph.i ], [ %inc319.i, %eshup1.exit.i ]
  br label %for.body.i734.i

for.body.i734.i:                                  ; preds = %if.end.i752.i, %for.body302.i
  %i.025.i730.i = phi i32 [ 2, %for.body302.i ], [ %inc.i750.i, %if.end.i752.i ]
  %bits.024.i731.i = phi i16 [ 0, %for.body302.i ], [ %conv15.i748.i, %if.end.i752.i ]
  %x.addr.023.i732.i = phi i16* [ %scevgep.i947.i, %for.body302.i ], [ %incdec.ptr.i749.i, %if.end.i752.i ]
  %350 = load i16* %x.addr.023.i732.i, align 2, !tbaa !5
  %tobool.i733.i = icmp slt i16 %350, 0
  br i1 %tobool.i733.i, label %if.then.i738.i, label %if.end.i752.i

if.then.i738.i:                                   ; preds = %for.body.i734.i
  %conv1.i735.i = zext i16 %bits.024.i731.i to i32
  %or.i736.i = or i32 %conv1.i735.i, 1
  %conv2.i737.i = trunc i32 %or.i736.i to i16
  br label %if.end.i752.i

if.end.i752.i:                                    ; preds = %if.then.i738.i, %for.body.i734.i
  %bits.1.i739.i = phi i16 [ %conv2.i737.i, %if.then.i738.i ], [ %bits.024.i731.i, %for.body.i734.i ]
  %conv3.i740.i = zext i16 %350 to i32
  %shl.i741.i = shl nuw nsw i32 %conv3.i740.i, 1
  %conv5.i742.i = zext i16 %bits.1.i739.i to i32
  %and6.i743.i = lshr i32 %conv5.i742.i, 1
  %and6.lobit.i744.i = and i32 %and6.i743.i, 1
  %storemerge.in.i745.i = or i32 %and6.lobit.i744.i, %shl.i741.i
  %storemerge.i746.i = trunc i32 %storemerge.in.i745.i to i16
  store i16 %storemerge.i746.i, i16* %x.addr.023.i732.i, align 2
  %shl14.i747.i = shl nuw nsw i32 %conv5.i742.i, 1
  %conv15.i748.i = trunc i32 %shl14.i747.i to i16
  %incdec.ptr.i749.i = getelementptr inbounds i16* %x.addr.023.i732.i, i32 -1
  %inc.i750.i = add nsw i32 %i.025.i730.i, 1
  %exitcond.i751.i = icmp eq i32 %inc.i750.i, 13
  br i1 %exitcond.i751.i, label %eshup1.exit753.i, label %for.body.i734.i

eshup1.exit753.i:                                 ; preds = %if.end.i752.i
  %351 = load i16* %arraydecay4.i, align 2, !tbaa !5
  store i16 %351, i16* %arraydecay305.i, align 2, !tbaa !5
  %352 = load i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  store i16 %352, i16* %incdec.ptr1.i707.i, align 2, !tbaa !5
  %353 = load i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  store i16 %353, i16* %incdec.ptr1.1.i709.i, align 2, !tbaa !5
  %354 = load i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  store i16 %354, i16* %incdec.ptr1.2.i711.i, align 2, !tbaa !5
  %355 = load i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  store i16 %355, i16* %incdec.ptr1.3.i713.i, align 2, !tbaa !5
  %356 = load i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  store i16 %356, i16* %incdec.ptr1.4.i715.i, align 2, !tbaa !5
  %357 = load i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  store i16 %357, i16* %incdec.ptr1.5.i717.i, align 2, !tbaa !5
  %358 = load i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  store i16 %358, i16* %incdec.ptr1.6.i719.i, align 2, !tbaa !5
  %359 = load i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  store i16 %359, i16* %incdec.ptr1.7.i721.i, align 2, !tbaa !5
  %360 = load i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  store i16 %360, i16* %incdec.ptr1.8.i723.i, align 2, !tbaa !5
  %361 = load i16* %incdec.ptr1.9.i944.i, align 2, !tbaa !5
  store i16 %361, i16* %incdec.ptr1.9.i725.i, align 2, !tbaa !5
  %362 = load i16* %incdec.ptr1.10.i946.i, align 2, !tbaa !5
  store i16 %362, i16* %incdec.ptr1.10.i727.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i728.i, align 2, !tbaa !5
  br label %for.body.i686.i

for.body.i686.i:                                  ; preds = %if.end.i704.for.body.i686_crit_edge.i, %eshup1.exit753.i
  %363 = phi i16 [ 0, %eshup1.exit753.i ], [ %.pre1007.i, %if.end.i704.for.body.i686_crit_edge.i ]
  %i.025.i682.i = phi i32 [ 3, %eshup1.exit753.i ], [ %phitmp1009.i, %if.end.i704.for.body.i686_crit_edge.i ]
  %bits.024.i683.i = phi i16 [ 0, %eshup1.exit753.i ], [ %conv15.i700.i, %if.end.i704.for.body.i686_crit_edge.i ]
  %x.addr.023.i684.i = phi i16* [ %scevgep.i728.i, %eshup1.exit753.i ], [ %incdec.ptr.i701.i, %if.end.i704.for.body.i686_crit_edge.i ]
  %tobool.i685.i = icmp slt i16 %363, 0
  br i1 %tobool.i685.i, label %if.then.i690.i, label %if.end.i704.i

if.then.i690.i:                                   ; preds = %for.body.i686.i
  %conv1.i687.i = zext i16 %bits.024.i683.i to i32
  %or.i688.i = or i32 %conv1.i687.i, 1
  %conv2.i689.i = trunc i32 %or.i688.i to i16
  br label %if.end.i704.i

if.end.i704.i:                                    ; preds = %if.then.i690.i, %for.body.i686.i
  %bits.1.i691.i = phi i16 [ %conv2.i689.i, %if.then.i690.i ], [ %bits.024.i683.i, %for.body.i686.i ]
  %conv3.i692.i = zext i16 %363 to i32
  %shl.i693.i = shl nuw nsw i32 %conv3.i692.i, 1
  %conv5.i694.i = zext i16 %bits.1.i691.i to i32
  %and6.i695.i = lshr i32 %conv5.i694.i, 1
  %and6.lobit.i696.i = and i32 %and6.i695.i, 1
  %storemerge.in.i697.i = or i32 %and6.lobit.i696.i, %shl.i693.i
  %storemerge.i698.i = trunc i32 %storemerge.in.i697.i to i16
  store i16 %storemerge.i698.i, i16* %x.addr.023.i684.i, align 2
  %incdec.ptr.i701.i = getelementptr inbounds i16* %x.addr.023.i684.i, i32 -1
  %exitcond.i703.i = icmp eq i32 %i.025.i682.i, 13
  br i1 %exitcond.i703.i, label %for.body.i667.i, label %if.end.i704.for.body.i686_crit_edge.i

if.end.i704.for.body.i686_crit_edge.i:            ; preds = %if.end.i704.i
  %shl14.i699.i = shl nuw nsw i32 %conv5.i694.i, 1
  %conv15.i700.i = trunc i32 %shl14.i699.i to i16
  %.pre1007.i = load i16* %incdec.ptr.i701.i, align 2, !tbaa !5
  %phitmp1009.i = add i32 %i.025.i682.i, 1
  br label %for.body.i686.i

for.body.i667.i:                                  ; preds = %if.end.i704.i, %if.end.i680.i
  %i.025.i663.i = phi i32 [ %inc.i678.i, %if.end.i680.i ], [ 2, %if.end.i704.i ]
  %bits.024.i664.i = phi i16 [ %conv15.i.i, %if.end.i680.i ], [ 0, %if.end.i704.i ]
  %x.addr.023.i665.i = phi i16* [ %incdec.ptr.i677.i, %if.end.i680.i ], [ %scevgep.i728.i, %if.end.i704.i ]
  %364 = load i16* %x.addr.023.i665.i, align 2, !tbaa !5
  %tobool.i666.i = icmp slt i16 %364, 0
  br i1 %tobool.i666.i, label %if.then.i671.i, label %if.end.i680.i

if.then.i671.i:                                   ; preds = %for.body.i667.i
  %conv1.i668.i = zext i16 %bits.024.i664.i to i32
  %or.i669.i = or i32 %conv1.i668.i, 1
  %conv2.i670.i = trunc i32 %or.i669.i to i16
  br label %if.end.i680.i

if.end.i680.i:                                    ; preds = %if.then.i671.i, %for.body.i667.i
  %bits.1.i672.i = phi i16 [ %conv2.i670.i, %if.then.i671.i ], [ %bits.024.i664.i, %for.body.i667.i ]
  %conv3.i.i = zext i16 %364 to i32
  %shl.i673.i = shl nuw nsw i32 %conv3.i.i, 1
  %conv5.i674.i = zext i16 %bits.1.i672.i to i32
  %and6.i675.i = lshr i32 %conv5.i674.i, 1
  %and6.lobit.i.i = and i32 %and6.i675.i, 1
  %storemerge.in.i.i = or i32 %and6.lobit.i.i, %shl.i673.i
  %storemerge.i676.i = trunc i32 %storemerge.in.i.i to i16
  store i16 %storemerge.i676.i, i16* %x.addr.023.i665.i, align 2
  %shl14.i.i = shl nuw nsw i32 %conv5.i674.i, 1
  %conv15.i.i = trunc i32 %shl14.i.i to i16
  %incdec.ptr.i677.i = getelementptr inbounds i16* %x.addr.023.i665.i, i32 -1
  %inc.i678.i = add nsw i32 %i.025.i663.i, 1
  %exitcond.i679.i = icmp eq i32 %inc.i678.i, 13
  br i1 %exitcond.i679.i, label %eshup1.exit.i, label %for.body.i667.i

eshup1.exit.i:                                    ; preds = %if.end.i680.i
  call fastcc void @eaddm(i16* %arraydecay305.i, i16* %arraydecay4.i) nounwind
  call fastcc void @eiremain(i16* %arraydecay12.i, i16* %arraydecay4.i, %struct.LDPARMS* %rnd) nounwind
  %365 = load i16* %arrayidx238.i, align 4, !tbaa !5
  %conv313.i = zext i16 %365 to i32
  %add315.i = add nsw i32 %conv313.i, 48
  %conv316.i = trunc i32 %add315.i to i8
  %incdec.ptr317.i = getelementptr inbounds i8* %s.2963.i, i32 1
  store i8 %conv316.i, i8* %s.2963.i, align 1, !tbaa !1
  %inc319.i = add nsw i32 %k.2962.i, 1
  %exitcond.i = icmp eq i32 %inc319.i, %349
  br i1 %exitcond.i, label %for.cond299.for.end320_crit_edge.i, label %for.body302.i

for.cond299.for.end320_crit_edge.i:               ; preds = %eshup1.exit.i
  %scevgep.i = getelementptr i8* %s.11019.i, i32 %349
  br label %for.end320.i

for.end320.i:                                     ; preds = %if.end298.i, %for.cond299.for.end320_crit_edge.i
  %cmp3009611021.i = phi i1 [ false, %for.cond299.for.end320_crit_edge.i ], [ true, %if.end298.i ]
  %expon.121015.i = phi i32 [ %expon.121014.i, %for.cond299.for.end320_crit_edge.i ], [ %expon.11.lcssa.i, %if.end298.i ]
  %s.2.lcssa.i = phi i8* [ %scevgep.i, %for.cond299.for.end320_crit_edge.i ], [ %incdec.ptr297.i, %if.end298.i ]
  %366 = load i16* %arrayidx238.i, align 4, !tbaa !5
  %incdec.ptr323.i = getelementptr inbounds i8* %s.2.lcssa.i, i32 -1
  %cmp324.i = icmp ugt i16 %366, 4
  br i1 %cmp324.i, label %if.then326.i, label %doexp.i

if.then326.i:                                     ; preds = %for.end320.i
  %cmp327.i = icmp eq i16 %366, 5
  br i1 %cmp327.i, label %if.then329.i, label %roun.preheader.i

if.then329.i:                                     ; preds = %if.then326.i
  call fastcc void @emovo(i16* %arraydecay4.i, i16* %arraydecay12.i) nounwind
  %call333.i = call fastcc i32 @ecmp(i16* %arraydecay12.i, i16* getelementptr inbounds ([10 x i16]* @ezero, i32 0, i32 0)) nounwind
  %cmp334.i = icmp eq i32 %call333.i, 0
  br i1 %cmp334.i, label %if.end337.i, label %roun.preheader.i

if.end337.i:                                      ; preds = %if.then329.i
  br i1 %cmp3009611021.i, label %doexp.i, label %lor.lhs.false.i

lor.lhs.false.i:                                  ; preds = %if.end337.i
  %add.ptr340.i = getelementptr inbounds i8* %s.2.lcssa.i, i32 -2
  %367 = load i8* %add.ptr340.i, align 1, !tbaa !1
  %cmp343.i = icmp eq i8 %367, 46
  %conv344.i = zext i1 %cmp343.i to i32
  %add.ptr340.sum.i = sub i32 -2, %conv344.i
  %add.ptr345.i = getelementptr inbounds i8* %s.2.lcssa.i, i32 %add.ptr340.sum.i
  %368 = load i8* %add.ptr345.i, align 1, !tbaa !1
  %and347.i = and i8 %368, 1
  %cmp348.i = icmp eq i8 %and347.i, 0
  br i1 %cmp348.i, label %doexp.i, label %roun.preheader.thread.i

roun.preheader.thread.i:                          ; preds = %lor.lhs.false.i
  %conv3544879561023.i = zext i8 %367 to i32
  br label %if.else360.i.preheader

roun.preheader.i:                                 ; preds = %if.then329.i, %if.then326.i
  %incdec.ptr353955.i = getelementptr inbounds i8* %s.2.lcssa.i, i32 -2
  %369 = load i8* %incdec.ptr353955.i, align 1, !tbaa !1
  %conv354487956.i = zext i8 %369 to i32
  br i1 %cmp3009611021.i, label %if.then358.i, label %if.else360.i.preheader

if.else360.i.preheader:                           ; preds = %roun.preheader.thread.i, %roun.preheader.i
  %and355960.in.i.ph = phi i32 [ %conv354487956.i, %roun.preheader.i ], [ %conv3544879561023.i, %roun.preheader.thread.i ]
  %incdec.ptr353959.i.ph = phi i8* [ %incdec.ptr353955.i, %roun.preheader.i ], [ %add.ptr340.i, %roun.preheader.thread.i ]
  %and355960.i289 = and i32 %and355960.in.i.ph, 127
  %cmp361.i290 = icmp eq i32 %and355960.i289, 46
  br i1 %cmp361.i290, label %if.then363.i, label %if.end374.i

if.then358.i:                                     ; preds = %roun.preheader.i
  store i8 49, i8* %incdec.ptr353955.i, align 1, !tbaa !1
  %add359.i = add nsw i32 %expon.121015.i, 1
  br label %doexp.i

if.then363.i:                                     ; preds = %if.then379.i, %if.else360.i.preheader
  %s.3958.i.lcssa = phi i8* [ %incdec.ptr323.i, %if.else360.i.preheader ], [ %incdec.ptr353959.i291, %if.then379.i ]
  %incdec.ptr364.i = getelementptr inbounds i8* %s.3958.i.lcssa, i32 -2
  %370 = load i8* %incdec.ptr364.i, align 1, !tbaa !1
  %conv365.i = sext i8 %370 to i32
  %add366.i = add nsw i32 %conv365.i, 1
  %conv367.i = trunc i32 %add366.i to i8
  store i8 %conv367.i, i8* %incdec.ptr364.i, align 1, !tbaa !1
  %cmp368.i = icmp sgt i32 %add366.i, 57
  br i1 %cmp368.i, label %if.then370.i, label %doexp.i

if.then370.i:                                     ; preds = %if.then363.i
  %add371.i = add nsw i32 %expon.121015.i, 1
  store i8 49, i8* %incdec.ptr364.i, align 1, !tbaa !1
  br label %doexp.i

if.end374.i:                                      ; preds = %if.else360.i.preheader, %if.then379.i
  %and355960.i292 = phi i32 [ %and355960.i, %if.then379.i ], [ %and355960.i289, %if.else360.i.preheader ]
  %incdec.ptr353959.i291 = phi i8* [ %incdec.ptr353.i, %if.then379.i ], [ %incdec.ptr353959.i.ph, %if.else360.i.preheader ]
  %add375.i = add nsw i32 %and355960.i292, 1
  %conv376.i = trunc i32 %add375.i to i8
  store i8 %conv376.i, i8* %incdec.ptr353959.i291, align 1, !tbaa !1
  %cmp377.i = icmp ugt i32 %add375.i, 57
  br i1 %cmp377.i, label %if.then379.i, label %doexp.i

if.then379.i:                                     ; preds = %if.end374.i
  store i8 48, i8* %incdec.ptr353959.i291, align 1, !tbaa !1
  %incdec.ptr353.i = getelementptr inbounds i8* %incdec.ptr353959.i291, i32 -1
  %371 = load i8* %incdec.ptr353.i, align 1, !tbaa !1
  %conv354487.i = zext i8 %371 to i32
  %and355960.i = and i32 %conv354487.i, 127
  %cmp361.i = icmp eq i32 %and355960.i, 46
  br i1 %cmp361.i, label %if.then363.i, label %if.end374.i

doexp.i:                                          ; preds = %if.end374.i, %if.then370.i, %if.then363.i, %if.then358.i, %lor.lhs.false.i, %if.end337.i, %for.end320.i, %if.end285.i
  %expon.13.i = phi i32 [ %add359.i, %if.then358.i ], [ %add371.i, %if.then370.i ], [ %expon.121015.i, %if.then363.i ], [ %expon.121015.i, %if.end337.i ], [ %expon.121015.i, %lor.lhs.false.i ], [ %expon.121015.i, %for.end320.i ], [ %add286.i, %if.end285.i ], [ %expon.121015.i, %if.end374.i ]
  %ss.0.i = phi i8* [ %incdec.ptr323.i, %if.then358.i ], [ %incdec.ptr323.i, %if.then370.i ], [ %incdec.ptr323.i, %if.then363.i ], [ %incdec.ptr323.i, %if.end337.i ], [ %incdec.ptr323.i, %lor.lhs.false.i ], [ %incdec.ptr323.i, %for.end320.i ], [ %s.0.i, %if.end285.i ], [ %incdec.ptr323.i, %if.end374.i ]
  %call382.i = call i32 (i8*, i8*, ...)* @sprintf(i8* %ss.0.i, i8* getelementptr inbounds ([4 x i8]* @.str4, i32 0, i32 0), i32 %expon.13.i) nounwind
  br label %etoasc.exit

etoasc.exit:                                      ; preds = %if.then.i, %if.then32.i, %if.else34.i, %if.then47.i, %doexp.i
  %372 = phi i32 [ 9999, %if.then.i ], [ 9999, %if.then47.i ], [ %expon.13.i, %doexp.i ], [ 9999, %if.else34.i ], [ 9999, %if.then32.i ]
  store i32 %19, i32* %rndprc, align 4, !tbaa !3
  %outexpon.i = getelementptr inbounds %struct.LDPARMS* %rnd, i32 0, i32 4
  store i32 %372, i32* %outexpon.i, align 4, !tbaa !3
  call void @llvm.lifetime.end(i64 -1, i8* %15) nounwind
  call void @llvm.lifetime.end(i64 -1, i8* %16) nounwind
  call void @llvm.lifetime.end(i64 -1, i8* %17) nounwind
  call void @llvm.lifetime.end(i64 -1, i8* %18) nounwind
  %373 = load i16* %arrayidx.i.i, align 2, !tbaa !5
  %and.i197 = and i16 %373, 32767
  %cmp.i198 = icmp eq i16 %and.i197, 32767
  br i1 %cmp.i198, label %for.cond.preheader.i.i200, label %if.end29

for.cond.preheader.i.i200:                        ; preds = %etoasc.exit
  %374 = load i16* %arraydecay, align 2, !tbaa !5
  %cmp5.i.i199 = icmp eq i16 %374, 0
  br i1 %cmp5.i.i199, label %for.inc.i.i203, label %if.then28

for.inc.i.i203:                                   ; preds = %for.cond.preheader.i.i200
  %incdec.ptr.i.i201 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 1
  %375 = load i16* %incdec.ptr.i.i201, align 2, !tbaa !5
  %cmp5.1.i.i202 = icmp eq i16 %375, 0
  br i1 %cmp5.1.i.i202, label %for.inc.1.i.i206, label %lor.lhs.false

for.inc.1.i.i206:                                 ; preds = %for.inc.i.i203
  %incdec.ptr.1.i.i204 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 2
  %376 = load i16* %incdec.ptr.1.i.i204, align 2, !tbaa !5
  %cmp5.2.i.i205 = icmp eq i16 %376, 0
  br i1 %cmp5.2.i.i205, label %for.inc.2.i.i209, label %lor.lhs.false

for.inc.2.i.i209:                                 ; preds = %for.inc.1.i.i206
  %incdec.ptr.2.i.i207 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 3
  %377 = load i16* %incdec.ptr.2.i.i207, align 2, !tbaa !5
  %cmp5.3.i.i208 = icmp eq i16 %377, 0
  br i1 %cmp5.3.i.i208, label %for.inc.3.i.i212, label %lor.lhs.false

for.inc.3.i.i212:                                 ; preds = %for.inc.2.i.i209
  %incdec.ptr.3.i.i210 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 4
  %378 = load i16* %incdec.ptr.3.i.i210, align 2, !tbaa !5
  %cmp5.4.i.i211 = icmp eq i16 %378, 0
  br i1 %cmp5.4.i.i211, label %for.inc.4.i.i215, label %lor.lhs.false

for.inc.4.i.i215:                                 ; preds = %for.inc.3.i.i212
  %incdec.ptr.4.i.i213 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 5
  %379 = load i16* %incdec.ptr.4.i.i213, align 2, !tbaa !5
  %cmp5.5.i.i214 = icmp eq i16 %379, 0
  br i1 %cmp5.5.i.i214, label %for.inc.5.i.i218, label %lor.lhs.false

for.inc.5.i.i218:                                 ; preds = %for.inc.4.i.i215
  %incdec.ptr.5.i.i216 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 6
  %380 = load i16* %incdec.ptr.5.i.i216, align 2, !tbaa !5
  %cmp5.6.i.i217 = icmp eq i16 %380, 0
  br i1 %cmp5.6.i.i217, label %for.inc.6.i.i221, label %lor.lhs.false

for.inc.6.i.i221:                                 ; preds = %for.inc.5.i.i218
  %incdec.ptr.6.i.i219 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 7
  %381 = load i16* %incdec.ptr.6.i.i219, align 2, !tbaa !5
  %cmp5.7.i.i220 = icmp eq i16 %381, 0
  br i1 %cmp5.7.i.i220, label %for.inc.7.i.i, label %lor.lhs.false

for.inc.7.i.i:                                    ; preds = %for.inc.6.i.i221
  %incdec.ptr.7.i.i222 = getelementptr inbounds [13 x i16]* %e, i32 0, i32 8
  %382 = load i16* %incdec.ptr.7.i.i222, align 2, !tbaa !5
  %phitmp.i = icmp eq i16 %382, 0
  br i1 %phitmp.i, label %if.then28, label %lor.lhs.false

lor.lhs.false:                                    ; preds = %for.inc.6.i.i221, %for.inc.5.i.i218, %for.inc.4.i.i215, %for.inc.3.i.i212, %for.inc.2.i.i209, %for.inc.1.i.i206, %for.inc.i.i203, %for.inc.7.i.i
  br i1 %cmp.i198, label %for.cond.preheader.i, label %if.end29

for.cond.preheader.i:                             ; preds = %lor.lhs.false
  %.pr = load i16* %arraydecay, align 2, !tbaa !5
  %cmp5.i = icmp eq i16 %.pr, 0
  br i1 %cmp5.i, label %for.inc.i, label %if.then28

for.inc.i:                                        ; preds = %for.cond.preheader.i
  %incdec.ptr.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 1
  %383 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  %cmp5.1.i = icmp eq i16 %383, 0
  br i1 %cmp5.1.i, label %for.inc.1.i, label %if.then28

for.inc.1.i:                                      ; preds = %for.inc.i
  %incdec.ptr.1.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 2
  %384 = load i16* %incdec.ptr.1.i, align 2, !tbaa !5
  %cmp5.2.i = icmp eq i16 %384, 0
  br i1 %cmp5.2.i, label %for.inc.2.i, label %if.then28

for.inc.2.i:                                      ; preds = %for.inc.1.i
  %incdec.ptr.2.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 3
  %385 = load i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %cmp5.3.i = icmp eq i16 %385, 0
  br i1 %cmp5.3.i, label %for.inc.3.i, label %if.then28

for.inc.3.i:                                      ; preds = %for.inc.2.i
  %incdec.ptr.3.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 4
  %386 = load i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %cmp5.4.i = icmp eq i16 %386, 0
  br i1 %cmp5.4.i, label %for.inc.4.i, label %if.then28

for.inc.4.i:                                      ; preds = %for.inc.3.i
  %incdec.ptr.4.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 5
  %387 = load i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %cmp5.5.i = icmp eq i16 %387, 0
  br i1 %cmp5.5.i, label %for.inc.5.i, label %if.then28

for.inc.5.i:                                      ; preds = %for.inc.4.i
  %incdec.ptr.5.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 6
  %388 = load i16* %incdec.ptr.5.i, align 2, !tbaa !5
  %cmp5.6.i = icmp eq i16 %388, 0
  br i1 %cmp5.6.i, label %for.inc.6.i, label %if.then28

for.inc.6.i:                                      ; preds = %for.inc.5.i
  %incdec.ptr.6.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 7
  %389 = load i16* %incdec.ptr.6.i, align 2, !tbaa !5
  %cmp5.7.i = icmp eq i16 %389, 0
  br i1 %cmp5.7.i, label %eisnan.exit, label %if.then28

eisnan.exit:                                      ; preds = %for.inc.6.i
  %incdec.ptr.7.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 8
  %390 = load i16* %incdec.ptr.7.i, align 2, !tbaa !5
  %not.cmp5.8.i = icmp eq i16 %390, 0
  br i1 %not.cmp5.8.i, label %if.end29, label %if.then28

if.then28:                                        ; preds = %for.cond.preheader.i.i200, %eisnan.exit, %for.inc.7.i.i, %for.inc.6.i, %for.inc.5.i, %for.inc.4.i, %for.inc.3.i, %for.inc.2.i, %for.inc.1.i, %for.inc.i, %for.cond.preheader.i
  store i32 9999, i32* %decpt, align 4, !tbaa !3
  br label %while.cond56

if.end29:                                         ; preds = %etoasc.exit, %eisnan.exit, %lor.lhs.false
  %add = add nsw i32 %372, 1
  store i32 %add, i32* %decpt, align 4, !tbaa !3
  br label %while.cond

while.cond:                                       ; preds = %if.end37, %if.end29
  %s.0 = phi i8* [ %arraydecay20, %if.end29 ], [ %incdec.ptr, %if.end37 ]
  %391 = load i8* %s.0, align 1, !tbaa !1
  switch i8 %391, label %if.end37 [
    i8 0, label %while.cond45
    i8 46, label %while.body42
  ]

if.end37:                                         ; preds = %while.cond
  %incdec.ptr = getelementptr inbounds i8* %s.0, i32 1
  br label %while.cond

while.body42:                                     ; preds = %while.cond, %while.body42
  %s.1284 = phi i8* [ %add.ptr, %while.body42 ], [ %s.0, %while.cond ]
  %add.ptr = getelementptr inbounds i8* %s.1284, i32 1
  %392 = load i8* %add.ptr, align 1, !tbaa !1
  store i8 %392, i8* %s.1284, align 1, !tbaa !1
  %cmp40 = icmp eq i8 %392, 0
  br i1 %cmp40, label %while.cond45, label %while.body42

while.cond45:                                     ; preds = %while.body42, %while.cond, %while.cond45.while.cond45_crit_edge
  %393 = phi i1 [ %phitmp305, %while.cond45.while.cond45_crit_edge ], [ true, %while.cond ], [ true, %while.body42 ]
  %s.2 = phi i8* [ %incdec.ptr53, %while.cond45.while.cond45_crit_edge ], [ %s.0, %while.cond ], [ %add.ptr, %while.body42 ]
  %cmp50 = icmp ugt i8* %s.2, %arraydecay20
  %.cmp50 = and i1 %cmp50, %393
  %incdec.ptr53 = getelementptr inbounds i8* %s.2, i32 -1
  br i1 %.cmp50, label %while.cond45.while.cond45_crit_edge, label %while.end54

while.cond45.while.cond45_crit_edge:              ; preds = %while.cond45
  %.pre301 = load i8* %incdec.ptr53, align 1, !tbaa !1
  %phitmp305 = icmp ne i8 %.pre301, 69
  br label %while.cond45

while.end54:                                      ; preds = %while.cond45
  store i8 0, i8* %s.2, align 1, !tbaa !1
  br label %while.cond56

while.cond56:                                     ; preds = %if.then28, %while.end54, %while.body63
  %p.0 = phi i8* [ %incdec.ptr64, %while.body63 ], [ %arraydecay20, %while.end54 ], [ %arraydecay20, %if.then28 ]
  %394 = load i8* %p.0, align 1, !tbaa !1
  switch i8 %394, label %while.cond67 [
    i8 32, label %while.body63
    i8 45, label %while.body63
  ]

while.body63:                                     ; preds = %while.cond56, %while.cond56
  %incdec.ptr64 = getelementptr inbounds i8* %p.0, i32 1
  br label %while.cond56

while.cond67:                                     ; preds = %while.cond56, %while.cond67.while.cond67_crit_edge
  %395 = phi i8 [ %.pre302, %while.cond67.while.cond67_crit_edge ], [ %394, %while.cond56 ]
  %p.1 = phi i8* [ %incdec.ptr68, %while.cond67.while.cond67_crit_edge ], [ %p.0, %while.cond56 ]
  %s.3 = phi i8* [ %incdec.ptr69, %while.cond67.while.cond67_crit_edge ], [ %arraydecay20, %while.cond56 ]
  %incdec.ptr68 = getelementptr inbounds i8* %p.1, i32 1
  store i8 %395, i8* %s.3, align 1, !tbaa !1
  %cmp71 = icmp eq i8 %395, 0
  br i1 %cmp71, label %while.end74, label %while.cond67.while.cond67_crit_edge

while.cond67.while.cond67_crit_edge:              ; preds = %while.cond67
  %incdec.ptr69 = getelementptr inbounds i8* %s.3, i32 1
  %.pre302 = load i8* %incdec.ptr68, align 1, !tbaa !1
  br label %while.cond67

while.end74:                                      ; preds = %while.cond67
  %cmp76 = icmp eq i32 %mode, 2
  br i1 %cmp76, label %while.cond88.preheader, label %if.else79

if.else79:                                        ; preds = %while.end74
  %396 = load i32* %outexpon.i, align 4, !tbaa !3
  %cmp81 = icmp sgt i32 %ndigits.addr.2, %396
  %ndigits.addr.2. = select i1 %cmp81, i32 %ndigits.addr.2, i32 %396
  br label %while.cond88.preheader

while.cond88.preheader:                           ; preds = %while.end74, %if.else79
  %k.0.ph = phi i32 [ %ndigits.addr.2., %if.else79 ], [ 1, %while.end74 ]
  %add.ptr89278 = getelementptr inbounds i8* %s.3, i32 -1
  %397 = load i8* %add.ptr89278, align 1, !tbaa !1
  %cmp91279 = icmp eq i8 %397, 48
  br i1 %cmp91279, label %land.rhs93.lr.ph, label %while.end100

land.rhs93.lr.ph:                                 ; preds = %while.cond88.preheader
  %sub.ptr.rhs.cast = ptrtoint [57 x i8]* %outbuf to i32
  br label %land.rhs93

land.rhs93:                                       ; preds = %land.rhs93.lr.ph, %while.body98
  %add.ptr89281 = phi i8* [ %add.ptr89278, %land.rhs93.lr.ph ], [ %add.ptr89, %while.body98 ]
  %s.4280 = phi i8* [ %s.3, %land.rhs93.lr.ph ], [ %add.ptr89281, %while.body98 ]
  %sub.ptr.lhs.cast = ptrtoint i8* %s.4280 to i32
  %sub.ptr.sub = sub i32 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast
  %cmp95 = icmp sgt i32 %sub.ptr.sub, %k.0.ph
  br i1 %cmp95, label %while.body98, label %while.end100

while.body98:                                     ; preds = %land.rhs93
  store i8 0, i8* %add.ptr89281, align 1, !tbaa !1
  %add.ptr89 = getelementptr inbounds i8* %add.ptr89281, i32 -1
  %398 = load i8* %add.ptr89, align 1, !tbaa !1
  %cmp91 = icmp eq i8 %398, 48
  br i1 %cmp91, label %land.rhs93, label %while.end100

while.end100:                                     ; preds = %while.body98, %land.rhs93, %while.cond88.preheader
  %s.4.lcssa = phi i8* [ %s.3, %while.cond88.preheader ], [ %s.4280, %land.rhs93 ], [ %add.ptr89281, %while.body98 ]
  br i1 %cmp, label %land.lhs.true, label %if.else115

land.lhs.true:                                    ; preds = %while.end100
  %399 = load i32* %outexpon.i, align 4, !tbaa !3
  %add104 = add nsw i32 %399, %ndigits.addr.2
  %cmp105 = icmp slt i32 %add104, 0
  br i1 %cmp105, label %if.end109, label %land.lhs.true.if.then112_crit_edge

land.lhs.true.if.then112_crit_edge:               ; preds = %land.lhs.true
  %.pre303 = load i32* %decpt, align 4, !tbaa !3
  br label %if.then112

if.end109:                                        ; preds = %land.lhs.true
  store i8 0, i8* %arraydecay20, align 1, !tbaa !1
  store i32 0, i32* %decpt, align 4, !tbaa !3
  br label %if.then112

if.then112:                                       ; preds = %land.lhs.true.if.then112_crit_edge, %if.end109
  %400 = phi i32 [ 0, %if.end109 ], [ %.pre303, %land.lhs.true.if.then112_crit_edge ]
  %s.5266 = phi i8* [ %arraydecay20, %if.end109 ], [ %s.4.lcssa, %land.lhs.true.if.then112_crit_edge ]
  %add113 = add i32 %ndigits, 3
  %add114 = add i32 %add113, %400
  br label %if.end118

if.else115:                                       ; preds = %while.end100
  %add117 = add nsw i32 %ndigits, 9
  br label %if.end118

if.end118:                                        ; preds = %if.else115, %if.then112
  %s.5265 = phi i8* [ %s.5266, %if.then112 ], [ %s.4.lcssa, %if.else115 ]
  %i.0 = phi i32 [ %add114, %if.then112 ], [ %add117, %if.else115 ]
  %_result_k119 = getelementptr inbounds %struct._reent* %ptr, i32 0, i32 11
  store i32 0, i32* %_result_k119, align 4, !tbaa !3
  %cmp121276 = icmp ult i32 %i.0, 24
  br i1 %cmp121276, label %for.end, label %for.body

for.body:                                         ; preds = %if.end118, %for.body
  %401 = phi i32 [ %inc, %for.body ], [ 0, %if.end118 ]
  %j.0277 = phi i32 [ %shl124, %for.body ], [ 4, %if.end118 ]
  %inc = add nsw i32 %401, 1
  %shl124 = shl i32 %j.0277, 1
  %add120 = add i32 %shl124, 20
  %cmp121 = icmp ugt i32 %add120, %i.0
  br i1 %cmp121, label %for.cond.for.end_crit_edge, label %for.body

for.cond.for.end_crit_edge:                       ; preds = %for.body
  store i32 %inc, i32* %_result_k119, align 4
  br label %for.end

for.end:                                          ; preds = %for.cond.for.end_crit_edge, %if.end118
  %.lcssa = phi i32 [ %inc, %for.cond.for.end_crit_edge ], [ 0, %if.end118 ]
  %call126 = call %struct._Bigint* @_Balloc(%struct._reent* %ptr, i32 %.lcssa) nounwind
  store %struct._Bigint* %call126, %struct._Bigint** %_result, align 4, !tbaa !4
  %402 = bitcast %struct._Bigint* %call126 to i8*
  %call130 = call i8* @strcpy(i8* %402, i8* %arraydecay20) nounwind
  %tobool131 = icmp eq i8** %rve, null
  br i1 %tobool131, label %if.end138, label %if.then132

if.then132:                                       ; preds = %for.end
  %sub.ptr.lhs.cast134 = ptrtoint i8* %s.5265 to i32
  %sub.ptr.rhs.cast135 = ptrtoint [57 x i8]* %outbuf to i32
  %sub.ptr.sub136 = sub i32 %sub.ptr.lhs.cast134, %sub.ptr.rhs.cast135
  %add.ptr137 = getelementptr inbounds i8* %402, i32 %sub.ptr.sub136
  store i8* %add.ptr137, i8** %rve, align 4, !tbaa !4
  br label %if.end138

if.end138:                                        ; preds = %for.end, %if.then132
  ret i8* %402
}

declare void @_Bfree(%struct._reent*, %struct._Bigint*)

define internal fastcc void @e53toe(i16* nocapture %pe, i16* %y) nounwind {
entry:
  %yy = alloca [13 x i16], align 2
  %arraydecay = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 0
  %incdec.ptr.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 1
  %incdec.ptr.1.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 2
  store i16 0, i16* %incdec.ptr.i, align 2, !tbaa !5
  %incdec.ptr.2.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 3
  %incdec.ptr.3.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 4
  store i16 0, i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %incdec.ptr.4.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 5
  store i16 0, i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %incdec.ptr.5.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 6
  store i16 0, i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %incdec.ptr.6.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 7
  store i16 0, i16* %incdec.ptr.5.i, align 2, !tbaa !5
  %incdec.ptr.7.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 8
  store i16 0, i16* %incdec.ptr.6.i, align 2, !tbaa !5
  %incdec.ptr.8.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 9
  store i16 0, i16* %incdec.ptr.7.i, align 2, !tbaa !5
  %incdec.ptr.9.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 10
  store i16 0, i16* %incdec.ptr.8.i, align 2, !tbaa !5
  %incdec.ptr.10.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 11
  store i16 0, i16* %incdec.ptr.9.i, align 2, !tbaa !5
  %incdec.ptr.11.i = getelementptr inbounds [13 x i16]* %yy, i32 0, i32 12
  store i16 0, i16* %incdec.ptr.10.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i, align 2, !tbaa !5
  %add.ptr = getelementptr inbounds i16* %pe, i32 3
  %0 = load i16* %add.ptr, align 2, !tbaa !5
  %conv = zext i16 %0 to i32
  %1 = shl nuw i32 %conv, 16
  %sext = ashr i32 %1, 31
  %. = trunc i32 %sext to i16
  store i16 %., i16* %arraydecay, align 2
  %and3 = and i32 %conv, 15
  %or = or i32 %and3, 16
  %conv4 = trunc i32 %or to i16
  store i16 %conv4, i16* %incdec.ptr.1.i, align 2, !tbaa !5
  %and7 = and i32 %conv, 32752
  %cmp = icmp eq i32 %and7, 32752
  br i1 %cmp, label %if.then11, label %if.end37

if.then11:                                        ; preds = %entry
  %and14 = and i16 %0, 15
  %cmp15 = icmp eq i16 %and14, 0
  br i1 %cmp15, label %lor.lhs.false, label %if.then31

lor.lhs.false:                                    ; preds = %if.then11
  %arrayidx17 = getelementptr inbounds i16* %pe, i32 2
  %2 = load i16* %arrayidx17, align 2, !tbaa !5
  %cmp19 = icmp eq i16 %2, 0
  br i1 %cmp19, label %lor.lhs.false21, label %if.then31

lor.lhs.false21:                                  ; preds = %lor.lhs.false
  %arrayidx22 = getelementptr inbounds i16* %pe, i32 1
  %3 = load i16* %arrayidx22, align 2, !tbaa !5
  %cmp24 = icmp eq i16 %3, 0
  br i1 %cmp24, label %lor.lhs.false26, label %if.then31

lor.lhs.false26:                                  ; preds = %lor.lhs.false21
  %4 = load i16* %pe, align 2, !tbaa !5
  %cmp29 = icmp eq i16 %4, 0
  br i1 %cmp29, label %if.end32, label %if.then31

if.then31:                                        ; preds = %lor.lhs.false26, %lor.lhs.false21, %lor.lhs.false, %if.then11
  %incdec.ptr42.i = getelementptr inbounds i16* %y, i32 1
  %scevgep.i = getelementptr i16* %y, i32 9
  store i16 0, i16* %y, align 2, !tbaa !5
  %incdec.ptr.i2 = getelementptr inbounds i16* %y, i32 2
  store i16 0, i16* %incdec.ptr42.i, align 2, !tbaa !5
  %incdec.ptr.1.i3 = getelementptr inbounds i16* %y, i32 3
  store i16 0, i16* %incdec.ptr.i2, align 2, !tbaa !5
  %incdec.ptr.2.i4 = getelementptr inbounds i16* %y, i32 4
  store i16 0, i16* %incdec.ptr.1.i3, align 2, !tbaa !5
  %incdec.ptr.3.i5 = getelementptr inbounds i16* %y, i32 5
  store i16 0, i16* %incdec.ptr.2.i4, align 2, !tbaa !5
  %incdec.ptr.4.i6 = getelementptr inbounds i16* %y, i32 6
  store i16 0, i16* %incdec.ptr.3.i5, align 2, !tbaa !5
  %incdec.ptr.5.i7 = getelementptr inbounds i16* %y, i32 7
  store i16 0, i16* %incdec.ptr.4.i6, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i7, align 2, !tbaa !5
  %scevgep49.i = getelementptr i16* %y, i32 8
  store i16 -16384, i16* %scevgep49.i, align 2, !tbaa !5
  store i16 32767, i16* %scevgep.i, align 2, !tbaa !5
  br label %return

if.end32:                                         ; preds = %lor.lhs.false26
  %incdec.ptr.i8 = getelementptr inbounds i16* %y, i32 1
  %incdec.ptr.1.i9 = getelementptr inbounds i16* %y, i32 2
  %incdec.ptr.2.i10 = getelementptr inbounds i16* %y, i32 3
  %incdec.ptr.3.i11 = getelementptr inbounds i16* %y, i32 4
  %incdec.ptr.4.i12 = getelementptr inbounds i16* %y, i32 5
  %incdec.ptr.5.i13 = getelementptr inbounds i16* %y, i32 6
  %incdec.ptr.6.i14 = getelementptr inbounds i16* %y, i32 7
  %incdec.ptr.7.i15 = getelementptr inbounds i16* %y, i32 8
  %incdec.ptr.8.i16 = getelementptr inbounds i16* %y, i32 9
  store i16 0, i16* %y, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.i8, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i9, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.2.i10, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.3.i11, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.4.i12, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i13, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.6.i14, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i15, align 2, !tbaa !5
  store i16 32767, i16* %incdec.ptr.8.i16, align 2, !tbaa !5
  %tobool34 = icmp eq i16 %., 0
  br i1 %tobool34, label %return, label %if.end.i

if.end.i:                                         ; preds = %if.end32
  store i16 -1, i16* %incdec.ptr.8.i16, align 2, !tbaa !5
  br label %return

if.end37:                                         ; preds = %entry
  %shr1 = lshr exact i32 %and7, 4
  %cmp41 = icmp eq i32 %shr1, 0
  br i1 %cmp41, label %if.then43, label %if.end48

if.then43:                                        ; preds = %if.end37
  %conv47 = trunc i32 %and3 to i16
  store i16 %conv47, i16* %incdec.ptr.1.i, align 2, !tbaa !5
  br label %if.end48

if.end48:                                         ; preds = %if.then43, %if.end37
  %denorm.0 = phi i1 [ true, %if.then43 ], [ false, %if.end37 ]
  %add = add nsw i32 %shr1, 15360
  %conv50 = trunc i32 %add to i16
  store i16 %conv50, i16* %incdec.ptr.i, align 2, !tbaa !5
  %incdec.ptr = getelementptr inbounds i16* %pe, i32 2
  %5 = load i16* %incdec.ptr, align 2, !tbaa !5
  store i16 %5, i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %incdec.ptr54 = getelementptr inbounds i16* %pe, i32 1
  %6 = load i16* %incdec.ptr54, align 2, !tbaa !5
  store i16 %6, i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %7 = load i16* %pe, align 2, !tbaa !5
  store i16 %7, i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %call = call fastcc i32 @eshift(i16* %arraydecay, i32 -5)
  br i1 %denorm.0, label %if.then60, label %if.end74

if.then60:                                        ; preds = %if.end48
  %call62 = call fastcc i32 @enormlz(i16* %arraydecay)
  %cmp63 = icmp sgt i32 %call62, 144
  br i1 %cmp63, label %if.then65, label %if.else

if.then65:                                        ; preds = %if.then60
  store i16 0, i16* %incdec.ptr.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.2.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.3.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.4.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.6.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.9.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.10.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i, align 2, !tbaa !5
  br label %if.end74

if.else:                                          ; preds = %if.then60
  %8 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  %conv70 = zext i16 %8 to i32
  %sub.neg = sub i32 -65535, %call62
  %sub71 = add i32 %sub.neg, %conv70
  %conv72 = trunc i32 %sub71 to i16
  store i16 %conv72, i16* %incdec.ptr.i, align 2, !tbaa !5
  br label %if.end74

if.end74:                                         ; preds = %if.then65, %if.else, %if.end48
  call fastcc void @emovo(i16* %arraydecay, i16* %y)
  br label %return

return:                                           ; preds = %if.end.i, %if.end32, %if.end74, %if.then31
  ret void
}

define internal fastcc i32 @eisnan(i16* nocapture %x) nounwind readonly {
entry:
  %arrayidx = getelementptr inbounds i16* %x, i32 9
  %0 = load i16* %arrayidx, align 2, !tbaa !5
  %and = and i16 %0, 32767
  %cmp = icmp eq i16 %and, 32767
  br i1 %cmp, label %for.cond.preheader, label %return

for.cond.preheader:                               ; preds = %entry
  %1 = load i16* %x, align 2, !tbaa !5
  %cmp5 = icmp eq i16 %1, 0
  br i1 %cmp5, label %for.inc, label %return

for.inc:                                          ; preds = %for.cond.preheader
  %incdec.ptr = getelementptr inbounds i16* %x, i32 1
  %2 = load i16* %incdec.ptr, align 2, !tbaa !5
  %cmp5.1 = icmp eq i16 %2, 0
  br i1 %cmp5.1, label %for.inc.1, label %return

return:                                           ; preds = %for.cond.preheader, %for.inc, %for.inc.1, %for.inc.2, %for.inc.3, %for.inc.4, %for.inc.5, %for.inc.6, %entry
  %retval.0 = phi i32 [ 0, %entry ], [ 1, %for.cond.preheader ], [ 1, %for.inc ], [ 1, %for.inc.1 ], [ 1, %for.inc.2 ], [ 1, %for.inc.3 ], [ 1, %for.inc.4 ], [ 1, %for.inc.5 ], [ 1, %for.inc.6 ]
  ret i32 %retval.0

for.inc.1:                                        ; preds = %for.inc
  %incdec.ptr.1 = getelementptr inbounds i16* %x, i32 2
  %3 = load i16* %incdec.ptr.1, align 2, !tbaa !5
  %cmp5.2 = icmp eq i16 %3, 0
  br i1 %cmp5.2, label %for.inc.2, label %return

for.inc.2:                                        ; preds = %for.inc.1
  %incdec.ptr.2 = getelementptr inbounds i16* %x, i32 3
  %4 = load i16* %incdec.ptr.2, align 2, !tbaa !5
  %cmp5.3 = icmp eq i16 %4, 0
  br i1 %cmp5.3, label %for.inc.3, label %return

for.inc.3:                                        ; preds = %for.inc.2
  %incdec.ptr.3 = getelementptr inbounds i16* %x, i32 4
  %5 = load i16* %incdec.ptr.3, align 2, !tbaa !5
  %cmp5.4 = icmp eq i16 %5, 0
  br i1 %cmp5.4, label %for.inc.4, label %return

for.inc.4:                                        ; preds = %for.inc.3
  %incdec.ptr.4 = getelementptr inbounds i16* %x, i32 5
  %6 = load i16* %incdec.ptr.4, align 2, !tbaa !5
  %cmp5.5 = icmp eq i16 %6, 0
  br i1 %cmp5.5, label %for.inc.5, label %return

for.inc.5:                                        ; preds = %for.inc.4
  %incdec.ptr.5 = getelementptr inbounds i16* %x, i32 6
  %7 = load i16* %incdec.ptr.5, align 2, !tbaa !5
  %cmp5.6 = icmp eq i16 %7, 0
  br i1 %cmp5.6, label %for.inc.6, label %return

for.inc.6:                                        ; preds = %for.inc.5
  %incdec.ptr.6 = getelementptr inbounds i16* %x, i32 7
  %8 = load i16* %incdec.ptr.6, align 2, !tbaa !5
  %cmp5.7 = icmp eq i16 %8, 0
  br i1 %cmp5.7, label %for.inc.7, label %return

for.inc.7:                                        ; preds = %for.inc.6
  %incdec.ptr.7 = getelementptr inbounds i16* %x, i32 8
  %9 = load i16* %incdec.ptr.7, align 2, !tbaa !5
  %not.cmp5.8 = icmp ne i16 %9, 0
  %. = zext i1 %not.cmp5.8 to i32
  ret i32 %.
}

declare %struct._Bigint* @_Balloc(%struct._reent*, i32)

declare i8* @strcpy(i8*, i8*)

define i32 @_ldcheck(double* nocapture %d) nounwind {
entry:
  %e = alloca [13 x i16], align 2
  %du = alloca double, align 4
  %0 = load double* %d, align 4, !tbaa !0
  store double %0, double* %du, align 4, !tbaa !0
  %pe = bitcast double* %du to i16*
  %arraydecay = getelementptr inbounds [13 x i16]* %e, i32 0, i32 0
  call fastcc void @e53toe(i16* %pe, i16* %arraydecay)
  %arrayidx = getelementptr inbounds [13 x i16]* %e, i32 0, i32 9
  %1 = load i16* %arrayidx, align 2, !tbaa !5
  %and = and i16 %1, 32767
  %cmp = icmp eq i16 %and, 32767
  br i1 %cmp, label %for.cond.preheader.i, label %return

for.cond.preheader.i:                             ; preds = %entry
  %2 = load i16* %arraydecay, align 2, !tbaa !5
  %cmp5.i = icmp eq i16 %2, 0
  br i1 %cmp5.i, label %for.inc.i, label %return

for.inc.i:                                        ; preds = %for.cond.preheader.i
  %incdec.ptr.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 1
  %3 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  %cmp5.1.i = icmp eq i16 %3, 0
  br i1 %cmp5.1.i, label %for.inc.1.i, label %return

for.inc.1.i:                                      ; preds = %for.inc.i
  %incdec.ptr.1.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 2
  %4 = load i16* %incdec.ptr.1.i, align 2, !tbaa !5
  %cmp5.2.i = icmp eq i16 %4, 0
  br i1 %cmp5.2.i, label %for.inc.2.i, label %return

for.inc.2.i:                                      ; preds = %for.inc.1.i
  %incdec.ptr.2.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 3
  %5 = load i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %cmp5.3.i = icmp eq i16 %5, 0
  br i1 %cmp5.3.i, label %for.inc.3.i, label %return

for.inc.3.i:                                      ; preds = %for.inc.2.i
  %incdec.ptr.3.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 4
  %6 = load i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %cmp5.4.i = icmp eq i16 %6, 0
  br i1 %cmp5.4.i, label %for.inc.4.i, label %return

for.inc.4.i:                                      ; preds = %for.inc.3.i
  %incdec.ptr.4.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 5
  %7 = load i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %cmp5.5.i = icmp eq i16 %7, 0
  br i1 %cmp5.5.i, label %for.inc.5.i, label %return

for.inc.5.i:                                      ; preds = %for.inc.4.i
  %incdec.ptr.5.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 6
  %8 = load i16* %incdec.ptr.5.i, align 2, !tbaa !5
  %cmp5.6.i = icmp eq i16 %8, 0
  br i1 %cmp5.6.i, label %for.inc.6.i, label %return

for.inc.6.i:                                      ; preds = %for.inc.5.i
  %incdec.ptr.6.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 7
  %9 = load i16* %incdec.ptr.6.i, align 2, !tbaa !5
  %cmp5.7.i = icmp eq i16 %9, 0
  br i1 %cmp5.7.i, label %for.inc.7.i, label %return

for.inc.7.i:                                      ; preds = %for.inc.6.i
  %incdec.ptr.7.i = getelementptr inbounds [13 x i16]* %e, i32 0, i32 8
  %10 = load i16* %incdec.ptr.7.i, align 2, !tbaa !5
  %not.cmp5.8.i = icmp ne i16 %10, 0
  %phitmp6 = select i1 %not.cmp5.8.i, i32 1, i32 2
  br label %return

return:                                           ; preds = %for.inc.7.i, %for.inc.6.i, %for.inc.5.i, %for.inc.4.i, %for.inc.3.i, %for.inc.2.i, %for.inc.1.i, %for.inc.i, %for.cond.preheader.i, %entry
  %retval.0 = phi i32 [ 0, %entry ], [ %phitmp6, %for.inc.7.i ], [ 1, %for.cond.preheader.i ], [ 1, %for.inc.i ], [ 1, %for.inc.1.i ], [ 1, %for.inc.2.i ], [ 1, %for.inc.3.i ], [ 1, %for.inc.4.i ], [ 1, %for.inc.5.i ], [ 1, %for.inc.6.i ]
  ret i32 %retval.0
}

define double @_strtold(i8* %s, i8** %se) nounwind {
entry:
  %yy.i = alloca [13 x i16], align 2
  %xt.i = alloca [13 x i16], align 2
  %tt.i = alloca [13 x i16], align 2
  %tmpstr.i = alloca [200 x i8], align 1
  %rnd = alloca %struct.LDPARMS, align 4
  %rlast = getelementptr inbounds %struct.LDPARMS* %rnd, i32 0, i32 0
  store i32 -1, i32* %rlast, align 4, !tbaa !3
  %rndprc = getelementptr inbounds %struct.LDPARMS* %rnd, i32 0, i32 1
  store i32 144, i32* %rndprc, align 4, !tbaa !3
  %0 = bitcast [13 x i16]* %yy.i to i8*
  call void @llvm.lifetime.start(i64 -1, i8* %0) nounwind
  %1 = bitcast [13 x i16]* %xt.i to i8*
  call void @llvm.lifetime.start(i64 -1, i8* %1) nounwind
  %2 = bitcast [13 x i16]* %tt.i to i8*
  call void @llvm.lifetime.start(i64 -1, i8* %2) nounwind
  %3 = getelementptr inbounds [200 x i8]* %tmpstr.i, i32 0, i32 0
  call void @llvm.lifetime.start(i64 -1, i8* %3) nounwind
  %call.i = call i32 @strlen(i8* %s) nounwind
  %add.i = add i32 %call.i, 2
  %cmp.i = icmp slt i32 %add.i, 201
  br i1 %cmp.i, label %if.end.i, label %if.else.i

if.else.i:                                        ; preds = %entry
  %call1.i = call i8* @calloc(i32 %add.i, i32 1) nounwind
  br label %if.end.i

if.end.i:                                         ; preds = %entry, %if.else.i
  %lstr.0.i = phi i8* [ %call1.i, %if.else.i ], [ %3, %entry ]
  %mflag.0.i = phi i32 [ 1, %if.else.i ], [ 0, %entry ]
  %4 = load i8* %s, align 1, !tbaa !1
  %cmp2274.i = icmp eq i8 %4, 32
  br i1 %cmp2274.i, label %while.body.i, label %for.cond.preheader.i

for.cond.preheader.i:                             ; preds = %while.body.i, %if.end.i
  %5 = phi i8 [ %4, %if.end.i ], [ %6, %while.body.i ]
  %lenldstr.0.lcssa.i = phi i32 [ 0, %if.end.i ], [ %inc.i, %while.body.i ]
  %s.0.lcssa.i = phi i8* [ %s, %if.end.i ], [ %incdec.ptr.i, %while.body.i ]
  %cmp4269.i = icmp sgt i32 %add.i, 0
  br i1 %cmp4269.i, label %for.body.i.preheader, label %for.end.i

for.body.i.preheader:                             ; preds = %for.cond.preheader.i
  %incdec.ptr7.i25 = getelementptr inbounds i8* %lstr.0.i, i32 1
  store i8 %5, i8* %lstr.0.i, align 1, !tbaa !1
  %cmp9.i26 = icmp eq i8 %5, 0
  br i1 %cmp9.i26, label %for.end.i, label %for.inc.i

while.body.i:                                     ; preds = %if.end.i, %while.body.i
  %lenldstr.0276.i = phi i32 [ %inc.i, %while.body.i ], [ 0, %if.end.i ]
  %s.0275.i = phi i8* [ %incdec.ptr.i, %while.body.i ], [ %s, %if.end.i ]
  %incdec.ptr.i = getelementptr inbounds i8* %s.0275.i, i32 1
  %inc.i = add nsw i32 %lenldstr.0276.i, 1
  %6 = load i8* %incdec.ptr.i, align 1, !tbaa !1
  %cmp2.i = icmp eq i8 %6, 32
  br i1 %cmp2.i, label %while.body.i, label %for.cond.preheader.i

for.inc.i:                                        ; preds = %for.body.i.preheader, %for.inc.for.body_crit_edge.i
  %incdec.ptr7.i29 = phi i8* [ %incdec.ptr7.i, %for.inc.for.body_crit_edge.i ], [ %incdec.ptr7.i25, %for.body.i.preheader ]
  %k.0270.i28 = phi i32 [ %phitmp307.i, %for.inc.for.body_crit_edge.i ], [ 1, %for.body.i.preheader ]
  %s.1272.i27 = phi i8* [ %incdec.ptr6.i, %for.inc.for.body_crit_edge.i ], [ %s.0.lcssa.i, %for.body.i.preheader ]
  %incdec.ptr6.i = getelementptr inbounds i8* %s.1272.i27, i32 1
  %cmp4.i = icmp slt i32 %k.0270.i28, %add.i
  br i1 %cmp4.i, label %for.inc.for.body_crit_edge.i, label %for.end.i

for.inc.for.body_crit_edge.i:                     ; preds = %for.inc.i
  %.pre303.i = load i8* %incdec.ptr6.i, align 1, !tbaa !1
  %phitmp307.i = add i32 %k.0270.i28, 1
  %incdec.ptr7.i = getelementptr inbounds i8* %incdec.ptr7.i29, i32 1
  store i8 %.pre303.i, i8* %incdec.ptr7.i29, align 1, !tbaa !1
  %cmp9.i = icmp eq i8 %.pre303.i, 0
  br i1 %cmp9.i, label %for.end.i, label %for.inc.i

for.end.i:                                        ; preds = %for.body.i.preheader, %for.inc.i, %for.inc.for.body_crit_edge.i, %for.cond.preheader.i
  %sp.1.i = phi i8* [ %lstr.0.i, %for.cond.preheader.i ], [ %incdec.ptr7.i25, %for.body.i.preheader ], [ %incdec.ptr7.i29, %for.inc.i ], [ %incdec.ptr7.i, %for.inc.for.body_crit_edge.i ]
  store i8 0, i8* %sp.1.i, align 1, !tbaa !1
  %7 = load i32* %rndprc, align 4, !tbaa !3
  store i32 144, i32* %rndprc, align 4, !tbaa !3
  %arraydecay15.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 0
  %incdec.ptr.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 1
  store i16 0, i16* %arraydecay15.i, align 2, !tbaa !5
  %incdec.ptr.1.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 2
  store i16 0, i16* %incdec.ptr.i.i, align 2, !tbaa !5
  %incdec.ptr.2.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 3
  store i16 0, i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  %incdec.ptr.3.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 4
  store i16 0, i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  %incdec.ptr.4.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 5
  store i16 0, i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  %incdec.ptr.5.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 6
  store i16 0, i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  %incdec.ptr.6.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 7
  store i16 0, i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  %incdec.ptr.7.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 8
  store i16 0, i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  %incdec.ptr.8.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 9
  store i16 0, i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  %incdec.ptr.9.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 10
  store i16 0, i16* %incdec.ptr.8.i.i, align 2, !tbaa !5
  %incdec.ptr.10.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 11
  store i16 0, i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  %incdec.ptr.11.i.i = getelementptr inbounds [13 x i16]* %yy.i, i32 0, i32 12
  store i16 0, i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i.i, align 2, !tbaa !5
  %arraydecay94.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 0
  %incdec.ptr1.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 1
  %incdec.ptr1.1.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 2
  %incdec.ptr1.2.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 3
  %incdec.ptr1.3.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 4
  %incdec.ptr1.4.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 5
  %incdec.ptr1.5.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 6
  %incdec.ptr1.6.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 7
  %incdec.ptr1.7.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 8
  %incdec.ptr1.8.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 9
  %incdec.ptr1.9.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 10
  %incdec.ptr1.10.i.i = getelementptr inbounds [13 x i16]* %xt.i, i32 0, i32 11
  %scevgep.i.i = getelementptr [13 x i16]* %xt.i, i32 0, i32 12
  br label %nxtcom.i

nxtcom.i:                                         ; preds = %donchr.i, %for.end.i
  %decflg.0.i = phi i32 [ 0, %for.end.i ], [ %decflg.1.i, %donchr.i ]
  %sgnflg.0.i = phi i32 [ 0, %for.end.i ], [ %sgnflg.1.i, %donchr.i ]
  %nexp.0.i = phi i32 [ 0, %for.end.i ], [ %nexp.3.i, %donchr.i ]
  %prec.0.i = phi i32 [ 0, %for.end.i ], [ %prec.1.i, %donchr.i ]
  %lost.0.i = phi i32 [ 0, %for.end.i ], [ %lost.2.i, %donchr.i ]
  %trail.0.i = phi i32 [ 0, %for.end.i ], [ %trail.2.i, %donchr.i ]
  %nsign.0.i = phi i16 [ 0, %for.end.i ], [ %nsign.2.i, %donchr.i ]
  %s.2.i = phi i8* [ %lstr.0.i, %for.end.i ], [ %incdec.ptr132.i, %donchr.i ]
  %8 = load i8* %s.2.i, align 1, !tbaa !1
  %conv16.i = sext i8 %8 to i32
  %sub.i = add nsw i32 %conv16.i, -48
  %9 = icmp ult i32 %sub.i, 10
  br i1 %9, label %if.then21.i, label %if.end112.i

if.then21.i:                                      ; preds = %nxtcom.i
  %cmp25.i = icmp eq i32 %decflg.0.i, 0
  %10 = or i32 %prec.0.i, %decflg.0.i
  %11 = or i32 %10, %sub.i
  %12 = icmp eq i32 %11, 0
  br i1 %12, label %donchr.i, label %if.end31.i

if.end31.i:                                       ; preds = %if.then21.i
  %cmp32.i = icmp ne i32 %trail.0.i, 0
  %or.cond3.i = or i1 %cmp32.i, %cmp25.i
  br i1 %or.cond3.i, label %if.end84.i, label %while.cond38.i.preheader

while.cond38.i.preheader:                         ; preds = %if.end31.i
  %.off245.i5 = add i8 %8, -48
  %13 = icmp ult i8 %.off245.i5, 10
  br i1 %13, label %while.cond38.while.cond38_crit_edge.i, label %while.end47.i

while.cond38.while.cond38_crit_edge.i:            ; preds = %while.cond38.i.preheader, %while.cond38.while.cond38_crit_edge.i
  %s.2.i.pn = phi i8* [ %incdec.ptr46.i7, %while.cond38.while.cond38_crit_edge.i ], [ %s.2.i, %while.cond38.i.preheader ]
  %incdec.ptr46.i7 = getelementptr inbounds i8* %s.2.i.pn, i32 1
  %.pre301.i = load i8* %incdec.ptr46.i7, align 1, !tbaa !1
  %.off245.i = add i8 %.pre301.i, -48
  %14 = icmp ult i8 %.off245.i, 10
  br i1 %14, label %while.cond38.while.cond38_crit_edge.i, label %while.end47.i

while.end47.i:                                    ; preds = %while.cond38.while.cond38_crit_edge.i, %while.cond38.i.preheader
  %sp.2.i.lcssa = phi i8* [ %s.2.i, %while.cond38.i.preheader ], [ %incdec.ptr46.i7, %while.cond38.while.cond38_crit_edge.i ]
  %.lcssa = phi i8 [ %8, %while.cond38.i.preheader ], [ %.pre301.i, %while.cond38.while.cond38_crit_edge.i ]
  %conv481.i = zext i8 %.lcssa to i32
  %and.i = and i32 %conv481.i, 127
  switch i32 %and.i, label %error.i [
    i32 101, label %while.cond72.preheader.i
    i32 69, label %while.cond72.preheader.i
    i32 44, label %while.cond72.preheader.i
    i32 32, label %while.cond72.preheader.i
    i32 13, label %while.cond72.preheader.i
    i32 10, label %while.cond72.preheader.i
    i32 0, label %while.cond72.preheader.i
  ]

while.cond72.preheader.i:                         ; preds = %while.end47.i, %while.end47.i, %while.end47.i, %while.end47.i, %while.end47.i, %while.end47.i, %while.end47.i
  %sp.3250.i = getelementptr inbounds i8* %sp.2.i.lcssa, i32 -1
  %15 = load i8* %sp.3250.i, align 1, !tbaa !1
  %cmp74251.i = icmp eq i8 %15, 48
  br i1 %cmp74251.i, label %while.body76.i, label %while.end78.i

while.body76.i:                                   ; preds = %while.cond72.preheader.i, %while.body76.i
  %sp.3252.i = phi i8* [ %sp.3.i, %while.body76.i ], [ %sp.3250.i, %while.cond72.preheader.i ]
  store i8 122, i8* %sp.3252.i, align 1, !tbaa !1
  %sp.3.i = getelementptr inbounds i8* %sp.3252.i, i32 -1
  %16 = load i8* %sp.3.i, align 1, !tbaa !1
  %cmp74.i = icmp eq i8 %16, 48
  br i1 %cmp74.i, label %while.body76.i, label %while.cond72.while.end78_crit_edge.i

while.cond72.while.end78_crit_edge.i:             ; preds = %while.body76.i
  %.pre.i = load i8* %s.2.i, align 1, !tbaa !1
  br label %while.end78.i

while.end78.i:                                    ; preds = %while.cond72.while.end78_crit_edge.i, %while.cond72.preheader.i
  %17 = phi i8 [ %.pre.i, %while.cond72.while.end78_crit_edge.i ], [ %8, %while.cond72.preheader.i ]
  %cmp80.i = icmp eq i8 %17, 122
  br i1 %cmp80.i, label %donchr.i, label %if.end84.i

if.end84.i:                                       ; preds = %while.end78.i, %if.end31.i
  %trail.1.i = phi i32 [ %trail.0.i, %if.end31.i ], [ 1, %while.end78.i ]
  %18 = load i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  %cmp86.i = icmp eq i16 %18, 0
  br i1 %cmp86.i, label %for.body.i.i, label %if.else104.i

for.body.i.i:                                     ; preds = %if.end84.i, %if.end.i.for.body.i_crit_edge.i
  %i.025.i.i = phi i32 [ %phitmp305.i, %if.end.i.for.body.i_crit_edge.i ], [ 3, %if.end84.i ]
  %bits.024.i.i = phi i16 [ %conv15.i.i, %if.end.i.for.body.i_crit_edge.i ], [ 0, %if.end84.i ]
  %x.addr.023.i.i = phi i16* [ %incdec.ptr.i5.i, %if.end.i.for.body.i_crit_edge.i ], [ %incdec.ptr.11.i.i, %if.end84.i ]
  %19 = load i16* %x.addr.023.i.i, align 2, !tbaa !5
  %tobool.i.i = icmp slt i16 %19, 0
  br i1 %tobool.i.i, label %if.then.i.i, label %if.end.i.i

if.then.i.i:                                      ; preds = %for.body.i.i
  %conv1.i.i = zext i16 %bits.024.i.i to i32
  %or.i.i = or i32 %conv1.i.i, 1
  %conv2.i.i = trunc i32 %or.i.i to i16
  br label %if.end.i.i

if.end.i.i:                                       ; preds = %if.then.i.i, %for.body.i.i
  %bits.1.i.i = phi i16 [ %conv2.i.i, %if.then.i.i ], [ %bits.024.i.i, %for.body.i.i ]
  %conv3.i.i = zext i16 %19 to i32
  %shl.i.i = shl nuw nsw i32 %conv3.i.i, 1
  %conv5.i.i = zext i16 %bits.1.i.i to i32
  %and6.i.i = lshr i32 %conv5.i.i, 1
  %and6.lobit.i.i = and i32 %and6.i.i, 1
  %storemerge.in.i.i = or i32 %and6.lobit.i.i, %shl.i.i
  %storemerge.i.i = trunc i32 %storemerge.in.i.i to i16
  store i16 %storemerge.i.i, i16* %x.addr.023.i.i, align 2
  %exitcond.i.i = icmp eq i32 %i.025.i.i, 13
  br i1 %exitcond.i.i, label %eshup1.exit.i, label %if.end.i.for.body.i_crit_edge.i

if.end.i.for.body.i_crit_edge.i:                  ; preds = %if.end.i.i
  %shl14.i.i = shl nuw nsw i32 %conv5.i.i, 1
  %incdec.ptr.i5.i = getelementptr inbounds i16* %x.addr.023.i.i, i32 -1
  %conv15.i.i = trunc i32 %shl14.i.i to i16
  %phitmp305.i = add i32 %i.025.i.i, 1
  br label %for.body.i.i

eshup1.exit.i:                                    ; preds = %if.end.i.i
  %20 = load i16* %arraydecay15.i, align 2, !tbaa !5
  store i16 %20, i16* %arraydecay94.i, align 2, !tbaa !5
  %21 = load i16* %incdec.ptr.i.i, align 2, !tbaa !5
  store i16 %21, i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  %22 = load i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  store i16 %22, i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  %23 = load i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  store i16 %23, i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  %24 = load i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  store i16 %24, i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  %25 = load i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  store i16 %25, i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  %26 = load i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  store i16 %26, i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  %27 = load i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  store i16 %27, i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  %28 = load i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  store i16 %28, i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  %29 = load i16* %incdec.ptr.8.i.i, align 2, !tbaa !5
  store i16 %29, i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  %30 = load i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  store i16 %30, i16* %incdec.ptr1.9.i.i, align 2, !tbaa !5
  %31 = load i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 %31, i16* %incdec.ptr1.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i.i, align 2, !tbaa !5
  br label %for.body.i22.i

for.body.i22.i:                                   ; preds = %if.end.i40.for.body.i22_crit_edge.i, %eshup1.exit.i
  %32 = phi i16 [ 0, %eshup1.exit.i ], [ %.pre300.i, %if.end.i40.for.body.i22_crit_edge.i ]
  %i.025.i18.i = phi i32 [ 3, %eshup1.exit.i ], [ %phitmp306.i, %if.end.i40.for.body.i22_crit_edge.i ]
  %bits.024.i19.i = phi i16 [ 0, %eshup1.exit.i ], [ %conv15.i36.i, %if.end.i40.for.body.i22_crit_edge.i ]
  %x.addr.023.i20.i = phi i16* [ %scevgep.i.i, %eshup1.exit.i ], [ %incdec.ptr.i37.i, %if.end.i40.for.body.i22_crit_edge.i ]
  %tobool.i21.i = icmp slt i16 %32, 0
  br i1 %tobool.i21.i, label %if.then.i26.i, label %if.end.i40.i

if.then.i26.i:                                    ; preds = %for.body.i22.i
  %conv1.i23.i = zext i16 %bits.024.i19.i to i32
  %or.i24.i = or i32 %conv1.i23.i, 1
  %conv2.i25.i = trunc i32 %or.i24.i to i16
  br label %if.end.i40.i

if.end.i40.i:                                     ; preds = %if.then.i26.i, %for.body.i22.i
  %bits.1.i27.i = phi i16 [ %conv2.i25.i, %if.then.i26.i ], [ %bits.024.i19.i, %for.body.i22.i ]
  %conv3.i28.i = zext i16 %32 to i32
  %shl.i29.i = shl nuw nsw i32 %conv3.i28.i, 1
  %conv5.i30.i = zext i16 %bits.1.i27.i to i32
  %and6.i31.i = lshr i32 %conv5.i30.i, 1
  %and6.lobit.i32.i = and i32 %and6.i31.i, 1
  %storemerge.in.i33.i = or i32 %and6.lobit.i32.i, %shl.i29.i
  %storemerge.i34.i = trunc i32 %storemerge.in.i33.i to i16
  store i16 %storemerge.i34.i, i16* %x.addr.023.i20.i, align 2
  %incdec.ptr.i37.i = getelementptr inbounds i16* %x.addr.023.i20.i, i32 -1
  %exitcond.i39.i = icmp eq i32 %i.025.i18.i, 13
  br i1 %exitcond.i39.i, label %for.body.i47.i, label %if.end.i40.for.body.i22_crit_edge.i

if.end.i40.for.body.i22_crit_edge.i:              ; preds = %if.end.i40.i
  %shl14.i35.i = shl nuw nsw i32 %conv5.i30.i, 1
  %conv15.i36.i = trunc i32 %shl14.i35.i to i16
  %.pre300.i = load i16* %incdec.ptr.i37.i, align 2, !tbaa !5
  %phitmp306.i = add i32 %i.025.i18.i, 1
  br label %for.body.i22.i

for.body.i47.i:                                   ; preds = %if.end.i40.i, %if.end.i65.i
  %i.025.i43.i = phi i32 [ %inc.i63.i, %if.end.i65.i ], [ 2, %if.end.i40.i ]
  %bits.024.i44.i = phi i16 [ %conv15.i61.i, %if.end.i65.i ], [ 0, %if.end.i40.i ]
  %x.addr.023.i45.i = phi i16* [ %incdec.ptr.i62.i, %if.end.i65.i ], [ %scevgep.i.i, %if.end.i40.i ]
  %33 = load i16* %x.addr.023.i45.i, align 2, !tbaa !5
  %tobool.i46.i = icmp slt i16 %33, 0
  br i1 %tobool.i46.i, label %if.then.i51.i, label %if.end.i65.i

if.then.i51.i:                                    ; preds = %for.body.i47.i
  %conv1.i48.i = zext i16 %bits.024.i44.i to i32
  %or.i49.i = or i32 %conv1.i48.i, 1
  %conv2.i50.i = trunc i32 %or.i49.i to i16
  br label %if.end.i65.i

if.end.i65.i:                                     ; preds = %if.then.i51.i, %for.body.i47.i
  %bits.1.i52.i = phi i16 [ %conv2.i50.i, %if.then.i51.i ], [ %bits.024.i44.i, %for.body.i47.i ]
  %conv3.i53.i = zext i16 %33 to i32
  %shl.i54.i = shl nuw nsw i32 %conv3.i53.i, 1
  %conv5.i55.i = zext i16 %bits.1.i52.i to i32
  %and6.i56.i = lshr i32 %conv5.i55.i, 1
  %and6.lobit.i57.i = and i32 %and6.i56.i, 1
  %storemerge.in.i58.i = or i32 %and6.lobit.i57.i, %shl.i54.i
  %storemerge.i59.i = trunc i32 %storemerge.in.i58.i to i16
  store i16 %storemerge.i59.i, i16* %x.addr.023.i45.i, align 2
  %shl14.i60.i = shl nuw nsw i32 %conv5.i55.i, 1
  %conv15.i61.i = trunc i32 %shl14.i60.i to i16
  %incdec.ptr.i62.i = getelementptr inbounds i16* %x.addr.023.i45.i, i32 -1
  %inc.i63.i = add nsw i32 %i.025.i43.i, 1
  %exitcond.i64.i = icmp eq i32 %inc.i63.i, 13
  br i1 %exitcond.i64.i, label %eshup1.exit66.i, label %for.body.i47.i

eshup1.exit66.i:                                  ; preds = %if.end.i65.i
  %34 = zext i1 %cmp25.i to i32
  %add90.i = xor i32 %34, 1
  call fastcc void @eaddm(i16* %arraydecay94.i, i16* %arraydecay15.i) nounwind
  store i16 0, i16* %arraydecay94.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.9.i.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i.i, align 2, !tbaa !5
  %conv100.i = trunc i32 %sub.i to i16
  store i16 %conv100.i, i16* %incdec.ptr1.10.i.i, align 2, !tbaa !5
  call fastcc void @eaddm(i16* %arraydecay94.i, i16* %arraydecay15.i) nounwind
  br label %if.end110.i

if.else104.i:                                     ; preds = %if.end84.i
  %or.i = or i32 %sub.i, %lost.0.i
  %sub108.i = sext i1 %cmp25.i to i32
  br label %if.end110.i

if.end110.i:                                      ; preds = %if.else104.i, %eshup1.exit66.i
  %add90.pn.i = phi i32 [ %add90.i, %eshup1.exit66.i ], [ %sub108.i, %if.else104.i ]
  %lost.1.i = phi i32 [ %lost.0.i, %eshup1.exit66.i ], [ %or.i, %if.else104.i ]
  %nexp.2.i = add nsw i32 %add90.pn.i, %nexp.0.i
  %add111.i = add nsw i32 %prec.0.i, 1
  br label %donchr.i

if.end112.i:                                      ; preds = %nxtcom.i
  switch i32 %conv16.i, label %error.i [
    i32 122, label %donchr.i
    i32 69, label %expnt.i
    i32 101, label %expnt.i
    i32 46, label %sw.bb114.i
    i32 45, label %sw.bb119.i
    i32 43, label %sw.bb124.i
    i32 44, label %daldone.i
    i32 32, label %daldone.i
    i32 0, label %daldone.i
    i32 10, label %daldone.i
    i32 13, label %daldone.i
    i32 105, label %infinite.i
    i32 73, label %infinite.i
  ]

sw.bb114.i:                                       ; preds = %if.end112.i
  %tobool115.i = icmp eq i32 %decflg.0.i, 0
  br i1 %tobool115.i, label %donchr.i, label %error.i

sw.bb119.i:                                       ; preds = %if.end112.i
  %tobool120.i = icmp eq i32 %sgnflg.0.i, 0
  br i1 %tobool120.i, label %donchr.i, label %error.i

sw.bb124.i:                                       ; preds = %if.end112.i
  %tobool125.i = icmp eq i32 %sgnflg.0.i, 0
  br i1 %tobool125.i, label %donchr.i, label %error.i

error.i:                                          ; preds = %sw.bb124.i, %sw.bb119.i, %sw.bb114.i, %if.end112.i, %while.end47.i
  %nsign.1.i = phi i16 [ %nsign.0.i, %while.end47.i ], [ %nsign.0.i, %if.end112.i ], [ %nsign.0.i, %sw.bb124.i ], [ -1, %sw.bb119.i ], [ %nsign.0.i, %sw.bb114.i ]
  store i16 0, i16* %arraydecay15.i, align 2, !tbaa !5
  store i16 32767, i16* %incdec.ptr.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  store i16 -16384, i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i.i, align 2, !tbaa !5
  br label %aexit.i

donchr.i:                                         ; preds = %sw.bb124.i, %sw.bb119.i, %sw.bb114.i, %if.end112.i, %if.end110.i, %while.end78.i, %if.then21.i
  %decflg.1.i = phi i32 [ %decflg.0.i, %while.end78.i ], [ %decflg.0.i, %if.end110.i ], [ %decflg.0.i, %if.end112.i ], [ %decflg.0.i, %if.then21.i ], [ 1, %sw.bb114.i ], [ %decflg.0.i, %sw.bb119.i ], [ %decflg.0.i, %sw.bb124.i ]
  %sgnflg.1.i = phi i32 [ %sgnflg.0.i, %while.end78.i ], [ %sgnflg.0.i, %if.end110.i ], [ %sgnflg.0.i, %if.end112.i ], [ %sgnflg.0.i, %if.then21.i ], [ %sgnflg.0.i, %sw.bb114.i ], [ 1, %sw.bb119.i ], [ 1, %sw.bb124.i ]
  %nexp.3.i = phi i32 [ %nexp.0.i, %while.end78.i ], [ %nexp.2.i, %if.end110.i ], [ %nexp.0.i, %if.end112.i ], [ %nexp.0.i, %if.then21.i ], [ %nexp.0.i, %sw.bb114.i ], [ %nexp.0.i, %sw.bb119.i ], [ %nexp.0.i, %sw.bb124.i ]
  %prec.1.i = phi i32 [ %prec.0.i, %while.end78.i ], [ %add111.i, %if.end110.i ], [ %prec.0.i, %if.end112.i ], [ %prec.0.i, %if.then21.i ], [ %prec.0.i, %sw.bb114.i ], [ %prec.0.i, %sw.bb119.i ], [ %prec.0.i, %sw.bb124.i ]
  %lost.2.i = phi i32 [ %lost.0.i, %while.end78.i ], [ %lost.1.i, %if.end110.i ], [ %lost.0.i, %if.end112.i ], [ %lost.0.i, %if.then21.i ], [ %lost.0.i, %sw.bb114.i ], [ %lost.0.i, %sw.bb119.i ], [ %lost.0.i, %sw.bb124.i ]
  %trail.2.i = phi i32 [ 1, %while.end78.i ], [ %trail.1.i, %if.end110.i ], [ %trail.0.i, %if.end112.i ], [ %trail.0.i, %if.then21.i ], [ %trail.0.i, %sw.bb114.i ], [ %trail.0.i, %sw.bb119.i ], [ %trail.0.i, %sw.bb124.i ]
  %nsign.2.i = phi i16 [ %nsign.0.i, %while.end78.i ], [ %nsign.0.i, %if.end110.i ], [ %nsign.0.i, %if.end112.i ], [ %nsign.0.i, %if.then21.i ], [ %nsign.0.i, %sw.bb114.i ], [ -1, %sw.bb119.i ], [ %nsign.0.i, %sw.bb124.i ]
  %incdec.ptr132.i = getelementptr inbounds i8* %s.2.i, i32 1
  br label %nxtcom.i

expnt.i:                                          ; preds = %if.end112.i, %if.end112.i
  %incdec.ptr133.i = getelementptr inbounds i8* %s.2.i, i32 1
  %35 = load i8* %incdec.ptr133.i, align 1, !tbaa !1
  %cmp135.i = icmp eq i8 %35, 45
  %incdec.ptr138.i = getelementptr inbounds i8* %s.2.i, i32 2
  %incdec.ptr138.incdec.ptr133.i = select i1 %cmp135.i, i8* %incdec.ptr138.i, i8* %incdec.ptr133.i
  %36 = load i8* %incdec.ptr138.incdec.ptr133.i, align 1, !tbaa !1
  %cmp141.i = icmp eq i8 %36, 43
  br i1 %cmp141.i, label %if.then143.i, label %while.cond146.i

if.then143.i:                                     ; preds = %expnt.i
  %incdec.ptr144.i = getelementptr inbounds i8* %incdec.ptr138.incdec.ptr133.i, i32 1
  br label %while.cond146.i

while.cond146.i:                                  ; preds = %while.body155.i, %if.then143.i, %expnt.i
  %exp.0.i = phi i32 [ 0, %expnt.i ], [ 0, %if.then143.i ], [ %add159.i, %while.body155.i ]
  %s.4.i = phi i8* [ %incdec.ptr138.incdec.ptr133.i, %expnt.i ], [ %incdec.ptr144.i, %if.then143.i ], [ %incdec.ptr156.i, %while.body155.i ]
  %37 = load i8* %s.4.i, align 1, !tbaa !1
  %.off.i = add i8 %37, -48
  %38 = icmp ult i8 %.off.i, 10
  br i1 %38, label %while.body155.i, label %while.end168.i

while.body155.i:                                  ; preds = %while.cond146.i
  %conv147.i = sext i8 %37 to i32
  %mul.i = mul nsw i32 %exp.0.i, 10
  %incdec.ptr156.i = getelementptr inbounds i8* %s.4.i, i32 1
  %sub158.i = add i32 %mul.i, -48
  %add159.i = add i32 %sub158.i, %conv147.i
  %cmp160.i = icmp sgt i32 %add159.i, 4977
  br i1 %cmp160.i, label %if.then162.i, label %while.cond146.i

if.then162.i:                                     ; preds = %while.body155.i
  br i1 %cmp135.i, label %zero.i, label %infinite.i

while.end168.i:                                   ; preds = %while.cond146.i
  %sub172.i = sub nsw i32 0, %exp.0.i
  %sub172.exp.0.i = select i1 %cmp135.i, i32 %sub172.i, i32 %exp.0.i
  %cmp174.i = icmp sgt i32 %sub172.exp.0.i, 4932
  br i1 %cmp174.i, label %infinite.i, label %if.end179.i

infinite.i:                                       ; preds = %if.end112.i, %if.end112.i, %while.end168.i, %if.then162.i
  %s.5.i = phi i8* [ %incdec.ptr156.i, %if.then162.i ], [ %s.4.i, %while.end168.i ], [ %s.2.i, %if.end112.i ], [ %s.2.i, %if.end112.i ]
  store i16 0, i16* %arraydecay15.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i.i, align 2, !tbaa !5
  store i16 32767, i16* %incdec.ptr.i.i, align 2, !tbaa !5
  br label %aexit.i

if.end179.i:                                      ; preds = %while.end168.i
  %cmp180.i = icmp slt i32 %sub172.exp.0.i, -4977
  br i1 %cmp180.i, label %zero.i, label %daldone.i

zero.i:                                           ; preds = %if.end179.i, %if.then162.i
  %s.6.i = phi i8* [ %incdec.ptr156.i, %if.then162.i ], [ %s.4.i, %if.end179.i ]
  store i16 0, i16* %arraydecay15.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i.i, align 2, !tbaa !5
  br label %aexit.i

daldone.i:                                        ; preds = %if.end112.i, %if.end112.i, %if.end112.i, %if.end112.i, %if.end112.i, %if.end179.i
  %exp.2.i = phi i32 [ %sub172.exp.0.i, %if.end179.i ], [ 0, %if.end112.i ], [ 0, %if.end112.i ], [ 0, %if.end112.i ], [ 0, %if.end112.i ], [ 0, %if.end112.i ]
  %s.7.i = phi i8* [ %s.4.i, %if.end179.i ], [ %s.2.i, %if.end112.i ], [ %s.2.i, %if.end112.i ], [ %s.2.i, %if.end112.i ], [ %s.2.i, %if.end112.i ], [ %s.2.i, %if.end112.i ]
  %sub185.i = sub nsw i32 %exp.2.i, %nexp.0.i
  %cmp187246.i = icmp sgt i32 %sub185.i, 0
  br i1 %cmp187246.i, label %land.rhs189.lr.ph.i, label %while.end212.i

land.rhs189.lr.ph.i:                              ; preds = %daldone.i
  %.pre299.i = load i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  %phitmp.i = icmp eq i16 %.pre299.i, 0
  br label %land.rhs189.i

land.rhs189.i:                                    ; preds = %if.end208.i, %land.rhs189.lr.ph.i
  %39 = phi i1 [ %phitmp.i, %land.rhs189.lr.ph.i ], [ true, %if.end208.i ]
  %nexp.4247.i = phi i32 [ %sub185.i, %land.rhs189.lr.ph.i ], [ %sub209.i, %if.end208.i ]
  br i1 %39, label %while.body195.i, label %while.end212.i

while.body195.i:                                  ; preds = %land.rhs189.i
  %40 = load i16* %arraydecay15.i, align 2, !tbaa !5
  store i16 %40, i16* %arraydecay94.i, align 2, !tbaa !5
  %41 = load i16* %incdec.ptr.i.i, align 2, !tbaa !5
  store i16 %41, i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  %42 = load i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  store i16 %42, i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  %43 = load i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  store i16 %43, i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  %44 = load i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  store i16 %44, i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  %45 = load i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  store i16 %45, i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  %46 = load i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  store i16 %46, i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  %47 = load i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  store i16 %47, i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  %48 = load i16* %incdec.ptr.8.i.i, align 2, !tbaa !5
  store i16 %48, i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  %49 = load i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  store i16 %49, i16* %incdec.ptr1.9.i.i, align 2, !tbaa !5
  %50 = load i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 %50, i16* %incdec.ptr1.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %scevgep.i.i, align 2, !tbaa !5
  br label %for.body.i200.i

for.body.i200.i:                                  ; preds = %if.end.i218.for.body.i200_crit_edge.i, %while.body195.i
  %51 = phi i16 [ 0, %while.body195.i ], [ %.pre302.i, %if.end.i218.for.body.i200_crit_edge.i ]
  %i.025.i196.i = phi i32 [ 3, %while.body195.i ], [ %phitmp304.i, %if.end.i218.for.body.i200_crit_edge.i ]
  %bits.024.i197.i = phi i16 [ 0, %while.body195.i ], [ %conv15.i214.i, %if.end.i218.for.body.i200_crit_edge.i ]
  %x.addr.023.i198.i = phi i16* [ %scevgep.i.i, %while.body195.i ], [ %incdec.ptr.i215.i, %if.end.i218.for.body.i200_crit_edge.i ]
  %tobool.i199.i = icmp slt i16 %51, 0
  br i1 %tobool.i199.i, label %if.then.i204.i, label %if.end.i218.i

if.then.i204.i:                                   ; preds = %for.body.i200.i
  %conv1.i201.i = zext i16 %bits.024.i197.i to i32
  %or.i202.i = or i32 %conv1.i201.i, 1
  %conv2.i203.i = trunc i32 %or.i202.i to i16
  br label %if.end.i218.i

if.end.i218.i:                                    ; preds = %if.then.i204.i, %for.body.i200.i
  %bits.1.i205.i = phi i16 [ %conv2.i203.i, %if.then.i204.i ], [ %bits.024.i197.i, %for.body.i200.i ]
  %conv3.i206.i = zext i16 %51 to i32
  %shl.i207.i = shl nuw nsw i32 %conv3.i206.i, 1
  %conv5.i208.i = zext i16 %bits.1.i205.i to i32
  %and6.i209.i = lshr i32 %conv5.i208.i, 1
  %and6.lobit.i210.i = and i32 %and6.i209.i, 1
  %storemerge.in.i211.i = or i32 %and6.lobit.i210.i, %shl.i207.i
  %storemerge.i212.i = trunc i32 %storemerge.in.i211.i to i16
  store i16 %storemerge.i212.i, i16* %x.addr.023.i198.i, align 2
  %incdec.ptr.i215.i = getelementptr inbounds i16* %x.addr.023.i198.i, i32 -1
  %exitcond.i217.i = icmp eq i32 %i.025.i196.i, 13
  br i1 %exitcond.i217.i, label %for.body.i225.i, label %if.end.i218.for.body.i200_crit_edge.i

if.end.i218.for.body.i200_crit_edge.i:            ; preds = %if.end.i218.i
  %shl14.i213.i = shl nuw nsw i32 %conv5.i208.i, 1
  %conv15.i214.i = trunc i32 %shl14.i213.i to i16
  %.pre302.i = load i16* %incdec.ptr.i215.i, align 2, !tbaa !5
  %phitmp304.i = add i32 %i.025.i196.i, 1
  br label %for.body.i200.i

for.body.i225.i:                                  ; preds = %if.end.i218.i, %if.end.i243.i
  %i.025.i221.i = phi i32 [ %inc.i241.i, %if.end.i243.i ], [ 2, %if.end.i218.i ]
  %bits.024.i222.i = phi i16 [ %conv15.i239.i, %if.end.i243.i ], [ 0, %if.end.i218.i ]
  %x.addr.023.i223.i = phi i16* [ %incdec.ptr.i240.i, %if.end.i243.i ], [ %scevgep.i.i, %if.end.i218.i ]
  %52 = load i16* %x.addr.023.i223.i, align 2, !tbaa !5
  %tobool.i224.i = icmp slt i16 %52, 0
  br i1 %tobool.i224.i, label %if.then.i229.i, label %if.end.i243.i

if.then.i229.i:                                   ; preds = %for.body.i225.i
  %conv1.i226.i = zext i16 %bits.024.i222.i to i32
  %or.i227.i = or i32 %conv1.i226.i, 1
  %conv2.i228.i = trunc i32 %or.i227.i to i16
  br label %if.end.i243.i

if.end.i243.i:                                    ; preds = %if.then.i229.i, %for.body.i225.i
  %bits.1.i230.i = phi i16 [ %conv2.i228.i, %if.then.i229.i ], [ %bits.024.i222.i, %for.body.i225.i ]
  %conv3.i231.i = zext i16 %52 to i32
  %shl.i232.i = shl nuw nsw i32 %conv3.i231.i, 1
  %conv5.i233.i = zext i16 %bits.1.i230.i to i32
  %and6.i234.i = lshr i32 %conv5.i233.i, 1
  %and6.lobit.i235.i = and i32 %and6.i234.i, 1
  %storemerge.in.i236.i = or i32 %and6.lobit.i235.i, %shl.i232.i
  %storemerge.i237.i = trunc i32 %storemerge.in.i236.i to i16
  store i16 %storemerge.i237.i, i16* %x.addr.023.i223.i, align 2
  %shl14.i238.i = shl nuw nsw i32 %conv5.i233.i, 1
  %conv15.i239.i = trunc i32 %shl14.i238.i to i16
  %incdec.ptr.i240.i = getelementptr inbounds i16* %x.addr.023.i223.i, i32 -1
  %inc.i241.i = add nsw i32 %i.025.i221.i, 1
  %exitcond.i242.i = icmp eq i32 %inc.i241.i, 13
  br i1 %exitcond.i242.i, label %eshup1.exit244.i, label %for.body.i225.i

eshup1.exit244.i:                                 ; preds = %if.end.i243.i
  call fastcc void @eaddm(i16* %arraydecay15.i, i16* %arraydecay94.i) nounwind
  br label %for.body.i175.i

for.body.i175.i:                                  ; preds = %if.end.i193.i, %eshup1.exit244.i
  %i.025.i171.i = phi i32 [ 2, %eshup1.exit244.i ], [ %inc.i191.i, %if.end.i193.i ]
  %bits.024.i172.i = phi i16 [ 0, %eshup1.exit244.i ], [ %conv15.i189.i, %if.end.i193.i ]
  %x.addr.023.i173.i = phi i16* [ %scevgep.i.i, %eshup1.exit244.i ], [ %incdec.ptr.i190.i, %if.end.i193.i ]
  %53 = load i16* %x.addr.023.i173.i, align 2, !tbaa !5
  %tobool.i174.i = icmp slt i16 %53, 0
  br i1 %tobool.i174.i, label %if.then.i179.i, label %if.end.i193.i

if.then.i179.i:                                   ; preds = %for.body.i175.i
  %conv1.i176.i = zext i16 %bits.024.i172.i to i32
  %or.i177.i = or i32 %conv1.i176.i, 1
  %conv2.i178.i = trunc i32 %or.i177.i to i16
  br label %if.end.i193.i

if.end.i193.i:                                    ; preds = %if.then.i179.i, %for.body.i175.i
  %bits.1.i180.i = phi i16 [ %conv2.i178.i, %if.then.i179.i ], [ %bits.024.i172.i, %for.body.i175.i ]
  %conv3.i181.i = zext i16 %53 to i32
  %shl.i182.i = shl nuw nsw i32 %conv3.i181.i, 1
  %conv5.i183.i = zext i16 %bits.1.i180.i to i32
  %and6.i184.i = lshr i32 %conv5.i183.i, 1
  %and6.lobit.i185.i = and i32 %and6.i184.i, 1
  %storemerge.in.i186.i = or i32 %and6.lobit.i185.i, %shl.i182.i
  %storemerge.i187.i = trunc i32 %storemerge.in.i186.i to i16
  store i16 %storemerge.i187.i, i16* %x.addr.023.i173.i, align 2
  %shl14.i188.i = shl nuw nsw i32 %conv5.i183.i, 1
  %conv15.i189.i = trunc i32 %shl14.i188.i to i16
  %incdec.ptr.i190.i = getelementptr inbounds i16* %x.addr.023.i173.i, i32 -1
  %inc.i191.i = add nsw i32 %i.025.i171.i, 1
  %exitcond.i192.i = icmp eq i32 %inc.i191.i, 13
  br i1 %exitcond.i192.i, label %eshup1.exit194.i, label %for.body.i175.i

eshup1.exit194.i:                                 ; preds = %if.end.i193.i
  %54 = load i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  %cmp205.i = icmp eq i16 %54, 0
  br i1 %cmp205.i, label %if.end208.i, label %while.end212.i

if.end208.i:                                      ; preds = %eshup1.exit194.i
  %sub209.i = add nsw i32 %nexp.4247.i, -1
  %55 = load i16* %arraydecay94.i, align 2, !tbaa !5
  store i16 %55, i16* %arraydecay15.i, align 2, !tbaa !5
  %56 = load i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  store i16 %56, i16* %incdec.ptr.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  %57 = load i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  store i16 %57, i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  %58 = load i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  store i16 %58, i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  %59 = load i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  store i16 %59, i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  %60 = load i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  store i16 %60, i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  %61 = load i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  store i16 %61, i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  %62 = load i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  store i16 %62, i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  %63 = load i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  store i16 %63, i16* %incdec.ptr.8.i.i, align 2, !tbaa !5
  %64 = load i16* %incdec.ptr1.9.i.i, align 2, !tbaa !5
  store i16 %64, i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  %65 = load i16* %incdec.ptr1.10.i.i, align 2, !tbaa !5
  store i16 %65, i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i.i, align 2, !tbaa !5
  %cmp187.i = icmp sgt i32 %sub209.i, 0
  br i1 %cmp187.i, label %land.rhs189.i, label %while.end212.i

while.end212.i:                                   ; preds = %if.end208.i, %eshup1.exit194.i, %land.rhs189.i, %daldone.i
  %nexp.4.lcssa.i = phi i32 [ %sub185.i, %daldone.i ], [ %sub209.i, %if.end208.i ], [ %nexp.4247.i, %eshup1.exit194.i ], [ %nexp.4247.i, %land.rhs189.i ]
  %call214.i = call fastcc i32 @enormlz(i16* %arraydecay15.i) nounwind
  %cmp215.i = icmp sgt i32 %call214.i, 144
  br i1 %cmp215.i, label %if.then217.i, label %if.end219.i

if.then217.i:                                     ; preds = %while.end212.i
  store i16 0, i16* %arraydecay15.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.9.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.10.i.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i.i, align 2, !tbaa !5
  br label %aexit.i

if.end219.i:                                      ; preds = %while.end212.i
  %sub220.i = sub nsw i32 16526, %call214.i
  call fastcc void @emdnorm(i16* %arraydecay15.i, i32 %lost.0.i, i32 0, i32 %sub220.i, i32 64, %struct.LDPARMS* %rnd) nounwind
  %66 = load i16* %incdec.ptr.i.i, align 2, !tbaa !5
  %conv223.i = zext i16 %66 to i32
  %cmp224.i = icmp eq i32 %nexp.4.lcssa.i, 0
  br i1 %cmp224.i, label %if.then284.i, label %if.end227.i

if.end227.i:                                      ; preds = %if.end219.i
  %cmp228.i = icmp slt i32 %nexp.4.lcssa.i, 0
  br i1 %cmp228.i, label %if.then230.i, label %if.end245.i

if.then230.i:                                     ; preds = %if.end227.i
  %sub231.i = sub nsw i32 0, %nexp.4.lcssa.i
  %cmp232.i = icmp sgt i32 %sub231.i, 4096
  br i1 %cmp232.i, label %if.then234.i, label %if.end245.i

if.then234.i:                                     ; preds = %if.then230.i
  %arraydecay235.i = getelementptr inbounds [13 x i16]* %tt.i, i32 0, i32 0
  call fastcc void @emovi(i16* getelementptr inbounds ([13 x [10 x i16]]* @etens, i32 0, i32 0, i32 0), i16* %arraydecay235.i) nounwind
  %arrayidx236.i = getelementptr inbounds [13 x i16]* %tt.i, i32 0, i32 1
  %67 = load i16* %arrayidx236.i, align 2, !tbaa !5
  %conv237.i = zext i16 %67 to i32
  %call241.i = call fastcc i32 @edivm(i16* %arraydecay235.i, i16* %arraydecay15.i, %struct.LDPARMS* %rnd) nounwind
  %sub238.i = add i32 %conv223.i, 16383
  %add242.i = sub i32 %sub238.i, %conv237.i
  %sub243.i = sub i32 -4096, %nexp.4.lcssa.i
  br label %if.end245.i

if.end245.i:                                      ; preds = %if.then234.i, %if.then230.i, %if.end227.i
  %nexp.5.i = phi i32 [ %sub243.i, %if.then234.i ], [ %sub231.i, %if.then230.i ], [ %nexp.4.lcssa.i, %if.end227.i ]
  %esign.1.i = phi i32 [ -1, %if.then234.i ], [ -1, %if.then230.i ], [ 1, %if.end227.i ]
  %lexp.0.i = phi i32 [ %add242.i, %if.then234.i ], [ %conv223.i, %if.then230.i ], [ %conv223.i, %if.end227.i ]
  %68 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 0), align 2, !tbaa !5
  store i16 %68, i16* %arraydecay94.i, align 2, !tbaa !5
  %69 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 1), align 2, !tbaa !5
  store i16 %69, i16* %incdec.ptr1.i.i, align 2, !tbaa !5
  %70 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 2), align 2, !tbaa !5
  store i16 %70, i16* %incdec.ptr1.1.i.i, align 2, !tbaa !5
  %71 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 3), align 2, !tbaa !5
  store i16 %71, i16* %incdec.ptr1.2.i.i, align 2, !tbaa !5
  %72 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 4), align 2, !tbaa !5
  store i16 %72, i16* %incdec.ptr1.3.i.i, align 2, !tbaa !5
  %73 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 5), align 2, !tbaa !5
  store i16 %73, i16* %incdec.ptr1.4.i.i, align 2, !tbaa !5
  %74 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 6), align 2, !tbaa !5
  store i16 %74, i16* %incdec.ptr1.5.i.i, align 2, !tbaa !5
  %75 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 7), align 2, !tbaa !5
  store i16 %75, i16* %incdec.ptr1.6.i.i, align 2, !tbaa !5
  %76 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 8), align 2, !tbaa !5
  store i16 %76, i16* %incdec.ptr1.7.i.i, align 2, !tbaa !5
  %77 = load i16* getelementptr inbounds ([10 x i16]* @eone, i32 0, i32 9), align 2, !tbaa !5
  store i16 %77, i16* %incdec.ptr1.8.i.i, align 2, !tbaa !5
  br label %do.body.i

do.body.i:                                        ; preds = %if.end252.i, %if.end245.i
  %exp.3.i = phi i32 [ 1, %if.end245.i ], [ %add253.i, %if.end252.i ]
  %p.0.i = phi i16* [ getelementptr inbounds ([13 x [10 x i16]]* @etens, i32 0, i32 12, i32 0), %if.end245.i ], [ %add.ptr.i, %if.end252.i ]
  %and247.i = and i32 %exp.3.i, %nexp.5.i
  %tobool248.i = icmp eq i32 %and247.i, 0
  br i1 %tobool248.i, label %if.end252.i, label %if.then249.i

if.then249.i:                                     ; preds = %do.body.i
  call fastcc void @emul(i16* %p.0.i, i16* %arraydecay94.i, i16* %arraydecay94.i, %struct.LDPARMS* %rnd) nounwind
  br label %if.end252.i

if.end252.i:                                      ; preds = %if.then249.i, %do.body.i
  %add.ptr.i = getelementptr inbounds i16* %p.0.i, i32 -10
  %add253.i = shl nsw i32 %exp.3.i, 1
  %cmp254.i = icmp slt i32 %add253.i, 4097
  br i1 %cmp254.i, label %do.body.i, label %do.end.i

do.end.i:                                         ; preds = %if.end252.i
  %arraydecay257.i = getelementptr inbounds [13 x i16]* %tt.i, i32 0, i32 0
  call fastcc void @emovi(i16* %arraydecay94.i, i16* %arraydecay257.i) nounwind
  %cmp258.i = icmp slt i32 %esign.1.i, 0
  %arrayidx261.i = getelementptr inbounds [13 x i16]* %tt.i, i32 0, i32 1
  %78 = load i16* %arrayidx261.i, align 2, !tbaa !5
  %conv262.i = zext i16 %78 to i32
  br i1 %cmp258.i, label %if.then260.i, label %if.else268.i

if.then260.i:                                     ; preds = %do.end.i
  %call266.i = call fastcc i32 @edivm(i16* %arraydecay257.i, i16* %arraydecay15.i, %struct.LDPARMS* %rnd) nounwind
  %sub263.i = add i32 %lexp.0.i, 16383
  %add267.i = sub i32 %sub263.i, %conv262.i
  br label %if.then284.i

if.else268.i:                                     ; preds = %do.end.i
  %call274.i = call fastcc i32 @emulm(i16* %arraydecay257.i, i16* %arraydecay15.i, %struct.LDPARMS* %rnd) nounwind
  %add271.i = add i32 %lexp.0.i, -16382
  %sub275.i = add i32 %add271.i, %conv262.i
  br label %if.then284.i

if.then284.i:                                     ; preds = %if.else268.i, %if.then260.i, %if.end219.i
  %k.1.i = phi i32 [ %call266.i, %if.then260.i ], [ %call274.i, %if.else268.i ], [ 0, %if.end219.i ]
  %lexp.1.i = phi i32 [ %add267.i, %if.then260.i ], [ %sub275.i, %if.else268.i ], [ %conv223.i, %if.end219.i ]
  %sub285.i = add nsw i32 %lexp.1.i, -16256
  store i32 24, i32* %rndprc, align 4, !tbaa !3
  call fastcc void @emdnorm(i16* %arraydecay15.i, i32 %k.1.i, i32 0, i32 %sub285.i, i32 64, %struct.LDPARMS* %rnd) nounwind
  br label %aexit.i

aexit.i:                                          ; preds = %if.then284.i, %if.then217.i, %zero.i, %infinite.i, %error.i
  %nsign.3.i = phi i16 [ %nsign.1.i, %error.i ], [ %nsign.0.i, %infinite.i ], [ %nsign.0.i, %if.then217.i ], [ %nsign.0.i, %if.then284.i ], [ %nsign.0.i, %zero.i ]
  %s.8.i = phi i8* [ %s.2.i, %error.i ], [ %s.5.i, %infinite.i ], [ %s.7.i, %if.then217.i ], [ %s.7.i, %if.then284.i ], [ %s.6.i, %zero.i ]
  store i32 %7, i32* %rndprc, align 4, !tbaa !3
  store i16 %nsign.3.i, i16* %arraydecay15.i, align 2, !tbaa !5
  %sub.ptr.lhs.cast.i = ptrtoint i8* %s.8.i to i32
  %sub.ptr.rhs.cast.i = ptrtoint i8* %lstr.0.i to i32
  %sub.ptr.sub.i = sub i32 %lenldstr.0.lcssa.i, %sub.ptr.rhs.cast.i
  %add295.i = add i32 %sub.ptr.sub.i, %sub.ptr.lhs.cast.i
  %tobool296.i = icmp eq i32 %mflag.0.i, 0
  br i1 %tobool296.i, label %asctoeg.exit, label %if.then297.i

if.then297.i:                                     ; preds = %aexit.i
  call void @free(i8* %lstr.0.i) nounwind
  br label %asctoeg.exit

asctoeg.exit:                                     ; preds = %aexit.i, %if.then297.i
  call void @llvm.lifetime.end(i64 -1, i8* %0) nounwind
  call void @llvm.lifetime.end(i64 -1, i8* %1) nounwind
  call void @llvm.lifetime.end(i64 -1, i8* %2) nounwind
  call void @llvm.lifetime.end(i64 -1, i8* %3) nounwind
  %tobool = icmp eq i8** %se, null
  br i1 %tobool, label %if.end, label %if.then

if.then:                                          ; preds = %asctoeg.exit
  %add.ptr = getelementptr inbounds i8* %s, i32 %add295.i
  store i8* %add.ptr, i8** %se, align 4, !tbaa !4
  br label %if.end

if.end:                                           ; preds = %asctoeg.exit, %if.then
  ret double undef
}

declare i32 @strlen(i8*)

declare i8* @calloc(i32, i32)

define internal fastcc void @eaddm(i16* nocapture %x, i16* nocapture %y) nounwind {
entry:
  %add.ptr = getelementptr inbounds i16* %x, i32 12
  %add.ptr1 = getelementptr inbounds i16* %y, i32 12
  %0 = load i16* %add.ptr, align 2, !tbaa !5
  %conv = zext i16 %0 to i32
  %1 = load i16* %add.ptr1, align 2, !tbaa !5
  %conv2 = zext i16 %1 to i32
  %add3 = add i32 %conv, %conv2
  %and = lshr i32 %add3, 16
  %and.lobit = and i32 %and, 1
  %conv4 = trunc i32 %add3 to i16
  store i16 %conv4, i16* %add.ptr1, align 2, !tbaa !5
  %incdec.ptr = getelementptr inbounds i16* %x, i32 11
  %incdec.ptr5 = getelementptr inbounds i16* %y, i32 11
  %2 = load i16* %incdec.ptr, align 2, !tbaa !5
  %conv.1 = zext i16 %2 to i32
  %3 = load i16* %incdec.ptr5, align 2, !tbaa !5
  %conv2.1 = zext i16 %3 to i32
  %add.1 = add i32 %conv.1, %and.lobit
  %add3.1 = add i32 %add.1, %conv2.1
  %and.1 = lshr i32 %add3.1, 16
  %and.lobit.1 = and i32 %and.1, 1
  %conv4.1 = trunc i32 %add3.1 to i16
  store i16 %conv4.1, i16* %incdec.ptr5, align 2, !tbaa !5
  %incdec.ptr.1 = getelementptr inbounds i16* %x, i32 10
  %incdec.ptr5.1 = getelementptr inbounds i16* %y, i32 10
  %4 = load i16* %incdec.ptr.1, align 2, !tbaa !5
  %conv.2 = zext i16 %4 to i32
  %5 = load i16* %incdec.ptr5.1, align 2, !tbaa !5
  %conv2.2 = zext i16 %5 to i32
  %add.2 = add i32 %conv.2, %and.lobit.1
  %add3.2 = add i32 %add.2, %conv2.2
  %and.2 = lshr i32 %add3.2, 16
  %and.lobit.2 = and i32 %and.2, 1
  %conv4.2 = trunc i32 %add3.2 to i16
  store i16 %conv4.2, i16* %incdec.ptr5.1, align 2, !tbaa !5
  %incdec.ptr.2 = getelementptr inbounds i16* %x, i32 9
  %incdec.ptr5.2 = getelementptr inbounds i16* %y, i32 9
  %6 = load i16* %incdec.ptr.2, align 2, !tbaa !5
  %conv.3 = zext i16 %6 to i32
  %7 = load i16* %incdec.ptr5.2, align 2, !tbaa !5
  %conv2.3 = zext i16 %7 to i32
  %add.3 = add i32 %conv.3, %and.lobit.2
  %add3.3 = add i32 %add.3, %conv2.3
  %and.3 = lshr i32 %add3.3, 16
  %and.lobit.3 = and i32 %and.3, 1
  %conv4.3 = trunc i32 %add3.3 to i16
  store i16 %conv4.3, i16* %incdec.ptr5.2, align 2, !tbaa !5
  %incdec.ptr.3 = getelementptr inbounds i16* %x, i32 8
  %incdec.ptr5.3 = getelementptr inbounds i16* %y, i32 8
  %8 = load i16* %incdec.ptr.3, align 2, !tbaa !5
  %conv.4 = zext i16 %8 to i32
  %9 = load i16* %incdec.ptr5.3, align 2, !tbaa !5
  %conv2.4 = zext i16 %9 to i32
  %add.4 = add i32 %conv.4, %and.lobit.3
  %add3.4 = add i32 %add.4, %conv2.4
  %and.4 = lshr i32 %add3.4, 16
  %and.lobit.4 = and i32 %and.4, 1
  %conv4.4 = trunc i32 %add3.4 to i16
  store i16 %conv4.4, i16* %incdec.ptr5.3, align 2, !tbaa !5
  %incdec.ptr.4 = getelementptr inbounds i16* %x, i32 7
  %incdec.ptr5.4 = getelementptr inbounds i16* %y, i32 7
  %10 = load i16* %incdec.ptr.4, align 2, !tbaa !5
  %conv.5 = zext i16 %10 to i32
  %11 = load i16* %incdec.ptr5.4, align 2, !tbaa !5
  %conv2.5 = zext i16 %11 to i32
  %add.5 = add i32 %conv.5, %and.lobit.4
  %add3.5 = add i32 %add.5, %conv2.5
  %and.5 = lshr i32 %add3.5, 16
  %and.lobit.5 = and i32 %and.5, 1
  %conv4.5 = trunc i32 %add3.5 to i16
  store i16 %conv4.5, i16* %incdec.ptr5.4, align 2, !tbaa !5
  %incdec.ptr.5 = getelementptr inbounds i16* %x, i32 6
  %incdec.ptr5.5 = getelementptr inbounds i16* %y, i32 6
  %12 = load i16* %incdec.ptr.5, align 2, !tbaa !5
  %conv.6 = zext i16 %12 to i32
  %13 = load i16* %incdec.ptr5.5, align 2, !tbaa !5
  %conv2.6 = zext i16 %13 to i32
  %add.6 = add i32 %conv.6, %and.lobit.5
  %add3.6 = add i32 %add.6, %conv2.6
  %and.6 = lshr i32 %add3.6, 16
  %and.lobit.6 = and i32 %and.6, 1
  %conv4.6 = trunc i32 %add3.6 to i16
  store i16 %conv4.6, i16* %incdec.ptr5.5, align 2, !tbaa !5
  %incdec.ptr.6 = getelementptr inbounds i16* %x, i32 5
  %incdec.ptr5.6 = getelementptr inbounds i16* %y, i32 5
  %14 = load i16* %incdec.ptr.6, align 2, !tbaa !5
  %conv.7 = zext i16 %14 to i32
  %15 = load i16* %incdec.ptr5.6, align 2, !tbaa !5
  %conv2.7 = zext i16 %15 to i32
  %add.7 = add i32 %conv.7, %and.lobit.6
  %add3.7 = add i32 %add.7, %conv2.7
  %and.7 = lshr i32 %add3.7, 16
  %and.lobit.7 = and i32 %and.7, 1
  %conv4.7 = trunc i32 %add3.7 to i16
  store i16 %conv4.7, i16* %incdec.ptr5.6, align 2, !tbaa !5
  %incdec.ptr.7 = getelementptr inbounds i16* %x, i32 4
  %incdec.ptr5.7 = getelementptr inbounds i16* %y, i32 4
  %16 = load i16* %incdec.ptr.7, align 2, !tbaa !5
  %conv.8 = zext i16 %16 to i32
  %17 = load i16* %incdec.ptr5.7, align 2, !tbaa !5
  %conv2.8 = zext i16 %17 to i32
  %add.8 = add i32 %conv.8, %and.lobit.7
  %add3.8 = add i32 %add.8, %conv2.8
  %and.8 = lshr i32 %add3.8, 16
  %and.lobit.8 = and i32 %and.8, 1
  %conv4.8 = trunc i32 %add3.8 to i16
  store i16 %conv4.8, i16* %incdec.ptr5.7, align 2, !tbaa !5
  %incdec.ptr.8 = getelementptr inbounds i16* %x, i32 3
  %incdec.ptr5.8 = getelementptr inbounds i16* %y, i32 3
  %18 = load i16* %incdec.ptr.8, align 2, !tbaa !5
  %conv.9 = zext i16 %18 to i32
  %19 = load i16* %incdec.ptr5.8, align 2, !tbaa !5
  %conv2.9 = zext i16 %19 to i32
  %add.9 = add i32 %conv.9, %and.lobit.8
  %add3.9 = add i32 %add.9, %conv2.9
  %and.9 = lshr i32 %add3.9, 16
  %and.lobit.9 = and i32 %and.9, 1
  %conv4.9 = trunc i32 %add3.9 to i16
  store i16 %conv4.9, i16* %incdec.ptr5.8, align 2, !tbaa !5
  %incdec.ptr.9 = getelementptr inbounds i16* %x, i32 2
  %incdec.ptr5.9 = getelementptr inbounds i16* %y, i32 2
  %20 = load i16* %incdec.ptr.9, align 2, !tbaa !5
  %conv.10 = zext i16 %20 to i32
  %21 = load i16* %incdec.ptr5.9, align 2, !tbaa !5
  %conv2.10 = zext i16 %21 to i32
  %add.10 = add i32 %conv.10, %and.lobit.9
  %add3.10 = add i32 %add.10, %conv2.10
  %conv4.10 = trunc i32 %add3.10 to i16
  store i16 %conv4.10, i16* %incdec.ptr5.9, align 2, !tbaa !5
  ret void
}

define internal fastcc void @enan(i16* nocapture %nan, i32 %size) nounwind {
entry:
  switch i32 %size, label %for.end26 [
    i32 113, label %sw.epilog
    i32 64, label %sw.bb1
    i32 53, label %sw.bb2
    i32 24, label %sw.bb3
    i32 144, label %for.cond.preheader
    i32 208, label %sw.bb7
  ]

for.cond.preheader:                               ; preds = %entry
  %incdec.ptr42 = getelementptr inbounds i16* %nan, i32 1
  %scevgep = getelementptr i16* %nan, i32 9
  store i16 0, i16* %nan, align 2, !tbaa !5
  %incdec.ptr = getelementptr inbounds i16* %nan, i32 2
  store i16 0, i16* %incdec.ptr42, align 2, !tbaa !5
  %incdec.ptr.1 = getelementptr inbounds i16* %nan, i32 3
  store i16 0, i16* %incdec.ptr, align 2, !tbaa !5
  %incdec.ptr.2 = getelementptr inbounds i16* %nan, i32 4
  store i16 0, i16* %incdec.ptr.1, align 2, !tbaa !5
  %incdec.ptr.3 = getelementptr inbounds i16* %nan, i32 5
  store i16 0, i16* %incdec.ptr.2, align 2, !tbaa !5
  %incdec.ptr.4 = getelementptr inbounds i16* %nan, i32 6
  store i16 0, i16* %incdec.ptr.3, align 2, !tbaa !5
  %incdec.ptr.5 = getelementptr inbounds i16* %nan, i32 7
  store i16 0, i16* %incdec.ptr.4, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5, align 2, !tbaa !5
  %scevgep49 = getelementptr i16* %nan, i32 8
  store i16 -16384, i16* %scevgep49, align 2, !tbaa !5
  store i16 32767, i16* %scevgep, align 2, !tbaa !5
  br label %for.end26

sw.bb1:                                           ; preds = %entry
  br label %sw.epilog

sw.bb2:                                           ; preds = %entry
  br label %sw.epilog

sw.bb3:                                           ; preds = %entry
  br label %sw.epilog

sw.bb7:                                           ; preds = %entry
  %incdec.ptr8 = getelementptr inbounds i16* %nan, i32 1
  store i16 0, i16* %nan, align 2, !tbaa !5
  %incdec.ptr9 = getelementptr inbounds i16* %nan, i32 2
  store i16 32767, i16* %incdec.ptr8, align 2, !tbaa !5
  %incdec.ptr10 = getelementptr inbounds i16* %nan, i32 3
  store i16 0, i16* %incdec.ptr9, align 2, !tbaa !5
  %incdec.ptr11 = getelementptr inbounds i16* %nan, i32 4
  store i16 -16384, i16* %incdec.ptr10, align 2, !tbaa !5
  %incdec.ptr15 = getelementptr inbounds i16* %nan, i32 5
  store i16 0, i16* %incdec.ptr11, align 2, !tbaa !5
  %incdec.ptr15.1 = getelementptr inbounds i16* %nan, i32 6
  store i16 0, i16* %incdec.ptr15, align 2, !tbaa !5
  %incdec.ptr15.2 = getelementptr inbounds i16* %nan, i32 7
  store i16 0, i16* %incdec.ptr15.1, align 2, !tbaa !5
  %incdec.ptr15.3 = getelementptr inbounds i16* %nan, i32 8
  store i16 0, i16* %incdec.ptr15.2, align 2, !tbaa !5
  %incdec.ptr15.4 = getelementptr inbounds i16* %nan, i32 9
  store i16 0, i16* %incdec.ptr15.3, align 2, !tbaa !5
  %incdec.ptr15.5 = getelementptr inbounds i16* %nan, i32 10
  store i16 0, i16* %incdec.ptr15.4, align 2, !tbaa !5
  %incdec.ptr15.6 = getelementptr inbounds i16* %nan, i32 11
  store i16 0, i16* %incdec.ptr15.5, align 2, !tbaa !5
  %incdec.ptr15.7 = getelementptr inbounds i16* %nan, i32 12
  store i16 0, i16* %incdec.ptr15.6, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr15.7, align 2, !tbaa !5
  br label %for.end26

sw.epilog:                                        ; preds = %entry, %sw.bb3, %sw.bb2, %sw.bb1
  %n.0 = phi i32 [ 2, %sw.bb3 ], [ 4, %sw.bb2 ], [ 6, %sw.bb1 ], [ 8, %entry ]
  %p.0 = phi i16* [ getelementptr inbounds ([2 x i16]* @nan24, i32 0, i32 0), %sw.bb3 ], [ getelementptr inbounds ([4 x i16]* @nan53, i32 0, i32 0), %sw.bb2 ], [ getelementptr inbounds ([6 x i16]* @nan64, i32 0, i32 0), %sw.bb1 ], [ getelementptr inbounds ([8 x i16]* @nan113, i32 0, i32 0), %entry ]
  br label %for.body21

for.body21:                                       ; preds = %sw.epilog, %for.body21
  %p.141 = phi i16* [ %p.0, %sw.epilog ], [ %incdec.ptr22, %for.body21 ]
  %i.240 = phi i32 [ 0, %sw.epilog ], [ %inc25, %for.body21 ]
  %nan.addr.239 = phi i16* [ %nan, %sw.epilog ], [ %incdec.ptr23, %for.body21 ]
  %incdec.ptr22 = getelementptr inbounds i16* %p.141, i32 1
  %0 = load i16* %p.141, align 2, !tbaa !5
  %incdec.ptr23 = getelementptr inbounds i16* %nan.addr.239, i32 1
  store i16 %0, i16* %nan.addr.239, align 2, !tbaa !5
  %inc25 = add nsw i32 %i.240, 1
  %cmp20 = icmp slt i32 %inc25, %n.0
  br i1 %cmp20, label %for.body21, label %for.end26

for.end26:                                        ; preds = %for.body21, %sw.bb7, %entry, %for.cond.preheader
  ret void
}

define internal fastcc i32 @enormlz(i16* %x) nounwind {
entry:
  %arrayidx = getelementptr inbounds i16* %x, i32 2
  %0 = load i16* %arrayidx, align 2, !tbaa !5
  %cmp = icmp eq i16 %0, 0
  br i1 %cmp, label %if.end, label %normdn

if.end:                                           ; preds = %entry
  %incdec.ptr = getelementptr inbounds i16* %x, i32 3
  %1 = load i16* %incdec.ptr, align 2, !tbaa !5
  %tobool = icmp slt i16 %1, 0
  br i1 %tobool, label %return, label %while.cond.preheader

while.cond.preheader:                             ; preds = %if.end
  %cmp6112 = icmp eq i16 %1, 0
  br i1 %cmp6112, label %while.body.lr.ph, label %while.cond12.preheader

while.body.lr.ph:                                 ; preds = %while.cond.preheader
  %incdec.ptr.i = getelementptr inbounds i16* %x, i32 4
  %incdec.ptr.1.i = getelementptr inbounds i16* %x, i32 5
  %incdec.ptr.2.i = getelementptr inbounds i16* %x, i32 6
  %incdec.ptr.3.i = getelementptr inbounds i16* %x, i32 7
  %incdec.ptr.4.i = getelementptr inbounds i16* %x, i32 8
  %incdec.ptr.5.i = getelementptr inbounds i16* %x, i32 9
  %incdec.ptr.6.i = getelementptr inbounds i16* %x, i32 10
  %incdec.ptr.7.i = getelementptr inbounds i16* %x, i32 11
  %incdec.ptr.8.i = getelementptr inbounds i16* %x, i32 12
  %incdec.ptr.i.promoted = load i16* %incdec.ptr.i, align 2
  %incdec.ptr.1.i.promoted = load i16* %incdec.ptr.1.i, align 2
  %incdec.ptr.2.i.promoted = load i16* %incdec.ptr.2.i, align 2
  %incdec.ptr.3.i.promoted = load i16* %incdec.ptr.3.i, align 2
  %incdec.ptr.4.i.promoted = load i16* %incdec.ptr.4.i, align 2
  %incdec.ptr.5.i.promoted = load i16* %incdec.ptr.5.i, align 2
  %incdec.ptr.6.i.promoted = load i16* %incdec.ptr.6.i, align 2
  %incdec.ptr.7.i.promoted = load i16* %incdec.ptr.7.i, align 2
  %incdec.ptr.8.i.promoted = load i16* %incdec.ptr.8.i, align 2
  br label %while.body

while.condthread-pre-split:                       ; preds = %while.body
  %cmp6 = icmp eq i16 %11, 0
  br i1 %cmp6, label %while.body, label %while.cond.while.cond12.preheader_crit_edge

while.cond.while.cond12.preheader_crit_edge:      ; preds = %while.condthread-pre-split
  store i16 0, i16* %arrayidx, align 2
  store i16 %10, i16* %incdec.ptr.i, align 2
  store i16 %11, i16* %incdec.ptr, align 2
  store i16 %9, i16* %incdec.ptr.1.i, align 2
  store i16 %8, i16* %incdec.ptr.2.i, align 2
  store i16 %7, i16* %incdec.ptr.3.i, align 2
  store i16 %6, i16* %incdec.ptr.4.i, align 2
  store i16 %5, i16* %incdec.ptr.5.i, align 2
  store i16 %4, i16* %incdec.ptr.6.i, align 2
  store i16 %3, i16* %incdec.ptr.7.i, align 2
  store i16 0, i16* %incdec.ptr.8.i, align 2
  br label %while.cond12.preheader

while.cond12.preheader:                           ; preds = %while.cond.while.cond12.preheader_crit_edge, %while.cond.preheader
  %2 = phi i16 [ %11, %while.cond.while.cond12.preheader_crit_edge ], [ %1, %while.cond.preheader ]
  %sc.0.lcssa = phi i32 [ %add, %while.cond.while.cond12.preheader_crit_edge ], [ 0, %while.cond.preheader ]
  %cmp15106 = icmp ult i16 %2, 256
  br i1 %cmp15106, label %while.body17, label %while.cond20.preheader

while.body:                                       ; preds = %while.body.lr.ph, %while.condthread-pre-split
  %3 = phi i16 [ %incdec.ptr.8.i.promoted, %while.body.lr.ph ], [ 0, %while.condthread-pre-split ]
  %4 = phi i16 [ %incdec.ptr.7.i.promoted, %while.body.lr.ph ], [ %3, %while.condthread-pre-split ]
  %5 = phi i16 [ %incdec.ptr.6.i.promoted, %while.body.lr.ph ], [ %4, %while.condthread-pre-split ]
  %6 = phi i16 [ %incdec.ptr.5.i.promoted, %while.body.lr.ph ], [ %5, %while.condthread-pre-split ]
  %7 = phi i16 [ %incdec.ptr.4.i.promoted, %while.body.lr.ph ], [ %6, %while.condthread-pre-split ]
  %8 = phi i16 [ %incdec.ptr.3.i.promoted, %while.body.lr.ph ], [ %7, %while.condthread-pre-split ]
  %9 = phi i16 [ %incdec.ptr.2.i.promoted, %while.body.lr.ph ], [ %8, %while.condthread-pre-split ]
  %10 = phi i16 [ %incdec.ptr.1.i.promoted, %while.body.lr.ph ], [ %9, %while.condthread-pre-split ]
  %11 = phi i16 [ %incdec.ptr.i.promoted, %while.body.lr.ph ], [ %10, %while.condthread-pre-split ]
  %sc.0113 = phi i32 [ 0, %while.body.lr.ph ], [ %add, %while.condthread-pre-split ]
  %add = add nsw i32 %sc.0113, 16
  %cmp8 = icmp sgt i32 %add, 144
  br i1 %cmp8, label %return.loopexit110, label %while.condthread-pre-split

while.cond20.preheader:                           ; preds = %while.body17, %while.cond12.preheader
  %.lcssa = phi i16 [ %2, %while.cond12.preheader ], [ %12, %while.body17 ]
  %sc.1.lcssa = phi i32 [ %sc.0.lcssa, %while.cond12.preheader ], [ %add18, %while.body17 ]
  %cmp23104 = icmp sgt i16 %.lcssa, -1
  br i1 %cmp23104, label %while.body25.lr.ph, label %return

while.body25.lr.ph:                               ; preds = %while.cond20.preheader
  %add.ptr.i84 = getelementptr inbounds i16* %x, i32 12
  br label %while.body25

while.body17:                                     ; preds = %while.cond12.preheader, %while.body17
  %sc.1107 = phi i32 [ %add18, %while.body17 ], [ %sc.0.lcssa, %while.cond12.preheader ]
  tail call fastcc void @eshup8(i16* %x)
  %add18 = add nsw i32 %sc.1107, 8
  %12 = load i16* %incdec.ptr, align 2, !tbaa !5
  %cmp15 = icmp ult i16 %12, 256
  br i1 %cmp15, label %while.body17, label %while.cond20.preheader

while.cond20thread-pre-split:                     ; preds = %eshup1.exit
  %.pr103 = load i16* %incdec.ptr, align 2, !tbaa !5
  %cmp23 = icmp sgt i16 %.pr103, -1
  br i1 %cmp23, label %while.body25, label %return

while.body25:                                     ; preds = %while.body25.lr.ph, %while.cond20thread-pre-split
  %sc.2105 = phi i32 [ %sc.1.lcssa, %while.body25.lr.ph ], [ %add26, %while.cond20thread-pre-split ]
  br label %for.body.i89

for.body.i89:                                     ; preds = %if.end.i102.for.body.i89_crit_edge, %while.body25
  %i.025.i85 = phi i32 [ 3, %while.body25 ], [ %phitmp161, %if.end.i102.for.body.i89_crit_edge ]
  %bits.024.i86 = phi i16 [ 0, %while.body25 ], [ %conv15.i, %if.end.i102.for.body.i89_crit_edge ]
  %x.addr.023.i87 = phi i16* [ %add.ptr.i84, %while.body25 ], [ %incdec.ptr.i99, %if.end.i102.for.body.i89_crit_edge ]
  %13 = load i16* %x.addr.023.i87, align 2, !tbaa !5
  %tobool.i88 = icmp slt i16 %13, 0
  br i1 %tobool.i88, label %if.then.i93, label %if.end.i102

if.then.i93:                                      ; preds = %for.body.i89
  %conv1.i90 = zext i16 %bits.024.i86 to i32
  %or.i91 = or i32 %conv1.i90, 1
  %conv2.i92 = trunc i32 %or.i91 to i16
  br label %if.end.i102

if.end.i102:                                      ; preds = %if.then.i93, %for.body.i89
  %bits.1.i94 = phi i16 [ %conv2.i92, %if.then.i93 ], [ %bits.024.i86, %for.body.i89 ]
  %conv3.i = zext i16 %13 to i32
  %shl.i95 = shl nuw nsw i32 %conv3.i, 1
  %conv5.i96 = zext i16 %bits.1.i94 to i32
  %and6.i97 = lshr i32 %conv5.i96, 1
  %and6.lobit.i = and i32 %and6.i97, 1
  %storemerge.in.i = or i32 %and6.lobit.i, %shl.i95
  %storemerge.i98 = trunc i32 %storemerge.in.i to i16
  store i16 %storemerge.i98, i16* %x.addr.023.i87, align 2
  %exitcond.i101 = icmp eq i32 %i.025.i85, 13
  br i1 %exitcond.i101, label %eshup1.exit, label %if.end.i102.for.body.i89_crit_edge

if.end.i102.for.body.i89_crit_edge:               ; preds = %if.end.i102
  %shl14.i = shl nuw nsw i32 %conv5.i96, 1
  %incdec.ptr.i99 = getelementptr inbounds i16* %x.addr.023.i87, i32 -1
  %conv15.i = trunc i32 %shl14.i to i16
  %phitmp161 = add i32 %i.025.i85, 1
  br label %for.body.i89

eshup1.exit:                                      ; preds = %if.end.i102
  %add26 = add nsw i32 %sc.2105, 1
  %cmp27 = icmp sgt i32 %add26, 160
  br i1 %cmp27, label %return, label %while.cond20thread-pre-split

normdn:                                           ; preds = %entry
  %tobool34 = icmp ugt i16 %0, 255
  br i1 %tobool34, label %if.then35, label %while.cond37

if.then35:                                        ; preds = %normdn
  %conv.i = zext i16 %0 to i32
  %shl.i74 = shl nuw nsw i32 %conv.i, 8
  %shr12.i = lshr i16 %0, 8
  store i16 %shr12.i, i16* %arrayidx, align 2, !tbaa !5
  %incdec.ptr.i75 = getelementptr inbounds i16* %x, i32 3
  %14 = load i16* %incdec.ptr.i75, align 2, !tbaa !5
  %conv.1.i = zext i16 %14 to i32
  %shl.1.i = shl nuw nsw i32 %conv.1.i, 8
  %shr12.1.i = lshr i16 %14, 8
  %conv5.1.i = zext i16 %shr12.1.i to i32
  %or.1.i = or i32 %conv5.1.i, %shl.i74
  %conv6.1.i = trunc i32 %or.1.i to i16
  store i16 %conv6.1.i, i16* %incdec.ptr.i75, align 2, !tbaa !5
  %incdec.ptr.1.i76 = getelementptr inbounds i16* %x, i32 4
  %15 = load i16* %incdec.ptr.1.i76, align 2, !tbaa !5
  %conv.2.i = zext i16 %15 to i32
  %shl.2.i = shl nuw nsw i32 %conv.2.i, 8
  %shr12.2.i = lshr i16 %15, 8
  %conv5.2.i = zext i16 %shr12.2.i to i32
  %or.2.i = or i32 %conv5.2.i, %shl.1.i
  %conv6.2.i = trunc i32 %or.2.i to i16
  store i16 %conv6.2.i, i16* %incdec.ptr.1.i76, align 2, !tbaa !5
  %incdec.ptr.2.i77 = getelementptr inbounds i16* %x, i32 5
  %16 = load i16* %incdec.ptr.2.i77, align 2, !tbaa !5
  %conv.3.i = zext i16 %16 to i32
  %shl.3.i = shl nuw nsw i32 %conv.3.i, 8
  %shr12.3.i = lshr i16 %16, 8
  %conv5.3.i = zext i16 %shr12.3.i to i32
  %or.3.i = or i32 %conv5.3.i, %shl.2.i
  %conv6.3.i = trunc i32 %or.3.i to i16
  store i16 %conv6.3.i, i16* %incdec.ptr.2.i77, align 2, !tbaa !5
  %incdec.ptr.3.i78 = getelementptr inbounds i16* %x, i32 6
  %17 = load i16* %incdec.ptr.3.i78, align 2, !tbaa !5
  %conv.4.i = zext i16 %17 to i32
  %shl.4.i = shl nuw nsw i32 %conv.4.i, 8
  %shr12.4.i = lshr i16 %17, 8
  %conv5.4.i = zext i16 %shr12.4.i to i32
  %or.4.i = or i32 %conv5.4.i, %shl.3.i
  %conv6.4.i = trunc i32 %or.4.i to i16
  store i16 %conv6.4.i, i16* %incdec.ptr.3.i78, align 2, !tbaa !5
  %incdec.ptr.4.i79 = getelementptr inbounds i16* %x, i32 7
  %18 = load i16* %incdec.ptr.4.i79, align 2, !tbaa !5
  %conv.5.i = zext i16 %18 to i32
  %shl.5.i = shl nuw nsw i32 %conv.5.i, 8
  %shr12.5.i = lshr i16 %18, 8
  %conv5.5.i = zext i16 %shr12.5.i to i32
  %or.5.i = or i32 %conv5.5.i, %shl.4.i
  %conv6.5.i = trunc i32 %or.5.i to i16
  store i16 %conv6.5.i, i16* %incdec.ptr.4.i79, align 2, !tbaa !5
  %incdec.ptr.5.i80 = getelementptr inbounds i16* %x, i32 8
  %19 = load i16* %incdec.ptr.5.i80, align 2, !tbaa !5
  %conv.6.i = zext i16 %19 to i32
  %shl.6.i = shl nuw nsw i32 %conv.6.i, 8
  %shr12.6.i = lshr i16 %19, 8
  %conv5.6.i = zext i16 %shr12.6.i to i32
  %or.6.i = or i32 %conv5.6.i, %shl.5.i
  %conv6.6.i = trunc i32 %or.6.i to i16
  store i16 %conv6.6.i, i16* %incdec.ptr.5.i80, align 2, !tbaa !5
  %incdec.ptr.6.i81 = getelementptr inbounds i16* %x, i32 9
  %20 = load i16* %incdec.ptr.6.i81, align 2, !tbaa !5
  %conv.7.i = zext i16 %20 to i32
  %shl.7.i = shl nuw nsw i32 %conv.7.i, 8
  %shr12.7.i = lshr i16 %20, 8
  %conv5.7.i = zext i16 %shr12.7.i to i32
  %or.7.i = or i32 %conv5.7.i, %shl.6.i
  %conv6.7.i = trunc i32 %or.7.i to i16
  store i16 %conv6.7.i, i16* %incdec.ptr.6.i81, align 2, !tbaa !5
  %incdec.ptr.7.i82 = getelementptr inbounds i16* %x, i32 10
  %21 = load i16* %incdec.ptr.7.i82, align 2, !tbaa !5
  %conv.8.i = zext i16 %21 to i32
  %shl.8.i = shl nuw nsw i32 %conv.8.i, 8
  %shr12.8.i = lshr i16 %21, 8
  %conv5.8.i = zext i16 %shr12.8.i to i32
  %or.8.i = or i32 %conv5.8.i, %shl.7.i
  %conv6.8.i = trunc i32 %or.8.i to i16
  store i16 %conv6.8.i, i16* %incdec.ptr.7.i82, align 2, !tbaa !5
  %incdec.ptr.8.i83 = getelementptr inbounds i16* %x, i32 11
  %22 = load i16* %incdec.ptr.8.i83, align 2, !tbaa !5
  %conv.9.i = zext i16 %22 to i32
  %shl.9.i = shl nuw nsw i32 %conv.9.i, 8
  %shr12.9.i = lshr i16 %22, 8
  %conv5.9.i = zext i16 %shr12.9.i to i32
  %or.9.i = or i32 %conv5.9.i, %shl.8.i
  %conv6.9.i = trunc i32 %or.9.i to i16
  store i16 %conv6.9.i, i16* %incdec.ptr.8.i83, align 2, !tbaa !5
  %incdec.ptr.9.i = getelementptr inbounds i16* %x, i32 12
  %23 = load i16* %incdec.ptr.9.i, align 2, !tbaa !5
  %shr12.10.i = lshr i16 %23, 8
  %conv5.10.i = zext i16 %shr12.10.i to i32
  %or.10.i = or i32 %conv5.10.i, %shl.9.i
  %conv6.10.i = trunc i32 %or.10.i to i16
  store i16 %conv6.10.i, i16* %incdec.ptr.9.i, align 2, !tbaa !5
  br label %while.cond37

while.cond37:                                     ; preds = %normdn, %if.then35, %eshdn1.exit.while.cond37_crit_edge
  %24 = phi i16 [ %.pre, %eshdn1.exit.while.cond37_crit_edge ], [ %0, %normdn ], [ %shr12.i, %if.then35 ]
  %sc.3 = phi i32 [ %sub42, %eshdn1.exit.while.cond37_crit_edge ], [ 0, %normdn ], [ -8, %if.then35 ]
  %cmp39 = icmp eq i16 %24, 0
  br i1 %cmp39, label %return, label %for.body.i

for.body.i:                                       ; preds = %while.cond37, %if.end12.i.for.body.i_crit_edge
  %25 = phi i16 [ %.pre160, %if.end12.i.for.body.i_crit_edge ], [ %24, %while.cond37 ]
  %i.025.i = phi i32 [ %phitmp, %if.end12.i.for.body.i_crit_edge ], [ 3, %while.cond37 ]
  %bits.024.i = phi i16 [ %conv14.i, %if.end12.i.for.body.i_crit_edge ], [ 0, %while.cond37 ]
  %x.addr.023.i = phi i16* [ %incdec.ptr.i72, %if.end12.i.for.body.i_crit_edge ], [ %arrayidx, %while.cond37 ]
  %and.i = and i16 %25, 1
  %tobool.i = icmp eq i16 %and.i, 0
  br i1 %tobool.i, label %if.end.i, label %if.then.i

if.then.i:                                        ; preds = %for.body.i
  %conv1.i = zext i16 %bits.024.i to i32
  %or.i = or i32 %conv1.i, 1
  %conv2.i = trunc i32 %or.i to i16
  br label %if.end.i

if.end.i:                                         ; preds = %if.then.i, %for.body.i
  %bits.1.i = phi i16 [ %conv2.i, %if.then.i ], [ %bits.024.i, %for.body.i ]
  %shr22.i = lshr i16 %25, 1
  %conv5.i = zext i16 %bits.1.i to i32
  %and6.i = and i32 %conv5.i, 2
  %tobool7.i = icmp eq i32 %and6.i, 0
  br i1 %tobool7.i, label %if.end12.i, label %if.then8.i

if.then8.i:                                       ; preds = %if.end.i
  %conv9.i = zext i16 %shr22.i to i32
  %or10.i = or i32 %conv9.i, 32768
  %conv11.i = trunc i32 %or10.i to i16
  br label %if.end12.i

if.end12.i:                                       ; preds = %if.then8.i, %if.end.i
  %storemerge.i = phi i16 [ %conv11.i, %if.then8.i ], [ %shr22.i, %if.end.i ]
  store i16 %storemerge.i, i16* %x.addr.023.i, align 2
  %incdec.ptr.i72 = getelementptr inbounds i16* %x.addr.023.i, i32 1
  %exitcond.i = icmp eq i32 %i.025.i, 13
  br i1 %exitcond.i, label %eshdn1.exit, label %if.end12.i.for.body.i_crit_edge

if.end12.i.for.body.i_crit_edge:                  ; preds = %if.end12.i
  %shl.i = shl nuw nsw i32 %conv5.i, 1
  %conv14.i = trunc i32 %shl.i to i16
  %.pre160 = load i16* %incdec.ptr.i72, align 2, !tbaa !5
  %phitmp = add i32 %i.025.i, 1
  br label %for.body.i

eshdn1.exit:                                      ; preds = %if.end12.i
  %sub42 = add nsw i32 %sc.3, -1
  %cmp43 = icmp slt i32 %sub42, -144
  br i1 %cmp43, label %return, label %eshdn1.exit.while.cond37_crit_edge

eshdn1.exit.while.cond37_crit_edge:               ; preds = %eshdn1.exit
  %.pre = load i16* %arrayidx, align 2, !tbaa !5
  br label %while.cond37

return.loopexit110:                               ; preds = %while.body
  store i16 0, i16* %arrayidx, align 2
  store i16 %10, i16* %incdec.ptr.i, align 2
  store i16 %11, i16* %incdec.ptr, align 2
  store i16 %9, i16* %incdec.ptr.1.i, align 2
  store i16 %8, i16* %incdec.ptr.2.i, align 2
  store i16 %7, i16* %incdec.ptr.3.i, align 2
  store i16 %6, i16* %incdec.ptr.4.i, align 2
  store i16 %5, i16* %incdec.ptr.5.i, align 2
  store i16 %4, i16* %incdec.ptr.6.i, align 2
  store i16 %3, i16* %incdec.ptr.7.i, align 2
  store i16 0, i16* %incdec.ptr.8.i, align 2
  br label %return

return:                                           ; preds = %while.cond37, %eshdn1.exit, %while.cond20.preheader, %eshup1.exit, %while.cond20thread-pre-split, %return.loopexit110, %if.end
  %retval.0 = phi i32 [ 0, %if.end ], [ %add, %return.loopexit110 ], [ %sc.1.lcssa, %while.cond20.preheader ], [ %add26, %eshup1.exit ], [ %add26, %while.cond20thread-pre-split ], [ %sc.3, %while.cond37 ], [ %sub42, %eshdn1.exit ]
  ret i32 %retval.0
}

define internal fastcc void @emdnorm(i16* %s, i32 %lost, i32 %subflg, i32 %exp, i32 %rcntrl, %struct.LDPARMS* %ldp) nounwind {
entry:
  %call = tail call fastcc i32 @enormlz(i16* %s)
  %sub = sub nsw i32 %exp, %call
  %cmp = icmp sgt i32 %call, 144
  %cmp1 = icmp slt i32 %sub, 32767
  %or.cond = and i1 %cmp, %cmp1
  br i1 %or.cond, label %if.then, label %if.end

if.then:                                          ; preds = %entry
  %xi.addr.06.i = getelementptr inbounds i16* %s, i32 1
  store i16 0, i16* %xi.addr.06.i, align 2, !tbaa !5
  %xi.addr.06.1.i = getelementptr inbounds i16* %s, i32 2
  store i16 0, i16* %xi.addr.06.1.i, align 2, !tbaa !5
  %xi.addr.06.2.i = getelementptr inbounds i16* %s, i32 3
  store i16 0, i16* %xi.addr.06.2.i, align 2, !tbaa !5
  %xi.addr.06.3.i = getelementptr inbounds i16* %s, i32 4
  store i16 0, i16* %xi.addr.06.3.i, align 2, !tbaa !5
  %xi.addr.06.4.i = getelementptr inbounds i16* %s, i32 5
  store i16 0, i16* %xi.addr.06.4.i, align 2, !tbaa !5
  %xi.addr.06.5.i = getelementptr inbounds i16* %s, i32 6
  store i16 0, i16* %xi.addr.06.5.i, align 2, !tbaa !5
  %xi.addr.06.6.i = getelementptr inbounds i16* %s, i32 7
  store i16 0, i16* %xi.addr.06.6.i, align 2, !tbaa !5
  %xi.addr.06.7.i = getelementptr inbounds i16* %s, i32 8
  store i16 0, i16* %xi.addr.06.7.i, align 2, !tbaa !5
  %xi.addr.06.8.i = getelementptr inbounds i16* %s, i32 9
  store i16 0, i16* %xi.addr.06.8.i, align 2, !tbaa !5
  %xi.addr.06.9.i = getelementptr inbounds i16* %s, i32 10
  store i16 0, i16* %xi.addr.06.9.i, align 2, !tbaa !5
  %xi.addr.06.10.i = getelementptr inbounds i16* %s, i32 11
  store i16 0, i16* %xi.addr.06.10.i, align 2, !tbaa !5
  %xi.addr.06.11.i = getelementptr inbounds i16* %s, i32 12
  store i16 0, i16* %xi.addr.06.11.i, align 2, !tbaa !5
  br label %if.end166

if.end:                                           ; preds = %entry
  %cmp2 = icmp slt i32 %sub, 0
  br i1 %cmp2, label %if.then3, label %if.end10

if.then3:                                         ; preds = %if.end
  %cmp4 = icmp sgt i32 %sub, -145
  br i1 %cmp4, label %if.then5, label %if.else

if.then5:                                         ; preds = %if.then3
  %call6 = tail call fastcc i32 @eshift(i16* %s, i32 %sub)
  %tobool = icmp eq i32 %call6, 0
  %lost. = select i1 %tobool, i32 %lost, i32 1
  br label %if.end10

if.else:                                          ; preds = %if.then3
  %xi.addr.06.i287 = getelementptr inbounds i16* %s, i32 1
  store i16 0, i16* %xi.addr.06.i287, align 2, !tbaa !5
  %xi.addr.06.1.i288 = getelementptr inbounds i16* %s, i32 2
  store i16 0, i16* %xi.addr.06.1.i288, align 2, !tbaa !5
  %xi.addr.06.2.i289 = getelementptr inbounds i16* %s, i32 3
  store i16 0, i16* %xi.addr.06.2.i289, align 2, !tbaa !5
  %xi.addr.06.3.i290 = getelementptr inbounds i16* %s, i32 4
  store i16 0, i16* %xi.addr.06.3.i290, align 2, !tbaa !5
  %xi.addr.06.4.i291 = getelementptr inbounds i16* %s, i32 5
  store i16 0, i16* %xi.addr.06.4.i291, align 2, !tbaa !5
  %xi.addr.06.5.i292 = getelementptr inbounds i16* %s, i32 6
  store i16 0, i16* %xi.addr.06.5.i292, align 2, !tbaa !5
  %xi.addr.06.6.i293 = getelementptr inbounds i16* %s, i32 7
  store i16 0, i16* %xi.addr.06.6.i293, align 2, !tbaa !5
  %xi.addr.06.7.i294 = getelementptr inbounds i16* %s, i32 8
  store i16 0, i16* %xi.addr.06.7.i294, align 2, !tbaa !5
  %xi.addr.06.8.i295 = getelementptr inbounds i16* %s, i32 9
  store i16 0, i16* %xi.addr.06.8.i295, align 2, !tbaa !5
  %xi.addr.06.9.i296 = getelementptr inbounds i16* %s, i32 10
  store i16 0, i16* %xi.addr.06.9.i296, align 2, !tbaa !5
  %xi.addr.06.10.i297 = getelementptr inbounds i16* %s, i32 11
  store i16 0, i16* %xi.addr.06.10.i297, align 2, !tbaa !5
  %xi.addr.06.11.i298 = getelementptr inbounds i16* %s, i32 12
  store i16 0, i16* %xi.addr.06.11.i298, align 2, !tbaa !5
  br label %if.end166

if.end10:                                         ; preds = %if.then5, %if.end
  %lost.addr.0 = phi i32 [ %lost, %if.end ], [ %lost., %if.then5 ]
  %cmp11 = icmp eq i32 %rcntrl, 0
  br i1 %cmp11, label %mdfin, label %if.end13

if.end13:                                         ; preds = %if.end10
  %rndprc = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 1
  %0 = load i32* %rndprc, align 4, !tbaa !3
  %rlast = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 0
  %1 = load i32* %rlast, align 4, !tbaa !3
  %cmp14 = icmp eq i32 %0, %1
  br i1 %cmp14, label %if.end60, label %if.then15

if.then15:                                        ; preds = %if.end13
  %arraydecay = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 0
  %incdec.ptr.i328 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 1
  store i16 0, i16* %arraydecay, align 2, !tbaa !5
  %incdec.ptr.1.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 2
  store i16 0, i16* %incdec.ptr.i328, align 2, !tbaa !5
  %incdec.ptr.2.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 3
  store i16 0, i16* %incdec.ptr.1.i, align 2, !tbaa !5
  %incdec.ptr.3.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 4
  store i16 0, i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %incdec.ptr.4.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 5
  store i16 0, i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %incdec.ptr.5.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 6
  store i16 0, i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %incdec.ptr.6.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 7
  store i16 0, i16* %incdec.ptr.5.i, align 2, !tbaa !5
  %incdec.ptr.7.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 8
  store i16 0, i16* %incdec.ptr.6.i, align 2, !tbaa !5
  %incdec.ptr.8.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 9
  store i16 0, i16* %incdec.ptr.7.i, align 2, !tbaa !5
  %incdec.ptr.9.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 10
  store i16 0, i16* %incdec.ptr.8.i, align 2, !tbaa !5
  %incdec.ptr.10.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 11
  store i16 0, i16* %incdec.ptr.9.i, align 2, !tbaa !5
  %incdec.ptr.11.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 12
  store i16 0, i16* %incdec.ptr.10.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i, align 2, !tbaa !5
  switch i32 %0, label %sw.bb [
    i32 24, label %sw.bb48
    i32 113, label %sw.bb19
    i32 64, label %sw.bb26
    i32 56, label %sw.bb34
    i32 53, label %sw.bb41
  ]

sw.bb:                                            ; preds = %if.then15
  %rw = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 2
  store i32 12, i32* %rw, align 4, !tbaa !3
  %rmsk = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 5
  store i16 -1, i16* %rmsk, align 2, !tbaa !5
  %rmbit = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 6
  store i16 -32768, i16* %rmbit, align 2, !tbaa !5
  %rebit = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 7
  store i16 1, i16* %rebit, align 2, !tbaa !5
  %re = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 3
  store i32 11, i32* %re, align 4, !tbaa !3
  br label %sw.epilog

sw.bb19:                                          ; preds = %if.then15
  %rw20 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 2
  store i32 10, i32* %rw20, align 4, !tbaa !3
  %rmsk21 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 5
  store i16 32767, i16* %rmsk21, align 2, !tbaa !5
  %rmbit22 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 6
  store i16 16384, i16* %rmbit22, align 2, !tbaa !5
  %rebit23 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 7
  store i16 -32768, i16* %rebit23, align 2, !tbaa !5
  %re25 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 3
  store i32 10, i32* %re25, align 4, !tbaa !3
  br label %sw.epilog

sw.bb26:                                          ; preds = %if.then15
  %rw27 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 2
  store i32 7, i32* %rw27, align 4, !tbaa !3
  %rmsk28 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 5
  store i16 -1, i16* %rmsk28, align 2, !tbaa !5
  %rmbit29 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 6
  store i16 -32768, i16* %rmbit29, align 2, !tbaa !5
  %rebit30 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 7
  store i16 1, i16* %rebit30, align 2, !tbaa !5
  %re33 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 3
  store i32 6, i32* %re33, align 4, !tbaa !3
  br label %sw.epilog

sw.bb34:                                          ; preds = %if.then15
  %rw35 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 2
  store i32 6, i32* %rw35, align 4, !tbaa !3
  %rmsk36 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 5
  store i16 255, i16* %rmsk36, align 2, !tbaa !5
  %rmbit37 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 6
  store i16 128, i16* %rmbit37, align 2, !tbaa !5
  %rebit38 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 7
  store i16 256, i16* %rebit38, align 2, !tbaa !5
  %re40 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 3
  store i32 6, i32* %re40, align 4, !tbaa !3
  br label %sw.epilog

sw.bb41:                                          ; preds = %if.then15
  %rw42 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 2
  store i32 6, i32* %rw42, align 4, !tbaa !3
  %rmsk43 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 5
  store i16 2047, i16* %rmsk43, align 2, !tbaa !5
  %rmbit44 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 6
  store i16 1024, i16* %rmbit44, align 2, !tbaa !5
  %rebit45 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 7
  store i16 2048, i16* %rebit45, align 2, !tbaa !5
  %re47 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 3
  store i32 6, i32* %re47, align 4, !tbaa !3
  br label %sw.epilog

sw.bb48:                                          ; preds = %if.then15
  %rw49 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 2
  store i32 4, i32* %rw49, align 4, !tbaa !3
  %rmsk50 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 5
  store i16 255, i16* %rmsk50, align 2, !tbaa !5
  %rmbit51 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 6
  store i16 128, i16* %rmbit51, align 2, !tbaa !5
  %rebit52 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 7
  store i16 256, i16* %rebit52, align 2, !tbaa !5
  %re54 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 3
  store i32 4, i32* %re54, align 4, !tbaa !3
  br label %sw.epilog

sw.epilog:                                        ; preds = %sw.bb48, %sw.bb41, %sw.bb34, %sw.bb26, %sw.bb19, %sw.bb
  %2 = phi i32 [ 4, %sw.bb48 ], [ 6, %sw.bb41 ], [ 6, %sw.bb34 ], [ 6, %sw.bb26 ], [ 10, %sw.bb19 ], [ 11, %sw.bb ]
  %3 = phi i16 [ 256, %sw.bb48 ], [ 2048, %sw.bb41 ], [ 256, %sw.bb34 ], [ 1, %sw.bb26 ], [ -32768, %sw.bb19 ], [ 1, %sw.bb ]
  %arrayidx = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 %2
  store i16 %3, i16* %arrayidx, align 2, !tbaa !5
  %4 = load i32* %rndprc, align 4, !tbaa !3
  store i32 %4, i32* %rlast, align 4, !tbaa !3
  br label %if.end60

if.end60:                                         ; preds = %if.end13, %sw.epilog
  %5 = phi i32 [ %0, %if.end13 ], [ %4, %sw.epilog ]
  %cmp61 = icmp slt i32 %sub, 1
  br i1 %cmp61, label %land.lhs.true62, label %if.end67

land.lhs.true62:                                  ; preds = %if.end60
  %cmp64 = icmp eq i32 %5, 144
  br i1 %cmp64, label %if.end67, label %if.then65

if.then65:                                        ; preds = %land.lhs.true62
  %arrayidx66 = getelementptr inbounds i16* %s, i32 12
  %6 = load i16* %arrayidx66, align 2, !tbaa !5
  %conv = zext i16 %6 to i32
  %and = and i32 %conv, 1
  %add.ptr.i299 = getelementptr inbounds i16* %s, i32 2
  br label %for.body.i305

for.body.i305:                                    ; preds = %if.end12.i326, %if.then65
  %i.025.i300 = phi i32 [ 2, %if.then65 ], [ %inc.i324, %if.end12.i326 ]
  %bits.024.i301 = phi i16 [ 0, %if.then65 ], [ %conv14.i322, %if.end12.i326 ]
  %x.addr.023.i302 = phi i16* [ %add.ptr.i299, %if.then65 ], [ %incdec.ptr.i323, %if.end12.i326 ]
  %7 = load i16* %x.addr.023.i302, align 2, !tbaa !5
  %and.i303 = and i16 %7, 1
  %tobool.i304 = icmp eq i16 %and.i303, 0
  br i1 %tobool.i304, label %if.end.i315, label %if.then.i309

if.then.i309:                                     ; preds = %for.body.i305
  %conv1.i306 = zext i16 %bits.024.i301 to i32
  %or.i307 = or i32 %conv1.i306, 1
  %conv2.i308 = trunc i32 %or.i307 to i16
  br label %if.end.i315

if.end.i315:                                      ; preds = %if.then.i309, %for.body.i305
  %bits.1.i310 = phi i16 [ %conv2.i308, %if.then.i309 ], [ %bits.024.i301, %for.body.i305 ]
  %shr22.i311 = lshr i16 %7, 1
  %conv5.i312 = zext i16 %bits.1.i310 to i32
  %and6.i313 = and i32 %conv5.i312, 2
  %tobool7.i314 = icmp eq i32 %and6.i313, 0
  br i1 %tobool7.i314, label %if.end12.i326, label %if.then8.i319

if.then8.i319:                                    ; preds = %if.end.i315
  %conv9.i316 = zext i16 %shr22.i311 to i32
  %or10.i317 = or i32 %conv9.i316, 32768
  %conv11.i318 = trunc i32 %or10.i317 to i16
  br label %if.end12.i326

if.end12.i326:                                    ; preds = %if.then8.i319, %if.end.i315
  %storemerge.i320 = phi i16 [ %conv11.i318, %if.then8.i319 ], [ %shr22.i311, %if.end.i315 ]
  store i16 %storemerge.i320, i16* %x.addr.023.i302, align 2
  %shl.i321 = shl nuw nsw i32 %conv5.i312, 1
  %conv14.i322 = trunc i32 %shl.i321 to i16
  %incdec.ptr.i323 = getelementptr inbounds i16* %x.addr.023.i302, i32 1
  %inc.i324 = add nsw i32 %i.025.i300, 1
  %exitcond.i325 = icmp eq i32 %inc.i324, 13
  br i1 %exitcond.i325, label %if.end67.loopexit, label %for.body.i305

if.end67.loopexit:                                ; preds = %if.end12.i326
  %or = or i32 %and, %lost.addr.0
  %.pre = load i32* %rndprc, align 4, !tbaa !3
  br label %if.end67

if.end67:                                         ; preds = %if.end67.loopexit, %land.lhs.true62, %if.end60
  %8 = phi i32 [ 144, %land.lhs.true62 ], [ %5, %if.end60 ], [ %.pre, %if.end67.loopexit ]
  %lost.addr.1 = phi i32 [ %lost.addr.0, %land.lhs.true62 ], [ %lost.addr.0, %if.end60 ], [ %or, %if.end67.loopexit ]
  %rw68 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 2
  %9 = load i32* %rw68, align 4, !tbaa !3
  %arrayidx69 = getelementptr inbounds i16* %s, i32 %9
  %10 = load i16* %arrayidx69, align 2, !tbaa !5
  %rmsk71 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 5
  %11 = load i16* %rmsk71, align 2, !tbaa !5
  %and73265 = and i16 %11, %10
  %cmp76 = icmp slt i32 %8, 144
  br i1 %cmp76, label %while.cond.preheader, label %if.end90

while.cond.preheader:                             ; preds = %if.end67
  %i.0330 = add nsw i32 %9, 1
  %cmp80331 = icmp slt i32 %i.0330, 13
  br i1 %cmp80331, label %while.body, label %if.end90

while.body:                                       ; preds = %while.cond.preheader, %if.end88
  %i.0333 = phi i32 [ %i.0, %if.end88 ], [ %i.0330, %while.cond.preheader ]
  %r.0332 = phi i16 [ %r.1, %if.end88 ], [ %and73265, %while.cond.preheader ]
  %arrayidx82 = getelementptr inbounds i16* %s, i32 %i.0333
  %12 = load i16* %arrayidx82, align 2, !tbaa !5
  %tobool83 = icmp eq i16 %12, 0
  br i1 %tobool83, label %if.end88, label %if.then84

if.then84:                                        ; preds = %while.body
  %conv85 = zext i16 %r.0332 to i32
  %or86 = or i32 %conv85, 1
  %conv87 = trunc i32 %or86 to i16
  br label %if.end88

if.end88:                                         ; preds = %while.body, %if.then84
  %r.1 = phi i16 [ %conv87, %if.then84 ], [ %r.0332, %while.body ]
  store i16 0, i16* %arrayidx82, align 2, !tbaa !5
  %i.0 = add nsw i32 %i.0333, 1
  %exitcond = icmp eq i32 %i.0, 13
  br i1 %exitcond, label %while.cond.if.end90.loopexit_crit_edge, label %while.body

while.cond.if.end90.loopexit_crit_edge:           ; preds = %if.end88
  %.pre334.pre = load i16* %rmsk71, align 2, !tbaa !5
  %.pre335.pre = load i16* %arrayidx69, align 2, !tbaa !5
  br label %if.end90

if.end90:                                         ; preds = %while.cond.preheader, %while.cond.if.end90.loopexit_crit_edge, %if.end67
  %13 = phi i16 [ %10, %if.end67 ], [ %.pre335.pre, %while.cond.if.end90.loopexit_crit_edge ], [ %10, %while.cond.preheader ]
  %14 = phi i16 [ %11, %if.end67 ], [ %.pre334.pre, %while.cond.if.end90.loopexit_crit_edge ], [ %11, %while.cond.preheader ]
  %r.2 = phi i16 [ %and73265, %if.end67 ], [ %r.1, %while.cond.if.end90.loopexit_crit_edge ], [ %and73265, %while.cond.preheader ]
  %conv92 = zext i16 %14 to i32
  %neg = xor i32 %conv92, 65535
  %conv95 = zext i16 %13 to i32
  %and96 = and i32 %conv95, %neg
  %conv97 = trunc i32 %and96 to i16
  store i16 %conv97, i16* %arrayidx69, align 2, !tbaa !5
  %rmbit99 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 6
  %15 = load i16* %rmbit99, align 2, !tbaa !5
  %and101266 = and i16 %15, %r.2
  %cmp102 = icmp eq i16 %and101266, 0
  br i1 %cmp102, label %mddone, label %if.then104

if.then104:                                       ; preds = %if.end90
  %cmp108 = icmp eq i16 %r.2, %15
  br i1 %cmp108, label %if.then110, label %if.end130

if.then110:                                       ; preds = %if.then104
  %cmp111 = icmp eq i32 %lost.addr.1, 0
  br i1 %cmp111, label %if.then113, label %if.else124

if.then113:                                       ; preds = %if.then110
  %re114 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 3
  %16 = load i32* %re114, align 4, !tbaa !3
  %arrayidx115 = getelementptr inbounds i16* %s, i32 %16
  %17 = load i16* %arrayidx115, align 2, !tbaa !5
  %rebit117 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 7
  %18 = load i16* %rebit117, align 2, !tbaa !5
  %and119267 = and i16 %18, %17
  %cmp120 = icmp eq i16 %and119267, 0
  br i1 %cmp120, label %mddone, label %if.end130

if.else124:                                       ; preds = %if.then110
  %cmp125 = icmp eq i32 %subflg, 0
  br i1 %cmp125, label %if.end130, label %mddone

if.end130:                                        ; preds = %if.else124, %if.then113, %if.then104
  %arraydecay132 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 8, i32 0
  tail call fastcc void @eaddm(i16* %arraydecay132, i16* %s)
  br label %mddone

mddone:                                           ; preds = %if.else124, %if.end90, %if.end130, %if.then113
  br i1 %cmp61, label %land.lhs.true136, label %if.end141

land.lhs.true136:                                 ; preds = %mddone
  %19 = load i32* %rndprc, align 4, !tbaa !3
  %cmp138 = icmp eq i32 %19, 144
  br i1 %cmp138, label %if.end141, label %if.then140

if.then140:                                       ; preds = %land.lhs.true136
  %add.ptr.i268 = getelementptr inbounds i16* %s, i32 12
  br label %for.body.i273

for.body.i273:                                    ; preds = %if.end.i286, %if.then140
  %i.025.i269 = phi i32 [ 2, %if.then140 ], [ %inc.i284, %if.end.i286 ]
  %bits.024.i270 = phi i16 [ 0, %if.then140 ], [ %conv15.i, %if.end.i286 ]
  %x.addr.023.i271 = phi i16* [ %add.ptr.i268, %if.then140 ], [ %incdec.ptr.i283, %if.end.i286 ]
  %20 = load i16* %x.addr.023.i271, align 2, !tbaa !5
  %tobool.i272 = icmp slt i16 %20, 0
  br i1 %tobool.i272, label %if.then.i277, label %if.end.i286

if.then.i277:                                     ; preds = %for.body.i273
  %conv1.i274 = zext i16 %bits.024.i270 to i32
  %or.i275 = or i32 %conv1.i274, 1
  %conv2.i276 = trunc i32 %or.i275 to i16
  br label %if.end.i286

if.end.i286:                                      ; preds = %if.then.i277, %for.body.i273
  %bits.1.i278 = phi i16 [ %conv2.i276, %if.then.i277 ], [ %bits.024.i270, %for.body.i273 ]
  %conv3.i = zext i16 %20 to i32
  %shl.i279 = shl nuw nsw i32 %conv3.i, 1
  %conv5.i280 = zext i16 %bits.1.i278 to i32
  %and6.i281 = lshr i32 %conv5.i280, 1
  %and6.lobit.i = and i32 %and6.i281, 1
  %storemerge.in.i = or i32 %and6.lobit.i, %shl.i279
  %storemerge.i282 = trunc i32 %storemerge.in.i to i16
  store i16 %storemerge.i282, i16* %x.addr.023.i271, align 2
  %shl14.i = shl nuw nsw i32 %conv5.i280, 1
  %conv15.i = trunc i32 %shl14.i to i16
  %incdec.ptr.i283 = getelementptr inbounds i16* %x.addr.023.i271, i32 -1
  %inc.i284 = add nsw i32 %i.025.i269, 1
  %exitcond.i285 = icmp eq i32 %inc.i284, 13
  br i1 %exitcond.i285, label %if.end141, label %for.body.i273

if.end141:                                        ; preds = %if.end.i286, %land.lhs.true136, %mddone
  %arrayidx142 = getelementptr inbounds i16* %s, i32 2
  %21 = load i16* %arrayidx142, align 2, !tbaa !5
  %cmp144 = icmp eq i16 %21, 0
  br i1 %cmp144, label %mdfin, label %for.body.i

for.body.i:                                       ; preds = %if.end141, %if.end12.i.for.body.i_crit_edge
  %22 = phi i16 [ %.pre338, %if.end12.i.for.body.i_crit_edge ], [ %21, %if.end141 ]
  %i.025.i = phi i32 [ %phitmp, %if.end12.i.for.body.i_crit_edge ], [ 3, %if.end141 ]
  %bits.024.i = phi i16 [ %conv14.i, %if.end12.i.for.body.i_crit_edge ], [ 0, %if.end141 ]
  %x.addr.023.i = phi i16* [ %incdec.ptr.i, %if.end12.i.for.body.i_crit_edge ], [ %arrayidx142, %if.end141 ]
  %and.i = and i16 %22, 1
  %tobool.i = icmp eq i16 %and.i, 0
  br i1 %tobool.i, label %if.end.i, label %if.then.i

if.then.i:                                        ; preds = %for.body.i
  %conv1.i = zext i16 %bits.024.i to i32
  %or.i = or i32 %conv1.i, 1
  %conv2.i = trunc i32 %or.i to i16
  br label %if.end.i

if.end.i:                                         ; preds = %if.then.i, %for.body.i
  %bits.1.i = phi i16 [ %conv2.i, %if.then.i ], [ %bits.024.i, %for.body.i ]
  %shr22.i = lshr i16 %22, 1
  %conv5.i = zext i16 %bits.1.i to i32
  %and6.i = and i32 %conv5.i, 2
  %tobool7.i = icmp eq i32 %and6.i, 0
  br i1 %tobool7.i, label %if.end12.i, label %if.then8.i

if.then8.i:                                       ; preds = %if.end.i
  %conv9.i = zext i16 %shr22.i to i32
  %or10.i = or i32 %conv9.i, 32768
  %conv11.i = trunc i32 %or10.i to i16
  br label %if.end12.i

if.end12.i:                                       ; preds = %if.then8.i, %if.end.i
  %storemerge.i = phi i16 [ %conv11.i, %if.then8.i ], [ %shr22.i, %if.end.i ]
  store i16 %storemerge.i, i16* %x.addr.023.i, align 2
  %incdec.ptr.i = getelementptr inbounds i16* %x.addr.023.i, i32 1
  %exitcond.i = icmp eq i32 %i.025.i, 13
  br i1 %exitcond.i, label %eshdn1.exit, label %if.end12.i.for.body.i_crit_edge

if.end12.i.for.body.i_crit_edge:                  ; preds = %if.end12.i
  %shl.i = shl nuw nsw i32 %conv5.i, 1
  %conv14.i = trunc i32 %shl.i to i16
  %.pre338 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  %phitmp = add i32 %i.025.i, 1
  br label %for.body.i

eshdn1.exit:                                      ; preds = %if.end12.i
  %add147 = add nsw i32 %sub, 1
  br label %mdfin

mdfin:                                            ; preds = %if.end141, %eshdn1.exit, %if.end10
  %exp.addr.0 = phi i32 [ %sub, %if.end10 ], [ %add147, %eshdn1.exit ], [ %sub, %if.end141 ]
  %arrayidx149 = getelementptr inbounds i16* %s, i32 12
  store i16 0, i16* %arrayidx149, align 2, !tbaa !5
  %cmp150 = icmp sgt i32 %exp.addr.0, 32766
  br i1 %cmp150, label %if.then152, label %if.end158

if.then152:                                       ; preds = %mdfin
  %arrayidx153 = getelementptr inbounds i16* %s, i32 1
  store i16 32767, i16* %arrayidx153, align 2, !tbaa !5
  %arrayidx156 = getelementptr inbounds i16* %s, i32 2
  store i16 0, i16* %arrayidx156, align 2, !tbaa !5
  %arrayidx156.1 = getelementptr inbounds i16* %s, i32 3
  store i16 0, i16* %arrayidx156.1, align 2, !tbaa !5
  %arrayidx156.2 = getelementptr inbounds i16* %s, i32 4
  store i16 0, i16* %arrayidx156.2, align 2, !tbaa !5
  %arrayidx156.3 = getelementptr inbounds i16* %s, i32 5
  store i16 0, i16* %arrayidx156.3, align 2, !tbaa !5
  %arrayidx156.4 = getelementptr inbounds i16* %s, i32 6
  store i16 0, i16* %arrayidx156.4, align 2, !tbaa !5
  %arrayidx156.5 = getelementptr inbounds i16* %s, i32 7
  store i16 0, i16* %arrayidx156.5, align 2, !tbaa !5
  %arrayidx156.6 = getelementptr inbounds i16* %s, i32 8
  store i16 0, i16* %arrayidx156.6, align 2, !tbaa !5
  %arrayidx156.7 = getelementptr inbounds i16* %s, i32 9
  store i16 0, i16* %arrayidx156.7, align 2, !tbaa !5
  %arrayidx156.8 = getelementptr inbounds i16* %s, i32 10
  store i16 0, i16* %arrayidx156.8, align 2, !tbaa !5
  %arrayidx156.9 = getelementptr inbounds i16* %s, i32 11
  store i16 0, i16* %arrayidx156.9, align 2, !tbaa !5
  br label %if.end166

if.end158:                                        ; preds = %mdfin
  %cmp159 = icmp slt i32 %exp.addr.0, 0
  br i1 %cmp159, label %if.then161, label %if.else163

if.then161:                                       ; preds = %if.end158
  %arrayidx162 = getelementptr inbounds i16* %s, i32 1
  store i16 0, i16* %arrayidx162, align 2, !tbaa !5
  br label %if.end166

if.else163:                                       ; preds = %if.end158
  %conv164 = trunc i32 %exp.addr.0 to i16
  %arrayidx165 = getelementptr inbounds i16* %s, i32 1
  store i16 %conv164, i16* %arrayidx165, align 2, !tbaa !5
  br label %if.end166

if.end166:                                        ; preds = %if.then152, %if.then, %if.else, %if.else163, %if.then161
  ret void
}

define internal fastcc void @emovi(i16* nocapture %a, i16* nocapture %b) nounwind {
entry:
  %add.ptr = getelementptr inbounds i16* %a, i32 9
  %0 = load i16* %add.ptr, align 2, !tbaa !5
  %incdec.ptr = getelementptr inbounds i16* %b, i32 1
  %.lobit = ashr i16 %0, 15
  store i16 %.lobit, i16* %b, align 2
  %incdec.ptr2 = getelementptr inbounds i16* %a, i32 8
  %1 = load i16* %add.ptr, align 2, !tbaa !5
  %incdec.ptr3 = getelementptr inbounds i16* %b, i32 2
  %conv4 = zext i16 %1 to i32
  %and5 = and i32 %conv4, 32767
  %conv6 = trunc i32 %and5 to i16
  store i16 %conv6, i16* %incdec.ptr, align 2, !tbaa !5
  %cmp = icmp eq i32 %and5, 32767
  br i1 %cmp, label %if.then11, label %if.end28

if.then11:                                        ; preds = %entry
  %call = tail call fastcc i32 @eisnan(i16* %a)
  %tobool12 = icmp eq i32 %call, 0
  %incdec.ptr24 = getelementptr inbounds i16* %b, i32 3
  store i16 0, i16* %incdec.ptr3, align 2, !tbaa !5
  br i1 %tobool12, label %for.cond20.preheader, label %if.then13

for.cond20.preheader:                             ; preds = %if.then11
  %incdec.ptr24.1 = getelementptr inbounds i16* %b, i32 4
  store i16 0, i16* %incdec.ptr24, align 2, !tbaa !5
  %incdec.ptr24.2 = getelementptr inbounds i16* %b, i32 5
  store i16 0, i16* %incdec.ptr24.1, align 2, !tbaa !5
  %incdec.ptr24.3 = getelementptr inbounds i16* %b, i32 6
  store i16 0, i16* %incdec.ptr24.2, align 2, !tbaa !5
  %incdec.ptr24.4 = getelementptr inbounds i16* %b, i32 7
  store i16 0, i16* %incdec.ptr24.3, align 2, !tbaa !5
  %incdec.ptr24.5 = getelementptr inbounds i16* %b, i32 8
  store i16 0, i16* %incdec.ptr24.4, align 2, !tbaa !5
  %incdec.ptr24.6 = getelementptr inbounds i16* %b, i32 9
  store i16 0, i16* %incdec.ptr24.5, align 2, !tbaa !5
  %incdec.ptr24.7 = getelementptr inbounds i16* %b, i32 10
  store i16 0, i16* %incdec.ptr24.6, align 2, !tbaa !5
  %incdec.ptr24.8 = getelementptr inbounds i16* %b, i32 11
  store i16 0, i16* %incdec.ptr24.7, align 2, !tbaa !5
  %incdec.ptr24.9 = getelementptr inbounds i16* %b, i32 12
  store i16 0, i16* %incdec.ptr24.8, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr24.9, align 2, !tbaa !5
  br label %return

if.then13:                                        ; preds = %if.then11
  %incdec.ptr17 = getelementptr inbounds i16* %a, i32 7
  %2 = load i16* %incdec.ptr2, align 2, !tbaa !5
  %incdec.ptr18 = getelementptr inbounds i16* %b, i32 4
  store i16 %2, i16* %incdec.ptr24, align 2, !tbaa !5
  %incdec.ptr17.1 = getelementptr inbounds i16* %a, i32 6
  %3 = load i16* %incdec.ptr17, align 2, !tbaa !5
  %incdec.ptr18.1 = getelementptr inbounds i16* %b, i32 5
  store i16 %3, i16* %incdec.ptr18, align 2, !tbaa !5
  %incdec.ptr17.2 = getelementptr inbounds i16* %a, i32 5
  %4 = load i16* %incdec.ptr17.1, align 2, !tbaa !5
  %incdec.ptr18.2 = getelementptr inbounds i16* %b, i32 6
  store i16 %4, i16* %incdec.ptr18.1, align 2, !tbaa !5
  %incdec.ptr17.3 = getelementptr inbounds i16* %a, i32 4
  %5 = load i16* %incdec.ptr17.2, align 2, !tbaa !5
  %incdec.ptr18.3 = getelementptr inbounds i16* %b, i32 7
  store i16 %5, i16* %incdec.ptr18.2, align 2, !tbaa !5
  %incdec.ptr17.4 = getelementptr inbounds i16* %a, i32 3
  %6 = load i16* %incdec.ptr17.3, align 2, !tbaa !5
  %incdec.ptr18.4 = getelementptr inbounds i16* %b, i32 8
  store i16 %6, i16* %incdec.ptr18.3, align 2, !tbaa !5
  %incdec.ptr17.5 = getelementptr inbounds i16* %a, i32 2
  %7 = load i16* %incdec.ptr17.4, align 2, !tbaa !5
  %incdec.ptr18.5 = getelementptr inbounds i16* %b, i32 9
  store i16 %7, i16* %incdec.ptr18.4, align 2, !tbaa !5
  %incdec.ptr17.6 = getelementptr inbounds i16* %a, i32 1
  %8 = load i16* %incdec.ptr17.5, align 2, !tbaa !5
  %incdec.ptr18.6 = getelementptr inbounds i16* %b, i32 10
  store i16 %8, i16* %incdec.ptr18.5, align 2, !tbaa !5
  %9 = load i16* %incdec.ptr17.6, align 2, !tbaa !5
  %incdec.ptr18.7 = getelementptr inbounds i16* %b, i32 11
  store i16 %9, i16* %incdec.ptr18.6, align 2, !tbaa !5
  %incdec.ptr17.8 = getelementptr inbounds i16* %a, i32 -1
  %10 = load i16* %a, align 2, !tbaa !5
  %incdec.ptr18.8 = getelementptr inbounds i16* %b, i32 12
  store i16 %10, i16* %incdec.ptr18.7, align 2, !tbaa !5
  %11 = load i16* %incdec.ptr17.8, align 2, !tbaa !5
  store i16 %11, i16* %incdec.ptr18.8, align 2, !tbaa !5
  br label %return

if.end28:                                         ; preds = %entry
  %incdec.ptr29 = getelementptr inbounds i16* %b, i32 3
  store i16 0, i16* %incdec.ptr3, align 2, !tbaa !5
  %incdec.ptr34 = getelementptr inbounds i16* %a, i32 7
  %12 = load i16* %incdec.ptr2, align 2, !tbaa !5
  %incdec.ptr35 = getelementptr inbounds i16* %b, i32 4
  store i16 %12, i16* %incdec.ptr29, align 2, !tbaa !5
  %incdec.ptr34.1 = getelementptr inbounds i16* %a, i32 6
  %13 = load i16* %incdec.ptr34, align 2, !tbaa !5
  %incdec.ptr35.1 = getelementptr inbounds i16* %b, i32 5
  store i16 %13, i16* %incdec.ptr35, align 2, !tbaa !5
  %incdec.ptr34.2 = getelementptr inbounds i16* %a, i32 5
  %14 = load i16* %incdec.ptr34.1, align 2, !tbaa !5
  %incdec.ptr35.2 = getelementptr inbounds i16* %b, i32 6
  store i16 %14, i16* %incdec.ptr35.1, align 2, !tbaa !5
  %incdec.ptr34.3 = getelementptr inbounds i16* %a, i32 4
  %15 = load i16* %incdec.ptr34.2, align 2, !tbaa !5
  %incdec.ptr35.3 = getelementptr inbounds i16* %b, i32 7
  store i16 %15, i16* %incdec.ptr35.2, align 2, !tbaa !5
  %incdec.ptr34.4 = getelementptr inbounds i16* %a, i32 3
  %16 = load i16* %incdec.ptr34.3, align 2, !tbaa !5
  %incdec.ptr35.4 = getelementptr inbounds i16* %b, i32 8
  store i16 %16, i16* %incdec.ptr35.3, align 2, !tbaa !5
  %incdec.ptr34.5 = getelementptr inbounds i16* %a, i32 2
  %17 = load i16* %incdec.ptr34.4, align 2, !tbaa !5
  %incdec.ptr35.5 = getelementptr inbounds i16* %b, i32 9
  store i16 %17, i16* %incdec.ptr35.4, align 2, !tbaa !5
  %incdec.ptr34.6 = getelementptr inbounds i16* %a, i32 1
  %18 = load i16* %incdec.ptr34.5, align 2, !tbaa !5
  %incdec.ptr35.6 = getelementptr inbounds i16* %b, i32 10
  store i16 %18, i16* %incdec.ptr35.5, align 2, !tbaa !5
  %19 = load i16* %incdec.ptr34.6, align 2, !tbaa !5
  %incdec.ptr35.7 = getelementptr inbounds i16* %b, i32 11
  store i16 %19, i16* %incdec.ptr35.6, align 2, !tbaa !5
  %20 = load i16* %a, align 2, !tbaa !5
  store i16 %20, i16* %incdec.ptr35.7, align 2, !tbaa !5
  %scevgep = getelementptr i16* %b, i32 12
  store i16 0, i16* %scevgep, align 2, !tbaa !5
  br label %return

return:                                           ; preds = %if.then13, %for.cond20.preheader, %if.end28
  ret void
}

define internal fastcc i32 @edivm(i16* nocapture %den, i16* %num, %struct.LDPARMS* nocapture %ldp) nounwind {
entry:
  %p.i = alloca [13 x i16], align 2
  %tprod = alloca [14 x i16], align 2
  %arraydecay = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 0
  %0 = load i16* %num, align 2, !tbaa !5
  %incdec.ptr = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 1
  store i16 %0, i16* %arraydecay, align 2, !tbaa !5
  %arrayidx3 = getelementptr inbounds i16* %num, i32 1
  %1 = load i16* %arrayidx3, align 2, !tbaa !5
  %incdec.ptr4 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 2
  store i16 %1, i16* %incdec.ptr, align 2, !tbaa !5
  %incdec.ptr5 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 3
  store i16 0, i16* %incdec.ptr4, align 2, !tbaa !5
  %incdec.ptr5.1 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 4
  store i16 0, i16* %incdec.ptr5, align 2, !tbaa !5
  %incdec.ptr5.2 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 5
  store i16 0, i16* %incdec.ptr5.1, align 2, !tbaa !5
  %incdec.ptr5.3 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 6
  store i16 0, i16* %incdec.ptr5.2, align 2, !tbaa !5
  %incdec.ptr5.4 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 7
  store i16 0, i16* %incdec.ptr5.3, align 2, !tbaa !5
  %incdec.ptr5.5 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 8
  store i16 0, i16* %incdec.ptr5.4, align 2, !tbaa !5
  %incdec.ptr5.6 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 9
  store i16 0, i16* %incdec.ptr5.5, align 2, !tbaa !5
  %incdec.ptr5.7 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 10
  store i16 0, i16* %incdec.ptr5.6, align 2, !tbaa !5
  %incdec.ptr5.8 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 11
  store i16 0, i16* %incdec.ptr5.7, align 2, !tbaa !5
  %incdec.ptr5.9 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 12
  store i16 0, i16* %incdec.ptr5.8, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr5.9, align 2, !tbaa !5
  %add.ptr.i = getelementptr inbounds i16* %num, i32 2
  br label %for.body.i

for.body.i:                                       ; preds = %if.end12.i, %entry
  %i.025.i = phi i32 [ 2, %entry ], [ %inc.i, %if.end12.i ]
  %bits.024.i = phi i16 [ 0, %entry ], [ %conv14.i, %if.end12.i ]
  %x.addr.023.i = phi i16* [ %add.ptr.i, %entry ], [ %incdec.ptr.i, %if.end12.i ]
  %2 = load i16* %x.addr.023.i, align 2, !tbaa !5
  %and.i = and i16 %2, 1
  %tobool.i = icmp eq i16 %and.i, 0
  br i1 %tobool.i, label %if.end.i, label %if.then.i

if.then.i:                                        ; preds = %for.body.i
  %conv1.i = zext i16 %bits.024.i to i32
  %or.i = or i32 %conv1.i, 1
  %conv2.i = trunc i32 %or.i to i16
  br label %if.end.i

if.end.i:                                         ; preds = %if.then.i, %for.body.i
  %bits.1.i = phi i16 [ %conv2.i, %if.then.i ], [ %bits.024.i, %for.body.i ]
  %shr22.i = lshr i16 %2, 1
  %conv5.i = zext i16 %bits.1.i to i32
  %and6.i = and i32 %conv5.i, 2
  %tobool7.i = icmp eq i32 %and6.i, 0
  br i1 %tobool7.i, label %if.end12.i, label %if.then8.i

if.then8.i:                                       ; preds = %if.end.i
  %conv9.i = zext i16 %shr22.i to i32
  %or10.i = or i32 %conv9.i, 32768
  %conv11.i = trunc i32 %or10.i to i16
  br label %if.end12.i

if.end12.i:                                       ; preds = %if.then8.i, %if.end.i
  %storemerge.i = phi i16 [ %conv11.i, %if.then8.i ], [ %shr22.i, %if.end.i ]
  store i16 %storemerge.i, i16* %x.addr.023.i, align 2
  %shl.i = shl nuw nsw i32 %conv5.i, 1
  %conv14.i = trunc i32 %shl.i to i16
  %incdec.ptr.i = getelementptr inbounds i16* %x.addr.023.i, i32 1
  %inc.i = add nsw i32 %i.025.i, 1
  %exitcond.i = icmp eq i32 %inc.i, 13
  br i1 %exitcond.i, label %eshdn1.exit, label %for.body.i

eshdn1.exit:                                      ; preds = %if.end12.i
  %arrayidx6 = getelementptr inbounds i16* %den, i32 3
  %3 = load i16* %arrayidx6, align 2, !tbaa !5
  %arrayidx11 = getelementptr inbounds i16* %num, i32 3
  %conv13 = zext i16 %3 to i32
  %mul = mul i32 %conv13, 65535
  %arraydecay18 = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 0
  %4 = bitcast [13 x i16]* %p.i to i8*
  %arrayidx.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 11
  %incdec.ptr.i103 = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 12
  %arrayidx1.i = getelementptr inbounds i16* %den, i32 12
  %arrayidx25.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 2
  %arrayidx26.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 2
  %arrayidx25.1.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 3
  %arrayidx26.1.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 3
  %arrayidx25.2.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 4
  %arrayidx26.2.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 4
  %arrayidx25.3.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 5
  %arrayidx26.3.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 5
  %arrayidx25.4.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 6
  %arrayidx26.4.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 6
  %arrayidx25.5.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 7
  %arrayidx26.5.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 7
  %arrayidx25.6.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 8
  %arrayidx26.6.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 8
  %arrayidx25.7.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 9
  %arrayidx26.7.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 9
  %arrayidx25.8.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 10
  %arrayidx26.8.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 10
  %arrayidx26.9.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 11
  %arrayidx26.10.i = getelementptr inbounds [14 x i16]* %tprod, i32 0, i32 12
  %incdec.ptr2.1.i117 = getelementptr inbounds i16* %num, i32 4
  %incdec.ptr2.2.i119 = getelementptr inbounds i16* %num, i32 5
  %incdec.ptr2.3.i121 = getelementptr inbounds i16* %num, i32 6
  %incdec.ptr2.4.i123 = getelementptr inbounds i16* %num, i32 7
  %incdec.ptr2.5.i125 = getelementptr inbounds i16* %num, i32 8
  %incdec.ptr2.6.i127 = getelementptr inbounds i16* %num, i32 9
  %incdec.ptr2.7.i129 = getelementptr inbounds i16* %num, i32 10
  %incdec.ptr2.8.i131 = getelementptr inbounds i16* %num, i32 11
  %incdec.ptr2.9.i = getelementptr inbounds i16* %num, i32 12
  %.pre = load i16* %add.ptr.i, align 2, !tbaa !5
  %.pre193 = load i16* %arrayidx11, align 2, !tbaa !5
  br label %for.body9

for.cond43.preheader:                             ; preds = %if.end36
  %or100.1 = or i16 %72, %71
  %or100.2 = or i16 %73, %or100.1
  %or100.3 = or i16 %74, %or100.2
  %or100.4 = or i16 %75, %or100.3
  %incdec.ptr47.5 = getelementptr inbounds i16* %num, i32 8
  %or100.5 = or i16 %76, %or100.4
  %incdec.ptr47.6 = getelementptr inbounds i16* %num, i32 9
  %5 = load i16* %incdec.ptr47.5, align 2, !tbaa !5
  %or100.6 = or i16 %5, %or100.5
  %incdec.ptr47.7 = getelementptr inbounds i16* %num, i32 10
  %6 = load i16* %incdec.ptr47.6, align 2, !tbaa !5
  %or100.7 = or i16 %6, %or100.6
  %incdec.ptr47.8 = getelementptr inbounds i16* %num, i32 11
  %7 = load i16* %incdec.ptr47.7, align 2, !tbaa !5
  %or100.8 = or i16 %7, %or100.7
  %8 = load i16* %incdec.ptr47.8, align 2, !tbaa !5
  %or100.9 = or i16 %8, %or100.8
  %9 = load i16* %arraydecay, align 2, !tbaa !5
  store i16 %9, i16* %num, align 2, !tbaa !5
  %10 = load i16* %incdec.ptr, align 2, !tbaa !5
  store i16 %10, i16* %arrayidx3, align 2, !tbaa !5
  %11 = load i16* %incdec.ptr4, align 2, !tbaa !5
  store i16 %11, i16* %add.ptr.i, align 2, !tbaa !5
  %arrayidx60.3 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 3
  %12 = load i16* %arrayidx60.3, align 2, !tbaa !5
  store i16 %12, i16* %arrayidx11, align 2, !tbaa !5
  %arrayidx60.4 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 4
  %13 = load i16* %arrayidx60.4, align 2, !tbaa !5
  store i16 %13, i16* %incdec.ptr2.1.i117, align 2, !tbaa !5
  %arrayidx60.5 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 5
  %14 = load i16* %arrayidx60.5, align 2, !tbaa !5
  store i16 %14, i16* %incdec.ptr2.2.i119, align 2, !tbaa !5
  %arrayidx60.6 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 6
  %15 = load i16* %arrayidx60.6, align 2, !tbaa !5
  store i16 %15, i16* %incdec.ptr2.3.i121, align 2, !tbaa !5
  %arrayidx60.7 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 7
  %16 = load i16* %arrayidx60.7, align 2, !tbaa !5
  store i16 %16, i16* %incdec.ptr2.4.i123, align 2, !tbaa !5
  %arrayidx60.8 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 8
  %17 = load i16* %arrayidx60.8, align 2, !tbaa !5
  store i16 %17, i16* %incdec.ptr2.5.i125, align 2, !tbaa !5
  %arrayidx60.9 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 9
  %18 = load i16* %arrayidx60.9, align 2, !tbaa !5
  store i16 %18, i16* %incdec.ptr2.6.i127, align 2, !tbaa !5
  %arrayidx60.10 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 10
  %19 = load i16* %arrayidx60.10, align 2, !tbaa !5
  store i16 %19, i16* %incdec.ptr2.7.i129, align 2, !tbaa !5
  %arrayidx60.11 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 11
  %20 = load i16* %arrayidx60.11, align 2, !tbaa !5
  store i16 %20, i16* %incdec.ptr2.8.i131, align 2, !tbaa !5
  %arrayidx60.12 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 12
  %21 = load i16* %arrayidx60.12, align 2, !tbaa !5
  store i16 %21, i16* %incdec.ptr2.9.i, align 2, !tbaa !5
  %not.tobool = icmp ne i16 %or100.9, 0
  %conv65 = zext i1 %not.tobool to i32
  ret i32 %conv65

for.body9:                                        ; preds = %if.end36, %eshdn1.exit
  %22 = phi i16 [ %.pre193, %eshdn1.exit ], [ %72, %if.end36 ]
  %23 = phi i16 [ %.pre, %eshdn1.exit ], [ %71, %if.end36 ]
  %i.1189 = phi i32 [ 2, %eshdn1.exit ], [ %inc40, %if.end36 ]
  %conv = zext i16 %23 to i32
  %shl = shl nuw i32 %conv, 16
  %conv12 = zext i16 %22 to i32
  %add = or i32 %shl, %conv12
  %cmp14 = icmp ult i32 %mul, %add
  br i1 %cmp14, label %if.end, label %if.else

if.else:                                          ; preds = %for.body9
  %div = udiv i32 %add, %conv13
  %conv17 = trunc i32 %div to i16
  br label %if.end

if.end:                                           ; preds = %for.body9, %if.else
  %tquot.0 = phi i16 [ %conv17, %if.else ], [ -1, %for.body9 ]
  call void @llvm.lifetime.start(i64 -1, i8* %4)
  %conv.i = zext i16 %tquot.0 to i32
  store i16 0, i16* %arrayidx.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.i103, align 2, !tbaa !5
  br label %for.body.i104

for.body.i104:                                    ; preds = %for.inc.i, %if.end
  %i.052.i = phi i32 [ 3, %if.end ], [ %inc.i109, %for.inc.i ]
  %pp.051.i = phi i16* [ %incdec.ptr.i103, %if.end ], [ %pp.1.i, %for.inc.i ]
  %ps.050.i = phi i16* [ %arrayidx1.i, %if.end ], [ %ps.1.i, %for.inc.i ]
  %24 = load i16* %ps.050.i, align 2, !tbaa !5
  %cmp4.i = icmp eq i16 %24, 0
  br i1 %cmp4.i, label %if.then.i106, label %if.else.i

if.then.i106:                                     ; preds = %for.body.i104
  %incdec.ptr7.i = getelementptr inbounds i16* %pp.051.i, i32 -1
  %add.ptr.i105 = getelementptr inbounds i16* %pp.051.i, i32 -2
  store i16 0, i16* %add.ptr.i105, align 2, !tbaa !5
  br label %for.inc.i

if.else.i:                                        ; preds = %for.body.i104
  %conv3.i = zext i16 %24 to i32
  %mul.i = mul i32 %conv3.i, %conv.i
  %and.i107 = and i32 %mul.i, 65535
  %25 = load i16* %pp.051.i, align 2, !tbaa !5
  %conv10.i = zext i16 %25 to i32
  %add.i = add i32 %conv10.i, %and.i107
  %conv11.i108 = trunc i32 %add.i to i16
  %incdec.ptr12.i = getelementptr inbounds i16* %pp.051.i, i32 -1
  store i16 %conv11.i108, i16* %pp.051.i, align 2, !tbaa !5
  %shr.i = lshr i32 %add.i, 16
  %shr13.i = lshr i32 %mul.i, 16
  %26 = load i16* %incdec.ptr12.i, align 2, !tbaa !5
  %conv15.i = zext i16 %26 to i32
  %add14.i = add i32 %conv15.i, %shr13.i
  %add16.i = add i32 %add14.i, %shr.i
  %conv17.i = trunc i32 %add16.i to i16
  store i16 %conv17.i, i16* %incdec.ptr12.i, align 2, !tbaa !5
  %shr18.i = lshr i32 %add16.i, 16
  %conv19.i = trunc i32 %shr18.i to i16
  %add.ptr20.i = getelementptr inbounds i16* %pp.051.i, i32 -2
  store i16 %conv19.i, i16* %add.ptr20.i, align 2, !tbaa !5
  br label %for.inc.i

for.inc.i:                                        ; preds = %if.else.i, %if.then.i106
  %pp.1.i = phi i16* [ %incdec.ptr7.i, %if.then.i106 ], [ %incdec.ptr12.i, %if.else.i ]
  %ps.1.i = getelementptr inbounds i16* %ps.050.i, i32 -1
  %inc.i109 = add nsw i32 %i.052.i, 1
  %exitcond.i110 = icmp eq i32 %inc.i109, 13
  br i1 %exitcond.i110, label %m16m.exit, label %for.body.i104

m16m.exit:                                        ; preds = %for.inc.i
  %27 = load i16* %arrayidx25.i, align 2, !tbaa !5
  store i16 %27, i16* %arrayidx26.i, align 2, !tbaa !5
  %28 = load i16* %arrayidx25.1.i, align 2, !tbaa !5
  store i16 %28, i16* %arrayidx26.1.i, align 2, !tbaa !5
  %29 = load i16* %arrayidx25.2.i, align 2, !tbaa !5
  store i16 %29, i16* %arrayidx26.2.i, align 2, !tbaa !5
  %30 = load i16* %arrayidx25.3.i, align 2, !tbaa !5
  store i16 %30, i16* %arrayidx26.3.i, align 2, !tbaa !5
  %31 = load i16* %arrayidx25.4.i, align 2, !tbaa !5
  store i16 %31, i16* %arrayidx26.4.i, align 2, !tbaa !5
  %32 = load i16* %arrayidx25.5.i, align 2, !tbaa !5
  store i16 %32, i16* %arrayidx26.5.i, align 2, !tbaa !5
  %33 = load i16* %arrayidx25.6.i, align 2, !tbaa !5
  store i16 %33, i16* %arrayidx26.6.i, align 2, !tbaa !5
  %34 = load i16* %arrayidx25.7.i, align 2, !tbaa !5
  store i16 %34, i16* %arrayidx26.7.i, align 2, !tbaa !5
  %35 = load i16* %arrayidx25.8.i, align 2, !tbaa !5
  store i16 %35, i16* %arrayidx26.8.i, align 2, !tbaa !5
  %36 = load i16* %arrayidx.i, align 2, !tbaa !5
  store i16 %36, i16* %arrayidx26.9.i, align 2, !tbaa !5
  %37 = load i16* %incdec.ptr.i103, align 2, !tbaa !5
  store i16 %37, i16* %arrayidx26.10.i, align 2, !tbaa !5
  call void @llvm.lifetime.end(i64 -1, i8* %4)
  %38 = load i16* %add.ptr.i, align 2, !tbaa !5
  %cmp4.i113 = icmp eq i16 %27, %38
  br i1 %cmp4.i113, label %for.inc.i116, label %ecmpm.exit

for.inc.i116:                                     ; preds = %m16m.exit
  %39 = load i16* %arrayidx11, align 2, !tbaa !5
  %cmp4.1.i = icmp eq i16 %28, %39
  br i1 %cmp4.1.i, label %for.inc.1.i, label %ecmpm.exit

for.inc.1.i:                                      ; preds = %for.inc.i116
  %40 = load i16* %incdec.ptr2.1.i117, align 2, !tbaa !5
  %cmp4.2.i = icmp eq i16 %29, %40
  br i1 %cmp4.2.i, label %for.inc.2.i, label %ecmpm.exit

for.inc.2.i:                                      ; preds = %for.inc.1.i
  %41 = load i16* %incdec.ptr2.2.i119, align 2, !tbaa !5
  %cmp4.3.i = icmp eq i16 %30, %41
  br i1 %cmp4.3.i, label %for.inc.3.i, label %ecmpm.exit

for.inc.3.i:                                      ; preds = %for.inc.2.i
  %42 = load i16* %incdec.ptr2.3.i121, align 2, !tbaa !5
  %cmp4.4.i = icmp eq i16 %31, %42
  br i1 %cmp4.4.i, label %for.inc.4.i, label %ecmpm.exit

for.inc.4.i:                                      ; preds = %for.inc.3.i
  %43 = load i16* %incdec.ptr2.4.i123, align 2, !tbaa !5
  %cmp4.5.i = icmp eq i16 %32, %43
  br i1 %cmp4.5.i, label %for.inc.5.i, label %ecmpm.exit

for.inc.5.i:                                      ; preds = %for.inc.4.i
  %44 = load i16* %incdec.ptr2.5.i125, align 2, !tbaa !5
  %cmp4.6.i = icmp eq i16 %33, %44
  br i1 %cmp4.6.i, label %for.inc.6.i, label %ecmpm.exit

for.inc.6.i:                                      ; preds = %for.inc.5.i
  %45 = load i16* %incdec.ptr2.6.i127, align 2, !tbaa !5
  %cmp4.7.i = icmp eq i16 %34, %45
  br i1 %cmp4.7.i, label %for.inc.7.i, label %ecmpm.exit

for.inc.7.i:                                      ; preds = %for.inc.6.i
  %46 = load i16* %incdec.ptr2.7.i129, align 2, !tbaa !5
  %cmp4.8.i = icmp eq i16 %35, %46
  br i1 %cmp4.8.i, label %for.inc.8.i, label %ecmpm.exit

for.inc.8.i:                                      ; preds = %for.inc.7.i
  %47 = load i16* %incdec.ptr2.8.i131, align 2, !tbaa !5
  %cmp4.9.i = icmp eq i16 %36, %47
  br i1 %cmp4.9.i, label %for.inc.9.i, label %ecmpm.exit

for.inc.9.i:                                      ; preds = %for.inc.8.i
  %48 = load i16* %incdec.ptr2.9.i, align 2, !tbaa !5
  %cmp4.10.i = icmp eq i16 %37, %48
  br i1 %cmp4.10.i, label %if.end36, label %ecmpm.exit

ecmpm.exit:                                       ; preds = %m16m.exit, %for.inc.i116, %for.inc.1.i, %for.inc.2.i, %for.inc.3.i, %for.inc.4.i, %for.inc.5.i, %for.inc.6.i, %for.inc.7.i, %for.inc.8.i, %for.inc.9.i
  %.lcssa23.i = phi i16 [ %38, %m16m.exit ], [ %39, %for.inc.i116 ], [ %40, %for.inc.1.i ], [ %41, %for.inc.2.i ], [ %42, %for.inc.3.i ], [ %43, %for.inc.4.i ], [ %44, %for.inc.5.i ], [ %45, %for.inc.6.i ], [ %46, %for.inc.7.i ], [ %47, %for.inc.8.i ], [ %48, %for.inc.9.i ]
  %.lcssa.i = phi i16 [ %27, %m16m.exit ], [ %28, %for.inc.i116 ], [ %29, %for.inc.1.i ], [ %30, %for.inc.2.i ], [ %31, %for.inc.3.i ], [ %32, %for.inc.4.i ], [ %33, %for.inc.5.i ], [ %34, %for.inc.6.i ], [ %35, %for.inc.7.i ], [ %36, %for.inc.8.i ], [ %37, %for.inc.9.i ]
  %cmp10.i = icmp ugt i16 %.lcssa.i, %.lcssa23.i
  br i1 %cmp10.i, label %if.then22, label %if.end36

if.then22:                                        ; preds = %ecmpm.exit
  %sub = add nsw i32 %conv.i, 65535
  %conv24 = trunc i32 %sub to i16
  call fastcc void @esubm(i16* %den, i16* %arraydecay18)
  %49 = load i16* %arrayidx26.i, align 2, !tbaa !5
  %50 = load i16* %add.ptr.i, align 2, !tbaa !5
  %cmp4.i135 = icmp eq i16 %49, %50
  br i1 %cmp4.i135, label %for.inc.i139, label %ecmpm.exit182

for.inc.i139:                                     ; preds = %if.then22
  %51 = load i16* %arrayidx26.1.i, align 2, !tbaa !5
  %52 = load i16* %arrayidx11, align 2, !tbaa !5
  %cmp4.1.i138 = icmp eq i16 %51, %52
  br i1 %cmp4.1.i138, label %for.inc.1.i149, label %ecmpm.exit182

for.inc.1.i149:                                   ; preds = %for.inc.i139
  %53 = load i16* %arrayidx26.2.i, align 2, !tbaa !5
  %54 = load i16* %incdec.ptr2.1.i117, align 2, !tbaa !5
  %cmp4.2.i148 = icmp eq i16 %53, %54
  br i1 %cmp4.2.i148, label %for.inc.2.i153, label %ecmpm.exit182

for.inc.2.i153:                                   ; preds = %for.inc.1.i149
  %55 = load i16* %arrayidx26.3.i, align 2, !tbaa !5
  %56 = load i16* %incdec.ptr2.2.i119, align 2, !tbaa !5
  %cmp4.3.i152 = icmp eq i16 %55, %56
  br i1 %cmp4.3.i152, label %for.inc.3.i157, label %ecmpm.exit182

for.inc.3.i157:                                   ; preds = %for.inc.2.i153
  %57 = load i16* %arrayidx26.4.i, align 2, !tbaa !5
  %58 = load i16* %incdec.ptr2.3.i121, align 2, !tbaa !5
  %cmp4.4.i156 = icmp eq i16 %57, %58
  br i1 %cmp4.4.i156, label %for.inc.4.i161, label %ecmpm.exit182

for.inc.4.i161:                                   ; preds = %for.inc.3.i157
  %59 = load i16* %arrayidx26.5.i, align 2, !tbaa !5
  %60 = load i16* %incdec.ptr2.4.i123, align 2, !tbaa !5
  %cmp4.5.i160 = icmp eq i16 %59, %60
  br i1 %cmp4.5.i160, label %for.inc.5.i165, label %ecmpm.exit182

for.inc.5.i165:                                   ; preds = %for.inc.4.i161
  %61 = load i16* %arrayidx26.6.i, align 2, !tbaa !5
  %62 = load i16* %incdec.ptr2.5.i125, align 2, !tbaa !5
  %cmp4.6.i164 = icmp eq i16 %61, %62
  br i1 %cmp4.6.i164, label %for.inc.6.i169, label %ecmpm.exit182

for.inc.6.i169:                                   ; preds = %for.inc.5.i165
  %63 = load i16* %arrayidx26.7.i, align 2, !tbaa !5
  %64 = load i16* %incdec.ptr2.6.i127, align 2, !tbaa !5
  %cmp4.7.i168 = icmp eq i16 %63, %64
  br i1 %cmp4.7.i168, label %for.inc.7.i173, label %ecmpm.exit182

for.inc.7.i173:                                   ; preds = %for.inc.6.i169
  %65 = load i16* %arrayidx26.8.i, align 2, !tbaa !5
  %66 = load i16* %incdec.ptr2.7.i129, align 2, !tbaa !5
  %cmp4.8.i172 = icmp eq i16 %65, %66
  br i1 %cmp4.8.i172, label %for.inc.8.i177, label %ecmpm.exit182

for.inc.8.i177:                                   ; preds = %for.inc.7.i173
  %67 = load i16* %arrayidx26.9.i, align 2, !tbaa !5
  %68 = load i16* %incdec.ptr2.8.i131, align 2, !tbaa !5
  %cmp4.9.i176 = icmp eq i16 %67, %68
  br i1 %cmp4.9.i176, label %for.inc.9.i181, label %ecmpm.exit182

for.inc.9.i181:                                   ; preds = %for.inc.8.i177
  %69 = load i16* %arrayidx26.10.i, align 2, !tbaa !5
  %70 = load i16* %incdec.ptr2.9.i, align 2, !tbaa !5
  %cmp4.10.i180 = icmp eq i16 %69, %70
  br i1 %cmp4.10.i180, label %if.end36, label %ecmpm.exit182

ecmpm.exit182:                                    ; preds = %if.then22, %for.inc.i139, %for.inc.1.i149, %for.inc.2.i153, %for.inc.3.i157, %for.inc.4.i161, %for.inc.5.i165, %for.inc.6.i169, %for.inc.7.i173, %for.inc.8.i177, %for.inc.9.i181
  %.lcssa23.i140 = phi i16 [ %50, %if.then22 ], [ %52, %for.inc.i139 ], [ %54, %for.inc.1.i149 ], [ %56, %for.inc.2.i153 ], [ %58, %for.inc.3.i157 ], [ %60, %for.inc.4.i161 ], [ %62, %for.inc.5.i165 ], [ %64, %for.inc.6.i169 ], [ %66, %for.inc.7.i173 ], [ %68, %for.inc.8.i177 ], [ %70, %for.inc.9.i181 ]
  %.lcssa.i141 = phi i16 [ %49, %if.then22 ], [ %51, %for.inc.i139 ], [ %53, %for.inc.1.i149 ], [ %55, %for.inc.2.i153 ], [ %57, %for.inc.3.i157 ], [ %59, %for.inc.4.i161 ], [ %61, %for.inc.5.i165 ], [ %63, %for.inc.6.i169 ], [ %65, %for.inc.7.i173 ], [ %67, %for.inc.8.i177 ], [ %69, %for.inc.9.i181 ]
  %cmp10.i142 = icmp ugt i16 %.lcssa.i141, %.lcssa23.i140
  br i1 %cmp10.i142, label %if.then30, label %if.end36

if.then30:                                        ; preds = %ecmpm.exit182
  %sub32 = add nsw i32 %conv.i, 65534
  %conv33 = trunc i32 %sub32 to i16
  call fastcc void @esubm(i16* %den, i16* %arraydecay18)
  br label %if.end36

if.end36:                                         ; preds = %for.inc.9.i181, %for.inc.9.i, %ecmpm.exit182, %if.then30, %ecmpm.exit
  %tquot.1 = phi i16 [ %conv33, %if.then30 ], [ %conv24, %ecmpm.exit182 ], [ %tquot.0, %ecmpm.exit ], [ %tquot.0, %for.inc.9.i ], [ %conv24, %for.inc.9.i181 ]
  call fastcc void @esubm(i16* %arraydecay18, i16* %num)
  %arrayidx38 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 %i.1189
  store i16 %tquot.1, i16* %arrayidx38, align 2, !tbaa !5
  %71 = load i16* %arrayidx11, align 2, !tbaa !5
  store i16 %71, i16* %add.ptr.i, align 2, !tbaa !5
  %72 = load i16* %incdec.ptr2.1.i117, align 2, !tbaa !5
  store i16 %72, i16* %arrayidx11, align 2, !tbaa !5
  %73 = load i16* %incdec.ptr2.2.i119, align 2, !tbaa !5
  store i16 %73, i16* %incdec.ptr2.1.i117, align 2, !tbaa !5
  %74 = load i16* %incdec.ptr2.3.i121, align 2, !tbaa !5
  store i16 %74, i16* %incdec.ptr2.2.i119, align 2, !tbaa !5
  %75 = load i16* %incdec.ptr2.4.i123, align 2, !tbaa !5
  store i16 %75, i16* %incdec.ptr2.3.i121, align 2, !tbaa !5
  %76 = load i16* %incdec.ptr2.5.i125, align 2, !tbaa !5
  store i16 %76, i16* %incdec.ptr2.4.i123, align 2, !tbaa !5
  %77 = load i16* %incdec.ptr2.6.i127, align 2, !tbaa !5
  store i16 %77, i16* %incdec.ptr2.5.i125, align 2, !tbaa !5
  %78 = load i16* %incdec.ptr2.7.i129, align 2, !tbaa !5
  store i16 %78, i16* %incdec.ptr2.6.i127, align 2, !tbaa !5
  %79 = load i16* %incdec.ptr2.8.i131, align 2, !tbaa !5
  store i16 %79, i16* %incdec.ptr2.7.i129, align 2, !tbaa !5
  %80 = load i16* %incdec.ptr2.9.i, align 2, !tbaa !5
  store i16 %80, i16* %incdec.ptr2.8.i131, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr2.9.i, align 2, !tbaa !5
  %inc40 = add nsw i32 %i.1189, 1
  %exitcond = icmp eq i32 %inc40, 13
  br i1 %exitcond, label %for.cond43.preheader, label %for.body9
}

define internal fastcc void @emul(i16* %a, i16* %b, i16* %c, %struct.LDPARMS* %ldp) nounwind {
entry:
  %ai = alloca [13 x i16], align 2
  %bi = alloca [13 x i16], align 2
  %arrayidx.i = getelementptr inbounds i16* %a, i32 9
  %0 = load i16* %arrayidx.i, align 2, !tbaa !5
  %and.i = and i16 %0, 32767
  %cmp.i = icmp eq i16 %and.i, 32767
  br i1 %cmp.i, label %for.cond.preheader.i, label %if.end

for.cond.preheader.i:                             ; preds = %entry
  %1 = load i16* %a, align 2, !tbaa !5
  %cmp5.i = icmp eq i16 %1, 0
  %incdec.ptr.i = getelementptr inbounds i16* %a, i32 1
  br i1 %cmp5.i, label %for.inc.i, label %if.then

for.inc.i:                                        ; preds = %for.cond.preheader.i
  %2 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  %cmp5.1.i = icmp eq i16 %2, 0
  br i1 %cmp5.1.i, label %for.inc.1.i, label %if.then

for.inc.1.i:                                      ; preds = %for.inc.i
  %incdec.ptr.1.i = getelementptr inbounds i16* %a, i32 2
  %3 = load i16* %incdec.ptr.1.i, align 2, !tbaa !5
  %cmp5.2.i = icmp eq i16 %3, 0
  br i1 %cmp5.2.i, label %for.inc.2.i, label %if.then

for.inc.2.i:                                      ; preds = %for.inc.1.i
  %incdec.ptr.2.i = getelementptr inbounds i16* %a, i32 3
  %4 = load i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %cmp5.3.i = icmp eq i16 %4, 0
  br i1 %cmp5.3.i, label %for.inc.3.i, label %if.then

for.inc.3.i:                                      ; preds = %for.inc.2.i
  %incdec.ptr.3.i = getelementptr inbounds i16* %a, i32 4
  %5 = load i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %cmp5.4.i = icmp eq i16 %5, 0
  br i1 %cmp5.4.i, label %for.inc.4.i, label %if.then

for.inc.4.i:                                      ; preds = %for.inc.3.i
  %incdec.ptr.4.i = getelementptr inbounds i16* %a, i32 5
  %6 = load i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %cmp5.5.i = icmp eq i16 %6, 0
  br i1 %cmp5.5.i, label %for.inc.5.i, label %if.then

for.inc.5.i:                                      ; preds = %for.inc.4.i
  %incdec.ptr.5.i = getelementptr inbounds i16* %a, i32 6
  %7 = load i16* %incdec.ptr.5.i, align 2, !tbaa !5
  %cmp5.6.i = icmp eq i16 %7, 0
  br i1 %cmp5.6.i, label %for.inc.6.i, label %if.then

for.inc.6.i:                                      ; preds = %for.inc.5.i
  %incdec.ptr.6.i = getelementptr inbounds i16* %a, i32 7
  %8 = load i16* %incdec.ptr.6.i, align 2, !tbaa !5
  %cmp5.7.i = icmp eq i16 %8, 0
  br i1 %cmp5.7.i, label %eisnan.exit, label %if.then

eisnan.exit:                                      ; preds = %for.inc.6.i
  %incdec.ptr.7.i = getelementptr inbounds i16* %a, i32 8
  %9 = load i16* %incdec.ptr.7.i, align 2, !tbaa !5
  %not.cmp5.8.i = icmp eq i16 %9, 0
  br i1 %not.cmp5.8.i, label %if.end, label %if.then

if.then:                                          ; preds = %for.cond.preheader.i, %eisnan.exit, %for.inc.6.i, %for.inc.5.i, %for.inc.4.i, %for.inc.3.i, %for.inc.2.i, %for.inc.1.i, %for.inc.i
  %incdec.ptr1.i = getelementptr inbounds i16* %c, i32 1
  store i16 %1, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i119 = getelementptr inbounds i16* %a, i32 2
  %10 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  %incdec.ptr1.1.i = getelementptr inbounds i16* %c, i32 2
  store i16 %10, i16* %incdec.ptr1.i, align 2, !tbaa !5
  %incdec.ptr.2.i120 = getelementptr inbounds i16* %a, i32 3
  %11 = load i16* %incdec.ptr.1.i119, align 2, !tbaa !5
  %incdec.ptr1.2.i = getelementptr inbounds i16* %c, i32 3
  store i16 %11, i16* %incdec.ptr1.1.i, align 2, !tbaa !5
  %incdec.ptr.3.i121 = getelementptr inbounds i16* %a, i32 4
  %12 = load i16* %incdec.ptr.2.i120, align 2, !tbaa !5
  %incdec.ptr1.3.i = getelementptr inbounds i16* %c, i32 4
  store i16 %12, i16* %incdec.ptr1.2.i, align 2, !tbaa !5
  %incdec.ptr.4.i122 = getelementptr inbounds i16* %a, i32 5
  %13 = load i16* %incdec.ptr.3.i121, align 2, !tbaa !5
  %incdec.ptr1.4.i = getelementptr inbounds i16* %c, i32 5
  store i16 %13, i16* %incdec.ptr1.3.i, align 2, !tbaa !5
  %incdec.ptr.5.i123 = getelementptr inbounds i16* %a, i32 6
  %14 = load i16* %incdec.ptr.4.i122, align 2, !tbaa !5
  %incdec.ptr1.5.i = getelementptr inbounds i16* %c, i32 6
  store i16 %14, i16* %incdec.ptr1.4.i, align 2, !tbaa !5
  %incdec.ptr.6.i124 = getelementptr inbounds i16* %a, i32 7
  %15 = load i16* %incdec.ptr.5.i123, align 2, !tbaa !5
  %incdec.ptr1.6.i = getelementptr inbounds i16* %c, i32 7
  store i16 %15, i16* %incdec.ptr1.5.i, align 2, !tbaa !5
  %incdec.ptr.7.i125 = getelementptr inbounds i16* %a, i32 8
  %16 = load i16* %incdec.ptr.6.i124, align 2, !tbaa !5
  %incdec.ptr1.7.i = getelementptr inbounds i16* %c, i32 8
  store i16 %16, i16* %incdec.ptr1.6.i, align 2, !tbaa !5
  %17 = load i16* %incdec.ptr.7.i125, align 2, !tbaa !5
  %incdec.ptr1.8.i = getelementptr inbounds i16* %c, i32 9
  store i16 %17, i16* %incdec.ptr1.7.i, align 2, !tbaa !5
  %18 = load i16* %arrayidx.i, align 2, !tbaa !5
  store i16 %18, i16* %incdec.ptr1.8.i, align 2, !tbaa !5
  br label %return

if.end:                                           ; preds = %eisnan.exit, %entry
  %arrayidx.i126 = getelementptr inbounds i16* %b, i32 9
  %19 = load i16* %arrayidx.i126, align 2, !tbaa !5
  %and.i127 = and i16 %19, 32767
  %cmp.i128 = icmp eq i16 %and.i127, 32767
  br i1 %cmp.i128, label %for.cond.preheader.i130, label %if.end4

for.cond.preheader.i130:                          ; preds = %if.end
  %20 = load i16* %b, align 2, !tbaa !5
  %cmp5.i129 = icmp eq i16 %20, 0
  %incdec.ptr.i131 = getelementptr inbounds i16* %b, i32 1
  br i1 %cmp5.i129, label %for.inc.i133, label %if.then3

for.inc.i133:                                     ; preds = %for.cond.preheader.i130
  %21 = load i16* %incdec.ptr.i131, align 2, !tbaa !5
  %cmp5.1.i132 = icmp eq i16 %21, 0
  br i1 %cmp5.1.i132, label %for.inc.1.i138, label %if.then3

for.inc.1.i138:                                   ; preds = %for.inc.i133
  %incdec.ptr.1.i136 = getelementptr inbounds i16* %b, i32 2
  %22 = load i16* %incdec.ptr.1.i136, align 2, !tbaa !5
  %cmp5.2.i137 = icmp eq i16 %22, 0
  br i1 %cmp5.2.i137, label %for.inc.2.i141, label %if.then3

for.inc.2.i141:                                   ; preds = %for.inc.1.i138
  %incdec.ptr.2.i139 = getelementptr inbounds i16* %b, i32 3
  %23 = load i16* %incdec.ptr.2.i139, align 2, !tbaa !5
  %cmp5.3.i140 = icmp eq i16 %23, 0
  br i1 %cmp5.3.i140, label %for.inc.3.i144, label %if.then3

for.inc.3.i144:                                   ; preds = %for.inc.2.i141
  %incdec.ptr.3.i142 = getelementptr inbounds i16* %b, i32 4
  %24 = load i16* %incdec.ptr.3.i142, align 2, !tbaa !5
  %cmp5.4.i143 = icmp eq i16 %24, 0
  br i1 %cmp5.4.i143, label %for.inc.4.i147, label %if.then3

for.inc.4.i147:                                   ; preds = %for.inc.3.i144
  %incdec.ptr.4.i145 = getelementptr inbounds i16* %b, i32 5
  %25 = load i16* %incdec.ptr.4.i145, align 2, !tbaa !5
  %cmp5.5.i146 = icmp eq i16 %25, 0
  br i1 %cmp5.5.i146, label %for.inc.5.i150, label %if.then3

for.inc.5.i150:                                   ; preds = %for.inc.4.i147
  %incdec.ptr.5.i148 = getelementptr inbounds i16* %b, i32 6
  %26 = load i16* %incdec.ptr.5.i148, align 2, !tbaa !5
  %cmp5.6.i149 = icmp eq i16 %26, 0
  br i1 %cmp5.6.i149, label %for.inc.6.i153, label %if.then3

for.inc.6.i153:                                   ; preds = %for.inc.5.i150
  %incdec.ptr.6.i151 = getelementptr inbounds i16* %b, i32 7
  %27 = load i16* %incdec.ptr.6.i151, align 2, !tbaa !5
  %cmp5.7.i152 = icmp eq i16 %27, 0
  br i1 %cmp5.7.i152, label %eisnan.exit158, label %if.then3

eisnan.exit158:                                   ; preds = %for.inc.6.i153
  %incdec.ptr.7.i154 = getelementptr inbounds i16* %b, i32 8
  %28 = load i16* %incdec.ptr.7.i154, align 2, !tbaa !5
  %not.cmp5.8.i155 = icmp eq i16 %28, 0
  br i1 %not.cmp5.8.i155, label %if.end4, label %if.then3

if.then3:                                         ; preds = %for.cond.preheader.i130, %eisnan.exit158, %for.inc.6.i153, %for.inc.5.i150, %for.inc.4.i147, %for.inc.3.i144, %for.inc.2.i141, %for.inc.1.i138, %for.inc.i133
  %incdec.ptr1.i161 = getelementptr inbounds i16* %c, i32 1
  store i16 %20, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i162 = getelementptr inbounds i16* %b, i32 2
  %29 = load i16* %incdec.ptr.i131, align 2, !tbaa !5
  %incdec.ptr1.1.i163 = getelementptr inbounds i16* %c, i32 2
  store i16 %29, i16* %incdec.ptr1.i161, align 2, !tbaa !5
  %incdec.ptr.2.i164 = getelementptr inbounds i16* %b, i32 3
  %30 = load i16* %incdec.ptr.1.i162, align 2, !tbaa !5
  %incdec.ptr1.2.i165 = getelementptr inbounds i16* %c, i32 3
  store i16 %30, i16* %incdec.ptr1.1.i163, align 2, !tbaa !5
  %incdec.ptr.3.i166 = getelementptr inbounds i16* %b, i32 4
  %31 = load i16* %incdec.ptr.2.i164, align 2, !tbaa !5
  %incdec.ptr1.3.i167 = getelementptr inbounds i16* %c, i32 4
  store i16 %31, i16* %incdec.ptr1.2.i165, align 2, !tbaa !5
  %incdec.ptr.4.i168 = getelementptr inbounds i16* %b, i32 5
  %32 = load i16* %incdec.ptr.3.i166, align 2, !tbaa !5
  %incdec.ptr1.4.i169 = getelementptr inbounds i16* %c, i32 5
  store i16 %32, i16* %incdec.ptr1.3.i167, align 2, !tbaa !5
  %incdec.ptr.5.i170 = getelementptr inbounds i16* %b, i32 6
  %33 = load i16* %incdec.ptr.4.i168, align 2, !tbaa !5
  %incdec.ptr1.5.i171 = getelementptr inbounds i16* %c, i32 6
  store i16 %33, i16* %incdec.ptr1.4.i169, align 2, !tbaa !5
  %incdec.ptr.6.i172 = getelementptr inbounds i16* %b, i32 7
  %34 = load i16* %incdec.ptr.5.i170, align 2, !tbaa !5
  %incdec.ptr1.6.i173 = getelementptr inbounds i16* %c, i32 7
  store i16 %34, i16* %incdec.ptr1.5.i171, align 2, !tbaa !5
  %incdec.ptr.7.i174 = getelementptr inbounds i16* %b, i32 8
  %35 = load i16* %incdec.ptr.6.i172, align 2, !tbaa !5
  %incdec.ptr1.7.i175 = getelementptr inbounds i16* %c, i32 8
  store i16 %35, i16* %incdec.ptr1.6.i173, align 2, !tbaa !5
  %36 = load i16* %incdec.ptr.7.i174, align 2, !tbaa !5
  %incdec.ptr1.8.i177 = getelementptr inbounds i16* %c, i32 9
  store i16 %36, i16* %incdec.ptr1.7.i175, align 2, !tbaa !5
  %37 = load i16* %arrayidx.i126, align 2, !tbaa !5
  store i16 %37, i16* %incdec.ptr1.8.i177, align 2, !tbaa !5
  br label %return

if.end4:                                          ; preds = %eisnan.exit158, %if.end
  br i1 %cmp.i, label %for.cond.preheader.i.i, label %lor.lhs.false

for.cond.preheader.i.i:                           ; preds = %if.end4
  %38 = load i16* %a, align 2, !tbaa !5
  %cmp5.i.i = icmp eq i16 %38, 0
  br i1 %cmp5.i.i, label %for.inc.i.i, label %lor.lhs.false

for.inc.i.i:                                      ; preds = %for.cond.preheader.i.i
  %incdec.ptr.i.i = getelementptr inbounds i16* %a, i32 1
  %39 = load i16* %incdec.ptr.i.i, align 2, !tbaa !5
  %cmp5.1.i.i = icmp eq i16 %39, 0
  br i1 %cmp5.1.i.i, label %for.inc.1.i.i, label %lor.lhs.false

for.inc.1.i.i:                                    ; preds = %for.inc.i.i
  %incdec.ptr.1.i.i = getelementptr inbounds i16* %a, i32 2
  %40 = load i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  %cmp5.2.i.i = icmp eq i16 %40, 0
  br i1 %cmp5.2.i.i, label %for.inc.2.i.i, label %lor.lhs.false

for.inc.2.i.i:                                    ; preds = %for.inc.1.i.i
  %incdec.ptr.2.i.i = getelementptr inbounds i16* %a, i32 3
  %41 = load i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  %cmp5.3.i.i = icmp eq i16 %41, 0
  br i1 %cmp5.3.i.i, label %for.inc.3.i.i, label %lor.lhs.false

for.inc.3.i.i:                                    ; preds = %for.inc.2.i.i
  %incdec.ptr.3.i.i = getelementptr inbounds i16* %a, i32 4
  %42 = load i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  %cmp5.4.i.i = icmp eq i16 %42, 0
  br i1 %cmp5.4.i.i, label %for.inc.4.i.i, label %lor.lhs.false

for.inc.4.i.i:                                    ; preds = %for.inc.3.i.i
  %incdec.ptr.4.i.i = getelementptr inbounds i16* %a, i32 5
  %43 = load i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  %cmp5.5.i.i = icmp eq i16 %43, 0
  br i1 %cmp5.5.i.i, label %for.inc.5.i.i, label %lor.lhs.false

for.inc.5.i.i:                                    ; preds = %for.inc.4.i.i
  %incdec.ptr.5.i.i = getelementptr inbounds i16* %a, i32 6
  %44 = load i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  %cmp5.6.i.i = icmp eq i16 %44, 0
  br i1 %cmp5.6.i.i, label %for.inc.6.i.i, label %lor.lhs.false

for.inc.6.i.i:                                    ; preds = %for.inc.5.i.i
  %incdec.ptr.6.i.i = getelementptr inbounds i16* %a, i32 7
  %45 = load i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  %cmp5.7.i.i = icmp eq i16 %45, 0
  br i1 %cmp5.7.i.i, label %for.inc.7.i.i, label %lor.lhs.false

for.inc.7.i.i:                                    ; preds = %for.inc.6.i.i
  %incdec.ptr.7.i.i = getelementptr inbounds i16* %a, i32 8
  %46 = load i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  %phitmp.i = icmp eq i16 %46, 0
  br i1 %phitmp.i, label %land.lhs.true, label %lor.lhs.false

land.lhs.true:                                    ; preds = %for.inc.7.i.i
  %call7 = call fastcc i32 @ecmp(i16* %b, i16* getelementptr inbounds ([10 x i16]* @ezero, i32 0, i32 0))
  %cmp = icmp eq i32 %call7, 0
  br i1 %cmp, label %if.then13, label %land.lhs.true.lor.lhs.false_crit_edge

land.lhs.true.lor.lhs.false_crit_edge:            ; preds = %land.lhs.true
  %.pre = load i16* %arrayidx.i126, align 2, !tbaa !5
  br label %lor.lhs.false

lor.lhs.false:                                    ; preds = %land.lhs.true.lor.lhs.false_crit_edge, %for.inc.6.i.i, %for.inc.5.i.i, %for.inc.4.i.i, %for.inc.3.i.i, %for.inc.2.i.i, %for.inc.1.i.i, %for.inc.i.i, %for.cond.preheader.i.i, %for.inc.7.i.i, %if.end4
  %47 = phi i16 [ %.pre, %land.lhs.true.lor.lhs.false_crit_edge ], [ %19, %for.inc.6.i.i ], [ %19, %for.inc.5.i.i ], [ %19, %for.inc.4.i.i ], [ %19, %for.inc.3.i.i ], [ %19, %for.inc.2.i.i ], [ %19, %for.inc.1.i.i ], [ %19, %for.inc.i.i ], [ %19, %for.cond.preheader.i.i ], [ %19, %for.inc.7.i.i ], [ %19, %if.end4 ]
  %and.i203 = and i16 %47, 32767
  %cmp.i204 = icmp eq i16 %and.i203, 32767
  br i1 %cmp.i204, label %for.cond.preheader.i.i206, label %if.end14

for.cond.preheader.i.i206:                        ; preds = %lor.lhs.false
  %48 = load i16* %b, align 2, !tbaa !5
  %cmp5.i.i205 = icmp eq i16 %48, 0
  br i1 %cmp5.i.i205, label %for.inc.i.i209, label %if.end14

for.inc.i.i209:                                   ; preds = %for.cond.preheader.i.i206
  %incdec.ptr.i.i207 = getelementptr inbounds i16* %b, i32 1
  %49 = load i16* %incdec.ptr.i.i207, align 2, !tbaa !5
  %cmp5.1.i.i208 = icmp eq i16 %49, 0
  br i1 %cmp5.1.i.i208, label %for.inc.1.i.i212, label %if.end14

for.inc.1.i.i212:                                 ; preds = %for.inc.i.i209
  %incdec.ptr.1.i.i210 = getelementptr inbounds i16* %b, i32 2
  %50 = load i16* %incdec.ptr.1.i.i210, align 2, !tbaa !5
  %cmp5.2.i.i211 = icmp eq i16 %50, 0
  br i1 %cmp5.2.i.i211, label %for.inc.2.i.i215, label %if.end14

for.inc.2.i.i215:                                 ; preds = %for.inc.1.i.i212
  %incdec.ptr.2.i.i213 = getelementptr inbounds i16* %b, i32 3
  %51 = load i16* %incdec.ptr.2.i.i213, align 2, !tbaa !5
  %cmp5.3.i.i214 = icmp eq i16 %51, 0
  br i1 %cmp5.3.i.i214, label %for.inc.3.i.i218, label %if.end14

for.inc.3.i.i218:                                 ; preds = %for.inc.2.i.i215
  %incdec.ptr.3.i.i216 = getelementptr inbounds i16* %b, i32 4
  %52 = load i16* %incdec.ptr.3.i.i216, align 2, !tbaa !5
  %cmp5.4.i.i217 = icmp eq i16 %52, 0
  br i1 %cmp5.4.i.i217, label %for.inc.4.i.i221, label %if.end14

for.inc.4.i.i221:                                 ; preds = %for.inc.3.i.i218
  %incdec.ptr.4.i.i219 = getelementptr inbounds i16* %b, i32 5
  %53 = load i16* %incdec.ptr.4.i.i219, align 2, !tbaa !5
  %cmp5.5.i.i220 = icmp eq i16 %53, 0
  br i1 %cmp5.5.i.i220, label %for.inc.5.i.i224, label %if.end14

for.inc.5.i.i224:                                 ; preds = %for.inc.4.i.i221
  %incdec.ptr.5.i.i222 = getelementptr inbounds i16* %b, i32 6
  %54 = load i16* %incdec.ptr.5.i.i222, align 2, !tbaa !5
  %cmp5.6.i.i223 = icmp eq i16 %54, 0
  br i1 %cmp5.6.i.i223, label %for.inc.6.i.i227, label %if.end14

for.inc.6.i.i227:                                 ; preds = %for.inc.5.i.i224
  %incdec.ptr.6.i.i225 = getelementptr inbounds i16* %b, i32 7
  %55 = load i16* %incdec.ptr.6.i.i225, align 2, !tbaa !5
  %cmp5.7.i.i226 = icmp eq i16 %55, 0
  br i1 %cmp5.7.i.i226, label %for.inc.7.i.i230, label %if.end14

for.inc.7.i.i230:                                 ; preds = %for.inc.6.i.i227
  %incdec.ptr.7.i.i228 = getelementptr inbounds i16* %b, i32 8
  %56 = load i16* %incdec.ptr.7.i.i228, align 2, !tbaa !5
  %phitmp.i229 = icmp eq i16 %56, 0
  br i1 %phitmp.i229, label %land.lhs.true10, label %if.end14

land.lhs.true10:                                  ; preds = %for.inc.7.i.i230
  %call11 = call fastcc i32 @ecmp(i16* %a, i16* getelementptr inbounds ([10 x i16]* @ezero, i32 0, i32 0))
  %cmp12 = icmp eq i32 %call11, 0
  br i1 %cmp12, label %if.then13, label %if.end14

if.then13:                                        ; preds = %land.lhs.true10, %land.lhs.true
  %incdec.ptr42.i = getelementptr inbounds i16* %c, i32 1
  %scevgep.i = getelementptr i16* %c, i32 9
  store i16 0, i16* %c, align 2, !tbaa !5
  %incdec.ptr.i237 = getelementptr inbounds i16* %c, i32 2
  store i16 0, i16* %incdec.ptr42.i, align 2, !tbaa !5
  %incdec.ptr.1.i238 = getelementptr inbounds i16* %c, i32 3
  store i16 0, i16* %incdec.ptr.i237, align 2, !tbaa !5
  %incdec.ptr.2.i239 = getelementptr inbounds i16* %c, i32 4
  store i16 0, i16* %incdec.ptr.1.i238, align 2, !tbaa !5
  %incdec.ptr.3.i240 = getelementptr inbounds i16* %c, i32 5
  store i16 0, i16* %incdec.ptr.2.i239, align 2, !tbaa !5
  %incdec.ptr.4.i241 = getelementptr inbounds i16* %c, i32 6
  store i16 0, i16* %incdec.ptr.3.i240, align 2, !tbaa !5
  %incdec.ptr.5.i242 = getelementptr inbounds i16* %c, i32 7
  store i16 0, i16* %incdec.ptr.4.i241, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i242, align 2, !tbaa !5
  %scevgep49.i = getelementptr i16* %c, i32 8
  store i16 -16384, i16* %scevgep49.i, align 2, !tbaa !5
  store i16 32767, i16* %scevgep.i, align 2, !tbaa !5
  br label %return

if.end14:                                         ; preds = %land.lhs.true10, %for.inc.7.i.i230, %for.inc.6.i.i227, %for.inc.5.i.i224, %for.inc.4.i.i221, %for.inc.3.i.i218, %for.inc.2.i.i215, %for.inc.1.i.i212, %for.inc.i.i209, %for.cond.preheader.i.i206, %lor.lhs.false
  %57 = load i16* %arrayidx.i, align 2, !tbaa !5
  %and.i245 = and i16 %57, 32767
  %cmp.i246 = icmp eq i16 %and.i245, 32767
  br i1 %cmp.i246, label %for.cond.preheader.i.i248, label %lor.lhs.false17

for.cond.preheader.i.i248:                        ; preds = %if.end14
  %58 = load i16* %a, align 2, !tbaa !5
  %cmp5.i.i247 = icmp eq i16 %58, 0
  br i1 %cmp5.i.i247, label %for.inc.i.i251, label %lor.lhs.false17

for.inc.i.i251:                                   ; preds = %for.cond.preheader.i.i248
  %incdec.ptr.i.i249 = getelementptr inbounds i16* %a, i32 1
  %59 = load i16* %incdec.ptr.i.i249, align 2, !tbaa !5
  %cmp5.1.i.i250 = icmp eq i16 %59, 0
  br i1 %cmp5.1.i.i250, label %for.inc.1.i.i254, label %lor.lhs.false17

for.inc.1.i.i254:                                 ; preds = %for.inc.i.i251
  %incdec.ptr.1.i.i252 = getelementptr inbounds i16* %a, i32 2
  %60 = load i16* %incdec.ptr.1.i.i252, align 2, !tbaa !5
  %cmp5.2.i.i253 = icmp eq i16 %60, 0
  br i1 %cmp5.2.i.i253, label %for.inc.2.i.i257, label %lor.lhs.false17

for.inc.2.i.i257:                                 ; preds = %for.inc.1.i.i254
  %incdec.ptr.2.i.i255 = getelementptr inbounds i16* %a, i32 3
  %61 = load i16* %incdec.ptr.2.i.i255, align 2, !tbaa !5
  %cmp5.3.i.i256 = icmp eq i16 %61, 0
  br i1 %cmp5.3.i.i256, label %for.inc.3.i.i260, label %lor.lhs.false17

for.inc.3.i.i260:                                 ; preds = %for.inc.2.i.i257
  %incdec.ptr.3.i.i258 = getelementptr inbounds i16* %a, i32 4
  %62 = load i16* %incdec.ptr.3.i.i258, align 2, !tbaa !5
  %cmp5.4.i.i259 = icmp eq i16 %62, 0
  br i1 %cmp5.4.i.i259, label %for.inc.4.i.i263, label %lor.lhs.false17

for.inc.4.i.i263:                                 ; preds = %for.inc.3.i.i260
  %incdec.ptr.4.i.i261 = getelementptr inbounds i16* %a, i32 5
  %63 = load i16* %incdec.ptr.4.i.i261, align 2, !tbaa !5
  %cmp5.5.i.i262 = icmp eq i16 %63, 0
  br i1 %cmp5.5.i.i262, label %for.inc.5.i.i266, label %lor.lhs.false17

for.inc.5.i.i266:                                 ; preds = %for.inc.4.i.i263
  %incdec.ptr.5.i.i264 = getelementptr inbounds i16* %a, i32 6
  %64 = load i16* %incdec.ptr.5.i.i264, align 2, !tbaa !5
  %cmp5.6.i.i265 = icmp eq i16 %64, 0
  br i1 %cmp5.6.i.i265, label %for.inc.6.i.i269, label %lor.lhs.false17

for.inc.6.i.i269:                                 ; preds = %for.inc.5.i.i266
  %incdec.ptr.6.i.i267 = getelementptr inbounds i16* %a, i32 7
  %65 = load i16* %incdec.ptr.6.i.i267, align 2, !tbaa !5
  %cmp5.7.i.i268 = icmp eq i16 %65, 0
  br i1 %cmp5.7.i.i268, label %for.inc.7.i.i272, label %lor.lhs.false17

for.inc.7.i.i272:                                 ; preds = %for.inc.6.i.i269
  %incdec.ptr.7.i.i270 = getelementptr inbounds i16* %a, i32 8
  %66 = load i16* %incdec.ptr.7.i.i270, align 2, !tbaa !5
  %phitmp.i271 = icmp eq i16 %66, 0
  br i1 %phitmp.i271, label %if.then20, label %lor.lhs.false17

lor.lhs.false17:                                  ; preds = %for.inc.7.i.i272, %for.inc.6.i.i269, %for.inc.5.i.i266, %for.inc.4.i.i263, %for.inc.3.i.i260, %for.inc.2.i.i257, %for.inc.1.i.i254, %for.inc.i.i251, %for.cond.preheader.i.i248, %if.end14
  %67 = load i16* %arrayidx.i126, align 2, !tbaa !5
  %and.i350 = and i16 %67, 32767
  %cmp.i351 = icmp eq i16 %and.i350, 32767
  br i1 %cmp.i351, label %for.cond.preheader.i.i353, label %if.end27

for.cond.preheader.i.i353:                        ; preds = %lor.lhs.false17
  %68 = load i16* %b, align 2, !tbaa !5
  %cmp5.i.i352 = icmp eq i16 %68, 0
  br i1 %cmp5.i.i352, label %for.inc.i.i356, label %if.end27

for.inc.i.i356:                                   ; preds = %for.cond.preheader.i.i353
  %incdec.ptr.i.i354 = getelementptr inbounds i16* %b, i32 1
  %69 = load i16* %incdec.ptr.i.i354, align 2, !tbaa !5
  %cmp5.1.i.i355 = icmp eq i16 %69, 0
  br i1 %cmp5.1.i.i355, label %for.inc.1.i.i359, label %if.end27

for.inc.1.i.i359:                                 ; preds = %for.inc.i.i356
  %incdec.ptr.1.i.i357 = getelementptr inbounds i16* %b, i32 2
  %70 = load i16* %incdec.ptr.1.i.i357, align 2, !tbaa !5
  %cmp5.2.i.i358 = icmp eq i16 %70, 0
  br i1 %cmp5.2.i.i358, label %for.inc.2.i.i362, label %if.end27

for.inc.2.i.i362:                                 ; preds = %for.inc.1.i.i359
  %incdec.ptr.2.i.i360 = getelementptr inbounds i16* %b, i32 3
  %71 = load i16* %incdec.ptr.2.i.i360, align 2, !tbaa !5
  %cmp5.3.i.i361 = icmp eq i16 %71, 0
  br i1 %cmp5.3.i.i361, label %for.inc.3.i.i365, label %if.end27

for.inc.3.i.i365:                                 ; preds = %for.inc.2.i.i362
  %incdec.ptr.3.i.i363 = getelementptr inbounds i16* %b, i32 4
  %72 = load i16* %incdec.ptr.3.i.i363, align 2, !tbaa !5
  %cmp5.4.i.i364 = icmp eq i16 %72, 0
  br i1 %cmp5.4.i.i364, label %for.inc.4.i.i368, label %if.end27

for.inc.4.i.i368:                                 ; preds = %for.inc.3.i.i365
  %incdec.ptr.4.i.i366 = getelementptr inbounds i16* %b, i32 5
  %73 = load i16* %incdec.ptr.4.i.i366, align 2, !tbaa !5
  %cmp5.5.i.i367 = icmp eq i16 %73, 0
  br i1 %cmp5.5.i.i367, label %for.inc.5.i.i371, label %if.end27

for.inc.5.i.i371:                                 ; preds = %for.inc.4.i.i368
  %incdec.ptr.5.i.i369 = getelementptr inbounds i16* %b, i32 6
  %74 = load i16* %incdec.ptr.5.i.i369, align 2, !tbaa !5
  %cmp5.6.i.i370 = icmp eq i16 %74, 0
  br i1 %cmp5.6.i.i370, label %for.inc.6.i.i374, label %if.end27

for.inc.6.i.i374:                                 ; preds = %for.inc.5.i.i371
  %incdec.ptr.6.i.i372 = getelementptr inbounds i16* %b, i32 7
  %75 = load i16* %incdec.ptr.6.i.i372, align 2, !tbaa !5
  %cmp5.7.i.i373 = icmp eq i16 %75, 0
  br i1 %cmp5.7.i.i373, label %for.inc.7.i.i377, label %if.end27

for.inc.7.i.i377:                                 ; preds = %for.inc.6.i.i374
  %incdec.ptr.7.i.i375 = getelementptr inbounds i16* %b, i32 8
  %76 = load i16* %incdec.ptr.7.i.i375, align 2, !tbaa !5
  %phitmp.i376 = icmp eq i16 %76, 0
  br i1 %phitmp.i376, label %if.then20, label %if.end27

if.then20:                                        ; preds = %for.inc.7.i.i272, %for.inc.7.i.i377
  br i1 %cmp.i246, label %for.cond.preheader.i.i319, label %if.end.i345

for.cond.preheader.i.i319:                        ; preds = %if.then20
  %77 = load i16* %a, align 2, !tbaa !5
  %cmp5.i.i318 = icmp eq i16 %77, 0
  br i1 %cmp5.i.i318, label %for.inc.i.i322, label %eisneg.exit348

for.inc.i.i322:                                   ; preds = %for.cond.preheader.i.i319
  %incdec.ptr.i.i320 = getelementptr inbounds i16* %a, i32 1
  %78 = load i16* %incdec.ptr.i.i320, align 2, !tbaa !5
  %cmp5.1.i.i321 = icmp eq i16 %78, 0
  br i1 %cmp5.1.i.i321, label %for.inc.1.i.i325, label %eisneg.exit348

for.inc.1.i.i325:                                 ; preds = %for.inc.i.i322
  %incdec.ptr.1.i.i323 = getelementptr inbounds i16* %a, i32 2
  %79 = load i16* %incdec.ptr.1.i.i323, align 2, !tbaa !5
  %cmp5.2.i.i324 = icmp eq i16 %79, 0
  br i1 %cmp5.2.i.i324, label %for.inc.2.i.i328, label %eisneg.exit348

for.inc.2.i.i328:                                 ; preds = %for.inc.1.i.i325
  %incdec.ptr.2.i.i326 = getelementptr inbounds i16* %a, i32 3
  %80 = load i16* %incdec.ptr.2.i.i326, align 2, !tbaa !5
  %cmp5.3.i.i327 = icmp eq i16 %80, 0
  br i1 %cmp5.3.i.i327, label %for.inc.3.i.i331, label %eisneg.exit348

for.inc.3.i.i331:                                 ; preds = %for.inc.2.i.i328
  %incdec.ptr.3.i.i329 = getelementptr inbounds i16* %a, i32 4
  %81 = load i16* %incdec.ptr.3.i.i329, align 2, !tbaa !5
  %cmp5.4.i.i330 = icmp eq i16 %81, 0
  br i1 %cmp5.4.i.i330, label %for.inc.4.i.i334, label %eisneg.exit348

for.inc.4.i.i334:                                 ; preds = %for.inc.3.i.i331
  %incdec.ptr.4.i.i332 = getelementptr inbounds i16* %a, i32 5
  %82 = load i16* %incdec.ptr.4.i.i332, align 2, !tbaa !5
  %cmp5.5.i.i333 = icmp eq i16 %82, 0
  br i1 %cmp5.5.i.i333, label %for.inc.5.i.i337, label %eisneg.exit348

for.inc.5.i.i337:                                 ; preds = %for.inc.4.i.i334
  %incdec.ptr.5.i.i335 = getelementptr inbounds i16* %a, i32 6
  %83 = load i16* %incdec.ptr.5.i.i335, align 2, !tbaa !5
  %cmp5.6.i.i336 = icmp eq i16 %83, 0
  br i1 %cmp5.6.i.i336, label %for.inc.6.i.i340, label %eisneg.exit348

for.inc.6.i.i340:                                 ; preds = %for.inc.5.i.i337
  %incdec.ptr.6.i.i338 = getelementptr inbounds i16* %a, i32 7
  %84 = load i16* %incdec.ptr.6.i.i338, align 2, !tbaa !5
  %cmp5.7.i.i339 = icmp eq i16 %84, 0
  br i1 %cmp5.7.i.i339, label %eisnan.exit.i343, label %eisneg.exit348

eisnan.exit.i343:                                 ; preds = %for.inc.6.i.i340
  %incdec.ptr.7.i.i341 = getelementptr inbounds i16* %a, i32 8
  %85 = load i16* %incdec.ptr.7.i.i341, align 2, !tbaa !5
  %not.cmp5.8.i.i342 = icmp eq i16 %85, 0
  br i1 %not.cmp5.8.i.i342, label %if.end.i345, label %eisneg.exit348

if.end.i345:                                      ; preds = %eisnan.exit.i343, %if.then20
  %.lobit.i344 = lshr i16 %57, 15
  %86 = zext i16 %.lobit.i344 to i32
  br label %eisneg.exit348

eisneg.exit348:                                   ; preds = %eisnan.exit.i343, %for.inc.6.i.i340, %for.inc.5.i.i337, %for.inc.4.i.i334, %for.inc.3.i.i331, %for.inc.2.i.i328, %for.inc.1.i.i325, %for.inc.i.i322, %for.cond.preheader.i.i319, %if.end.i345
  %retval.0.i346 = phi i32 [ %86, %if.end.i345 ], [ 0, %for.cond.preheader.i.i319 ], [ 0, %for.inc.i.i322 ], [ 0, %for.inc.1.i.i325 ], [ 0, %for.inc.2.i.i328 ], [ 0, %for.inc.3.i.i331 ], [ 0, %for.inc.4.i.i334 ], [ 0, %for.inc.5.i.i337 ], [ 0, %for.inc.6.i.i340 ], [ 0, %eisnan.exit.i343 ]
  %87 = load i16* %arrayidx.i126, align 2, !tbaa !5
  %and.i.i = and i16 %87, 32767
  %cmp.i.i = icmp eq i16 %and.i.i, 32767
  br i1 %cmp.i.i, label %for.cond.preheader.i.i289, label %if.end.i

for.cond.preheader.i.i289:                        ; preds = %eisneg.exit348
  %88 = load i16* %b, align 2, !tbaa !5
  %cmp5.i.i288 = icmp eq i16 %88, 0
  br i1 %cmp5.i.i288, label %for.inc.i.i292, label %eisneg.exit

for.inc.i.i292:                                   ; preds = %for.cond.preheader.i.i289
  %incdec.ptr.i.i290 = getelementptr inbounds i16* %b, i32 1
  %89 = load i16* %incdec.ptr.i.i290, align 2, !tbaa !5
  %cmp5.1.i.i291 = icmp eq i16 %89, 0
  br i1 %cmp5.1.i.i291, label %for.inc.1.i.i295, label %eisneg.exit

for.inc.1.i.i295:                                 ; preds = %for.inc.i.i292
  %incdec.ptr.1.i.i293 = getelementptr inbounds i16* %b, i32 2
  %90 = load i16* %incdec.ptr.1.i.i293, align 2, !tbaa !5
  %cmp5.2.i.i294 = icmp eq i16 %90, 0
  br i1 %cmp5.2.i.i294, label %for.inc.2.i.i298, label %eisneg.exit

for.inc.2.i.i298:                                 ; preds = %for.inc.1.i.i295
  %incdec.ptr.2.i.i296 = getelementptr inbounds i16* %b, i32 3
  %91 = load i16* %incdec.ptr.2.i.i296, align 2, !tbaa !5
  %cmp5.3.i.i297 = icmp eq i16 %91, 0
  br i1 %cmp5.3.i.i297, label %for.inc.3.i.i301, label %eisneg.exit

for.inc.3.i.i301:                                 ; preds = %for.inc.2.i.i298
  %incdec.ptr.3.i.i299 = getelementptr inbounds i16* %b, i32 4
  %92 = load i16* %incdec.ptr.3.i.i299, align 2, !tbaa !5
  %cmp5.4.i.i300 = icmp eq i16 %92, 0
  br i1 %cmp5.4.i.i300, label %for.inc.4.i.i304, label %eisneg.exit

for.inc.4.i.i304:                                 ; preds = %for.inc.3.i.i301
  %incdec.ptr.4.i.i302 = getelementptr inbounds i16* %b, i32 5
  %93 = load i16* %incdec.ptr.4.i.i302, align 2, !tbaa !5
  %cmp5.5.i.i303 = icmp eq i16 %93, 0
  br i1 %cmp5.5.i.i303, label %for.inc.5.i.i307, label %eisneg.exit

for.inc.5.i.i307:                                 ; preds = %for.inc.4.i.i304
  %incdec.ptr.5.i.i305 = getelementptr inbounds i16* %b, i32 6
  %94 = load i16* %incdec.ptr.5.i.i305, align 2, !tbaa !5
  %cmp5.6.i.i306 = icmp eq i16 %94, 0
  br i1 %cmp5.6.i.i306, label %for.inc.6.i.i310, label %eisneg.exit

for.inc.6.i.i310:                                 ; preds = %for.inc.5.i.i307
  %incdec.ptr.6.i.i308 = getelementptr inbounds i16* %b, i32 7
  %95 = load i16* %incdec.ptr.6.i.i308, align 2, !tbaa !5
  %cmp5.7.i.i309 = icmp eq i16 %95, 0
  br i1 %cmp5.7.i.i309, label %eisnan.exit.i312, label %eisneg.exit

eisnan.exit.i312:                                 ; preds = %for.inc.6.i.i310
  %incdec.ptr.7.i.i311 = getelementptr inbounds i16* %b, i32 8
  %96 = load i16* %incdec.ptr.7.i.i311, align 2, !tbaa !5
  %not.cmp5.8.i.i = icmp eq i16 %96, 0
  br i1 %not.cmp5.8.i.i, label %if.end.i, label %eisneg.exit

if.end.i:                                         ; preds = %eisnan.exit.i312, %eisneg.exit348
  %.lobit.i = lshr i16 %87, 15
  %97 = zext i16 %.lobit.i to i32
  br label %eisneg.exit

eisneg.exit:                                      ; preds = %for.cond.preheader.i.i289, %for.inc.i.i292, %for.inc.1.i.i295, %for.inc.2.i.i298, %for.inc.3.i.i301, %for.inc.4.i.i304, %for.inc.5.i.i307, %for.inc.6.i.i310, %eisnan.exit.i312, %if.end.i
  %retval.0.i313 = phi i32 [ 0, %eisnan.exit.i312 ], [ %97, %if.end.i ], [ 0, %for.cond.preheader.i.i289 ], [ 0, %for.inc.i.i292 ], [ 0, %for.inc.1.i.i295 ], [ 0, %for.inc.2.i.i298 ], [ 0, %for.inc.3.i.i301 ], [ 0, %for.inc.4.i.i304 ], [ 0, %for.inc.5.i.i307 ], [ 0, %for.inc.6.i.i310 ]
  %tobool23 = icmp eq i32 %retval.0.i346, %retval.0.i313
  %add.ptr = getelementptr inbounds i16* %c, i32 9
  %incdec.ptr.i279 = getelementptr inbounds i16* %c, i32 1
  store i16 0, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i280 = getelementptr inbounds i16* %c, i32 2
  store i16 0, i16* %incdec.ptr.i279, align 2, !tbaa !5
  %incdec.ptr.2.i281 = getelementptr inbounds i16* %c, i32 3
  store i16 0, i16* %incdec.ptr.1.i280, align 2, !tbaa !5
  %incdec.ptr.3.i282 = getelementptr inbounds i16* %c, i32 4
  store i16 0, i16* %incdec.ptr.2.i281, align 2, !tbaa !5
  %incdec.ptr.4.i283 = getelementptr inbounds i16* %c, i32 5
  store i16 0, i16* %incdec.ptr.3.i282, align 2, !tbaa !5
  %incdec.ptr.5.i284 = getelementptr inbounds i16* %c, i32 6
  store i16 0, i16* %incdec.ptr.4.i283, align 2, !tbaa !5
  %incdec.ptr.6.i285 = getelementptr inbounds i16* %c, i32 7
  store i16 0, i16* %incdec.ptr.5.i284, align 2, !tbaa !5
  %incdec.ptr.7.i286 = getelementptr inbounds i16* %c, i32 8
  store i16 0, i16* %incdec.ptr.6.i285, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i286, align 2, !tbaa !5
  %conv1.i = select i1 %tobool23, i16 32767, i16 -1
  store i16 %conv1.i, i16* %add.ptr, align 2, !tbaa !5
  br label %return

if.end27:                                         ; preds = %for.inc.6.i.i374, %for.inc.5.i.i371, %for.inc.4.i.i368, %for.inc.3.i.i365, %for.inc.2.i.i362, %for.inc.1.i.i359, %for.inc.i.i356, %for.cond.preheader.i.i353, %for.inc.7.i.i377, %lor.lhs.false17
  %arraydecay = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 0
  call fastcc void @emovi(i16* %a, i16* %arraydecay)
  %arraydecay28 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 0
  call fastcc void @emovi(i16* %b, i16* %arraydecay28)
  %arrayidx = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 1
  %98 = load i16* %arrayidx, align 2, !tbaa !5
  %conv = zext i16 %98 to i32
  %arrayidx29 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 1
  %99 = load i16* %arrayidx29, align 2, !tbaa !5
  %conv30 = zext i16 %99 to i32
  %cmp33 = icmp eq i16 %98, 0
  br i1 %cmp33, label %for.cond, label %mnzer1

for.cond:                                         ; preds = %if.end27, %for.body
  %i.0 = phi i32 [ %inc, %for.body ], [ 1, %if.end27 ]
  %cmp36 = icmp slt i32 %i.0, 12
  br i1 %cmp36, label %for.body, label %for.end

for.body:                                         ; preds = %for.cond
  %arrayidx38 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 %i.0
  %100 = load i16* %arrayidx38, align 2, !tbaa !5
  %cmp40 = icmp eq i16 %100, 0
  %inc = add nsw i32 %i.0, 1
  br i1 %cmp40, label %for.cond, label %if.then42

if.then42:                                        ; preds = %for.body
  %call44 = call fastcc i32 @enormlz(i16* %arraydecay)
  %sub = sub nsw i32 %conv, %call44
  %.pr = load i16* %arrayidx29, align 2, !tbaa !5
  br label %mnzer1

for.end:                                          ; preds = %for.cond
  %incdec.ptr.i193 = getelementptr inbounds i16* %c, i32 1
  store i16 0, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i194 = getelementptr inbounds i16* %c, i32 2
  store i16 0, i16* %incdec.ptr.i193, align 2, !tbaa !5
  %incdec.ptr.2.i195 = getelementptr inbounds i16* %c, i32 3
  store i16 0, i16* %incdec.ptr.1.i194, align 2, !tbaa !5
  %incdec.ptr.3.i196 = getelementptr inbounds i16* %c, i32 4
  store i16 0, i16* %incdec.ptr.2.i195, align 2, !tbaa !5
  %incdec.ptr.4.i197 = getelementptr inbounds i16* %c, i32 5
  store i16 0, i16* %incdec.ptr.3.i196, align 2, !tbaa !5
  %incdec.ptr.5.i198 = getelementptr inbounds i16* %c, i32 6
  store i16 0, i16* %incdec.ptr.4.i197, align 2, !tbaa !5
  %incdec.ptr.6.i199 = getelementptr inbounds i16* %c, i32 7
  store i16 0, i16* %incdec.ptr.5.i198, align 2, !tbaa !5
  %incdec.ptr.7.i200 = getelementptr inbounds i16* %c, i32 8
  store i16 0, i16* %incdec.ptr.6.i199, align 2, !tbaa !5
  %incdec.ptr.8.i201 = getelementptr inbounds i16* %c, i32 9
  store i16 0, i16* %incdec.ptr.7.i200, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i201, align 2, !tbaa !5
  br label %return

mnzer1:                                           ; preds = %if.end27, %if.then42
  %101 = phi i16 [ %99, %if.end27 ], [ %.pr, %if.then42 ]
  %lta.0 = phi i32 [ %conv, %if.end27 ], [ %sub, %if.then42 ]
  %cmp49 = icmp eq i16 %101, 0
  br i1 %cmp49, label %for.cond52, label %mnzer2

for.cond52:                                       ; preds = %mnzer1, %for.body55
  %i.1 = phi i32 [ %inc66, %for.body55 ], [ 1, %mnzer1 ]
  %cmp53 = icmp slt i32 %i.1, 12
  br i1 %cmp53, label %for.body55, label %for.end67

for.body55:                                       ; preds = %for.cond52
  %arrayidx56 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 %i.1
  %102 = load i16* %arrayidx56, align 2, !tbaa !5
  %cmp58 = icmp eq i16 %102, 0
  %inc66 = add nsw i32 %i.1, 1
  br i1 %cmp58, label %for.cond52, label %if.then60

if.then60:                                        ; preds = %for.body55
  %call62 = call fastcc i32 @enormlz(i16* %arraydecay28)
  %sub63 = sub nsw i32 %conv30, %call62
  br label %mnzer2

for.end67:                                        ; preds = %for.cond52
  %incdec.ptr.i178 = getelementptr inbounds i16* %c, i32 1
  store i16 0, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i179 = getelementptr inbounds i16* %c, i32 2
  store i16 0, i16* %incdec.ptr.i178, align 2, !tbaa !5
  %incdec.ptr.2.i180 = getelementptr inbounds i16* %c, i32 3
  store i16 0, i16* %incdec.ptr.1.i179, align 2, !tbaa !5
  %incdec.ptr.3.i181 = getelementptr inbounds i16* %c, i32 4
  store i16 0, i16* %incdec.ptr.2.i180, align 2, !tbaa !5
  %incdec.ptr.4.i182 = getelementptr inbounds i16* %c, i32 5
  store i16 0, i16* %incdec.ptr.3.i181, align 2, !tbaa !5
  %incdec.ptr.5.i183 = getelementptr inbounds i16* %c, i32 6
  store i16 0, i16* %incdec.ptr.4.i182, align 2, !tbaa !5
  %incdec.ptr.6.i184 = getelementptr inbounds i16* %c, i32 7
  store i16 0, i16* %incdec.ptr.5.i183, align 2, !tbaa !5
  %incdec.ptr.7.i185 = getelementptr inbounds i16* %c, i32 8
  store i16 0, i16* %incdec.ptr.6.i184, align 2, !tbaa !5
  %incdec.ptr.8.i186 = getelementptr inbounds i16* %c, i32 9
  store i16 0, i16* %incdec.ptr.7.i185, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i186, align 2, !tbaa !5
  br label %return

mnzer2:                                           ; preds = %mnzer1, %if.then60
  %ltb.0 = phi i32 [ %sub63, %if.then60 ], [ %conv30, %mnzer1 ]
  %call71 = call fastcc i32 @emulm(i16* %arraydecay, i16* %arraydecay28, %struct.LDPARMS* %ldp)
  %add = add i32 %lta.0, -16382
  %sub72 = add i32 %add, %ltb.0
  call fastcc void @emdnorm(i16* %arraydecay28, i32 %call71, i32 0, i32 %sub72, i32 64, %struct.LDPARMS* %ldp)
  %103 = load i16* %arraydecay, align 2, !tbaa !5
  %104 = load i16* %arraydecay28, align 2, !tbaa !5
  %not.cmp78 = icmp ne i16 %103, %104
  %.116 = sext i1 %not.cmp78 to i16
  store i16 %.116, i16* %arraydecay28, align 2
  call fastcc void @emovo(i16* %arraydecay28, i16* %c)
  br label %return

return:                                           ; preds = %mnzer2, %for.end67, %for.end, %eisneg.exit, %if.then13, %if.then3, %if.then
  ret void
}

define internal fastcc i32 @emulm(i16* nocapture %a, i16* nocapture %b, %struct.LDPARMS* nocapture %ldp) nounwind {
entry:
  %p.i = alloca [13 x i16], align 2
  %pprod = alloca [13 x i16], align 2
  %arraydecay = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 0
  %0 = load i16* %b, align 2, !tbaa !5
  store i16 %0, i16* %arraydecay, align 2, !tbaa !5
  %arrayidx3 = getelementptr inbounds i16* %b, i32 1
  %1 = load i16* %arrayidx3, align 2, !tbaa !5
  %arrayidx4 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 1
  store i16 %1, i16* %arrayidx4, align 2, !tbaa !5
  %arrayidx5 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 2
  store i16 0, i16* %arrayidx5, align 2, !tbaa !5
  %arrayidx5.1 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 3
  store i16 0, i16* %arrayidx5.1, align 2, !tbaa !5
  %arrayidx5.2 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 4
  store i16 0, i16* %arrayidx5.2, align 2, !tbaa !5
  %arrayidx5.3 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 5
  store i16 0, i16* %arrayidx5.3, align 2, !tbaa !5
  %arrayidx5.4 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 6
  store i16 0, i16* %arrayidx5.4, align 2, !tbaa !5
  %arrayidx5.5 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 7
  store i16 0, i16* %arrayidx5.5, align 2, !tbaa !5
  %arrayidx5.6 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 8
  store i16 0, i16* %arrayidx5.6, align 2, !tbaa !5
  %arrayidx5.7 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 9
  store i16 0, i16* %arrayidx5.7, align 2, !tbaa !5
  %arrayidx5.8 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 10
  store i16 0, i16* %arrayidx5.8, align 2, !tbaa !5
  %arrayidx5.9 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 11
  store i16 0, i16* %arrayidx5.9, align 2, !tbaa !5
  %arrayidx5.10 = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 12
  store i16 0, i16* %arrayidx5.10, align 2, !tbaa !5
  %arrayidx6 = getelementptr inbounds i16* %a, i32 12
  %arraydecay14 = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 0
  %2 = bitcast [13 x i16]* %p.i to i8*
  %arrayidx.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 11
  %incdec.ptr.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 12
  %arrayidx1.i = getelementptr inbounds i16* %b, i32 12
  %arrayidx25.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 2
  %arrayidx26.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 2
  %arrayidx25.1.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 3
  %arrayidx26.1.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 3
  %arrayidx25.2.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 4
  %arrayidx26.2.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 4
  %arrayidx25.3.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 5
  %arrayidx26.3.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 5
  %arrayidx25.4.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 6
  %arrayidx26.4.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 6
  %arrayidx25.5.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 7
  %arrayidx26.5.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 7
  %arrayidx25.6.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 8
  %arrayidx26.6.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 8
  %arrayidx25.7.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 9
  %arrayidx26.7.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 9
  %arrayidx25.8.i = getelementptr inbounds [13 x i16]* %p.i, i32 0, i32 10
  %arrayidx26.8.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 10
  %arrayidx26.9.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 11
  %arrayidx26.10.i = getelementptr inbounds [13 x i16]* %pprod, i32 0, i32 12
  br label %for.body10

for.cond22.preheader:                             ; preds = %if.end
  %3 = load i16* %arraydecay, align 2, !tbaa !5
  store i16 %3, i16* %b, align 2, !tbaa !5
  %4 = load i16* %arrayidx4, align 2, !tbaa !5
  store i16 %4, i16* %arrayidx3, align 2, !tbaa !5
  %5 = load i16* %arrayidx5, align 2, !tbaa !5
  %arrayidx27.2 = getelementptr inbounds i16* %b, i32 2
  store i16 %5, i16* %arrayidx27.2, align 2, !tbaa !5
  %6 = load i16* %arrayidx5.1, align 2, !tbaa !5
  %arrayidx27.3 = getelementptr inbounds i16* %b, i32 3
  store i16 %6, i16* %arrayidx27.3, align 2, !tbaa !5
  %7 = load i16* %arrayidx5.2, align 2, !tbaa !5
  %arrayidx27.4 = getelementptr inbounds i16* %b, i32 4
  store i16 %7, i16* %arrayidx27.4, align 2, !tbaa !5
  %8 = load i16* %arrayidx5.3, align 2, !tbaa !5
  %arrayidx27.5 = getelementptr inbounds i16* %b, i32 5
  store i16 %8, i16* %arrayidx27.5, align 2, !tbaa !5
  %9 = load i16* %arrayidx5.4, align 2, !tbaa !5
  %arrayidx27.6 = getelementptr inbounds i16* %b, i32 6
  store i16 %9, i16* %arrayidx27.6, align 2, !tbaa !5
  %10 = load i16* %arrayidx5.5, align 2, !tbaa !5
  %arrayidx27.7 = getelementptr inbounds i16* %b, i32 7
  store i16 %10, i16* %arrayidx27.7, align 2, !tbaa !5
  %11 = load i16* %arrayidx5.6, align 2, !tbaa !5
  %arrayidx27.8 = getelementptr inbounds i16* %b, i32 8
  store i16 %11, i16* %arrayidx27.8, align 2, !tbaa !5
  %12 = load i16* %arrayidx5.7, align 2, !tbaa !5
  %arrayidx27.9 = getelementptr inbounds i16* %b, i32 9
  store i16 %12, i16* %arrayidx27.9, align 2, !tbaa !5
  %13 = load i16* %arrayidx5.8, align 2, !tbaa !5
  %arrayidx27.10 = getelementptr inbounds i16* %b, i32 10
  store i16 %13, i16* %arrayidx27.10, align 2, !tbaa !5
  %14 = load i16* %arrayidx5.9, align 2, !tbaa !5
  %arrayidx27.11 = getelementptr inbounds i16* %b, i32 11
  store i16 %14, i16* %arrayidx27.11, align 2, !tbaa !5
  %15 = load i16* %arrayidx5.10, align 2, !tbaa !5
  store i16 %15, i16* %arrayidx1.i, align 2, !tbaa !5
  %conv31 = zext i16 %or51 to i32
  ret i32 %conv31

for.body10:                                       ; preds = %if.end, %entry
  %16 = phi i16 [ 0, %entry ], [ %41, %if.end ]
  %17 = phi i16 [ 0, %entry ], [ %42, %if.end ]
  %18 = phi i16 [ 0, %entry ], [ %43, %if.end ]
  %19 = phi i16 [ 0, %entry ], [ %44, %if.end ]
  %20 = phi i16 [ 0, %entry ], [ %45, %if.end ]
  %21 = phi i16 [ 0, %entry ], [ %46, %if.end ]
  %22 = phi i16 [ 0, %entry ], [ %47, %if.end ]
  %23 = phi i16 [ 0, %entry ], [ %48, %if.end ]
  %24 = phi i16 [ 0, %entry ], [ %49, %if.end ]
  %25 = phi i16 [ 0, %entry ], [ %50, %if.end ]
  %p.056 = phi i16* [ %arrayidx6, %entry ], [ %incdec.ptr, %if.end ]
  %i.155 = phi i32 [ 3, %entry ], [ %inc20, %if.end ]
  %j.054 = phi i16 [ 0, %entry ], [ %or51, %if.end ]
  %26 = load i16* %p.056, align 2, !tbaa !5
  %cmp11 = icmp eq i16 %26, 0
  %incdec.ptr = getelementptr inbounds i16* %p.056, i32 -1
  br i1 %cmp11, label %if.end, label %if.else

if.else:                                          ; preds = %for.body10
  call void @llvm.lifetime.start(i64 -1, i8* %2)
  %conv.i = zext i16 %26 to i32
  store i16 0, i16* %arrayidx.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.i, align 2, !tbaa !5
  br label %for.body.i

for.body.i:                                       ; preds = %for.inc.i, %if.else
  %i.052.i = phi i32 [ 3, %if.else ], [ %inc.i, %for.inc.i ]
  %pp.051.i = phi i16* [ %incdec.ptr.i, %if.else ], [ %pp.1.i, %for.inc.i ]
  %ps.050.i = phi i16* [ %arrayidx1.i, %if.else ], [ %ps.1.i, %for.inc.i ]
  %27 = load i16* %ps.050.i, align 2, !tbaa !5
  %cmp4.i = icmp eq i16 %27, 0
  br i1 %cmp4.i, label %if.then.i, label %if.else.i

if.then.i:                                        ; preds = %for.body.i
  %incdec.ptr7.i = getelementptr inbounds i16* %pp.051.i, i32 -1
  %add.ptr.i = getelementptr inbounds i16* %pp.051.i, i32 -2
  store i16 0, i16* %add.ptr.i, align 2, !tbaa !5
  br label %for.inc.i

if.else.i:                                        ; preds = %for.body.i
  %conv3.i = zext i16 %27 to i32
  %mul.i = mul i32 %conv3.i, %conv.i
  %and.i = and i32 %mul.i, 65535
  %28 = load i16* %pp.051.i, align 2, !tbaa !5
  %conv10.i = zext i16 %28 to i32
  %add.i = add i32 %conv10.i, %and.i
  %conv11.i = trunc i32 %add.i to i16
  %incdec.ptr12.i = getelementptr inbounds i16* %pp.051.i, i32 -1
  store i16 %conv11.i, i16* %pp.051.i, align 2, !tbaa !5
  %shr.i = lshr i32 %add.i, 16
  %shr13.i = lshr i32 %mul.i, 16
  %29 = load i16* %incdec.ptr12.i, align 2, !tbaa !5
  %conv15.i = zext i16 %29 to i32
  %add14.i = add i32 %conv15.i, %shr13.i
  %add16.i = add i32 %add14.i, %shr.i
  %conv17.i = trunc i32 %add16.i to i16
  store i16 %conv17.i, i16* %incdec.ptr12.i, align 2, !tbaa !5
  %shr18.i = lshr i32 %add16.i, 16
  %conv19.i = trunc i32 %shr18.i to i16
  %add.ptr20.i = getelementptr inbounds i16* %pp.051.i, i32 -2
  store i16 %conv19.i, i16* %add.ptr20.i, align 2, !tbaa !5
  br label %for.inc.i

for.inc.i:                                        ; preds = %if.else.i, %if.then.i
  %pp.1.i = phi i16* [ %incdec.ptr7.i, %if.then.i ], [ %incdec.ptr12.i, %if.else.i ]
  %ps.1.i = getelementptr inbounds i16* %ps.050.i, i32 -1
  %inc.i = add nsw i32 %i.052.i, 1
  %exitcond.i = icmp eq i32 %inc.i, 13
  br i1 %exitcond.i, label %m16m.exit, label %for.body.i

m16m.exit:                                        ; preds = %for.inc.i
  %30 = load i16* %arrayidx25.i, align 2, !tbaa !5
  store i16 %30, i16* %arrayidx26.i, align 2, !tbaa !5
  %31 = load i16* %arrayidx25.1.i, align 2, !tbaa !5
  store i16 %31, i16* %arrayidx26.1.i, align 2, !tbaa !5
  %32 = load i16* %arrayidx25.2.i, align 2, !tbaa !5
  store i16 %32, i16* %arrayidx26.2.i, align 2, !tbaa !5
  %33 = load i16* %arrayidx25.3.i, align 2, !tbaa !5
  store i16 %33, i16* %arrayidx26.3.i, align 2, !tbaa !5
  %34 = load i16* %arrayidx25.4.i, align 2, !tbaa !5
  store i16 %34, i16* %arrayidx26.4.i, align 2, !tbaa !5
  %35 = load i16* %arrayidx25.5.i, align 2, !tbaa !5
  store i16 %35, i16* %arrayidx26.5.i, align 2, !tbaa !5
  %36 = load i16* %arrayidx25.6.i, align 2, !tbaa !5
  store i16 %36, i16* %arrayidx26.6.i, align 2, !tbaa !5
  %37 = load i16* %arrayidx25.7.i, align 2, !tbaa !5
  store i16 %37, i16* %arrayidx26.7.i, align 2, !tbaa !5
  %38 = load i16* %arrayidx25.8.i, align 2, !tbaa !5
  store i16 %38, i16* %arrayidx26.8.i, align 2, !tbaa !5
  %39 = load i16* %arrayidx.i, align 2, !tbaa !5
  store i16 %39, i16* %arrayidx26.9.i, align 2, !tbaa !5
  %40 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  store i16 %40, i16* %arrayidx26.10.i, align 2, !tbaa !5
  call void @llvm.lifetime.end(i64 -1, i8* %2)
  call fastcc void @eaddm(i16* %arraydecay14, i16* %arraydecay)
  %.pre = load i16* %arrayidx5.10, align 2, !tbaa !5
  %.pre59 = load i16* %arrayidx5.9, align 2, !tbaa !5
  %.pre60 = load i16* %arrayidx5.8, align 2, !tbaa !5
  %.pre61 = load i16* %arrayidx5.7, align 2, !tbaa !5
  %.pre62 = load i16* %arrayidx5.6, align 2, !tbaa !5
  %.pre63 = load i16* %arrayidx5.5, align 2, !tbaa !5
  %.pre64 = load i16* %arrayidx5.4, align 2, !tbaa !5
  %.pre65 = load i16* %arrayidx5.3, align 2, !tbaa !5
  %.pre66 = load i16* %arrayidx5.2, align 2, !tbaa !5
  %.pre67 = load i16* %arrayidx5.1, align 2, !tbaa !5
  %.pre68 = load i16* %arrayidx5, align 2, !tbaa !5
  br label %if.end

if.end:                                           ; preds = %for.body10, %m16m.exit
  %41 = phi i16 [ 0, %for.body10 ], [ %.pre68, %m16m.exit ]
  %42 = phi i16 [ %16, %for.body10 ], [ %.pre67, %m16m.exit ]
  %43 = phi i16 [ %17, %for.body10 ], [ %.pre66, %m16m.exit ]
  %44 = phi i16 [ %18, %for.body10 ], [ %.pre65, %m16m.exit ]
  %45 = phi i16 [ %19, %for.body10 ], [ %.pre64, %m16m.exit ]
  %46 = phi i16 [ %20, %for.body10 ], [ %.pre63, %m16m.exit ]
  %47 = phi i16 [ %21, %for.body10 ], [ %.pre62, %m16m.exit ]
  %48 = phi i16 [ %22, %for.body10 ], [ %.pre61, %m16m.exit ]
  %49 = phi i16 [ %23, %for.body10 ], [ %.pre60, %m16m.exit ]
  %50 = phi i16 [ %24, %for.body10 ], [ %.pre59, %m16m.exit ]
  %51 = phi i16 [ %25, %for.body10 ], [ %.pre, %m16m.exit ]
  %or51 = or i16 %51, %j.054
  store i16 %50, i16* %arrayidx5.10, align 2, !tbaa !5
  store i16 %49, i16* %arrayidx5.9, align 2, !tbaa !5
  store i16 %48, i16* %arrayidx5.8, align 2, !tbaa !5
  store i16 %47, i16* %arrayidx5.7, align 2, !tbaa !5
  store i16 %46, i16* %arrayidx5.6, align 2, !tbaa !5
  store i16 %45, i16* %arrayidx5.5, align 2, !tbaa !5
  store i16 %44, i16* %arrayidx5.4, align 2, !tbaa !5
  store i16 %43, i16* %arrayidx5.3, align 2, !tbaa !5
  store i16 %42, i16* %arrayidx5.2, align 2, !tbaa !5
  store i16 %41, i16* %arrayidx5.1, align 2, !tbaa !5
  store i16 0, i16* %arrayidx5, align 2, !tbaa !5
  %inc20 = add nsw i32 %i.155, 1
  %exitcond = icmp eq i32 %inc20, 13
  br i1 %exitcond, label %for.cond22.preheader, label %for.body10
}

declare void @free(i8*)

define internal fastcc i32 @eshift(i16* %x, i32 %sc) nounwind {
entry:
  %cmp = icmp eq i32 %sc, 0
  br i1 %cmp, label %return, label %if.end

if.end:                                           ; preds = %entry
  %add.ptr1 = getelementptr inbounds i16* %x, i32 12
  %cmp2 = icmp slt i32 %sc, 0
  br i1 %cmp2, label %if.then3, label %while.cond29.preheader

while.cond29.preheader:                           ; preds = %if.end
  %cmp30168 = icmp sgt i32 %sc, 15
  br i1 %cmp30168, label %while.body32.lr.ph, label %while.cond35.preheader

while.body32.lr.ph:                               ; preds = %while.cond29.preheader
  %add.ptr1.i = getelementptr inbounds i16* %x, i32 3
  %incdec.ptr.i92 = getelementptr inbounds i16* %x, i32 4
  %incdec.ptr.1.i94 = getelementptr inbounds i16* %x, i32 5
  %incdec.ptr.2.i96 = getelementptr inbounds i16* %x, i32 6
  %incdec.ptr.3.i98 = getelementptr inbounds i16* %x, i32 7
  %incdec.ptr.4.i100 = getelementptr inbounds i16* %x, i32 8
  %incdec.ptr.5.i102 = getelementptr inbounds i16* %x, i32 9
  %incdec.ptr.6.i104 = getelementptr inbounds i16* %x, i32 10
  %incdec.ptr.7.i106 = getelementptr inbounds i16* %x, i32 11
  %add.ptr1.i.promoted = load i16* %add.ptr1.i, align 2
  %incdec.ptr.i92.promoted = load i16* %incdec.ptr.i92, align 2
  %incdec.ptr.1.i94.promoted = load i16* %incdec.ptr.1.i94, align 2
  %incdec.ptr.2.i96.promoted = load i16* %incdec.ptr.2.i96, align 2
  %incdec.ptr.3.i98.promoted = load i16* %incdec.ptr.3.i98, align 2
  %incdec.ptr.4.i100.promoted = load i16* %incdec.ptr.4.i100, align 2
  %incdec.ptr.5.i102.promoted = load i16* %incdec.ptr.5.i102, align 2
  %incdec.ptr.6.i104.promoted = load i16* %incdec.ptr.6.i104, align 2
  %incdec.ptr.7.i106.promoted = load i16* %incdec.ptr.7.i106, align 2
  %add.ptr1.promoted171 = load i16* %add.ptr1, align 2
  br label %while.body32

if.then3:                                         ; preds = %if.end
  %sub = sub nsw i32 0, %sc
  %cmp4147 = icmp sgt i32 %sub, 15
  br i1 %cmp4147, label %while.body.lr.ph, label %while.cond8.preheader

while.body.lr.ph:                                 ; preds = %if.then3
  %incdec.ptr.i = getelementptr inbounds i16* %x, i32 11
  %incdec.ptr.1.i = getelementptr inbounds i16* %x, i32 10
  %incdec.ptr.2.i = getelementptr inbounds i16* %x, i32 9
  %incdec.ptr.3.i = getelementptr inbounds i16* %x, i32 8
  %incdec.ptr.4.i = getelementptr inbounds i16* %x, i32 7
  %incdec.ptr.5.i = getelementptr inbounds i16* %x, i32 6
  %incdec.ptr.6.i = getelementptr inbounds i16* %x, i32 5
  %incdec.ptr.7.i = getelementptr inbounds i16* %x, i32 4
  %incdec.ptr.8.i = getelementptr inbounds i16* %x, i32 3
  %incdec.ptr.9.i = getelementptr inbounds i16* %x, i32 2
  %add.ptr1.promoted152 = load i16* %add.ptr1, align 2
  %incdec.ptr.i.promoted = load i16* %incdec.ptr.i, align 2
  %incdec.ptr.1.i.promoted = load i16* %incdec.ptr.1.i, align 2
  %incdec.ptr.2.i.promoted = load i16* %incdec.ptr.2.i, align 2
  %incdec.ptr.3.i.promoted = load i16* %incdec.ptr.3.i, align 2
  %incdec.ptr.4.i.promoted = load i16* %incdec.ptr.4.i, align 2
  %incdec.ptr.5.i.promoted = load i16* %incdec.ptr.5.i, align 2
  %incdec.ptr.6.i.promoted = load i16* %incdec.ptr.6.i, align 2
  %incdec.ptr.7.i.promoted = load i16* %incdec.ptr.7.i, align 2
  %incdec.ptr.8.i.promoted = load i16* %incdec.ptr.8.i, align 2
  %incdec.ptr.9.i.promoted = load i16* %incdec.ptr.9.i, align 2
  br label %while.body

while.cond.while.cond8.preheader_crit_edge:       ; preds = %while.body
  %0 = sub i32 0, %sc
  %1 = and i32 %0, 15
  store i16 %11, i16* %add.ptr1, align 2
  store i16 %10, i16* %incdec.ptr.i, align 2
  store i16 %9, i16* %incdec.ptr.1.i, align 2
  store i16 %8, i16* %incdec.ptr.2.i, align 2
  store i16 %7, i16* %incdec.ptr.3.i, align 2
  store i16 %6, i16* %incdec.ptr.4.i, align 2
  store i16 %5, i16* %incdec.ptr.5.i, align 2
  store i16 %4, i16* %incdec.ptr.6.i, align 2
  store i16 %3, i16* %incdec.ptr.7.i, align 2
  store i16 %2, i16* %incdec.ptr.8.i, align 2
  store i16 0, i16* %incdec.ptr.9.i, align 2
  br label %while.cond8.preheader

while.cond8.preheader:                            ; preds = %while.cond.while.cond8.preheader_crit_edge, %if.then3
  %lost.0.lcssa = phi i16 [ %or77, %while.cond.while.cond8.preheader_crit_edge ], [ 0, %if.then3 ]
  %sc.addr.0.lcssa = phi i32 [ %1, %while.cond.while.cond8.preheader_crit_edge ], [ %sub, %if.then3 ]
  %cmp9132 = icmp sgt i32 %sc.addr.0.lcssa, 7
  br i1 %cmp9132, label %while.body11.lr.ph, label %while.cond18.preheader

while.body11.lr.ph:                               ; preds = %while.cond8.preheader
  %add.ptr.i79 = getelementptr inbounds i16* %x, i32 2
  %incdec.ptr.i81 = getelementptr inbounds i16* %x, i32 3
  %incdec.ptr.1.i82 = getelementptr inbounds i16* %x, i32 4
  %incdec.ptr.2.i83 = getelementptr inbounds i16* %x, i32 5
  %incdec.ptr.3.i84 = getelementptr inbounds i16* %x, i32 6
  %incdec.ptr.4.i85 = getelementptr inbounds i16* %x, i32 7
  %incdec.ptr.5.i86 = getelementptr inbounds i16* %x, i32 8
  %incdec.ptr.6.i87 = getelementptr inbounds i16* %x, i32 9
  %incdec.ptr.7.i88 = getelementptr inbounds i16* %x, i32 10
  %incdec.ptr.8.i89 = getelementptr inbounds i16* %x, i32 11
  %add.ptr1.promoted = load i16* %add.ptr1, align 2
  %add.ptr.i79.promoted = load i16* %add.ptr.i79, align 2
  %incdec.ptr.i81.promoted = load i16* %incdec.ptr.i81, align 2
  %incdec.ptr.1.i82.promoted = load i16* %incdec.ptr.1.i82, align 2
  %incdec.ptr.2.i83.promoted = load i16* %incdec.ptr.2.i83, align 2
  %incdec.ptr.3.i84.promoted = load i16* %incdec.ptr.3.i84, align 2
  %incdec.ptr.4.i85.promoted = load i16* %incdec.ptr.4.i85, align 2
  %incdec.ptr.5.i86.promoted = load i16* %incdec.ptr.5.i86, align 2
  %incdec.ptr.6.i87.promoted = load i16* %incdec.ptr.6.i87, align 2
  %incdec.ptr.7.i88.promoted = load i16* %incdec.ptr.7.i88, align 2
  %incdec.ptr.8.i89.promoted = load i16* %incdec.ptr.8.i89, align 2
  br label %while.body11

while.body:                                       ; preds = %while.body.lr.ph, %while.body
  %2 = phi i16 [ %incdec.ptr.9.i.promoted, %while.body.lr.ph ], [ 0, %while.body ]
  %3 = phi i16 [ %incdec.ptr.8.i.promoted, %while.body.lr.ph ], [ %2, %while.body ]
  %4 = phi i16 [ %incdec.ptr.7.i.promoted, %while.body.lr.ph ], [ %3, %while.body ]
  %5 = phi i16 [ %incdec.ptr.6.i.promoted, %while.body.lr.ph ], [ %4, %while.body ]
  %6 = phi i16 [ %incdec.ptr.5.i.promoted, %while.body.lr.ph ], [ %5, %while.body ]
  %7 = phi i16 [ %incdec.ptr.4.i.promoted, %while.body.lr.ph ], [ %6, %while.body ]
  %8 = phi i16 [ %incdec.ptr.3.i.promoted, %while.body.lr.ph ], [ %7, %while.body ]
  %9 = phi i16 [ %incdec.ptr.2.i.promoted, %while.body.lr.ph ], [ %8, %while.body ]
  %10 = phi i16 [ %incdec.ptr.1.i.promoted, %while.body.lr.ph ], [ %9, %while.body ]
  %11 = phi i16 [ %incdec.ptr.i.promoted, %while.body.lr.ph ], [ %10, %while.body ]
  %12 = phi i16 [ %add.ptr1.promoted152, %while.body.lr.ph ], [ %11, %while.body ]
  %lost.0149 = phi i16 [ 0, %while.body.lr.ph ], [ %or77, %while.body ]
  %sc.addr.0148 = phi i32 [ %sub, %while.body.lr.ph ], [ %sub7, %while.body ]
  %or77 = or i16 %12, %lost.0149
  %sub7 = add nsw i32 %sc.addr.0148, -16
  %cmp4 = icmp sgt i32 %sub7, 15
  br i1 %cmp4, label %while.body, label %while.cond.while.cond8.preheader_crit_edge

while.cond8.while.cond18.preheader_crit_edge:     ; preds = %while.body11
  %13 = and i32 %sc.addr.0.lcssa, 7
  store i16 %conv6.10.i, i16* %add.ptr1, align 2
  store i16 %shr12.i, i16* %add.ptr.i79, align 2
  store i16 %conv6.1.i, i16* %incdec.ptr.i81, align 2
  store i16 %conv6.2.i, i16* %incdec.ptr.1.i82, align 2
  store i16 %conv6.3.i, i16* %incdec.ptr.2.i83, align 2
  store i16 %conv6.4.i, i16* %incdec.ptr.3.i84, align 2
  store i16 %conv6.5.i, i16* %incdec.ptr.4.i85, align 2
  store i16 %conv6.6.i, i16* %incdec.ptr.5.i86, align 2
  store i16 %conv6.7.i, i16* %incdec.ptr.6.i87, align 2
  store i16 %conv6.8.i, i16* %incdec.ptr.7.i88, align 2
  store i16 %conv6.9.i, i16* %incdec.ptr.8.i89, align 2
  br label %while.cond18.preheader

while.cond18.preheader:                           ; preds = %while.cond8.while.cond18.preheader_crit_edge, %while.cond8.preheader
  %lost.1.lcssa = phi i16 [ %conv15, %while.cond8.while.cond18.preheader_crit_edge ], [ %lost.0.lcssa, %while.cond8.preheader ]
  %sc.addr.1.lcssa = phi i32 [ %13, %while.cond8.while.cond18.preheader_crit_edge ], [ %sc.addr.0.lcssa, %while.cond8.preheader ]
  %cmp19129 = icmp sgt i32 %sc.addr.1.lcssa, 0
  br i1 %cmp19129, label %while.body21.lr.ph, label %if.end47

while.body21.lr.ph:                               ; preds = %while.cond18.preheader
  %add.ptr.i110 = getelementptr inbounds i16* %x, i32 2
  br label %while.body21

while.body11:                                     ; preds = %while.body11.lr.ph, %while.body11
  %conv6.9.i146 = phi i16 [ %incdec.ptr.8.i89.promoted, %while.body11.lr.ph ], [ %conv6.9.i, %while.body11 ]
  %conv6.8.i145 = phi i16 [ %incdec.ptr.7.i88.promoted, %while.body11.lr.ph ], [ %conv6.8.i, %while.body11 ]
  %conv6.7.i144 = phi i16 [ %incdec.ptr.6.i87.promoted, %while.body11.lr.ph ], [ %conv6.7.i, %while.body11 ]
  %conv6.6.i143 = phi i16 [ %incdec.ptr.5.i86.promoted, %while.body11.lr.ph ], [ %conv6.6.i, %while.body11 ]
  %conv6.5.i142 = phi i16 [ %incdec.ptr.4.i85.promoted, %while.body11.lr.ph ], [ %conv6.5.i, %while.body11 ]
  %conv6.4.i141 = phi i16 [ %incdec.ptr.3.i84.promoted, %while.body11.lr.ph ], [ %conv6.4.i, %while.body11 ]
  %conv6.3.i140 = phi i16 [ %incdec.ptr.2.i83.promoted, %while.body11.lr.ph ], [ %conv6.3.i, %while.body11 ]
  %conv6.2.i139 = phi i16 [ %incdec.ptr.1.i82.promoted, %while.body11.lr.ph ], [ %conv6.2.i, %while.body11 ]
  %conv6.1.i138 = phi i16 [ %incdec.ptr.i81.promoted, %while.body11.lr.ph ], [ %conv6.1.i, %while.body11 ]
  %shr12.i137 = phi i16 [ %add.ptr.i79.promoted, %while.body11.lr.ph ], [ %shr12.i, %while.body11 ]
  %14 = phi i16 [ %add.ptr1.promoted, %while.body11.lr.ph ], [ %conv6.10.i, %while.body11 ]
  %lost.1134 = phi i16 [ %lost.0.lcssa, %while.body11.lr.ph ], [ %conv15, %while.body11 ]
  %sc.addr.1133 = phi i32 [ %sc.addr.0.lcssa, %while.body11.lr.ph ], [ %sub16, %while.body11 ]
  %conv12 = zext i16 %14 to i32
  %and = and i32 %conv12, 255
  %conv13 = zext i16 %lost.1134 to i32
  %or14 = or i32 %and, %conv13
  %conv15 = trunc i32 %or14 to i16
  %conv.i = zext i16 %shr12.i137 to i32
  %shl.i80 = shl nuw nsw i32 %conv.i, 8
  %shr12.i = lshr i16 %shr12.i137, 8
  %conv.1.i = zext i16 %conv6.1.i138 to i32
  %shl.1.i = shl nuw nsw i32 %conv.1.i, 8
  %shr12.1.i = lshr i16 %conv6.1.i138, 8
  %conv5.1.i = zext i16 %shr12.1.i to i32
  %or.1.i = or i32 %conv5.1.i, %shl.i80
  %conv6.1.i = trunc i32 %or.1.i to i16
  %conv.2.i = zext i16 %conv6.2.i139 to i32
  %shl.2.i = shl nuw nsw i32 %conv.2.i, 8
  %shr12.2.i = lshr i16 %conv6.2.i139, 8
  %conv5.2.i = zext i16 %shr12.2.i to i32
  %or.2.i = or i32 %conv5.2.i, %shl.1.i
  %conv6.2.i = trunc i32 %or.2.i to i16
  %conv.3.i = zext i16 %conv6.3.i140 to i32
  %shl.3.i = shl nuw nsw i32 %conv.3.i, 8
  %shr12.3.i = lshr i16 %conv6.3.i140, 8
  %conv5.3.i = zext i16 %shr12.3.i to i32
  %or.3.i = or i32 %conv5.3.i, %shl.2.i
  %conv6.3.i = trunc i32 %or.3.i to i16
  %conv.4.i = zext i16 %conv6.4.i141 to i32
  %shl.4.i = shl nuw nsw i32 %conv.4.i, 8
  %shr12.4.i = lshr i16 %conv6.4.i141, 8
  %conv5.4.i = zext i16 %shr12.4.i to i32
  %or.4.i = or i32 %conv5.4.i, %shl.3.i
  %conv6.4.i = trunc i32 %or.4.i to i16
  %conv.5.i = zext i16 %conv6.5.i142 to i32
  %shl.5.i = shl nuw nsw i32 %conv.5.i, 8
  %shr12.5.i = lshr i16 %conv6.5.i142, 8
  %conv5.5.i = zext i16 %shr12.5.i to i32
  %or.5.i = or i32 %conv5.5.i, %shl.4.i
  %conv6.5.i = trunc i32 %or.5.i to i16
  %conv.6.i = zext i16 %conv6.6.i143 to i32
  %shl.6.i = shl nuw nsw i32 %conv.6.i, 8
  %shr12.6.i = lshr i16 %conv6.6.i143, 8
  %conv5.6.i = zext i16 %shr12.6.i to i32
  %or.6.i = or i32 %conv5.6.i, %shl.5.i
  %conv6.6.i = trunc i32 %or.6.i to i16
  %conv.7.i = zext i16 %conv6.7.i144 to i32
  %shl.7.i = shl nuw nsw i32 %conv.7.i, 8
  %shr12.7.i = lshr i16 %conv6.7.i144, 8
  %conv5.7.i = zext i16 %shr12.7.i to i32
  %or.7.i = or i32 %conv5.7.i, %shl.6.i
  %conv6.7.i = trunc i32 %or.7.i to i16
  %conv.8.i = zext i16 %conv6.8.i145 to i32
  %shl.8.i = shl nuw nsw i32 %conv.8.i, 8
  %shr12.8.i = lshr i16 %conv6.8.i145, 8
  %conv5.8.i = zext i16 %shr12.8.i to i32
  %or.8.i = or i32 %conv5.8.i, %shl.7.i
  %conv6.8.i = trunc i32 %or.8.i to i16
  %conv.9.i = zext i16 %conv6.9.i146 to i32
  %shl.9.i = shl nuw nsw i32 %conv.9.i, 8
  %shr12.9.i = lshr i16 %conv6.9.i146, 8
  %conv5.9.i = zext i16 %shr12.9.i to i32
  %or.9.i = or i32 %conv5.9.i, %shl.8.i
  %conv6.9.i = trunc i32 %or.9.i to i16
  %shr12.10.i = lshr i16 %14, 8
  %conv5.10.i = zext i16 %shr12.10.i to i32
  %or.10.i = or i32 %conv5.10.i, %shl.9.i
  %conv6.10.i = trunc i32 %or.10.i to i16
  %sub16 = add nsw i32 %sc.addr.1133, -8
  %cmp9 = icmp sgt i32 %sub16, 7
  br i1 %cmp9, label %while.body11, label %while.cond8.while.cond18.preheader_crit_edge

while.body21:                                     ; preds = %eshdn1.exit, %while.body21.lr.ph
  %lost.2131 = phi i16 [ %lost.1.lcssa, %while.body21.lr.ph ], [ %conv26, %eshdn1.exit ]
  %sc.addr.2130 = phi i32 [ %sc.addr.1.lcssa, %while.body21.lr.ph ], [ %sub27, %eshdn1.exit ]
  %15 = load i16* %add.ptr1, align 2, !tbaa !5
  %conv22 = zext i16 %15 to i32
  %and23 = and i32 %conv22, 1
  %conv24 = zext i16 %lost.2131 to i32
  %or25 = or i32 %and23, %conv24
  br label %for.body.i115

for.body.i115:                                    ; preds = %if.end12.i.for.body.i115_crit_edge, %while.body21
  %i.025.i111 = phi i32 [ 3, %while.body21 ], [ %phitmp201, %if.end12.i.for.body.i115_crit_edge ]
  %bits.024.i112 = phi i16 [ 0, %while.body21 ], [ %conv14.i, %if.end12.i.for.body.i115_crit_edge ]
  %x.addr.023.i113 = phi i16* [ %add.ptr.i110, %while.body21 ], [ %incdec.ptr.i126, %if.end12.i.for.body.i115_crit_edge ]
  %16 = load i16* %x.addr.023.i113, align 2, !tbaa !5
  %and.i = and i16 %16, 1
  %tobool.i114 = icmp eq i16 %and.i, 0
  br i1 %tobool.i114, label %if.end.i123, label %if.then.i119

if.then.i119:                                     ; preds = %for.body.i115
  %conv1.i116 = zext i16 %bits.024.i112 to i32
  %or.i117 = or i32 %conv1.i116, 1
  %conv2.i118 = trunc i32 %or.i117 to i16
  br label %if.end.i123

if.end.i123:                                      ; preds = %if.then.i119, %for.body.i115
  %bits.1.i120 = phi i16 [ %conv2.i118, %if.then.i119 ], [ %bits.024.i112, %for.body.i115 ]
  %shr22.i = lshr i16 %16, 1
  %conv5.i121 = zext i16 %bits.1.i120 to i32
  %and6.i122 = and i32 %conv5.i121, 2
  %tobool7.i = icmp eq i32 %and6.i122, 0
  br i1 %tobool7.i, label %if.end12.i, label %if.then8.i

if.then8.i:                                       ; preds = %if.end.i123
  %conv9.i = zext i16 %shr22.i to i32
  %or10.i = or i32 %conv9.i, 32768
  %conv11.i = trunc i32 %or10.i to i16
  br label %if.end12.i

if.end12.i:                                       ; preds = %if.then8.i, %if.end.i123
  %storemerge.i124 = phi i16 [ %conv11.i, %if.then8.i ], [ %shr22.i, %if.end.i123 ]
  store i16 %storemerge.i124, i16* %x.addr.023.i113, align 2
  %exitcond.i128 = icmp eq i32 %i.025.i111, 13
  br i1 %exitcond.i128, label %eshdn1.exit, label %if.end12.i.for.body.i115_crit_edge

if.end12.i.for.body.i115_crit_edge:               ; preds = %if.end12.i
  %shl.i125 = shl nuw nsw i32 %conv5.i121, 1
  %incdec.ptr.i126 = getelementptr inbounds i16* %x.addr.023.i113, i32 1
  %conv14.i = trunc i32 %shl.i125 to i16
  %phitmp201 = add i32 %i.025.i111, 1
  br label %for.body.i115

eshdn1.exit:                                      ; preds = %if.end12.i
  %conv26 = trunc i32 %or25 to i16
  %sub27 = add nsw i32 %sc.addr.2130, -1
  %cmp19 = icmp sgt i32 %sub27, 0
  br i1 %cmp19, label %while.body21, label %if.end47

while.cond29.while.cond35.preheader_crit_edge:    ; preds = %while.body32
  %add.ptr.i91 = getelementptr inbounds i16* %x, i32 2
  %17 = and i32 %sc, 15
  store i16 %26, i16* %add.ptr1.i, align 2
  store i16 %27, i16* %add.ptr.i91, align 2
  store i16 %25, i16* %incdec.ptr.i92, align 2
  store i16 %24, i16* %incdec.ptr.1.i94, align 2
  store i16 %23, i16* %incdec.ptr.2.i96, align 2
  store i16 %22, i16* %incdec.ptr.3.i98, align 2
  store i16 %21, i16* %incdec.ptr.4.i100, align 2
  store i16 %20, i16* %incdec.ptr.5.i102, align 2
  store i16 %19, i16* %incdec.ptr.6.i104, align 2
  store i16 %18, i16* %incdec.ptr.7.i106, align 2
  store i16 0, i16* %add.ptr1, align 2
  br label %while.cond35.preheader

while.cond35.preheader:                           ; preds = %while.cond29.while.cond35.preheader_crit_edge, %while.cond29.preheader
  %sc.addr.3.lcssa = phi i32 [ %17, %while.cond29.while.cond35.preheader_crit_edge ], [ %sc, %while.cond29.preheader ]
  %cmp36165 = icmp sgt i32 %sc.addr.3.lcssa, 7
  br i1 %cmp36165, label %while.body38, label %while.cond41.preheader

while.body32:                                     ; preds = %while.body32.lr.ph, %while.body32
  %18 = phi i16 [ %add.ptr1.promoted171, %while.body32.lr.ph ], [ 0, %while.body32 ]
  %19 = phi i16 [ %incdec.ptr.7.i106.promoted, %while.body32.lr.ph ], [ %18, %while.body32 ]
  %20 = phi i16 [ %incdec.ptr.6.i104.promoted, %while.body32.lr.ph ], [ %19, %while.body32 ]
  %21 = phi i16 [ %incdec.ptr.5.i102.promoted, %while.body32.lr.ph ], [ %20, %while.body32 ]
  %22 = phi i16 [ %incdec.ptr.4.i100.promoted, %while.body32.lr.ph ], [ %21, %while.body32 ]
  %23 = phi i16 [ %incdec.ptr.3.i98.promoted, %while.body32.lr.ph ], [ %22, %while.body32 ]
  %24 = phi i16 [ %incdec.ptr.2.i96.promoted, %while.body32.lr.ph ], [ %23, %while.body32 ]
  %25 = phi i16 [ %incdec.ptr.1.i94.promoted, %while.body32.lr.ph ], [ %24, %while.body32 ]
  %26 = phi i16 [ %incdec.ptr.i92.promoted, %while.body32.lr.ph ], [ %25, %while.body32 ]
  %27 = phi i16 [ %add.ptr1.i.promoted, %while.body32.lr.ph ], [ %26, %while.body32 ]
  %sc.addr.3169 = phi i32 [ %sc, %while.body32.lr.ph ], [ %sub33, %while.body32 ]
  %sub33 = add nsw i32 %sc.addr.3169, -16
  %cmp30 = icmp sgt i32 %sub33, 15
  br i1 %cmp30, label %while.body32, label %while.cond29.while.cond35.preheader_crit_edge

while.cond35.while.cond41.preheader_crit_edge:    ; preds = %while.body38
  %28 = and i32 %sc.addr.3.lcssa, 7
  br label %while.cond41.preheader

while.cond41.preheader:                           ; preds = %while.cond35.while.cond41.preheader_crit_edge, %while.cond35.preheader
  %sc.addr.4.lcssa = phi i32 [ %28, %while.cond35.while.cond41.preheader_crit_edge ], [ %sc.addr.3.lcssa, %while.cond35.preheader ]
  %cmp42163 = icmp sgt i32 %sc.addr.4.lcssa, 0
  br i1 %cmp42163, label %for.body.i.preheader, label %if.end47

while.body38:                                     ; preds = %while.cond35.preheader, %while.body38
  %sc.addr.4166 = phi i32 [ %sub39, %while.body38 ], [ %sc.addr.3.lcssa, %while.cond35.preheader ]
  tail call fastcc void @eshup8(i16* %x)
  %sub39 = add nsw i32 %sc.addr.4166, -8
  %cmp36 = icmp sgt i32 %sub39, 7
  br i1 %cmp36, label %while.body38, label %while.cond35.while.cond41.preheader_crit_edge

for.body.i.preheader:                             ; preds = %while.cond41.preheader, %eshup1.exit
  %sc.addr.5164 = phi i32 [ %sub45, %eshup1.exit ], [ %sc.addr.4.lcssa, %while.cond41.preheader ]
  br label %for.body.i

for.body.i:                                       ; preds = %if.end.i.for.body.i_crit_edge, %for.body.i.preheader
  %i.025.i = phi i32 [ %phitmp, %if.end.i.for.body.i_crit_edge ], [ 3, %for.body.i.preheader ]
  %bits.024.i = phi i16 [ %conv15.i, %if.end.i.for.body.i_crit_edge ], [ 0, %for.body.i.preheader ]
  %x.addr.023.i = phi i16* [ %incdec.ptr.i78, %if.end.i.for.body.i_crit_edge ], [ %add.ptr1, %for.body.i.preheader ]
  %29 = load i16* %x.addr.023.i, align 2, !tbaa !5
  %tobool.i = icmp slt i16 %29, 0
  br i1 %tobool.i, label %if.then.i, label %if.end.i

if.then.i:                                        ; preds = %for.body.i
  %conv1.i = zext i16 %bits.024.i to i32
  %or.i = or i32 %conv1.i, 1
  %conv2.i = trunc i32 %or.i to i16
  br label %if.end.i

if.end.i:                                         ; preds = %if.then.i, %for.body.i
  %bits.1.i = phi i16 [ %conv2.i, %if.then.i ], [ %bits.024.i, %for.body.i ]
  %conv3.i = zext i16 %29 to i32
  %shl.i = shl nuw nsw i32 %conv3.i, 1
  %conv5.i = zext i16 %bits.1.i to i32
  %and6.i = lshr i32 %conv5.i, 1
  %and6.lobit.i = and i32 %and6.i, 1
  %storemerge.in.i = or i32 %and6.lobit.i, %shl.i
  %storemerge.i = trunc i32 %storemerge.in.i to i16
  store i16 %storemerge.i, i16* %x.addr.023.i, align 2
  %exitcond.i = icmp eq i32 %i.025.i, 13
  br i1 %exitcond.i, label %eshup1.exit, label %if.end.i.for.body.i_crit_edge

if.end.i.for.body.i_crit_edge:                    ; preds = %if.end.i
  %shl14.i = shl nuw nsw i32 %conv5.i, 1
  %incdec.ptr.i78 = getelementptr inbounds i16* %x.addr.023.i, i32 -1
  %conv15.i = trunc i32 %shl14.i to i16
  %phitmp = add i32 %i.025.i, 1
  br label %for.body.i

eshup1.exit:                                      ; preds = %if.end.i
  %sub45 = add nsw i32 %sc.addr.5164, -1
  %cmp42 = icmp sgt i32 %sub45, 0
  br i1 %cmp42, label %for.body.i.preheader, label %if.end47

if.end47:                                         ; preds = %while.cond41.preheader, %eshup1.exit, %while.cond18.preheader, %eshdn1.exit
  %lost.3 = phi i16 [ %lost.1.lcssa, %while.cond18.preheader ], [ %conv26, %eshdn1.exit ], [ 0, %eshup1.exit ], [ 0, %while.cond41.preheader ]
  %not.tobool = icmp ne i16 %lost.3, 0
  %conv50 = zext i1 %not.tobool to i32
  br label %return

return:                                           ; preds = %entry, %if.end47
  %retval.0 = phi i32 [ %conv50, %if.end47 ], [ 0, %entry ]
  ret i32 %retval.0
}

define internal fastcc void @eshup8(i16* nocapture %x) nounwind {
entry:
  %add.ptr = getelementptr inbounds i16* %x, i32 12
  %0 = load i16* %add.ptr, align 2, !tbaa !5
  %conv = zext i16 %0 to i32
  %shr12 = lshr i16 %0, 8
  %shl = shl nuw nsw i32 %conv, 8
  %conv6 = trunc i32 %shl to i16
  store i16 %conv6, i16* %add.ptr, align 2, !tbaa !5
  %incdec.ptr = getelementptr inbounds i16* %x, i32 11
  %1 = load i16* %incdec.ptr, align 2, !tbaa !5
  %conv.1 = zext i16 %1 to i32
  %shr12.1 = lshr i16 %1, 8
  %shl.1 = shl nuw nsw i32 %conv.1, 8
  %conv4.1 = zext i16 %shr12 to i32
  %or.1 = or i32 %shl.1, %conv4.1
  %conv6.1 = trunc i32 %or.1 to i16
  store i16 %conv6.1, i16* %incdec.ptr, align 2, !tbaa !5
  %incdec.ptr.1 = getelementptr inbounds i16* %x, i32 10
  %2 = load i16* %incdec.ptr.1, align 2, !tbaa !5
  %conv.2 = zext i16 %2 to i32
  %shr12.2 = lshr i16 %2, 8
  %shl.2 = shl nuw nsw i32 %conv.2, 8
  %conv4.2 = zext i16 %shr12.1 to i32
  %or.2 = or i32 %shl.2, %conv4.2
  %conv6.2 = trunc i32 %or.2 to i16
  store i16 %conv6.2, i16* %incdec.ptr.1, align 2, !tbaa !5
  %incdec.ptr.2 = getelementptr inbounds i16* %x, i32 9
  %3 = load i16* %incdec.ptr.2, align 2, !tbaa !5
  %conv.3 = zext i16 %3 to i32
  %shr12.3 = lshr i16 %3, 8
  %shl.3 = shl nuw nsw i32 %conv.3, 8
  %conv4.3 = zext i16 %shr12.2 to i32
  %or.3 = or i32 %shl.3, %conv4.3
  %conv6.3 = trunc i32 %or.3 to i16
  store i16 %conv6.3, i16* %incdec.ptr.2, align 2, !tbaa !5
  %incdec.ptr.3 = getelementptr inbounds i16* %x, i32 8
  %4 = load i16* %incdec.ptr.3, align 2, !tbaa !5
  %conv.4 = zext i16 %4 to i32
  %shr12.4 = lshr i16 %4, 8
  %shl.4 = shl nuw nsw i32 %conv.4, 8
  %conv4.4 = zext i16 %shr12.3 to i32
  %or.4 = or i32 %shl.4, %conv4.4
  %conv6.4 = trunc i32 %or.4 to i16
  store i16 %conv6.4, i16* %incdec.ptr.3, align 2, !tbaa !5
  %incdec.ptr.4 = getelementptr inbounds i16* %x, i32 7
  %5 = load i16* %incdec.ptr.4, align 2, !tbaa !5
  %conv.5 = zext i16 %5 to i32
  %shr12.5 = lshr i16 %5, 8
  %shl.5 = shl nuw nsw i32 %conv.5, 8
  %conv4.5 = zext i16 %shr12.4 to i32
  %or.5 = or i32 %shl.5, %conv4.5
  %conv6.5 = trunc i32 %or.5 to i16
  store i16 %conv6.5, i16* %incdec.ptr.4, align 2, !tbaa !5
  %incdec.ptr.5 = getelementptr inbounds i16* %x, i32 6
  %6 = load i16* %incdec.ptr.5, align 2, !tbaa !5
  %conv.6 = zext i16 %6 to i32
  %shr12.6 = lshr i16 %6, 8
  %shl.6 = shl nuw nsw i32 %conv.6, 8
  %conv4.6 = zext i16 %shr12.5 to i32
  %or.6 = or i32 %shl.6, %conv4.6
  %conv6.6 = trunc i32 %or.6 to i16
  store i16 %conv6.6, i16* %incdec.ptr.5, align 2, !tbaa !5
  %incdec.ptr.6 = getelementptr inbounds i16* %x, i32 5
  %7 = load i16* %incdec.ptr.6, align 2, !tbaa !5
  %conv.7 = zext i16 %7 to i32
  %shr12.7 = lshr i16 %7, 8
  %shl.7 = shl nuw nsw i32 %conv.7, 8
  %conv4.7 = zext i16 %shr12.6 to i32
  %or.7 = or i32 %shl.7, %conv4.7
  %conv6.7 = trunc i32 %or.7 to i16
  store i16 %conv6.7, i16* %incdec.ptr.6, align 2, !tbaa !5
  %incdec.ptr.7 = getelementptr inbounds i16* %x, i32 4
  %8 = load i16* %incdec.ptr.7, align 2, !tbaa !5
  %conv.8 = zext i16 %8 to i32
  %shr12.8 = lshr i16 %8, 8
  %shl.8 = shl nuw nsw i32 %conv.8, 8
  %conv4.8 = zext i16 %shr12.7 to i32
  %or.8 = or i32 %shl.8, %conv4.8
  %conv6.8 = trunc i32 %or.8 to i16
  store i16 %conv6.8, i16* %incdec.ptr.7, align 2, !tbaa !5
  %incdec.ptr.8 = getelementptr inbounds i16* %x, i32 3
  %9 = load i16* %incdec.ptr.8, align 2, !tbaa !5
  %conv.9 = zext i16 %9 to i32
  %shr12.9 = lshr i16 %9, 8
  %shl.9 = shl nuw nsw i32 %conv.9, 8
  %conv4.9 = zext i16 %shr12.8 to i32
  %or.9 = or i32 %shl.9, %conv4.9
  %conv6.9 = trunc i32 %or.9 to i16
  store i16 %conv6.9, i16* %incdec.ptr.8, align 2, !tbaa !5
  %incdec.ptr.9 = getelementptr inbounds i16* %x, i32 2
  %10 = load i16* %incdec.ptr.9, align 2, !tbaa !5
  %conv.10 = zext i16 %10 to i32
  %shl.10 = shl nuw nsw i32 %conv.10, 8
  %conv4.10 = zext i16 %shr12.9 to i32
  %or.10 = or i32 %shl.10, %conv4.10
  %conv6.10 = trunc i32 %or.10 to i16
  store i16 %conv6.10, i16* %incdec.ptr.9, align 2, !tbaa !5
  ret void
}

define internal fastcc i32 @ecmp(i16* nocapture %a, i16* nocapture %b) nounwind {
entry:
  %ai = alloca [13 x i16], align 2
  %bi = alloca [13 x i16], align 2
  %arrayidx.i = getelementptr inbounds i16* %a, i32 9
  %0 = load i16* %arrayidx.i, align 2, !tbaa !5
  %and.i = and i16 %0, 32767
  %cmp.i = icmp eq i16 %and.i, 32767
  br i1 %cmp.i, label %for.cond.preheader.i, label %lor.lhs.false

for.cond.preheader.i:                             ; preds = %entry
  %1 = load i16* %a, align 2, !tbaa !5
  %cmp5.i = icmp eq i16 %1, 0
  br i1 %cmp5.i, label %for.inc.i, label %return

for.inc.i:                                        ; preds = %for.cond.preheader.i
  %incdec.ptr.i = getelementptr inbounds i16* %a, i32 1
  %2 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  %cmp5.1.i = icmp eq i16 %2, 0
  br i1 %cmp5.1.i, label %for.inc.1.i, label %return

for.inc.1.i:                                      ; preds = %for.inc.i
  %incdec.ptr.1.i = getelementptr inbounds i16* %a, i32 2
  %3 = load i16* %incdec.ptr.1.i, align 2, !tbaa !5
  %cmp5.2.i = icmp eq i16 %3, 0
  br i1 %cmp5.2.i, label %for.inc.2.i, label %return

for.inc.2.i:                                      ; preds = %for.inc.1.i
  %incdec.ptr.2.i = getelementptr inbounds i16* %a, i32 3
  %4 = load i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %cmp5.3.i = icmp eq i16 %4, 0
  br i1 %cmp5.3.i, label %for.inc.3.i, label %return

for.inc.3.i:                                      ; preds = %for.inc.2.i
  %incdec.ptr.3.i = getelementptr inbounds i16* %a, i32 4
  %5 = load i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %cmp5.4.i = icmp eq i16 %5, 0
  br i1 %cmp5.4.i, label %for.inc.4.i, label %return

for.inc.4.i:                                      ; preds = %for.inc.3.i
  %incdec.ptr.4.i = getelementptr inbounds i16* %a, i32 5
  %6 = load i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %cmp5.5.i = icmp eq i16 %6, 0
  br i1 %cmp5.5.i, label %for.inc.5.i, label %return

for.inc.5.i:                                      ; preds = %for.inc.4.i
  %incdec.ptr.5.i = getelementptr inbounds i16* %a, i32 6
  %7 = load i16* %incdec.ptr.5.i, align 2, !tbaa !5
  %cmp5.6.i = icmp eq i16 %7, 0
  br i1 %cmp5.6.i, label %for.inc.6.i, label %return

for.inc.6.i:                                      ; preds = %for.inc.5.i
  %incdec.ptr.6.i = getelementptr inbounds i16* %a, i32 7
  %8 = load i16* %incdec.ptr.6.i, align 2, !tbaa !5
  %cmp5.7.i = icmp eq i16 %8, 0
  br i1 %cmp5.7.i, label %eisnan.exit, label %return

eisnan.exit:                                      ; preds = %for.inc.6.i
  %incdec.ptr.7.i = getelementptr inbounds i16* %a, i32 8
  %9 = load i16* %incdec.ptr.7.i, align 2, !tbaa !5
  %not.cmp5.8.i = icmp eq i16 %9, 0
  br i1 %not.cmp5.8.i, label %lor.lhs.false, label %return

lor.lhs.false:                                    ; preds = %eisnan.exit, %entry
  %arrayidx.i64 = getelementptr inbounds i16* %b, i32 9
  %10 = load i16* %arrayidx.i64, align 2, !tbaa !5
  %and.i65 = and i16 %10, 32767
  %cmp.i66 = icmp eq i16 %and.i65, 32767
  br i1 %cmp.i66, label %for.cond.preheader.i68, label %if.end

for.cond.preheader.i68:                           ; preds = %lor.lhs.false
  %11 = load i16* %b, align 2, !tbaa !5
  %cmp5.i67 = icmp eq i16 %11, 0
  br i1 %cmp5.i67, label %for.inc.i71, label %return

for.inc.i71:                                      ; preds = %for.cond.preheader.i68
  %incdec.ptr.i69 = getelementptr inbounds i16* %b, i32 1
  %12 = load i16* %incdec.ptr.i69, align 2, !tbaa !5
  %cmp5.1.i70 = icmp eq i16 %12, 0
  br i1 %cmp5.1.i70, label %for.inc.1.i76, label %return

for.inc.1.i76:                                    ; preds = %for.inc.i71
  %incdec.ptr.1.i74 = getelementptr inbounds i16* %b, i32 2
  %13 = load i16* %incdec.ptr.1.i74, align 2, !tbaa !5
  %cmp5.2.i75 = icmp eq i16 %13, 0
  br i1 %cmp5.2.i75, label %for.inc.2.i79, label %return

for.inc.2.i79:                                    ; preds = %for.inc.1.i76
  %incdec.ptr.2.i77 = getelementptr inbounds i16* %b, i32 3
  %14 = load i16* %incdec.ptr.2.i77, align 2, !tbaa !5
  %cmp5.3.i78 = icmp eq i16 %14, 0
  br i1 %cmp5.3.i78, label %for.inc.3.i82, label %return

for.inc.3.i82:                                    ; preds = %for.inc.2.i79
  %incdec.ptr.3.i80 = getelementptr inbounds i16* %b, i32 4
  %15 = load i16* %incdec.ptr.3.i80, align 2, !tbaa !5
  %cmp5.4.i81 = icmp eq i16 %15, 0
  br i1 %cmp5.4.i81, label %for.inc.4.i85, label %return

for.inc.4.i85:                                    ; preds = %for.inc.3.i82
  %incdec.ptr.4.i83 = getelementptr inbounds i16* %b, i32 5
  %16 = load i16* %incdec.ptr.4.i83, align 2, !tbaa !5
  %cmp5.5.i84 = icmp eq i16 %16, 0
  br i1 %cmp5.5.i84, label %for.inc.5.i88, label %return

for.inc.5.i88:                                    ; preds = %for.inc.4.i85
  %incdec.ptr.5.i86 = getelementptr inbounds i16* %b, i32 6
  %17 = load i16* %incdec.ptr.5.i86, align 2, !tbaa !5
  %cmp5.6.i87 = icmp eq i16 %17, 0
  br i1 %cmp5.6.i87, label %for.inc.6.i91, label %return

for.inc.6.i91:                                    ; preds = %for.inc.5.i88
  %incdec.ptr.6.i89 = getelementptr inbounds i16* %b, i32 7
  %18 = load i16* %incdec.ptr.6.i89, align 2, !tbaa !5
  %cmp5.7.i90 = icmp eq i16 %18, 0
  br i1 %cmp5.7.i90, label %eisnan.exit96, label %return

eisnan.exit96:                                    ; preds = %for.inc.6.i91
  %incdec.ptr.7.i92 = getelementptr inbounds i16* %b, i32 8
  %19 = load i16* %incdec.ptr.7.i92, align 2, !tbaa !5
  %not.cmp5.8.i93 = icmp eq i16 %19, 0
  br i1 %not.cmp5.8.i93, label %if.end, label %return

if.end:                                           ; preds = %eisnan.exit96, %lor.lhs.false
  %arraydecay = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 0
  call fastcc void @emovi(i16* %a, i16* %arraydecay)
  %arraydecay4 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 0
  call fastcc void @emovi(i16* %b, i16* %arraydecay4)
  %20 = load i16* %arraydecay, align 2, !tbaa !5
  %21 = load i16* %arraydecay4, align 2, !tbaa !5
  %cmp = icmp eq i16 %20, %21
  br i1 %cmp, label %do.cond, label %for.cond

for.cond:                                         ; preds = %if.end, %if.end15
  %i.0 = phi i32 [ %inc, %if.end15 ], [ 1, %if.end ]
  %cmp9 = icmp slt i32 %i.0, 12
  br i1 %cmp9, label %for.body, label %return

for.body:                                         ; preds = %for.cond
  %arrayidx = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 %i.0
  %22 = load i16* %arrayidx, align 2, !tbaa !5
  %cmp12 = icmp eq i16 %22, 0
  br i1 %cmp12, label %if.end15, label %nzro

if.end15:                                         ; preds = %for.body
  %arrayidx16 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 %i.0
  %23 = load i16* %arrayidx16, align 2, !tbaa !5
  %cmp18 = icmp eq i16 %23, 0
  %inc = add nsw i32 %i.0, 1
  br i1 %cmp18, label %for.cond, label %nzro

nzro:                                             ; preds = %if.end15, %for.body
  %cmp23 = icmp eq i16 %20, 0
  %. = select i1 %cmp23, i32 1, i32 -1
  br label %return

do.cond:                                          ; preds = %if.end
  %cmp28 = icmp eq i16 %20, 0
  %.62 = select i1 %cmp28, i32 1, i32 -1
  %incdec.ptr34 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 1
  %incdec.ptr = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 1
  %24 = load i16* %incdec.ptr, align 2, !tbaa !5
  %25 = load i16* %incdec.ptr34, align 2, !tbaa !5
  %cmp36.1 = icmp eq i16 %24, %25
  br i1 %cmp36.1, label %do.cond.1, label %__mdiff

__mdiff:                                          ; preds = %do.cond.10, %do.cond.9, %do.cond.8, %do.cond.7, %do.cond.6, %do.cond.5, %do.cond.4, %do.cond.3, %do.cond.2, %do.cond.1, %do.cond
  %.lcssa109 = phi i16 [ %25, %do.cond ], [ %27, %do.cond.1 ], [ %29, %do.cond.2 ], [ %31, %do.cond.3 ], [ %33, %do.cond.4 ], [ %35, %do.cond.5 ], [ %37, %do.cond.6 ], [ %39, %do.cond.7 ], [ %41, %do.cond.8 ], [ %43, %do.cond.9 ], [ %45, %do.cond.10 ]
  %.lcssa = phi i16 [ %24, %do.cond ], [ %26, %do.cond.1 ], [ %28, %do.cond.2 ], [ %30, %do.cond.3 ], [ %32, %do.cond.4 ], [ %34, %do.cond.5 ], [ %36, %do.cond.6 ], [ %38, %do.cond.7 ], [ %40, %do.cond.8 ], [ %42, %do.cond.9 ], [ %44, %do.cond.10 ]
  %cmp46 = icmp ugt i16 %.lcssa, %.lcssa109
  %sub = sub nsw i32 0, %.62
  %.62.sub = select i1 %cmp46, i32 %.62, i32 %sub
  ret i32 %.62.sub

return:                                           ; preds = %do.cond.10, %for.cond, %eisnan.exit, %eisnan.exit96, %for.inc.6.i91, %for.inc.5.i88, %for.inc.4.i85, %for.inc.3.i82, %for.inc.2.i79, %for.inc.1.i76, %for.inc.i71, %for.cond.preheader.i68, %for.inc.6.i, %for.inc.5.i, %for.inc.4.i, %for.inc.3.i, %for.inc.2.i, %for.inc.1.i, %for.inc.i, %for.cond.preheader.i, %nzro
  %retval.0 = phi i32 [ -2, %eisnan.exit96 ], [ -2, %eisnan.exit ], [ %., %nzro ], [ -2, %for.cond.preheader.i ], [ -2, %for.inc.i ], [ -2, %for.inc.1.i ], [ -2, %for.inc.2.i ], [ -2, %for.inc.3.i ], [ -2, %for.inc.4.i ], [ -2, %for.inc.5.i ], [ -2, %for.inc.6.i ], [ -2, %for.cond.preheader.i68 ], [ -2, %for.inc.i71 ], [ -2, %for.inc.1.i76 ], [ -2, %for.inc.2.i79 ], [ -2, %for.inc.3.i82 ], [ -2, %for.inc.4.i85 ], [ -2, %for.inc.5.i88 ], [ -2, %for.inc.6.i91 ], [ 0, %for.cond ], [ 0, %do.cond.10 ]
  ret i32 %retval.0

do.cond.1:                                        ; preds = %do.cond
  %incdec.ptr34.1 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 2
  %incdec.ptr.1 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 2
  %26 = load i16* %incdec.ptr.1, align 2, !tbaa !5
  %27 = load i16* %incdec.ptr34.1, align 2, !tbaa !5
  %cmp36.2 = icmp eq i16 %26, %27
  br i1 %cmp36.2, label %do.cond.2, label %__mdiff

do.cond.2:                                        ; preds = %do.cond.1
  %incdec.ptr34.2 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 3
  %incdec.ptr.2 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 3
  %28 = load i16* %incdec.ptr.2, align 2, !tbaa !5
  %29 = load i16* %incdec.ptr34.2, align 2, !tbaa !5
  %cmp36.3 = icmp eq i16 %28, %29
  br i1 %cmp36.3, label %do.cond.3, label %__mdiff

do.cond.3:                                        ; preds = %do.cond.2
  %incdec.ptr34.3 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 4
  %incdec.ptr.3 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 4
  %30 = load i16* %incdec.ptr.3, align 2, !tbaa !5
  %31 = load i16* %incdec.ptr34.3, align 2, !tbaa !5
  %cmp36.4 = icmp eq i16 %30, %31
  br i1 %cmp36.4, label %do.cond.4, label %__mdiff

do.cond.4:                                        ; preds = %do.cond.3
  %incdec.ptr34.4 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 5
  %incdec.ptr.4 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 5
  %32 = load i16* %incdec.ptr.4, align 2, !tbaa !5
  %33 = load i16* %incdec.ptr34.4, align 2, !tbaa !5
  %cmp36.5 = icmp eq i16 %32, %33
  br i1 %cmp36.5, label %do.cond.5, label %__mdiff

do.cond.5:                                        ; preds = %do.cond.4
  %incdec.ptr34.5 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 6
  %incdec.ptr.5 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 6
  %34 = load i16* %incdec.ptr.5, align 2, !tbaa !5
  %35 = load i16* %incdec.ptr34.5, align 2, !tbaa !5
  %cmp36.6 = icmp eq i16 %34, %35
  br i1 %cmp36.6, label %do.cond.6, label %__mdiff

do.cond.6:                                        ; preds = %do.cond.5
  %incdec.ptr34.6 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 7
  %incdec.ptr.6 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 7
  %36 = load i16* %incdec.ptr.6, align 2, !tbaa !5
  %37 = load i16* %incdec.ptr34.6, align 2, !tbaa !5
  %cmp36.7 = icmp eq i16 %36, %37
  br i1 %cmp36.7, label %do.cond.7, label %__mdiff

do.cond.7:                                        ; preds = %do.cond.6
  %incdec.ptr34.7 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 8
  %incdec.ptr.7 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 8
  %38 = load i16* %incdec.ptr.7, align 2, !tbaa !5
  %39 = load i16* %incdec.ptr34.7, align 2, !tbaa !5
  %cmp36.8 = icmp eq i16 %38, %39
  br i1 %cmp36.8, label %do.cond.8, label %__mdiff

do.cond.8:                                        ; preds = %do.cond.7
  %incdec.ptr34.8 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 9
  %incdec.ptr.8 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 9
  %40 = load i16* %incdec.ptr.8, align 2, !tbaa !5
  %41 = load i16* %incdec.ptr34.8, align 2, !tbaa !5
  %cmp36.9 = icmp eq i16 %40, %41
  br i1 %cmp36.9, label %do.cond.9, label %__mdiff

do.cond.9:                                        ; preds = %do.cond.8
  %incdec.ptr34.9 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 10
  %incdec.ptr.9 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 10
  %42 = load i16* %incdec.ptr.9, align 2, !tbaa !5
  %43 = load i16* %incdec.ptr34.9, align 2, !tbaa !5
  %cmp36.10 = icmp eq i16 %42, %43
  br i1 %cmp36.10, label %do.cond.10, label %__mdiff

do.cond.10:                                       ; preds = %do.cond.9
  %incdec.ptr34.10 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 11
  %incdec.ptr.10 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 11
  %44 = load i16* %incdec.ptr.10, align 2, !tbaa !5
  %45 = load i16* %incdec.ptr34.10, align 2, !tbaa !5
  %cmp36.11 = icmp eq i16 %44, %45
  br i1 %cmp36.11, label %return, label %__mdiff
}

define internal fastcc void @emovo(i16* nocapture %a, i16* nocapture %b) nounwind {
entry:
  %add.ptr = getelementptr inbounds i16* %b, i32 9
  %incdec.ptr = getelementptr inbounds i16* %a, i32 1
  %0 = load i16* %a, align 2, !tbaa !5
  %tobool = icmp eq i16 %0, 0
  %1 = load i16* %incdec.ptr, align 2, !tbaa !5
  br i1 %tobool, label %if.end, label %if.then

if.then:                                          ; preds = %entry
  %conv = zext i16 %1 to i32
  %or = or i32 %conv, 32768
  %conv2 = trunc i32 %or to i16
  br label %if.end

if.end:                                           ; preds = %entry, %if.then
  %2 = phi i16 [ %conv2, %if.then ], [ %1, %entry ]
  store i16 %2, i16* %add.ptr, align 2
  %3 = load i16* %incdec.ptr, align 2, !tbaa !5
  %cmp = icmp eq i16 %3, 32767
  br i1 %cmp, label %for.cond.i, label %if.end13

for.cond.i:                                       ; preds = %if.end, %for.body.i
  %i.0.i = phi i32 [ %inc.i, %for.body.i ], [ 3, %if.end ]
  %cmp2.i = icmp slt i32 %i.0.i, 13
  br i1 %cmp2.i, label %for.body.i, label %if.end12

for.body.i:                                       ; preds = %for.cond.i
  %arrayidx4.i = getelementptr inbounds i16* %a, i32 %i.0.i
  %4 = load i16* %arrayidx4.i, align 2, !tbaa !5
  %cmp6.i = icmp eq i16 %4, 0
  %inc.i = add nsw i32 %i.0.i, 1
  br i1 %cmp6.i, label %for.cond.i, label %if.then11

if.then11:                                        ; preds = %for.body.i
  tail call fastcc void @enan(i16* %b, i32 144)
  br label %for.end

if.end12:                                         ; preds = %for.cond.i
  %incdec.ptr.i = getelementptr inbounds i16* %b, i32 1
  store i16 0, i16* %b, align 2, !tbaa !5
  %incdec.ptr.1.i = getelementptr inbounds i16* %b, i32 2
  store i16 0, i16* %incdec.ptr.i, align 2, !tbaa !5
  %incdec.ptr.2.i = getelementptr inbounds i16* %b, i32 3
  store i16 0, i16* %incdec.ptr.1.i, align 2, !tbaa !5
  %incdec.ptr.3.i = getelementptr inbounds i16* %b, i32 4
  store i16 0, i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %incdec.ptr.4.i = getelementptr inbounds i16* %b, i32 5
  store i16 0, i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %incdec.ptr.5.i = getelementptr inbounds i16* %b, i32 6
  store i16 0, i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %incdec.ptr.6.i = getelementptr inbounds i16* %b, i32 7
  store i16 0, i16* %incdec.ptr.5.i, align 2, !tbaa !5
  %incdec.ptr.7.i = getelementptr inbounds i16* %b, i32 8
  store i16 0, i16* %incdec.ptr.6.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i, align 2, !tbaa !5
  %conv.i = zext i16 %2 to i32
  %or.i = or i32 %conv.i, 32767
  %conv1.i = trunc i32 %or.i to i16
  store i16 %conv1.i, i16* %add.ptr, align 2, !tbaa !5
  br label %for.end

if.end13:                                         ; preds = %if.end
  %q.0 = getelementptr inbounds i16* %b, i32 8
  %incdec.ptr14 = getelementptr inbounds i16* %a, i32 3
  %incdec.ptr18 = getelementptr inbounds i16* %a, i32 4
  %5 = load i16* %incdec.ptr14, align 2, !tbaa !5
  %incdec.ptr19 = getelementptr inbounds i16* %b, i32 7
  store i16 %5, i16* %q.0, align 2, !tbaa !5
  %incdec.ptr18.1 = getelementptr inbounds i16* %a, i32 5
  %6 = load i16* %incdec.ptr18, align 2, !tbaa !5
  %incdec.ptr19.1 = getelementptr inbounds i16* %b, i32 6
  store i16 %6, i16* %incdec.ptr19, align 2, !tbaa !5
  %incdec.ptr18.2 = getelementptr inbounds i16* %a, i32 6
  %7 = load i16* %incdec.ptr18.1, align 2, !tbaa !5
  %incdec.ptr19.2 = getelementptr inbounds i16* %b, i32 5
  store i16 %7, i16* %incdec.ptr19.1, align 2, !tbaa !5
  %incdec.ptr18.3 = getelementptr inbounds i16* %a, i32 7
  %8 = load i16* %incdec.ptr18.2, align 2, !tbaa !5
  %incdec.ptr19.3 = getelementptr inbounds i16* %b, i32 4
  store i16 %8, i16* %incdec.ptr19.2, align 2, !tbaa !5
  %incdec.ptr18.4 = getelementptr inbounds i16* %a, i32 8
  %9 = load i16* %incdec.ptr18.3, align 2, !tbaa !5
  %incdec.ptr19.4 = getelementptr inbounds i16* %b, i32 3
  store i16 %9, i16* %incdec.ptr19.3, align 2, !tbaa !5
  %incdec.ptr18.5 = getelementptr inbounds i16* %a, i32 9
  %10 = load i16* %incdec.ptr18.4, align 2, !tbaa !5
  %incdec.ptr19.5 = getelementptr inbounds i16* %b, i32 2
  store i16 %10, i16* %incdec.ptr19.4, align 2, !tbaa !5
  %incdec.ptr18.6 = getelementptr inbounds i16* %a, i32 10
  %11 = load i16* %incdec.ptr18.5, align 2, !tbaa !5
  %incdec.ptr19.6 = getelementptr inbounds i16* %b, i32 1
  store i16 %11, i16* %incdec.ptr19.5, align 2, !tbaa !5
  %incdec.ptr18.7 = getelementptr inbounds i16* %a, i32 11
  %12 = load i16* %incdec.ptr18.6, align 2, !tbaa !5
  store i16 %12, i16* %incdec.ptr19.6, align 2, !tbaa !5
  %13 = load i16* %incdec.ptr18.7, align 2, !tbaa !5
  store i16 %13, i16* %b, align 2, !tbaa !5
  br label %for.end

for.end:                                          ; preds = %if.end13, %if.then11, %if.end12
  ret void
}

define internal fastcc void @esubm(i16* nocapture %x, i16* nocapture %y) nounwind {
entry:
  %add.ptr = getelementptr inbounds i16* %x, i32 12
  %add.ptr1 = getelementptr inbounds i16* %y, i32 12
  %0 = load i16* %add.ptr1, align 2, !tbaa !5
  %conv = zext i16 %0 to i32
  %1 = load i16* %add.ptr, align 2, !tbaa !5
  %conv2 = zext i16 %1 to i32
  %sub = sub i32 %conv, %conv2
  %and = lshr i32 %sub, 16
  %and.lobit = and i32 %and, 1
  %conv4 = trunc i32 %sub to i16
  store i16 %conv4, i16* %add.ptr1, align 2, !tbaa !5
  %incdec.ptr = getelementptr inbounds i16* %x, i32 11
  %incdec.ptr5 = getelementptr inbounds i16* %y, i32 11
  %2 = load i16* %incdec.ptr5, align 2, !tbaa !5
  %conv.1 = zext i16 %2 to i32
  %3 = load i16* %incdec.ptr, align 2, !tbaa !5
  %conv2.1 = zext i16 %3 to i32
  %sub.1 = sub i32 %conv.1, %conv2.1
  %sub3.1 = sub i32 %sub.1, %and.lobit
  %and.1 = lshr i32 %sub3.1, 16
  %and.lobit.1 = and i32 %and.1, 1
  %conv4.1 = trunc i32 %sub3.1 to i16
  store i16 %conv4.1, i16* %incdec.ptr5, align 2, !tbaa !5
  %incdec.ptr.1 = getelementptr inbounds i16* %x, i32 10
  %incdec.ptr5.1 = getelementptr inbounds i16* %y, i32 10
  %4 = load i16* %incdec.ptr5.1, align 2, !tbaa !5
  %conv.2 = zext i16 %4 to i32
  %5 = load i16* %incdec.ptr.1, align 2, !tbaa !5
  %conv2.2 = zext i16 %5 to i32
  %sub.2 = sub i32 %conv.2, %conv2.2
  %sub3.2 = sub i32 %sub.2, %and.lobit.1
  %and.2 = lshr i32 %sub3.2, 16
  %and.lobit.2 = and i32 %and.2, 1
  %conv4.2 = trunc i32 %sub3.2 to i16
  store i16 %conv4.2, i16* %incdec.ptr5.1, align 2, !tbaa !5
  %incdec.ptr.2 = getelementptr inbounds i16* %x, i32 9
  %incdec.ptr5.2 = getelementptr inbounds i16* %y, i32 9
  %6 = load i16* %incdec.ptr5.2, align 2, !tbaa !5
  %conv.3 = zext i16 %6 to i32
  %7 = load i16* %incdec.ptr.2, align 2, !tbaa !5
  %conv2.3 = zext i16 %7 to i32
  %sub.3 = sub i32 %conv.3, %conv2.3
  %sub3.3 = sub i32 %sub.3, %and.lobit.2
  %and.3 = lshr i32 %sub3.3, 16
  %and.lobit.3 = and i32 %and.3, 1
  %conv4.3 = trunc i32 %sub3.3 to i16
  store i16 %conv4.3, i16* %incdec.ptr5.2, align 2, !tbaa !5
  %incdec.ptr.3 = getelementptr inbounds i16* %x, i32 8
  %incdec.ptr5.3 = getelementptr inbounds i16* %y, i32 8
  %8 = load i16* %incdec.ptr5.3, align 2, !tbaa !5
  %conv.4 = zext i16 %8 to i32
  %9 = load i16* %incdec.ptr.3, align 2, !tbaa !5
  %conv2.4 = zext i16 %9 to i32
  %sub.4 = sub i32 %conv.4, %conv2.4
  %sub3.4 = sub i32 %sub.4, %and.lobit.3
  %and.4 = lshr i32 %sub3.4, 16
  %and.lobit.4 = and i32 %and.4, 1
  %conv4.4 = trunc i32 %sub3.4 to i16
  store i16 %conv4.4, i16* %incdec.ptr5.3, align 2, !tbaa !5
  %incdec.ptr.4 = getelementptr inbounds i16* %x, i32 7
  %incdec.ptr5.4 = getelementptr inbounds i16* %y, i32 7
  %10 = load i16* %incdec.ptr5.4, align 2, !tbaa !5
  %conv.5 = zext i16 %10 to i32
  %11 = load i16* %incdec.ptr.4, align 2, !tbaa !5
  %conv2.5 = zext i16 %11 to i32
  %sub.5 = sub i32 %conv.5, %conv2.5
  %sub3.5 = sub i32 %sub.5, %and.lobit.4
  %and.5 = lshr i32 %sub3.5, 16
  %and.lobit.5 = and i32 %and.5, 1
  %conv4.5 = trunc i32 %sub3.5 to i16
  store i16 %conv4.5, i16* %incdec.ptr5.4, align 2, !tbaa !5
  %incdec.ptr.5 = getelementptr inbounds i16* %x, i32 6
  %incdec.ptr5.5 = getelementptr inbounds i16* %y, i32 6
  %12 = load i16* %incdec.ptr5.5, align 2, !tbaa !5
  %conv.6 = zext i16 %12 to i32
  %13 = load i16* %incdec.ptr.5, align 2, !tbaa !5
  %conv2.6 = zext i16 %13 to i32
  %sub.6 = sub i32 %conv.6, %conv2.6
  %sub3.6 = sub i32 %sub.6, %and.lobit.5
  %and.6 = lshr i32 %sub3.6, 16
  %and.lobit.6 = and i32 %and.6, 1
  %conv4.6 = trunc i32 %sub3.6 to i16
  store i16 %conv4.6, i16* %incdec.ptr5.5, align 2, !tbaa !5
  %incdec.ptr.6 = getelementptr inbounds i16* %x, i32 5
  %incdec.ptr5.6 = getelementptr inbounds i16* %y, i32 5
  %14 = load i16* %incdec.ptr5.6, align 2, !tbaa !5
  %conv.7 = zext i16 %14 to i32
  %15 = load i16* %incdec.ptr.6, align 2, !tbaa !5
  %conv2.7 = zext i16 %15 to i32
  %sub.7 = sub i32 %conv.7, %conv2.7
  %sub3.7 = sub i32 %sub.7, %and.lobit.6
  %and.7 = lshr i32 %sub3.7, 16
  %and.lobit.7 = and i32 %and.7, 1
  %conv4.7 = trunc i32 %sub3.7 to i16
  store i16 %conv4.7, i16* %incdec.ptr5.6, align 2, !tbaa !5
  %incdec.ptr.7 = getelementptr inbounds i16* %x, i32 4
  %incdec.ptr5.7 = getelementptr inbounds i16* %y, i32 4
  %16 = load i16* %incdec.ptr5.7, align 2, !tbaa !5
  %conv.8 = zext i16 %16 to i32
  %17 = load i16* %incdec.ptr.7, align 2, !tbaa !5
  %conv2.8 = zext i16 %17 to i32
  %sub.8 = sub i32 %conv.8, %conv2.8
  %sub3.8 = sub i32 %sub.8, %and.lobit.7
  %and.8 = lshr i32 %sub3.8, 16
  %and.lobit.8 = and i32 %and.8, 1
  %conv4.8 = trunc i32 %sub3.8 to i16
  store i16 %conv4.8, i16* %incdec.ptr5.7, align 2, !tbaa !5
  %incdec.ptr.8 = getelementptr inbounds i16* %x, i32 3
  %incdec.ptr5.8 = getelementptr inbounds i16* %y, i32 3
  %18 = load i16* %incdec.ptr5.8, align 2, !tbaa !5
  %conv.9 = zext i16 %18 to i32
  %19 = load i16* %incdec.ptr.8, align 2, !tbaa !5
  %conv2.9 = zext i16 %19 to i32
  %sub.9 = sub i32 %conv.9, %conv2.9
  %sub3.9 = sub i32 %sub.9, %and.lobit.8
  %and.9 = lshr i32 %sub3.9, 16
  %and.lobit.9 = and i32 %and.9, 1
  %conv4.9 = trunc i32 %sub3.9 to i16
  store i16 %conv4.9, i16* %incdec.ptr5.8, align 2, !tbaa !5
  %incdec.ptr.9 = getelementptr inbounds i16* %x, i32 2
  %incdec.ptr5.9 = getelementptr inbounds i16* %y, i32 2
  %20 = load i16* %incdec.ptr5.9, align 2, !tbaa !5
  %conv.10 = zext i16 %20 to i32
  %21 = load i16* %incdec.ptr.9, align 2, !tbaa !5
  %conv2.10 = zext i16 %21 to i32
  %sub.10 = sub i32 %conv.10, %conv2.10
  %sub3.10 = sub i32 %sub.10, %and.lobit.9
  %conv4.10 = trunc i32 %sub3.10 to i16
  store i16 %conv4.10, i16* %incdec.ptr5.9, align 2, !tbaa !5
  ret void
}

declare i32 @sprintf(i8*, i8*, ...)

define internal fastcc void @ediv(i16* %a, i16* %b, i16* %c, %struct.LDPARMS* %ldp) nounwind {
entry:
  %ai = alloca [13 x i16], align 2
  %bi = alloca [13 x i16], align 2
  %arrayidx.i = getelementptr inbounds i16* %a, i32 9
  %0 = load i16* %arrayidx.i, align 2, !tbaa !5
  %and.i = and i16 %0, 32767
  %cmp.i = icmp eq i16 %and.i, 32767
  br i1 %cmp.i, label %for.cond.preheader.i, label %if.end

for.cond.preheader.i:                             ; preds = %entry
  %1 = load i16* %a, align 2, !tbaa !5
  %cmp5.i = icmp eq i16 %1, 0
  %incdec.ptr.i = getelementptr inbounds i16* %a, i32 1
  br i1 %cmp5.i, label %for.inc.i, label %if.then

for.inc.i:                                        ; preds = %for.cond.preheader.i
  %2 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  %cmp5.1.i = icmp eq i16 %2, 0
  br i1 %cmp5.1.i, label %for.inc.1.i, label %if.then

for.inc.1.i:                                      ; preds = %for.inc.i
  %incdec.ptr.1.i = getelementptr inbounds i16* %a, i32 2
  %3 = load i16* %incdec.ptr.1.i, align 2, !tbaa !5
  %cmp5.2.i = icmp eq i16 %3, 0
  br i1 %cmp5.2.i, label %for.inc.2.i, label %if.then

for.inc.2.i:                                      ; preds = %for.inc.1.i
  %incdec.ptr.2.i = getelementptr inbounds i16* %a, i32 3
  %4 = load i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %cmp5.3.i = icmp eq i16 %4, 0
  br i1 %cmp5.3.i, label %for.inc.3.i, label %if.then

for.inc.3.i:                                      ; preds = %for.inc.2.i
  %incdec.ptr.3.i = getelementptr inbounds i16* %a, i32 4
  %5 = load i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %cmp5.4.i = icmp eq i16 %5, 0
  br i1 %cmp5.4.i, label %for.inc.4.i, label %if.then

for.inc.4.i:                                      ; preds = %for.inc.3.i
  %incdec.ptr.4.i = getelementptr inbounds i16* %a, i32 5
  %6 = load i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %cmp5.5.i = icmp eq i16 %6, 0
  br i1 %cmp5.5.i, label %for.inc.5.i, label %if.then

for.inc.5.i:                                      ; preds = %for.inc.4.i
  %incdec.ptr.5.i = getelementptr inbounds i16* %a, i32 6
  %7 = load i16* %incdec.ptr.5.i, align 2, !tbaa !5
  %cmp5.6.i = icmp eq i16 %7, 0
  br i1 %cmp5.6.i, label %for.inc.6.i, label %if.then

for.inc.6.i:                                      ; preds = %for.inc.5.i
  %incdec.ptr.6.i = getelementptr inbounds i16* %a, i32 7
  %8 = load i16* %incdec.ptr.6.i, align 2, !tbaa !5
  %cmp5.7.i = icmp eq i16 %8, 0
  br i1 %cmp5.7.i, label %eisnan.exit, label %if.then

eisnan.exit:                                      ; preds = %for.inc.6.i
  %incdec.ptr.7.i = getelementptr inbounds i16* %a, i32 8
  %9 = load i16* %incdec.ptr.7.i, align 2, !tbaa !5
  %not.cmp5.8.i = icmp eq i16 %9, 0
  br i1 %not.cmp5.8.i, label %if.end, label %if.then

if.then:                                          ; preds = %for.cond.preheader.i, %eisnan.exit, %for.inc.6.i, %for.inc.5.i, %for.inc.4.i, %for.inc.3.i, %for.inc.2.i, %for.inc.1.i, %for.inc.i
  %incdec.ptr1.i = getelementptr inbounds i16* %c, i32 1
  store i16 %1, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i136 = getelementptr inbounds i16* %a, i32 2
  %10 = load i16* %incdec.ptr.i, align 2, !tbaa !5
  %incdec.ptr1.1.i = getelementptr inbounds i16* %c, i32 2
  store i16 %10, i16* %incdec.ptr1.i, align 2, !tbaa !5
  %incdec.ptr.2.i137 = getelementptr inbounds i16* %a, i32 3
  %11 = load i16* %incdec.ptr.1.i136, align 2, !tbaa !5
  %incdec.ptr1.2.i = getelementptr inbounds i16* %c, i32 3
  store i16 %11, i16* %incdec.ptr1.1.i, align 2, !tbaa !5
  %incdec.ptr.3.i138 = getelementptr inbounds i16* %a, i32 4
  %12 = load i16* %incdec.ptr.2.i137, align 2, !tbaa !5
  %incdec.ptr1.3.i = getelementptr inbounds i16* %c, i32 4
  store i16 %12, i16* %incdec.ptr1.2.i, align 2, !tbaa !5
  %incdec.ptr.4.i139 = getelementptr inbounds i16* %a, i32 5
  %13 = load i16* %incdec.ptr.3.i138, align 2, !tbaa !5
  %incdec.ptr1.4.i = getelementptr inbounds i16* %c, i32 5
  store i16 %13, i16* %incdec.ptr1.3.i, align 2, !tbaa !5
  %incdec.ptr.5.i140 = getelementptr inbounds i16* %a, i32 6
  %14 = load i16* %incdec.ptr.4.i139, align 2, !tbaa !5
  %incdec.ptr1.5.i = getelementptr inbounds i16* %c, i32 6
  store i16 %14, i16* %incdec.ptr1.4.i, align 2, !tbaa !5
  %incdec.ptr.6.i141 = getelementptr inbounds i16* %a, i32 7
  %15 = load i16* %incdec.ptr.5.i140, align 2, !tbaa !5
  %incdec.ptr1.6.i = getelementptr inbounds i16* %c, i32 7
  store i16 %15, i16* %incdec.ptr1.5.i, align 2, !tbaa !5
  %incdec.ptr.7.i142 = getelementptr inbounds i16* %a, i32 8
  %16 = load i16* %incdec.ptr.6.i141, align 2, !tbaa !5
  %incdec.ptr1.7.i = getelementptr inbounds i16* %c, i32 8
  store i16 %16, i16* %incdec.ptr1.6.i, align 2, !tbaa !5
  %17 = load i16* %incdec.ptr.7.i142, align 2, !tbaa !5
  %incdec.ptr1.8.i = getelementptr inbounds i16* %c, i32 9
  store i16 %17, i16* %incdec.ptr1.7.i, align 2, !tbaa !5
  %18 = load i16* %arrayidx.i, align 2, !tbaa !5
  store i16 %18, i16* %incdec.ptr1.8.i, align 2, !tbaa !5
  br label %return

if.end:                                           ; preds = %eisnan.exit, %entry
  %arrayidx.i143 = getelementptr inbounds i16* %b, i32 9
  %19 = load i16* %arrayidx.i143, align 2, !tbaa !5
  %and.i144 = and i16 %19, 32767
  %cmp.i145 = icmp eq i16 %and.i144, 32767
  br i1 %cmp.i145, label %for.cond.preheader.i147, label %if.end4

for.cond.preheader.i147:                          ; preds = %if.end
  %20 = load i16* %b, align 2, !tbaa !5
  %cmp5.i146 = icmp eq i16 %20, 0
  %incdec.ptr.i148 = getelementptr inbounds i16* %b, i32 1
  br i1 %cmp5.i146, label %for.inc.i150, label %if.then3

for.inc.i150:                                     ; preds = %for.cond.preheader.i147
  %21 = load i16* %incdec.ptr.i148, align 2, !tbaa !5
  %cmp5.1.i149 = icmp eq i16 %21, 0
  br i1 %cmp5.1.i149, label %for.inc.1.i155, label %if.then3

for.inc.1.i155:                                   ; preds = %for.inc.i150
  %incdec.ptr.1.i153 = getelementptr inbounds i16* %b, i32 2
  %22 = load i16* %incdec.ptr.1.i153, align 2, !tbaa !5
  %cmp5.2.i154 = icmp eq i16 %22, 0
  br i1 %cmp5.2.i154, label %for.inc.2.i158, label %if.then3

for.inc.2.i158:                                   ; preds = %for.inc.1.i155
  %incdec.ptr.2.i156 = getelementptr inbounds i16* %b, i32 3
  %23 = load i16* %incdec.ptr.2.i156, align 2, !tbaa !5
  %cmp5.3.i157 = icmp eq i16 %23, 0
  br i1 %cmp5.3.i157, label %for.inc.3.i161, label %if.then3

for.inc.3.i161:                                   ; preds = %for.inc.2.i158
  %incdec.ptr.3.i159 = getelementptr inbounds i16* %b, i32 4
  %24 = load i16* %incdec.ptr.3.i159, align 2, !tbaa !5
  %cmp5.4.i160 = icmp eq i16 %24, 0
  br i1 %cmp5.4.i160, label %for.inc.4.i164, label %if.then3

for.inc.4.i164:                                   ; preds = %for.inc.3.i161
  %incdec.ptr.4.i162 = getelementptr inbounds i16* %b, i32 5
  %25 = load i16* %incdec.ptr.4.i162, align 2, !tbaa !5
  %cmp5.5.i163 = icmp eq i16 %25, 0
  br i1 %cmp5.5.i163, label %for.inc.5.i167, label %if.then3

for.inc.5.i167:                                   ; preds = %for.inc.4.i164
  %incdec.ptr.5.i165 = getelementptr inbounds i16* %b, i32 6
  %26 = load i16* %incdec.ptr.5.i165, align 2, !tbaa !5
  %cmp5.6.i166 = icmp eq i16 %26, 0
  br i1 %cmp5.6.i166, label %for.inc.6.i170, label %if.then3

for.inc.6.i170:                                   ; preds = %for.inc.5.i167
  %incdec.ptr.6.i168 = getelementptr inbounds i16* %b, i32 7
  %27 = load i16* %incdec.ptr.6.i168, align 2, !tbaa !5
  %cmp5.7.i169 = icmp eq i16 %27, 0
  br i1 %cmp5.7.i169, label %eisnan.exit175, label %if.then3

eisnan.exit175:                                   ; preds = %for.inc.6.i170
  %incdec.ptr.7.i171 = getelementptr inbounds i16* %b, i32 8
  %28 = load i16* %incdec.ptr.7.i171, align 2, !tbaa !5
  %not.cmp5.8.i172 = icmp eq i16 %28, 0
  br i1 %not.cmp5.8.i172, label %if.end4, label %if.then3

if.then3:                                         ; preds = %for.cond.preheader.i147, %eisnan.exit175, %for.inc.6.i170, %for.inc.5.i167, %for.inc.4.i164, %for.inc.3.i161, %for.inc.2.i158, %for.inc.1.i155, %for.inc.i150
  %incdec.ptr1.i178 = getelementptr inbounds i16* %c, i32 1
  store i16 %20, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i179 = getelementptr inbounds i16* %b, i32 2
  %29 = load i16* %incdec.ptr.i148, align 2, !tbaa !5
  %incdec.ptr1.1.i180 = getelementptr inbounds i16* %c, i32 2
  store i16 %29, i16* %incdec.ptr1.i178, align 2, !tbaa !5
  %incdec.ptr.2.i181 = getelementptr inbounds i16* %b, i32 3
  %30 = load i16* %incdec.ptr.1.i179, align 2, !tbaa !5
  %incdec.ptr1.2.i182 = getelementptr inbounds i16* %c, i32 3
  store i16 %30, i16* %incdec.ptr1.1.i180, align 2, !tbaa !5
  %incdec.ptr.3.i183 = getelementptr inbounds i16* %b, i32 4
  %31 = load i16* %incdec.ptr.2.i181, align 2, !tbaa !5
  %incdec.ptr1.3.i184 = getelementptr inbounds i16* %c, i32 4
  store i16 %31, i16* %incdec.ptr1.2.i182, align 2, !tbaa !5
  %incdec.ptr.4.i185 = getelementptr inbounds i16* %b, i32 5
  %32 = load i16* %incdec.ptr.3.i183, align 2, !tbaa !5
  %incdec.ptr1.4.i186 = getelementptr inbounds i16* %c, i32 5
  store i16 %32, i16* %incdec.ptr1.3.i184, align 2, !tbaa !5
  %incdec.ptr.5.i187 = getelementptr inbounds i16* %b, i32 6
  %33 = load i16* %incdec.ptr.4.i185, align 2, !tbaa !5
  %incdec.ptr1.5.i188 = getelementptr inbounds i16* %c, i32 6
  store i16 %33, i16* %incdec.ptr1.4.i186, align 2, !tbaa !5
  %incdec.ptr.6.i189 = getelementptr inbounds i16* %b, i32 7
  %34 = load i16* %incdec.ptr.5.i187, align 2, !tbaa !5
  %incdec.ptr1.6.i190 = getelementptr inbounds i16* %c, i32 7
  store i16 %34, i16* %incdec.ptr1.5.i188, align 2, !tbaa !5
  %incdec.ptr.7.i191 = getelementptr inbounds i16* %b, i32 8
  %35 = load i16* %incdec.ptr.6.i189, align 2, !tbaa !5
  %incdec.ptr1.7.i192 = getelementptr inbounds i16* %c, i32 8
  store i16 %35, i16* %incdec.ptr1.6.i190, align 2, !tbaa !5
  %36 = load i16* %incdec.ptr.7.i191, align 2, !tbaa !5
  %incdec.ptr1.8.i194 = getelementptr inbounds i16* %c, i32 9
  store i16 %36, i16* %incdec.ptr1.7.i192, align 2, !tbaa !5
  %37 = load i16* %arrayidx.i143, align 2, !tbaa !5
  store i16 %37, i16* %incdec.ptr1.8.i194, align 2, !tbaa !5
  br label %return

if.end4:                                          ; preds = %eisnan.exit175, %if.end
  %call5 = call fastcc i32 @ecmp(i16* %a, i16* getelementptr inbounds ([10 x i16]* @ezero, i32 0, i32 0))
  %cmp = icmp eq i32 %call5, 0
  br i1 %cmp, label %land.lhs.true, label %lor.lhs.false

land.lhs.true:                                    ; preds = %if.end4
  %call6 = call fastcc i32 @ecmp(i16* %b, i16* getelementptr inbounds ([10 x i16]* @ezero, i32 0, i32 0))
  %cmp7 = icmp eq i32 %call6, 0
  br i1 %cmp7, label %if.then13, label %lor.lhs.false

lor.lhs.false:                                    ; preds = %land.lhs.true, %if.end4
  %38 = load i16* %arrayidx.i, align 2, !tbaa !5
  %and.i204 = and i16 %38, 32767
  %cmp.i205 = icmp eq i16 %and.i204, 32767
  br i1 %cmp.i205, label %for.cond.preheader.i.i, label %if.end14

for.cond.preheader.i.i:                           ; preds = %lor.lhs.false
  %39 = load i16* %a, align 2, !tbaa !5
  %cmp5.i.i = icmp eq i16 %39, 0
  br i1 %cmp5.i.i, label %for.inc.i.i, label %if.end14

for.inc.i.i:                                      ; preds = %for.cond.preheader.i.i
  %incdec.ptr.i.i = getelementptr inbounds i16* %a, i32 1
  %40 = load i16* %incdec.ptr.i.i, align 2, !tbaa !5
  %cmp5.1.i.i = icmp eq i16 %40, 0
  br i1 %cmp5.1.i.i, label %for.inc.1.i.i, label %if.end14

for.inc.1.i.i:                                    ; preds = %for.inc.i.i
  %incdec.ptr.1.i.i = getelementptr inbounds i16* %a, i32 2
  %41 = load i16* %incdec.ptr.1.i.i, align 2, !tbaa !5
  %cmp5.2.i.i = icmp eq i16 %41, 0
  br i1 %cmp5.2.i.i, label %for.inc.2.i.i, label %if.end14

for.inc.2.i.i:                                    ; preds = %for.inc.1.i.i
  %incdec.ptr.2.i.i = getelementptr inbounds i16* %a, i32 3
  %42 = load i16* %incdec.ptr.2.i.i, align 2, !tbaa !5
  %cmp5.3.i.i = icmp eq i16 %42, 0
  br i1 %cmp5.3.i.i, label %for.inc.3.i.i, label %if.end14

for.inc.3.i.i:                                    ; preds = %for.inc.2.i.i
  %incdec.ptr.3.i.i = getelementptr inbounds i16* %a, i32 4
  %43 = load i16* %incdec.ptr.3.i.i, align 2, !tbaa !5
  %cmp5.4.i.i = icmp eq i16 %43, 0
  br i1 %cmp5.4.i.i, label %for.inc.4.i.i, label %if.end14

for.inc.4.i.i:                                    ; preds = %for.inc.3.i.i
  %incdec.ptr.4.i.i = getelementptr inbounds i16* %a, i32 5
  %44 = load i16* %incdec.ptr.4.i.i, align 2, !tbaa !5
  %cmp5.5.i.i = icmp eq i16 %44, 0
  br i1 %cmp5.5.i.i, label %for.inc.5.i.i, label %if.end14

for.inc.5.i.i:                                    ; preds = %for.inc.4.i.i
  %incdec.ptr.5.i.i = getelementptr inbounds i16* %a, i32 6
  %45 = load i16* %incdec.ptr.5.i.i, align 2, !tbaa !5
  %cmp5.6.i.i = icmp eq i16 %45, 0
  br i1 %cmp5.6.i.i, label %for.inc.6.i.i, label %if.end14

for.inc.6.i.i:                                    ; preds = %for.inc.5.i.i
  %incdec.ptr.6.i.i = getelementptr inbounds i16* %a, i32 7
  %46 = load i16* %incdec.ptr.6.i.i, align 2, !tbaa !5
  %cmp5.7.i.i = icmp eq i16 %46, 0
  br i1 %cmp5.7.i.i, label %for.inc.7.i.i, label %if.end14

for.inc.7.i.i:                                    ; preds = %for.inc.6.i.i
  %incdec.ptr.7.i.i = getelementptr inbounds i16* %a, i32 8
  %47 = load i16* %incdec.ptr.7.i.i, align 2, !tbaa !5
  %phitmp.i = icmp eq i16 %47, 0
  br i1 %phitmp.i, label %land.lhs.true10, label %if.end14

land.lhs.true10:                                  ; preds = %for.inc.7.i.i
  %48 = load i16* %arrayidx.i143, align 2, !tbaa !5
  %and.i219 = and i16 %48, 32767
  %cmp.i220 = icmp eq i16 %and.i219, 32767
  br i1 %cmp.i220, label %for.cond.preheader.i.i222, label %if.end14

for.cond.preheader.i.i222:                        ; preds = %land.lhs.true10
  %49 = load i16* %b, align 2, !tbaa !5
  %cmp5.i.i221 = icmp eq i16 %49, 0
  br i1 %cmp5.i.i221, label %for.inc.i.i225, label %if.end14

for.inc.i.i225:                                   ; preds = %for.cond.preheader.i.i222
  %incdec.ptr.i.i223 = getelementptr inbounds i16* %b, i32 1
  %50 = load i16* %incdec.ptr.i.i223, align 2, !tbaa !5
  %cmp5.1.i.i224 = icmp eq i16 %50, 0
  br i1 %cmp5.1.i.i224, label %for.inc.1.i.i228, label %if.end14

for.inc.1.i.i228:                                 ; preds = %for.inc.i.i225
  %incdec.ptr.1.i.i226 = getelementptr inbounds i16* %b, i32 2
  %51 = load i16* %incdec.ptr.1.i.i226, align 2, !tbaa !5
  %cmp5.2.i.i227 = icmp eq i16 %51, 0
  br i1 %cmp5.2.i.i227, label %for.inc.2.i.i231, label %if.end14

for.inc.2.i.i231:                                 ; preds = %for.inc.1.i.i228
  %incdec.ptr.2.i.i229 = getelementptr inbounds i16* %b, i32 3
  %52 = load i16* %incdec.ptr.2.i.i229, align 2, !tbaa !5
  %cmp5.3.i.i230 = icmp eq i16 %52, 0
  br i1 %cmp5.3.i.i230, label %for.inc.3.i.i234, label %if.end14

for.inc.3.i.i234:                                 ; preds = %for.inc.2.i.i231
  %incdec.ptr.3.i.i232 = getelementptr inbounds i16* %b, i32 4
  %53 = load i16* %incdec.ptr.3.i.i232, align 2, !tbaa !5
  %cmp5.4.i.i233 = icmp eq i16 %53, 0
  br i1 %cmp5.4.i.i233, label %for.inc.4.i.i237, label %if.end14

for.inc.4.i.i237:                                 ; preds = %for.inc.3.i.i234
  %incdec.ptr.4.i.i235 = getelementptr inbounds i16* %b, i32 5
  %54 = load i16* %incdec.ptr.4.i.i235, align 2, !tbaa !5
  %cmp5.5.i.i236 = icmp eq i16 %54, 0
  br i1 %cmp5.5.i.i236, label %for.inc.5.i.i240, label %if.end14

for.inc.5.i.i240:                                 ; preds = %for.inc.4.i.i237
  %incdec.ptr.5.i.i238 = getelementptr inbounds i16* %b, i32 6
  %55 = load i16* %incdec.ptr.5.i.i238, align 2, !tbaa !5
  %cmp5.6.i.i239 = icmp eq i16 %55, 0
  br i1 %cmp5.6.i.i239, label %for.inc.6.i.i243, label %if.end14

for.inc.6.i.i243:                                 ; preds = %for.inc.5.i.i240
  %incdec.ptr.6.i.i241 = getelementptr inbounds i16* %b, i32 7
  %56 = load i16* %incdec.ptr.6.i.i241, align 2, !tbaa !5
  %cmp5.7.i.i242 = icmp eq i16 %56, 0
  br i1 %cmp5.7.i.i242, label %for.inc.7.i.i246, label %if.end14

for.inc.7.i.i246:                                 ; preds = %for.inc.6.i.i243
  %incdec.ptr.7.i.i244 = getelementptr inbounds i16* %b, i32 8
  %57 = load i16* %incdec.ptr.7.i.i244, align 2, !tbaa !5
  %phitmp.i245 = icmp eq i16 %57, 0
  br i1 %phitmp.i245, label %if.then13, label %if.end14

if.then13:                                        ; preds = %for.inc.7.i.i246, %land.lhs.true
  %incdec.ptr42.i = getelementptr inbounds i16* %c, i32 1
  %scevgep.i253 = getelementptr i16* %c, i32 9
  store i16 0, i16* %c, align 2, !tbaa !5
  %incdec.ptr.i254 = getelementptr inbounds i16* %c, i32 2
  store i16 0, i16* %incdec.ptr42.i, align 2, !tbaa !5
  %incdec.ptr.1.i255 = getelementptr inbounds i16* %c, i32 3
  store i16 0, i16* %incdec.ptr.i254, align 2, !tbaa !5
  %incdec.ptr.2.i256 = getelementptr inbounds i16* %c, i32 4
  store i16 0, i16* %incdec.ptr.1.i255, align 2, !tbaa !5
  %incdec.ptr.3.i257 = getelementptr inbounds i16* %c, i32 5
  store i16 0, i16* %incdec.ptr.2.i256, align 2, !tbaa !5
  %incdec.ptr.4.i258 = getelementptr inbounds i16* %c, i32 6
  store i16 0, i16* %incdec.ptr.3.i257, align 2, !tbaa !5
  %incdec.ptr.5.i259 = getelementptr inbounds i16* %c, i32 7
  store i16 0, i16* %incdec.ptr.4.i258, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.5.i259, align 2, !tbaa !5
  %scevgep49.i = getelementptr i16* %c, i32 8
  store i16 -16384, i16* %scevgep49.i, align 2, !tbaa !5
  store i16 32767, i16* %scevgep.i253, align 2, !tbaa !5
  br label %return

if.end14:                                         ; preds = %for.inc.7.i.i, %for.inc.6.i.i, %for.inc.5.i.i, %for.inc.4.i.i, %for.inc.3.i.i, %for.inc.2.i.i, %for.inc.1.i.i, %for.inc.i.i, %for.cond.preheader.i.i, %lor.lhs.false, %for.inc.6.i.i243, %for.inc.5.i.i240, %for.inc.4.i.i237, %for.inc.3.i.i234, %for.inc.2.i.i231, %for.inc.1.i.i228, %for.inc.i.i225, %for.cond.preheader.i.i222, %for.inc.7.i.i246, %land.lhs.true10
  %58 = load i16* %arrayidx.i143, align 2, !tbaa !5
  %and.i262 = and i16 %58, 32767
  %cmp.i263 = icmp eq i16 %and.i262, 32767
  br i1 %cmp.i263, label %for.cond.preheader.i.i265, label %if.end24

for.cond.preheader.i.i265:                        ; preds = %if.end14
  %59 = load i16* %b, align 2, !tbaa !5
  %cmp5.i.i264 = icmp eq i16 %59, 0
  br i1 %cmp5.i.i264, label %for.inc.i.i268, label %if.end24

for.inc.i.i268:                                   ; preds = %for.cond.preheader.i.i265
  %incdec.ptr.i.i266 = getelementptr inbounds i16* %b, i32 1
  %60 = load i16* %incdec.ptr.i.i266, align 2, !tbaa !5
  %cmp5.1.i.i267 = icmp eq i16 %60, 0
  br i1 %cmp5.1.i.i267, label %for.inc.1.i.i271, label %if.end24

for.inc.1.i.i271:                                 ; preds = %for.inc.i.i268
  %incdec.ptr.1.i.i269 = getelementptr inbounds i16* %b, i32 2
  %61 = load i16* %incdec.ptr.1.i.i269, align 2, !tbaa !5
  %cmp5.2.i.i270 = icmp eq i16 %61, 0
  br i1 %cmp5.2.i.i270, label %for.inc.2.i.i274, label %if.end24

for.inc.2.i.i274:                                 ; preds = %for.inc.1.i.i271
  %incdec.ptr.2.i.i272 = getelementptr inbounds i16* %b, i32 3
  %62 = load i16* %incdec.ptr.2.i.i272, align 2, !tbaa !5
  %cmp5.3.i.i273 = icmp eq i16 %62, 0
  br i1 %cmp5.3.i.i273, label %for.inc.3.i.i277, label %if.end24

for.inc.3.i.i277:                                 ; preds = %for.inc.2.i.i274
  %incdec.ptr.3.i.i275 = getelementptr inbounds i16* %b, i32 4
  %63 = load i16* %incdec.ptr.3.i.i275, align 2, !tbaa !5
  %cmp5.4.i.i276 = icmp eq i16 %63, 0
  br i1 %cmp5.4.i.i276, label %for.inc.4.i.i280, label %if.end24

for.inc.4.i.i280:                                 ; preds = %for.inc.3.i.i277
  %incdec.ptr.4.i.i278 = getelementptr inbounds i16* %b, i32 5
  %64 = load i16* %incdec.ptr.4.i.i278, align 2, !tbaa !5
  %cmp5.5.i.i279 = icmp eq i16 %64, 0
  br i1 %cmp5.5.i.i279, label %for.inc.5.i.i283, label %if.end24

for.inc.5.i.i283:                                 ; preds = %for.inc.4.i.i280
  %incdec.ptr.5.i.i281 = getelementptr inbounds i16* %b, i32 6
  %65 = load i16* %incdec.ptr.5.i.i281, align 2, !tbaa !5
  %cmp5.6.i.i282 = icmp eq i16 %65, 0
  br i1 %cmp5.6.i.i282, label %for.inc.6.i.i286, label %if.end24

for.inc.6.i.i286:                                 ; preds = %for.inc.5.i.i283
  %incdec.ptr.6.i.i284 = getelementptr inbounds i16* %b, i32 7
  %66 = load i16* %incdec.ptr.6.i.i284, align 2, !tbaa !5
  %cmp5.7.i.i285 = icmp eq i16 %66, 0
  br i1 %cmp5.7.i.i285, label %for.inc.7.i.i289, label %if.end24

for.inc.7.i.i289:                                 ; preds = %for.inc.6.i.i286
  %incdec.ptr.7.i.i287 = getelementptr inbounds i16* %b, i32 8
  %67 = load i16* %incdec.ptr.7.i.i287, align 2, !tbaa !5
  %phitmp.i288 = icmp eq i16 %67, 0
  br i1 %phitmp.i288, label %if.then17, label %if.end24

if.then17:                                        ; preds = %for.inc.7.i.i289
  br i1 %cmp.i205, label %for.cond.preheader.i.i383, label %if.end.i409

for.cond.preheader.i.i383:                        ; preds = %if.then17
  %68 = load i16* %a, align 2, !tbaa !5
  %cmp5.i.i382 = icmp eq i16 %68, 0
  br i1 %cmp5.i.i382, label %for.inc.i.i386, label %eisneg.exit

for.inc.i.i386:                                   ; preds = %for.cond.preheader.i.i383
  %incdec.ptr.i.i384 = getelementptr inbounds i16* %a, i32 1
  %69 = load i16* %incdec.ptr.i.i384, align 2, !tbaa !5
  %cmp5.1.i.i385 = icmp eq i16 %69, 0
  br i1 %cmp5.1.i.i385, label %for.inc.1.i.i389, label %eisneg.exit

for.inc.1.i.i389:                                 ; preds = %for.inc.i.i386
  %incdec.ptr.1.i.i387 = getelementptr inbounds i16* %a, i32 2
  %70 = load i16* %incdec.ptr.1.i.i387, align 2, !tbaa !5
  %cmp5.2.i.i388 = icmp eq i16 %70, 0
  br i1 %cmp5.2.i.i388, label %for.inc.2.i.i392, label %eisneg.exit

for.inc.2.i.i392:                                 ; preds = %for.inc.1.i.i389
  %incdec.ptr.2.i.i390 = getelementptr inbounds i16* %a, i32 3
  %71 = load i16* %incdec.ptr.2.i.i390, align 2, !tbaa !5
  %cmp5.3.i.i391 = icmp eq i16 %71, 0
  br i1 %cmp5.3.i.i391, label %for.inc.3.i.i395, label %eisneg.exit

for.inc.3.i.i395:                                 ; preds = %for.inc.2.i.i392
  %incdec.ptr.3.i.i393 = getelementptr inbounds i16* %a, i32 4
  %72 = load i16* %incdec.ptr.3.i.i393, align 2, !tbaa !5
  %cmp5.4.i.i394 = icmp eq i16 %72, 0
  br i1 %cmp5.4.i.i394, label %for.inc.4.i.i398, label %eisneg.exit

for.inc.4.i.i398:                                 ; preds = %for.inc.3.i.i395
  %incdec.ptr.4.i.i396 = getelementptr inbounds i16* %a, i32 5
  %73 = load i16* %incdec.ptr.4.i.i396, align 2, !tbaa !5
  %cmp5.5.i.i397 = icmp eq i16 %73, 0
  br i1 %cmp5.5.i.i397, label %for.inc.5.i.i401, label %eisneg.exit

for.inc.5.i.i401:                                 ; preds = %for.inc.4.i.i398
  %incdec.ptr.5.i.i399 = getelementptr inbounds i16* %a, i32 6
  %74 = load i16* %incdec.ptr.5.i.i399, align 2, !tbaa !5
  %cmp5.6.i.i400 = icmp eq i16 %74, 0
  br i1 %cmp5.6.i.i400, label %for.inc.6.i.i404, label %eisneg.exit

for.inc.6.i.i404:                                 ; preds = %for.inc.5.i.i401
  %incdec.ptr.6.i.i402 = getelementptr inbounds i16* %a, i32 7
  %75 = load i16* %incdec.ptr.6.i.i402, align 2, !tbaa !5
  %cmp5.7.i.i403 = icmp eq i16 %75, 0
  br i1 %cmp5.7.i.i403, label %eisnan.exit.i407, label %eisneg.exit

eisnan.exit.i407:                                 ; preds = %for.inc.6.i.i404
  %incdec.ptr.7.i.i405 = getelementptr inbounds i16* %a, i32 8
  %76 = load i16* %incdec.ptr.7.i.i405, align 2, !tbaa !5
  %not.cmp5.8.i.i406 = icmp eq i16 %76, 0
  br i1 %not.cmp5.8.i.i406, label %if.end.i409, label %eisneg.exit

if.end.i409:                                      ; preds = %eisnan.exit.i407, %if.then17
  %.lobit.i408 = lshr i16 %38, 15
  %77 = zext i16 %.lobit.i408 to i32
  br label %eisneg.exit

eisneg.exit:                                      ; preds = %if.end.i409, %eisnan.exit.i407, %for.inc.6.i.i404, %for.inc.5.i.i401, %for.inc.4.i.i398, %for.inc.3.i.i395, %for.inc.2.i.i392, %for.inc.1.i.i389, %for.inc.i.i386, %for.cond.preheader.i.i383
  %retval.0.i410 = phi i32 [ 0, %eisnan.exit.i407 ], [ %77, %if.end.i409 ], [ 0, %for.cond.preheader.i.i383 ], [ 0, %for.inc.i.i386 ], [ 0, %for.inc.1.i.i389 ], [ 0, %for.inc.2.i.i392 ], [ 0, %for.inc.3.i.i395 ], [ 0, %for.inc.4.i.i398 ], [ 0, %for.inc.5.i.i401 ], [ 0, %for.inc.6.i.i404 ]
  %.lobit.i = lshr i16 %58, 15
  %78 = zext i16 %.lobit.i to i32
  %tobool20 = icmp eq i32 %retval.0.i410, %78
  %add.ptr = getelementptr inbounds i16* %c, i32 9
  %incdec.ptr.i340 = getelementptr inbounds i16* %c, i32 1
  store i16 0, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i341 = getelementptr inbounds i16* %c, i32 2
  store i16 0, i16* %incdec.ptr.i340, align 2, !tbaa !5
  %incdec.ptr.2.i342 = getelementptr inbounds i16* %c, i32 3
  store i16 0, i16* %incdec.ptr.1.i341, align 2, !tbaa !5
  %incdec.ptr.3.i343 = getelementptr inbounds i16* %c, i32 4
  store i16 0, i16* %incdec.ptr.2.i342, align 2, !tbaa !5
  %incdec.ptr.4.i344 = getelementptr inbounds i16* %c, i32 5
  store i16 0, i16* %incdec.ptr.3.i343, align 2, !tbaa !5
  %incdec.ptr.5.i345 = getelementptr inbounds i16* %c, i32 6
  store i16 0, i16* %incdec.ptr.4.i344, align 2, !tbaa !5
  %incdec.ptr.6.i346 = getelementptr inbounds i16* %c, i32 7
  store i16 0, i16* %incdec.ptr.5.i345, align 2, !tbaa !5
  %incdec.ptr.7.i347 = getelementptr inbounds i16* %c, i32 8
  store i16 0, i16* %incdec.ptr.6.i346, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i347, align 2, !tbaa !5
  %conv1.i351 = select i1 %tobool20, i16 32767, i16 -1
  store i16 %conv1.i351, i16* %add.ptr, align 2, !tbaa !5
  br label %return

if.end24:                                         ; preds = %for.inc.6.i.i286, %for.inc.5.i.i283, %for.inc.4.i.i280, %for.inc.3.i.i277, %for.inc.2.i.i274, %for.inc.1.i.i271, %for.inc.i.i268, %for.cond.preheader.i.i265, %for.inc.7.i.i289, %if.end14
  br i1 %cmp.i205, label %for.cond.preheader.i.i309, label %if.end28

for.cond.preheader.i.i309:                        ; preds = %if.end24
  %79 = load i16* %a, align 2, !tbaa !5
  %cmp5.i.i308 = icmp eq i16 %79, 0
  br i1 %cmp5.i.i308, label %for.inc.i.i312, label %if.end28

for.inc.i.i312:                                   ; preds = %for.cond.preheader.i.i309
  %incdec.ptr.i.i310 = getelementptr inbounds i16* %a, i32 1
  %80 = load i16* %incdec.ptr.i.i310, align 2, !tbaa !5
  %cmp5.1.i.i311 = icmp eq i16 %80, 0
  br i1 %cmp5.1.i.i311, label %for.inc.1.i.i315, label %if.end28

for.inc.1.i.i315:                                 ; preds = %for.inc.i.i312
  %incdec.ptr.1.i.i313 = getelementptr inbounds i16* %a, i32 2
  %81 = load i16* %incdec.ptr.1.i.i313, align 2, !tbaa !5
  %cmp5.2.i.i314 = icmp eq i16 %81, 0
  br i1 %cmp5.2.i.i314, label %for.inc.2.i.i318, label %if.end28

for.inc.2.i.i318:                                 ; preds = %for.inc.1.i.i315
  %incdec.ptr.2.i.i316 = getelementptr inbounds i16* %a, i32 3
  %82 = load i16* %incdec.ptr.2.i.i316, align 2, !tbaa !5
  %cmp5.3.i.i317 = icmp eq i16 %82, 0
  br i1 %cmp5.3.i.i317, label %for.inc.3.i.i321, label %if.end28

for.inc.3.i.i321:                                 ; preds = %for.inc.2.i.i318
  %incdec.ptr.3.i.i319 = getelementptr inbounds i16* %a, i32 4
  %83 = load i16* %incdec.ptr.3.i.i319, align 2, !tbaa !5
  %cmp5.4.i.i320 = icmp eq i16 %83, 0
  br i1 %cmp5.4.i.i320, label %for.inc.4.i.i324, label %if.end28

for.inc.4.i.i324:                                 ; preds = %for.inc.3.i.i321
  %incdec.ptr.4.i.i322 = getelementptr inbounds i16* %a, i32 5
  %84 = load i16* %incdec.ptr.4.i.i322, align 2, !tbaa !5
  %cmp5.5.i.i323 = icmp eq i16 %84, 0
  br i1 %cmp5.5.i.i323, label %for.inc.5.i.i327, label %if.end28

for.inc.5.i.i327:                                 ; preds = %for.inc.4.i.i324
  %incdec.ptr.5.i.i325 = getelementptr inbounds i16* %a, i32 6
  %85 = load i16* %incdec.ptr.5.i.i325, align 2, !tbaa !5
  %cmp5.6.i.i326 = icmp eq i16 %85, 0
  br i1 %cmp5.6.i.i326, label %for.inc.6.i.i330, label %if.end28

for.inc.6.i.i330:                                 ; preds = %for.inc.5.i.i327
  %incdec.ptr.6.i.i328 = getelementptr inbounds i16* %a, i32 7
  %86 = load i16* %incdec.ptr.6.i.i328, align 2, !tbaa !5
  %cmp5.7.i.i329 = icmp eq i16 %86, 0
  br i1 %cmp5.7.i.i329, label %for.inc.7.i.i333, label %if.end28

for.inc.7.i.i333:                                 ; preds = %for.inc.6.i.i330
  %incdec.ptr.7.i.i331 = getelementptr inbounds i16* %a, i32 8
  %87 = load i16* %incdec.ptr.7.i.i331, align 2, !tbaa !5
  %phitmp.i332 = icmp eq i16 %87, 0
  br i1 %phitmp.i332, label %if.then27, label %if.end28

if.then27:                                        ; preds = %for.inc.7.i.i333
  %incdec.ptr.i296 = getelementptr inbounds i16* %c, i32 1
  store i16 0, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i297 = getelementptr inbounds i16* %c, i32 2
  store i16 0, i16* %incdec.ptr.i296, align 2, !tbaa !5
  %incdec.ptr.2.i298 = getelementptr inbounds i16* %c, i32 3
  store i16 0, i16* %incdec.ptr.1.i297, align 2, !tbaa !5
  %incdec.ptr.3.i299 = getelementptr inbounds i16* %c, i32 4
  store i16 0, i16* %incdec.ptr.2.i298, align 2, !tbaa !5
  %incdec.ptr.4.i300 = getelementptr inbounds i16* %c, i32 5
  store i16 0, i16* %incdec.ptr.3.i299, align 2, !tbaa !5
  %incdec.ptr.5.i301 = getelementptr inbounds i16* %c, i32 6
  store i16 0, i16* %incdec.ptr.4.i300, align 2, !tbaa !5
  %incdec.ptr.6.i302 = getelementptr inbounds i16* %c, i32 7
  store i16 0, i16* %incdec.ptr.5.i301, align 2, !tbaa !5
  %incdec.ptr.7.i303 = getelementptr inbounds i16* %c, i32 8
  store i16 0, i16* %incdec.ptr.6.i302, align 2, !tbaa !5
  %incdec.ptr.8.i304 = getelementptr inbounds i16* %c, i32 9
  store i16 0, i16* %incdec.ptr.7.i303, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i304, align 2, !tbaa !5
  br label %return

if.end28:                                         ; preds = %for.inc.6.i.i330, %for.inc.5.i.i327, %for.inc.4.i.i324, %for.inc.3.i.i321, %for.inc.2.i.i318, %for.inc.1.i.i315, %for.inc.i.i312, %for.cond.preheader.i.i309, %for.inc.7.i.i333, %if.end24
  %arraydecay = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 0
  call fastcc void @emovi(i16* %a, i16* %arraydecay)
  %arraydecay29 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 0
  call fastcc void @emovi(i16* %b, i16* %arraydecay29)
  %arrayidx = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 1
  %88 = load i16* %arrayidx, align 2, !tbaa !5
  %conv = zext i16 %88 to i32
  %arrayidx30 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 1
  %89 = load i16* %arrayidx30, align 2, !tbaa !5
  %conv31 = zext i16 %89 to i32
  %cmp34 = icmp eq i16 %89, 0
  br i1 %cmp34, label %for.cond, label %dnzro1

for.cond:                                         ; preds = %if.end28, %for.body
  %i.0 = phi i32 [ %inc, %for.body ], [ 1, %if.end28 ]
  %cmp37 = icmp slt i32 %i.0, 12
  br i1 %cmp37, label %for.body, label %for.end

for.body:                                         ; preds = %for.cond
  %arrayidx39 = getelementptr inbounds [13 x i16]* %bi, i32 0, i32 %i.0
  %90 = load i16* %arrayidx39, align 2, !tbaa !5
  %cmp41 = icmp eq i16 %90, 0
  %inc = add nsw i32 %i.0, 1
  br i1 %cmp41, label %for.cond, label %if.then43

if.then43:                                        ; preds = %for.body
  %call45 = call fastcc i32 @enormlz(i16* %arraydecay29)
  %sub = sub nsw i32 %conv31, %call45
  %.pre = load i16* %arrayidx, align 2, !tbaa !5
  br label %dnzro1

for.end:                                          ; preds = %for.cond
  %incdec.ptr.i209 = getelementptr inbounds i16* %c, i32 1
  store i16 0, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i210 = getelementptr inbounds i16* %c, i32 2
  store i16 0, i16* %incdec.ptr.i209, align 2, !tbaa !5
  %incdec.ptr.2.i211 = getelementptr inbounds i16* %c, i32 3
  store i16 0, i16* %incdec.ptr.1.i210, align 2, !tbaa !5
  %incdec.ptr.3.i212 = getelementptr inbounds i16* %c, i32 4
  store i16 0, i16* %incdec.ptr.2.i211, align 2, !tbaa !5
  %incdec.ptr.4.i213 = getelementptr inbounds i16* %c, i32 5
  store i16 0, i16* %incdec.ptr.3.i212, align 2, !tbaa !5
  %incdec.ptr.5.i214 = getelementptr inbounds i16* %c, i32 6
  store i16 0, i16* %incdec.ptr.4.i213, align 2, !tbaa !5
  %incdec.ptr.6.i215 = getelementptr inbounds i16* %c, i32 7
  store i16 0, i16* %incdec.ptr.5.i214, align 2, !tbaa !5
  %incdec.ptr.7.i216 = getelementptr inbounds i16* %c, i32 8
  store i16 0, i16* %incdec.ptr.6.i215, align 2, !tbaa !5
  %incdec.ptr.8.i217 = getelementptr inbounds i16* %c, i32 9
  store i16 0, i16* %incdec.ptr.7.i216, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.8.i217, align 2, !tbaa !5
  br label %return

dnzro1:                                           ; preds = %if.end28, %if.then43
  %91 = phi i16 [ %.pre, %if.then43 ], [ %88, %if.end28 ]
  %ltb.0 = phi i32 [ %sub, %if.then43 ], [ %conv31, %if.end28 ]
  %cmp50 = icmp eq i16 %91, 0
  br i1 %cmp50, label %for.cond53, label %dnzro2

for.cond53:                                       ; preds = %dnzro1, %for.body56
  %i.1 = phi i32 [ %inc67, %for.body56 ], [ 1, %dnzro1 ]
  %cmp54 = icmp slt i32 %i.1, 12
  br i1 %cmp54, label %for.body56, label %for.end68

for.body56:                                       ; preds = %for.cond53
  %arrayidx57 = getelementptr inbounds [13 x i16]* %ai, i32 0, i32 %i.1
  %92 = load i16* %arrayidx57, align 2, !tbaa !5
  %cmp59 = icmp eq i16 %92, 0
  %inc67 = add nsw i32 %i.1, 1
  br i1 %cmp59, label %for.cond53, label %if.then61

if.then61:                                        ; preds = %for.body56
  %call63 = call fastcc i32 @enormlz(i16* %arraydecay)
  %sub64 = sub nsw i32 %conv, %call63
  br label %dnzro2

for.end68:                                        ; preds = %for.cond53
  %93 = load i16* %arraydecay, align 2, !tbaa !5
  %94 = load i16* %arraydecay29, align 2, !tbaa !5
  %cmp73 = icmp eq i16 %93, %94
  %add.ptr76 = getelementptr inbounds i16* %c, i32 9
  %incdec.ptr.i195 = getelementptr inbounds i16* %c, i32 1
  store i16 0, i16* %c, align 2, !tbaa !5
  %incdec.ptr.1.i196 = getelementptr inbounds i16* %c, i32 2
  store i16 0, i16* %incdec.ptr.i195, align 2, !tbaa !5
  %incdec.ptr.2.i197 = getelementptr inbounds i16* %c, i32 3
  store i16 0, i16* %incdec.ptr.1.i196, align 2, !tbaa !5
  %incdec.ptr.3.i198 = getelementptr inbounds i16* %c, i32 4
  store i16 0, i16* %incdec.ptr.2.i197, align 2, !tbaa !5
  %incdec.ptr.4.i199 = getelementptr inbounds i16* %c, i32 5
  store i16 0, i16* %incdec.ptr.3.i198, align 2, !tbaa !5
  %incdec.ptr.5.i200 = getelementptr inbounds i16* %c, i32 6
  store i16 0, i16* %incdec.ptr.4.i199, align 2, !tbaa !5
  %incdec.ptr.6.i201 = getelementptr inbounds i16* %c, i32 7
  store i16 0, i16* %incdec.ptr.5.i200, align 2, !tbaa !5
  %incdec.ptr.7.i202 = getelementptr inbounds i16* %c, i32 8
  store i16 0, i16* %incdec.ptr.6.i201, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.7.i202, align 2, !tbaa !5
  %conv1.i = select i1 %cmp73, i16 32767, i16 -1
  store i16 %conv1.i, i16* %add.ptr76, align 2, !tbaa !5
  br label %return

dnzro2:                                           ; preds = %dnzro1, %if.then61
  %lta.0 = phi i32 [ %sub64, %if.then61 ], [ %conv, %dnzro1 ]
  %call83 = call fastcc i32 @edivm(i16* %arraydecay, i16* %arraydecay29, %struct.LDPARMS* %ldp)
  %sub84 = add i32 %ltb.0, 16383
  %add = sub i32 %sub84, %lta.0
  call fastcc void @emdnorm(i16* %arraydecay29, i32 %call83, i32 0, i32 %add, i32 64, %struct.LDPARMS* %ldp)
  %95 = load i16* %arraydecay, align 2, !tbaa !5
  %96 = load i16* %arraydecay29, align 2, !tbaa !5
  %not.cmp90 = icmp ne i16 %95, %96
  %.133 = sext i1 %not.cmp90 to i16
  store i16 %.133, i16* %arraydecay29, align 2
  call fastcc void @emovo(i16* %arraydecay29, i16* %c)
  br label %return

return:                                           ; preds = %dnzro2, %for.end68, %for.end, %if.then27, %eisneg.exit, %if.then13, %if.then3, %if.then
  ret void
}

define internal fastcc void @eiremain(i16* %den, i16* %num, %struct.LDPARMS* %ldp) nounwind {
entry:
  %arraydecay = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 0
  %arrayidx = getelementptr inbounds i16* %den, i32 1
  %0 = load i16* %arrayidx, align 2, !tbaa !5
  %conv = zext i16 %0 to i32
  %call = tail call fastcc i32 @enormlz(i16* %den)
  %sub = sub nsw i32 %conv, %call
  %arrayidx2 = getelementptr inbounds i16* %num, i32 1
  %1 = load i16* %arrayidx2, align 2, !tbaa !5
  %conv3 = zext i16 %1 to i32
  %call4 = tail call fastcc i32 @enormlz(i16* %num)
  %sub5 = sub nsw i32 %conv3, %call4
  %incdec.ptr.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 1
  store i16 0, i16* %arraydecay, align 2, !tbaa !5
  %incdec.ptr.1.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 2
  store i16 0, i16* %incdec.ptr.i, align 2, !tbaa !5
  %incdec.ptr.2.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 3
  store i16 0, i16* %incdec.ptr.1.i, align 2, !tbaa !5
  %incdec.ptr.3.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 4
  store i16 0, i16* %incdec.ptr.2.i, align 2, !tbaa !5
  %incdec.ptr.4.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 5
  store i16 0, i16* %incdec.ptr.3.i, align 2, !tbaa !5
  %incdec.ptr.5.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 6
  store i16 0, i16* %incdec.ptr.4.i, align 2, !tbaa !5
  %incdec.ptr.6.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 7
  store i16 0, i16* %incdec.ptr.5.i, align 2, !tbaa !5
  %incdec.ptr.7.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 8
  store i16 0, i16* %incdec.ptr.6.i, align 2, !tbaa !5
  %incdec.ptr.8.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 9
  store i16 0, i16* %incdec.ptr.7.i, align 2, !tbaa !5
  %incdec.ptr.9.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 10
  store i16 0, i16* %incdec.ptr.8.i, align 2, !tbaa !5
  %incdec.ptr.10.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 11
  store i16 0, i16* %incdec.ptr.9.i, align 2, !tbaa !5
  %incdec.ptr.11.i = getelementptr inbounds %struct.LDPARMS* %ldp, i32 0, i32 9, i32 12
  store i16 0, i16* %incdec.ptr.10.i, align 2, !tbaa !5
  store i16 0, i16* %incdec.ptr.11.i, align 2, !tbaa !5
  %cmp68 = icmp slt i32 %sub5, %sub
  br i1 %cmp68, label %while.end, label %while.body.lr.ph

while.body.lr.ph:                                 ; preds = %entry
  %add.ptr.i = getelementptr inbounds i16* %den, i32 2
  %add.ptr1.i = getelementptr inbounds i16* %num, i32 2
  %incdec.ptr2.i = getelementptr inbounds i16* %num, i32 3
  %incdec.ptr.i30 = getelementptr inbounds i16* %den, i32 3
  %incdec.ptr2.1.i = getelementptr inbounds i16* %num, i32 4
  %incdec.ptr.1.i31 = getelementptr inbounds i16* %den, i32 4
  %incdec.ptr2.2.i = getelementptr inbounds i16* %num, i32 5
  %incdec.ptr.2.i32 = getelementptr inbounds i16* %den, i32 5
  %incdec.ptr2.3.i = getelementptr inbounds i16* %num, i32 6
  %incdec.ptr.3.i33 = getelementptr inbounds i16* %den, i32 6
  %incdec.ptr2.4.i = getelementptr inbounds i16* %num, i32 7
  %incdec.ptr.4.i34 = getelementptr inbounds i16* %den, i32 7
  %incdec.ptr2.5.i = getelementptr inbounds i16* %num, i32 8
  %incdec.ptr.5.i35 = getelementptr inbounds i16* %den, i32 8
  %incdec.ptr2.6.i = getelementptr inbounds i16* %num, i32 9
  %incdec.ptr.6.i36 = getelementptr inbounds i16* %den, i32 9
  %incdec.ptr2.7.i = getelementptr inbounds i16* %num, i32 10
  %incdec.ptr.7.i37 = getelementptr inbounds i16* %den, i32 10
  %incdec.ptr2.8.i = getelementptr inbounds i16* %num, i32 11
  %incdec.ptr.8.i38 = getelementptr inbounds i16* %den, i32 11
  %incdec.ptr2.9.i = getelementptr inbounds i16* %num, i32 12
  %incdec.ptr.9.i39 = getelementptr inbounds i16* %den, i32 12
  br label %while.body

while.body:                                       ; preds = %while.body.lr.ph, %eshup1.exit
  %ln.069 = phi i32 [ %sub5, %while.body.lr.ph ], [ %sub14, %eshup1.exit ]
  %2 = load i16* %add.ptr.i, align 2, !tbaa !5
  %3 = load i16* %add.ptr1.i, align 2, !tbaa !5
  %cmp4.i = icmp eq i16 %2, %3
  br i1 %cmp4.i, label %for.inc.i, label %ecmpm.exit

for.inc.i:                                        ; preds = %while.body
  %4 = load i16* %incdec.ptr.i30, align 2, !tbaa !5
  %5 = load i16* %incdec.ptr2.i, align 2, !tbaa !5
  %cmp4.1.i = icmp eq i16 %4, %5
  br i1 %cmp4.1.i, label %for.inc.1.i, label %ecmpm.exit

for.inc.1.i:                                      ; preds = %for.inc.i
  %6 = load i16* %incdec.ptr.1.i31, align 2, !tbaa !5
  %7 = load i16* %incdec.ptr2.1.i, align 2, !tbaa !5
  %cmp4.2.i = icmp eq i16 %6, %7
  br i1 %cmp4.2.i, label %for.inc.2.i, label %ecmpm.exit

for.inc.2.i:                                      ; preds = %for.inc.1.i
  %8 = load i16* %incdec.ptr.2.i32, align 2, !tbaa !5
  %9 = load i16* %incdec.ptr2.2.i, align 2, !tbaa !5
  %cmp4.3.i = icmp eq i16 %8, %9
  br i1 %cmp4.3.i, label %for.inc.3.i, label %ecmpm.exit

for.inc.3.i:                                      ; preds = %for.inc.2.i
  %10 = load i16* %incdec.ptr.3.i33, align 2, !tbaa !5
  %11 = load i16* %incdec.ptr2.3.i, align 2, !tbaa !5
  %cmp4.4.i = icmp eq i16 %10, %11
  br i1 %cmp4.4.i, label %for.inc.4.i, label %ecmpm.exit

for.inc.4.i:                                      ; preds = %for.inc.3.i
  %12 = load i16* %incdec.ptr.4.i34, align 2, !tbaa !5
  %13 = load i16* %incdec.ptr2.4.i, align 2, !tbaa !5
  %cmp4.5.i = icmp eq i16 %12, %13
  br i1 %cmp4.5.i, label %for.inc.5.i, label %ecmpm.exit

for.inc.5.i:                                      ; preds = %for.inc.4.i
  %14 = load i16* %incdec.ptr.5.i35, align 2, !tbaa !5
  %15 = load i16* %incdec.ptr2.5.i, align 2, !tbaa !5
  %cmp4.6.i = icmp eq i16 %14, %15
  br i1 %cmp4.6.i, label %for.inc.6.i, label %ecmpm.exit

for.inc.6.i:                                      ; preds = %for.inc.5.i
  %16 = load i16* %incdec.ptr.6.i36, align 2, !tbaa !5
  %17 = load i16* %incdec.ptr2.6.i, align 2, !tbaa !5
  %cmp4.7.i = icmp eq i16 %16, %17
  br i1 %cmp4.7.i, label %for.inc.7.i, label %ecmpm.exit

for.inc.7.i:                                      ; preds = %for.inc.6.i
  %18 = load i16* %incdec.ptr.7.i37, align 2, !tbaa !5
  %19 = load i16* %incdec.ptr2.7.i, align 2, !tbaa !5
  %cmp4.8.i = icmp eq i16 %18, %19
  br i1 %cmp4.8.i, label %for.inc.8.i, label %ecmpm.exit

for.inc.8.i:                                      ; preds = %for.inc.7.i
  %20 = load i16* %incdec.ptr.8.i38, align 2, !tbaa !5
  %21 = load i16* %incdec.ptr2.8.i, align 2, !tbaa !5
  %cmp4.9.i = icmp eq i16 %20, %21
  br i1 %cmp4.9.i, label %for.inc.9.i, label %ecmpm.exit

for.inc.9.i:                                      ; preds = %for.inc.8.i
  %22 = load i16* %incdec.ptr.9.i39, align 2, !tbaa !5
  %23 = load i16* %incdec.ptr2.9.i, align 2, !tbaa !5
  %cmp4.10.i = icmp eq i16 %22, %23
  br i1 %cmp4.10.i, label %if.then, label %ecmpm.exit

ecmpm.exit:                                       ; preds = %while.body, %for.inc.i, %for.inc.1.i, %for.inc.2.i, %for.inc.3.i, %for.inc.4.i, %for.inc.5.i, %for.inc.6.i, %for.inc.7.i, %for.inc.8.i, %for.inc.9.i
  %.lcssa23.i = phi i16 [ %3, %while.body ], [ %5, %for.inc.i ], [ %7, %for.inc.1.i ], [ %9, %for.inc.2.i ], [ %11, %for.inc.3.i ], [ %13, %for.inc.4.i ], [ %15, %for.inc.5.i ], [ %17, %for.inc.6.i ], [ %19, %for.inc.7.i ], [ %21, %for.inc.8.i ], [ %23, %for.inc.9.i ]
  %.lcssa.i = phi i16 [ %2, %while.body ], [ %4, %for.inc.i ], [ %6, %for.inc.1.i ], [ %8, %for.inc.2.i ], [ %10, %for.inc.3.i ], [ %12, %for.inc.4.i ], [ %14, %for.inc.5.i ], [ %16, %for.inc.6.i ], [ %18, %for.inc.7.i ], [ %20, %for.inc.8.i ], [ %22, %for.inc.9.i ]
  %not.cmp10.i = icmp ugt i16 %.lcssa.i, %.lcssa23.i
  br i1 %not.cmp10.i, label %if.end, label %if.then

if.then:                                          ; preds = %ecmpm.exit, %for.inc.9.i
  tail call fastcc void @esubm(i16* %den, i16* %num)
  br label %if.end

if.end:                                           ; preds = %ecmpm.exit, %if.then
  %j.0 = phi i32 [ 1, %if.then ], [ 0, %ecmpm.exit ]
  br label %for.body.i47

for.body.i47:                                     ; preds = %if.end.i65.for.body.i47_crit_edge, %if.end
  %i.025.i43 = phi i32 [ 3, %if.end ], [ %phitmp, %if.end.i65.for.body.i47_crit_edge ]
  %bits.024.i44 = phi i16 [ 0, %if.end ], [ %conv15.i61, %if.end.i65.for.body.i47_crit_edge ]
  %x.addr.023.i45 = phi i16* [ %incdec.ptr.11.i, %if.end ], [ %incdec.ptr.i62, %if.end.i65.for.body.i47_crit_edge ]
  %24 = load i16* %x.addr.023.i45, align 2, !tbaa !5
  %tobool.i46 = icmp slt i16 %24, 0
  br i1 %tobool.i46, label %if.then.i51, label %if.end.i65

if.then.i51:                                      ; preds = %for.body.i47
  %conv1.i48 = zext i16 %bits.024.i44 to i32
  %or.i49 = or i32 %conv1.i48, 1
  %conv2.i50 = trunc i32 %or.i49 to i16
  br label %if.end.i65

if.end.i65:                                       ; preds = %if.then.i51, %for.body.i47
  %bits.1.i52 = phi i16 [ %conv2.i50, %if.then.i51 ], [ %bits.024.i44, %for.body.i47 ]
  %conv3.i53 = zext i16 %24 to i32
  %shl.i54 = shl nuw nsw i32 %conv3.i53, 1
  %conv5.i55 = zext i16 %bits.1.i52 to i32
  %and6.i56 = lshr i32 %conv5.i55, 1
  %and6.lobit.i57 = and i32 %and6.i56, 1
  %storemerge.in.i58 = or i32 %and6.lobit.i57, %shl.i54
  %storemerge.i59 = trunc i32 %storemerge.in.i58 to i16
  store i16 %storemerge.i59, i16* %x.addr.023.i45, align 2
  %exitcond.i64 = icmp eq i32 %i.025.i43, 13
  br i1 %exitcond.i64, label %eshup1.exit66, label %if.end.i65.for.body.i47_crit_edge

if.end.i65.for.body.i47_crit_edge:                ; preds = %if.end.i65
  %shl14.i60 = shl nuw nsw i32 %conv5.i55, 1
  %incdec.ptr.i62 = getelementptr inbounds i16* %x.addr.023.i45, i32 -1
  %conv15.i61 = trunc i32 %shl14.i60 to i16
  %phitmp = add i32 %i.025.i43, 1
  br label %for.body.i47

eshup1.exit66:                                    ; preds = %if.end.i65
  %25 = load i16* %incdec.ptr.11.i, align 2, !tbaa !5
  %conv12 = zext i16 %25 to i32
  %or = or i32 %conv12, %j.0
  %conv13 = trunc i32 %or to i16
  store i16 %conv13, i16* %incdec.ptr.11.i, align 2, !tbaa !5
  br label %for.body.i

for.body.i:                                       ; preds = %if.end.i, %eshup1.exit66
  %i.025.i = phi i32 [ 2, %eshup1.exit66 ], [ %inc.i, %if.end.i ]
  %bits.024.i = phi i16 [ 0, %eshup1.exit66 ], [ %conv15.i, %if.end.i ]
  %x.addr.023.i = phi i16* [ %incdec.ptr2.9.i, %eshup1.exit66 ], [ %incdec.ptr.i41, %if.end.i ]
  %26 = load i16* %x.addr.023.i, align 2, !tbaa !5
  %tobool.i = icmp slt i16 %26, 0
  br i1 %tobool.i, label %if.then.i, label %if.end.i

if.then.i:                                        ; preds = %for.body.i
  %conv1.i = zext i16 %bits.024.i to i32
  %or.i = or i32 %conv1.i, 1
  %conv2.i = trunc i32 %or.i to i16
  br label %if.end.i

if.end.i:                                         ; preds = %if.then.i, %for.body.i
  %bits.1.i = phi i16 [ %conv2.i, %if.then.i ], [ %bits.024.i, %for.body.i ]
  %conv3.i = zext i16 %26 to i32
  %shl.i = shl nuw nsw i32 %conv3.i, 1
  %conv5.i = zext i16 %bits.1.i to i32
  %and6.i = lshr i32 %conv5.i, 1
  %and6.lobit.i = and i32 %and6.i, 1
  %storemerge.in.i = or i32 %and6.lobit.i, %shl.i
  %storemerge.i = trunc i32 %storemerge.in.i to i16
  store i16 %storemerge.i, i16* %x.addr.023.i, align 2
  %shl14.i = shl nuw nsw i32 %conv5.i, 1
  %conv15.i = trunc i32 %shl14.i to i16
  %incdec.ptr.i41 = getelementptr inbounds i16* %x.addr.023.i, i32 -1
  %inc.i = add nsw i32 %i.025.i, 1
  %exitcond.i = icmp eq i32 %inc.i, 13
  br i1 %exitcond.i, label %eshup1.exit, label %for.body.i

eshup1.exit:                                      ; preds = %if.end.i
  %sub14 = add nsw i32 %ln.069, -1
  %cmp = icmp slt i32 %sub14, %sub
  br i1 %cmp, label %while.end, label %while.body

while.end:                                        ; preds = %eshup1.exit, %entry
  %ln.0.lcssa = phi i32 [ %sub5, %entry ], [ %sub14, %eshup1.exit ]
  tail call fastcc void @emdnorm(i16* %num, i32 0, i32 0, i32 %ln.0.lcssa, i32 0, %struct.LDPARMS* %ldp)
  ret void
}

declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind

declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind

!0 = metadata !{metadata !"long double", metadata !1}
!1 = metadata !{metadata !"omnipotent char", metadata !2}
!2 = metadata !{metadata !"Simple C/C++ TBAA"}
!3 = metadata !{metadata !"int", metadata !1}
!4 = metadata !{metadata !"any pointer", metadata !1}
!5 = metadata !{metadata !"short", metadata !1}

-------------- next part --------------
A non-text attachment was scrubbed...
Name: TestPass.cpp
Type: text/x-c++src
Size: 1031 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130214/6ce05742/attachment.cpp>


More information about the llvm-dev mailing list