############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 10/Dec/2010 22:12:01 # # 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\Release\List\ -lC # # D:\pasha\elf\_MY_PROJECT_\naticq_mod2\Release\List\ # # -o D:\pasha\elf\_MY_PROJECT_\naticq_mod2\Release\Obj # # \ -s9 --no_unroll --cpu_mode arm --endian little # # --cpu ARM926EJ-S --stack_align 4 --interwork # # --separate_cluster_for_initialized_variables -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\Release\List\m # # ainmenu.lst # # Object file = D:\pasha\elf\_MY_PROJECT_\naticq_mod2\Release\Obj\ma # # inmenu.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 S_ICONS[]; 26 extern const SOFTKEYSTAB menu_skt; 27 extern int Is_INC_On; 28 extern int Is_SLI_On; 29 extern int Is_ILU_On; 30 extern int Is_Double_Vibra_On; \ In segment DATA_Z, align 4, align-sorted 31 int janis; \ janis: \ 00000000 DS8 4 32 extern int Is_PING_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 extern int IsActiveUp; 41 42 int isAbout=0; 43 \ In segment CODE, align 4, keep-with-next 44 void ChangeActiveUp(void) 45 { 46 IsActiveUp=!(IsActiveUp); \ ChangeActiveUp: \ 00000000 ........ LDR R0,??DataTable36 ;; 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] 47 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; WriteDefSettings \ 00000020 710100EF SWI +369 48 RefreshGUI(); \ 00000024 960100EF SWI +406 49 } \ 00000028 0080BDE8 POP {PC} ;; return 50 \ In segment CODE, align 4, keep-with-next 51 void ChangeVibraMode(void) 52 { 53 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] 54 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; WriteDefSettings \ 00000020 710100EF SWI +369 55 RefreshGUI(); \ 00000024 960100EF SWI +406 56 } \ 00000028 0080BDE8 POP {PC} ;; return 57 #ifdef NEWSGOLD \ In segment CODE, align 4, keep-with-next 58 void ChangeId3tagMode(void) 59 { 60 Is_Id3tag_Enabled=!(Is_Id3tag_Enabled); \ ChangeId3tagMode: \ 00000000 ........ LDR R0,??DataTable37 ;; 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] 61 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; WriteDefSettings \ 00000020 710100EF SWI +369 62 RefreshGUI(); \ 00000024 960100EF SWI +406 63 set_my_xstatus(); \ 00000028 0040BDE8 POP {LR} ;; Pop \ 0000002C ........ _BF set_my_xstatus,??set_my_xstatus??rA ;; tailcall 64 } 65 #endif 66 67 extern int msg_away_timer; 68 extern GBSTMR away_tmr; 69 extern void away_timer(); 70 extern int main_d; 71 extern int away_m; 72 extern int change_back_status; 73 extern int status_rem; 74 //extern void UpdateCLheader(void); 75 \ In segment CODE, align 4, keep-with-next 76 void AutoAwayMSG(void) 77 { 78 if(!away_m) \ AutoAwayMSG: \ 00000000 ........ LDR R0,??DataTable27 ;; 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 79 { 80 away_m=!away_m; \ 00000018 0150A0E3 MOV R5,#+1 \ 0000001C 005080E5 STR R5,[R0, #+0] 81 GBS_StopTimer(&away_tmr); \ 00000020 68009FE5 LDR R0,??AutoAwayMSG_0+0x4 ;; away_tmr \ 00000024 440100EF SWI +324 82 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] 83 away_timer(); \ 0000003C ........ _BLF away_timer,??away_timer??rA 84 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} 85 } 86 else 87 { 88 msg_away_timer=0; \ ??AutoAwayMSG_1: \ 00000050 0050A0E3 MOV R5,#+0 \ 00000054 005084E5 STR R5,[R4, #+0] 89 away_m=!away_m; 90 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 91 { 92 CurrentStatus=status_rem; \ 0000006C 2C109FE5 LDR R1,??AutoAwayMSG_0+0x14 ;; status_rem \ 00000070 ........ LDR R0,??DataTable26 ;; CurrentStatus \ 00000074 001091E5 LDR R1,[R1, #+0] \ 00000078 001080E5 STR R1,[R0, #+0] 93 set_my_status(); \ 0000007C ........ _BLF set_my_status,??set_my_status??rA 94 change_back_status=0; \ 00000080 005084E5 STR R5,[R4, #+0] 95 } 96 } 97 // UpdateCLheader(); 98 RefreshGUI(); \ ??AutoAwayMSG_2: \ 00000084 960100EF SWI +406 99 } \ 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 100 101 \ In segment CODE, align 4, keep-with-next 102 void ChangeSoundMode(void) 103 { 104 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] 105 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; WriteDefSettings \ 00000020 710100EF SWI +369 106 RefreshGUI(); \ 00000024 960100EF SWI +406 107 } \ 00000028 0080BDE8 POP {PC} ;; return 108 \ In segment CODE, align 4, keep-with-next 109 void ChangeShowOfflineMode(void) 110 { 111 void RecountMenu(CLIST *req, int needfocus); 112 Is_Show_Offline=!(Is_Show_Offline); \ ChangeShowOfflineMode: \ 00000000 ........ LDR R0,??DataTable34 ;; 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] 113 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; WriteDefSettings \ 00000020 710100EF SWI +369 114 RecountMenu(NULL,1); \ 00000024 0110A0E3 MOV R1,#+1 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C ........ _BLF RecountMenu,??RecountMenu??rA 115 RefreshGUI(); \ 00000030 960100EF SWI +406 116 } \ 00000034 0080BDE8 POP {PC} ;; return 117 \ In segment CODE, align 4, keep-with-next 118 void ChangeShowGroupsMode(void) 119 { 120 void RecountMenu(CLIST *req,int needfocus); 121 Is_Show_Groups=!(Is_Show_Groups); \ ChangeShowGroupsMode: \ 00000000 ........ LDR R0,??DataTable35 ;; 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] 122 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; WriteDefSettings \ 00000020 710100EF SWI +369 123 ResortCL(); \ 00000024 ........ _BLF ResortCL,??ResortCL??rA 124 RecountMenu(NULL,1); \ 00000028 0110A0E3 MOV R1,#+1 \ 0000002C 0000A0E3 MOV R0,#+0 \ 00000030 ........ _BLF RecountMenu,??RecountMenu??rA 125 RefreshGUI(); \ 00000034 960100EF SWI +406 126 } \ 00000038 0080BDE8 POP {PC} ;; return 127 128 //extern int get_file_size(char* fname); 129 extern char suc_config_name[64]; 130 //extern char suc_config_name_mod[64]; 131 extern const char *suc_config_name_mod; \ In segment CODE, align 4, keep-with-next 132 void EditConfig(void) 133 { \ EditConfig: \ 00000000 10402DE9 PUSH {R4,LR} 134 WSHDR *ws; 135 ws=AllocWS(150); \ 00000004 9600A0E3 MOV R0,#+150 \ 00000008 250100EF SWI +293 136 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 137 ExecuteFile(ws,0,0); \ 0000001C 0020A0E3 MOV R2,#+0 \ 00000020 0010A0E3 MOV R1,#+0 \ 00000024 0400A0E1 MOV R0,R4 \ 00000028 940000EF SWI +148 138 FreeWS(ws); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 290100EF SWI +297 139 GeneralFuncF1(1); \ 00000034 0100A0E3 MOV R0,#+1 \ 00000038 3B0100EF SWI +315 140 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??EditConfig_0: \ 00000040 ........ DC32 suc_config_name 141 \ In segment CODE, align 4, keep-with-next 142 void EditConfigMod(void) 143 { \ EditConfigMod: \ 00000000 10402DE9 PUSH {R4,LR} 144 WSHDR *ws; 145 ws=AllocWS(150); \ 00000004 9600A0E3 MOV R0,#+150 \ 00000008 250100EF SWI +293 \ 0000000C 0040A0E1 MOV R4,R0 146 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 147 ExecuteFile(ws,0,0); \ 00000024 0020A0E3 MOV R2,#+0 \ 00000028 0010A0E3 MOV R1,#+0 \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 940000EF SWI +148 148 FreeWS(ws); \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 290100EF SWI +297 149 GeneralFuncF1(1); \ 0000003C 0100A0E3 MOV R0,#+1 \ 00000040 3B0100EF SWI +315 150 } \ 00000044 1080BDE8 POP {R4,PC} ;; return \ ??EditConfigMod_0: \ 00000048 ........ DC32 suc_config_name_mod 151 152 \ In segment CODE, align 4, keep-with-next 153 void Disconnect(void) 154 { 155 extern volatile int disautorecconect; 156 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] 157 extern void end_socket(void); 158 SUBPROC((void*)end_socket); \ 00000010 10009FE5 LDR R0,??Disconnect_0+0x4 ;; end_socket \ 00000014 710100EF SWI +369 159 GeneralFuncF1(1); \ 00000018 0100A0E3 MOV R0,#+1 \ 0000001C 3B0100EF SWI +315 160 } \ 00000020 0080BDE8 POP {PC} ;; return \ ??Disconnect_0: \ 00000024 ........ DC32 disautorecconect \ 00000028 ........ DC32 end_socket 161 162 extern int uins; \ In segment DATA_Z, align 4, align-sorted 163 char hmm1[64]; \ hmm1: \ 00000000 DS8 64 164 \ In segment CODE, align 4, keep-with-next 165 void PingToServer(void) 166 { 167 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] 168 TPKT *p; 169 p=malloc(sizeof(PKT)+sizeof(TTime)); \ 00000010 1000A0E3 MOV R0,#+16 \ 00000014 140000EF SWI +20 \ 00000018 0040A0E1 MOV R4,R0 170 GetDateTime(NULL,(TTime *)p->data); \ 0000001C 081084E2 ADD R1,R4,#+8 \ 00000020 0000A0E3 MOV R0,#+0 \ 00000024 B40000EF SWI +180 171 p->pkt.uin=0; \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 000084E5 STR R0,[R4, #+0] 172 p->pkt.type=T_ECHO; \ 00000030 1200A0E3 MOV R0,#+18 \ 00000034 B400C4E1 STRH R0,[R4, #+4] 173 p->pkt.data_len=sizeof(TTime); \ 00000038 0800A0E3 MOV R0,#+8 \ 0000003C B600C4E1 STRH R0,[R4, #+6] 174 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 175 } \ 00000050 1080BDE8 POP {R4,PC} ;; return \ ??PingToServer_0: \ 00000054 ........ DC32 janis \ 00000058 ........ DC32 SendAnswer 176 \ In segment CODE, align 4, keep-with-next 177 void AboutDlg() 178 { 179 isAbout=1; \ AboutDlg: \ 00000000 ........ LDR R0,??DataTable53 ;; menuprocs + 84 \ 00000004 0110A0E3 MOV R1,#+1 \ 00000008 001080E5 STR R1,[R0, #+0] 180 //char s[256]; 181 //snprintf(s,255,LG_COPYRIGHT,__SVN_REVISION__); 182 // ShowMSG(2, (int)s); 183 } \ 0000000C 1EFF2FE1 BX LR ;; return 184 \ In segment CODE, align 4, keep-with-next 185 void SaveCL() 186 { 187 extern void CreateCLFile(void); 188 CreateCLFile(); \ SaveCL: \ 00000000 ........ _BF CreateCLFile,??CreateCLFile??rA ;; tailcall 189 } 190 191 #ifdef NEWSGOLD 192 #ifdef ELKA 193 #define MENU_ITEMS 22//ELKA 194 #else 195 #define MENU_ITEMS 21//NEWSGOLD 196 #endif 197 #else 198 #define MENU_ITEMS 20//SGOLD 199 #endif 200 201 static char *menutexts2[MENU_ITEMS]= 202 { 203 LG_MNUSTATUS, 204 LG_MNUXSTATUS, 205 LG_MANAGELIST, 206 LG_AUTOANSWER,//"Автоответчик", 207 LG_MNUVIBRA, 208 LG_MNUSOUND, 209 LG_INCMSG, 210 // LG_MNUSMARTCPU, 211 LG_REMINDERON, 212 LG_MNUILUON, 213 LG_MNUPINGON, 214 // LG_MNUUPTIMEON, 215 LG_MNUSHOWOFF, 216 LG_MNUSHOWGROUP, 217 LG_MNUEDCFG, 218 LG_MNUEDCFG_MOD, 219 LG_MNUDISCONNECT, 220 // LG_MSGINFO, 221 LG_SAVECL, 222 LG_MNUPING, 223 LG_MNUABOUT, 224 LG_ACTUP, 225 "Открыть лог", 226 #ifdef NEWSGOLD 227 LG_ID3TAG, 228 #endif 229 #ifdef ELKA 230 LG_MNUSLION, 231 #endif 232 }; 233 234 #ifdef ELKA 235 void ChangeSLIMode(void) 236 { 237 Is_SLI_On=!(Is_SLI_On); 238 SUBPROC((void*)WriteDefSettings); 239 RefreshGUI(); 240 } 241 #endif/* 242 void ChangeSMARTCPUMode(void) 243 { 244 Is_SMARTCPU_On=!(Is_SMARTCPU_On); 245 SUBPROC((void*)WriteDefSettings); 246 RefreshGUI(); 247 }*/ 248 //#ifdef NEWSGOLD \ In segment CODE, align 4, keep-with-next 249 void ChangeINCMode(void) 250 { 251 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] 252 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; WriteDefSettings \ 00000020 710100EF SWI +369 253 RefreshGUI(); \ 00000024 960100EF SWI +406 254 } \ 00000028 0080BDE8 POP {PC} ;; return 255 //#endif \ In segment CODE, align 4, keep-with-next 256 ChangeILUMode(void) 257 { 258 Is_ILU_On=!(Is_ILU_On); \ ChangeILUMode: \ 00000000 ........ LDR R0,??DataTable32 ;; 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] 259 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; 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 void ChangePINGMode(void) 264 { 265 Is_PING_On=!(Is_PING_On); \ ChangePINGMode: \ 00000000 ........ LDR R0,??DataTable33 ;; 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] 266 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; WriteDefSettings \ 00000020 710100EF SWI +369 267 RefreshGUI(); \ 00000024 960100EF SWI +406 268 } \ 00000028 0080BDE8 POP {PC} ;; return 269 /* 270 void ChangeUPTIMEMode(void) 271 { 272 Is_UPTIME_On=!(Is_UPTIME_On); 273 SUBPROC((void*)WriteDefSettings); 274 RefreshGUI(); 275 } 276 277 int main_count; 278 int main2_count; 279 280 void MSG_Info(void) 281 { 282 char *info=malloc(64); 283 sprintf(info, "Отправлено: %d\n" 284 "Принято: %d", main2_count, main_count); 285 ShowMSG(1,(int)info); 286 mfree(info); 287 }*/ 288 \ In segment CODE, align 4, keep-with-next 289 void ChangeDoubleVibra(void) 290 { 291 Is_Double_Vibra_On=!(Is_Double_Vibra_On); \ ChangeDoubleVibra: \ 00000000 ........ LDR R0,??DataTable31 ;; 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] 292 SUBPROC((void*)WriteDefSettings); \ 0000001C ........ LDR R0,??DataTable22 ;; WriteDefSettings \ 00000020 710100EF SWI +369 293 RefreshGUI(); \ 00000024 960100EF SWI +406 294 } \ 00000028 0080BDE8 POP {PC} ;; return 295 \ In segment CODE, align 4, keep-with-next 296 void CreateLogs(void) 297 { 298 extern void CreateLog(); 299 CreateLog(); \ CreateLogs: \ 00000000 ........ _BF CreateLog,??CreateLog??rA ;; tailcall 300 } 301 302 extern void CreateSCMenu(); 303 extern void CreateXSMenu(); 304 static const void *menuprocs[MENU_ITEMS]= 305 { 306 (void *)CreateSCMenu,//(void *)DispStatusChangeMenu, 307 (void *)CreateXSMenu,//DispXStatusChangeMenu, 308 (void *)CreateManageCLMenu, 309 (void *)AutoAwayMSG, 310 (void *)ChangeVibraMode, 311 (void *)ChangeSoundMode, 312 (void *)ChangeINCMode, 313 // (void *)ChangeSMARTCPUMode, 314 (void *)ChangeDoubleVibra, 315 (void *)ChangeILUMode, 316 (void *)ChangePINGMode, 317 // (void *)ChangeUPTIMEMode, 318 (void *)ChangeShowOfflineMode, 319 (void *)ChangeShowGroupsMode, 320 (void *)EditConfig, 321 (void *)EditConfigMod, 322 (void *)Disconnect, 323 // (void *)MSG_Info, 324 (void*)SaveCL, 325 (void *)PingToServer, 326 (void *)AboutDlg, 327 (void *)ChangeActiveUp, 328 (void *)CreateLogs, 329 #ifdef NEWSGOLD 330 (void *)ChangeId3tagMode, 331 #endif 332 #ifdef ELKA 333 (void *)ChangeSLIMode, 334 #endif 335 }; 336 337 338 339 340 static char *temp_chars; //Собственно файл 341 static char **menutexts; //Массив указателей на строки 342 \ In segment CODE, align 4, keep-with-next 343 void FreeMenu(void) 344 { \ FreeMenu: \ 00000000 10402DE9 PUSH {R4,LR} 345 if (menutexts) mfree(menutexts); \ 00000004 ........ LDR R4,??DataTable49 ;; mm_rc \ 00000008 0C0094E5 LDR R0,[R4, #+12] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0000000A BEQ ??FreeMenu_0 \ 00000014 150000EF SWI +21 346 if (temp_chars) mfree(temp_chars); \ ??FreeMenu_0: \ 00000018 080094E5 LDR R0,[R4, #+8] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 0100000A BEQ ??FreeMenu_1 \ 00000024 150000EF SWI +21 347 menutexts=NULL; \ 00000028 0000A0E3 MOV R0,#+0 \ ??FreeMenu_1: \ 0000002C 0C0084E5 STR R0,[R4, #+12] 348 temp_chars=NULL; \ 00000030 080084E5 STR R0,[R4, #+8] 349 } \ 00000034 1080BDE8 POP {R4,PC} ;; return 350 \ In segment CODE, align 4, keep-with-next 351 int LoadMenuLang() 352 { \ LoadMenuLang: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 4BDF4DE2 SUB SP,SP,#+300 353 FSTATS stat; 354 char fn[256]; 355 int f; 356 unsigned int ul; 357 int i; 358 int fsize; 359 char *p; 360 char *pp; 361 int c; 362 FreeMenu(); 363 strcpy(fn,TEMPLATES_PATH); 364 i=strlen(fn); 365 sprintf(fn+i,"\\langmenu.txt"); 366 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 367 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 368 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 369 p=temp_chars=malloc(fsize+1); \ 00000088 ........ LDR R4,??DataTable49 ;; mm_rc \ 0000008C 010087E2 ADD R0,R7,#+1 \ 00000090 140000EF SWI +20 \ 00000094 080084E5 STR R0,[R4, #+8] \ 00000098 0060A0E1 MOV R6,R0 370 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] 371 fclose(f,&ul); \ 000000B8 0D10A0E1 MOV R1,SP \ 000000BC 0800A0E1 MOV R0,R8 \ 000000C0 0D0000EF SWI +13 372 i=0; \ 000000C4 0070A0E3 MOV R7,#+0 373 pp=p; \ 000000C8 0680A0E1 MOV R8,R6 \ 000000CC 020000EA B ??LoadMenuLang_4 374 for(;;) 375 { 376 c=*p; 377 if (c<32) 378 { 379 if (pp&&(pp!=p)) 380 { 381 menutexts=realloc(menutexts,(i+1)*sizeof(char *)); 382 menutexts[i++]=pp; 383 } 384 pp=NULL; 385 if (!c) break; 386 *p=0; 387 } 388 else 389 { 390 if (pp==NULL) pp=p; \ ??LoadMenuLang_5: \ 000000D0 000058E3 CMP R8,#+0 \ 000000D4 0680A001 MOVEQ R8,R6 391 } 392 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 0C0094E5 LDR R0,[R4, #+12] \ 000000F8 01A087E2 ADD R10,R7,#+1 \ 000000FC 0A11A0E1 LSL R1,R10,#+2 \ 00000100 BA0000EF SWI +186 \ 00000104 0C0084E5 STR R0,[R4, #+12] \ 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 393 } 394 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 `?` 395 } \ In segment DATA_Z, align 4, align-sorted 396 397 398 int startItem=0; 399 int x2_cb=10; 400 401 extern char clrBlack[]; 402 extern char clrWhite[]; 403 extern char clrRed[]; 404 extern char transparent[]; 405 extern char blue[]; 406 extern int clfont; 407 extern IMGHDR *icons[]; 408 //extern int clfont; 409 int mm_itemFromDisp;//кол-во на экране 410 int mm_totalItems;//общее количество итемов 411 int mm_curpos=0;//позичия курсора 412 413 //extern void DrwImage(IMGHDR *img, int x, int y, char *pen, char *brush); 414 extern DYNPNGICONLIST *GetXSByItem(int curitem); 415 RECT mm_rc;//MainMenu Rect \ mm_rc: \ 00000000 DS8 8 \ 00000008 DS8 4 \ 0000000C DS8 4 \ mm_itemFromDisp: \ 00000010 DS8 4 416 int mm_font; \ mm_font: \ 00000014 DS8 4 \ In segment DATA_Z, align 4, align-sorted \ mm_totalItems: \ 00000000 DS8 4 417 418 #define CLIST_Y1 (YDISP+2) 419 420 #pragma inline \ In segment CODE, align 4, keep-with-next 421 void DrawCheckBox(int x,int y,int flag,int type) 422 { \ DrawCheckBox: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 423 RECT rc; 424 StoreXYXYtoRECT(&rc,x+2,y,x+x2_cb+2,y+x2_cb); \ 00000004 1C519FE5 LDR R5,??DrawCheckBox_0 ;; menuprocs \ 00000008 08D04DE2 SUB SP,SP,#+8 425 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 B02095E5 LDR R2,[R5, #+176] \ 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 426 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 427 { 428 if(type) 429 { 430 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 431 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 432 } 433 else 434 { 435 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 436 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 B01095E5 LDR R1,[R5, #+176] \ 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 437 } 438 } 439 } \ 00000124 F380BDE8 POP {R0,R1,R4-R7,PC} ;; return \ ??DrawCheckBox_0: \ 00000128 ........ DC32 menuprocs \ 0000012C ........ DC32 clrWhite \ 00000130 ........ DC32 transparent 440 \ In segment CODE, align 4, keep-with-next 441 void DrawIcon(int x,int y,int curitem) 442 { 443 switch(curitem) \ DrawIcon: \ 00000000 ........ LDR R12,??DataTable40 ;; 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 444 { 445 case 0: DrwImage(icons[CurrentStatus],x+1,y); break; \ ??DrawIcon_1: \ 00000038 ........ LDR R0,??DataTable26 ;; 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 446 case 1: 447 { 448 // DYNPNGICONLIST *xs=GetXSByItem(CurrentXStatus); 449 // DrwImage(xs->img,x,y); 450 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} 451 } 452 break; 453 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 454 case 3: DrawCheckBox(x,y,away_m?1:0,0); break; \ ??DrawIcon_7: \ 00000078 ........ LDR R2,??DataTable27 ;; away_m \ 0000007C 000000EA B ??DrawIcon_8 455 case 4: DrawCheckBox(x,y,Is_Vibra_Enabled?1:0,0); break; \ ??DrawIcon_9: \ 00000080 ........ LDR R2,??DataTable28 ;; 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} 456 case 5: DrawCheckBox(x,y,Is_Sounds_Enabled?1:0,0); break; \ ??DrawIcon_10: \ 0000009C ........ LDR R2,??DataTable29 ;; Is_Sounds_Enabled \ 000000A0 F7FFFFEA B ??DrawIcon_8 457 case 6: DrawCheckBox(x,y,Is_INC_On?1:0,0); break; \ ??DrawIcon_11: \ 000000A4 ........ LDR R2,??DataTable30 ;; Is_INC_On \ 000000A8 F5FFFFEA B ??DrawIcon_8 458 case 7: DrawCheckBox(x,y,Is_Double_Vibra_On?1:0,0); break; \ ??DrawIcon_12: \ 000000AC ........ LDR R2,??DataTable31 ;; Is_Double_Vibra_On \ 000000B0 F3FFFFEA B ??DrawIcon_8 459 case 8: DrawCheckBox(x,y,Is_ILU_On?1:0,0); break; \ ??DrawIcon_13: \ 000000B4 ........ LDR R2,??DataTable32 ;; Is_ILU_On \ 000000B8 F1FFFFEA B ??DrawIcon_8 460 case 9: DrawCheckBox(x,y,Is_PING_On?1:0,0); break; \ ??DrawIcon_14: \ 000000BC ........ LDR R2,??DataTable33 ;; Is_PING_On \ 000000C0 EFFFFFEA B ??DrawIcon_8 461 case 10: DrawCheckBox(x,y,Is_Show_Offline?1:0,0); break; \ ??DrawIcon_15: \ 000000C4 ........ LDR R2,??DataTable34 ;; Is_Show_Offline \ 000000C8 EDFFFFEA B ??DrawIcon_8 462 case 11: DrawCheckBox(x,y,Is_Show_Groups?1:0,0); break; \ ??DrawIcon_16: \ 000000CC ........ LDR R2,??DataTable35 ;; Is_Show_Groups \ 000000D0 EBFFFFEA B ??DrawIcon_8 463 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} 464 case 13: DrwImage(icons[ICON_SETTINGS],x+1,y); break; 465 case 14: DrwImage(icons[IS_OFFLINE],x+1,y); break; \ ??DrawIcon_18: \ 000000E8 00009CE5 LDR R0,[R12, #+0] \ 000000EC F9FFFFEA B ??DrawIcon_6 466 case 15: DrwImage(icons[IS_UNKNOWN],x+1,y); break; \ ??DrawIcon_19: \ 000000F0 38009CE5 LDR R0,[R12, #+56] \ 000000F4 F7FFFFEA B ??DrawIcon_6 467 case 16: DrwImage(icons[ICON_PING],x+1,y); break; \ ??DrawIcon_20: \ 000000F8 54009CE5 LDR R0,[R12, #+84] \ 000000FC F5FFFFEA B ??DrawIcon_6 468 case 17: DrwImage(icons[IS_UNKNOWN],x+1,y); break; 469 case 18: DrawCheckBox(x,y,IsActiveUp?1:0,0); break; \ ??DrawIcon_21: \ 00000100 ........ LDR R2,??DataTable36 ;; IsActiveUp \ 00000104 DEFFFFEA B ??DrawIcon_8 470 case 19: DrwImage(icons[ICON_SETTINGS],x+1,y); break; 471 #ifdef NEWSGOLD 472 case 20: DrawCheckBox(x,y,Is_Id3tag_Enabled?1:0,0); break; \ ??DrawIcon_22: \ 00000108 ........ LDR R2,??DataTable37 ;; 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 473 #ifdef ELKA 474 case 21: DrawCheckBox(x,y,Is_SLI_On?1:0,0); break; 475 #endif 476 #endif 477 } 478 } \ ??DrawIcon_23: \ 00000120 1080BDE8 POP {R4,PC} ;; return \ ??DrawIcon_4: \ 00000124 ........ DC32 CurrentXStatus \ 00000128 ........ DC32 XStatusImg 479 480 \ In segment CODE, align 4, keep-with-next 481 void DrawMMScrollBar(int cur,int total) 482 { \ DrawMMScrollBar: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 483 int scr_h=ScreenH()-1; 484 int scr_w=ScreenW()-1; 485 int y=mm_rc.y2-mm_rc.y-2; \ 00000004 ........ LDR R6,??DataTable49 ;; 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] 486 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,??DataTable51 ;; 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 487 int y2=y/total; 488 489 DrawLine(mm_rc.x2-2,mm_rc.y,mm_rc.x2-2,mm_rc.y2,1,clrWhite); \ 0000005C B30100EF SWI +435 490 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 491 } \ 000000A8 1CD08DE2 ADD SP,SP,#+28 \ 000000AC F083BDE8 POP {R4-R9,PC} ;; return \ In segment DATA_I, align 4, align-sorted \ menuprocs: \ 00000000 DS8 84 \ 00000054 REQUIRE `?` \ isAbout: \ 00000054 DS8 4 \ 00000058 REQUIRE `?` \ 00000058 DS8 84 \ 000000AC REQUIRE `?` \ startItem: \ 000000AC DS8 4 \ 000000B0 REQUIRE `?` \ x2_cb: \ 000000B0 DS8 4 \ 000000B4 REQUIRE `?` \ mm_curpos: \ 000000B4 DS8 4 \ 000000B8 REQUIRE `?` 492 493 int isLoadLangMenu=0; \ isLoadLangMenu: \ 000000B8 DS8 4 \ 000000BC REQUIRE `?` 494 \ In segment CODE, align 4, keep-with-next 495 void MM_DrawList() 496 { \ MM_DrawList: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 497 int font_y;// = FontH(mm_font)+1; 498 if(icons[IS_ONLINE]->bitmap && icons[IS_ONLINE]->h > FontH(mm_font) ) \ 00000004 ........ LDR R5,??DataTable40 ;; icons \ 00000008 ........ LDR R4,??DataTable55 ;; mm_rc \ 0000000C 10D04DE2 SUB SP,SP,#+16 \ 00000010 2C0095E5 LDR R0,[R5, #+44] \ 00000014 040090E5 LDR R0,[R0, #+4] \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0900000A BEQ ??MM_DrawList_0 \ 00000020 140094E5 LDR R0,[R4, #+20] \ 00000024 ........ _BLF FontH,??FontH??rA \ 00000028 2C1095E5 LDR R1,[R5, #+44] \ 0000002C 0120D1E5 LDRB R2,[R1, #+1] \ 00000030 020050E1 CMP R0,R2 \ 00000034 030000AA BGE ??MM_DrawList_0 499 { 500 font_y = icons[IS_ONLINE]->h-3; \ 00000038 031042E2 SUB R1,R2,#+3 \ 0000003C 00108DE5 STR R1,[SP, #+0] 501 x2_cb = font_y; \ 00000040 0100A0E1 MOV R0,R1 \ 00000044 060000EA B ??MM_DrawList_1 502 } 503 else 504 { 505 font_y = FontH(mm_font)+1; \ ??MM_DrawList_0: \ 00000048 140094E5 LDR R0,[R4, #+20] \ 0000004C ........ _BLF FontH,??FontH??rA \ 00000050 010080E2 ADD R0,R0,#+1 \ 00000054 00008DE5 STR R0,[SP, #+0] 506 x2_cb = icons[IS_ONLINE]->h-3; \ 00000058 2C0095E5 LDR R0,[R5, #+44] \ 0000005C 0100D0E5 LDRB R0,[R0, #+1] \ 00000060 030040E2 SUB R0,R0,#+3 \ ??MM_DrawList_1: \ 00000064 ........ LDR R5,??DataTable54 ;; menuprocs 507 } 508 509 int scr_h=ScreenH()-1; 510 int scr_w=ScreenW()-1; 511 // mm_itemFromDisp = sdiv(font_y,scr_h-CLIST_Y1-FontH(mm_font)-2)-1; 512 mm_itemFromDisp = sdiv(font_y,mm_rc.y2-mm_rc.y-2); 513 514 LockSched(); 515 516 int i=0; \ 00000068 0060A0E3 MOV R6,#+0 \ 0000006C B00085E5 STR R0,[R5, #+176] \ 00000070 898100EF SWI +33161 \ 00000074 888100EF SWI +33160 \ 00000078 F600D4E1 LDRSH R0,[R4, #+6] \ 0000007C F210D4E1 LDRSH R1,[R4, #+2] \ 00000080 010040E0 SUB R0,R0,R1 \ 00000084 021040E2 SUB R1,R0,#+2 \ 00000088 00009DE5 LDR R0,[SP, #+0] \ 0000008C B80000EF SWI +184 \ 00000090 100084E5 STR R0,[R4, #+16] \ 00000094 460100EF SWI +326 517 int start_y=0; 518 int start_x=x2_cb+8; \ 00000098 B01095E5 LDR R1,[R5, #+176] 519 520 char *s=malloc(32); \ 0000009C 2000A0E3 MOV R0,#+32 \ 000000A0 081081E2 ADD R1,R1,#+8 \ 000000A4 0C108DE5 STR R1,[SP, #+12] \ 000000A8 140000EF SWI +20 \ 000000AC 0070A0E1 MOV R7,R0 521 *s=0; \ 000000B0 0000A0E3 MOV R0,#+0 \ 000000B4 0000C7E5 STRB R0,[R7, #+0] 522 RECT rc; 523 int x2=0; \ 000000B8 0090A0E1 MOV R9,R0 524 while(i` \ 0000018C 011040E2 SUB R1,R0,#+1 \ 00000190 AC0095E5 LDR R0,[R5, #+172] \ 00000194 002086E0 ADD R2,R6,R0 \ 00000198 F400DDE1 LDRSH R0,[SP, #+4] \ 0000019C 030052E1 CMP R2,R3 \ 000001A0 4100001A BNE ??MM_DrawList_6 538 } 539 540 if(startItem+i==mm_curpos)//Если наш итем то выделяем 541 { 542 DrawRoundedFrame(rc.x,rc.y-1,rc.x2-5,rc.y2-2,0,0,0,MMCursorClr,MMCursorBGClr);//cursor \ 000001A4 D8219FE5 LDR R2,??MM_DrawList_5+0xC ;; MMCursorBGClr \ 000001A8 04002DE9 PUSH {R2} \ 000001AC D4219FE5 LDR R2,??MM_DrawList_5+0x10 ;; MMCursorClr \ 000001B0 04002DE9 PUSH {R2} \ 000001B4 0020A0E3 MOV R2,#+0 \ 000001B8 04002DE9 PUSH {R2} \ 000001BC 04002DE9 PUSH {R2} \ 000001C0 04002DE9 PUSH {R2} \ 000001C4 FE21DDE1 LDRSH R2,[SP, #+30] \ 000001C8 023042E2 SUB R3,R2,#+2 \ 000001CC 05204CE2 SUB R2,R12,#+5 \ 000001D0 500100EF SWI +336 543 544 if( isLoadLangMenu!=0 ? menutexts[startItem+i] : menutexts2[startItem+i] ) \ 000001D4 B82095E5 LDR R2,[R5, #+184] \ 000001D8 14D08DE2 ADD SP,SP,#+20 \ 000001DC AC0095E5 LDR R0,[R5, #+172] \ 000001E0 14C094E5 LDR R12,[R4, #+20] \ 000001E4 000052E3 CMP R2,#+0 \ 000001E8 0C109415 LDRNE R1,[R4, #+12] \ 000001EC 000086E0 ADD R0,R6,R0 \ 000001F0 00E19117 LDRNE LR,[R1, +R0, LSL #+2] \ 000001F4 00018500 ADDEQ R0,R5,R0, LSL #+2 \ 000001F8 58E09005 LDREQ LR,[R0, #+88] \ 000001FC F600DDE1 LDRSH R0,[SP, #+6] \ 00000200 00005EE3 CMP LR,#+0 \ 00000204 011040E2 SUB R1,R0,#+1 \ 00000208 F800DDE1 LDRSH R0,[SP, #+8] \ 0000020C 093040E0 SUB R3,R0,R9 \ 00000210 F400DDE1 LDRSH R0,[SP, #+4] \ 00000214 030080E2 ADD R0,R0,#+3 \ 00000218 1200000A BEQ ??MM_DrawList_7 545 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 \ 0000021C ACA095E5 LDR R10,[R5, #+172] \ 00000220 000052E3 CMP R2,#+0 \ 00000224 0C209415 LDRNE R2,[R4, #+12] \ 00000228 0AA086E0 ADD R10,R6,R10 \ 0000022C 0A219217 LDRNE R2,[R2, +R10, LSL #+2] \ 00000230 0A218500 ADDEQ R2,R5,R10, LSL #+2 \ 00000234 58209205 LDREQ R2,[R2, #+88] \ 00000238 08002DE9 PUSH {R3} \ 0000023C 0030A0E3 MOV R3,#+0 \ 00000240 08002DE9 PUSH {R3} \ 00000244 0130A0E3 MOV R3,#+1 \ 00000248 08002DE9 PUSH {R3} \ 0000024C 0030A0E3 MOV R3,#+0 \ 00000250 08002DE9 PUSH {R3} \ 00000254 0130A0E3 MOV R3,#+1 \ 00000258 08002DE9 PUSH {R3} \ 0000025C 00102DE9 PUSH {R12} \ 00000260 0030A0E3 MOV R3,#+0 \ 00000264 090000EA B ??MM_DrawList_8 546 else 547 PrintText(rc.x+3,rc.y-1,"Ошибка!",0,mm_font,1,0,0,0,rc.x2-x2);//item name \ ??MM_DrawList_7: \ 00000268 08002DE9 PUSH {R3} \ 0000026C 0020A0E3 MOV R2,#+0 \ 00000270 04002DE9 PUSH {R2} \ 00000274 04002DE9 PUSH {R2} \ 00000278 04002DE9 PUSH {R2} \ 0000027C 0030A0E3 MOV R3,#+0 \ 00000280 0120A0E3 MOV R2,#+1 \ 00000284 04002DE9 PUSH {R2} \ 00000288 00102DE9 PUSH {R12} \ 0000028C 0A20A0E1 MOV R2,R10 \ ??MM_DrawList_8: \ 00000290 ........ _BLF PrintText,??PrintText??rA \ 00000294 18D08DE2 ADD SP,SP,#+24 548 549 DrawMMScrollBar(startItem+i,MENU_ITEMS); \ 00000298 AC0095E5 LDR R0,[R5, #+172] \ 0000029C 1510A0E3 MOV R1,#+21 \ 000002A0 000086E0 ADD R0,R6,R0 \ 000002A4 ........ BL DrawMMScrollBar \ 000002A8 240000EA B ??MM_DrawList_9 550 } \ ??MM_DrawList_6: \ 000002AC 0CB094E5 LDR R11,[R4, #+12] \ 000002B0 09304CE0 SUB R3,R12,R9 \ 000002B4 02B19BE7 LDR R11,[R11, +R2, LSL #+2] \ 000002B8 14C094E5 LDR R12,[R4, #+20] \ 000002BC 023043E2 SUB R3,R3,#+2 \ 000002C0 030080E2 ADD R0,R0,#+3 \ 000002C4 5EE0A0E3 MOV LR,#+94 \ 000002C8 40EF8EE3 ORR LR,LR,#0x100 \ 000002CC 00005BE3 CMP R11,#+0 \ 000002D0 0E00000A BEQ ??MM_DrawList_10 551 else 552 { 553 if(menutexts[startItem+i]) 554 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 \ 000002D4 B8A095E5 LDR R10,[R5, #+184] \ 000002D8 00005AE3 CMP R10,#+0 \ 000002DC 02218500 ADDEQ R2,R5,R2, LSL #+2 \ 000002E0 58209205 LDREQ R2,[R2, #+88] \ 000002E4 08002DE9 PUSH {R3} \ 000002E8 0B20A011 MOVNE R2,R11 \ 000002EC 0030A0E3 MOV R3,#+0 \ 000002F0 08002DE9 PUSH {R3} \ 000002F4 08002DE9 PUSH {R3} \ 000002F8 00402DE9 PUSH {LR} \ 000002FC 0130A0E3 MOV R3,#+1 \ 00000300 08002DE9 PUSH {R3} \ 00000304 00102DE9 PUSH {R12} \ 00000308 0030A0E3 MOV R3,#+0 \ 0000030C 090000EA B ??MM_DrawList_11 555 else 556 PrintText(rc.x+3,rc.y-1,"Ошибка!",0,mm_font,1,350,0,0,rc.x2-x2-2);//item name \ ??MM_DrawList_10: \ 00000310 08002DE9 PUSH {R3} \ 00000314 0020A0E3 MOV R2,#+0 \ 00000318 04002DE9 PUSH {R2} \ 0000031C 04002DE9 PUSH {R2} \ 00000320 00402DE9 PUSH {LR} \ 00000324 0030A0E3 MOV R3,#+0 \ 00000328 0120A0E3 MOV R2,#+1 \ 0000032C 04002DE9 PUSH {R2} \ 00000330 00102DE9 PUSH {R12} \ 00000334 0A20A0E1 MOV R2,R10 \ ??MM_DrawList_11: \ 00000338 ........ _BLF PrintText,??PrintText??rA \ 0000033C 18D08DE2 ADD SP,SP,#+24 557 } 558 559 DrawIcon(1,start_y+1,startItem+i); \ ??MM_DrawList_9: \ 00000340 AC0095E5 LDR R0,[R5, #+172] \ 00000344 011088E2 ADD R1,R8,#+1 \ 00000348 002086E0 ADD R2,R6,R0 \ 0000034C 0100A0E3 MOV R0,#+1 \ 00000350 ........ BL DrawIcon 560 561 /* 562 if(menutexts[startItem+i]) 563 PrintField(rc.x+3,rc.y-1,menutexts[startItem+i],0,mm_font,1);//item name 564 else 565 PrintField(rc.x+3,rc.y-1,"Ошибка!",0,mm_font,1);//item name 566 */ 567 568 i++; 569 if(startItem+i >= MENU_ITEMS) break; \ 00000354 AC0095E5 LDR R0,[R5, #+172] \ 00000358 016086E2 ADD R6,R6,#+1 \ 0000035C 000086E0 ADD R0,R6,R0 \ 00000360 150050E3 CMP R0,#+21 \ 00000364 54FFFFBA BLT ??MM_DrawList_2 570 } 571 mfree(s); \ ??MM_DrawList_3: \ 00000368 0700A0E1 MOV R0,R7 \ 0000036C 150000EF SWI +21 572 UnlockSched(); \ 00000370 470100EF SWI +327 573 } \ 00000374 FF8FBDE8 POP {R0-R11,PC} ;; return \ ??MM_DrawList_5: \ 00000378 25640000 DC8 "%d",+0 \ 0000037C ........ DC32 ShowNumbMenu \ 00000380 ........ DC32 `?` \ 00000384 ........ DC32 MMCursorBGClr \ 00000388 ........ DC32 MMCursorClr 574 575 // Управление курсором \ In segment CODE, align 4, keep-with-next 576 void MM_MoveUp(int i) 577 { 578 if(mm_curpos > mm_itemFromDisp + 2 ){ mm_curpos--; } \ MM_MoveUp: \ 00000000 ........ LDR R0,??DataTable54 ;; menuprocs \ 00000004 ........ LDR R3,??DataTable48 ;; mm_rc + 16 \ 00000008 B41090E5 LDR R1,[R0, #+180] \ 0000000C 003093E5 LDR R3,[R3, #+0] \ 00000010 AC2090E5 LDR R2,[R0, #+172] \ 00000014 02C083E2 ADD R12,R3,#+2 \ 00000018 01005CE1 CMP R12,R1 \ 0000001C 011041B2 SUBLT R1,R1,#+1 \ 00000020 080000BA BLT ??MM_MoveUp_0 579 else 580 if(mm_curpos > 0){ mm_curpos--; if(startItem>0) startItem--; } \ 00000024 010051E3 CMP R1,#+1 \ 00000028 040000BA BLT ??MM_MoveUp_1 \ 0000002C 011041E2 SUB R1,R1,#+1 \ 00000030 010052E3 CMP R2,#+1 \ 00000034 030000BA BLT ??MM_MoveUp_0 \ 00000038 012042E2 SUB R2,R2,#+1 \ 0000003C 010000EA B ??MM_MoveUp_0 581 else 582 { 583 mm_curpos=MENU_ITEMS-1; \ ??MM_MoveUp_1: \ 00000040 1410A0E3 MOV R1,#+20 584 startItem=MENU_ITEMS-mm_itemFromDisp; \ 00000044 152063E2 RSB R2,R3,#+21 \ ??MM_MoveUp_0: \ 00000048 AC2080E5 STR R2,[R0, #+172] \ 0000004C B41080E5 STR R1,[R0, #+180] 585 } 586 } \ 00000050 1EFF2FE1 BX LR ;; return 587 588 \ In segment CODE, align 4, keep-with-next 589 void MM_MoveDown(int i) 590 { 591 if(mm_curpos ` \ 0000000C 140094E5 LDR R0,[R4, #+20] 621 622 char *s=malloc(256); 623 624 SetFontColor(clrRed,transparent,0); \ 00000010 28729FE5 LDR R7,??DrawAbout_0+0x4 ;; clrRed \ 00000014 ........ LDR R8,??DataTable50 ;; 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 625 sprintf(s,"NATICQ v2.0\nRevisiov 2058"); \ 0000007C 881085E2 ADD R1,R5,#+136 \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 160000EF SWI +22 626 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 141094E5 LDR R1,[R4, #+20] \ 000000CC 02002DE9 PUSH {R1} \ 000000D0 1110A0E3 MOV R1,#+17 \ 000000D4 ........ _BLF PrintText,??PrintText??rA \ 000000D8 2CD08DE2 ADD SP,SP,#+44 627 #ifdef ELKA 628 int n=GetNLines((ScreenW()-x)/2,y+15)+1; 629 #else 630 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 631 #endif 632 sprintf(s,LG_COPYRIGHT); \ 000000F8 101085E2 ADD R1,R5,#+16 \ 000000FC 0600A0E1 MOV R0,R6 \ 00000100 160000EF SWI +22 633 SetFontColor(clrWhite,transparent,0); \ 00000104 ........ LDR R0,??DataTable51 ;; clrWhite \ 00000108 0020A0E3 MOV R2,#+0 \ 0000010C 0810A0E1 MOV R1,R8 \ 00000110 ........ _BLF SetFontColor,??SetFontColor??rA 634 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 140094E5 LDR R0,[R4, #+20] \ 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 141094E5 LDR R1,[R4, #+20] \ 00000164 02002DE9 PUSH {R1} \ 00000168 990B01E0 MUL R1,R9,R11 \ 0000016C 1B1081E2 ADD R1,R1,#+27 \ 00000170 ........ _BLF PrintText,??PrintText??rA 635 636 SetFontColor(clrRed,transparent,0); \ 00000174 0020A0E3 MOV R2,#+0 \ 00000178 0810A0E1 MOV R1,R8 \ 0000017C 0700A0E1 MOV R0,R7 \ 00000180 ........ _BLF SetFontColor,??SetFontColor??rA 637 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 638 #ifdef ELKA 639 n+=GetNLines((ScreenW()-x)/2,y+25+(FontH(mm_font)*n)); 640 #else 641 n+=GetNLines((ScreenW()-x)/2,y+25+(FontH(mm_font)*n))-1; \ 00000198 140094E5 LDR R0,[R4, #+20] \ 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 642 #endif 643 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 140094E5 LDR R0,[R4, #+20] \ 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 141094E5 LDR R1,[R4, #+20] \ 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 644 mfree(s); \ 00000230 0600A0E1 MOV R0,R6 \ 00000234 150000EF SWI +21 645 646 } \ 00000238 F08FBDE8 POP {R4-R11,PC} ;; return \ ??DrawAbout_0: \ 0000023C ........ DC32 `?` \ 00000240 ........ DC32 clrRed 647 \ In segment CODE, align 4, keep-with-next 648 void MM_OnRedraw(MAIN_GUI *data) 649 { \ MM_OnRedraw: \ 00000000 00402DE9 PUSH {LR} 650 LockSched(); \ 00000004 460100EF SWI +326 651 if(screen.bitmap) DrwImage(&screen,0,hy+2); \ 00000008 88009FE5 LDR R0,??MM_OnRedraw_0 ;; screen \ 0000000C 041090E5 LDR R1,[R0, #+4] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 0400000A BEQ ??MM_OnRedraw_1 \ 00000018 7C109FE5 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 652 // DrawRoundedFrame(0,hy+2,ScreenW()-1,ScreenH()-1,0,0,0,"\x00\x00\x00\x15","\x00\x00\x00\x15"); 653 DrawRoundedFrame(mm_rc.x,mm_rc.y-2,mm_rc.x2,mm_rc.y2,0,0,0,MMBackgrBordClr,MMBackgrClr); \ ??MM_OnRedraw_1: \ 0000002C 6C109FE5 LDR R1,??MM_OnRedraw_0+0x8 ;; MMBackgrClr \ 00000030 ........ LDR R0,??DataTable55 ;; mm_rc \ 00000034 02002DE9 PUSH {R1} \ 00000038 64109FE5 LDR R1,??MM_OnRedraw_0+0xC ;; MMBackgrBordClr \ 0000003C 02002DE9 PUSH {R1} \ 00000040 0010A0E3 MOV R1,#+0 \ 00000044 02002DE9 PUSH {R1} \ 00000048 02002DE9 PUSH {R1} \ 0000004C 02002DE9 PUSH {R1} \ 00000050 F630D0E1 LDRSH R3,[R0, #+6] \ 00000054 F420D0E1 LDRSH R2,[R0, #+4] \ 00000058 F210D0E1 LDRSH R1,[R0, #+2] \ 0000005C F000D0E1 LDRSH R0,[R0, #+0] \ 00000060 021041E2 SUB R1,R1,#+2 \ 00000064 500100EF SWI +336 654 UnlockSched(); \ 00000068 470100EF SWI +327 655 DrawSoftKeys(LG_SELECT,LG_CLOSE); \ 0000006C 34009FE5 LDR R0,??MM_OnRedraw_0+0x10 ;; `?` \ 00000070 081080E2 ADD R1,R0,#+8 \ 00000074 ........ _BLF DrawSoftKeys,??DrawSoftKeys??rA 656 MM_DrawList(); \ 00000078 ........ BL MM_DrawList 657 if(isAbout) DrawAbout(); \ 0000007C ........ LDR R0,??DataTable53 ;; menuprocs + 84 \ 00000080 000090E5 LDR R0,[R0, #+0] \ 00000084 14D08DE2 ADD SP,SP,#+20 \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 0080BD08 POPEQ {PC} \ 00000090 ........ BL DrawAbout 658 } \ 00000094 0080BDE8 POP {PC} ;; return \ ??MM_OnRedraw_0: \ 00000098 ........ DC32 screen \ 0000009C ........ DC32 hy \ 000000A0 ........ DC32 MMBackgrClr \ 000000A4 ........ DC32 MMBackgrBordClr \ 000000A8 ........ DC32 `?` 659 /* 660 661 static void do_logwrite(char *text) 662 { 663 int hFile; 664 unsigned int io_error = 0; 665 hFile = fopen("4:\\nat.txt",A_ReadWrite + A_Create + A_Append,P_READ+P_WRITE, &io_error); 666 if(hFile!=-1) 667 { 668 fwrite(hFile, text, strlen(text), &io_error); 669 fwrite(hFile, "\r\n", 2, &io_error); 670 fclose(hFile, &io_error); 671 } 672 else 673 ShowMSG(1,(int)"Error!"); 674 // mfree(text); 675 } 676 */ \ In segment DATA_Z, align 4, align-sorted 677 int one_use=0; \ one_use: \ 00000000 DS8 4 678 extern int shot_soft; \ In segment CODE, align 4, keep-with-next 679 void MM_onCreate(MAIN_GUI *data, void *(*malloc_adr)(int)) 680 { \ MM_onCreate: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 681 #ifdef ELKA 682 #ifndef ICONBAR 683 DisableIconBar(1); 684 #endif 685 #endif 686 isLoadLangMenu=LoadMenuLang(); \ 00000004 ........ LDR R5,??DataTable54 ;; menuprocs 687 if(SOFT_MODE==2) shot_soft=0; 688 mm_font=clfont; \ 00000008 ........ LDR R7,??DataTable55 ;; mm_rc \ 0000000C A0809FE5 LDR R8,??MM_onCreate_0 ;; clfont \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 ........ BL LoadMenuLang \ 00000018 B80085E5 STR R0,[R5, #+184] \ 0000001C ........ LDR R0,??DataTable58 ;; SOFT_MODE \ 00000020 0060A0E3 MOV R6,#+0 \ 00000024 000090E5 LDR R0,[R0, #+0] \ 00000028 020050E3 CMP R0,#+2 \ 0000002C ........ LDREQ R0,??DataTable59 ;; shot_soft \ 00000030 00608005 STREQ R6,[R0, #+0] \ 00000034 000098E5 LDR R0,[R8, #+0] \ 00000038 140087E5 STR R0,[R7, #+20] 689 DoScreen(); \ 0000003C ........ _BLF DoScreen,??DoScreen??rA 690 mm_rc = MMRect; \ 00000040 70009FE5 LDR R0,??MM_onCreate_0+0x4 ;; MMRect \ 00000044 B010D0E1 LDRH R1,[R0, #0] \ 00000048 B010C7E1 STRH R1,[R7, #+0] \ 0000004C B210D0E1 LDRH R1,[R0, #+2] \ 00000050 B210C7E1 STRH R1,[R7, #+2] \ 00000054 B410D0E1 LDRH R1,[R0, #+4] \ 00000058 B410C7E1 STRH R1,[R7, #+4] \ 0000005C B610D0E1 LDRH R1,[R0, #+6] \ 00000060 B610C7E1 STRH R1,[R7, #+6] 691 692 int y2 = mm_rc.y2-mm_rc.y; \ 00000064 F600D7E1 LDRSH R0,[R7, #+6] \ 00000068 F210D7E1 LDRSH R1,[R7, #+2] \ 0000006C 019040E0 SUB R9,R0,R1 693 694 int ii=sdiv( (FontH(clfont)+1) ,y2 )+1; \ 00000070 000098E5 LDR R0,[R8, #+0] \ 00000074 ........ _BLF FontH,??FontH??rA \ 00000078 0910A0E1 MOV R1,R9 \ 0000007C 010080E2 ADD R0,R0,#+1 \ 00000080 B80000EF SWI +184 \ 00000084 019080E2 ADD R9,R0,#+1 695 mm_rc.y2=mm_rc.y + (FontH(clfont)*ii); \ 00000088 000098E5 LDR R0,[R8, #+0] \ 0000008C ........ _BLF FontH,??FontH??rA \ 00000090 F210D7E1 LDRSH R1,[R7, #+2] 696 697 isAbout=0; \ 00000094 546085E5 STR R6,[R5, #+84] \ 00000098 991020E0 MLA R0,R9,R0,R1 \ 0000009C B600C7E1 STRH R0,[R7, #+6] 698 SetCanvasFlag(1); \ 000000A0 0100A0E3 MOV R0,#+1 \ 000000A4 ........ _BLF SetCanvasFlag,??SetCanvasFlag??rA 699 data->gui.state=1; \ 000000A8 0100A0E3 MOV R0,#+1 \ 000000AC 0C00C4E5 STRB R0,[R4, #+12] 700 } \ 000000B0 F083BDE8 POP {R4-R9,PC} ;; return \ ??MM_onCreate_0: \ 000000B4 ........ DC32 clfont \ 000000B8 ........ DC32 MMRect 701 \ In segment CODE, align 4, keep-with-next 702 void MM_onClose(MAIN_GUI *data, void (*mfree_adr)(void *)) 703 { \ MM_onClose: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 704 FreeMenu(); \ 00000008 ........ BL FreeMenu 705 if(SOFT_MODE==2) shot_soft=0; \ 0000000C ........ LDR R0,??DataTable58 ;; SOFT_MODE \ 00000010 0050A0E3 MOV R5,#+0 \ 00000014 000090E5 LDR R0,[R0, #+0] \ 00000018 020050E3 CMP R0,#+2 \ 0000001C ........ LDREQ R0,??DataTable59 ;; shot_soft \ 00000020 00508005 STREQ R5,[R0, #+0] 706 mfree(screen.bitmap); \ 00000024 0C009FE5 LDR R0,??MM_onClose_0 ;; screen + 4 \ 00000028 000090E5 LDR R0,[R0, #+0] \ 0000002C 150000EF SWI +21 707 data->gui.state=0; \ 00000030 0C50C4E5 STRB R5,[R4, #+12] 708 } \ 00000034 3080BDE8 POP {R4,R5,PC} ;; return \ ??MM_onClose_0: \ 00000038 ........ DC32 screen + 4 709 \ In segment CODE, align 4, keep-with-next 710 void MM_onFocus(MAIN_GUI *data, void *(*malloc_adr)(int), void (*mfree_adr)(void *)) 711 { \ MM_onFocus: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 712 #ifdef ELKA 713 #ifndef ICONBAR 714 DisableIconBar(1); 715 #endif 716 #endif 717 DrawHeader(); \ 00000008 ........ _BLF DrawHeader,??DrawHeader??rA 718 //DrawSoftKeys(LG_SELECT,LG_CLOSE);//рисуем софты и фоткаем их ;) 719 // DrawRoundedFrame(0,hy+2,ScreenW()-1,ScreenH()-1,0,0,0,"\x00\x00\x00\x15","\x00\x00\x00\x15"); 720 721 SetCanvasFlag(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 ........ _BLF SetCanvasFlag,??SetCanvasFlag??rA 722 data->gui.state=2; \ 00000014 0200A0E3 MOV R0,#+2 \ 00000018 0C00C4E5 STRB R0,[R4, #+12] 723 DisableIDLETMR(); \ 0000001C 7F0100EF SWI +383 724 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 725 \ In segment CODE, align 4, keep-with-next 726 void MM_onUnfocus(MAIN_GUI *data, void (*mfree_adr)(void *)) 727 { 728 if (data->gui.state!=2) return; \ MM_onUnfocus: \ 00000000 0C10D0E5 LDRB R1,[R0, #+12] \ 00000004 020051E3 CMP R1,#+2 729 data->gui.state=1; \ 00000008 0110A003 MOVEQ R1,#+1 \ 0000000C 0C10C005 STRBEQ R1,[R0, #+12] 730 } \ 00000010 1EFF2FE1 BX LR ;; return 731 \ In segment CODE, align 4, keep-with-next 732 int MM_OnKey(MAIN_GUI *data, GUI_MSG *msg) 733 { \ MM_OnKey: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0140A0E1 MOV R4,R1 734 DirectRedrawGUI(); 735 int k=msg->gbsmsg->submess; 736 737 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 F0409FE5 LDR R4,??MM_OnKey_0 ;; menuprocs \ 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_1 738 { 739 switch(k) \ 00000038 040056E2 SUBS R0,R6,#+4 \ 0000003C 08005012 SUBSNE R0,R0,#+8 \ 00000040 1700000A BEQ ??MM_OnKey_2 \ 00000044 2F0050E2 SUBS R0,R0,#+47 \ 00000048 0400000A BEQ ??MM_OnKey_3 \ 0000004C 010050E2 SUBS R0,R0,#+1 \ 00000050 1000000A BEQ ??MM_OnKey_4 \ 00000054 010050E2 SUBS R0,R0,#+1 \ 00000058 1100000A BEQ ??MM_OnKey_2 \ 0000005C 010000EA B ??MM_OnKey_1 740 { 741 case UP_BUTTON: MM_MoveUp(0); break; \ ??MM_OnKey_3: \ 00000060 0000A0E3 MOV R0,#+0 \ 00000064 ........ BL MM_MoveUp 742 case DOWN_BUTTON: MM_MoveDown(0); break; 743 case LEFT_BUTTON: case RIGHT_SOFT:case RED_BUTTON: if(isAbout) isAbout=0; else return (1); 744 // case ENTER_BUTTON: case LEFT_SOFT: ((void (*)(void))(menuprocs[mm_curpos]))(); REDRAW(); break; 745 } 746 } 747 748 if (msg->gbsmsg->msg==KEY_DOWN) \ ??MM_OnKey_1: \ 00000068 040095E5 LDR R0,[R5, #+4] \ 0000006C 080050E1 CMP R0,R8 \ 00000070 2400001A BNE ??MM_OnKey_5 749 { 750 switch(k) \ 00000074 010056E2 SUBS R0,R6,#+1 \ 00000078 19005012 SUBSNE R0,R0,#+25 \ 0000007C 24005012 SUBSNE R0,R0,#+36 \ 00000080 1100001A BNE ??MM_OnKey_6 751 { 752 case ENTER_BUTTON: case LEFT_SOFT: case RIGHT_BUTTON: 753 if(isAbout) \ 00000084 540094E5 LDR R0,[R4, #+84] \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 0A00000A BEQ ??MM_OnKey_7 754 isAbout=0; \ 00000090 547084E5 STR R7,[R4, #+84] \ 00000094 0B0000EA B ??MM_OnKey_8 \ ??MM_OnKey_4: \ 00000098 0000A0E3 MOV R0,#+0 \ 0000009C ........ BL MM_MoveDown \ 000000A0 F0FFFFEA B ??MM_OnKey_1 \ ??MM_OnKey_2: \ 000000A4 540094E5 LDR R0,[R4, #+84] \ 000000A8 000050E3 CMP R0,#+0 \ 000000AC 54708415 STRNE R7,[R4, #+84] \ 000000B0 ECFFFF1A BNE ??MM_OnKey_1 \ 000000B4 0100A0E3 MOV R0,#+1 \ 000000B8 F081BDE8 POP {R4-R8,PC} 755 else 756 ((void (*)(void))(menuprocs[mm_curpos]))(); \ ??MM_OnKey_7: \ 000000BC B40094E5 LDR R0,[R4, #+180] \ 000000C0 000194E7 LDR R0,[R4, +R0, LSL #+2] \ 000000C4 30FF2FE1 BLX R0 757 758 REDRAW(); \ ??MM_OnKey_8: \ 000000C8 720100EF SWI +370 759 break; 760 } 761 762 if(k>='1' && k<= '9'){ mm_curpos=(k-'1'); ((void (*)(void))(menuprocs[mm_curpos]))(); REDRAW();} \ ??MM_OnKey_6: \ 000000CC 310056E3 CMP R6,#+49 \ 000000D0 060000BA BLT ??MM_OnKey_9 \ 000000D4 3A0056E3 CMP R6,#+58 \ 000000D8 0A0000AA BGE ??MM_OnKey_5 \ 000000DC 310046E2 SUB R0,R6,#+49 \ 000000E0 B40084E5 STR R0,[R4, #+180] \ 000000E4 000194E7 LDR R0,[R4, +R0, LSL #+2] \ 000000E8 30FF2FE1 BLX R0 \ 000000EC 040000EA B ??MM_OnKey_10 763 if(k=='0'){ mm_curpos=9; ((void (*)(void))(menuprocs[mm_curpos]))(); REDRAW();} \ ??MM_OnKey_9: \ 000000F0 300056E3 CMP R6,#+48 \ 000000F4 0300001A BNE ??MM_OnKey_5 \ 000000F8 0900A0E3 MOV R0,#+9 \ 000000FC B40084E5 STR R0,[R4, #+180] \ 00000100 ........ BL ChangePINGMode \ ??MM_OnKey_10: \ 00000104 720100EF SWI +370 764 } 765 766 return(0); \ ??MM_OnKey_5: \ 00000108 0000A0E3 MOV R0,#+0 \ 0000010C F081BDE8 POP {R4-R8,PC} ;; return \ ??MM_OnKey_0: \ 00000110 ........ DC32 menuprocs 767 } 768 769 extern void kill_data(void *p, void (*func_p)(void *)); 770 \ In segment CODE, align 4, keep-with-next 771 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 772 int MM_method9(void){return(0);} \ MM_method9: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 773 \ In segment DATA_C, align 4, align-sorted 774 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 775 (void *)MM_OnRedraw, 776 (void *)MM_onCreate, 777 (void *)MM_onClose, 778 (void *)MM_onFocus, 779 (void *)MM_onUnfocus, 780 (void *)MM_OnKey, 781 0, 782 (void *)kill_data, 783 (void *)MM_method8, 784 (void *)MM_method9, 785 0 786 }; 787 788 const RECT MM_Canvas={0,0,0,0}; \ MM_Canvas: \ 0000002C 000000000000 DC16 0, 0, 0, 0 \ 0000 789 \ In segment CODE, align 4, keep-with-next 790 void CreateMainMenu() 791 { \ CreateMainMenu: \ 00000000 10402DE9 PUSH {R4,LR} 792 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); \ 00000004 4000A0E3 MOV R0,#+64 \ 00000008 140000EF SWI +20 \ 0000000C 0040A0E1 MOV R4,R0 793 zeromem(main_gui,sizeof(MAIN_GUI)); \ 00000010 4010A0E3 MOV R1,#+64 \ 00000014 1D0100EF SWI +285 794 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] 795 main_gui->gui.methods=(void *)gui_methods_2; \ 00000024 040084E5 STR R0,[R4, #+4] 796 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); \ 00000028 158000EF SWI +32789 \ 0000002C 200084E5 STR R0,[R4, #+32] 797 //patch_rect((RECT*)&Canvas,0,YDISP,ScreenW()-1,ScreenH()-1); 798 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] 799 } \ 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 \ ??DataTable22: \ 00000000 ........ DC32 WriteDefSettings \ In segment CODE, align 4, keep-with-next \ ??DataTable26: \ 00000000 ........ DC32 CurrentStatus \ 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_Double_Vibra_On \ In segment CODE, align 4, keep-with-next \ ??DataTable32: \ 00000000 ........ DC32 Is_ILU_On \ In segment CODE, align 4, keep-with-next \ ??DataTable33: \ 00000000 ........ DC32 Is_PING_On \ In segment CODE, align 4, keep-with-next \ ??DataTable34: \ 00000000 ........ DC32 Is_Show_Offline \ In segment CODE, align 4, keep-with-next \ ??DataTable35: \ 00000000 ........ DC32 Is_Show_Groups \ In segment CODE, align 4, keep-with-next \ ??DataTable36: \ 00000000 ........ DC32 IsActiveUp \ In segment CODE, align 4, keep-with-next \ ??DataTable37: \ 00000000 ........ DC32 Is_Id3tag_Enabled \ In segment CODE, align 4, keep-with-next \ ??DataTable40: \ 00000000 ........ DC32 icons \ In segment CODE, align 4, keep-with-next \ ??DataTable48: \ 00000000 ........ DC32 mm_rc + 16 \ In segment CODE, align 4, keep-with-next \ ??DataTable49: \ 00000000 ........ DC32 mm_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable50: \ 00000000 ........ DC32 transparent \ In segment CODE, align 4, keep-with-next \ ??DataTable51: \ 00000000 ........ DC32 clrWhite \ In segment CODE, align 4, keep-with-next \ ??DataTable53: \ 00000000 ........ DC32 menuprocs + 84 \ In segment CODE, align 4, keep-with-next \ ??DataTable54: \ 00000000 ........ DC32 menuprocs \ In segment CODE, align 4, keep-with-next \ ??DataTable55: \ 00000000 ........ DC32 mm_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable58: \ 00000000 ........ DC32 SOFT_MODE \ In segment CODE, align 4, keep-with-next \ ??DataTable59: \ 00000000 ........ DC32 shot_soft \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 ............ DC32 CreateSCMenu, CreateXSMenu, CreateManageCLMenu, AutoAwayMSG \ ............ \ ........ \ 00000010 ............ DC32 ChangeVibraMode, ChangeSoundMode, ChangeINCMode, ChangeDoubleVibra \ ............ \ ........ \ 00000020 ............ DC32 ChangeILUMode, ChangePINGMode, ChangeShowOfflineMode \ ............ \ 0000002C ............ DC32 ChangeShowGroupsMode, EditConfig, EditConfigMod, Disconnect \ ............ \ ........ \ 0000003C ............ DC32 SaveCL, PingToServer, AboutDlg, ChangeActiveUp, CreateLogs \ ............ \ ............ \ .... \ 00000050 ........ DC32 ChangeId3tagMode \ `?`: \ 00000054 00000000 DC32 0 \ `?`: \ 00000058 ........ DC32 `?` \ 0000005C ........ DC32 `?` \ 00000060 ........ DC32 `?` \ 00000088 ........ DC32 `?` \ 0000009C ........ DC32 `?` \ 000000A0 ........ DC32 `?` \ `?`: \ 000000AC 00000000 DC32 0 \ `?`: \ 000000B0 0A000000 DC32 10 \ `?`: \ 000000B4 00000000 DC32 0 \ `?`: \ 000000B8 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 446563203130 DC8 "Dec 10 2010" \ 203230313000 \ 0000007C 32323A31313A DC8 "22:11:59" \ 353900 \ 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 \ `? 188 ? 8 ? 12 ? 16 ? 16 ? 3 ? 8 ? 164 ? 16 ? 8 ? 12 ? 8 ?