Código:
include "x.inc"
include "lib.asm"
;W580 R8be001
;Advanced snooze alarm
;Add ability to change snooze time for every alarm
;You can input snooze time in third tab in alarm's settings
;heapshift (0x201A4124-0x201A4127)
;RU.version
;(c) RandoM
;-----------------------------------------------------------------------------------------
org 0x44dbc9f4
_1:
                       CMP     R7, 3
;-----------------------------------------------------------------------------------------                       
org 0x44dbca00
_2:
                       MOV     R1, 3
;-----------------------------------------------------------------------------------------                       
org 0x44dbca8c
_3:
                       CMP     R6, 3
;-----------------------------------------------------------------------------------------                       
org 0x44dbcaa4
_4:
off_44DBCAA4    dw dword_45C12388
;-----------------------------------------------------------------------------------------
org 0x44dbbfe8
_5:
                      LDR     R5, off_44DBBFEC
                      BX      R5
off_44DBBFEC    dw body+1
                      NOP
;-----------------------------------------------------------------------------------------                      
org 0x44dbb84c
_6:
                       LDR     R0, off_44DBB850
                       BX      R0
off_44DBB850    dw loc_45C12398+1   
;-----------------------------------------------------------------------------------------
org 0x44d46d84
_7:
                       LDR     R1, off_44D46D88
                       BX      R1
off_44D46D88    dw loc_45C12518+1   
;-----------------------------------------------------------------------------------------
org 0x44dbbdfc
_8:
                       LDR     R1, off_44DBBE00
                       BX      R1
off_44DBBE00    dw loc_45C1252C+1   
                       NOP
;-----------------------------------------------------------------------------------------                       
org 0x44dba248
_9:
                       LDR     R3, off_44DBA28C
                       BX      R3
                       NOP
;-----------------------------------------------------------------------------------------                       
org 0x44dba28c
_10:
off_44DBA28C    dw loc_45C125D0+1 
;-----------------------------------------------------------------------------------------
org 0x45c12300
body:
        LDR    R5, [SP,0x68]
        ADD    R5, 0x58
        CMP    R7, 0
        BEQ    loc_45C12330
        CMP    R7, 1
        BEQ    loc_45C12334
        MOV    R1, 1
        ADD    R0, R4,    0
        LDR    R3, off_45C12340
        BLX    R3        
        MOV    R2, 1
        adr    R1, dword_45C12394
        ADD    R0, R4,    0
        LDR    R3, off_45C12344
        BLX    R3
        BL    sub_45C12350
        ADD    R2, R0,    0
        MOV    R1, 0
        ADD    R0, R4,    0
        LDR    R3, off_45C12348
        BLX    R3        
        LDR    R1, off_45C1234C
        BX    R1


loc_45C12330:                
        LDR    R1, off_45C12338
        BX    R1


loc_45C12334:                
        LDR    R1, off_45C1233C
        BX    R1

off_45C12338    dw 0x44DBBFF2+1    
off_45C1233C    dw 0x44DBC2DC+1    
off_45C12340    dw SetNumOfMenuItem    
                    
off_45C12344    dw 0x4531E5A4+1    
off_45C12348    dw ListMenu_SetSecondLineText 
                    
off_45C1234C    dw 0x44DBC286+1    




sub_45C12350:                
        PUSH    {R1-R7,LR}
        SUB    SP, SP,    0x14
        LDRH    R2, [R5,0x20]
        LDR    R7, dword_45C126F8
        LDRB    R3, [R7,2]
        CMP    R3, 0
        BEQ    loc_45C12364
        SUB    R5, R3,    1
        CMP    R5, R2
        BEQ    loc_45C1237E

loc_45C12364:                
        ADD    R2, R2,    1
        STRB    R2, [R7,2]
        MOV    R0, 1
        BL    sub_45C12698
        CMP    R0, 0xFF
        BEQ    loc_45C1237A
        MOV    R1, SP
        BL    sub_45C126C8
        B    loc_45C1237C


loc_45C1237A:                
        MOV    R0, 0

loc_45C1237C:                
        STRH    R0, [R7]

loc_45C1237E:                
        LDRH    R0, [R7]
        BL    sub_45C1262C
        ADD    SP, SP,    0x14
        POP    {R1-R7,PC}



dword_45C12388        dw 0xF356F357
                    dw 0xF35CF35D
                    dw 0xEE9EEE9D
dword_45C12394        dw 0x1C9B  
            
loc_45C12398:        
        LDRH    R0, [R6,2]
        CMP    R0, 0
        BEQ    loc_45C123B6
        CMP    R0, 1
        BEQ    loc_45C123BC
        CMP    R0, 2
        BNE    loc_45C123B4
        LDRH    R0, [R6]
        CMP    R0, 0
        BNE    loc_45C123B4
        ADD    R0, R4,    0
        adr    R1, off_45C12494
        LDR    R3, off_45C124EC
        BLX    R3        

