Coincidentally, I'm working on something similar for FF7. It's progressing fairly well; it'll turn this:
			UC Disabled=1 //0x0
			MENU2 Disabled=1 //0x2
			PTURA PartyID=0, Speed=15, Direction=2 //0x4
			IFSW BankValue1=2, BankValue2=0, Value1=0, Value2=999, Comparison=2, Offset=16 //0x8 --> 1f
			WINDOW WindowID=1, X=67, Y=137, Width=233, Height=73 //0x10
			MESSAGE WindowID=1, DialogueID=121 //0x1a
			JMPF Offset=14 //0x1d --> 2c
			WINDOW WindowID=1, X=39, Y=153, Width=261, Height=57 //0x1f
			MESSAGE WindowID=1, DialogueID=120 //0x29
			UC Disabled=0 //0x2c
			MENU2 Disabled=0 //0x2e
			TURNGEN BankRotation=0, Rotation=164, Direction=2, Steps=15, Calculation=2 //0x30
Into this:
			string sMyoldmanwas = "“My old man was a miner, but\n	he couldn't go to work after monsters \n	started appearing in the Mythril Mines.”{New Scr}“Now all he does is sit around\n	getting drunk in the bar…”";
			string sMydadstill = "“My dad still just sits at the\n	bar drinking, even though\n	he knows Meteor's coming!”{New Scr}“It's sad. Even though he's an adult,\n	he just doesn't want to see\n	the world as it really is.\n	I dunno what to do.”";
			EnableMenuAndMove(False);
			TurnToPartyMember(0, 15);
			if (PPV > 999) {
				ShowMessage(67, 137, 233, 73, sMydadstill);
			} else {
				ShowMessage(39, 153, 261, 57, sMyoldmanwas);
			}
			EnableMenuAndMove(True);
			TurnSmooth(164, Closest, 15);
It'll extract nested if's and while loops from the instructions; I just really need to finish processing all the various opcodes. Shouldn't take too long, since the code structure is the tricky part, and that's mostly done.