Here we go...
Sylph Routine
$03/DAAE 20 FD E0 JSR $E0FD [$03:E0FD] A:0003 X:0034 Y:0000 P:envMxdizc - Jump to "Is it Absorb?" Routine.
$03/DAB1 AD FE 38 LDA $38FE [$7E:38FE] A:0000 X:0034 Y:0000 P:envMxdiZc - Load A from 7E38FE.
$03/DAB4 10 08 BPL $08 [$DABE] A:0002 X:0034 Y:0000 P:envMxdizc - If it does not have the Cure Tag branch to 03DABE.
-----------------------------------------------------------------------------------------------------------------------------------
$03/DABE 20 30 E1 JSR $E130 [$03:E130] A:0002 X:0034 Y:0000 P:envMxdizc - Jump to Elemental Damage Routine.
$03/DAC1 20 AF C9 JSR $C9AF [$03:C9AF] A:0000 X:0034 Y:0000 P:envMxdiZC - Jump to Damage Determination
$03/DAC4 AD 06 39 LDA $3906 [$7E:3906] A:0000 X:026C Y:0000 P:envMxdizc - Load A from 7E3906
$03/DAC7 CD 4D 35 CMP $354D [$7E:354D] A:0001 X:026C Y:0000 P:envMxdizc - Compare it to the value in 7E354D.
$03/DACA F0 01 BEQ $01 [$DACD] A:0001 X:026C Y:0000 P:envMxdiZC - If not equal branch to 03DACD.
----------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------
$03/DACD EE 53 35 INC $3553 [$7E:3553] A:0001 X:026C Y:0000 P:envMxdiZC - Increment 7E3553.
$03/DAD0 A6 A4 LDX $A4 [$00:00A4] A:0001 X:026C Y:0000 P:envMxdizC - Load X from A4.
$03/DAD2 DA PHX A:0001 X:026C Y:0000 P:envMxdizC - Push X.
$03/DAD3 7B TDC A:0001 X:026C Y:0000 P:envMxdizC - Transfer Direct Page.
$03/DAD4 AA TAX A:0000 X:026C Y:0000 P:envMxdiZC - Tranfer A to X.
$03/DAD5 86 A9 STX $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdiZC - Store X in A9.
$03/DAD7 86 AB STX $AB [$00:00AB] A:0000 X:0000 Y:0000 P:envMxdiZC - Store X in AB.
$03/DAD9 8E 1C 29 STX $291C [$7E:291C] A:0000 X:0000 Y:0000 P:envMxdiZC - Store X in 7E291C.
$03/DADC 8E 1E 29 STX $291E [$7E:291E] A:0000 X:0000 Y:0000 P:envMxdiZC - Store X in 7E291E.
$03/DADF 8E 20 29 STX $2920 [$7E:2920] A:0000 X:0000 Y:0000 P:envMxdiZC - Store X in 7E2920.
$03/DAE2 A6 A9 LDX $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdiZC - Load X from A9.
$03/DAE4 BD 40 35 LDA $3540,x[$7E:3540] A:0000 X:0000 Y:0000 P:envMxdiZC - Load A from 7E3540.
$03/DAE7 D0 27 BNE $27 [$DB10] A:0000 X:0000 Y:0000 P:envMxdiZC - If the values are not 00 branch to 03DB10.
$03/DAE9 A5 A9 LDA $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdiZC - Load A from A9.
$03/DAEB 85 DF STA $DF [$00:00DF] A:0000 X:0000 Y:0000 P:envMxdiZC - Store A in DF.
$03/DAED A9 80 LDA #$80 A:0000 X:0000 Y:0000 P:envMxdiZC - Load 80 into A.
$03/DAEF 85 E1 STA $E1 [$00:00E1] A:0080 X:0000 Y:0000 P:eNvMxdizC - Store A in E1.
$03/DAF1 20 E0 83 JSR $83E0 [$03:83E0] A:0080 X:0000 Y:0000 P:eNvMxdizC - Jump to Subroutine (??)
$03/DAF4 A6 E3 LDX $E3 [$00:00E3] A:0000 X:0000 Y:0000 P:envMxdiZc - Load X from E3.
$03/DAF6 BD 03 20 LDA $2003,x[$7E:2003] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from Slot 1's Status Byte 1.
$03/DAF9 29 C0 AND #$C0 A:0000 X:0000 Y:0000 P:envMxdiZc - Are they inflicted with Petrify or KO?
$03/DAFB D0 13 BNE $13 [$DB10] A:0000 X:0000 Y:0000 P:envMxdiZc - If so branch to 7EDB10.
$03/DAFD BD 05 20 LDA $2005,x[$7E:2005] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from Slot 1's Status Byte 3.
$03/DB00 29 02 AND #$02 A:0000 X:0000 Y:0000 P:envMxdiZc - Are they Jumping?
$03/DB02 D0 0C BNE $0C [$DB10] A:0000 X:0000 Y:0000 P:envMxdiZc - If so branch to 7EDB10.
$03/DB04 BD 06 20 LDA $2006,x[$7E:2006] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from Slot 1's Status Byte 4.
$03/DB07 30 07 BMI $07 [$DB10] A:0000 X:0000 Y:0000 P:envMxdiZc - Are they Hiding? If so, branch to 7EDB10.
$03/DB09 E6 AB INC $AB [$00:00AB] A:0000 X:0000 Y:0000 P:envMxdiZc - +1 to AB.
$03/DB0B A6 A9 LDX $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdizc - Load X from A9.
$03/DB0D FE 1C 29 INC $291C,x[$7E:291C] A:0000 X:0000 Y:0000 P:envMxdiZc - +1 to 7E291C.
$03/DB10 E6 A9 INC $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdizc - +1 to A9.
$03/DB12 A5 A9 LDA $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdizc - Load A from A9.
$03/DB14 C9 05 CMP #$05 A:0001 X:0000 Y:0000 P:envMxdizc - Compare the value to 05.
$03/DB16 D0 CA BNE $CA [$DAE2] A:0001 X:0000 Y:0000 P:eNvMxdiz - If not 05, loop until so. (For the five party members)
$03/DB18 A6 A4 LDX $A4 [$00:00A4] A:0005 X:0004 Y:0000 P:envMxdiZC - Load X from A4.
$03/DB1A 8E 45 39 STX $3945 [$7E:3945] A:0005 X:026C Y:0000 P:envMxdizC - Store X in 7E3945.
$03/DB1D A6 AB LDX $AB [$00:00AB] A:0005 X:026C Y:0000 P:envMxdizC - Load X into AB.
$03/DB1F 8E 47 39 STX $3947 [$7E:3947] A:0005 X:0005 Y:0000 P:envMxdizC - Store X in 7E3947.
$03/DB22 20 07 84 JSR $8407 [$03:8407] A:0005 X:0005 Y:0000 P:envMxdizC - Jump to Subroutine (May deal something with HP)
$03/DB25 AE 49 39 LDX $3949 [$7E:3949] A:0000 X:0000 Y:0000 P:envMxdiZc - Load X from 7E3949.
$03/DB28 86 A4 STX $A4 [$00:00A4] A:0000 X:007C Y:0000 P:envMxdizc - Store X in A4.
$03/DB2A 7B TDC A:0000 X:007C Y:0000 P:envMxdizc - Transfer Direct Page.
$03/DB2B AA TAX A:0000 X:007C Y:0000 P:envMxdiZc - Transfer A to X.
$03/DB2C 86 A9 STX $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdiZc - Store X in A9.
$03/DB2E A6 A9 LDX $A9 [$00:00A9] A:0000 X:0000 Y:0000 P:envMxdiZc - Load X from A9.
$03/DB30 BD 1C 29 LDA $291C,x[$7E:291C] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from 7E291C.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (Looping Point)
$03/DB33 F0 1E BEQ $1E [$DB53] A:0001 X:0000 Y:0000 P:envMxdizc - If the value is 00 branch to 03DB53.
$03/DB35 A5 A9 LDA $A9 [$00:00A9] A:0001 X:0000 Y:0000 P:envMxdizc - Load A from A9
$03/DB37 85 DF STA $DF [$00:00DF] A:0000 X:0000 Y:0000 P:envMxdiZc - Store A in DF.
$03/DB39 A9 80 LDA #$80 A:0000 X:0000 Y:0000 P:envMxdiZc - Load 80 into A.
$03/DB3B 85 E1 STA $E1 [$00:00E1] A:0080 X:0000 Y:0000 P:eNvMxdizc - Store A in E1.
$03/DB3D 20 E0 83 JSR $83E0 [$03:83E0] A:0080 X:0000 Y:0000 P:eNvMxdizc - Jump to Subroutine (??)
$03/DB40 20 7B E0 JSR $E07B [$03:E07B] A:0000 X:0000 Y:0000 P:envMxdiZc - Jump to Subroutine
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$03/E07B BD 00 20 LDA $2000,x[$7E:2000] A:0000 X:0000 Y:0000 P:envMxdiZc - Load Slot 1's ID.
$03/E07E 29 1F AND #$1F A:0081 X:0000 Y:0000 P:eNvMxdizc - Remove 80 from it?
$03/E080 C9 11 CMP #$11 A:0001 X:0000 Y:0000 P:envMxdizc - Is it (Adult Rydia) 11?
$03/E082 D0 0C BNE $0C [$E090] A:0001 X:0000 Y:0000 P:eNvMxdizc - If not branch to 03E090.
--------------------------------------------------------------------------------------------------------------------------------------
$03/E084 AD 8B 26 LDA $268B [$7E:268B] A:0011 X:0000 Y:0000 P:envMxdiZC - Load A from Caster's Current MP.
$03/E087 9D 0B 20 STA $200B,x[$7E:200B] A:00BF X:0000 Y:0000 P:eNvMxdizC - Store A in Slot 1's Current MP.
$03/E08A AD 8C 26 LDA $268C [$7E:268C] A:00BF X:0000 Y:0000 P:eNvMxdizC - Load A from Caster's Current MP Byte 2.
$03/E08D 9D 0C 20 STA $200C,x[$7E:200C] A:0003 X:0000 Y:0000 P:envMxdizC - Store A in Slot1's Current MP Byte 2.
----------------------------------------------------------------------------------------------------------------------------------------
$03/E090 60 RTS A:0001 X:0000 Y:0000 P:eNvMxdizc Return.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$03/DB43 A5 A9 LDA $A9 [$00:00A9] A:0001 X:0000 Y:0000 P:eNvMxdizc - Load A fromA9.
$03/DB45 0A ASL A A:0000 X:0000 Y:0000 P:envMxdiZc - Multiply A by 2.
$03/DB46 AA TAX A:0000 X:0000 Y:0000 P:envMxdiZc - Transfer A to X.
$03/DB47 A5 A4 LDA $A4 [$00:00A4] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from A4.
$03/DB49 9D D4 34 STA $34D4,x[$7E:34D4] A:007C X:0000 Y:0000 P:envMxdizc - Store A in 7E34D4.
$03/DB4C A5 A5 LDA $A5 [$00:00A5] A:007C X:0000 Y:0000 P:envMxdizc - Load A in A5.
$03/DB4E 09 80 ORA #$80 A:0000 X:0000 Y:0000 P:envMxdiZc - Add 80 to A.
$03/DB50 9D D5 34 STA $34D5,x[$7E:34D5] A:0080 X:0000 Y:0000 P:eNvMxdizc - Store A in 7E34D5.
$03/DB53 E6 A9 INC $A9 [$00:00A9] A:0080 X:0000 Y:0000 P:eNvMxdizc - +1 to A9.
$03/DB55 A5 A9 LDA $A9 [$00:00A9] A:0080 X:0000 Y:0000 P:envMxdizc - Load A from A9.
$03/DB57 C9 05 CMP #$05 A:0001 X:0000 Y:0000 P:envMxdizc - Has it looped 5 times?
$03/DB59 D0 D3 BNE $D3 [$DB2E] A:0001 X:0000 Y:0000 P:eNvMxdizc - If not Loop back from 03DB2E.
$03/DB5B FA PLX A:0005 X:0008 Y:0000 P:envMxdiZC - Push X.
$03/DB5C 86 A4 STX $A4 [$00:00A4] A:0005 X:026C Y:0000 P:envMxdizC - Store Xin A4.
$03/DB5E 60 RTS A:0005 X:026C Y:0000 P:envMxdizC - Return
Where do I even begin...? This is an interesting and unique formula, but it is glitched and the glitch is clear to see if you look at the formula...
Do you see that Adult Rydia check up there? The game never, Ever compensates for slots. It will Only look at Slot 1 and Only if that slot is Adult Rydia will it decrease the proper amount of MP. It is a pretty large oversight and explains why the spell costs no MP. That is unless you have Rydia in Slot 1. Then it will take its proper amount of MP away. This might be able to be fixed by adding a continuous 80 to X as the loops continue.. to have it properly check all five slots. This is such a strange formula, 1 it references Rydia directly which I have seen no other spell formula reference any character directly. 2 it fails in its attempt because it is not very likely that Rydia will be in Slot 1.
Also the SNES version has a catch for Hide as seen above (tested it, it works properly) where as the GBA version does not as DeathLike2 has pointed out before.