Yeah I've done that too. Definitely check me in a Sandbox, but I believe the process is:
1. Build a "shell" record with the subsidiary you want to switch it to, but with basically no other information on the record that's not required
2. Merge with shell record as the "main" record or whatever it calls the record to keep
3. The merged record will take the subsidiary from your new shell record and will pull in any information from the existing record where the field was blank on your shell
4. Manually (probably) clean up any data that was conflicting (may not be needed)
I don't think there's a way to do this en masse though. Maybe via the API or script if you have a bunch of them.
I think it takes the Int ID of the shell record since you're calling that the parent, so if you have anything keying off of Int ID, you'd need to deal with that.