[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