That's no synthesizable Verilog code. I think, the basic problem is a misunderstanding of Verilog operation principles. A common mistake is to apply concepts from procedural programming languages used with microprocessors.
When I understand right what you tried to achieve, you are regarding a module similar as a C function, with initial block executed on entrance of the function call. But it doesn't work that way. An initial block e. g. is executed only once during initialization of Verilog code, it can be used to initialize arrays or calculate constants. Actually, when synthesizing programmable logic, calculations in initial block are performed at compile time, resulting in a set of initialisation data for the logic cells. You probably wanted the initial block executed for each new set of input data, indicated by rst_xxx_in signal.
The point, where the compiler refuses to compile your code is the "Multi source" or multiple drivers issue. This is cause you are setting a reg signal from multiple places (two different always blocks). This is equivalent to two digital outputs driving the same input - it results in a short circuit. Within an always block, it would be allowed and the last assignment wins.
But aside from multi source issues, the code is missing an operational mechanismn to repeat the second always block when needed. You intended to achieve it by setting and resetting rstb, but that doesn't work. always@ (posedge rstb) would be synthesized as a group of synchronous Flip-Flops with rstb as a clock. You can't reset the clock input of a Flipflop from it's output. The rsta logic isn't synthesizable for similar reasons.
When coding a calculation scheme as the power algorithm, you have basically two options: You can try to realize it fully parallel, that means the result produced immediately. With power, it would imply a chain of 2^32 multipliers and additional multiplexers, obviously impossible.
Or you can perform the calculation serial. The rstb logic indicates, that you went this way. But then you need a clock to trigger the operation, one multiply at each clock cycle. The calculation would take somewhat long at maximum second_val, but it would be possible at least. So the solution is to have a clock signal for posedge and the rstx signals as enable signal in an if statement. The multi source issue could be solved by using only one always block.
As a general suggestion, you should analyze other Verilog code examples that perform serial calculations regarding their utilized control mechanism. There is e. g. a lot of serial multipliers and dividers (these function can also be peformed in parallel with bearable effort).