############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 07/Apr/2008 10:53:10 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\mainmenu.c # # Command line = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\mainmenu.c -D # # NEWSGOLD -D ELKA -D UIN_WRITE -D kluchnik # # --preprocess D:\Pasha\elf\_MY_PROJECT_\naticq_mod\kl # # uchnik\List\ -lC D:\Pasha\elf\_MY_PROJECT_\naticq_mo # # d\kluchnik\List\ -o D:\Pasha\elf\_MY_PROJECT_\naticq # # _mod\kluchnik\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_mod\kluchnik\List\m # # ainmenu.lst # # Object file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\kluchnik\Obj\ma # # inmenu.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT_\naticq_mod\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 16 //============================================================================== 17 int MainMenu_ID; 18 19 extern int CurrentStatus; 20 extern int CurrentXStatus; 21 extern DYNPNGICONLIST *XStatusesImgList; 22 extern int *XStatusesIconArray; 23 extern int S_ICONS[]; 24 extern const SOFTKEYSTAB menu_skt; 25 extern int Is_INC_On; 26 extern int Is_SLI_On; 27 extern int Is_SMARTCPU_On; 28 extern int Is_ILU_On; 29 extern int Is_Double_Vibra_On; 30 int janis; 31 extern int Is_PING_On; 32 extern int Is_UPTIME_On; 33 extern int Is_Vibra_Enabled; 34 #ifdef NEWSGOLD 35 extern int Is_Id3tag_Enabled; 36 #endif 37 extern unsigned int Is_Sounds_Enabled; 38 extern int Is_Show_Offline; 39 extern int Is_Show_Groups; 40 41 \ In segment CODE, align 4, keep-with-next 42 static void ChangeVibraMode(void) 43 { 44 Is_Vibra_Enabled=!(Is_Vibra_Enabled); \ ChangeVibraMode: \ 00000000 ........ LDR R0,??DataTable28 ;; 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] 45 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 46 RefreshGUI(); \ 00000024 960100EF SWI +406 47 } \ 00000028 0080BDE8 POP {PC} ;; return 48 #ifdef NEWSGOLD \ In segment CODE, align 4, keep-with-next 49 static void ChangeId3tagMode(void) 50 { 51 Is_Id3tag_Enabled=!(Is_Id3tag_Enabled); \ ChangeId3tagMode: \ 00000000 ........ LDR R0,??DataTable26 ;; 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] 52 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 53 RefreshGUI(); \ 00000024 960100EF SWI +406 54 set_my_xstatus(); \ 00000028 0040BDE8 POP {LR} ;; Pop \ 0000002C ........ _BF set_my_xstatus,??set_my_xstatus??rA ;; tailcall 55 } 56 #endif 57 58 extern int msg_away_timer; 59 extern GBSTMR away_tmr; 60 extern void away_timer(); 61 extern int main_d; 62 extern int away_m; 63 extern unsigned int AUTO_ENGADE; 64 65 extern void UpdateCLheader(void); 66 \ In segment CODE, align 4, keep-with-next 67 static void AutoAwayMSG(void) 68 { 69 if(!away_m) \ AutoAwayMSG: \ 00000000 ........ LDR R0,??DataTable27 ;; away_m \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 50409FE5 LDR R4,??AutoAwayMSG_0 ;; msg_away_timer \ 00000010 000051E3 CMP R1,#+0 \ 00000014 0C00001A BNE ??AutoAwayMSG_1 70 { 71 away_m=!away_m; \ 00000018 0150A0E3 MOV R5,#+1 \ 0000001C 005080E5 STR R5,[R0, #+0] 72 GBS_StopTimer(&away_tmr); \ 00000020 40009FE5 LDR R0,??AutoAwayMSG_0+0x4 ;; away_tmr \ 00000024 440100EF SWI +324 73 msg_away_timer=AUTO_ENGADE; \ 00000028 3C009FE5 LDR R0,??AutoAwayMSG_0+0x8 ;; AUTO_ENGADE \ 0000002C 000090E5 LDR R0,[R0, #+0] \ 00000030 000084E5 STR R0,[R4, #+0] 74 away_timer(); \ 00000034 ........ _BLF away_timer,??away_timer??rA 75 main_d=1; \ 00000038 30009FE5 LDR R0,??AutoAwayMSG_0+0xC ;; main_d \ 0000003C 005080E5 STR R5,[R0, #+0] \ 00000040 ........ _BLF UpdateCLheader,??UpdateCLheader??rA \ 00000044 960100EF SWI +406 \ 00000048 3080BDE8 POP {R4,R5,PC} 76 } 77 else 78 { 79 msg_away_timer=0; \ ??AutoAwayMSG_1: \ 0000004C 0010A0E3 MOV R1,#+0 \ 00000050 001084E5 STR R1,[R4, #+0] 80 away_m=!away_m; \ 00000054 001080E5 STR R1,[R0, #+0] 81 } 82 UpdateCLheader(); \ 00000058 ........ _BLF UpdateCLheader,??UpdateCLheader??rA 83 RefreshGUI(); \ 0000005C 960100EF SWI +406 84 } \ 00000060 3080BDE8 POP {R4,R5,PC} ;; return \ ??AutoAwayMSG_0: \ 00000064 ........ DC32 msg_away_timer \ 00000068 ........ DC32 away_tmr \ 0000006C ........ DC32 AUTO_ENGADE \ 00000070 ........ DC32 main_d 85 86 \ In segment CODE, align 4, keep-with-next 87 static void ChangeSoundMode(void) 88 { 89 Is_Sounds_Enabled=!(Is_Sounds_Enabled); \ ChangeSoundMode: \ 00000000 ........ LDR R0,??DataTable29 ;; 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] 90 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 91 RefreshGUI(); \ 00000024 960100EF SWI +406 92 } \ 00000028 0080BDE8 POP {PC} ;; return 93 \ In segment CODE, align 4, keep-with-next 94 static void ChangeShowOfflineMode(void) 95 { 96 void RecountMenu(CLIST *req, int needfocus); 97 Is_Show_Offline=!(Is_Show_Offline); \ ChangeShowOfflineMode: \ 00000000 ........ LDR R0,??DataTable37 ;; 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] 98 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 99 RecountMenu(NULL,1); \ 00000024 0110A0E3 MOV R1,#+1 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C ........ _BLF RecountMenu,??RecountMenu??rA 100 RefreshGUI(); \ 00000030 960100EF SWI +406 101 } \ 00000034 0080BDE8 POP {PC} ;; return 102 \ In segment CODE, align 4, keep-with-next 103 static void ChangeShowGroupsMode(void) 104 { 105 void RecountMenu(CLIST *req,int needfocus); 106 Is_Show_Groups=!(Is_Show_Groups); \ ChangeShowGroupsMode: \ 00000000 ........ LDR R0,??DataTable38 ;; 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] 107 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 108 ResortCL(); \ 00000024 ........ _BLF ResortCL,??ResortCL??rA 109 RecountMenu(NULL,1); \ 00000028 0110A0E3 MOV R1,#+1 \ 0000002C 0000A0E3 MOV R0,#+0 \ 00000030 ........ _BLF RecountMenu,??RecountMenu??rA 110 RefreshGUI(); \ 00000034 960100EF SWI +406 111 } \ 00000038 0080BDE8 POP {PC} ;; return 112 113 //extern int get_file_size(char* fname); 114 extern char suc_config_name[64]; 115 extern char suc_config_name_mod[64]; \ In segment CODE, align 4, keep-with-next 116 static void EditConfig(void) 117 { \ EditConfig: \ 00000000 10402DE9 PUSH {R4,LR} 118 WSHDR *ws; 119 ws=AllocWS(150); \ 00000004 9600A0E3 MOV R0,#+150 \ 00000008 250100EF SWI +293 120 /* if(get_file_size("4:\\zbin\\etc\\NATICQ.bcfg")) 121 str_2ws(ws,"4:\\zbin\\etc\\NATICQ.bcfg",128); 122 else 123 str_2ws(ws,"0:\\zbin\\etc\\NATICQ.bcfg",128);*/ 124 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 125 ExecuteFile(ws,0,0); \ 0000001C 0020A0E3 MOV R2,#+0 \ 00000020 0010A0E3 MOV R1,#+0 \ 00000024 0400A0E1 MOV R0,R4 \ 00000028 940000EF SWI +148 126 FreeWS(ws); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 290100EF SWI +297 127 GeneralFuncF1(1); \ 00000034 0100A0E3 MOV R0,#+1 \ 00000038 3B0100EF SWI +315 128 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??EditConfig_0: \ 00000040 ........ DC32 suc_config_name 129 \ In segment CODE, align 4, keep-with-next 130 static void EditConfigMod(void) 131 { \ EditConfigMod: \ 00000000 10402DE9 PUSH {R4,LR} 132 WSHDR *ws; 133 ws=AllocWS(150); \ 00000004 9600A0E3 MOV R0,#+150 \ 00000008 250100EF SWI +293 134 /* if(get_file_size("4:\\zbin\\etc\\NATICQMod.bcfg")) 135 str_2ws(ws,"4:\\zbin\\etc\\NATICQMod.bcfg",128); 136 else 137 str_2ws(ws,"0:\\zbin\\etc\\NATICQMod.bcfg",128);*/ 138 str_2ws(ws,suc_config_name_mod,128); \ 0000000C 2C109FE5 LDR R1,??EditConfigMod_0 ;; suc_config_name_mod \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 8020A0E3 MOV R2,#+128 \ 00000018 6C0100EF SWI +364 139 ExecuteFile(ws,0,0); \ 0000001C 0020A0E3 MOV R2,#+0 \ 00000020 0010A0E3 MOV R1,#+0 \ 00000024 0400A0E1 MOV R0,R4 \ 00000028 940000EF SWI +148 140 FreeWS(ws); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 290100EF SWI +297 141 GeneralFuncF1(1); \ 00000034 0100A0E3 MOV R0,#+1 \ 00000038 3B0100EF SWI +315 142 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??EditConfigMod_0: \ 00000040 ........ DC32 suc_config_name_mod 143 144 \ In segment CODE, align 4, keep-with-next 145 static void Disconnect(void) 146 { 147 extern volatile int disautorecconect; 148 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] 149 extern void end_socket(void); 150 SUBPROC((void*)end_socket); \ 00000010 10009FE5 LDR R0,??Disconnect_0+0x4 ;; end_socket \ 00000014 710100EF SWI +369 151 GeneralFuncF1(1); \ 00000018 0100A0E3 MOV R0,#+1 \ 0000001C 3B0100EF SWI +315 152 } \ 00000020 0080BDE8 POP {PC} ;; return \ ??Disconnect_0: \ 00000024 ........ DC32 disautorecconect \ 00000028 ........ DC32 end_socket 153 154 extern int uins; 155 char hmm1[64]; 156 \ In segment CODE, align 4, keep-with-next 157 static void PingToServer(void) 158 { 159 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] 160 TPKT *p; 161 p=malloc(sizeof(PKT)+sizeof(TTime)); \ 00000010 1000A0E3 MOV R0,#+16 \ 00000014 140000EF SWI +20 \ 00000018 0040A0E1 MOV R4,R0 162 GetDateTime(NULL,(TTime *)p->data); \ 0000001C 081084E2 ADD R1,R4,#+8 \ 00000020 0000A0E3 MOV R0,#+0 \ 00000024 B40000EF SWI +180 163 p->pkt.uin=0; \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 000084E5 STR R0,[R4, #+0] 164 p->pkt.type=T_ECHO; \ 00000030 1200A0E3 MOV R0,#+18 \ 00000034 B400C4E1 STRH R0,[R4, #+4] 165 p->pkt.data_len=sizeof(TTime); \ 00000038 0800A0E3 MOV R0,#+8 \ 0000003C B600C4E1 STRH R0,[R4, #+6] 166 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 167 } \ 00000050 1080BDE8 POP {R4,PC} ;; return \ ??PingToServer_0: \ 00000054 ........ DC32 janis \ 00000058 ........ DC32 SendAnswer 168 \ In segment CODE, align 4, keep-with-next 169 static void AboutDlg() 170 { 171 char s[256]; 172 snprintf(s,255,LG_COPYRIGHT,__SVN_REVISION__); \ AboutDlg: \ 00000000 2C209FE5 LDR R2,??AboutDlg_0 ;; `?` \ 00000004 00402DE9 PUSH {LR} \ 00000008 40DF4DE2 SUB SP,SP,#+256 \ 0000000C 0A30A0E3 MOV R3,#+10 \ 00000010 803E83E3 ORR R3,R3,#0x800 \ 00000014 FF10A0E3 MOV R1,#+255 \ 00000018 0D00A0E1 MOV R0,SP \ 0000001C 1B0100EF SWI +283 173 ShowMSG(2, (int)s); \ 00000020 0D10A0E1 MOV R1,SP \ 00000024 0200A0E3 MOV R0,#+2 \ 00000028 480100EF SWI +328 174 } \ 0000002C 40DF8DE2 ADD SP,SP,#+256 \ 00000030 0080BDE8 POP {PC} ;; return \ ??AboutDlg_0: \ 00000034 ........ DC32 `?` 175 176 static const HEADER_DESC menuhdr={0,0,0,0,NULL,(int)LG_MENU,LGP_NULL}; 177 178 static const int mmenusoftkeys[]={0,1,2}; 179 180 //Переходим к универсальности!!! 181 #ifdef NEWSGOLD 182 #ifdef ELKA 183 #ifdef kluchnik 184 #define MENU_ITEMS 22 185 #else 186 #define MENU_ITEMS 22//ELKA 187 #endif 188 #else 189 #define MENU_ITEMS 21//NEWSGOLD 190 #endif 191 #else 192 #define MENU_ITEMS 19//SGOLD 193 #endif 194 195 static const char * const menutexts[MENU_ITEMS]= 196 { 197 LG_MNUSTATUS, 198 LG_MNUXSTATUS, 199 LG_MANAGELIST, 200 #ifdef NEWSGOLD 201 LG_ID3TAG, 202 #endif 203 LG_AUTOANSWER,//"Автоответчик", 204 LG_MNUVIBRA, 205 LG_MNUSOUND, 206 #ifdef NEWSGOLD 207 LG_INCMSG, 208 #endif 209 #ifdef ELKA 210 LG_MNUSLION, 211 #endif 212 LG_MNUSMARTCPU, 213 LG_REMINDERON, 214 LG_MNUILUON, 215 LG_MNUPINGON, 216 LG_MNUUPTIMEON, 217 LG_MNUSHOWOFF, 218 LG_MNUSHOWGROUP, 219 LG_MNUEDCFG, 220 LG_MNUEDCFG_MOD, 221 LG_MNUDISCONNECT, 222 LG_MSGINFO, 223 LG_MNUPING, 224 LG_MNUABOUT 225 }; 226 227 #ifdef ELKA \ In segment CODE, align 4, keep-with-next 228 static void ChangeSLIMode(void) 229 { 230 Is_SLI_On=!(Is_SLI_On); \ ChangeSLIMode: \ 00000000 ........ LDR R0,??DataTable31 ;; Is_SLI_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] 231 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 232 RefreshGUI(); \ 00000024 960100EF SWI +406 233 } \ 00000028 0080BDE8 POP {PC} ;; return 234 #endif \ In segment CODE, align 4, keep-with-next 235 static void ChangeSMARTCPUMode(void) 236 { 237 Is_SMARTCPU_On=!(Is_SMARTCPU_On); \ ChangeSMARTCPUMode: \ 00000000 ........ LDR R0,??DataTable32 ;; Is_SMARTCPU_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] 238 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 239 RefreshGUI(); \ 00000024 960100EF SWI +406 240 } \ 00000028 0080BDE8 POP {PC} ;; return 241 #ifdef NEWSGOLD \ In segment CODE, align 4, keep-with-next 242 static void ChangeINCMode(void) 243 { 244 Is_INC_On=!(Is_INC_On); \ ChangeINCMode: \ 00000000 ........ LDR R0,??DataTable30 ;; 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] 245 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 246 RefreshGUI(); \ 00000024 960100EF SWI +406 247 } \ 00000028 0080BDE8 POP {PC} ;; return 248 #endif \ In segment CODE, align 4, keep-with-next 249 static void ChangeILUMode(void) 250 { 251 Is_ILU_On=!(Is_ILU_On); \ ChangeILUMode: \ 00000000 ........ LDR R0,??DataTable34 ;; 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] 252 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 253 RefreshGUI(); \ 00000024 960100EF SWI +406 254 } \ 00000028 0080BDE8 POP {PC} ;; return 255 \ In segment CODE, align 4, keep-with-next 256 static void ChangePINGMode(void) 257 { 258 Is_PING_On=!(Is_PING_On); \ ChangePINGMode: \ 00000000 ........ LDR R0,??DataTable35 ;; 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] 259 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 260 RefreshGUI(); \ 00000024 960100EF SWI +406 261 } \ 00000028 0080BDE8 POP {PC} ;; return 262 \ In segment CODE, align 4, keep-with-next 263 static void ChangeUPTIMEMode(void) 264 { 265 Is_UPTIME_On=!(Is_UPTIME_On); \ ChangeUPTIMEMode: \ 00000000 ........ LDR R0,??DataTable36 ;; Is_UPTIME_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] 266 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 267 RefreshGUI(); \ 00000024 960100EF SWI +406 268 } \ 00000028 0080BDE8 POP {PC} ;; return 269 270 int main_count; 271 int main2_count; 272 \ In segment CODE, align 4, keep-with-next 273 static void MSG_Info(void) 274 { \ MSG_Info: \ 00000000 10402DE9 PUSH {R4,LR} 275 char *info=malloc(64); \ 00000004 4000A0E3 MOV R0,#+64 \ 00000008 140000EF SWI +20 276 sprintf(info, "Отправлено: %d\n" 277 "Принято: %d", main2_count, main_count); \ 0000000C 2C109FE5 LDR R1,??MSG_Info_0 ;; `?` 289 { 290 (void *)DispStatusChangeMenu, 291 (void *)DispXStatusChangeMenu, 292 (void *)CreateManageCLMenu, 293 #ifdef NEWSGOLD 294 (void *)ChangeId3tagMode, 295 #endif 296 (void *)AutoAwayMSG, 297 (void *)ChangeVibraMode, 298 (void *)ChangeSoundMode, 299 #ifdef NEWSGOLD 300 (void *)ChangeINCMode, 301 #endif 302 #ifdef ELKA 303 (void *)ChangeSLIMode, 304 #endif 305 (void *)ChangeSMARTCPUMode, 306 (void *)ChangeDoubleVibra, 307 (void *)ChangeILUMode, 308 (void *)ChangePINGMode, 309 (void *)ChangeUPTIMEMode, 310 (void *)ChangeShowOfflineMode, 311 (void *)ChangeShowGroupsMode, 312 (void *)EditConfig, 313 (void *)EditConfigMod, 314 (void *)Disconnect, 315 (void *)MSG_Info, 316 (void *)PingToServer, 317 (void *)AboutDlg, 318 }; 319 320 static const SOFTKEY_DESC mmenu_sk[]= 321 { 322 {0x0018,0x0000,(int)LG_SELECT}, 323 {0x0001,0x0000,(int)LG_BACK}, 324 {0x003D,0x0000,(int)LGP_DOIT_PIC} 325 }; 326 327 static const SOFTKEYSTAB mmenu_skt= 328 { 329 mmenu_sk,0 330 }; 331 \ In segment CODE, align 4, keep-with-next 332 void tmenu_ghook(void *data, int cmd) 333 { \ tmenu_ghook: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0140A0E1 MOV R4,R1 334 PNGTOP_DESC *pltop=PNG_TOP(); \ 00000008 B98100EF SWI +33209 335 if (cmd==9) \ 0000000C 090054E3 CMP R4,#+9 336 { 337 pltop->dyn_pltop=NULL; \ 00000010 0010A003 MOVEQ R1,#+0 \ 00000014 08108005 STREQ R1,[R0, #+8] \ 00000018 1080BD08 POPEQ {R4,PC} 338 } 339 if (cmd==0x0A) \ 0000001C 0A0054E3 CMP R4,#+10 \ 00000020 1080BD18 POPNE {R4,PC} 340 { 341 pltop->dyn_pltop=XStatusesImgList; \ 00000024 0C109FE5 LDR R1,??tmenu_ghook_0 ;; XStatusesImgList \ 00000028 001091E5 LDR R1,[R1, #+0] \ 0000002C 081080E5 STR R1,[R0, #+8] 342 DisableIDLETMR(); \ 00000030 7F0100EF SWI +383 343 } 344 } \ 00000034 1080BDE8 POP {R4,PC} ;; return \ ??tmenu_ghook_0: \ 00000038 ........ DC32 XStatusesImgList \ In segment DATA_Z, align 4, align-sorted 345 346 static int icon_array[2]; \ icon_array: \ 00000000 DS8 8 \ MainMenu_ID: \ 00000008 DS8 4 \ In segment DATA_Z, align 4, align-sorted \ janis: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted \ hmm1: \ 00000000 DS8 64 \ In segment DATA_Z, align 4, align-sorted \ main_count: \ 00000000 DS8 4 \ main2_count: \ 00000004 DS8 4 347 \ In segment CODE, align 4, keep-with-next 348 static void menuitemhandler(void *data, int curitem, void *unk) 349 { \ menuitemhandler: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 350 WSHDR *ws; 351 void *item=AllocMenuItem(data); \ 0000000C 970100EF SWI +407 \ 00000010 0060A0E1 MOV R6,R0 \ 00000014 68019FE5 LDR R0,??menuitemhandler_1 ;; menutexts \ 00000018 058190E7 LDR R8,[R0, +R5, LSL #+2] \ 0000001C 0800A0E1 MOV R0,R8 352 extern const char percent_t[]; 353 ws=AllocMenuWS(data,strlen(menutexts[curitem])); \ 00000020 1B0000EF SWI +27 \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0400A0E1 MOV R0,R4 \ 0000002C 980100EF SWI +408 354 wsprintf(ws,percent_t,menutexts[curitem]); \ 00000030 50119FE5 LDR R1,??menuitemhandler_1+0x4 ;; percent_t \ 00000034 0070A0E1 MOV R7,R0 \ 00000038 0820A0E1 MOV R2,R8 \ 0000003C 240100EF SWI +292 355 switch(curitem) \ 00000040 ........ LDR R0,??DataTable39 ;; icon_array \ 00000044 40219FE5 LDR R2,??menuitemhandler_1+0x8 ;; S_ICONS \ 00000048 0510A0E1 MOV R1,R5 \ 0000004C 150051E3 CMP R1,#+21 \ 00000050 4500008A BHI ??menuitemhandler_2 \ 00000054 013F8FE2 ADR R3,??menuitemhandler_0 \ 00000058 0130D3E7 LDRB R3,[R3, R1] \ 0000005C 03F18FE0 ADD PC,PC,R3, LSL #+2 \ ??menuitemhandler_0: \ 00000060 05090F11 DC8 +5,+9,+15,+17 \ 00000064 181A2123 DC8 +24,+26,+33,+35 \ 00000068 25272E30 DC8 +37,+39,+46,+48 \ 0000006C 32343638 DC8 +50,+52,+54,+56 \ 00000070 3A3A3F3C DC8 +58,+58,+63,+60 \ 00000074 3E3C0000 DC8 +62,+60,+0,+0 356 { 357 case 0: 358 SetMenuItemIconArray(data,item,S_ICONS+CurrentStatus); \ ??menuitemhandler_3: \ 00000078 10019FE5 LDR R0,??menuitemhandler_1+0xC ;; CurrentStatus \ 0000007C 000090E5 LDR R0,[R0, #+0] \ 00000080 002182E0 ADD R2,R2,R0, LSL #+2 \ 00000084 350000EA B ??menuitemhandler_4 359 break; 360 case 1: 361 SetMenuItemIconArray(data,item,XStatusesIconArray+CurrentXStatus); \ ??menuitemhandler_5: \ 00000088 04019FE5 LDR R0,??menuitemhandler_1+0x10 ;; CurrentXStatus \ 0000008C 04119FE5 LDR R1,??menuitemhandler_1+0x14 ;; XStatusesIconArray \ 00000090 000090E5 LDR R0,[R0, #+0] \ 00000094 001091E5 LDR R1,[R1, #+0] \ 00000098 002181E0 ADD R2,R1,R0, LSL #+2 \ 0000009C 2F0000EA B ??menuitemhandler_4 362 break; 363 case 2: 364 SetMenuItemIconArray(data,item,S_ICONS+ICON_ADDCONTACT); \ ??menuitemhandler_6: \ 000000A0 482082E2 ADD R2,R2,#+72 \ 000000A4 2D0000EA B ??menuitemhandler_4 365 break; 366 #ifdef NEWSGOLD 367 case 3: 368 SetMenuItemIconArray(data,item,icon_array+(Is_Id3tag_Enabled?0:1)); \ ??menuitemhandler_7: \ 000000A8 ........ LDR R1,??DataTable26 ;; Is_Id3tag_Enabled \ ??menuitemhandler_8: \ 000000AC 001091E5 LDR R1,[R1, #+0] \ 000000B0 000051E3 CMP R1,#+0 \ 000000B4 0010A013 MOVNE R1,#+0 \ 000000B8 0110A003 MOVEQ R1,#+1 \ 000000BC 012180E0 ADD R2,R0,R1, LSL #+2 \ 000000C0 260000EA B ??menuitemhandler_4 369 break; 370 case 4: 371 SetMenuItemIconArray(data,item,icon_array+(away_m?0:1)); \ ??menuitemhandler_9: \ 000000C4 ........ LDR R1,??DataTable27 ;; away_m \ 000000C8 F7FFFFEA B ??menuitemhandler_8 372 break; 373 case 5: 374 SetMenuItemIconArray(data,item,icon_array+(Is_Vibra_Enabled?0:1)); \ ??menuitemhandler_10: \ 000000CC ........ LDR R1,??DataTable28 ;; Is_Vibra_Enabled \ ??menuitemhandler_11: \ 000000D0 001091E5 LDR R1,[R1, #+0] \ 000000D4 000051E3 CMP R1,#+0 \ 000000D8 0010A013 MOVNE R1,#+0 \ 000000DC 0110A003 MOVEQ R1,#+1 \ 000000E0 012180E0 ADD R2,R0,R1, LSL #+2 \ 000000E4 1D0000EA B ??menuitemhandler_4 375 break; 376 case 6: 377 SetMenuItemIconArray(data,item,icon_array+(Is_Sounds_Enabled?0:1)); \ ??menuitemhandler_12: \ 000000E8 ........ LDR R1,??DataTable29 ;; Is_Sounds_Enabled \ 000000EC EEFFFFEA B ??menuitemhandler_8 378 break; 379 #ifdef ELKA 380 case 7: 381 SetMenuItemIconArray(data,item,icon_array+(Is_INC_On?0:1)); \ ??menuitemhandler_13: \ 000000F0 ........ LDR R1,??DataTable30 ;; Is_INC_On \ 000000F4 F5FFFFEA B ??menuitemhandler_11 382 break; 383 case 8: 384 SetMenuItemIconArray(data,item,icon_array+(Is_SLI_On?0:1)); \ ??menuitemhandler_14: \ 000000F8 ........ LDR R1,??DataTable31 ;; Is_SLI_On \ 000000FC EAFFFFEA B ??menuitemhandler_8 385 break; 386 case 9: 387 SetMenuItemIconArray(data,item,icon_array+(Is_SMARTCPU_On?0:1)); \ ??menuitemhandler_15: \ 00000100 ........ LDR R1,??DataTable32 ;; Is_SMARTCPU_On \ ??menuitemhandler_16: \ 00000104 001091E5 LDR R1,[R1, #+0] \ 00000108 000051E3 CMP R1,#+0 \ 0000010C 0010A013 MOVNE R1,#+0 \ 00000110 0110A003 MOVEQ R1,#+1 \ 00000114 012180E0 ADD R2,R0,R1, LSL #+2 \ 00000118 100000EA B ??menuitemhandler_4 388 break; 389 case 10: 390 SetMenuItemIconArray(data,item,icon_array+(Is_Double_Vibra_On?0:1)); \ ??menuitemhandler_17: \ 0000011C ........ LDR R1,??DataTable33 ;; Is_Double_Vibra_On \ 00000120 E1FFFFEA B ??menuitemhandler_8 391 break; 392 case 11: 393 SetMenuItemIconArray(data,item,icon_array+(Is_ILU_On?0:1)); \ ??menuitemhandler_18: \ 00000124 ........ LDR R1,??DataTable34 ;; Is_ILU_On \ 00000128 E8FFFFEA B ??menuitemhandler_11 394 break; 395 case 12: 396 SetMenuItemIconArray(data,item,icon_array+(Is_PING_On?0:1)); \ ??menuitemhandler_19: \ 0000012C ........ LDR R1,??DataTable35 ;; Is_PING_On \ 00000130 DDFFFFEA B ??menuitemhandler_8 397 break; 398 case 13: 399 SetMenuItemIconArray(data,item,icon_array+(Is_UPTIME_On?0:1)); \ ??menuitemhandler_20: \ 00000134 ........ LDR R1,??DataTable36 ;; Is_UPTIME_On \ 00000138 F1FFFFEA B ??menuitemhandler_16 400 break; 401 case 14: 402 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Offline?0:1)); \ ??menuitemhandler_21: \ 0000013C ........ LDR R1,??DataTable37 ;; Is_Show_Offline \ 00000140 D9FFFFEA B ??menuitemhandler_8 403 break; 404 case 15: 405 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Groups?0:1)); \ ??menuitemhandler_22: \ 00000144 ........ LDR R1,??DataTable38 ;; Is_Show_Groups \ 00000148 E0FFFFEA B ??menuitemhandler_11 406 break; 407 case 16: 408 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); \ ??menuitemhandler_23: \ 0000014C 582082E2 ADD R2,R2,#+88 \ 00000150 020000EA B ??menuitemhandler_4 409 break; 410 case 17: 411 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 412 break; 413 case 18: 414 SetMenuItemIconArray(data,item,S_ICONS+IS_OFFLINE); 415 break; 416 case 19: 417 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); \ ??menuitemhandler_24: \ 00000154 382082E2 ADD R2,R2,#+56 \ 00000158 000000EA B ??menuitemhandler_4 418 break; 419 case 20: 420 SetMenuItemIconArray(data,item,S_ICONS+ICON_PING); \ ??menuitemhandler_25: \ 0000015C 542082E2 ADD R2,R2,#+84 \ ??menuitemhandler_4: \ 00000160 0610A0E1 MOV R1,R6 \ 00000164 0400A0E1 MOV R0,R4 \ 00000168 990100EF SWI +409 421 break; 422 case 21: 423 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 424 break; 425 #else 426 case 7: 427 SetMenuItemIconArray(data,item,icon_array+(Is_INC_On?0:1)); 428 break; 429 case 8: 430 SetMenuItemIconArray(data,item,icon_array+(Is_SMARTCPU_On?0:1)); 431 break; 432 case 9: 433 SetMenuItemIconArray(data,item,icon_array+(Is_Double_Vibra_On?0:1)); 434 break; 435 case 10: 436 SetMenuItemIconArray(data,item,icon_array+(Is_ILU_On?0:1)); 437 break; 438 case 11: 439 SetMenuItemIconArray(data,item,icon_array+(Is_PING_On?0:1)); 440 break; 441 case 12: 442 SetMenuItemIconArray(data,item,icon_array+(Is_UPTIME_On?0:1)); 443 break; 444 case 13: 445 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Offline?0:1)); 446 break; 447 case 14: 448 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Groups?0:1)); 449 break; 450 case 15: 451 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 452 break; 453 case 16: 454 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 455 break; 456 case 17: 457 SetMenuItemIconArray(data,item,S_ICONS+IS_OFFLINE); 458 break; 459 case 18: 460 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 461 break; 462 case 19: 463 SetMenuItemIconArray(data,item,S_ICONS+ICON_PING); 464 break; 465 case 20: 466 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 467 break; 468 #endif 469 #else 470 case 3: 471 SetMenuItemIconArray(data,item,icon_array+(away_m?0:1)); 472 break; 473 case 4: 474 SetMenuItemIconArray(data,item,icon_array+(Is_Vibra_Enabled?0:1)); 475 break; 476 case 5: 477 SetMenuItemIconArray(data,item,icon_array+(Is_Sounds_Enabled?0:1)); 478 break; 479 case 6: 480 SetMenuItemIconArray(data,item,icon_array+(Is_SMARTCPU_On?0:1)); 481 break; 482 case 7: 483 SetMenuItemIconArray(data,item,icon_array+(Is_Double_Vibra_On?0:1)); 484 break; 485 case 8: 486 SetMenuItemIconArray(data,item,icon_array+(Is_ILU_On?0:1)); 487 break; 488 case 9: 489 SetMenuItemIconArray(data,item,icon_array+(Is_PING_On?0:1)); 490 break; 491 case 10: 492 SetMenuItemIconArray(data,item,icon_array+(Is_UPTIME_On?0:1)); 493 break; 494 case 11: 495 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Offline?0:1)); 496 break; 497 case 12: 498 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Groups?0:1)); 499 break; 500 case 13: 501 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 502 break; 503 case 14: 504 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 505 break; 506 case 15: 507 SetMenuItemIconArray(data,item,S_ICONS+IS_OFFLINE); 508 break; 509 case 16: 510 SetMenuItemIconArray(data,item,S_ICONS+ICON_PING); 511 break; 512 case 17: 513 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 514 break; 515 case 18: 516 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 517 break; 518 #endif 519 } 520 SetMenuItemText(data, item, ws, curitem); \ ??menuitemhandler_2: \ 0000016C 0530A0E1 MOV R3,R5 \ 00000170 0720A0E1 MOV R2,R7 \ 00000174 0610A0E1 MOV R1,R6 \ 00000178 0400A0E1 MOV R0,R4 \ 0000017C 9A0100EF SWI +410 521 } \ 00000180 F081BDE8 POP {R4-R8,PC} ;; return \ ??menuitemhandler_1: \ 00000184 ........ DC32 menutexts \ 00000188 ........ DC32 percent_t \ 0000018C ........ DC32 S_ICONS \ 00000190 ........ DC32 CurrentStatus \ 00000194 ........ DC32 CurrentXStatus \ 00000198 ........ DC32 XStatusesIconArray 522 \ In segment CODE, align 4, keep-with-next 523 static int tmenu_keyhook(void *data, GUI_MSG *msg) 524 { \ tmenu_keyhook: \ 00000000 00402DE9 PUSH {LR} 525 if ((msg->keys==0x18)||(msg->keys==0x3D)) \ 00000004 F210D1E1 LDRSH R1,[R1, #+2] \ 00000008 180051E3 CMP R1,#+24 \ 0000000C 3D005113 CMPNE R1,#+61 \ 00000010 0300001A BNE ??tmenu_keyhook_0 526 { 527 ((void (*)(void))(menuprocs[GetCurMenuItem(data)]))(); \ 00000014 8F0100EF SWI +399 \ 00000018 0C109FE5 LDR R1,??tmenu_keyhook_1 ;; menuprocs \ 0000001C 000191E7 LDR R0,[R1, +R0, LSL #+2] \ 00000020 30FF2FE1 BLX R0 528 } 529 return(0); \ ??tmenu_keyhook_0: \ 00000024 0000A0E3 MOV R0,#+0 \ 00000028 0080BDE8 POP {PC} ;; return \ ??tmenu_keyhook_1: \ 0000002C ........ DC32 menuprocs 530 } \ In segment DATA_C, align 4, align-sorted \ menuhdr: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 00000000.... DC32 0H, `?`, 2147483647 \ ....FFFFFF7F \ 00000014 08000000.... DC32 8, tmenu_keyhook, tmenu_ghook, 0H, mmenusoftkeys, mmenu_skt, 17 \ ............ \ 00000000.... \ ............ \ 11000000 \ 00000030 ........0000 DC32 menuitemhandler, 0H, 0H, 22 \ 000000000000 \ 16000000 \ In segment DATA_C, align 4, align-sorted \ mmenusoftkeys: \ 00000000 000000000100 DC32 0, 1, 2 \ 000002000000 \ In segment DATA_C, align 4, align-sorted \ menutexts: \ 00000000 ........ DC32 `?` \ 00000004 ........ DC32 `?` \ 00000008 ........ DC32 `?` \ 00000010 ........ DC32 `?` \ 00000024 ........ DC32 `?` \ 00000040 ........ DC32 `?` \ 00000054 ........ DC32 `?` \ In segment DATA_C, align 4, align-sorted \ mmenu_sk: \ 00000000 18000000 DC16 24, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 \ In segment DATA_C, align 4, align-sorted \ mmenu_skt: \ 00000000 ........0000 DC32 mmenu_sk, 0 \ 0000 531 532 533 static const MENU_DESC tmenu= 534 { 535 8,tmenu_keyhook,tmenu_ghook,NULL, 536 mmenusoftkeys, 537 &mmenu_skt, 538 0x11,//MENU_FLAG, 539 menuitemhandler, 540 NULL,//menuitems, 541 NULL,//menuprocs, 542 MENU_ITEMS 543 }; 544 \ In segment CODE, align 4, keep-with-next 545 void ShowMainMenu() 546 { \ ShowMainMenu: \ 00000000 30402DE9 PUSH {R4,R5,LR} 547 icon_array[0]=GetPicNByUnicodeSymbol(CBOX_CHECKED); \ 00000004 ........ LDR R4,??DataTable39 ;; icon_array 548 icon_array[1]=GetPicNByUnicodeSymbol(CBOX_UNCHECKED); 549 *((int **)(&menuhdr.icon))=S_ICONS+IS_ONLINE; \ 00000008 80509FE5 LDR R5,??ShowMainMenu_0 ;; menuhdr \ 0000000C 1600A0E3 MOV R0,#+22 \ 00000010 E10C80E3 ORR R0,R0,#0xE100 \ 00000014 E40100EF SWI +484 \ 00000018 000084E5 STR R0,[R4, #+0] \ 0000001C 1700A0E3 MOV R0,#+23 \ 00000020 E10C80E3 ORR R0,R0,#0xE100 \ 00000024 E40100EF SWI +484 \ 00000028 040084E5 STR R0,[R4, #+4] \ 0000002C 60009FE5 LDR R0,??ShowMainMenu_0+0x4 ;; S_ICONS + 44 \ 00000030 080085E5 STR R0,[R5, #+8] 550 patch_header(&menuhdr); \ 00000034 0000A0E3 MOV R0,#+0 \ 00000038 B000C5E1 STRH R0,[R5, #+0] \ 0000003C 1800A0E3 MOV R0,#+24 \ 00000040 B200C5E1 STRH R0,[R5, #+2] \ 00000044 888100EF SWI +33160 \ 00000048 010040E2 SUB R0,R0,#+1 \ 0000004C B400C5E1 STRH R0,[R5, #+4] \ 00000050 8A8100EF SWI +33162 \ 00000054 170080E2 ADD R0,R0,#+23 \ 00000058 B600C5E1 STRH R0,[R5, #+6] 551 MainMenu_ID=CreateMenu(0,0,&tmenu,&menuhdr,0,MENU_ITEMS,0,0); \ 0000005C 0000A0E3 MOV R0,#+0 \ 00000060 01002DE9 PUSH {R0} \ 00000064 01002DE9 PUSH {R0} \ 00000068 0530A0E1 MOV R3,R5 \ 0000006C 142085E2 ADD R2,R5,#+20 \ 00000070 0010A0E3 MOV R1,#+0 \ 00000074 1600A0E3 MOV R0,#+22 \ 00000078 01002DE9 PUSH {R0} \ 0000007C 0000A0E3 MOV R0,#+0 \ 00000080 01002DE9 PUSH {R0} \ 00000084 520100EF SWI +338 \ 00000088 080084E5 STR R0,[R4, #+8] 552 } \ 0000008C 3F80BDE8 POP {R0-R5,PC} ;; return \ ??ShowMainMenu_0: \ 00000090 ........ DC32 menuhdr \ 00000094 ........ DC32 S_ICONS + 44 \ In segment CODE, align 4, keep-with-next \ ??DataTable24: \ 00000000 ........ DC32 WriteDefSettings \ In segment CODE, align 4, keep-with-next \ ??DataTable26: \ 00000000 ........ DC32 Is_Id3tag_Enabled \ In segment CODE, align 4, keep-with-next \ ??DataTable27: \ 00000000 ........ DC32 away_m \ In segment CODE, align 4, keep-with-next \ ??DataTable28: \ 00000000 ........ DC32 Is_Vibra_Enabled \ In segment CODE, align 4, keep-with-next \ ??DataTable29: \ 00000000 ........ DC32 Is_Sounds_Enabled \ In segment CODE, align 4, keep-with-next \ ??DataTable30: \ 00000000 ........ DC32 Is_INC_On \ In segment CODE, align 4, keep-with-next \ ??DataTable31: \ 00000000 ........ DC32 Is_SLI_On \ In segment CODE, align 4, keep-with-next \ ??DataTable32: \ 00000000 ........ DC32 Is_SMARTCPU_On \ In segment CODE, align 4, keep-with-next \ ??DataTable33: \ 00000000 ........ DC32 Is_Double_Vibra_On \ In segment CODE, align 4, keep-with-next \ ??DataTable34: \ 00000000 ........ DC32 Is_ILU_On \ In segment CODE, align 4, keep-with-next \ ??DataTable35: \ 00000000 ........ DC32 Is_PING_On \ In segment CODE, align 4, keep-with-next \ ??DataTable36: \ 00000000 ........ DC32 Is_UPTIME_On \ In segment CODE, align 4, keep-with-next \ ??DataTable37: \ 00000000 ........ DC32 Is_Show_Offline \ In segment CODE, align 4, keep-with-next \ ??DataTable38: \ 00000000 ........ DC32 Is_Show_Groups \ In segment CODE, align 4, keep-with-next \ ??DataTable39: \ 00000000 ........ DC32 icon_array \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 ............ DC32 DispStatusChangeMenu, DispXStatusChangeMenu, CreateManageCLMenu \ ............ \ 0000000C ............ DC32 ChangeId3tagMode, AutoAwayMSG, ChangeVibraMode, ChangeSoundMode \ ............ \ ........ \ 0000001C ............ DC32 ChangeINCMode, ChangeSLIMode, ChangeSMARTCPUMode \ ............ \ 00000028 ............ DC32 ChangeDoubleVibra, ChangeILUMode, ChangePINGMode, ChangeUPTIMEMode \ ............ \ ........ \ 00000038 ............ DC32 ChangeShowOfflineMode, ChangeShowGroupsMode, EditConfig \ ............ \ 00000044 ............ DC32 EditConfigMod, Disconnect, MSG_Info, PingToServer, AboutDlg \ ............ \ ............ \ .... \ 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 \ `?`: \ 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 C2FBE1EEF000 DC8 "\302\373\341\356\360" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CDE0E7E0E400 DC8 "\315\340\347\340\344" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E4154494351 DC8 4EH, 41H, 54H, 49H, 43H, 51H, 20H, 76H \ 2076 \ 00000008 322E300A5265 DC8 32H, 2EH, 30H, 0AH, 52H, 65H, 76H, 69H \ 7669 \ 00000010 73696F6E2025 DC8 73H, 69H, 6FH, 6EH, 20H, 25H, 64H, 0AH \ 640A \ 00000018 284329206279 DC8 28H, 43H, 29H, 20H, 62H, 79H, 20H, 52H \ 2052 \ 00000020 7374372F4342 DC8 73H, 74H, 37H, 2FH, 43H, 42H, 53H, 49H \ 5349 \ 00000028 450A4B72656E DC8 45H, 0AH, 4BH, 72H, 65H, 6EH, 0AH, 4BH \ 0A4B \ 00000030 696261620A53 DC8 69H, 62H, 61H, 62H, 0AH, 53H, 68H, 61H \ 6861 \ 00000038 646F770A5365 DC8 64H, 6FH, 77H, 0AH, 53H, 65H, 6BH, 6CH \ 6B6C \ 00000040 746800 DC8 74H, 68H, 0 \ 00000043 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CCE5EDFE00 DC8 "\314\345\355\376" \ 00000005 000000 DC8 0, 0, 0 \ 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 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 D0E5E6E8EC20 DC8 "\320\345\346\350\354 SLI" \ 534C4900 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `? 88 ? 8 ? 8 ? 12 ? 8 ? 8 ? 68 ? 8 ? 8 ? 12 ? 16 ? 12 ?