исходник:
include "x.inc" patch = 0x45C13B20 SWI_0x1A8_UI_Event = 0x452ACED1 SWI_0x28B_isAudioPlayerBook = 0x44F34E55 SWI_0x28E_Shortcut_Run = 0x4538F019 SWI_0x28A_isFmRadioBook = 0x450FAD09 SWI_0x130_FindBook = 0x452ACB09 SWI_0x159_strcmp = 0x44557425 SWI_0x25A_PlaySystemSound = 0x450047E1 SWI_0x14B_GUIObject_SoftKeys_SetAction = 0x45381701 SWI_0x14C_GUIObject_SoftKeys_SetText = 0x45381779 SWI_0x11C_fstat = 0x44E883E1 SWI_0x116__fopen = 0x44E87A4D SWI_0x117_fclose = 0x44E89019 SWI_0x20A_FileDelete = 0x44E88525 _adrr1 = 0x450F8BC2+1 ;452308E6 _adrr2 = 0x44F36BE2+1 ;4505FD14 _adrr3 = 0x4500CEF4+1 ;4505D9AC _adrr4 = 0x44F3490C+1 ;4505D9E0 _adrr5 = 0x44F34928+1 ;4505D9FC _adrr6 = 0x44DC2A1C+1 ;44EEC5C4 _adrr7 = 0x44DC2B7C+1 ;44EEC724 ; --------------------------------------------------------------------------- org 0x450F1C4C ;4505FFF8 DCD 0x45DAEB30+1 org 0x44F36B7E ;4505FD10 NOP BX R5 org 0x450F8BC0 ;452308E4 BLX R1 org 0x44F01444 ;45230930-44F01444 DCD 0x45DAEB90+1 org 0x44DC2B72 ;44EEC71A LDR R3, off_44EEC720 BLX R3 NOP ;align 4 off_44EEC720 DCD 0x45DAEBEC+1 ; --------------------------------------------------------------------------- org patch loc_45DAEB30: LDR R2, off_45DAEBC4 MOV R1, 0xFD LDR R0, [R4,0x1C] LDR R3, off_45DAEBD4 BLX R3 LDR R2, dword_45DAEBB8 MOV R1, 0xFD LDR R0, [R4,0x1C] LDR R3, off_45DAEBD8 BLX R3 LDR R0, [R4,0x1C] MOV R1, 0x15 MOV R2, 0xFF LDR R3, off_45DAEBDC BLX R3 LDR R5, dword_45DAEBC8 LDR R3, off_45DAEBD0 BLX R3 sub_45DAEB54: PUSH {LR} LDR R0, off_45DAEBE0 BL sub_45DAEB5E POP {PC} sub_45DAEB5E: LDR R3, off_45DAEBE4 BX R3 sub_45DAEB62: PUSH {R0-R7,LR} LDR R0, off_45DAEBCC LDR R1, off_45DAEC80 BLX R1 CMP R0, 0 BEQ loc_45DAEB7A LDR R0, dword_45DAEBAC LDR R7, off_45DAEBB4 BLX R7 loc_45DAEB74: BL sub_45DAEC38 POP {R0-R7,PC} ; --------------------------------------------------------------------------- loc_45DAEB7A: LDR R0, off_45DAEBE8 LDR R1, off_45DAEC80 BLX R1 CMP R0, 0 BEQ loc_45DAEB74 LDR R0, dword_45DAEBB0 LDR R7, off_45DAEBB4 BLX R7 BL sub_45DAEC38 POP {R0-R7,PC} ; --------------------------------------------------------------------------- loc_45DAEB90: LDR R2, off_45DAEBC4 LDR R0, [R4,0x18] MOV R1, 0x13 BL sub_45DAECE0 LDR R2, dword_45DAEBB8 LDR R0, [R4,0x18] MOV R1, 0x13 BL sub_45DAECE8 LDR R1, dword_45DAEBBC LDR R0, [R4,0x18] LDR R3, off_45DAEBC0 BX R3 ; --------------------------------------------------------------------------- align 4 dword_45DAEBAC DCD 0x1C21 dword_45DAEBB0 DCD 0x1C22 off_45DAEBB4 DCD SWI_0x1A8_UI_Event dword_45DAEBB8 DCD 0x325 dword_45DAEBBC DCD 0xFB3 off_45DAEBC0 DCD _adrr1 off_45DAEBC4 DCD 0x45DAEC22+1 dword_45DAEBC8 DCD 0x1E9E off_45DAEBCC DCD SWI_0x28B_isAudioPlayerBook off_45DAEBD0 DCD _adrr2 off_45DAEBD4 DCD _adrr3 off_45DAEBD8 DCD _adrr4 off_45DAEBDC DCD _adrr5 off_45DAEBE0 DCD aMenuTimer off_45DAEBE4 DCD SWI_0x28E_Shortcut_Run off_45DAEBE8 DCD SWI_0x28A_isFmRadioBook aMenuTimer DCB "MenuTimer",0 ; --------------------------------------------------------------------------- loc_45DAEBEC: BL sub_45DAEC0C CMP R0, 1 BEQ loc_45DAEC02 MOV R0, 0x18 BL sub_45DAECD8 MOV R0, 1 STRB R0, [R5,0x16] loc_45DAEBFE: LDR R3, off_45DAECC4 BX R3 ; --------------------------------------------------------------------------- loc_45DAEC02: MOV R0, 1 STRB R0, [R5,0x16] BL sub_45DAEB62 B loc_45DAEBFE sub_45DAEC0C: PUSH {R1,R2,LR} LDR R0, off_45DAECC8 MOV R2, 0 adr R1, loc_45DAECCC BL sub_45DAECF0 BMI loc_45DAEC1E MOV R0, 1 B locret_45DAEC20 ; --------------------------------------------------------------------------- loc_45DAEC1E: MOV R0, 0 locret_45DAEC20: POP {R1,R2,PC} ; --------------------------------------------------------------------------- loc_45DAEC22: PUSH {R0-R7,LR} BL sub_45DAEC0C CMP R0, 1 BEQ loc_45DAEC32 BL sub_45DAECA2 POP {R0-R7,PC} ; --------------------------------------------------------------------------- loc_45DAEC32: BL sub_45DAEC38 POP {R0-R7,PC} ; =============== S U B R O U T I N E ======================================= sub_45DAEC38: PUSH {R0-R7,LR} LDR R0, off_45DAECC8 adr R1, loc_45DAECCC MOV R2, 0 BL sub_45DAED08 BL sub_45DAEC4A POP {R0-R7,PC} ; =============== S U B R O U T I N E ======================================= sub_45DAEC4A: PUSH {LR} LDR R0, off_45DAEC58 BL sub_45DAEC74 BL sub_45DAEC78 POP {PC} ; --------------------------------------------------------------------------- align 4 off_45DAEC58 DCD 0x45DAEC5B+1 ; --------------------------------------------------------------------------- loc_45DAEC5C: PUSH {LR} LDR R0, [R0] LDR R0, [R0,4] LDR R1, off_45DAEC8C BL sub_45DAEC7C CMP R0, 0 BNE loc_45DAEC70 MOVS R0, 1 POP {PC} ; --------------------------------------------------------------------------- loc_45DAEC70: MOVS R0, 0 POP {PC} ; =============== S U B R O U T I N E ======================================= sub_45DAEC74: LDR R3, off_45DAEC80 BX R3 ; =============== S U B R O U T I N E ======================================= sub_45DAEC78: LDR R3, off_45DAEC88 BX R3 ; =============== S U B R O U T I N E ======================================= sub_45DAEC7C: LDR R3, off_45DAEC84 BX R3 ; --------------------------------------------------------------------------- ;align 4 off_45DAEC80 DCD SWI_0x130_FindBook off_45DAEC84 DCD SWI_0x159_strcmp off_45DAEC88 DCD _adrr6 off_45DAEC8C DCD 0x44DAEC90 ; --------------------------------------------------------------------------- LSL R4, R2, 1 LSL R1, R5, 1 LSL R5, R5, 1 LSL R5, R4, 1 LSL R2, R6, 1 LSL R2, R0, 1 LSL R7, R5, 1 LSL R7, R5, 1 LSL R3, R5, 1 ; =============== S U B R O U T I N E ======================================= sub_45DAECA2: PUSH {R0-R7,LR} MOV R0, 0 PUSH {R0} LDR R0, off_45DAECC8 adr R1, loc_45DAECCC MOV R2, 4 MOVL R3, 0x180 BL sub_45DAECF8 BL sub_45DAED00 ADD SP, SP, 4 BL sub_45DAEB54 POP {R0-R7,PC} ; --------------------------------------------------------------------------- align 4 off_45DAECC4 DCD _adrr7 ;---------------------------------------------------------------------------- off_45DAECC8 DCD aTpaSystemSetti aTpaSystemSetti du "tpa/system/settings/",0 align 4 loc_45DAECCC: LSL R2, R2, 3 LSL R0, R4, 3 LSL R1, R5, 3 LSL R4, R5, 3 LSL R0, R4, 3 LSL R0, R6, 3 sub_45DAECD8: LDR R3, off_45DAECDC BX R3 ; --------------------------------------------------------------------------- off_45DAECDC DCD SWI_0x25A_PlaySystemSound sub_45DAECE0: LDR R3, off_45DAECE4 BX R3 ; --------------------------------------------------------------------------- off_45DAECE4 DCD SWI_0x14B_GUIObject_SoftKeys_SetAction sub_45DAECE8: LDR R3, off_45DAECEC BX R3 ; --------------------------------------------------------------------------- off_45DAECEC DCD SWI_0x14C_GUIObject_SoftKeys_SetText sub_45DAECF0: LDR R3, off_45DAECF4 BX R3 ; --------------------------------------------------------------------------- off_45DAECF4 DCD SWI_0x11C_fstat sub_45DAECF8: LDR R5, off_45DAECFC BX R5 ; --------------------------------------------------------------------------- off_45DAECFC DCD SWI_0x116__fopen sub_45DAED00: LDR R5, off_45DAED04 BX R5 ; --------------------------------------------------------------------------- off_45DAED04 DCD SWI_0x117_fclose sub_45DAED08: LDR R5, off_45DAED0C BX R5 ; --------------------------------------------------------------------------- off_45DAED0C DCD SWI_0x20A_FileDelete