loc_45C123B4:                
                    
        POP    {R4-R6,PC}


loc_45C123B6:                
        LDRH    R0, [R6]
        LDR    R3, off_45C123C4
        BX    R3


loc_45C123BC:                
        LDRH    R0, [R6]
        LDR    R3, off_45C123C8
        BX    R3

        align 4
off_45C123C4    dw 0x44DBB854+1    
off_45C123C8    dw 0x44DBB87A+1    

        PUSH    {R0,R4,LR}
        LDR    R0, [R1,0x18]
        ADD    R4, R1,    0
        CMP    R0, 0
        BEQ    loc_45C123DE
        LDR    R3, off_45C124A0
        BLX    R3
        MOV    R0, 0
        STR    R0, [R4,0x18]

loc_45C123DE:                
        LDR    R0, dword_45C126F8
        LDRH    R0, [R0]
        CMP    R0, 0
        BNE    loc_45C123EA
        MOVL    R0, 0x900

loc_45C123EA:                
        STR    R0, [SP]
        MOV    R3, 0
        ADD    R2, R4,    0
        LDR    R1, off_45C124A4
        MOV    R0, 1
        PUSH    {R0-R3}
        LDR    R3, off_45C124A8
        ADD    R2, SP,    0x10
        LDR    R1, off_45C124AC
        MOV    R0, 0
        PUSH    {R0-R3}
        LDR    R3, off_45C124B0
        LDR    R2, dword_45C124B4
        LDR    R1, off_45C124B8
        LDR    R0, dword_45C124BC
        PUSH    {R0,R1}
        LDR    R1, off_45C124C0
        MOV    R0, 0
        BL    sub_45C12472
        ADD    SP, SP,    0x28
        STR    R0, [R4,0x18]
        CMP    R0, 0
        BNE    loc_45C12422
        ADD    R0, R4,    0
        LDR    R3, off_45C124C8
        BLX    R3
        B    loc_45C1244A


loc_45C12422:                
        LDR    R1, dword_45C124CC
        adr    R2, loc_45C12450
        ADD    R2, 1
        LDR    R3, off_45C124D0
        BLX    R3        
        LDR    R0, [R4,0x18]
        MOVL    R1, 0xFC0
        LDR    R2, off_45C124D4
        LDR    R3, off_45C124D0
        BLX    R3        
        LDR    R0, [R4,0x18]
        LDR    R1, dword_45C124D8
        LDR    R2, off_45C124DC
        LDR    R3, off_45C124D0
        BLX    R3        
        LDR    R1, dword_45C124E0
        LDR    R0, [R4,0x18]
        LDR    R3, off_45C124E4
        BLX    R3        

loc_45C1244A:                
        MOV    R0, 1
        POP    {R3,R4,PC}

        align 4


loc_45C12450:                
        PUSH    {R0-R7,LR}
        ADD    R4, R0,    0
        ADD    R0, R1,    0
        LDR    R3, off_45C124E8
        BLX    R3        
        LDR    R3, dword_45C126F8
        LDRH    R1, [R3]
        CMP    R1, R0
        BEQ    loc_45C12468
        MOV    R1, 1
        STRH    R0, [R3]
        STRB    R1, [R3,3]

loc_45C12468:                
        LDR    R1, off_45C124F0
        ADD    R0, R4,    0
        LDR    R3, off_45C124EC
        BLX    R3        
        POP    {R0-R7,PC}




sub_45C12472:                

var_40        = -0x40
var_3C        = -0x3C
var_38        = -0x38
var_34        = -0x34
var_30        = -0x30
var_2C        = -0x2C
var_28        = -0x28
var_24        = -0x24
var_C        = -0xC



        PUSH    {R3}
        LDR    R3, off_45C124C4
        MOV    R12, R3
        POP    {R3}
        BX    R12        



dword_45C1247C    dw 7            
        dw 0x45C123CD
        dw 8
        dw 0x44DBAF51
        dw 0
        dw 0
off_45C12494    dw aClockbook_seta    
                    
        dw 0
        dw dword_45C1247C
