Vitsy, 12 9 (code) + 1 (newline for function declaration) = 10 bytes
\o/
Expects input on the stack as the string followed by the number.
2*\[vXvr]
2* Multiply by 2.
\[ ] Do the stuff in the brackets that many times. (input num * 2)
v Take the top item off the stack and save it as a local variable.
X Remove the top item of the stack.
v Push the temporary variable back onto the stack.
r Reverse the stack.
Which you can call with:
'String' r <number> 1m Z
2*\[vXvr]
This is a function that leaves the resultant string on the stack. I have provided it as a program in the TryItOnline link.
EDIT:TryItOnline!