module test_modes(
	clk,
	a_0,
	a_1,
	a_2,
	a_3,
	b_0,
	b_1,
	b_2,
	b_3,
	cin,
	e,
	f,
	g,
	sum_0,
	sum_1,
	sum_2,
	sum_3,
	cout,
	x,
	y,
	z );

	input wire clk, a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_3, cin, e, f, g;
	output reg sum_0, sum_1, sum_2, sum_3, cout;
	output wire x, y, z;

	wire d0;
	wire [4:0] n0;
	wire [3:0] a, b;
	reg reg0, reg1, reg2, reg3, reg4, reg5, reg6, reg7, reg8, reg9, reg10, reg11, reg_a_0, reg_a_1, reg_a_2, reg_a_3, reg_b_0, reg_b_1, reg_b_2, reg_b_3, reg_cin;

	assign a = {reg_a_3, reg_a_2, reg_a_1, reg_a_0};
	assign b = {reg_b_3, reg_b_2, reg_b_1, reg_b_0};
	assign d0 = (e && g) || !f;
	assign n0 = a + b + reg_cin;
	assign x = reg3;
	assign y = reg7;
	assign z = reg11;

	always @(posedge clk) begin
		reg0 <= d0;
		reg1 <= reg0;
		reg2 <= reg1;
		reg3 <= reg2;
		reg4 <= reg3;
		reg5 <= reg4;
		reg6 <= reg5;
		reg7 <= reg6;
		reg8 <= reg7;
		reg9 <= reg8;
		reg10 <= reg9;
		reg11 <= reg10;
		reg_a_0 <= a_0;
		reg_a_1 <= a_1;
		reg_a_2 <= a_2;
		reg_a_3 <= a_3;
		reg_b_0 <= b_0;
		reg_b_1 <= b_1;
		reg_b_2 <= b_2;
		reg_b_3 <= b_3;
		reg_cin <= cin;
		sum_0 <= n0[0];
		sum_1 <= n0[1];
		sum_2 <= n0[2];
		sum_3 <= n0[3];
		cout <= n0[4];
	end

endmodule