off_45C124A0    dw GUI_Free        
off_45C124A4    dw 0x45BA728C+0x16 
off_45C124A8    dw 0x45BA7300+0x26 
off_45C124AC    dw 0x45BA728C+0x36 
off_45C124B0    dw 0x45BA7300+0xC    
dword_45C124B4    dw 0x1A01        
off_45C124B8    dw 0x45BA7300+0x24 
dword_45C124BC    dw 0x6FFFFFFF        
off_45C124C0    dw 0x45BA7300+0x2A 
off_45C124C4    dw CreateTimeInputVA                        
off_45C124C8    dw FreeBook    
dword_45C124CC    dw 0xFBF        
off_45C124D0    dw GUIObject_Softkey_SetAction                                        
off_45C124D4    dw 0x44DBD0CD    
dword_45C124D8    dw 0xFAF        
off_45C124DC    dw 0x44DBBF09    
dword_45C124E0    dw 0xEB48        
off_45C124E4    dw InputFeedback_SetIcon                    
off_45C124E8    dw TimeInput_GetTimeInt                    
off_45C124EC    dw BookObj_GotoPage            
off_45C124F0    dw 0x45AA4E98    
aClockbook_seta    db "ClockBook_SetAlarm_SnoozeEdit_Page",0 
        db 0xFF
        
loc_45C12518:
        ADD    R2, R4,    0
        BL    sub_45C12544
        ADD    R1, SP,    4
        ADD    R0, R0,    R2
        LDR    R3, off_45C12528
        BX    R3

        align 4
off_45C12528    dw 0x44D46D8C+1    

loc_45C1252C:
        BL    sub_45C1258E
        ADD    R1, R4,    0
        MOV    R0, 1
        LDR    R3, off_45C1253C
        BLX    R3
        LDR    R3, off_45C12540
        BX    R3

off_45C1253C    dw 0x44DBCABC+1    
off_45C12540    dw 0x44DBBE08+1    




sub_45C12544:                
        PUSH    {R0,R1,R3-R7,LR}
        SUB    SP, SP,    0x14
        MOV    R0, 1
        BL    sub_45C12698
        CMP    R0, 0xFF
        BNE    loc_45C12558

loc_45C12552:                
        MOVL    R2, 0x21C
        B    loc_45C1257A


loc_45C12558:                
        ADD    R2, R2,    1
        MOV    R1, SP
        BL    sub_45C126C8
        CMP    R0, 0
        BEQ    loc_45C12552
        MOV    R2, 0
        STR    R0, [R1]
        LDRB    R0, [R1]
        CMP    R0, 0
        BEQ    loc_45C12572
        BL    dword_45C1257E

loc_45C12572:                
        LDRB    R0, [R1,1]
        ADD    R0, R0,    R2
        BL    dword_45C1257E

loc_45C1257A:                
        ADD    SP, SP,    0x14
        POP    {R0,R1,R3-R7,PC}



dword_45C1257E    dw 0xC60087                            
                dw 0x1440105
                dw 0x192D19BF
                dw 0x4770197A




sub_45C1258E:                

var_38        = -0x38
var_34        = -0x34
var_30        = -0x30
var_2C        = -0x2C
var_28        = -0x28

        PUSH    {R0-R7,LR}
        SUB    SP, SP,    0x14
        MOV    R7, 0
        STR    R7, [SP,0x38+var_38]
        STR    R7, [SP,0x38+var_34]
        STR    R7, [SP,0x38+var_30]
        STR    R7, [SP,0x38+var_2C]
        STR    R7, [SP,0x38+var_28]
        LDR    R5, dword_45C126F8
        LDRB    R0, [R5,3]
        LDRB    R2, [R5,2]
        CMP    R0, 0
        BEQ    loc_45C125CC
        MOV    R0, 1
        BL    sub_45C12698
        CMP    R0, 0xFF
        BEQ    loc_45C125B8
        MOV    R1, SP
        BL    sub_45C126C8

loc_45C125B8:                
        MOV    R1, SP
        SUB    R2, R2,    1
        LSL    R3, R2,    2
        LDRH    R0, [R5]
        STR    R0, [R1,R3]
        MOV    R0, 2
        BL    sub_45C12698
        BL    sub_45C126E4

loc_45C125CC:                
        ADD    SP, SP,    0x14
        POP    {R0-R7,PC}


loc_45C125D0:
        LDR    R3, off_45C12624
        PUSH    {R4,R5,LR}
        BL    sub_45C125E0
        LDR    R5, off_45C125DC
        BX    R5

off_45C125DC    dw 0x44DBA24E+1    




sub_45C125E0:                

var_34        = -0x34
var_30        = -0x30

        PUSH    {R0,R1,R3-R7,LR}
        SUB    SP, SP,    0x14
        ADD    R4, R1,    0
        MOV    R0, 1
        BL    sub_45C12698
        CMP    R0, 0xFF
        BNE    loc_45C125F4

loc_45C125F0:                
        LDR    R2, dword_45C12628
        B    loc_45C12620


loc_45C125F4:                
        LDRH    R2, [R4,0x2E]
        ADD    R2, R2,    1
        MOV    R1, SP
        BL    sub_45C126C8
        CMP    R0, 0
        BEQ    loc_45C125F0
        BL    sub_45C1262C
        STR    R0, [SP,0x34+var_30]
        adr    R0, You_have_selected
        MOV    R1, 0
        MOV    R2, 0x23
        LDR    R3, off_45C12694
        BLX    R3
        STR    R0, [SP,0x34+var_34]
        MOV    R0, SP
        MOV    R1, 5
        MOV    R2, 2
        LDR    R3, off_45C12694
        BLX    R3
        ADD    R2, R0,    0

