; RUN: llc < %s -mtriple=arm-apple-darwin

	%struct.Connection = type { i32, [10 x i8], i32 }
	%struct.IntChunk = type { %struct.cppobjtype, i32, i32*, i32 }
	%struct.Point = type { i8*, %struct.cppobjtype, i16 (%struct.Point*) signext *, i16 (%struct.Point*) signext *, double (%struct.Point*)*, double (%struct.Point*)* }
	%struct.RefPoint = type { %struct.Point*, %struct.cppobjtype }
	%struct.ShortArray = type { %struct.cppobjtype, i32, i16* }
	%struct.TestObj = type { i8*, %struct.cppobjtype, i8, [32 x i8], i8*, i8**, i16, i16, i32, i32, i32, i32, float, double, %struct.cppobjtype, i32, i16*, i16**, i8**, i32, %struct.XyPoint, [3 x %struct.Connection], %struct.Point*, %struct.XyPoint*, i32, i8*, i8*, i16*, %struct.ShortArray, %struct.IntChunk, %struct.cppobjtype, %struct.cppobjtype, %struct.RefPoint, i32, %struct.cppobjtype, %struct.cppobjtype }
	%struct.XyPoint = type { i16, i16 }
	%struct.cppobjtype = type { i32, i16, i16 }
@Msg = external global [256 x i8]		; <[256 x i8]*> [#uses=1]
@.str53615 = external constant [48 x i8]		; <[48 x i8]*> [#uses=1]
@FirstTime.4637.b = external global i1		; <i1*> [#uses=1]

define fastcc void @Draw7(i32 %Option, i32* %Status) {
entry:
	%tmp115.b = load i1* @FirstTime.4637.b		; <i1> [#uses=1]
	br i1 %tmp115.b, label %cond_next239, label %cond_next.i

cond_next.i:		; preds = %entry
	ret void

cond_next239:		; preds = %entry
	%tmp242 = icmp eq i32 0, 0		; <i1> [#uses=1]
	br i1 %tmp242, label %cond_next253, label %cond_next296

cond_next253:		; preds = %cond_next239
	switch i32 %Option, label %bb1326 [
		 i32 3, label %cond_true258
		 i32 4, label %cond_true268
		 i32 2, label %cond_true279
		 i32 1, label %cond_next315
	]

cond_true258:		; preds = %cond_next253
	ret void

cond_true268:		; preds = %cond_next253
	ret void

cond_true279:		; preds = %cond_next253
	ret void

cond_next296:		; preds = %cond_next239
	ret void

cond_next315:		; preds = %cond_next253
	%tmp1140 = icmp eq i32 0, 0		; <i1> [#uses=1]
	br i1 %tmp1140, label %cond_true1143, label %bb1326

cond_true1143:		; preds = %cond_next315
	%tmp1148 = icmp eq i32 0, 0		; <i1> [#uses=4]
	br i1 %tmp1148, label %cond_next1153, label %cond_true1151

cond_true1151:		; preds = %cond_true1143
	ret void

cond_next1153:		; preds = %cond_true1143
	%tmp8.i.i185 = icmp eq i32 0, 0		; <i1> [#uses=1]
	br i1 %tmp8.i.i185, label %TestObj_new1.exit, label %cond_true.i.i187

cond_true.i.i187:		; preds = %cond_next1153
	ret void

TestObj_new1.exit:		; preds = %cond_next1153
	%tmp1167 = icmp eq i16 0, 0		; <i1> [#uses=1]
	%tmp1178 = icmp eq i32 0, 0		; <i1> [#uses=1]
	%bothcond = and i1 %tmp1167, %tmp1178		; <i1> [#uses=1]
	br i1 %bothcond, label %bb1199, label %bb1181

bb1181:		; preds = %TestObj_new1.exit
	ret void

bb1199:		; preds = %TestObj_new1.exit
	br i1 %tmp1148, label %cond_next1235, label %Object_Dump.exit302

Object_Dump.exit302:		; preds = %bb1199
	ret void

cond_next1235:		; preds = %bb1199
	%bothcond10485 = or i1 false, %tmp1148		; <i1> [#uses=1]
	br i1 %bothcond10485, label %cond_next1267, label %cond_true1248

cond_true1248:		; preds = %cond_next1235
	ret void

cond_next1267:		; preds = %cond_next1235
	br i1 %tmp1148, label %cond_next1275, label %cond_true1272

cond_true1272:		; preds = %cond_next1267
	%tmp1273 = load %struct.TestObj** null		; <%struct.TestObj*> [#uses=2]
	%tmp2930.i = ptrtoint %struct.TestObj* %tmp1273 to i32		; <i32> [#uses=1]
	%tmp42.i348 = sub i32 0, %tmp2930.i		; <i32> [#uses=1]
	%tmp45.i = getelementptr %struct.TestObj* %tmp1273, i32 0, i32 0		; <i8**> [#uses=2]
	%tmp48.i = load i8** %tmp45.i		; <i8*> [#uses=1]
	%tmp50.i350 = call i32 (i8*, i8*, ...)* @sprintf( i8* getelementptr ([256 x i8]* @Msg, i32 0, i32 0), i8* getelementptr ([48 x i8]* @.str53615, i32 0, i32 0), i8* null, i8** %tmp45.i, i8* %tmp48.i )		; <i32> [#uses=0]
	br i1 false, label %cond_true.i632.i, label %Ut_TraceMsg.exit648.i

cond_true.i632.i:		; preds = %cond_true1272
	ret void

Ut_TraceMsg.exit648.i:		; preds = %cond_true1272
	%tmp57.i = getelementptr i8* null, i32 %tmp42.i348		; <i8*> [#uses=0]
	ret void

cond_next1275:		; preds = %cond_next1267
	ret void

bb1326:		; preds = %cond_next315, %cond_next253
	ret void
}

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