; RUN: llc < %s
@G = external global i32		; <ptr> [#uses=1]

define void @encode_one_frame(i64 %tmp.2i) {
entry:
	%tmp.9 = icmp eq i32 0, 0		; <i1> [#uses=1]
	br i1 %tmp.9, label %endif.0, label %shortcirc_next.0

then.5.i:		; preds = %shortcirc_next.i
	%tmp.114.i = sdiv i64 %tmp.2i, 3		; <i64> [#uses=1]
	%tmp.111.i = call i64 @lseek( i32 0, i64 %tmp.114.i, i32 1 )		; <i64> [#uses=0]
	ret void

shortcirc_next.0:		; preds = %entry
	ret void

endif.0:		; preds = %entry
	%tmp.324.i = icmp eq i32 0, 0		; <i1> [#uses=2]
	%tmp.362.i = icmp slt i32 0, 0		; <i1> [#uses=1]
	br i1 %tmp.324.i, label %else.4.i, label %then.11.i37

then.11.i37:		; preds = %endif.0
	ret void

else.4.i:		; preds = %endif.0
	br i1 %tmp.362.i, label %else.5.i, label %then.12.i

then.12.i:		; preds = %else.4.i
	ret void

else.5.i:		; preds = %else.4.i
	br i1 %tmp.324.i, label %then.0.i40, label %then.17.i

then.17.i:		; preds = %else.5.i
	ret void

then.0.i40:		; preds = %else.5.i
	%tmp.8.i42 = icmp eq i32 0, 0		; <i1> [#uses=1]
	br i1 %tmp.8.i42, label %else.1.i56, label %then.1.i52

then.1.i52:		; preds = %then.0.i40
	ret void

else.1.i56:		; preds = %then.0.i40
	%tmp.28.i = load i32, ptr @G		; <i32> [#uses=1]
	%tmp.29.i = icmp eq i32 %tmp.28.i, 1		; <i1> [#uses=1]
	br i1 %tmp.29.i, label %shortcirc_next.i, label %shortcirc_done.i

shortcirc_next.i:		; preds = %else.1.i56
	%tmp.34.i = icmp eq i32 0, 3		; <i1> [#uses=1]
	br i1 %tmp.34.i, label %then.5.i, label %endif.5.i

shortcirc_done.i:		; preds = %else.1.i56
	ret void

endif.5.i:		; preds = %shortcirc_next.i
	ret void
}

declare i64 @lseek(i32, i64, i32)
