Gimbal lock causing smooth rotational issues

I do see this line:

Controller->SetControlRotation(FRotator((180.0f * movementVector).Rotation()));

What is your intention here? Do you mean to add 180 degrees to movementVector.Rotation()? Assuming movementVector is the vector the character moves in, like (1, 0, 0) or (0,0,1) then you would want:

Controller->SetControlRotation(FRotator((-1.0f * movementVector).Rotation()));