loc_45C12620:                
        ADD    SP, SP,    0x14
        POP    {R0,R1,R3-R7,PC}



off_45C12624    dw 0x45BA728C+0x16 
dword_45C12628    dw 0x1CA9        




sub_45C1262C:                
                    

var_4C        = -0x4C
var_48        = -0x48

        PUSH    {R1-R7,LR}
        SUB    SP, SP,    0x2C
        ADD    R7, SP,    0x4C+var_48
        MOV    R5, 0
        CMP    R0, 0
        BEQ    loc_45C1265E
        STR    R0, [SP,0x4C+var_4C]
        MOV    R0, SP
        LDRB    R0, [R0]
        CMP    R0, 0
        BEQ    loc_45C12662
        LDR    R2, off_45C12688
        BLX    R2        
        STR    R0, [R7]
        MOVL    R1, 0x78000000
        ADD    R1, 0x20
        STR    R1, [R7,4]
        LDR    R0, dword_45C1268C
        STR    R0, [R7,8]
        STR    R1, [R7,0xC]
        MOV    R0, 0x10
        ADD    R7, R7,    R0
        ADD    R5, 4
        B    loc_45C12662


loc_45C1265E:                
        MOV    R0, 9
        B    loc_45C12666


loc_45C12662:                
                    
        MOV    R0, SP
        LDRB    R0, [R0,1]

loc_45C12666:                
        LDR    R2, off_45C12688
        BLX    R2        
        STR    R0, [R7]
        MOVL    R0, 0x78000000
        ADD    R0, 0x20
        STR    R0, [R7,4]
        LDR    R0, dword_45C12690
        STR    R0, [R7,8]
        ADD    R5, 3
        ADD    R0, SP,    0x4C+var_48
        MOV    R1, 5
        ADD    R2, R5,    0
        LDR    R3, off_45C12694
        BLX    R3
        ADD    SP, SP,    0x2C
        POP    {R1-R7,PC}



off_45C12688    dw int2strID        
                    
                    
dword_45C1268C    dw 0x162        
dword_45C12690    dw 0x163        
off_45C12694    dw Str2ID        
                    




sub_45C12698:                
                    
        PUSH    {R1-R7,LR}
        ADD    R7, R0,    0
        CMP    R0, 2
        BEQ    loc_45C126AE
        adr    R0, aTpaSystemSet_0 
        adr    R1, aSnoozecfg_bin 
        MOV    R2, 0
        LDR    R3, off_45C126FC
        BLX    R3
        CMP    R0, 0
        BMI    loc_45C126C4

loc_45C126AE:                
        MOV    R0, 0
        PUSH    {R0}
        MOV    R3, 0xFF
        ADD    R3, 0x81
        ADD    R2, R7,    0
        adr    R1, aSnoozecfg_bin 
        adr    R0, aTpaSystemSet_0 
        LDR    R5, off_45C12700
        BLX    R5        
        ADD    SP, SP,    4
        B    loc_45C126C6


loc_45C126C4:                
        MOV    R0, 0xFF

loc_45C126C6:                
        POP    {R1-R7,PC}






sub_45C126C8:                
                    
        PUSH    {R1-R7,LR}
        SUB    R2, R2,    1
        ADD    R7, R2,    0
        ADD    R6, R1,    0
        ADD    R5, R0,    0
        MOV    R2, 0x14
        LDR    R3, off_45C12704
        BLX    R3        
        ADD    R0, R5,    0
        LDR    R3, off_45C1270C
        BLX    R3        
        LSL    R1, R7,    2
        LDR    R0, [R6,R1]
        POP    {R1-R7,PC}






sub_45C126E4:                
        PUSH    {R0-R7,LR}
        ADD    R5, R0,    0
        MOV    R2, 0x14
        LDR    R3, off_45C12708
        BLX    R3        
        ADD    R0, R5,    0
        LDR    R3, off_45C1270C
        BLX    R3        
        POP    {R0-R7,PC}



        align 4
dword_45C126F8    dw 0x201A4124        
                    
off_45C126FC    dw fstat        
off_45C12700    dw _fopen                        
off_45C12704    dw fread                            
off_45C12708    dw fwrite                        
off_45C1270C    dw fclose        
                    
                    
aTpaSystemSet_0    du    "/tpa/system/settings",0 
                    
        align 4
aSnoozecfg_bin    du    "snoozecfg.bin",0 
                    
You_have_selected du "You´ve selected silence to alarm by",0