Change the order or names in the following code to make it feel like a completely new code, while keeping the logic the same.

localparam	IDLE	= 1'b0,
		DO	= 1'b1,
		AW	= 2'd1,
		W	= 2'd2,
		B	= 2'd3;

reg	AR_state, AR_state_n, R_state, R_state_n;
reg	[1:0]	WRITE_state, WRITE_state_n;
reg	[6:0]	R_count, R_count_n;
reg	[3:0]	W_count, W_count_n;
reg	[2:0]	AR_count, AR_count_n, mat_width_reg;
reg	[BUF_DW/8-1:0]	STROBE;

reg	arvalid, rready, awvalid, wvalid, wlast;
reg	[31:0]	araddr, wdata;
reg	[127:0] rdata;

always_ff @(posedge clk) begin
	if (!rst_n) begin
		AR_state <= IDLE;
		R_state <= IDLE;
		WRITE_state <= IDLE;

		R_count <= 7'd0;
		W_count <= 4'd0;
		AR_count <= 3'd0;

		mat_width_reg <= 3'd0;
	end
	else begin
		AR_state <= AR_state_n;
		R_state <= R_state_n;
		WRITE_state <= WRITE_state_n;

		R_count <= R_count_n;
		W_count <= W_count_n;
		AR_count <= AR_count_n;
		mat_width_reg <= mat_width_i[4:2];
	end
end

always_comb begin
	AR_state_n = AR_state;
	R_state_n = R_state;
	WRITE_state_n = WRITE_state;

	R_count_n = R_count;
	W_count_n = W_count;
	AR_count_n = AR_count;

	buf_a_wren_o = 1'b0;
	buf_b_wren_o = 1'b0;

	araddr = 32'b0;
	
	arvalid = 1'b0;
	rready = 1'b0;
	awvalid = 1'b0;
	wvalid = 1'b0;
	wlast = 1'b0;

	mm_start_o = 1'b0;

	case(AR_state)
		IDLE:begin
			if (start_i) begin
				AR_state_n = DO;
				arvalid = 1'b1;
				araddr = mat_a_addr_i;
			end
		end
		DO:begin
			arvalid = 1'b1;
			araddr = (AR_count < mat_width_reg) ? mat_a_addr_i + {AR_count,6'b0} : mat_b_addr_i + {(AR_count-mat_width_reg), 6'b0};

			if (axi_ar_if.arready) begin
				if (AR_count != {mat_width_reg,1'b0} - 1'd1) begin
					AR_count_n = AR_count + 3'd1;
				end
				else begin
					AR_state_n = IDLE;
					AR_count_n = 3'd0;
				end
			end
		end
	endcase

	case(R_state)
		IDLE:begin
			if (axi_ar_if.arready) begin
				R_state_n = DO;
			end
		end
		DO:begin
			rready = 1'b1;

			if (axi_r_if.rvalid) begin

				if (R_count[6:4] < mat_width_reg) begin
					buf_a_wren_o = 1'b1;
				end
				else begin
					buf_b_wren_o = 1'b1;
				end

				if ((R_count[6:4] == mat_width_i[4:1] - 1'd1) & axi_r_if.rlast) begin
					R_count_n = 7'd0;
					R_state_n = IDLE;
					mm_start_o = 1'b1;
				end
				else begin
					R_count_n = R_count + 7'd1;
				end
			end
		end
	endcase
	
	case(WRITE_state)
		IDLE:begin
			if (mm_start_o) begin
				WRITE_state_n = AW;
			end
		end
		AW:begin
			awvalid = mm_done_i;

			if (axi_aw_if.awready) begin
				WRITE_state_n = W;
			end
		end
		W:begin
			wvalid = 1'b1;
		
			if (W_count == 4'hF) begin
				wlast = 1'b1;
			end
			
			if (axi_w_if.wready) begin
				if (W_count != 4'hF) begin
					W_count_n = W_count + 4'd1;
				end
				else begin
					W_count_n = 4'd0;
					WRITE_state_n = B;
				end
			end
		end
		B:begin
			if (axi_b_if.bvalid) begin
				WRITE_state_n = IDLE;
			end
		end
	endcase
end


always_comb begin
	case(R_count[1:0])
		2'b00: begin STROBE = 16'h000F; rdata = {96'b0,axi_r_if.rdata}; end
		2'b01: begin STROBE = 16'h00F0; rdata = {64'b0,axi_r_if.rdata,32'b0}; end
		2'b10: begin STROBE = 16'h0F00; rdata = {32'b0,axi_r_if.rdata,64'b0}; end
		2'b11: begin STROBE = 16'hF000; rdata = {axi_r_if.rdata,96'b0}; end
	endcase
end

always_comb begin
	case(W_count)
		4'd0: wdata = accum_i[3][3][31:0];
		4'd1: wdata = accum_i[3][2][31:0];
		4'd2: wdata = accum_i[3][1][31:0];
		4'd3: wdata = accum_i[3][0][31:0];
		4'd4: wdata = accum_i[2][3][31:0];
		4'd5: wdata = accum_i[2][2][31:0];
		4'd6: wdata = accum_i[2][1][31:0];
		4'd7: wdata = accum_i[2][0][31:0];
		4'd8: wdata = accum_i[1][3][31:0];
		4'd9: wdata = accum_i[1][2][31:0];
		4'd10: wdata = accum_i[1][1][31:0];
		4'd11: wdata = accum_i[1][0][31:0];
		4'd12: wdata = accum_i[0][3][31:0];
		4'd13: wdata = accum_i[0][2][31:0];
		4'd14: wdata = accum_i[0][1][31:0];
		4'd15: wdata = accum_i[0][0][31:0];
	endcase
end

assign done_o = !(AR_state || R_state || WRITE_state[1] || WRITE_state[0]);

assign buf_a_waddr_o = R_count[6:2];
assign buf_b_waddr_o = R_count[6:2] - mat_width_i;
assign buf_a_wdata_o = rdata;
assign buf_b_wdata_o = rdata;
assign buf_a_wbyteenable_o = STROBE;
assign buf_b_wbyteenable_o = STROBE;


assign axi_ar_if.arvalid = arvalid;
assign axi_ar_if.araddr = araddr;
assign axi_ar_if.arlen = 4'hF;
assign axi_ar_if.arsize = 3'b010;
assign axi_ar_if.arburst = 2'b01;

assign axi_r_if.rready = rready;

assign axi_aw_if.awvalid = awvalid;
assign axi_aw_if.awaddr = mat_c_addr_i;
assign axi_aw_if.awlen = 4'hF;
assign axi_aw_if.awsize = 3'b010;
assign axi_aw_if.awburst = 2'b01;

assign axi_w_if.wvalid = wvalid;
assign axi_w_if.wlast = wlast;
assign axi_w_if.wdata = wdata;
assign axi_w_if.wstrb = 4'b1111;

assign axi_b_if.bready = 1'b1;