############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 30/Sep/2008 22:35:52 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\mainmenu.c # # Command line = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\mainmenu.c -D # # NEWSGOLD --preprocess D:\Pasha\elf\_MY_PROJECT_\nati # # cq_mod2\ESKA\List\ -lC D:\Pasha\elf\_MY_PROJECT_\nat # # icq_mod2\ESKA\List\ -o D:\Pasha\elf\_MY_PROJECT_\nat # # icq_mod2\ESKA\Obj\ -s9 --no_unroll --cpu_mode arm # # --endian little --cpu ARM926EJ-S --stack_align 4 # # --interwork -e --fpu None --dlib_config # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\LIB\dl5tpainl8n.h" -I # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\ESKA\List\main # # menu.lst # # Object file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\ESKA\Obj\mainm # # enu.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\mainmenu.c 1 #include "../inc/swilib.h" 2 #include "../inc/cfg_items.h" 3 #include "../inc/pnglist.h" 4 #include "NatICQ.h" 5 #include "history.h" 6 #include "mainmenu.h" 7 #include "main.h" 8 #include "conf_loader.h" 9 #include "status_change.h" 10 #include "language.h" 11 #include "revision.h" 12 #include "manage_cl.h" 13 #include "rect_patcher.h" 14 #include "cl_work.h" 15 #include "print.h" 16 #include "configs.h" 17 #include "addon.h" 18 #include "configs.h" 19 //============================================================================== \ In segment DATA_Z, align 4, align-sorted 20 int MainMenu_ID; \ MainMenu_ID: \ 00000000 DS8 4 21 22 extern int CurrentStatus; 23 extern int CurrentXStatus; 24 extern DYNPNGICONLIST *XStatusesImgList; 25 //extern int *XStatusesIconArray; 26 extern int S_ICONS[]; 27 extern const SOFTKEYSTAB menu_skt; 28 extern int Is_INC_On; 29 extern int Is_SLI_On; 30 //extern int Is_SMARTCPU_On; 31 extern int Is_ILU_On; 32 extern int Is_Double_Vibra_On; \ In segment DATA_Z, align 4, align-sorted 33 int janis; \ janis: \ 00000000 DS8 4 34 extern int Is_PING_On; 35 //extern int Is_UPTIME_On; 36 extern int Is_Vibra_Enabled; 37 #ifdef NEWSGOLD 38 extern int Is_Id3tag_Enabled; 39 #endif 40 extern unsigned int Is_Sounds_Enabled; 41 extern int Is_Show_Offline; 42 extern int Is_Show_Groups; 43 extern int IsActiveUp; 44 45 int isAbout=0; 46 \ In segment CODE, align 4, keep-with-next 47 void ChangeActiveUp(void) 48 { 49 IsActiveUp=!(IsActiveUp); \ ChangeActiveUp: \ 00000000 ........ LDR R0,??DataTable35 ;; IsActiveUp \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 50 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 51 RefreshGUI(); \ 00000024 960100EF SWI +406 52 } \ 00000028 0080BDE8 POP {PC} ;; return 53 \ In segment CODE, align 4, keep-with-next 54 void ChangeVibraMode(void) 55 { 56 Is_Vibra_Enabled=!(Is_Vibra_Enabled); \ ChangeVibraMode: \ 00000000 ........ LDR R0,??DataTable27 ;; Is_Vibra_Enabled \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 57 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 58 RefreshGUI(); \ 00000024 960100EF SWI +406 59 } \ 00000028 0080BDE8 POP {PC} ;; return 60 #ifdef NEWSGOLD \ In segment CODE, align 4, keep-with-next 61 void ChangeId3tagMode(void) 62 { 63 Is_Id3tag_Enabled=!(Is_Id3tag_Enabled); \ ChangeId3tagMode: \ 00000000 ........ LDR R0,??DataTable36 ;; Is_Id3tag_Enabled \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 64 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 65 RefreshGUI(); \ 00000024 960100EF SWI +406 66 set_my_xstatus(); \ 00000028 0040BDE8 POP {LR} ;; Pop \ 0000002C ........ _BF set_my_xstatus,??set_my_xstatus??rA ;; tailcall 67 } 68 #endif 69 70 extern int msg_away_timer; 71 extern GBSTMR away_tmr; 72 extern void away_timer(); 73 extern int main_d; 74 extern int away_m; 75 extern int change_back_status; 76 extern int status_rem; 77 //extern void UpdateCLheader(void); 78 \ In segment CODE, align 4, keep-with-next 79 void AutoAwayMSG(void) 80 { 81 if(!away_m) \ AutoAwayMSG: \ 00000000 ........ LDR R0,??DataTable26 ;; away_m \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 78409FE5 LDR R4,??AutoAwayMSG_0 ;; msg_away_timer \ 00000010 000051E3 CMP R1,#+0 \ 00000014 0D00001A BNE ??AutoAwayMSG_1 82 { 83 away_m=!away_m; \ 00000018 0150A0E3 MOV R5,#+1 \ 0000001C 005080E5 STR R5,[R0, #+0] 84 GBS_StopTimer(&away_tmr); \ 00000020 68009FE5 LDR R0,??AutoAwayMSG_0+0x4 ;; away_tmr \ 00000024 440100EF SWI +324 85 msg_away_timer=AUTO_ENGADE*12; \ 00000028 64009FE5 LDR R0,??AutoAwayMSG_0+0x8 ;; AUTO_ENGADE \ 0000002C 0C10A0E3 MOV R1,#+12 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 910000E0 MUL R0,R1,R0 \ 00000038 000084E5 STR R0,[R4, #+0] 86 away_timer(); \ 0000003C ........ _BLF away_timer,??away_timer??rA 87 main_d=1; \ 00000040 50009FE5 LDR R0,??AutoAwayMSG_0+0xC ;; main_d \ 00000044 005080E5 STR R5,[R0, #+0] \ 00000048 960100EF SWI +406 \ 0000004C 3080BDE8 POP {R4,R5,PC} 88 } 89 else 90 { 91 msg_away_timer=0; \ ??AutoAwayMSG_1: \ 00000050 0050A0E3 MOV R5,#+0 \ 00000054 005084E5 STR R5,[R4, #+0] 92 away_m=!away_m; 93 if(change_back_status) \ 00000058 3C409FE5 LDR R4,??AutoAwayMSG_0+0x10 ;; change_back_status \ 0000005C 005080E5 STR R5,[R0, #+0] \ 00000060 000094E5 LDR R0,[R4, #+0] \ 00000064 000050E3 CMP R0,#+0 \ 00000068 0500000A BEQ ??AutoAwayMSG_2 94 { 95 CurrentStatus=status_rem; \ 0000006C 2C109FE5 LDR R1,??AutoAwayMSG_0+0x14 ;; status_rem \ 00000070 ........ LDR R0,??DataTable25 ;; CurrentStatus \ 00000074 001091E5 LDR R1,[R1, #+0] \ 00000078 001080E5 STR R1,[R0, #+0] 96 set_my_status(); \ 0000007C ........ _BLF set_my_status,??set_my_status??rA 97 change_back_status=0; \ 00000080 005084E5 STR R5,[R4, #+0] 98 } 99 } 100 // UpdateCLheader(); 101 RefreshGUI(); \ ??AutoAwayMSG_2: \ 00000084 960100EF SWI +406 102 } \ 00000088 3080BDE8 POP {R4,R5,PC} ;; return \ ??AutoAwayMSG_0: \ 0000008C ........ DC32 msg_away_timer \ 00000090 ........ DC32 away_tmr \ 00000094 ........ DC32 AUTO_ENGADE \ 00000098 ........ DC32 main_d \ 0000009C ........ DC32 change_back_status \ 000000A0 ........ DC32 status_rem 103 104 \ In segment CODE, align 4, keep-with-next 105 void ChangeSoundMode(void) 106 { 107 Is_Sounds_Enabled=!(Is_Sounds_Enabled); \ ChangeSoundMode: \ 00000000 ........ LDR R0,??DataTable28 ;; Is_Sounds_Enabled \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 108 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 109 RefreshGUI(); \ 00000024 960100EF SWI +406 110 } \ 00000028 0080BDE8 POP {PC} ;; return 111 \ In segment CODE, align 4, keep-with-next 112 void ChangeShowOfflineMode(void) 113 { 114 void RecountMenu(CLIST *req, int needfocus); 115 Is_Show_Offline=!(Is_Show_Offline); \ ChangeShowOfflineMode: \ 00000000 ........ LDR R0,??DataTable33 ;; Is_Show_Offline \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 116 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 117 RecountMenu(NULL,1); \ 00000024 0110A0E3 MOV R1,#+1 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C ........ _BLF RecountMenu,??RecountMenu??rA 118 RefreshGUI(); \ 00000030 960100EF SWI +406 119 } \ 00000034 0080BDE8 POP {PC} ;; return 120 \ In segment CODE, align 4, keep-with-next 121 void ChangeShowGroupsMode(void) 122 { 123 void RecountMenu(CLIST *req,int needfocus); 124 Is_Show_Groups=!(Is_Show_Groups); \ ChangeShowGroupsMode: \ 00000000 ........ LDR R0,??DataTable34 ;; Is_Show_Groups \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 125 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 126 ResortCL(); \ 00000024 ........ _BLF ResortCL,??ResortCL??rA 127 RecountMenu(NULL,1); \ 00000028 0110A0E3 MOV R1,#+1 \ 0000002C 0000A0E3 MOV R0,#+0 \ 00000030 ........ _BLF RecountMenu,??RecountMenu??rA 128 RefreshGUI(); \ 00000034 960100EF SWI +406 129 } \ 00000038 0080BDE8 POP {PC} ;; return 130 131 //extern int get_file_size(char* fname); 132 extern char suc_config_name[64]; 133 //extern char suc_config_name_mod[64]; 134 extern const char *suc_config_name_mod; \ In segment CODE, align 4, keep-with-next 135 void EditConfig(void) 136 { \ EditConfig: \ 00000000 10402DE9 PUSH {R4,LR} 137 WSHDR *ws; 138 ws=AllocWS(150); \ 00000004 9600A0E3 MOV R0,#+150 \ 00000008 250100EF SWI +293 139 str_2ws(ws, suc_config_name,128); \ 0000000C 2C109FE5 LDR R1,??EditConfig_0 ;; suc_config_name \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 8020A0E3 MOV R2,#+128 \ 00000018 6C0100EF SWI +364 140 ExecuteFile(ws,0,0); \ 0000001C 0020A0E3 MOV R2,#+0 \ 00000020 0010A0E3 MOV R1,#+0 \ 00000024 0400A0E1 MOV R0,R4 \ 00000028 940000EF SWI +148 141 FreeWS(ws); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 290100EF SWI +297 142 GeneralFuncF1(1); \ 00000034 0100A0E3 MOV R0,#+1 \ 00000038 3B0100EF SWI +315 143 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??EditConfig_0: \ 00000040 ........ DC32 suc_config_name 144 \ In segment CODE, align 4, keep-with-next 145 void EditConfigMod(void) 146 { \ EditConfigMod: \ 00000000 10402DE9 PUSH {R4,LR} 147 WSHDR *ws; 148 ws=AllocWS(150); \ 00000004 9600A0E3 MOV R0,#+150 \ 00000008 250100EF SWI +293 \ 0000000C 0040A0E1 MOV R4,R0 149 str_2ws(ws,suc_config_name_mod,128); \ 00000010 30009FE5 LDR R0,??EditConfigMod_0 ;; suc_config_name_mod \ 00000014 8020A0E3 MOV R2,#+128 \ 00000018 001090E5 LDR R1,[R0, #+0] \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 6C0100EF SWI +364 150 ExecuteFile(ws,0,0); \ 00000024 0020A0E3 MOV R2,#+0 \ 00000028 0010A0E3 MOV R1,#+0 \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 940000EF SWI +148 151 FreeWS(ws); \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 290100EF SWI +297 152 GeneralFuncF1(1); \ 0000003C 0100A0E3 MOV R0,#+1 \ 00000040 3B0100EF SWI +315 153 } \ 00000044 1080BDE8 POP {R4,PC} ;; return \ ??EditConfigMod_0: \ 00000048 ........ DC32 suc_config_name_mod 154 155 \ In segment CODE, align 4, keep-with-next 156 void Disconnect(void) 157 { 158 extern volatile int disautorecconect; 159 disautorecconect=1; \ Disconnect: \ 00000000 1C009FE5 LDR R0,??Disconnect_0 ;; disautorecconect \ 00000004 00402DE9 PUSH {LR} \ 00000008 0110A0E3 MOV R1,#+1 \ 0000000C 001080E5 STR R1,[R0, #+0] 160 extern void end_socket(void); 161 SUBPROC((void*)end_socket); \ 00000010 10009FE5 LDR R0,??Disconnect_0+0x4 ;; end_socket \ 00000014 710100EF SWI +369 162 GeneralFuncF1(1); \ 00000018 0100A0E3 MOV R0,#+1 \ 0000001C 3B0100EF SWI +315 163 } \ 00000020 0080BDE8 POP {PC} ;; return \ ??Disconnect_0: \ 00000024 ........ DC32 disautorecconect \ 00000028 ........ DC32 end_socket 164 165 extern int uins; \ In segment DATA_Z, align 4, align-sorted 166 char hmm1[64]; \ hmm1: \ 00000000 DS8 64 167 \ In segment CODE, align 4, keep-with-next 168 void PingToServer(void) 169 { 170 janis=1; \ PingToServer: \ 00000000 4C009FE5 LDR R0,??PingToServer_0 ;; janis \ 00000004 10402DE9 PUSH {R4,LR} \ 00000008 0110A0E3 MOV R1,#+1 \ 0000000C 001080E5 STR R1,[R0, #+0] 171 TPKT *p; 172 p=malloc(sizeof(PKT)+sizeof(TTime)); \ 00000010 1000A0E3 MOV R0,#+16 \ 00000014 140000EF SWI +20 \ 00000018 0040A0E1 MOV R4,R0 173 GetDateTime(NULL,(TTime *)p->data); \ 0000001C 081084E2 ADD R1,R4,#+8 \ 00000020 0000A0E3 MOV R0,#+0 \ 00000024 B40000EF SWI +180 174 p->pkt.uin=0; \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 000084E5 STR R0,[R4, #+0] 175 p->pkt.type=T_ECHO; \ 00000030 1200A0E3 MOV R0,#+18 \ 00000034 B400C4E1 STRH R0,[R4, #+4] 176 p->pkt.data_len=sizeof(TTime); \ 00000038 0800A0E3 MOV R0,#+8 \ 0000003C B600C4E1 STRH R0,[R4, #+6] 177 SUBPROC((void *)SendAnswer,0,p); \ 00000040 10009FE5 LDR R0,??PingToServer_0+0x4 ;; SendAnswer \ 00000044 0420A0E1 MOV R2,R4 \ 00000048 0010A0E3 MOV R1,#+0 \ 0000004C 710100EF SWI +369 178 } \ 00000050 1080BDE8 POP {R4,PC} ;; return \ ??PingToServer_0: \ 00000054 ........ DC32 janis \ 00000058 ........ DC32 SendAnswer 179 \ In segment CODE, align 4, keep-with-next 180 void AboutDlg() 181 { 182 isAbout=1; \ AboutDlg: \ 00000000 08009FE5 LDR R0,??AboutDlg_0 ;; mm_rc + 92 \ 00000004 0110A0E3 MOV R1,#+1 \ 00000008 001080E5 STR R1,[R0, #+0] 183 //char s[256]; 184 //snprintf(s,255,LG_COPYRIGHT,__SVN_REVISION__); 185 // ShowMSG(2, (int)s); 186 } \ 0000000C 1EFF2FE1 BX LR ;; return \ ??AboutDlg_0: \ 00000010 ........ DC32 mm_rc + 92 187 \ In segment CODE, align 4, keep-with-next 188 void SaveCL() 189 { 190 extern void CreateCLFile(void); 191 CreateCLFile(); \ SaveCL: \ 00000000 ........ _BF CreateCLFile,??CreateCLFile??rA ;; tailcall 192 } 193 194 #ifdef NEWSGOLD 195 #ifdef ELKA 196 #define MENU_ITEMS 22//ELKA 197 #else 198 #define MENU_ITEMS 21//NEWSGOLD 199 #endif 200 #else 201 #define MENU_ITEMS 20//SGOLD 202 #endif 203 204 static char *menutexts2[MENU_ITEMS]= 205 { 206 LG_MNUSTATUS, 207 LG_MNUXSTATUS, 208 LG_MANAGELIST, 209 LG_AUTOANSWER,//"Автоответчик", 210 LG_MNUVIBRA, 211 LG_MNUSOUND, 212 LG_INCMSG, 213 // LG_MNUSMARTCPU, 214 LG_REMINDERON, 215 LG_MNUILUON, 216 LG_MNUPINGON, 217 // LG_MNUUPTIMEON, 218 LG_MNUSHOWOFF, 219 LG_MNUSHOWGROUP, 220 LG_MNUEDCFG, 221 LG_MNUEDCFG_MOD, 222 LG_MNUDISCONNECT, 223 // LG_MSGINFO, 224 LG_SAVECL, 225 LG_MNUPING, 226 LG_MNUABOUT, 227 LG_ACTUP, 228 "Открыть лог", 229 #ifdef NEWSGOLD 230 LG_ID3TAG, 231 #endif 232 #ifdef ELKA 233 LG_MNUSLION, 234 #endif 235 }; 236 237 #ifdef ELKA 238 void ChangeSLIMode(void) 239 { 240 Is_SLI_On=!(Is_SLI_On); 241 SUBPROC((void*)WriteDefSettings); 242 RefreshGUI(); 243 } 244 #endif/* 245 void ChangeSMARTCPUMode(void) 246 { 247 Is_SMARTCPU_On=!(Is_SMARTCPU_On); 248 SUBPROC((void*)WriteDefSettings); 249 RefreshGUI(); 250 }*/ 251 //#ifdef NEWSGOLD \ In segment CODE, align 4, keep-with-next 252 void ChangeINCMode(void) 253 { 254 Is_INC_On=!(Is_INC_On); \ ChangeINCMode: \ 00000000 ........ LDR R0,??DataTable29 ;; Is_INC_On \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 255 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 256 RefreshGUI(); \ 00000024 960100EF SWI +406 257 } \ 00000028 0080BDE8 POP {PC} ;; return 258 //#endif \ In segment CODE, align 4, keep-with-next 259 ChangeILUMode(void) 260 { 261 Is_ILU_On=!(Is_ILU_On); \ ChangeILUMode: \ 00000000 ........ LDR R0,??DataTable31 ;; Is_ILU_On \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 262 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 263 RefreshGUI(); \ 00000024 960100EF SWI +406 264 } \ 00000028 0080BDE8 POP {PC} ;; return 265 \ In segment CODE, align 4, keep-with-next 266 void ChangePINGMode(void) 267 { 268 Is_PING_On=!(Is_PING_On); \ ChangePINGMode: \ 00000000 ........ LDR R0,??DataTable32 ;; Is_PING_On \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 269 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 270 RefreshGUI(); \ 00000024 960100EF SWI +406 271 } \ 00000028 0080BDE8 POP {PC} ;; return 272 /* 273 void ChangeUPTIMEMode(void) 274 { 275 Is_UPTIME_On=!(Is_UPTIME_On); 276 SUBPROC((void*)WriteDefSettings); 277 RefreshGUI(); 278 } 279 280 int main_count; 281 int main2_count; 282 283 void MSG_Info(void) 284 { 285 char *info=malloc(64); 286 sprintf(info, "Отправлено: %d\n" 287 "Принято: %d", main2_count, main_count); 288 ShowMSG(1,(int)info); 289 mfree(info); 290 }*/ 291 \ In segment CODE, align 4, keep-with-next 292 void ChangeDoubleVibra(void) 293 { 294 Is_Double_Vibra_On=!(Is_Double_Vibra_On); \ ChangeDoubleVibra: \ 00000000 ........ LDR R0,??DataTable30 ;; Is_Double_Vibra_On \ 00000004 00402DE9 PUSH {LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0110A003 MOVEQ R1,#+1 \ 00000014 0010A013 MOVNE R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] 295 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable21 ;; WriteDefSettings \ 00000020 710100EF SWI +369 296 RefreshGUI(); \ 00000024 960100EF SWI +406 297 } \ 00000028 0080BDE8 POP {PC} ;; return 298 \ In segment CODE, align 4, keep-with-next 299 void CreateLogs(void) 300 { 301 extern void CreateLog(); 302 CreateLog(); \ CreateLogs: \ 00000000 ........ _BF CreateLog,??CreateLog??rA ;; tailcall 303 } 304 305 extern void CreateSCMenu(); 306 extern void CreateXSMenu(); 307 static const void *menuprocs[MENU_ITEMS]= 308 { 309 (void *)CreateSCMenu,//(void *)DispStatusChangeMenu, 310 (void *)CreateXSMenu,//DispXStatusChangeMenu, 311 (void *)CreateManageCLMenu, 312 (void *)AutoAwayMSG, 313 (void *)ChangeVibraMode, 314 (void *)ChangeSoundMode, 315 (void *)ChangeINCMode, 316 // (void *)ChangeSMARTCPUMode, 317 (void *)ChangeDoubleVibra, 318 (void *)ChangeILUMode, 319 (void *)ChangePINGMode, 320 // (void *)ChangeUPTIMEMode, 321 (void *)ChangeShowOfflineMode, 322 (void *)ChangeShowGroupsMode, 323 (void *)EditConfig, 324 (void *)EditConfigMod, 325 (void *)Disconnect, 326 // (void *)MSG_Info, 327 (void*)SaveCL, 328 (void *)PingToServer, 329 (void *)AboutDlg, 330 (void *)ChangeActiveUp, 331 (void *)CreateLogs, 332 #ifdef NEWSGOLD 333 (void *)ChangeId3tagMode, 334 #endif 335 #ifdef ELKA 336 (void *)ChangeSLIMode, 337 #endif 338 }; 339 340 341 342 343 static char *temp_chars; //Собственно файл 344 static char **menutexts; //Массив указателей на строки 345 \ In segment CODE, align 4, keep-with-next 346 void FreeMenu(void) 347 { \ FreeMenu: \ 00000000 10402DE9 PUSH {R4,LR} 348 if (menutexts) mfree(menutexts); \ 00000004 ........ LDR R4,??DataTable54 ;; mm_rc \ 00000008 B80094E5 LDR R0,[R4, #+184] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0000000A BEQ ??FreeMenu_0 \ 00000014 150000EF SWI +21 349 if (temp_chars) mfree(temp_chars); \ ??FreeMenu_0: \ 00000018 B40094E5 LDR R0,[R4, #+180] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 0100000A BEQ ??FreeMenu_1 \ 00000024 150000EF SWI +21 350 menutexts=NULL; \ 00000028 0000A0E3 MOV R0,#+0 \ ??FreeMenu_1: \ 0000002C B80084E5 STR R0,[R4, #+184] 351 temp_chars=NULL; \ 00000030 B40084E5 STR R0,[R4, #+180] 352 } \ 00000034 1080BDE8 POP {R4,PC} ;; return 353 \ In segment CODE, align 4, keep-with-next 354 int LoadMenuLang() 355 { \ LoadMenuLang: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 4BDF4DE2 SUB SP,SP,#+300 356 FSTATS stat; 357 char fn[256]; 358 int f; 359 unsigned int ul; 360 int i; 361 int fsize; 362 char *p; 363 char *pp; 364 int c; 365 FreeMenu(); 366 strcpy(fn,TEMPLATES_PATH); 367 i=strlen(fn); 368 sprintf(fn+i,"\\langmenu.txt"); 369 if (GetFileStats(fn,&stat,&ul)==-1) return 0; \ 00000008 0040E0E3 MVN R4,#+0 \ 0000000C ........ BL FreeMenu \ 00000010 10119FE5 LDR R1,??LoadMenuLang_0 ;; TEMPLATES_PATH \ 00000014 04008DE2 ADD R0,SP,#+4 \ 00000018 1A0000EF SWI +26 \ 0000001C 04008DE2 ADD R0,SP,#+4 \ 00000020 1B0000EF SWI +27 \ 00000024 00119FE5 LDR R1,??LoadMenuLang_0+0x4 ;; `?` \ 00000028 0070A0E1 MOV R7,R0 \ 0000002C 04008DE2 ADD R0,SP,#+4 \ 00000030 000087E0 ADD R0,R7,R0 \ 00000034 160000EF SWI +22 \ 00000038 0D20A0E1 MOV R2,SP \ 0000003C 411F8DE2 ADD R1,SP,#+260 \ 00000040 04008DE2 ADD R0,SP,#+4 \ 00000044 840000EF SWI +132 \ 00000048 040050E1 CMP R0,R4 \ 0000004C 0200001A BNE ??LoadMenuLang_1 \ ??LoadMenuLang_2: \ 00000050 0000A0E3 MOV R0,#+0 \ ??LoadMenuLang_3: \ 00000054 4BDF8DE2 ADD SP,SP,#+300 ;; stack cleaning \ 00000058 F087BDE8 POP {R4-R10,PC} ;; return 370 if ((fsize=stat.size)<=0) return 0; \ ??LoadMenuLang_1: \ 0000005C 08719DE5 LDR R7,[SP, #+264] \ 00000060 010057E3 CMP R7,#+1 \ 00000064 F9FFFFBA BLT ??LoadMenuLang_2 371 if((f=fopen(fn,A_ReadOnly+A_BIN,P_READ,&ul))==-1) return 0; \ 00000068 0D30A0E1 MOV R3,SP \ 0000006C 8020A0E3 MOV R2,#+128 \ 00000070 801CA0E3 MOV R1,#+32768 \ 00000074 04008DE2 ADD R0,SP,#+4 \ 00000078 0A0000EF SWI +10 \ 0000007C 0080A0E1 MOV R8,R0 \ 00000080 040058E1 CMP R8,R4 \ 00000084 F1FFFF0A BEQ ??LoadMenuLang_2 372 p=temp_chars=malloc(fsize+1); \ 00000088 ........ LDR R4,??DataTable54 ;; mm_rc \ 0000008C 010087E2 ADD R0,R7,#+1 \ 00000090 140000EF SWI +20 \ 00000094 B40084E5 STR R0,[R4, #+180] \ 00000098 0060A0E1 MOV R6,R0 373 p[fread(f,p,fsize,&ul)]=0; \ 0000009C 0050A0E3 MOV R5,#+0 \ 000000A0 0D30A0E1 MOV R3,SP \ 000000A4 0720A0E1 MOV R2,R7 \ 000000A8 0610A0E1 MOV R1,R6 \ 000000AC 0800A0E1 MOV R0,R8 \ 000000B0 0B0000EF SWI +11 \ 000000B4 0650C0E7 STRB R5,[R0, +R6] 374 fclose(f,&ul); \ 000000B8 0D10A0E1 MOV R1,SP \ 000000BC 0800A0E1 MOV R0,R8 \ 000000C0 0D0000EF SWI +13 375 i=0; \ 000000C4 0070A0E3 MOV R7,#+0 376 pp=p; \ 000000C8 0680A0E1 MOV R8,R6 \ 000000CC 020000EA B ??LoadMenuLang_4 377 for(;;) 378 { 379 c=*p; 380 if (c<32) 381 { 382 if (pp&&(pp!=p)) 383 { 384 menutexts=realloc(menutexts,(i+1)*sizeof(char *)); 385 menutexts[i++]=pp; 386 } 387 pp=NULL; 388 if (!c) break; 389 *p=0; 390 } 391 else 392 { 393 if (pp==NULL) pp=p; \ ??LoadMenuLang_5: \ 000000D0 000058E3 CMP R8,#+0 \ 000000D4 0680A001 MOVEQ R8,R6 394 } 395 p++; \ ??LoadMenuLang_6: \ 000000D8 016086E2 ADD R6,R6,#+1 \ ??LoadMenuLang_4: \ 000000DC 0090D6E5 LDRB R9,[R6, #+0] \ 000000E0 200059E3 CMP R9,#+32 \ 000000E4 F9FFFFAA BGE ??LoadMenuLang_5 \ 000000E8 000058E3 CMP R8,#+0 \ 000000EC 06005811 CMPNE R8,R6 \ 000000F0 0600000A BEQ ??LoadMenuLang_7 \ 000000F4 B80094E5 LDR R0,[R4, #+184] \ 000000F8 01A087E2 ADD R10,R7,#+1 \ 000000FC 0A11A0E1 LSL R1,R10,#+2 \ 00000100 BA0000EF SWI +186 \ 00000104 B80084E5 STR R0,[R4, #+184] \ 00000108 078180E7 STR R8,[R0, +R7, LSL #+2] \ 0000010C 0A70A0E1 MOV R7,R10 \ ??LoadMenuLang_7: \ 00000110 0080A0E3 MOV R8,#+0 \ 00000114 000059E3 CMP R9,#+0 396 } 397 return i; \ 00000118 0700A001 MOVEQ R0,R7 \ 0000011C CCFFFF0A BEQ ??LoadMenuLang_3 \ 00000120 0050C6E5 STRB R5,[R6, #+0] \ 00000124 EBFFFFEA B ??LoadMenuLang_6 \ ??LoadMenuLang_0: \ 00000128 ........ DC32 TEMPLATES_PATH \ 0000012C ........ DC32 `?` 398 } 399 400 401 int startItem=0; 402 int x2_cb=10; 403 404 extern char clrBlack[]; 405 extern char clrWhite[]; 406 extern char clrRed[]; 407 extern char transparent[]; 408 extern char blue[]; 409 extern int clfont; 410 extern IMGHDR *icons[]; 411 //extern int clfont; 412 int mm_itemFromDisp;//кол-во на экране \ In segment DATA_Z, align 4, align-sorted 413 int mm_totalItems;//общее количество итемов \ mm_totalItems: \ 00000000 DS8 4 414 int mm_curpos=0;//позичия курсора 415 416 //extern void DrwImage(IMGHDR *img, int x, int y, char *pen, char *brush); 417 extern DYNPNGICONLIST *GetXSByItem(int curitem); 418 RECT mm_rc;//MainMenu Rect 419 int mm_font; 420 421 #define CLIST_Y1 (YDISP+2) 422 423 #pragma inline \ In segment CODE, align 4, keep-with-next 424 void DrawCheckBox(int x,int y,int flag,int type) 425 { \ DrawCheckBox: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 426 RECT rc; 427 StoreXYXYtoRECT(&rc,x+2,y,x+x2_cb+2,y+x2_cb); \ 00000004 1C519FE5 LDR R5,??DrawCheckBox_0 ;; mm_rc \ 00000008 08D04DE2 SUB SP,SP,#+8 428 DrawRectangle(rc.x,rc.y,rc.x2,rc.y2,0,clrWhite,transparent); \ 0000000C 18719FE5 LDR R7,??DrawCheckBox_0+0x4 ;; clrWhite \ 00000010 0260A0E1 MOV R6,R2 \ 00000014 C02095E5 LDR R2,[R5, #+192] \ 00000018 0340A0E1 MOV R4,R3 \ 0000001C 013082E0 ADD R3,R2,R1 \ 00000020 08002DE9 PUSH {R3} \ 00000024 002082E0 ADD R2,R2,R0 \ 00000028 023082E2 ADD R3,R2,#+2 \ 0000002C 0120A0E1 MOV R2,R1 \ 00000030 021080E2 ADD R1,R0,#+2 \ 00000034 04008DE2 ADD R0,SP,#+4 \ 00000038 340100EF SWI +308 \ 0000003C EC009FE5 LDR R0,??DrawCheckBox_0+0x8 ;; transparent \ 00000040 01002DE9 PUSH {R0} \ 00000044 0700A0E1 MOV R0,R7 \ 00000048 01002DE9 PUSH {R0} \ 0000004C 0000A0E3 MOV R0,#+0 \ 00000050 01002DE9 PUSH {R0} \ 00000054 F631DDE1 LDRSH R3,[SP, #+22] \ 00000058 F421DDE1 LDRSH R2,[SP, #+20] \ 0000005C F211DDE1 LDRSH R1,[SP, #+18] \ 00000060 F001DDE1 LDRSH R0,[SP, #+16] \ 00000064 B40100EF SWI +436 429 if(flag) \ 00000068 000056E3 CMP R6,#+0 \ 0000006C 10D08DE2 ADD SP,SP,#+16 \ 00000070 F380BD08 POPEQ {R0,R1,R4-R7,PC} \ 00000074 F600DDE1 LDRSH R0,[SP, #+6] \ 00000078 F210DDE1 LDRSH R1,[SP, #+2] \ 0000007C F420DDE1 LDRSH R2,[SP, #+4] \ 00000080 023040E2 SUB R3,R0,#+2 \ 00000084 F000DDE1 LDRSH R0,[SP, #+0] \ 00000088 000054E3 CMP R4,#+0 \ 0000008C 0740A0E1 MOV R4,R7 \ 00000090 10002DE9 PUSH {R4} \ 00000094 020080E2 ADD R0,R0,#+2 \ 00000098 0040A0E3 MOV R4,#+0 \ 0000009C 10002DE9 PUSH {R4} \ 000000A0 0E00000A BEQ ??DrawCheckBox_1 430 { 431 if(type) 432 { 433 DrawLine(rc.x+2,rc.y+2,rc.x2-2,rc.y2-2,0,clrWhite); \ 000000A4 022042E2 SUB R2,R2,#+2 \ 000000A8 021081E2 ADD R1,R1,#+2 \ 000000AC B30100EF SWI +435 434 DrawLine(rc.x2-2,rc.y+2,rc.x+2,rc.y2-2,0,clrWhite); \ 000000B0 80002DE9 PUSH {R7} \ 000000B4 0000A0E3 MOV R0,#+0 \ 000000B8 01002DE9 PUSH {R0} \ 000000BC F601DDE1 LDRSH R0,[SP, #+22] \ 000000C0 023040E2 SUB R3,R0,#+2 \ 000000C4 F001DDE1 LDRSH R0,[SP, #+16] \ 000000C8 022080E2 ADD R2,R0,#+2 \ 000000CC F201DDE1 LDRSH R0,[SP, #+18] \ 000000D0 021080E2 ADD R1,R0,#+2 \ 000000D4 F401DDE1 LDRSH R0,[SP, #+20] \ 000000D8 020040E2 SUB R0,R0,#+2 \ 000000DC 0E0000EA B ??DrawCheckBox_2 435 } 436 else 437 { 438 DrawLine(rc.x+2,rc.y+5,rc.x2-7,rc.y2-2,0,clrWhite); \ ??DrawCheckBox_1: \ 000000E0 072042E2 SUB R2,R2,#+7 \ 000000E4 051081E2 ADD R1,R1,#+5 \ 000000E8 B30100EF SWI +435 439 DrawLine(rc.x2-7,rc.y2-2,rc.x+x2_cb,rc.y-2,0,clrWhite); \ 000000EC 80002DE9 PUSH {R7} \ 000000F0 0000A0E3 MOV R0,#+0 \ 000000F4 01002DE9 PUSH {R0} \ 000000F8 C01095E5 LDR R1,[R5, #+192] \ 000000FC F201DDE1 LDRSH R0,[SP, #+18] \ 00000100 023040E2 SUB R3,R0,#+2 \ 00000104 F001DDE1 LDRSH R0,[SP, #+16] \ 00000108 002081E0 ADD R2,R1,R0 \ 0000010C F601DDE1 LDRSH R0,[SP, #+22] \ 00000110 021040E2 SUB R1,R0,#+2 \ 00000114 F401DDE1 LDRSH R0,[SP, #+20] \ 00000118 070040E2 SUB R0,R0,#+7 \ ??DrawCheckBox_2: \ 0000011C B30100EF SWI +435 \ 00000120 10D08DE2 ADD SP,SP,#+16 440 } 441 } 442 } \ 00000124 F380BDE8 POP {R0,R1,R4-R7,PC} ;; return \ ??DrawCheckBox_0: \ 00000128 ........ DC32 mm_rc \ 0000012C ........ DC32 clrWhite \ 00000130 ........ DC32 transparent 443 \ In segment CODE, align 4, keep-with-next 444 void DrawIcon(int x,int y,int curitem) 445 { 446 switch(curitem) \ DrawIcon: \ 00000000 ........ LDR R12,??DataTable39 ;; icons \ 00000004 10402DE9 PUSH {R4,LR} \ 00000008 013080E2 ADD R3,R0,#+1 \ 0000000C 140052E3 CMP R2,#+20 \ 00000010 1080BD88 POPHI {R4,PC} \ 00000014 014F8FE2 ADR R4,??DrawIcon_0 \ 00000018 0240D4E7 LDRB R4,[R4, R2] \ 0000001C 04F18FE0 ADD PC,PC,R4, LSL #+2 \ ??DrawIcon_0: \ 00000020 050B1315 DC8 +5,+11,+19,+21 \ 00000024 171E2022 DC8 +23,+30,+32,+34 \ 00000028 2426282A DC8 +36,+38,+40,+42 \ 0000002C 2C2C3133 DC8 +44,+44,+49,+51 \ 00000030 3533372C DC8 +53,+51,+55,+44 \ 00000034 39000000 DC8 +57,+0,+0,+0 447 { 448 case 0: DrwImage(icons[CurrentStatus],x+1,y); break; \ ??DrawIcon_1: \ 00000038 ........ LDR R0,??DataTable25 ;; CurrentStatus \ 0000003C 0120A0E1 MOV R2,R1 \ 00000040 000090E5 LDR R0,[R0, #+0] \ 00000044 0310A0E1 MOV R1,R3 \ 00000048 00019CE7 LDR R0,[R12, +R0, LSL #+2] \ 0000004C 230000EA B ??DrawIcon_2 449 case 1: 450 { 451 // DYNPNGICONLIST *xs=GetXSByItem(CurrentXStatus); 452 // DrwImage(xs->img,x,y); 453 DrwImage(XStatusImg[CurrentXStatus],x+1,y); \ ??DrawIcon_3: \ 00000050 CC009FE5 LDR R0,??DrawIcon_4 ;; CurrentXStatus \ 00000054 0120A0E1 MOV R2,R1 \ 00000058 000090E5 LDR R0,[R0, #+0] \ 0000005C 0310A0E1 MOV R1,R3 \ 00000060 C0309FE5 LDR R3,??DrawIcon_4+0x4 ;; XStatusImg \ 00000064 000193E7 LDR R0,[R3, +R0, LSL #+2] \ 00000068 ........ _BLF DrwImage,??DrwImage??rA \ 0000006C 1080BDE8 POP {R4,PC} 454 } 455 break; 456 case 2: DrwImage(icons[ICON_ADDCONTACT],x+1,y); break;//DrawImg(x,y,S_ICONS[ICON_ADDCONTACT]); \ ??DrawIcon_5: \ 00000070 48009CE5 LDR R0,[R12, #+72] \ 00000074 170000EA B ??DrawIcon_6 457 case 3: DrawCheckBox(x,y,away_m?1:0,0); break; \ ??DrawIcon_7: \ 00000078 ........ LDR R2,??DataTable26 ;; away_m \ 0000007C 000000EA B ??DrawIcon_8 458 case 4: DrawCheckBox(x,y,Is_Vibra_Enabled?1:0,0); break; \ ??DrawIcon_9: \ 00000080 ........ LDR R2,??DataTable27 ;; Is_Vibra_Enabled \ ??DrawIcon_8: \ 00000084 0030A0E3 MOV R3,#+0 \ 00000088 002092E5 LDR R2,[R2, #+0] \ 0000008C 000052E3 CMP R2,#+0 \ 00000090 0120A013 MOVNE R2,#+1 \ 00000094 ........ _BLF DrawCheckBox,??DrawCheckBox??rA \ 00000098 1080BDE8 POP {R4,PC} 459 case 5: DrawCheckBox(x,y,Is_Sounds_Enabled?1:0,0); break; \ ??DrawIcon_10: \ 0000009C ........ LDR R2,??DataTable28 ;; Is_Sounds_Enabled \ 000000A0 F7FFFFEA B ??DrawIcon_8 460 case 6: DrawCheckBox(x,y,Is_INC_On?1:0,0); break; \ ??DrawIcon_11: \ 000000A4 ........ LDR R2,??DataTable29 ;; Is_INC_On \ 000000A8 F5FFFFEA B ??DrawIcon_8 461 case 7: DrawCheckBox(x,y,Is_Double_Vibra_On?1:0,0); break; \ ??DrawIcon_12: \ 000000AC ........ LDR R2,??DataTable30 ;; Is_Double_Vibra_On \ 000000B0 F3FFFFEA B ??DrawIcon_8 462 case 8: DrawCheckBox(x,y,Is_ILU_On?1:0,0); break; \ ??DrawIcon_13: \ 000000B4 ........ LDR R2,??DataTable31 ;; Is_ILU_On \ 000000B8 F1FFFFEA B ??DrawIcon_8 463 case 9: DrawCheckBox(x,y,Is_PING_On?1:0,0); break; \ ??DrawIcon_14: \ 000000BC ........ LDR R2,??DataTable32 ;; Is_PING_On \ 000000C0 EFFFFFEA B ??DrawIcon_8 464 case 10: DrawCheckBox(x,y,Is_Show_Offline?1:0,0); break; \ ??DrawIcon_15: \ 000000C4 ........ LDR R2,??DataTable33 ;; Is_Show_Offline \ 000000C8 EDFFFFEA B ??DrawIcon_8 465 case 11: DrawCheckBox(x,y,Is_Show_Groups?1:0,0); break; \ ??DrawIcon_16: \ 000000CC ........ LDR R2,??DataTable34 ;; Is_Show_Groups \ 000000D0 EBFFFFEA B ??DrawIcon_8 466 case 12: DrwImage(icons[ICON_SETTINGS],x+1,y); break; \ ??DrawIcon_17: \ 000000D4 58009CE5 LDR R0,[R12, #+88] \ ??DrawIcon_6: \ 000000D8 0120A0E1 MOV R2,R1 \ 000000DC 0310A0E1 MOV R1,R3 \ ??DrawIcon_2: \ 000000E0 ........ _BLF DrwImage,??DrwImage??rA \ 000000E4 1080BDE8 POP {R4,PC} 467 case 13: DrwImage(icons[ICON_SETTINGS],x+1,y); break; 468 case 14: DrwImage(icons[IS_OFFLINE],x+1,y); break; \ ??DrawIcon_18: \ 000000E8 00009CE5 LDR R0,[R12, #+0] \ 000000EC F9FFFFEA B ??DrawIcon_6 469 case 15: DrwImage(icons[IS_UNKNOWN],x+1,y); break; \ ??DrawIcon_19: \ 000000F0 38009CE5 LDR R0,[R12, #+56] \ 000000F4 F7FFFFEA B ??DrawIcon_6 470 case 16: DrwImage(icons[ICON_PING],x+1,y); break; \ ??DrawIcon_20: \ 000000F8 54009CE5 LDR R0,[R12, #+84] \ 000000FC F5FFFFEA B ??DrawIcon_6 471 case 17: DrwImage(icons[IS_UNKNOWN],x+1,y); break; 472 case 18: DrawCheckBox(x,y,IsActiveUp?1:0,0); break; \ ??DrawIcon_21: \ 00000100 ........ LDR R2,??DataTable35 ;; IsActiveUp \ 00000104 DEFFFFEA B ??DrawIcon_8 473 case 19: DrwImage(icons[ICON_SETTINGS],x+1,y); break; 474 #ifdef NEWSGOLD 475 case 20: DrawCheckBox(x,y,Is_Id3tag_Enabled?1:0,0); break; \ ??DrawIcon_22: \ 00000108 ........ LDR R2,??DataTable36 ;; Is_Id3tag_Enabled \ 0000010C 0030A0E3 MOV R3,#+0 \ 00000110 002092E5 LDR R2,[R2, #+0] \ 00000114 000052E3 CMP R2,#+0 \ 00000118 0120A013 MOVNE R2,#+1 \ 0000011C ........ _BLF DrawCheckBox,??DrawCheckBox??rA 476 #ifdef ELKA 477 case 21: DrawCheckBox(x,y,Is_SLI_On?1:0,0); break; 478 #endif 479 #endif 480 } 481 } \ ??DrawIcon_23: \ 00000120 1080BDE8 POP {R4,PC} ;; return \ ??DrawIcon_4: \ 00000124 ........ DC32 CurrentXStatus \ 00000128 ........ DC32 XStatusImg 482 483 \ In segment CODE, align 4, keep-with-next 484 void DrawMMScrollBar(int cur,int total) 485 { \ DrawMMScrollBar: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 486 int scr_h=ScreenH()-1; 487 int scr_w=ScreenW()-1; 488 int y=mm_rc.y2-mm_rc.y-2; \ 00000004 ........ LDR R6,??DataTable54 ;; mm_rc \ 00000008 0080A0E1 MOV R8,R0 \ 0000000C 0140A0E1 MOV R4,R1 \ 00000010 898100EF SWI +33161 \ 00000014 888100EF SWI +33160 \ 00000018 F270D6E1 LDRSH R7,[R6, #+2] \ 0000001C F630D6E1 LDRSH R3,[R6, #+6] 489 int pos=y*cur/total; \ 00000020 0410A0E1 MOV R1,R4 \ 00000024 070043E0 SUB R0,R3,R7 \ 00000028 025040E2 SUB R5,R0,#+2 \ 0000002C 980500E0 MUL R0,R8,R5 \ 00000030 ........ LDR R8,??DataTable47 ;; clrWhite \ 00000034 ........ _BLF ??div32_a,??rA??div32_a \ 00000038 F400D6E1 LDRSH R0,[R6, #+4] \ 0000003C 0190A0E1 MOV R9,R1 \ 00000040 0810A0E1 MOV R1,R8 \ 00000044 02002DE9 PUSH {R1} \ 00000048 020040E2 SUB R0,R0,#+2 \ 0000004C 0020A0E1 MOV R2,R0 \ 00000050 0110A0E3 MOV R1,#+1 \ 00000054 02002DE9 PUSH {R1} \ 00000058 0710A0E1 MOV R1,R7 490 int y2=y/total; 491 492 DrawLine(mm_rc.x2-2,mm_rc.y,mm_rc.x2-2,mm_rc.y2,1,clrWhite); \ 0000005C B30100EF SWI +435 493 DrawRoundedFrame(mm_rc.x2-3,mm_rc.y+pos+1,mm_rc.x2-1,mm_rc.y+pos+y2,0,0,0,clrWhite,clrWhite); \ 00000060 F200D6E1 LDRSH R0,[R6, #+2] \ 00000064 F460D6E1 LDRSH R6,[R6, #+4] \ 00000068 0410A0E1 MOV R1,R4 \ 0000006C 007089E0 ADD R7,R9,R0 \ 00000070 0800A0E1 MOV R0,R8 \ 00000074 01002DE9 PUSH {R0} \ 00000078 00012DE9 PUSH {R8} \ 0000007C 012046E2 SUB R2,R6,#+1 \ 00000080 0000A0E3 MOV R0,#+0 \ 00000084 01002DE9 PUSH {R0} \ 00000088 01002DE9 PUSH {R0} \ 0000008C 01002DE9 PUSH {R0} \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 ........ _BLF ??div32_a,??rA??div32_a \ 00000098 073081E0 ADD R3,R1,R7 \ 0000009C 011087E2 ADD R1,R7,#+1 \ 000000A0 030046E2 SUB R0,R6,#+3 \ 000000A4 500100EF SWI +336 494 } \ 000000A8 1CD08DE2 ADD SP,SP,#+28 \ 000000AC F083BDE8 POP {R4-R9,PC} ;; return \ In segment DATA_I, align 4, align-sorted \ mm_rc: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` \ 00000008 DS8 84 \ 0000005C REQUIRE `?` \ isAbout: \ 0000005C DS8 4 \ 00000060 REQUIRE `?` \ 00000060 DS8 84 \ 000000B4 REQUIRE `?` \ 000000B4 DS8 4 \ 000000B8 REQUIRE `?` \ 000000B8 DS8 4 \ 000000BC REQUIRE `?` \ startItem: \ 000000BC DS8 4 \ 000000C0 REQUIRE `?` \ x2_cb: \ 000000C0 DS8 4 \ 000000C4 REQUIRE `?` \ mm_itemFromDisp: \ 000000C4 DS8 4 \ 000000C8 REQUIRE `?` \ mm_curpos: \ 000000C8 DS8 4 \ 000000CC REQUIRE `?` \ mm_font: \ 000000CC DS8 4 \ 000000D0 REQUIRE `?` 495 496 int isLoadLangMenu=0; \ isLoadLangMenu: \ 000000D0 DS8 4 \ 000000D4 REQUIRE `?` 497 \ In segment CODE, align 4, keep-with-next 498 void MM_DrawList() 499 { \ MM_DrawList: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 500 int font_y;// = FontH(mm_font)+1; 501 if(icons[IS_ONLINE]->bitmap && icons[IS_ONLINE]->h > FontH(mm_font) ) \ 00000004 ........ LDR R6,??DataTable39 ;; icons \ 00000008 ........ LDR R4,??DataTable49 ;; mm_rc \ 0000000C 0CD04DE2 SUB SP,SP,#+12 \ 00000010 2C0096E5 LDR R0,[R6, #+44] \ 00000014 040090E5 LDR R0,[R0, #+4] \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0700000A BEQ ??MM_DrawList_0 \ 00000020 CC0094E5 LDR R0,[R4, #+204] \ 00000024 ........ _BLF FontH,??FontH??rA \ 00000028 2C1096E5 LDR R1,[R6, #+44] \ 0000002C 0120D1E5 LDRB R2,[R1, #+1] \ 00000030 020050E1 CMP R0,R2 502 { 503 font_y = icons[IS_ONLINE]->h-3; \ 00000034 035042B2 SUBLT R5,R2,#+3 504 x2_cb = font_y; \ 00000038 0500A0B1 MOVLT R0,R5 \ 0000003C 050000BA BLT ??MM_DrawList_1 505 } 506 else 507 { 508 font_y = FontH(mm_font)+1; \ ??MM_DrawList_0: \ 00000040 CC0094E5 LDR R0,[R4, #+204] \ 00000044 ........ _BLF FontH,??FontH??rA \ 00000048 015080E2 ADD R5,R0,#+1 509 x2_cb = icons[IS_ONLINE]->h-3; \ 0000004C 2C0096E5 LDR R0,[R6, #+44] \ 00000050 0100D0E5 LDRB R0,[R0, #+1] \ 00000054 030040E2 SUB R0,R0,#+3 \ ??MM_DrawList_1: \ 00000058 C00084E5 STR R0,[R4, #+192] 510 } 511 512 int scr_h=ScreenH()-1; \ 0000005C 898100EF SWI +33161 513 int scr_w=ScreenW()-1; \ 00000060 888100EF SWI +33160 514 // mm_itemFromDisp = sdiv(font_y,scr_h-CLIST_Y1-FontH(mm_font)-2)-1; 515 mm_itemFromDisp = sdiv(font_y,mm_rc.y2-mm_rc.y-2); \ 00000064 F600D4E1 LDRSH R0,[R4, #+6] \ 00000068 F210D4E1 LDRSH R1,[R4, #+2] 516 517 LockSched(); 518 519 int i=0; \ 0000006C 0060A0E3 MOV R6,#+0 \ 00000070 010040E0 SUB R0,R0,R1 \ 00000074 021040E2 SUB R1,R0,#+2 \ 00000078 0500A0E1 MOV R0,R5 \ 0000007C B80000EF SWI +184 \ 00000080 C40084E5 STR R0,[R4, #+196] \ 00000084 460100EF SWI +326 520 int start_y=0; 521 int start_x=x2_cb+8; \ 00000088 C01094E5 LDR R1,[R4, #+192] 522 523 char *s=malloc(32); \ 0000008C 2000A0E3 MOV R0,#+32 \ 00000090 081081E2 ADD R1,R1,#+8 \ 00000094 08108DE5 STR R1,[SP, #+8] \ 00000098 140000EF SWI +20 \ 0000009C 0070A0E1 MOV R7,R0 524 *s=0; \ 000000A0 0000A0E3 MOV R0,#+0 \ 000000A4 0000C7E5 STRB R0,[R7, #+0] 525 RECT rc; 526 int x2=0; \ 000000A8 0090A0E1 MOV R9,R0 527 while(i` \ 00000178 011040E2 SUB R1,R0,#+1 \ 0000017C BC0094E5 LDR R0,[R4, #+188] \ 00000180 002086E0 ADD R2,R6,R0 \ 00000184 F000DDE1 LDRSH R0,[SP, #+0] \ 00000188 030052E1 CMP R2,R3 \ 0000018C 4100001A BNE ??MM_DrawList_6 541 } 542 543 if(startItem+i==mm_curpos)//Если наш итем то выделяем 544 { 545 DrawRoundedFrame(rc.x,rc.y-1,rc.x2-5,rc.y2-2,0,0,0,MMCursorClr,MMCursorBGClr);//cursor \ 00000190 D8219FE5 LDR R2,??MM_DrawList_5+0xC ;; MMCursorBGClr \ 00000194 04002DE9 PUSH {R2} \ 00000198 D4219FE5 LDR R2,??MM_DrawList_5+0x10 ;; MMCursorClr \ 0000019C 04002DE9 PUSH {R2} \ 000001A0 0020A0E3 MOV R2,#+0 \ 000001A4 04002DE9 PUSH {R2} \ 000001A8 04002DE9 PUSH {R2} \ 000001AC 04002DE9 PUSH {R2} \ 000001B0 FA21DDE1 LDRSH R2,[SP, #+26] \ 000001B4 023042E2 SUB R3,R2,#+2 \ 000001B8 05204CE2 SUB R2,R12,#+5 \ 000001BC 500100EF SWI +336 546 547 if( isLoadLangMenu!=0 ? menutexts[startItem+i] : menutexts2[startItem+i] ) \ 000001C0 D02094E5 LDR R2,[R4, #+208] \ 000001C4 14D08DE2 ADD SP,SP,#+20 \ 000001C8 BC0094E5 LDR R0,[R4, #+188] \ 000001CC CCC094E5 LDR R12,[R4, #+204] \ 000001D0 000052E3 CMP R2,#+0 \ 000001D4 B8109415 LDRNE R1,[R4, #+184] \ 000001D8 000086E0 ADD R0,R6,R0 \ 000001DC 00E19117 LDRNE LR,[R1, +R0, LSL #+2] \ 000001E0 00018400 ADDEQ R0,R4,R0, LSL #+2 \ 000001E4 60E09005 LDREQ LR,[R0, #+96] \ 000001E8 F200DDE1 LDRSH R0,[SP, #+2] \ 000001EC 00005EE3 CMP LR,#+0 \ 000001F0 011040E2 SUB R1,R0,#+1 \ 000001F4 F400DDE1 LDRSH R0,[SP, #+4] \ 000001F8 093040E0 SUB R3,R0,R9 \ 000001FC F000DDE1 LDRSH R0,[SP, #+0] \ 00000200 030080E2 ADD R0,R0,#+3 \ 00000204 1200000A BEQ ??MM_DrawList_7 548 PrintText(rc.x+3,rc.y-1,(isLoadLangMenu!=0 ? menutexts[startItem+i] : menutexts2[startItem+i]),0,mm_font,1,0,1,0,rc.x2-x2);//item name \ 00000208 BCA094E5 LDR R10,[R4, #+188] \ 0000020C 000052E3 CMP R2,#+0 \ 00000210 B8209415 LDRNE R2,[R4, #+184] \ 00000214 0AA086E0 ADD R10,R6,R10 \ 00000218 0A219217 LDRNE R2,[R2, +R10, LSL #+2] \ 0000021C 0A218400 ADDEQ R2,R4,R10, LSL #+2 \ 00000220 60209205 LDREQ R2,[R2, #+96] \ 00000224 08002DE9 PUSH {R3} \ 00000228 0030A0E3 MOV R3,#+0 \ 0000022C 08002DE9 PUSH {R3} \ 00000230 0130A0E3 MOV R3,#+1 \ 00000234 08002DE9 PUSH {R3} \ 00000238 0030A0E3 MOV R3,#+0 \ 0000023C 08002DE9 PUSH {R3} \ 00000240 0130A0E3 MOV R3,#+1 \ 00000244 08002DE9 PUSH {R3} \ 00000248 00102DE9 PUSH {R12} \ 0000024C 0030A0E3 MOV R3,#+0 \ 00000250 090000EA B ??MM_DrawList_8 549 else 550 PrintText(rc.x+3,rc.y-1,"Ошибка!",0,mm_font,1,0,0,0,rc.x2-x2);//item name \ ??MM_DrawList_7: \ 00000254 08002DE9 PUSH {R3} \ 00000258 0020A0E3 MOV R2,#+0 \ 0000025C 04002DE9 PUSH {R2} \ 00000260 04002DE9 PUSH {R2} \ 00000264 04002DE9 PUSH {R2} \ 00000268 0030A0E3 MOV R3,#+0 \ 0000026C 0120A0E3 MOV R2,#+1 \ 00000270 04002DE9 PUSH {R2} \ 00000274 00102DE9 PUSH {R12} \ 00000278 0A20A0E1 MOV R2,R10 \ ??MM_DrawList_8: \ 0000027C ........ _BLF PrintText,??PrintText??rA \ 00000280 18D08DE2 ADD SP,SP,#+24 551 552 DrawMMScrollBar(startItem+i,MENU_ITEMS); \ 00000284 BC0094E5 LDR R0,[R4, #+188] \ 00000288 1510A0E3 MOV R1,#+21 \ 0000028C 000086E0 ADD R0,R6,R0 \ 00000290 ........ BL DrawMMScrollBar \ 00000294 240000EA B ??MM_DrawList_9 553 } \ ??MM_DrawList_6: \ 00000298 B8B094E5 LDR R11,[R4, #+184] \ 0000029C 09304CE0 SUB R3,R12,R9 \ 000002A0 02B19BE7 LDR R11,[R11, +R2, LSL #+2] \ 000002A4 CCC094E5 LDR R12,[R4, #+204] \ 000002A8 023043E2 SUB R3,R3,#+2 \ 000002AC 030080E2 ADD R0,R0,#+3 \ 000002B0 5EE0A0E3 MOV LR,#+94 \ 000002B4 40EF8EE3 ORR LR,LR,#0x100 \ 000002B8 00005BE3 CMP R11,#+0 \ 000002BC 0E00000A BEQ ??MM_DrawList_10 554 else 555 { 556 if(menutexts[startItem+i]) 557 PrintText(rc.x+3,rc.y-1,(isLoadLangMenu!=0 ? menutexts[startItem+i] : menutexts2[startItem+i]),0,mm_font,1,350,0,0,rc.x2-x2-2);//item name \ 000002C0 D0A094E5 LDR R10,[R4, #+208] \ 000002C4 00005AE3 CMP R10,#+0 \ 000002C8 02218400 ADDEQ R2,R4,R2, LSL #+2 \ 000002CC 60209205 LDREQ R2,[R2, #+96] \ 000002D0 08002DE9 PUSH {R3} \ 000002D4 0B20A011 MOVNE R2,R11 \ 000002D8 0030A0E3 MOV R3,#+0 \ 000002DC 08002DE9 PUSH {R3} \ 000002E0 08002DE9 PUSH {R3} \ 000002E4 00402DE9 PUSH {LR} \ 000002E8 0130A0E3 MOV R3,#+1 \ 000002EC 08002DE9 PUSH {R3} \ 000002F0 00102DE9 PUSH {R12} \ 000002F4 0030A0E3 MOV R3,#+0 \ 000002F8 090000EA B ??MM_DrawList_11 558 else 559 PrintText(rc.x+3,rc.y-1,"Ошибка!",0,mm_font,1,350,0,0,rc.x2-x2-2);//item name \ ??MM_DrawList_10: \ 000002FC 08002DE9 PUSH {R3} \ 00000300 0020A0E3 MOV R2,#+0 \ 00000304 04002DE9 PUSH {R2} \ 00000308 04002DE9 PUSH {R2} \ 0000030C 00402DE9 PUSH {LR} \ 00000310 0030A0E3 MOV R3,#+0 \ 00000314 0120A0E3 MOV R2,#+1 \ 00000318 04002DE9 PUSH {R2} \ 0000031C 00102DE9 PUSH {R12} \ 00000320 0A20A0E1 MOV R2,R10 \ ??MM_DrawList_11: \ 00000324 ........ _BLF PrintText,??PrintText??rA \ 00000328 18D08DE2 ADD SP,SP,#+24 560 } 561 562 DrawIcon(1,start_y+1,startItem+i); \ ??MM_DrawList_9: \ 0000032C BC0094E5 LDR R0,[R4, #+188] \ 00000330 011088E2 ADD R1,R8,#+1 \ 00000334 002086E0 ADD R2,R6,R0 \ 00000338 0100A0E3 MOV R0,#+1 \ 0000033C ........ BL DrawIcon 563 564 /* 565 if(menutexts[startItem+i]) 566 PrintField(rc.x+3,rc.y-1,menutexts[startItem+i],0,mm_font,1);//item name 567 else 568 PrintField(rc.x+3,rc.y-1,"Ошибка!",0,mm_font,1);//item name 569 */ 570 571 i++; 572 if(startItem+i >= MENU_ITEMS) break; \ 00000340 BC0094E5 LDR R0,[R4, #+188] \ 00000344 016086E2 ADD R6,R6,#+1 \ 00000348 000086E0 ADD R0,R6,R0 \ 0000034C 150050E3 CMP R0,#+21 \ 00000350 55FFFFBA BLT ??MM_DrawList_2 573 } 574 mfree(s); \ ??MM_DrawList_3: \ 00000354 0700A0E1 MOV R0,R7 \ 00000358 150000EF SWI +21 575 UnlockSched(); \ 0000035C 470100EF SWI +327 576 } \ 00000360 F78FBDE8 POP {R0-R2,R4-R11,PC} ;; return \ ??MM_DrawList_5: \ 00000364 25640000 DC8 "%d",+0 \ 00000368 ........ DC32 ShowNumbMenu \ 0000036C ........ DC32 `?` \ 00000370 ........ DC32 MMCursorBGClr \ 00000374 ........ DC32 MMCursorClr 577 578 // Управление курсором \ In segment CODE, align 4, keep-with-next 579 void MM_MoveUp(int i) 580 { 581 if(mm_curpos > mm_itemFromDisp + 2 ){ mm_curpos--; } \ MM_MoveUp: \ 00000000 ........ LDR R0,??DataTable54 ;; mm_rc \ 00000004 C81090E5 LDR R1,[R0, #+200] \ 00000008 C43090E5 LDR R3,[R0, #+196] \ 0000000C BC2090E5 LDR R2,[R0, #+188] \ 00000010 02C083E2 ADD R12,R3,#+2 \ 00000014 01005CE1 CMP R12,R1 \ 00000018 011041B2 SUBLT R1,R1,#+1 \ 0000001C 080000BA BLT ??MM_MoveUp_0 582 else 583 if(mm_curpos > 0){ mm_curpos--; if(startItem>0) startItem--; } \ 00000020 010051E3 CMP R1,#+1 \ 00000024 040000BA BLT ??MM_MoveUp_1 \ 00000028 011041E2 SUB R1,R1,#+1 \ 0000002C 010052E3 CMP R2,#+1 \ 00000030 030000BA BLT ??MM_MoveUp_0 \ 00000034 012042E2 SUB R2,R2,#+1 \ 00000038 010000EA B ??MM_MoveUp_0 584 else 585 { 586 mm_curpos=MENU_ITEMS-1; \ ??MM_MoveUp_1: \ 0000003C 1410A0E3 MOV R1,#+20 587 startItem=MENU_ITEMS-mm_itemFromDisp; \ 00000040 152063E2 RSB R2,R3,#+21 \ ??MM_MoveUp_0: \ 00000044 BC2080E5 STR R2,[R0, #+188] \ 00000048 C81080E5 STR R1,[R0, #+200] 588 } 589 } \ 0000004C 1EFF2FE1 BX LR ;; return 590 591 \ In segment CODE, align 4, keep-with-next 592 void MM_MoveDown(int i) 593 { 594 if(mm_curpos ` \ 0000000C CC0094E5 LDR R0,[R4, #+204] 624 625 char *s=malloc(256); 626 627 SetFontColor(clrRed,transparent,0); \ 00000010 28729FE5 LDR R7,??DrawAbout_0+0x4 ;; clrRed \ 00000014 ........ LDR R8,??DataTable46 ;; transparent \ 00000018 ........ _BLF FontH,??FontH??rA \ 0000001C 0060A0E1 MOV R6,R0 \ 00000020 888100EF SWI +33160 \ 00000024 081085E2 ADD R1,R5,#+8 \ 00000028 02002DE9 PUSH {R1} \ 0000002C 0510A0E1 MOV R1,R5 \ 00000030 02002DE9 PUSH {R1} \ 00000034 0010A0E3 MOV R1,#+0 \ 00000038 02002DE9 PUSH {R1} \ 0000003C 02002DE9 PUSH {R1} \ 00000040 02002DE9 PUSH {R1} \ 00000044 0C10A0E3 MOV R1,#+12 \ 00000048 910602E0 MUL R2,R1,R6 \ 0000004C 0210A0E3 MOV R1,#+2 \ 00000050 113082E2 ADD R3,R2,#+17 \ 00000054 022040E2 SUB R2,R0,#+2 \ 00000058 0200A0E3 MOV R0,#+2 \ 0000005C 500100EF SWI +336 \ 00000060 400FA0E3 MOV R0,#+256 \ 00000064 140000EF SWI +20 \ 00000068 0060A0E1 MOV R6,R0 \ 0000006C 0020A0E3 MOV R2,#+0 \ 00000070 0810A0E1 MOV R1,R8 \ 00000074 0700A0E1 MOV R0,R7 \ 00000078 ........ _BLF SetFontColor,??SetFontColor??rA 628 sprintf(s,"NATICQ v2.0\nRevisiov 2058"); \ 0000007C 881085E2 ADD R1,R5,#+136 \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 160000EF SWI +22 629 PrintText((ScreenW()-x)/2,y+15,s,1,mm_font,1,1,0,0,ScreenW()-x);//item name \ 00000088 888100EF SWI +33160 \ 0000008C 0090A0E1 MOV R9,R0 \ 00000090 888100EF SWI +33160 \ 00000094 021049E2 SUB R1,R9,#+2 \ 00000098 02002DE9 PUSH {R1} \ 0000009C 020040E2 SUB R0,R0,#+2 \ 000000A0 0130A0E3 MOV R3,#+1 \ 000000A4 0620A0E1 MOV R2,R6 \ 000000A8 0010A0E3 MOV R1,#+0 \ 000000AC 02002DE9 PUSH {R1} \ 000000B0 02002DE9 PUSH {R1} \ 000000B4 A00F80E0 ADD R0,R0,R0, LSR #+31 \ 000000B8 C000A0E1 ASR R0,R0,#+1 \ 000000BC 0110A0E3 MOV R1,#+1 \ 000000C0 02002DE9 PUSH {R1} \ 000000C4 02002DE9 PUSH {R1} \ 000000C8 CC1094E5 LDR R1,[R4, #+204] \ 000000CC 02002DE9 PUSH {R1} \ 000000D0 1110A0E3 MOV R1,#+17 \ 000000D4 ........ _BLF PrintText,??PrintText??rA \ 000000D8 2CD08DE2 ADD SP,SP,#+44 630 #ifdef ELKA 631 int n=GetNLines((ScreenW()-x)/2,y+15)+1; 632 #else 633 int n=GetNLines((ScreenW()-x)/2,y+15); \ 000000DC 888100EF SWI +33160 \ 000000E0 020040E2 SUB R0,R0,#+2 \ 000000E4 1110A0E3 MOV R1,#+17 \ 000000E8 A00F80E0 ADD R0,R0,R0, LSR #+31 \ 000000EC C000A0E1 ASR R0,R0,#+1 \ 000000F0 ........ _BLF GetNLines,??GetNLines??rA \ 000000F4 0090A0E1 MOV R9,R0 634 #endif 635 sprintf(s,LG_COPYRIGHT); \ 000000F8 101085E2 ADD R1,R5,#+16 \ 000000FC 0600A0E1 MOV R0,R6 \ 00000100 160000EF SWI +22 636 SetFontColor(clrWhite,transparent,0); \ 00000104 ........ LDR R0,??DataTable47 ;; clrWhite \ 00000108 0020A0E3 MOV R2,#+0 \ 0000010C 0810A0E1 MOV R1,R8 \ 00000110 ........ _BLF SetFontColor,??SetFontColor??rA 637 PrintText((ScreenW()-x)/2,y+25+(FontH(mm_font)*n),s,1,mm_font,1,1,0,0,ScreenW()-x);//item name \ 00000114 888100EF SWI +33160 \ 00000118 00A0A0E1 MOV R10,R0 \ 0000011C CC0094E5 LDR R0,[R4, #+204] \ 00000120 ........ _BLF FontH,??FontH??rA \ 00000124 00B0A0E1 MOV R11,R0 \ 00000128 888100EF SWI +33160 \ 0000012C 02104AE2 SUB R1,R10,#+2 \ 00000130 02002DE9 PUSH {R1} \ 00000134 020040E2 SUB R0,R0,#+2 \ 00000138 0130A0E3 MOV R3,#+1 \ 0000013C 0620A0E1 MOV R2,R6 \ 00000140 0010A0E3 MOV R1,#+0 \ 00000144 02002DE9 PUSH {R1} \ 00000148 02002DE9 PUSH {R1} \ 0000014C A00F80E0 ADD R0,R0,R0, LSR #+31 \ 00000150 C000A0E1 ASR R0,R0,#+1 \ 00000154 0110A0E3 MOV R1,#+1 \ 00000158 02002DE9 PUSH {R1} \ 0000015C 02002DE9 PUSH {R1} \ 00000160 CC1094E5 LDR R1,[R4, #+204] \ 00000164 02002DE9 PUSH {R1} \ 00000168 990B01E0 MUL R1,R9,R11 \ 0000016C 1B1081E2 ADD R1,R1,#+27 \ 00000170 ........ _BLF PrintText,??PrintText??rA 638 639 SetFontColor(clrRed,transparent,0); \ 00000174 0020A0E3 MOV R2,#+0 \ 00000178 0810A0E1 MOV R1,R8 \ 0000017C 0700A0E1 MOV R0,R7 \ 00000180 ........ _BLF SetFontColor,??SetFontColor??rA 640 sprintf(s,"NATICQ v3.0\n(m)evilfox,kluchnik\nCompile \n%s at %s",__DATE__,__TIME__); \ 00000184 7C3085E2 ADD R3,R5,#+124 \ 00000188 702085E2 ADD R2,R5,#+112 \ 0000018C 3C1085E2 ADD R1,R5,#+60 \ 00000190 0600A0E1 MOV R0,R6 \ 00000194 160000EF SWI +22 641 #ifdef ELKA 642 n+=GetNLines((ScreenW()-x)/2,y+25+(FontH(mm_font)*n)); 643 #else 644 n+=GetNLines((ScreenW()-x)/2,y+25+(FontH(mm_font)*n))-1; \ 00000198 CC0094E5 LDR R0,[R4, #+204] \ 0000019C ........ _BLF FontH,??FontH??rA \ 000001A0 0050A0E1 MOV R5,R0 \ 000001A4 888100EF SWI +33160 \ 000001A8 990501E0 MUL R1,R9,R5 \ 000001AC 020040E2 SUB R0,R0,#+2 \ 000001B0 1B1081E2 ADD R1,R1,#+27 \ 000001B4 A00F80E0 ADD R0,R0,R0, LSR #+31 \ 000001B8 C000A0E1 ASR R0,R0,#+1 \ 000001BC ........ _BLF GetNLines,??GetNLines??rA \ 000001C0 010040E2 SUB R0,R0,#+1 \ 000001C4 095080E0 ADD R5,R0,R9 645 #endif 646 PrintText((ScreenW()-x)/2,y+30+(FontH(mm_font)*(n+1)),s,1,mm_font,1,1,0,0,ScreenW()-x);//item name \ 000001C8 888100EF SWI +33160 \ 000001CC 0080A0E1 MOV R8,R0 \ 000001D0 CC0094E5 LDR R0,[R4, #+204] \ 000001D4 ........ _BLF FontH,??FontH??rA \ 000001D8 0070A0E1 MOV R7,R0 \ 000001DC 888100EF SWI +33160 \ 000001E0 021048E2 SUB R1,R8,#+2 \ 000001E4 02002DE9 PUSH {R1} \ 000001E8 020040E2 SUB R0,R0,#+2 \ 000001EC 0130A0E3 MOV R3,#+1 \ 000001F0 0620A0E1 MOV R2,R6 \ 000001F4 0010A0E3 MOV R1,#+0 \ 000001F8 02002DE9 PUSH {R1} \ 000001FC 02002DE9 PUSH {R1} \ 00000200 A00F80E0 ADD R0,R0,R0, LSR #+31 \ 00000204 C000A0E1 ASR R0,R0,#+1 \ 00000208 0110A0E3 MOV R1,#+1 \ 0000020C 02002DE9 PUSH {R1} \ 00000210 02002DE9 PUSH {R1} \ 00000214 CC1094E5 LDR R1,[R4, #+204] \ 00000218 02002DE9 PUSH {R1} \ 0000021C 011085E2 ADD R1,R5,#+1 \ 00000220 910704E0 MUL R4,R1,R7 \ 00000224 201084E2 ADD R1,R4,#+32 \ 00000228 ........ _BLF PrintText,??PrintText??rA \ 0000022C 30D08DE2 ADD SP,SP,#+48 647 mfree(s); \ 00000230 0600A0E1 MOV R0,R6 \ 00000234 150000EF SWI +21 648 649 } \ 00000238 F08FBDE8 POP {R4-R11,PC} ;; return \ ??DrawAbout_0: \ 0000023C ........ DC32 `?` \ 00000240 ........ DC32 clrRed 650 \ In segment CODE, align 4, keep-with-next 651 void MM_OnRedraw(MAIN_GUI *data) 652 { \ MM_OnRedraw: \ 00000000 10402DE9 PUSH {R4,LR} 653 LockSched(); \ 00000004 460100EF SWI +326 654 if(screen.bitmap) DrwImage(&screen,0,hy+2); \ 00000008 84009FE5 LDR R0,??MM_OnRedraw_0 ;; screen \ 0000000C 041090E5 LDR R1,[R0, #+4] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 0400000A BEQ ??MM_OnRedraw_1 \ 00000018 78109FE5 LDR R1,??MM_OnRedraw_0+0x4 ;; hy \ 0000001C 001091E5 LDR R1,[R1, #+0] \ 00000020 022081E2 ADD R2,R1,#+2 \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 ........ _BLF DrwImage,??DrwImage??rA 655 // DrawRoundedFrame(0,hy+2,ScreenW()-1,ScreenH()-1,0,0,0,"\x00\x00\x00\x15","\x00\x00\x00\x15"); 656 DrawRoundedFrame(mm_rc.x,mm_rc.y-2,mm_rc.x2,mm_rc.y2,0,0,0,MMBackgrBordClr,MMBackgrClr); \ ??MM_OnRedraw_1: \ 0000002C 68009FE5 LDR R0,??MM_OnRedraw_0+0x8 ;; MMBackgrClr \ 00000030 ........ LDR R4,??DataTable49 ;; mm_rc \ 00000034 01002DE9 PUSH {R0} \ 00000038 60009FE5 LDR R0,??MM_OnRedraw_0+0xC ;; MMBackgrBordClr \ 0000003C 01002DE9 PUSH {R0} \ 00000040 0000A0E3 MOV R0,#+0 \ 00000044 01002DE9 PUSH {R0} \ 00000048 01002DE9 PUSH {R0} \ 0000004C 01002DE9 PUSH {R0} \ 00000050 F630D4E1 LDRSH R3,[R4, #+6] \ 00000054 F420D4E1 LDRSH R2,[R4, #+4] \ 00000058 F200D4E1 LDRSH R0,[R4, #+2] \ 0000005C 021040E2 SUB R1,R0,#+2 \ 00000060 F000D4E1 LDRSH R0,[R4, #+0] \ 00000064 500100EF SWI +336 657 UnlockSched(); \ 00000068 470100EF SWI +327 658 DrawSoftKeys(LG_SELECT,LG_CLOSE); \ 0000006C 30009FE5 LDR R0,??MM_OnRedraw_0+0x10 ;; `?` \ 00000070 081080E2 ADD R1,R0,#+8 \ 00000074 ........ _BLF DrawSoftKeys,??DrawSoftKeys??rA 659 MM_DrawList(); \ 00000078 ........ BL MM_DrawList 660 if(isAbout) DrawAbout(); \ 0000007C 5C0094E5 LDR R0,[R4, #+92] \ 00000080 14D08DE2 ADD SP,SP,#+20 \ 00000084 000050E3 CMP R0,#+0 \ 00000088 1080BD08 POPEQ {R4,PC} \ 0000008C ........ BL DrawAbout 661 } \ 00000090 1080BDE8 POP {R4,PC} ;; return \ ??MM_OnRedraw_0: \ 00000094 ........ DC32 screen \ 00000098 ........ DC32 hy \ 0000009C ........ DC32 MMBackgrClr \ 000000A0 ........ DC32 MMBackgrBordClr \ 000000A4 ........ DC32 `?` 662 /* 663 664 static void do_logwrite(char *text) 665 { 666 int hFile; 667 unsigned int io_error = 0; 668 hFile = fopen("4:\\nat.txt",A_ReadWrite + A_Create + A_Append,P_READ+P_WRITE, &io_error); 669 if(hFile!=-1) 670 { 671 fwrite(hFile, text, strlen(text), &io_error); 672 fwrite(hFile, "\r\n", 2, &io_error); 673 fclose(hFile, &io_error); 674 } 675 else 676 ShowMSG(1,(int)"Error!"); 677 // mfree(text); 678 } 679 */ \ In segment DATA_Z, align 4, align-sorted 680 int one_use=0; \ one_use: \ 00000000 DS8 4 681 extern int shot_soft; \ In segment CODE, align 4, keep-with-next 682 void MM_onCreate(MAIN_GUI *data, void *(*malloc_adr)(int)) 683 { \ MM_onCreate: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 684 #ifdef ELKA 685 #ifndef ICONBAR 686 DisableIconBar(1); 687 #endif 688 #endif 689 isLoadLangMenu=LoadMenuLang(); \ 00000004 ........ LDR R5,??DataTable49 ;; mm_rc 690 if(SOFT_MODE==2) shot_soft=0; 691 mm_font=clfont; \ 00000008 A0709FE5 LDR R7,??MM_onCreate_0 ;; clfont \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 ........ BL LoadMenuLang \ 00000014 D00085E5 STR R0,[R5, #+208] \ 00000018 ........ LDR R0,??DataTable52 ;; SOFT_MODE \ 0000001C 0060A0E3 MOV R6,#+0 \ 00000020 000090E5 LDR R0,[R0, #+0] \ 00000024 020050E3 CMP R0,#+2 \ 00000028 ........ LDREQ R0,??DataTable53 ;; shot_soft \ 0000002C 00608005 STREQ R6,[R0, #+0] \ 00000030 000097E5 LDR R0,[R7, #+0] \ 00000034 CC0085E5 STR R0,[R5, #+204] 692 DoScreen(); \ 00000038 ........ _BLF DoScreen,??DoScreen??rA 693 mm_rc = MMRect; \ 0000003C 70009FE5 LDR R0,??MM_onCreate_0+0x4 ;; MMRect \ 00000040 B010D0E1 LDRH R1,[R0, #0] \ 00000044 B010C5E1 STRH R1,[R5, #+0] \ 00000048 B210D0E1 LDRH R1,[R0, #+2] \ 0000004C B210C5E1 STRH R1,[R5, #+2] \ 00000050 B410D0E1 LDRH R1,[R0, #+4] \ 00000054 B410C5E1 STRH R1,[R5, #+4] \ 00000058 B610D0E1 LDRH R1,[R0, #+6] \ 0000005C B610C5E1 STRH R1,[R5, #+6] 694 695 int y2 = mm_rc.y2-mm_rc.y; \ 00000060 F600D5E1 LDRSH R0,[R5, #+6] \ 00000064 F210D5E1 LDRSH R1,[R5, #+2] \ 00000068 018040E0 SUB R8,R0,R1 696 697 int ii=sdiv( (FontH(clfont)+1) ,y2 )+1; \ 0000006C 000097E5 LDR R0,[R7, #+0] \ 00000070 ........ _BLF FontH,??FontH??rA \ 00000074 0810A0E1 MOV R1,R8 \ 00000078 010080E2 ADD R0,R0,#+1 \ 0000007C B80000EF SWI +184 \ 00000080 018080E2 ADD R8,R0,#+1 698 mm_rc.y2=mm_rc.y + (FontH(clfont)*ii); \ 00000084 000097E5 LDR R0,[R7, #+0] \ 00000088 ........ _BLF FontH,??FontH??rA \ 0000008C F210D5E1 LDRSH R1,[R5, #+2] 699 700 isAbout=0; \ 00000090 5C6085E5 STR R6,[R5, #+92] \ 00000094 981020E0 MLA R0,R8,R0,R1 \ 00000098 B600C5E1 STRH R0,[R5, #+6] 701 SetCanvasFlag(1); \ 0000009C 0100A0E3 MOV R0,#+1 \ 000000A0 ........ _BLF SetCanvasFlag,??SetCanvasFlag??rA 702 data->gui.state=1; \ 000000A4 0100A0E3 MOV R0,#+1 \ 000000A8 0C00C4E5 STRB R0,[R4, #+12] 703 } \ 000000AC F081BDE8 POP {R4-R8,PC} ;; return \ ??MM_onCreate_0: \ 000000B0 ........ DC32 clfont \ 000000B4 ........ DC32 MMRect 704 \ In segment CODE, align 4, keep-with-next 705 void MM_onClose(MAIN_GUI *data, void (*mfree_adr)(void *)) 706 { \ MM_onClose: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 707 FreeMenu(); \ 00000008 ........ BL FreeMenu 708 if(SOFT_MODE==2) shot_soft=0; \ 0000000C ........ LDR R0,??DataTable52 ;; SOFT_MODE \ 00000010 0050A0E3 MOV R5,#+0 \ 00000014 000090E5 LDR R0,[R0, #+0] \ 00000018 020050E3 CMP R0,#+2 \ 0000001C ........ LDREQ R0,??DataTable53 ;; shot_soft \ 00000020 00508005 STREQ R5,[R0, #+0] 709 mfree(screen.bitmap); \ 00000024 0C009FE5 LDR R0,??MM_onClose_0 ;; screen + 4 \ 00000028 000090E5 LDR R0,[R0, #+0] \ 0000002C 150000EF SWI +21 710 data->gui.state=0; \ 00000030 0C50C4E5 STRB R5,[R4, #+12] 711 } \ 00000034 3080BDE8 POP {R4,R5,PC} ;; return \ ??MM_onClose_0: \ 00000038 ........ DC32 screen + 4 712 \ In segment CODE, align 4, keep-with-next 713 void MM_onFocus(MAIN_GUI *data, void *(*malloc_adr)(int), void (*mfree_adr)(void *)) 714 { \ MM_onFocus: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 715 #ifdef ELKA 716 #ifndef ICONBAR 717 DisableIconBar(1); 718 #endif 719 #endif 720 DrawHeader(); \ 00000008 ........ _BLF DrawHeader,??DrawHeader??rA 721 //DrawSoftKeys(LG_SELECT,LG_CLOSE);//рисуем софты и фоткаем их ;) 722 // DrawRoundedFrame(0,hy+2,ScreenW()-1,ScreenH()-1,0,0,0,"\x00\x00\x00\x15","\x00\x00\x00\x15"); 723 724 SetCanvasFlag(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 ........ _BLF SetCanvasFlag,??SetCanvasFlag??rA 725 data->gui.state=2; \ 00000014 0200A0E3 MOV R0,#+2 \ 00000018 0C00C4E5 STRB R0,[R4, #+12] 726 DisableIDLETMR(); \ 0000001C 7F0100EF SWI +383 727 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 728 \ In segment CODE, align 4, keep-with-next 729 void MM_onUnfocus(MAIN_GUI *data, void (*mfree_adr)(void *)) 730 { 731 if (data->gui.state!=2) return; \ MM_onUnfocus: \ 00000000 0C10D0E5 LDRB R1,[R0, #+12] \ 00000004 020051E3 CMP R1,#+2 732 data->gui.state=1; \ 00000008 0110A003 MOVEQ R1,#+1 \ 0000000C 0C10C005 STRBEQ R1,[R0, #+12] 733 } \ 00000010 1EFF2FE1 BX LR ;; return 734 \ In segment CODE, align 4, keep-with-next 735 int MM_OnKey(MAIN_GUI *data, GUI_MSG *msg) 736 { \ MM_OnKey: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0140A0E1 MOV R4,R1 737 DirectRedrawGUI(); 738 int k=msg->gbsmsg->submess; 739 740 if (msg->gbsmsg->msg==KEY_DOWN || msg->gbsmsg->msg==LONG_PRESS) \ 00000008 0070A0E3 MOV R7,#+0 \ 0000000C 9380A0E3 MOV R8,#+147 \ 00000010 3F0100EF SWI +319 \ 00000014 045094E5 LDR R5,[R4, #+4] \ 00000018 ........ LDR R4,??DataTable54 ;; mm_rc \ 0000001C 040095E5 LDR R0,[R5, #+4] \ 00000020 086095E5 LDR R6,[R5, #+8] \ 00000024 408F88E3 ORR R8,R8,#0x100 \ 00000028 080050E1 CMP R0,R8 \ 0000002C 02108812 ADDNE R1,R8,#+2 \ 00000030 01005011 CMPNE R0,R1 \ 00000034 0B00001A BNE ??MM_OnKey_0 741 { 742 switch(k) \ 00000038 040056E2 SUBS R0,R6,#+4 \ 0000003C 08005012 SUBSNE R0,R0,#+8 \ 00000040 1700000A BEQ ??MM_OnKey_1 \ 00000044 2F0050E2 SUBS R0,R0,#+47 \ 00000048 0400000A BEQ ??MM_OnKey_2 \ 0000004C 010050E2 SUBS R0,R0,#+1 \ 00000050 1000000A BEQ ??MM_OnKey_3 \ 00000054 010050E2 SUBS R0,R0,#+1 \ 00000058 1100000A BEQ ??MM_OnKey_1 \ 0000005C 010000EA B ??MM_OnKey_0 743 { 744 case UP_BUTTON: MM_MoveUp(0); break; \ ??MM_OnKey_2: \ 00000060 0000A0E3 MOV R0,#+0 \ 00000064 ........ BL MM_MoveUp 745 case DOWN_BUTTON: MM_MoveDown(0); break; 746 case LEFT_BUTTON: case RIGHT_SOFT:case RED_BUTTON: if(isAbout) isAbout=0; else return (1); 747 // case ENTER_BUTTON: case LEFT_SOFT: ((void (*)(void))(menuprocs[mm_curpos]))(); REDRAW(); break; 748 } 749 } 750 751 if (msg->gbsmsg->msg==KEY_DOWN) \ ??MM_OnKey_0: \ 00000068 040095E5 LDR R0,[R5, #+4] \ 0000006C 080050E1 CMP R0,R8 \ 00000070 2600001A BNE ??MM_OnKey_4 752 { 753 switch(k) \ 00000074 010056E2 SUBS R0,R6,#+1 \ 00000078 19005012 SUBSNE R0,R0,#+25 \ 0000007C 24005012 SUBSNE R0,R0,#+36 \ 00000080 1200001A BNE ??MM_OnKey_5 754 { 755 case ENTER_BUTTON: case LEFT_SOFT: case RIGHT_BUTTON: 756 if(isAbout) \ 00000084 5C0094E5 LDR R0,[R4, #+92] \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 0A00000A BEQ ??MM_OnKey_6 757 isAbout=0; \ 00000090 5C7084E5 STR R7,[R4, #+92] \ 00000094 0C0000EA B ??MM_OnKey_7 \ ??MM_OnKey_3: \ 00000098 0000A0E3 MOV R0,#+0 \ 0000009C ........ BL MM_MoveDown \ 000000A0 F0FFFFEA B ??MM_OnKey_0 \ ??MM_OnKey_1: \ 000000A4 5C0094E5 LDR R0,[R4, #+92] \ 000000A8 000050E3 CMP R0,#+0 \ 000000AC 5C708415 STRNE R7,[R4, #+92] \ 000000B0 ECFFFF1A BNE ??MM_OnKey_0 \ 000000B4 0100A0E3 MOV R0,#+1 \ 000000B8 F081BDE8 POP {R4-R8,PC} 758 else 759 ((void (*)(void))(menuprocs[mm_curpos]))(); \ ??MM_OnKey_6: \ 000000BC C80094E5 LDR R0,[R4, #+200] \ 000000C0 000184E0 ADD R0,R4,R0, LSL #+2 \ 000000C4 080090E5 LDR R0,[R0, #+8] \ 000000C8 30FF2FE1 BLX R0 760 761 REDRAW(); \ ??MM_OnKey_7: \ 000000CC 720100EF SWI +370 762 break; 763 } 764 765 if(k>='1' && k<= '9'){ mm_curpos=(k-'1'); ((void (*)(void))(menuprocs[mm_curpos]))(); REDRAW();} \ ??MM_OnKey_5: \ 000000D0 310056E3 CMP R6,#+49 \ 000000D4 070000BA BLT ??MM_OnKey_8 \ 000000D8 3A0056E3 CMP R6,#+58 \ 000000DC 0B0000AA BGE ??MM_OnKey_4 \ 000000E0 310046E2 SUB R0,R6,#+49 \ 000000E4 C80084E5 STR R0,[R4, #+200] \ 000000E8 000184E0 ADD R0,R4,R0, LSL #+2 \ 000000EC 080090E5 LDR R0,[R0, #+8] \ 000000F0 30FF2FE1 BLX R0 \ 000000F4 040000EA B ??MM_OnKey_9 766 if(k=='0'){ mm_curpos=9; ((void (*)(void))(menuprocs[mm_curpos]))(); REDRAW();} \ ??MM_OnKey_8: \ 000000F8 300056E3 CMP R6,#+48 \ 000000FC 0300001A BNE ??MM_OnKey_4 \ 00000100 0900A0E3 MOV R0,#+9 \ 00000104 C80084E5 STR R0,[R4, #+200] \ 00000108 ........ BL ChangePINGMode \ ??MM_OnKey_9: \ 0000010C 720100EF SWI +370 767 } 768 769 return(0); \ ??MM_OnKey_4: \ 00000110 0000A0E3 MOV R0,#+0 \ 00000114 F081BDE8 POP {R4-R8,PC} ;; return 770 } 771 772 extern void kill_data(void *p, void (*func_p)(void *)); 773 \ In segment CODE, align 4, keep-with-next 774 int MM_method8(void){return(0);} \ MM_method8: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return \ In segment CODE, align 4, keep-with-next 775 int MM_method9(void){return(0);} \ MM_method9: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 776 \ In segment DATA_C, align 4, align-sorted 777 static const void * const gui_methods_2[11]={ \ gui_methods_2: \ 00000000 ............ DC32 MM_OnRedraw, MM_onCreate, MM_onClose, MM_onFocus, MM_onUnfocus \ ............ \ ............ \ .... \ 00000014 ........0000 DC32 MM_OnKey, 0H, kill_data, MM_method8, MM_method9, 0H \ 0000........ \ ............ \ ....00000000 778 (void *)MM_OnRedraw, 779 (void *)MM_onCreate, 780 (void *)MM_onClose, 781 (void *)MM_onFocus, 782 (void *)MM_onUnfocus, 783 (void *)MM_OnKey, 784 0, 785 (void *)kill_data, 786 (void *)MM_method8, 787 (void *)MM_method9, 788 0 789 }; 790 791 const RECT MM_Canvas={0,0,0,0}; \ MM_Canvas: \ 0000002C 000000000000 DC16 0, 0, 0, 0 \ 0000 792 \ In segment CODE, align 4, keep-with-next 793 void CreateMainMenu() 794 { \ CreateMainMenu: \ 00000000 10402DE9 PUSH {R4,LR} 795 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); \ 00000004 4000A0E3 MOV R0,#+64 \ 00000008 140000EF SWI +20 \ 0000000C 0040A0E1 MOV R4,R0 796 zeromem(main_gui,sizeof(MAIN_GUI)); \ 00000010 4010A0E3 MOV R1,#+64 \ 00000014 1D0100EF SWI +285 797 main_gui->gui.canvas=(void *)(&MM_Canvas); \ 00000018 24009FE5 LDR R0,??CreateMainMenu_0 ;; gui_methods_2 \ 0000001C 2C1080E2 ADD R1,R0,#+44 \ 00000020 001084E5 STR R1,[R4, #+0] 798 main_gui->gui.methods=(void *)gui_methods_2; \ 00000024 040084E5 STR R0,[R4, #+4] 799 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); \ 00000028 158000EF SWI +32789 \ 0000002C 200084E5 STR R0,[R4, #+32] 800 //patch_rect((RECT*)&Canvas,0,YDISP,ScreenW()-1,ScreenH()-1); 801 MainMenu_ID=CreateGUI(main_gui); \ 00000030 0400A0E1 MOV R0,R4 \ 00000034 370100EF SWI +311 \ 00000038 08109FE5 LDR R1,??CreateMainMenu_0+0x4 ;; MainMenu_ID \ 0000003C 000081E5 STR R0,[R1, #+0] 802 } \ 00000040 1080BDE8 POP {R4,PC} ;; return \ ??CreateMainMenu_0: \ 00000044 ........ DC32 gui_methods_2 \ 00000048 ........ DC32 MainMenu_ID \ In segment CODE, align 4, keep-with-next \ ??DataTable21: \ 00000000 ........ DC32 WriteDefSettings \ In segment CODE, align 4, keep-with-next \ ??DataTable25: \ 00000000 ........ DC32 CurrentStatus \ In segment CODE, align 4, keep-with-next \ ??DataTable26: \ 00000000 ........ DC32 away_m \ In segment CODE, align 4, keep-with-next \ ??DataTable27: \ 00000000 ........ DC32 Is_Vibra_Enabled \ In segment CODE, align 4, keep-with-next \ ??DataTable28: \ 00000000 ........ DC32 Is_Sounds_Enabled \ In segment CODE, align 4, keep-with-next \ ??DataTable29: \ 00000000 ........ DC32 Is_INC_On \ In segment CODE, align 4, keep-with-next \ ??DataTable30: \ 00000000 ........ DC32 Is_Double_Vibra_On \ In segment CODE, align 4, keep-with-next \ ??DataTable31: \ 00000000 ........ DC32 Is_ILU_On \ In segment CODE, align 4, keep-with-next \ ??DataTable32: \ 00000000 ........ DC32 Is_PING_On \ In segment CODE, align 4, keep-with-next \ ??DataTable33: \ 00000000 ........ DC32 Is_Show_Offline \ In segment CODE, align 4, keep-with-next \ ??DataTable34: \ 00000000 ........ DC32 Is_Show_Groups \ In segment CODE, align 4, keep-with-next \ ??DataTable35: \ 00000000 ........ DC32 IsActiveUp \ In segment CODE, align 4, keep-with-next \ ??DataTable36: \ 00000000 ........ DC32 Is_Id3tag_Enabled \ In segment CODE, align 4, keep-with-next \ ??DataTable39: \ 00000000 ........ DC32 icons \ In segment CODE, align 4, keep-with-next \ ??DataTable46: \ 00000000 ........ DC32 transparent \ In segment CODE, align 4, keep-with-next \ ??DataTable47: \ 00000000 ........ DC32 clrWhite \ In segment CODE, align 4, keep-with-next \ ??DataTable49: \ 00000000 ........ DC32 mm_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable52: \ 00000000 ........ DC32 SOFT_MODE \ In segment CODE, align 4, keep-with-next \ ??DataTable53: \ 00000000 ........ DC32 shot_soft \ In segment CODE, align 4, keep-with-next \ ??DataTable54: \ 00000000 ........ DC32 mm_rc \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 00000008 ............ DC32 CreateSCMenu, CreateXSMenu, CreateManageCLMenu, AutoAwayMSG \ ............ \ ........ \ 00000018 ............ DC32 ChangeVibraMode, ChangeSoundMode, ChangeINCMode, ChangeDoubleVibra \ ............ \ ........ \ 00000028 ............ DC32 ChangeILUMode, ChangePINGMode, ChangeShowOfflineMode \ ............ \ 00000034 ............ DC32 ChangeShowGroupsMode, EditConfig, EditConfigMod, Disconnect \ ............ \ ........ \ 00000044 ............ DC32 SaveCL, PingToServer, AboutDlg, ChangeActiveUp, CreateLogs \ ............ \ ............ \ .... \ 00000058 ........ DC32 ChangeId3tagMode \ `?`: \ 0000005C 00000000 DC32 0 \ `?`: \ 00000060 ........ DC32 `?` \ 00000064 ........ DC32 `?` \ 00000068 ........ DC32 `?` \ 00000090 ........ DC32 `?` \ 000000A4 ........ DC32 `?` \ 000000A8 ........ DC32 `?` \ `?`: \ 000000B4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000B8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000BC 00000000 DC32 0 \ `?`: \ 000000C0 0A000000 DC32 10 \ `?`: \ 000000C4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000C8 00000000 DC32 0 \ `?`: \ 000000CC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000D0 00000000 DC32 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CFE8EDE300 DC8 "\317\350\355\343" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CEE120FDEBFC DC8 "\316\341 \375\353\374\364\345" \ F4E500 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 D0E5E6E8EC20 DC8 "\320\345\346\350\354 Id3tag" \ 496433746167 \ 00 \ 0000000D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5C6C616E676D DC8 "\\langmenu.txt" \ 656E752E7478 \ 7400 \ 0000000E 0000 DC8 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 256400 DC8 "%d" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CEF8E8E1EAE0 DC8 "\316\370\350\341\352\340!" \ 2100 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 FFFFFF4500 DC8 "\377\377\377E" \ 00000005 000000 DC8 0, 0, 0 \ 00000008 0000004500 DC8 0, 0, 0, 45H, 0 \ 0000000D 000000 DC8 0, 0, 0 \ 00000010 284329206279 DC8 "(C) by Rst7/CBSIE\012Kren,Kibab,Shadow,Seklth" \ 20527374372F \ 43425349450A \ 4B72656E2C4B \ 696261622C53 \ 6861646F772C \ 53656B6C7468 \ 00 \ 0000003B 00 DC8 0 \ 0000003C 4E4154494351 DC8 "NATICQ v3.0\012(m)evilfox,kluchnik\012Compile \012%s at %s" \ 2076332E300A \ 286D29657669 \ 6C666F782C6B \ 6C7563686E69 \ 6B0A436F6D70 \ 696C65200A25 \ 732061742025 \ 7300 \ 0000006E 0000 DC8 0, 0 \ 00000070 536570203330 DC8 "Sep 30 2008" \ 203230303800 \ 0000007C 32323A33353A DC8 "22:35:49" \ 343900 \ 00000085 000000 DC8 0, 0, 0 \ 00000088 4E4154494351 DC8 "NATICQ v2.0\012Revisiov 2058" \ 2076322E300A \ 526576697369 \ 6F7620323035 \ 3800 \ 000000A2 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C2FBE1EEF000 DC8 "\302\373\341\356\360" \ 00000006 0000 DC8 0, 0 \ 00000008 C7E0EAF0FBF2 DC8 "\307\340\352\360\373\362\374" \ FC00 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 D1F2E0F2F3F1 DC8 "\321\362\340\362\363\361" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 582DD1F2E0F2 DC8 "X-\321\362\340\362\363\361" \ F3F100 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C3F0F3EFEFFB DC8 "\303\360\363\357\357\373" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `? 212 ? 8 ? 12 ? 16 ? 16 ? 3 ? 8 ? 164 ? 16 ? 8 ? 12 ? 8 ?