MiFa

Untitled

Jul 25th, 2011
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;W595 SW-R3EF001
  2. ;Quick access to phone functions via the numeric keys 2-9 in standby mode
  3. ;Options hung over "'pressing on GE' - Options .-- Change"
  4. ;Ver. 3
  5. ;(!) Shorcut add fix
  6. ;(!) HeapShift
  7. ;(c) Sic, Joker XT
  8. ;(p) jamesbond22
  9.  
  10. include "x.inc"
  11. include "lib\w902_r3eg004.asm"
  12.  
  13. ;evtlst_PB_UI_ExtFunc_CheckAccess
  14. org 0x11B8BB40;11b65d50
  15. ;pg_PB_UI_ExtFunc_CheckAccess__0xF+1
  16.                 dw newcode+1
  17.                 dw 0
  18.  
  19. org 0x10D994C2;10d91146
  20.                 blx     R2
  21.  
  22. org 0x10D99578;10d911fc
  23.                 dw _sett1+1
  24.  
  25. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;patchbody;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  26. org 0x127AADC0;12795b20
  27. newcode:
  28.                 PUSH    {R0-R7,LR}
  29.                 BL      sub_12795B3E
  30.                 ADDS    R4, R0, 0
  31.                 LDR     R0, dword_12795F28
  32.                 LDR     R0, [R0]
  33.                 MOVS    R1, 0xF2
  34.                 SUBS    R4, R4, R1
  35.                 LSLS    R4, R4, 2
  36.                 LDR     R0, [R0,R4]
  37.                 CMP     R0, 0
  38.                 BEQ     locret_12795B3C
  39.                 LDR     R7, off_12795B5C
  40.                 BLX     R7              ; void Shortcut_Run( wchar_t* shortcut_name );
  41.  
  42. locret_12795B3C:
  43.                 POP     {R0-R7,PC}
  44.  
  45.  
  46. sub_12795B3E:
  47.                 PUSH    {R1-R7,LR}
  48.                 LDR     R7, off_12795B50
  49.                 BLX     R7              ; BOOK* Find_StandbyBook( void );
  50.                 LDR     R7, off_12795B54
  51.                 BLX     R7              ; GUI* SBY_GetMainInput( BOOK* StandBy );
  52.                 LDR     R7, off_12795B58
  53.                 BLX     R7              ; char* MainInput_getPNUM( GUI* );
  54.                 LDRB    R0, [R0]
  55.                 POP     {R1-R7,PC}
  56.  
  57. ; ---------------------------------------------------------------------------
  58. off_12795B50    dw Find_StandbyBook+1
  59. off_12795B54    dw SBY_GetMainInput+1
  60. off_12795B58    dw MainInput_getPNUM+1
  61. off_12795B5C    dw Shortcut_Run+1
  62.  
  63. sub_12795B60:
  64.                 PUSH    {R1-R7,LR}
  65.                 MOVS    R0, 0x21
  66.                 BL      sub_12795D64
  67.                 ADDS    R6, R0, 0
  68.                 MOVS    R1, 0
  69.                 MOVS    R2, 0x21
  70.                 LDR     R7, off_12795F50
  71.                 BLX     R7
  72.                 LDR     R0, dword_12795F28
  73.                 STR     R6, [R0]
  74.                 ADDS    R0, R6, 0
  75.                 POP     {R1-R7,PC}
  76.  
  77. sub_12795B7A:
  78.                 PUSH    {R1-R7,LR}
  79.                 LDR     R0, dword_12795F28
  80.                 LDR     R0, [R0]
  81.                 CMP     R0, 0
  82.                 BNE     locret_12795B88
  83.                 BL      sub_12795B60
  84.  
  85. locret_12795B88:
  86.                 POP     {R1-R7,PC}
  87.  
  88. _sett1:
  89.                 LDR     R2, off_12795F4C
  90.                 MOVS    R3, 6
  91.                 PUSH    {R0-R7,LR}
  92.                 BL      sub_12795B7A
  93.                 ADR     R7, loc_12795BBC
  94.                 BLX     R7
  95.                 ADDS    R2, R5, 0
  96.                 MOVS    R1, 0
  97.                 MOVS    R0, 4
  98.                 PUSH    {R0-R2}
  99.                 MOVLS   R0, 0x2200
  100.                 ADDS    R0, 0xDB
  101.                 ADDS    R3, R1, 0
  102.                 ADR     R2, loc_12795D94
  103.                 ADDS    R2, 1
  104.                 ADDS    R1, R5, 0
  105.                 LDR     R7, off_12795F30
  106.                 BLX     R7
  107.                 LDR     R7, off_12795F34
  108.                 BLX     R7
  109.                 ADD     SP, SP, 0xC
  110.                 POP     {R0-R7,PC}
  111. align 4
  112. ;--------------------------------
  113.         code32
  114. loc_12795BBC:
  115.                 STMFD   SP!, {R4-R10,LR}
  116.                 LDR     R4, off_12795F7C
  117.                 SUB     SP, SP, 0x1C
  118.                 MOV     R5, R0
  119.                 MOV     R2, SP
  120.                 ADR     R1, aQais_dat   ; "qais.dat"
  121.                 MOV     R0, R4
  122.                 MOV     LR, PC
  123.                 LDR     PC, off_12795F6C ; int fstat( const wchar_t* path, const wchar_t* fname, FSTAT* fstat_stuct );
  124.                 CMP     R0, 0
  125.                 MOV     R0, 0
  126.                 STMFD   SP!, {R0}
  127.                 MOV     R3, 0x180
  128.                 BMI     loc_12795CB8
  129.                 MOV     R2, 4
  130.                 ADR     R1, aQais_dat   ; "qais.dat"
  131.                 MOV     R0, R4
  132.                 MOV     LR, PC
  133.                 LDR     PC, off_12795F5C ; int _fopen( const wchar_t* filpath, const wchar_t* filname, unsigned int mode, unsigned int rights, FILELISTITEM* destfname);
  134.                 MOV     R8, R0
  135.                 LDR     R0, [SP,0xC]
  136.                 ADR     R12, sub_12795D64
  137.                 ADD     R12, R12, 1
  138.                 BLX     R12
  139.                 LDR     R2, [SP,0xC]
  140.                 MOV     R6, R0
  141.                 MOV     R7, R6
  142.                 MOV     R1, R6
  143.                 MOV     R0, R8
  144.                 MOV     LR, PC
  145.                 LDR     PC, off_12795F68 ; int fread( int file, void* ptr, int size );
  146.                 MOV     R0, R8
  147.                 MOV     LR, PC
  148.                 LDR     PC, off_12795F60 ; int fclose( int file );
  149.                 MOV     R8, 0
  150.                 ADD     SP, SP, 4
  151.  
  152. loc_12795C4C:
  153.                 MOV     R0, R6
  154.                 MOV     LR, PC
  155.                 LDR     PC, off_12795F70 ; int wstrlen( const wchar_t* wstr );
  156.                 MOV     R9, R0
  157.                 ADR     R1, aNone       ; "none"
  158.                 MOV     R0, R6
  159.                 MOV     LR, PC
  160.                 LDR     PC, off_12795F74 ; int wstrcmp( const wchar_t* wstr1, const wchar_t* wstr2 );
  161.                 CMP     R0, 0
  162.                 STREQ   R0, [R5,R8,LSL 2]
  163.                 BEQ     loc_12795CA0
  164.                 ADD     R0, R9, 1
  165.                 MOV     R0, R0,LSL 1
  166.                 ADR     R12, sub_12795D64
  167.                 ADD     R12, R12, 1
  168.                 BLX     R12
  169.                 MOV     R10, R0
  170.                 MOV     R1, R6
  171.                 MOV     LR, PC
  172.                 LDR     PC, off_12795F78 ; wchar_t* wstrcpy( wchar_t* dest, const wchar_t* source );
  173.                 STR     R10, [R5,R8,LSL 2]
  174.  
  175. loc_12795CA0:
  176.                 ADD     R0, R6, R9,LSL 1
  177.                 ADD     R6, R0, 2
  178.                 ADD     R8, R8, 1
  179.                 CMP     R8, 8
  180.                 BNE     loc_12795C4C
  181.                 B       loc_12795D40
  182.  
  183. loc_12795CB8:
  184.                 ADD     R2, R3, 0x82
  185.                 ADR     R1, aQais_dat   ; "qais.dat"
  186.                 MOV     R0, R4
  187.                 MOV     LR, PC
  188.                 LDR     PC, off_12795F5C ; int _fopen( const wchar_t* filpath, const wchar_t* filname, unsigned int mode, unsigned int rights, FILELISTITEM* destfname);
  189.                 MOV     R5, R0
  190.                 MOV     R0, 0x50
  191.                 ADR     R12, sub_12795D64
  192.                 ADD     R12, R12, 1
  193.                 BLX     R12
  194.                 MOV     R6, R0
  195.                 MOV     R2, 0x50
  196.                 MOV     R1, 0
  197.                 MOV     LR, PC
  198.                 LDR     PC, off_12795F50
  199.                 MOV     R7, R6
  200.                 MOV     R8, 0
  201.                 ADD     SP, SP, 4
  202.  
  203. loc_12795D00:
  204.                 ADR     R1, aNone       ; "none"
  205.                 MOV     R0, R6
  206.                 MOV     LR, PC
  207.                 LDR     PC, off_12795F78 ; wchar_t* wstrcpy( wchar_t* dest, const wchar_t* source );
  208.                 ADD     R6, R6, 0xA
  209.                 ADD     R8, R8, 1
  210.                 CMP     R8, 8
  211.                 BNE     loc_12795D00
  212.                 MOV     R2, 0x50
  213.                 MOV     R1, R7
  214.                 MOV     R0, R5
  215.                 MOV     LR, PC
  216.                 LDR     PC, off_12795F64 ; int fwrite( int file, const void* ptr, int size );
  217.                 MOV     R0, R5
  218.                 MOV     LR, PC
  219.                 LDR     PC, off_12795F60 ; int fclose( int file );
  220.  
  221. loc_12795D40:
  222.                 MOV     R0, R7
  223.                 ADR     R12, sub_12795D80
  224.                 ADD     R12, R12, 1
  225.                 BLX     R12
  226.                 ADD     SP, SP, 0x1C
  227.                 LDMFD   SP!, {R4-R10,PC}
  228.  
  229. aNone           du "none",0
  230. align 4
  231. ;-----------------------------------------
  232. code16
  233. sub_12795D64:
  234.                 PUSH    {R1-R7,LR}
  235.                 ADDS    R1, R0, 0
  236.                 MOVS    R2, 0
  237.                 MOVS    R0, 0
  238.                 PUSH    {R0,R2}
  239.                 MOVS    R3, 5
  240.                 MOVS    R2, 1
  241.                 MOVS    R0, 0
  242.                 MVNS    R0, R0
  243.                 LDR     R7, dword_12795F54
  244.                 BLX     R7
  245.                 ADD     SP, SP, 8
  246.                 POP     {R1-R7,PC}
  247. align 4
  248.  
  249.  
  250. sub_12795D80:
  251.                 PUSH    {R1-R7,LR}
  252.                 CMP     R0, 0
  253.                 BEQ     locret_12795D92
  254.                 MOVS    R3, 0
  255.                 MOVS    R2, 0
  256.                 ADDS    R1, R0, 0
  257.                 MOVS    R0, 0
  258.                 LDR     R7, dword_12795F58
  259.                 BLX     R7
  260.  
  261. locret_12795D92:
  262.                 POP     {R1-R7,PC}
  263.  
  264. loc_12795D94:
  265.                 PUSH    {R0-R7,LR}
  266.                 BL      sub_12795B3E
  267.                 ADDS    R1, R0, 0
  268.                 CMP     R1, 0xF1
  269.                 BLE     locret_12795DD2
  270.                 CMP     R1, 0xFA
  271.                 BGE     locret_12795DD2
  272.                 LDR     R0, dword_12795F28
  273.                 LDR     R0, [R0]
  274.                 MOVS    R2, 0xF2
  275.                 SUBS    R1, R1, R2
  276.                 LSLS    R1, R1, 2
  277.                 MOVS    R2, 0x20
  278.                 STRB    R1, [R0,R2]
  279.                 MOVS    R1, 0
  280.                 MVNS    R1, R1
  281.                 MOVS    R0, 1
  282.                 LDR     R7, off_12795F38
  283.                 BLX     R7              ; BOOK* MenuBook_Desktop( int mode, int BookID );
  284.                 ADDS    R6, R0, 0
  285.                 ADR     R2, loc_12795DD4
  286.                 ADDS    R2, 1
  287.                 MOVS    R1, 0
  288.                 LDR     R7, off_12795F3C
  289.                 BLX     R7              ; void BookObj_SoftKeys_SetAction( BOOK* book, int actionID, SKACTIONPROC proc );
  290.                 LDR     R2, dword_12795F48
  291.                 MOVS    R1, 0
  292.                 ADDS    R0, R6, 0
  293.                 LDR     R7, off_12795F40
  294.                 BLX     R7              ; void BookObj_SoftKeys_SetText( BOOK* book, int actionID, TEXTID );
  295.  
  296. locret_12795DD2:
  297.                 POP     {R0-R7,PC}
  298.  
  299. loc_12795DD4:
  300.                 PUSH    {R0-R7,LR}
  301.                 ADDS    R4, R0, 0
  302.                 LDR     R7, off_12795F44
  303.                 BLX     R7              ; wchar_t* MenuBook_Desktop_GetSelectedItemID( BOOK* MenuBook_Desktop );
  304.                 ADDS    R6, R0, 0
  305.                 LDR     R0, dword_12795F28
  306.                 LDR     R5, [R0]
  307.                 MOVS    R2, 0x20
  308.                 LDRB    R1, [R5,R2]
  309.                 LDR     R0, [R5,R1]
  310.                 CMP     R0, 0
  311.                 BEQ     loc_12795DF0
  312.                 BL      sub_12795D80
  313.  
  314. loc_12795DF0:
  315.                 STR     R6, [R5,R1]
  316.                 ADDS    R0, R5, 0
  317.                 ADR     R7, loc_12795E00
  318.                 BLX     R7
  319.                 ADDS    R0, R4, 0
  320.                 LDR     R7, off_12795F2C
  321.                 BLX     R7              ; void FreeBook( BOOK* book );
  322.                 POP     {R0-R7,PC}
  323. ;;;;;;;;;;;;;;;;;;;;;;;;;;;code32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  324. loc_12795E00:
  325. code32
  326.                 STMFD   SP!, {R4-R11,LR}
  327.                 LDR     R5, off_12795F7C
  328.                 MOV     R4, R0
  329.                 MOV     R0, 0
  330.                 STMFD   SP!, {R0}
  331.                 MOV     R3, 0x180
  332.                 ADD     R2, R3, 0x82
  333.                 ADR     R1, aQais_dat   ; "qais.dat"
  334.                 MOV     R0, R5
  335.                 MOV     LR, PC
  336.                 LDR     PC, off_12795F5C ; int _fopen( const wchar_t* filpath, const wchar_t* filname, unsigned int mode, unsigned int rights, FILELISTITEM* destfname);
  337.                 MOV     R6, R0
  338.                 MOV     R7, 0
  339.                 MOV     R8, 0
  340.                 ADD     SP, SP, 4
  341.  
  342. loc_12795E3C:
  343.                 ADD     R0, R4, R8,LSL 2
  344.                 LDR     R1, [R0]
  345.                 CMP     R1, 0
  346.                 ADDEQ   R7, R7, 0xA
  347.                 BEQ     loc_12795E64
  348.                 MOV     R0, R1
  349.                 MOV     LR, PC
  350.                 LDR     PC, off_12795F70 ; int wstrlen( const wchar_t* wstr );
  351.                 ADD     R0, R0, 1
  352.                 ADD     R7, R7, R0,LSL 1
  353.  
  354. loc_12795E64:
  355.                 ADD     R8, R8, 1
  356.                 CMP     R8, 8
  357.                 BNE     loc_12795E3C
  358.                 MOV     R0, R7
  359.                 ADR     R12, sub_12795D64
  360.                 ADD     R12, R12, 1
  361.                 BLX     R12
  362.                 MOV     R8, R0
  363.                 MOV     R2, R7
  364.                 MOV     R1, 0
  365.                 MOV     LR, PC
  366.                 LDR     PC, off_12795F50
  367.                 MOV     R9, R8
  368.                 MOV     R10, 0
  369.  
  370. loc_12795E9C:
  371.                 ADD     R11, R4, R10,LSL 2
  372.                 LDR     R0, [R11]
  373.                 CMP     R0, 0
  374.                 BNE     loc_12795EC4
  375.                 ADR     R1, aNone       ; "none"
  376.                 MOV     R0, R8
  377.                 MOV     LR, PC
  378.                 LDR     PC, off_12795F78 ; wchar_t* wstrcpy( wchar_t* dest, const wchar_t* source );
  379.                 ADD     R8, R8, 0xA
  380.                 B       loc_12795EE8
  381.  
  382. loc_12795EC4:
  383.                 MOV     R1, R0
  384.                 MOV     R0, R8
  385.                 MOV     LR, PC
  386.                 LDR     PC, off_12795F78 ; wchar_t* wstrcpy( wchar_t* dest, const wchar_t* source );
  387.                 LDR     R0, [R11]
  388.                 MOV     LR, PC
  389.                 LDR     PC, off_12795F70 ; int wstrlen( const wchar_t* wstr );
  390.                 ADD     R0, R8, R0,LSL 1
  391.                 ADD     R8, R0, 2
  392.  
  393. loc_12795EE8:
  394.                 ADD     R10, R10, 1
  395.                 CMP     R10, 8
  396.                 BNE     loc_12795E9C
  397.                 MOV     R2, R7
  398.                 MOV     R1, R9
  399.                 MOV     R0, R6
  400.                 MOV     LR, PC
  401.                 LDR     PC, off_12795F64 ; int fwrite( int file, const void* ptr, int size );
  402.                 MOV     R0, R6
  403.                 MOV     LR, PC
  404.                 LDR     PC, off_12795F60 ; int fclose( int file );
  405.                 MOV     R0, R9
  406.                 ADR     R12, sub_12795D80
  407.                 ADD     R12, R12, 1
  408.                 BLX     R12
  409.                 LDMFD   SP!, {R4-R11,PC}
  410. ; ---------------------------------------------------------------------------
  411. dword_12795F28  dw 0x4BBFF2A3;4BBF3000
  412. off_12795F2C    dw FreeBook+1
  413. off_12795F30    dw 0x10D98374+1;10D8FFF8+1
  414. off_12795F34    dw 0x10D98354+1;10D8FFD8+1
  415. off_12795F38    dw MenuBook_Desktop+1
  416. off_12795F3C    dw BookObj_SoftKeys_SetAction+1
  417. off_12795F40    dw BookObj_SoftKeys_SetText+1
  418. off_12795F44    dw MenuBook_Desktop_GetSelectedItemID+1
  419.  
  420. dword_12795F48  dw 0x22DB
  421. off_12795F4C    dw 0x10D98BB4+1;10D90838+1
  422.  
  423. off_12795F50    dw 0x126FB494;sub_12631BB8   ;memset na db3210
  424. dword_12795F54  dw memalloc;0x4BB00584
  425. dword_12795F58  dw memfree;0x4BB005AC
  426. off_12795F5C    dw _fopen+1
  427. off_12795F60    dw fclose+1
  428. off_12795F64    dw fwrite+1
  429. off_12795F68    dw fread+1
  430. off_12795F6C    dw fstat+1
  431. off_12795F70    dw wstrlen+1
  432. off_12795F74    dw wstrcmp+1
  433. off_12795F78    dw wstrcpy+1
  434.  
  435. off_12795F7C    dw 0x11E6CDF8;11DA5474;aTpaSystem ; "/tpa/system"
  436.  
  437. aQais_dat       du "qais.dat",0
Advertisement
Add Comment
Please, Sign In to add comment