module top(input clk, cen, rst, ina, inb, output outa, outb, outc, outd); reg [31:0] temp = 0; integer i; always @(posedge clk) begin if (cen) begin if (rst) begin temp <= 0; end else begin temp[0] <= ina; temp[1] <= inb; for (i = 2; i < 32; i++) begin temp[i] <= temp[(i + 3) % 32] ^ temp[(i + 30) % 32] ^ temp[(i + 4) % 16] ^ temp[(i + 2) % 32]; end end end end assign outa = temp[3]; assign outb = temp[5]; assign outc = temp[9]; assign outd = temp[15]; endmodule