############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.41A/W32 EVALUATION 11/Mar/2008 12:14:16 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\mod_src\natasha with id3 # # tag(20.02.08)\mainmenu.c # # Command line = "D:\Pasha\elf\mod_src\natasha with id3 # # tag(20.02.08)\mainmenu.c" -D NEWSGOLD -D ELKA -D # # UIN_WRITE --preprocess "D:\Pasha\elf\mod_src\natasha # # with id3 tag(20.02.08)\Release_ELKA\List\" -lC # # "D:\Pasha\elf\mod_src\natasha with id3 # # tag(20.02.08)\Release_ELKA\List\" -o # # "D:\Pasha\elf\mod_src\natasha with id3 # # tag(20.02.08)\Release_ELKA\Obj\" -s9 --no_unroll # # --cpu_mode arm --endian little --cpu ARM926EJ-S # # --stack_align 4 --interwork -e --fpu None # # --dlib_config "D:\Pasha\ARM_Embedded_Workbench\Embed # # ded Workbench 4.0 Evaluation\ARM\LIB\dl5tpainl8n.h" # # -I "D:\Pasha\ARM_Embedded_Workbench\Embedded # # Workbench 4.0 Evaluation\ARM\INC\" # # --inline_threshold=2 # # List file = D:\Pasha\elf\mod_src\natasha with id3 # # tag(20.02.08)\Release_ELKA\List\mainmenu.lst # # Object file = D:\Pasha\elf\mod_src\natasha with id3 # # tag(20.02.08)\Release_ELKA\Obj\mainmenu.r79 # # # # # ############################################################################## D:\Pasha\elf\mod_src\natasha with id3 tag(20.02.08)\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 automsg; 59 extern int msg_away_timer; 60 extern GBSTMR away_tmr; 61 extern void away_timer(); 62 extern int main_d; 63 extern int away_m; 64 extern const unsigned int AUTO_ENGADE; 65 \ In segment CODE, align 4, keep-with-next 66 static void AutoAwayMSG(void) 67 { 68 if(!automsg) \ AutoAwayMSG: \ 00000000 5C009FE5 LDR R0,??AutoAwayMSG_0 ;; automsg \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 001090E5 LDR R1,[R0, #+0] \ 0000000C 54409FE5 LDR R4,??AutoAwayMSG_0+0x4 ;; msg_away_timer \ 00000010 000051E3 CMP R1,#+0 \ 00000014 0B00001A BNE ??AutoAwayMSG_1 69 { 70 automsg=!automsg; \ 00000018 0150A0E3 MOV R5,#+1 \ 0000001C 005080E5 STR R5,[R0, #+0] 71 GBS_StopTimer(&away_tmr); \ 00000020 44009FE5 LDR R0,??AutoAwayMSG_0+0x8 ;; away_tmr \ 00000024 440100EF SWI +324 72 msg_away_timer=AUTO_ENGADE; \ 00000028 40009FE5 LDR R0,??AutoAwayMSG_0+0xC ;; AUTO_ENGADE \ 0000002C 000090E5 LDR R0,[R0, #+0] \ 00000030 000084E5 STR R0,[R4, #+0] 73 away_timer(); \ 00000034 ........ _BLF away_timer,??away_timer??rA 74 main_d=1; \ 00000038 34009FE5 LDR R0,??AutoAwayMSG_0+0x10 ;; main_d \ 0000003C 005080E5 STR R5,[R0, #+0] \ 00000040 960100EF SWI +406 \ 00000044 3080BDE8 POP {R4,R5,PC} 75 } 76 else 77 { 78 msg_away_timer=0; 79 away_m=0; \ ??AutoAwayMSG_1: \ 00000048 ........ LDR R2,??DataTable27 ;; away_m \ 0000004C 0010A0E3 MOV R1,#+0 \ 00000050 001084E5 STR R1,[R4, #+0] \ 00000054 001082E5 STR R1,[R2, #+0] 80 automsg=!automsg; \ 00000058 001080E5 STR R1,[R0, #+0] 81 } 82 RefreshGUI(); \ 0000005C 960100EF SWI +406 83 } \ 00000060 3080BDE8 POP {R4,R5,PC} ;; return \ ??AutoAwayMSG_0: \ 00000064 ........ DC32 automsg \ 00000068 ........ DC32 msg_away_timer \ 0000006C ........ DC32 away_tmr \ 00000070 ........ DC32 AUTO_ENGADE \ 00000074 ........ DC32 main_d 84 85 extern void AutobotInit(); 86 extern int autobot; 87 \ In segment CODE, align 4, keep-with-next 88 static void ChangeSoundMode(void) 89 { 90 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] 91 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 92 RefreshGUI(); \ 00000024 960100EF SWI +406 93 } \ 00000028 0080BDE8 POP {PC} ;; return 94 \ In segment CODE, align 4, keep-with-next 95 static void ChangeShowOfflineMode(void) 96 { 97 void RecountMenu(CLIST *req); 98 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] 99 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 100 RecountMenu(NULL); \ 00000024 0000A0E3 MOV R0,#+0 \ 00000028 ........ _BLF RecountMenu,??RecountMenu??rA 101 RefreshGUI(); \ 0000002C 960100EF SWI +406 102 } \ 00000030 0080BDE8 POP {PC} ;; return 103 \ In segment CODE, align 4, keep-with-next 104 static void ChangeShowGroupsMode(void) 105 { 106 void RecountMenu(CLIST *req); 107 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] 108 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 109 ResortCL(); \ 00000024 ........ _BLF ResortCL,??ResortCL??rA 110 RecountMenu(NULL); \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C ........ _BLF RecountMenu,??RecountMenu??rA 111 RefreshGUI(); \ 00000030 960100EF SWI +406 112 } \ 00000034 0080BDE8 POP {PC} ;; return 113 \ In segment CODE, align 4, keep-with-next 114 static void EditConfig(void) 115 { \ EditConfig: \ 00000000 10402DE9 PUSH {R4,LR} 116 extern const char *successed_config_filename; 117 WSHDR *ws; 118 ws=AllocWS(150); \ 00000004 9600A0E3 MOV R0,#+150 \ 00000008 250100EF SWI +293 \ 0000000C 0040A0E1 MOV R4,R0 119 str_2ws(ws,successed_config_filename,128); \ 00000010 30009FE5 LDR R0,??EditConfig_0 ;; successed_config_filename \ 00000014 8020A0E3 MOV R2,#+128 \ 00000018 001090E5 LDR R1,[R0, #+0] \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 6C0100EF SWI +364 120 ExecuteFile(ws,0,0); \ 00000024 0020A0E3 MOV R2,#+0 \ 00000028 0010A0E3 MOV R1,#+0 \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 940000EF SWI +148 121 FreeWS(ws); \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 290100EF SWI +297 122 GeneralFuncF1(1); \ 0000003C 0100A0E3 MOV R0,#+1 \ 00000040 3B0100EF SWI +315 123 } \ 00000044 1080BDE8 POP {R4,PC} ;; return \ ??EditConfig_0: \ 00000048 ........ DC32 successed_config_filename 124 \ In segment CODE, align 4, keep-with-next 125 static void Disconnect(void) 126 { 127 extern volatile int disautorecconect; 128 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] 129 extern void end_socket(void); 130 SUBPROC((void*)end_socket); \ 00000010 10009FE5 LDR R0,??Disconnect_0+0x4 ;; end_socket \ 00000014 710100EF SWI +369 131 GeneralFuncF1(1); \ 00000018 0100A0E3 MOV R0,#+1 \ 0000001C 3B0100EF SWI +315 132 } \ 00000020 0080BDE8 POP {PC} ;; return \ ??Disconnect_0: \ 00000024 ........ DC32 disautorecconect \ 00000028 ........ DC32 end_socket 133 134 extern int uins; 135 char hmm1[64]; 136 \ In segment CODE, align 4, keep-with-next 137 static void PingToServer(void) 138 { 139 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] 140 TPKT *p; 141 p=malloc(sizeof(PKT)+sizeof(TTime)); \ 00000010 1000A0E3 MOV R0,#+16 \ 00000014 140000EF SWI +20 \ 00000018 0040A0E1 MOV R4,R0 142 GetDateTime(NULL,(TTime *)p->data); \ 0000001C 081084E2 ADD R1,R4,#+8 \ 00000020 0000A0E3 MOV R0,#+0 \ 00000024 B40000EF SWI +180 143 p->pkt.uin=0; \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 000084E5 STR R0,[R4, #+0] 144 p->pkt.type=T_ECHO; \ 00000030 1200A0E3 MOV R0,#+18 \ 00000034 B400C4E1 STRH R0,[R4, #+4] 145 p->pkt.data_len=sizeof(TTime); \ 00000038 0800A0E3 MOV R0,#+8 \ 0000003C B600C4E1 STRH R0,[R4, #+6] 146 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 147 } \ 00000050 1080BDE8 POP {R4,PC} ;; return \ ??PingToServer_0: \ 00000054 ........ DC32 janis \ 00000058 ........ DC32 SendAnswer 148 \ In segment CODE, align 4, keep-with-next 149 static void AboutDlg() 150 { 151 char s[256]; 152 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 3530A0E3 MOV R3,#+53 \ 00000010 703E83E3 ORR R3,R3,#0x700 \ 00000014 FF10A0E3 MOV R1,#+255 \ 00000018 0D00A0E1 MOV R0,SP \ 0000001C 1B0100EF SWI +283 153 ShowMSG(2, (int)s); \ 00000020 0D10A0E1 MOV R1,SP \ 00000024 0200A0E3 MOV R0,#+2 \ 00000028 480100EF SWI +328 154 } \ 0000002C 40DF8DE2 ADD SP,SP,#+256 \ 00000030 0080BDE8 POP {PC} ;; return \ ??AboutDlg_0: \ 00000034 ........ DC32 `?` 155 156 static const HEADER_DESC menuhdr={0,0,0,0,NULL,(int)LG_MENU,LGP_NULL}; 157 158 static const int mmenusoftkeys[]={0,1,2}; 159 #ifdef NEWSGOLD 160 #ifdef ELKA 161 static const char * const menutexts[22]= 162 #else 163 static const char * const menutexts[19]= 164 #endif 165 #else 166 static const char * const menutexts[19]= 167 #endif 168 { 169 LG_MNUSTATUS, 170 LG_MNUXSTATUS, 171 LG_MANAGELIST, 172 #ifdef NEWSGOLD 173 LG_ID3TAG, 174 #endif 175 "Автоответчик", 176 LG_MNUVIBRA, 177 LG_MNUSOUND, 178 LG_INCMSG, 179 #ifdef ELKA 180 LG_MNUSLION, 181 #endif 182 LG_MNUSMARTCPU, 183 LG_REMINDERON, 184 LG_MNUILUON, 185 LG_MNUPINGON, 186 LG_MNUUPTIMEON, 187 LG_MNUSHOWOFF, 188 LG_MNUSHOWGROUP, 189 LG_MNUEDCFG, 190 LG_MNUDISCONNECT, 191 LG_MSGINFO, 192 LG_MNUPING, 193 LG_MNUABOUT, 194 "Автобот" 195 }; 196 197 /*MENUITEM_DESC menuitems[7]= 198 { 199 {S_ICONS, (int)LG_MNUSTATUS, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 200 {NULL, (int)LG_MNUADDCONT, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 201 {icon_array, (int)LG_MNUVIBRA, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 202 {icon_array, (int)LG_MNUSOUND, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 203 {NULL, (int)LG_MNUEDCFG, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 204 {NULL, (int)LG_MNUPING , LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 205 {S_ICONS, (int)LG_MNUABOUT, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 206 };*/ 207 #ifdef ELKA \ In segment CODE, align 4, keep-with-next 208 static void ChangeSLIMode(void) 209 { 210 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] 211 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 212 RefreshGUI(); \ 00000024 960100EF SWI +406 213 } \ 00000028 0080BDE8 POP {PC} ;; return 214 #endif \ In segment CODE, align 4, keep-with-next 215 static void ChangeSMARTCPUMode(void) 216 { 217 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] 218 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 219 RefreshGUI(); \ 00000024 960100EF SWI +406 220 } \ 00000028 0080BDE8 POP {PC} ;; return 221 #ifdef NEWSGOLD \ In segment CODE, align 4, keep-with-next 222 static void ChangeINCMode(void) 223 { 224 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] 225 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 226 RefreshGUI(); \ 00000024 960100EF SWI +406 227 } \ 00000028 0080BDE8 POP {PC} ;; return 228 #endif \ In segment CODE, align 4, keep-with-next 229 static void ChangeILUMode(void) 230 { 231 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] 232 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 233 RefreshGUI(); \ 00000024 960100EF SWI +406 234 } \ 00000028 0080BDE8 POP {PC} ;; return 235 \ In segment CODE, align 4, keep-with-next 236 static void ChangePINGMode(void) 237 { 238 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] 239 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 240 RefreshGUI(); \ 00000024 960100EF SWI +406 241 } \ 00000028 0080BDE8 POP {PC} ;; return 242 \ In segment CODE, align 4, keep-with-next 243 static void ChangeUPTIMEMode(void) 244 { 245 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] 246 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 247 RefreshGUI(); \ 00000024 960100EF SWI +406 248 } \ 00000028 0080BDE8 POP {PC} ;; return 249 250 int main_count; 251 int main2_count; 252 \ In segment CODE, align 4, keep-with-next 253 static void MSG_Info(void) 254 { \ MSG_Info: \ 00000000 10402DE9 PUSH {R4,LR} 255 char *info=malloc(64); \ 00000004 4000A0E3 MOV R0,#+64 \ 00000008 140000EF SWI +20 256 sprintf(info, "sent: %d\n" 257 "recv: %d", main2_count, main_count); \ 0000000C 2C109FE5 LDR R1,??MSG_Info_0 ;; `?` \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 28009FE5 LDR R0,??MSG_Info_0+0x4 ;; main_count \ 00000018 003090E5 LDR R3,[R0, #+0] \ 0000001C 042090E5 LDR R2,[R0, #+4] \ 00000020 0400A0E1 MOV R0,R4 \ 00000024 160000EF SWI +22 258 ShowMSG(1,(int)info); \ 00000028 0410A0E1 MOV R1,R4 \ 0000002C 0100A0E3 MOV R0,#+1 \ 00000030 480100EF SWI +328 259 mfree(info); \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 150000EF SWI +21 260 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??MSG_Info_0: \ 00000040 ........ DC32 `?` \ 00000044 ........ DC32 main_count 261 \ In segment CODE, align 4, keep-with-next 262 static void ChangeDoubleVibra(void) 263 { 264 Is_Double_Vibra_On=!(Is_Double_Vibra_On); \ ChangeDoubleVibra: \ 00000000 ........ LDR R0,??DataTable33 ;; 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] 265 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable24 ;; WriteDefSettings \ 00000020 710100EF SWI +369 266 RefreshGUI(); \ 00000024 960100EF SWI +406 267 } \ 00000028 0080BDE8 POP {PC} ;; return 268 269 #ifdef NEWSGOLD 270 #ifdef ELKA \ In segment DATA_I, align 4, align-sorted 271 static const void *menuprocs[22]= \ menuprocs: \ 00000000 DS8 88 \ 00000058 REQUIRE `?` 272 #else 273 static const void *menuprocs[19]= 274 #endif 275 #else 276 static const void *menuprocs[18]= 277 #endif 278 { 279 (void *)DispStatusChangeMenu, 280 (void *)DispXStatusChangeMenu, 281 (void *)CreateManageCLMenu, 282 #ifdef NEWSGOLD 283 (void *)ChangeId3tagMode, 284 #endif 285 (void *)AutoAwayMSG, 286 (void *)ChangeVibraMode, 287 (void *)ChangeSoundMode, 288 #ifdef NEWSGOLD 289 (void *)ChangeINCMode, 290 #endif 291 #ifdef ELKA 292 (void *)ChangeSLIMode, 293 #endif 294 (void *)ChangeSMARTCPUMode, 295 (void *)ChangeDoubleVibra, 296 (void *)ChangeILUMode, 297 (void *)ChangePINGMode, 298 (void *)ChangeUPTIMEMode, 299 (void *)ChangeShowOfflineMode, 300 (void *)ChangeShowGroupsMode, 301 (void *)EditConfig, 302 (void *)Disconnect, 303 (void *)MSG_Info, 304 (void *)PingToServer, 305 (void *)AboutDlg, 306 (void *)AutobotInit, 307 }; 308 309 static const SOFTKEY_DESC mmenu_sk[]= 310 { 311 {0x0018,0x0000,(int)LG_SELECT}, 312 {0x0001,0x0000,(int)LG_BACK}, 313 {0x003D,0x0000,(int)LGP_DOIT_PIC} 314 }; 315 316 static const SOFTKEYSTAB mmenu_skt= 317 { 318 mmenu_sk,0 319 }; 320 \ In segment CODE, align 4, keep-with-next 321 void tmenu_ghook(void *data, int cmd) 322 { \ tmenu_ghook: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0140A0E1 MOV R4,R1 323 PNGTOP_DESC *pltop=PNG_TOP(); \ 00000008 B98100EF SWI +33209 324 if (cmd==9) \ 0000000C 090054E3 CMP R4,#+9 325 { 326 pltop->dyn_pltop=NULL; \ 00000010 0010A003 MOVEQ R1,#+0 \ 00000014 08108005 STREQ R1,[R0, #+8] \ 00000018 1080BD08 POPEQ {R4,PC} 327 } 328 if (cmd==0x0A) \ 0000001C 0A0054E3 CMP R4,#+10 \ 00000020 1080BD18 POPNE {R4,PC} 329 { 330 pltop->dyn_pltop=XStatusesImgList; \ 00000024 0C109FE5 LDR R1,??tmenu_ghook_0 ;; XStatusesImgList \ 00000028 001091E5 LDR R1,[R1, #+0] \ 0000002C 081080E5 STR R1,[R0, #+8] 331 DisableIDLETMR(); \ 00000030 7F0100EF SWI +383 332 } 333 } \ 00000034 1080BDE8 POP {R4,PC} ;; return \ ??tmenu_ghook_0: \ 00000038 ........ DC32 XStatusesImgList \ In segment DATA_Z, align 4, align-sorted 334 335 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 336 \ In segment CODE, align 4, keep-with-next 337 static void menuitemhandler(void *data, int curitem, void *unk) 338 { \ menuitemhandler: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 339 WSHDR *ws; 340 void *item=AllocMenuItem(data); \ 0000000C 970100EF SWI +407 \ 00000010 0060A0E1 MOV R6,R0 \ 00000014 48019FE5 LDR R0,??menuitemhandler_1 ;; menutexts \ 00000018 058190E7 LDR R8,[R0, +R5, LSL #+2] \ 0000001C 0800A0E1 MOV R0,R8 341 extern const char percent_t[]; 342 ws=AllocMenuWS(data,strlen(menutexts[curitem])); \ 00000020 1B0000EF SWI +27 \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0400A0E1 MOV R0,R4 \ 0000002C 980100EF SWI +408 343 wsprintf(ws,percent_t,menutexts[curitem]); \ 00000030 30119FE5 LDR R1,??menuitemhandler_1+0x4 ;; percent_t \ 00000034 0070A0E1 MOV R7,R0 \ 00000038 0820A0E1 MOV R2,R8 \ 0000003C 240100EF SWI +292 344 switch(curitem) \ 00000040 24219FE5 LDR R2,??menuitemhandler_1+0x8 ;; S_ICONS \ 00000044 ........ LDR R0,??DataTable39 ;; icon_array \ 00000048 0510A0E1 MOV R1,R5 \ 0000004C 150051E3 CMP R1,#+21 \ 00000050 3D00008A 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 13151719 DC8 +19,+21,+23,+25 \ 00000068 1B1D1F21 DC8 +27,+29,+31,+33 \ 0000006C 23252729 DC8 +35,+37,+39,+41 \ 00000070 2B372D2F DC8 +43,+55,+45,+47 \ 00000074 2D310000 DC8 +45,+49,+0,+0 345 { 346 case 0: 347 SetMenuItemIconArray(data,item,S_ICONS+CurrentStatus); \ ??menuitemhandler_3: \ 00000078 F0009FE5 LDR R0,??menuitemhandler_1+0xC ;; CurrentStatus \ 0000007C 000090E5 LDR R0,[R0, #+0] \ 00000080 002182E0 ADD R2,R2,R0, LSL #+2 \ 00000084 2D0000EA B ??menuitemhandler_4 348 break; 349 case 1: 350 SetMenuItemIconArray(data,item,XStatusesIconArray+CurrentXStatus); \ ??menuitemhandler_5: \ 00000088 E4009FE5 LDR R0,??menuitemhandler_1+0x10 ;; CurrentXStatus \ 0000008C E4109FE5 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 270000EA B ??menuitemhandler_4 351 break; 352 case 2: 353 SetMenuItemIconArray(data,item,S_ICONS+ICON_ADDCONTACT); \ ??menuitemhandler_6: \ 000000A0 482082E2 ADD R2,R2,#+72 \ 000000A4 250000EA B ??menuitemhandler_4 354 break; 355 #ifdef NEWSGOLD 356 case 3: 357 SetMenuItemIconArray(data,item,icon_array+(Is_Id3tag_Enabled?0:1)); \ ??menuitemhandler_7: \ 000000A8 ........ LDR R1,??DataTable26 ;; Is_Id3tag_Enabled \ 000000AC 1E0000EA B ??menuitemhandler_8 358 break; 359 case 4: 360 SetMenuItemIconArray(data,item,icon_array+(away_m?0:1)); \ ??menuitemhandler_9: \ 000000B0 ........ LDR R1,??DataTable27 ;; away_m \ 000000B4 1C0000EA B ??menuitemhandler_8 361 break; 362 case 5: 363 SetMenuItemIconArray(data,item,icon_array+(Is_Vibra_Enabled?0:1)); \ ??menuitemhandler_10: \ 000000B8 ........ LDR R1,??DataTable28 ;; Is_Vibra_Enabled \ 000000BC 1A0000EA B ??menuitemhandler_8 364 break; 365 case 6: 366 SetMenuItemIconArray(data,item,icon_array+(Is_Sounds_Enabled?0:1)); \ ??menuitemhandler_11: \ 000000C0 ........ LDR R1,??DataTable29 ;; Is_Sounds_Enabled \ 000000C4 180000EA B ??menuitemhandler_8 367 break; 368 #ifdef ELKA 369 case 7: 370 SetMenuItemIconArray(data,item,icon_array+(Is_INC_On?0:1)); \ ??menuitemhandler_12: \ 000000C8 ........ LDR R1,??DataTable30 ;; Is_INC_On \ 000000CC 160000EA B ??menuitemhandler_8 371 break; 372 case 8: 373 SetMenuItemIconArray(data,item,icon_array+(Is_SLI_On?0:1)); \ ??menuitemhandler_13: \ 000000D0 ........ LDR R1,??DataTable31 ;; Is_SLI_On \ 000000D4 140000EA B ??menuitemhandler_8 374 break; 375 case 9: 376 SetMenuItemIconArray(data,item,icon_array+(Is_SMARTCPU_On?0:1)); \ ??menuitemhandler_14: \ 000000D8 ........ LDR R1,??DataTable32 ;; Is_SMARTCPU_On \ 000000DC 120000EA B ??menuitemhandler_8 377 break; 378 case 10: 379 SetMenuItemIconArray(data,item,icon_array+(Is_Double_Vibra_On?0:1)); \ ??menuitemhandler_15: \ 000000E0 ........ LDR R1,??DataTable33 ;; Is_Double_Vibra_On \ 000000E4 100000EA B ??menuitemhandler_8 380 break; 381 case 11: 382 SetMenuItemIconArray(data,item,icon_array+(Is_ILU_On?0:1)); \ ??menuitemhandler_16: \ 000000E8 ........ LDR R1,??DataTable34 ;; Is_ILU_On \ 000000EC 0E0000EA B ??menuitemhandler_8 383 break; 384 case 12: 385 SetMenuItemIconArray(data,item,icon_array+(Is_PING_On?0:1)); \ ??menuitemhandler_17: \ 000000F0 ........ LDR R1,??DataTable35 ;; Is_PING_On \ 000000F4 0C0000EA B ??menuitemhandler_8 386 break; 387 case 13: 388 SetMenuItemIconArray(data,item,icon_array+(Is_UPTIME_On?0:1)); \ ??menuitemhandler_18: \ 000000F8 ........ LDR R1,??DataTable36 ;; Is_UPTIME_On \ 000000FC 0A0000EA B ??menuitemhandler_8 389 break; 390 case 14: 391 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Offline?0:1)); \ ??menuitemhandler_19: \ 00000100 ........ LDR R1,??DataTable37 ;; Is_Show_Offline \ 00000104 080000EA B ??menuitemhandler_8 392 break; 393 case 15: 394 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Groups?0:1)); \ ??menuitemhandler_20: \ 00000108 ........ LDR R1,??DataTable38 ;; Is_Show_Groups \ 0000010C 060000EA B ??menuitemhandler_8 395 break; 396 case 16: 397 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); \ ??menuitemhandler_21: \ 00000110 582082E2 ADD R2,R2,#+88 \ 00000114 090000EA B ??menuitemhandler_4 398 break; 399 case 17: 400 SetMenuItemIconArray(data,item,S_ICONS+IS_OFFLINE); 401 break; 402 case 18: 403 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); \ ??menuitemhandler_22: \ 00000118 382082E2 ADD R2,R2,#+56 \ 0000011C 070000EA B ??menuitemhandler_4 404 break; 405 case 19: 406 SetMenuItemIconArray(data,item,S_ICONS+ICON_PING); \ ??menuitemhandler_23: \ 00000120 542082E2 ADD R2,R2,#+84 \ 00000124 050000EA B ??menuitemhandler_4 407 break; 408 case 20: 409 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 410 break; 411 case 21: 412 SetMenuItemIconArray(data,item,icon_array+(autobot?0:1)); \ ??menuitemhandler_24: \ 00000128 4C109FE5 LDR R1,??menuitemhandler_1+0x18 ;; autobot \ ??menuitemhandler_8: \ 0000012C 001091E5 LDR R1,[R1, #+0] \ 00000130 000051E3 CMP R1,#+0 \ 00000134 0010A013 MOVNE R1,#+0 \ 00000138 0110A003 MOVEQ R1,#+1 \ 0000013C 012180E0 ADD R2,R0,R1, LSL #+2 \ ??menuitemhandler_4: \ 00000140 0610A0E1 MOV R1,R6 \ 00000144 0400A0E1 MOV R0,R4 \ 00000148 990100EF SWI +409 413 break; 414 #else 415 case 6: 416 SetMenuItemIconArray(data,item,icon_array+(Is_INC_On?0:1)); 417 break; 418 case 7: 419 SetMenuItemIconArray(data,item,icon_array+(Is_SMARTCPU_On?0:1)); 420 break; 421 case 8: 422 SetMenuItemIconArray(data,item,icon_array+(Is_Double_Vibra_On?0:1)); 423 break; 424 case 9: 425 SetMenuItemIconArray(data,item,icon_array+(Is_ILU_On?0:1)); 426 break; 427 case 10: 428 SetMenuItemIconArray(data,item,icon_array+(Is_PING_On?0:1)); 429 break; 430 case 11: 431 SetMenuItemIconArray(data,item,icon_array+(Is_UPTIME_On?0:1)); 432 break; 433 case 12: 434 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Offline?0:1)); 435 break; 436 case 13: 437 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Groups?0:1)); 438 break; 439 case 14: 440 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 441 break; 442 case 15: 443 SetMenuItemIconArray(data,item,S_ICONS+IS_OFFLINE); 444 break; 445 case 16: 446 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 447 break; 448 case 17: 449 SetMenuItemIconArray(data,item,S_ICONS+ICON_PING); 450 break; 451 case 18: 452 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 453 break; 454 #endif 455 #else 456 case 3: 457 SetMenuItemIconArray(data,item,icon_array+(Is_Vibra_Enabled?0:1)); 458 break; 459 case 4: 460 SetMenuItemIconArray(data,item,icon_array+(Is_Sounds_Enabled?0:1)); 461 break; 462 case 5: 463 SetMenuItemIconArray(data,item,icon_array+(Is_SMARTCPU_On?0:1)); 464 break; 465 case 6: 466 SetMenuItemIconArray(data,item,icon_array+(Is_Double_Vibra_On?0:1)); 467 break; 468 case 7: 469 SetMenuItemIconArray(data,item,icon_array+(Is_ILU_On?0:1)); 470 break; 471 case 8: 472 SetMenuItemIconArray(data,item,icon_array+(Is_PING_On?0:1)); 473 break; 474 case 9: 475 SetMenuItemIconArray(data,item,icon_array+(Is_UPTIME_On?0:1)); 476 break; 477 case 10: 478 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Offline?0:1)); 479 break; 480 case 11: 481 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Groups?0:1)); 482 break; 483 case 12: 484 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 485 break; 486 case 13: 487 SetMenuItemIconArray(data,item,S_ICONS+IS_OFFLINE); 488 break; 489 case 14: 490 SetMenuItemIconArray(data,item,S_ICONS+ICON_PING); 491 break; 492 case 15: 493 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 494 break; 495 case 16: 496 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 497 break; 498 #endif 499 } 500 SetMenuItemText(data, item, ws, curitem); \ ??menuitemhandler_2: \ 0000014C 0530A0E1 MOV R3,R5 \ 00000150 0720A0E1 MOV R2,R7 \ 00000154 0610A0E1 MOV R1,R6 \ 00000158 0400A0E1 MOV R0,R4 \ 0000015C 9A0100EF SWI +410 501 } \ 00000160 F081BDE8 POP {R4-R8,PC} ;; return \ ??menuitemhandler_1: \ 00000164 ........ DC32 menutexts \ 00000168 ........ DC32 percent_t \ 0000016C ........ DC32 S_ICONS \ 00000170 ........ DC32 CurrentStatus \ 00000174 ........ DC32 CurrentXStatus \ 00000178 ........ DC32 XStatusesIconArray \ 0000017C ........ DC32 autobot 502 \ In segment CODE, align 4, keep-with-next 503 static int tmenu_keyhook(void *data, GUI_MSG *msg) 504 { \ tmenu_keyhook: \ 00000000 00402DE9 PUSH {LR} 505 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 506 { 507 ((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 508 } 509 return(0); \ ??tmenu_keyhook_0: \ 00000024 0000A0E3 MOV R0,#+0 \ 00000028 0080BDE8 POP {PC} ;; return \ ??tmenu_keyhook_1: \ 0000002C ........ DC32 menuprocs 510 } \ 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, 21 \ 000000000000 \ 15000000 \ 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 `?` \ 00000020 ........ DC32 `?` \ 00000024 ........ DC32 `?` \ 00000028 ........ DC32 `?` \ 0000002C ........ DC32 `?` \ 00000030 ............ DC32 `?`, `?` \ .... \ 00000038 ........ DC32 `?` \ 00000040 ........ DC32 `?`, `?` \ .... \ 00000050 ........ 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 511 512 513 static const MENU_DESC tmenu= 514 { 515 8,tmenu_keyhook,tmenu_ghook,NULL, 516 mmenusoftkeys, 517 &mmenu_skt, 518 0x11,//MENU_FLAG, 519 menuitemhandler, 520 NULL,//menuitems, 521 NULL,//menuprocs, 522 #ifdef NEWSGOLD 523 #ifdef ELKA 524 21 525 #else 526 18 527 #endif 528 #else 529 16 530 #endif 531 }; 532 \ In segment CODE, align 4, keep-with-next 533 void ShowMainMenu() 534 { \ ShowMainMenu: \ 00000000 30402DE9 PUSH {R4,R5,LR} 535 icon_array[0]=GetPicNByUnicodeSymbol(CBOX_CHECKED); \ 00000004 ........ LDR R4,??DataTable39 ;; icon_array 536 icon_array[1]=GetPicNByUnicodeSymbol(CBOX_UNCHECKED); 537 *((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] 538 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] 539 #ifdef NEWSGOLD 540 #ifdef ELKA 541 MainMenu_ID=CreateMenu(0,0,&tmenu,&menuhdr,0,22,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] 542 #else 543 MainMenu_ID=CreateMenu(0,0,&tmenu,&menuhdr,0,19,0,0); 544 #endif 545 #else 546 MainMenu_ID=CreateMenu(0,0,&tmenu,&menuhdr,0,17,0,0); 547 #endif 548 } \ 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 Disconnect, MSG_Info, PingToServer, AboutDlg, AutobotInit \ ............ \ ............ \ .... \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4F6E6C696E65 DC8 "Online time" \ 2074696D6500 \ 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 4D534720496E DC8 "MSG Info" \ 666F00 \ 00000009 000000 DC8 0, 0, 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 C0E2F2EEE1EE DC8 "\300\342\362\356\341\356\362" \ F200 \ 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 73656E743A20 DC8 "sent: %d\012recv: %d" \ 25640A726563 \ 763A20256400 \ 00000012 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 506F70757020 DC8 "Popup sender" \ 73656E646572 \ 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 \ `?`: \ 00000000 4D61696E206D DC8 "Main msg. mode" \ 73672E206D6F \ 646500 \ 0000000F 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 D0E5E6E8EC20 DC8 "\320\345\346\350\354 Vibra rem." \ 566962726120 \ 72656D2E00 \ 00000011 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 D0E5E6E8EC20 DC8 "\320\345\346\350\354 Ilum." \ 496C756D2E00 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4175746F2050 DC8 "Auto Ping" \ 696E6700 \ 0000000A 0000 DC8 0, 0 Maximum stack usage in bytes: Function CSTACK -------- ------ AboutDlg 260 AutoAwayMSG 12 ChangeDoubleVibra 4 ChangeILUMode 4 ChangeINCMode 4 ChangeId3tagMode 4 ChangePINGMode 4 ChangeSLIMode 4 ChangeSMARTCPUMode 4 ChangeShowGroupsMode 4 ChangeShowOfflineMode 4 ChangeSoundMode 4 ChangeUPTIMEMode 4 ChangeVibraMode 4 Disconnect 4 EditConfig 8 MSG_Info 8 PingToServer 8 ShowMainMenu 28 menuitemhandler 24 tmenu_ghook 8 tmenu_keyhook 4 Segment part sizes: Function/Label Bytes -------------- ----- ChangeVibraMode 44 ChangeId3tagMode 48 AutoAwayMSG 120 ChangeSoundMode 44 ChangeShowOfflineMode 52 ChangeShowGroupsMode 56 EditConfig 76 Disconnect 44 PingToServer 92 AboutDlg 56 ChangeSLIMode 44 ChangeSMARTCPUMode 44 ChangeINCMode 44 ChangeILUMode 44 ChangePINGMode 44 ChangeUPTIMEMode 44 MSG_Info 72 ChangeDoubleVibra 44 menuprocs 88 tmenu_ghook 60 icon_array 12 janis 4 hmm1 64 main_count 8 menuitemhandler 384 tmenu_keyhook 48 menuhdr 64 mmenusoftkeys 12 menutexts 88 mmenu_sk 24 mmenu_skt 8 ShowMainMenu 152 ??DataTable24 4 ??DataTable26 4 ??DataTable27 4 ??DataTable28 4 ??DataTable29 4 ??DataTable30 4 ??DataTable31 4 ??DataTable32 4 ??DataTable33 4 ??DataTable34 4 ??DataTable35 4 ??DataTable36 4 ??DataTable37 4 ??DataTable38 4 ??DataTable39 4 ? 88 ? 12 ? 8 ? 12 ? 8 ? 12 ? 8 ? 8 ? 8 ? 68 ? 8 ? 8 ? 12 ? 16 ? 20 ? 16 ? 12 ? 16 ? 20 ? 12 ? 12 Others 160 1 852 bytes in segment CODE 596 bytes in segment DATA_C 88 bytes in segment DATA_I 88 bytes in segment DATA_ID 88 bytes in segment DATA_Z 24 bytes in segment INITTAB 1 716 bytes of CODE memory (+ 160 bytes shared) 684 bytes of CONST memory 176 bytes of DATA memory Errors: none Warnings: none