you don't need to recompress it. just put it back in. MIi_UncompressBackwards() just won't do anything when it goes to decompress the arm9 on booting. it should work.
e: btw, i just did the disassembly. this is a lookup table of trainer ids and music that is accessed by the subroutine at 2029E38. the function takes the id of the trainer and uses that to look up what music matches that. interesting little routine.
e2: here you go: http://pastebin.com/7XHzR3ys
RAM_ARM9:02029E38 ; =============== S U B R O U T I N E =======================================
RAM_ARM9:02029E38
RAM_ARM9:02029E38
RAM_ARM9:02029E38 ; u16 __fastcall getNPCBattleMusic__(u16 npcID)
RAM_ARM9:02029E38 getNPCBattleMusic__
RAM_ARM9:02029E38 18 B4 PUSH {R3,R4}
RAM_ARM9:02029E3A 0A 4A LDR R2, =word_20A75C8 ; LUT pointer
RAM_ARM9:02029E3C 00 24 MOVS R4, #0 ; int i = 0
RAM_ARM9:02029E3E 11 88 LDRH R1, [R2] ; load first LUT entry, see if we even need to loop
RAM_ARM9:02029E40 69 29 CMP R1, #0x69 ; 'i' ; this should pretty much never be equal
RAM_ARM9:02029E42 0C D0 BEQ loc_2029E5E
RAM_ARM9:02029E44
RAM_ARM9:02029E44 loc_2029E44 ; CODE XREF: getNPCBattleMusic__+24j
RAM_ARM9:02029E44 A3 00 LSLS R3, R4, #2 ; each entry is 4 bytes (u16 npcID and u16 songVal), so loop counter *4 to hit each entry in a row
RAM_ARM9:02029E46 D1 5A LDRH R1, [R2,R3] ; LUT_base + loop_counter * 4 to run through each entry, fetching the npcID to test against the passed arg
RAM_ARM9:02029E48 88 42 CMP R0, R1 ; npcID == LUTnpcID
RAM_ARM9:02029E4A 03 D1 BNE loc_2029E54 ; if not, jump past the return statement
RAM_ARM9:02029E4C 06 48 LDR R0, =0x20A75CA ; if they are equal, LUT_base + 2(to align for the songVal)
RAM_ARM9:02029E4E C0 5A LDRH R0, [R0,R3] ; (LUT_base + 2) + (loop_counter * 4) to adjust for alignment + 2nd half of each entry- return songVal
RAM_ARM9:02029E50 18 BC POP {R3,R4}
RAM_ARM9:02029E52 70 47 BX LR
RAM_ARM9:02029E54 ; ---------------------------------------------------------------------------
RAM_ARM9:02029E54
RAM_ARM9:02029E54 loc_2029E54 ; CODE XREF: getNPCBattleMusic__+12j
RAM_ARM9:02029E54 64 1C ADDS R4, R4, #1 ; i++ if the npcID didn't pan out on the previous run
RAM_ARM9:02029E56 A1 00 LSLS R1, R4, #2 ; loop_counter * 4 for alignment
RAM_ARM9:02029E58 51 5A LDRH R1, [R2,R1] ; (loop_counter * 4) + LUT_base, jump into LUT to next entry
RAM_ARM9:02029E5A 69 29 CMP R1, #0x69 ; 'i' ; is the npcID the max?
RAM_ARM9:02029E5C F2 D1 BNE loc_2029E44 ; if not, run the loop again and jump into the LUT at the next entry
RAM_ARM9:02029E5E
RAM_ARM9:02029E5E loc_2029E5E ; CODE XREF: getNPCBattleMusic__+Aj
RAM_ARM9:02029E5E 03 48 LDR R0, =0x45A ; if it is the max value, return the default battle music
RAM_ARM9:02029E60 18 BC POP {R3,R4}
RAM_ARM9:02029E62 70 47 BX LR
RAM_ARM9:02029E62 ; End of function getNPCBattleMusic__
RAM_ARM9:02029E62
RAM_ARM9:02029E62 ; ---------------------------------------------------------------------------
RAM_ARM9:02029E64 C8 75 0A 02 off_2029E64 DCD word_20A75C8 ; DATA XREF: getNPCBattleMusic__+2r
RAM_ARM9:02029E68 CA 75 0A 02 dword_2029E68 DCD 0x20A75CA ; DATA XREF: getNPCBattleMusic__+14r
RAM_ARM9:02029E6C 5A 04 00 00 dword_2029E6C DCD 0x45A ; DATA XREF: getNPCBattleMusic__:loc_2029E5Er