target endian = little
target pointersize = 32
	%struct..TorRec = type { int, void ()* }
	%struct.TorRec = type { int, void ()* }
%Initialized.0__ = internal global bool false		; <bool*> [#uses=2]

implementation   ; Functions:

int %main() {
entry:
	%tab = alloca [256 x int]		; <[256 x int]*> [#uses=2]
	%twiddle = alloca [256 x int]		; <[256 x int]*> [#uses=2]
	%tmp.1.i = load bool* %Initialized.0__		; <bool> [#uses=1]
	br bool %tmp.1.i, label %__main.entry, label %endif.0.i

endif.0.i:		; preds = %entry
	store bool true, bool* %Initialized.0__
	br label %__main.entry

__main.entry:		; preds = %entry, %endif.0.i
	%tmp.2 = getelementptr [256 x int]* %twiddle, uint 0, uint 0		; <int*> [#uses=2]
	br label %no_exit.0.i

loopentry.0.i:		; preds = %loopexit.1.i
	%tmp.3.i = shr int %tmp.3.0.ph.i.ph, ubyte 1		; <int> [#uses=1]
	%tmp.6.i = shl int %tmp.6.0.ph.i.ph, ubyte 1		; <int> [#uses=1]
	br label %loopentry.2.i

loopentry.2.i:		; preds = %loopentry.0.i, %no_exit.0.i, %loopexit.2.i
	%n2.0.0.ph.i.ph = phi int [ %n2.0.1.i, %no_exit.0.i ], [ %tmp.3.0.ph.i.ph, %loopentry.0.i ], [ %n2.0.0.ph.i.ph, %loopexit.2.i ]		; <int> [#uses=2]
	%tmp.3.0.ph.i.ph = phi int [ %tmp.3.1.i, %no_exit.0.i ], [ %tmp.3.i, %loopentry.0.i ], [ %tmp.3.0.ph.i.ph, %loopexit.2.i ]		; <int> [#uses=6]
	%tmp.6.0.ph.i.ph = phi int [ %tmp.6.1.i, %no_exit.0.i ], [ %tmp.6.i, %loopentry.0.i ], [ %tmp.6.0.ph.i.ph, %loopexit.2.i ]		; <int> [#uses=5]
	%j.1.ph.i.ph = phi int [ %j.1.0.i, %no_exit.0.i ], [ 0, %loopentry.0.i ], [ %j.1.ph.i.ph, %loopexit.2.i ]		; <int> [#uses=2]
	%k.1.ph.i.ph = phi int [ %k.1.0.i, %no_exit.0.i ], [ 0, %loopentry.0.i ], [ %k.1.ph.i.ph, %loopexit.2.i ]		; <int> [#uses=2]
	%indvar.i = phi uint [ %indvar.next.i, %loopexit.2.i ], [ 0, %no_exit.0.i ], [ 0, %loopentry.0.i ]		; <uint> [#uses=2]
	%twiddle_p.1.i = phi int* [ %tmp.56.i, %loopexit.2.i ], [ %twiddle_p.1.0.i, %no_exit.0.i ], [ %tmp.2, %loopentry.0.i ]		; <int*> [#uses=1]
	%p.0.i = phi int [ %tmp.46.i, %loopexit.2.i ], [ %tmp.44.i, %no_exit.0.i ], [ 0, %loopentry.0.i ]		; <int> [#uses=2]
	%indvar.i = cast uint %indvar.i to int		; <int> [#uses=2]
	%tmp..i = mul int %indvar.i, %tmp.6.0.ph.i.ph		; <int> [#uses=1]
	%k.1.i = add int %tmp..i, %k.1.ph.i.ph		; <int> [#uses=2]
	%j.1.i = add int %indvar.i, %j.1.ph.i.ph		; <int> [#uses=2]
	%tmp.10.i = setlt int %p.0.i, 256		; <bool> [#uses=1]
	br bool %tmp.10.i, label %no_exit.0.i, label %loopexit.2.i

no_exit.0.i:		; preds = %__main.entry, %loopentry.2.i
	%n2.0.1.i = phi int [ 256, %__main.entry ], [ %n2.0.0.ph.i.ph, %loopentry.2.i ]		; <int> [#uses=2]
	%tmp.3.1.i = phi int [ 128, %__main.entry ], [ %tmp.3.0.ph.i.ph, %loopentry.2.i ]		; <int> [#uses=2]
	%tmp.6.1.i = phi int [ 2, %__main.entry ], [ %tmp.6.0.ph.i.ph, %loopentry.2.i ]		; <int> [#uses=1]
	%twiddle_p.1.0.i = phi int* [ %tmp.2, %__main.entry ], [ %twiddle_p.1.i, %loopentry.2.i ]		; <int*> [#uses=2]
	%j.1.0.i = phi int [ 0, %__main.entry ], [ %j.1.i, %loopentry.2.i ]		; <int> [#uses=1]
	%k.1.0.i = phi int [ 0, %__main.entry ], [ %k.1.i, %loopentry.2.i ]		; <int> [#uses=1]
	%p.0.0.i = phi int [ 0, %__main.entry ], [ %p.0.i, %loopentry.2.i ]		; <int> [#uses=3]
	%tmp.14.i = add int %p.0.0.i, %tmp.3.1.i		; <int> [#uses=1]
	%tmp.18.i = getelementptr [256 x int]* %tab, uint 0, int %p.0.0.i		; <int*> [#uses=2]
	%tmp.19.i = load int* %tmp.18.i		; <int> [#uses=2]
	%tmp.23.i = getelementptr [256 x int]* %tab, uint 0, int %tmp.14.i		; <int*> [#uses=2]
	%tmp.24.i = load int* %tmp.23.i		; <int> [#uses=2]
	%tmp.31.i = add int %tmp.24.i, %tmp.19.i		; <int> [#uses=1]
	store int %tmp.31.i, int* %tmp.18.i
	%tmp.38.i = sub int %tmp.19.i, %tmp.24.i		; <int> [#uses=1]
	%tmp.40.i = load int* %twiddle_p.1.0.i		; <int> [#uses=1]
	%tmp.41.i = mul int %tmp.38.i, %tmp.40.i		; <int> [#uses=1]
	store int %tmp.41.i, int* %tmp.23.i
	%tmp.44.i = add int %p.0.0.i, %n2.0.1.i		; <int> [#uses=1]
	br label %loopentry.2.i

loopexit.2.i:		; preds = %loopentry.2.i
	%tmp.46.i = add int %j.1.i, 1		; <int> [#uses=2]
	%tmp.49.i = add int %k.1.i, %tmp.6.0.ph.i.ph		; <int> [#uses=1]
	%tmp.52.i = rem int %tmp.49.i, 256		; <int> [#uses=1]
	%tmp.56.i = getelementptr [256 x int]* %twiddle, uint 0, int %tmp.52.i		; <int*> [#uses=1]
	%tmp.59.i = seteq int %tmp.46.i, %tmp.3.0.ph.i.ph		; <bool> [#uses=1]
	%indvar.next.i = add uint %indvar.i, 1		; <uint> [#uses=1]
	br bool %tmp.59.i, label %loopexit.1.i, label %loopentry.2.i

loopexit.1.i:		; preds = %loopexit.2.i
	%tmp.62.i = seteq int %tmp.3.0.ph.i.ph, 1		; <bool> [#uses=1]
	br bool %tmp.62.i, label %return.i, label %loopentry.0.i

return.i:		; preds = %loopexit.1.i
	ret int 0
}
