; 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*)  *, i16 (%struct.Point*)  *, 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, 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*, %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, %struct.TestObj* %tmp1273, i32 0, i32 0		; <i8**> [#uses=2]
	%tmp48.i = load i8*, i8** %tmp45.i		; <i8*> [#uses=1]
	%tmp50.i350 = call i32 (i8*, i8*, ...) @sprintf( i8* getelementptr ([256 x i8], [256 x i8]* @Msg, i32 0, i32 0), i8* getelementptr ([48 x i8], [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, 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*, ...)
