############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 27/Feb/2008 00:25:57 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2058w_src\main.c # # Command line = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2058w_src\main.c # # -D NEWSGOLD -D ELKA -D UIN_WRITE --preprocess # # D:\Pasha\elf\_MY_PROJECT_\naticq_mod2058w_src\Releas # # e_ELKA\List\ -lC D:\Pasha\elf\_MY_PROJECT_\naticq_mo # # d2058w_src\Release_ELKA\List\ -o # # D:\Pasha\elf\_MY_PROJECT_\naticq_mod2058w_src\Releas # # e_ELKA\Obj\ -s9 --no_unroll --cpu_mode arm --endian # # little --cpu ARM926EJ-S --stack_align 4 --interwork # # -e --fpu None --dlib_config "D:\Pasha\Embedded # # Workbench 4.0 Evaluation2\ARM\LIB\dl5tpainl8n.h" -I # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2058w_src\Releas # # e_ELKA\List\main.lst # # Object file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2058w_src\Releas # # e_ELKA\Obj\main.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT_\naticq_mod2058w_src\main.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 "conf_loader.h" 7 #include "mainmenu.h" 8 #include "main.h" 9 #include "language.h" 10 #include "../inc/xtask_ipc.h" 11 #include "smiles.h" 12 #include "naticq_ipc.h" 13 #include "status_change.h" 14 #include "strings.h" 15 //#include "string_util_int.h" 16 #include "manage_cl.h" 17 #include "cl_work.h" 18 #include "select_smile.h" 19 #include "revision.h" 20 #include "print.h" 21 #include "screen_save.h" 22 #ifdef NEWSGOLD 23 #include "player_tags.h" 24 #endif 25 #include "swilib2.h" 26 #include "rect_patcher.h" 27 28 #ifndef NEWSGOLD 29 #define SEND_TIMER 30 #endif 31 extern const unsigned int Vibra_cc; 32 #ifdef ELKA 33 #pragma swi_number=54 34 __swi __arm void SLI_SetState(unsigned char state); 35 #endif 36 37 #define IN_TICKS(sec) (sec * TMR_SECOND) 38 extern int janis; 39 extern const unsigned int date_X; 40 extern const unsigned int date_Y; 41 extern const unsigned int unread_X; 42 extern const unsigned int unread_Y; 43 extern const int show_xstatus; 44 extern const char fontpath[64]; 45 extern const int ShowStatusIcon; 46 #ifdef EVILFOX 47 int fonto=1; 48 int space=1; 49 #else 50 int main_d; 51 52 extern const int isLogOffline; 53 extern const int isLogOnline; 54 int dontLogOnConnect=0; 55 56 extern const unsigned int fonto; 57 extern const unsigned int spaco1; 58 extern const unsigned int spaco2; 59 extern int *XStatusesIconArray; 60 #endif 61 int align=0; 62 //int space=1; 63 void *canvasdata; 64 //#ifdef ELKA 65 int paused_height; 66 //#endif 67 //char lielims[128]; 68 extern const unsigned int AUTO_ENGADE; 69 char talk_sound[128]; 70 int uins; 71 //char m_1[]="unofficial! private use only"; 72 //char m_2[]="mod by (c)Evilfox 315384924"; 73 char unread_msg_info[64]; 74 extern const int Is_Unread_On; 75 int saver_on; 76 #ifdef NEWSGOLD 77 extern char teast2[256]; 78 #endif 79 80 #ifdef ELKA 81 char last_msg_buffer[4048]; 82 #endif 83 ///////////////////////////////////////////////auto ping//////////////////// 84 GBSTMR mytmr3; 85 static void PingToServer2(void) 86 { 87 TPKT *p; 88 p=malloc(sizeof(PKT)+sizeof(TTime)); 89 GetDateTime(NULL,(TTime *)p->data); 90 p->pkt.uin=0; 91 p->pkt.type=T_ECHO; 92 p->pkt.data_len=sizeof(TTime); 93 SUBPROC((void *)SendAnswer,0,p); 94 } 95 96 int Is_PING_On; 97 \ In segment CODE, align 4, keep-with-next 98 void Pinger2() 99 { 100 if(Is_PING_On) \ Pinger2: \ 00000000 ........ LDR R0,??DataTable34 ;; S_ICONS \ 00000004 70402DE9 PUSH {R4-R6,LR} \ 00000008 ........ LDR R5,??DataTable1 ;; Pinger2 \ 0000000C EC10A0E3 MOV R1,#+236 \ 00000010 4C1D81E3 ORR R1,R1,#0x1300 \ 00000014 004081E0 ADD R4,R1,R0 \ 00000018 FC0090E5 LDR R0,[R0, #+252] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 1500000A BEQ ??Pinger2_0 101 { 102 PingToServer2(); \ 00000024 1000A0E3 MOV R0,#+16 \ 00000028 140000EF SWI +20 \ 0000002C 0060A0E1 MOV R6,R0 \ 00000030 081086E2 ADD R1,R6,#+8 \ 00000034 0000A0E3 MOV R0,#+0 \ 00000038 B40000EF SWI +180 \ 0000003C 0000A0E3 MOV R0,#+0 \ 00000040 000086E5 STR R0,[R6, #+0] \ 00000044 1200A0E3 MOV R0,#+18 \ 00000048 B400C6E1 STRH R0,[R6, #+4] \ 0000004C 0800A0E3 MOV R0,#+8 \ 00000050 B600C6E1 STRH R0,[R6, #+6] \ 00000054 ........ LDR R0,??DataTable2 ;; SendAnswer \ 00000058 0620A0E1 MOV R2,R6 \ 0000005C 0010A0E3 MOV R1,#+0 \ 00000060 710100EF SWI +369 103 GBS_StartTimerProc(&mytmr3, 12960, Pinger2); \ 00000064 0520A0E1 MOV R2,R5 \ 00000068 A010A0E3 MOV R1,#+160 \ 0000006C C81D81E3 ORR R1,R1,#0x3200 \ 00000070 0400A0E1 MOV R0,R4 \ 00000074 4D0000EF SWI +77 \ 00000078 7080BDE8 POP {R4-R6,PC} 104 } 105 else 106 GBS_StartTimerProc(&mytmr3, 2160, Pinger2); \ ??Pinger2_0: \ 0000007C 0520A0E1 MOV R2,R5 \ 00000080 871EA0E3 MOV R1,#+2160 \ 00000084 0400A0E1 MOV R0,R4 \ 00000088 4D0000EF SWI +77 107 } \ 0000008C 7080BDE8 POP {R4-R6,PC} ;; return 108 //////////////////////////////////////auto ping///////////////////////////// 109 extern volatile int total_smiles; 110 extern volatile int total_xstatuses; 111 extern volatile int xstatuses_load; 112 extern volatile int pictures_max; //2026rev 113 extern volatile int pictures_loaded; //2026rev 114 #ifdef ELKA 115 int Is_SLI_On; 116 /* 117 #pragma swi_number=0x221 118 __swi __arm int SetCpuClockLow(); 119 120 #pragma swi_number=0x222 121 __swi __arm int SetCpuClockTempHi(); 122 */ 123 #endif 124 int Is_SMARTCPU_On; 125 int Is_INC_On; 126 int Is_ILU_On; 127 128 int Is_Double_Vibra_On; 129 int total_unread; 130 int total_unread2; 131 #ifdef ELKA \ In segment DATA_C, align 4, align-sorted 132 const int SLI_TYPE=1; \ SLI_TYPE: \ 00000000 01000000 DC32 1 133 #endif 134 char PINGO[256]; 135 //extern const int VIBRA_TYPE; 136 //unsigned int SLI_STATUS; 137 #ifdef ELKA 138 extern const unsigned int SLI_time; 139 extern const unsigned int SLI_time2; 140 #endif 141 #define USE_MLMENU 142 143 #define TMR_SECOND 216 144 145 //IPC 146 const char ipc_my_name[32]=IPC_NATICQ_NAME; 147 const char ipc_xtask_name[]=IPC_XTASK_NAME; 148 const char ipc_test_name[]="test"; 149 IPC_REQ gipc; 150 151 152 char elf_path[256]; 153 int maincsm_id; 154 int maingui_id; 155 \ In segment CODE, align 4, keep-with-next 156 void SMART_REDRAW(void) 157 { \ SMART_REDRAW: \ 00000000 10402DE9 PUSH {R4,LR} 158 int f; 159 LockSched(); \ 00000004 460100EF SWI +326 160 f=IsGuiOnTop(maingui_id); \ 00000008 1C009FE5 LDR R0,??SMART_REDRAW_0 ;; S_ICONS + 284 \ 0000000C 000090E5 LDR R0,[R0, #+0] \ 00000010 350100EF SWI +309 \ 00000014 0040A0E1 MOV R4,R0 161 UnlockSched(); \ 00000018 470100EF SWI +327 162 if (f) REDRAW(); \ 0000001C 000054E3 CMP R4,#+0 \ 00000020 1080BD08 POPEQ {R4,PC} \ 00000024 720100EF SWI +370 163 } \ 00000028 1080BDE8 POP {R4,PC} ;; return \ ??SMART_REDRAW_0: \ 0000002C ........ DC32 S_ICONS + 284 164 165 //По 10 секунд 166 #ifdef EVILFOX 167 #define ACTIVE_TIME 30 168 #else 169 #define ACTIVE_TIME 360 170 #endif 171 172 //Максимальное количество сообщений в логе 173 #ifdef EVILFOX 174 #define MAXLOGMSG (10) 175 #else 176 #define MAXLOGMSG (20) 177 #endif 178 179 // Строковые описания статусов 180 181 const char S_OFFLINE[]="Offline"; 182 const char S_INVISIBLE[]="Invisible"; 183 const char S_AWAY[]="Away"; 184 const char S_NA[]="N/A"; 185 const char S_OCCUPIED[]="Occupied"; 186 const char S_DND[]="DND"; 187 const char S_ONLINE[]="Online"; 188 const char S_FFC[]="FFC"; 189 190 volatile int SENDMSGCOUNT; 191 #ifdef kluchnik 192 int IsActiveUp=1; 193 #else 194 int IsActiveUp=0; 195 #endif 196 int Is_Vibra_Enabled; 197 int Is_Id3tag_Enabled; 198 unsigned int Is_Sounds_Enabled; 199 int Is_Show_Offline; 200 int Is_Show_Groups; 201 202 int S_ICONS[TOTAL_ICONS+1]; 203 204 #define EOP -10 205 int CurrentStatus; 206 #ifdef NEWSGOLD 207 extern int CurrentXStatus; 208 #else 209 int CurrentXStatus; 210 #endif 211 212 WSHDR *ews; 213 214 extern const unsigned int UIN; 215 extern const char PASS[]; 216 217 static const char * const icons_names[TOTAL_ICONS]= 218 { 219 "offline.png", 220 "invisible.png", 221 "away.png", 222 "na.png", 223 "occupied.png", 224 "dnd.png", 225 "depression.png", 226 "evil.png", 227 "home.png", 228 "lunch.png", 229 "work.png", 230 "online.png", 231 "ffc.png", 232 "message.png", 233 "unknown.png", 234 "groupon.png", 235 "groupoff.png", 236 "null.png", 237 "addcont.png", 238 "head.png", 239 "logo.png", 240 "ping.png", 241 "settings.png", 242 "vis1.png", 243 "vis2.png", 244 "vis3.png", 245 "vis4.png", 246 "vis5.png" 247 }; 248 249 extern const char ICON_PATH[]; 250 251 ////=================================away_msg============== 252 #pragma swi_number=0x0C5 253 __swi __arm int IsIdleUiOnTop(); 254 255 //#ifdef EVILFOX 256 int msg_away_timer=0; 257 extern const char away_msg2[64]; 258 char away_msg[264]; 259 char away_msg_time[64]; 260 char away_msg_time_dace[16]; 261 char *inp_away_msg2; 262 char tim_zone[16]; 263 extern const int time_zone; \ In segment DATA_Z, align 4, align-sorted 264 int timeh; \ timeh: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 265 int timemin; \ timemin: \ 00000000 DS8 4 266 int away_m; 267 int status_rem; 268 int change_back_status; 269 GBSTMR away_tmr; 270 extern const int Auto_Status; 271 \ In segment CODE, align 4, keep-with-next 272 void away_timer() 273 { 274 if(msg_away_timer==AUTO_ENGADE) \ away_timer: \ 00000000 ........ LDR R1,??DataTable3 ;; AUTO_ENGADE \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 ........ LDR R4,??DataTable34 ;; S_ICONS \ 0000000C 08D04DE2 SUB SP,SP,#+8 \ 00000010 300194E5 LDR R0,[R4, #+304] \ 00000014 001091E5 LDR R1,[R1, #+0] \ 00000018 010050E1 CMP R0,R1 \ 0000001C 2000001A BNE ??away_timer_0 275 { 276 TTime tt; 277 GetDateTime(NULL,&tt); 278 sprintf(away_msg_time_dace, "%2d:%2d", tt.hour, tt.min); \ 00000020 B4509FE5 LDR R5,??away_timer_1 ;; `?` \ 00000024 0D10A0E1 MOV R1,SP \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C B40000EF SWI +180 \ 00000030 0130DDE5 LDRB R3,[SP, #+1] \ 00000034 0020DDE5 LDRB R2,[SP, #+0] \ 00000038 0510A0E1 MOV R1,R5 \ 0000003C 4400A0E3 MOV R0,#+68 \ 00000040 580D80E3 ORR R0,R0,#0x1600 \ 00000044 040080E0 ADD R0,R0,R4 \ 00000048 160000EF SWI +22 279 // sprintf(away_msg_time, "[away since %02d : %02d [%s]]", tt.hour, tt.min, tim_zone); 280 sprintf(away_msg_time, "(отсутствую примерно с %02d:%02d [%s] )", tt.hour, tt.min, tim_zone); \ 0000004C 5400A0E3 MOV R0,#+84 \ 00000050 580D80E3 ORR R0,R0,#0x1600 \ 00000054 040080E0 ADD R0,R0,R4 \ 00000058 01002DE9 PUSH {R0} \ 0000005C 0530DDE5 LDRB R3,[SP, #+5] \ 00000060 0420DDE5 LDRB R2,[SP, #+4] \ 00000064 081085E2 ADD R1,R5,#+8 \ 00000068 0400A0E3 MOV R0,#+4 \ 0000006C 580D80E3 ORR R0,R0,#0x1600 \ 00000070 040080E0 ADD R0,R0,R4 \ 00000074 160000EF SWI +22 281 away_m=1; 282 // automsg=1; 283 if(CurrentStatus!=2) \ 00000078 740194E5 LDR R0,[R4, #+372] \ 0000007C 0150A0E3 MOV R5,#+1 \ 00000080 385184E5 STR R5,[R4, #+312] \ 00000084 020050E3 CMP R0,#+2 \ 00000088 04D08DE2 ADD SP,SP,#+4 \ 0000008C 0400000A BEQ ??away_timer_0 284 { 285 status_rem=CurrentStatus; \ 00000090 3C0184E5 STR R0,[R4, #+316] 286 CurrentStatus=2; \ 00000094 0200A0E3 MOV R0,#+2 \ 00000098 740184E5 STR R0,[R4, #+372] 287 set_my_status(); \ 0000009C ........ BL set_my_status 288 // SUBPROC((void*)WriteDefSettings); 289 change_back_status=1; \ 000000A0 405184E5 STR R5,[R4, #+320] 290 } 291 } 292 if(Auto_Status) \ ??away_timer_0: \ 000000A4 ........ LDR R0,??DataTable5 ;; Auto_Status 293 msg_away_timer++; 294 GBS_StartTimerProc(&away_tmr, 216*5, away_timer); \ 000000A8 30209FE5 LDR R2,??away_timer_1+0x4 ;; away_timer \ 000000AC 000090E5 LDR R0,[R0, #+0] \ 000000B0 3810A0E3 MOV R1,#+56 \ 000000B4 000050E3 CMP R0,#+0 \ 000000B8 30019415 LDRNE R0,[R4, #+304] \ 000000BC 401E81E3 ORR R1,R1,#0x400 \ 000000C0 01008012 ADDNE R0,R0,#+1 \ 000000C4 30018415 STRNE R0,[R4, #+304] \ 000000C8 6400A0E3 MOV R0,#+100 \ 000000CC 580D80E3 ORR R0,R0,#0x1600 \ 000000D0 040080E0 ADD R0,R0,R4 \ 000000D4 4D0000EF SWI +77 295 } \ 000000D8 3380BDE8 POP {R0,R1,R4,R5,PC} ;; return \ ??away_timer_1: \ 000000DC ........ DC32 `?` \ 000000E0 ........ DC32 away_timer 296 //#endif \ In segment CODE, align 4, keep-with-next 297 void init_time_zone() 298 { 299 switch(time_zone) \ init_time_zone: \ 00000000 50219FE5 LDR R2,??init_time_zone_1 ;; time_zone \ 00000004 50019FE5 LDR R0,??init_time_zone_1+0x4 ;; S_ICONS + 5716 \ 00000008 50119FE5 LDR R1,??init_time_zone_1+0x8 ;; `?` \ 0000000C 00402DE9 PUSH {LR} \ 00000010 002092E5 LDR R2,[R2, #+0] \ 00000014 200052E3 CMP R2,#+32 \ 00000018 0080BD88 POPHI {PC} \ 0000001C 013F8FE2 ADR R3,??init_time_zone_0 \ 00000020 0230D3E7 LDRB R3,[R3, R2] \ 00000024 03F18FE0 ADD PC,PC,R3, LSL #+2 \ ??init_time_zone_0: \ 00000028 0C080B0E DC8 +12,+8,+11,+14 \ 0000002C 10121416 DC8 +16,+18,+20,+22 \ 00000030 181A1C1E DC8 +24,+26,+28,+30 \ 00000034 20222426 DC8 +32,+34,+36,+38 \ 00000038 282A2C2E DC8 +40,+42,+44,+46 \ 0000003C 30323436 DC8 +48,+50,+52,+54 \ 00000040 383A3C3E DC8 +56,+58,+60,+62 \ 00000044 40424446 DC8 +64,+66,+68,+70 \ 00000048 48000000 DC8 +72,+0,+0,+0 300 { 301 case 0: 302 sprintf(tim_zone, "GMT -12:00"); 303 break; 304 case 1: 305 sprintf(tim_zone, "GMT -11:00"); \ ??init_time_zone_2: \ 0000004C 0C1081E2 ADD R1,R1,#+12 \ 00000050 160000EF SWI +22 \ 00000054 0080BDE8 POP {PC} 306 break; 307 case 2: 308 sprintf(tim_zone, "GMT -10:00"); \ ??init_time_zone_3: \ 00000058 181081E2 ADD R1,R1,#+24 \ ??init_time_zone_4: \ 0000005C 160000EF SWI +22 \ 00000060 0080BDE8 POP {PC} 309 break; 310 case 3: 311 sprintf(tim_zone, "GMT -09:00"); \ ??init_time_zone_5: \ 00000064 241081E2 ADD R1,R1,#+36 \ 00000068 FBFFFFEA B ??init_time_zone_4 312 break; 313 case 4: 314 sprintf(tim_zone, "GMT -08:00"); \ ??init_time_zone_6: \ 0000006C 301081E2 ADD R1,R1,#+48 \ 00000070 F9FFFFEA B ??init_time_zone_4 315 break; 316 case 5: 317 sprintf(tim_zone, "GMT -07:00"); \ ??init_time_zone_7: \ 00000074 3C1081E2 ADD R1,R1,#+60 \ 00000078 F7FFFFEA B ??init_time_zone_4 318 break; 319 case 6: 320 sprintf(tim_zone, "GMT -06:00"); \ ??init_time_zone_8: \ 0000007C 481081E2 ADD R1,R1,#+72 \ 00000080 F5FFFFEA B ??init_time_zone_4 321 break; 322 case 7: 323 sprintf(tim_zone, "GMT -05:00"); \ ??init_time_zone_9: \ 00000084 541081E2 ADD R1,R1,#+84 \ 00000088 F3FFFFEA B ??init_time_zone_4 324 break; 325 case 8: 326 sprintf(tim_zone, "GMT -04:00"); \ ??init_time_zone_10: \ 0000008C 601081E2 ADD R1,R1,#+96 \ 00000090 F1FFFFEA B ??init_time_zone_4 327 break; 328 case 9: 329 sprintf(tim_zone, "GMT -03:30"); \ ??init_time_zone_11: \ 00000094 6C1081E2 ADD R1,R1,#+108 \ 00000098 EFFFFFEA B ??init_time_zone_4 330 break; 331 case 10: 332 sprintf(tim_zone, "GMT -03:00"); \ ??init_time_zone_12: \ 0000009C 781081E2 ADD R1,R1,#+120 \ 000000A0 EDFFFFEA B ??init_time_zone_4 333 break; 334 case 11: 335 sprintf(tim_zone, "GMT -02:00"); \ ??init_time_zone_13: \ 000000A4 841081E2 ADD R1,R1,#+132 \ 000000A8 EBFFFFEA B ??init_time_zone_4 336 break; 337 case 12: 338 sprintf(tim_zone, "GMT -01:00"); \ ??init_time_zone_14: \ 000000AC 901081E2 ADD R1,R1,#+144 \ 000000B0 E9FFFFEA B ??init_time_zone_4 339 break; 340 case 13: 341 sprintf(tim_zone, "GMT 00:00"); \ ??init_time_zone_15: \ 000000B4 9C1081E2 ADD R1,R1,#+156 \ 000000B8 E7FFFFEA B ??init_time_zone_4 342 break; 343 case 14: 344 sprintf(tim_zone, "GMT +01:00"); \ ??init_time_zone_16: \ 000000BC A81081E2 ADD R1,R1,#+168 \ 000000C0 E5FFFFEA B ??init_time_zone_4 345 break; 346 case 15: 347 sprintf(tim_zone, "GMT +02:00"); \ ??init_time_zone_17: \ 000000C4 B41081E2 ADD R1,R1,#+180 \ 000000C8 E3FFFFEA B ??init_time_zone_4 348 break; 349 case 16: 350 sprintf(tim_zone, "GMT +03:00"); \ ??init_time_zone_18: \ 000000CC C01081E2 ADD R1,R1,#+192 \ 000000D0 E1FFFFEA B ??init_time_zone_4 351 break; 352 case 17: 353 sprintf(tim_zone, "GMT +03:30"); \ ??init_time_zone_19: \ 000000D4 CC1081E2 ADD R1,R1,#+204 \ 000000D8 DFFFFFEA B ??init_time_zone_4 354 break; 355 case 18: 356 sprintf(tim_zone, "GMT +04:00"); \ ??init_time_zone_20: \ 000000DC D81081E2 ADD R1,R1,#+216 \ 000000E0 DDFFFFEA B ??init_time_zone_4 357 break; 358 case 19: 359 sprintf(tim_zone, "GMT +04:30"); \ ??init_time_zone_21: \ 000000E4 E41081E2 ADD R1,R1,#+228 \ 000000E8 DBFFFFEA B ??init_time_zone_4 360 break; 361 case 20: 362 sprintf(tim_zone, "GMT +05:00"); \ ??init_time_zone_22: \ 000000EC F01081E2 ADD R1,R1,#+240 \ 000000F0 D9FFFFEA B ??init_time_zone_4 363 break; 364 case 21: 365 sprintf(tim_zone, "GMT +05:30"); \ ??init_time_zone_23: \ 000000F4 FC1081E2 ADD R1,R1,#+252 \ 000000F8 D7FFFFEA B ??init_time_zone_4 366 break; 367 case 22: 368 sprintf(tim_zone, "GMT +05:45"); \ ??init_time_zone_24: \ 000000FC 601F81E2 ADD R1,R1,#+384 \ 00000100 D5FFFFEA B ??init_time_zone_4 369 break; 370 case 23: 371 sprintf(tim_zone, "GMT +06:00"); \ ??init_time_zone_25: \ 00000104 421F81E2 ADD R1,R1,#+264 \ 00000108 D3FFFFEA B ??init_time_zone_4 372 break; 373 case 24: 374 sprintf(tim_zone, "GMT +06:30"); \ ??init_time_zone_26: \ 0000010C 451F81E2 ADD R1,R1,#+276 \ 00000110 D1FFFFEA B ??init_time_zone_4 375 break; 376 case 25: 377 sprintf(tim_zone, "GMT +07:00"); \ ??init_time_zone_27: \ 00000114 481F81E2 ADD R1,R1,#+288 \ 00000118 CFFFFFEA B ??init_time_zone_4 378 break; 379 case 26: 380 sprintf(tim_zone, "GMT +08:00"); \ ??init_time_zone_28: \ 0000011C 4B1F81E2 ADD R1,R1,#+300 \ 00000120 CDFFFFEA B ??init_time_zone_4 381 break; 382 case 27: 383 sprintf(tim_zone, "GMT +09:00"); \ ??init_time_zone_29: \ 00000124 4E1F81E2 ADD R1,R1,#+312 \ 00000128 CBFFFFEA B ??init_time_zone_4 384 break; 385 case 28: 386 sprintf(tim_zone, "GMT +09:30"); \ ??init_time_zone_30: \ 0000012C 511F81E2 ADD R1,R1,#+324 \ 00000130 C9FFFFEA B ??init_time_zone_4 387 break; 388 case 29: 389 sprintf(tim_zone, "GMT +10:00"); \ ??init_time_zone_31: \ 00000134 541F81E2 ADD R1,R1,#+336 \ 00000138 C7FFFFEA B ??init_time_zone_4 390 break; 391 case 30: 392 sprintf(tim_zone, "GMT +11:00"); \ ??init_time_zone_32: \ 0000013C 571F81E2 ADD R1,R1,#+348 \ 00000140 C5FFFFEA B ??init_time_zone_4 393 break; 394 case 31: 395 sprintf(tim_zone, "GMT +12:00"); \ ??init_time_zone_33: \ 00000144 5A1F81E2 ADD R1,R1,#+360 \ 00000148 C3FFFFEA B ??init_time_zone_4 396 break; 397 case 32: 398 sprintf(tim_zone, "GMT +13:00"); \ ??init_time_zone_34: \ 0000014C 5D1F81E2 ADD R1,R1,#+372 \ 00000150 160000EF SWI +22 399 break; 400 } 401 } \ ??init_time_zone_35: \ 00000154 0080BDE8 POP {PC} ;; return \ ??init_time_zone_1: \ 00000158 ........ DC32 time_zone \ 0000015C ........ DC32 S_ICONS + 5716 \ 00000160 ........ DC32 `?` 402 403 //=================================away_msg=============== 404 //////////////////////////////////////////tozhe dlja auto ping/////////////// 405 \ In segment CODE, align 4, keep-with-next 406 void Draw11(void *canv) 407 { 408 #ifdef EVILFOX 409 PrintField(date_X,date_Y, PINGO, align, fonto, space); 410 #else 411 PrintField(date_X,date_Y, PINGO, align, fonto, spaco1); \ Draw11: \ 00000000 ........ LDR R1,??DataTable20 ;; spaco1 \ 00000004 ........ LDR R0,??DataTable34 ;; S_ICONS \ 00000008 00402DE9 PUSH {LR} \ 0000000C 001091E5 LDR R1,[R1, #+0] \ 00000010 02002DE9 PUSH {R1} \ 00000014 ........ LDR R1,??DataTable21 ;; fonto \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 02002DE9 PUSH {R1} \ 00000020 E83090E5 LDR R3,[R0, #+232] \ 00000024 FC10A0E3 MOV R1,#+252 \ 00000028 4C1D81E3 ORR R1,R1,#0x1300 \ 0000002C 002081E0 ADD R2,R1,R0 \ 00000030 10009FE5 LDR R0,??Draw11_0 ;; date_Y \ 00000034 001090E5 LDR R1,[R0, #+0] \ 00000038 0C009FE5 LDR R0,??Draw11_0+0x4 ;; date_X \ 0000003C 000090E5 LDR R0,[R0, #+0] \ 00000040 ........ _BLF PrintField,??PrintField??rA 412 #endif 413 } \ 00000044 0380BDE8 POP {R0,R1,PC} ;; return \ ??Draw11_0: \ 00000048 ........ DC32 date_Y \ 0000004C ........ DC32 date_X 414 //////////////////////////////////////////tozhe dlja auto ping/////////////// 415 GBSTMR mytmr; 416 GBSTMR mytmr2; 417 volatile int vibra_count; 418 #ifdef ELKA 419 void SLI_Off(void); 420 #endif 421 void start_vibra2(void); 422 //////////////////////////reminder timer///////////////////////// \ In segment CODE, align 4, keep-with-next 423 void Remind_Timer2() 424 { \ Remind_Timer2: \ 00000000 10402DE9 PUSH {R4,LR} 425 if (total_unread) \ 00000004 ........ LDR R4,??DataTable34 ;; S_ICONS \ 00000008 B00194E5 LDR R0,[R4, #+432] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD08 POPEQ {R4,PC} 426 { 427 vibra_count=Vibra_cc; \ 00000014 24009FE5 LDR R0,??Remind_Timer2_0 ;; Vibra_cc \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C 7C0184E5 STR R0,[R4, #+380] 428 start_vibra2(); \ 00000020 ........ BL start_vibra2 429 GBS_StartTimerProc(&mytmr2, 6480, Remind_Timer2); \ 00000024 ........ LDR R2,??DataTable11 ;; Remind_Timer2 \ 00000028 5010A0E3 MOV R1,#+80 \ 0000002C 641D81E3 ORR R1,R1,#0x1900 \ 00000030 B30F41E2 SUB R0,R1,#+716 \ 00000034 040080E0 ADD R0,R0,R4 \ 00000038 4D0000EF SWI +77 430 } 431 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??Remind_Timer2_0: \ 00000040 ........ DC32 Vibra_cc 432 \ In segment CODE, align 4, keep-with-next 433 void Reminder_timer() 434 { 435 GBS_StartTimerProc(&mytmr2, 6480, Remind_Timer2); \ Reminder_timer: \ 00000000 ........ LDR R2,??DataTable11 ;; Remind_Timer2 \ 00000004 10009FE5 LDR R0,??Reminder_timer_0 ;; S_ICONS + 5764 \ 00000008 00402DE9 PUSH {LR} \ 0000000C 5010A0E3 MOV R1,#+80 \ 00000010 641D81E3 ORR R1,R1,#0x1900 \ 00000014 4D0000EF SWI +77 436 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??Reminder_timer_0: \ 0000001C ........ DC32 S_ICONS + 5764 437 //////////////////////////reminder timer///////////////////////// 438 439 //////////////////////////uptime////////////////////////// 440 int Is_UPTIME_On; 441 //int bubins; 442 int xstatus_old; 443 int minimum_xstatus; 444 int maximum; 445 //int UPTIME; 446 extern const unsigned int date_X2; 447 extern const unsigned int date_Y2; 448 \ In segment CODE, align 4, keep-with-next 449 void xstatuse() 450 { \ xstatuse: \ 00000000 30402DE9 PUSH {R4,R5,LR} 451 maximum++; \ 00000004 ........ LDR R4,??DataTable34 ;; S_ICONS 452 if(maximum==60) \ 00000008 0050A0E3 MOV R5,#+0 \ 0000000C 500194E5 LDR R0,[R4, #+336] \ 00000010 010080E2 ADD R0,R0,#+1 \ 00000014 500184E5 STR R0,[R4, #+336] \ 00000018 3C0050E3 CMP R0,#+60 \ 0000001C 0700001A BNE ??xstatuse_0 453 { 454 if(saver_on) reftes(); \ 00000020 F80094E5 LDR R0,[R4, #+248] \ 00000024 000050E3 CMP R0,#+0 \ 00000028 0000000A BEQ ??xstatuse_1 \ 0000002C ........ _BLF reftes,??reftes??rA 455 maximum=0; 456 minimum_xstatus++; \ ??xstatuse_1: \ 00000030 4C0194E5 LDR R0,[R4, #+332] \ 00000034 505184E5 STR R5,[R4, #+336] \ 00000038 010080E2 ADD R0,R0,#+1 \ 0000003C 4C0184E5 STR R0,[R4, #+332] 457 } 458 if(minimum_xstatus==60) \ ??xstatuse_0: \ 00000040 4C0194E5 LDR R0,[R4, #+332] \ 00000044 3C0050E3 CMP R0,#+60 \ 00000048 3080BD18 POPNE {R4,R5,PC} 459 { 460 minimum_xstatus=0; 461 xstatus_old++; \ 0000004C 480194E5 LDR R0,[R4, #+328] \ 00000050 4C5184E5 STR R5,[R4, #+332] \ 00000054 010080E2 ADD R0,R0,#+1 \ 00000058 480184E5 STR R0,[R4, #+328] 462 } 463 } \ 0000005C 3080BDE8 POP {R4,R5,PC} ;; return 464 465 GBSTMR mytmr4; 466 #ifdef NEWSGOLD 467 GBSTMR tracktmr; 468 int tracktimer; 469 #endif 470 extern const int Pause_Time; 471 \ In segment CODE, align 4, keep-with-next 472 void x_zstatus() 473 { \ x_zstatus: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 474 if(connect_state==3) \ 00000004 ........ LDR R4,??DataTable34 ;; S_ICONS \ 00000008 84609FE5 LDR R6,??x_zstatus_0 ;; x_zstatus \ 0000000C 9400A0E3 MOV R0,#+148 \ 00000010 580D80E3 ORR R0,R0,#0x1600 \ 00000014 045080E0 ADD R5,R0,R4 \ 00000018 8C0194E5 LDR R0,[R4, #+396] \ 0000001C 0070A0E3 MOV R7,#+0 \ 00000020 030050E3 CMP R0,#+3 \ 00000024 0F00001A BNE ??x_zstatus_1 475 { 476 xstatuse(); \ 00000028 ........ BL xstatuse 477 #ifdef NEWSGOLD 478 if (tracktimer>=10)/*&&(_GetPlayStatus()!=1))*/ \ 0000002C 540194E5 LDR R0,[R4, #+340] \ 00000030 0A0050E3 CMP R0,#+10 \ 00000034 070000BA BLT ??x_zstatus_2 479 { 480 GBS_StartTimerProc(&tracktmr, 216*5, GetTags); \ 00000038 ........ LDR R2,??DataTable14 ;; GetTags \ 0000003C 3810A0E3 MOV R1,#+56 \ 00000040 401E81E3 ORR R1,R1,#0x400 \ 00000044 A400A0E3 MOV R0,#+164 \ 00000048 580D80E3 ORR R0,R0,#0x1600 \ 0000004C 040080E0 ADD R0,R0,R4 \ 00000050 4D0000EF SWI +77 481 tracktimer=0; \ 00000054 547184E5 STR R7,[R4, #+340] 482 } 483 tracktimer++; \ ??x_zstatus_2: \ 00000058 540194E5 LDR R0,[R4, #+340] \ 0000005C 010080E2 ADD R0,R0,#+1 \ 00000060 540184E5 STR R0,[R4, #+340] 484 #endif 485 GBS_StartTimerProc(&mytmr4, 216, x_zstatus); \ 00000064 050000EA B ??x_zstatus_3 486 } 487 else 488 { 489 if(!Pause_Time) \ ??x_zstatus_1: \ 00000068 28009FE5 LDR R0,??x_zstatus_0+0x4 ;; Pause_Time \ 0000006C 000090E5 LDR R0,[R0, #+0] \ 00000070 000050E3 CMP R0,#+0 490 { 491 xstatus_old=0; \ 00000074 48718405 STREQ R7,[R4, #+328] 492 minimum_xstatus=0; \ 00000078 4C718405 STREQ R7,[R4, #+332] 493 maximum=0; \ 0000007C 50718405 STREQ R7,[R4, #+336] 494 } 495 GBS_StartTimerProc(&mytmr4, 216, x_zstatus); \ ??x_zstatus_3: \ 00000080 0620A0E1 MOV R2,R6 \ 00000084 D810A0E3 MOV R1,#+216 \ 00000088 0500A0E1 MOV R0,R5 \ 0000008C 4D0000EF SWI +77 496 } 497 } \ 00000090 F080BDE8 POP {R4-R7,PC} ;; return \ ??x_zstatus_0: \ 00000094 ........ DC32 x_zstatus \ 00000098 ........ DC32 Pause_Time 498 499 char hah[128]; 500 \ In segment CODE, align 4, keep-with-next 501 void Draw22(void *canv) 502 { 503 504 if(connect_state==3) \ Draw22: \ 00000000 80109FE5 LDR R1,??Draw22_0 ;; `?` \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 ........ LDR R4,??DataTable34 ;; S_ICONS \ 0000000C B400A0E3 MOV R0,#+180 \ 00000010 580D80E3 ORR R0,R0,#0x1600 \ 00000014 045080E0 ADD R5,R0,R4 \ 00000018 8C0194E5 LDR R0,[R4, #+396] \ 0000001C 030050E3 CMP R0,#+3 \ 00000020 0700001A BNE ??Draw22_1 505 { 506 sprintf(hah,"Online: %02d:%02d:%02d", xstatus_old, minimum_xstatus, maximum); \ 00000024 500194E5 LDR R0,[R4, #+336] \ 00000028 01002DE9 PUSH {R0} \ 0000002C 4C3194E5 LDR R3,[R4, #+332] \ 00000030 482194E5 LDR R2,[R4, #+328] \ 00000034 0500A0E1 MOV R0,R5 \ 00000038 160000EF SWI +22 \ 0000003C 04D08DE2 ADD SP,SP,#+4 \ 00000040 020000EA B ??Draw22_2 507 } 508 else 509 sprintf(hah,"Offline"); \ ??Draw22_1: \ 00000044 181081E2 ADD R1,R1,#+24 \ 00000048 0500A0E1 MOV R0,R5 \ 0000004C 160000EF SWI +22 510 #ifdef EVILFOX 511 PrintField(date_X2,date_Y2, hah, align, fonto, space); 512 #else 513 PrintField(date_X2,date_Y2, hah, align, fonto, spaco1); \ ??Draw22_2: \ 00000050 ........ LDR R0,??DataTable20 ;; spaco1 \ 00000054 0520A0E1 MOV R2,R5 \ 00000058 000090E5 LDR R0,[R0, #+0] \ 0000005C 01002DE9 PUSH {R0} \ 00000060 ........ LDR R0,??DataTable21 ;; fonto \ 00000064 000090E5 LDR R0,[R0, #+0] \ 00000068 01002DE9 PUSH {R0} \ 0000006C E83094E5 LDR R3,[R4, #+232] \ 00000070 14009FE5 LDR R0,??Draw22_0+0x4 ;; date_Y2 \ 00000074 001090E5 LDR R1,[R0, #+0] \ 00000078 10009FE5 LDR R0,??Draw22_0+0x8 ;; date_X2 \ 0000007C 000090E5 LDR R0,[R0, #+0] \ 00000080 ........ _BLF PrintField,??PrintField??rA 514 #endif 515 } \ 00000084 3380BDE8 POP {R0,R1,R4,R5,PC} ;; return \ ??Draw22_0: \ 00000088 ........ DC32 `?` \ 0000008C ........ DC32 date_Y2 \ 00000090 ........ DC32 date_X2 516 517 //-------------------------------------------// 518 519 extern const unsigned int auto_x; 520 extern const unsigned int auto_y; 521 extern const int showAwayIdle; 522 //int automsg=0; 523 \ In segment CODE, align 4, keep-with-next 524 void DrawAutoMSG(void *canv)//Вывод времени на идле 525 { \ DrawAutoMSG: \ 00000000 30402DE9 PUSH {R4,R5,LR} 526 if(away_m && showAwayIdle) \ 00000004 ........ LDR R4,??DataTable34 ;; S_ICONS \ 00000008 380194E5 LDR R0,[R4, #+312] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 3080BD08 POPEQ {R4,R5,PC} \ 00000014 ........ LDR R0,??DataTable19 ;; showAwayIdle \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 3080BD08 POPEQ {R4,R5,PC} 527 { 528 sprintf(hah,"Away from [%s]",away_msg_time_dace); \ 00000024 54109FE5 LDR R1,??DrawAutoMSG_0 ;; `?` \ 00000028 B400A0E3 MOV R0,#+180 \ 0000002C 580D80E3 ORR R0,R0,#0x1600 \ 00000030 045080E0 ADD R5,R0,R4 \ 00000034 700040E2 SUB R0,R0,#+112 \ 00000038 042080E0 ADD R2,R0,R4 \ 0000003C 0500A0E1 MOV R0,R5 \ 00000040 160000EF SWI +22 529 PrintField(auto_x,auto_y, hah, align, fonto, spaco1); \ 00000044 ........ LDR R0,??DataTable20 ;; spaco1 \ 00000048 0520A0E1 MOV R2,R5 \ 0000004C 000090E5 LDR R0,[R0, #+0] \ 00000050 01002DE9 PUSH {R0} \ 00000054 ........ LDR R0,??DataTable21 ;; fonto \ 00000058 000090E5 LDR R0,[R0, #+0] \ 0000005C 01002DE9 PUSH {R0} \ 00000060 E83094E5 LDR R3,[R4, #+232] \ 00000064 18009FE5 LDR R0,??DrawAutoMSG_0+0x4 ;; auto_y \ 00000068 001090E5 LDR R1,[R0, #+0] \ 0000006C 14009FE5 LDR R0,??DrawAutoMSG_0+0x8 ;; auto_x \ 00000070 000090E5 LDR R0,[R0, #+0] \ 00000074 ........ _BLF PrintField,??PrintField??rA \ 00000078 08D08DE2 ADD SP,SP,#+8 530 } 531 } \ 0000007C 3080BDE8 POP {R4,R5,PC} ;; return \ ??DrawAutoMSG_0: \ 00000080 ........ DC32 `?` \ 00000084 ........ DC32 auto_y \ 00000088 ........ DC32 auto_x 532 533 534 //-------------------------------Input away msg------------------------------// 535 536 //Вводим сообщение какое хотим \ In segment DATA_Z, align 4, align-sorted 537 int input_awaymsg_id; \ input_awaymsg_id: \ 00000000 DS8 4 538 539 const HEADER_DESC input_awaymsg_hdr={0,0,131,21,NULL,(int)"Input away msg",LGP_NULL}; 540 void UpdateCLheader(void); 541 int inp_away_m=0; \ In segment CODE, align 4, keep-with-next 542 int input_awaymsg_onkey(GUI *data, GUI_MSG *msg) 543 { \ input_awaymsg_onkey: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 \ 00000008 0070A0E1 MOV R7,R0 \ 0000000C 0160A0E1 MOV R6,R1 544 WSHDR *ws=AllocWS(64); 545 if (msg->keys==0x0FFF || msg->keys==VOL_DOWN_BUTTON)//0xFFF \ 00000010 ........ LDR R5,??DataTable34 ;; S_ICONS \ 00000014 4000A0E3 MOV R0,#+64 \ 00000018 250100EF SWI +293 \ 0000001C F200D6E1 LDRSH R0,[R6, #+2] \ 00000020 0040A0E3 MOV R4,#+0 \ 00000024 FF10A0E3 MOV R1,#+255 \ 00000028 F01E81E3 ORR R1,R1,#0xF00 \ 0000002C 010050E1 CMP R0,R1 \ 00000030 0E005013 CMPNE R0,#+14 \ 00000034 1E00001A BNE ??input_awaymsg_onkey_0 546 { 547 EDITCONTROL ec; 548 ExtractEditControl(data,2,&ec); \ 00000038 0D20A0E1 MOV R2,SP \ 0000003C 0210A0E3 MOV R1,#+2 \ 00000040 0700A0E1 MOV R0,R7 \ 00000044 690100EF SWI +361 549 ws=ec.pWS; 550 inp_away_msg2=malloc(ec.maxlen); \ 00000048 F801DDE1 LDRSH R0,[SP, #+24] \ 0000004C 28709DE5 LDR R7,[SP, #+40] 551 // ws_2str(ws,inp_away_msg2,ec.maxlen); 552 int i=0; 553 for(i=0;iwsbody[0];i++) \ 00000050 0080A0E3 MOV R8,#+0 \ 00000054 140000EF SWI +20 \ 00000058 340185E5 STR R0,[R5, #+308] \ 0000005C 000097E5 LDR R0,[R7, #+0] \ 00000060 B000D0E1 LDRH R0,[R0, #+0] \ 00000064 000050E3 CMP R0,#+0 \ 00000068 0600001A BNE ??input_awaymsg_onkey_1 \ 0000006C 090000EA B ??input_awaymsg_onkey_2 554 *(inp_away_msg2+i)=char16to8(ws->wsbody[i+1]); \ ??input_awaymsg_onkey_3: \ 00000070 880080E0 ADD R0,R0,R8, LSL #+1 \ 00000074 B200D0E1 LDRH R0,[R0, #+2] \ 00000078 ........ _BLF char16to8,??char16to8??rA \ 0000007C 341195E5 LDR R1,[R5, #+308] \ 00000080 0100C8E7 STRB R0,[R8, +R1] \ 00000084 018088E2 ADD R8,R8,#+1 \ ??input_awaymsg_onkey_1: \ 00000088 000097E5 LDR R0,[R7, #+0] \ 0000008C B010D0E1 LDRH R1,[R0, #+0] \ 00000090 010058E1 CMP R8,R1 \ 00000094 F5FFFFBA BLT ??input_awaymsg_onkey_3 555 *(inp_away_msg2+i++)=0; \ ??input_awaymsg_onkey_2: \ 00000098 340195E5 LDR R0,[R5, #+308] \ 0000009C 0040C8E7 STRB R4,[R8, +R0] 556 #ifdef kluchnik 557 char *s; 558 ExtractEditControl(data,4,&ec); 559 ws=ec.pWS; 560 s=malloc(ec.maxlen); 561 for(i=0;iwsbody[0];i++) 562 *(s+i)=char16to8(ws->wsbody[i+1]); 563 *(s+i++)=0; 564 strcat(inp_away_msg2,s); 565 #endif 566 inp_away_m=1; \ 000000A0 0100A0E3 MOV R0,#+1 \ 000000A4 580185E5 STR R0,[R5, #+344] 567 568 UpdateCLheader(); \ 000000A8 ........ BL UpdateCLheader 569 // GeneralFunc_flag1(input_awaymsg_id,1); 570 GeneralFuncF1(1); \ 000000AC 0100A0E3 MOV R0,#+1 \ 000000B0 3B0100EF SWI +315 571 } 572 573 if(msg->keys==LEFT_SOFT || msg->keys==RED_BUTTON) \ ??input_awaymsg_onkey_0: \ 000000B4 F200D6E1 LDRSH R0,[R6, #+2] \ 000000B8 010050E3 CMP R0,#+1 \ 000000BC 0C005013 CMPNE R0,#+12 \ 000000C0 0200001A BNE ??input_awaymsg_onkey_4 574 { 575 msg_away_timer=0; \ 000000C4 304185E5 STR R4,[R5, #+304] 576 away_m=0; \ 000000C8 384185E5 STR R4,[R5, #+312] 577 // automsg=0; 578 UpdateCLheader(); \ 000000CC ........ BL UpdateCLheader 579 } 580 return(0); \ ??input_awaymsg_onkey_4: \ 000000D0 0000A0E3 MOV R0,#+0 \ 000000D4 2CD08DE2 ADD SP,SP,#+44 \ 000000D8 F081BDE8 POP {R4-R8,PC} ;; return 581 } 582 \ In segment CODE, align 4, keep-with-next 583 void input_awaymsg_ghook(GUI *gui, int cmd) 584 { \ input_awaymsg_ghook: \ 00000000 00402DE9 PUSH {LR} 585 static SOFTKEY_DESC sk={0x0FFF,0x0000,(int)"Сохранить"}; 586 if (cmd==7) \ 00000004 070051E3 CMP R1,#+7 \ 00000008 0300001A BNE ??input_awaymsg_ghook_0 587 { 588 SetSoftKey(gui,&sk,SET_SOFT_KEY_N); \ 0000000C 2C109FE5 LDR R1,??input_awaymsg_ghook_1 ;; ??sk \ 00000010 0020A0E3 MOV R2,#+0 \ 00000014 680100EF SWI +360 \ 00000018 0080BDE8 POP {PC} 589 } 590 if(cmd==0xA) \ ??input_awaymsg_ghook_0: \ 0000001C 0A0051E3 CMP R1,#+10 \ 00000020 0100001A BNE ??input_awaymsg_ghook_2 591 { 592 DisableIDLETMR(); // Отключаем таймер выхода по таймауту \ 00000024 7F0100EF SWI +383 \ 00000028 0080BDE8 POP {PC} 593 } 594 if (cmd==0x0C) \ ??input_awaymsg_ghook_2: \ 0000002C 0C0051E3 CMP R1,#+12 \ 00000030 0080BD18 POPNE {PC} 595 { 596 EDIT_SetCursorPos(gui,1); \ 00000034 0110A0E3 MOV R1,#+1 \ 00000038 D40100EF SWI +468 597 } 598 if(cmd==0x03){} 599 } \ 0000003C 0080BDE8 POP {PC} ;; return \ ??input_awaymsg_ghook_1: \ 00000040 ........ DC32 ??sk 600 \ In segment CODE, align 4, keep-with-next 601 void input_awaymsg_locret(void){} \ input_awaymsg_locret: \ 00000000 1EFF2FE1 BX LR ;; return 602 603 SOFTKEY_DESC input_awaymsg_sk[]= 604 { 605 {0x0018,0x0000,(int)"Лев"}, 606 {0x0001,0x0000,(int)"Прав"}, 607 {0x003D,0x0000,(int)LGP_DOIT_PIC} 608 }; 609 610 SOFTKEYSTAB input_awaymsg_skt= 611 { 612 input_awaymsg_sk,0 613 }; 614 615 const INPUTDIA_DESC input_awaymsg_desc= 616 { 617 1, 618 input_awaymsg_onkey, 619 input_awaymsg_ghook, 620 (void *)input_awaymsg_locret, 621 0, 622 &input_awaymsg_skt, 623 {0,NULL,NULL,NULL}, 624 FONT_SMALL, 625 100, 626 101, 627 0, 628 0x00000000, 629 0x40000000 630 }; 631 \ In segment CODE, align 4, keep-with-next 632 void InputAwayMsg() 633 { \ InputAwayMsg: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 634 WSHDR *wss=AllocWS(256); 635 void *ma=malloc_adr(); 636 void *eq=AllocEQueue(ma, mfree_adr()); 637 EDITCONTROL ec; 638 PrepareEditControl(&ec); 639 wsprintf(wss,"%t","Сообщение:\n"); \ 00000004 44519FE5 LDR R5,??InputAwayMsg_0+0x4 ;; input_awaymsg_desc \ 00000008 2CD04DE2 SUB SP,SP,#+44 \ 0000000C 400FA0E3 MOV R0,#+256 \ 00000010 250100EF SWI +293 \ 00000014 0060A0E1 MOV R6,R0 \ 00000018 148000EF SWI +32788 \ 0000001C 0070A0E1 MOV R7,R0 \ 00000020 158000EF SWI +32789 \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0700A0E1 MOV R0,R7 \ 0000002C 630100EF SWI +355 \ 00000030 0040A0E1 MOV R4,R0 \ 00000034 0D00A0E1 MOV R0,SP \ 00000038 640100EF SWI +356 \ 0000003C 4C2085E2 ADD R2,R5,#+76 \ 00000040 411F8FE2 ADR R1,??InputAwayMsg_0 ;; "%t" \ 00000044 0600A0E1 MOV R0,R6 \ 00000048 240100EF SWI +292 640 ConstructEditControl(&ec,ECT_HEADER,ECF_NORMAL_STR,wss,32); \ 0000004C 2000A0E3 MOV R0,#+32 \ 00000050 01002DE9 PUSH {R0} \ 00000054 0630A0E1 MOV R3,R6 \ 00000058 0020A0E3 MOV R2,#+0 \ 0000005C 0110A0E3 MOV R1,#+1 \ 00000060 04008DE2 ADD R0,SP,#+4 \ 00000064 650100EF SWI +357 641 AddEditControlToEditQend(eq,&ec,ma); \ 00000068 0720A0E1 MOV R2,R7 \ 0000006C 04108DE2 ADD R1,SP,#+4 \ 00000070 0400A0E1 MOV R0,R4 \ 00000074 660100EF SWI +358 642 643 PrepareEditControl(&ec); \ 00000078 04008DE2 ADD R0,SP,#+4 \ 0000007C 640100EF SWI +356 644 CutWSTR(wss,0); \ 00000080 0010A0E3 MOV R1,#+0 \ 00000084 0600A0E1 MOV R0,R6 \ 00000088 260100EF SWI +294 645 ascii2ws(wss,away_msg2); \ 0000008C ........ LDR R1,??DataTable23 ;; away_msg2 \ 00000090 0600A0E1 MOV R0,R6 \ 00000094 ........ _BLF ascii2ws,??ascii2ws??rA 646 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL,wss,255); \ 00000098 FF00A0E3 MOV R0,#+255 \ 0000009C 01002DE9 PUSH {R0} \ 000000A0 0630A0E1 MOV R3,R6 \ 000000A4 4020A0E3 MOV R2,#+64 \ 000000A8 0310A0E3 MOV R1,#+3 \ 000000AC 08008DE2 ADD R0,SP,#+8 \ 000000B0 650100EF SWI +357 647 AddEditControlToEditQend(eq,&ec,ma); \ 000000B4 0720A0E1 MOV R2,R7 \ 000000B8 08108DE2 ADD R1,SP,#+8 \ 000000BC 0400A0E1 MOV R0,R4 \ 000000C0 660100EF SWI +358 648 #ifdef kluchnik 649 PrepareEditControl(&ec); 650 wsprintf(wss,"%t","Сообщение 2:\n"); 651 ConstructEditControl(&ec,ECT_HEADER,ECF_NORMAL_STR,wss,32); 652 AddEditControlToEditQend(eq,&ec,ma); 653 654 ascii2ws(wss,"когда смогу отвечу:)"); 655 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL,wss,255); 656 AddEditControlToEditQend(eq,&ec,ma); 657 #endif 658 patch_header(&input_awaymsg_hdr); \ 000000C4 0060A0E3 MOV R6,#+0 \ 000000C8 B863C5E1 STRH R6,[R5, #+56] \ 000000CC 1800A0E3 MOV R0,#+24 \ 000000D0 BA03C5E1 STRH R0,[R5, #+58] \ 000000D4 888100EF SWI +33160 \ 000000D8 010040E2 SUB R0,R0,#+1 \ 000000DC BC03C5E1 STRH R0,[R5, #+60] \ 000000E0 8A8100EF SWI +33162 \ 000000E4 170080E2 ADD R0,R0,#+23 \ 000000E8 BE03C5E1 STRH R0,[R5, #+62] 659 patch_input(&input_awaymsg_desc); \ 000000EC B861C5E1 STRH R6,[R5, #+24] \ 000000F0 8A8100EF SWI +33162 \ 000000F4 190080E2 ADD R0,R0,#+25 \ 000000F8 BA01C5E1 STRH R0,[R5, #+26] \ 000000FC 888100EF SWI +33160 \ 00000100 010040E2 SUB R0,R0,#+1 \ 00000104 BC01C5E1 STRH R0,[R5, #+28] \ 00000108 898100EF SWI +33161 \ 0000010C 0060A0E1 MOV R6,R0 \ 00000110 8B8100EF SWI +33163 \ 00000114 000046E0 SUB R0,R6,R0 \ 00000118 010040E2 SUB R0,R0,#+1 \ 0000011C BE01C5E1 STRH R0,[R5, #+30] 660 661 input_awaymsg_id=CreateInputTextDialog(&input_awaymsg_desc,&input_awaymsg_hdr,eq,1,0);//создаем диалоговое окно \ 00000120 0000A0E3 MOV R0,#+0 \ 00000124 01002DE9 PUSH {R0} \ 00000128 0130A0E3 MOV R3,#+1 \ 0000012C 0420A0E1 MOV R2,R4 \ 00000130 381085E2 ADD R1,R5,#+56 \ 00000134 0500A0E1 MOV R0,R5 \ 00000138 670100EF SWI +359 \ 0000013C 10109FE5 LDR R1,??InputAwayMsg_0+0x8 ;; input_awaymsg_id \ 00000140 000081E5 STR R0,[R1, #+0] 662 } \ 00000144 38D08DE2 ADD SP,SP,#+56 \ 00000148 F080BDE8 POP {R4-R7,PC} ;; return \ ??InputAwayMsg_0: \ 0000014C 25740000 DC8 "%t",+0 \ 00000150 ........ DC32 input_awaymsg_desc \ 00000154 ........ DC32 input_awaymsg_id 663 664 665 //////////////////////////uptime////////////////////////// 666 #ifdef ELKA \ In segment CODE, align 4, keep-with-next 667 void SLI_On() 668 { \ SLI_On: \ 00000000 10402DE9 PUSH {R4,LR} 669 // SLI_STATUS=0; 670 if (Is_SLI_On) \ 00000004 ........ LDR R4,??DataTable34 ;; S_ICONS \ 00000008 000194E5 LDR R0,[R4, #+256] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0100000A BEQ ??SLI_On_0 671 SLI_SetState(1); \ 00000014 0100A0E3 MOV R0,#+1 \ 00000018 360000EF SWI +54 672 GBS_StartTimerProc(&mytmr, IN_TICKS(2) / 20, SLI_Off); \ ??SLI_On_0: \ 0000001C 14209FE5 LDR R2,??SLI_On_1 ;; SLI_Off \ 00000020 1510A0E3 MOV R1,#+21 \ 00000024 7400A0E3 MOV R0,#+116 \ 00000028 580D80E3 ORR R0,R0,#0x1600 \ 0000002C 040080E0 ADD R0,R0,R4 \ 00000030 4D0000EF SWI +77 673 } \ 00000034 1080BDE8 POP {R4,PC} ;; return \ ??SLI_On_1: \ 00000038 ........ DC32 SLI_Off 674 \ In segment CODE, align 4, keep-with-next 675 void SLI_Off() 676 { \ SLI_Off: \ 00000000 00402DE9 PUSH {LR} 677 SLI_SetState(2); \ 00000004 0200A0E3 MOV R0,#+2 \ 00000008 360000EF SWI +54 678 if (total_unread) \ 0000000C ........ LDR R0,??DataTable34 ;; S_ICONS \ 00000010 B01190E5 LDR R1,[R0, #+432] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0600000A BEQ ??SLI_Off_0 679 GBS_StartTimerProc(&mytmr, IN_TICKS(2) / 20, SLI_On); //26*SLI_time2 \ 0000001C 20209FE5 LDR R2,??SLI_Off_1 ;; SLI_On \ 00000020 1510A0E3 MOV R1,#+21 \ 00000024 7430A0E3 MOV R3,#+116 \ 00000028 583D83E3 ORR R3,R3,#0x1600 \ 0000002C 000083E0 ADD R0,R3,R0 \ 00000030 4D0000EF SWI +77 \ 00000034 0080BDE8 POP {PC} 680 else 681 // SLI_STATUS=1; 682 SLI_SetState(0); \ ??SLI_Off_0: \ 00000038 0000A0E3 MOV R0,#+0 \ 0000003C 360000EF SWI +54 683 } \ 00000040 0080BDE8 POP {PC} ;; return \ ??SLI_Off_1: \ 00000044 ........ DC32 SLI_On 684 \ In segment CODE, align 4, keep-with-next 685 void SLI_check() 686 { 687 if (total_unread) \ SLI_check: \ 00000000 14009FE5 LDR R0,??SLI_check_0 ;; S_ICONS + 432 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0080BD08 POPEQ {PC} 688 SLI_On(); \ 00000014 ........ BL SLI_On 689 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??SLI_check_0: \ 0000001C ........ DC32 S_ICONS + 432 690 \ In segment CODE, align 4, keep-with-next 691 void SLI_Timer() 692 { 693 GBS_StartTimerProc(&mytmr, 262, SLI_check); //262*SLI_time \ SLI_Timer: \ 00000000 14209FE5 LDR R2,??SLI_Timer_0 ;; SLI_check \ 00000004 14009FE5 LDR R0,??SLI_Timer_0+0x4 ;; S_ICONS + 5748 \ 00000008 00402DE9 PUSH {LR} \ 0000000C 0610A0E3 MOV R1,#+6 \ 00000010 401F81E3 ORR R1,R1,#0x100 \ 00000014 4D0000EF SWI +77 694 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??SLI_Timer_0: \ 0000001C ........ DC32 SLI_check \ 00000020 ........ DC32 S_ICONS + 5748 695 #endif 696 \ In segment CODE, align 4, keep-with-next 697 void setup_ICONS(void) 698 { \ setup_ICONS: \ 00000000 30402DE9 PUSH {R4,R5,LR} 699 int i=0; \ 00000004 ........ LDR R5,??DataTable27 ;; S_ICONS \ 00000008 0040A0E3 MOV R4,#+0 700 do 701 { 702 if (!S_ICONS[i]) S_ICONS[i]=(int)MakeGlobalString(ICON_PATH,'\\',icons_names[i]); \ ??setup_ICONS_0: \ 0000000C 040195E7 LDR R0,[R5, +R4, LSL #+2] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 0500001A BNE ??setup_ICONS_1 \ 00000018 20009FE5 LDR R0,??setup_ICONS_2 ;; icons_names \ 0000001C 5C10A0E3 MOV R1,#+92 \ 00000020 042190E7 LDR R2,[R0, +R4, LSL #+2] \ 00000024 18009FE5 LDR R0,??setup_ICONS_2+0x4 ;; ICON_PATH \ 00000028 ........ _BLF MakeGlobalString,??MakeGlobalString??rA \ 0000002C 040185E7 STR R0,[R5, +R4, LSL #+2] 703 i++; \ ??setup_ICONS_1: \ 00000030 014084E2 ADD R4,R4,#+1 704 } 705 while(i>2,stop_vibra); \ 0000004C 3610A0E3 MOV R1,#+54 \ 00000050 000000EA B ??start_vibra_2 971 else 972 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,stop_vibra); \ ??start_vibra_1: \ 00000054 6C10A0E3 MOV R1,#+108 \ ??start_vibra_2: \ 00000058 4D0000EF SWI +77 973 } 974 } \ 0000005C 1080BDE8 POP {R4,PC} ;; return \ ??start_vibra_0: \ 00000060 ........ DC32 stop_vibra 975 \ In segment CODE, align 4, keep-with-next 976 void stop_vibra(void) 977 { \ stop_vibra: \ 00000000 00402DE9 PUSH {LR} 978 extern const int VIBR_TYPE; 979 SetVibration(0); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 7C0000EF SWI +124 980 if (--vibra_count) \ 0000000C ........ LDR R0,??DataTable56 ;; S_ICONS \ 00000010 7C1190E5 LDR R1,[R0, #+380] \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 7C1180E5 STR R1,[R0, #+380] \ 0000001C 0080BD08 POPEQ {PC} 981 { 982 if(VIBR_TYPE) \ 00000020 2C209FE5 LDR R2,??stop_vibra_0 ;; start_vibra \ 00000024 4410A0E3 MOV R1,#+68 \ 00000028 601D81E3 ORR R1,R1,#0x1800 \ 0000002C 000081E0 ADD R0,R1,R0 \ 00000030 ........ LDR R1,??DataTable44 ;; VIBR_TYPE \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 0100000A BEQ ??stop_vibra_1 983 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>5,start_vibra); \ 00000040 0610A0E3 MOV R1,#+6 \ 00000044 000000EA B ??stop_vibra_2 984 else 985 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,start_vibra); \ ??stop_vibra_1: \ 00000048 6C10A0E3 MOV R1,#+108 \ ??stop_vibra_2: \ 0000004C 4D0000EF SWI +77 986 } 987 } \ 00000050 0080BDE8 POP {PC} ;; return \ ??stop_vibra_0: \ 00000054 ........ DC32 start_vibra 988 \ In segment CODE, align 4, keep-with-next 989 void start_vibra2(void) 990 { 991 extern const int VIBR_TYPE; 992 void stop_vibra2(void); 993 // if ((Is_Vibra_Enabled)&&(!IsCalling())) 994 // SLI_On(); 995 // else 996 // SLI_Off(); 997 extern const unsigned int vibraPower; 998 SetVibration(vibraPower); \ start_vibra2: \ 00000000 ........ LDR R0,??DataTable41 ;; vibraPower \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 7C0000EF SWI +124 999 if(VIBR_TYPE) \ 00000010 ........ LDR R1,??DataTable44 ;; VIBR_TYPE \ 00000014 18009FE5 LDR R0,??start_vibra2_0 ;; S_ICONS + 6212 \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 14209FE5 LDR R2,??start_vibra2_0+0x4 ;; stop_vibra2 \ 00000020 000051E3 CMP R1,#+0 1000 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>2,stop_vibra2); \ 00000024 3610A013 MOVNE R1,#+54 1001 else 1002 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,stop_vibra2); \ 00000028 6C10A003 MOVEQ R1,#+108 \ 0000002C 4D0000EF SWI +77 1003 } \ 00000030 0080BDE8 POP {PC} ;; return \ ??start_vibra2_0: \ 00000034 ........ DC32 S_ICONS + 6212 \ 00000038 ........ DC32 stop_vibra2 1004 \ In segment CODE, align 4, keep-with-next 1005 void stop_vibra2(void) 1006 { \ stop_vibra2: \ 00000000 00402DE9 PUSH {LR} 1007 extern const int VIBR_TYPE; 1008 SetVibration(0); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 7C0000EF SWI +124 1009 if (--vibra_count) \ 0000000C ........ LDR R0,??DataTable56 ;; S_ICONS \ 00000010 7C1190E5 LDR R1,[R0, #+380] \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 7C1180E5 STR R1,[R0, #+380] \ 0000001C 0080BD08 POPEQ {PC} 1010 { 1011 if(VIBR_TYPE) \ 00000020 2C209FE5 LDR R2,??stop_vibra2_0 ;; start_vibra2 \ 00000024 4410A0E3 MOV R1,#+68 \ 00000028 601D81E3 ORR R1,R1,#0x1800 \ 0000002C 000081E0 ADD R0,R1,R0 \ 00000030 ........ LDR R1,??DataTable44 ;; VIBR_TYPE \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 0100000A BEQ ??stop_vibra2_1 1012 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>5,start_vibra2); \ 00000040 0610A0E3 MOV R1,#+6 \ 00000044 000000EA B ??stop_vibra2_2 1013 else 1014 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,start_vibra2); \ ??stop_vibra2_1: \ 00000048 6C10A0E3 MOV R1,#+108 \ ??stop_vibra2_2: \ 0000004C 4D0000EF SWI +77 1015 } 1016 } \ 00000050 0080BDE8 POP {PC} ;; return \ ??stop_vibra2_0: \ 00000054 ........ DC32 start_vibra2 1017 \ In segment CODE, align 4, keep-with-next 1018 void ChangeVibra(void) 1019 { 1020 if (!(Is_Vibra_Enabled=!(Is_Vibra_Enabled))) \ ChangeVibra: \ 00000000 ........ LDR R0,??DataTable56 ;; S_ICONS \ 00000004 00402DE9 PUSH {LR} \ 00000008 641190E5 LDR R1,[R0, #+356] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 1C109FE5 LDR R1,??ChangeVibra_0 ;; `?` \ 00000008 4BDF4DE2 SUB SP,SP,#+300 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 ........ BL FreeTemplates \ 00000014 ........ LDR R1,??DataTable48 ;; TEMPLATES_PATH \ 00000018 2C008DE2 ADD R0,SP,#+44 \ 0000001C 1A0000EF SWI +26 \ 00000020 2C008DE2 ADD R0,SP,#+44 \ 00000024 1B0000EF SWI +27 \ 00000028 0070A0E1 MOV R7,R0 \ 0000002C 2C008DE2 ADD R0,SP,#+44 \ 00000030 005087E0 ADD R5,R7,R0 \ 00000034 0420A0E1 MOV R2,R4 \ 00000038 0610A0E1 MOV R1,R6 \ 0000003C 0500A0E1 MOV R0,R5 \ 00000040 160000EF SWI +22 1064 if (GetFileStats(fn,&stat,&ul)==-1) goto L1; \ 00000044 0040E0E3 MVN R4,#+0 \ 00000048 0D20A0E1 MOV R2,SP \ 0000004C 04108DE2 ADD R1,SP,#+4 \ 00000050 2C008DE2 ADD R0,SP,#+44 \ 00000054 840000EF SWI +132 \ 00000058 040050E1 CMP R0,R4 \ 0000005C 0A00000A BEQ ??LoadTemplates_1 1065 if ((fsize=stat.size)<=0) goto L1; \ 00000060 08709DE5 LDR R7,[SP, #+8] \ 00000064 010057E3 CMP R7,#+1 \ 00000068 070000BA BLT ??LoadTemplates_1 1066 if ((f=fopen(fn,A_ReadOnly+A_BIN,P_READ,&ul))==-1) \ 0000006C 0D30A0E1 MOV R3,SP \ 00000070 8020A0E3 MOV R2,#+128 \ 00000074 801CA0E3 MOV R1,#+32768 \ 00000078 2C008DE2 ADD R0,SP,#+44 \ 0000007C 0A0000EF SWI +10 \ 00000080 0080A0E1 MOV R8,R0 \ 00000084 040058E1 CMP R8,R4 \ 00000088 1400001A BNE ??LoadTemplates_2 1067 { 1068 L1: 1069 strcpy(fn+i,"\\0.txt"); \ ??LoadTemplates_1: \ 0000008C 081086E2 ADD R1,R6,#+8 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 1A0000EF SWI +26 1070 if (GetFileStats(fn,&stat,&ul)==-1) return 0; \ 00000098 0D20A0E1 MOV R2,SP \ 0000009C 04108DE2 ADD R1,SP,#+4 \ 000000A0 2C008DE2 ADD R0,SP,#+44 \ 000000A4 840000EF SWI +132 \ 000000A8 040050E1 CMP R0,R4 \ 000000AC 0200001A BNE ??LoadTemplates_3 \ ??LoadTemplates_4: \ 000000B0 0000A0E3 MOV R0,#+0 \ ??LoadTemplates_5: \ 000000B4 4BDF8DE2 ADD SP,SP,#+300 ;; stack cleaning \ 000000B8 F087BDE8 POP {R4-R10,PC} ;; return 1071 if ((fsize=stat.size)<=0) return 0; \ ??LoadTemplates_3: \ 000000BC 08709DE5 LDR R7,[SP, #+8] \ 000000C0 010057E3 CMP R7,#+1 \ 000000C4 F9FFFFBA BLT ??LoadTemplates_4 1072 f=fopen(fn,A_ReadOnly+A_BIN,P_READ,&ul); \ 000000C8 0D30A0E1 MOV R3,SP \ 000000CC 8020A0E3 MOV R2,#+128 \ 000000D0 801CA0E3 MOV R1,#+32768 \ 000000D4 2C008DE2 ADD R0,SP,#+44 \ 000000D8 0A0000EF SWI +10 \ 000000DC 0080A0E1 MOV R8,R0 1073 } 1074 if (f==-1) return 0; \ ??LoadTemplates_2: \ 000000E0 040058E1 CMP R8,R4 \ 000000E4 F1FFFF0A BEQ ??LoadTemplates_4 1075 p=templates_chars=malloc(fsize+1); \ 000000E8 ........ LDR R4,??DataTable56 ;; S_ICONS \ 000000EC 010087E2 ADD R0,R7,#+1 \ 000000F0 140000EF SWI +20 \ 000000F4 800184E5 STR R0,[R4, #+384] \ 000000F8 0060A0E1 MOV R6,R0 1076 p[fread(f,p,fsize,&ul)]=0; \ 000000FC 0050A0E3 MOV R5,#+0 \ 00000100 0D30A0E1 MOV R3,SP \ 00000104 0720A0E1 MOV R2,R7 \ 00000108 0610A0E1 MOV R1,R6 \ 0000010C 0800A0E1 MOV R0,R8 \ 00000110 0B0000EF SWI +11 \ 00000114 0650C0E7 STRB R5,[R0, +R6] 1077 fclose(f,&ul); \ 00000118 0D10A0E1 MOV R1,SP \ 0000011C 0800A0E1 MOV R0,R8 \ 00000120 0D0000EF SWI +13 1078 i=0; \ 00000124 0070A0E3 MOV R7,#+0 1079 pp=p; \ 00000128 0680A0E1 MOV R8,R6 \ 0000012C 020000EA B ??LoadTemplates_6 1080 for(;;) 1081 { 1082 c=*p; 1083 if (c<32) 1084 { 1085 if (pp&&(pp!=p)) 1086 { 1087 templates_lines=realloc(templates_lines,(i+1)*sizeof(char *)); 1088 templates_lines[i++]=pp; 1089 } 1090 pp=NULL; 1091 if (!c) break; 1092 *p=0; 1093 } 1094 else 1095 { 1096 if (pp==NULL) pp=p; \ ??LoadTemplates_7: \ 00000130 000058E3 CMP R8,#+0 \ 00000134 0680A001 MOVEQ R8,R6 1097 } 1098 p++; \ ??LoadTemplates_8: \ 00000138 016086E2 ADD R6,R6,#+1 \ ??LoadTemplates_6: \ 0000013C 0090D6E5 LDRB R9,[R6, #+0] \ 00000140 200059E3 CMP R9,#+32 \ 00000144 F9FFFFAA BGE ??LoadTemplates_7 \ 00000148 000058E3 CMP R8,#+0 \ 0000014C 06005811 CMPNE R8,R6 \ 00000150 0600000A BEQ ??LoadTemplates_9 \ 00000154 840194E5 LDR R0,[R4, #+388] \ 00000158 01A087E2 ADD R10,R7,#+1 \ 0000015C 0A11A0E1 LSL R1,R10,#+2 \ 00000160 BA0000EF SWI +186 \ 00000164 840184E5 STR R0,[R4, #+388] \ 00000168 078180E7 STR R8,[R0, +R7, LSL #+2] \ 0000016C 0A70A0E1 MOV R7,R10 \ ??LoadTemplates_9: \ 00000170 0080A0E3 MOV R8,#+0 \ 00000174 000059E3 CMP R9,#+0 1099 } 1100 return i; \ 00000178 0700A001 MOVEQ R0,R7 \ 0000017C CCFFFF0A BEQ ??LoadTemplates_5 \ 00000180 0050C6E5 STRB R5,[R6, #+0] \ 00000184 EBFFFFEA B ??LoadTemplates_8 \ ??LoadTemplates_0: \ 00000188 ........ DC32 `?` 1101 } 1102 1103 1104 //=================================================================== 1105 1106 typedef struct 1107 { 1108 CSM_RAM csm; 1109 int gui_id; 1110 }MAIN_CSM; 1111 1112 typedef struct 1113 { 1114 GUI gui; 1115 WSHDR *ws1; 1116 WSHDR *ws2; 1117 int i1; 1118 }MAIN_GUI; 1119 1120 1121 1122 int RXstate=EOP; //-sizeof(RXpkt)..-1 - receive header, 0..RXpkt.data_len - receive data 1123 \ In segment DATA_Z, align 4, align-sorted 1124 TPKT RXbuf; \ RXbuf: \ 00000000 DS8 16392 \ In segment DATA_Z, align 4, align-sorted 1125 TPKT TXbuf; \ TXbuf: \ 00000000 DS8 16392 1126 1127 int connect_state=0; 1128 1129 int sock=-1; 1130 1131 volatile unsigned long TOTALRECEIVED; 1132 volatile unsigned long TOTALSENDED; 1133 volatile unsigned long ALLTOTALRECEIVED; //by BoBa 10.07 1134 volatile unsigned long ALLTOTALSENDED; 1135 1136 volatile int sendq_l=0; //Длинна очереди для send 1137 volatile void *sendq_p=NULL; //указатель очереди 1138 1139 volatile int is_gprs_online=1; 1140 1141 GBSTMR reconnect_tmr; 1142 1143 extern void kill_data(void *p,void (*func_p)(void *)); 1144 \ In segment CODE, align 4, keep-with-next 1145 void ElfKiller(void) 1146 { \ ElfKiller: \ 00000000 00402DE9 PUSH {LR} 1147 // if(SLI_TYPE) 1148 // GBS_StopTimer(&mytmr); 1149 // if(Is_Double_Vibra_On) 1150 // GBS_StopTimer(&mytmr2); 1151 // GBS_StopTimer(&mytmr3); 1152 // GBS_StopTimer(&mytmr4); 1153 // DoChangeWall2(); 1154 FontPathFree(); \ 00000004 ........ _BLF FontPathFree,??FontPathFree??rA 1155 extern void *ELF_BEGIN; 1156 kill_data(&ELF_BEGIN,(void (*)(void *))mfree_adr()); \ 00000008 158000EF SWI +32789 \ 0000000C 0010A0E1 MOV R1,R0 \ 00000010 04009FE5 LDR R0,??ElfKiller_0 ;; ELF_BEGIN \ 00000014 0040BDE8 POP {LR} ;; Pop \ 00000018 ........ _BF kill_data,??kill_data??rA ;; tailcall \ ??ElfKiller_0: \ 0000001C ........ DC32 ELF_BEGIN 1157 } 1158 1159 int total_unread; //2058 - tam tak /windes 1160 1161 /* 1162 void ElfKiller2(void) 1163 { 1164 extern void *ELF_BEGIN; 1165 kill_data(&ELF_BEGIN,(void (*)(void *))mfree_adr()); 1166 } 1167 */ 1168 //=============================================================================================== 1169 /*#pragma inline 1170 void patch_rect(RECT*rc,int x,int y, int x2, int y2) 1171 { 1172 rc->x=x; 1173 rc->y=y; 1174 rc->x2=x2; 1175 rc->y2=y2; 1176 } 1177 1178 #pragma inline 1179 void patch_header(const HEADER_DESC* head) 1180 { 1181 ((HEADER_DESC*)head)->rc.x=0; 1182 ((HEADER_DESC*)head)->rc.y=YDISP; 1183 ((HEADER_DESC*)head)->rc.x2=ScreenW()-1; 1184 ((HEADER_DESC*)head)->rc.y2=HeaderH()+YDISP-1; 1185 } 1186 #pragma inline 1187 void patch_input(const INPUTDIA_DESC* inp) 1188 { 1189 ((INPUTDIA_DESC*)inp)->rc.x=0; 1190 ((INPUTDIA_DESC*)inp)->rc.y=HeaderH()+1+YDISP; 1191 ((INPUTDIA_DESC*)inp)->rc.x2=ScreenW()-1; 1192 ((INPUTDIA_DESC*)inp)->rc.y2=ScreenH()-SoftkeyH()-1; 1193 }*/ 1194 //=============================================================================================== 1195 1196 volatile CLIST *cltop; 1197 1198 volatile unsigned int GROUP_CACHE; //Текущая группа для добавления 1199 1200 volatile int contactlist_menu_id; 1201 1202 GBSTMR tmr_active; 1203 1204 volatile int edchat_id; 1205 1206 //Применяется для добавления сообщений 1207 //CLIST *edcontact; 1208 //void *edgui_data; 1209 1210 static int prev_clmenu_itemcount; 1211 1212 char clm_hdr_text[48]; 1213 static const char def_clm_hdr_text[] = LG_CLTITLE; 1214 static const char key_clm_hdr_text[] = LG_CLT9INP; 1215 1216 static const HEADER_DESC contactlist_menuhdr = {0, 0, 0, 0, S_ICONS+ICON_HEAD, (int)clm_hdr_text, LGP_NULL}; 1217 static const int menusoftkeys[] = {0,1,2}; 1218 static const SOFTKEY_DESC menu_sk[] = 1219 { 1220 {0x0018, 0x0000, (int)LG_SELECT}, 1221 {0x0001, 0x0000, (int)LG_CLOSE}, 1222 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 1223 }; 1224 1225 char clmenu_sk_r[16]; 1226 static const char def_clmenu_sk_r[] = LG_CLOSE; 1227 static const char key_clmenu_sk_r[] = LG_CLEAR; 1228 1229 static const SOFTKEY_DESC clmenu_sk[]= 1230 { 1231 {0x0018, 0x0000, (int)LG_OPTIONS}, 1232 {0x0001, 0x0000, (int)clmenu_sk_r}, 1233 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 1234 }; 1235 1236 const SOFTKEYSTAB menu_skt = 1237 { 1238 menu_sk, 0 1239 }; 1240 1241 static const SOFTKEYSTAB clmenu_skt = 1242 { 1243 clmenu_sk, 0 1244 }; 1245 1246 void contactlist_menu_ghook(void *data, int cmd); 1247 int contactlist_menu_onkey(void *data, GUI_MSG *msg); 1248 void contactlist_menu_iconhndl(void *data, int curitem, void *unk); 1249 1250 #ifdef USE_MLMENU 1251 static const ML_MENU_DESC contactlist_menu= 1252 { 1253 8,contactlist_menu_onkey,contactlist_menu_ghook,NULL, 1254 menusoftkeys, 1255 &clmenu_skt, 1256 0x11, //+0x400 1257 contactlist_menu_iconhndl, 1258 NULL, //Items 1259 NULL, //Procs 1260 0, //n 1261 1 //Добавочных строк 1262 }; 1263 #else 1264 static const MENU_DESC contactlist_menu= 1265 { 1266 8,contactlist_menu_onkey,contactlist_menu_ghook,NULL, 1267 menusoftkeys, 1268 &clmenu_skt, 1269 0x11, //+0x400 1270 contactlist_menu_iconhndl, 1271 NULL, //Items 1272 NULL, //Procs 1273 0 //n 1274 }; 1275 #endif 1276 1277 //GBSTMR tmr_ping; 1278 int tenseconds_to_ping; 1279 \ In segment CODE, align 4, keep-with-next 1280 LOGQ *NewLOGQ(const char *s) 1281 { \ NewLOGQ: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 1282 LOGQ *p=malloc(sizeof(LOGQ)+1+strlen(s)); \ 00000008 1B0000EF SWI +27 \ 0000000C 610080E2 ADD R0,R0,#+97 \ 00000010 140000EF SWI +20 \ 00000014 0050A0E1 MOV R5,R0 1283 zeromem(p,sizeof(LOGQ)); \ 00000018 6010A0E3 MOV R1,#+96 \ 0000001C 1D0100EF SWI +285 1284 strcpy(p->text,s); \ 00000020 0410A0E1 MOV R1,R4 \ 00000024 600085E2 ADD R0,R5,#+96 \ 00000028 1A0000EF SWI +26 1285 return p; \ 0000002C 0500A0E1 MOV R0,R5 \ 00000030 3080BDE8 POP {R4,R5,PC} ;; return 1286 } 1287 \ In segment CODE, align 4, keep-with-next 1288 LOGQ *LastLOGQ(LOGQ **pp) 1289 { 1290 LOGQ *q=*pp; \ LastLOGQ: \ 00000000 000090E5 LDR R0,[R0, #+0] 1291 if (q) \ 00000004 000050E3 CMP R0,#+0 \ 00000008 1EFF2F01 BXEQ LR \ 0000000C 000000EA B ??LastLOGQ_0 1292 { 1293 while(q->next) q=q->next; \ ??LastLOGQ_1: \ 00000010 0100A0E1 MOV R0,R1 \ ??LastLOGQ_0: \ 00000014 001090E5 LDR R1,[R0, #+0] \ 00000018 000051E3 CMP R1,#+0 \ 0000001C FBFFFF1A BNE ??LastLOGQ_1 1294 } 1295 return(q); \ 00000020 1EFF2FE1 BX LR ;; return 1296 } 1297 1298 //Уничтожить лог \ In segment CODE, align 4, keep-with-next 1299 void FreeLOGQ(LOGQ **pp) 1300 { \ FreeLOGQ: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0010A0E1 MOV R1,R0 1301 LOGQ *p=*pp; \ 00000008 000091E5 LDR R0,[R1, #+0] 1302 *pp=NULL; //Сразу обрежем \ 0000000C 0020A0E3 MOV R2,#+0 \ 00000010 002081E5 STR R2,[R1, #+0] \ 00000014 000050E3 CMP R0,#+0 \ 00000018 1080BD08 POPEQ {R4,PC} 1303 while(p) 1304 { 1305 LOGQ *np=p->next; \ ??FreeLOGQ_0: \ 0000001C 004090E5 LDR R4,[R0, #+0] 1306 mfree(p); \ 00000020 150000EF SWI +21 1307 p=np; \ 00000024 0400B0E1 MOVS R0,R4 1308 } \ 00000028 FBFFFF1A BNE ??FreeLOGQ_0 1309 } \ 0000002C 1080BDE8 POP {R4,PC} ;; return 1310 1311 //Удалить элемент из лога \ In segment CODE, align 4, keep-with-next 1312 void RemoveLOGQ(LOGQ **queue, LOGQ *p) 1313 { \ RemoveLOGQ: \ 00000000 00402DE9 PUSH {LR} 1314 LOGQ *q=(LOGQ *)queue; \ 00000004 000000EA B ??RemoveLOGQ_0 1315 LOGQ *qp; 1316 while(qp=q->next) 1317 { 1318 if (qp==p) 1319 { 1320 q->next=p->next; 1321 break; 1322 } 1323 q=qp; \ ??RemoveLOGQ_1: \ 00000008 0200A0E1 MOV R0,R2 \ ??RemoveLOGQ_0: \ 0000000C 002090E5 LDR R2,[R0, #+0] \ 00000010 000052E3 CMP R2,#+0 \ 00000014 0300000A BEQ ??RemoveLOGQ_2 \ 00000018 010052E1 CMP R2,R1 \ 0000001C F9FFFF1A BNE ??RemoveLOGQ_1 \ 00000020 002091E5 LDR R2,[R1, #+0] \ 00000024 002080E5 STR R2,[R0, #+0] 1324 } 1325 mfree(p); //Если элемент вообще не в логе \ ??RemoveLOGQ_2: \ 00000028 0100A0E1 MOV R0,R1 \ 0000002C 150000EF SWI +21 1326 } \ 00000030 0080BDE8 POP {PC} ;; return 1327 1328 //Добавить элемент в лог \ In segment CODE, align 4, keep-with-next 1329 int AddLOGQ(LOGQ **queue, LOGQ *p) 1330 { 1331 LOGQ *q=(LOGQ *)queue; 1332 LOGQ *qp; 1333 int i=0; \ AddLOGQ: \ 00000000 0020A0E3 MOV R2,#+0 \ 00000004 000000EA B ??AddLOGQ_0 1334 while(qp=q->next) {q=qp;i++;} \ ??AddLOGQ_1: \ 00000008 0300A0E1 MOV R0,R3 \ ??AddLOGQ_0: \ 0000000C 003090E5 LDR R3,[R0, #+0] \ 00000010 012082E2 ADD R2,R2,#+1 \ 00000014 000053E3 CMP R3,#+0 \ 00000018 FAFFFF1A BNE ??AddLOGQ_1 1335 p->next=NULL; \ 0000001C 003081E5 STR R3,[R1, #+0] 1336 q->next=p; \ 00000020 001080E5 STR R1,[R0, #+0] 1337 return(i+1); //Теперь всего в логе элементов \ 00000024 0200A0E1 MOV R0,R2 \ 00000028 1EFF2FE1 BX LR ;; return 1338 } 1339 \ In segment CODE, align 4, keep-with-next 1340 char *GetLastXTextLOGQ(CLIST *t) 1341 { 1342 LOGQ *p = t->log; \ GetLastXTextLOGQ: \ 00000000 741090E5 LDR R1,[R0, #+116] 1343 char *s = 0; \ 00000004 0000A0E3 MOV R0,#+0 1344 if(!p) return 0; \ 00000008 000051E3 CMP R1,#+0 \ 0000000C 0500001A BNE ??GetLastXTextLOGQ_0 \ 00000010 1EFF2FE1 BX LR 1345 while(p->next) 1346 { 1347 if((p->type&0x0F)==3) \ ??GetLastXTextLOGQ_1: \ 00000014 0C3091E5 LDR R3,[R1, #+12] \ 00000018 0F3003E2 AND R3,R3,#0xF \ 0000001C 030053E3 CMP R3,#+3 1348 s = p->text; \ 00000020 60008102 ADDEQ R0,R1,#+96 1349 p = p->next; \ 00000024 0210A0E1 MOV R1,R2 1350 } \ ??GetLastXTextLOGQ_0: \ 00000028 002091E5 LDR R2,[R1, #+0] \ 0000002C 000052E3 CMP R2,#+0 \ 00000030 F7FFFF1A BNE ??GetLastXTextLOGQ_1 1351 if((p->type&0x0F)==3) \ 00000034 0C2091E5 LDR R2,[R1, #+12] \ 00000038 0F2002E2 AND R2,R2,#0xF \ 0000003C 030052E3 CMP R2,#+3 1352 s = p->text; \ 00000040 60008102 ADDEQ R0,R1,#+96 1353 return s; \ 00000044 1EFF2FE1 BX LR ;; return 1354 } 1355 \ In segment CODE, align 4, keep-with-next 1356 int GetIconIndex(CLIST *t) 1357 { 1358 unsigned short s; 1359 if (t) \ GetIconIndex: \ 00000000 000050E3 CMP R0,#+0 \ 00000004 3400000A BEQ ??GetIconIndex_0 1360 { 1361 s=t->state; 1362 if (t->isgroup) return(IS_GROUP); \ 00000008 082090E5 LDR R2,[R0, #+8] \ 0000000C B415D0E1 LDRH R1,[R0, #+84] \ 00000010 000052E3 CMP R2,#+0 \ 00000014 0F00A013 MOVNE R0,#+15 \ 00000018 1EFF2F11 BXNE LR 1363 if (t->isunread) \ 0000001C 640090E5 LDR R0,[R0, #+100] \ 00000020 000050E3 CMP R0,#+0 1364 return(IS_MSG); \ 00000024 0D00A013 MOVNE R0,#+13 \ 00000028 1EFF2F11 BXNE LR 1365 else 1366 { 1367 if (s==0xFFFF) return(IS_OFFLINE); \ 0000002C FF20A0E3 MOV R2,#+255 \ 00000030 FF2C82E3 ORR R2,R2,#0xFF00 \ 00000034 020051E1 CMP R1,R2 \ 00000038 1EFF2F01 BXEQ LR 1368 if ((s&0xF000)==0x2000) return (IS_LUNCH); \ 0000003C F02C01E2 AND R2,R1,#0xF000 \ 00000040 800D52E3 CMP R2,#+8192 \ 00000044 0900A003 MOVEQ R0,#+9 \ 00000048 1EFF2F01 BXEQ LR 1369 if ((s&0xF000)==0x3000) return (IS_EVIL); \ 0000004C C00D52E3 CMP R2,#+12288 \ 00000050 0700A003 MOVEQ R0,#+7 \ 00000054 1EFF2F01 BXEQ LR 1370 if ((s&0xF000)==0x4000) return (IS_DEPRESSION); \ 00000058 400C52E3 CMP R2,#+16384 \ 0000005C 0600A003 MOVEQ R0,#+6 \ 00000060 1EFF2F01 BXEQ LR 1371 if ((s&0xF000)==0x5000) return (IS_HOME); \ 00000064 500C52E3 CMP R2,#+20480 \ 00000068 0800A003 MOVEQ R0,#+8 \ 0000006C 1EFF2F01 BXEQ LR 1372 if ((s&0xF000)==0x6000) return (IS_WORK); \ 00000070 F00C01E2 AND R0,R1,#0xF000 \ 00000074 600C50E3 CMP R0,#+24576 \ 00000078 0A00A003 MOVEQ R0,#+10 \ 0000007C 1EFF2F01 BXEQ LR 1373 if (s & 0x0020) return(IS_FFC); \ 00000080 200011E3 TST R1,#0x20 \ 00000084 0100000A BEQ ??GetIconIndex_1 \ ??GetIconIndex_2: \ 00000088 0C00A0E3 MOV R0,#+12 \ 0000008C 1EFF2FE1 BX LR 1374 if (s & 0x0001) return(IS_AWAY); \ ??GetIconIndex_1: \ 00000090 010011E3 TST R1,#0x1 \ 00000094 0200A013 MOVNE R0,#+2 \ 00000098 1EFF2F11 BXNE LR 1375 if (s & 0x0005) return(IS_NA); \ 0000009C 050011E3 TST R1,#0x5 \ 000000A0 0300A013 MOVNE R0,#+3 \ 000000A4 1EFF2F11 BXNE LR 1376 if (s & 0x0011) return(IS_OCCUPIED); \ 000000A8 110011E3 TST R1,#0x11 \ 000000AC 0400A013 MOVNE R0,#+4 \ 000000B0 1EFF2F11 BXNE LR 1377 if (s & 0x0013) return(IS_DND); \ 000000B4 130011E3 TST R1,#0x13 \ 000000B8 0500A013 MOVNE R0,#+5 \ 000000BC 1EFF2F11 BXNE LR 1378 if (s & 0x0002) return(IS_FFC); \ 000000C0 020011E3 TST R1,#0x2 \ 000000C4 EFFFFF1A BNE ??GetIconIndex_2 1379 if (s & 0x0100) return(IS_INVISIBLE); \ 000000C8 400F11E3 TST R1,#0x100 \ 000000CC 0100A013 MOVNE R0,#+1 \ 000000D0 1EFF2F11 BXNE LR 1380 } 1381 } 1382 else 1383 { 1384 return(IS_UNKNOWN); 1385 } 1386 return(IS_ONLINE); \ 000000D4 0B00A0E3 MOV R0,#+11 \ 000000D8 1EFF2FE1 BX LR \ ??GetIconIndex_0: \ 000000DC 0E00A0E3 MOV R0,#+14 \ 000000E0 1EFF2FE1 BX LR ;; return 1387 } 1388 \ In segment CODE, align 4, keep-with-next 1389 LOGQ *FindContactLOGQByAck(TPKT *p) 1390 { \ FindContactLOGQByAck: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 1391 CLIST *t; 1392 LockSched(); \ 00000008 460100EF SWI +326 1393 t=FindContactByUin(p->pkt.uin); \ 0000000C 000094E5 LDR R0,[R4, #+0] \ 00000010 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000014 0050A0E1 MOV R5,R0 1394 UnlockSched(); \ 00000018 470100EF SWI +327 1395 unsigned int id=*((unsigned short*)(p->data)); \ 0000001C B840D4E1 LDRH R4,[R4, #+8] 1396 LOGQ *q; 1397 if (!t) return NULL; \ 00000020 000055E3 CMP R5,#+0 \ 00000024 0000A003 MOVEQ R0,#+0 \ 00000028 3080BD08 POPEQ {R4,R5,PC} 1398 LockSched(); \ 0000002C 460100EF SWI +326 1399 q=t->log; \ 00000030 745095E5 LDR R5,[R5, #+116] \ 00000034 000000EA B ??FindContactLOGQByAck_0 1400 while(q) 1401 { 1402 if (q->ID==id) break; 1403 q=q->next; \ ??FindContactLOGQByAck_1: \ 00000038 005095E5 LDR R5,[R5, #+0] \ ??FindContactLOGQByAck_0: \ 0000003C 000055E3 CMP R5,#+0 \ 00000040 08009515 LDRNE R0,[R5, #+8] \ 00000044 04005011 CMPNE R0,R4 \ 00000048 FAFFFF1A BNE ??FindContactLOGQByAck_1 1404 } 1405 UnlockSched(); \ 0000004C 470100EF SWI +327 1406 return q; \ 00000050 0500A0E1 MOV R0,R5 \ 00000054 3080BDE8 POP {R4,R5,PC} ;; return 1407 } 1408 1409 extern const int TIME_OR_MSG; 1410 char ContactT9Key[32]; 1411 int kopa_online; 1412 int kopa_kontaktu; 1413 \ In segment CODE, align 4, keep-with-next 1414 void UpdateCLheader(void) 1415 { \ UpdateCLheader: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 1416 if (strlen(ContactT9Key)) \ 00000004 ........ LDR R4,??DataTable56 ;; S_ICONS \ 00000008 98719FE5 LDR R7,??UpdateCLheader_0+0x14 ;; key_clmenu_sk_r \ 0000000C 08D04DE2 SUB SP,SP,#+8 \ 00000010 A400A0E3 MOV R0,#+164 \ 00000014 600D80E3 ORR R0,R0,#0x1800 \ 00000018 045080E0 ADD R5,R0,R4 \ 0000001C 300040E2 SUB R0,R0,#+48 \ 00000020 046080E0 ADD R6,R0,R4 \ 00000024 CF8FA0E3 MOV R8,#+828 \ 00000028 040088E0 ADD R0,R8,R4 \ 0000002C 1B0000EF SWI +27 \ 00000030 000050E3 CMP R0,#+0 \ 00000034 0900000A BEQ ??UpdateCLheader_1 1417 { 1418 strcpy(clm_hdr_text,key_clm_hdr_text); \ 00000038 401087E2 ADD R1,R7,#+64 \ 0000003C 0600A0E1 MOV R0,R6 \ 00000040 1A0000EF SWI +26 1419 strcat(clm_hdr_text,ContactT9Key); \ 00000044 041088E0 ADD R1,R8,R4 \ 00000048 0600A0E1 MOV R0,R6 \ 0000004C 170000EF SWI +23 1420 strcpy(clmenu_sk_r,key_clmenu_sk_r); \ 00000050 0710A0E1 MOV R1,R7 \ 00000054 0500A0E1 MOV R0,R5 \ 00000058 1A0000EF SWI +26 \ 0000005C F381BDE8 POP {R0,R1,R4-R8,PC} 1421 } 1422 else 1423 { 1424 switch(TIME_OR_MSG) \ ??UpdateCLheader_1: \ 00000060 ........ LDR R8,??DataTable51 ;; TIME_OR_MSG \ 00000064 D02194E5 LDR R2,[R4, #+464] \ 00000068 008098E5 LDR R8,[R8, #+0] \ 0000006C CC0194E5 LDR R0,[R4, #+460] \ 00000070 B03194E5 LDR R3,[R4, #+432] \ 00000074 141194E5 LDR R1,[R4, #+276] \ 00000078 000058E3 CMP R8,#+0 \ 0000007C 0600000A BEQ ??UpdateCLheader_2 \ 00000080 018058E2 SUBS R8,R8,#+1 \ 00000084 1000000A BEQ ??UpdateCLheader_3 \ 00000088 018058E2 SUBS R8,R8,#+1 \ 0000008C 1200000A BEQ ??UpdateCLheader_4 \ 00000090 018058E2 SUBS R8,R8,#+1 \ 00000094 1500000A BEQ ??UpdateCLheader_5 \ 00000098 390000EA B ??UpdateCLheader_6 1425 { 1426 case 0: 1427 { 1428 TTime the; 1429 GetDateTime(NULL,&the); \ ??UpdateCLheader_2: \ 0000009C 0D10A0E1 MOV R1,SP \ 000000A0 0000A0E3 MOV R0,#+0 \ 000000A4 B40000EF SWI +180 1430 sprintf(clm_hdr_text, "%s(%02d:%02d)",def_clm_hdr_text,the.hour,the.min); \ 000000A8 0100DDE5 LDRB R0,[SP, #+1] \ 000000AC 342087E2 ADD R2,R7,#+52 \ 000000B0 041087E2 ADD R1,R7,#+4 \ 000000B4 01002DE9 PUSH {R0} \ 000000B8 0430DDE5 LDRB R3,[SP, #+4] \ ??UpdateCLheader_7: \ 000000BC 0600A0E1 MOV R0,R6 \ 000000C0 160000EF SWI +22 \ 000000C4 04D08DE2 ADD SP,SP,#+4 \ 000000C8 2D0000EA B ??UpdateCLheader_6 1431 } 1432 break; 1433 case 1: 1434 sprintf(clm_hdr_text, "%s(%d/%d)",def_clm_hdr_text,total_unread,total_unread2); \ ??UpdateCLheader_3: \ 000000CC 02002DE9 PUSH {R1} \ 000000D0 342087E2 ADD R2,R7,#+52 \ 000000D4 141087E2 ADD R1,R7,#+20 \ 000000D8 F7FFFFEA B ??UpdateCLheader_7 1435 break; 1436 case 2: 1437 sprintf(clm_hdr_text, "%s(%d/%d)",def_clm_hdr_text,kopa_kontaktu,kopa_online); \ ??UpdateCLheader_4: \ 000000DC 01002DE9 PUSH {R0} \ 000000E0 0230A0E1 MOV R3,R2 \ 000000E4 342087E2 ADD R2,R7,#+52 \ 000000E8 141087E2 ADD R1,R7,#+20 \ 000000EC F2FFFFEA B ??UpdateCLheader_7 1438 break; 1439 case 3: 1440 sprintf(clm_hdr_text, "[%d/%d] [%d/%d] ",kopa_kontaktu,kopa_online,total_unread,total_unread2); \ ??UpdateCLheader_5: \ 000000F0 02002DE9 PUSH {R1} \ 000000F4 08002DE9 PUSH {R3} \ 000000F8 0030A0E1 MOV R3,R0 \ 000000FC 201087E2 ADD R1,R7,#+32 \ 00000100 0600A0E1 MOV R0,R6 \ 00000104 160000EF SWI +22 1441 if(away_m) strcat(clm_hdr_text,"[A]"); \ 00000108 380194E5 LDR R0,[R4, #+312] \ 0000010C 08D08DE2 ADD SP,SP,#+8 \ 00000110 000050E3 CMP R0,#+0 \ 00000114 0200000A BEQ ??UpdateCLheader_8 \ 00000118 1D1F8FE2 ADR R1,??UpdateCLheader_0 ;; "[A]" \ 0000011C 0600A0E1 MOV R0,R6 \ 00000120 170000EF SWI +23 1442 if(CurrentPrivateStatus==1) strcat(clm_hdr_text,"[I]"); \ ??UpdateCLheader_8: \ 00000124 780194E5 LDR R0,[R4, #+376] \ 00000128 010050E3 CMP R0,#+1 \ 0000012C 0200001A BNE ??UpdateCLheader_9 \ 00000130 181F8FE2 ADR R1,??UpdateCLheader_0+0x4 ;; "[I]" \ 00000134 0600A0E1 MOV R0,R6 \ 00000138 170000EF SWI +23 1443 if(Is_Vibra_Enabled) strcat(clm_hdr_text,"[V]"); \ ??UpdateCLheader_9: \ 0000013C 640194E5 LDR R0,[R4, #+356] \ 00000140 000050E3 CMP R0,#+0 \ 00000144 0200000A BEQ ??UpdateCLheader_10 \ 00000148 131F8FE2 ADR R1,??UpdateCLheader_0+0x8 ;; "[V]" \ 0000014C 0600A0E1 MOV R0,R6 \ 00000150 170000EF SWI +23 1444 if(Is_Sounds_Enabled) strcat(clm_hdr_text,"[S]"); \ ??UpdateCLheader_10: \ 00000154 680194E5 LDR R0,[R4, #+360] \ 00000158 000050E3 CMP R0,#+0 \ 0000015C 0200000A BEQ ??UpdateCLheader_11 \ 00000160 0E1F8FE2 ADR R1,??UpdateCLheader_0+0xC ;; "[S]" \ 00000164 0600A0E1 MOV R0,R6 \ 00000168 170000EF SWI +23 1445 if(Is_Double_Vibra_On) strcat(clm_hdr_text,"[R]"); \ ??UpdateCLheader_11: \ 0000016C 100194E5 LDR R0,[R4, #+272] \ 00000170 000050E3 CMP R0,#+0 \ 00000174 0200000A BEQ ??UpdateCLheader_6 \ 00000178 091F8FE2 ADR R1,??UpdateCLheader_0+0x10 ;; "[R]" \ 0000017C 0600A0E1 MOV R0,R6 \ 00000180 170000EF SWI +23 1446 break; 1447 } 1448 strcpy(clmenu_sk_r,def_clmenu_sk_r); \ ??UpdateCLheader_6: \ 00000184 4C1087E2 ADD R1,R7,#+76 \ 00000188 0500A0E1 MOV R0,R5 \ 0000018C 1A0000EF SWI +26 1449 } 1450 } \ 00000190 F381BDE8 POP {R0,R1,R4-R8,PC} ;; return \ ??UpdateCLheader_0: \ 00000194 5B415D00 DC8 "[A]" \ 00000198 5B495D00 DC8 "[I]" \ 0000019C 5B565D00 DC8 "[V]" \ 000001A0 5B535D00 DC8 "[S]" \ 000001A4 5B525D00 DC8 "[R]" \ 000001A8 ........ DC32 key_clmenu_sk_r 1451 \ In segment CODE, align 4, keep-with-next 1452 void ClearContactT9Key(void) 1453 { 1454 zeromem(ContactT9Key,sizeof(ContactT9Key)); \ ClearContactT9Key: \ 00000000 0C009FE5 LDR R0,??ClearContactT9Key_0 ;; S_ICONS + 828 \ 00000004 00402DE9 PUSH {LR} \ 00000008 2010A0E3 MOV R1,#+32 \ 0000000C 1D0100EF SWI +285 1455 } \ 00000010 0080BDE8 POP {PC} ;; return \ ??ClearContactT9Key_0: \ 00000014 ........ DC32 S_ICONS + 828 1456 \ In segment CODE, align 4, keep-with-next 1457 void AddContactT9Key(int chr) 1458 { \ AddContactT9Key: \ 00000000 30402DE9 PUSH {R4,R5,LR} 1459 int l=strlen(ContactT9Key); \ 00000004 ........ LDR R5,??DataTable56 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C CF0F85E2 ADD R0,R5,#+828 \ 00000010 1B0000EF SWI +27 1460 if (l<(sizeof(ContactT9Key)-1)) \ 00000014 1F0050E3 CMP R0,#+31 1461 { 1462 ContactT9Key[l]=chr; \ 00000018 05008030 ADDCC R0,R0,R5 \ 0000001C 3C43C035 STRBCC R4,[R0, #+828] 1463 } 1464 } \ 00000020 3080BDE8 POP {R4,R5,PC} ;; return 1465 \ In segment CODE, align 4, keep-with-next 1466 void BackSpaceContactT9(void) 1467 { \ BackSpaceContactT9: \ 00000000 10402DE9 PUSH {R4,LR} 1468 int l=strlen(ContactT9Key); \ 00000004 ........ LDR R4,??DataTable56 ;; S_ICONS \ 00000008 CF0F84E2 ADD R0,R4,#+828 \ 0000000C 1B0000EF SWI +27 1469 if (l) \ 00000010 000050E3 CMP R0,#+0 1470 { 1471 l--; 1472 ContactT9Key[l]=0; \ 00000014 04008010 ADDNE R0,R0,R4 \ 00000018 0010A013 MOVNE R1,#+0 \ 0000001C 3B13C015 STRBNE R1,[R0, #+827] 1473 } 1474 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 1475 \ In segment CODE, align 4, keep-with-next 1476 void create_contactlist_menu(void) 1477 { \ create_contactlist_menu: \ 00000000 70402DE9 PUSH {R4-R6,LR} 1478 int i; 1479 i=CountContacts(); 1480 prev_clmenu_itemcount=i; \ 00000004 ........ LDR R5,??DataTable56 ;; S_ICONS 1481 UpdateCLheader(); 1482 patch_header(&contactlist_menuhdr); \ 00000008 58609FE5 LDR R6,??create_contactlist_menu_0 ;; contactlist_menuhdr \ 0000000C ........ _BLF CountContacts,??CountContacts??rA \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 C44185E5 STR R4,[R5, #+452] \ 00000018 ........ BL UpdateCLheader \ 0000001C 0000A0E3 MOV R0,#+0 \ 00000020 B000C6E1 STRH R0,[R6, #+0] \ 00000024 1800A0E3 MOV R0,#+24 \ 00000028 B200C6E1 STRH R0,[R6, #+2] \ 0000002C 888100EF SWI +33160 \ 00000030 010040E2 SUB R0,R0,#+1 \ 00000034 B400C6E1 STRH R0,[R6, #+4] \ 00000038 8A8100EF SWI +33162 \ 0000003C 170080E2 ADD R0,R0,#+23 \ 00000040 B600C6E1 STRH R0,[R6, #+6] 1483 #ifdef USE_MLMENU 1484 contactlist_menu_id=CreateMultiLinesMenu(0,0,&contactlist_menu,&contactlist_menuhdr,0,i); \ 00000044 10002DE9 PUSH {R4} \ 00000048 0000A0E3 MOV R0,#+0 \ 0000004C 01002DE9 PUSH {R0} \ 00000050 0630A0E1 MOV R3,R6 \ 00000054 142086E2 ADD R2,R6,#+20 \ 00000058 0010A0E3 MOV R1,#+0 \ 0000005C 170200EF SWI +535 \ 00000060 BC0185E5 STR R0,[R5, #+444] 1485 #else 1486 contactlist_menu_id=CreateMenu(0,0,&contactlist_menu,&contactlist_menuhdr,0,i,0,0); 1487 #endif 1488 } \ 00000064 7380BDE8 POP {R0,R1,R4-R6,PC} ;; return \ ??create_contactlist_menu_0: \ 00000068 ........ DC32 contactlist_menuhdr 1489 \ In segment CODE, align 4, keep-with-next 1490 void contactlist_menu_ghook(void *data, int cmd) 1491 { \ contactlist_menu_ghook: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0140A0E1 MOV R4,R1 1492 PNGTOP_DESC *pltop=PNG_TOP(); \ 00000008 B98100EF SWI +33209 1493 if (cmd==9) \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 090054E3 CMP R4,#+9 1494 { 1495 pltop->dyn_pltop=NULL; \ 00000014 08108005 STREQ R1,[R0, #+8] \ 00000018 1080BD08 POPEQ {R4,PC} 1496 } 1497 if (cmd==0x0A) \ 0000001C 0A0054E3 CMP R4,#+10 \ 00000020 1080BD18 POPNE {R4,PC} 1498 { 1499 silenthide=0; \ 00000024 14209FE5 LDR R2,??contactlist_menu_ghook_0 ;; S_ICONS + 348 \ 00000028 001082E5 STR R1,[R2, #+0] 1500 pltop->dyn_pltop=XStatusesImgList; \ 0000002C ........ LDR R1,??DataTable55 ;; XStatusesImgList \ 00000030 001091E5 LDR R1,[R1, #+0] \ 00000034 081080E5 STR R1,[R0, #+8] 1501 DisableIDLETMR(); \ 00000038 7F0100EF SWI +383 1502 } 1503 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??contactlist_menu_ghook_0: \ 00000040 ........ DC32 S_ICONS + 348 1504 \ In segment CODE, align 4, keep-with-next 1505 void RecountMenu(CLIST *req, int needfocus) 1506 { \ RecountMenu: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 1507 int i; 1508 int j; 1509 void *data; 1510 UpdateCLheader(); 1511 if (!contactlist_menu_id) return; //Нечего считать \ 00000004 ........ LDR R6,??DataTable56 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 ........ BL UpdateCLheader \ 00000014 BC0196E5 LDR R0,[R6, #+444] \ 00000018 000050E3 CMP R0,#+0 \ 0000001C F080BD08 POPEQ {R4-R7,PC} 1512 data=FindGUIbyId(contactlist_menu_id,NULL); \ 00000020 BC0196E5 LDR R0,[R6, #+444] \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 090200EF SWI +521 \ 0000002C 0070A0E1 MOV R7,R0 1513 if (req==NULL) \ 00000030 000054E3 CMP R4,#+0 \ 00000034 0200000A BEQ ??RecountMenu_0 1514 { 1515 j=0; 1516 } 1517 else 1518 { 1519 j=FindContactByContact(req); \ 00000038 0400A0E1 MOV R0,R4 \ 0000003C ........ _BLF FindContactByContact,??FindContactByContact??rA \ 00000040 0040A0E1 MOV R4,R0 1520 } 1521 i=CountContacts(); \ ??RecountMenu_0: \ 00000044 ........ _BLF CountContacts,??CountContacts??rA 1522 if (j>=i) j=i-1; 1523 if (j<0) j=0; 1524 if (i!=prev_clmenu_itemcount) \ 00000048 C41196E5 LDR R1,[R6, #+452] \ 0000004C 000054E1 CMP R4,R0 \ 00000050 014040A2 SUBGE R4,R0,#+1 \ 00000054 000054E3 CMP R4,#+0 \ 00000058 0040A043 MOVMI R4,#+0 \ 0000005C 010050E1 CMP R0,R1 \ 00000060 0300000A BEQ ??RecountMenu_1 1525 { 1526 prev_clmenu_itemcount=i; \ 00000064 C40186E5 STR R0,[R6, #+452] 1527 Menu_SetItemCountDyn(data,i); \ 00000068 0010A0E1 MOV R1,R0 \ 0000006C 0700A0E1 MOV R0,R7 \ 00000070 E60100EF SWI +486 1528 } 1529 if(needfocus) SetCursorToMenuItem(data,j); //2058 \ ??RecountMenu_1: \ 00000074 000055E3 CMP R5,#+0 \ 00000078 0200000A BEQ ??RecountMenu_2 \ 0000007C 0410A0E1 MOV R1,R4 \ 00000080 0700A0E1 MOV R0,R7 \ 00000084 C40100EF SWI +452 1530 if (IsGuiOnTop(contactlist_menu_id)) RefreshGUI(); \ ??RecountMenu_2: \ 00000088 BC0196E5 LDR R0,[R6, #+444] \ 0000008C 350100EF SWI +309 \ 00000090 000050E3 CMP R0,#+0 \ 00000094 F080BD08 POPEQ {R4-R7,PC} \ 00000098 960100EF SWI +406 \ 0000009C F080BDE8 POP {R4-R7,PC} ;; return 1531 } 1532 1533 char hostbuf2[128]; 1534 \ In segment CODE, align 4, keep-with-next 1535 int contactlist_menu_onkey(void *data, GUI_MSG *msg) 1536 { \ contactlist_menu_onkey: \ 00000000 F24F2DE9 PUSH {R1,R4-R11,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 1537 CLIST *t; 1538 int i; 1539 i=GetCurMenuItem(data); \ 00000008 8F0100EF SWI +399 1540 t=FindContactByN(i); \ 0000000C ........ _BLF FindContactByN,??FindContactByN??rA \ 00000010 00A0A0E1 MOV R10,R0 1541 if (msg->keys==0x18) \ 00000014 08009DE5 LDR R0,[SP, #+8] \ 00000018 F200D0E1 LDRSH R0,[R0, #+2] \ 0000001C 180050E3 CMP R0,#+24 \ 00000020 0100001A BNE ??contactlist_menu_onkey_1 1542 { 1543 ShowMainMenu(); \ 00000024 ........ _BLF ShowMainMenu,??ShowMainMenu??rA 1544 return(-1); \ 00000028 D60000EA B ??contactlist_menu_onkey_2 1545 } 1546 if (msg->keys==0x3D) \ ??contactlist_menu_onkey_1: \ 0000002C ........ LDR R6,??DataTable70 ;; S_ICONS \ 00000030 CF5FA0E3 MOV R5,#+828 \ 00000034 3D0050E3 CMP R0,#+61 \ 00000038 2400001A BNE ??contactlist_menu_onkey_3 1547 { 1548 if (t) \ 0000003C 00005AE3 CMP R10,#+0 \ 00000040 2C00000A BEQ ??contactlist_menu_onkey_4 1549 { 1550 if (t->isgroup) \ 00000044 08009AE5 LDR R0,[R10, #+8] \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 0700000A BEQ ??contactlist_menu_onkey_5 1551 { 1552 t->state^=0xFFFF; \ 00000050 B405DAE1 LDRH R0,[R10, #+84] \ 00000054 FF10A0E3 MOV R1,#+255 \ 00000058 FF1C81E3 ORR R1,R1,#0xFF00 \ 0000005C 000021E0 EOR R0,R1,R0 \ 00000060 B405CAE1 STRH R0,[R10, #+84] 1553 RecountMenu(t,1); \ 00000064 0110A0E3 MOV R1,#+1 \ 00000068 0A00A0E1 MOV R0,R10 \ 0000006C 200000EA B ??contactlist_menu_onkey_6 1554 return(-1); 1555 } 1556 if (strlen(ContactT9Key)) \ ??contactlist_menu_onkey_5: \ 00000070 060085E0 ADD R0,R5,R6 \ 00000074 1B0000EF SWI +27 \ 00000078 000050E3 CMP R0,#+0 \ 0000007C 0500000A BEQ ??contactlist_menu_onkey_7 1557 { 1558 ClearContactT9Key(); \ 00000080 2010A0E3 MOV R1,#+32 \ 00000084 060085E0 ADD R0,R5,R6 \ 00000088 1D0100EF SWI +285 1559 RecountMenu(NULL,1); \ 0000008C 0110A0E3 MOV R1,#+1 \ 00000090 0000A0E3 MOV R0,#+0 \ 00000094 ........ BL RecountMenu 1560 } 1561 if(!t->isactive && HISTORY_BUFFER) GetHistory(t, 64<keys==1) \ ??contactlist_menu_onkey_3: \ 000000D0 010050E3 CMP R0,#+1 \ 000000D4 0900001A BNE ??contactlist_menu_onkey_9 1567 { 1568 if (strlen(ContactT9Key)) \ 000000D8 060085E0 ADD R0,R5,R6 \ 000000DC 1B0000EF SWI +27 \ 000000E0 000050E3 CMP R0,#+0 \ 000000E4 0500000A BEQ ??contactlist_menu_onkey_9 1569 { 1570 BackSpaceContactT9(); \ 000000E8 ........ BL BackSpaceContactT9 1571 RecountMenu(NULL,1); \ 000000EC 0110A0E3 MOV R1,#+1 \ 000000F0 0000A0E3 MOV R0,#+0 \ ??contactlist_menu_onkey_6: \ 000000F4 ........ BL RecountMenu 1572 return(-1); \ ??contactlist_menu_onkey_4: \ 000000F8 0000E0E3 MVN R0,#+0 \ 000000FC FE8FBDE8 POP {R1-R11,PC} 1573 } 1574 } 1575 if (msg->gbsmsg->msg==KEY_DOWN) \ ??contactlist_menu_onkey_9: \ 00000100 08009DE5 LDR R0,[SP, #+8] \ 00000104 ........ LDR R7,??DataTable63 ;; `?` \ 00000108 040090E5 LDR R0,[R0, #+4] \ 0000010C 6420A0E3 MOV R2,#+100 \ 00000110 582D82E3 ORR R2,R2,#0x1600 \ 00000114 062082E0 ADD R2,R2,R6 \ 00000118 04208DE5 STR R2,[SP, #+4] \ 0000011C 041090E5 LDR R1,[R0, #+4] \ 00000120 0090A0E3 MOV R9,#+0 \ 00000124 0140A0E3 MOV R4,#+1 \ 00000128 9320A0E3 MOV R2,#+147 \ 0000012C 402F82E3 ORR R2,R2,#0x100 \ 00000130 020051E1 CMP R1,R2 \ 00000134 A800001A BNE ??contactlist_menu_onkey_10 1576 { 1577 int key=msg->gbsmsg->submess; \ 00000138 088090E5 LDR R8,[R0, #+8] 1578 if ((key>='0')&&(key<='9')) \ 0000013C 300058E3 CMP R8,#+48 \ 00000140 070000BA BLT ??contactlist_menu_onkey_11 \ 00000144 3A0058E3 CMP R8,#+58 \ 00000148 1B0000AA BGE ??contactlist_menu_onkey_12 1579 { 1580 AddContactT9Key(key); \ 0000014C 0800A0E1 MOV R0,R8 \ 00000150 ........ BL AddContactT9Key 1581 RecountMenu(NULL,1); \ 00000154 0110A0E3 MOV R1,#+1 \ 00000158 0900A0E1 MOV R0,R9 \ 0000015C ........ BL RecountMenu \ 00000160 970000EA B ??contactlist_menu_onkey_13 1582 return(-1); 1583 } 1584 #ifdef ELKA 1585 if (key==VOL_UP_BUTTON) \ ??contactlist_menu_onkey_11: \ 00000164 0D0058E3 CMP R8,#+13 \ 00000168 1300001A BNE ??contactlist_menu_onkey_12 1586 //#else 1587 // if (key=='#') 1588 //#endif 1589 { 1590 char *small_info=malloc(256); \ 0000016C 400FA0E3 MOV R0,#+256 \ 00000170 140000EF SWI +20 \ 00000174 00B0A0E1 MOV R11,R0 1591 // sprintf(hah,"online: %02d:%02d:%02d", xstatus_old, minimum_xstatus, maximum); 1592 sprintf(small_info, "Время в онлайн:\n" 1593 "%02d:%02d:%02d\n" 1594 "Сервер:\n" 1595 "%s" 1596 , xstatus_old, minimum_xstatus, maximum, hostbuf2); \ 00000178 B400A0E3 MOV R0,#+180 \ 0000017C 600D80E3 ORR R0,R0,#0x1800 \ 00000180 060080E0 ADD R0,R0,R6 \ 00000184 01002DE9 PUSH {R0} \ 00000188 500196E5 LDR R0,[R6, #+336] \ 0000018C 1C1087E2 ADD R1,R7,#+28 \ 00000190 01002DE9 PUSH {R0} \ 00000194 4C3196E5 LDR R3,[R6, #+332] \ 00000198 482196E5 LDR R2,[R6, #+328] \ 0000019C 0B00A0E1 MOV R0,R11 \ 000001A0 160000EF SWI +22 1597 ShowMSG(1,(int)small_info); \ 000001A4 0B10A0E1 MOV R1,R11 \ 000001A8 0100A0E3 MOV R0,#+1 \ 000001AC 480100EF SWI +328 1598 mfree(small_info); \ 000001B0 0B00A0E1 MOV R0,R11 \ 000001B4 150000EF SWI +21 \ 000001B8 08D08DE2 ADD SP,SP,#+8 1599 } 1600 1601 if(msg->gbsmsg->submess==VOL_DOWN_BUTTON) \ ??contactlist_menu_onkey_12: \ 000001BC 08009DE5 LDR R0,[SP, #+8] \ 000001C0 040090E5 LDR R0,[R0, #+4] \ 000001C4 080090E5 LDR R0,[R0, #+8] \ 000001C8 0E0050E3 CMP R0,#+14 \ 000001CC 0F00001A BNE ??contactlist_menu_onkey_14 1602 { 1603 if(!away_m) \ 000001D0 380196E5 LDR R0,[R6, #+312] \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 0800001A BNE ??contactlist_menu_onkey_15 1604 { 1605 // automsg=!automsg; 1606 away_m=!away_m; \ 000001DC 384186E5 STR R4,[R6, #+312] 1607 GBS_StopTimer(&away_tmr); \ 000001E0 04009DE5 LDR R0,[SP, #+4] \ 000001E4 440100EF SWI +324 1608 msg_away_timer=AUTO_ENGADE; \ 000001E8 ........ LDR R0,??DataTable61 ;; AUTO_ENGADE \ 000001EC 000090E5 LDR R0,[R0, #+0] \ 000001F0 300186E5 STR R0,[R6, #+304] 1609 away_timer(); \ 000001F4 ........ BL away_timer 1610 //main_d=1; 1611 // ShowMSG(1,(int)"Автоответчик включен!"); 1612 InputAwayMsg(); \ 000001F8 ........ BL InputAwayMsg \ 000001FC 010000EA B ??contactlist_menu_onkey_16 1613 } 1614 else 1615 { 1616 msg_away_timer=0; \ ??contactlist_menu_onkey_15: \ 00000200 309186E5 STR R9,[R6, #+304] 1617 away_m=!away_m; \ 00000204 389186E5 STR R9,[R6, #+312] 1618 //away_m=0; 1619 //automsg=!automsg; 1620 // ShowMSG(1,(int)"Автоответчик выключен!"); 1621 } 1622 UpdateCLheader(); \ ??contactlist_menu_onkey_16: \ 00000208 ........ BL UpdateCLheader 1623 RefreshGUI(); \ 0000020C 960100EF SWI +406 1624 } 1625 #endif 1626 if (key==GREEN_BUTTON) \ ??contactlist_menu_onkey_14: \ 00000210 0B0058E3 CMP R8,#+11 \ 00000214 0400001A BNE ??contactlist_menu_onkey_17 1627 { 1628 #ifdef EVILFOX 1629 while(t=(CLIST *)(t->next)) 1630 { 1631 if (t->isunread) goto doit; 1632 } 1633 t=(CLIST *)(&cltop); 1634 while(t=(CLIST *)(t->next)) 1635 { 1636 if (t->isunread) goto doit; 1637 } 1638 t=(CLIST *)(&cltop); 1639 while(t=(CLIST *)(t->next)) 1640 { 1641 if (t->isgroup) 1642 { 1643 if(!t->state) 1644 t->state^=0xFFFF; 1645 } 1646 } 1647 goto doit2; 1648 doit: 1649 { 1650 CLIST *g=FindGroupByID(t->group); 1651 if (g) 1652 { 1653 if (g->state) 1654 { 1655 g->state=0; 1656 } 1657 } 1658 } 1659 doit2: 1660 RecountMenu(t,1); 1661 #else 1662 IsActiveUp=!IsActiveUp; \ 00000218 240196E5 LDR R0,[R6, #+292] \ 0000021C 000050E3 CMP R0,#+0 \ 00000220 0040A013 MOVNE R4,#+0 \ 00000224 244186E5 STR R4,[R6, #+292] 1663 RecountMenu(NULL,1); \ 00000228 E10000EA B ??contactlist_menu_onkey_18 1664 #endif 1665 return(-1); 1666 } 1667 if (key==LEFT_BUTTON) \ ??contactlist_menu_onkey_17: \ 0000022C 3D0058E3 CMP R8,#+61 \ 00000230 1B00000A BEQ ??contactlist_menu_onkey_19 1668 { 1669 #ifdef EVILFOX 1670 IsActiveUp=!IsActiveUp; 1671 RecountMenu(NULL,1); 1672 #else 1673 while(t=(CLIST *)(t->next)) 1674 { 1675 if (t->isunread) goto doit; 1676 } 1677 t=(CLIST *)(&cltop); 1678 while(t=(CLIST *)(t->next)) 1679 { 1680 if (t->isunread) goto doit; 1681 } 1682 if (t && Is_Show_Groups) {//???? ??????? ? ?????????? ??????? 1683 if (!t->isgroup) 1684 t=FindGroupByID(t->group); 1685 if (t && !t->state) {//?????? ??????? ? ??? ???????? 1686 t->state^=0xFFFF; 1687 goto does; 1688 } 1689 } 1690 doit: 1691 { 1692 CLIST *g=FindGroupByID(t->group); 1693 if (g) 1694 { 1695 if (g->state) 1696 { 1697 g->state=0; 1698 } 1699 } 1700 } 1701 does: 1702 RecountMenu(t,1); 1703 #endif 1704 return(-1); 1705 } 1706 if (key=='*') \ 00000234 2A0058E3 CMP R8,#+42 \ 00000238 3100000A BEQ ??contactlist_menu_onkey_20 1707 { 1708 while(t=(CLIST *)(t->next)) 1709 { 1710 if (t->just_now) goto doit3; 1711 } 1712 t=(CLIST *)(&cltop); 1713 while(t=(CLIST *)(t->next)) 1714 { 1715 if (t->just_now) goto doit3; 1716 } 1717 return(-1); 1718 doit3: 1719 { 1720 CLIST *g=FindGroupByID(t->group); 1721 if (g) 1722 { 1723 if (g->state) 1724 { 1725 g->state=0; 1726 } 1727 } 1728 } 1729 RecountMenu(t,1); 1730 return(-1); 1731 } 1732 extern const int ActionResh; 1733 if (key=='#') \ 0000023C 230058E3 CMP R8,#+35 \ 00000240 5200001A BNE ??contactlist_menu_onkey_21 1734 { 1735 if(ActionResh) \ 00000244 10049FE5 LDR R0,??contactlist_menu_onkey_22 ;; ActionResh \ 00000248 000090E5 LDR R0,[R0, #+0] \ 0000024C 000050E3 CMP R0,#+0 \ 00000250 3900001A BNE ??contactlist_menu_onkey_23 1736 { 1737 while(t=(CLIST *)(t->next)) 1738 { 1739 if (t->isactive) goto doit4; 1740 } 1741 t=(CLIST *)(&cltop); 1742 while(t=(CLIST *)(t->next)) 1743 { 1744 if (t->isactive) goto doit4; 1745 } 1746 return(-1); 1747 doit4: 1748 { 1749 CLIST *g=FindGroupByID(t->group); 1750 if (g) 1751 { 1752 if (g->state) 1753 { 1754 g->state=0; 1755 } 1756 } 1757 } 1758 RecountMenu(t,1); 1759 } 1760 else 1761 { 1762 if(t->log) \ 00000254 74009AE5 LDR R0,[R10, #+116] \ 00000258 000050E3 CMP R0,#+0 \ 0000025C 0200000A BEQ ??contactlist_menu_onkey_24 1763 { 1764 FreeLOGQ(&t->log); \ 00000260 74008AE2 ADD R0,R10,#+116 \ 00000264 ........ BL FreeLOGQ 1765 t->msg_count=0; \ 00000268 84908AE5 STR R9,[R10, #+132] 1766 } 1767 if(strlen(ContactT9Key)) \ ??contactlist_menu_onkey_24: \ 0000026C 060085E0 ADD R0,R5,R6 \ 00000270 1B0000EF SWI +27 \ 00000274 000050E3 CMP R0,#+0 \ 00000278 0200000A BEQ ??contactlist_menu_onkey_25 1768 ClearContactT9Key(); \ 0000027C 2010A0E3 MOV R1,#+32 \ 00000280 060085E0 ADD R0,R5,R6 \ 00000284 1D0100EF SWI +285 1769 t->isactive=0; \ ??contactlist_menu_onkey_25: \ 00000288 80908AE5 STR R9,[R10, #+128] 1770 RecountMenu(NULL,0); \ 0000028C 0010A0E3 MOV R1,#+0 \ 00000290 0100A0E1 MOV R0,R1 \ 00000294 3A0000EA B ??contactlist_menu_onkey_26 1771 } \ ??contactlist_menu_onkey_27: \ 00000298 64009AE5 LDR R0,[R10, #+100] \ 0000029C 000050E3 CMP R0,#+0 \ 000002A0 0900001A BNE ??contactlist_menu_onkey_28 \ ??contactlist_menu_onkey_19: \ 000002A4 00A09AE5 LDR R10,[R10, #+0] \ 000002A8 00005AE3 CMP R10,#+0 \ 000002AC F9FFFF1A BNE ??contactlist_menu_onkey_27 \ 000002B0 6DAF86E2 ADD R10,R6,#+436 \ ??contactlist_menu_onkey_29: \ 000002B4 00A09AE5 LDR R10,[R10, #+0] \ 000002B8 00005AE3 CMP R10,#+0 \ 000002BC 0200000A BEQ ??contactlist_menu_onkey_28 \ 000002C0 64009AE5 LDR R0,[R10, #+100] \ 000002C4 000050E3 CMP R0,#+0 \ 000002C8 F9FFFF0A BEQ ??contactlist_menu_onkey_29 \ ??contactlist_menu_onkey_28: \ 000002CC 10009AE5 LDR R0,[R10, #+16] \ 000002D0 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 000002D4 000050E3 CMP R0,#+0 \ 000002D8 B415D011 LDRHNE R1,[R0, #+84] \ 000002DC 00005113 CMPNE R1,#+0 \ 000002E0 B495C011 STRHNE R9,[R0, #+84] \ 000002E4 0110A0E3 MOV R1,#+1 \ 000002E8 0A00A0E1 MOV R0,R10 \ 000002EC ........ BL RecountMenu \ 000002F0 000064E2 RSB R0,R4,#+0 \ 000002F4 FE8FBDE8 POP {R1-R11,PC} \ ??contactlist_menu_onkey_30: \ 000002F8 5C009AE5 LDR R0,[R10, #+92] \ 000002FC 000050E3 CMP R0,#+0 \ 00000300 F1FFFF1A BNE ??contactlist_menu_onkey_28 \ ??contactlist_menu_onkey_20: \ 00000304 00A09AE5 LDR R10,[R10, #+0] \ 00000308 00005AE3 CMP R10,#+0 \ 0000030C F9FFFF1A BNE ??contactlist_menu_onkey_30 \ 00000310 6DAF86E2 ADD R10,R6,#+436 \ ??contactlist_menu_onkey_31: \ 00000314 00A09AE5 LDR R10,[R10, #+0] \ 00000318 00005AE3 CMP R10,#+0 \ 0000031C 75FFFF0A BEQ ??contactlist_menu_onkey_4 \ 00000320 5C009AE5 LDR R0,[R10, #+92] \ 00000324 000050E3 CMP R0,#+0 \ 00000328 F9FFFF0A BEQ ??contactlist_menu_onkey_31 \ 0000032C E6FFFFEA B ??contactlist_menu_onkey_28 \ ??contactlist_menu_onkey_32: \ 00000330 80009AE5 LDR R0,[R10, #+128] \ 00000334 000050E3 CMP R0,#+0 \ 00000338 0900001A BNE ??contactlist_menu_onkey_33 \ ??contactlist_menu_onkey_23: \ 0000033C 00A09AE5 LDR R10,[R10, #+0] \ 00000340 00005AE3 CMP R10,#+0 \ 00000344 F9FFFF1A BNE ??contactlist_menu_onkey_32 \ 00000348 6DAF86E2 ADD R10,R6,#+436 \ ??contactlist_menu_onkey_34: \ 0000034C 00A09AE5 LDR R10,[R10, #+0] \ 00000350 00005AE3 CMP R10,#+0 \ 00000354 67FFFF0A BEQ ??contactlist_menu_onkey_4 \ 00000358 80009AE5 LDR R0,[R10, #+128] \ 0000035C 000050E3 CMP R0,#+0 \ 00000360 F9FFFF0A BEQ ??contactlist_menu_onkey_34 \ ??contactlist_menu_onkey_33: \ 00000364 10009AE5 LDR R0,[R10, #+16] \ 00000368 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 0000036C 000050E3 CMP R0,#+0 \ 00000370 B415D011 LDRHNE R1,[R0, #+84] \ 00000374 00005113 CMPNE R1,#+0 \ 00000378 B495C011 STRHNE R9,[R0, #+84] \ 0000037C 0110A0E3 MOV R1,#+1 \ 00000380 0A00A0E1 MOV R0,R10 \ ??contactlist_menu_onkey_26: \ 00000384 ........ BL RecountMenu \ ??contactlist_menu_onkey_2: \ 00000388 0000E0E3 MVN R0,#+0 \ 0000038C FE8FBDE8 POP {R1-R11,PC} 1772 return(-1); 1773 } 1774 if (key==RIGHT_BUTTON) \ ??contactlist_menu_onkey_21: \ 00000390 3E0058E3 CMP R8,#+62 \ 00000394 0C00001A BNE ??contactlist_menu_onkey_35 1775 { 1776 //Послать запрос текста XStatus 1777 if (t) \ 00000398 00005AE3 CMP R10,#+0 \ 0000039C 0E00000A BEQ ??contactlist_menu_onkey_10 1778 { 1779 if (!t->isgroup) \ 000003A0 08009AE5 LDR R0,[R10, #+8] \ 000003A4 000050E3 CMP R0,#+0 \ 000003A8 0B00001A BNE ??contactlist_menu_onkey_10 1780 { 1781 FreeXText(t); \ 000003AC 0A00A0E1 MOV R0,R10 \ 000003B0 ........ _BLF FreeXText,??FreeXText??rA 1782 t->req_xtext=0; \ 000003B4 8C908AE5 STR R9,[R10, #+140] 1783 RequestXText(t->uin); \ 000003B8 0C009AE5 LDR R0,[R10, #+12] \ 000003BC ........ BL RequestXText 1784 RefreshGUI(); \ 000003C0 960100EF SWI +406 1785 return(-1); \ ??contactlist_menu_onkey_13: \ 000003C4 000064E2 RSB R0,R4,#+0 \ 000003C8 FE8FBDE8 POP {R1-R11,PC} 1786 } 1787 } 1788 } 1789 if (key==0x19) \ ??contactlist_menu_onkey_35: \ 000003CC 190058E3 CMP R8,#+25 \ 000003D0 0100001A BNE ??contactlist_menu_onkey_10 1790 { 1791 CreateScreenSelectGUI(); \ ??contactlist_menu_onkey_36: \ 000003D4 ........ _BLF CreateScreenSelectGUI,??CreateScreenSelectGUI??rA 1792 // GeneralFuncF1(1); 1793 return(-1); \ 000003D8 F9FFFFEA B ??contactlist_menu_onkey_13 1794 } 1795 } 1796 if (msg->gbsmsg->msg==LONG_PRESS) \ ??contactlist_menu_onkey_10: \ 000003DC 08009DE5 LDR R0,[SP, #+8] \ 000003E0 652F84E3 ORR R2,R4,#0x194 \ 000003E4 040090E5 LDR R0,[R0, #+4] \ 000003E8 041090E5 LDR R1,[R0, #+4] \ 000003EC 020051E1 CMP R1,R2 \ 000003F0 9700001A BNE ??contactlist_menu_onkey_37 1797 { 1798 if (msg->gbsmsg->submess=='#') \ 000003F4 081090E5 LDR R1,[R0, #+8] \ 000003F8 230051E3 CMP R1,#+35 \ 000003FC F4FFFF0A BEQ ??contactlist_menu_onkey_36 1799 { 1800 /* 1801 ClearContactT9Key(); 1802 RecountMenu(NULL,1); 1803 gipc.name_to=ipc_xtask_name; 1804 gipc.name_from=ipc_my_name; 1805 gipc.data=0; 1806 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); 1807 if (IsUnlocked()) 1808 { 1809 KbdLock(); 1810 } 1811 */ 1812 CreateScreenSelectGUI(); 1813 return(-1); 1814 } 1815 if (msg->gbsmsg->submess=='*') \ 00000400 2A0051E3 CMP R1,#+42 \ 00000404 1500001A BNE ??contactlist_menu_onkey_38 1816 { 1817 ClearContactT9Key(); \ 00000408 2010A0E3 MOV R1,#+32 \ 0000040C 060085E0 ADD R0,R5,R6 \ 00000410 1D0100EF SWI +285 1818 RecountMenu(NULL,1); \ 00000414 0110A0E3 MOV R1,#+1 \ 00000418 0900A0E1 MOV R0,R9 \ 0000041C ........ BL RecountMenu 1819 silenthide=1; \ 00000420 5C4186E5 STR R4,[R6, #+348] 1820 gipc.name_to=ipc_xtask_name; \ 00000424 5400A0E3 MOV R0,#+84 \ 00000428 700E80E3 ORR R0,R0,#0x700 \ 0000042C 070080E0 ADD R0,R0,R7 \ 00000430 BC0086E5 STR R0,[R6, #+188] 1821 gipc.name_from=ipc_my_name; \ 00000434 FE0F85E2 ADD R0,R5,#+1016 \ 00000438 070080E0 ADD R0,R0,R7 \ 0000043C C00086E5 STR R0,[R6, #+192] 1822 gipc.data=0; \ 00000440 C49086E5 STR R9,[R6, #+196] 1823 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); \ 00000444 BC3086E2 ADD R3,R6,#+188 \ 00000448 0420A0E1 MOV R2,R4 \ 0000044C B010A0E3 MOV R1,#+176 \ 00000450 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000454 0900A0E3 MOV R0,#+9 \ 00000458 420C80E3 ORR R0,R0,#0x4200 \ 0000045C 000100EF SWI +256 1824 } 1825 switch(msg->gbsmsg->submess) \ ??contactlist_menu_onkey_38: \ 00000460 08009DE5 LDR R0,[SP, #+8] \ 00000464 F4819FE5 LDR R8,??contactlist_menu_onkey_22+0x4 ;; WriteDefSettings \ 00000468 040090E5 LDR R0,[R0, #+4] \ 0000046C 080090E5 LDR R0,[R0, #+8] \ 00000470 310040E2 SUB R0,R0,#+49 \ 00000474 050050E3 CMP R0,#+5 \ 00000478 6700008A BHI ??contactlist_menu_onkey_39 \ 0000047C 011F8FE2 ADR R1,??contactlist_menu_onkey_0 \ 00000480 0010D1E7 LDRB R1,[R1, R0] \ 00000484 01F18FE0 ADD PC,PC,R1, LSL #+2 \ ??contactlist_menu_onkey_0: \ 00000488 010E1C28 DC8 +1,+14,+28,+40 \ 0000048C 364F0000 DC8 +54,+79,+0,+0 1826 { 1827 case '1': 1828 Is_Sounds_Enabled=!(Is_Sounds_Enabled); \ ??contactlist_menu_onkey_40: \ 00000490 680196E5 LDR R0,[R6, #+360] \ 00000494 000050E3 CMP R0,#+0 \ 00000498 0040A013 MOVNE R4,#+0 \ 0000049C 684186E5 STR R4,[R6, #+360] 1829 if(Is_Sounds_Enabled) \ 000004A0 000054E3 CMP R4,#+0 1830 ShowMSG(1,(int)"Sound 0n"); \ 000004A4 48108712 ADDNE R1,R7,#+72 1831 else 1832 ShowMSG(1,(int)"Sound Off"); \ 000004A8 54108702 ADDEQ R1,R7,#+84 \ 000004AC 0100A0E3 MOV R0,#+1 \ 000004B0 480100EF SWI +328 1833 SUBPROC((void*)WriteDefSettings); \ 000004B4 0800A0E1 MOV R0,R8 \ 000004B8 710100EF SWI +369 1834 RefreshGUI(); \ 000004BC 960100EF SWI +406 \ 000004C0 550000EA B ??contactlist_menu_onkey_39 1835 break; 1836 case '2': 1837 Is_Vibra_Enabled=!(Is_Vibra_Enabled); \ ??contactlist_menu_onkey_41: \ 000004C4 640196E5 LDR R0,[R6, #+356] \ 000004C8 000050E3 CMP R0,#+0 \ 000004CC 0040A013 MOVNE R4,#+0 \ 000004D0 644186E5 STR R4,[R6, #+356] 1838 SUBPROC((void*)WriteDefSettings); \ 000004D4 0800A0E1 MOV R0,R8 \ 000004D8 710100EF SWI +369 1839 RefreshGUI(); \ 000004DC 960100EF SWI +406 1840 if(Is_Vibra_Enabled) \ 000004E0 640196E5 LDR R0,[R6, #+356] \ 000004E4 000050E3 CMP R0,#+0 \ 000004E8 6C108702 ADDEQ R1,R7,#+108 1841 ShowMSG(1,(int)"Vibra On"); \ 000004EC 60108712 ADDNE R1,R7,#+96 \ ??contactlist_menu_onkey_42: \ 000004F0 0100A0E3 MOV R0,#+1 \ ??contactlist_menu_onkey_43: \ 000004F4 480100EF SWI +328 \ 000004F8 470000EA B ??contactlist_menu_onkey_39 1842 else 1843 ShowMSG(1,(int)"Vibra Off"); 1844 break; 1845 case '3': 1846 if(CurrentPrivateStatus!=1) \ ??contactlist_menu_onkey_44: \ 000004FC 780196E5 LDR R0,[R6, #+376] \ 00000500 010050E3 CMP R0,#+1 \ 00000504 0400000A BEQ ??contactlist_menu_onkey_45 1847 { 1848 SetPrivateStatus(1);//Инвиз \ 00000508 0100A0E3 MOV R0,#+1 \ 0000050C ........ _BLF SetPrivateStatus,??SetPrivateStatus??rA 1849 ShowMSG(1,(int)"Инвиз включен"); \ 00000510 781087E2 ADD R1,R7,#+120 \ 00000514 0400A0E1 MOV R0,R4 \ ??contactlist_menu_onkey_46: \ 00000518 F5FFFFEA B ??contactlist_menu_onkey_43 1850 } 1851 else 1852 { 1853 SetPrivateStatus(3);//не инвиз:) \ ??contactlist_menu_onkey_45: \ 0000051C 0300A0E3 MOV R0,#+3 \ 00000520 ........ _BLF SetPrivateStatus,??SetPrivateStatus??rA 1854 ShowMSG(1,(int)"Инвиз выключен"); \ 00000524 881087E2 ADD R1,R7,#+136 \ 00000528 F0FFFFEA B ??contactlist_menu_onkey_42 1855 } 1856 break; 1857 case '4': 1858 Is_Double_Vibra_On=!(Is_Double_Vibra_On); \ ??contactlist_menu_onkey_47: \ 0000052C 100196E5 LDR R0,[R6, #+272] \ 00000530 000050E3 CMP R0,#+0 \ 00000534 0040A013 MOVNE R4,#+0 \ 00000538 104186E5 STR R4,[R6, #+272] 1859 SUBPROC((void*)WriteDefSettings); \ 0000053C 0800A0E1 MOV R0,R8 \ 00000540 710100EF SWI +369 1860 RefreshGUI(); \ 00000544 960100EF SWI +406 1861 if(Is_Double_Vibra_On) \ 00000548 100196E5 LDR R0,[R6, #+272] \ 0000054C 000050E3 CMP R0,#+0 1862 ShowMSG(1,(int)"Vibra rem On"); \ 00000550 98108712 ADDNE R1,R7,#+152 \ 00000554 0100A013 MOVNE R0,#+1 \ 00000558 E5FFFF1A BNE ??contactlist_menu_onkey_43 1863 else 1864 ShowMSG(1,(int)"Vibra rem Off"); \ 0000055C A81087E2 ADD R1,R7,#+168 \ 00000560 E2FFFFEA B ??contactlist_menu_onkey_42 1865 break; 1866 case '5': 1867 { 1868 // t=(CLIST *)(&cltop); 1869 CLIST *cl; 1870 cl=(CLIST *)cltop; \ ??contactlist_menu_onkey_48: \ 00000564 B44196E5 LDR R4,[R6, #+436] \ 00000568 000054E3 CMP R4,#+0 \ 0000056C 0800000A BEQ ??contactlist_menu_onkey_49 1871 while(cl) 1872 { 1873 if(cl->log) \ ??contactlist_menu_onkey_50: \ 00000570 740094E5 LDR R0,[R4, #+116] \ 00000574 000050E3 CMP R0,#+0 \ 00000578 0200000A BEQ ??contactlist_menu_onkey_51 1874 { 1875 FreeLOGQ(&cl->log); \ 0000057C 740084E2 ADD R0,R4,#+116 \ 00000580 ........ BL FreeLOGQ 1876 cl->msg_count=0; \ 00000584 849084E5 STR R9,[R4, #+132] 1877 } 1878 cl=cl->next; \ ??contactlist_menu_onkey_51: \ 00000588 004094E5 LDR R4,[R4, #+0] 1879 } \ 0000058C 000054E3 CMP R4,#+0 \ 00000590 F6FFFF1A BNE ??contactlist_menu_onkey_50 1880 1881 if(strlen(ContactT9Key)) \ ??contactlist_menu_onkey_49: \ 00000594 060085E0 ADD R0,R5,R6 \ 00000598 1B0000EF SWI +27 \ 0000059C 000050E3 CMP R0,#+0 \ 000005A0 0200000A BEQ ??contactlist_menu_onkey_52 1882 ClearContactT9Key(); \ 000005A4 2010A0E3 MOV R1,#+32 \ 000005A8 060085E0 ADD R0,R5,R6 \ 000005AC 1D0100EF SWI +285 1883 t->isactive=0; \ ??contactlist_menu_onkey_52: \ 000005B0 80908AE5 STR R9,[R10, #+128] 1884 RecountMenu(NULL,1); \ ??contactlist_menu_onkey_18: \ 000005B4 0110A0E3 MOV R1,#+1 \ 000005B8 0000A0E3 MOV R0,#+0 \ 000005BC ........ BL RecountMenu 1885 return (-1); \ 000005C0 0900E0E1 MVN R0,R9 \ 000005C4 FE8FBDE8 POP {R1-R11,PC} 1886 } 1887 case '6': 1888 if(!away_m) \ ??contactlist_menu_onkey_53: \ 000005C8 380196E5 LDR R0,[R6, #+312] \ 000005CC 000050E3 CMP R0,#+0 \ 000005D0 0B00001A BNE ??contactlist_menu_onkey_54 1889 { 1890 away_m=!away_m; \ 000005D4 384186E5 STR R4,[R6, #+312] 1891 GBS_StopTimer(&away_tmr); \ 000005D8 04009DE5 LDR R0,[SP, #+4] \ 000005DC 440100EF SWI +324 1892 msg_away_timer=AUTO_ENGADE; \ 000005E0 ........ LDR R0,??DataTable61 ;; AUTO_ENGADE \ 000005E4 000090E5 LDR R0,[R0, #+0] \ 000005E8 300186E5 STR R0,[R6, #+304] 1893 away_timer(); \ 000005EC ........ BL away_timer 1894 ShowMSG(1,(int)"Автоответчик включен!"); \ 000005F0 B81087E2 ADD R1,R7,#+184 \ 000005F4 0100A0E3 MOV R0,#+1 \ 000005F8 480100EF SWI +328 1895 InputAwayMsg(); \ 000005FC ........ BL InputAwayMsg \ 00000600 040000EA B ??contactlist_menu_onkey_55 1896 } 1897 else 1898 { 1899 msg_away_timer=0; \ ??contactlist_menu_onkey_54: \ 00000604 309186E5 STR R9,[R6, #+304] 1900 away_m=!away_m; \ 00000608 389186E5 STR R9,[R6, #+312] 1901 ShowMSG(1,(int)"Автоответчик выключен!"); \ 0000060C D01087E2 ADD R1,R7,#+208 \ 00000610 0100A0E3 MOV R0,#+1 \ 00000614 480100EF SWI +328 1902 } 1903 UpdateCLheader(); \ ??contactlist_menu_onkey_55: \ 00000618 ........ BL UpdateCLheader 1904 break; 1905 } 1906 1907 int key=msg->gbsmsg->submess; \ ??contactlist_menu_onkey_39: \ 0000061C 08009DE5 LDR R0,[SP, #+8] \ 00000620 040090E5 LDR R0,[R0, #+4] \ 00000624 080090E5 LDR R0,[R0, #+8] 1908 if ((key>='0')&&(key<='9')) \ 00000628 300050E3 CMP R0,#+48 \ 0000062C 080000BA BLT ??contactlist_menu_onkey_37 \ 00000630 3A0050E3 CMP R0,#+58 \ 00000634 060000AA BGE ??contactlist_menu_onkey_37 1909 { 1910 ClearContactT9Key(); \ 00000638 2010A0E3 MOV R1,#+32 \ 0000063C 060085E0 ADD R0,R5,R6 \ 00000640 1D0100EF SWI +285 1911 UpdateCLheader(); \ 00000644 ........ BL UpdateCLheader 1912 RecountMenu(NULL,1); \ 00000648 0110A0E3 MOV R1,#+1 \ 0000064C 0000A0E3 MOV R0,#+0 \ 00000650 ........ BL RecountMenu 1913 } 1914 } 1915 return(0); \ ??contactlist_menu_onkey_37: \ 00000654 0000A0E3 MOV R0,#+0 \ 00000658 FE8FBDE8 POP {R1-R11,PC} ;; return \ ??contactlist_menu_onkey_22: \ 0000065C ........ DC32 ActionResh \ 00000660 ........ DC32 WriteDefSettings 1916 } 1917 \ In segment CODE, align 4, keep-with-next 1918 void GetOnTotalContact(int group_id,int *_onlinetotal) 1919 { 1920 CLIST *t; 1921 t=(CLIST *)&cltop; \ GetOnTotalContact: \ 00000000 ........ LDR R2,??DataTable62 ;; S_ICONS + 436 \ 00000004 30002DE9 PUSH {R4,R5} 1922 int online=0,total=0; \ 00000008 0030A0E3 MOV R3,#+0 \ 0000000C 00C0A0E3 MOV R12,#+0 \ 00000010 FF50A0E3 MOV R5,#+255 \ 00000014 FF5C85E3 ORR R5,R5,#0xFF00 \ 00000018 080000EA B ??GetOnTotalContact_0 1923 while((t=t->next)) 1924 { 1925 if(t->group==group_id && !t->isgroup) \ ??GetOnTotalContact_1: \ 0000001C 104092E5 LDR R4,[R2, #+16] \ 00000020 000054E1 CMP R4,R0 \ 00000024 08409205 LDREQ R4,[R2, #+8] \ 00000028 00005403 CMPEQ R4,#+0 \ 0000002C 0300001A BNE ??GetOnTotalContact_0 1926 { 1927 total++; 1928 if (t->state!=0xFFFF) online++; \ 00000030 B445D2E1 LDRH R4,[R2, #+84] \ 00000034 01C08CE2 ADD R12,R12,#+1 \ 00000038 050054E1 CMP R4,R5 \ 0000003C 01308312 ADDNE R3,R3,#+1 1929 } 1930 } \ ??GetOnTotalContact_0: \ 00000040 002092E5 LDR R2,[R2, #+0] \ 00000044 000052E3 CMP R2,#+0 \ 00000048 F3FFFF1A BNE ??GetOnTotalContact_1 1931 _onlinetotal[0]=online; \ 0000004C 003081E5 STR R3,[R1, #+0] 1932 _onlinetotal[1]=total; \ 00000050 04C081E5 STR R12,[R1, #+4] 1933 } \ 00000054 3000BDE8 POP {R4,R5} \ 00000058 1EFF2FE1 BX LR ;; return 1934 1935 \ In segment CODE, align 4, keep-with-next 1936 void contactlist_menu_iconhndl(void *data, int curitem, void *unk) 1937 { \ contactlist_menu_iconhndl: \ 00000000 F24F2DE9 PUSH {R1,R4-R11,LR} \ 00000004 9CDF4DE2 SUB SP,SP,#+624 1938 CLIST *t; 1939 #ifdef USE_MLMENU 1940 void *item=AllocMLMenuItem(data); 1941 #else 1942 void *item=AllocMenuItem(data); 1943 #endif 1944 int icon; 1945 1946 WSHDR *ws2; 1947 #ifdef USE_MLMENU 1948 WSHDR *ws4; 1949 #endif 1950 WSHDR ws1loc, *ws1; 1951 unsigned short num[128]; 1952 ws1=CreateLocalWS(&ws1loc,num,128); 1953 #ifdef USE_MLMENU 1954 WSHDR ws3loc, *ws3; 1955 unsigned short num3[128]; 1956 ws3=CreateLocalWS(&ws3loc,num3,128); 1957 char s[64]; 1958 #endif 1959 //void Get_Online_total(); 1960 //Get_Online_total(); 1961 // if(CountContacts()==curitem && (!dontLogOnConnect)) 1962 // dontLogOnConnect=1; 1963 t=FindContactByN(curitem); 1964 if (t) \ 00000008 ........ LDR R10,??DataTable63 ;; `?` \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 190200EF SWI +537 \ 00000014 0050A0E1 MOV R5,R0 \ 00000018 8020A0E3 MOV R2,#+128 \ 0000001C 08108DE2 ADD R1,SP,#+8 \ 00000020 920F8DE2 ADD R0,SP,#+584 \ 00000024 270100EF SWI +295 \ 00000028 0060A0E1 MOV R6,R0 \ 0000002C 8020A0E3 MOV R2,#+128 \ 00000030 421F8DE2 ADD R1,SP,#+264 \ 00000034 970F8DE2 ADD R0,SP,#+604 \ 00000038 270100EF SWI +295 \ 0000003C 0070A0E1 MOV R7,R0 \ 00000040 70029DE5 LDR R0,[SP, #+624] \ 00000044 ........ _BLF FindContactByN,??FindContactByN??rA \ 00000048 0090B0E1 MOVS R9,R0 \ 0000004C 6200000A BEQ ??contactlist_menu_iconhndl_0 1965 { 1966 icon=GetIconIndex(t); \ 00000050 ........ BL GetIconIndex \ 00000054 0080A0E1 MOV R8,R0 1967 if (icon!=IS_GROUP) \ 00000058 0F0058E3 CMP R8,#+15 \ 0000005C 4D00000A BEQ ??contactlist_menu_iconhndl_1 1968 { 1969 if(t->just_now) \ 00000060 5C0099E5 LDR R0,[R9, #+92] \ 00000064 000050E3 CMP R0,#+0 \ 00000068 0C00000A BEQ ??contactlist_menu_iconhndl_2 1970 { 1971 char *test=malloc(64); \ 0000006C 4000A0E3 MOV R0,#+64 \ 00000070 140000EF SWI +20 \ 00000074 00B0A0E1 MOV R11,R0 1972 sprintf(test, ">> %s <<", t->name); \ 00000078 142089E2 ADD R2,R9,#+20 \ 0000007C E8108AE2 ADD R1,R10,#+232 \ 00000080 160000EF SWI +22 1973 wsprintf(ws1,percent_t,test); \ 00000084 0B20A0E1 MOV R2,R11 \ 00000088 10108AE2 ADD R1,R10,#+16 \ 0000008C 0600A0E1 MOV R0,R6 \ 00000090 240100EF SWI +292 1974 mfree(test); \ 00000094 0B00A0E1 MOV R0,R11 \ 00000098 150000EF SWI +21 \ 0000009C 030000EA B ??contactlist_menu_iconhndl_3 1975 } 1976 else 1977 wsprintf(ws1,percent_t,t->name); \ ??contactlist_menu_iconhndl_2: \ 000000A0 142089E2 ADD R2,R9,#+20 \ 000000A4 10108AE2 ADD R1,R10,#+16 \ 000000A8 0600A0E1 MOV R0,R6 \ 000000AC 240100EF SWI +292 1978 if (t->just_now) \ ??contactlist_menu_iconhndl_3: \ 000000B0 5C0099E5 LDR R0,[R9, #+92] \ 000000B4 08B0A0E3 MOV R11,#+8 \ 000000B8 E0BC8BE3 ORR R11,R11,#0xE000 \ 000000BC 000050E3 CMP R0,#+0 1979 { 1980 wsInsertChar(ws1,0x0004,1); \ 000000C0 0120A013 MOVNE R2,#+1 \ 000000C4 0410A013 MOVNE R1,#+4 \ 000000C8 0400001A BNE ??contactlist_menu_iconhndl_4 1981 wsInsertChar(ws1,0xE008,1); 1982 } 1983 else 1984 if (t->isactive) \ 000000CC 800099E5 LDR R0,[R9, #+128] \ 000000D0 000050E3 CMP R0,#+0 \ 000000D4 0700000A BEQ ??contactlist_menu_iconhndl_5 1985 { 1986 wsInsertChar(ws1,0x0002,1); \ 000000D8 0120A0E3 MOV R2,#+1 \ 000000DC 0210A0E3 MOV R1,#+2 \ ??contactlist_menu_iconhndl_4: \ 000000E0 0600A0E1 MOV R0,R6 \ 000000E4 1D0000EF SWI +29 1987 wsInsertChar(ws1,0xE008,1); \ 000000E8 0120A0E3 MOV R2,#+1 \ 000000EC 0B10A0E1 MOV R1,R11 \ 000000F0 0600A0E1 MOV R0,R6 \ 000000F4 1D0000EF SWI +29 1988 } 1989 #ifdef USE_MLMENU 1990 if (t->xtext && t->xtext[0]!=0) \ ??contactlist_menu_iconhndl_5: \ 000000F8 880099E5 LDR R0,[R9, #+136] \ 000000FC 000050E3 CMP R0,#+0 \ 00000100 0000D015 LDRBNE R0,[R0, #+0] \ 00000104 00005013 CMPNE R0,#+0 \ 00000108 0F00000A BEQ ??contactlist_menu_iconhndl_6 1991 { 1992 int i; 1993 zeromem(s,64); \ 0000010C 4010A0E3 MOV R1,#+64 \ 00000110 820F8DE2 ADD R0,SP,#+520 \ 00000114 1D0100EF SWI +285 1994 i=t->xtext[0]; \ 00000118 880099E5 LDR R0,[R9, #+136] \ 0000011C 0020D0E5 LDRB R2,[R0, #+0] 1995 if (i>63) i=63; 1996 strncpy(s,t->xtext+1,i); \ 00000120 011080E2 ADD R1,R0,#+1 \ 00000124 820F8DE2 ADD R0,SP,#+520 \ 00000128 400052E3 CMP R2,#+64 \ 0000012C 3F20A0A3 MOVGE R2,#+63 \ 00000130 160100EF SWI +278 1997 wsprintf(ws3,"%c%t",0xE012,s); \ 00000134 823F8DE2 ADD R3,SP,#+520 \ 00000138 0A208BE2 ADD R2,R11,#+10 \ 0000013C F4108AE2 ADD R1,R10,#+244 \ 00000140 0700A0E1 MOV R0,R7 \ 00000144 240100EF SWI +292 \ 00000148 030000EA B ??contactlist_menu_iconhndl_7 1998 } 1999 else 2000 wsprintf(ws3,percent_d,t->uin); \ ??contactlist_menu_iconhndl_6: \ 0000014C 0C2099E5 LDR R2,[R9, #+12] \ 00000150 13108AE2 ADD R1,R10,#+19 \ 00000154 0700A0E1 MOV R0,R7 \ 00000158 240100EF SWI +292 2001 if ((t->xstatexstate)) \ ??contactlist_menu_iconhndl_7: \ 0000015C B605D9E1 LDRH R0,[R9, #+86] \ 00000160 ........ LDR R2,??DataTable64 ;; total_xstatuses \ 00000164 0010A0E1 MOV R1,R0 \ 00000168 002092E5 LDR R2,[R2, #+0] \ 0000016C 020051E1 CMP R1,R2 \ 00000170 1C0000AA BGE ??contactlist_menu_iconhndl_8 \ 00000174 000050E3 CMP R0,#+0 \ 00000178 1A00000A BEQ ??contactlist_menu_iconhndl_8 2002 { 2003 wsInsertChar(ws3,FIRST_UCS2_BITMAP+t->xstate,1); \ 0000017C 0120A0E3 MOV R2,#+1 \ 00000180 2A00A0E3 MOV R0,#+42 \ 00000184 E10C80E3 ORR R0,R0,#0xE100 \ 00000188 011080E0 ADD R1,R0,R1 \ 0000018C 0700A0E1 MOV R0,R7 \ 00000190 1D0000EF SWI +29 \ 00000194 130000EA B ??contactlist_menu_iconhndl_8 2004 } 2005 #endif 2006 } 2007 else 2008 { 2009 int onlinetotal[2]; 2010 GetOnTotalContact(t->group,onlinetotal); \ ??contactlist_menu_iconhndl_1: \ 00000198 100099E5 LDR R0,[R9, #+16] \ 0000019C 0D10A0E1 MOV R1,SP \ 000001A0 ........ BL GetOnTotalContact 2011 #ifdef USE_MLMENU 2012 wsprintf(ws1,percent_t,t->name); \ 000001A4 142089E2 ADD R2,R9,#+20 \ 000001A8 10108AE2 ADD R1,R10,#+16 \ 000001AC 0600A0E1 MOV R0,R6 \ 000001B0 240100EF SWI +292 2013 wsprintf(ws3,"(%d/%d)",onlinetotal[0],onlinetotal[1]); \ 000001B4 04309DE5 LDR R3,[SP, #+4] \ 000001B8 00209DE5 LDR R2,[SP, #+0] \ 000001BC FC108AE2 ADD R1,R10,#+252 \ 000001C0 0700A0E1 MOV R0,R7 \ 000001C4 240100EF SWI +292 2014 #else 2015 wsprintf(ws1,"%t%c%c(%d/%d)",t->name,0xE01D,0xE012,onlinetotal[0],onlinetotal[1]); 2016 #endif 2017 if (t->state) icon++; //Модификация иконки группы \ 000001C8 B405D9E1 LDRH R0,[R9, #+84] \ 000001CC 000050E3 CMP R0,#+0 \ 000001D0 0400000A BEQ ??contactlist_menu_iconhndl_8 \ 000001D4 018088E2 ADD R8,R8,#+1 \ 000001D8 020000EA B ??contactlist_menu_iconhndl_8 2018 } 2019 } 2020 else 2021 { 2022 wsprintf(ws1, LG_CLERROR); \ ??contactlist_menu_iconhndl_0: \ 000001DC 411F8AE2 ADD R1,R10,#+260 \ 000001E0 0600A0E1 MOV R0,R6 \ 000001E4 240100EF SWI +292 2023 } 2024 ws2=AllocMenuWS(data,ws1->wsbody[0]); \ ??contactlist_menu_iconhndl_8: \ 000001E8 000096E5 LDR R0,[R6, #+0] \ 000001EC B010D0E1 LDRH R1,[R0, #+0] \ 000001F0 0400A0E1 MOV R0,R4 \ 000001F4 980100EF SWI +408 \ 000001F8 0090A0E1 MOV R9,R0 2025 wstrcpy(ws2,ws1); \ 000001FC 0610A0E1 MOV R1,R6 \ 00000200 1F0100EF SWI +287 2026 2027 SetMenuItemIconArray(data, item, S_ICONS+icon); \ 00000204 ........ LDR R0,??DataTable65 ;; S_ICONS \ 00000208 0510A0E1 MOV R1,R5 \ 0000020C 082180E0 ADD R2,R0,R8, LSL #+2 \ 00000210 0400A0E1 MOV R0,R4 \ 00000214 990100EF SWI +409 2028 #ifdef USE_MLMENU 2029 ws4=AllocMenuWS(data,ws3->wsbody[0]); \ 00000218 000097E5 LDR R0,[R7, #+0] \ 0000021C B010D0E1 LDRH R1,[R0, #+0] \ 00000220 0400A0E1 MOV R0,R4 \ 00000224 980100EF SWI +408 \ 00000228 0060A0E1 MOV R6,R0 2030 wstrcpy(ws4,ws3); \ 0000022C 0710A0E1 MOV R1,R7 \ 00000230 1F0100EF SWI +287 2031 SetMLMenuItemText(data, item, ws2, ws4, curitem); \ 00000234 70029DE5 LDR R0,[SP, #+624] \ 00000238 0630A0E1 MOV R3,R6 \ 0000023C 01002DE9 PUSH {R0} \ 00000240 0920A0E1 MOV R2,R9 \ 00000244 0510A0E1 MOV R1,R5 \ 00000248 0400A0E1 MOV R0,R4 \ 0000024C 180200EF SWI +536 2032 #else 2033 SetMenuItemText(data, item, ws2, curitem); 2034 #endif 2035 } \ 00000250 9EDF8DE2 ADD SP,SP,#+632 \ 00000254 F08FBDE8 POP {R4-R11,PC} ;; return 2036 2037 //=============================================================================================== 2038 int DNR_ID=0; 2039 int DNR_TRIES=3; 2040 2041 extern const char NATICQ_HOST[]; 2042 extern const unsigned int NATICQ_PORT; 2043 extern const unsigned int RECONNECT_TIME; //2058 2044 char hostname[128]; //2058 che toka 128? :) 2045 2046 2047 int host_counter = 0; 2048 2049 //--------------------------------------------------------------------------- \ In segment CODE, align 4, keep-with-next 2050 const char *GetHost(int cnt, const char *str, char *buf) 2051 { 2052 const char *tmp = str, *begin, *end; \ GetHost: \ 00000000 0130A0E1 MOV R3,R1 2053 if(cnt) \ 00000004 000050E3 CMP R0,#+0 \ 00000008 0100001A BNE ??GetHost_0 \ 0000000C 180000EA B ??GetHost_1 2054 { 2055 for(;cnt;cnt--) 2056 { 2057 for(;*str!=';' && *str!=' ' && *str!='\x0D' && *str!='\x0A' && *str; str++); \ ??GetHost_2: \ 00000010 011081E2 ADD R1,R1,#+1 \ ??GetHost_0: \ 00000014 00C0D1E5 LDRB R12,[R1, #+0] \ 00000018 3B005CE3 CMP R12,#+59 \ 0000001C 20005C13 CMPNE R12,#+32 \ 00000020 0D005C13 CMPNE R12,#+13 \ 00000024 0A005C13 CMPNE R12,#+10 \ 00000028 00005C13 CMPNE R12,#+0 \ 0000002C F7FFFF1A BNE ??GetHost_2 2058 if(!*str) str = tmp; \ 00000030 00005CE3 CMP R12,#+0 \ 00000034 0200001A BNE ??GetHost_3 \ 00000038 0310A0E1 MOV R1,R3 \ 0000003C 000000EA B ??GetHost_3 2059 for(;(*str==';' || *str==' ' || *str=='\x0D' || *str=='\x0A') && *str; str++); \ ??GetHost_4: \ 00000040 011081E2 ADD R1,R1,#+1 \ ??GetHost_3: \ 00000044 00C0D1E5 LDRB R12,[R1, #+0] \ 00000048 3B005CE3 CMP R12,#+59 \ 0000004C 20005C13 CMPNE R12,#+32 \ 00000050 0D005C13 CMPNE R12,#+13 \ 00000054 0A005C13 CMPNE R12,#+10 \ 00000058 0100001A BNE ??GetHost_5 \ 0000005C 00005CE3 CMP R12,#+0 \ 00000060 F6FFFF1A BNE ??GetHost_4 2060 if(!*str) str = tmp; \ ??GetHost_5: \ 00000064 00005CE3 CMP R12,#+0 \ 00000068 0310A001 MOVEQ R1,R3 2061 } \ 0000006C 010050E2 SUBS R0,R0,#+1 \ 00000070 E7FFFF1A BNE ??GetHost_0 2062 } 2063 tmp = buf; \ ??GetHost_1: \ 00000074 0200A0E1 MOV R0,R2 2064 begin = str; \ 00000078 0130A0E1 MOV R3,R1 \ 0000007C 000000EA B ??GetHost_6 2065 for(;*str!=';' && *str!=':' && *str!=' ' && *str!='\x0D' && *str!='\x0A' && *str; str++); \ ??GetHost_7: \ 00000080 011081E2 ADD R1,R1,#+1 \ ??GetHost_6: \ 00000084 00C0D1E5 LDRB R12,[R1, #+0] \ 00000088 3B005CE3 CMP R12,#+59 \ 0000008C 3A005C13 CMPNE R12,#+58 \ 00000090 20005C13 CMPNE R12,#+32 \ 00000094 0D005C13 CMPNE R12,#+13 \ 00000098 0A005C13 CMPNE R12,#+10 \ 0000009C 00005C13 CMPNE R12,#+0 \ 000000A0 F6FFFF1A BNE ??GetHost_7 2066 end = str; 2067 for(;begin0x2F && attr[k]<0x3A) {ret=ret*10+attr[k]-0x30;} else { if ( attr[k]=='-') {neg=-1;} else {return(ret*neg);}} \ ??atoi_1: \ 00000014 04C0A0E1 MOV R12,R4 \ 00000018 3A005CE3 CMP R12,#+58 \ 0000001C 0600002A BCS ??atoi_2 \ 00000020 0A40A0E3 MOV R4,#+10 \ 00000024 94C121E0 MLA R1,R4,R1,R12 \ 00000028 301041E2 SUB R1,R1,#+48 \ ??atoi_3: \ 0000002C 013083E2 ADD R3,R3,#+1 \ ??atoi_0: \ 00000030 0040D3E7 LDRB R4,[R3, +R0] \ 00000034 300054E3 CMP R4,#+48 \ 00000038 F5FFFF2A BCS ??atoi_1 \ ??atoi_2: \ 0000003C 2D0054E3 CMP R4,#+45 \ 00000040 0020E003 MVNEQ R2,#+0 \ 00000044 F8FFFF0A BEQ ??atoi_3 \ 00000048 1000BDE8 POP {R4} \ 0000004C 920100E0 MUL R0,R2,R1 \ 00000050 1EFF2FE1 BX LR ;; return 2079 } 2080 } 2081 //--------------------------------------------------------------------------- \ In segment CODE, align 4, keep-with-next 2082 int GetPort(int cnt, const char *str) 2083 { \ GetPort: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 2084 const char *tmp = str; \ 00000008 01C0A0E1 MOV R12,R1 2085 char numbuf[6], numcnt = 0; \ 0000000C 0020A0E3 MOV R2,#+0 \ 00000010 0030A0E3 MOV R3,#+0 2086 if(cnt) \ 00000014 000050E3 CMP R0,#+0 \ 00000018 0100001A BNE ??GetPort_0 \ 0000001C 180000EA B ??GetPort_1 2087 { 2088 for(;cnt;cnt--) 2089 { 2090 for(;*str!=';' && *str!=' ' && *str!='\x0D' && *str!='\x0A' && *str; str++); \ ??GetPort_2: \ 00000020 011081E2 ADD R1,R1,#+1 \ ??GetPort_0: \ 00000024 0040D1E5 LDRB R4,[R1, #+0] \ 00000028 3B0054E3 CMP R4,#+59 \ 0000002C 20005413 CMPNE R4,#+32 \ 00000030 0D005413 CMPNE R4,#+13 \ 00000034 0A005413 CMPNE R4,#+10 \ 00000038 00005413 CMPNE R4,#+0 \ 0000003C F7FFFF1A BNE ??GetPort_2 2091 if(!*str) str = tmp; \ 00000040 000054E3 CMP R4,#+0 \ 00000044 0200001A BNE ??GetPort_3 \ 00000048 0C10A0E1 MOV R1,R12 \ 0000004C 000000EA B ??GetPort_3 2092 for(;(*str==';' || *str==' ' || *str=='\x0D' || *str=='\x0A') && *str; str++); \ ??GetPort_4: \ 00000050 011081E2 ADD R1,R1,#+1 \ ??GetPort_3: \ 00000054 0040D1E5 LDRB R4,[R1, #+0] \ 00000058 3B0054E3 CMP R4,#+59 \ 0000005C 20005413 CMPNE R4,#+32 \ 00000060 0D005413 CMPNE R4,#+13 \ 00000064 0A005413 CMPNE R4,#+10 \ 00000068 0100001A BNE ??GetPort_5 \ 0000006C 000054E3 CMP R4,#+0 \ 00000070 F6FFFF1A BNE ??GetPort_4 2093 if(!*str) str = tmp; \ ??GetPort_5: \ 00000074 000054E3 CMP R4,#+0 \ 00000078 0C10A001 MOVEQ R1,R12 2094 } \ 0000007C 010050E2 SUBS R0,R0,#+1 \ 00000080 E7FFFF1A BNE ??GetPort_0 2095 } 2096 for(;*str!=';' && *str!=':' && *str!=' ' && *str!='\x0D' && *str!='\x0A' && *str; str++); \ ??GetPort_1: \ 00000084 0000D1E5 LDRB R0,[R1, #+0] \ 00000088 3B0050E3 CMP R0,#+59 \ 0000008C 3A005013 CMPNE R0,#+58 \ 00000090 20005013 CMPNE R0,#+32 \ 00000094 0D005013 CMPNE R0,#+13 \ 00000098 0A005013 CMPNE R0,#+10 \ 0000009C 00005013 CMPNE R0,#+0 \ 000000A0 01108112 ADDNE R1,R1,#+1 \ 000000A4 F6FFFF1A BNE ??GetPort_1 2097 if(*str!=':') return NATICQ_PORT; \ 000000A8 ........ LDRB R0,[R1], #+1 \ 000000AC 3A0050E3 CMP R0,#+58 \ 000000B0 58009F15 LDRNE R0,??GetPort_6 ;; NATICQ_PORT \ 000000B4 00009015 LDRNE R0,[R0, #+0] \ 000000B8 1680BD18 POPNE {R1,R2,R4,PC} 2098 str++; 2099 numbuf[5] = 0; \ 000000BC 0520CDE5 STRB R2,[SP, #+5] \ 000000C0 030000EA B ??GetPort_7 2100 for(;*str!=';' && *str!=' ' && *str!='\x0D' && *str!='\x0A' && *str && numcnt<5; numbuf[numcnt] = *str, str++, numcnt++); \ ??GetPort_8: \ 000000C4 ........ LDRB R4,[R1], #+1 \ 000000C8 013083E2 ADD R3,R3,#+1 \ 000000CC FF3003E2 AND R3,R3,#0xFF \ 000000D0 0040C0E5 STRB R4,[R0, #+0] \ ??GetPort_7: \ 000000D4 0D40A0E1 MOV R4,SP \ 000000D8 040083E0 ADD R0,R3,R4 \ 000000DC 0040D1E5 LDRB R4,[R1, #+0] \ 000000E0 3B0054E3 CMP R4,#+59 \ 000000E4 20005413 CMPNE R4,#+32 \ 000000E8 0D005413 CMPNE R4,#+13 \ 000000EC 0A005413 CMPNE R4,#+10 \ 000000F0 00005413 CMPNE R4,#+0 \ 000000F4 0100000A BEQ ??GetPort_9 \ 000000F8 050053E3 CMP R3,#+5 \ 000000FC F0FFFF3A BCC ??GetPort_8 2101 numbuf[numcnt] = 0; //2058 \ ??GetPort_9: \ 00000100 0020C0E5 STRB R2,[R0, #+0] 2102 return atoi(numbuf); \ 00000104 0D00A0E1 MOV R0,SP \ 00000108 ........ BL atoi \ 0000010C 1680BDE8 POP {R1,R2,R4,PC} ;; return \ ??GetPort_6: \ 00000110 ........ DC32 NATICQ_PORT 2103 2104 } 2105 //--------------------------------------------------------------------------- \ In segment CODE, align 4, keep-with-next 2106 int GetHostsCount(const char *str) 2107 { 2108 char cnt = 1; \ GetHostsCount: \ 00000000 0110A0E3 MOV R1,#+1 \ 00000004 000000EA B ??GetHostsCount_0 2109 for(;cnt;cnt++) 2110 { 2111 for(;*str!=';' && *str!=' ' && *str!='\x0D' && *str!='\x0A' && *str; str++); \ ??GetHostsCount_1: \ 00000008 010080E2 ADD R0,R0,#+1 \ ??GetHostsCount_0: \ 0000000C 0020D0E5 LDRB R2,[R0, #+0] \ 00000010 3B0052E3 CMP R2,#+59 \ 00000014 20005213 CMPNE R2,#+32 \ 00000018 0D005213 CMPNE R2,#+13 \ 0000001C 0A005213 CMPNE R2,#+10 \ 00000020 00005213 CMPNE R2,#+0 \ 00000024 F7FFFF1A BNE ??GetHostsCount_1 2112 if(!*str) return cnt; \ 00000028 000052E3 CMP R2,#+0 \ 0000002C 0200001A BNE ??GetHostsCount_2 \ ??GetHostsCount_3: \ 00000030 0100A0E1 MOV R0,R1 \ 00000034 1EFF2FE1 BX LR 2113 for(;(*str==';' || *str==' ' || *str=='\x0D' || *str=='\x0A') && *str; str++); \ ??GetHostsCount_4: \ 00000038 010080E2 ADD R0,R0,#+1 \ ??GetHostsCount_2: \ 0000003C 0020D0E5 LDRB R2,[R0, #+0] \ 00000040 3B0052E3 CMP R2,#+59 \ 00000044 20005213 CMPNE R2,#+32 \ 00000048 0D005213 CMPNE R2,#+13 \ 0000004C 0A005213 CMPNE R2,#+10 \ 00000050 0100001A BNE ??GetHostsCount_5 \ 00000054 000052E3 CMP R2,#+0 \ 00000058 F6FFFF1A BNE ??GetHostsCount_4 2114 if(!*str) return cnt; \ ??GetHostsCount_5: \ 0000005C 000052E3 CMP R2,#+0 \ 00000060 F2FFFF0A BEQ ??GetHostsCount_3 2115 } \ 00000064 011081E2 ADD R1,R1,#+1 \ 00000068 FF1011E2 ANDS R1,R1,#0xFF \ 0000006C E6FFFF1A BNE ??GetHostsCount_0 2116 return 0; \ 00000070 0000A0E3 MOV R0,#+0 \ 00000074 1EFF2FE1 BX LR ;; return 2117 } 2118 //--------------------------------------------------------------------------- 2119 \ In segment CODE, align 4, keep-with-next 2120 void create_connect(void) 2121 { \ create_connect: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 2122 // static int host_counter = 0; 2123 char hostbuf[128], buf[128]; 2124 int hostport; 2125 int ***p_res=NULL; 2126 void do_reconnect(void); 2127 SOCK_ADDR sa; 2128 //Устанавливаем соединение 2129 connect_state = 0; \ 00000004 ........ LDR R5,??DataTable70 ;; S_ICONS 2130 int err; 2131 unsigned int ip; 2132 GBS_DelTimer(&reconnect_tmr); 2133 if (!IsGPRSEnabled()) \ 00000008 D0829FE5 LDR R8,??create_connect_0+0x4 ;; `?` \ 0000000C 45DF4DE2 SUB SP,SP,#+276 \ 00000010 0040A0E3 MOV R4,#+0 \ 00000014 00408DE5 STR R4,[SP, #+0] \ 00000018 8C4185E5 STR R4,[R5, #+396] \ 0000001C 5400A0E3 MOV R0,#+84 \ 00000020 600D80E3 ORR R0,R0,#0x1800 \ 00000024 056080E0 ADD R6,R0,R5 \ 00000028 0600A0E1 MOV R0,R6 \ 0000002C 8C0100EF SWI +396 \ 00000030 3400A0E3 MOV R0,#+52 \ 00000034 5C0D80E3 ORR R0,R0,#0x1700 \ 00000038 057080E0 ADD R7,R0,R5 \ 0000003C A70000EF SWI +167 \ 00000040 000050E3 CMP R0,#+0 \ 00000044 0400001A BNE ??create_connect_1 2134 { 2135 is_gprs_online=0; \ 00000048 AC4185E5 STR R4,[R5, #+428] 2136 strcpy(logmsg,LG_GRWAITFORGPRS); \ 0000004C 0810A0E1 MOV R1,R8 \ 00000050 0700A0E1 MOV R0,R7 \ 00000054 1A0000EF SWI +26 2137 SMART_REDRAW(); \ 00000058 800000EA B ??create_connect_2 2138 return; 2139 } 2140 DNR_ID=0; 2141 *socklasterr()=0; 2142 if(host_counter > GetHostsCount(NATICQ_HOST)-1) host_counter = 0; //2058 \ ??create_connect_1: \ 0000005C 80929FE5 LDR R9,??create_connect_0+0x8 ;; NATICQ_HOST 2143 GetHost(host_counter, NATICQ_HOST, hostbuf); 2144 hostport = GetPort(host_counter, NATICQ_HOST); 2145 host_counter++; 2146 2147 sprintf(hostname, "Connect to %s:%d", hostbuf, hostport); //2058 - stavim hostname, izbavlyaemsya ot buf 2148 strcpy(hostbuf2, hostbuf); //vyvod host v get_online_time 2149 strcpy(logmsg,buf); 2150 SMART_REDRAW(); 2151 2152 ip=str2ip(hostbuf); 2153 if (ip!=0xFFFFFFFF) \ 00000060 ........ LDR R10,??DataTable67 ;; do_reconnect \ 00000064 D44185E5 STR R4,[R5, #+468] \ 00000068 7C8100EF SWI +33148 \ 0000006C 004080E5 STR R4,[R0, #+0] \ 00000070 0900A0E1 MOV R0,R9 \ 00000074 ........ BL GetHostsCount \ 00000078 DC1195E5 LDR R1,[R5, #+476] \ 0000007C 010040E2 SUB R0,R0,#+1 \ 00000080 010050E1 CMP R0,R1 \ 00000084 DC4185B5 STRLT R4,[R5, #+476] \ 00000088 DC0195E5 LDR R0,[R5, #+476] \ 0000008C 14208DE2 ADD R2,SP,#+20 \ 00000090 0910A0E1 MOV R1,R9 \ 00000094 ........ BL GetHost \ 00000098 DC0195E5 LDR R0,[R5, #+476] \ 0000009C 0910A0E1 MOV R1,R9 \ 000000A0 ........ BL GetPort \ 000000A4 0090A0E1 MOV R9,R0 \ 000000A8 DC0195E5 LDR R0,[R5, #+476] \ 000000AC 0930A0E1 MOV R3,R9 \ 000000B0 010080E2 ADD R0,R0,#+1 \ 000000B4 DC0185E5 STR R0,[R5, #+476] \ 000000B8 14208DE2 ADD R2,SP,#+20 \ 000000BC 181088E2 ADD R1,R8,#+24 \ 000000C0 3400A0E3 MOV R0,#+52 \ 000000C4 640D80E3 ORR R0,R0,#0x1900 \ 000000C8 050080E0 ADD R0,R0,R5 \ 000000CC 160000EF SWI +22 \ 000000D0 14108DE2 ADD R1,SP,#+20 \ 000000D4 B400A0E3 MOV R0,#+180 \ 000000D8 600D80E3 ORR R0,R0,#0x1800 \ 000000DC 050080E0 ADD R0,R0,R5 \ 000000E0 1A0000EF SWI +26 \ 000000E4 94108DE2 ADD R1,SP,#+148 \ 000000E8 0700A0E1 MOV R0,R7 \ 000000EC 1A0000EF SWI +26 \ 000000F0 ........ BL SMART_REDRAW \ 000000F4 14008DE2 ADD R0,SP,#+20 \ 000000F8 B70100EF SWI +439 \ 000000FC 04B0E0E1 MVN R11,R4 \ 00000100 0B0050E1 CMP R0,R11 \ 00000104 0500000A BEQ ??create_connect_3 2154 { 2155 sa.ip=ip; \ 00000108 08008DE5 STR R0,[SP, #+8] 2156 strcpy(logmsg,"\nConnect by IP!"); //strcat->strcpy \ 0000010C 2C1088E2 ADD R1,R8,#+44 \ 00000110 0700A0E1 MOV R0,R7 \ 00000114 1A0000EF SWI +26 2157 SMART_REDRAW(); \ 00000118 ........ BL SMART_REDRAW 2158 goto L_CONNECT; \ 0000011C 390000EA B ??create_connect_4 2159 } \ ??create_connect_3: \ 00000120 6D1F8FE2 ADR R1,??create_connect_0 ;; "\n" \ 00000124 0700A0E1 MOV R0,R7 2160 strcat(logmsg,"\n"); \ 00000128 170000EF SWI +23 2161 strcpy(logmsg,LG_GRSENDDNR); //strcat->strcpy \ 0000012C 3C1088E2 ADD R1,R8,#+60 \ 00000130 0700A0E1 MOV R0,R7 \ 00000134 1A0000EF SWI +26 2162 SMART_REDRAW(); \ 00000138 ........ BL SMART_REDRAW 2163 err=async_gethostbyname(hostbuf,&p_res,&DNR_ID); //03461351 3<70<19<81 \ 0000013C 752F85E2 ADD R2,R5,#+468 \ 00000140 0D10A0E1 MOV R1,SP \ 00000144 14008DE2 ADD R0,SP,#+20 \ 00000148 B60100EF SWI +438 \ 0000014C 0030B0E1 MOVS R3,R0 2164 if (err) \ 00000150 1600000A BEQ ??create_connect_5 2165 { 2166 if ((err==0xC9)||(err==0xD6)) \ 00000154 C90053E3 CMP R3,#+201 \ 00000158 D6005313 CMPNE R3,#+214 \ 0000015C 0600001A BNE ??create_connect_6 2167 { 2168 if (DNR_ID) \ 00000160 D40195E5 LDR R0,[R5, #+468] \ 00000164 000050E3 CMP R0,#+0 \ 00000168 1000000A BEQ ??create_connect_5 2169 { 2170 host_counter--; \ 0000016C DC0195E5 LDR R0,[R5, #+476] \ 00000170 010040E2 SUB R0,R0,#+1 \ 00000174 DC0185E5 STR R0,[R5, #+476] 2171 return; //Ждем готовности DNR \ 00000178 390000EA B ??create_connect_7 2172 } 2173 } 2174 else 2175 { 2176 snprintf(logmsg,255,LG_GRDNRERROR,err); \ ??create_connect_6: \ 0000017C 482088E2 ADD R2,R8,#+72 \ 00000180 FF10A0E3 MOV R1,#+255 \ 00000184 0700A0E1 MOV R0,R7 \ 00000188 1B0100EF SWI +283 2177 SMART_REDRAW(); \ 0000018C ........ BL SMART_REDRAW 2178 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ ??create_connect_8: \ 00000190 ........ LDR R0,??DataTable68 ;; RECONNECT_TIME \ 00000194 0A20A0E1 MOV R2,R10 \ 00000198 000090E5 LDR R0,[R0, #+0] \ 0000019C D830A0E3 MOV R3,#+216 \ 000001A0 930001E0 MUL R1,R3,R0 \ 000001A4 0600A0E1 MOV R0,R6 \ 000001A8 4D0000EF SWI +77 2179 return; \ 000001AC 2C0000EA B ??create_connect_7 2180 } 2181 } 2182 if (p_res) \ ??create_connect_5: \ 000001B0 00009DE5 LDR R0,[SP, #+0] \ 000001B4 000050E3 CMP R0,#+0 \ 000001B8 3D00000A BEQ ??create_connect_9 2183 { 2184 if (p_res[3]) \ 000001BC 0C0090E5 LDR R0,[R0, #+12] \ 000001C0 000050E3 CMP R0,#+0 \ 000001C4 4200000A BEQ ??create_connect_10 2185 { 2186 strcpy(logmsg,buf); \ 000001C8 94108DE2 ADD R1,SP,#+148 \ 000001CC 0700A0E1 MOV R0,R7 \ 000001D0 1A0000EF SWI +26 2187 strcat(logmsg,"\n"); \ 000001D4 401F8FE2 ADR R1,??create_connect_0 ;; "\n" \ 000001D8 0700A0E1 MOV R0,R7 \ 000001DC 170000EF SWI +23 2188 strcpy(logmsg,LG_GRDNROK); \ 000001E0 581088E2 ADD R1,R8,#+88 \ 000001E4 0700A0E1 MOV R0,R7 \ 000001E8 1A0000EF SWI +26 2189 SMART_REDRAW(); \ 000001EC ........ BL SMART_REDRAW 2190 DNR_TRIES=0; \ 000001F0 D84185E5 STR R4,[R5, #+472] 2191 sa.ip=p_res[3][0][0]; \ 000001F4 00109DE5 LDR R1,[SP, #+0] \ 000001F8 0C1091E5 LDR R1,[R1, #+12] \ 000001FC 001091E5 LDR R1,[R1, #+0] \ 00000200 001091E5 LDR R1,[R1, #+0] \ 00000204 08108DE5 STR R1,[SP, #+8] 2192 L_CONNECT: 2193 sock=socket(1,1,0); \ ??create_connect_4: \ 00000208 0020A0E3 MOV R2,#+0 \ 0000020C 0110A0E3 MOV R1,#+1 \ 00000210 0100A0E1 MOV R0,R1 \ 00000214 730100EF SWI +371 \ 00000218 900185E5 STR R0,[R5, #+400] 2194 if (sock!=-1) \ 0000021C 0B0050E1 CMP R0,R11 \ 00000220 1A00000A BEQ ??create_connect_11 2195 { 2196 sa.family=1; \ 00000224 0170A0E3 MOV R7,#+1 \ 00000228 B470CDE1 STRH R7,[SP, #+4] 2197 sa.port=htons(hostport); \ 0000022C 0908A0E1 MOV R0,R9, LSL #+16 \ 00000230 2008A0E1 MOV R0,R0, LSR #+16 \ 00000234 7A0100EF SWI +378 \ 00000238 B600CDE1 STRH R0,[SP, #+6] 2198 // sa.ip=htonl(IP_ADDR(82,207,89,182)); 2199 if (connect(sock,&sa,sizeof(sa))!=-1) \ 0000023C 900195E5 LDR R0,[R5, #+400] \ 00000240 1020A0E3 MOV R2,#+16 \ 00000244 04108DE2 ADD R1,SP,#+4 \ 00000248 740100EF SWI +372 \ 0000024C 0B0050E1 CMP R0,R11 \ 00000250 0500000A BEQ ??create_connect_12 2200 { 2201 connect_state=1; \ 00000254 8C7185E5 STR R7,[R5, #+396] 2202 TOTALRECEIVED=0; \ 00000258 944185E5 STR R4,[R5, #+404] 2203 TOTALSENDED=0; \ 0000025C 984185E5 STR R4,[R5, #+408] 2204 SMART_REDRAW(); \ ??create_connect_2: \ 00000260 ........ BL SMART_REDRAW \ ??create_connect_7: \ 00000264 45DF8DE2 ADD SP,SP,#+276 \ 00000268 F08FBDE8 POP {R4-R11,PC} 2205 } 2206 else 2207 { 2208 closesocket(sock); \ ??create_connect_12: \ 0000026C 900195E5 LDR R0,[R5, #+400] \ 00000270 760100EF SWI +374 2209 sock=-1; \ 00000274 90B185E5 STR R11,[R5, #+400] 2210 LockSched(); \ 00000278 460100EF SWI +326 2211 ShowMSG(1,(int)LG_MSGCANTCONN); \ 0000027C 701088E2 ADD R1,R8,#+112 \ 00000280 0100A0E3 MOV R0,#+1 \ 00000284 480100EF SWI +328 2212 UnlockSched(); \ 00000288 470100EF SWI +327 2213 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 0000028C BFFFFFEA B ??create_connect_8 2214 2215 } 2216 } 2217 else 2218 { 2219 LockSched(); \ ??create_connect_11: \ 00000290 460100EF SWI +326 2220 ShowMSG(1,(int)LG_MSGCANTCRSC); \ 00000294 8C1088E2 ADD R1,R8,#+140 \ 00000298 0100A0E3 MOV R0,#+1 \ 0000029C 480100EF SWI +328 2221 UnlockSched(); \ 000002A0 470100EF SWI +327 2222 //Не осилили создания сокета, закрываем GPRS-сессию 2223 GPRS_OnOff(0,1); \ 000002A4 0110A0E3 MOV R1,#+1 \ 000002A8 0000A0E3 MOV R0,#+0 \ 000002AC 8E0100EF SWI +398 \ 000002B0 EBFFFFEA B ??create_connect_7 2224 } 2225 } 2226 } 2227 else 2228 { 2229 DNR_TRIES--; \ ??create_connect_9: \ 000002B4 D80195E5 LDR R0,[R5, #+472] \ 000002B8 010040E2 SUB R0,R0,#+1 \ 000002BC D80185E5 STR R0,[R5, #+472] 2230 LockSched(); \ 000002C0 460100EF SWI +326 2231 ShowMSG(1,(int)LG_MSGHOSTNFND); \ 000002C4 B81088E2 ADD R1,R8,#+184 \ 000002C8 0100A0E3 MOV R0,#+1 \ 000002CC 480100EF SWI +328 2232 UnlockSched(); \ 000002D0 470100EF SWI +327 \ ??create_connect_10: \ 000002D4 45DF8DE2 ADD SP,SP,#+276 ;; stack cleaning \ 000002D8 F08FBDE8 POP {R4-R11,PC} ;; return \ ??create_connect_0: \ 000002DC 0A000000 DC8 "\n",+0,+0 \ 000002E0 ........ DC32 `?` \ 000002E4 ........ DC32 NATICQ_HOST 2233 } 2234 } 2235 2236 #ifdef SEND_TIMER 2237 GBSTMR send_tmr; 2238 #endif 2239 \ In segment CODE, align 4, keep-with-next 2240 void ClearSendQ(void) 2241 { \ ClearSendQ: \ 00000000 10402DE9 PUSH {R4,LR} 2242 mfree((void *)sendq_p); \ 00000004 ........ LDR R4,??DataTable70 ;; S_ICONS \ 00000008 A80194E5 LDR R0,[R4, #+424] \ 0000000C 150000EF SWI +21 2243 sendq_p=NULL; \ 00000010 0000A0E3 MOV R0,#+0 \ 00000014 A80184E5 STR R0,[R4, #+424] 2244 sendq_l=NULL; \ 00000018 A40184E5 STR R0,[R4, #+420] 2245 #ifdef SEND_TIMER 2246 GBS_DelTimer(&send_tmr); 2247 #endif 2248 } \ 0000001C 1080BDE8 POP {R4,PC} ;; return 2249 \ In segment CODE, align 4, keep-with-next 2250 void end_socket(void) 2251 { \ end_socket: \ 00000000 10402DE9 PUSH {R4,LR} 2252 if (sock>=0) \ 00000004 ........ LDR R4,??DataTable70 ;; S_ICONS \ 00000008 900194E5 LDR R0,[R4, #+400] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD48 POPMI {R4,PC} 2253 { 2254 shutdown(sock,2); \ 00000014 0210A0E3 MOV R1,#+2 \ 00000018 770100EF SWI +375 2255 closesocket(sock); \ 0000001C 900194E5 LDR R0,[R4, #+400] \ 00000020 760100EF SWI +374 2256 } 2257 #ifdef SEND_TIMER 2258 GBS_DelTimer(&send_tmr); 2259 #endif 2260 } \ 00000024 1080BDE8 POP {R4,PC} ;; return 2261 2262 #ifdef SEND_TIMER 2263 static void resend(void) 2264 { 2265 void SendAnswer(int dummy, TPKT *p); 2266 SUBPROC((void*)SendAnswer,0,0); 2267 } 2268 #endif 2269 \ In segment CODE, align 4, keep-with-next 2270 void SendAnswer(int dummy, TPKT *p) 2271 { \ SendAnswer: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 2272 int i; 2273 int j; 2274 if (connect_state<2) \ 00000004 ........ LDR R4,??DataTable82 ;; S_ICONS \ 00000008 0160A0E1 MOV R6,R1 \ 0000000C 8C0194E5 LDR R0,[R4, #+396] \ 00000010 020050E3 CMP R0,#+2 \ 00000014 020000AA BGE ??SendAnswer_0 2275 { 2276 mfree(p); \ 00000018 0600A0E1 MOV R0,R6 \ 0000001C 150000EF SWI +21 2277 return; \ 00000020 F083BDE8 POP {R4-R9,PC} 2278 } 2279 if (p) \ ??SendAnswer_0: \ 00000024 000056E3 CMP R6,#+0 \ 00000028 2600000A BEQ ??SendAnswer_1 2280 { 2281 j=sizeof(PKT)+p->pkt.data_len; //Размер пакета \ 0000002C B600D6E1 LDRH R0,[R6, #+6] \ 00000030 085080E2 ADD R5,R0,#+8 2282 TOTALSENDED+=j; \ 00000034 980194E5 LDR R0,[R4, #+408] \ 00000038 000085E0 ADD R0,R5,R0 \ 0000003C 980184E5 STR R0,[R4, #+408] 2283 ALLTOTALSENDED+=j; //by BoBa 10.07 \ 00000040 A00194E5 LDR R0,[R4, #+416] \ 00000044 000085E0 ADD R0,R5,R0 \ 00000048 A00184E5 STR R0,[R4, #+416] 2284 //Проверяем, не надо ли добавить в очередь 2285 if (sendq_p) \ 0000004C A80194E5 LDR R0,[R4, #+424] \ 00000050 000050E3 CMP R0,#+0 \ 00000054 0F00000A BEQ ??SendAnswer_2 2286 { 2287 //Есть очередь, добавляем в нее 2288 sendq_p=realloc((void *)sendq_p,sendq_l+j); \ 00000058 A41194E5 LDR R1,[R4, #+420] \ 0000005C 011085E0 ADD R1,R5,R1 \ 00000060 BA0000EF SWI +186 \ 00000064 A80184E5 STR R0,[R4, #+424] 2289 memcpy((char *)sendq_p+sendq_l,p,j); \ 00000068 A40194E5 LDR R0,[R4, #+420] \ 0000006C A83194E5 LDR R3,[R4, #+424] \ 00000070 0520A0E1 MOV R2,R5 \ 00000074 0610A0E1 MOV R1,R6 \ 00000078 030080E0 ADD R0,R0,R3 \ 0000007C 1E0100EF SWI +286 2290 mfree(p); \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 150000EF SWI +21 2291 sendq_l+=j; \ 00000088 A40194E5 LDR R0,[R4, #+420] \ 0000008C 000085E0 ADD R0,R5,R0 \ 00000090 A40184E5 STR R0,[R4, #+420] 2292 return; \ 00000094 F083BDE8 POP {R4-R9,PC} 2293 } 2294 sendq_p=p; \ ??SendAnswer_2: \ 00000098 A86184E5 STR R6,[R4, #+424] 2295 sendq_l=j; \ 0000009C A45184E5 STR R5,[R4, #+420] \ 000000A0 080000EA B ??SendAnswer_1 2296 } 2297 //Отправляем уже существующее в очереди 2298 while((i=sendq_l)!=0) 2299 { 2300 if (i>0x400) i=0x400; 2301 j=send(sock,(void *)sendq_p,i,0); 2302 snprintf(logmsg,255,"send res %d",j); 2303 SMART_REDRAW(); 2304 if (j<0) 2305 { 2306 j=*socklasterr(); 2307 if ((j==0xC9)||(j==0xD6)) 2308 { 2309 //Передали что хотели 2310 strcpy(logmsg,"Send delayed..."); 2311 return; //Видимо, надо ждать сообщения ENIP_BUFFER_FREE 2312 } 2313 else 2314 { 2315 //Ошибка 2316 LockSched(); 2317 ShowMSG(1,(int)"Send error!"); 2318 UnlockSched(); 2319 end_socket(); 2320 return; 2321 } 2322 } 2323 memcpy((void *)sendq_p,(char *)sendq_p+j,sendq_l-=j); //Удалили переданное \ ??SendAnswer_3: \ 000000A4 A40194E5 LDR R0,[R4, #+420] \ 000000A8 052040E0 SUB R2,R0,R5 \ 000000AC A42184E5 STR R2,[R4, #+420] \ 000000B0 A80194E5 LDR R0,[R4, #+424] \ 000000B4 001085E0 ADD R1,R5,R0 \ 000000B8 1E0100EF SWI +286 2324 if (j` \ 000000E0 0100A0E3 MOV R0,#+1 \ 000000E4 400E80E3 ORR R0,R0,#0x400 \ 000000E8 000057E1 CMP R7,R0 \ 000000EC 900194E5 LDR R0,[R4, #+400] \ 000000F0 407EA0A3 MOVGE R7,#+1024 \ 000000F4 0030A0E3 MOV R3,#+0 \ 000000F8 0720A0E1 MOV R2,R7 \ 000000FC 790100EF SWI +377 \ 00000100 0050A0E1 MOV R5,R0 \ 00000104 3400A0E3 MOV R0,#+52 \ 00000108 5C0D80E3 ORR R0,R0,#0x1700 \ 0000010C 048080E0 ADD R8,R0,R4 \ 00000110 0530A0E1 MOV R3,R5 \ 00000114 0920A0E1 MOV R2,R9 \ 00000118 FF10A0E3 MOV R1,#+255 \ 0000011C 0800A0E1 MOV R0,R8 \ 00000120 1B0100EF SWI +283 \ 00000124 ........ BL SMART_REDRAW \ 00000128 000055E3 CMP R5,#+0 \ 0000012C DCFFFF5A BPL ??SendAnswer_3 \ 00000130 7C8100EF SWI +33148 \ 00000134 005090E5 LDR R5,[R0, #+0] \ 00000138 C90055E3 CMP R5,#+201 \ 0000013C D6005513 CMPNE R5,#+214 \ 00000140 0300001A BNE ??SendAnswer_6 \ 00000144 0C1089E2 ADD R1,R9,#+12 \ 00000148 0800A0E1 MOV R0,R8 \ 0000014C 1A0000EF SWI +26 \ 00000150 F083BDE8 POP {R4-R9,PC} \ ??SendAnswer_6: \ 00000154 460100EF SWI +326 \ 00000158 1C1089E2 ADD R1,R9,#+28 \ 0000015C 0100A0E3 MOV R0,#+1 \ 00000160 480100EF SWI +328 \ 00000164 470100EF SWI +327 \ 00000168 ........ BL end_socket \ 0000016C F083BDE8 POP {R4-R9,PC} 2333 } 2334 mfree((void *)sendq_p); \ ??SendAnswer_4: \ 00000170 0100A0E1 MOV R0,R1 \ 00000174 150000EF SWI +21 2335 sendq_p=NULL; \ 00000178 A86184E5 STR R6,[R4, #+424] 2336 } \ 0000017C F083BDE8 POP {R4-R9,PC} ;; return \ ??SendAnswer_5: \ 00000180 ........ DC32 `?` 2337 2338 extern const char pingsnd[64]; 2339 \ In segment CODE, align 4, keep-with-next 2340 void send_login(int dummy, TPKT *p) 2341 { 2342 connect_state=2; 2343 char rev[16]; 2344 //Кто будет менять в этом месте идентификатор клиента, буду банить на уровне сервера!!! 2345 //А Вова будет банить на форуме! 2346 snprintf(rev,9,"Sie_%04d",__SVN_REVISION__); \ send_login: \ 00000000 88209FE5 LDR R2,??send_login_0 ;; `?` \ 00000004 F0402DE9 PUSH {R4-R7,LR} \ 00000008 ........ LDR R6,??DataTable82 ;; S_ICONS \ 0000000C 10D04DE2 SUB SP,SP,#+16 \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 0150A0E1 MOV R5,R1 \ 00000018 0200A0E3 MOV R0,#+2 \ 0000001C 8C0186E5 STR R0,[R6, #+396] \ 00000020 0A30A0E3 MOV R3,#+10 \ 00000024 803E83E3 ORR R3,R3,#0x800 \ 00000028 0910A0E3 MOV R1,#+9 \ 0000002C 0D00A0E1 MOV R0,SP \ 00000030 1B0100EF SWI +283 2347 2348 TPKT *p2=malloc(sizeof(PKT)+8); \ 00000034 1000A0E3 MOV R0,#+16 \ 00000038 140000EF SWI +20 \ 0000003C 0070A0E1 MOV R7,R0 2349 p2->pkt.uin=UIN; \ 00000040 ........ LDR R0,??DataTable74 ;; UIN 2350 p2->pkt.type=T_SETCLIENT_ID; 2351 p2->pkt.data_len=8; 2352 memcpy(p2->data,rev,8); \ 00000044 0820A0E3 MOV R2,#+8 \ 00000048 000090E5 LDR R0,[R0, #+0] \ 0000004C 0D10A0E1 MOV R1,SP \ 00000050 000087E5 STR R0,[R7, #+0] \ 00000054 2000A0E3 MOV R0,#+32 \ 00000058 B400C7E1 STRH R0,[R7, #+4] \ 0000005C 0800A0E3 MOV R0,#+8 \ 00000060 B600C7E1 STRH R0,[R7, #+6] \ 00000064 080087E2 ADD R0,R7,#+8 \ 00000068 1E0100EF SWI +286 2353 SendAnswer(0,p2); \ 0000006C 0710A0E1 MOV R1,R7 \ 00000070 0000A0E3 MOV R0,#+0 \ 00000074 ........ BL SendAnswer 2354 SendAnswer(dummy,p); \ 00000078 0510A0E1 MOV R1,R5 \ 0000007C 0400A0E1 MOV R0,R4 \ 00000080 ........ BL SendAnswer 2355 RXstate=-(int)sizeof(PKT); \ 00000084 0700E0E3 MVN R0,#+7 \ 00000088 880186E5 STR R0,[R6, #+392] 2356 } \ 0000008C FF80BDE8 POP {R0-R7,PC} ;; return \ ??send_login_0: \ 00000090 ........ DC32 `?` 2357 \ In segment CODE, align 4, keep-with-next 2358 void do_ping(void) 2359 { \ do_ping: \ 00000000 00402DE9 PUSH {LR} 2360 TPKT *pingp=malloc(sizeof(PKT)); \ 00000004 0800A0E3 MOV R0,#+8 \ 00000008 140000EF SWI +20 2361 pingp->pkt.uin=UIN; \ 0000000C ........ LDR R1,??DataTable74 ;; UIN \ 00000010 001091E5 LDR R1,[R1, #+0] \ 00000014 001080E5 STR R1,[R0, #+0] 2362 pingp->pkt.type=0; \ 00000018 0010A0E3 MOV R1,#+0 \ 0000001C B410C0E1 STRH R1,[R0, #+4] 2363 pingp->pkt.data_len=0; \ 00000020 B610C0E1 STRH R1,[R0, #+6] 2364 SendAnswer(0,pingp); \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 0040BDE8 POP {LR} ;; Pop \ 00000030 ........ B SendAnswer ;; tailcall 2365 } 2366 \ In segment CODE, align 4, keep-with-next 2367 void SendMSGACK(int i) 2368 { \ SendMSGACK: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 2369 TPKT *ackp=malloc(sizeof(PKT)); \ 00000008 0800A0E3 MOV R0,#+8 \ 0000000C 140000EF SWI +20 2370 ackp->pkt.uin=i; \ 00000010 004080E5 STR R4,[R0, #+0] 2371 ackp->pkt.type=T_MSGACK; \ 00000014 1710A0E3 MOV R1,#+23 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 2372 ackp->pkt.data_len=0; \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 2373 SendAnswer(0,ackp); \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 1040BDE8 POP {R4,LR} ;; Pop \ 00000030 ........ B SendAnswer ;; tailcall 2374 } 2375 \ In segment CODE, align 4, keep-with-next 2376 void RequestXText(unsigned int uin) 2377 { \ RequestXText: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 2378 TPKT *p=malloc(sizeof(PKT)); \ 00000008 0800A0E3 MOV R0,#+8 \ 0000000C 140000EF SWI +20 2379 p->pkt.uin=uin; \ 00000010 004080E5 STR R4,[R0, #+0] 2380 p->pkt.type=T_XTEXT_REQ; \ 00000014 1810A0E3 MOV R1,#+24 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 2381 p->pkt.data_len=0; \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 2382 SUBPROC((void *)SendAnswer,0,p); \ 00000024 0020A0E1 MOV R2,R0 \ 00000028 ........ LDR R0,??DataTable75 ;; SendAnswer \ 0000002C 710100EF SWI +369 2383 } \ 00000030 1080BDE8 POP {R4,PC} ;; return 2384 2385 extern int main2_count; 2386 extern const unsigned int ping_time_config; 2387 int ping_time; 2388 //#ifdef EVILFOX 2389 //#else 2390 extern const char ignor_list[256]; 2391 //#endif 2392 char I_UIN[9]; 2393 \ In segment CODE, align 4, keep-with-next 2394 void get_answer(void) 2395 { \ get_answer: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 2396 void *p; 2397 int i=RXstate; \ 00000004 ........ LDR R5,??DataTable82 ;; S_ICONS \ 00000008 1CD04DE2 SUB SP,SP,#+28 \ 0000000C 40DE4DE2 SUB SP,SP,#+1024 2398 int j; 2399 int n; 2400 char rb[1024]; 2401 char *rp=rb; 2402 if (connect_state<2) return; \ 00000010 8C0195E5 LDR R0,[R5, #+396] \ 00000014 888195E5 LDR R8,[R5, #+392] \ 00000018 1C108DE2 ADD R1,SP,#+28 \ 0000001C 00108DE5 STR R1,[SP, #+0] \ 00000020 020050E3 CMP R0,#+2 \ 00000024 4B0100BA BLT ??get_answer_1 \ 00000028 0A0078E3 CMN R8,#+10 \ 0000002C 4901000A BEQ ??get_answer_1 2403 if (i==EOP) return; 2404 j=recv(sock,rb,sizeof(rb),0); \ 00000030 900195E5 LDR R0,[R5, #+400] \ 00000034 0030A0E3 MOV R3,#+0 \ 00000038 402EA0E3 MOV R2,#+1024 \ 0000003C 780100EF SWI +376 \ 00000040 0060A0E1 MOV R6,R0 \ 00000044 0990A0E3 MOV R9,#+9 \ 00000048 429C89E3 ORR R9,R9,#0x4200 \ 0000004C 0E0000EA B ??get_answer_2 2405 while(j>0) 2406 { 2407 if (i<0) 2408 { 2409 //Принимаем заголовок 2410 n=-i; //Требуемое количество байт 2411 if (j=0) 2418 { 2419 //Принимаем тельце ;) 2420 n=RXbuf.pkt.data_len; //Всего в тельце 2421 if (n>16383) 2422 { 2423 //Слишком много 2424 strcpy(logmsg,LG_GRBADPACKET); 2425 end_socket(); 2426 RXstate=EOP; 2427 return; 2428 } 2429 n-=i; //Количество требуемых байт (общая длинна тельца-текущая позиция) 2430 if (n>0) 2431 { 2432 if (jhour*3600+pt->min*60+pt->sec; 2575 s1-=s2; 2576 if (s1<0) s1+=86400; 2577 snprintf(logmsg,255,"Ping %d-%d seconds!",s1,s1+1); 2578 sprintf(PINGO, "Ping: %dsec",s1); 2579 LockSched(); 2580 if(janis==1) 2581 { 2582 ShowMSG(1,(int)logmsg); 2583 Play(pingsnd); 2584 janis=0; 2585 } 2586 else 2587 { 2588 if(ping_time==0) 2589 { 2590 ping_time=ping_time_config; 2591 Play(pingsnd); 2592 } 2593 else 2594 ping_time--; 2595 } 2596 UnlockSched(); 2597 } 2598 break; 2599 case T_LASTPRIVACY: 2600 n=i+sizeof(PKT); \ ??get_answer_3: \ 00000050 0040A0E1 MOV R4,R0 2601 p=malloc(n); \ ??get_answer_4: \ 00000054 140000EF SWI +20 \ 00000058 00B0A0E1 MOV R11,R0 2602 memcpy(p,&RXbuf,n); \ 0000005C 0420A0E1 MOV R2,R4 \ ??get_answer_5: \ 00000060 0710A0E1 MOV R1,R7 \ 00000064 1E0100EF SWI +286 2603 GBS_SendMessage(MMI_CEPID,MSG_HELPER_TRANSLATOR,0,p,sock); \ 00000068 900195E5 LDR R0,[R5, #+400] \ 0000006C 0B30A0E1 MOV R3,R11 \ 00000070 01002DE9 PUSH {R0} \ 00000074 0020A0E3 MOV R2,#+0 \ 00000078 0810A0E1 MOV R1,R8 \ 0000007C 0900A0E1 MOV R0,R9 \ 00000080 000100EF SWI +256 \ ??get_answer_6: \ 00000084 04D08DE2 ADD SP,SP,#+4 ;; stack cleaning 2604 break; 2605 } 2606 i=-(int)sizeof(PKT); //А может еще есть данные \ ??get_answer_7: \ 00000088 0780E0E3 MVN R8,#+7 \ ??get_answer_2: \ 0000008C 010056E3 CMP R6,#+1 \ 00000090 2F0100BA BLT ??get_answer_8 \ 00000094 CC749FE5 LDR R7,??get_answer_9+0x4 ;; RXbuf \ 00000098 000058E3 CMP R8,#+0 \ 0000009C 0C00005A BPL ??get_answer_10 \ 000000A0 00109DE5 LDR R1,[SP, #+0] \ 000000A4 004068E2 RSB R4,R8,#+0 \ 000000A8 040056E1 CMP R6,R4 \ 000000AC 0640A0B1 MOVLT R4,R6 \ 000000B0 0420A0E1 MOV R2,R4 \ 000000B4 070088E0 ADD R0,R8,R7 \ 000000B8 080080E2 ADD R0,R0,#+8 \ 000000BC 1E0100EF SWI +286 \ 000000C0 00109DE5 LDR R1,[SP, #+0] \ 000000C4 088084E0 ADD R8,R4,R8 \ 000000C8 046046E0 SUB R6,R6,R4 \ 000000CC 011084E0 ADD R1,R4,R1 \ 000000D0 00108DE5 STR R1,[SP, #+0] \ ??get_answer_10: \ 000000D4 000058E3 CMP R8,#+0 \ 000000D8 EBFFFF4A BMI ??get_answer_2 \ 000000DC B640D7E1 LDRH R4,[R7, #+6] \ 000000E0 3400A0E3 MOV R0,#+52 \ 000000E4 5C0D80E3 ORR R0,R0,#0x1700 \ 000000E8 05A080E0 ADD R10,R0,R5 \ 000000EC 400C54E3 CMP R4,#+16384 \ 000000F0 080000BA BLT ??get_answer_11 \ 000000F4 70149FE5 LDR R1,??get_answer_9+0x8 ;; `?` + 268 \ 000000F8 0A00A0E1 MOV R0,R10 \ 000000FC 1A0000EF SWI +26 \ 00000100 ........ BL end_socket \ 00000104 0900E0E3 MVN R0,#+9 \ 00000108 880185E5 STR R0,[R5, #+392] \ 0000010C 1CD08DE2 ADD SP,SP,#+28 \ 00000110 40DE8DE2 ADD SP,SP,#+1024 \ 00000114 F08FBDE8 POP {R4-R11,PC} \ ??get_answer_11: \ 00000118 084044E0 SUB R4,R4,R8 \ 0000011C 010054E3 CMP R4,#+1 \ 00000120 0B0000BA BLT ??get_answer_12 \ 00000124 00109DE5 LDR R1,[SP, #+0] \ 00000128 040056E1 CMP R6,R4 \ 0000012C 0640A0B1 MOVLT R4,R6 \ 00000130 0420A0E1 MOV R2,R4 \ 00000134 070088E0 ADD R0,R8,R7 \ 00000138 080080E2 ADD R0,R0,#+8 \ 0000013C 1E0100EF SWI +286 \ 00000140 00109DE5 LDR R1,[SP, #+0] \ 00000144 088084E0 ADD R8,R4,R8 \ 00000148 046046E0 SUB R6,R6,R4 \ 0000014C 011084E0 ADD R1,R4,R1 \ 00000150 00108DE5 STR R1,[SP, #+0] \ ??get_answer_12: \ 00000154 B600D7E1 LDRH R0,[R7, #+6] \ 00000158 080050E1 CMP R0,R8 \ 0000015C CAFFFF1A BNE ??get_answer_2 \ 00000160 941195E5 LDR R1,[R5, #+404] \ 00000164 080088E2 ADD R0,R8,#+8 \ 00000168 011080E0 ADD R1,R0,R1 \ 0000016C 941185E5 STR R1,[R5, #+404] \ 00000170 9C1195E5 LDR R1,[R5, #+412] \ 00000174 0020A0E3 MOV R2,#+0 \ 00000178 011080E0 ADD R1,R0,R1 \ 0000017C 9C1185E5 STR R1,[R5, #+412] \ 00000180 071088E0 ADD R1,R8,R7 \ 00000184 0820C1E5 STRB R2,[R1, #+8] \ 00000188 B410D7E1 LDRH R1,[R7, #+4] \ 0000018C 094088E2 ADD R4,R8,#+9 \ 00000190 AE80A0E3 MOV R8,#+174 \ 00000194 DE8C88E3 ORR R8,R8,#0xDE00 \ 00000198 031041E2 SUB R1,R1,#+3 \ 0000019C 1C0051E3 CMP R1,#+28 \ 000001A0 B8FFFF8A BHI ??get_answer_7 \ 000001A4 022F8FE2 ADR R2,??get_answer_0 \ 000001A8 8110A0E1 MOV R1,R1, LSL #+1 \ 000001AC F12092E1 LDRSH R2,[R2, R1] \ 000001B0 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??get_answer_0: \ 000001B4 48000E00B4FF DC16 +72,+14,+65460,+65 \ 4100 \ 000001BC 2900B4FF2B00 DC16 +41,+65460,+43,+65460 \ B4FF \ 000001C4 B4FFB4FF9700 DC16 +65460,+65460,+151,+65460 \ B4FF \ 000001CC B4FF9D00A300 DC16 +65460,+157,+163,+65460 \ B4FF \ 000001D4 A80029002900 DC16 +168,+41,+41,+65460 \ B4FF \ 000001DC B4FFB4FF2900 DC16 +65460,+65460,+41,+65460 \ B4FF \ 000001E4 B4FFB4FFB4FF DC16 +65460,+65460,+65460,+65460 \ B4FF \ 000001EC A6FF0000 DC16 +65446,+0 \ ??get_answer_13: \ 000001F0 0400A0E1 MOV R0,R4 \ 000001F4 140000EF SWI +20 \ 000001F8 00B0A0E1 MOV R11,R0 \ 000001FC 0420A0E1 MOV R2,R4 \ 00000200 0710A0E1 MOV R1,R7 \ 00000204 1E0100EF SWI +286 \ 00000208 900195E5 LDR R0,[R5, #+400] \ 0000020C 0B30A0E1 MOV R3,R11 \ 00000210 01002DE9 PUSH {R0} \ 00000214 0020A0E3 MOV R2,#+0 \ 00000218 0810A0E1 MOV R1,R8 \ 0000021C 0900A0E1 MOV R0,R9 \ 00000220 000100EF SWI +256 \ 00000224 44039FE5 LDR R0,??get_answer_9+0xC ;; sndStartup \ 00000228 ........ BL Play \ 0000022C 083087E2 ADD R3,R7,#+8 \ 00000230 CB2F8FE2 ADR R2,??get_answer_9 ;; "%s" \ 00000234 FF10A0E3 MOV R1,#+255 \ 00000238 0A00A0E1 MOV R0,R10 \ 0000023C 1B0100EF SWI +283 \ 00000240 0300A0E3 MOV R0,#+3 \ 00000244 8C0185E5 STR R0,[R5, #+396] \ 00000248 DC0195E5 LDR R0,[R5, #+476] \ 0000024C 010040E2 SUB R0,R0,#+1 \ 00000250 DC0185E5 STR R0,[R5, #+476] \ 00000254 ........ BL SMART_REDRAW \ 00000258 89FFFFEA B ??get_answer_6 \ ??get_answer_14: \ 0000025C 0400A0E1 MOV R0,R4 \ 00000260 7BFFFFEA B ??get_answer_4 \ ??get_answer_15: \ 00000264 0040A0E1 MOV R4,R0 \ 00000268 140000EF SWI +20 \ 0000026C 00B0A0E1 MOV R11,R0 \ 00000270 0420A0E1 MOV R2,R4 \ 00000274 0710A0E1 MOV R1,R7 \ 00000278 1E0100EF SWI +286 \ 0000027C B800D7E1 LDRH R0,[R7, #+8] \ 00000280 EC229FE5 LDR R2,??get_answer_9+0x10 ;; `?` + 280 \ 00000284 FF10A0E3 MOV R1,#+255 \ 00000288 01002DE9 PUSH {R0} \ 0000028C 003097E5 LDR R3,[R7, #+0] \ 00000290 0A00A0E1 MOV R0,R10 \ 00000294 1B0100EF SWI +283 \ 00000298 900195E5 LDR R0,[R5, #+400] \ 0000029C 0B30A0E1 MOV R3,R11 \ 000002A0 01002DE9 PUSH {R0} \ 000002A4 0020A0E3 MOV R2,#+0 \ 000002A8 0810A0E1 MOV R1,R8 \ 000002AC 0900A0E1 MOV R0,R9 \ 000002B0 000100EF SWI +256 \ 000002B4 08D08DE2 ADD SP,SP,#+8 \ 000002B8 72FFFFEA B ??get_answer_7 \ ??get_answer_16: \ 000002BC B4229FE5 LDR R2,??get_answer_9+0x14 ;; `?` + 292 \ 000002C0 083087E2 ADD R3,R7,#+8 \ 000002C4 FF10A0E3 MOV R1,#+255 \ 000002C8 0A00A0E1 MOV R0,R10 \ 000002CC 1B0100EF SWI +283 \ 000002D0 ........ BL SMART_REDRAW \ 000002D4 6BFFFFEA B ??get_answer_7 \ ??get_answer_17: \ 000002D8 0400A0E1 MOV R0,R4 \ 000002DC 140000EF SWI +20 \ 000002E0 00B0A0E1 MOV R11,R0 \ 000002E4 0420A0E1 MOV R2,R4 \ 000002E8 0710A0E1 MOV R1,R7 \ 000002EC 1E0100EF SWI +286 \ 000002F0 08008BE2 ADD R0,R11,#+8 \ 000002F4 030000EA B ??get_answer_18 \ ??get_answer_19: \ 000002F8 030051E3 CMP R1,#+3 \ 000002FC 2010A0B3 MOVLT R1,#+32 \ 00000300 0010C0B5 STRBLT R1,[R0, #+0] \ 00000304 010080E2 ADD R0,R0,#+1 \ ??get_answer_18: \ 00000308 0010D0E5 LDRB R1,[R0, #+0] \ 0000030C 000051E3 CMP R1,#+0 \ 00000310 F8FFFF1A BNE ??get_answer_19 \ 00000314 002097E5 LDR R2,[R7, #+0] \ 00000318 5C129FE5 LDR R1,??get_answer_9+0x18 ;; `?` + 300 \ 0000031C B400A0E3 MOV R0,#+180 \ 00000320 640D80E3 ORR R0,R0,#0x1900 \ 00000324 054080E0 ADD R4,R0,R5 \ 00000328 0400A0E1 MOV R0,R4 \ 0000032C 160000EF SWI +22 \ 00000330 ........ LDR R0,??DataTable77 ;; ignor_list \ 00000334 0410A0E1 MOV R1,R4 \ 00000338 180100EF SWI +280 \ 0000033C 000050E3 CMP R0,#+0 \ 00000340 50FFFF1A BNE ??get_answer_7 \ 00000344 34229FE5 LDR R2,??get_answer_9+0x1C ;; `?` + 308 \ 00000348 34429FE5 LDR R4,??get_answer_9+0x20 ;; sndMsg \ 0000034C 080087E2 ADD R0,R7,#+8 \ 00000350 01002DE9 PUSH {R0} \ 00000354 003097E5 LDR R3,[R7, #+0] \ 00000358 FF10A0E3 MOV R1,#+255 \ 0000035C 0A00A0E1 MOV R0,R10 \ 00000360 1B0100EF SWI +283 \ 00000364 940195E5 LDR R0,[R5, #+404] \ 00000368 ........ BL SendMSGACK \ 0000036C 900195E5 LDR R0,[R5, #+400] \ 00000370 0B30A0E1 MOV R3,R11 \ 00000374 01002DE9 PUSH {R0} \ 00000378 0020A0E3 MOV R2,#+0 \ 0000037C 0810A0E1 MOV R1,R8 \ 00000380 0900A0E1 MOV R0,R9 \ 00000384 000100EF SWI +256 \ 00000388 ........ BL SMART_REDRAW \ 0000038C ........ LDR R0,??DataTable78 ;; extended_sounds \ 00000390 000090E5 LDR R0,[R0, #+0] \ 00000394 08D08DE2 ADD SP,SP,#+8 \ 00000398 000050E3 CMP R0,#+0 \ 0000039C 0200001A BNE ??get_answer_20 \ 000003A0 0400A0E1 MOV R0,R4 \ ??get_answer_21: \ 000003A4 ........ BL Play \ 000003A8 36FFFFEA B ??get_answer_7 \ ??get_answer_20: \ 000003AC 000097E5 LDR R0,[R7, #+0] \ 000003B0 D0219FE5 LDR R2,??get_answer_9+0x24 ;; sndMsg2 \ 000003B4 F40085E5 STR R0,[R5, #+244] \ 000003B8 0010A0E3 MOV R1,#+0 \ 000003BC 08108DE5 STR R1,[SP, #+8] \ 000003C0 F43095E5 LDR R3,[R5, #+244] \ 000003C4 C0119FE5 LDR R1,??get_answer_9+0x28 ;; `?` + 320 \ 000003C8 D77FA0E3 MOV R7,#+860 \ 000003CC 050087E0 ADD R0,R7,R5 \ 000003D0 160000EF SWI +22 \ 000003D4 08308DE2 ADD R3,SP,#+8 \ 000003D8 8020A0E3 MOV R2,#+128 \ 000003DC 801CA0E3 MOV R1,#+32768 \ 000003E0 050087E0 ADD R0,R7,R5 \ 000003E4 0A0000EF SWI +10 \ 000003E8 04008DE5 STR R0,[SP, #+4] \ 000003EC 04009DE5 LDR R0,[SP, #+4] \ 000003F0 010070E3 CMN R0,#+1 \ 000003F4 0400000A BEQ ??get_answer_22 \ 000003F8 04009DE5 LDR R0,[SP, #+4] \ 000003FC 08108DE2 ADD R1,SP,#+8 \ 00000400 0D0000EF SWI +13 \ 00000404 050087E0 ADD R0,R7,R5 \ 00000408 E5FFFFEA B ??get_answer_21 \ ??get_answer_22: \ 0000040C 0400A0E1 MOV R0,R4 \ 00000410 E3FFFFEA B ??get_answer_21 \ ??get_answer_23: \ 00000414 460100EF SWI +326 \ 00000418 081087E2 ADD R1,R7,#+8 \ 0000041C 0100A0E3 MOV R0,#+1 \ 00000420 480100EF SWI +328 \ ??get_answer_24: \ 00000424 470100EF SWI +327 \ 00000428 16FFFFEA B ??get_answer_7 \ ??get_answer_25: \ 0000042C 0700A0E1 MOV R0,R7 \ 00000430 ........ BL FindContactLOGQByAck \ 00000434 000050E3 CMP R0,#+0 \ 00000438 0100000A BEQ ??get_answer_26 \ 0000043C 4C019FE5 LDR R0,??get_answer_9+0x2C ;; sndMsgSent \ 00000440 ........ BL Play \ ??get_answer_26: \ 00000444 0A00A0E3 MOV R0,#+10 \ 00000448 140000EF SWI +20 \ 0000044C 00B0A0E1 MOV R11,R0 \ 00000450 0A20A0E3 MOV R2,#+10 \ 00000454 01FFFFEA B ??get_answer_5 \ ??get_answer_27: \ 00000458 0C108DE2 ADD R1,SP,#+12 \ 0000045C 14008DE2 ADD R0,SP,#+20 \ 00000460 B40000EF SWI +180 \ 00000464 0C00DDE5 LDRB R0,[SP, #+12] \ 00000468 0D20DDE5 LDRB R2,[SP, #+13] \ 0000046C E11EA0E3 MOV R1,#+3600 \ 00000470 3C30A0E3 MOV R3,#+60 \ 00000474 930202E0 MUL R2,R3,R2 \ 00000478 912020E0 MLA R0,R1,R0,R2 \ 0000047C 0E10DDE5 LDRB R1,[SP, #+14] \ 00000480 E12EA0E3 MOV R2,#+3600 \ 00000484 000081E0 ADD R0,R1,R0 \ 00000488 0810D7E5 LDRB R1,[R7, #+8] \ 0000048C 920101E0 MUL R1,R2,R1 \ 00000490 FC209FE5 LDR R2,??get_answer_9+0x30 ;; `?` + 332 \ 00000494 010040E0 SUB R0,R0,R1 \ 00000498 0910D7E5 LDRB R1,[R7, #+9] \ 0000049C 930101E0 MUL R1,R3,R1 \ 000004A0 010040E0 SUB R0,R0,R1 \ 000004A4 0A10D7E5 LDRB R1,[R7, #+10] \ 000004A8 E8709FE5 LDR R7,??get_answer_9+0x34 ;; janis \ 000004AC 014050E0 SUBS R4,R0,R1 \ 000004B0 500BA043 MOVMI R0,#+81920 \ 000004B4 460D8043 ORRMI R0,R0,#0x1180 \ 000004B8 04408040 ADDMI R4,R0,R4 \ 000004BC 010084E2 ADD R0,R4,#+1 \ 000004C0 01002DE9 PUSH {R0} \ 000004C4 0430A0E1 MOV R3,R4 \ 000004C8 FF10A0E3 MOV R1,#+255 \ 000004CC 0A00A0E1 MOV R0,R10 \ 000004D0 1B0100EF SWI +283 \ 000004D4 C0109FE5 LDR R1,??get_answer_9+0x38 ;; `?` + 352 \ 000004D8 0420A0E1 MOV R2,R4 \ 000004DC BC409FE5 LDR R4,??get_answer_9+0x3C ;; pingsnd \ 000004E0 FC00A0E3 MOV R0,#+252 \ 000004E4 4C0D80E3 ORR R0,R0,#0x1300 \ 000004E8 050080E0 ADD R0,R0,R5 \ 000004EC 160000EF SWI +22 \ 000004F0 460100EF SWI +326 \ 000004F4 000097E5 LDR R0,[R7, #+0] \ 000004F8 04D08DE2 ADD SP,SP,#+4 \ 000004FC 010050E3 CMP R0,#+1 \ 00000500 0700001A BNE ??get_answer_28 \ 00000504 0A10A0E1 MOV R1,R10 \ 00000508 0100A0E3 MOV R0,#+1 \ 0000050C 480100EF SWI +328 \ 00000510 0400A0E1 MOV R0,R4 \ 00000514 ........ BL Play \ 00000518 0000A0E3 MOV R0,#+0 \ 0000051C 000087E5 STR R0,[R7, #+0] \ 00000520 BFFFFFEA B ??get_answer_24 \ ??get_answer_28: \ 00000524 E00195E5 LDR R0,[R5, #+480] \ 00000528 000050E3 CMP R0,#+0 \ 0000052C 0500001A BNE ??get_answer_29 \ 00000530 6C009FE5 LDR R0,??get_answer_9+0x40 ;; ping_time_config \ 00000534 000090E5 LDR R0,[R0, #+0] \ 00000538 E00185E5 STR R0,[R5, #+480] \ 0000053C 0400A0E1 MOV R0,R4 \ 00000540 ........ BL Play \ 00000544 B6FFFFEA B ??get_answer_24 \ ??get_answer_29: \ 00000548 010040E2 SUB R0,R0,#+1 \ 0000054C E00185E5 STR R0,[R5, #+480] \ 00000550 B3FFFFEA B ??get_answer_24 2607 } 2608 } 2609 } 2610 RXstate=i; \ ??get_answer_8: \ 00000554 888185E5 STR R8,[R5, #+392] 2611 // GBS_StartTimerProc(&tmr_dorecv,3000,dorecv); 2612 // SMART_REDRAW(); 2613 } \ ??get_answer_1: \ 00000558 1CD08DE2 ADD SP,SP,#+28 \ 0000055C 40DE8DE2 ADD SP,SP,#+1024 \ 00000560 F08FBDE8 POP {R4-R11,PC} ;; return \ ??get_answer_9: \ 00000564 25730000 DC8 "%s",+0 \ 00000568 ........ DC32 RXbuf \ 0000056C ........ DC32 `?` + 268 \ 00000570 ........ DC32 sndStartup \ 00000574 ........ DC32 `?` + 280 \ 00000578 ........ DC32 `?` + 292 \ 0000057C ........ DC32 `?` + 300 \ 00000580 ........ DC32 `?` + 308 \ 00000584 ........ DC32 sndMsg \ 00000588 ........ DC32 sndMsg2 \ 0000058C ........ DC32 `?` + 320 \ 00000590 ........ DC32 sndMsgSent \ 00000594 ........ DC32 `?` + 332 \ 00000598 ........ DC32 janis \ 0000059C ........ DC32 `?` + 352 \ 000005A0 ........ DC32 pingsnd \ 000005A4 ........ DC32 ping_time_config 2614 2615 2616 extern int main_count; 2617 2618 //=====================add to main info==================== 2619 2620 2621 char a_txt[45]; 2622 char s_txt[45]; 2623 char d_txt[45]; 2624 char f_txt[45]; 2625 char g_txt[45]; 2626 //char de[64]; 2627 //char du[38]; 2628 extern const unsigned int msg_d_x; 2629 extern const unsigned int msg_d_y; 2630 extern const unsigned int main_lenght; 2631 extern const int use_cutter; 2632 2633 \ In segment CODE, align 4, keep-with-next 2634 void AddToMain(const char *nameu,char *si) 2635 { \ AddToMain: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0180A0E1 MOV R8,R1 2636 char *de=malloc(64); \ 00000010 4000A0E3 MOV R0,#+64 \ 00000014 140000EF SWI +20 \ 00000018 0050A0E1 MOV R5,R0 2637 int text_l; 2638 int iz; 2639 int name_l; 2640 name_l=0; 2641 text_l=0; 2642 name_l=strlen(nameu); \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 1B0000EF SWI +27 2643 // char *du=malloc(64);a_txt 2644 iz=0; 2645 #ifdef ELKA 2646 text_l=main_lenght-name_l; \ 00000024 F4119FE5 LDR R1,??AddToMain_0 ;; main_lenght \ 00000028 0070A0E3 MOV R7,#+0 \ 0000002C 001091E5 LDR R1,[R1, #+0] 2647 #else 2648 text_l=main_lenght-name_l; 2649 #endif 2650 2651 if(strlen(si)>text_l) \ 00000030 0060A0E3 MOV R6,#+0 \ 00000034 009041E0 SUB R9,R1,R0 \ 00000038 0800A0E1 MOV R0,R8 \ 0000003C 1B0000EF SWI +27 \ 00000040 000059E1 CMP R9,R0 \ 00000044 0800003A BCC ??AddToMain_1 2652 { 2653 /* 2654 char *du=malloc(text_l); 2655 strncpy(du,si,text_l); 2656 sprintf(de,"%s%s",du,"..."); 2657 mfree(du); 2658 } 2659 */ 2660 while(text_l!=0) 2661 { 2662 de[iz]=si[iz]; 2663 iz++; 2664 text_l--; 2665 } 2666 if(use_cutter) 2667 { 2668 de[iz]='.'; 2669 iz++; 2670 de[iz]='.'; 2671 iz++; 2672 de[iz]='.'; 2673 iz++; 2674 } 2675 de[iz]='\0'; 2676 } 2677 else 2678 strcpy(de, si); \ 00000048 0810A0E1 MOV R1,R8 \ 0000004C 0500A0E1 MOV R0,R5 \ 00000050 1A0000EF SWI +26 2679 iz=0; \ ??AddToMain_2: \ 00000054 0070A0E3 MOV R7,#+0 \ 00000058 1A0000EA B ??AddToMain_3 \ ??AddToMain_4: \ 0000005C 0810D7E7 LDRB R1,[R7, +R8] \ 00000060 019049E2 SUB R9,R9,#+1 \ 00000064 0510C7E7 STRB R1,[R7, +R5] \ 00000068 0070A0E1 MOV R7,R0 \ ??AddToMain_1: \ 0000006C 010087E2 ADD R0,R7,#+1 \ 00000070 000059E3 CMP R9,#+0 \ 00000074 F8FFFF1A BNE ??AddToMain_4 \ 00000078 A4119FE5 LDR R1,??AddToMain_0+0x4 ;; use_cutter \ 0000007C 001091E5 LDR R1,[R1, #+0] \ 00000080 000051E3 CMP R1,#+0 \ 00000084 0500000A BEQ ??AddToMain_5 \ 00000088 2E10A0E3 MOV R1,#+46 \ 0000008C 0510C7E7 STRB R1,[R7, +R5] \ 00000090 0510C0E7 STRB R1,[R0, +R5] \ 00000094 010080E2 ADD R0,R0,#+1 \ 00000098 0510C0E7 STRB R1,[R0, +R5] \ 0000009C 017080E2 ADD R7,R0,#+1 \ ??AddToMain_5: \ 000000A0 0560C7E7 STRB R6,[R7, +R5] \ 000000A4 EAFFFFEA B ??AddToMain_2 2680 while(strlen(de)!=iz) 2681 { 2682 // if(d[i]==0x2A) d[i]=0x20; 2683 // if(d[i]==0x27) d[i]=0x20; 2684 // if(d[i]==0x22) d[i]=0x20; 2685 // if(d[i]==0x26) d[i]=0x20; 2686 // if(d[i]==0x3D) d[i]=0x20; 2687 // if(d[i]==0x3C) d[i]=0x20; 2688 // if(d[i]==0x3E) d[i]=0x20; 2689 // if(d[i]==0x7B) d[i]=0x20; 2690 // if(d[i]==0x7D) d[i]=0x20; 2691 // if(d[i]==0x5B) d[i]=0x20; 2692 // if(d[i]==0x5D) d[i]=0x20; 2693 // if(d[i]==0x23) d[i]=0x20; 2694 // if(d[i]==0x2F) d[i]=0x20; 2695 // if(d[i]==0x5C) d[i]=0x20; 2696 // if(d[i]==0x7E) d[i]=0x20; 2697 // if(d[i]==0x5E) d[i]=0x20; 2698 // if(d[i]==0xAC) d[i]=0x20; 2699 // if(d[i]==0xA3) d[i]=0x20; 2700 // if(d[i]==0x24) d[i]=0x20; 2701 // if(d[i]==0xA5) d[i]=0x20; 2702 if(de[iz]==0x0D) de[iz]=0x20; \ ??AddToMain_6: \ 000000A8 0510D7E7 LDRB R1,[R7, +R5] \ 000000AC 2000A0E3 MOV R0,#+32 \ 000000B0 0D0051E3 CMP R1,#+13 \ 000000B4 0500C707 STRBEQ R0,[R7, +R5] 2703 if(de[iz]==0x0A) de[iz]=0x20; \ 000000B8 0510D7E7 LDRB R1,[R7, +R5] \ 000000BC 0A0051E3 CMP R1,#+10 \ 000000C0 0500C707 STRBEQ R0,[R7, +R5] 2704 iz++; \ 000000C4 017087E2 ADD R7,R7,#+1 2705 } \ ??AddToMain_3: \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 1B0000EF SWI +27 \ 000000D0 070050E1 CMP R0,R7 \ 000000D4 F3FFFF1A BNE ??AddToMain_6 2706 de[iz]='\0'; 2707 if(main_count==0) sprintf(a_txt, "%s: %s", nameu,de); \ 000000D8 ........ LDR R8,??DataTable79 ;; main_count \ 000000DC 0560C7E7 STRB R6,[R7, +R5] \ 000000E0 ........ LDR R6,??DataTable82 ;; S_ICONS \ 000000E4 3C719FE5 LDR R7,??AddToMain_0+0x8 ;; `?` \ 000000E8 671D86E2 ADD R1,R6,#+6592 \ 000000EC 04108DE5 STR R1,[SP, #+4] \ 000000F0 000098E5 LDR R0,[R8, #+0] \ 000000F4 000050E3 CMP R0,#+0 \ 000000F8 0400001A BNE ??AddToMain_7 \ 000000FC 04009DE5 LDR R0,[SP, #+4] \ 00000100 0530A0E1 MOV R3,R5 \ 00000104 0420A0E1 MOV R2,R4 \ 00000108 0710A0E1 MOV R1,R7 \ 0000010C 160000EF SWI +22 2708 if(main_count==1) sprintf(s_txt, "%s: %s", nameu,de); \ ??AddToMain_7: \ 00000110 F010A0E3 MOV R1,#+240 \ 00000114 641D81E3 ORR R1,R1,#0x1900 \ 00000118 061081E0 ADD R1,R1,R6 \ 0000011C 00108DE5 STR R1,[SP, #+0] \ 00000120 000098E5 LDR R0,[R8, #+0] \ 00000124 010050E3 CMP R0,#+1 \ 00000128 0400001A BNE ??AddToMain_8 \ 0000012C 00009DE5 LDR R0,[SP, #+0] \ 00000130 0530A0E1 MOV R3,R5 \ 00000134 0420A0E1 MOV R2,R4 \ 00000138 0710A0E1 MOV R1,R7 \ 0000013C 160000EF SWI +22 2709 if(main_count==2) sprintf(d_txt, "%s: %s", nameu,de); \ ??AddToMain_8: \ 00000140 2000A0E3 MOV R0,#+32 \ 00000144 680D80E3 ORR R0,R0,#0x1A00 \ 00000148 069080E0 ADD R9,R0,R6 \ 0000014C 000098E5 LDR R0,[R8, #+0] \ 00000150 020050E3 CMP R0,#+2 \ 00000154 0400001A BNE ??AddToMain_9 \ 00000158 0530A0E1 MOV R3,R5 \ 0000015C 0420A0E1 MOV R2,R4 \ 00000160 0710A0E1 MOV R1,R7 \ 00000164 0900A0E1 MOV R0,R9 \ 00000168 160000EF SWI +22 2710 if(main_count==3) sprintf(f_txt, "%s: %s", nameu,de); \ ??AddToMain_9: \ 0000016C 5000A0E3 MOV R0,#+80 \ 00000170 680D80E3 ORR R0,R0,#0x1A00 \ 00000174 06A080E0 ADD R10,R0,R6 \ 00000178 000098E5 LDR R0,[R8, #+0] \ 0000017C 030050E3 CMP R0,#+3 \ 00000180 0400001A BNE ??AddToMain_10 \ 00000184 0530A0E1 MOV R3,R5 \ 00000188 0420A0E1 MOV R2,R4 \ 0000018C 0710A0E1 MOV R1,R7 \ 00000190 0A00A0E1 MOV R0,R10 \ 00000194 160000EF SWI +22 2711 if(main_count==4) sprintf(g_txt, "%s: %s", nameu,de); \ ??AddToMain_10: \ 00000198 000098E5 LDR R0,[R8, #+0] \ 0000019C 6ABD86E2 ADD R11,R6,#+6784 \ 000001A0 040050E3 CMP R0,#+4 \ 000001A4 0400001A BNE ??AddToMain_11 \ 000001A8 0530A0E1 MOV R3,R5 \ 000001AC 0420A0E1 MOV R2,R4 \ 000001B0 0710A0E1 MOV R1,R7 \ 000001B4 0B00A0E1 MOV R0,R11 \ 000001B8 160000EF SWI +22 2712 if(main_count>4) \ ??AddToMain_11: \ 000001BC 000098E5 LDR R0,[R8, #+0] \ 000001C0 050050E3 CMP R0,#+5 \ 000001C4 100000BA BLT ??AddToMain_12 2713 { 2714 strcpy(a_txt, s_txt); \ 000001C8 00109DE5 LDR R1,[SP, #+0] \ 000001CC 04009DE5 LDR R0,[SP, #+4] \ 000001D0 1A0000EF SWI +26 2715 strcpy(s_txt, d_txt); \ 000001D4 00009DE5 LDR R0,[SP, #+0] \ 000001D8 0910A0E1 MOV R1,R9 \ 000001DC 1A0000EF SWI +26 2716 strcpy(d_txt, f_txt); \ 000001E0 0A10A0E1 MOV R1,R10 \ 000001E4 0900A0E1 MOV R0,R9 \ 000001E8 1A0000EF SWI +26 2717 strcpy(f_txt, g_txt); \ 000001EC 0B10A0E1 MOV R1,R11 \ 000001F0 0A00A0E1 MOV R0,R10 \ 000001F4 1A0000EF SWI +26 2718 sprintf(g_txt, "%s: %s", nameu,de); \ 000001F8 0530A0E1 MOV R3,R5 \ 000001FC 0420A0E1 MOV R2,R4 \ 00000200 0710A0E1 MOV R1,R7 \ 00000204 0B00A0E1 MOV R0,R11 \ 00000208 160000EF SWI +22 2719 } 2720 mfree(de); \ ??AddToMain_12: \ 0000020C 0500A0E1 MOV R0,R5 \ 00000210 150000EF SWI +21 2721 main_d=1; \ 00000214 0100A0E3 MOV R0,#+1 \ 00000218 E00086E5 STR R0,[R6, #+224] 2722 } \ 0000021C F38FBDE8 POP {R0,R1,R4-R11,PC} ;; return \ ??AddToMain_0: \ 00000220 ........ DC32 main_lenght \ 00000224 ........ DC32 use_cutter \ 00000228 ........ DC32 `?` 2723 //======================add to main info================ 2724 int NEW_MSG; 2725 \ In segment CODE, align 4, keep-with-next 2726 void AddStringToLog(CLIST *t, int code, char *s, const char *name, unsigned int IDforACK) 2727 { \ AddStringToLog: \ 00000000 F0432DE9 PUSH {R4-R9,LR} \ 00000004 90D04DE2 SUB SP,SP,#+144 \ 00000008 AC809DE5 LDR R8,[SP, #+172] \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 0150A0E1 MOV R5,R1 \ 00000014 0270A0E1 MOV R7,R2 \ 00000018 0360A0E1 MOV R6,R3 2728 char hs[128], *lastX; 2729 TTime tt; 2730 TDate d; 2731 GetDateTime(&d,&tt); \ 0000001C 0D10A0E1 MOV R1,SP \ 00000020 08008DE2 ADD R0,SP,#+8 \ 00000024 B40000EF SWI +180 2732 int i; 2733 2734 // if(code == 3 && !LOG_XTXT) return; //Нl нуcно nоodrн?nь cennnrnуn 2735 if (code==3 && NOT_LOG_SAME_XTXT) \ 00000028 030055E3 CMP R5,#+3 \ 0000002C 1600001A BNE ??AddStringToLog_0 \ 00000030 00029FE5 LDR R0,??AddStringToLog_1 ;; NOT_LOG_SAME_XTXT \ 00000034 000090E5 LDR R0,[R0, #+0] \ 00000038 000050E3 CMP R0,#+0 \ 0000003C 1200000A BEQ ??AddStringToLog_0 2736 { 2737 if(!t->isactive && HISTORY_BUFFER) GetHistory(t, 64<` \ 00000090 0600A0E1 MOV R0,R6 \ 00000094 01002DE9 PUSH {R0} \ 00000098 1000DDE5 LDRB R0,[SP, #+16] \ 0000009C 0920A0E1 MOV R2,R9 \ 000000A0 7F10A0E3 MOV R1,#+127 \ 000000A4 01002DE9 PUSH {R0} \ 000000A8 1500DDE5 LDRB R0,[SP, #+21] \ 000000AC 01002DE9 PUSH {R0} \ 000000B0 0D00DDE5 LDRB R0,[SP, #+13] \ 000000B4 01002DE9 PUSH {R0} \ 000000B8 1030DDE5 LDRB R3,[SP, #+16] \ 000000BC 20008DE2 ADD R0,SP,#+32 \ 000000C0 1B0100EF SWI +283 2744 if(code != 3 || LOG_XTXT) //Нуcно nоodrн?nь cennnrnуn \ 000000C4 030055E3 CMP R5,#+3 \ 000000C8 10D08DE2 ADD SP,SP,#+16 \ 000000CC 0300001A BNE ??AddStringToLog_4 \ 000000D0 68019FE5 LDR R0,??AddStringToLog_1+0x8 ;; LOG_XTXT \ 000000D4 000090E5 LDR R0,[R0, #+0] \ 000000D8 000050E3 CMP R0,#+0 \ 000000DC 0400000A BEQ ??AddStringToLog_5 2745 Add2History(t, hs, s, code); // Зrdcnь ocnnоdc \ ??AddStringToLog_4: \ 000000E0 0530A0E1 MOV R3,R5 \ 000000E4 0720A0E1 MOV R2,R7 \ 000000E8 10108DE2 ADD R1,SP,#+16 \ 000000EC 0400A0E1 MOV R0,R4 \ 000000F0 ........ _BLF Add2History,??Add2History??rA 2746 // ShowMSG(1,(int)t); 2747 // ShowMSG(1,(int)s); // Запись хистори 2748 LOGQ *p=NewLOGQ(s); \ ??AddStringToLog_5: \ 000000F4 0700A0E1 MOV R0,R7 \ 000000F8 ........ BL NewLOGQ \ 000000FC 0070A0E1 MOV R7,R0 2749 snprintf(p->hdr,79,"%02d:%02d %02d-%02d %s:",tt.hour,tt.min,d.day,d.month,name); \ 00000100 40002DE9 PUSH {R6} \ 00000104 1000DDE5 LDRB R0,[SP, #+16] \ 00000108 1C2089E2 ADD R2,R9,#+28 \ 0000010C 4F10A0E3 MOV R1,#+79 \ 00000110 01002DE9 PUSH {R0} \ 00000114 1500DDE5 LDRB R0,[SP, #+21] \ 00000118 01002DE9 PUSH {R0} \ 0000011C 0D00DDE5 LDRB R0,[SP, #+13] \ 00000120 01002DE9 PUSH {R0} \ 00000124 1030DDE5 LDRB R3,[SP, #+16] \ 00000128 100087E2 ADD R0,R7,#+16 \ 0000012C 1B0100EF SWI +283 2750 p->type=code; \ 00000130 0C5087E5 STR R5,[R7, #+12] 2751 p->ID=IDforACK; //0-32767 \ 00000134 088087E5 STR R8,[R7, #+8] 2752 i=AddLOGQ(&t->log,p); \ 00000138 0710A0E1 MOV R1,R7 \ 0000013C 740084E2 ADD R0,R4,#+116 \ 00000140 ........ BL AddLOGQ \ 00000144 0060A0E1 MOV R6,R0 \ 00000148 150056E3 CMP R6,#+21 \ 0000014C 10D08DE2 ADD SP,SP,#+16 \ 00000150 090000BA BLT ??AddStringToLog_6 2753 while(i>MAXLOGMSG) 2754 { 2755 if (t->log==t->last_log) t->last_log=t->last_log->next; \ ??AddStringToLog_7: \ 00000154 7C0094E5 LDR R0,[R4, #+124] \ 00000158 741094E5 LDR R1,[R4, #+116] 2756 RemoveLOGQ(&t->log,t->log); 2757 i--; \ 0000015C 016046E2 SUB R6,R6,#+1 \ 00000160 000051E1 CMP R1,R0 \ 00000164 00009005 LDREQ R0,[R0, #+0] \ 00000168 7C008405 STREQ R0,[R4, #+124] \ 0000016C 740084E2 ADD R0,R4,#+116 \ 00000170 ........ BL RemoveLOGQ 2758 } \ 00000174 150056E3 CMP R6,#+21 \ 00000178 F5FFFFAA BGE ??AddStringToLog_7 2759 t->msg_count=i; \ ??AddStringToLog_6: \ 0000017C 846084E5 STR R6,[R4, #+132] 2760 if (!t->last_log) t->last_log=p; \ 00000180 7C0094E5 LDR R0,[R4, #+124] 2761 if (code==3) \ 00000184 ........ LDR R6,??DataTable82 ;; S_ICONS \ 00000188 000050E3 CMP R0,#+0 \ 0000018C 7C708405 STREQ R7,[R4, #+124] \ 00000190 030055E3 CMP R5,#+3 \ 00000194 0D00001A BNE ??AddStringToLog_8 2762 { 2763 if (edchat_id) \ 00000198 C00196E5 LDR R0,[R6, #+448] \ 0000019C 000050E3 CMP R0,#+0 \ 000001A0 2000000A BEQ ??AddStringToLog_9 2764 { 2765 void *data=FindGUIbyId(edchat_id,NULL); \ 000001A4 C00196E5 LDR R0,[R6, #+448] \ 000001A8 0010A0E3 MOV R1,#+0 \ 000001AC 090200EF SWI +521 2766 if (data) \ 000001B0 000050E3 CMP R0,#+0 \ 000001B4 1B00000A BEQ ??AddStringToLog_9 2767 { 2768 EDCHAT_STRUCT *ed_struct; 2769 ed_struct=EDIT_GetUserPointer(data); \ 000001B8 DF0100EF SWI +479 2770 if (ed_struct) \ 000001BC 000050E3 CMP R0,#+0 \ 000001C0 1800000A BEQ ??AddStringToLog_9 2771 { 2772 if (ed_struct->ed_contact==t) \ 000001C4 000090E5 LDR R0,[R0, #+0] \ 000001C8 040050E1 CMP R0,R4 \ 000001CC 1500001A BNE ??AddStringToLog_9 2773 { 2774 goto L_INC; 2775 } 2776 } 2777 } 2778 } 2779 goto L_NOINC; 2780 } 2781 L_INC: 2782 if (!t->isunread) total_unread++; \ ??AddStringToLog_8: \ 000001D0 640094E5 LDR R0,[R4, #+100] \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 B0019605 LDREQ R0,[R6, #+432] \ 000001DC 01008002 ADDEQ R0,R0,#+1 \ 000001E0 B0018605 STREQ R0,[R6, #+432] 2783 if(NEW_MSG==1) \ 000001E4 E40196E5 LDR R0,[R6, #+484] \ 000001E8 010050E3 CMP R0,#+1 \ 000001EC 0700001A BNE ??AddStringToLog_10 2784 { 2785 t->unread_msg++; \ 000001F0 680094E5 LDR R0,[R4, #+104] \ 000001F4 010080E2 ADD R0,R0,#+1 \ 000001F8 680084E5 STR R0,[R4, #+104] 2786 total_unread2++; \ 000001FC 140196E5 LDR R0,[R6, #+276] \ 00000200 010080E2 ADD R0,R0,#+1 \ 00000204 140186E5 STR R0,[R6, #+276] 2787 NEW_MSG=0; \ 00000208 0000A0E3 MOV R0,#+0 \ 0000020C E40186E5 STR R0,[R6, #+484] 2788 } 2789 t->isunread=1; \ ??AddStringToLog_10: \ 00000210 0100A0E3 MOV R0,#+1 \ 00000214 640084E5 STR R0,[R4, #+100] 2790 if(saver_on) reftes(); \ 00000218 F80096E5 LDR R0,[R6, #+248] \ 0000021C 000050E3 CMP R0,#+0 \ 00000220 0000000A BEQ ??AddStringToLog_9 \ 00000224 ........ _BLF reftes,??reftes??rA 2791 L_NOINC: 2792 ChangeContactPos(t); \ ??AddStringToLog_9: \ 00000228 0400A0E1 MOV R0,R4 \ 0000022C ........ _BLF ChangeContactPos,??ChangeContactPos??rA 2793 } \ ??AddStringToLog_3: \ 00000230 90D08DE2 ADD SP,SP,#+144 ;; stack cleaning \ 00000234 F083BDE8 POP {R4-R9,PC} ;; return \ ??AddStringToLog_1: \ 00000238 ........ DC32 NOT_LOG_SAME_XTXT \ 0000023C ........ DC32 `?` \ 00000240 ........ DC32 LOG_XTXT 2794 2795 void ParseAnswer(WSHDR *ws, const char *s); 2796 2797 int time_to_stop_t9; 2798 \ In segment CODE, align 4, keep-with-next 2799 void ParseXStatusText(WSHDR *ws, const char *s, int color) 2800 { \ ParseXStatusText: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 \ 0000000C 0260A0E1 MOV R6,R2 2801 int c; 2802 int flag=0; \ 00000010 0070A0E3 MOV R7,#+0 2803 CutWSTR(ws,0); \ 00000014 0010A0E3 MOV R1,#+0 \ 00000018 260100EF SWI +294 2804 if (strlen(s)==1) return; \ 0000001C 0500A0E1 MOV R0,R5 \ 00000020 1B0000EF SWI +27 \ 00000024 010050E3 CMP R0,#+1 \ 00000028 F080BD08 POPEQ {R4-R7,PC} 2805 wsAppendChar(ws,0xE008); \ 0000002C 0810A0E3 MOV R1,#+8 \ 00000030 E01C81E3 ORR R1,R1,#0xE000 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 1C0000EF SWI +28 2806 wsAppendChar(ws,color); \ 0000003C 0610A0E1 MOV R1,R6 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 1C0000EF SWI +28 2807 wsAppendChar(ws,0xE013); \ 00000048 1310A0E3 MOV R1,#+19 \ 0000004C E01C81E3 ORR R1,R1,#0xE000 \ 00000050 0A0000EA B ??ParseXStatusText_0 2808 while((c=*s++)) 2809 { 2810 if (c==13) \ ??ParseXStatusText_1: \ 00000054 0D0050E3 CMP R0,#+13 2811 { 2812 if (!flag) \ 00000058 00005703 CMPEQ R7,#+0 \ 0000005C 0500001A BNE ??ParseXStatusText_2 2813 { 2814 flag=1; \ 00000060 0170A0E3 MOV R7,#+1 2815 wsAppendChar(ws,0xE012); \ 00000064 1210A0E3 MOV R1,#+18 \ 00000068 E01C81E3 ORR R1,R1,#0xE000 \ 0000006C 0400A0E1 MOV R0,R4 \ 00000070 1C0000EF SWI +28 2816 c=' '; \ 00000074 2000A0E3 MOV R0,#+32 2817 } 2818 } 2819 wsAppendChar(ws,char8to16(c)); \ ??ParseXStatusText_2: \ 00000078 ........ _BLF char8to16,??char8to16??rA \ 0000007C 0010A0E1 MOV R1,R0 \ ??ParseXStatusText_0: \ 00000080 0400A0E1 MOV R0,R4 \ 00000084 1C0000EF SWI +28 2820 } \ 00000088 ........ LDRB R0,[R5], #+1 \ 0000008C 000050E3 CMP R0,#+0 \ 00000090 EFFFFF1A BNE ??ParseXStatusText_1 \ 00000094 F080BDE8 POP {R4-R7,PC} ;; return 2821 } 2822 //Добавление итемов в чат при получении нового сообщения \ In segment CODE, align 4, keep-with-next 2823 void AddMsgToChat(void *data) 2824 { \ AddMsgToChat: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 40D04DE2 SUB SP,SP,#+64 2825 LOGQ *p; 2826 EDITCONTROL ec; 2827 EDITC_OPTIONS ec_options; 2828 EDCHAT_STRUCT *ed_struct; 2829 int j; 2830 int color, font, type; 2831 int zc; 2832 if (!data) return; \ 00000008 000050E3 CMP R0,#+0 \ 0000000C C900000A BEQ ??AddMsgToChat_0 2833 ed_struct=EDIT_GetUserPointer(data); \ 00000010 DF0100EF SWI +479 \ 00000014 0060B0E1 MOVS R6,R0 2834 if (!ed_struct) return; \ 00000018 C600000A BEQ ??AddMsgToChat_0 2835 if (!ed_struct->ed_contact->isunread) return; \ 0000001C 000096E5 LDR R0,[R6, #+0] \ 00000020 641090E5 LDR R1,[R0, #+100] \ 00000024 000051E3 CMP R1,#+0 \ 00000028 C200000A BEQ ??AddMsgToChat_0 2836 2837 2838 p=ed_struct->ed_contact->last_log; \ 0000002C 7C7090E5 LDR R7,[R0, #+124] 2839 if (p) \ 00000030 ........ LDR R8,??DataTable114 ;; S_ICONS \ 00000034 000057E3 CMP R7,#+0 \ 00000038 A800000A BEQ ??AddMsgToChat_1 2840 { 2841 while(p) 2842 { 2843 font = ED_H_FONT_SIZE; 2844 if ((zc=p->acked&3)) \ ??AddMsgToChat_2: \ 0000003C ........ LDR R2,??DataTable84 ;; ED_X_FONT_SIZE \ 00000040 ........ LDR R0,??DataTable106 ;; ED_H_FONT_SIZE \ 00000044 002092E5 LDR R2,[R2, #+0] \ 00000048 ........ LDR R1,??DataTable86 ;; X_COLOR \ 0000004C 00A090E5 LDR R10,[R0, #+0] \ 00000050 040097E5 LDR R0,[R7, #+4] \ 00000054 00208DE5 STR R2,[SP, #+0] \ 00000058 004091E5 LDR R4,[R1, #+0] \ 0000005C ........ LDR R1,??DataTable87 ;; O_ED_X_FONT_SIZE \ 00000060 030010E2 ANDS R0,R0,#0x3 \ 00000064 009091E5 LDR R9,[R1, #+0] \ 00000068 ........ LDR R1,??DataTable88 ;; O_X_COLOR \ 0000006C 005091E5 LDR R5,[R1, #+0] \ 00000070 ........ LDR R1,??DataTable103 ;; I_COLOR \ 00000074 00B091E5 LDR R11,[R1, #+0] \ 00000078 0300000A BEQ ??AddMsgToChat_3 2845 { 2846 if (zc==1) \ 0000007C 010050E3 CMP R0,#+1 \ 00000080 1E00001A BNE ??AddMsgToChat_4 2847 color=ACK_COLOR; //Зеленый \ 00000084 ........ LDR R0,??DataTable99 ;; ACK_COLOR \ 00000088 1B0000EA B ??AddMsgToChat_5 2848 else 2849 color=I_COLOR; 2850 //#endif 2851 } 2852 else 2853 { 2854 if (p->ID==0xFFFFFFFF) \ ??AddMsgToChat_3: \ 0000008C 080097E5 LDR R0,[R7, #+8] \ 00000090 010070E3 CMN R0,#+1 \ 00000094 1700001A BNE ??AddMsgToChat_6 2855 { 2856 type = p->type&0x0F; \ 00000098 0C0097E5 LDR R0,[R7, #+12] \ 0000009C 0F1000E2 AND R1,R0,#0xF 2857 if(p->type&0x10) \ 000000A0 100010E3 TST R0,#0x10 \ 000000A4 0B00000A BEQ ??AddMsgToChat_7 2858 { 2859 color = (type==1)?O_I_COLOR:((type==3)?O_X_COLOR:O_TO_COLOR); \ 000000A8 010051E3 CMP R1,#+1 \ 000000AC ........ LDREQ R0,??DataTable101 ;; O_I_COLOR \ 000000B0 0400000A BEQ ??AddMsgToChat_8 \ 000000B4 030051E3 CMP R1,#+3 \ 000000B8 05B0A001 MOVEQ R11,R5 \ 000000BC 09A0A001 MOVEQ R10,R9 \ 000000C0 0E00000A BEQ ??AddMsgToChat_4 \ 000000C4 ........ LDR R0,??DataTable100 ;; O_TO_COLOR \ ??AddMsgToChat_8: \ 000000C8 00B090E5 LDR R11,[R0, #+0] \ 000000CC ........ LDR R0,??DataTable105 ;; O_ED_H_FONT_SIZE \ 000000D0 00A090E5 LDR R10,[R0, #+0] \ 000000D4 090000EA B ??AddMsgToChat_4 2860 font = (type==3)?O_ED_X_FONT_SIZE:O_ED_H_FONT_SIZE; 2861 } 2862 else 2863 { 2864 color = (type==1)?I_COLOR:((type==3)?X_COLOR:TO_COLOR); \ ??AddMsgToChat_7: \ 000000D8 010051E3 CMP R1,#+1 \ 000000DC 0700000A BEQ ??AddMsgToChat_4 \ 000000E0 030051E3 CMP R1,#+3 \ 000000E4 04B0A001 MOVEQ R11,R4 \ 000000E8 02A0A001 MOVEQ R10,R2 \ 000000EC 0300000A BEQ ??AddMsgToChat_4 \ 000000F0 ........ LDR R0,??DataTable102 ;; TO_COLOR \ 000000F4 000000EA B ??AddMsgToChat_5 2865 font = (type==3)?ED_X_FONT_SIZE:ED_H_FONT_SIZE; 2866 } 2867 } 2868 else 2869 color=UNACK_COLOR; //????? \ ??AddMsgToChat_6: \ 000000F8 ........ LDR R0,??DataTable104 ;; UNACK_COLOR \ ??AddMsgToChat_5: \ 000000FC 00B090E5 LDR R11,[R0, #+0] 2870 } 2871 PrepareEditControl(&ec); \ ??AddMsgToChat_4: \ 00000100 14008DE2 ADD R0,SP,#+20 \ 00000104 640100EF SWI +356 2872 if ((p->type&0x0F)!=3) \ 00000108 0C0097E5 LDR R0,[R7, #+12] \ 0000010C 0F0000E2 AND R0,R0,#0xF \ 00000110 030050E3 CMP R0,#+3 \ 00000114 0800000A BEQ ??AddMsgToChat_9 2873 { 2874 ascii2ws(ews,p->hdr); \ 00000118 2C0198E5 LDR R0,[R8, #+300] \ 0000011C 101087E2 ADD R1,R7,#+16 \ 00000120 ........ _BLF ascii2ws,??ascii2ws??rA 2875 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 00000124 2C3198E5 LDR R3,[R8, #+300] \ 00000128 4020A0E3 MOV R2,#+64 \ 0000012C 000093E5 LDR R0,[R3, #+0] \ 00000130 B000D0E1 LDRH R0,[R0, #+0] \ 00000134 01002DE9 PUSH {R0} \ 00000138 030000EA B ??AddMsgToChat_10 2876 } 2877 else 2878 ConstructEditControl(&ec,ECT_HEADER,ECF_DELSTR,ews,0); \ ??AddMsgToChat_9: \ 0000013C 0000A0E3 MOV R0,#+0 \ 00000140 01002DE9 PUSH {R0} \ 00000144 2C3198E5 LDR R3,[R8, #+300] \ 00000148 2020A0E3 MOV R2,#+32 \ ??AddMsgToChat_10: \ 0000014C 0110A0E3 MOV R1,#+1 \ 00000150 18008DE2 ADD R0,SP,#+24 \ 00000154 650100EF SWI +357 \ 00000158 04D08DE2 ADD SP,SP,#+4 2879 PrepareEditCOptions(&ec_options); \ 0000015C 04008DE2 ADD R0,SP,#+4 \ 00000160 C80100EF SWI +456 2880 SetPenColorToEditCOptions(&ec_options,color); \ 00000164 0B10A0E1 MOV R1,R11 \ 00000168 04008DE2 ADD R0,SP,#+4 \ 0000016C CC0100EF SWI +460 2881 SetFontToEditCOptions(&ec_options,font); \ 00000170 0A10A0E1 MOV R1,R10 \ 00000174 04008DE2 ADD R0,SP,#+4 \ 00000178 CA0100EF SWI +458 2882 CopyOptionsToEditControl(&ec,&ec_options); \ 0000017C 04108DE2 ADD R1,SP,#+4 \ 00000180 14008DE2 ADD R0,SP,#+20 \ 00000184 CE0100EF SWI +462 2883 //AddEditControlToEditQend(eq,&ec,ma); 2884 EDIT_InsertEditControl(data,ed_struct->ed_answer-1,&ec); \ 00000188 080096E5 LDR R0,[R6, #+8] \ 0000018C 14208DE2 ADD R2,SP,#+20 \ 00000190 011040E2 SUB R1,R0,#+1 \ 00000194 40009DE5 LDR R0,[SP, #+64] \ 00000198 D20100EF SWI +466 2885 ed_struct->ed_answer++; \ 0000019C 080096E5 LDR R0,[R6, #+8] \ 000001A0 010080E2 ADD R0,R0,#+1 \ 000001A4 080086E5 STR R0,[R6, #+8] 2886 if ((p->type&0x0F)!=3) \ 000001A8 0C0097E5 LDR R0,[R7, #+12] \ 000001AC 0F1000E2 AND R1,R0,#0xF \ 000001B0 030051E3 CMP R1,#+3 \ 000001B4 0300000A BEQ ??AddMsgToChat_11 2887 { 2888 ParseAnswer(ews,p->text); \ 000001B8 2C0198E5 LDR R0,[R8, #+300] \ 000001BC 601087E2 ADD R1,R7,#+96 \ 000001C0 ........ BL ParseAnswer \ 000001C4 050000EA B ??AddMsgToChat_12 2889 } 2890 else 2891 { 2892 ParseXStatusText(ews, p->text, (p->type&0x10)?O_X_COLOR:X_COLOR); \ ??AddMsgToChat_11: \ 000001C8 100010E3 TST R0,#0x10 \ 000001CC 2C0198E5 LDR R0,[R8, #+300] \ 000001D0 0520A011 MOVNE R2,R5 \ 000001D4 0420A001 MOVEQ R2,R4 \ 000001D8 601087E2 ADD R1,R7,#+96 \ 000001DC ........ BL ParseXStatusText 2893 } 2894 PrepareEditControl(&ec); \ ??AddMsgToChat_12: \ 000001E0 14008DE2 ADD R0,SP,#+20 \ 000001E4 640100EF SWI +356 2895 ConstructEditControl(&ec, 2896 ECT_NORMAL_TEXT, 2897 ews->wsbody[0] ? ECF_APPEND_EOL|ECF_DISABLE_T9 : ECF_DELSTR, 2898 ews,ews->wsbody[0]); \ 000001E8 2C3198E5 LDR R3,[R8, #+300] \ 000001EC 000093E5 LDR R0,[R3, #+0] \ 000001F0 B010D0E1 LDRH R1,[R0, #+0] \ 000001F4 000051E3 CMP R1,#+0 \ 000001F8 0100A0E1 MOV R0,R1 \ 000001FC 01002DE9 PUSH {R0} \ 00000200 812DA013 MOVNE R2,#+8256 \ 00000204 2020A003 MOVEQ R2,#+32 \ 00000208 0310A0E3 MOV R1,#+3 \ 0000020C 18008DE2 ADD R0,SP,#+24 \ 00000210 650100EF SWI +357 2899 PrepareEditCOptions(&ec_options); \ 00000214 08008DE2 ADD R0,SP,#+8 \ 00000218 C80100EF SWI +456 2900 //#ifdef M75 2901 if ((p->type&0x0F)!=3) \ 0000021C 0C0097E5 LDR R0,[R7, #+12] \ 00000220 04D08DE2 ADD SP,SP,#+4 \ 00000224 0F1000E2 AND R1,R0,#0xF \ 00000228 030051E3 CMP R1,#+3 \ 0000022C 0400000A BEQ ??AddMsgToChat_13 2902 { 2903 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); \ 00000230 100010E3 TST R0,#0x10 \ 00000234 ........ LDRNE R0,??DataTable96 ;; O_ED_FONT_SIZE \ 00000238 ........ LDREQ R0,??DataTable97 ;; ED_FONT_SIZE \ 0000023C 001090E5 LDR R1,[R0, #+0] \ 00000240 080000EA B ??AddMsgToChat_14 2904 } 2905 else 2906 { 2907 SetPenColorToEditCOptions(&ec_options,(p->type&0x10)?O_X_COLOR:X_COLOR); \ ??AddMsgToChat_13: \ 00000244 100010E3 TST R0,#0x10 \ 00000248 0510A011 MOVNE R1,R5 \ 0000024C 0410A001 MOVEQ R1,R4 \ 00000250 04008DE2 ADD R0,SP,#+4 \ 00000254 CC0100EF SWI +460 2908 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_X_FONT_SIZE:ED_X_FONT_SIZE); \ 00000258 0C0097E5 LDR R0,[R7, #+12] \ 0000025C 100010E3 TST R0,#0x10 \ 00000260 00109D05 LDREQ R1,[SP, #+0] \ 00000264 0910A011 MOVNE R1,R9 \ ??AddMsgToChat_14: \ 00000268 04008DE2 ADD R0,SP,#+4 \ 0000026C CA0100EF SWI +458 2909 } 2910 //#else 2911 // SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); 2912 //#endif 2913 CopyOptionsToEditControl(&ec,&ec_options); \ 00000270 04108DE2 ADD R1,SP,#+4 \ 00000274 14008DE2 ADD R0,SP,#+20 \ 00000278 CE0100EF SWI +462 2914 EDIT_InsertEditControl(data,ed_struct->ed_answer-1,&ec); \ 0000027C 080096E5 LDR R0,[R6, #+8] \ 00000280 14208DE2 ADD R2,SP,#+20 \ 00000284 011040E2 SUB R1,R0,#+1 \ 00000288 40009DE5 LDR R0,[SP, #+64] \ 0000028C D20100EF SWI +466 2915 ed_struct->ed_answer++; \ 00000290 080096E5 LDR R0,[R6, #+8] \ 00000294 010080E2 ADD R0,R0,#+1 \ 00000298 080086E5 STR R0,[R6, #+8] 2916 p=p->next; \ 0000029C 007097E5 LDR R7,[R7, #+0] 2917 } \ 000002A0 000057E3 CMP R7,#+0 \ 000002A4 64FFFF1A BNE ??AddMsgToChat_2 2918 j=((ed_struct->ed_contact->msg_count+1)*2); //Ожидаемый ed_answer \ 000002A8 001096E5 LDR R1,[R6, #+0] \ 000002AC 841091E5 LDR R1,[R1, #+132] \ 000002B0 011081E2 ADD R1,R1,#+1 \ 000002B4 8140A0E1 LSL R4,R1,#+1 \ 000002B8 000054E1 CMP R4,R0 \ 000002BC 070000AA BGE ??AddMsgToChat_1 2919 while(jed_answer) 2920 { 2921 EDIT_RemoveEditControl(ed_struct->ed_chatgui,1); \ ??AddMsgToChat_15: \ 000002C0 040096E5 LDR R0,[R6, #+4] \ 000002C4 0110A0E3 MOV R1,#+1 \ 000002C8 D10100EF SWI +465 2922 ed_struct->ed_answer--; \ 000002CC 080096E5 LDR R0,[R6, #+8] \ 000002D0 010040E2 SUB R0,R0,#+1 \ 000002D4 080086E5 STR R0,[R6, #+8] 2923 } \ 000002D8 000054E1 CMP R4,R0 \ 000002DC F7FFFFBA BLT ??AddMsgToChat_15 2924 } 2925 ed_struct->ed_contact->last_log=NULL; \ ??AddMsgToChat_1: \ 000002E0 000096E5 LDR R0,[R6, #+0] \ 000002E4 0040A0E3 MOV R4,#+0 \ 000002E8 7C4080E5 STR R4,[R0, #+124] 2926 if (IsGuiOnTop(edchat_id)) \ 000002EC C00198E5 LDR R0,[R8, #+448] \ 000002F0 350100EF SWI +309 \ 000002F4 000050E3 CMP R0,#+0 \ 000002F8 0300000A BEQ ??AddMsgToChat_16 2927 { 2928 total_unread--; \ 000002FC B00198E5 LDR R0,[R8, #+432] \ 00000300 010040E2 SUB R0,R0,#+1 \ 00000304 B00188E5 STR R0,[R8, #+432] \ 00000308 020000EA B ??AddMsgToChat_17 2929 } 2930 else 2931 ed_struct->requested_decrement_total_unread++; \ ??AddMsgToChat_16: \ 0000030C 0C0096E5 LDR R0,[R6, #+12] \ 00000310 010080E2 ADD R0,R0,#+1 \ 00000314 0C0086E5 STR R0,[R6, #+12] 2932 ed_struct->ed_contact->isunread=0; \ ??AddMsgToChat_17: \ 00000318 000096E5 LDR R0,[R6, #+0] \ 0000031C 644080E5 STR R4,[R0, #+100] 2933 total_unread2=total_unread2-ed_struct->ed_contact->unread_msg; \ 00000320 141198E5 LDR R1,[R8, #+276] \ 00000324 682090E5 LDR R2,[R0, #+104] \ 00000328 021041E0 SUB R1,R1,R2 \ 0000032C 141188E5 STR R1,[R8, #+276] 2934 ed_struct->ed_contact->unread_msg=0; \ 00000330 684080E5 STR R4,[R0, #+104] 2935 ChangeContactPos(ed_struct->ed_contact); \ 00000334 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 2936 // EDIT_SetFocus(data,ed_struct->ed_answer); 2937 } \ ??AddMsgToChat_0: \ 00000338 44D08DE2 ADD SP,SP,#+68 ;; stack cleaning \ 0000033C F08FBDE8 POP {R4-R11,PC} ;; return 2938 2939 //Рисуем подтверждения непосредственно \ In segment CODE, align 4, keep-with-next 2940 void DrawAck(void *data) 2941 { \ DrawAck: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 3CD04DE2 SUB SP,SP,#+60 \ 00000008 0040B0E1 MOVS R4,R0 2942 LOGQ *p; 2943 EDITCONTROL ec; 2944 EDITC_OPTIONS ec_options; 2945 EDCHAT_STRUCT *ed_struct; 2946 int j; 2947 int color; 2948 int dorefresh=0; \ 0000000C 0060A0E3 MOV R6,#+0 2949 if (!data) return; \ 00000010 4C00000A BEQ ??DrawAck_0 2950 ed_struct=EDIT_GetUserPointer(data); \ 00000014 DF0100EF SWI +479 2951 if (!ed_struct) return; \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 4900000A BEQ ??DrawAck_0 2952 p=ed_struct->ed_contact->log; \ 00000020 001090E5 LDR R1,[R0, #+0] 2953 j=ed_struct->ed_answer; 2954 j-=(ed_struct->ed_contact->msg_count*2)+1; //Номер собственно хедера верхнего итема \ 00000024 080090E5 LDR R0,[R0, #+8] \ 00000028 745091E5 LDR R5,[R1, #+116] \ 0000002C 841091E5 LDR R1,[R1, #+132] \ 00000030 000055E3 CMP R5,#+0 \ 00000034 810040E0 SUB R0,R0,R1, LSL #+1 \ 00000038 017040E2 SUB R7,R0,#+1 \ 0000003C 3A00000A BEQ ??DrawAck_1 2955 while(p) 2956 { 2957 if (j>=1) //Пока возможно лишнее \ ??DrawAck_2: \ 00000040 010057E3 CMP R7,#+1 \ 00000044 340000BA BLT ??DrawAck_3 2958 { 2959 if (!(p->acked&4)) \ 00000048 040095E5 LDR R0,[R5, #+4] \ 0000004C 040010E3 TST R0,#0x4 \ 00000050 3100001A BNE ??DrawAck_3 2960 { 2961 ExtractEditControl(data,j,&ec); \ 00000054 10208DE2 ADD R2,SP,#+16 \ 00000058 0710A0E1 MOV R1,R7 \ 0000005C 0400A0E1 MOV R0,R4 \ 00000060 690100EF SWI +361 2962 PrepareEditCOptions(&ec_options); \ 00000064 0D00A0E1 MOV R0,SP \ 00000068 C80100EF SWI +456 2963 if (p->acked) \ 0000006C 040095E5 LDR R0,[R5, #+4] \ 00000070 000050E3 CMP R0,#+0 \ 00000074 0300000A BEQ ??DrawAck_4 2964 { 2965 if (p->acked==1) \ 00000078 010050E3 CMP R0,#+1 \ 0000007C ........ LDRNE R0,??DataTable103 ;; I_COLOR 2966 color=ACK_COLOR; //Зеленый \ 00000080 ........ LDREQ R0,??DataTable99 ;; ACK_COLOR \ 00000084 0F0000EA B ??DrawAck_5 2967 else 2968 color=I_COLOR; 2969 } 2970 else 2971 { 2972 if (p->ID==0xFFFFFFFF) \ ??DrawAck_4: \ 00000088 080095E5 LDR R0,[R5, #+8] \ 0000008C 010070E3 CMN R0,#+1 \ 00000090 0B00001A BNE ??DrawAck_6 2973 color=(p->type&0x10)?(((p->type&0x0F)==1)?O_I_COLOR:O_TO_COLOR):(((p->type&0x0F)==1)?I_COLOR:TO_COLOR); \ 00000094 0C0095E5 LDR R0,[R5, #+12] \ 00000098 100010E3 TST R0,#0x10 \ 0000009C 0F0000E2 AND R0,R0,#0xF \ 000000A0 0300000A BEQ ??DrawAck_7 \ 000000A4 010050E3 CMP R0,#+1 \ 000000A8 ........ LDRNE R0,??DataTable100 ;; O_TO_COLOR \ 000000AC ........ LDREQ R0,??DataTable101 ;; O_I_COLOR \ 000000B0 040000EA B ??DrawAck_5 \ ??DrawAck_7: \ 000000B4 010050E3 CMP R0,#+1 \ 000000B8 ........ LDRNE R0,??DataTable102 ;; TO_COLOR \ 000000BC ........ LDREQ R0,??DataTable103 ;; I_COLOR \ 000000C0 000000EA B ??DrawAck_5 2974 else 2975 color=UNACK_COLOR; //Серый \ ??DrawAck_6: \ 000000C4 ........ LDR R0,??DataTable104 ;; UNACK_COLOR 2976 } 2977 SetPenColorToEditCOptions(&ec_options,color/*p->type==1?I_COLOR:TO_COLOR*/); 2978 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_H_FONT_SIZE:ED_H_FONT_SIZE); 2979 CopyOptionsToEditControl(&ec,&ec_options); 2980 StoreEditControl(data,j,&ec); 2981 p->acked|=4; //Обработали 2982 dorefresh=1; \ ??DrawAck_5: \ 000000C8 0160A0E3 MOV R6,#+1 \ 000000CC 001090E5 LDR R1,[R0, #+0] \ 000000D0 0D00A0E1 MOV R0,SP \ 000000D4 CC0100EF SWI +460 \ 000000D8 0C0095E5 LDR R0,[R5, #+12] \ 000000DC 100010E3 TST R0,#0x10 \ 000000E0 ........ LDRNE R0,??DataTable105 ;; O_ED_H_FONT_SIZE \ 000000E4 ........ LDREQ R0,??DataTable106 ;; ED_H_FONT_SIZE \ 000000E8 001090E5 LDR R1,[R0, #+0] \ 000000EC 0D00A0E1 MOV R0,SP \ 000000F0 CA0100EF SWI +458 \ 000000F4 0D10A0E1 MOV R1,SP \ 000000F8 10008DE2 ADD R0,SP,#+16 \ 000000FC CE0100EF SWI +462 \ 00000100 10208DE2 ADD R2,SP,#+16 \ 00000104 0710A0E1 MOV R1,R7 \ 00000108 0400A0E1 MOV R0,R4 \ 0000010C 6A0100EF SWI +362 \ 00000110 040095E5 LDR R0,[R5, #+4] \ 00000114 040080E3 ORR R0,R0,#0x4 \ 00000118 040085E5 STR R0,[R5, #+4] 2983 } 2984 } 2985 j+=2; 2986 p=p->next; \ ??DrawAck_3: \ 0000011C 005095E5 LDR R5,[R5, #+0] \ 00000120 027087E2 ADD R7,R7,#+2 2987 } \ 00000124 000055E3 CMP R5,#+0 \ 00000128 C4FFFF1A BNE ??DrawAck_2 2988 if (IsGuiOnTop(edchat_id)&&dorefresh) RefreshGUI(); \ ??DrawAck_1: \ 0000012C 1C009FE5 LDR R0,??DrawAck_8 ;; S_ICONS + 448 \ 00000130 000090E5 LDR R0,[R0, #+0] \ 00000134 350100EF SWI +309 \ 00000138 000050E3 CMP R0,#+0 \ 0000013C 00005613 CMPNE R6,#+0 \ 00000140 0000000A BEQ ??DrawAck_0 \ 00000144 960100EF SWI +406 \ ??DrawAck_0: \ 00000148 3CD08DE2 ADD SP,SP,#+60 ;; stack cleaning \ 0000014C F080BDE8 POP {R4-R7,PC} ;; return \ ??DrawAck_8: \ 00000150 ........ DC32 S_ICONS + 448 2989 } 2990 \ In segment CODE, align 4, keep-with-next 2991 void ask_my_info(void) 2992 { 2993 /* TPKT *p; 2994 CLIST *t; 2995 p=malloc(sizeof(PKT)); 2996 p->pkt.uin=UIN; 2997 p->pkt.type=T_REQINFOSHORT; 2998 p->pkt.data_len=0; 2999 // AddStringToLog(t,0x01,"Request info...",I_str); 3000 SUBPROC((void *)SendAnswer,0,p);*/ 3001 } \ ask_my_info: \ 00000000 1EFF2FE1 BX LR ;; return 3002 \ In segment CODE, align 4, keep-with-next 3003 void set_my_status(void) 3004 { \ set_my_status: \ 00000000 00402DE9 PUSH {LR} 3005 TPKT *p; 3006 p=malloc(sizeof(PKT)+1); \ 00000004 0900A0E3 MOV R0,#+9 \ 00000008 140000EF SWI +20 3007 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 001080E5 STR R1,[R0, #+0] 3008 p->pkt.type=T_MY_STATUS_CH; // Тип пакета: изменение статуса \ 00000014 0F10A0E3 MOV R1,#+15 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 3009 p->pkt.data_len=1; // Длина пакета: 1 байт \ 0000001C 0110A0E3 MOV R1,#+1 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 3010 p->data[0]=CurrentStatus; \ 00000024 18109FE5 LDR R1,??set_my_status_0 ;; S_ICONS + 372 3011 SUBPROC((void *)SendAnswer,0,p); \ 00000028 0020A0E1 MOV R2,R0 \ 0000002C 001091E5 LDR R1,[R1, #+0] \ 00000030 0810C0E5 STRB R1,[R0, #+8] \ 00000034 ........ LDR R0,??DataTable117 ;; SendAnswer \ 00000038 0010A0E3 MOV R1,#+0 \ 0000003C 710100EF SWI +369 3012 } \ 00000040 0080BDE8 POP {PC} ;; return \ ??set_my_status_0: \ 00000044 ........ DC32 S_ICONS + 372 3013 3014 extern int Send0; 3015 \ In segment CODE, align 4, keep-with-next 3016 void set_my_xstatus(void) 3017 { \ set_my_xstatus: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 3018 #ifdef NEWSGOLD 3019 if(Is_Id3tag_Enabled) \ 00000004 ........ LDR R4,??DataTable117 ;; SendAnswer \ 00000008 ........ LDR R10,??DataTable114 ;; S_ICONS \ 0000000C ........ LDR R8,??DataTable110 ;; CurrentXStatus \ 00000010 0CD04DE2 SUB SP,SP,#+12 \ 00000014 28019AE5 LDR R0,[R10, #+296] \ 00000018 1A50A0E3 MOV R5,#+26 \ 0000001C 0160A0E3 MOV R6,#+1 \ 00000020 1670A0E3 MOV R7,#+22 \ 00000024 0090A0E3 MOV R9,#+0 \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 3C00000A BEQ ??set_my_xstatus_0 3020 { 3021 if(CurrentXStatus!=11) \ 00000030 000098E5 LDR R0,[R8, #+0] \ 00000034 0B0050E3 CMP R0,#+11 \ 00000038 7200000A BEQ ??set_my_xstatus_1 3022 { 3023 #endif 3024 TPKT *p; 3025 char *s1; 3026 char *s2; 3027 int l1; 3028 int l2; 3029 p=malloc(sizeof(PKT)+1); \ 0000003C 0900A0E3 MOV R0,#+9 \ 00000040 140000EF SWI +20 \ 00000044 00A0A0E1 MOV R10,R0 3030 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 00000048 00908AE5 STR R9,[R10, #+0] 3031 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса \ 0000004C B470CAE1 STRH R7,[R10, #+4] 3032 p->pkt.data_len=1; // Длина пакета: 1 байт \ 00000050 B660CAE1 STRH R6,[R10, #+6] 3033 p->data[0]=CurrentXStatus; \ 00000054 000098E5 LDR R0,[R8, #+0] 3034 SUBPROC((void *)SendAnswer,0,p); \ 00000058 0A20A0E1 MOV R2,R10 \ 0000005C 0800CAE5 STRB R0,[R10, #+8] \ 00000060 0010A0E3 MOV R1,#+0 \ 00000064 0400A0E1 MOV R0,R4 \ 00000068 710100EF SWI +369 3035 s1=GetXStatusStr(CurrentXStatus*3+1,&l1); \ 0000006C 000098E5 LDR R0,[R8, #+0] \ 00000070 0D10A0E1 MOV R1,SP \ 00000074 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000078 010080E2 ADD R0,R0,#+1 \ 0000007C ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 00000080 0060A0E1 MOV R6,R0 3036 s2=GetXStatusStr(CurrentXStatus*3+2,&l2); \ 00000084 000098E5 LDR R0,[R8, #+0] \ 00000088 04108DE2 ADD R1,SP,#+4 \ 0000008C 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000090 020080E2 ADD R0,R0,#+2 \ 00000094 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 00000098 0070A0E1 MOV R7,R0 3037 if ((!s1)||(!s2)) return; \ 0000009C 000056E3 CMP R6,#+0 \ 000000A0 00005713 CMPNE R7,#+0 \ 000000A4 F78FBD08 POPEQ {R0-R2,R4-R11,PC} 3038 p=malloc(sizeof(PKT)+l1+l2+1); \ 000000A8 00009DE5 LDR R0,[SP, #+0] \ 000000AC 04109DE5 LDR R1,[SP, #+4] \ 000000B0 000081E0 ADD R0,R1,R0 \ 000000B4 090080E2 ADD R0,R0,#+9 \ 000000B8 140000EF SWI +20 \ 000000BC 00A0A0E1 MOV R10,R0 3039 p->pkt.uin=0; \ 000000C0 00908AE5 STR R9,[R10, #+0] 3040 p->pkt.type=T_XTEXT_SET; \ 000000C4 B450CAE1 STRH R5,[R10, #+4] 3041 p->pkt.data_len=l1+l2+1; \ 000000C8 00009DE5 LDR R0,[SP, #+0] \ 000000CC 04109DE5 LDR R1,[SP, #+4] \ 000000D0 000081E0 ADD R0,R1,R0 \ 000000D4 010080E2 ADD R0,R0,#+1 \ 000000D8 B600CAE1 STRH R0,[R10, #+6] 3042 strncpy(p->data+0,s1,l1); \ 000000DC 00209DE5 LDR R2,[SP, #+0] \ 000000E0 0610A0E1 MOV R1,R6 \ 000000E4 08008AE2 ADD R0,R10,#+8 \ 000000E8 160100EF SWI +278 3043 p->data[l1]=0; \ 000000EC 00009DE5 LDR R0,[SP, #+0] 3044 strncpy(p->data+l1+1,s2,l2); \ 000000F0 0710A0E1 MOV R1,R7 \ 000000F4 0A0080E0 ADD R0,R0,R10 \ 000000F8 0890C0E5 STRB R9,[R0, #+8] \ 000000FC 00009DE5 LDR R0,[SP, #+0] \ 00000100 04209DE5 LDR R2,[SP, #+4] \ 00000104 0A0080E0 ADD R0,R0,R10 \ 00000108 090080E2 ADD R0,R0,#+9 \ 0000010C 160100EF SWI +278 3045 SUBPROC((void *)SendAnswer,0,p); \ 00000110 0A20A0E1 MOV R2,R10 \ 00000114 0010A0E3 MOV R1,#+0 \ 00000118 0400A0E1 MOV R0,R4 \ 0000011C 710100EF SWI +369 \ 00000120 F78FBDE8 POP {R0-R2,R4-R11,PC} 3046 #ifdef NEWSGOLD 3047 } 3048 else 3049 { 3050 tracktimer=0; 3051 GetTags(); 3052 } 3053 } 3054 else 3055 { 3056 TPKT *p; 3057 char *s1; 3058 char *s2; 3059 int l1; 3060 int l2; 3061 p=malloc(sizeof(PKT)+1); \ ??set_my_xstatus_0: \ 00000124 0900A0E3 MOV R0,#+9 \ 00000128 140000EF SWI +20 \ 0000012C 00B0A0E1 MOV R11,R0 3062 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 00000130 00908BE5 STR R9,[R11, #+0] 3063 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса \ 00000134 B470CBE1 STRH R7,[R11, #+4] 3064 p->pkt.data_len=1; // Длина пакета: 1 байт \ 00000138 B660CBE1 STRH R6,[R11, #+6] 3065 p->data[0]=CurrentXStatus; \ 0000013C 000098E5 LDR R0,[R8, #+0] 3066 SUBPROC((void *)SendAnswer,0,p); \ 00000140 0B20A0E1 MOV R2,R11 \ 00000144 0800CBE5 STRB R0,[R11, #+8] \ 00000148 0010A0E3 MOV R1,#+0 \ 0000014C 0400A0E1 MOV R0,R4 \ 00000150 710100EF SWI +369 3067 s1=GetXStatusStr(CurrentXStatus*3+1,&l1); \ 00000154 000098E5 LDR R0,[R8, #+0] \ 00000158 0D10A0E1 MOV R1,SP \ 0000015C 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000160 010080E2 ADD R0,R0,#+1 \ 00000164 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 00000168 0060A0E1 MOV R6,R0 3068 s2=GetXStatusStr(CurrentXStatus*3+2,&l2); \ 0000016C 000098E5 LDR R0,[R8, #+0] \ 00000170 04108DE2 ADD R1,SP,#+4 \ 00000174 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000178 020080E2 ADD R0,R0,#+2 \ 0000017C ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 00000180 0070A0E1 MOV R7,R0 3069 if ((!s1)||(!s2)) return; \ 00000184 000056E3 CMP R6,#+0 \ 00000188 00005713 CMPNE R7,#+0 \ 0000018C F78FBD08 POPEQ {R0-R2,R4-R11,PC} 3070 p=malloc(sizeof(PKT)+l1+l2+1); \ 00000190 00009DE5 LDR R0,[SP, #+0] \ 00000194 04109DE5 LDR R1,[SP, #+4] \ 00000198 000081E0 ADD R0,R1,R0 \ 0000019C 090080E2 ADD R0,R0,#+9 \ 000001A0 140000EF SWI +20 \ 000001A4 00B0A0E1 MOV R11,R0 3071 p->pkt.uin=0; \ 000001A8 00908BE5 STR R9,[R11, #+0] 3072 p->pkt.type=T_XTEXT_SET; \ 000001AC B450CBE1 STRH R5,[R11, #+4] 3073 p->pkt.data_len=l1+l2+1; \ 000001B0 00009DE5 LDR R0,[SP, #+0] \ 000001B4 04109DE5 LDR R1,[SP, #+4] \ 000001B8 000081E0 ADD R0,R1,R0 \ 000001BC 010080E2 ADD R0,R0,#+1 \ 000001C0 B600CBE1 STRH R0,[R11, #+6] 3074 strncpy(p->data+0,s1,l1); \ 000001C4 00209DE5 LDR R2,[SP, #+0] \ 000001C8 0610A0E1 MOV R1,R6 \ 000001CC 08008BE2 ADD R0,R11,#+8 \ 000001D0 160100EF SWI +278 3075 p->data[l1]=0; \ 000001D4 00009DE5 LDR R0,[SP, #+0] 3076 strncpy(p->data+l1+1,s2,l2); \ 000001D8 0710A0E1 MOV R1,R7 \ 000001DC 0B0080E0 ADD R0,R0,R11 \ 000001E0 0890C0E5 STRB R9,[R0, #+8] \ 000001E4 00009DE5 LDR R0,[SP, #+0] \ 000001E8 04209DE5 LDR R2,[SP, #+4] \ 000001EC 0B0080E0 ADD R0,R0,R11 \ 000001F0 090080E2 ADD R0,R0,#+9 \ 000001F4 160100EF SWI +278 3077 SUBPROC((void *)SendAnswer,0,p); \ 000001F8 0B20A0E1 MOV R2,R11 \ 000001FC 0010A0E3 MOV R1,#+0 \ 00000200 0400A0E1 MOV R0,R4 \ 00000204 710100EF SWI +369 3078 tracktimer=0; \ ??set_my_xstatus_1: \ 00000208 54918AE5 STR R9,[R10, #+340] 3079 GetTags(); \ 0000020C ........ _BLF GetTags,??GetTags??rA \ 00000210 F78FBDE8 POP {R0-R2,R4-R11,PC} ;; return 3080 } 3081 #endif 3082 } 3083 #ifdef NEWSGOLD 3084 extern const char playing[13]; 3085 \ In segment CODE, align 4, keep-with-next 3086 void set_my_xstatus2(void) 3087 { \ set_my_xstatus2: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 3088 TPKT *p; 3089 // char *s1; 3090 // char *s2; 3091 int l1; 3092 int l2; 3093 p=malloc(sizeof(PKT)+1); 3094 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере 3095 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса 3096 p->pkt.data_len=1; // Длина пакета: 1 байт 3097 p->data[0]=11; 3098 SUBPROC((void *)SendAnswer,0,p); \ 00000004 ........ LDR R6,??DataTable117 ;; SendAnswer 3099 // char *s1; 3100 char *sk2=malloc(256); 3101 // strcpy(s1, playing); 3102 // s1="Now playing:"; 3103 strcpy(sk2,teast2); 3104 l1=strlen(playing); \ 00000008 DC809FE5 LDR R8,??set_my_xstatus2_0 ;; playing \ 0000000C 04D04DE2 SUB SP,SP,#+4 \ 00000010 0900A0E3 MOV R0,#+9 \ 00000014 140000EF SWI +20 \ 00000018 0040A0E1 MOV R4,R0 \ 0000001C 0050A0E3 MOV R5,#+0 \ 00000020 005084E5 STR R5,[R4, #+0] \ 00000024 1600A0E3 MOV R0,#+22 \ 00000028 B400C4E1 STRH R0,[R4, #+4] \ 0000002C 0100A0E3 MOV R0,#+1 \ 00000030 B600C4E1 STRH R0,[R4, #+6] \ 00000034 0B00A0E3 MOV R0,#+11 \ 00000038 0800C4E5 STRB R0,[R4, #+8] \ 0000003C 0420A0E1 MOV R2,R4 \ 00000040 0010A0E3 MOV R1,#+0 \ 00000044 0600A0E1 MOV R0,R6 \ 00000048 710100EF SWI +369 \ 0000004C 400FA0E3 MOV R0,#+256 \ 00000050 140000EF SWI +20 \ 00000054 94109FE5 LDR R1,??set_my_xstatus2_0+0x4 ;; teast2 \ 00000058 0070A0E1 MOV R7,R0 \ 0000005C 1A0000EF SWI +26 \ 00000060 0800A0E1 MOV R0,R8 \ 00000064 1B0000EF SWI +27 \ 00000068 0090A0E1 MOV R9,R0 3105 l2=strlen(sk2); \ 0000006C 0700A0E1 MOV R0,R7 \ 00000070 1B0000EF SWI +27 \ 00000074 00A0A0E1 MOV R10,R0 3106 if ((!playing)||(!sk2)) return; \ 00000078 000057E3 CMP R7,#+0 \ 0000007C F187BD08 POPEQ {R0,R4-R10,PC} 3107 p=malloc(sizeof(PKT)+l1+l2+1); \ 00000080 09008AE0 ADD R0,R10,R9 \ 00000084 090080E2 ADD R0,R0,#+9 \ 00000088 140000EF SWI +20 \ 0000008C 0040A0E1 MOV R4,R0 3108 p->pkt.uin=0; \ 00000090 005084E5 STR R5,[R4, #+0] 3109 p->pkt.type=T_XTEXT_SET; \ 00000094 1A00A0E3 MOV R0,#+26 \ 00000098 B400C4E1 STRH R0,[R4, #+4] 3110 p->pkt.data_len=l1+l2+1; \ 0000009C 09008AE0 ADD R0,R10,R9 \ 000000A0 010080E2 ADD R0,R0,#+1 \ 000000A4 B600C4E1 STRH R0,[R4, #+6] 3111 strncpy(p->data+0,playing,l1); \ 000000A8 0920A0E1 MOV R2,R9 \ 000000AC 0810A0E1 MOV R1,R8 \ 000000B0 080084E2 ADD R0,R4,#+8 \ 000000B4 160100EF SWI +278 3112 p->data[l1]=0; \ 000000B8 040089E0 ADD R0,R9,R4 \ 000000BC 0850C0E5 STRB R5,[R0, #+8] 3113 strncpy(p->data+l1+1,sk2,l2); \ 000000C0 0A20A0E1 MOV R2,R10 \ 000000C4 0710A0E1 MOV R1,R7 \ 000000C8 090080E2 ADD R0,R0,#+9 \ 000000CC 160100EF SWI +278 3114 mfree(sk2); \ 000000D0 0700A0E1 MOV R0,R7 \ 000000D4 150000EF SWI +21 3115 SUBPROC((void *)SendAnswer,0,p); \ 000000D8 0420A0E1 MOV R2,R4 \ 000000DC 0010A0E3 MOV R1,#+0 \ 000000E0 0600A0E1 MOV R0,R6 \ 000000E4 710100EF SWI +369 3116 // mfree(s1); 3117 // mfree(s2); 3118 } \ 000000E8 F187BDE8 POP {R0,R4-R10,PC} ;; return \ ??set_my_xstatus2_0: \ 000000EC ........ DC32 playing \ 000000F0 ........ DC32 teast2 3119 #endif \ In segment CODE, align 4, keep-with-next 3120 void to_develop(void) 3121 { 3122 if (silenthide) return; \ to_develop: \ 00000000 ........ LDR R0,??DataTable114 ;; S_ICONS \ 00000004 00402DE9 PUSH {LR} \ 00000008 5C1190E5 LDR R1,[R0, #+348] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0080BD18 POPNE {PC} 3123 gipc.name_to=ipc_xtask_name; \ 00000014 ........ LDR R1,??DataTable116 ;; `?` \ 00000018 5420A0E3 MOV R2,#+84 \ 0000001C 702E82E3 ORR R2,R2,#0x700 \ 00000020 012082E0 ADD R2,R2,R1 \ 00000024 BC2080E5 STR R2,[R0, #+188] 3124 gipc.name_from=ipc_my_name; \ 00000028 3420A0E3 MOV R2,#+52 \ 0000002C 702E82E3 ORR R2,R2,#0x700 \ 00000030 011082E0 ADD R1,R2,R1 \ 00000034 C01080E5 STR R1,[R0, #+192] 3125 gipc.data=(void *)maincsm_id; \ 00000038 181190E5 LDR R1,[R0, #+280] 3126 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc); \ 0000003C BC3080E2 ADD R3,R0,#+188 \ 00000040 C41080E5 STR R1,[R0, #+196] \ 00000044 0220A0E3 MOV R2,#+2 \ 00000048 B010A0E3 MOV R1,#+176 \ 0000004C DE1C81E3 ORR R1,R1,#0xDE00 \ 00000050 0900A0E3 MOV R0,#+9 \ 00000054 420C80E3 ORR R0,R0,#0x4200 \ 00000058 000100EF SWI +256 3127 } \ 0000005C 0080BDE8 POP {PC} ;; return 3128 \ In segment CODE, align 4, keep-with-next 3129 void ReqAddMsgToChat(CLIST *t) 3130 { \ ReqAddMsgToChat: \ 00000000 70402DE9 PUSH {R4-R6,LR} 3131 if (edchat_id) \ 00000004 ........ LDR R5,??DataTable114 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C C00195E5 LDR R0,[R5, #+448] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 7080BD08 POPEQ {R4-R6,PC} 3132 { 3133 void *data=FindGUIbyId(edchat_id,NULL); \ 00000018 C00195E5 LDR R0,[R5, #+448] \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 090200EF SWI +521 \ 00000024 0060A0E1 MOV R6,R0 3134 { 3135 EDCHAT_STRUCT *ed_struct; 3136 ed_struct=EDIT_GetUserPointer(data); \ 00000028 DF0100EF SWI +479 3137 if (ed_struct) \ 0000002C 000050E3 CMP R0,#+0 \ 00000030 7080BD08 POPEQ {R4-R6,PC} 3138 { 3139 if (ed_struct->ed_contact==t) \ 00000034 000090E5 LDR R0,[R0, #+0] \ 00000038 040050E1 CMP R0,R4 \ 0000003C 7080BD18 POPNE {R4-R6,PC} 3140 { 3141 if (EDIT_IsBusy(data)) \ 00000040 0600A0E1 MOV R0,R6 \ 00000044 1C0200EF SWI +540 \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 0400000A BEQ ??ReqAddMsgToChat_0 3142 { 3143 t->req_add=1; \ 00000050 0100A0E3 MOV R0,#+1 \ 00000054 6C0084E5 STR R0,[R4, #+108] 3144 #ifdef EVILFOX 3145 time_to_stop_t9=2; 3146 #else 3147 time_to_stop_t9=3; \ 00000058 0300A0E3 MOV R0,#+3 \ 0000005C E80185E5 STR R0,[R5, #+488] \ 00000060 7080BDE8 POP {R4-R6,PC} 3148 #endif 3149 } 3150 else 3151 { 3152 AddMsgToChat(data); \ ??ReqAddMsgToChat_0: \ 00000064 0600A0E1 MOV R0,R6 \ 00000068 ........ BL AddMsgToChat 3153 DirectRedrawGUI_ID(edchat_id); \ 0000006C C00195E5 LDR R0,[R5, #+448] \ 00000070 400100EF SWI +320 3154 } 3155 } 3156 } 3157 } 3158 } 3159 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return 3160 3161 GBSTMR develop; 3162 \ In segment CODE, align 4, keep-with-next 3163 void begin_to_develop() 3164 { \ begin_to_develop: \ 00000000 00402DE9 PUSH {LR} 3165 if(IsUnlocked()) \ 00000004 430000EF SWI +67 \ 00000008 000050E3 CMP R0,#+0 \ 0000000C 0100000A BEQ ??begin_to_develop_0 3166 to_develop(); \ 00000010 0040BDE8 POP {LR} ;; Pop \ 00000014 ........ B to_develop ;; tailcall 3167 else 3168 GBS_StartTimerProc(&develop, 100, begin_to_develop); \ ??begin_to_develop_0: \ 00000018 0C209FE5 LDR R2,??begin_to_develop_1 ;; begin_to_develop \ 0000001C 0C009FE5 LDR R0,??begin_to_develop_1+0x4 ;; S_ICONS + 6832 \ 00000020 6410A0E3 MOV R1,#+100 \ 00000024 4D0000EF SWI +77 3169 } \ 00000028 0080BDE8 POP {PC} ;; return \ ??begin_to_develop_1: \ 0000002C ........ DC32 begin_to_develop \ 00000030 ........ DC32 S_ICONS + 6832 3170 ////=================================comand lists 3171 int comanda; 3172 3173 char requests1[]="Sending online time..."; 3174 char requests2[]="Sending msg info..."; 3175 char requests3[]="Sending battery info..."; 3176 char requests4[]="Sending mod info..."; 3177 char requests6[]="Sending offline info..."; 3178 3179 extern const int show_send_info; 3180 extern const char away_msg4[24]; 3181 #ifdef kluchnik 3182 extern const unsigned int AUTOBOT_UIN; 3183 int autobot; 3184 #endif 3185 //char mod_info2[264]="Mod by EvilFox, 1st; based on rev.2026, mod date: 17.03.08 for S75 only. Windes: !new bcfg!, +SS bkgnd cfg; *menu pos; lang, cfg, SS pos, font fixes. http://quant.hotmail.ru/files/naticq_mod2026w2.zip files: http://quant.hotmail.ru/files/naticqmod_allfiles_w.zip"; 3186 //#else 3187 //extern const 3188 char mod_info[264]; 3189 //#endif 3190 /* 3191 #ifdef NEWSGOLD 3192 unsigned char *addr = (unsigned char *)0xA003E410; 3193 #else 3194 unsigned char *addr = (unsigned char *)0xA000065C; 3195 #endif 3196 */ 3197 const char ipc_game_name[]="Combats"; 3198 IPC_REQ game_gipc; 3199 #define IPC_GAME_DATA 24 3200 3201 #ifdef kluchnik 3202 void AutobotInit() 3203 { 3204 if(autobot==1) 3205 { 3206 autobot=0; 3207 ShowMSG(1,(int)"Autobot Off"); 3208 } 3209 else 3210 { 3211 autobot=1; 3212 ShowMSG(1,(int)"Autobot On"); 3213 } 3214 } 3215 #endif 3216 3217 \ In segment CODE, align 4, keep-with-next 3218 void CheckComand(char *txt, CLIST *t, char *ddd) 3219 { \ CheckComand: \ 00000000 F44F2DE9 PUSH {R2,R4-R11,LR} 3220 comanda=1; \ 00000004 ........ LDR R6,??DataTable123 ;; S_ICONS 3221 sprintf(mod_info,"mod by Evilfox,kluchnik based on revision 2058, mod date: %s at %s ",__DATE__,__TIME__); \ 00000008 ........ LDR R7,??DataTable116 ;; `?` \ 0000000C 18D04DE2 SUB SP,SP,#+24 \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 0150A0E1 MOV R5,R1 \ 00000018 0100A0E3 MOV R0,#+1 \ 0000001C EC0186E5 STR R0,[R6, #+492] \ 00000020 3000A0E3 MOV R0,#+48 \ 00000024 6C0D80E3 ORR R0,R0,#0x1B00 \ 00000028 06B080E0 ADD R11,R0,R6 \ 0000002C 6F3F87E2 ADD R3,R7,#+444 \ 00000030 6C2F87E2 ADD R2,R7,#+432 \ 00000034 5B1F87E2 ADD R1,R7,#+364 \ 00000038 0B00A0E1 MOV R0,R11 \ 0000003C 160000EF SWI +22 \ 00000040 721F87E2 ADD R1,R7,#+456 \ 00000044 0400A0E1 MOV R0,R4 3222 if(strstr(txt,"GAME:")!=0) \ 00000048 180100EF SWI +280 \ 0000004C 000050E3 CMP R0,#+0 \ 00000050 1200000A BEQ ??CheckComand_0 3223 { 3224 game_gipc.name_to=ipc_game_name; \ 00000054 6C00A0E3 MOV R0,#+108 \ 00000058 700E80E3 ORR R0,R0,#0x700 \ 0000005C 070080E0 ADD R0,R0,R7 \ 00000060 C80086E5 STR R0,[R6, #+200] 3225 game_gipc.name_from=ipc_my_name; \ 00000064 3400A0E3 MOV R0,#+52 \ 00000068 700E80E3 ORR R0,R0,#0x700 \ 0000006C 070080E0 ADD R0,R0,R7 \ 00000070 CC0086E5 STR R0,[R6, #+204] 3226 game_gipc.data=txt; \ 00000074 D04086E5 STR R4,[R6, #+208] 3227 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_GAME_DATA,&game_gipc); \ 00000078 C83086E2 ADD R3,R6,#+200 \ 0000007C 1820A0E3 MOV R2,#+24 \ 00000080 B010A0E3 MOV R1,#+176 \ 00000084 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000088 0900A0E3 MOV R0,#+9 \ 0000008C 420C80E3 ORR R0,R0,#0x4200 \ 00000090 000100EF SWI +256 3228 comanda=0; \ 00000094 0000A0E3 MOV R0,#+0 \ 00000098 EC0186E5 STR R0,[R6, #+492] 3229 return; \ 0000009C 380000EA B ??CheckComand_1 3230 } 3231 if(!strcmp(txt, "GET_ONLINE_TIME")) \ ??CheckComand_0: \ 000000A0 ........ LDR R8,??DataTable117 ;; SendAnswer \ 000000A4 FF90A0E3 MOV R9,#+255 \ 000000A8 7F9C89E3 ORR R9,R9,#0x7F00 \ 000000AC 02A0A0E3 MOV R10,#+2 \ 000000B0 7F1F87E2 ADD R1,R7,#+508 \ 000000B4 0400A0E1 MOV R0,R4 \ 000000B8 190000EF SWI +25 \ 000000BC 000050E3 CMP R0,#+0 \ 000000C0 3100001A BNE ??CheckComand_2 3232 { 3233 comanda=0; \ 000000C4 EC0186E5 STR R0,[R6, #+492] 3234 TPKT *p; 3235 sprintf(hah,"Время в онлайн: %02d:%02d:%02d \n" 3236 "Сервер: %s", xstatus_old, minimum_xstatus, maximum, hostbuf2); \ 000000C8 B400A0E3 MOV R0,#+180 \ 000000CC 580D80E3 ORR R0,R0,#0x1600 \ 000000D0 06B080E0 ADD R11,R0,R6 \ 000000D4 800F80E2 ADD R0,R0,#+512 \ 000000D8 060080E0 ADD R0,R0,R6 \ 000000DC 01002DE9 PUSH {R0} \ 000000E0 500196E5 LDR R0,[R6, #+336] \ 000000E4 741F87E2 ADD R1,R7,#+464 \ 000000E8 01002DE9 PUSH {R0} \ 000000EC 4C3196E5 LDR R3,[R6, #+332] \ 000000F0 482196E5 LDR R2,[R6, #+328] \ 000000F4 0B00A0E1 MOV R0,R11 \ 000000F8 160000EF SWI +22 3237 p=malloc(sizeof(PKT)+strlen(hah)+1); \ 000000FC 0B00A0E1 MOV R0,R11 \ 00000100 1B0000EF SWI +27 \ 00000104 090080E2 ADD R0,R0,#+9 \ 00000108 140000EF SWI +20 \ 0000010C 0040A0E1 MOV R4,R0 3238 p->pkt.uin=t->uin; \ 00000110 0C0095E5 LDR R0,[R5, #+12] \ 00000114 000084E5 STR R0,[R4, #+0] 3239 p->pkt.type=T_SENDMSG; \ 00000118 B4A0C4E1 STRH R10,[R4, #+4] 3240 p->pkt.data_len=strlen(hah); \ 0000011C 0B00A0E1 MOV R0,R11 \ 00000120 1B0000EF SWI +27 \ 00000124 B600C4E1 STRH R0,[R4, #+6] 3241 strcpy(p->data,hah); \ 00000128 0B10A0E1 MOV R1,R11 \ 0000012C 080084E2 ADD R0,R4,#+8 \ 00000130 1A0000EF SWI +26 3242 #ifdef EVILFOX 3243 SENDMSGCOUNT++; 3244 #else 3245 if(show_send_info) \ 00000134 18059FE5 LDR R0,??CheckComand_3 ;; show_send_info \ 00000138 000090E5 LDR R0,[R0, #+0] \ 0000013C 08D08DE2 ADD SP,SP,#+8 \ 00000140 000050E3 CMP R0,#+0 \ 00000144 200196E5 LDR R0,[R6, #+288] \ 00000148 010080E2 ADD R0,R0,#+1 \ 0000014C 200186E5 STR R0,[R6, #+288] \ 00000150 0700000A BEQ ??CheckComand_4 3246 AddStringToLog(t,0x01,requests1,I_str,(++SENDMSGCOUNT)&0x7FFF); \ 00000154 000009E0 AND R0,R9,R0 \ 00000158 01002DE9 PUSH {R0} \ 0000015C 173087E2 ADD R3,R7,#+23 \ 00000160 6B2D86E2 ADD R2,R6,#+6848 \ 00000164 0110A0E3 MOV R1,#+1 \ 00000168 0500A0E1 MOV R0,R5 \ 0000016C ........ BL AddStringToLog \ 00000170 04D08DE2 ADD SP,SP,#+4 3247 else 3248 SENDMSGCOUNT++; 3249 #endif 3250 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_4: \ 00000174 0420A0E1 MOV R2,R4 \ 00000178 0010A0E3 MOV R1,#+0 \ 0000017C 0800A0E1 MOV R0,R8 \ 00000180 710100EF SWI +369 3251 return; \ ??CheckComand_1: \ 00000184 1CD08DE2 ADD SP,SP,#+28 \ 00000188 F08FBDE8 POP {R4-R11,PC} 3252 } 3253 if(!strcmp(txt, "GET_MSG_INFO")) \ ??CheckComand_2: \ 0000018C 8F1F87E2 ADD R1,R7,#+572 \ 00000190 0400A0E1 MOV R0,R4 \ 00000194 190000EF SWI +25 \ 00000198 000050E3 CMP R0,#+0 \ 0000019C 2700001A BNE ??CheckComand_5 3254 { 3255 comanda=0; \ 000001A0 EC0186E5 STR R0,[R6, #+492] 3256 TPKT *p; 3257 char *send_txt=malloc(64); \ 000001A4 4000A0E3 MOV R0,#+64 \ 000001A8 140000EF SWI +20 \ 000001AC 0040A0E1 MOV R4,R0 3258 sprintf(send_txt, "Отправлено сообщений: %d \n" 3259 "Принято сообщений: %d" 3260 , main2_count, main_count); \ 000001B0 ........ LDR R0,??DataTable118 ;; main_count \ 000001B4 831F87E2 ADD R1,R7,#+524 \ 000001B8 003090E5 LDR R3,[R0, #+0] \ 000001BC ........ LDR R0,??DataTable119 ;; main2_count \ 000001C0 002090E5 LDR R2,[R0, #+0] \ 000001C4 0400A0E1 MOV R0,R4 \ 000001C8 160000EF SWI +22 3261 p=malloc(sizeof(PKT)+strlen(send_txt)+1); \ 000001CC 0400A0E1 MOV R0,R4 \ 000001D0 1B0000EF SWI +27 \ 000001D4 090080E2 ADD R0,R0,#+9 \ 000001D8 140000EF SWI +20 \ 000001DC 00B0A0E1 MOV R11,R0 3262 p->pkt.uin=t->uin; \ 000001E0 0C0095E5 LDR R0,[R5, #+12] \ 000001E4 00008BE5 STR R0,[R11, #+0] 3263 p->pkt.type=T_SENDMSG; \ 000001E8 B4A0CBE1 STRH R10,[R11, #+4] 3264 p->pkt.data_len=strlen(send_txt); \ 000001EC 0400A0E1 MOV R0,R4 \ 000001F0 1B0000EF SWI +27 \ 000001F4 B600CBE1 STRH R0,[R11, #+6] 3265 strcpy(p->data,send_txt); \ 000001F8 0410A0E1 MOV R1,R4 \ 000001FC 08008BE2 ADD R0,R11,#+8 \ 00000200 1A0000EF SWI +26 3266 #ifdef EVILFOX 3267 SENDMSGCOUNT++; 3268 #else 3269 if(show_send_info) \ 00000204 48049FE5 LDR R0,??CheckComand_3 ;; show_send_info \ 00000208 000090E5 LDR R0,[R0, #+0] \ 0000020C 000050E3 CMP R0,#+0 \ 00000210 200196E5 LDR R0,[R6, #+288] \ 00000214 010080E2 ADD R0,R0,#+1 \ 00000218 200186E5 STR R0,[R6, #+288] \ 0000021C 0401000A BEQ ??CheckComand_6 3270 AddStringToLog(t,0x01,requests2,I_str,(++SENDMSGCOUNT)&0x7FFF); \ 00000220 000009E0 AND R0,R9,R0 \ 00000224 01002DE9 PUSH {R0} \ 00000228 173087E2 ADD R3,R7,#+23 \ 0000022C 0110A0E3 MOV R1,#+1 \ 00000230 D800A0E3 MOV R0,#+216 \ 00000234 680D80E3 ORR R0,R0,#0x1A00 \ 00000238 062080E0 ADD R2,R0,R6 \ 0000023C F90000EA B ??CheckComand_7 3271 else 3272 SENDMSGCOUNT++; 3273 #endif 3274 SUBPROC((void *)SendAnswer,0,p); 3275 mfree(send_txt); 3276 return; 3277 } 3278 3279 //==========================windes commands begin ===================== 3280 3281 if(!strcmp(txt, "GET_PROVIDER")) \ ??CheckComand_5: \ 00000240 9E1F87E2 ADD R1,R7,#+632 \ 00000244 0400A0E1 MOV R0,R4 \ 00000248 190000EF SWI +25 \ 0000024C 000050E3 CMP R0,#+0 \ 00000250 2C00001A BNE ??CheckComand_8 3282 { 3283 comanda=0; \ 00000254 EC0186E5 STR R0,[R6, #+492] 3284 TPKT *p; 3285 3286 WSHDR *ws=AllocWS(32); \ 00000258 2000A0E3 MOV R0,#+32 \ 0000025C 250100EF SWI +293 \ 00000260 00B0A0E1 MOV R11,R0 3287 GetProvider(ws,0); \ 00000264 0010A0E3 MOV R1,#+0 \ 00000268 410000EF SWI +65 3288 char prov[16]; 3289 ws_2str(ws,prov,wstrlen(ws)); \ 0000026C 0B00A0E1 MOV R0,R11 \ 00000270 230100EF SWI +291 \ 00000274 0020A0E1 MOV R2,R0 \ 00000278 08108DE2 ADD R1,SP,#+8 \ 0000027C 0B00A0E1 MOV R0,R11 \ 00000280 A30000EF SWI +163 3290 char *send_txt=malloc(32); \ 00000284 2000A0E3 MOV R0,#+32 \ 00000288 140000EF SWI +20 \ 0000028C 0040A0E1 MOV R4,R0 3291 sprintf(send_txt, "Оператор: %s", prov); \ 00000290 08208DE2 ADD R2,SP,#+8 \ 00000294 931F87E2 ADD R1,R7,#+588 \ 00000298 160000EF SWI +22 3292 FreeWS(ws); \ 0000029C 0B00A0E1 MOV R0,R11 \ 000002A0 290100EF SWI +297 3293 3294 p=malloc(sizeof(PKT)+28+1); \ 000002A4 2500A0E3 MOV R0,#+37 \ 000002A8 140000EF SWI +20 \ 000002AC 00B0A0E1 MOV R11,R0 3295 p->pkt.uin=t->uin; \ 000002B0 0C0095E5 LDR R0,[R5, #+12] \ 000002B4 00008BE5 STR R0,[R11, #+0] 3296 p->pkt.type=T_SENDMSG; \ 000002B8 B4A0CBE1 STRH R10,[R11, #+4] 3297 p->pkt.data_len=strlen(send_txt); \ 000002BC 0400A0E1 MOV R0,R4 \ 000002C0 1B0000EF SWI +27 \ 000002C4 B600CBE1 STRH R0,[R11, #+6] 3298 strcpy(p->data,send_txt); \ 000002C8 0410A0E1 MOV R1,R4 \ 000002CC 08008BE2 ADD R0,R11,#+8 \ 000002D0 1A0000EF SWI +26 3299 if(show_send_info) \ 000002D4 78039FE5 LDR R0,??CheckComand_3 ;; show_send_info \ 000002D8 000090E5 LDR R0,[R0, #+0] \ 000002DC 000050E3 CMP R0,#+0 \ 000002E0 200196E5 LDR R0,[R6, #+288] \ 000002E4 010080E2 ADD R0,R0,#+1 \ 000002E8 200186E5 STR R0,[R6, #+288] \ 000002EC D000000A BEQ ??CheckComand_6 3300 AddStringToLog(t,0x01,"Sending provider name...",I_str,(++SENDMSGCOUNT)&0x7FFF); \ 000002F0 000009E0 AND R0,R9,R0 \ 000002F4 01002DE9 PUSH {R0} \ 000002F8 173087E2 ADD R3,R7,#+23 \ 000002FC 972F87E2 ADD R2,R7,#+604 \ 00000300 0110A0E3 MOV R1,#+1 \ 00000304 C70000EA B ??CheckComand_7 3301 else 3302 SENDMSGCOUNT++; 3303 SUBPROC((void *)SendAnswer,0,p); 3304 mfree(send_txt); 3305 return; 3306 } 3307 3308 //----------------------------------------------------------------------- 3309 3310 if(!strcmp(txt, "GET_MOD_INFO")) \ ??CheckComand_8: \ 00000308 A71F87E2 ADD R1,R7,#+668 \ 0000030C 0400A0E1 MOV R0,R4 \ 00000310 190000EF SWI +25 \ 00000314 000050E3 CMP R0,#+0 \ 00000318 3200001A BNE ??CheckComand_9 3311 { 3312 comanda=0; \ 0000031C EC0186E5 STR R0,[R6, #+492] 3313 TPKT *p; 3314 char *send_txt=malloc(256); \ 00000320 400FA0E3 MOV R0,#+256 \ 00000324 140000EF SWI +20 \ 00000328 0040A0E1 MOV R4,R0 3315 // sprintf(I_UIN, "uin%d", t->uin); 3316 strcpy(I_UIN, t->name); \ 0000032C B410A0E3 MOV R1,#+180 \ 00000330 641D81E3 ORR R1,R1,#0x1900 \ 00000334 061081E0 ADD R1,R1,R6 \ 00000338 00108DE5 STR R1,[SP, #+0] \ 0000033C 00009DE5 LDR R0,[SP, #+0] \ 00000340 141085E2 ADD R1,R5,#+20 \ 00000344 1A0000EF SWI +26 3317 if(strstr(ignor_list,I_UIN)==0) \ 00000348 00109DE5 LDR R1,[SP, #+0] \ 0000034C ........ LDR R0,??DataTable120 ;; ignor_list \ 00000350 180100EF SWI +280 \ 00000354 000050E3 CMP R0,#+0 3318 { 3319 strcpy(send_txt, mod_info); \ 00000358 0B10A001 MOVEQ R1,R11 3320 } 3321 else 3322 strcpy(send_txt, "***Access denied***"); \ 0000035C A21F8712 ADDNE R1,R7,#+648 \ 00000360 0400A0E1 MOV R0,R4 \ 00000364 1A0000EF SWI +26 3323 3324 strcpy(send_txt, mod_info); \ 00000368 0B10A0E1 MOV R1,R11 \ 0000036C 0400A0E1 MOV R0,R4 \ 00000370 1A0000EF SWI +26 3325 3326 p=malloc(sizeof(PKT)+strlen(send_txt)+1); \ 00000374 0400A0E1 MOV R0,R4 \ 00000378 1B0000EF SWI +27 \ 0000037C 090080E2 ADD R0,R0,#+9 \ 00000380 140000EF SWI +20 \ 00000384 00B0A0E1 MOV R11,R0 3327 p->pkt.uin=t->uin; \ 00000388 0C0095E5 LDR R0,[R5, #+12] \ 0000038C 00008BE5 STR R0,[R11, #+0] 3328 p->pkt.type=T_SENDMSG; \ 00000390 B4A0CBE1 STRH R10,[R11, #+4] 3329 p->pkt.data_len=strlen(send_txt); \ 00000394 0400A0E1 MOV R0,R4 \ 00000398 1B0000EF SWI +27 \ 0000039C B600CBE1 STRH R0,[R11, #+6] 3330 strcpy(p->data,send_txt); \ 000003A0 0410A0E1 MOV R1,R4 \ 000003A4 08008BE2 ADD R0,R11,#+8 \ 000003A8 1A0000EF SWI +26 3331 #ifdef EVILFOX 3332 SENDMSGCOUNT++; 3333 #else 3334 if(show_send_info) \ 000003AC A0029FE5 LDR R0,??CheckComand_3 ;; show_send_info \ 000003B0 000090E5 LDR R0,[R0, #+0] \ 000003B4 000050E3 CMP R0,#+0 \ 000003B8 200196E5 LDR R0,[R6, #+288] \ 000003BC 010080E2 ADD R0,R0,#+1 \ 000003C0 200186E5 STR R0,[R6, #+288] \ 000003C4 9A00000A BEQ ??CheckComand_6 3335 AddStringToLog(t,0x01,requests4,I_str,(++SENDMSGCOUNT)&0x7FFF); \ 000003C8 000009E0 AND R0,R9,R0 \ 000003CC 01002DE9 PUSH {R0} \ 000003D0 173087E2 ADD R3,R7,#+23 \ 000003D4 0110A0E3 MOV R1,#+1 \ 000003D8 0400A0E3 MOV R0,#+4 \ 000003DC 6C0D80E3 ORR R0,R0,#0x1B00 \ 000003E0 062080E0 ADD R2,R0,R6 \ 000003E4 8F0000EA B ??CheckComand_7 3336 else 3337 SENDMSGCOUNT++; 3338 #endif 3339 SUBPROC((void *)SendAnswer,0,p); 3340 mfree(send_txt); 3341 return; 3342 } 3343 if(!strcmp(txt, "GET_BAT_INFO")) \ ??CheckComand_9: \ 000003E8 B21F87E2 ADD R1,R7,#+712 \ 000003EC 0400A0E1 MOV R0,R4 \ 000003F0 190000EF SWI +25 \ 000003F4 000050E3 CMP R0,#+0 \ 000003F8 2300001A BNE ??CheckComand_10 3344 { 3345 comanda=0; \ 000003FC EC0186E5 STR R0,[R6, #+492] 3346 TPKT *p; 3347 int bat; 3348 bat=*RamCap(); \ 00000400 C88000EF SWI +32968 \ 00000404 B0B0D0E1 LDRH R11,[R0, #+0] 3349 char *send_txt=malloc(64); \ 00000408 4000A0E3 MOV R0,#+64 \ 0000040C 140000EF SWI +20 \ 00000410 0040A0E1 MOV R4,R0 3350 sprintf(send_txt, "Заряд батареи: %d процентов", bat); \ 00000414 0B20A0E1 MOV R2,R11 \ 00000418 AB1F87E2 ADD R1,R7,#+684 \ 0000041C 160000EF SWI +22 3351 p=malloc(sizeof(PKT)+28+1); \ 00000420 2500A0E3 MOV R0,#+37 \ 00000424 140000EF SWI +20 \ 00000428 00B0A0E1 MOV R11,R0 3352 p->pkt.uin=t->uin; \ 0000042C 0C0095E5 LDR R0,[R5, #+12] \ 00000430 00008BE5 STR R0,[R11, #+0] 3353 p->pkt.type=T_SENDMSG; \ 00000434 B4A0CBE1 STRH R10,[R11, #+4] 3354 p->pkt.data_len=strlen(send_txt); \ 00000438 0400A0E1 MOV R0,R4 \ 0000043C 1B0000EF SWI +27 \ 00000440 B600CBE1 STRH R0,[R11, #+6] 3355 strcpy(p->data,send_txt); \ 00000444 0410A0E1 MOV R1,R4 \ 00000448 08008BE2 ADD R0,R11,#+8 \ 0000044C 1A0000EF SWI +26 3356 #ifdef EVILFOX 3357 SENDMSGCOUNT++; 3358 #else 3359 if(show_send_info) \ 00000450 FC019FE5 LDR R0,??CheckComand_3 ;; show_send_info \ 00000454 000090E5 LDR R0,[R0, #+0] \ 00000458 000050E3 CMP R0,#+0 \ 0000045C 200196E5 LDR R0,[R6, #+288] \ 00000460 010080E2 ADD R0,R0,#+1 \ 00000464 200186E5 STR R0,[R6, #+288] \ 00000468 7100000A BEQ ??CheckComand_6 3360 AddStringToLog(t,0x01,requests3,I_str,(++SENDMSGCOUNT)&0x7FFF); \ 0000046C 000009E0 AND R0,R9,R0 \ 00000470 01002DE9 PUSH {R0} \ 00000474 173087E2 ADD R3,R7,#+23 \ 00000478 0110A0E3 MOV R1,#+1 \ 0000047C EC00A0E3 MOV R0,#+236 \ 00000480 680D80E3 ORR R0,R0,#0x1A00 \ 00000484 062080E0 ADD R2,R0,R6 \ 00000488 660000EA B ??CheckComand_7 3361 else 3362 SENDMSGCOUNT++; 3363 #endif 3364 SUBPROC((void *)SendAnswer,0,p); 3365 mfree(send_txt); 3366 return; 3367 } 3368 if(away_m==1) \ ??CheckComand_10: \ 0000048C 380196E5 LDR R0,[R6, #+312] \ 00000490 010050E3 CMP R0,#+1 \ 00000494 3700001A BNE ??CheckComand_11 3369 { 3370 comanda=1; \ 00000498 EC0186E5 STR R0,[R6, #+492] 3371 TPKT *p; 3372 // sprintf(hah,"online: %02d:%02d:%02d", xstatus_old, minimum_xstatus, maximum); 3373 3374 if(inp_away_m)//Если ввели текст то выводим его,иначе из конфига \ 0000049C FC10A0E3 MOV R1,#+252 \ 000004A0 501D81E3 ORR R1,R1,#0x1400 \ 000004A4 061081E0 ADD R1,R1,R6 \ 000004A8 00108DE5 STR R1,[SP, #+0] \ 000004AC 583196E5 LDR R3,[R6, #+344] \ 000004B0 A0219FE5 LDR R2,??CheckComand_3+0x4 ;; away_msg4 \ 000004B4 0400A0E3 MOV R0,#+4 \ 000004B8 580D80E3 ORR R0,R0,#0x1600 \ 000004BC 061080E0 ADD R1,R0,R6 \ 000004C0 02002DE9 PUSH {R1} \ 000004C4 000053E3 CMP R3,#+0 3375 sprintf(away_msg, "Автоответчик: %s %s! %s %s", away_msg4, ddd, inp_away_msg2, away_msg_time); \ 000004C8 34119615 LDRNE R1,[R6, #+308] \ 000004CC B60FA0E3 MOV R0,#+728 3376 else 3377 sprintf(away_msg, "Автоответчик: %s %s! %s %s", away_msg4, ddd, away_msg2, away_msg_time); \ 000004D0 ........ LDREQ R1,??DataTable121 ;; away_msg2 \ 000004D4 02002DE9 PUSH {R1} \ 000004D8 20309DE5 LDR R3,[SP, #+32] \ 000004DC 071080E0 ADD R1,R0,R7 \ 000004E0 08009DE5 LDR R0,[SP, #+8] \ 000004E4 160000EF SWI +22 \ 000004E8 08D08DE2 ADD SP,SP,#+8 3378 p=malloc(sizeof(PKT)+strlen(away_msg)+1); \ 000004EC 00009DE5 LDR R0,[SP, #+0] \ 000004F0 1B0000EF SWI +27 \ 000004F4 090080E2 ADD R0,R0,#+9 \ 000004F8 140000EF SWI +20 \ 000004FC 00B0A0E1 MOV R11,R0 3379 p->pkt.uin=t->uin; \ 00000500 0C0095E5 LDR R0,[R5, #+12] \ 00000504 00008BE5 STR R0,[R11, #+0] 3380 p->pkt.type=T_SENDMSG; \ 00000508 B4A0CBE1 STRH R10,[R11, #+4] 3381 p->pkt.data_len=strlen(away_msg); \ 0000050C 00009DE5 LDR R0,[SP, #+0] \ 00000510 1B0000EF SWI +27 \ 00000514 B600CBE1 STRH R0,[R11, #+6] 3382 strcpy(p->data,away_msg); \ 00000518 00109DE5 LDR R1,[SP, #+0] \ 0000051C 08008BE2 ADD R0,R11,#+8 \ 00000520 1A0000EF SWI +26 3383 #ifdef EVILFOX 3384 SENDMSGCOUNT++; 3385 #else 3386 if(show_send_info) \ 00000524 28019FE5 LDR R0,??CheckComand_3 ;; show_send_info \ 00000528 000090E5 LDR R0,[R0, #+0] \ 0000052C 000050E3 CMP R0,#+0 \ 00000530 200196E5 LDR R0,[R6, #+288] \ 00000534 010080E2 ADD R0,R0,#+1 \ 00000538 200186E5 STR R0,[R6, #+288] \ 0000053C 0900000A BEQ ??CheckComand_12 3387 AddStringToLog(t,0x01,requests6,I_str,(++SENDMSGCOUNT)&0x7FFF); \ 00000540 000009E0 AND R0,R9,R0 \ 00000544 01002DE9 PUSH {R0} \ 00000548 173087E2 ADD R3,R7,#+23 \ 0000054C 0110A0E3 MOV R1,#+1 \ 00000550 1800A0E3 MOV R0,#+24 \ 00000554 6C0D80E3 ORR R0,R0,#0x1B00 \ 00000558 062080E0 ADD R2,R0,R6 \ 0000055C 0500A0E1 MOV R0,R5 \ 00000560 ........ BL AddStringToLog \ 00000564 04D08DE2 ADD SP,SP,#+4 3388 else 3389 SENDMSGCOUNT++; 3390 #endif 3391 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_12: \ 00000568 0B20A0E1 MOV R2,R11 \ 0000056C 0010A0E3 MOV R1,#+0 \ 00000570 0800A0E1 MOV R0,R8 \ 00000574 710100EF SWI +369 3392 } 3393 #ifdef klcuhnik 3394 if((t->uin==AUTOBOT_UIN)&&(autobot)) 3395 { 3396 TPKT *p; 3397 if(t->bot_msg==0) sprintf(away_msg, "Привет"); 3398 if(t->bot_msg==1) sprintf(away_msg, "думаешь?!"); 3399 if(t->bot_msg==2) sprintf(away_msg, "да что ты говоришь"); 3400 if(t->bot_msg==3) sprintf(away_msg, "странно"); 3401 if(t->bot_msg==4) sprintf(away_msg, "ты так думаешь?"); 3402 if(t->bot_msg==5) sprintf(away_msg, "может быть"); 3403 if(t->bot_msg==6) sprintf(away_msg, "да нахрен"); 3404 if(t->bot_msg==7) sprintf(away_msg, "конечна"); 3405 if(t->bot_msg==8) sprintf(away_msg, "почему нет"); 3406 t->bot_msg++; 3407 if(t->bot_msg==9) 3408 t->bot_msg=1; 3409 // strcpy(away_msg, c); 3410 p=malloc(sizeof(PKT)+strlen(away_msg)+1); 3411 p->pkt.uin=t->uin; 3412 p->pkt.type=T_SENDMSG; 3413 p->pkt.data_len=strlen(away_msg); 3414 strcpy(p->data,away_msg); 3415 AddStringToLog(t,0x01,away_msg,I_str,(++SENDMSGCOUNT)&0x7FFF); 3416 SUBPROC((void *)SendAnswer,0,p); 3417 3418 extern const int autobot_kel; 3419 if((t->uin==334492880)&&(autobot_kel)) 3420 { 3421 TPKT *p; 3422 //if(t->bot_msg==0) sprintf(away_msg, "Привет"); 3423 if(t->bot_msg==0) sprintf(away_msg, "думаешь?!"); 3424 if(t->bot_msg==1) sprintf(away_msg, "да что ты говоришь"); 3425 if(t->bot_msg==2) sprintf(away_msg, "странно"); 3426 if(t->bot_msg==3) sprintf(away_msg, "угу"); 3427 if(t->bot_msg==4) sprintf(away_msg, "Не еби мне мозг!"); 3428 if(t->bot_msg==5) sprintf(away_msg, "иди на хуй!!"); 3429 if(t->bot_msg==6) sprintf(away_msg, "сука"); 3430 if(t->bot_msg==7) sprintf(away_msg, "заебал"); 3431 if(t->bot_msg==8) sprintf(away_msg, "отъебись cука!!!*FUCK_YOU*"); 3432 t->bot_msg++; 3433 if(t->bot_msg==9) 3434 t->bot_msg=1; 3435 // strcpy(away_msg, c); 3436 p=malloc(sizeof(PKT)+strlen(away_msg)+1); 3437 p->pkt.uin=t->uin; 3438 p->pkt.type=T_SENDMSG; 3439 p->pkt.data_len=strlen(away_msg); 3440 strcpy(p->data,away_msg); 3441 AddStringToLog(t,0x01,away_msg,I_str,(++SENDMSGCOUNT)&0x7FFF); 3442 SUBPROC((void *)SendAnswer,0,p); 3443 } 3444 } 3445 #endif 3446 //----------------------// 3447 3448 if(!strcmp(txt, "GET_URL_INFO")) \ ??CheckComand_11: \ 00000578 B400A0E3 MOV R0,#+180 \ 0000057C 400E80E3 ORR R0,R0,#0x400 \ 00000580 071080E0 ADD R1,R0,R7 \ 00000584 0400A0E1 MOV R0,R4 \ 00000588 190000EF SWI +25 \ 0000058C 000050E3 CMP R0,#+0 \ 00000590 2D00001A BNE ??CheckComand_13 3449 { 3450 comanda=0; \ 00000594 EC0186E5 STR R0,[R6, #+492] 3451 TPKT *p; 3452 3453 char *send_txt=malloc(256); \ 00000598 400FA0E3 MOV R0,#+256 \ 0000059C 140000EF SWI +20 \ 000005A0 0040A0E1 MOV R4,R0 3454 sprintf(send_txt,"revision 2058, mod date: %s at %s ", 3455 "http://windes.narod.ru/files/naticq_mod2058s.zip (sgold) (40kb)" 3456 "http://windes.narod.ru/files/naticq_mod2058n.zip (NewSGold) (40kb)" 3457 "http://windes.narod.ru/files/naticq_mod2058e.zip (elka) (40kb)" 3458 "files: http://windes.narod.ru/files/naticqmod_allfiles_w.zip (432kb)" 3459 "Status on iconbar http://windes.narod.ru/files/img16x16.zip (74kb)" 3460 "Так же все будет тут http://klcuhnik.jino-net.ru/naticqmod/",__DATE__,__TIME__); \ 000005A4 6F0F87E2 ADD R0,R7,#+444 \ 000005A8 01002DE9 PUSH {R0} \ 000005AC 6C3F87E2 ADD R3,R7,#+432 \ 000005B0 C62F87E2 ADD R2,R7,#+792 \ 000005B4 BD1F87E2 ADD R1,R7,#+756 \ 000005B8 0400A0E1 MOV R0,R4 \ 000005BC 160000EF SWI +22 3461 3462 p=malloc(sizeof(PKT)+257); \ 000005C0 0900A0E3 MOV R0,#+9 \ 000005C4 400F80E3 ORR R0,R0,#0x100 \ 000005C8 140000EF SWI +20 \ 000005CC 00B0A0E1 MOV R11,R0 3463 p->pkt.uin=t->uin; \ 000005D0 0C0095E5 LDR R0,[R5, #+12] \ 000005D4 00008BE5 STR R0,[R11, #+0] 3464 p->pkt.type=T_SENDMSG; \ 000005D8 B4A0CBE1 STRH R10,[R11, #+4] 3465 p->pkt.data_len=strlen(send_txt); \ 000005DC 0400A0E1 MOV R0,R4 \ 000005E0 1B0000EF SWI +27 \ 000005E4 B600CBE1 STRH R0,[R11, #+6] 3466 strcpy(p->data,send_txt); \ 000005E8 0410A0E1 MOV R1,R4 \ 000005EC 08008BE2 ADD R0,R11,#+8 \ 000005F0 1A0000EF SWI +26 3467 if(show_send_info) \ 000005F4 58009FE5 LDR R0,??CheckComand_3 ;; show_send_info \ 000005F8 000090E5 LDR R0,[R0, #+0] \ 000005FC 04D08DE2 ADD SP,SP,#+4 \ 00000600 000050E3 CMP R0,#+0 \ 00000604 200196E5 LDR R0,[R6, #+288] \ 00000608 010080E2 ADD R0,R0,#+1 \ 0000060C 200186E5 STR R0,[R6, #+288] \ 00000610 0700000A BEQ ??CheckComand_6 3468 AddStringToLog(t,0x01,"Sending url info...",I_str,(++SENDMSGCOUNT)&0x7FFF); \ 00000614 000009E0 AND R0,R9,R0 \ 00000618 01002DE9 PUSH {R0} \ 0000061C 173087E2 ADD R3,R7,#+23 \ 00000620 4A2E87E2 ADD R2,R7,#+1184 \ 00000624 0110A0E3 MOV R1,#+1 \ ??CheckComand_7: \ 00000628 0500A0E1 MOV R0,R5 \ 0000062C ........ BL AddStringToLog \ 00000630 04D08DE2 ADD SP,SP,#+4 3469 else 3470 SENDMSGCOUNT++; 3471 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_6: \ 00000634 0B20A0E1 MOV R2,R11 \ 00000638 0010A0E3 MOV R1,#+0 \ 0000063C 0800A0E1 MOV R0,R8 \ 00000640 710100EF SWI +369 3472 mfree(send_txt); \ 00000644 0400A0E1 MOV R0,R4 \ 00000648 150000EF SWI +21 3473 return; \ ??CheckComand_13: \ 0000064C 1CD08DE2 ADD SP,SP,#+28 ;; stack cleaning \ 00000650 F08FBDE8 POP {R4-R11,PC} ;; return \ ??CheckComand_3: \ 00000654 ........ DC32 show_send_info \ 00000658 ........ DC32 away_msg4 3474 } 3475 3476 } 3477 //===========================komand list end 3478 \ In segment DATA_Z, align 4, align-sorted 3479 char INC_Nick[32]; \ INC_Nick: \ 00000000 DS8 32 3480 char show_nick[32]; 3481 int INC_show; 3482 #ifdef ELKA 3483 int font =9; 3484 #else 3485 int font= 4; 3486 #endif 3487 const char color[4]={255,255,255,100}; 3488 \ In segment CODE, align 4, keep-with-next 3489 void show_pp_sender() 3490 { \ show_pp_sender: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 3491 if(INC_show>0) \ 00000004 ........ LDR R4,??DataTable123 ;; S_ICONS \ 00000008 F00194E5 LDR R0,[R4, #+496] \ 0000000C 010050E3 CMP R0,#+1 \ 00000010 F081BDB8 POPLT {R4-R8,PC} 3492 { 3493 WSHDR *ws=AllocWS(256); \ 00000014 400FA0E3 MOV R0,#+256 \ 00000018 250100EF SWI +293 \ 0000001C 0050A0E1 MOV R5,R0 3494 ascii2ws(ws,show_nick); \ 00000020 3800A0E3 MOV R0,#+56 \ 00000024 700D80E3 ORR R0,R0,#0x1C00 \ 00000028 041080E0 ADD R1,R0,R4 \ 0000002C 0500A0E1 MOV R0,R5 \ 00000030 ........ _BLF ascii2ws,??ascii2ws??rA 3495 DrawRectangle(0,0,Get_WS_width(ws,font)+2,GetFontYSIZE(font)+2,0,GetPaletteAdrByColorIndex(1),GetPaletteAdrByColorIndex(1)); \ 00000034 0100A0E3 MOV R0,#+1 \ 00000038 2E0100EF SWI +302 \ 0000003C 0060A0E1 MOV R6,R0 \ 00000040 0100A0E3 MOV R0,#+1 \ 00000044 2E0100EF SWI +302 \ 00000048 0070A0E1 MOV R7,R0 \ 0000004C F40194E5 LDR R0,[R4, #+500] \ 00000050 C50100EF SWI +453 \ 00000054 F41194E5 LDR R1,[R4, #+500] \ 00000058 0080A0E1 MOV R8,R0 \ 0000005C 0500A0E1 MOV R0,R5 \ 00000060 080200EF SWI +520 \ 00000064 40002DE9 PUSH {R6} \ 00000068 80002DE9 PUSH {R7} \ 0000006C 0010A0E3 MOV R1,#+0 \ 00000070 02002DE9 PUSH {R1} \ 00000074 023088E2 ADD R3,R8,#+2 \ 00000078 022080E2 ADD R2,R0,#+2 \ 0000007C 0000A0E3 MOV R0,#+0 \ 00000080 B40100EF SWI +436 3496 DrawString(ws,1,1,1+Get_WS_width(ws,font)+2,1+GetFontYSIZE(font),font,0,( char*) color,GetPaletteAdrByColorIndex(23)); \ 00000084 1700A0E3 MOV R0,#+23 \ 00000088 2E0100EF SWI +302 \ 0000008C 0060A0E1 MOV R6,R0 \ 00000090 F40194E5 LDR R0,[R4, #+500] \ 00000094 C50100EF SWI +453 \ 00000098 F41194E5 LDR R1,[R4, #+500] \ 0000009C 0070A0E1 MOV R7,R0 \ 000000A0 0500A0E1 MOV R0,R5 \ 000000A4 080200EF SWI +520 \ 000000A8 64109FE5 LDR R1,??show_pp_sender_0 ;; color \ 000000AC 40002DE9 PUSH {R6} \ 000000B0 02002DE9 PUSH {R1} \ 000000B4 033080E2 ADD R3,R0,#+3 \ 000000B8 0120A0E3 MOV R2,#+1 \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 0010A0E3 MOV R1,#+0 \ 000000C4 02002DE9 PUSH {R1} \ 000000C8 F41194E5 LDR R1,[R4, #+500] \ 000000CC 02002DE9 PUSH {R1} \ 000000D0 011087E2 ADD R1,R7,#+1 \ 000000D4 02002DE9 PUSH {R1} \ 000000D8 0210A0E1 MOV R1,R2 \ 000000DC 4C0100EF SWI +332 3497 FreeWS(ws); \ 000000E0 0500A0E1 MOV R0,R5 \ 000000E4 290100EF SWI +297 3498 INC_show--; \ 000000E8 F00194E5 LDR R0,[R4, #+496] 3499 GBS_StartTimerProc(&develop, 10, show_pp_sender); \ 000000EC 24209FE5 LDR R2,??show_pp_sender_0+0x4 ;; show_pp_sender \ 000000F0 010040E2 SUB R0,R0,#+1 \ 000000F4 F00184E5 STR R0,[R4, #+496] \ 000000F8 0A10A0E3 MOV R1,#+10 \ 000000FC B000A0E3 MOV R0,#+176 \ 00000100 680D80E3 ORR R0,R0,#0x1A00 \ 00000104 040080E0 ADD R0,R0,R4 \ 00000108 4D0000EF SWI +77 \ 0000010C 20D08DE2 ADD SP,SP,#+32 3500 } 3501 } \ 00000110 F081BDE8 POP {R4-R8,PC} ;; return \ ??show_pp_sender_0: \ 00000114 ........ DC32 color \ 00000118 ........ DC32 show_pp_sender 3502 3503 extern const int SHOW_ACTIVE; 3504 \ In segment CODE, align 4, keep-with-next 3505 void Get_Online_total() 3506 { 3507 CLIST *t; 3508 kopa_online=0; \ Get_Online_total: \ 00000000 ........ LDR R0,??DataTable123 ;; S_ICONS \ 00000004 0010A0E3 MOV R1,#+0 \ 00000008 CC1180E5 STR R1,[R0, #+460] 3509 kopa_kontaktu=0; \ 0000000C D01180E5 STR R1,[R0, #+464] 3510 t=(CLIST *)(&cltop); \ 00000010 6D1F80E2 ADD R1,R0,#+436 \ 00000014 FF30A0E3 MOV R3,#+255 \ 00000018 FF3C83E3 ORR R3,R3,#0xFF00 \ 0000001C 0A0000EA B ??Get_Online_total_0 3511 while(t=(CLIST *)(t->next)) 3512 { 3513 if (!t->isgroup) \ ??Get_Online_total_1: \ 00000020 082091E5 LDR R2,[R1, #+8] \ 00000024 000052E3 CMP R2,#+0 \ 00000028 0700001A BNE ??Get_Online_total_0 3514 { 3515 kopa_online++; \ 0000002C CC2190E5 LDR R2,[R0, #+460] \ 00000030 012082E2 ADD R2,R2,#+1 \ 00000034 CC2180E5 STR R2,[R0, #+460] 3516 if (t->state!=65535) kopa_kontaktu++; \ 00000038 B425D1E1 LDRH R2,[R1, #+84] \ 0000003C 030052E1 CMP R2,R3 \ 00000040 D0219015 LDRNE R2,[R0, #+464] \ 00000044 01208212 ADDNE R2,R2,#+1 \ 00000048 D0218015 STRNE R2,[R0, #+464] 3517 } 3518 } \ ??Get_Online_total_0: \ 0000004C 001091E5 LDR R1,[R1, #+0] \ 00000050 000051E3 CMP R1,#+0 \ 00000054 F1FFFF1A BNE ??Get_Online_total_1 3519 } \ 00000058 1EFF2FE1 BX LR ;; return 3520 \ In segment CODE, align 4, keep-with-next 3521 ProcessPacket(TPKT *p) 3522 { \ ProcessPacket: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 50DF4DE2 SUB SP,SP,#+320 3523 extern const int VIBR_TYPE, VIBR_ON_CONNECT; 3524 CLIST *t; 3525 LOGQ *q; 3526 char s[256]; 3527 switch(p->pkt.type) \ 00000008 ........ LDR R5,??DataTable134 ;; `?` \ 0000000C ........ LDR R7,??DataTable133 ;; S_ICONS \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 B410D4E1 LDRH R1,[R4, #+4] \ 00000018 000094E5 LDR R0,[R4, #+0] \ 0000001C 0160A0E3 MOV R6,#+1 \ 00000020 0080A0E3 MOV R8,#+0 \ 00000024 031041E2 SUB R1,R1,#+3 \ 00000028 1C0051E3 CMP R1,#+28 \ 0000002C 9B02008A BHI ??ProcessPacket_1 \ 00000030 022F8FE2 ADR R2,??ProcessPacket_0 \ 00000034 8110A0E1 MOV R1,R1, LSL #+1 \ 00000038 B12092E1 LDRH R2,[R2, R1] \ 0000003C 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??ProcessPacket_0: \ 00000040 41010E009702 DC16 +321,+14,+663,+663 \ 9702 \ 00000048 110097025300 DC16 +17,+663,+83,+663 \ 9702 \ 00000050 970297029702 DC16 +663,+663,+663,+663 \ 9702 \ 00000058 9702FE01FE01 DC16 +663,+510,+510,+663 \ 9702 \ 00000060 970243005100 DC16 +663,+67,+81,+663 \ 9702 \ 00000068 970297022F02 DC16 +663,+663,+559,+663 \ 9702 \ 00000070 970297029702 DC16 +663,+663,+663,+663 \ 9702 \ 00000078 95020000 DC16 +661,+0 3528 { 3529 case T_LOGIN: 3530 set_my_status(); \ ??ProcessPacket_2: \ 0000007C ........ BL set_my_status 3531 set_my_xstatus(); \ 00000080 ........ BL set_my_xstatus \ 00000084 850200EA B ??ProcessPacket_1 3532 break; 3533 case T_CLENTRY: 3534 if (p->pkt.uin) \ ??ProcessPacket_3: \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 1800000A BEQ ??ProcessPacket_4 3535 { 3536 if ((t=FindContactByUin(p->pkt.uin))) \ 00000090 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000094 0090B0E1 MOVS R9,R0 \ 00000098 0E00000A BEQ ??ProcessPacket_5 3537 { 3538 // t->state=0xFFFF; 3539 if (!t->local) strncpy(t->name,p->data,63); \ 0000009C 900099E5 LDR R0,[R9, #+144] \ 000000A0 000050E3 CMP R0,#+0 \ 000000A4 0300001A BNE ??ProcessPacket_6 \ 000000A8 3F20A0E3 MOV R2,#+63 \ 000000AC 081084E2 ADD R1,R4,#+8 \ 000000B0 140089E2 ADD R0,R9,#+20 \ 000000B4 160100EF SWI +278 3540 t->group=GROUP_CACHE; \ ??ProcessPacket_6: \ 000000B8 B80197E5 LDR R0,[R7, #+440] \ 000000BC 100089E5 STR R0,[R9, #+16] 3541 ChangeContactPos(t); \ ??ProcessPacket_7: \ 000000C0 0900A0E1 MOV R0,R9 \ 000000C4 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 3542 RecountMenu(t,1); \ 000000C8 0110A0E3 MOV R1,#+1 \ 000000CC 0900A0E1 MOV R0,R9 \ ??ProcessPacket_8: \ 000000D0 ........ BL RecountMenu \ 000000D4 710200EA B ??ProcessPacket_1 3543 } 3544 else 3545 { 3546 RecountMenu(AddContact(p->pkt.uin,p->data, GROUP_CACHE, 0),1); \ ??ProcessPacket_5: \ 000000D8 B82197E5 LDR R2,[R7, #+440] \ 000000DC 000094E5 LDR R0,[R4, #+0] \ 000000E0 0030A0E3 MOV R3,#+0 \ 000000E4 081084E2 ADD R1,R4,#+8 \ 000000E8 ........ _BLF AddContact,??AddContact??rA \ 000000EC 0610A0E1 MOV R1,R6 \ 000000F0 F6FFFFEA B ??ProcessPacket_8 3547 } 3548 } 3549 else 3550 { 3551 if(VIBR_ON_CONNECT) \ ??ProcessPacket_4: \ 000000F4 ........ LDR R0,??DataTable126 ;; VIBR_ON_CONNECT \ 000000F8 000090E5 LDR R0,[R0, #+0] \ 000000FC 000050E3 CMP R0,#+0 \ 00000100 0100000A BEQ ??ProcessPacket_9 3552 { 3553 vibra_count=1; \ 00000104 7C6187E5 STR R6,[R7, #+380] 3554 start_vibra(); \ 00000108 ........ BL start_vibra 3555 } 3556 GROUP_CACHE=0; \ ??ProcessPacket_9: \ 0000010C B88187E5 STR R8,[R7, #+440] 3557 ask_my_info(); 3558 if (contactlist_menu_id) \ 00000110 BC0197E5 LDR R0,[R7, #+444] \ 00000114 000050E3 CMP R0,#+0 \ 00000118 0200000A BEQ ??ProcessPacket_10 3559 { 3560 RecountMenu(NULL,1); \ 0000011C 0110A0E3 MOV R1,#+1 \ 00000120 0800A0E1 MOV R0,R8 \ ??ProcessPacket_11: \ 00000124 E9FFFFEA B ??ProcessPacket_8 3561 } 3562 else 3563 { 3564 create_contactlist_menu(); \ ??ProcessPacket_10: \ 00000128 ........ BL create_contactlist_menu 3565 if(!dontLogOnConnect && isLogOnline) dontLogOnConnect=1; \ 0000012C E40097E5 LDR R0,[R7, #+228] \ 00000130 000050E3 CMP R0,#+0 \ 00000134 5902001A BNE ??ProcessPacket_1 \ 00000138 74099FE5 LDR R0,??ProcessPacket_12+0x4 ;; isLogOnline \ 0000013C 000090E5 LDR R0,[R0, #+0] \ 00000140 000050E3 CMP R0,#+0 \ 00000144 5502000A BEQ ??ProcessPacket_1 \ 00000148 E46087E5 STR R6,[R7, #+228] \ 0000014C 530200EA B ??ProcessPacket_1 3566 } 3567 } 3568 break; 3569 case T_GROUPID: 3570 if (t=FindGroupByID(GROUP_CACHE=p->pkt.uin)) \ ??ProcessPacket_13: \ 00000150 B80187E5 STR R0,[R7, #+440] \ 00000154 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 00000158 0090B0E1 MOVS R9,R0 \ 0000015C 0400000A BEQ ??ProcessPacket_14 3571 { 3572 strncpy(t->name,p->data,63); \ 00000160 3F20A0E3 MOV R2,#+63 \ 00000164 081084E2 ADD R1,R4,#+8 \ 00000168 140089E2 ADD R0,R9,#+20 \ 0000016C 160100EF SWI +278 3573 ChangeContactPos(t); \ 00000170 D2FFFFEA B ??ProcessPacket_7 3574 RecountMenu(t,1); 3575 } 3576 else 3577 { 3578 RecountMenu(AddGroup(p->pkt.uin,p->data),1); \ ??ProcessPacket_14: \ 00000174 000094E5 LDR R0,[R4, #+0] \ 00000178 081084E2 ADD R1,R4,#+8 \ 0000017C ........ _BLF AddGroup,??AddGroup??rA \ 00000180 0110A0E3 MOV R1,#+1 \ 00000184 D1FFFFEA B ??ProcessPacket_8 3579 } 3580 break; 3581 case T_GROUPFOLLOW: 3582 GROUP_CACHE=p->pkt.uin; \ ??ProcessPacket_15: \ 00000188 B80187E5 STR R0,[R7, #+440] \ 0000018C 430200EA B ??ProcessPacket_1 3583 break; 3584 case T_STATUSCHANGE: 3585 t=FindContactByUin(p->pkt.uin); \ ??ProcessPacket_16: \ 00000190 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000194 0090B0E1 MOVS R9,R0 3586 if (t) \ 00000198 DB00000A BEQ ??ProcessPacket_17 3587 { 3588 int i=t->state; \ 0000019C B415D9E1 LDRH R1,[R9, #+84] 3589 CLIST *oldt=NULL; \ 000001A0 00A0A0E3 MOV R10,#+0 \ 000001A4 10108DE5 STR R1,[SP, #+16] \ 000001A8 0A00D4E5 LDRB R0,[R4, #+10] \ 000001AC B615D9E1 LDRH R1,[R9, #+86] \ 000001B0 000051E1 CMP R1,R0 \ 000001B4 1D00000A BEQ ??ProcessPacket_18 3590 if (t->xstate!=p->data[2]) // Если картинка икс статуса сменилась 3591 { 3592 t->xstate=p->data[2]; \ 000001B8 B605C9E1 STRH R0,[R9, #+86] 3593 FreeXText(t); \ 000001BC 0900A0E1 MOV R0,R9 \ 000001C0 ........ _BLF FreeXText,??FreeXText??rA 3594 if (t->xstate && ENA_AUTO_XTXT) // Если установлен икс статус и можно запрашивать по смене икс статуса :) \ 000001C4 B605D9E1 LDRH R0,[R9, #+86] \ 000001C8 000050E3 CMP R0,#+0 \ 000001CC 1600000A BEQ ??ProcessPacket_19 \ 000001D0 E0089FE5 LDR R0,??ProcessPacket_12+0x8 ;; ENA_AUTO_XTXT \ 000001D4 000090E5 LDR R0,[R0, #+0] \ 000001D8 000050E3 CMP R0,#+0 \ 000001DC 1200000A BEQ ??ProcessPacket_19 3595 { 3596 t->req_xtext=1; \ 000001E0 8C6089E5 STR R6,[R9, #+140] 3597 if (edchat_id) // Если открыт чат \ 000001E4 C00197E5 LDR R0,[R7, #+448] \ 000001E8 000050E3 CMP R0,#+0 \ 000001EC 0F00000A BEQ ??ProcessPacket_18 3598 { 3599 void *data=FindGUIbyId(edchat_id,NULL); \ 000001F0 C00197E5 LDR R0,[R7, #+448] \ 000001F4 0010A0E3 MOV R1,#+0 \ 000001F8 090200EF SWI +521 3600 if (data) \ 000001FC 000050E3 CMP R0,#+0 \ 00000200 0A00000A BEQ ??ProcessPacket_18 3601 { 3602 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); \ 00000204 DF0100EF SWI +479 3603 if (ed_struct) \ 00000208 000050E3 CMP R0,#+0 \ 0000020C 0700000A BEQ ??ProcessPacket_18 3604 { 3605 if (ed_struct->ed_contact==t) // Если наш чат то запрашиваем текст статуса \ 00000210 000090E5 LDR R0,[R0, #+0] \ 00000214 090050E1 CMP R0,R9 \ 00000218 0400001A BNE ??ProcessPacket_18 3606 { 3607 t->req_xtext=0; \ 0000021C 8C8089E5 STR R8,[R9, #+140] 3608 RequestXText(t->uin); \ 00000220 0C0099E5 LDR R0,[R9, #+12] \ 00000224 ........ BL RequestXText \ 00000228 000000EA B ??ProcessPacket_18 3609 } 3610 } 3611 } 3612 } 3613 } 3614 else // Если икс статус не установлен то на всякий случай снимаем флаг получения текста 3615 { 3616 t->req_xtext=0; \ ??ProcessPacket_19: \ 0000022C 8C8089E5 STR R8,[R9, #+140] 3617 } 3618 } 3619 if (contactlist_menu_id) \ ??ProcessPacket_18: \ 00000230 BC0197E5 LDR R0,[R7, #+444] \ 00000234 000050E3 CMP R0,#+0 \ 00000238 0500000A BEQ ??ProcessPacket_20 3620 { 3621 oldt=FindContactByN(GetCurMenuItem(FindGUIbyId(contactlist_menu_id,NULL))); \ 0000023C BC0197E5 LDR R0,[R7, #+444] \ 00000240 0010A0E3 MOV R1,#+0 \ 00000244 090200EF SWI +521 \ 00000248 8F0100EF SWI +399 \ 0000024C ........ _BLF FindContactByN,??FindContactByN??rA \ 00000250 00A0A0E1 MOV R10,R0 3622 } 3623 if(t->state==65535) t->change=1; \ ??ProcessPacket_20: \ 00000254 B405D9E1 LDRH R0,[R9, #+84] \ 00000258 FFB0A0E3 MOV R11,#+255 \ 0000025C FFBC8BE3 ORR R11,R11,#0xFF00 \ 00000260 0B0050E1 CMP R0,R11 \ 00000264 60608905 STREQ R6,[R9, #+96] 3624 t->state=*((unsigned short *)(p->data)); \ 00000268 B800D4E1 LDRH R0,[R4, #+8] \ 0000026C B405C9E1 STRH R0,[R9, #+84] 3625 if((t->state!=65535)&&(t->change==1)) \ 00000270 0B0050E1 CMP R0,R11 \ 00000274 0400000A BEQ ??ProcessPacket_21 \ 00000278 600099E5 LDR R0,[R9, #+96] \ 0000027C 010050E3 CMP R0,#+1 3626 { 3627 t->just_now=2; \ 00000280 0200A003 MOVEQ R0,#+2 \ 00000284 5C008905 STREQ R0,[R9, #+92] 3628 t->change=0; \ 00000288 60808905 STREQ R8,[R9, #+96] 3629 } 3630 LogStatusChange(t); \ ??ProcessPacket_21: \ 0000028C 0900A0E1 MOV R0,R9 \ 00000290 ........ _BLF LogStatusChange,??LogStatusChange??rA 3631 ChangeContactPos(t); \ 00000294 0900A0E1 MOV R0,R9 \ 00000298 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 3632 RecountMenu(oldt,1); \ 0000029C 0110A0E3 MOV R1,#+1 \ 000002A0 0A00A0E1 MOV R0,R10 \ 000002A4 ........ BL RecountMenu 3633 if ((t->state!=0xFFFF)&&(i==0xFFFF))//Звук \ 000002A8 B405D9E1 LDRH R0,[R9, #+84] \ 000002AC 0B0050E1 CMP R0,R11 \ 000002B0 5000000A BEQ ??ProcessPacket_22 \ 000002B4 10109DE5 LDR R1,[SP, #+16] \ 000002B8 0B0051E1 CMP R1,R11 \ 000002BC 4D00001A BNE ??ProcessPacket_22 3634 { 3635 #ifdef EVILFOX 3636 if(!extended_sounds) 3637 { 3638 Play(sndGlobal); 3639 3640 } 3641 else 3642 { 3643 uins=t->uin; 3644 sprintf(talk_sound, "%s%d.wav", sndGlobal2, uins); 3645 Play(talk_sound); 3646 3647 } 3648 #else 3649 if(!extended_sounds) \ 000002C0 ........ LDR R0,??DataTable127 ;; extended_sounds \ 000002C4 F0A79FE5 LDR R10,??ProcessPacket_12+0xC ;; sndGlobal \ 000002C8 000090E5 LDR R0,[R0, #+0] \ 000002CC 716EA0E3 MOV R6,#+1808 \ 000002D0 000050E3 CMP R0,#+0 \ 000002D4 3500001A BNE ??ProcessPacket_23 3650 { 3651 Play(sndGlobal); \ 000002D8 0A00A0E1 MOV R0,R10 \ ??ProcessPacket_24: \ 000002DC ........ BL Play 3652 if(isLogOnline && dontLogOnConnect) \ 000002E0 CC079FE5 LDR R0,??ProcessPacket_12+0x4 ;; isLogOnline \ 000002E4 000090E5 LDR R0,[R0, #+0] \ 000002E8 000050E3 CMP R0,#+0 \ 000002EC E4009715 LDRNE R0,[R7, #+228] \ 000002F0 00005013 CMPNE R0,#+0 \ 000002F4 7F00000A BEQ ??ProcessPacket_25 3653 { 3654 comanda=0; \ 000002F8 EC8187E5 STR R8,[R7, #+492] 3655 TTime time; 3656 TDate date; 3657 GetDateTime(&date,&time); \ 000002FC 0D10A0E1 MOV R1,SP \ 00000300 08008DE2 ADD R0,SP,#+8 \ 00000304 B40000EF SWI +180 3658 char *txt=malloc(256); \ 00000308 400FA0E3 MOV R0,#+256 \ 0000030C 140000EF SWI +20 \ 00000310 00A0A0E1 MOV R10,R0 3659 sprintf(txt," Online: %02d:%02d:%02d %02d-%02d",time.hour,time.min,time.sec,date.month,date.day); \ 00000314 0D00DDE5 LDRB R0,[SP, #+13] \ 00000318 051086E0 ADD R1,R6,R5 \ 0000031C 01002DE9 PUSH {R0} \ 00000320 1000DDE5 LDRB R0,[SP, #+16] \ 00000324 01002DE9 PUSH {R0} \ 00000328 0A00DDE5 LDRB R0,[SP, #+10] \ 0000032C 01002DE9 PUSH {R0} \ 00000330 0D30DDE5 LDRB R3,[SP, #+13] \ 00000334 0C20DDE5 LDRB R2,[SP, #+12] \ 00000338 0A00A0E1 MOV R0,R10 \ 0000033C 160000EF SWI +22 3660 3661 TPKT *p=malloc(sizeof(PKT)); \ 00000340 0800A0E3 MOV R0,#+8 \ 00000344 140000EF SWI +20 3662 p->pkt.uin=t->uin; \ 00000348 0C1099E5 LDR R1,[R9, #+12] \ 0000034C 001080E5 STR R1,[R0, #+0] 3663 p->pkt.type=T_XTEXT_REQ; \ 00000350 1810A0E3 MOV R1,#+24 \ 00000354 B410C0E1 STRH R1,[R0, #+4] 3664 p->pkt.data_len=0; \ 00000358 B680C0E1 STRH R8,[R0, #+6] 3665 3666 t->xtext=malloc(256); \ 0000035C 400FA0E3 MOV R0,#+256 \ 00000360 140000EF SWI +20 \ 00000364 880089E5 STR R0,[R9, #+136] 3667 // sprintf(t->xtext+1,txt); 3668 snprintf(t->xtext,256,txt); \ 00000368 0A20A0E1 MOV R2,R10 \ 0000036C 401FA0E3 MOV R1,#+256 \ 00000370 1B0100EF SWI +283 3669 AddStringToLog(t,0x03,txt,x_status_change,0xFFFFFFFF); \ 00000374 0800E0E1 MVN R0,R8 \ 00000378 01002DE9 PUSH {R0} \ 0000037C 0A20A0E1 MOV R2,R10 \ 00000380 0310A0E3 MOV R1,#+3 \ 00000384 4C0086E3 ORR R0,R6,#0x4C \ 00000388 053080E0 ADD R3,R0,R5 \ 0000038C 0900A0E1 MOV R0,R9 \ 00000390 ........ BL AddStringToLog 3670 ReqAddMsgToChat(t); \ 00000394 0900A0E1 MOV R0,R9 \ 00000398 ........ BL ReqAddMsgToChat 3671 // RecountMenu(t, 1); 3672 RecountMenu(NULL, 0); \ 0000039C 0010A0E3 MOV R1,#+0 \ 000003A0 0100A0E1 MOV R0,R1 \ 000003A4 ........ BL RecountMenu 3673 mfree(txt); \ 000003A8 0A00A0E1 MOV R0,R10 \ 000003AC 4F0000EA B ??ProcessPacket_26 3674 } 3675 } 3676 else 3677 { 3678 FSTATS stat; 3679 int fsize; 3680 unsigned int ul = 0; 3681 uins=t->uin; 3682 sprintf(talk_sound, "%s%d.wav", sndGlobal2, uins); \ ??ProcessPacket_23: \ 000003B0 08279FE5 LDR R2,??ProcessPacket_12+0x10 ;; sndGlobal2 \ 000003B4 14808DE5 STR R8,[SP, #+20] \ 000003B8 0C0099E5 LDR R0,[R9, #+12] \ 000003BC D7BFA0E3 MOV R11,#+860 \ 000003C0 F40087E5 STR R0,[R7, #+244] \ 000003C4 0030A0E1 MOV R3,R0 \ 000003C8 501F85E2 ADD R1,R5,#+320 \ 000003CC 07008BE0 ADD R0,R11,R7 \ 000003D0 160000EF SWI +22 3683 GetFileStats(talk_sound,&stat,&ul); \ 000003D4 14208DE2 ADD R2,SP,#+20 \ 000003D8 461F8DE2 ADD R1,SP,#+280 \ 000003DC 07008BE0 ADD R0,R11,R7 \ 000003E0 840000EF SWI +132 3684 fsize=stat.size; 3685 if(fsize>0) \ 000003E4 1C019DE5 LDR R0,[SP, #+284] \ 000003E8 010050E3 CMP R0,#+1 3686 Play(talk_sound); \ 000003EC 07008BA0 ADDGE R0,R11,R7 3687 else 3688 Play(sndGlobal); \ 000003F0 0A00A0B1 MOVLT R0,R10 \ 000003F4 B8FFFFEA B ??ProcessPacket_24 3689 if(isLogOnline && dontLogOnConnect) 3690 { 3691 comanda=0; 3692 TTime time; 3693 TDate date; 3694 GetDateTime(&date,&time); 3695 char *txt=malloc(256); 3696 sprintf(txt," Online: %02d:%02d:%02d %02d-%02d",time.hour,time.min,time.sec,date.month,date.day); 3697 3698 TPKT *p=malloc(sizeof(PKT)); 3699 p->pkt.uin=t->uin; 3700 p->pkt.type=T_XTEXT_REQ; 3701 p->pkt.data_len=0; 3702 3703 t->xtext=malloc(256); 3704 // sprintf(t->xtext+1,txt); 3705 snprintf(t->xtext,256,txt); 3706 AddStringToLog(t,0x03,txt,x_status_change,0xFFFFFFFF); 3707 ReqAddMsgToChat(t); 3708 //RecountMenu(t, 1); 3709 RecountMenu(NULL, 0); 3710 mfree(txt); 3711 } 3712 } 3713 #endif 3714 } 3715 3716 if ((i!=0xFFFF)&&(t->state==0xFFFF))//Звук \ ??ProcessPacket_22: \ 000003F8 10109DE5 LDR R1,[SP, #+16] \ 000003FC 0B0051E1 CMP R1,R11 \ 00000400 3C00000A BEQ ??ProcessPacket_25 \ 00000404 0B0050E1 CMP R0,R11 \ 00000408 3A00001A BNE ??ProcessPacket_25 3717 { 3718 Play(sndSrvMsg); \ 0000040C B0069FE5 LDR R0,??ProcessPacket_12+0x14 ;; sndSrvMsg \ 00000410 ........ BL Play 3719 3720 //-------------------- Log offline ----------------------// 3721 3722 if(t->isactive && isLogOffline) \ 00000414 800099E5 LDR R0,[R9, #+128] \ 00000418 000050E3 CMP R0,#+0 \ 0000041C 3500000A BEQ ??ProcessPacket_25 \ 00000420 A0069FE5 LDR R0,??ProcessPacket_12+0x18 ;; isLogOffline \ 00000424 000090E5 LDR R0,[R0, #+0] \ 00000428 000050E3 CMP R0,#+0 \ 0000042C 3100000A BEQ ??ProcessPacket_25 3723 { 3724 comanda=0; \ 00000430 EC8187E5 STR R8,[R7, #+492] 3725 TTime time; 3726 TDate date; 3727 GetDateTime(&date,&time); \ 00000434 0D10A0E1 MOV R1,SP \ 00000438 08008DE2 ADD R0,SP,#+8 \ 0000043C B40000EF SWI +180 3728 char *txt=malloc(256); \ 00000440 400FA0E3 MOV R0,#+256 \ 00000444 140000EF SWI +20 \ 00000448 0060A0E1 MOV R6,R0 3729 sprintf(txt," Offline: %02d:%02d:%02d %02d-%02d",time.hour,time.min,time.sec,date.month,date.day); \ 0000044C 0D00DDE5 LDRB R0,[SP, #+13] \ 00000450 01002DE9 PUSH {R0} \ 00000454 1000DDE5 LDRB R0,[SP, #+16] \ 00000458 01002DE9 PUSH {R0} \ 0000045C 0A00DDE5 LDRB R0,[SP, #+10] \ 00000460 01002DE9 PUSH {R0} \ 00000464 0D30DDE5 LDRB R3,[SP, #+13] \ 00000468 0C20DDE5 LDRB R2,[SP, #+12] \ 0000046C C400A0E3 MOV R0,#+196 \ 00000470 400E80E3 ORR R0,R0,#0x400 \ 00000474 051080E0 ADD R1,R0,R5 \ 00000478 0600A0E1 MOV R0,R6 \ 0000047C 160000EF SWI +22 3730 3731 TPKT *p=malloc(sizeof(PKT)); \ 00000480 0800A0E3 MOV R0,#+8 \ 00000484 140000EF SWI +20 3732 p->pkt.uin=t->uin; \ 00000488 0C1099E5 LDR R1,[R9, #+12] \ 0000048C 001080E5 STR R1,[R0, #+0] 3733 p->pkt.type=T_XTEXT_REQ; \ 00000490 1810A0E3 MOV R1,#+24 \ 00000494 B410C0E1 STRH R1,[R0, #+4] 3734 p->pkt.data_len=0; \ 00000498 B680C0E1 STRH R8,[R0, #+6] 3735 3736 t->xtext=malloc(256); \ 0000049C 400FA0E3 MOV R0,#+256 \ 000004A0 140000EF SWI +20 \ 000004A4 880089E5 STR R0,[R9, #+136] 3737 snprintf(t->xtext,256,txt); \ 000004A8 0620A0E1 MOV R2,R6 \ 000004AC 401FA0E3 MOV R1,#+256 \ 000004B0 1B0100EF SWI +283 3738 AddStringToLog(t,0x03,txt,x_status_change,0xFFFFFFFF); \ 000004B4 0800E0E1 MVN R0,R8 \ 000004B8 01002DE9 PUSH {R0} \ 000004BC 0620A0E1 MOV R2,R6 \ 000004C0 0310A0E3 MOV R1,#+3 \ 000004C4 5C00A0E3 MOV R0,#+92 \ 000004C8 700E80E3 ORR R0,R0,#0x700 \ 000004CC 053080E0 ADD R3,R0,R5 \ 000004D0 0900A0E1 MOV R0,R9 \ 000004D4 ........ BL AddStringToLog 3739 ReqAddMsgToChat(t); \ 000004D8 0900A0E1 MOV R0,R9 \ 000004DC ........ BL ReqAddMsgToChat 3740 RecountMenu(t, 1); \ 000004E0 0110A0E3 MOV R1,#+1 \ 000004E4 0900A0E1 MOV R0,R9 \ 000004E8 ........ BL RecountMenu 3741 mfree(txt); \ 000004EC 0600A0E1 MOV R0,R6 \ ??ProcessPacket_26: \ 000004F0 150000EF SWI +21 \ 000004F4 10D08DE2 ADD SP,SP,#+16 3742 } 3743 } 3744 3745 //------------------------------------------------------------// 3746 if(TIME_OR_MSG==2) \ ??ProcessPacket_25: \ 000004F8 ........ LDR R0,??DataTable128 ;; TIME_OR_MSG \ 000004FC 000090E5 LDR R0,[R0, #+0] \ 00000500 020050E3 CMP R0,#+2 \ 00000504 0000001A BNE ??ProcessPacket_17 3747 Get_Online_total(); \ 00000508 ........ BL Get_Online_total 3748 } 3749 if (edchat_id) \ ??ProcessPacket_17: \ 0000050C C00197E5 LDR R0,[R7, #+448] \ 00000510 000050E3 CMP R0,#+0 \ 00000514 6101000A BEQ ??ProcessPacket_1 3750 { 3751 void *data=FindGUIbyId(edchat_id,NULL); \ 00000518 C00197E5 LDR R0,[R7, #+448] \ 0000051C 0010A0E3 MOV R1,#+0 \ 00000520 090200EF SWI +521 3752 { 3753 EDCHAT_STRUCT *ed_struct; 3754 ed_struct=EDIT_GetUserPointer(data); \ 00000524 DF0100EF SWI +479 3755 if (ed_struct) \ 00000528 000050E3 CMP R0,#+0 \ 0000052C 5B01000A BEQ ??ProcessPacket_1 3756 { 3757 if (ed_struct->ed_contact==t) \ 00000530 000090E5 LDR R0,[R0, #+0] \ 00000534 090050E1 CMP R0,R9 \ 00000538 5801001A BNE ??ProcessPacket_1 3758 { 3759 DirectRedrawGUI_ID(edchat_id); \ 0000053C C00197E5 LDR R0,[R7, #+448] \ 00000540 400100EF SWI +320 \ 00000544 550100EA B ??ProcessPacket_1 3760 } 3761 } 3762 } 3763 } 3764 break; 3765 case T_RECVMSG: 3766 NEW_MSG=1; \ ??ProcessPacket_27: \ 00000548 E46187E5 STR R6,[R7, #+484] 3767 t=FindContactByUin(p->pkt.uin); \ 0000054C ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000550 0090B0E1 MOVS R9,R0 3768 if (!t) \ 00000554 0900001A BNE ??ProcessPacket_28 3769 { 3770 sprintf(s,percent_d,p->pkt.uin); \ 00000558 002094E5 LDR R2,[R4, #+0] \ 0000055C 131085E2 ADD R1,R5,#+19 \ 00000560 18008DE2 ADD R0,SP,#+24 \ 00000564 160000EF SWI +22 3771 t=AddContact(p->pkt.uin,s,GROUP_CACHE,0); \ 00000568 B82197E5 LDR R2,[R7, #+440] \ 0000056C 000094E5 LDR R0,[R4, #+0] \ 00000570 0030A0E3 MOV R3,#+0 \ 00000574 18108DE2 ADD R1,SP,#+24 \ 00000578 ........ _BLF AddContact,??AddContact??rA \ 0000057C 0090A0E1 MOV R9,R0 3772 } 3773 if(!t->isactive && HISTORY_BUFFER) GetHistory(t, 64<isactive=ACTIVE_TIME; \ 000005B8 5A0FA013 MOVNE R0,#+360 \ 000005BC 80008915 STRNE R0,[R9, #+128] 3776 // ChangeContactPos(t); 3777 if(VIBR_TYPE) \ 000005C0 ........ LDR R0,??DataTable131 ;; VIBR_TYPE \ 000005C4 000090E5 LDR R0,[R0, #+0] \ 000005C8 000050E3 CMP R0,#+0 3778 vibra_count=2; \ 000005CC 0200A013 MOVNE R0,#+2 \ 000005D0 7C018715 STRNE R0,[R7, #+380] 3779 else 3780 vibra_count=1; \ 000005D4 7C618705 STREQ R6,[R7, #+380] 3781 start_vibra(); \ 000005D8 ........ BL start_vibra 3782 #ifdef ELKA 3783 if(SLI_TYPE) 3784 SLI_Timer(); \ 000005DC ........ BL SLI_Timer 3785 #endif 3786 if(Is_Double_Vibra_On) \ 000005E0 100197E5 LDR R0,[R7, #+272] \ 000005E4 000050E3 CMP R0,#+0 \ 000005E8 0000000A BEQ ??ProcessPacket_30 3787 Reminder_timer(); \ 000005EC ........ BL Reminder_timer 3788 if (Is_ILU_On) \ ??ProcessPacket_30: \ 000005F0 0C0197E5 LDR R0,[R7, #+268] \ 000005F4 000050E3 CMP R0,#+0 \ 000005F8 0800000A BEQ ??ProcessPacket_31 3789 IlluminationOn(ILL_DISP_RECV,ILL_KEYS_RECV,ILL_RECV_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 \ 000005FC C8049FE5 LDR R0,??ProcessPacket_12+0x1C ;; ILL_RECV_FADE \ 00000600 003090E5 LDR R3,[R0, #+0] \ 00000604 C4049FE5 LDR R0,??ProcessPacket_12+0x20 ;; ILL_RECV_TMR \ 00000608 002090E5 LDR R2,[R0, #+0] \ 0000060C C0049FE5 LDR R0,??ProcessPacket_12+0x24 ;; ILL_KEYS_RECV \ 00000610 001090E5 LDR R1,[R0, #+0] \ 00000614 BC049FE5 LDR R0,??ProcessPacket_12+0x28 ;; ILL_DISP_RECV \ 00000618 000090E5 LDR R0,[R0, #+0] \ 0000061C ........ BL IlluminationOn 3790 if (t->name[0]=='#') \ ??ProcessPacket_31: \ 00000620 1400D9E5 LDRB R0,[R9, #+20] \ 00000624 230050E3 CMP R0,#+35 \ 00000628 1500001A BNE ??ProcessPacket_32 3791 { 3792 //Если это конференция, патчим имя 3793 char *s=strchr(p->data,'>'); \ 0000062C 3E10A0E3 MOV R1,#+62 \ 00000630 080084E2 ADD R0,R4,#+8 \ 00000634 180000EF SWI +24 3794 //Если нашли символ > и после него пробел и ник короче 16 символов 3795 if (s) \ 00000638 000050E3 CMP R0,#+0 \ 0000063C 1000000A BEQ ??ProcessPacket_32 3796 { 3797 if ((s[1]==' ')&&((s-p->data)<16)) \ 00000640 0110D0E5 LDRB R1,[R0, #+1] \ 00000644 200051E3 CMP R1,#+32 \ 00000648 0D00001A BNE ??ProcessPacket_32 \ 0000064C 081084E2 ADD R1,R4,#+8 \ 00000650 011040E0 SUB R1,R0,R1 \ 00000654 100051E3 CMP R1,#+16 \ 00000658 090000AA BGE ??ProcessPacket_32 3798 { 3799 *s=0; //Режем строку \ 0000065C 0080C0E5 STRB R8,[R0, #+0] 3800 AddStringToLog(t,0x02,s+2,p->data,0xFFFFFFFF); //Добавляем имя из текста сообщения \ 00000660 001066E2 RSB R1,R6,#+0 \ 00000664 02002DE9 PUSH {R1} \ 00000668 083084E2 ADD R3,R4,#+8 \ 0000066C 022080E2 ADD R2,R0,#+2 \ 00000670 0900A0E1 MOV R0,R9 \ 00000674 0210A0E3 MOV R1,#+2 \ 00000678 ........ BL AddStringToLog 3801 goto L1; \ 0000067C 04D08DE2 ADD SP,SP,#+4 \ 00000680 360000EA B ??ProcessPacket_33 3802 } 3803 } 3804 } 3805 //=============================================tas bus jautri 3806 comanda=1; \ ??ProcessPacket_32: \ 00000684 EC6187E5 STR R6,[R7, #+492] 3807 // if(UIN!=t->uin) 3808 CheckComand(p->data, t, t->name); \ 00000688 142089E2 ADD R2,R9,#+20 \ 0000068C 0910A0E1 MOV R1,R9 \ 00000690 080084E2 ADD R0,R4,#+8 \ 00000694 ........ BL CheckComand 3809 if(comanda==1) \ 00000698 EC0197E5 LDR R0,[R7, #+492] \ 0000069C 010050E3 CMP R0,#+1 \ 000006A0 2E00001A BNE ??ProcessPacket_33 3810 { 3811 AddStringToLog(t,0x02,p->data,t->name,0xFFFFFFFF); \ 000006A4 000066E2 RSB R0,R6,#+0 \ 000006A8 01002DE9 PUSH {R0} \ 000006AC 143089E2 ADD R3,R9,#+20 \ 000006B0 082084E2 ADD R2,R4,#+8 \ 000006B4 0210A0E3 MOV R1,#+2 \ 000006B8 0900A0E1 MOV R0,R9 \ 000006BC ........ BL AddStringToLog 3812 main_count++; \ 000006C0 ........ LDR R0,??DataTable132 ;; main_count \ 000006C4 001090E5 LDR R1,[R0, #+0] \ 000006C8 011081E2 ADD R1,R1,#+1 \ 000006CC 001080E5 STR R1,[R0, #+0] 3813 if(Is_INC_On) \ 000006D0 080197E5 LDR R0,[R7, #+264] \ 000006D4 04D08DE2 ADD SP,SP,#+4 \ 000006D8 000050E3 CMP R0,#+0 \ 000006DC 1900000A BEQ ??ProcessPacket_34 3814 { 3815 strcpy(show_nick, t->name); \ 000006E0 141089E2 ADD R1,R9,#+20 \ 000006E4 3800A0E3 MOV R0,#+56 \ 000006E8 700D80E3 ORR R0,R0,#0x1C00 \ 000006EC 070080E0 ADD R0,R0,R7 \ 000006F0 1A0000EF SWI +26 3816 if(!IsIdleUiOnTop()&&(!saver_on)) \ 000006F4 C50000EF SWI +197 \ 000006F8 000050E3 CMP R0,#+0 \ 000006FC F8009705 LDREQ R0,[R7, #+248] \ 00000700 00005003 CMPEQ R0,#+0 \ 00000704 0F00001A BNE ??ProcessPacket_34 3817 { 3818 int csm_oncreate_addr = ((int*)(((CSM_RAM*)(CSM_root()->csm_q->csm.last))->constr))[1] - 1; \ 00000708 068100EF SWI +33030 \ 0000070C 080090E5 LDR R0,[R0, #+8] 3819 char java_oncreate_pattern[8] = {0xB0, 0xB5, 0x04, 0x1C, 0x00, 0x25, 0x05, 0x61}; \ 00000710 0C0095E8 LDM R5,{R2,R3} \ 00000714 0C0090E5 LDR R0,[R0, #+12] \ 00000718 0D10A0E1 MOV R1,SP \ 0000071C 080090E5 LDR R0,[R0, #+8] \ 00000720 040090E5 LDR R0,[R0, #+4] \ 00000724 0C0081E8 STM R1,{R2,R3} \ 00000728 010040E2 SUB R0,R0,#+1 3820 if (memcmp((void*)csm_oncreate_addr, java_oncreate_pattern, 8)) \ 0000072C 0820A0E3 MOV R2,#+8 \ 00000730 1C0100EF SWI +284 \ 00000734 000050E3 CMP R0,#+0 \ 00000738 0200000A BEQ ??ProcessPacket_34 3821 { 3822 INC_show=15; \ 0000073C 0F00A0E3 MOV R0,#+15 \ 00000740 F00187E5 STR R0,[R7, #+496] 3823 show_pp_sender(); \ 00000744 ........ BL show_pp_sender 3824 } 3825 #ifdef EVILFOX 3826 #else 3827 // else 3828 // ShowMSG(1,(int)show_nick); 3829 #endif 3830 } 3831 } 3832 if(Is_SMARTCPU_On) \ ??ProcessPacket_34: \ 00000748 040197E5 LDR R0,[R7, #+260] \ 0000074C 000050E3 CMP R0,#+0 \ 00000750 0200000A BEQ ??ProcessPacket_33 3833 AddToMain(t->name,p->data); \ 00000754 081084E2 ADD R1,R4,#+8 \ 00000758 140089E2 ADD R0,R9,#+20 \ 0000075C ........ BL AddToMain 3834 } 3835 // if((Is_SMARTCPU_On)&&(comanda==1)) 3836 // AddToMain(t->name,p->data); 3837 L1: 3838 //Разворачиваем группу, в которой пришло сообщение 3839 { 3840 CLIST *g=FindGroupByID(t->group); \ ??ProcessPacket_33: \ 00000760 100099E5 LDR R0,[R9, #+16] \ 00000764 ........ _BLF FindGroupByID,??FindGroupByID??rA 3841 if (g) \ 00000768 000050E3 CMP R0,#+0 3842 { 3843 if (g->state) \ 0000076C B415D011 LDRHNE R1,[R0, #+84] \ 00000770 00005113 CMPNE R1,#+0 3844 { 3845 g->state=0; \ 00000774 B485C011 STRHNE R8,[R0, #+84] 3846 } 3847 } 3848 } 3849 // if(comanda==1) 3850 // { 3851 ReqAddMsgToChat(t); \ 00000778 0900A0E1 MOV R0,R9 \ 0000077C ........ BL ReqAddMsgToChat 3852 RecountMenu(t,1); \ 00000780 0110A0E3 MOV R1,#+1 \ 00000784 0900A0E1 MOV R0,R9 \ 00000788 ........ BL RecountMenu 3853 extern const int DEVELOP_IF; 3854 switch (DEVELOP_IF) \ 0000078C 48039FE5 LDR R0,??ProcessPacket_12+0x2C ;; DEVELOP_IF \ 00000790 000090E5 LDR R0,[R0, #+0] \ 00000794 000050E3 CMP R0,#+0 \ 00000798 0400000A BEQ ??ProcessPacket_35 \ 0000079C 010050E2 SUBS R0,R0,#+1 \ 000007A0 0B00000A BEQ ??ProcessPacket_36 \ 000007A4 020050E2 SUBS R0,R0,#+2 \ 000007A8 1300000A BEQ ??ProcessPacket_37 \ 000007AC BB0000EA B ??ProcessPacket_1 3855 { 3856 case 0: 3857 #ifdef EVILFOX 3858 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)) GBS_StartTimerProc(&develop, 216*2, to_develop); 3859 #else 3860 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)) to_develop(); \ ??ProcessPacket_35: \ 000007B0 068100EF SWI +33030 \ 000007B4 080090E5 LDR R0,[R0, #+8] \ 000007B8 181197E5 LDR R1,[R7, #+280] \ 000007BC 0C0090E5 LDR R0,[R0, #+12] \ 000007C0 0C0090E5 LDR R0,[R0, #+12] \ 000007C4 010050E1 CMP R0,R1 \ ??ProcessPacket_38: \ 000007C8 B400000A BEQ ??ProcessPacket_1 \ 000007CC ........ BL to_develop \ 000007D0 B20000EA B ??ProcessPacket_1 3861 #endif 3862 break; 3863 case 1: 3864 #ifdef EVILFOX 3865 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)&&(IsUnlocked())) GBS_StartTimerProc(&develop, 216*2, to_develop); 3866 #else 3867 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)&&(IsUnlocked())) to_develop(); \ ??ProcessPacket_36: \ 000007D4 068100EF SWI +33030 \ 000007D8 080090E5 LDR R0,[R0, #+8] \ 000007DC 181197E5 LDR R1,[R7, #+280] \ 000007E0 0C0090E5 LDR R0,[R0, #+12] \ 000007E4 0C0090E5 LDR R0,[R0, #+12] \ 000007E8 010050E1 CMP R0,R1 \ 000007EC AB00000A BEQ ??ProcessPacket_1 \ 000007F0 430000EF SWI +67 \ 000007F4 000050E3 CMP R0,#+0 \ 000007F8 F2FFFFEA B ??ProcessPacket_38 3868 #endif 3869 break; 3870 case 2: 3871 break; 3872 case 3: 3873 GBS_DelTimer(&develop); \ ??ProcessPacket_37: \ 000007FC B000A0E3 MOV R0,#+176 \ 00000800 680D80E3 ORR R0,R0,#0x1A00 \ 00000804 070080E0 ADD R0,R0,R7 \ 00000808 8C0100EF SWI +396 3874 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)&&(!IsUnlocked())) begin_to_develop(); \ 0000080C 068100EF SWI +33030 \ 00000810 080090E5 LDR R0,[R0, #+8] \ 00000814 181197E5 LDR R1,[R7, #+280] \ 00000818 0C0090E5 LDR R0,[R0, #+12] \ 0000081C 0C0090E5 LDR R0,[R0, #+12] \ 00000820 010050E1 CMP R0,R1 \ 00000824 9D00000A BEQ ??ProcessPacket_1 \ 00000828 430000EF SWI +67 \ 0000082C 000050E3 CMP R0,#+0 \ 00000830 9A00001A BNE ??ProcessPacket_1 \ 00000834 ........ BL begin_to_develop \ 00000838 980000EA B ??ProcessPacket_1 3875 break; 3876 } 3877 // } 3878 break; 3879 case T_SRV_ACK: 3880 case T_CLIENT_ACK: 3881 q=FindContactLOGQByAck(p); \ ??ProcessPacket_39: \ 0000083C 0400A0E1 MOV R0,R4 \ 00000840 ........ BL FindContactLOGQByAck 3882 /* if (q&&(p->pkt.type==T_SRV_ACK)) 3883 { 3884 if (Is_ILU_On) 3885 IlluminationOn(ILL_DISP_SEND,ILL_KEYS_SEND,ILL_SEND_TMR,ILL_RECV_FADE); 3886 }//Illumination by BoBa 19.04.2007 */ 3887 /* if (( 3888 IsGuiOnTop(contactlist_menu_id)|| 3889 IsGuiOnTop(edchat_id) 3890 )&&(q)) 3891 { 3892 DrawRoundedFrame(ScreenW()-8,YDISP,ScreenW()-1,YDISP+7,0,0,0, 3893 GetPaletteAdrByColorIndex(0), 3894 GetPaletteAdrByColorIndex(p->pkt.type==T_SRV_ACK?3:4)); 3895 }*/ 3896 if (q) \ 00000844 000050E3 CMP R0,#+0 \ 00000848 9400000A BEQ ??ProcessPacket_1 3897 { 3898 q->acked=p->pkt.type==T_SRV_ACK?1:2; \ 0000084C B410D4E1 LDRH R1,[R4, #+4] \ 00000850 100051E3 CMP R1,#+16 \ 00000854 0110A003 MOVEQ R1,#+1 \ 00000858 0210A013 MOVNE R1,#+2 \ 0000085C 041080E5 STR R1,[R0, #+4] 3899 t=FindContactByUin(p->pkt.uin); \ 00000860 000094E5 LDR R0,[R4, #+0] \ 00000864 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000868 0090A0E1 MOV R9,R0 3900 if (edchat_id) \ 0000086C C00197E5 LDR R0,[R7, #+448] \ 00000870 000050E3 CMP R0,#+0 \ 00000874 8900000A BEQ ??ProcessPacket_1 3901 { 3902 void *data=FindGUIbyId(edchat_id,NULL); \ 00000878 C00197E5 LDR R0,[R7, #+448] \ 0000087C 0010A0E3 MOV R1,#+0 \ 00000880 090200EF SWI +521 \ 00000884 0050B0E1 MOVS R5,R0 3903 if (data) \ 00000888 8400000A BEQ ??ProcessPacket_1 3904 { 3905 EDCHAT_STRUCT *ed_struct; 3906 ed_struct=EDIT_GetUserPointer(data); \ 0000088C DF0100EF SWI +479 3907 if (ed_struct) \ 00000890 000050E3 CMP R0,#+0 \ 00000894 8100000A BEQ ??ProcessPacket_1 3908 { 3909 if (ed_struct->ed_contact==t) \ 00000898 000090E5 LDR R0,[R0, #+0] \ 0000089C 090050E1 CMP R0,R9 \ 000008A0 7E00001A BNE ??ProcessPacket_1 3910 { 3911 if (EDIT_IsBusy(data)) \ 000008A4 0500A0E1 MOV R0,R5 \ 000008A8 1C0200EF SWI +540 \ 000008AC 000050E3 CMP R0,#+0 \ 000008B0 0300000A BEQ ??ProcessPacket_40 3912 { 3913 t->req_drawack=1; \ 000008B4 706089E5 STR R6,[R9, #+112] 3914 #ifdef EVILFOX 3915 time_to_stop_t9=2; 3916 #else 3917 time_to_stop_t9=3; \ 000008B8 0300A0E3 MOV R0,#+3 \ 000008BC E80187E5 STR R0,[R7, #+488] \ 000008C0 760000EA B ??ProcessPacket_1 3918 #endif 3919 } 3920 else { 3921 DrawAck(data); \ ??ProcessPacket_40: \ 000008C4 0500A0E1 MOV R0,R5 \ 000008C8 ........ BL DrawAck 3922 if (p->pkt.type==T_SRV_ACK) \ 000008CC B400D4E1 LDRH R0,[R4, #+4] \ 000008D0 100050E3 CMP R0,#+16 \ 000008D4 7100001A BNE ??ProcessPacket_1 3923 IlluminationOn(ILL_DISP_SEND,ILL_KEYS_SEND,ILL_SEND_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 \ 000008D8 EC019FE5 LDR R0,??ProcessPacket_12+0x1C ;; ILL_RECV_FADE \ 000008DC 003090E5 LDR R3,[R0, #+0] \ 000008E0 F8019FE5 LDR R0,??ProcessPacket_12+0x30 ;; ILL_SEND_TMR \ 000008E4 002090E5 LDR R2,[R0, #+0] \ 000008E8 F4019FE5 LDR R0,??ProcessPacket_12+0x34 ;; ILL_KEYS_SEND \ 000008EC 001090E5 LDR R1,[R0, #+0] \ 000008F0 F0019FE5 LDR R0,??ProcessPacket_12+0x38 ;; ILL_DISP_SEND \ 000008F4 000090E5 LDR R0,[R0, #+0] \ 000008F8 ........ BL IlluminationOn \ 000008FC 670000EA B ??ProcessPacket_1 3924 } 3925 } 3926 } 3927 } 3928 } 3929 } 3930 break; 3931 case T_XTEXT_ACK: 3932 t=FindContactByUin(p->pkt.uin); \ ??ProcessPacket_41: \ 00000900 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000904 0090B0E1 MOVS R9,R0 3933 if (t) \ 00000908 6400000A BEQ ??ProcessPacket_1 3934 { 3935 int i; 3936 int j; 3937 FreeXText(t); \ 0000090C ........ _BLF FreeXText,??FreeXText??rA 3938 i=p->pkt.data_len; \ 00000910 B660D4E1 LDRH R6,[R4, #+6] 3939 memcpy(t->xtext=malloc(i),p->data,i); \ 00000914 0600A0E1 MOV R0,R6 \ 00000918 140000EF SWI +20 \ 0000091C 880089E5 STR R0,[R9, #+136] \ 00000920 0620A0E1 MOV R2,R6 \ 00000924 081084E2 ADD R1,R4,#+8 \ 00000928 1E0100EF SWI +286 3940 zeromem(s,256); \ 0000092C 401FA0E3 MOV R1,#+256 \ 00000930 18008DE2 ADD R0,SP,#+24 \ 00000934 1D0100EF SWI +285 3941 strcpy(s,t->name); \ 00000938 141089E2 ADD R1,R9,#+20 \ 0000093C 18008DE2 ADD R0,SP,#+24 \ 00000940 1A0000EF SWI +26 3942 strcat(s,":\n"); \ 00000944 591F8FE2 ADR R1,??ProcessPacket_12 ;; ":\n" \ 00000948 18008DE2 ADD R0,SP,#+24 \ 0000094C 170000EF SWI +23 3943 i=strlen(s); \ 00000950 18008DE2 ADD R0,SP,#+24 \ 00000954 1B0000EF SWI +27 3944 j=p->data[0]; \ 00000958 0860D4E5 LDRB R6,[R4, #+8] \ 0000095C 0070A0E1 MOV R7,R0 3945 if (j>(255-i)) j=255-i; \ 00000960 FF0067E2 RSB R0,R7,#+255 \ 00000964 060050E1 CMP R0,R6 \ 00000968 0060A0B1 MOVLT R6,R0 3946 strncpy(s+i,p->data+1,j); \ 0000096C 0620A0E1 MOV R2,R6 \ 00000970 091084E2 ADD R1,R4,#+9 \ 00000974 18008DE2 ADD R0,SP,#+24 \ 00000978 000087E0 ADD R0,R7,R0 \ 0000097C 160100EF SWI +278 3947 i+=j; \ 00000980 070086E0 ADD R0,R6,R7 3948 if (i<255) \ 00000984 FF0050E3 CMP R0,#+255 \ 00000988 100000AA BGE ??ProcessPacket_42 3949 { 3950 s[i]='\n'; \ 0000098C 18108DE2 ADD R1,SP,#+24 \ 00000990 0A20A0E3 MOV R2,#+10 \ 00000994 0120C0E7 STRB R2,[R0, +R1] 3951 i++; \ 00000998 0810D4E5 LDRB R1,[R4, #+8] \ 0000099C B620D4E1 LDRH R2,[R4, #+6] \ 000009A0 010080E2 ADD R0,R0,#+1 3952 j=p->pkt.data_len-p->data[0]-1; 3953 if (j>(255-i)) j=255-i; 3954 strncpy(s+i,p->data+p->data[0]+1,j); \ 000009A4 18308DE2 ADD R3,SP,#+24 \ 000009A8 012042E0 SUB R2,R2,R1 \ 000009AC 016042E2 SUB R6,R2,#+1 \ 000009B0 FF2060E2 RSB R2,R0,#+255 \ 000009B4 060052E1 CMP R2,R6 \ 000009B8 0260A0B1 MOVLT R6,R2 \ 000009BC 0620A0E1 MOV R2,R6 \ 000009C0 041081E0 ADD R1,R1,R4 \ 000009C4 091081E2 ADD R1,R1,#+9 \ 000009C8 030080E0 ADD R0,R0,R3 \ 000009CC 160100EF SWI +278 3955 } 3956 // if (IsGuiOnTop(contactlist_menu_id)) RefreshGUI(); 3957 //if (!edchat_id && // Только если редактор не наверху 3958 // strlen(p->data)) // и x-status не пустой 3959 // ShowMSG(0,(int)s); 3960 3961 /* 3962 #ifdef EVILFOX 3963 #else 3964 if (!edchat_id) ShowMSG(0,(int)s); // Только если редактор не наверху 3965 #endif 3966 */ 3967 zeromem(s,256); \ ??ProcessPacket_42: \ 000009D0 401FA0E3 MOV R1,#+256 \ 000009D4 18008DE2 ADD R0,SP,#+24 \ 000009D8 1D0100EF SWI +285 3968 i=0; 3969 j=p->data[0]; \ 000009DC 0860D4E5 LDRB R6,[R4, #+8] 3970 if (j>(255-i)) j=255-i; 3971 strncpy(s,p->data+1,j); \ 000009E0 091084E2 ADD R1,R4,#+9 \ 000009E4 18008DE2 ADD R0,SP,#+24 \ 000009E8 400F56E3 CMP R6,#+256 \ 000009EC FF60A0A3 MOVGE R6,#+255 \ 000009F0 0620A0E1 MOV R2,R6 \ 000009F4 160100EF SWI +278 3972 i+=j; 3973 if (i<255) \ 000009F8 FF0056E3 CMP R6,#+255 \ 000009FC 100000AA BGE ??ProcessPacket_43 3974 { 3975 s[i++]=13; \ 00000A00 18108DE2 ADD R1,SP,#+24 \ 00000A04 0D20A0E3 MOV R2,#+13 \ 00000A08 0120C6E7 STRB R2,[R6, +R1] \ 00000A0C 0810D4E5 LDRB R1,[R4, #+8] \ 00000A10 B620D4E1 LDRH R2,[R4, #+6] \ 00000A14 010086E2 ADD R0,R6,#+1 3976 j=p->pkt.data_len-p->data[0]-1; 3977 if (j>(255-i)) j=255-i; 3978 strncpy(s+i,p->data+p->data[0]+1,j); \ 00000A18 18308DE2 ADD R3,SP,#+24 \ 00000A1C 012042E0 SUB R2,R2,R1 \ 00000A20 016042E2 SUB R6,R2,#+1 \ 00000A24 FF2060E2 RSB R2,R0,#+255 \ 00000A28 060052E1 CMP R2,R6 \ 00000A2C 0260A0B1 MOVLT R6,R2 \ 00000A30 0620A0E1 MOV R2,R6 \ 00000A34 041081E0 ADD R1,R1,R4 \ 00000A38 091081E2 ADD R1,R1,#+9 \ 00000A3C 030080E0 ADD R0,R0,R3 \ 00000A40 160100EF SWI +278 3979 } 3980 AddStringToLog(t,0x03,s,x_status_change,0xFFFFFFFF); \ ??ProcessPacket_43: \ 00000A44 0800E0E1 MVN R0,R8 \ 00000A48 01002DE9 PUSH {R0} \ 00000A4C 1C208DE2 ADD R2,SP,#+28 \ 00000A50 0310A0E3 MOV R1,#+3 \ 00000A54 5C00A0E3 MOV R0,#+92 \ 00000A58 700E80E3 ORR R0,R0,#0x700 \ 00000A5C 053080E0 ADD R3,R0,R5 \ 00000A60 0900A0E1 MOV R0,R9 \ 00000A64 ........ BL AddStringToLog 3981 ReqAddMsgToChat(t); \ 00000A68 0900A0E1 MOV R0,R9 \ 00000A6C ........ BL ReqAddMsgToChat 3982 if (strlen(p->data)) // Если x-status не пустой \ 00000A70 080084E2 ADD R0,R4,#+8 \ 00000A74 1B0000EF SWI +27 \ 00000A78 000050E3 CMP R0,#+0 \ 00000A7C 04D08DE2 ADD SP,SP,#+4 3983 RecountMenu(t, 1); \ 00000A80 0110A013 MOVNE R1,#+1 \ 00000A84 0900A011 MOVNE R0,R9 \ 00000A88 90FDFF1A BNE ??ProcessPacket_8 3984 else 3985 RecountMenu(NULL, 0); \ 00000A8C 0010A0E3 MOV R1,#+0 \ 00000A90 0100A0E1 MOV R0,R1 \ 00000A94 8DFDFFEA B ??ProcessPacket_8 3986 } 3987 break; 3988 case T_LASTPRIVACY: 3989 CurrentPrivateStatus=p->data[0]; \ ??ProcessPacket_44: \ 00000A98 0800D4E5 LDRB R0,[R4, #+8] \ 00000A9C 780187E5 STR R0,[R7, #+376] 3990 break; 3991 } 3992 mfree(p); \ ??ProcessPacket_1: \ 00000AA0 0400A0E1 MOV R0,R4 \ 00000AA4 150000EF SWI +21 3993 } \ 00000AA8 50DF8DE2 ADD SP,SP,#+320 \ 00000AAC F08FBDE8 POP {R4-R11,PC} ;; return \ ??ProcessPacket_12: \ 00000AB0 3A0A0000 DC8 ":\n",+0 \ 00000AB4 ........ DC32 isLogOnline \ 00000AB8 ........ DC32 ENA_AUTO_XTXT \ 00000ABC ........ DC32 sndGlobal \ 00000AC0 ........ DC32 sndGlobal2 \ 00000AC4 ........ DC32 sndSrvMsg \ 00000AC8 ........ DC32 isLogOffline \ 00000ACC ........ DC32 ILL_RECV_FADE \ 00000AD0 ........ DC32 ILL_RECV_TMR \ 00000AD4 ........ DC32 ILL_KEYS_RECV \ 00000AD8 ........ DC32 ILL_DISP_RECV \ 00000ADC ........ DC32 DEVELOP_IF \ 00000AE0 ........ DC32 ILL_SEND_TMR \ 00000AE4 ........ DC32 ILL_KEYS_SEND \ 00000AE8 ........ DC32 ILL_DISP_SEND 3994 3995 3996 IPC_REQ tmr_gipc; \ In segment CODE, align 4, keep-with-next 3997 void process_active_timer(void) 3998 { \ process_active_timer: \ 00000000 30402DE9 PUSH {R4,R5,LR} 3999 if (connect_state>2) \ 00000004 ........ LDR R5,??DataTable133 ;; S_ICONS \ 00000008 0040A0E3 MOV R4,#+0 \ 0000000C 8C0195E5 LDR R0,[R5, #+396] \ 00000010 030050E3 CMP R0,#+3 \ 00000014 070000BA BLT ??process_active_timer_0 4000 { 4001 if (++tenseconds_to_ping>12) \ 00000018 C80195E5 LDR R0,[R5, #+456] \ 0000001C 010080E2 ADD R0,R0,#+1 \ 00000020 C80185E5 STR R0,[R5, #+456] \ 00000024 0D0050E3 CMP R0,#+13 \ 00000028 020000BA BLT ??process_active_timer_0 4002 { 4003 tenseconds_to_ping=0; 4004 SUBPROC((void *)do_ping); \ 0000002C 5C009FE5 LDR R0,??process_active_timer_1 ;; do_ping \ 00000030 C84185E5 STR R4,[R5, #+456] \ 00000034 710100EF SWI +369 4005 } 4006 } 4007 tmr_gipc.name_to=ipc_my_name; \ ??process_active_timer_0: \ 00000038 ........ LDR R1,??DataTable134 ;; `?` \ 0000003C 3400A0E3 MOV R0,#+52 \ 00000040 700E80E3 ORR R0,R0,#0x700 \ 00000044 012080E0 ADD R2,R0,R1 \ 00000048 D42085E5 STR R2,[R5, #+212] 4008 tmr_gipc.name_from=ipc_my_name; \ 0000004C 010080E0 ADD R0,R0,R1 \ 00000050 D80085E5 STR R0,[R5, #+216] 4009 tmr_gipc.data=NULL; \ 00000054 DC4085E5 STR R4,[R5, #+220] 4010 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_TENSECONDS,&tmr_gipc); \ 00000058 D43085E2 ADD R3,R5,#+212 \ 0000005C 0420A0E3 MOV R2,#+4 \ 00000060 B010A0E3 MOV R1,#+176 \ 00000064 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000068 0900A0E3 MOV R0,#+9 \ 0000006C 420C80E3 ORR R0,R0,#0x4200 \ 00000070 000100EF SWI +256 4011 GBS_StartTimerProc(&tmr_active,TMR_SECOND*10,process_active_timer); \ 00000074 ........ LDR R2,??DataTable146 ;; process_active_timer \ 00000078 871EA0E3 MOV R1,#+2160 \ 0000007C 6400A0E3 MOV R0,#+100 \ 00000080 600D80E3 ORR R0,R0,#0x1800 \ 00000084 050080E0 ADD R0,R0,R5 \ 00000088 4D0000EF SWI +77 4012 } \ 0000008C 3080BDE8 POP {R4,R5,PC} ;; return \ ??process_active_timer_1: \ 00000090 ........ DC32 do_ping 4013 4014 4015 //=============================================================================================== 4016 \ In segment CODE, align 4, keep-with-next 4017 void method0(MAIN_GUI *data) 4018 { \ method0: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 14D04DE2 SUB SP,SP,#+20 4019 int scr_w=ScreenW(); 4020 int scr_h=ScreenH(); 4021 int pos_status;//2026rev 4022 int pm = pictures_max, pl = pictures_loaded;//2026rev 4023 /* DrawRoundedFrame(0,YDISP,scr_w-1,scr_h-1,0,0,0, 4024 GetPaletteAdrByColorIndex(0), 4025 GetPaletteAdrByColorIndex(20));*/ 4026 4027 DrawRectangle(0,YDISP,scr_w-1,scr_h-1,0, 4028 GetPaletteAdrByColorIndex(1), 4029 GetPaletteAdrByColorIndex(1)); 4030 4031 DrawImg(0,0,S_ICONS[ICON_LOGO]); 4032 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //by BoBa 10.07 4033 wsprintf(data->ws1,LG_GRSTATESTRING,connect_state,RXstate,RX,TX,sendq_l,hostname,logmsg); \ 00000008 ........ LDR R7,??DataTable156 ;; `?` \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 888100EF SWI +33160 \ 00000014 04008DE5 STR R0,[SP, #+4] \ 00000018 898100EF SWI +33161 \ 0000001C C0139FE5 LDR R1,??method0_0 ;; pictures_max \ 00000020 0050A0E1 MOV R5,R0 \ 00000024 001091E5 LDR R1,[R1, #+0] \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 08108DE5 STR R1,[SP, #+8] \ 00000030 B0139FE5 LDR R1,??method0_0+0x4 ;; pictures_loaded \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 0C108DE5 STR R1,[SP, #+12] \ 0000003C 2E0100EF SWI +302 \ 00000040 0060A0E1 MOV R6,R0 \ 00000044 0100A0E3 MOV R0,#+1 \ 00000048 2E0100EF SWI +302 \ 0000004C 04209DE5 LDR R2,[SP, #+4] \ 00000050 013045E2 SUB R3,R5,#+1 \ 00000054 012042E2 SUB R2,R2,#+1 \ 00000058 00208DE5 STR R2,[SP, #+0] \ 0000005C 40002DE9 PUSH {R6} \ 00000060 ........ LDR R6,??DataTable137 ;; S_ICONS \ 00000064 01002DE9 PUSH {R0} \ 00000068 1810A0E3 MOV R1,#+24 \ 0000006C 0000A0E3 MOV R0,#+0 \ 00000070 01002DE9 PUSH {R0} \ 00000074 B40100EF SWI +436 \ 00000078 502096E5 LDR R2,[R6, #+80] \ 0000007C 0010A0E3 MOV R1,#+0 \ 00000080 0000A0E3 MOV R0,#+0 \ 00000084 230000EF SWI +35 \ 00000088 9C0196E5 LDR R0,[R6, #+412] \ 0000008C A01196E5 LDR R1,[R6, #+416] \ 00000090 3420A0E3 MOV R2,#+52 \ 00000094 5C2D82E3 ORR R2,R2,#0x1700 \ 00000098 062082E0 ADD R2,R2,R6 \ 0000009C 04002DE9 PUSH {R2} \ 000000A0 3420A0E3 MOV R2,#+52 \ 000000A4 642D82E3 ORR R2,R2,#0x1900 \ 000000A8 062082E0 ADD R2,R2,R6 \ 000000AC 04002DE9 PUSH {R2} \ 000000B0 A42196E5 LDR R2,[R6, #+420] \ 000000B4 04002DE9 PUSH {R2} \ 000000B8 02002DE9 PUSH {R1} \ 000000BC 01002DE9 PUSH {R0} \ 000000C0 883196E5 LDR R3,[R6, #+392] \ 000000C4 8C2196E5 LDR R2,[R6, #+396] \ 000000C8 E800A0E3 MOV R0,#+232 \ 000000CC 400E80E3 ORR R0,R0,#0x400 \ 000000D0 071080E0 ADD R1,R0,R7 \ 000000D4 340094E5 LDR R0,[R4, #+52] \ 000000D8 240100EF SWI +292 4034 if(pm != pl) \ 000000DC 28009DE5 LDR R0,[SP, #+40] \ 000000E0 2C109DE5 LDR R1,[SP, #+44] \ 000000E4 20D08DE2 ADD SP,SP,#+32 \ 000000E8 010050E1 CMP R0,R1 \ 000000EC 4600000A BEQ ??method0_1 4035 { 4036 DrawRectangle(0,scr_h-4-2*GetFontYSIZE(FONT_SMALL_BOLD),scr_w-1,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD)-2,0, 4037 GetPaletteAdrByColorIndex(0), 4038 GetPaletteAdrByColorIndex(0)); \ 000000F0 0000A0E3 MOV R0,#+0 \ 000000F4 2E0100EF SWI +302 \ 000000F8 0080A0E1 MOV R8,R0 \ 000000FC 0000A0E3 MOV R0,#+0 \ 00000100 2E0100EF SWI +302 \ 00000104 0090A0E1 MOV R9,R0 \ 00000108 0500A0E3 MOV R0,#+5 \ 0000010C C50100EF SWI +453 \ 00000110 00A0A0E1 MOV R10,R0 \ 00000114 0900A0E3 MOV R0,#+9 \ 00000118 C50100EF SWI +453 \ 0000011C 00012DE9 PUSH {R8} \ 00000120 00022DE9 PUSH {R9} \ 00000124 0010A0E3 MOV R1,#+0 \ 00000128 02002DE9 PUSH {R1} \ 0000012C 0C209DE5 LDR R2,[SP, #+12] \ 00000130 04B045E2 SUB R11,R5,#+4 \ 00000134 0A104BE0 SUB R1,R11,R10 \ 00000138 023041E2 SUB R3,R1,#+2 \ 0000013C 80104BE0 SUB R1,R11,R0, LSL #+1 \ 00000140 0000A0E3 MOV R0,#+0 \ 00000144 B40100EF SWI +436 4039 pos_status = ((scr_w-1) * pl) / pm; 4040 DrawRectangle(1,scr_h-4-2*GetFontYSIZE(FONT_SMALL_BOLD)+1,pos_status,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD)-3,0, 4041 GetPaletteAdrByColorIndex(14), 4042 GetPaletteAdrByColorIndex(14)); \ 00000148 0E00A0E3 MOV R0,#+14 \ 0000014C 2E0100EF SWI +302 \ 00000150 0080A0E1 MOV R8,R0 \ 00000154 0E00A0E3 MOV R0,#+14 \ 00000158 2E0100EF SWI +302 \ 0000015C 0090A0E1 MOV R9,R0 \ 00000160 0500A0E3 MOV R0,#+5 \ 00000164 C50100EF SWI +453 \ 00000168 1C008DE5 STR R0,[SP, #+28] \ 0000016C 0900A0E3 MOV R0,#+9 \ 00000170 C50100EF SWI +453 \ 00000174 00A0A0E1 MOV R10,R0 \ 00000178 00012DE9 PUSH {R8} \ 0000017C 00022DE9 PUSH {R9} \ 00000180 0000A0E3 MOV R0,#+0 \ 00000184 01002DE9 PUSH {R0} \ 00000188 24109DE5 LDR R1,[SP, #+36] \ 0000018C 28009DE5 LDR R0,[SP, #+40] \ 00000190 00004BE0 SUB R0,R11,R0 \ 00000194 033040E2 SUB R3,R0,#+3 \ 00000198 18009DE5 LDR R0,[SP, #+24] \ 0000019C 910000E0 MUL R0,R1,R0 \ 000001A0 20109DE5 LDR R1,[SP, #+32] \ 000001A4 ........ _BLF ??div32_a,??rA??div32_a \ 000001A8 0120A0E1 MOV R2,R1 \ 000001AC 8A004BE0 SUB R0,R11,R10, LSL #+1 \ 000001B0 011080E2 ADD R1,R0,#+1 \ 000001B4 0100A0E3 MOV R0,#+1 \ 000001B8 B40100EF SWI +436 4043 // wstrcatprintf(data->ws1,"\nLoading images..."); 4044 4045 if(total_smiles) \ 000001BC 28029FE5 LDR R0,??method0_0+0x8 ;; total_smiles \ 000001C0 001090E5 LDR R1,[R0, #+0] \ 000001C4 18D08DE2 ADD SP,SP,#+24 \ 000001C8 000051E3 CMP R1,#+0 \ 000001CC 0300000A BEQ ??method0_2 4046 { 4047 wstrcatprintf(data->ws1,"\nLoaded %d smiles",total_smiles); \ 000001D0 002090E5 LDR R2,[R0, #+0] \ 000001D4 340094E5 LDR R0,[R4, #+52] \ 000001D8 521E87E2 ADD R1,R7,#+1312 \ 000001DC 160200EF SWI +534 4048 } 4049 if (xstatuses_load) \ ??method0_2: \ 000001E0 08029FE5 LDR R0,??method0_0+0xC ;; xstatuses_load \ 000001E4 000090E5 LDR R0,[R0, #+0] \ 000001E8 000050E3 CMP R0,#+0 \ 000001EC 0600000A BEQ ??method0_1 4050 { 4051 wstrcatprintf(data->ws1,"\nLoaded %d xstatus",total_xstatuses); \ 000001F0 ........ LDR R0,??DataTable138 ;; total_xstatuses \ 000001F4 002090E5 LDR R2,[R0, #+0] \ 000001F8 3400A0E3 MOV R0,#+52 \ 000001FC 500E80E3 ORR R0,R0,#0x500 \ 00000200 071080E0 ADD R1,R0,R7 \ 00000204 340094E5 LDR R0,[R4, #+52] \ 00000208 160200EF SWI +534 4052 } 4053 } 4054 #ifdef kluchnik 4055 DrawString(data->ws1,3,3+YDISP,scr_w-4,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD), 4056 FONT_SMALL,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 4057 wsprintf(data->ws2,percent_t,LG_GRSKEYEXIT); 4058 DrawString(data->ws2,(scr_w >> 1),scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD), 4059 scr_w-4,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNRIGHT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 4060 wsprintf(data->ws2,percent_t,cltop?LG_GRSKEYCLIST:empty_str); 4061 DrawString(data->ws2,3,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD), 4062 scr_w>>1,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 4063 #else 4064 DrawString(data->ws1,3,3+YDISP,scr_w-4,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD), 4065 FONT_SMALL,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ ??method0_1: \ 0000020C 1700A0E3 MOV R0,#+23 \ 00000210 2E0100EF SWI +302 \ 00000214 0090A0E1 MOV R9,R0 \ 00000218 0000A0E3 MOV R0,#+0 \ 0000021C 2E0100EF SWI +302 \ 00000220 00A0A0E1 MOV R10,R0 \ 00000224 0500A0E3 MOV R0,#+5 \ 00000228 C50100EF SWI +453 \ 0000022C 04109DE5 LDR R1,[SP, #+4] \ 00000230 00022DE9 PUSH {R9} \ 00000234 048041E2 SUB R8,R1,#+4 \ 00000238 00042DE9 PUSH {R10} \ 0000023C 0010A0E3 MOV R1,#+0 \ 00000240 02002DE9 PUSH {R1} \ 00000244 04B045E2 SUB R11,R5,#+4 \ 00000248 00004BE0 SUB R0,R11,R0 \ 0000024C 0830A0E1 MOV R3,R8 \ 00000250 0810A0E3 MOV R1,#+8 \ 00000254 02002DE9 PUSH {R1} \ 00000258 01002DE9 PUSH {R0} \ 0000025C 340094E5 LDR R0,[R4, #+52] \ 00000260 1B20A0E3 MOV R2,#+27 \ 00000264 0310A0E3 MOV R1,#+3 \ 00000268 4C0100EF SWI +332 4066 wsprintf(data->ws2,percent_t,cltop?LG_GRSKEYCLIST:empty_str); \ 0000026C B40196E5 LDR R0,[R6, #+436] \ 00000270 14D08DE2 ADD SP,SP,#+20 \ 00000274 000050E3 CMP R0,#+0 \ 00000278 0300000A BEQ ??method0_3 \ 0000027C 4800A0E3 MOV R0,#+72 \ 00000280 500E80E3 ORR R0,R0,#0x500 \ 00000284 072080E0 ADD R2,R0,R7 \ 00000288 000000EA B ??method0_4 \ ??method0_3: \ 0000028C 162087E2 ADD R2,R7,#+22 \ ??method0_4: \ 00000290 380094E5 LDR R0,[R4, #+56] \ 00000294 101087E2 ADD R1,R7,#+16 \ 00000298 240100EF SWI +292 4067 DrawString(data->ws2,(scr_w >> 1),scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD), 4068 scr_w-4,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNRIGHT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 0000029C 1700A0E3 MOV R0,#+23 \ 000002A0 2E0100EF SWI +302 \ 000002A4 0060A0E1 MOV R6,R0 \ 000002A8 0000A0E3 MOV R0,#+0 \ 000002AC 2E0100EF SWI +302 \ 000002B0 0090A0E1 MOV R9,R0 \ 000002B4 0500A0E3 MOV R0,#+5 \ 000002B8 C50100EF SWI +453 \ 000002BC 04109DE5 LDR R1,[SP, #+4] \ 000002C0 40002DE9 PUSH {R6} \ 000002C4 C1A0A0E1 ASR R10,R1,#+1 \ 000002C8 00022DE9 PUSH {R9} \ 000002CC 0410A0E3 MOV R1,#+4 \ 000002D0 02002DE9 PUSH {R1} \ 000002D4 0830A0E1 MOV R3,R8 \ 000002D8 00204BE0 SUB R2,R11,R0 \ 000002DC 0510A0E3 MOV R1,#+5 \ 000002E0 02002DE9 PUSH {R1} \ 000002E4 0B10A0E1 MOV R1,R11 \ 000002E8 02002DE9 PUSH {R1} \ 000002EC 380094E5 LDR R0,[R4, #+56] \ 000002F0 0A10A0E1 MOV R1,R10 \ 000002F4 4C0100EF SWI +332 4069 wsprintf(data->ws2,percent_t,LG_GRSKEYEXIT); \ 000002F8 380094E5 LDR R0,[R4, #+56] \ 000002FC 552E87E2 ADD R2,R7,#+1360 \ 00000300 101087E2 ADD R1,R7,#+16 \ 00000304 240100EF SWI +292 4070 DrawString(data->ws2,3,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD), 4071 scr_w>>1,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000308 1700A0E3 MOV R0,#+23 \ 0000030C 2E0100EF SWI +302 \ 00000310 0060A0E1 MOV R6,R0 \ 00000314 0000A0E3 MOV R0,#+0 \ 00000318 2E0100EF SWI +302 \ 0000031C 0090A0E1 MOV R9,R0 \ 00000320 0500A0E3 MOV R0,#+5 \ 00000324 C50100EF SWI +453 \ 00000328 40002DE9 PUSH {R6} \ 0000032C 00022DE9 PUSH {R9} \ 00000330 0110A0E3 MOV R1,#+1 \ 00000334 02002DE9 PUSH {R1} \ 00000338 00204BE0 SUB R2,R11,R0 \ 0000033C 0A30A0E1 MOV R3,R10 \ 00000340 0510A0E3 MOV R1,#+5 \ 00000344 02002DE9 PUSH {R1} \ 00000348 0B10A0E1 MOV R1,R11 \ 0000034C 02002DE9 PUSH {R1} \ 00000350 380094E5 LDR R0,[R4, #+56] \ 00000354 0310A0E3 MOV R1,#+3 \ 00000358 4C0100EF SWI +332 \ 0000035C 28D08DE2 ADD SP,SP,#+40 4072 // DrawImg(15,200,(int)"4:\\zbin\\naticq\\img\\smiles_logo.png"); 4073 wsprintf(data->ws2,percent_t,"Mod Evilfox(c), Windes, kluchnik"); \ 00000360 5800A0E3 MOV R0,#+88 \ 00000364 500E80E3 ORR R0,R0,#0x500 \ 00000368 072080E0 ADD R2,R0,R7 \ 0000036C 380094E5 LDR R0,[R4, #+56] \ 00000370 101087E2 ADD R1,R7,#+16 \ 00000374 240100EF SWI +292 4074 DrawString(data->ws2,3,scr_h-GetFontYSIZE(FONT_MEDIUM_BOLD)-GetFontYSIZE(FONT_MEDIUM_BOLD)-40, 4075 scr_w-4,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(7),GetPaletteAdrByColorIndex(23)); \ 00000378 1700A0E3 MOV R0,#+23 \ 0000037C 2E0100EF SWI +302 \ 00000380 0070A0E1 MOV R7,R0 \ 00000384 0700A0E3 MOV R0,#+7 \ 00000388 2E0100EF SWI +302 \ 0000038C 0090A0E1 MOV R9,R0 \ 00000390 0500A0E3 MOV R0,#+5 \ 00000394 C50100EF SWI +453 \ 00000398 0060A0E1 MOV R6,R0 \ 0000039C 0500A0E3 MOV R0,#+5 \ 000003A0 C50100EF SWI +453 \ 000003A4 80002DE9 PUSH {R7} \ 000003A8 00022DE9 PUSH {R9} \ 000003AC 0110A0E3 MOV R1,#+1 \ 000003B0 02002DE9 PUSH {R1} \ 000003B4 0830A0E1 MOV R3,R8 \ 000003B8 0510A0E3 MOV R1,#+5 \ 000003BC 02002DE9 PUSH {R1} \ 000003C0 00082DE9 PUSH {R11} \ 000003C4 061045E0 SUB R1,R5,R6 \ 000003C8 000041E0 SUB R0,R1,R0 \ 000003CC 282040E2 SUB R2,R0,#+40 \ 000003D0 380094E5 LDR R0,[R4, #+56] \ 000003D4 0310A0E3 MOV R1,#+3 \ 000003D8 4C0100EF SWI +332 4076 #endif 4077 } \ 000003DC 28D08DE2 ADD SP,SP,#+40 \ 000003E0 F08FBDE8 POP {R4-R11,PC} ;; return \ ??method0_0: \ 000003E4 ........ DC32 pictures_max \ 000003E8 ........ DC32 pictures_loaded \ 000003EC ........ DC32 total_smiles \ 000003F0 ........ DC32 xstatuses_load 4078 \ In segment CODE, align 4, keep-with-next 4079 void method1(MAIN_GUI *data,void *(*malloc_adr)(int)) 4080 { \ method1: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 4081 data->ws1=AllocWS(256); \ 00000008 400FA0E3 MOV R0,#+256 \ 0000000C 250100EF SWI +293 \ 00000010 340084E5 STR R0,[R4, #+52] 4082 data->ws2=AllocWS(256); \ 00000014 400FA0E3 MOV R0,#+256 \ 00000018 250100EF SWI +293 \ 0000001C 380084E5 STR R0,[R4, #+56] 4083 data->gui.state=1; \ 00000020 0100A0E3 MOV R0,#+1 \ 00000024 0C00C4E5 STRB R0,[R4, #+12] 4084 } \ 00000028 1080BDE8 POP {R4,PC} ;; return 4085 \ In segment CODE, align 4, keep-with-next 4086 void method2(MAIN_GUI *data,void (*mfree_adr)(void *)) 4087 { \ method2: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 4088 FreeWS(data->ws1); \ 00000008 340094E5 LDR R0,[R4, #+52] \ 0000000C 290100EF SWI +297 4089 FreeWS(data->ws2); \ 00000010 380094E5 LDR R0,[R4, #+56] \ 00000014 290100EF SWI +297 4090 data->gui.state=0; \ 00000018 0000A0E3 MOV R0,#+0 \ 0000001C 0C00C4E5 STRB R0,[R4, #+12] 4091 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 4092 \ In segment CODE, align 4, keep-with-next 4093 void method3(MAIN_GUI *data,void *(*malloc_adr)(int),void (*mfree_adr)(void *)) 4094 { \ method3: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 4095 DisableIDLETMR(); \ 00000008 7F0100EF SWI +383 4096 data->gui.state=2; \ 0000000C 0200A0E3 MOV R0,#+2 \ 00000010 0C00C4E5 STRB R0,[R4, #+12] 4097 } \ 00000014 1080BDE8 POP {R4,PC} ;; return 4098 \ In segment CODE, align 4, keep-with-next 4099 void method4(MAIN_GUI *data,void (*mfree_adr)(void *)) 4100 { 4101 if (data->gui.state!=2) \ method4: \ 00000000 0C10D0E5 LDRB R1,[R0, #+12] \ 00000004 020051E3 CMP R1,#+2 4102 return; 4103 data->gui.state=1; \ 00000008 0110A003 MOVEQ R1,#+1 \ 0000000C 0C10C005 STRBEQ R1,[R0, #+12] 4104 } \ 00000010 1EFF2FE1 BX LR ;; return 4105 \ In segment CODE, align 4, keep-with-next 4106 int method5(MAIN_GUI *data,GUI_MSG *msg) 4107 { \ method5: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0140A0E1 MOV R4,R1 4108 DirectRedrawGUI(); \ 0000000C 3F0100EF SWI +319 4109 if (msg->gbsmsg->msg==KEY_DOWN) \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 9320A0E3 MOV R2,#+147 \ 00000018 041090E5 LDR R1,[R0, #+4] \ 0000001C 402F82E3 ORR R2,R2,#0x100 \ 00000020 020051E1 CMP R1,R2 \ 00000024 2600001A BNE ??method5_0 4110 { 4111 switch(msg->gbsmsg->submess) \ 00000028 ........ LDR R5,??DataTable155 ;; S_ICONS \ 0000002C 080090E5 LDR R0,[R0, #+8] \ 00000030 ........ LDR R4,??DataTable154 ;; create_connect \ 00000034 5410A0E3 MOV R1,#+84 \ 00000038 601D81E3 ORR R1,R1,#0x1800 \ 0000003C 056081E0 ADD R6,R1,R5 \ 00000040 0370A0E3 MOV R7,#+3 \ 00000044 010050E2 SUBS R0,R0,#+1 \ 00000048 0600000A BEQ ??method5_1 \ 0000004C 030050E2 SUBS R0,R0,#+3 \ 00000050 0600000A BEQ ??method5_2 \ 00000054 070050E2 SUBS R0,R0,#+7 \ 00000058 0A00000A BEQ ??method5_3 \ 0000005C 250050E2 SUBS R0,R0,#+37 \ 00000060 1000000A BEQ ??method5_4 \ 00000064 050000EA B ??method5_5 4112 { 4113 #ifdef kluchnik 4114 case LEFT_SOFT: 4115 if (cltop) create_contactlist_menu(); 4116 // if (cltop) remake_clmenu(); 4117 break; 4118 case RIGHT_SOFT: 4119 return(1); //Происходит вызов GeneralFunc для тек. GUI -> закрытие GUI 4120 #else 4121 case LEFT_SOFT: 4122 return(1); //Происходит вызов GeneralFunc для тек. GUI -> закрытие GUI \ ??method5_1: \ 00000068 0100A0E3 MOV R0,#+1 \ 0000006C F280BDE8 POP {R1,R4-R7,PC} 4123 case RIGHT_SOFT: 4124 // if (cltop) remake_clmenu(); 4125 if (cltop) create_contactlist_menu(); \ ??method5_2: \ 00000070 B40195E5 LDR R0,[R5, #+436] \ 00000074 000050E3 CMP R0,#+0 \ 00000078 F280BD08 POPEQ {R1,R4-R7,PC} \ 0000007C ........ BL create_contactlist_menu \ ??method5_5: \ 00000080 0000A0E3 MOV R0,#+0 \ 00000084 F280BDE8 POP {R1,R4-R7,PC} 4126 break; 4127 #endif 4128 case GREEN_BUTTON: 4129 disautorecconect=0; \ ??method5_3: \ 00000088 0000A0E3 MOV R0,#+0 \ 0000008C 600185E5 STR R0,[R5, #+352] 4130 if ((connect_state==0)&&(sock==-1)) \ 00000090 8C0195E5 LDR R0,[R5, #+396] \ 00000094 000050E3 CMP R0,#+0 \ 00000098 90019505 LDREQ R0,[R5, #+400] \ 0000009C 01007003 CMNEQ R0,#+1 \ 000000A0 0700001A BNE ??method5_0 4131 { 4132 GBS_DelTimer(&reconnect_tmr); \ 000000A4 010000EA B ??method5_6 4133 DNR_TRIES=3; 4134 SUBPROC((void *)create_connect); 4135 } 4136 break; 4137 case '0': 4138 SUBPROC((void*)end_socket); \ ??method5_4: \ 000000A8 ........ LDR R0,??DataTable150 ;; end_socket \ 000000AC 710100EF SWI +369 4139 GBS_DelTimer(&reconnect_tmr); \ ??method5_6: \ 000000B0 0600A0E1 MOV R0,R6 \ 000000B4 8C0100EF SWI +396 4140 DNR_TRIES=3; \ 000000B8 D87185E5 STR R7,[R5, #+472] 4141 SUBPROC((void *)create_connect); \ 000000BC 0400A0E1 MOV R0,R4 \ 000000C0 710100EF SWI +369 4142 break; 4143 } 4144 } 4145 return(0); \ ??method5_0: \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 F280BDE8 POP {R1,R4-R7,PC} ;; return 4146 } 4147 \ In segment CODE, align 4, keep-with-next 4148 int method8(void){return(0);} \ method8: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 4149 \ In segment CODE, align 4, keep-with-next 4150 int method9(void){return(0);} \ method9: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 4151 4152 const void * const gui_methods[11]={ 4153 (void *)method0, //Redraw 4154 (void *)method1, //Create 4155 (void *)method2, //Close 4156 (void *)method3, //Focus 4157 (void *)method4, //Unfocus 4158 (void *)method5, //OnKey 4159 0, 4160 (void *)kill_data, //method7, //Destroy 4161 (void *)method8, 4162 (void *)method9, 4163 0 4164 }; 4165 4166 extern const int Reset_timer; \ In segment CODE, align 4, keep-with-next 4167 int my_keyhook(int key, int m) 4168 { \ my_keyhook: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 0050A0E1 MOV R5,R0 4169 if (m==KEY_DOWN) \ 00000008 9300A0E3 MOV R0,#+147 \ 0000000C 400F80E3 ORR R0,R0,#0x100 \ 00000010 000051E1 CMP R1,R0 \ 00000014 1F00001A BNE ??my_keyhook_0 4170 { 4171 if(change_back_status==1) \ 00000018 ........ LDR R4,??DataTable155 ;; S_ICONS \ 0000001C 0060A0E3 MOV R6,#+0 \ 00000020 400194E5 LDR R0,[R4, #+320] \ 00000024 010050E3 CMP R0,#+1 \ 00000028 0300001A BNE ??my_keyhook_1 4172 { 4173 CurrentStatus=status_rem; \ 0000002C 3C0194E5 LDR R0,[R4, #+316] \ 00000030 740184E5 STR R0,[R4, #+372] 4174 set_my_status(); \ 00000034 ........ BL set_my_status 4175 // SUBPROC((void*)WriteDefSettings); 4176 change_back_status=0; \ 00000038 406184E5 STR R6,[R4, #+320] 4177 } 4178 #ifdef EVILFOX 4179 if ((key==VOL_UP_BUTTON)&&(IsIdleUiOnTop())) 4180 { 4181 if(autobot==1) 4182 { 4183 autobot=0; 4184 ShowMSG(1,(int)"Autobot Off"); 4185 } 4186 else 4187 { 4188 autobot=1; 4189 ShowMSG(1,(int)"Autobot On"); 4190 } 4191 } 4192 #endif 4193 #ifdef ELKA 4194 #ifdef EVILFOX 4195 if ((key==VOL_DOWN_BUTTON)&&(IsIdleUiOnTop())) 4196 #else 4197 if ((key==CAMERA_BUTTON)&&(!IsUnlocked())) \ ??my_keyhook_1: \ 0000003C 140055E3 CMP R5,#+20 \ 00000040 0E00001A BNE ??my_keyhook_2 \ 00000044 430000EF SWI +67 \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 0B00001A BNE ??my_keyhook_2 4198 #endif 4199 { 4200 GBS_StopTimer(&away_tmr); \ 00000050 6400A0E3 MOV R0,#+100 \ 00000054 580D80E3 ORR R0,R0,#0x1600 \ 00000058 040080E0 ADD R0,R0,R4 \ 0000005C 440100EF SWI +324 4201 msg_away_timer=AUTO_ENGADE; \ 00000060 ........ LDR R0,??DataTable143 ;; AUTO_ENGADE \ 00000064 000090E5 LDR R0,[R0, #+0] \ 00000068 300184E5 STR R0,[R4, #+304] 4202 away_timer(); \ 0000006C ........ BL away_timer 4203 main_d=1; \ 00000070 0100A0E3 MOV R0,#+1 \ 00000074 E00084E5 STR R0,[R4, #+224] \ 00000078 0000A0E3 MOV R0,#+0 \ 0000007C 7080BDE8 POP {R4-R6,PC} 4204 } 4205 else 4206 { 4207 #endif 4208 if(Reset_timer) \ ??my_keyhook_2: \ 00000080 18009FE5 LDR R0,??my_keyhook_3 ;; Reset_timer \ 00000084 000090E5 LDR R0,[R0, #+0] \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 7080BD08 POPEQ {R4-R6,PC} 4209 { 4210 msg_away_timer=0; \ 00000090 306184E5 STR R6,[R4, #+304] 4211 away_m=0; \ 00000094 386184E5 STR R6,[R4, #+312] 4212 } 4213 #ifdef ELKA 4214 } 4215 #endif 4216 } 4217 return 0; \ ??my_keyhook_0: \ 00000098 0000A0E3 MOV R0,#+0 \ 0000009C 7080BDE8 POP {R4-R6,PC} ;; return \ ??my_keyhook_3: \ 000000A0 ........ DC32 Reset_timer 4218 } \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 B0B5041C0025 DC8 176, 181, 4, 28, 0, 37, 5, 97 \ 0561 4219 4220 const RECT Canvas={0,0,0,0}; \ Canvas: \ 00000008 000000000000 DC16 0, 0, 0, 0 \ 0000 \ percent_t: \ 00000010 257400 DC8 "%t" \ percent_d: \ 00000013 256400 DC8 "%d" \ empty_str: \ 00000016 00 DC8 "" \ I_str: \ 00000017 4900 DC8 "I" \ 00000019 000000 DC8 0, 0, 0 \ 0000001C C2F0E5ECFF20 DC8 "\302\360\345\354\377 \342 \356\355\353\340\351\355:\012%02d:%02d:%02d\012\321\345\360\342\345\360:\012%s" \ E220EEEDEBE0 \ E9ED3A0A2530 \ 32643A253032 \ 643A25303264 \ 0AD1E5F0E2E5 \ F03A0A257300 \ 00000046 0000 DC8 0, 0 \ 00000048 536F756E6420 DC8 "Sound 0n" \ 306E00 \ 00000051 000000 DC8 0, 0, 0 \ 00000054 536F756E6420 DC8 "Sound Off" \ 4F666600 \ 0000005E 0000 DC8 0, 0 \ 00000060 566962726120 DC8 "Vibra On" \ 4F6E00 \ 00000069 000000 DC8 0, 0, 0 \ 0000006C 566962726120 DC8 "Vibra Off" \ 4F666600 \ 00000076 0000 DC8 0, 0 \ 00000078 C8EDE2E8E720 DC8 "\310\355\342\350\347 \342\352\353\376\367\345\355" \ E2EAEBFEF7E5 \ ED00 \ 00000086 0000 DC8 0, 0 \ 00000088 C8EDE2E8E720 DC8 "\310\355\342\350\347 \342\373\352\353\376\367\345\355" \ E2FBEAEBFEF7 \ E5ED00 \ 00000097 00 DC8 0 \ 00000098 566962726120 DC8 "Vibra rem On" \ 72656D204F6E \ 00 \ 000000A5 000000 DC8 0, 0, 0 \ 000000A8 566962726120 DC8 "Vibra rem Off" \ 72656D204F66 \ 6600 \ 000000B6 0000 DC8 0, 0 \ 000000B8 C0E2F2EEEEF2 DC8 "\300\342\362\356\356\362\342\345\362\367\350\352 \342\352\353\376\367\345\355!" \ E2E5F2F7E8EA \ 20E2EAEBFEF7 \ E5ED2100 \ 000000CE 0000 DC8 0, 0 \ 000000D0 C0E2F2EEEEF2 DC8 "\300\342\362\356\356\362\342\345\362\367\350\352 \342\373\352\353\376\367\345\355!" \ E2E5F2F7E8EA \ 20E2FBEAEBFE \ F7E5ED2100 \ 000000E7 00 DC8 0 \ 000000E8 3E3E20257320 DC8 ">> %s <<" \ 3C3C00 \ 000000F1 000000 DC8 0, 0, 0 \ 000000F4 2563257400 DC8 "%c%t" \ 000000F9 000000 DC8 0, 0, 0 \ 000000FC 2825642F2564 DC8 "(%d/%d)" \ 2900 \ 00000104 EEF8E8E1EAE0 DC8 "\356\370\350\341\352\340" \ 00 \ 0000010B 00 DC8 0 \ 0000010C 426164207061 DC8 "Bad packet" \ 636B657400 \ 00000117 00 DC8 0 \ 00000118 534325643A20 DC8 "SC%d: %04X" \ 2530345800 \ 00000123 00 DC8 0 \ 00000124 4552523A2025 DC8 "ERR: %s" \ 7300 \ 0000012C 75696E256400 DC8 "uin%d" \ 00000132 0000 DC8 0, 0 \ 00000134 4D534725643A DC8 "MSG%d: %s" \ 20257300 \ 0000013E 0000 DC8 0, 0 \ 00000140 257325642E77 DC8 "%s%d.wav" \ 617600 \ 00000149 000000 DC8 0, 0, 0 \ 0000014C 50696E672025 DC8 "Ping %d-%d seconds!" \ 642D25642073 \ 65636F6E6473 \ 2100 \ 00000160 50696E673A20 DC8 "Ping: %dsec" \ 256473656300 \ 0000016C 6D6F64206279 DC8 6DH, 6FH, 64H, 20H, 62H, 79H, 20H, 45H \ 2045 \ 00000174 76696C666F78 DC8 76H, 69H, 6CH, 66H, 6FH, 78H, 2CH, 6BH \ 2C6B \ 0000017C 6C7563686E69 DC8 6CH, 75H, 63H, 68H, 6EH, 69H, 6BH, 20H \ 6B20 \ 00000184 626173656420 DC8 62H, 61H, 73H, 65H, 64H, 20H, 6FH, 6EH \ 6F6E \ 0000018C 207265766973 DC8 20H, 72H, 65H, 76H, 69H, 73H, 69H, 6FH \ 696F \ 00000194 6E2032303538 DC8 6EH, 20H, 32H, 30H, 35H, 38H, 2CH, 20H \ 2C20 \ 0000019C 6D6F64206461 DC8 6DH, 6FH, 64H, 20H, 64H, 61H, 74H, 65H \ 7465 \ 000001A4 3A2025732061 DC8 3AH, 20H, 25H, 73H, 20H, 61H, 74H, 20H \ 7420 \ 000001AC 25732000 DC8 25H, 73H, 20H, 0 \ 000001B0 466562203237 DC8 "Feb 27 2008" \ 203230303800 \ 000001BC 30303A32353A DC8 "00:25:17" \ 313700 \ 000001C5 000000 DC8 0, 0, 0 \ 000001C8 47414D453A00 DC8 "GAME:" \ 000001CE 0000 DC8 0, 0 \ 000001D0 C2F0E5ECFF20 DC8 "\302\360\345\354\377 \342 \356\355\353\340\351\355: %02d:%02d:%02d \012\321\345\360\342\345\360: %s" \ E220EEEDEBE0 \ E9ED3A202530 \ 32643A253032 \ 643A25303264 \ 200AD1E5F0E2 \ E5F03A202573 \ 00 \ 000001FB 00 DC8 0 \ 000001FC 4745545F4F4E DC8 "GET_ONLINE_TIME" \ 4C494E455F54 \ 494D4500 \ 0000020C CEF2EFF0E0E2 DC8 "\316\362\357\360\340\342\353\345\355\356 \361\356\356\341\371\345\355\350\351: %d \012\317\360\350\355\377\362\356 \361\356\356\341\371\345\355\350\351: %d" \ EBE5EDEE20F1 \ EEEEE1F9E5ED \ E8E93A202564 \ 200ACFF0E8ED \ FFF2EE20F1EE \ EEE1F9E5EDE8 \ E93A20256400 \ 0000023C 4745545F4D53 DC8 "GET_MSG_INFO" \ 475F494E464F \ 00 \ 00000249 000000 DC8 0, 0, 0 \ 0000024C CEEFE5F0E0F2 DC8 "\316\357\345\360\340\362\356\360: %s" \ EEF03A202573 \ 00 \ 00000259 000000 DC8 0, 0, 0 \ 0000025C 53656E64696E DC8 "Sending provider name..." \ 672070726F76 \ 69646572206E \ 616D652E2E2E \ 00 \ 00000275 000000 DC8 0, 0, 0 \ 00000278 4745545F5052 DC8 "GET_PROVIDER" \ 4F5649444552 \ 00 \ 00000285 000000 DC8 0, 0, 0 \ 00000288 2A2A2A416363 DC8 "***Access denied***" \ 657373206465 \ 6E6965642A2A \ 2A00 \ 0000029C 4745545F4D4F DC8 "GET_MOD_INFO" \ 445F494E464F \ 00 \ 000002A9 000000 DC8 0, 0, 0 \ 000002AC C7E0F0FFE420 DC8 "\307\340\360\377\344 \341\340\362\340\360\345\350: %d \357\360\356\366\345\355\362\356\342" \ E1E0F2E0F0E5 \ E83A20256420 \ EFF0EEF6E5ED \ F2EEE200 \ 000002C8 4745545F4241 DC8 "GET_BAT_INFO" \ 545F494E464F \ 00 \ 000002D5 000000 DC8 0, 0, 0 \ 000002D8 C0E2F2EEEEF2 DC8 "\300\342\362\356\356\362\342\345\362\367\350\352: %s %s! %s %s" \ E2E5F2F7E8EA \ 3A2025732025 \ 732120257320 \ 257300 \ 000002F3 00 DC8 0 \ 000002F4 726576697369 DC8 "revision 2058, mod date: %s at %s " \ 6F6E20323035 \ 382C206D6F64 \ 20646174653A \ 202573206174 \ 2025732000 \ 00000317 00 DC8 0 \ 00000318 687474703A2F DC8 68H, 74H, 74H, 70H, 3AH, 2FH, 2FH, 77H \ 2F77 \ 00000320 696E6465732E DC8 69H, 6EH, 64H, 65H, 73H, 2EH, 6EH, 61H \ 6E61 \ 00000328 726F642E7275 DC8 72H, 6FH, 64H, 2EH, 72H, 75H, 2FH, 66H \ 2F66 \ 00000330 696C65732F6E DC8 69H, 6CH, 65H, 73H, 2FH, 6EH, 61H, 74H \ 6174 \ 00000338 6963715F6D6F DC8 69H, 63H, 71H, 5FH, 6DH, 6FH, 64H, 32H \ 6432 \ 00000340 303538732E7A DC8 30H, 35H, 38H, 73H, 2EH, 7AH, 69H, 70H \ 6970 \ 00000348 202873676F6C DC8 20H, 28H, 73H, 67H, 6FH, 6CH, 64H, 29H \ 6429 \ 00000350 202020202834 DC8 20H, 20H, 20H, 20H, 28H, 34H, 30H, 6BH \ 306B \ 00000358 622968747470 DC8 62H, 29H, 68H, 74H, 74H, 70H, 3AH, 2FH \ 3A2F \ 00000360 2F77696E6465 DC8 2FH, 77H, 69H, 6EH, 64H, 65H, 73H, 2EH \ 732E \ 00000368 6E61726F642E DC8 6EH, 61H, 72H, 6FH, 64H, 2EH, 72H, 75H \ 7275 \ 00000370 2F66696C6573 DC8 2FH, 66H, 69H, 6CH, 65H, 73H, 2FH, 6EH \ 2F6E \ 00000378 61746963715F DC8 61H, 74H, 69H, 63H, 71H, 5FH, 6DH, 6FH \ 6D6F \ 00000380 64323035386E DC8 64H, 32H, 30H, 35H, 38H, 6EH, 2EH, 7AH \ 2E7A \ 00000388 697020284E65 DC8 69H, 70H, 20H, 28H, 4EH, 65H, 77H, 53H \ 7753 \ 00000390 476F6C642920 DC8 47H, 6FH, 6CH, 64H, 29H, 20H, 28H, 34H \ 2834 \ 00000398 306B62296874 DC8 30H, 6BH, 62H, 29H, 68H, 74H, 74H, 70H \ 7470 \ 000003A0 3A2F2F77696E DC8 3AH, 2FH, 2FH, 77H, 69H, 6EH, 64H, 65H \ 6465 \ 000003A8 732E6E61726F DC8 73H, 2EH, 6EH, 61H, 72H, 6FH, 64H, 2EH \ 642E \ 000003B0 72752F66696C DC8 72H, 75H, 2FH, 66H, 69H, 6CH, 65H, 73H \ 6573 \ 000003B8 2F6E61746963 DC8 2FH, 6EH, 61H, 74H, 69H, 63H, 71H, 5FH \ 715F \ 000003C0 6D6F64323035 DC8 6DH, 6FH, 64H, 32H, 30H, 35H, 38H, 65H \ 3865 \ 000003C8 2E7A69702028 DC8 2EH, 7AH, 69H, 70H, 20H, 28H, 65H, 6CH \ 656C \ 000003D0 6B6129202020 DC8 6BH, 61H, 29H, 20H, 20H, 20H, 20H, 20H \ 2020 \ 000003D8 2834306B6229 DC8 28H, 34H, 30H, 6BH, 62H, 29H, 66H, 69H \ 6669 \ 000003E0 6C65733A2068 DC8 6CH, 65H, 73H, 3AH, 20H, 68H, 74H, 74H \ 7474 \ 000003E8 703A2F2F7769 DC8 70H, 3AH, 2FH, 2FH, 77H, 69H, 6EH, 64H \ 6E64 \ 000003F0 65732E6E6172 DC8 65H, 73H, 2EH, 6EH, 61H, 72H, 6FH, 64H \ 6F64 \ 000003F8 2E72752F6669 DC8 2EH, 72H, 75H, 2FH, 66H, 69H, 6CH, 65H \ 6C65 \ 00000400 732F6E617469 DC8 73H, 2FH, 6EH, 61H, 74H, 69H, 63H, 71H \ 6371 \ 00000408 6D6F645F616C DC8 6DH, 6FH, 64H, 5FH, 61H, 6CH, 6CH, 66H \ 6C66 \ 00000410 696C65735F77 DC8 69H, 6CH, 65H, 73H, 5FH, 77H, 2EH, 7AH \ 2E7A \ 00000418 697020283433 DC8 69H, 70H, 20H, 28H, 34H, 33H, 32H, 6BH \ 326B \ 00000420 622953746174 DC8 62H, 29H, 53H, 74H, 61H, 74H, 75H, 73H \ 7573 \ 00000428 206F6E206963 DC8 20H, 6FH, 6EH, 20H, 69H, 63H, 6FH, 6EH \ 6F6E \ 00000430 626172206874 DC8 62H, 61H, 72H, 20H, 68H, 74H, 74H, 70H \ 7470 \ 00000438 3A2F2F77696E DC8 3AH, 2FH, 2FH, 77H, 69H, 6EH, 64H, 65H \ 6465 \ 00000440 732E6E61726F DC8 73H, 2EH, 6EH, 61H, 72H, 6FH, 64H, 2EH \ 642E \ 00000448 72752F66696C DC8 72H, 75H, 2FH, 66H, 69H, 6CH, 65H, 73H \ 6573 \ 00000450 2F696D673136 DC8 2FH, 69H, 6DH, 67H, 31H, 36H, 78H, 31H \ 7831 \ 00000458 362E7A697020 DC8 36H, 2EH, 7AH, 69H, 70H, 20H, 28H, 37H \ 2837 \ 00000460 346B6229D2E0 DC8 34H, 6BH, 62H, 29H, 0D2H, 0E0H, 0EAH, 20H \ EA20 \ 00000468 E6E520E2F1E5 DC8 0E6H, 0E5H, 20H, 0E2H, 0F1H, 0E5H, 20H, 0E1H \ 20E1 \ 00000470 F3E4E5F220F2 DC8 0F3H, 0E4H, 0E5H, 0F2H, 20H, 0F2H, 0F3H, 0F2H \ F3F2 \ 00000478 20687474703A DC8 20H, 68H, 74H, 74H, 70H, 3AH, 2FH, 2FH \ 2F2F \ 00000480 6B6C6375686E DC8 6BH, 6CH, 63H, 75H, 68H, 6EH, 69H, 6BH \ 696B \ 00000488 2E6A696E6F2D DC8 2EH, 6AH, 69H, 6EH, 6FH, 2DH, 6EH, 65H \ 6E65 \ 00000490 742E72752F6E DC8 74H, 2EH, 72H, 75H, 2FH, 6EH, 61H, 74H \ 6174 \ 00000498 6963716D6F64 DC8 69H, 63H, 71H, 6DH, 6FH, 64H, 2FH, 0 \ 2F00 \ 000004A0 53656E64696E DC8 "Sending url info..." \ 672075726C20 \ 696E666F2E2E \ 2E00 \ 000004B4 4745545F5552 DC8 "GET_URL_INFO" \ 4C5F494E464F \ 00 \ 000004C1 000000 DC8 0, 0, 0 \ 000004C4 204F66666C69 DC8 " Offline: %02d:%02d:%02d %02d-%02d" \ 6E653A202530 \ 32643A253032 \ 643A25303264 \ 20253032642D \ 2530326400 \ 000004E7 00 DC8 0 \ 000004E8 53746174653A DC8 53H, 74H, 61H, 74H, 65H, 3AH, 20H, 25H \ 2025 \ 000004F0 642C20525873 DC8 64H, 2CH, 20H, 52H, 58H, 73H, 74H, 61H \ 7461 \ 000004F8 74653A202564 DC8 74H, 65H, 3AH, 20H, 25H, 64H, 0AH, 52H \ 0A52 \ 00000500 783A2564622C DC8 78H, 3AH, 25H, 64H, 62H, 2CH, 54H, 78H \ 5478 \ 00000508 3A2564620A51 DC8 3AH, 25H, 64H, 62H, 0AH, 51H, 75H, 65H \ 7565 \ 00000510 75653A202564 DC8 75H, 65H, 3AH, 20H, 25H, 64H, 62H, 0AH \ 620A \ 00000518 25730A257300 DC8 25H, 73H, 0AH, 25H, 73H, 0 \ 0000051E 0000 DC8 0, 0 \ 00000520 0A4C6F616465 DC8 "\012Loaded %d smiles" \ 642025642073 \ 6D696C657300 \ 00000532 0000 DC8 0, 0 \ 00000534 0A4C6F616465 DC8 "\012Loaded %d xstatus" \ 642025642078 \ 737461747573 \ 00 \ 00000547 00 DC8 0 \ 00000548 434C69737400 DC8 "CList" \ 0000054E 0000 DC8 0, 0 \ 00000550 4578697400 DC8 "Exit" \ 00000555 000000 DC8 0, 0, 0 \ 00000558 4D6F64204576 DC8 "Mod Evilfox(c), Windes, kluchnik" \ 696C666F7828 \ 63292C205769 \ 6E6465732C20 \ 6B6C7563686E \ 696B00 \ 00000579 000000 DC8 0, 0, 0 \ 0000057C 4675636B2079 DC8 "Fuck you hacker! my password sux ur ass" \ 6F7520686163 \ 6B657221206D \ 792070617373 \ 776F72642073 \ 757820757220 \ 61737300 \ 000005A4 556E72656164 DC8 "Unread: %d" \ 3A20256400 \ 000005AF 00 DC8 0 \ 000005B0 49646C655570 DC8 "IdleUpd" \ 6400 \ 000005B8 4E6174494351 DC8 "NatICQ config updated!" \ 20636F6E6669 \ 672075706461 \ 7465642100 \ 000005CF 00 DC8 0 \ 000005D0 257332323430 DC8 "%s2240.png" \ 2E706E6700 \ 000005DB 00 DC8 0 \ 000005DC 475052532075 DC8 "GPRS up, wait 10 sec..." \ 702C20776169 \ 742031302073 \ 65632E2E2E00 \ 000005F4 54727920746F DC8 "Try to login..." \ 206C6F67696E \ 2E2E2E00 \ 00000604 CDE520E220F1 DC8 "\315\345 \342 \361\357\350\361\352\345" \ EFE8F1EAE500 \ 00000610 4C6F6F706261 DC8 "Loopback" \ 636B00 \ 00000619 000000 DC8 0, 0, 0 \ 0000061C CDE5E2E5F0ED DC8 "\315\345\342\345\360\355\356\345 \361\356\356\341\371\345\355\350\345 ENIP_SOCK_CONNECTED!" \ EEE520F1EEEE \ E1F9E5EDE8E5 \ 20454E49505F \ 534F434B5F43 \ 4F4E4E454354 \ 45442100 \ 00000644 CDE5E2E5F0ED DC8 "\315\345\342\345\360\355\356\345 \361\356\356\341\371\345\355\350\345 ENIP_DATA_READ" \ EEE520F1EEEE \ E1F9E5EDE8E5 \ 20454E49505F \ 444154415F52 \ 45414400 \ 00000666 0000 DC8 0, 0 \ 00000668 446973636F6E DC8 "Disconnected, %d bytes not sended!" \ 6E6563746564 \ 2C2025642062 \ 79746573206E \ 6F742073656E \ 6465642100 \ 0000068B 00 DC8 0 \ 0000068C 25730A526563 DC8 "%s\012Reconect after %d second..." \ 6F6E65637420 \ 616674657220 \ 256420736563 \ 6F6E642E2E2E \ 00 \ 000006AB 00 DC8 0 \ 000006AC 50696E67204E DC8 "Ping None" \ 6F6E6500 \ 000006B6 0000 DC8 0, 0 \ 000006B8 C2E2E5E4E8F2 DC8 "\302\342\345\344\350\362\345 UIN/\357\340\360\356\353\374!" \ E52055494E2F \ EFE0F0EEEBFC \ 2100 \ 000006CC 25735C746D70 DC8 "%s\\tmp%u.url" \ 25752E75726C \ 00 \ 000006D9 000000 DC8 0, 0, 0 \ 000006DC 343A5C5A4269 DC8 "4:\\ZBin\\BalletMini\\BalletMini.elf" \ 6E5C42616C6C \ 65744D696E69 \ 5C42616C6C65 \ 744D696E692E \ 656C6600 \ 000006FE 0000 DC8 0, 0 \ 00000700 526571756573 DC8 "Request info..." \ 7420696E666F \ 2E2E2E00 \ 00000710 204F6E6C696E DC8 " Online: %02d:%02d:%02d %02d-%02d" \ 653A20253032 \ 643A25303264 \ 3A2530326420 \ 253032642D25 \ 30326400 \ 00000732 0000 DC8 0, 0 \ ipc_my_name: \ 00000734 4E6174494351 DC8 "NatICQ" \ 00 \ 0000073B 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000074B 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000 \ ipc_xtask_name: \ 00000754 585461736B00 DC8 "XTask" \ 0000075A 0000 DC8 0, 0 \ x_status_change: \ 0000075C 582D53746174 DC8 "X-Status change" \ 757320636861 \ 6E676500 \ ipc_game_name: \ 0000076C 436F6D626174 DC8 "Combats" \ 7300 \ gui_methods: \ 00000774 ............ DC32 method0, method1, method2, method3, method4, method5, 0H \ ............ \ ............ \ ............ \ 00000000 \ 00000790 ............ DC32 kill_data, method8, method9, 0H \ ............ \ 00000000 \ In segment DATA_C, align 4, align-sorted \ ipc_test_name: \ 00000000 7465737400 DC8 "test" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ S_OFFLINE: \ 00000000 4F66666C696E DC8 "Offline" \ 6500 \ In segment DATA_C, align 4, align-sorted \ S_INVISIBLE: \ 00000000 496E76697369 DC8 "Invisible" \ 626C6500 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ S_AWAY: \ 00000000 4177617900 DC8 "Away" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ S_NA: \ 00000000 4E2F4100 DC8 "N/A" \ In segment DATA_C, align 4, align-sorted \ S_OCCUPIED: \ 00000000 4F6363757069 DC8 "Occupied" \ 656400 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ S_DND: \ 00000000 444E4400 DC8 "DND" \ In segment DATA_C, align 4, align-sorted \ S_ONLINE: \ 00000000 4F6E6C696E65 DC8 "Online" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ S_FFC: \ 00000000 46464300 DC8 "FFC" \ In segment DATA_C, align 4, align-sorted \ icons_names: \ 00000000 ............ DC32 `?`, `?` \ .... \ 00000008 ............ DC32 `?`, `?` \ .... \ 00000010 ............ DC32 `?`, `?` \ .... \ 00000018 ............ DC32 `?`, `?` \ .... \ 00000020 ............ DC32 `?`, `?` \ .... \ 00000028 ............ DC32 `?`, `?` \ .... \ 00000030 ............ DC32 `?`, `?` \ .... \ 00000038 ............ DC32 `?`, `?` \ .... \ 00000040 ............ DC32 `?`, `?` \ .... \ 00000048 ............ DC32 `?`, `?` \ .... \ 00000050 ............ DC32 `?`, `?` \ .... \ 00000058 ............ DC32 `?`, `?` \ .... \ 00000060 ............ DC32 `?`, `?` \ .... \ 00000068 ............ DC32 `?`, `?` \ .... \ In segment DATA_C, align 4, align-sorted \ input_awaymsg_desc: \ 00000000 01000000.... DC32 1, input_awaymsg_onkey, input_awaymsg_ghook, input_awaymsg_locret \ ............ \ ........ \ 00000010 00000000.... DC32 0, input_awaymsg_skt \ .... \ 00000018 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000020 080000006400 DC32 8, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ input_awaymsg_hdr: \ 00000038 000000008300 DC16 0, 0, 131, 21 \ 1500 \ 00000040 00000000.... DC32 0H, `?`, 2147483647 \ ....FFFFFF7F \ 0000004C D1EEEEE1F9E5 DC8 "\321\356\356\341\371\345\355\350\345:\012" \ EDE8E53A0A00 \ In segment DATA_C, align 4, align-sorted \ def_setting: \ 00000000 25736465665F DC8 "%sdef_settings_%d" \ 73657474696E \ 67735F256400 \ 00000012 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ key_clmenu_sk_r: \ 00000000 3C4300 DC8 "` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 \ In segment DATA_C, align 4, align-sorted \ clmenu_sk: \ 00000000 18000000 DC16 24, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 clmenu_sk_r \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 \ In segment DATA_C, align 4, align-sorted \ menu_skt: \ 00000000 ........0000 DC32 menu_sk, 0 \ 0000 \ In segment DATA_C, align 4, align-sorted \ clmenu_skt: \ 00000000 ........0000 DC32 clmenu_sk, 0 \ 0000 \ In segment DATA_C, align 4, align-sorted \ color: \ 00000000 FFFFFF64 DC8 255, 255, 255, 100 4221 \ In segment CODE, align 4, keep-with-next 4222 void maincsm_oncreate(CSM_RAM *data) 4223 { \ maincsm_oncreate: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0050A0E1 MOV R5,R0 4224 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); \ 00000008 4000A0E3 MOV R0,#+64 4225 MAIN_CSM*csm=(MAIN_CSM*)data; 4226 zeromem(main_gui,sizeof(MAIN_GUI)); 4227 patch_rect((RECT*)&Canvas,0,0,ScreenW()-1,ScreenH()-1); \ 0000000C 0070A0E3 MOV R7,#+0 \ 00000010 140000EF SWI +20 \ 00000014 0060A0E1 MOV R6,R0 \ 00000018 4010A0E3 MOV R1,#+64 \ 0000001C 1D0100EF SWI +285 \ 00000020 898100EF SWI +33161 \ 00000024 0040A0E1 MOV R4,R0 \ 00000028 888100EF SWI +33160 \ 0000002C 011044E2 SUB R1,R4,#+1 \ 00000030 ........ LDR R4,??DataTable156 ;; `?` \ 00000034 010040E2 SUB R0,R0,#+1 \ 00000038 087084E5 STR R7,[R4, #+8] \ 0000003C BC00C4E1 STRH R0,[R4, #+12] \ 00000040 BE10C4E1 STRH R1,[R4, #+14] 4228 main_gui->gui.canvas=(void *)(&Canvas); \ 00000044 080084E2 ADD R0,R4,#+8 \ 00000048 000086E5 STR R0,[R6, #+0] 4229 // main_gui->gui.flag30=2; 4230 main_gui->gui.methods=(void *)gui_methods; \ 0000004C 7400A0E3 MOV R0,#+116 \ 00000050 700E80E3 ORR R0,R0,#0x700 \ 00000054 040080E0 ADD R0,R0,R4 \ 00000058 040086E5 STR R0,[R6, #+4] 4231 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); \ 0000005C 158000EF SWI +32789 \ 00000060 200086E5 STR R0,[R6, #+32] 4232 csm->csm.state=0; \ 00000064 107085E5 STR R7,[R5, #+16] 4233 csm->csm.unk1=0; \ 00000068 147085E5 STR R7,[R5, #+20] 4234 maingui_id=csm->gui_id=CreateGUI(main_gui); \ 0000006C 0600A0E1 MOV R0,R6 \ 00000070 370100EF SWI +311 \ 00000074 280085E5 STR R0,[R5, #+40] \ 00000078 ........ LDR R5,??DataTable155 ;; S_ICONS \ 0000007C 1C0185E5 STR R0,[R5, #+284] 4235 ews=AllocWS(16384); \ 00000080 400CA0E3 MOV R0,#+16384 \ 00000084 250100EF SWI +293 4236 // MutexCreate(&contactlist_mtx); 4237 DNR_TRIES=3; 4238 // SUBPROC((void *)InitSmiles); 4239 // SUBPROC((void *)create_connect); 4240 GBS_StartTimerProc(&tmr_active,TMR_SECOND*10,process_active_timer); \ 00000088 ........ LDR R2,??DataTable146 ;; process_active_timer \ 0000008C 2C0185E5 STR R0,[R5, #+300] \ 00000090 0300A0E3 MOV R0,#+3 \ 00000094 D80185E5 STR R0,[R5, #+472] \ 00000098 871EA0E3 MOV R1,#+2160 \ 0000009C 6400A0E3 MOV R0,#+100 \ 000000A0 600D80E3 ORR R0,R0,#0x1800 \ 000000A4 050080E0 ADD R0,R0,R5 \ 000000A8 4D0000EF SWI +77 4241 sprintf((char *)ipc_my_name+6,percent_d,UIN); \ 000000AC ........ LDR R0,??DataTable187 ;; UIN \ 000000B0 131084E2 ADD R1,R4,#+19 \ 000000B4 002090E5 LDR R2,[R0, #+0] \ 000000B8 3A00A0E3 MOV R0,#+58 \ 000000BC 700E80E3 ORR R0,R0,#0x700 \ 000000C0 040080E0 ADD R0,R0,R4 \ 000000C4 160000EF SWI +22 4242 gipc.name_to=ipc_my_name; \ 000000C8 3400A0E3 MOV R0,#+52 \ 000000CC 700E80E3 ORR R0,R0,#0x700 \ 000000D0 041080E0 ADD R1,R0,R4 \ 000000D4 BC1085E5 STR R1,[R5, #+188] 4243 gipc.name_from=ipc_my_name; \ 000000D8 040080E0 ADD R0,R0,R4 \ 000000DC C00085E5 STR R0,[R5, #+192] 4244 gipc.data=(void *)-1; \ 000000E0 0700E0E1 MVN R0,R7 \ 000000E4 C40085E5 STR R0,[R5, #+196] 4245 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_CHECK_DOUBLERUN,&gipc); \ 000000E8 BC3085E2 ADD R3,R5,#+188 \ 000000EC 0120A0E3 MOV R2,#+1 \ 000000F0 B010A0E3 MOV R1,#+176 \ 000000F4 DE1C81E3 ORR R1,R1,#0xDE00 \ 000000F8 0900A0E3 MOV R0,#+9 \ 000000FC 420C80E3 ORR R0,R0,#0x4200 \ 00000100 000100EF SWI +256 4246 /* 4247 InitXStatusesImg(); 4248 //InitSmiles(); Это вызовется из InitXStatusesImg 4249 create_connect(); 4250 silenthide=1; 4251 gipc.name_to=ipc_xtask_name; 4252 gipc.name_from=ipc_my_name; 4253 gipc.data=0; 4254 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); 4255 */ 4256 } \ 00000104 F080BDE8 POP {R4-R7,PC} ;; return 4257 \ In segment CODE, align 4, keep-with-next 4258 void maincsm_onclose(CSM_RAM *csm) 4259 { \ maincsm_onclose: \ 00000000 10402DE9 PUSH {R4,LR} 4260 WriteDefSettings(); 4261 // SaveConfigData(successed_config_filename); 4262 4263 /* 4264 #pragma segment="CONFIG_C" 4265 unsigned int ul; 4266 int f; 4267 extern const CFG_HDR cfghdr0; //first var in CONFIG 4268 void *cfg=(void*)&cfghdr0; 4269 unsigned int len=(int)__segment_end("CONFIG_C")-(int)__segment_begin("CONFIG_C"); 4270 4271 if ((f=fopen("4:\\ZBin\\etc\\NATICQ.bcfg",A_ReadWrite+A_Create+A_Truncate,P_READ+P_WRITE,&ul))==-1){ 4272 f=fopen("0:\\ZBin\\etc\\NATICQ.bcfg",A_ReadWrite+A_Create+A_Truncate,P_READ+P_WRITE,&ul); 4273 } 4274 fwrite(f,cfg,len,&ul); 4275 fclose(f,&ul); 4276 */ 4277 4278 // GBS_DelTimer(&tmr_dorecv); 4279 RemoveKeybMsgHook((void *)my_keyhook); 4280 GBS_DelTimer(&tmr_active); \ 00000004 ........ LDR R4,??DataTable155 ;; S_ICONS \ 00000008 ........ BL WriteDefSettings \ 0000000C ........ LDR R0,??DataTable149 ;; my_keyhook \ 00000010 2D0100EF SWI +301 \ 00000014 6400A0E3 MOV R0,#+100 \ 00000018 600D80E3 ORR R0,R0,#0x1800 \ 0000001C 040080E0 ADD R0,R0,R4 \ 00000020 8C0100EF SWI +396 4281 GBS_DelTimer(&tmr_vibra); \ 00000024 4400A0E3 MOV R0,#+68 \ 00000028 600D80E3 ORR R0,R0,#0x1800 \ 0000002C 040080E0 ADD R0,R0,R4 \ 00000030 8C0100EF SWI +396 4282 GBS_DelTimer(&reconnect_tmr); \ 00000034 5400A0E3 MOV R0,#+84 \ 00000038 600D80E3 ORR R0,R0,#0x1800 \ 0000003C 040080E0 ADD R0,R0,R4 \ 00000040 8C0100EF SWI +396 4283 GBS_DelTimer(&tmr_illumination); \ 00000044 3400A0E3 MOV R0,#+52 \ 00000048 600D80E3 ORR R0,R0,#0x1800 \ 0000004C 040080E0 ADD R0,R0,R4 \ 00000050 8C0100EF SWI +396 4284 GBS_DelTimer(&mytmr); \ 00000054 7400A0E3 MOV R0,#+116 \ 00000058 580D80E3 ORR R0,R0,#0x1600 \ 0000005C 040080E0 ADD R0,R0,R4 \ 00000060 8C0100EF SWI +396 4285 GBS_DelTimer(&mytmr2); \ 00000064 8400A0E3 MOV R0,#+132 \ 00000068 580D80E3 ORR R0,R0,#0x1600 \ 0000006C 040080E0 ADD R0,R0,R4 \ 00000070 8C0100EF SWI +396 4286 GBS_DelTimer(&mytmr3); \ 00000074 EC00A0E3 MOV R0,#+236 \ 00000078 4C0D80E3 ORR R0,R0,#0x1300 \ 0000007C 040080E0 ADD R0,R0,R4 \ 00000080 8C0100EF SWI +396 4287 GBS_DelTimer(&mytmr4); \ 00000084 9400A0E3 MOV R0,#+148 \ 00000088 580D80E3 ORR R0,R0,#0x1600 \ 0000008C 040080E0 ADD R0,R0,R4 \ 00000090 8C0100EF SWI +396 4288 #ifdef NEWSGOLD 4289 GBS_DelTimer(&tracktmr); \ 00000094 A400A0E3 MOV R0,#+164 \ 00000098 580D80E3 ORR R0,R0,#0x1600 \ 0000009C 040080E0 ADD R0,R0,R4 \ 000000A0 8C0100EF SWI +396 4290 #endif 4291 GBS_DelTimer(&develop); \ 000000A4 B000A0E3 MOV R0,#+176 \ 000000A8 680D80E3 ORR R0,R0,#0x1A00 \ 000000AC 040080E0 ADD R0,R0,R4 \ 000000B0 8C0100EF SWI +396 4292 GBS_DelTimer(&away_tmr); \ 000000B4 6400A0E3 MOV R0,#+100 \ 000000B8 580D80E3 ORR R0,R0,#0x1600 \ 000000BC 040080E0 ADD R0,R0,R4 \ 000000C0 8C0100EF SWI +396 4293 SetVibration(0); \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 7C0000EF SWI +124 4294 FreeTemplates(); \ 000000CC ........ BL FreeTemplates 4295 FreeCLIST(); \ 000000D0 ........ _BLF FreeCLIST,??FreeCLIST??rA 4296 free_ICONS(); \ 000000D4 ........ BL free_ICONS 4297 // FreeSmiles(); 4298 FreeWS(ews); \ 000000D8 2C0194E5 LDR R0,[R4, #+300] \ 000000DC 290100EF SWI +297 4299 FreeXStatusText(); \ 000000E0 ........ _BLF FreeXStatusText,??FreeXStatusText??rA 4300 // MutexDestroy(&contactlist_mtx); 4301 SUBPROC((void *)FreeSmiles); \ 000000E4 24009FE5 LDR R0,??maincsm_onclose_0 ;; FreeSmiles \ 000000E8 710100EF SWI +369 4302 SUBPROC((void *)FreeXStatusesImg); \ 000000EC 20009FE5 LDR R0,??maincsm_onclose_0+0x4 ;; FreeXStatusesImg \ 000000F0 710100EF SWI +369 4303 SUBPROC((void *)end_socket); \ 000000F4 ........ LDR R0,??DataTable150 ;; end_socket \ 000000F8 710100EF SWI +369 4304 SUBPROC((void *)ClearSendQ); \ 000000FC ........ LDR R0,??DataTable181 ;; ClearSendQ \ 00000100 710100EF SWI +369 4305 SUBPROC((void *)ElfKiller); \ 00000104 ........ LDR R0,??DataTable193 ;; ElfKiller \ 00000108 710100EF SWI +369 4306 } \ 0000010C 1080BDE8 POP {R4,PC} ;; return \ ??maincsm_onclose_0: \ 00000110 ........ DC32 FreeSmiles \ 00000114 ........ DC32 FreeXStatusesImg 4307 \ In segment CODE, align 4, keep-with-next 4308 void do_reconnect(void) 4309 { 4310 if (is_gprs_online) \ do_reconnect: \ 00000000 ........ LDR R0,??DataTable155 ;; S_ICONS \ 00000004 00402DE9 PUSH {LR} \ 00000008 AC1190E5 LDR R1,[R0, #+428] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0080BD08 POPEQ {PC} 4311 { 4312 DNR_TRIES=3; \ 00000014 0310A0E3 MOV R1,#+3 \ 00000018 D81180E5 STR R1,[R0, #+472] 4313 SUBPROC((void*)create_connect); \ 0000001C ........ LDR R0,??DataTable154 ;; create_connect \ 00000020 710100EF SWI +369 4314 } 4315 } \ 00000024 0080BDE8 POP {PC} ;; return 4316 \ In segment CODE, align 4, keep-with-next 4317 void CheckDoubleRun(void) 4318 { \ CheckDoubleRun: \ 00000000 10402DE9 PUSH {R4,LR} 4319 int csm_id; 4320 if ((csm_id=(int)(gipc.data))!=-1) \ 00000004 ........ LDR R4,??DataTable155 ;; S_ICONS \ 00000008 C40094E5 LDR R0,[R4, #+196] \ 0000000C 010070E3 CMN R0,#+1 \ 00000010 1500000A BEQ ??CheckDoubleRun_0 4321 { 4322 gipc.name_to=ipc_xtask_name; \ 00000014 ........ LDR R1,??DataTable156 ;; `?` \ 00000018 5420A0E3 MOV R2,#+84 \ 0000001C 702E82E3 ORR R2,R2,#0x700 \ 00000020 012082E0 ADD R2,R2,R1 \ 00000024 BC2084E5 STR R2,[R4, #+188] 4323 gipc.name_from=ipc_my_name; \ 00000028 3420A0E3 MOV R2,#+52 \ 0000002C 702E82E3 ORR R2,R2,#0x700 \ 00000030 011082E0 ADD R1,R2,R1 \ 00000034 C01084E5 STR R1,[R4, #+192] 4324 gipc.data=(void *)csm_id; \ 00000038 C40084E5 STR R0,[R4, #+196] 4325 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc); \ 0000003C BC3084E2 ADD R3,R4,#+188 \ 00000040 0220A0E3 MOV R2,#+2 \ 00000044 B010A0E3 MOV R1,#+176 \ 00000048 DE1C81E3 ORR R1,R1,#0xDE00 \ 0000004C 0900A0E3 MOV R0,#+9 \ 00000050 420C80E3 ORR R0,R0,#0x4200 \ 00000054 000100EF SWI +256 4326 LockSched(); \ 00000058 460100EF SWI +326 4327 CloseCSM(maincsm_id); \ 0000005C 180194E5 LDR R0,[R4, #+280] \ 00000060 FC0100EF SWI +508 4328 //ShowMSG(1,(int)LG_ALREADY_STARTED); 4329 UnlockSched(); \ 00000064 470100EF SWI +327 \ 00000068 1080BDE8 POP {R4,PC} 4330 } 4331 else 4332 { 4333 InitXStatusesImg(); \ ??CheckDoubleRun_0: \ 0000006C ........ _BLF InitXStatusesImg,??InitXStatusesImg??rA 4334 //InitSmiles(); Это вызовется из InitXStatusesImg 4335 create_connect(); \ 00000070 ........ BL create_connect 4336 } 4337 } \ 00000074 1080BDE8 POP {R4,PC} ;; return 4338 4339 #define IPC_GAME 7 4340 4341 typedef struct{ 4342 unsigned long uin; 4343 char *msg; 4344 }IPCmsg; 4345 \ In segment CODE, align 4, keep-with-next 4346 int maincsm_onmessage(CSM_RAM *data,GBS_MSG *msg) 4347 { \ maincsm_onmessage: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 1CD04DE2 SUB SP,SP,#+28 \ 00000008 ........ LDR R5,??DataTable157 ;; S_ICONS \ 0000000C ........ LDR R7,??DataTable190 ;; `?` \ 00000010 0140A0E1 MOV R4,R1 \ 00000014 040094E5 LDR R0,[R4, #+4] \ 00000018 0060A0E3 MOV R6,#+0 \ 0000001C B010A0E3 MOV R1,#+176 \ 00000020 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000024 010050E1 CMP R0,R1 \ 00000028 8600001A BNE ??maincsm_onmessage_2 4348 extern const int VIBR_ON_CONNECT; 4349 4350 // char ss[100]; 4351 MAIN_CSM *csm=(MAIN_CSM*)data; 4352 { 4353 //IPC 4354 if (msg->msg==MSG_IPC) 4355 { 4356 IPC_REQ *ipc; 4357 if ((ipc=(IPC_REQ*)msg->data0)) \ 0000002C 0C8094E5 LDR R8,[R4, #+12] \ 00000030 000058E3 CMP R8,#+0 \ 00000034 8300000A BEQ ??maincsm_onmessage_2 4358 { 4359 if (strcmp_nocase(ipc->name_to,ipc_my_name)==0) \ 00000038 000098E5 LDR R0,[R8, #+0] \ 0000003C 3490A0E3 MOV R9,#+52 \ 00000040 709E89E3 ORR R9,R9,#0x700 \ 00000044 071089E0 ADD R1,R9,R7 \ 00000048 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 0000004C 000050E3 CMP R0,#+0 \ 00000050 7C00001A BNE ??maincsm_onmessage_2 4360 { 4361 switch (msg->submess) \ 00000054 081094E5 LDR R1,[R4, #+8] \ 00000058 040098E5 LDR R0,[R8, #+4] \ 0000005C 011041E2 SUB R1,R1,#+1 \ 00000060 040051E3 CMP R1,#+4 \ 00000064 7700008A BHI ??maincsm_onmessage_2 \ 00000068 012F8FE2 ADR R2,??maincsm_onmessage_0 \ 0000006C 0120D2E7 LDRB R2,[R2, R1] \ 00000070 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??maincsm_onmessage_0: \ 00000074 010A1116 DC8 +1,+10,+17,+22 \ 00000078 4F000000 DC8 +79,+0,+0,+0 4362 { 4363 case IPC_CHECK_DOUBLERUN: 4364 //Если приняли свое собственное сообщение, значит запускаем чекер 4365 if (ipc->name_from==ipc_my_name) SUBPROC((void *)CheckDoubleRun); \ ??maincsm_onmessage_3: \ 0000007C 071089E0 ADD R1,R9,R7 \ 00000080 010050E1 CMP R0,R1 \ 00000084 0200001A BNE ??maincsm_onmessage_4 \ 00000088 800A9FE5 LDR R0,??maincsm_onmessage_5 ;; CheckDoubleRun \ 0000008C 710100EF SWI +369 \ 00000090 6C0000EA B ??maincsm_onmessage_2 4366 else ipc->data=(void *)maincsm_id; \ ??maincsm_onmessage_4: \ 00000094 180195E5 LDR R0,[R5, #+280] \ 00000098 080088E5 STR R0,[R8, #+8] \ 0000009C 690000EA B ??maincsm_onmessage_2 4367 break; 4368 case IPC_SMILE_PROCESSED: 4369 //Только собственные смайлы ;) 4370 if (ipc->name_from==ipc_my_name) SUBPROC((void *)ProcessNextSmile); \ ??maincsm_onmessage_6: \ 000000A0 071089E0 ADD R1,R9,R7 \ 000000A4 010050E1 CMP R0,R1 \ 000000A8 0100001A BNE ??maincsm_onmessage_7 \ 000000AC 600A9FE5 LDR R0,??maincsm_onmessage_5+0x4 ;; ProcessNextSmile \ ??maincsm_onmessage_8: \ 000000B0 710100EF SWI +369 4371 SMART_REDRAW(); \ ??maincsm_onmessage_7: \ 000000B4 ........ BL SMART_REDRAW \ 000000B8 620000EA B ??maincsm_onmessage_2 4372 break; 4373 case IPC_XSTATUSIMG_PROCESSED: 4374 //Только собственные иксстатусы ;) 4375 if (ipc->name_from==ipc_my_name) SUBPROC((void *)ProcessNextXStatImg); \ ??maincsm_onmessage_9: \ 000000BC 071089E0 ADD R1,R9,R7 \ 000000C0 010050E1 CMP R0,R1 \ 000000C4 FAFFFF1A BNE ??maincsm_onmessage_7 \ 000000C8 480A9FE5 LDR R0,??maincsm_onmessage_5+0x8 ;; ProcessNextXStatImg \ 000000CC F7FFFFEA B ??maincsm_onmessage_8 4376 SMART_REDRAW(); 4377 break; 4378 case IPC_GAME: 4379 { 4380 4381 } 4382 break; 4383 case IPC_TENSECONDS: 4384 //Только свое сообщение 4385 if (ipc->name_from==ipc_my_name) \ ??maincsm_onmessage_10: \ 000000D0 071089E0 ADD R1,R9,R7 \ 000000D4 010050E1 CMP R0,R1 \ 000000D8 5A00001A BNE ??maincsm_onmessage_2 4386 { 4387 CLIST *t=(CLIST *)cltop; \ 000000DC B48195E5 LDR R8,[R5, #+436] 4388 int f=0; \ 000000E0 0090A0E3 MOV R9,#+0 \ 000000E4 000058E3 CMP R8,#+0 \ 000000E8 2500000A BEQ ??maincsm_onmessage_11 4389 while(t) 4390 { 4391 if(t->just_now) \ ??maincsm_onmessage_12: \ 000000EC 5C0098E5 LDR R0,[R8, #+92] \ 000000F0 000050E3 CMP R0,#+0 \ 000000F4 0200000A BEQ ??maincsm_onmessage_13 4392 { 4393 if (!(--(t->just_now))) f=1; \ 000000F8 010050E2 SUBS R0,R0,#+1 \ 000000FC 5C0088E5 STR R0,[R8, #+92] \ 00000100 0190A003 MOVEQ R9,#+1 4394 } 4395 if (t->isactive) \ ??maincsm_onmessage_13: \ 00000104 800098E5 LDR R0,[R8, #+128] \ 00000108 000050E3 CMP R0,#+0 \ 0000010C 0C00000A BEQ ??maincsm_onmessage_14 4396 { 4397 if (!(--(t->isactive))) \ 00000110 010050E2 SUBS R0,R0,#+1 \ 00000114 800088E5 STR R0,[R8, #+128] \ 00000118 0900001A BNE ??maincsm_onmessage_14 4398 { 4399 f=1; //Если дошли до 0 хотя бы один раз - надо перерисовать меню 4400 if ((t->log)&&(!t->isunread)) \ 0000011C 740098E5 LDR R0,[R8, #+116] \ 00000120 0190A0E3 MOV R9,#+1 \ 00000124 000050E3 CMP R0,#+0 \ 00000128 0500000A BEQ ??maincsm_onmessage_14 \ 0000012C 640098E5 LDR R0,[R8, #+100] \ 00000130 000050E3 CMP R0,#+0 \ 00000134 0200001A BNE ??maincsm_onmessage_14 4401 { 4402 FreeLOGQ(&t->log); \ 00000138 740088E2 ADD R0,R8,#+116 \ 0000013C ........ BL FreeLOGQ 4403 t->msg_count=0; \ 00000140 846088E5 STR R6,[R8, #+132] 4404 } 4405 } 4406 } 4407 t=(CLIST *)(t->next); \ ??maincsm_onmessage_14: \ 00000144 008098E5 LDR R8,[R8, #+0] 4408 } \ 00000148 000058E3 CMP R8,#+0 \ 0000014C E6FFFF1A BNE ??maincsm_onmessage_12 4409 if (f) \ 00000150 000059E3 CMP R9,#+0 \ 00000154 0A00000A BEQ ??maincsm_onmessage_11 4410 { 4411 CLIST *oldt=NULL; 4412 if (contactlist_menu_id) \ 00000158 BC1195E5 LDR R1,[R5, #+444] \ 0000015C 0000A0E3 MOV R0,#+0 \ 00000160 000051E3 CMP R1,#+0 \ 00000164 0400000A BEQ ??maincsm_onmessage_15 4413 { 4414 oldt=FindContactByN(GetCurMenuItem(FindGUIbyId(contactlist_menu_id,NULL))); \ 00000168 BC0195E5 LDR R0,[R5, #+444] \ 0000016C 0010A0E3 MOV R1,#+0 \ 00000170 090200EF SWI +521 \ 00000174 8F0100EF SWI +399 \ 00000178 ........ _BLF FindContactByN,??FindContactByN??rA 4415 } 4416 RecountMenu(oldt,1); \ ??maincsm_onmessage_15: \ 0000017C 0110A0E3 MOV R1,#+1 \ 00000180 ........ BL RecountMenu 4417 } 4418 if (time_to_stop_t9) \ ??maincsm_onmessage_11: \ 00000184 E80195E5 LDR R0,[R5, #+488] \ 00000188 000050E3 CMP R0,#+0 \ 0000018C 2D00000A BEQ ??maincsm_onmessage_2 4419 { 4420 if (!(--time_to_stop_t9)) \ 00000190 010050E2 SUBS R0,R0,#+1 \ 00000194 E80185E5 STR R0,[R5, #+488] \ 00000198 2A00001A BNE ??maincsm_onmessage_2 4421 { 4422 if (IsGuiOnTop(edchat_id)) RefreshGUI(); \ 0000019C C00195E5 LDR R0,[R5, #+448] \ 000001A0 350100EF SWI +309 \ 000001A4 000050E3 CMP R0,#+0 \ 000001A8 2600000A BEQ ??maincsm_onmessage_2 \ 000001AC 960100EF SWI +406 \ 000001B0 240000EA B ??maincsm_onmessage_2 4423 } 4424 } 4425 } 4426 break; 4427 case IPC_SENDMSG: ; //IPC_SENDMSG by BoBa 26.06.07 4428 int l=strlen(((IPCMsg *)(ipc->data))->msg); \ ??maincsm_onmessage_16: \ 000001B4 080098E5 LDR R0,[R8, #+8] \ 000001B8 040090E5 LDR R0,[R0, #+4] \ 000001BC 1B0000EF SWI +27 \ 000001C0 0090A0E1 MOV R9,R0 4429 TPKT *msg=malloc(sizeof(PKT)+l+30); \ 000001C4 260089E2 ADD R0,R9,#+38 \ 000001C8 140000EF SWI +20 \ 000001CC 00A0A0E1 MOV R10,R0 4430 msg->pkt.uin=((IPCMsg *)(ipc->data))->uin; \ 000001D0 080098E5 LDR R0,[R8, #+8] 4431 msg->pkt.type=T_SENDMSG; 4432 msg->pkt.data_len=l; 4433 memcpy(msg->data,((IPCMsg *)(ipc->data))->msg,l); \ 000001D4 0920A0E1 MOV R2,R9 \ 000001D8 000090E5 LDR R0,[R0, #+0] \ 000001DC 00008AE5 STR R0,[R10, #+0] \ 000001E0 0200A0E3 MOV R0,#+2 \ 000001E4 B400CAE1 STRH R0,[R10, #+4] \ 000001E8 B690CAE1 STRH R9,[R10, #+6] \ 000001EC 080098E5 LDR R0,[R8, #+8] \ 000001F0 041090E5 LDR R1,[R0, #+4] \ 000001F4 08008AE2 ADD R0,R10,#+8 \ 000001F8 1E0100EF SWI +286 4434 //slientsend=1; 4435 if(strstr(msg->data,PASS)==0) \ 000001FC 18199FE5 LDR R1,??maincsm_onmessage_5+0xC ;; PASS \ 00000200 08008AE2 ADD R0,R10,#+8 \ 00000204 180100EF SWI +280 \ 00000208 000050E3 CMP R0,#+0 \ 0000020C 0600000A BEQ ??maincsm_onmessage_17 4436 { 4437 SENDMSGCOUNT++; //Номер сообщения 4438 SUBPROC((void *)SendAnswer,0,msg); 4439 } 4440 else 4441 { 4442 msg->pkt.data_len=40; \ 00000210 2800A0E3 MOV R0,#+40 \ 00000214 B600CAE1 STRH R0,[R10, #+6] 4443 strcpy(msg->data, "Fuck you hacker! my password sux ur ass"); \ 00000218 7C00A0E3 MOV R0,#+124 \ 0000021C 500E80E3 ORR R0,R0,#0x500 \ 00000220 071080E0 ADD R1,R0,R7 \ 00000224 08008AE2 ADD R0,R10,#+8 \ 00000228 1A0000EF SWI +26 4444 SENDMSGCOUNT++; //Номер сообщения \ ??maincsm_onmessage_17: \ 0000022C 200195E5 LDR R0,[R5, #+288] 4445 SUBPROC((void *)SendAnswer,0,msg); \ 00000230 0A20A0E1 MOV R2,R10 \ 00000234 010080E2 ADD R0,R0,#+1 \ 00000238 200185E5 STR R0,[R5, #+288] \ 0000023C ........ LDR R0,??DataTable179 ;; SendAnswer \ 00000240 0010A0E3 MOV R1,#+0 \ 00000244 710100EF SWI +369 4446 } 4447 break; 4448 } 4449 } 4450 } 4451 } 4452 //Нарисуем иконочку моего статуса 4453 #define idlegui_id (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) 4454 CSM_RAM *icsm=FindCSMbyID(CSM_root()->idle_id); \ ??maincsm_onmessage_2: \ 00000248 068100EF SWI +33030 \ 0000024C 040090E5 LDR R0,[R0, #+4] \ 00000250 080100EF SWI +264 \ 00000254 2C0090E5 LDR R0,[R0, #+44] 4455 if (IsGuiOnTop(idlegui_id)/*&&IsUnlocked()*/) //Если IdleGui на самом верху \ 00000258 350100EF SWI +309 \ 0000025C 000050E3 CMP R0,#+0 \ 00000260 6100000A BEQ ??maincsm_onmessage_18 4456 { 4457 GUI *igui=GetTopGUI(); 4458 if (igui) //И он существует \ 00000264 4D0100EF SWI +333 \ 00000268 000050E3 CMP R0,#+0 \ 0000026C 6000000A BEQ ??maincsm_onmessage_19 4459 { 4460 //#ifdef ELKA 4461 INC_show=0; \ 00000270 F06185E5 STR R6,[R5, #+496] 4462 //#endif 4463 canvasdata=BuildCanvas(); //void * - belyj fon! \ 00000274 F18000EF SWI +33009 \ 00000278 EC0085E5 STR R0,[R5, #+236] 4464 int icn; 4465 // if(ShowStatusIcon==0 || ShowStatusIcon==3) 4466 // { 4467 if(total_unread) \ 0000027C B00195E5 LDR R0,[R5, #+432] \ 00000280 000050E3 CMP R0,#+0 4468 icn=IS_MSG; \ 00000284 0D00A013 MOVNE R0,#+13 \ 00000288 0500001A BNE ??maincsm_onmessage_20 4469 else 4470 { 4471 switch(connect_state) \ 0000028C 8C0195E5 LDR R0,[R5, #+396] \ 00000290 000050E3 CMP R0,#+0 \ 00000294 0200000A BEQ ??maincsm_onmessage_20 \ 00000298 030050E2 SUBS R0,R0,#+3 4472 { 4473 case 0: 4474 icn=IS_OFFLINE; break; 4475 case 3: 4476 icn=CurrentStatus; //IS_ONLINE; \ 0000029C 74019505 LDREQ R0,[R5, #+372] 4477 break; 4478 default: 4479 icn=IS_UNKNOWN; break; \ 000002A0 0E00A013 MOVNE R0,#+14 4480 } 4481 } 4482 //} 4483 //Тут трохи поменял 4484 // by Rainmaker: Рисуем канву только для иконки и выводим в своих координатах 4485 // __root const CFG_CBOX_ITEM cfgcbox9_1[5]={"On main screen","Iconbar","Iconbar except idle","All","Nothing"}; 4486 if(ShowStatusIcon==0 || ShowStatusIcon==2 || ShowStatusIcon==3) \ ??maincsm_onmessage_20: \ 000002A4 ........ LDR R1,??DataTable184 ;; ShowStatusIcon \ 000002A8 001091E5 LDR R1,[R1, #+0] \ 000002AC 000051E3 CMP R1,#+0 \ 000002B0 02005113 CMPNE R1,#+2 \ 000002B4 03005113 CMPNE R1,#+3 \ 000002B8 1900001A BNE ??maincsm_onmessage_21 4487 { 4488 DrawCanvas(canvasdata,IDLEICON_X,IDLEICON_Y,IDLEICON_X+GetImgWidth((int)S_ICONS[icn])-1, 4489 IDLEICON_Y+GetImgHeight((int)S_ICONS[icn])-1,1); \ 000002BC 008185E0 ADD R8,R5,R0, LSL #+2 \ 000002C0 000098E5 LDR R0,[R8, #+0] \ 000002C4 210000EF SWI +33 \ 000002C8 0090A0E1 MOV R9,R0 \ 000002CC 000098E5 LDR R0,[R8, #+0] \ 000002D0 220000EF SWI +34 \ 000002D4 44189FE5 LDR R1,??maincsm_onmessage_5+0x10 ;; IDLEICON_X \ 000002D8 00A091E5 LDR R10,[R1, #+0] \ 000002DC 40189FE5 LDR R1,??maincsm_onmessage_5+0x14 ;; IDLEICON_Y \ 000002E0 0A0080E0 ADD R0,R0,R10 \ 000002E4 00B091E5 LDR R11,[R1, #+0] \ 000002E8 0110A0E3 MOV R1,#+1 \ 000002EC 02002DE9 PUSH {R1} \ 000002F0 013040E2 SUB R3,R0,#+1 \ 000002F4 0B20A0E1 MOV R2,R11 \ 000002F8 0B1089E0 ADD R1,R9,R11 \ 000002FC 011041E2 SUB R1,R1,#+1 \ 00000300 02002DE9 PUSH {R1} \ 00000304 EC0095E5 LDR R0,[R5, #+236] \ 00000308 0A10A0E1 MOV R1,R10 \ 0000030C 250000EF SWI +37 4490 DrawImg(IDLEICON_X,IDLEICON_Y,S_ICONS[icn]); \ 00000310 002098E5 LDR R2,[R8, #+0] \ 00000314 0B10A0E1 MOV R1,R11 \ 00000318 0A00A0E1 MOV R0,R10 \ 0000031C 230000EF SWI +35 \ 00000320 08D08DE2 ADD SP,SP,#+8 4491 } 4492 // __root const CFG_CBOX_ITEM cfgcbox_8z[4]={"Nothing","On main screen","Iconbar","All"}; 4493 if(show_xstatus==1 || show_xstatus==3) \ ??maincsm_onmessage_21: \ 00000324 ........ LDR R0,??DataTable185 ;; show_xstatus \ 00000328 000090E5 LDR R0,[R0, #+0] \ 0000032C 010050E3 CMP R0,#+1 \ 00000330 03005013 CMPNE R0,#+3 \ 00000334 2700001A BNE ??maincsm_onmessage_22 4494 { 4495 PNGTOP_DESC *pltop=PNG_TOP(); 4496 pltop->dyn_pltop=XStatusesImgList; 4497 DisableIDLETMR(); \ 00000338 E8879FE5 LDR R8,??maincsm_onmessage_5+0x18 ;; XStatusesIconArray \ 0000033C B98100EF SWI +33209 \ 00000340 ........ LDR R1,??DataTable162 ;; XStatusesImgList \ 00000344 001091E5 LDR R1,[R1, #+0] \ 00000348 081080E5 STR R1,[R0, #+8] \ 0000034C 7F0100EF SWI +383 \ 00000350 ........ LDR R0,??DataTable186 ;; CurrentXStatus \ 00000354 001098E5 LDR R1,[R8, #+0] \ 00000358 000090E5 LDR R0,[R0, #+0] \ 0000035C 000191E7 LDR R0,[R1, +R0, LSL #+2] 4498 DrawCanvas(canvasdata,IDLEICON_XX,IDLEICON_YX,IDLEICON_XX+GetImgWidth((int)XStatusesIconArray[CurrentXStatus])-1, 4499 IDLEICON_YX+GetImgHeight((int)XStatusesIconArray[CurrentXStatus])-1,1); \ 00000360 210000EF SWI +33 \ 00000364 001098E5 LDR R1,[R8, #+0] \ 00000368 0090A0E1 MOV R9,R0 \ 0000036C ........ LDR R0,??DataTable186 ;; CurrentXStatus \ 00000370 000090E5 LDR R0,[R0, #+0] \ 00000374 000191E7 LDR R0,[R1, +R0, LSL #+2] \ 00000378 220000EF SWI +34 \ 0000037C A8179FE5 LDR R1,??maincsm_onmessage_5+0x1C ;; IDLEICON_XX \ 00000380 00A091E5 LDR R10,[R1, #+0] \ 00000384 A4179FE5 LDR R1,??maincsm_onmessage_5+0x20 ;; IDLEICON_YX \ 00000388 0A0080E0 ADD R0,R0,R10 \ 0000038C 00B091E5 LDR R11,[R1, #+0] \ 00000390 0110A0E3 MOV R1,#+1 \ 00000394 02002DE9 PUSH {R1} \ 00000398 013040E2 SUB R3,R0,#+1 \ 0000039C 0B20A0E1 MOV R2,R11 \ 000003A0 0B1089E0 ADD R1,R9,R11 \ 000003A4 011041E2 SUB R1,R1,#+1 \ 000003A8 02002DE9 PUSH {R1} \ 000003AC EC0095E5 LDR R0,[R5, #+236] \ 000003B0 0A10A0E1 MOV R1,R10 \ 000003B4 250000EF SWI +37 4500 DrawImg(IDLEICON_XX,IDLEICON_YX,XStatusesIconArray[CurrentXStatus]); \ 000003B8 ........ LDR R0,??DataTable186 ;; CurrentXStatus \ 000003BC 001098E5 LDR R1,[R8, #+0] \ 000003C0 000090E5 LDR R0,[R0, #+0] \ 000003C4 002191E7 LDR R2,[R1, +R0, LSL #+2] \ 000003C8 0B10A0E1 MOV R1,R11 \ 000003CC 0A00A0E1 MOV R0,R10 \ 000003D0 230000EF SWI +35 \ 000003D4 08D08DE2 ADD SP,SP,#+8 4501 } 4502 #ifdef EVILFOX 4503 DrawImg(IDLEICON_X-1,IDLEICON_Y-8,(int)"4:\\zbin\\naticq\\img\\naticq_ms.png"); 4504 #endif 4505 /* 4506 #ifdef EVILFOX 4507 #else 4508 if(strlen(fontpath)>5) 4509 { 4510 #endif 4511 */ 4512 4513 #ifdef ELKA 4514 if (total_unread) \ ??maincsm_onmessage_22: \ 000003D8 B00195E5 LDR R0,[R5, #+432] \ 000003DC 000050E3 CMP R0,#+0 \ 000003E0 0300000A BEQ ??maincsm_onmessage_19 4515 SLI_On(); \ 000003E4 ........ BL SLI_On \ 000003E8 010000EA B ??maincsm_onmessage_19 4516 #endif 4517 } 4518 } 4519 else 4520 { 4521 main_d=1; \ ??maincsm_onmessage_18: \ 000003EC 0100A0E3 MOV R0,#+1 \ 000003F0 E00085E5 STR R0,[R5, #+224] 4522 } 4523 } 4524 4525 //---------------------------------------------------// 4526 4527 if(msg->msg == MSG_IPC) \ ??maincsm_onmessage_19: \ 000003F4 040094E5 LDR R0,[R4, #+4] \ 000003F8 B010A0E3 MOV R1,#+176 \ 000003FC DE1C81E3 ORR R1,R1,#0xDE00 \ 00000400 010050E1 CMP R0,R1 \ 00000404 BA00001A BNE ??maincsm_onmessage_23 4528 { 4529 IPC_REQ *ipc; 4530 if ((ipc=(IPC_REQ*)msg->data0)) \ 00000408 0C0094E5 LDR R0,[R4, #+12] \ 0000040C 000050E3 CMP R0,#+0 \ 00000410 1101000A BEQ ??maincsm_onmessage_24 4531 { 4532 if (strcmp_nocase(ipc->name_to,"IdleUpd")==0) \ 00000414 000090E5 LDR R0,[R0, #+0] \ 00000418 5B1E87E2 ADD R1,R7,#+1456 \ 0000041C ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 00000420 000050E3 CMP R0,#+0 4533 { 4534 switch (msg->submess) \ 00000424 08009405 LDREQ R0,[R4, #+8] \ 00000428 00005003 CMPEQ R0,#+0 \ 0000042C B000001A BNE ??maincsm_onmessage_23 4535 { 4536 case 0: 4537 { 4538 if (main_d==1) \ 00000430 E00095E5 LDR R0,[R5, #+224] \ 00000434 010050E3 CMP R0,#+1 \ 00000438 8100001A BNE ??maincsm_onmessage_25 4539 { 4540 ClearScreen(); \ 0000043C ........ _BLF ClearScreen,??ClearScreen??rA 4541 if(Is_SMARTCPU_On) \ 00000440 040195E5 LDR R0,[R5, #+260] \ 00000444 000050E3 CMP R0,#+0 \ 00000448 7C00000A BEQ ??maincsm_onmessage_26 4542 { 4543 #ifdef EVILFOX 4544 PrintField(msg_d_x,msg_d_y, a_txt, align, fonto, 0); 4545 PrintField(msg_d_x,msg_d_y+paused_height, s_txt, align, fonto, 0); 4546 PrintField(msg_d_x,msg_d_y+(2*paused_height), d_txt, align, fonto, 0); 4547 PrintField(msg_d_x,msg_d_y+(3*paused_height), f_txt, align, fonto, 0); 4548 PrintField(msg_d_x,msg_d_y+(4*paused_height), g_txt, align, fonto, 0); 4549 #else 4550 if(fonto==1) \ 0000044C E0069FE5 LDR R0,??maincsm_onmessage_5+0x24 ;; msg_d_x \ 00000450 E83095E5 LDR R3,[R5, #+232] \ 00000454 6A1D85E2 ADD R1,R5,#+6784 \ 00000458 14108DE5 STR R1,[SP, #+20] \ 0000045C 5010A0E3 MOV R1,#+80 \ 00000460 681D81E3 ORR R1,R1,#0x1A00 \ 00000464 051081E0 ADD R1,R1,R5 \ 00000468 10108DE5 STR R1,[SP, #+16] \ 0000046C 2010A0E3 MOV R1,#+32 \ 00000470 681D81E3 ORR R1,R1,#0x1A00 \ 00000474 051081E0 ADD R1,R1,R5 \ 00000478 0C108DE5 STR R1,[SP, #+12] \ 0000047C F010A0E3 MOV R1,#+240 \ 00000480 641D81E3 ORR R1,R1,#0x1900 \ 00000484 051081E0 ADD R1,R1,R5 \ 00000488 08108DE5 STR R1,[SP, #+8] \ 0000048C 008090E5 LDR R8,[R0, #+0] \ 00000490 A0069FE5 LDR R0,??maincsm_onmessage_5+0x28 ;; msg_d_y \ 00000494 672D85E2 ADD R2,R5,#+6592 \ 00000498 009090E5 LDR R9,[R0, #+0] \ 0000049C 98069FE5 LDR R0,??maincsm_onmessage_5+0x2C ;; spaco2 \ 000004A0 00A090E5 LDR R10,[R0, #+0] \ 000004A4 ........ LDR R0,??DataTable195 ;; fonto \ 000004A8 00B090E5 LDR R11,[R0, #+0] \ 000004AC 0A00A0E1 MOV R0,R10 \ 000004B0 01002DE9 PUSH {R0} \ 000004B4 01005BE3 CMP R11,#+1 \ 000004B8 2B00001A BNE ??maincsm_onmessage_27 4551 { 4552 PrintField(msg_d_x,msg_d_y, a_txt, align, fonto, spaco2); \ 000004BC 0100A0E3 MOV R0,#+1 \ 000004C0 01002DE9 PUSH {R0} \ 000004C4 0910A0E1 MOV R1,R9 \ 000004C8 0800A0E1 MOV R0,R8 \ 000004CC ........ _BLF PrintField,??PrintField??rA 4553 PrintField(msg_d_x,msg_d_y+paused_height, s_txt, align, fonto, spaco2); \ 000004D0 0A00A0E1 MOV R0,R10 \ 000004D4 01002DE9 PUSH {R0} \ 000004D8 0100A0E3 MOV R0,#+1 \ 000004DC 01002DE9 PUSH {R0} \ 000004E0 E83095E5 LDR R3,[R5, #+232] \ 000004E4 18209DE5 LDR R2,[SP, #+24] \ 000004E8 F00095E5 LDR R0,[R5, #+240] \ 000004EC 091080E0 ADD R1,R0,R9 \ 000004F0 0800A0E1 MOV R0,R8 \ 000004F4 ........ _BLF PrintField,??PrintField??rA 4554 PrintField(msg_d_x,msg_d_y+(2*paused_height), d_txt, align, fonto, spaco2); \ 000004F8 0A00A0E1 MOV R0,R10 \ 000004FC 01002DE9 PUSH {R0} \ 00000500 0100A0E3 MOV R0,#+1 \ 00000504 01002DE9 PUSH {R0} \ 00000508 E83095E5 LDR R3,[R5, #+232] \ 0000050C 24209DE5 LDR R2,[SP, #+36] \ 00000510 F00095E5 LDR R0,[R5, #+240] \ 00000514 801089E0 ADD R1,R9,R0, LSL #+1 \ 00000518 0800A0E1 MOV R0,R8 \ 0000051C ........ _BLF PrintField,??PrintField??rA 4555 PrintField(msg_d_x,msg_d_y+(3*paused_height), f_txt, align, fonto, spaco2); \ 00000520 0A00A0E1 MOV R0,R10 \ 00000524 01002DE9 PUSH {R0} \ 00000528 0100A0E3 MOV R0,#+1 \ 0000052C 01002DE9 PUSH {R0} \ 00000530 E83095E5 LDR R3,[R5, #+232] \ 00000534 30209DE5 LDR R2,[SP, #+48] \ 00000538 F00095E5 LDR R0,[R5, #+240] \ 0000053C 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000540 091080E0 ADD R1,R0,R9 \ 00000544 0800A0E1 MOV R0,R8 \ 00000548 ........ _BLF PrintField,??PrintField??rA 4556 PrintField(msg_d_x,msg_d_y+(4*paused_height), g_txt, align, fonto, spaco2); \ 0000054C 00042DE9 PUSH {R10} \ 00000550 0100A0E3 MOV R0,#+1 \ 00000554 01002DE9 PUSH {R0} \ 00000558 E83095E5 LDR R3,[R5, #+232] \ 0000055C 3C209DE5 LDR R2,[SP, #+60] \ 00000560 F00095E5 LDR R0,[R5, #+240] \ 00000564 001189E0 ADD R1,R9,R0, LSL #+2 \ 00000568 310000EA B ??maincsm_onmessage_28 4557 } 4558 else 4559 { 4560 PrintField(msg_d_x,msg_d_y, a_txt, align, fonto, spaco2); \ ??maincsm_onmessage_27: \ 0000056C 0B00A0E1 MOV R0,R11 \ 00000570 01002DE9 PUSH {R0} \ 00000574 0910A0E1 MOV R1,R9 \ 00000578 0800A0E1 MOV R0,R8 \ 0000057C ........ _BLF PrintField,??PrintField??rA 4561 PrintField(msg_d_x,msg_d_y+GetFontYSIZE(paused_height)+1, s_txt, align, fonto, spaco2); \ 00000580 F00095E5 LDR R0,[R5, #+240] \ 00000584 C50100EF SWI +453 \ 00000588 0A10A0E1 MOV R1,R10 \ 0000058C 02002DE9 PUSH {R1} \ 00000590 090080E0 ADD R0,R0,R9 \ 00000594 0B10A0E1 MOV R1,R11 \ 00000598 02002DE9 PUSH {R1} \ 0000059C E83095E5 LDR R3,[R5, #+232] \ 000005A0 18209DE5 LDR R2,[SP, #+24] \ 000005A4 011080E2 ADD R1,R0,#+1 \ 000005A8 0800A0E1 MOV R0,R8 \ 000005AC ........ _BLF PrintField,??PrintField??rA 4562 PrintField(msg_d_x,msg_d_y+(2*GetFontYSIZE(paused_height))+2, d_txt, align, fonto, spaco2); \ 000005B0 F00095E5 LDR R0,[R5, #+240] \ 000005B4 C50100EF SWI +453 \ 000005B8 0A10A0E1 MOV R1,R10 \ 000005BC 02002DE9 PUSH {R1} \ 000005C0 800089E0 ADD R0,R9,R0, LSL #+1 \ 000005C4 0B10A0E1 MOV R1,R11 \ 000005C8 02002DE9 PUSH {R1} \ 000005CC E83095E5 LDR R3,[R5, #+232] \ 000005D0 24209DE5 LDR R2,[SP, #+36] \ 000005D4 021080E2 ADD R1,R0,#+2 \ 000005D8 0800A0E1 MOV R0,R8 \ 000005DC ........ _BLF PrintField,??PrintField??rA 4563 PrintField(msg_d_x,msg_d_y+(3*GetFontYSIZE(paused_height))+3, f_txt, align, fonto, spaco2); \ 000005E0 F00095E5 LDR R0,[R5, #+240] \ 000005E4 C50100EF SWI +453 \ 000005E8 0A10A0E1 MOV R1,R10 \ 000005EC 02002DE9 PUSH {R1} \ 000005F0 800080E0 ADD R0,R0,R0, LSL #+1 \ 000005F4 090080E0 ADD R0,R0,R9 \ 000005F8 0B10A0E1 MOV R1,R11 \ 000005FC 02002DE9 PUSH {R1} \ 00000600 E83095E5 LDR R3,[R5, #+232] \ 00000604 30209DE5 LDR R2,[SP, #+48] \ 00000608 031080E2 ADD R1,R0,#+3 \ 0000060C 0800A0E1 MOV R0,R8 \ 00000610 ........ _BLF PrintField,??PrintField??rA 4564 PrintField(msg_d_x,msg_d_y+(4*GetFontYSIZE(paused_height))+4, g_txt, align, fonto, spaco2); \ 00000614 F00095E5 LDR R0,[R5, #+240] \ 00000618 C50100EF SWI +453 \ 0000061C 00042DE9 PUSH {R10} \ 00000620 00082DE9 PUSH {R11} \ 00000624 E83095E5 LDR R3,[R5, #+232] \ 00000628 3C209DE5 LDR R2,[SP, #+60] \ 0000062C 000189E0 ADD R0,R9,R0, LSL #+2 \ 00000630 041080E2 ADD R1,R0,#+4 \ ??maincsm_onmessage_28: \ 00000634 0800A0E1 MOV R0,R8 \ 00000638 ........ _BLF PrintField,??PrintField??rA \ 0000063C 28D08DE2 ADD SP,SP,#+40 4565 } 4566 #endif 4567 } 4568 main_d=0; \ ??maincsm_onmessage_26: \ 00000640 E06085E5 STR R6,[R5, #+224] 4569 } 4570 if(Is_UPTIME_On) \ ??maincsm_onmessage_25: \ 00000644 440195E5 LDR R0,[R5, #+324] \ 00000648 000050E3 CMP R0,#+0 \ 0000064C 0100000A BEQ ??maincsm_onmessage_29 4571 Draw22(canvasdata); \ 00000650 EC0095E5 LDR R0,[R5, #+236] \ 00000654 ........ BL Draw22 4572 if(Is_PING_On) \ ??maincsm_onmessage_29: \ 00000658 FC0095E5 LDR R0,[R5, #+252] \ 0000065C 000050E3 CMP R0,#+0 \ 00000660 0100000A BEQ ??maincsm_onmessage_30 4573 Draw11(canvasdata); \ 00000664 EC0095E5 LDR R0,[R5, #+236] \ 00000668 ........ BL Draw11 4574 4575 if(Auto_Status && showAwayIdle) \ ??maincsm_onmessage_30: \ 0000066C ........ LDR R0,??DataTable167 ;; Auto_Status \ 00000670 000090E5 LDR R0,[R0, #+0] \ 00000674 000050E3 CMP R0,#+0 \ 00000678 0500000A BEQ ??maincsm_onmessage_31 \ 0000067C ........ LDR R0,??DataTable168 ;; showAwayIdle \ 00000680 000090E5 LDR R0,[R0, #+0] \ 00000684 000050E3 CMP R0,#+0 \ 00000688 0100000A BEQ ??maincsm_onmessage_31 4576 DrawAutoMSG(canvasdata); \ 0000068C EC0095E5 LDR R0,[R5, #+236] \ 00000690 ........ BL DrawAutoMSG 4577 if(Is_Unread_On) \ ??maincsm_onmessage_31: \ 00000694 A4049FE5 LDR R0,??maincsm_onmessage_5+0x30 ;; Is_Unread_On \ 00000698 000090E5 LDR R0,[R0, #+0] \ 0000069C 000050E3 CMP R0,#+0 \ 000006A0 1300000A BEQ ??maincsm_onmessage_23 4578 { 4579 sprintf(unread_msg_info, "Unread: %d", total_unread2); \ 000006A4 142195E5 LDR R2,[R5, #+276] \ 000006A8 F78FA0E3 MOV R8,#+988 \ 000006AC 720F88E2 ADD R0,R8,#+456 \ 000006B0 071080E0 ADD R1,R0,R7 \ 000006B4 050088E0 ADD R0,R8,R5 \ 000006B8 160000EF SWI +22 4580 #ifdef EVILFOX 4581 PrintField(unread_X,unread_Y, unread_msg_info, align, fonto, space); 4582 #else 4583 PrintField(unread_X,unread_Y, unread_msg_info, align, fonto, spaco1); \ 000006BC ........ LDR R0,??DataTable169 ;; spaco1 \ 000006C0 052088E0 ADD R2,R8,R5 \ 000006C4 000090E5 LDR R0,[R0, #+0] \ 000006C8 01002DE9 PUSH {R0} \ 000006CC ........ LDR R0,??DataTable195 ;; fonto \ 000006D0 000090E5 LDR R0,[R0, #+0] \ 000006D4 01002DE9 PUSH {R0} \ 000006D8 E83095E5 LDR R3,[R5, #+232] \ 000006DC 60049FE5 LDR R0,??maincsm_onmessage_5+0x34 ;; unread_Y \ 000006E0 001090E5 LDR R1,[R0, #+0] \ 000006E4 5C049FE5 LDR R0,??maincsm_onmessage_5+0x38 ;; unread_X \ 000006E8 000090E5 LDR R0,[R0, #+0] \ 000006EC ........ _BLF PrintField,??PrintField??rA \ 000006F0 08D08DE2 ADD SP,SP,#+8 4584 #endif 4585 } 4586 } 4587 } 4588 } 4589 } 4590 } 4591 4592 //-----------------------------------------------------------// 4593 4594 if (msg->msg==MSG_RECONFIGURE_REQ) \ ??maincsm_onmessage_23: \ 000006F4 040094E5 LDR R0,[R4, #+4] \ 000006F8 AF10A0E3 MOV R1,#+175 \ 000006FC DE1C81E3 ORR R1,R1,#0xDE00 \ 00000700 010050E1 CMP R0,R1 \ 00000704 2B00001A BNE ??maincsm_onmessage_32 4595 { 4596 extern const char *successed_config_filename; 4597 if (strcmp_nocase(successed_config_filename,(char *)msg->data0)==0) \ 00000708 ........ LDR R0,??DataTable192 ;; successed_config_filename \ 0000070C 0C1094E5 LDR R1,[R4, #+12] \ 00000710 000090E5 LDR R0,[R0, #+0] \ 00000714 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 00000718 000050E3 CMP R0,#+0 \ 0000071C 2500001A BNE ??maincsm_onmessage_32 4598 { 4599 ShowMSG(1,(int)"NatICQ config updated!"); 4600 InitConfig(); 4601 initTags(); 4602 FontPathFree(); 4603 #ifdef EVILFOX 4604 FontPathInit(fonto,(char *)fontpath, 0); 4605 #else 4606 FontPathInit(fonto,(char *)fontpath, 1); \ 00000720 ........ LDR R8,??DataTable194 ;; fontpath \ 00000724 B800A0E3 MOV R0,#+184 \ 00000728 500E80E3 ORR R0,R0,#0x500 \ 0000072C 071080E0 ADD R1,R0,R7 \ 00000730 0100A0E3 MOV R0,#+1 \ 00000734 480100EF SWI +328 \ 00000738 ........ _BLF InitConfig,??InitConfig??rA \ 0000073C ........ _BLF initTags,??initTags??rA \ 00000740 ........ _BLF FontPathFree,??FontPathFree??rA \ 00000744 ........ LDR R0,??DataTable195 ;; fonto \ 00000748 0120A0E3 MOV R2,#+1 \ 0000074C 00B090E5 LDR R11,[R0, #+0] \ 00000750 0810A0E1 MOV R1,R8 \ 00000754 0B00A0E1 MOV R0,R11 \ 00000758 ........ _BLF FontPathInit,??FontPathInit??rA 4607 #endif 4608 //#ifdef ELKA 4609 if(fonto==1) \ 0000075C 01005BE3 CMP R11,#+1 \ 00000760 0B00001A BNE ??maincsm_onmessage_33 4610 { 4611 char *heght=malloc(64); \ 00000764 4000A0E3 MOV R0,#+64 \ 00000768 140000EF SWI +20 \ 0000076C 0090A0E1 MOV R9,R0 4612 sprintf(heght, "%s2240.png", fontpath); \ 00000770 0820A0E1 MOV R2,R8 \ 00000774 5D1E87E2 ADD R1,R7,#+1488 \ 00000778 160000EF SWI +22 4613 paused_height=GetImgHeight((int)heght); \ 0000077C 0900A0E1 MOV R0,R9 \ 00000780 210000EF SWI +33 \ 00000784 F00085E5 STR R0,[R5, #+240] 4614 mfree(heght); \ 00000788 0900A0E1 MOV R0,R9 \ 0000078C 150000EF SWI +21 \ 00000790 010000EA B ??maincsm_onmessage_34 4615 } 4616 else 4617 paused_height=fonto-100; \ ??maincsm_onmessage_33: \ 00000794 64004BE2 SUB R0,R11,#+100 \ 00000798 F00085E5 STR R0,[R5, #+240] 4618 //#endif 4619 free_ICONS(); \ ??maincsm_onmessage_34: \ 0000079C ........ BL free_ICONS 4620 setup_ICONS(); \ 000007A0 ........ BL setup_ICONS 4621 ResortCL(); \ 000007A4 ........ _BLF ResortCL,??ResortCL??rA 4622 RecountMenu(NULL,1); \ 000007A8 0110A0E3 MOV R1,#+1 \ 000007AC 0000A0E3 MOV R0,#+0 \ 000007B0 ........ BL RecountMenu 4623 init_time_zone(); \ 000007B4 ........ BL init_time_zone 4624 // InitSmiles(); 4625 } 4626 } 4627 if (msg->msg==MSG_GUI_DESTROYED) \ ??maincsm_onmessage_32: \ 000007B8 040094E5 LDR R0,[R4, #+4] \ 000007BC 0E10A0E3 MOV R1,#+14 \ 000007C0 641C81E3 ORR R1,R1,#0x6400 \ 000007C4 010050E1 CMP R0,R1 \ 000007C8 0E00001A BNE ??maincsm_onmessage_35 4628 { 4629 if ((int)msg->data0==csm->gui_id) \ 000007CC 1C109DE5 LDR R1,[SP, #+28] \ 000007D0 0C0094E5 LDR R0,[R4, #+12] \ 000007D4 281091E5 LDR R1,[R1, #+40] \ 000007D8 010050E1 CMP R0,R1 4630 { 4631 csm->csm.state=-3; \ 000007DC 1C009D05 LDREQ R0,[SP, #+28] \ 000007E0 0210E003 MVNEQ R1,#+2 \ 000007E4 10108005 STREQ R1,[R0, #+16] 4632 } 4633 if ((int)msg->data0==contactlist_menu_id) \ 000007E8 0C0094E5 LDR R0,[R4, #+12] \ 000007EC BC1195E5 LDR R1,[R5, #+444] \ 000007F0 010050E1 CMP R0,R1 4634 { 4635 contactlist_menu_id=0; \ 000007F4 BC618505 STREQ R6,[R5, #+444] 4636 prev_clmenu_itemcount=0; \ 000007F8 C4618505 STREQ R6,[R5, #+452] 4637 } 4638 if ((int)msg->data0==edchat_id) \ 000007FC C01195E5 LDR R1,[R5, #+448] \ 00000800 010050E1 CMP R0,R1 4639 { 4640 edchat_id=0; \ 00000804 C0618505 STREQ R6,[R5, #+448] 4641 } 4642 } 4643 if (msg->msg==MSG_HELPER_TRANSLATOR) \ ??maincsm_onmessage_35: \ 00000808 040094E5 LDR R0,[R4, #+4] \ 0000080C AE10A0E3 MOV R1,#+174 \ 00000810 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000814 010050E1 CMP R0,R1 \ 00000818 0F00001A BNE ??maincsm_onmessage_24 4644 { 4645 switch((int)msg->data0) \ 0000081C 0C0094E5 LDR R0,[R4, #+12] \ 00000820 101094E5 LDR R1,[R4, #+16] \ 00000824 ........ LDR R9,??DataTable174 ;; do_reconnect \ 00000828 5420A0E3 MOV R2,#+84 \ 0000082C 602D82E3 ORR R2,R2,#0x1800 \ 00000830 054082E0 ADD R4,R2,R5 \ 00000834 482F42E2 SUB R2,R2,#+288 \ 00000838 058082E0 ADD R8,R2,R5 \ 0000083C 802050E2 SUBS R2,R0,#+128 \ 00000840 0800000A BEQ ??maincsm_onmessage_36 \ 00000844 022052E2 SUBS R2,R2,#+2 \ 00000848 0200000A BEQ ??maincsm_onmessage_37 \ 0000084C 122052E2 SUBS R2,R2,#+18 \ 00000850 1600000A BEQ ??maincsm_onmessage_38 \ 00000854 200000EA B ??maincsm_onmessage_39 4646 { 4647 case LMAN_DISCONNECT_IND: 4648 is_gprs_online=0; \ ??maincsm_onmessage_37: \ 00000858 AC6185E5 STR R6,[R5, #+428] 4649 return(1); \ ??maincsm_onmessage_24: \ 0000085C 0100A0E3 MOV R0,#+1 \ 00000860 20D08DE2 ADD SP,SP,#+32 \ 00000864 F08FBDE8 POP {R4-R11,PC} ;; return 4650 case LMAN_CONNECT_CNF: 4651 vibra_count=1; \ ??maincsm_onmessage_36: \ 00000868 0100A0E3 MOV R0,#+1 \ 0000086C 7C0185E5 STR R0,[R5, #+380] 4652 start_vibra(); \ 00000870 ........ BL start_vibra 4653 is_gprs_online=1; \ 00000874 0100A0E3 MOV R0,#+1 \ 00000878 AC0185E5 STR R0,[R5, #+428] 4654 strcpy(logmsg,LG_GRGPRSUP); \ 0000087C DC00A0E3 MOV R0,#+220 \ 00000880 500E80E3 ORR R0,R0,#0x500 \ 00000884 071080E0 ADD R1,R0,R7 \ 00000888 0800A0E1 MOV R0,R8 \ 0000088C 1A0000EF SWI +26 4655 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 00000890 ........ LDR R0,??DataTable182 ;; RECONNECT_TIME \ 00000894 0920A0E1 MOV R2,R9 \ 00000898 000090E5 LDR R0,[R0, #+0] \ 0000089C D830A0E3 MOV R3,#+216 \ 000008A0 930001E0 MUL R1,R3,R0 \ 000008A4 0400A0E1 MOV R0,R4 \ 000008A8 4D0000EF SWI +77 4656 return(1); \ 000008AC 070000EA B ??maincsm_onmessage_40 4657 case ENIP_DNR_HOST_BY_NAME: 4658 if ((int)msg->data1==DNR_ID) \ ??maincsm_onmessage_38: \ 000008B0 D40195E5 LDR R0,[R5, #+468] \ 000008B4 000051E1 CMP R1,R0 \ 000008B8 E7FFFF1A BNE ??maincsm_onmessage_24 4659 { 4660 if (DNR_TRIES) SUBPROC((void *)create_connect); \ 000008BC D80195E5 LDR R0,[R5, #+472] \ 000008C0 000050E3 CMP R0,#+0 \ 000008C4 E4FFFF0A BEQ ??maincsm_onmessage_24 \ 000008C8 ........ LDR R0,??DataTable206 ;; create_connect \ ??maincsm_onmessage_41: \ 000008CC 710100EF SWI +369 4661 } 4662 return(1); \ ??maincsm_onmessage_40: \ 000008D0 0100A0E3 MOV R0,#+1 \ ??maincsm_onmessage_42: \ 000008D4 20D08DE2 ADD SP,SP,#+32 \ 000008D8 F08FBDE8 POP {R4-R11,PC} 4663 } 4664 if ((int)msg->data1==sock) \ ??maincsm_onmessage_39: \ 000008DC 902195E5 LDR R2,[R5, #+400] \ 000008E0 020051E1 CMP R1,R2 \ 000008E4 DCFFFF1A BNE ??maincsm_onmessage_24 4665 { 4666 //Если наш сокет 4667 if ((((unsigned int)msg->data0)>>28)==0xA) \ 000008E8 201EA0E1 LSR R1,R0,#+28 \ 000008EC 0A0051E3 CMP R1,#+10 \ 000008F0 0200001A BNE ??maincsm_onmessage_43 4668 { 4669 //Принят пакет 4670 ProcessPacket((TPKT *)msg->data0); \ 000008F4 ........ BL ProcessPacket 4671 return(0); \ 000008F8 0000A0E3 MOV R0,#+0 \ 000008FC F4FFFFEA B ??maincsm_onmessage_42 4672 } 4673 switch((int)msg->data0) \ ??maincsm_onmessage_43: \ 00000900 ........ LDR R2,??DataTable177 ;; VIBR_ON_CONNECT \ 00000904 8C1195E5 LDR R1,[R5, #+396] \ 00000908 00A092E5 LDR R10,[R2, #+0] \ 0000090C 8A0040E2 SUB R0,R0,#+138 \ 00000910 050050E3 CMP R0,#+5 \ 00000914 D0FFFF8A BHI ??maincsm_onmessage_24 \ 00000918 012F8FE2 ADR R2,??maincsm_onmessage_1 \ 0000091C D02092E1 LDRSB R2,[R2, R0] \ 00000920 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??maincsm_onmessage_1: \ 00000924 44443F01 DC8 +68,+68,+63,+1 \ 00000928 4D490000 DC8 +77,+73,+0,+0 4674 { 4675 case ENIP_SOCK_CONNECTED: 4676 if (connect_state==1) \ ??maincsm_onmessage_44: \ 0000092C 010051E3 CMP R1,#+1 \ 00000930 3500001A BNE ??maincsm_onmessage_45 4677 { 4678 if(VIBR_ON_CONNECT) \ 00000934 00005AE3 CMP R10,#+0 4679 vibra_count=2; \ 00000938 0200A013 MOVNE R0,#+2 4680 else 4681 vibra_count=1; \ 0000093C 0100A003 MOVEQ R0,#+1 \ 00000940 7C0185E5 STR R0,[R5, #+380] 4682 start_vibra(); \ 00000944 ........ BL start_vibra 4683 //Соединение установленно, посылаем пакет login 4684 strcpy(logmsg, LG_GRTRYLOGIN); \ 00000948 F400A0E3 MOV R0,#+244 \ 0000094C 500E80E3 ORR R0,R0,#0x500 \ 00000950 071080E0 ADD R1,R0,R7 \ 00000954 0800A0E1 MOV R0,R8 \ 00000958 1A0000EF SWI +26 4685 { 4686 int i=strlen(PASS); \ 0000095C B8019FE5 LDR R0,??maincsm_onmessage_5+0xC ;; PASS \ 00000960 1B0000EF SWI +27 \ 00000964 0040A0E1 MOV R4,R0 4687 TPKT *p=malloc(sizeof(PKT)+i); \ 00000968 080084E2 ADD R0,R4,#+8 \ 0000096C 140000EF SWI +20 4688 p->pkt.uin=UIN; 4689 p->pkt.type=T_REQLOGIN; 4690 p->pkt.data_len=i; 4691 memcpy(p->data,PASS,i); \ 00000970 A4119FE5 LDR R1,??maincsm_onmessage_5+0xC ;; PASS \ 00000974 0080A0E1 MOV R8,R0 \ 00000978 ........ LDR R0,??DataTable187 ;; UIN \ 0000097C 0420A0E1 MOV R2,R4 \ 00000980 009090E5 LDR R9,[R0, #+0] \ 00000984 0100A0E3 MOV R0,#+1 \ 00000988 009088E5 STR R9,[R8, #+0] \ 0000098C B400C8E1 STRH R0,[R8, #+4] \ 00000990 B640C8E1 STRH R4,[R8, #+6] \ 00000994 080088E2 ADD R0,R8,#+8 \ 00000998 1E0100EF SWI +286 4692 SUBPROC((void *)send_login,0,p); \ 0000099C A8019FE5 LDR R0,??maincsm_onmessage_5+0x3C ;; send_login \ 000009A0 0820A0E1 MOV R2,R8 \ 000009A4 0010A0E3 MOV R1,#+0 \ 000009A8 710100EF SWI +369 4693 } 4694 GROUP_CACHE=0; \ 000009AC B86185E5 STR R6,[R5, #+440] 4695 SENDMSGCOUNT=0; //Начинаем отсчет \ 000009B0 206185E5 STR R6,[R5, #+288] 4696 if (!FindGroupByID(0)) AddGroup(0,LG_GROUPNOTINLIST); \ 000009B4 0600A0E1 MOV R0,R6 \ 000009B8 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 000009BC 000050E3 CMP R0,#+0 \ 000009C0 0400001A BNE ??maincsm_onmessage_46 \ 000009C4 0400A0E3 MOV R0,#+4 \ 000009C8 600E80E3 ORR R0,R0,#0x600 \ 000009CC 071080E0 ADD R1,R0,R7 \ 000009D0 0000A0E3 MOV R0,#+0 \ 000009D4 ........ _BLF AddGroup,??AddGroup??rA 4697 if (!FindContactByUin(UIN)) AddContact(UIN, LG_CLLOOPBACK,0,1); \ ??maincsm_onmessage_46: \ 000009D8 0900A0E1 MOV R0,R9 \ 000009DC ........ _BLF FindContactByUin,??FindContactByUin??rA \ 000009E0 000050E3 CMP R0,#+0 \ 000009E4 0400001A BNE ??maincsm_onmessage_47 \ 000009E8 0130A0E3 MOV R3,#+1 \ 000009EC 0020A0E3 MOV R2,#+0 \ 000009F0 611E87E2 ADD R1,R7,#+1552 \ 000009F4 0900A0E1 MOV R0,R9 \ 000009F8 ........ _BLF AddContact,??AddContact??rA 4698 SUBPROC((void *)LoadLocalCL); \ ??maincsm_onmessage_47: \ 000009FC 4C019FE5 LDR R0,??maincsm_onmessage_5+0x40 ;; LoadLocalCL \ 00000A00 710100EF SWI +369 4699 SMART_REDRAW(); \ 00000A04 ........ BL SMART_REDRAW \ 00000A08 B0FFFFEA B ??maincsm_onmessage_40 4700 } 4701 else 4702 { 4703 ShowMSG(1,(int)LG_MSGILLEGMSGCON); \ ??maincsm_onmessage_45: \ 00000A0C 1C00A0E3 MOV R0,#+28 \ ??maincsm_onmessage_48: \ 00000A10 600E80E3 ORR R0,R0,#0x600 \ 00000A14 071080E0 ADD R1,R0,R7 \ 00000A18 0100A0E3 MOV R0,#+1 \ 00000A1C 480100EF SWI +328 \ 00000A20 AAFFFFEA B ??maincsm_onmessage_40 4704 } 4705 break; 4706 case ENIP_SOCK_DATA_READ: 4707 if (connect_state>=2) \ ??maincsm_onmessage_49: \ 00000A24 020051E3 CMP R1,#+2 4708 { 4709 //Если посылали send 4710 SUBPROC((void *)get_answer); \ 00000A28 24019FA5 LDRGE R0,??maincsm_onmessage_5+0x44 ;; get_answer \ 00000A2C A6FFFFAA BGE ??maincsm_onmessage_41 4711 //SMART_REDRAW(); 4712 } 4713 else 4714 { 4715 ShowMSG(1,(int)LG_MSGILLEGMSGREA); \ 00000A30 4400A0E3 MOV R0,#+68 \ 00000A34 F5FFFFEA B ??maincsm_onmessage_48 4716 } 4717 break; 4718 case ENIP_BUFFER_FREE: 4719 case ENIP_BUFFER_FREE1: 4720 SUBPROC((void *)SendAnswer,0,0); \ ??maincsm_onmessage_50: \ 00000A38 ........ LDR R0,??DataTable179 ;; SendAnswer \ 00000A3C 0020A0E3 MOV R2,#+0 \ 00000A40 0210A0E1 MOV R1,R2 \ 00000A44 710100EF SWI +369 \ 00000A48 A0FFFFEA B ??maincsm_onmessage_40 4721 break; 4722 case ENIP_SOCK_REMOTE_CLOSED: 4723 //Закрыт со стороны сервера 4724 if (connect_state) \ ??maincsm_onmessage_51: \ 00000A4C 000051E3 CMP R1,#+0 \ 00000A50 81FFFF0A BEQ ??maincsm_onmessage_24 4725 SUBPROC((void *)end_socket); \ 00000A54 ........ LDR R0,??DataTable204 ;; end_socket \ 00000A58 9BFFFFEA B ??maincsm_onmessage_41 4726 break; 4727 case ENIP_SOCK_CLOSED: 4728 //strcpy(logmsg, "No connection"); 4729 //Dump not received 4730 /* if (RXstate>(-(int)sizeof(PKT))) 4731 { 4732 unsigned int err; 4733 int f=fopen("4:\\NATICQ.dump",A_ReadWrite+A_Create+A_Truncate+A_BIN,P_READ+P_WRITE,&err); 4734 if (f!=-1) 4735 { 4736 fwrite(f,&RXbuf,RXstate+sizeof(PKT),&err); 4737 fclose(f,&err); 4738 } 4739 }*/ 4740 FillAllOffline(); \ ??maincsm_onmessage_52: \ 00000A5C ........ _BLF FillAllOffline,??FillAllOffline??rA 4741 RecountMenu(NULL,1); \ 00000A60 0110A0E3 MOV R1,#+1 \ 00000A64 0000A0E3 MOV R0,#+0 \ 00000A68 ........ BL RecountMenu 4742 connect_state=0; \ 00000A6C 8C6185E5 STR R6,[R5, #+396] 4743 sock=-1; \ 00000A70 0600E0E1 MVN R0,R6 \ 00000A74 900185E5 STR R0,[R5, #+400] 4744 if(VIBR_ON_CONNECT) \ 00000A78 00005AE3 CMP R10,#+0 4745 vibra_count=4; \ 00000A7C 0400A013 MOVNE R0,#+4 4746 else 4747 vibra_count=1; \ 00000A80 0100A003 MOVEQ R0,#+1 \ 00000A84 7C0185E5 STR R0,[R5, #+380] 4748 4749 start_vibra(); \ 00000A88 ........ BL start_vibra 4750 if (sendq_p) \ 00000A8C A80195E5 LDR R0,[R5, #+424] \ 00000A90 000050E3 CMP R0,#+0 \ 00000A94 0600000A BEQ ??maincsm_onmessage_53 4751 { 4752 snprintf(logmsg,255,"Disconnected, %d bytes not sended!",sendq_l); \ 00000A98 A43195E5 LDR R3,[R5, #+420] \ 00000A9C 6800A0E3 MOV R0,#+104 \ 00000AA0 600E80E3 ORR R0,R0,#0x600 \ 00000AA4 072080E0 ADD R2,R0,R7 \ 00000AA8 FF10A0E3 MOV R1,#+255 \ 00000AAC 0800A0E1 MOV R0,R8 \ 00000AB0 1B0100EF SWI +283 4753 } 4754 SMART_REDRAW(); \ ??maincsm_onmessage_53: \ 00000AB4 ........ BL SMART_REDRAW 4755 SUBPROC((void *)ClearSendQ); \ 00000AB8 ........ LDR R0,??DataTable181 ;; ClearSendQ \ 00000ABC 710100EF SWI +369 4756 #ifdef EVILFOX 4757 if (!disautorecconect) GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*12,do_reconnect); 4758 #else 4759 if (!disautorecconect) \ 00000AC0 600195E5 LDR R0,[R5, #+352] \ 00000AC4 000050E3 CMP R0,#+0 \ 00000AC8 63FFFF1A BNE ??maincsm_onmessage_24 4760 { 4761 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 00000ACC ........ LDR R0,??DataTable182 ;; RECONNECT_TIME \ 00000AD0 0920A0E1 MOV R2,R9 \ 00000AD4 005090E5 LDR R5,[R0, #+0] \ 00000AD8 D800A0E3 MOV R0,#+216 \ 00000ADC 900501E0 MUL R1,R0,R5 \ 00000AE0 0400A0E1 MOV R0,R4 \ 00000AE4 4D0000EF SWI +77 4762 snprintf(logmsg,255,"%s\nReconect after %d second...",logmsg, RECONNECT_TIME); //2058 \ 00000AE8 20002DE9 PUSH {R5} \ 00000AEC 0830A0E1 MOV R3,R8 \ 00000AF0 8C00A0E3 MOV R0,#+140 \ 00000AF4 600E80E3 ORR R0,R0,#0x600 \ 00000AF8 072080E0 ADD R2,R0,R7 \ 00000AFC FF10A0E3 MOV R1,#+255 \ 00000B00 0800A0E1 MOV R0,R8 \ 00000B04 1B0100EF SWI +283 \ 00000B08 04D08DE2 ADD SP,SP,#+4 \ 00000B0C 6FFFFFEA B ??maincsm_onmessage_40 \ ??maincsm_onmessage_5: \ 00000B10 ........ DC32 CheckDoubleRun \ 00000B14 ........ DC32 ProcessNextSmile \ 00000B18 ........ DC32 ProcessNextXStatImg \ 00000B1C ........ DC32 PASS \ 00000B20 ........ DC32 IDLEICON_X \ 00000B24 ........ DC32 IDLEICON_Y \ 00000B28 ........ DC32 XStatusesIconArray \ 00000B2C ........ DC32 IDLEICON_XX \ 00000B30 ........ DC32 IDLEICON_YX \ 00000B34 ........ DC32 msg_d_x \ 00000B38 ........ DC32 msg_d_y \ 00000B3C ........ DC32 spaco2 \ 00000B40 ........ DC32 Is_Unread_On \ 00000B44 ........ DC32 unread_Y \ 00000B48 ........ DC32 unread_X \ 00000B4C ........ DC32 send_login \ 00000B50 ........ DC32 LoadLocalCL \ 00000B54 ........ DC32 get_answer 4763 } 4764 4765 #endif 4766 break; 4767 } 4768 } 4769 } 4770 return(1); 4771 } 4772 4773 4774 //-------------------- ICON IN ICONBAR ------------// 4775 4776 4777 #pragma swi_number=0x27 4778 __swi __arm void AddIconToIconBar(int pic, short *num); 4779 4780 extern const unsigned int NumStatusToIconBar; 4781 extern const unsigned int NumXStatusToIconBar; 4782 //extern void SetIconBarHandler(); 4783 extern const int ShowStatusIcon; 4784 \ In segment CODE, align 4, keep-with-next 4785 int IsIdle(void) 4786 { \ IsIdle: \ 00000000 00402DE9 PUSH {LR} 4787 void *icsm=FindCSMbyID(CSM_root()->idle_id); \ 00000004 068100EF SWI +33030 \ 00000008 040090E5 LDR R0,[R0, #+4] \ 0000000C 080100EF SWI +264 4788 if (IsGuiOnTop(((int*)icsm)[DISPLACE_OF_IDLEGUI_ID/4 ])) \ 00000010 2C0090E5 LDR R0,[R0, #+44] \ 00000014 350100EF SWI +309 \ 00000018 000050E3 CMP R0,#+0 4789 return(1); \ 0000001C 0100A013 MOVNE R0,#+1 4790 else 4791 return(0); \ 00000020 0080BDE8 POP {PC} ;; return 4792 } 4793 \ In segment CODE, align 4, keep-with-next 4794 void addIconBar(short* num) 4795 { \ addIconBar: \ 00000000 70402DE9 PUSH {R4-R6,LR} 4796 if(ShowStatusIcon==1 || ShowStatusIcon==3) \ 00000004 ........ LDR R6,??DataTable205 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 74009FE5 LDR R0,??addIconBar_0 ;; NumStatusToIconBar \ 00000010 005090E5 LDR R5,[R0, #+0] \ 00000014 ........ LDR R0,??DataTable184 ;; ShowStatusIcon \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C 010050E3 CMP R0,#+1 \ 00000020 03005013 CMPNE R0,#+3 \ 00000024 0400000A BEQ ??addIconBar_1 4797 AddIconToIconBar(NumStatusToIconBar +CurrentStatus, num); 4798 else 4799 if(ShowStatusIcon==2) \ 00000028 020050E3 CMP R0,#+2 \ 0000002C 0600001A BNE ??addIconBar_2 4800 if(!(IsIdle())) \ 00000030 ........ BL IsIdle \ 00000034 000050E3 CMP R0,#+0 \ 00000038 0300001A BNE ??addIconBar_2 4801 AddIconToIconBar(NumStatusToIconBar +CurrentStatus, num); \ ??addIconBar_1: \ 0000003C 740196E5 LDR R0,[R6, #+372] \ 00000040 0410A0E1 MOV R1,R4 \ 00000044 050080E0 ADD R0,R0,R5 \ 00000048 270000EF SWI +39 4802 4803 if(show_xstatus==2 || show_xstatus==3) \ ??addIconBar_2: \ 0000004C ........ LDR R0,??DataTable185 ;; show_xstatus \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 020050E3 CMP R0,#+2 \ 00000058 03005013 CMPNE R0,#+3 \ 0000005C 7080BD18 POPNE {R4-R6,PC} 4804 if(CurrentXStatus!=0) \ 00000060 ........ LDR R0,??DataTable186 ;; CurrentXStatus \ 00000064 000090E5 LDR R0,[R0, #+0] \ 00000068 000050E3 CMP R0,#+0 \ 0000006C 7080BD08 POPEQ {R4-R6,PC} 4805 AddIconToIconBar(NumXStatusToIconBar+CurrentXStatus,num); \ 00000070 14209FE5 LDR R2,??addIconBar_0+0x4 ;; NumXStatusToIconBar \ 00000074 0410A0E1 MOV R1,R4 \ 00000078 002092E5 LDR R2,[R2, #+0] \ 0000007C 020080E0 ADD R0,R0,R2 \ 00000080 270000EF SWI +39 4806 } \ 00000084 7080BDE8 POP {R4-R6,PC} ;; return \ ??addIconBar_0: \ 00000088 ........ DC32 NumStatusToIconBar \ 0000008C ........ DC32 NumXStatusToIconBar 4807 4808 typedef struct 4809 { 4810 char check_name[8]; 4811 int addr; 4812 }ICONBAR_H; 4813 4814 \ In segment DATA_C, align 4, align-sorted 4815 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 4816 \ In segment DATA_Z, align 4, align-sorted 4817 unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 4818 4819 struct 4820 { 4821 CSM_DESC maincsm; 4822 WSHDR maincsm_name; 4823 ICONBAR_H iconbar_handler; 4824 }MAINCSM = 4825 { 4826 { 4827 maincsm_onmessage, 4828 maincsm_oncreate, 4829 #ifdef NEWSGOLD 4830 0, 4831 0, 4832 0, 4833 0, 4834 #endif 4835 maincsm_onclose, 4836 sizeof(MAIN_CSM), 4837 1, 4838 &minus11 4839 }, 4840 { 4841 maincsm_name_body, 4842 NAMECSM_MAGIC1, 4843 NAMECSM_MAGIC2, 4844 0x0, 4845 139 4846 }, 4847 { 4848 "IconBar" 4849 } 4850 }; 4851 \ In segment CODE, align 4, keep-with-next 4852 void UpdateCSMname(void) 4853 { 4854 wsprintf((WSHDR *)(&MAINCSM.maincsm_name), "NATICQ: %d",UIN); \ UpdateCSMname: \ 00000000 ........ LDR R0,??DataTable187 ;; UIN \ 00000004 10109FE5 LDR R1,??UpdateCSMname_0 ;; `?` \ 00000008 00402DE9 PUSH {LR} \ 0000000C 002090E5 LDR R2,[R0, #+0] \ 00000010 08009FE5 LDR R0,??UpdateCSMname_0+0x4 ;; S_ICONS + 156 \ 00000014 240100EF SWI +292 4855 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??UpdateCSMname_0: \ 0000001C ........ DC32 `?` \ 00000020 ........ DC32 S_ICONS + 156 4856 \ In segment CODE, align 4, keep-with-next 4857 void SetIconBarHandler() 4858 { 4859 MAINCSM.iconbar_handler.addr = (int)addIconBar; \ SetIconBarHandler: \ 00000000 08009FE5 LDR R0,??SetIconBarHandler_0 ;; S_ICONS + 184 \ 00000004 ........ LDR R1,??DataTable196 ;; addIconBar \ 00000008 001080E5 STR R1,[R0, #+0] 4860 } \ 0000000C 1EFF2FE1 BX LR ;; return \ ??SetIconBarHandler_0: \ 00000010 ........ DC32 S_ICONS + 184 4861 \ In segment CODE, align 4, keep-with-next 4862 int main(char *filename) 4863 { \ main: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 4864 MAIN_CSM main_csm; 4865 char *s; 4866 int len; 4867 extern const char *successed_config_filename; 4868 WSHDR *ws; 4869 sprintf(PINGO, "Ping None"); \ 00000004 ........ LDR R4,??DataTable205 ;; S_ICONS \ 00000008 ........ LDR R5,??DataTable190 ;; `?` \ 0000000C 2CD04DE2 SUB SP,SP,#+44 \ 00000010 0060A0E1 MOV R6,R0 \ 00000014 AC00A0E3 MOV R0,#+172 \ 00000018 600E80E3 ORR R0,R0,#0x600 \ 0000001C 051080E0 ADD R1,R0,R5 \ 00000020 D50E80E2 ADD R0,R0,#+3408 \ 00000024 040080E0 ADD R0,R0,R4 \ 00000028 160000EF SWI +22 4870 InitConfig(); \ 0000002C ........ _BLF InitConfig,??InitConfig??rA 4871 s=strrchr(filename,'\\'); 4872 len=(s-filename)+1; \ 00000030 5C10A0E3 MOV R1,#+92 \ 00000034 0600A0E1 MOV R0,R6 \ 00000038 170100EF SWI +279 \ 0000003C 060040E0 SUB R0,R0,R6 \ 00000040 017080E2 ADD R7,R0,#+1 4873 strncpy(elf_path,filename,len); \ 00000044 0720A0E1 MOV R2,R7 \ 00000048 0610A0E1 MOV R1,R6 \ 0000004C 8F0F84E2 ADD R0,R4,#+572 \ 00000050 160100EF SWI +278 4874 elf_path[len]=0; \ 00000054 040087E0 ADD R0,R7,R4 \ 00000058 0010A0E3 MOV R1,#+0 \ 0000005C 3C12C0E5 STRB R1,[R0, #+572] 4875 if (!UIN) \ 00000060 ........ LDR R0,??DataTable191 ;; UIN \ 00000064 000090E5 LDR R0,[R0, #+0] \ 00000068 000050E3 CMP R0,#+0 \ 0000006C 1700001A BNE ??main_0 4876 { 4877 LockSched(); \ 00000070 460100EF SWI +326 4878 ShowMSG(1,(int)LG_MSGNOUINPASS); \ 00000074 B800A0E3 MOV R0,#+184 \ 00000078 600E80E3 ORR R0,R0,#0x600 \ 0000007C 051080E0 ADD R1,R0,R5 \ 00000080 0100A0E3 MOV R0,#+1 \ 00000084 480100EF SWI +328 4879 ws=AllocWS(150); \ 00000088 9600A0E3 MOV R0,#+150 \ 0000008C 250100EF SWI +293 \ 00000090 0040A0E1 MOV R4,R0 4880 str_2ws(ws,successed_config_filename,128); \ 00000094 ........ LDR R0,??DataTable192 ;; successed_config_filename \ 00000098 8020A0E3 MOV R2,#+128 \ 0000009C 001090E5 LDR R1,[R0, #+0] \ 000000A0 0400A0E1 MOV R0,R4 \ 000000A4 6C0100EF SWI +364 4881 ExecuteFile(ws,0,0); \ 000000A8 0020A0E3 MOV R2,#+0 \ 000000AC 0010A0E3 MOV R1,#+0 \ 000000B0 0400A0E1 MOV R0,R4 \ 000000B4 940000EF SWI +148 4882 UnlockSched(); \ 000000B8 470100EF SWI +327 4883 SUBPROC((void *)ElfKiller); \ 000000BC ........ LDR R0,??DataTable193 ;; ElfKiller \ 000000C0 710100EF SWI +369 4884 return 0; \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 2CD08DE2 ADD SP,SP,#+44 \ 000000CC F080BDE8 POP {R4-R7,PC} 4885 } 4886 ReadDefSettings(); 4887 setup_ICONS(); 4888 LoadXStatusText(); 4889 UpdateCSMname(); 4890 LockSched(); 4891 maincsm_id=CreateCSM(&MAINCSM.maincsm,&main_csm,0); 4892 UnlockSched(); 4893 #ifdef EVILFOX 4894 FontPathInit(fonto,(char *)fontpath, 0); 4895 away_timer(); 4896 #else 4897 FontPathInit(fonto,(char *)fontpath, 1); \ ??main_0: \ 000000D0 ........ LDR R7,??DataTable194 ;; fontpath \ 000000D4 ........ BL ReadDefSettings \ 000000D8 ........ BL setup_ICONS \ 000000DC ........ _BLF LoadXStatusText,??LoadXStatusText??rA \ 000000E0 ........ BL UpdateCSMname \ 000000E4 460100EF SWI +326 \ 000000E8 0020A0E3 MOV R2,#+0 \ 000000EC 0D10A0E1 MOV R1,SP \ 000000F0 740084E2 ADD R0,R4,#+116 \ 000000F4 070100EF SWI +263 \ 000000F8 180184E5 STR R0,[R4, #+280] \ 000000FC 470100EF SWI +327 \ 00000100 ........ LDR R0,??DataTable195 ;; fonto \ 00000104 0120A0E3 MOV R2,#+1 \ 00000108 006090E5 LDR R6,[R0, #+0] \ 0000010C 0710A0E1 MOV R1,R7 \ 00000110 0600A0E1 MOV R0,R6 \ 00000114 ........ _BLF FontPathInit,??FontPathInit??rA 4898 away_timer(); \ 00000118 ........ BL away_timer 4899 #endif 4900 SetIconBarHandler(); \ 0000011C ........ LDR R0,??DataTable196 ;; addIconBar 4901 //#ifdef ELKA 4902 if(fonto==1) \ 00000120 010056E3 CMP R6,#+1 \ 00000124 B80084E5 STR R0,[R4, #+184] \ 00000128 0B00001A BNE ??main_1 4903 { 4904 char *heght=malloc(64); \ 0000012C 4000A0E3 MOV R0,#+64 \ 00000130 140000EF SWI +20 \ 00000134 0060A0E1 MOV R6,R0 4905 sprintf(heght, "%s2240.png", fontpath); \ 00000138 0720A0E1 MOV R2,R7 \ 0000013C 5D1E85E2 ADD R1,R5,#+1488 \ 00000140 160000EF SWI +22 4906 paused_height=GetImgHeight((int)heght); \ 00000144 0600A0E1 MOV R0,R6 \ 00000148 210000EF SWI +33 \ 0000014C F00084E5 STR R0,[R4, #+240] 4907 mfree(heght); \ 00000150 0600A0E1 MOV R0,R6 \ 00000154 150000EF SWI +21 \ 00000158 010000EA B ??main_2 4908 } 4909 else 4910 paused_height=fonto-100; \ ??main_1: \ 0000015C 640046E2 SUB R0,R6,#+100 \ 00000160 F00084E5 STR R0,[R4, #+240] 4911 //#endif 4912 GBS_StartTimerProc(&mytmr3, 12000, Pinger2); \ ??main_2: \ 00000164 ........ LDR R2,??DataTable197 ;; Pinger2 \ 00000168 E010A0E3 MOV R1,#+224 \ 0000016C B81D81E3 ORR R1,R1,#0x2E00 \ 00000170 EC00A0E3 MOV R0,#+236 \ 00000174 4C0D80E3 ORR R0,R0,#0x1300 \ 00000178 040080E0 ADD R0,R0,R4 \ 0000017C 4D0000EF SWI +77 4913 x_zstatus(); \ 00000180 ........ BL x_zstatus 4914 #ifdef NEWSGOLD 4915 initTags(); \ 00000184 ........ _BLF initTags,??initTags??rA 4916 #endif 4917 init_time_zone(); \ 00000188 ........ BL init_time_zone 4918 AddKeybMsgHook((void *)my_keyhook); \ 0000018C ........ LDR R0,??DataTable198 ;; my_keyhook \ 00000190 2B0100EF SWI +299 4919 return 0; \ 00000194 0000A0E3 MOV R0,#+0 \ 00000198 2CD08DE2 ADD SP,SP,#+44 \ 0000019C F080BDE8 POP {R4-R7,PC} ;; return 4920 } 4921 4922 //=========================================================== 4923 // Edit chat 4924 //=========================================================== \ In segment CODE, align 4, keep-with-next 4925 void edchat_locret(void){} \ edchat_locret: \ 00000000 1EFF2FE1 BX LR ;; return 4926 \ In segment CODE, align 4, keep-with-next 4927 char *ExtractAnswer(WSHDR *ws) 4928 { \ ExtractAnswer: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 4929 S_SMILES *t; 4930 int c; 4931 int len=0; 4932 int scur; 4933 char *msg=NULL; 4934 unsigned short *wsbody=ws->wsbody; \ 00000004 005090E5 LDR R5,[R0, #+0] \ 00000008 0040A0E3 MOV R4,#+0 4935 int wslen=wsbody[0]; \ 0000000C B060D5E1 LDRH R6,[R5, #+0] \ 00000010 0070A0E3 MOV R7,#+0 4936 if (wslen) \ 00000014 000056E3 CMP R6,#+0 \ 00000018 3C00000A BEQ ??ExtractAnswer_0 4937 { 4938 for (int i=0; i=0xE100) 4942 { 4943 t=FindSmileByUni(c); 4944 if (t) 4945 { 4946 if (t->lines) 4947 { 4948 len+=strlen(t->lines->text); 4949 } 4950 } 4951 else len++; 4952 } 4953 else len++; 4954 } 4955 4956 msg=malloc(len+1); \ ??ExtractAnswer_2: \ 00000024 010084E2 ADD R0,R4,#+1 \ 00000028 140000EF SWI +20 \ 0000002C 0070A0E1 MOV R7,R0 4957 scur=0; \ 00000030 0090A0E3 MOV R9,#+0 4958 for (int wcur=0; wcur=0xE100) 4963 { 4964 t=FindSmileByUni(c); 4965 if (t) 4966 { 4967 int w; 4968 char *s; 4969 if (t->lines) 4970 { 4971 s=t->lines->text; 4972 while ((w=*s++) && scurnext)) \ FindNextActiveContact: \ ??FindNextActiveContact_0: \ 00000000 000090E5 LDR R0,[R0, #+0] \ 00000004 000050E3 CMP R0,#+0 \ 00000008 0300000A BEQ ??FindNextActiveContact_1 4999 { 5000 if (t->isactive) return t; \ 0000000C 801090E5 LDR R1,[R0, #+128] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 F9FFFF0A BEQ ??FindNextActiveContact_0 \ 00000018 1EFF2FE1 BX LR 5001 } 5002 t=(CLIST *)(&cltop); \ ??FindNextActiveContact_1: \ 0000001C ........ LDR R0,??DataTable200 ;; S_ICONS + 436 \ 00000020 020000EA B ??FindNextActiveContact_2 5003 while(t=(CLIST *)(t->next)) 5004 { 5005 if (t->isactive) return t; \ ??FindNextActiveContact_3: \ 00000024 801090E5 LDR R1,[R0, #+128] \ 00000028 000051E3 CMP R1,#+0 \ 0000002C 1EFF2F11 BXNE LR 5006 } \ ??FindNextActiveContact_2: \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 000050E3 CMP R0,#+0 \ 00000038 F9FFFF1A BNE ??FindNextActiveContact_3 5007 return NULL; \ 0000003C 1EFF2FE1 BX LR ;; return 5008 } 5009 \ In segment CODE, align 4, keep-with-next 5010 CLIST *FindPrevActiveContact(CLIST *t) 5011 { 5012 CLIST *cl; 5013 CLIST *cl_active=NULL; 5014 cl=(CLIST *)(&cltop); \ FindPrevActiveContact: \ 00000000 ........ LDR R2,??DataTable200 ;; S_ICONS + 436 \ 00000004 0010A0E3 MOV R1,#+0 \ 00000008 020000EA B ??FindPrevActiveContact_0 5015 5016 5017 while(cl=cl->next) 5018 { 5019 if (cl==t) 5020 { 5021 if (cl_active==NULL) break; 5022 else return (cl_active); 5023 } 5024 else 5025 { 5026 if (cl->isactive) cl_active=cl; \ ??FindPrevActiveContact_1: \ 0000000C 803092E5 LDR R3,[R2, #+128] \ 00000010 000053E3 CMP R3,#+0 \ 00000014 0210A011 MOVNE R1,R2 5027 } \ ??FindPrevActiveContact_0: \ 00000018 002092E5 LDR R2,[R2, #+0] \ 0000001C 000052E3 CMP R2,#+0 \ 00000020 0500000A BEQ ??FindPrevActiveContact_2 \ 00000024 000052E1 CMP R2,R0 \ 00000028 F7FFFF1A BNE ??FindPrevActiveContact_1 \ 0000002C 000051E3 CMP R1,#+0 \ 00000030 0100000A BEQ ??FindPrevActiveContact_2 \ ??FindPrevActiveContact_3: \ 00000034 0100A0E1 MOV R0,R1 \ 00000038 1EFF2FE1 BX LR ;; return 5028 } 5029 while(t) \ ??FindPrevActiveContact_2: \ 0000003C 000050E3 CMP R0,#+0 \ 00000040 FBFFFF0A BEQ ??FindPrevActiveContact_3 5030 { 5031 if (t->isactive) cl_active=t; \ 00000044 802090E5 LDR R2,[R0, #+128] \ 00000048 000052E3 CMP R2,#+0 \ 0000004C 0010A011 MOVNE R1,R0 5032 t=t->next; \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 F8FFFFEA B ??FindPrevActiveContact_2 5033 } 5034 return cl_active; 5035 } 5036 5037 \ In segment CODE, align 4, keep-with-next 5038 void ed_options_handler(USR_MENU_ITEM *item) 5039 { \ ed_options_handler: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 5040 EDCHAT_STRUCT *ed_struct=item->user_pointer; 5041 CLIST *t; 5042 int i=item->cur_item; 5043 if (item->type==0) \ 00000004 ........ LDR R5,??DataTable205 ;; S_ICONS \ 00000008 2CD04DE2 SUB SP,SP,#+44 \ 0000000C 0070A0E1 MOV R7,R0 \ 00000010 0000D7E5 LDRB R0,[R7, #+0] \ 00000014 044097E5 LDR R4,[R7, #+4] \ 00000018 B860D7E1 LDRH R6,[R7, #+8] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 0D00001A BNE ??ed_options_handler_0 5044 { 5045 switch(i) \ 00000024 0C0097E5 LDR R0,[R7, #+12] \ 00000028 80119FE5 LDR R1,??ed_options_handler_1 ;; `?ws,LG_MNUEDNEXTACT); 5049 break; 5050 case 1: 5051 ascii2ws(item->ws,LG_MNUEDPREVACT); \ 00000038 10108102 ADDEQ R1,R1,#+16 \ 0000003C 0500000A BEQ ??ed_options_handler_2 5052 break; 5053 default: 5054 i-=2; 5055 if (iloaded_templates) ascii2ws(item->ws,templates_lines[i]); \ 00000040 101094E5 LDR R1,[R4, #+16] \ 00000044 026046E2 SUB R6,R6,#+2 \ 00000048 010056E1 CMP R6,R1 \ 0000004C 550000AA BGE ??ed_options_handler_3 \ 00000050 841195E5 LDR R1,[R5, #+388] \ 00000054 061191E7 LDR R1,[R1, +R6, LSL #+2] \ ??ed_options_handler_2: \ 00000058 ........ _BLF ascii2ws,??ascii2ws??rA 5056 break; 5057 } 5058 } 5059 if (item->type==1) \ ??ed_options_handler_0: \ 0000005C 0000D7E5 LDRB R0,[R7, #+0] \ 00000060 010050E3 CMP R0,#+1 \ 00000064 4F00001A BNE ??ed_options_handler_3 5060 { 5061 switch(i) \ 00000068 007094E5 LDR R7,[R4, #+0] \ 0000006C 0600B0E1 MOVS R0,R6 \ 00000070 0200000A BEQ ??ed_options_handler_4 \ 00000074 010056E2 SUBS R0,R6,#+1 \ 00000078 0C00000A BEQ ??ed_options_handler_5 \ 0000007C 0E0000EA B ??ed_options_handler_6 5062 { 5063 case 0: 5064 t=FindNextActiveContact(ed_struct->ed_contact); \ ??ed_options_handler_4: \ 00000080 0700A0E1 MOV R0,R7 \ 00000084 ........ BL FindNextActiveContact \ ??ed_options_handler_7: \ 00000088 0040B0E1 MOVS R4,R0 5065 if (t && t!=ed_struct->ed_contact) \ 0000008C 07005411 CMPNE R4,R7 \ 00000090 4400000A BEQ ??ed_options_handler_3 5066 { 5067 GeneralFunc_flag1(edchat_id,1); \ 00000094 C00195E5 LDR R0,[R5, #+448] \ 00000098 0110A0E3 MOV R1,#+1 \ 0000009C 3D0100EF SWI +317 5068 CreateEditChat(t); \ 000000A0 0400A0E1 MOV R0,R4 \ 000000A4 ........ BL CreateEditChat \ 000000A8 2CD08DE2 ADD SP,SP,#+44 \ 000000AC F080BDE8 POP {R4-R7,PC} 5069 } 5070 break; 5071 case 1: 5072 t=FindPrevActiveContact(ed_struct->ed_contact); \ ??ed_options_handler_5: \ 000000B0 0700A0E1 MOV R0,R7 \ 000000B4 ........ BL FindPrevActiveContact \ 000000B8 F2FFFFEA B ??ed_options_handler_7 5073 if (t && t!=ed_struct->ed_contact) 5074 { 5075 GeneralFunc_flag1(edchat_id,1); 5076 CreateEditChat(t); 5077 } 5078 break; 5079 default: 5080 i-=2; 5081 if (iloaded_templates) \ ??ed_options_handler_6: \ 000000BC 100094E5 LDR R0,[R4, #+16] \ 000000C0 026046E2 SUB R6,R6,#+2 \ 000000C4 000056E1 CMP R6,R0 \ 000000C8 360000AA BGE ??ed_options_handler_3 5082 { 5083 EDITCONTROL ec; 5084 WSHDR *ed_ws; 5085 int c; 5086 char *p=templates_lines[i]; \ 000000CC 840195E5 LDR R0,[R5, #+388] 5087 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ 000000D0 081094E5 LDR R1,[R4, #+8] \ 000000D4 065190E7 LDR R5,[R0, +R6, LSL #+2] \ 000000D8 040094E5 LDR R0,[R4, #+4] \ 000000DC 0D20A0E1 MOV R2,SP \ 000000E0 690100EF SWI +361 5088 ed_ws=AllocWS(ec.pWS->wsbody[0]+strlen(p)); \ 000000E4 0500A0E1 MOV R0,R5 \ 000000E8 1B0000EF SWI +27 \ 000000EC 28109DE5 LDR R1,[SP, #+40] \ 000000F0 001091E5 LDR R1,[R1, #+0] \ 000000F4 B010D1E1 LDRH R1,[R1, #+0] \ 000000F8 010080E0 ADD R0,R0,R1 \ 000000FC 250100EF SWI +293 5089 wstrcpy(ed_ws,ec.pWS); \ 00000100 28109DE5 LDR R1,[SP, #+40] \ 00000104 0060A0E1 MOV R6,R0 \ 00000108 1F0100EF SWI +287 5090 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ 0000010C 040094E5 LDR R0,[R4, #+4] \ 00000110 820100EF SWI +386 \ 00000114 081094E5 LDR R1,[R4, #+8] \ 00000118 010050E1 CMP R0,R1 \ 0000011C 1800001A BNE ??ed_options_handler_8 5091 { 5092 int pos=EDIT_GetCursorPos(ed_struct->ed_chatgui); \ 00000120 040094E5 LDR R0,[R4, #+4] \ 00000124 D30100EF SWI +467 \ 00000128 0070A0E1 MOV R7,R0 \ 0000012C 050000EA B ??ed_options_handler_9 5093 while(c=*p++) 5094 { 5095 wsInsertChar(ed_ws,char8to16(c),pos++); \ ??ed_options_handler_10: \ 00000130 ........ _BLF char8to16,??char8to16??rA \ 00000134 0010A0E1 MOV R1,R0 \ 00000138 0720A0E1 MOV R2,R7 \ 0000013C 0600A0E1 MOV R0,R6 \ 00000140 1D0000EF SWI +29 \ 00000144 017087E2 ADD R7,R7,#+1 5096 } \ ??ed_options_handler_9: \ 00000148 ........ LDRB R0,[R5], #+1 \ 0000014C 000050E3 CMP R0,#+0 \ 00000150 F6FFFF1A BNE ??ed_options_handler_10 5097 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ 00000154 081094E5 LDR R1,[R4, #+8] \ 00000158 040094E5 LDR R0,[R4, #+4] \ 0000015C 0620A0E1 MOV R2,R6 \ 00000160 DE0100EF SWI +478 5098 EDIT_SetCursorPos(ed_struct->ed_chatgui,pos); \ 00000164 040094E5 LDR R0,[R4, #+4] \ 00000168 0710A0E1 MOV R1,R7 \ 0000016C D40100EF SWI +468 \ 00000170 0A0000EA B ??ed_options_handler_11 5099 } 5100 else 5101 { 5102 while(c=*p++) 5103 { 5104 wsAppendChar(ed_ws,char8to16(c)); \ ??ed_options_handler_12: \ 00000174 ........ _BLF char8to16,??char8to16??rA \ 00000178 0010A0E1 MOV R1,R0 \ 0000017C 0600A0E1 MOV R0,R6 \ 00000180 1C0000EF SWI +28 5105 } \ ??ed_options_handler_8: \ 00000184 ........ LDRB R0,[R5], #+1 \ 00000188 000050E3 CMP R0,#+0 \ 0000018C F8FFFF1A BNE ??ed_options_handler_12 5106 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ 00000190 081094E5 LDR R1,[R4, #+8] \ 00000194 040094E5 LDR R0,[R4, #+4] \ 00000198 0620A0E1 MOV R2,R6 \ 0000019C DE0100EF SWI +478 5107 } 5108 FreeWS(ed_ws); \ ??ed_options_handler_11: \ 000001A0 0600A0E1 MOV R0,R6 \ 000001A4 290100EF SWI +297 5109 } 5110 break; 5111 } 5112 } 5113 } \ ??ed_options_handler_3: \ 000001A8 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 000001AC F080BDE8 POP {R4-R7,PC} ;; return \ ??ed_options_handler_1: \ 000001B0 ........ DC32 `?= len) 5122 { 5123 s = str; 5124 w = ws; 5125 l = len; 5126 for(; (char16to8(*w) == *s) && l; w++, s++, l--); 5127 if(!l) return ws; 5128 ws++; 5129 (*wslen)--; \ ??wstrstr_1: \ 00000018 000095E5 LDR R0,[R5, #+0] \ 0000001C 027087E2 ADD R7,R7,#+2 \ 00000020 010040E2 SUB R0,R0,#+1 \ 00000024 000085E5 STR R0,[R5, #+0] \ ??wstrstr_0: \ 00000028 000095E5 LDR R0,[R5, #+0] \ 0000002C 060050E1 CMP R0,R6 \ 00000030 0F0000BA BLT ??wstrstr_2 \ 00000034 0480A0E1 MOV R8,R4 \ 00000038 0790A0E1 MOV R9,R7 \ 0000003C 06A0A0E1 MOV R10,R6 \ 00000040 000000EA B ??wstrstr_3 \ ??wstrstr_4: \ 00000044 01A04AE2 SUB R10,R10,#+1 \ ??wstrstr_3: \ 00000048 ........ LDRH R0,[R9], #+2 \ 0000004C ........ _BLF char16to8,??char16to8??rA \ 00000050 ........ LDRB R1,[R8], #+1 \ 00000054 010050E1 CMP R0,R1 \ 00000058 0100001A BNE ??wstrstr_5 \ 0000005C 00005AE3 CMP R10,#+0 \ 00000060 F7FFFF1A BNE ??wstrstr_4 \ ??wstrstr_5: \ 00000064 00005AE3 CMP R10,#+0 \ 00000068 EAFFFF1A BNE ??wstrstr_1 \ 0000006C 0700A0E1 MOV R0,R7 \ 00000070 F087BDE8 POP {R4-R10,PC} 5130 } 5131 return 0; \ ??wstrstr_2: \ 00000074 0000A0E3 MOV R0,#+0 \ 00000078 F087BDE8 POP {R4-R10,PC} ;; return 5132 5133 } 5134 \ In segment CODE, align 4, keep-with-next 5135 int IsUrl(WSHDR *ws, int pos, char *link) 5136 { \ IsUrl: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0150A0E1 MOV R5,R1 5137 const char *valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%;:@&=/?абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; 5138 5139 int len = wstrlen(ws); 5140 unsigned short *str = ws->wsbody+1, *tmp, *begin; 5141 tmp = str; 5142 5143 begin = str = wstrstr(str, "http://", &len, 7); \ 0000000C ........ LDR R7,??DataTable203 ;; `?` \ 00000010 0260A0E1 MOV R6,R2 \ 00000014 230100EF SWI +291 \ 00000018 00008DE5 STR R0,[SP, #+0] \ 0000001C 04009DE5 LDR R0,[SP, #+4] \ 00000020 0730A0E3 MOV R3,#+7 \ 00000024 000090E5 LDR R0,[R0, #+0] \ 00000028 0D20A0E1 MOV R2,SP \ 0000002C 028080E2 ADD R8,R0,#+2 \ 00000030 941087E2 ADD R1,R7,#+148 \ 00000034 0800A0E1 MOV R0,R8 \ 00000038 ........ BL wstrstr \ 0000003C 00B0A0E1 MOV R11,R0 \ 00000040 0040A0E1 MOV R4,R0 \ 00000044 A890A0E1 LSR R9,R8,#+1 \ 00000048 02A045E2 SUB R10,R5,#+2 \ 0000004C 060000EA B ??IsUrl_0 5144 5145 while(str && (begin-tmp <= pos)) 5146 { 5147 while(len && strchr(valid, char16to8(*str))) {str++; len--;} 5148 if(str-tmp >= pos-2) 5149 { 5150 for(;begin < str; begin++, link++) 5151 *link = char16to8(*begin); 5152 link[str-begin] = 0; 5153 return 1; 5154 } 5155 begin = str = wstrstr(str, "http://", &len, 7); \ ??IsUrl_1: \ 00000050 0730A0E3 MOV R3,#+7 \ 00000054 0D20A0E1 MOV R2,SP \ 00000058 941087E2 ADD R1,R7,#+148 \ 0000005C 0B00A0E1 MOV R0,R11 \ 00000060 ........ BL wstrstr \ 00000064 00B0A0E1 MOV R11,R0 \ 00000068 0040A0E1 MOV R4,R0 \ ??IsUrl_0: \ 0000006C 00005BE3 CMP R11,#+0 \ 00000070 0200000A BEQ ??IsUrl_2 \ 00000074 A40069E0 RSB R0,R9,R4, LSR #+1 \ 00000078 000055E1 CMP R5,R0 \ 0000007C 0B0000AA BGE ??IsUrl_3 5156 } 5157 5158 len = wstrlen(ws); \ ??IsUrl_2: \ 00000080 04009DE5 LDR R0,[SP, #+4] \ 00000084 230100EF SWI +291 \ 00000088 00008DE5 STR R0,[SP, #+0] 5159 begin = str = wstrstr(tmp, "www.", &len, 4); \ 0000008C 0430A0E3 MOV R3,#+4 \ 00000090 0D20A0E1 MOV R2,SP \ 00000094 9C1087E2 ADD R1,R7,#+156 \ 00000098 0800A0E1 MOV R0,R8 \ 0000009C 200000EA B ??IsUrl_4 \ ??IsUrl_5: \ 000000A0 00109DE5 LDR R1,[SP, #+0] \ 000000A4 02B08BE2 ADD R11,R11,#+2 \ 000000A8 011041E2 SUB R1,R1,#+1 \ 000000AC 00108DE5 STR R1,[SP, #+0] \ ??IsUrl_3: \ 000000B0 00009DE5 LDR R0,[SP, #+0] \ 000000B4 000050E3 CMP R0,#+0 \ 000000B8 0600000A BEQ ??IsUrl_6 \ 000000BC B000DBE1 LDRH R0,[R11, #+0] \ 000000C0 ........ _BLF char16to8,??char16to8??rA \ 000000C4 0010A0E1 MOV R1,R0 \ 000000C8 0700A0E1 MOV R0,R7 \ 000000CC 180000EF SWI +24 \ 000000D0 000050E3 CMP R0,#+0 \ 000000D4 F1FFFF1A BNE ??IsUrl_5 \ ??IsUrl_6: \ 000000D8 AB0069E0 RSB R0,R9,R11, LSR #+1 \ 000000DC 0A0050E1 CMP R0,R10 \ 000000E0 DAFFFFBA BLT ??IsUrl_1 \ ??IsUrl_7: \ 000000E4 0B0054E1 CMP R4,R11 \ 000000E8 0300002A BCS ??IsUrl_8 \ 000000EC ........ LDRH R0,[R4], #+2 \ 000000F0 ........ _BLF char16to8,??char16to8??rA \ 000000F4 ........ STRB R0,[R6], #+1 \ 000000F8 F9FFFFEA B ??IsUrl_7 \ ??IsUrl_8: \ 000000FC AB00A0E1 LSR R0,R11,#+1 \ 00000100 A40040E0 SUB R0,R0,R4, LSR #+1 \ 00000104 0010A0E3 MOV R1,#+0 \ 00000108 0610C0E7 STRB R1,[R0, +R6] \ 0000010C 0100A0E3 MOV R0,#+1 \ 00000110 F68FBDE8 POP {R1,R2,R4-R11,PC} 5160 while(str && (begin-tmp <= pos)) 5161 { 5162 while(len && strchr(valid, char16to8(*str))) {str++; len--;} 5163 if(str-tmp >= pos-2) 5164 { 5165 for(;begin < str; begin++, link++) 5166 *link = char16to8(*begin); 5167 link[str-begin] = 0; 5168 return 1; 5169 } 5170 begin = str = wstrstr(str, "www.", &len, 4); \ ??IsUrl_9: \ 00000114 0430A0E3 MOV R3,#+4 \ 00000118 0D20A0E1 MOV R2,SP \ 0000011C 9C1087E2 ADD R1,R7,#+156 \ 00000120 0B00A0E1 MOV R0,R11 \ ??IsUrl_4: \ 00000124 ........ BL wstrstr \ 00000128 00B0A0E1 MOV R11,R0 \ 0000012C 0040A0E1 MOV R4,R0 \ 00000130 00005BE3 CMP R11,#+0 \ 00000134 0200000A BEQ ??IsUrl_10 \ 00000138 A40069E0 RSB R0,R9,R4, LSR #+1 \ 0000013C 000055E1 CMP R5,R0 \ 00000140 050000AA BGE ??IsUrl_11 5171 } 5172 return 0; \ ??IsUrl_10: \ 00000144 0000A0E3 MOV R0,#+0 \ 00000148 F68FBDE8 POP {R1,R2,R4-R11,PC} ;; return \ ??IsUrl_12: \ 0000014C 00109DE5 LDR R1,[SP, #+0] \ 00000150 02B08BE2 ADD R11,R11,#+2 \ 00000154 011041E2 SUB R1,R1,#+1 \ 00000158 00108DE5 STR R1,[SP, #+0] \ ??IsUrl_11: \ 0000015C 00009DE5 LDR R0,[SP, #+0] \ 00000160 000050E3 CMP R0,#+0 \ 00000164 0600000A BEQ ??IsUrl_13 \ 00000168 B000DBE1 LDRH R0,[R11, #+0] \ 0000016C ........ _BLF char16to8,??char16to8??rA \ 00000170 0010A0E1 MOV R1,R0 \ 00000174 0700A0E1 MOV R0,R7 \ 00000178 180000EF SWI +24 \ 0000017C 000050E3 CMP R0,#+0 \ 00000180 F1FFFF1A BNE ??IsUrl_12 \ ??IsUrl_13: \ 00000184 AB0069E0 RSB R0,R9,R11, LSR #+1 \ 00000188 0A0050E1 CMP R0,R10 \ 0000018C E0FFFFBA BLT ??IsUrl_9 \ ??IsUrl_14: \ 00000190 0B0054E1 CMP R4,R11 \ 00000194 D8FFFF2A BCS ??IsUrl_8 \ 00000198 ........ LDRH R0,[R4], #+2 \ 0000019C ........ _BLF char16to8,??char16to8??rA \ 000001A0 ........ STRB R0,[R6], #+1 \ 000001A4 F9FFFFEA B ??IsUrl_14 5173 } 5174 5175 #define UTF16_DIS_UNDERLINE (0xE002) 5176 #define UTF16_ENA_UNDERLINE (0xE001) 5177 \ In segment CODE, align 4, keep-with-next 5178 void ParseAnswer(WSHDR *ws, const char *s) 5179 { \ ParseAnswer: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 0040A0E1 MOV R4,R0 5180 const char *valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%;:@&=/?абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; 5181 S_SMILES *t; 5182 S_SMILES *t_root=(S_SMILES *)s_top; \ 00000008 50029FE5 LDR R0,??ParseAnswer_0+0x4 ;; s_top \ 0000000C 04D04DE2 SUB SP,SP,#+4 \ 00000010 006090E5 LDR R6,[R0, #+0] \ 00000014 0150A0E1 MOV R5,R1 5183 STXT_SMILES *st; 5184 unsigned int wchar; 5185 unsigned int ulb=s[0]+(s[1]<<8)+(s[2]<<16)+(s[3]<<24); \ 00000018 0000D5E5 LDRB R0,[R5, #+0] \ 0000001C 0110D5E5 LDRB R1,[R5, #+1] \ 00000020 010480E0 ADD R0,R0,R1, LSL #+8 \ 00000024 0210D5E5 LDRB R1,[R5, #+2] \ 00000028 010880E0 ADD R0,R0,R1, LSL #+16 \ 0000002C 0310D5E5 LDRB R1,[R5, #+3] \ 00000030 018C80E0 ADD R8,R0,R1, LSL #+24 5186 CutWSTR(ws,0); \ 00000034 0010A0E3 MOV R1,#+0 \ 00000038 0400A0E1 MOV R0,R4 \ 0000003C 260100EF SWI +294 \ 00000040 160000EA B ??ParseAnswer_1 5187 int i; 5188 while(wchar=*s) 5189 { 5190 if(s==strstr(s, "http://") || s == strstr(s, "www.") || s == strstr(s, ".ru") || s == strstr(s, ".net")|| s == strstr(s, ".com")) 5191 { 5192 wsAppendChar(ws,UTF16_ENA_UNDERLINE); 5193 while(*s && strchr(valid, *s)) 5194 { 5195 wchar=char8to16(*s); \ ??ParseAnswer_2: \ 00000044 ........ LDRB R0,[R5], #+1 \ 00000048 ........ _BLF char8to16,??char8to16??rA 5196 wsAppendChar(ws,wchar); \ 0000004C 0010A0E1 MOV R1,R0 \ ??ParseAnswer_3: \ 00000050 0400A0E1 MOV R0,R4 \ 00000054 1C0000EF SWI +28 5197 s++; 5198 } \ 00000058 0010D5E5 LDRB R1,[R5, #+0] \ 0000005C 000051E3 CMP R1,#+0 \ 00000060 0300000A BEQ ??ParseAnswer_4 \ 00000064 0900A0E1 MOV R0,R9 \ 00000068 180000EF SWI +24 \ 0000006C 000050E3 CMP R0,#+0 \ 00000070 F3FFFF1A BNE ??ParseAnswer_2 5199 wsAppendChar(ws,UTF16_DIS_UNDERLINE); \ ??ParseAnswer_4: \ 00000074 0210A0E3 MOV R1,#+2 \ 00000078 E01C81E3 ORR R1,R1,#0xE000 \ 0000007C 0400A0E1 MOV R0,R4 \ 00000080 1C0000EF SWI +28 5200 ulb=s[0]+(s[1]<<8)+(s[2]<<16)+(s[3]<<24); \ 00000084 0000D5E5 LDRB R0,[R5, #+0] \ 00000088 0110D5E5 LDRB R1,[R5, #+1] \ 0000008C 010480E0 ADD R0,R0,R1, LSL #+8 \ 00000090 0210D5E5 LDRB R1,[R5, #+2] \ 00000094 010880E0 ADD R0,R0,R1, LSL #+16 \ 00000098 0310D5E5 LDRB R1,[R5, #+3] \ 0000009C 018C80E0 ADD R8,R0,R1, LSL #+24 5201 continue; \ ??ParseAnswer_1: \ 000000A0 0070D5E5 LDRB R7,[R5, #+0] \ 000000A4 000057E3 CMP R7,#+0 \ 000000A8 5E00000A BEQ ??ParseAnswer_5 \ 000000AC ........ LDR R9,??DataTable203 ;; `?` \ 000000B0 0500A0E1 MOV R0,R5 \ 000000B4 941089E2 ADD R1,R9,#+148 \ 000000B8 180100EF SWI +280 \ 000000BC 000055E1 CMP R5,R0 \ 000000C0 1300000A BEQ ??ParseAnswer_6 \ 000000C4 9C1089E2 ADD R1,R9,#+156 \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 180100EF SWI +280 \ 000000D0 000055E1 CMP R5,R0 \ 000000D4 0E00000A BEQ ??ParseAnswer_6 \ 000000D8 5F1F8FE2 ADR R1,??ParseAnswer_0 ;; ".ru" \ 000000DC 0500A0E1 MOV R0,R5 \ 000000E0 180100EF SWI +280 \ 000000E4 000055E1 CMP R5,R0 \ 000000E8 0900000A BEQ ??ParseAnswer_6 \ 000000EC A41089E2 ADD R1,R9,#+164 \ 000000F0 0500A0E1 MOV R0,R5 \ 000000F4 180100EF SWI +280 \ 000000F8 000055E1 CMP R5,R0 \ 000000FC 0400000A BEQ ??ParseAnswer_6 \ 00000100 AC1089E2 ADD R1,R9,#+172 \ 00000104 0500A0E1 MOV R0,R5 \ 00000108 180100EF SWI +280 \ 0000010C 000055E1 CMP R5,R0 \ 00000110 0200001A BNE ??ParseAnswer_7 \ ??ParseAnswer_6: \ 00000114 0110A0E3 MOV R1,#+1 \ 00000118 E01C81E3 ORR R1,R1,#0xE000 \ 0000011C CBFFFFEA B ??ParseAnswer_3 5202 } 5203 t=t_root; \ ??ParseAnswer_7: \ 00000120 0690A0E1 MOV R9,R6 \ 00000124 230000EA B ??ParseAnswer_8 5204 while(t) 5205 { 5206 st=t->lines; 5207 while(st) 5208 { 5209 if ((ulb&st->mask)==st->key) \ ??ParseAnswer_9: \ 00000128 0B00DAE5 LDRB R0,[R10, #+11] \ 0000012C 0A10DAE5 LDRB R1,[R10, #+10] \ 00000130 0620DAE5 LDRB R2,[R10, #+6] \ 00000134 000481E1 ORR R0,R1,R0, LSL #+8 \ 00000138 0910DAE5 LDRB R1,[R10, #+9] \ 0000013C 000481E1 ORR R0,R1,R0, LSL #+8 \ 00000140 0810DAE5 LDRB R1,[R10, #+8] \ 00000144 000481E1 ORR R0,R1,R0, LSL #+8 \ 00000148 0710DAE5 LDRB R1,[R10, #+7] \ 0000014C 080000E0 AND R0,R0,R8 \ 00000150 011482E1 ORR R1,R2,R1, LSL #+8 \ 00000154 0520DAE5 LDRB R2,[R10, #+5] \ 00000158 011482E1 ORR R1,R2,R1, LSL #+8 \ 0000015C 0420DAE5 LDRB R2,[R10, #+4] \ 00000160 011482E1 ORR R1,R2,R1, LSL #+8 \ 00000164 010050E1 CMP R0,R1 \ 00000168 0700001A BNE ??ParseAnswer_10 5210 { 5211 if (!strncmp(s,st->text,strlen(st->text))) goto L1; \ 0000016C 0C008AE2 ADD R0,R10,#+12 \ 00000170 1B0000EF SWI +27 \ 00000174 0020A0E1 MOV R2,R0 \ 00000178 0C108AE2 ADD R1,R10,#+12 \ 0000017C 0500A0E1 MOV R0,R5 \ 00000180 150100EF SWI +277 \ 00000184 000050E3 CMP R0,#+0 \ 00000188 1500000A BEQ ??ParseAnswer_11 5212 } 5213 st=st->next; \ ??ParseAnswer_10: \ 0000018C 0000A0E3 MOV R0,#+0 \ ??ParseAnswer_12: \ 00000190 0A20D0E7 LDRB R2,[R0, +R10] \ 00000194 0D10A0E1 MOV R1,SP \ 00000198 0120C0E7 STRB R2,[R0, +R1] \ 0000019C 010080E2 ADD R0,R0,#+1 \ 000001A0 040050E3 CMP R0,#+4 \ 000001A4 F9FFFFBA BLT ??ParseAnswer_12 \ 000001A8 00A09DE5 LDR R10,[SP, #+0] 5214 } \ ??ParseAnswer_13: \ 000001AC 00005AE3 CMP R10,#+0 \ 000001B0 DCFFFF1A BNE ??ParseAnswer_9 5215 t=t->next; \ 000001B4 009099E5 LDR R9,[R9, #+0] \ ??ParseAnswer_8: \ 000001B8 000059E3 CMP R9,#+0 \ 000001BC 08A09915 LDRNE R10,[R9, #+8] \ 000001C0 F9FFFF1A BNE ??ParseAnswer_13 5216 } 5217 L1: 5218 if (t) 5219 { 5220 wchar=t->uni_smile; 5221 s+=strlen(st->text); 5222 ulb=s[0]+(s[1]<<8)+(s[2]<<16)+(s[3]<<24); 5223 } 5224 else 5225 { 5226 wchar=char8to16(wchar); \ 000001C4 0700A0E1 MOV R0,R7 \ 000001C8 ........ _BLF char8to16,??char8to16??rA \ 000001CC 0070A0E1 MOV R7,R0 5227 s++; 5228 ulb>>=8; 5229 ulb+=s[3]<<24; \ 000001D0 015085E2 ADD R5,R5,#+1 \ 000001D4 0300D5E5 LDRB R0,[R5, #+3] \ 000001D8 000CA0E1 LSL R0,R0,#+24 \ 000001DC 288480E0 ADD R8,R0,R8, LSR #+8 \ 000001E0 0A0000EA B ??ParseAnswer_14 5230 } \ ??ParseAnswer_11: \ 000001E4 047099E5 LDR R7,[R9, #+4] \ 000001E8 0C008AE2 ADD R0,R10,#+12 \ 000001EC 1B0000EF SWI +27 \ 000001F0 055080E0 ADD R5,R0,R5 \ 000001F4 0000D5E5 LDRB R0,[R5, #+0] \ 000001F8 0110D5E5 LDRB R1,[R5, #+1] \ 000001FC 010480E0 ADD R0,R0,R1, LSL #+8 \ 00000200 0210D5E5 LDRB R1,[R5, #+2] \ 00000204 010880E0 ADD R0,R0,R1, LSL #+16 \ 00000208 0310D5E5 LDRB R1,[R5, #+3] \ 0000020C 018C80E0 ADD R8,R0,R1, LSL #+24 5231 if (wchar!=10) wsAppendChar(ws,wchar); \ ??ParseAnswer_14: \ 00000210 0A0057E3 CMP R7,#+10 \ 00000214 A1FFFF0A BEQ ??ParseAnswer_1 \ 00000218 0710A0E1 MOV R1,R7 \ 0000021C 0400A0E1 MOV R0,R4 \ 00000220 1C0000EF SWI +28 \ 00000224 9DFFFFEA B ??ParseAnswer_1 5232 } 5233 i=ws->wsbody[0]; \ ??ParseAnswer_5: \ 00000228 000094E5 LDR R0,[R4, #+0] \ 0000022C B010D0E1 LDRH R1,[R0, #+0] \ 00000230 000000EA B ??ParseAnswer_15 5234 while(i>1) 5235 { 5236 if (ws->wsbody[i--]!=13) break; 5237 ws->wsbody[0]=i; \ ??ParseAnswer_16: \ 00000234 B010C0E1 STRH R1,[R0, #+0] \ ??ParseAnswer_15: \ 00000238 020051E3 CMP R1,#+2 \ 0000023C F187BDB8 POPLT {R0,R4-R10,PC} \ 00000240 0120A0E1 MOV R2,R1 \ 00000244 011042E2 SUB R1,R2,#+1 \ 00000248 822080E0 ADD R2,R0,R2, LSL #+1 \ 0000024C B020D2E1 LDRH R2,[R2, #+0] \ 00000250 0D0052E3 CMP R2,#+13 \ 00000254 F6FFFF0A BEQ ??ParseAnswer_16 5238 } 5239 } \ 00000258 F187BDE8 POP {R0,R4-R10,PC} ;; return \ ??ParseAnswer_0: \ 0000025C 2E727500 DC8 ".ru" \ 00000260 ........ DC32 s_top 5240 \ In segment CODE, align 4, keep-with-next 5241 void SaveAnswer(CLIST *cl, WSHDR *ws) 5242 { \ SaveAnswer: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0100A0E1 MOV R0,R1 5243 char *p=ExtractAnswer(ws); \ 0000000C ........ BL ExtractAnswer \ 00000010 0050A0E1 MOV R5,R0 5244 mfree(cl->answer); \ 00000014 780094E5 LDR R0,[R4, #+120] \ 00000018 150000EF SWI +21 5245 cl->answer=p; \ 0000001C 785084E5 STR R5,[R4, #+120] 5246 } \ 00000020 3080BDE8 POP {R4,R5,PC} ;; return 5247 5248 //links applicator 5249 5250 \ In segment CODE, align 4, keep-with-next 5251 int GetTempName(void) 5252 { \ GetTempName: \ 00000000 00402DE9 PUSH {LR} \ 00000004 10D04DE2 SUB SP,SP,#+16 5253 static const int DMonth[]={0,31,59,90,120,151,181,212,243,273,304,334,365}; 5254 unsigned long iday; 5255 TTime tt; 5256 TDate dd; 5257 GetDateTime(&dd,&tt); \ 00000008 08108DE2 ADD R1,SP,#+8 \ 0000000C 0D00A0E1 MOV R0,SP \ 00000010 B40000EF SWI +180 5258 dd.year=dd.year%100; \ 00000014 00109DE5 LDR R1,[SP, #+0] \ 00000018 84209FE5 LDR R2,??GetTempName_0 ;; 0x51eb851f \ 0000001C 92318CE0 UMULL R3,R12,R2,R1 \ 00000020 6430A0E3 MOV R3,#+100 \ 00000024 ACC2A0E1 LSR R12,R12,#+5 \ 00000028 930C0CE0 MUL R12,R3,R12 5259 iday=365*dd.year+DMonth[dd.month-1]+(dd.day - 1); 5260 iday=iday+(dd.year>>2); \ 0000002C 6D20A0E3 MOV R2,#+109 \ 00000030 0CC041E0 SUB R12,R1,R12 \ 00000034 00C08DE5 STR R12,[SP, #+0] \ 00000038 0400DDE5 LDRB R0,[SP, #+4] \ 0000003C 0C10A0E1 MOV R1,R12 \ 00000040 60C09FE5 LDR R12,??GetTempName_0+0x4 ;; ??DMonth \ 00000044 402F82E3 ORR R2,R2,#0x100 \ 00000048 00318CE0 ADD R3,R12,R0, LSL #+2 \ 0000004C 043013E5 LDR R3,[R3, #-4] 5261 if (dd.month>2||(dd.year&3)>0) \ 00000050 030050E3 CMP R0,#+3 \ 00000054 923121E0 MLA R1,R2,R1,R3 \ 00000058 0520DDE5 LDRB R2,[SP, #+5] \ 0000005C 012042E2 SUB R2,R2,#+1 \ 00000060 011082E0 ADD R1,R2,R1 \ 00000064 00209DE5 LDR R2,[SP, #+0] \ 00000068 221181E0 ADD R1,R1,R2, LSR #+2 \ 0000006C 0100002A BCS ??GetTempName_1 \ 00000070 030012E3 TST R2,#0x3 \ 00000074 0000000A BEQ ??GetTempName_2 5262 iday++; \ ??GetTempName_1: \ 00000078 011081E2 ADD R1,R1,#+1 5263 iday=(tt.sec+60*(tt.min+60*(tt.hour+24* iday))); 5264 return iday; \ ??GetTempName_2: \ 0000007C 0830DDE5 LDRB R3,[SP, #+8] \ 00000080 0920DDE5 LDRB R2,[SP, #+9] \ 00000084 0A00DDE5 LDRB R0,[SP, #+10] \ 00000088 18C0A0E3 MOV R12,#+24 \ 0000008C 9C3121E0 MLA R1,R12,R1,R3 \ 00000090 3C30A0E3 MOV R3,#+60 \ 00000094 932121E0 MLA R1,R3,R1,R2 \ 00000098 10D08DE2 ADD SP,SP,#+16 \ 0000009C 930120E0 MLA R0,R3,R1,R0 \ 000000A0 0080BDE8 POP {PC} ;; return \ ??GetTempName_0: \ 000000A4 1F85EB51 DC32 0x51eb851f \ 000000A8 ........ DC32 ??DMonth 5265 } \ In segment DATA_C, align 4, align-sorted \ ??DMonth: \ 00000000 000000001F00 DC32 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 \ 00003B000000 \ 5A0000007800 \ 000097000000 \ B5000000D400 \ 0000F3000000 \ 110100003001 \ 00004E010000 \ 6D010000 5266 5267 \ In segment CODE, align 4, keep-with-next 5268 void recon() 5269 { 5270 SUBPROC((void*)end_socket); \ recon: \ 00000000 ........ LDR R0,??DataTable204 ;; end_socket \ 00000004 10402DE9 PUSH {R4,LR} 5271 GBS_DelTimer(&reconnect_tmr); \ 00000008 ........ LDR R4,??DataTable205 ;; S_ICONS \ 0000000C 710100EF SWI +369 \ 00000010 5400A0E3 MOV R0,#+84 \ 00000014 600D80E3 ORR R0,R0,#0x1800 \ 00000018 040080E0 ADD R0,R0,R4 \ 0000001C 8C0100EF SWI +396 5272 DNR_TRIES=3; \ 00000020 0300A0E3 MOV R0,#+3 \ 00000024 D80184E5 STR R0,[R4, #+472] 5273 SUBPROC((void *)create_connect); \ 00000028 ........ LDR R0,??DataTable206 ;; create_connect \ 0000002C 710100EF SWI +369 5274 } \ 00000030 1080BDE8 POP {R4,PC} ;; return 5275 \ In segment CODE, align 4, keep-with-next 5276 int edchat_onkey(GUI *data, GUI_MSG *msg) 5277 { \ edchat_onkey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 5278 //-1 - do redraw 5279 GBS_DelTimer(&tmr_illumination); \ 00000004 ........ LDR R5,??DataTable214 ;; S_ICONS \ 00000008 4CDF4DE2 SUB SP,SP,#+304 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 0170A0E1 MOV R7,R1 \ 00000014 3400A0E3 MOV R0,#+52 \ 00000018 600D80E3 ORR R0,R0,#0x1800 \ 0000001C 050080E0 ADD R0,R0,R5 \ 00000020 8C0100EF SWI +396 5280 CLIST *t; 5281 TPKT *p; 5282 EDITCONTROL ec; 5283 int len, f;//2026rev 5284 unsigned err;//2026rev 5285 char *s; 5286 int l=msg->gbsmsg->submess; \ 00000024 040097E5 LDR R0,[R7, #+4] \ 00000028 088090E5 LDR R8,[R0, #+8] 5287 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 DF0100EF SWI +479 \ 00000034 0060A0E1 MOV R6,R0 5288 char fn[256]; 5289 5290 if (msg->keys==0xFFF) \ 00000038 F200D7E1 LDRSH R0,[R7, #+2] \ 0000003C FF10A0E3 MOV R1,#+255 \ 00000040 F01E81E3 ORR R1,R1,#0xF00 \ 00000044 010050E1 CMP R0,R1 \ 00000048 0200001A BNE ??edchat_onkey_0 5291 { 5292 void ec_menu(EDCHAT_STRUCT *); 5293 ec_menu(ed_struct); \ 0000004C 0600A0E1 MOV R0,R6 \ 00000050 ........ BL ec_menu 5294 return(-1); \ ??edchat_onkey_1: \ 00000054 310100EA B ??edchat_onkey_2 5295 } 5296 if (msg->keys==0xFF0) return (1); \ ??edchat_onkey_0: \ 00000058 FF0E50E3 CMP R0,#+4080 \ 0000005C 0100001A BNE ??edchat_onkey_3 \ 00000060 0100A0E3 MOV R0,#+1 \ 00000064 2E0100EA B ??edchat_onkey_4 \ ??edchat_onkey_3: \ 00000068 040097E5 LDR R0,[R7, #+4] \ 0000006C 9510A0E3 MOV R1,#+149 \ 00000070 040090E5 LDR R0,[R0, #+4] \ 00000074 401F81E3 ORR R1,R1,#0x100 \ 00000078 010050E1 CMP R0,R1 \ 0000007C 6A00001A BNE ??edchat_onkey_5 5297 #ifdef EVILFOX 5298 if (msg->gbsmsg->msg==LONG_PRESS) 5299 { 5300 if (l==VOL_DOWN_BUTTON) 5301 { 5302 WSHDR *ws; 5303 ExtractEditControl(data,ed_struct->ed_answer,&ec); 5304 if(wstrlen(ec.pWS)>0) 5305 { 5306 ws=AllocWS(1); 5307 CutWSTR(ws,0); 5308 5309 EDIT_SetFocus(data,ed_struct->ed_answer); 5310 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); 5311 5312 FreeWS(ws); 5313 RefreshGUI(); 5314 } 5315 } 5316 if (l==VOL_UP_BUTTON) 5317 { 5318 // WSHDR *ws=AllocWS(strlen(ed_struct->ed_contact->last_msg_buffer)+1); 5319 // ascii2ws(ws,ed_struct->ed_contact->last_msg_buffer); 5320 WSHDR *ws=AllocWS(strlen(last_msg_buffer)+1); 5321 ascii2ws(ws,last_msg_buffer); 5322 EDIT_SetFocus(ed_struct->ed_chatgui,ed_struct->ed_answer); 5323 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); 5324 FreeWS(ws); 5325 RefreshGUI(); 5326 } 5327 } 5328 #else 5329 5330 void AddSmile(GUI *data); 5331 extern const int LongRightAction; 5332 extern const int LongLeftAction; 5333 if (msg->gbsmsg->msg==LONG_PRESS) 5334 { 5335 if (l==RIGHT_BUTTON) \ 00000080 3E0058E3 CMP R8,#+62 \ 00000084 2200001A BNE ??edchat_onkey_6 5336 { 5337 if(LongRightAction==2) \ 00000088 F0049FE5 LDR R0,??edchat_onkey_7 ;; LongRightAction \ 0000008C 000090E5 LDR R0,[R0, #+0] \ 00000090 020050E3 CMP R0,#+2 \ 00000094 0200001A BNE ??edchat_onkey_8 5338 CreateSmileSelectGUI(ed_struct); \ 00000098 0600A0E1 MOV R0,R6 \ 0000009C ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA \ 000000A0 610000EA B ??edchat_onkey_5 5339 else 5340 if(LongRightAction==1) \ ??edchat_onkey_8: \ 000000A4 010050E3 CMP R0,#+1 \ 000000A8 5F00001A BNE ??edchat_onkey_5 5341 { 5342 if (EDIT_GetFocus(data)==ed_struct->ed_answer) \ 000000AC 0400A0E1 MOV R0,R4 \ 000000B0 820100EF SWI +386 \ 000000B4 081096E5 LDR R1,[R6, #+8] \ 000000B8 010050E1 CMP R0,R1 \ 000000BC 5A00001A BNE ??edchat_onkey_5 5343 { 5344 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 000000C0 04208DE2 ADD R2,SP,#+4 \ 000000C4 0400A0E1 MOV R0,R4 \ 000000C8 690100EF SWI +361 5345 if (ec.pWS->wsbody[0]==(EDIT_GetCursorPos(data)-1)) \ 000000CC 0400A0E1 MOV R0,R4 \ 000000D0 D30100EF SWI +467 \ 000000D4 2C109DE5 LDR R1,[SP, #+44] \ 000000D8 010040E2 SUB R0,R0,#+1 \ 000000DC 001091E5 LDR R1,[R1, #+0] \ 000000E0 B010D1E1 LDRH R1,[R1, #+0] \ 000000E4 000051E1 CMP R1,R0 \ 000000E8 4F00001A BNE ??edchat_onkey_5 5346 { 5347 t=FindNextActiveContact(ed_struct->ed_contact); \ 000000EC 00A096E5 LDR R10,[R6, #+0] \ 000000F0 0A00A0E1 MOV R0,R10 \ 000000F4 ........ BL FindNextActiveContact \ 000000F8 0090B0E1 MOVS R9,R0 5348 if (t && t!=ed_struct->ed_contact) \ 000000FC 0A005911 CMPNE R9,R10 \ 00000100 4900000A BEQ ??edchat_onkey_5 5349 { 5350 CreateEditChat(t); \ ??edchat_onkey_9: \ 00000104 0900A0E1 MOV R0,R9 \ 00000108 ........ BL CreateEditChat 5351 return(1); \ 0000010C 0100A0E3 MOV R0,#+1 \ 00000110 030100EA B ??edchat_onkey_4 5352 } 5353 } 5354 } 5355 } 5356 } 5357 if (l==LEFT_BUTTON && LongLeftAction) \ ??edchat_onkey_6: \ 00000114 3D0058E3 CMP R8,#+61 \ 00000118 1A00001A BNE ??edchat_onkey_10 \ 0000011C 60049FE5 LDR R0,??edchat_onkey_7+0x4 ;; LongLeftAction \ 00000120 000090E5 LDR R0,[R0, #+0] \ 00000124 000050E3 CMP R0,#+0 \ 00000128 3F00000A BEQ ??edchat_onkey_5 5358 { 5359 if (EDIT_GetFocus(data)==ed_struct->ed_answer) \ 0000012C 0400A0E1 MOV R0,R4 \ 00000130 820100EF SWI +386 \ 00000134 081096E5 LDR R1,[R6, #+8] \ 00000138 010050E1 CMP R0,R1 \ 0000013C 3A00001A BNE ??edchat_onkey_5 5360 { 5361 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 00000140 04208DE2 ADD R2,SP,#+4 \ 00000144 0400A0E1 MOV R0,R4 \ 00000148 690100EF SWI +361 5362 if (ec.pWS->wsbody[0]==(EDIT_GetCursorPos(data)-1)) \ 0000014C 0400A0E1 MOV R0,R4 \ 00000150 D30100EF SWI +467 \ 00000154 2C109DE5 LDR R1,[SP, #+44] \ 00000158 010040E2 SUB R0,R0,#+1 \ 0000015C 001091E5 LDR R1,[R1, #+0] \ 00000160 B010D1E1 LDRH R1,[R1, #+0] \ 00000164 000051E1 CMP R1,R0 \ 00000168 2F00001A BNE ??edchat_onkey_5 5363 { 5364 t=FindPrevActiveContact(ed_struct->ed_contact); \ 0000016C 00A096E5 LDR R10,[R6, #+0] \ 00000170 0A00A0E1 MOV R0,R10 \ 00000174 ........ BL FindPrevActiveContact \ 00000178 0090B0E1 MOVS R9,R0 5365 if (t && t!=ed_struct->ed_contact) \ 0000017C 0A005911 CMPNE R9,R10 \ 00000180 2900000A BEQ ??edchat_onkey_5 \ 00000184 DEFFFFEA B ??edchat_onkey_9 5366 { 5367 CreateEditChat(t); 5368 return(1); 5369 } 5370 } 5371 } 5372 } 5373 #ifdef ELKA 5374 if (l==VOL_DOWN_BUTTON) \ ??edchat_onkey_10: \ 00000188 0E0058E3 CMP R8,#+14 \ 0000018C 0F00001A BNE ??edchat_onkey_11 5375 { 5376 WSHDR *ws; 5377 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 00000190 081096E5 LDR R1,[R6, #+8] \ 00000194 04208DE2 ADD R2,SP,#+4 \ 00000198 0400A0E1 MOV R0,R4 \ 0000019C 690100EF SWI +361 5378 if(wstrlen(ec.pWS)>0) \ 000001A0 2C009DE5 LDR R0,[SP, #+44] \ 000001A4 230100EF SWI +291 \ 000001A8 010050E3 CMP R0,#+1 \ 000001AC 1E0000BA BLT ??edchat_onkey_5 5379 { 5380 ws=AllocWS(1); \ 000001B0 0100A0E3 MOV R0,#+1 \ 000001B4 250100EF SWI +293 \ 000001B8 0090A0E1 MOV R9,R0 5381 CutWSTR(ws,0); \ 000001BC 0010A0E3 MOV R1,#+0 \ 000001C0 260100EF SWI +294 5382 5383 EDIT_SetFocus(data,ed_struct->ed_answer); \ 000001C4 081096E5 LDR R1,[R6, #+8] \ 000001C8 0400A0E1 MOV R0,R4 \ 000001CC 0F0000EA B ??edchat_onkey_12 5384 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); 5385 5386 FreeWS(ws); 5387 RefreshGUI(); 5388 } 5389 } 5390 if (l==VOL_UP_BUTTON) \ ??edchat_onkey_11: \ 000001D0 0D0058E3 CMP R8,#+13 \ 000001D4 1400001A BNE ??edchat_onkey_5 5391 { 5392 WSHDR *ws=AllocWS(strlen(last_msg_buffer)+1); \ 000001D8 1C00A0E3 MOV R0,#+28 \ 000001DC 400E80E3 ORR R0,R0,#0x400 \ 000001E0 050080E0 ADD R0,R0,R5 \ 000001E4 1B0000EF SWI +27 \ 000001E8 010080E2 ADD R0,R0,#+1 \ 000001EC 250100EF SWI +293 \ 000001F0 0090A0E1 MOV R9,R0 5393 ascii2ws(ws,last_msg_buffer); \ 000001F4 1C00A0E3 MOV R0,#+28 \ 000001F8 400E80E3 ORR R0,R0,#0x400 \ 000001FC 051080E0 ADD R1,R0,R5 \ 00000200 0900A0E1 MOV R0,R9 \ 00000204 ........ _BLF ascii2ws,??ascii2ws??rA 5394 EDIT_SetFocus(ed_struct->ed_chatgui,ed_struct->ed_answer); \ 00000208 081096E5 LDR R1,[R6, #+8] \ 0000020C 040096E5 LDR R0,[R6, #+4] \ ??edchat_onkey_12: \ 00000210 9B0100EF SWI +411 5395 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 00000214 040096E5 LDR R0,[R6, #+4] \ 00000218 0910A0E1 MOV R1,R9 \ 0000021C 810100EF SWI +385 5396 FreeWS(ws); \ 00000220 0900A0E1 MOV R0,R9 \ 00000224 290100EF SWI +297 5397 RefreshGUI(); \ 00000228 960100EF SWI +406 5398 } 5399 #endif 5400 } 5401 #endif 5402 if (msg->gbsmsg->msg==KEY_DOWN) \ ??edchat_onkey_5: \ 0000022C 040097E5 LDR R0,[R7, #+4] \ 00000230 9310A0E3 MOV R1,#+147 \ 00000234 040090E5 LDR R0,[R0, #+4] \ 00000238 401F81E3 ORR R1,R1,#0x100 \ 0000023C 010050E1 CMP R0,R1 \ 00000240 0A00001A BNE ??edchat_onkey_13 5403 { 5404 if ((l>='0')&&(l<='9')) \ 00000244 300058E3 CMP R8,#+48 \ 00000248 0B0000BA BLT ??edchat_onkey_14 \ 0000024C 3A0058E3 CMP R8,#+58 \ 00000250 060000AA BGE ??edchat_onkey_13 5405 { 5406 if (EDIT_GetFocus(data)!=ed_struct->ed_answer) \ 00000254 0400A0E1 MOV R0,R4 \ 00000258 820100EF SWI +386 \ 0000025C 081096E5 LDR R1,[R6, #+8] \ 00000260 010050E1 CMP R0,R1 \ 00000264 0100000A BEQ ??edchat_onkey_13 5407 EDIT_SetFocus(data,ed_struct->ed_answer); \ 00000268 0400A0E1 MOV R0,R4 \ 0000026C 9B0100EF SWI +411 5408 } 5409 if (l==GREEN_BUTTON) 5410 { 5411 if (connect_state==3) 5412 { 5413 if ((t=ed_struct->ed_contact)) 5414 { 5415 ExtractEditControl(data,ed_struct->ed_answer,&ec); 5416 SaveAnswer(t,ec.pWS); 5417 if ((s=t->answer)) 5418 { 5419 if ((len=strlen(s))) 5420 { 5421 msg_away_timer=0; 5422 away_m=0; 5423 if(SHOW_ACTIVE) 5424 t->isactive=ACTIVE_TIME; 5425 p=malloc(sizeof(PKT)+len+1); 5426 p->pkt.uin=t->uin; 5427 p->pkt.type=T_SENDMSG; 5428 p->pkt.data_len=len; 5429 strcpy(p->data,s); 5430 /* 5431 #ifdef EVILFOX 5432 strcpy(t->last_msg_buffer, s); 5433 #else 5434 */ 5435 #ifdef ELKA 5436 strcpy(last_msg_buffer, s); 5437 #endif 5438 AddStringToLog(t,0x01,p->data,I_str,(++SENDMSGCOUNT)&0x7FFF); //Номер сообщения 5439 SUBPROC((void *)SendAnswer,0,p); 5440 main2_count++; 5441 mfree(t->answer); 5442 t->answer=NULL; 5443 // request_remake_edchat=1; 5444 EDIT_SetFocus(data,ed_struct->ed_answer); 5445 CutWSTR(ews,0); 5446 EDIT_SetTextToFocused(data,ews); 5447 AddMsgToChat(data); 5448 RecountMenu(t,1); 5449 return(-1); 5450 } 5451 } 5452 } 5453 } 5454 } 5455 //================2026rev-begin 5456 if (l==ENTER_BUTTON) 5457 { 5458 5459 if (!EDIT_IsMarkModeActive(data)) // ?????? ???? ?? ????????? 5460 { 5461 int pos, len; 5462 char *link; 5463 ExtractEditControl(ed_struct->ed_chatgui,EDIT_GetFocus(ed_struct->ed_chatgui),&ec); 5464 wstrcpy(ews,ec.pWS); 5465 pos = EDIT_GetCursorPos(data); 5466 len = wstrlen(ews); 5467 link = malloc(len+1); 5468 5469 if(IsUrl(ews, pos, link)) 5470 { 5471 snprintf(fn, 255, "%s\\tmp%u.url", TEMPLATES_PATH, GetTempName); 5472 if ((f=fopen(fn,A_WriteOnly+A_BIN+A_Create+A_Truncate,P_WRITE,&err))!=-1) 5473 { 5474 fwrite(f,link,strlen(link),&err); 5475 fclose(f,&err); 5476 str_2ws(ews,fn,256); 5477 extern const int OpenBrowser; 5478 if(OpenBrowser) 5479 ExecuteFile(ews,0,0); 5480 else 5481 #ifdef NEWSGOLD 5482 ExecuteFile(ews,0,"4:\\ZBin\\BalletMini\\BalletMini.elf"); 5483 #else 5484 ExecuteFile(ews,0,"0:\\ZBin\\BalletMini\\BalletMini.elf"); 5485 #endif 5486 5487 unlink(fn, &err); 5488 } 5489 5490 // LockSched(); 5491 // ShowMSG(1,(int)link); 5492 // UnlockSched(); 5493 mfree(link); 5494 return (-1); 5495 } 5496 else 5497 { 5498 int i=ed_struct->loaded_templates=LoadTemplates(ed_struct->ed_contact->uin); 5499 EDIT_OpenOptionMenuWithUserItems(data,ed_options_handler,ed_struct,i+2); 5500 mfree(link); 5501 return (-1); 5502 } 5503 5504 } 5505 5506 } 5507 //================2026rev-end 5508 if (l==VOL_UP_BUTTON) 5509 { 5510 int pos; 5511 5512 if ((pos=EDIT_GetFocus(data)-2)>=2) 5513 { 5514 EDIT_SetFocus(data, pos); 5515 EDIT_SetCursorPos(data, 1); 5516 } 5517 return (-1); 5518 } 5519 if (l==VOL_DOWN_BUTTON) 5520 { 5521 int pos; 5522 5523 if ((pos=EDIT_GetFocus(data)+2)<=ed_struct->ed_answer) 5524 { 5525 EDIT_SetFocus(data, pos); 5526 EDIT_SetCursorPos(data, 1); 5527 } 5528 return (-1); 5529 } 5530 } 5531 return(0); //Do standart keys \ ??edchat_onkey_13: \ 00000270 0000A0E3 MOV R0,#+0 \ 00000274 4CDF8DE2 ADD SP,SP,#+304 \ 00000278 F08FBDE8 POP {R4-R11,PC} ;; return \ ??edchat_onkey_14: \ 0000027C 0B0058E3 CMP R8,#+11 \ 00000280 5200001A BNE ??edchat_onkey_15 \ 00000284 8C0195E5 LDR R0,[R5, #+396] \ 00000288 030050E3 CMP R0,#+3 \ 0000028C F7FFFF1A BNE ??edchat_onkey_13 \ 00000290 009096E5 LDR R9,[R6, #+0] \ 00000294 000059E3 CMP R9,#+0 \ 00000298 F4FFFF0A BEQ ??edchat_onkey_13 \ 0000029C 081096E5 LDR R1,[R6, #+8] \ 000002A0 04208DE2 ADD R2,SP,#+4 \ 000002A4 0400A0E1 MOV R0,R4 \ 000002A8 690100EF SWI +361 \ 000002AC 2C109DE5 LDR R1,[SP, #+44] \ 000002B0 0900A0E1 MOV R0,R9 \ 000002B4 ........ BL SaveAnswer \ 000002B8 78A099E5 LDR R10,[R9, #+120] \ 000002BC 00005AE3 CMP R10,#+0 \ 000002C0 EAFFFF0A BEQ ??edchat_onkey_13 \ 000002C4 0A00A0E1 MOV R0,R10 \ 000002C8 1B0000EF SWI +27 \ 000002CC 00B0B0E1 MOVS R11,R0 \ 000002D0 E6FFFF0A BEQ ??edchat_onkey_13 \ 000002D4 ........ LDR R0,??DataTable208 ;; SHOW_ACTIVE \ 000002D8 0070A0E3 MOV R7,#+0 \ 000002DC 000090E5 LDR R0,[R0, #+0] \ 000002E0 307185E5 STR R7,[R5, #+304] \ 000002E4 387185E5 STR R7,[R5, #+312] \ 000002E8 000050E3 CMP R0,#+0 \ 000002EC 5A0FA013 MOVNE R0,#+360 \ 000002F0 80008915 STRNE R0,[R9, #+128] \ 000002F4 09008BE2 ADD R0,R11,#+9 \ 000002F8 140000EF SWI +20 \ 000002FC 0080A0E1 MOV R8,R0 \ 00000300 0C0099E5 LDR R0,[R9, #+12] \ 00000304 0A10A0E1 MOV R1,R10 \ 00000308 000088E5 STR R0,[R8, #+0] \ 0000030C 0200A0E3 MOV R0,#+2 \ 00000310 B400C8E1 STRH R0,[R8, #+4] \ 00000314 B6B0C8E1 STRH R11,[R8, #+6] \ 00000318 080088E2 ADD R0,R8,#+8 \ 0000031C 1A0000EF SWI +26 \ 00000320 0A10A0E1 MOV R1,R10 \ 00000324 1C00A0E3 MOV R0,#+28 \ 00000328 400E80E3 ORR R0,R0,#0x400 \ 0000032C 050080E0 ADD R0,R0,R5 \ 00000330 1A0000EF SWI +26 \ 00000334 200195E5 LDR R0,[R5, #+288] \ 00000338 ........ LDR R3,??DataTable239 ;; `?` + 23 \ 0000033C 010080E2 ADD R0,R0,#+1 \ 00000340 200185E5 STR R0,[R5, #+288] \ 00000344 8008A0E1 LSL R0,R0,#+17 \ 00000348 A008A0E1 LSR R0,R0,#+17 \ 0000034C 01002DE9 PUSH {R0} \ 00000350 082088E2 ADD R2,R8,#+8 \ 00000354 0110A0E3 MOV R1,#+1 \ 00000358 0900A0E1 MOV R0,R9 \ 0000035C ........ BL AddStringToLog \ 00000360 ........ LDR R0,??DataTable240 ;; SendAnswer \ 00000364 0820A0E1 MOV R2,R8 \ 00000368 0010A0E3 MOV R1,#+0 \ 0000036C 710100EF SWI +369 \ 00000370 ........ LDR R0,??DataTable211 ;; main2_count \ 00000374 001090E5 LDR R1,[R0, #+0] \ 00000378 011081E2 ADD R1,R1,#+1 \ 0000037C 001080E5 STR R1,[R0, #+0] \ 00000380 780099E5 LDR R0,[R9, #+120] \ 00000384 150000EF SWI +21 \ 00000388 787089E5 STR R7,[R9, #+120] \ 0000038C 081096E5 LDR R1,[R6, #+8] \ 00000390 0400A0E1 MOV R0,R4 \ 00000394 9B0100EF SWI +411 \ 00000398 2C0195E5 LDR R0,[R5, #+300] \ 0000039C 0710A0E1 MOV R1,R7 \ 000003A0 260100EF SWI +294 \ 000003A4 2C1195E5 LDR R1,[R5, #+300] \ 000003A8 0400A0E1 MOV R0,R4 \ 000003AC 810100EF SWI +385 \ 000003B0 0400A0E1 MOV R0,R4 \ 000003B4 ........ BL AddMsgToChat \ 000003B8 0110A0E3 MOV R1,#+1 \ 000003BC 0900A0E1 MOV R0,R9 \ 000003C0 ........ BL RecountMenu \ 000003C4 0700E0E1 MVN R0,R7 \ 000003C8 04D08DE2 ADD SP,SP,#+4 \ 000003CC 540000EA B ??edchat_onkey_4 \ ??edchat_onkey_15: \ 000003D0 1A0058E3 CMP R8,#+26 \ 000003D4 5400001A BNE ??edchat_onkey_16 \ 000003D8 0400A0E1 MOV R0,R4 \ 000003DC D80100EF SWI +472 \ 000003E0 000050E3 CMP R0,#+0 \ 000003E4 A1FFFF1A BNE ??edchat_onkey_13 \ 000003E8 040096E5 LDR R0,[R6, #+4] \ 000003EC 820100EF SWI +386 \ 000003F0 04208DE2 ADD R2,SP,#+4 \ 000003F4 0010A0E1 MOV R1,R0 \ 000003F8 040096E5 LDR R0,[R6, #+4] \ 000003FC 690100EF SWI +361 \ 00000400 2C0195E5 LDR R0,[R5, #+300] \ 00000404 2C109DE5 LDR R1,[SP, #+44] \ 00000408 1F0100EF SWI +287 \ 0000040C 0400A0E1 MOV R0,R4 \ 00000410 D30100EF SWI +467 \ 00000414 0080A0E1 MOV R8,R0 \ 00000418 2C0195E5 LDR R0,[R5, #+300] \ 0000041C 230100EF SWI +291 \ 00000420 010080E2 ADD R0,R0,#+1 \ 00000424 140000EF SWI +20 \ 00000428 0070A0E1 MOV R7,R0 \ 0000042C 2C0195E5 LDR R0,[R5, #+300] \ 00000430 0720A0E1 MOV R2,R7 \ 00000434 0810A0E1 MOV R1,R8 \ 00000438 ........ BL IsUrl \ 0000043C 000050E3 CMP R0,#+0 \ 00000440 2B00000A BEQ ??edchat_onkey_17 \ 00000444 3C019FE5 LDR R0,??edchat_onkey_7+0x8 ;; GetTempName \ 00000448 ........ LDR R3,??DataTable212 ;; TEMPLATES_PATH \ 0000044C 38219FE5 LDR R2,??edchat_onkey_7+0xC ;; `?` + 1740 \ 00000450 01002DE9 PUSH {R0} \ 00000454 FF10A0E3 MOV R1,#+255 \ 00000458 34008DE2 ADD R0,SP,#+52 \ 0000045C 1B0100EF SWI +283 \ 00000460 04308DE2 ADD R3,SP,#+4 \ 00000464 402FA0E3 MOV R2,#+256 \ 00000468 0110A0E3 MOV R1,#+1 \ 0000046C 831C81E3 ORR R1,R1,#0x8300 \ 00000470 34008DE2 ADD R0,SP,#+52 \ 00000474 0A0000EF SWI +10 \ 00000478 0040A0E1 MOV R4,R0 \ 0000047C 010074E3 CMN R4,#+1 \ 00000480 04D08DE2 ADD SP,SP,#+4 \ 00000484 2300000A BEQ ??edchat_onkey_18 \ 00000488 0700A0E1 MOV R0,R7 \ 0000048C 1B0000EF SWI +27 \ 00000490 0020A0E1 MOV R2,R0 \ 00000494 0D30A0E1 MOV R3,SP \ 00000498 0710A0E1 MOV R1,R7 \ 0000049C 0400A0E1 MOV R0,R4 \ 000004A0 0C0000EF SWI +12 \ 000004A4 0D10A0E1 MOV R1,SP \ 000004A8 0400A0E1 MOV R0,R4 \ 000004AC 0D0000EF SWI +13 \ 000004B0 2C0195E5 LDR R0,[R5, #+300] \ 000004B4 402FA0E3 MOV R2,#+256 \ 000004B8 30108DE2 ADD R1,SP,#+48 \ 000004BC 6C0100EF SWI +364 \ 000004C0 C8009FE5 LDR R0,??edchat_onkey_7+0x10 ;; OpenBrowser \ 000004C4 000090E5 LDR R0,[R0, #+0] \ 000004C8 000050E3 CMP R0,#+0 \ 000004CC C0209F05 LDREQ R2,??edchat_onkey_7+0x14 ;; `?` + 1756 \ 000004D0 2C0195E5 LDR R0,[R5, #+300] \ 000004D4 0020A013 MOVNE R2,#+0 \ 000004D8 0010A013 MOVNE R1,#+0 \ 000004DC 0010A003 MOVEQ R1,#+0 \ 000004E0 940000EF SWI +148 \ 000004E4 0D10A0E1 MOV R1,SP \ 000004E8 30008DE2 ADD R0,SP,#+48 \ 000004EC 6B0100EF SWI +363 \ ??edchat_onkey_19: \ 000004F0 080000EA B ??edchat_onkey_18 \ ??edchat_onkey_17: \ 000004F4 000096E5 LDR R0,[R6, #+0] \ 000004F8 0C0090E5 LDR R0,[R0, #+12] \ 000004FC ........ BL LoadTemplates \ 00000500 90109FE5 LDR R1,??edchat_onkey_7+0x18 ;; ed_options_handler \ 00000504 100086E5 STR R0,[R6, #+16] \ 00000508 023080E2 ADD R3,R0,#+2 \ 0000050C 0620A0E1 MOV R2,R6 \ 00000510 0400A0E1 MOV R0,R4 \ 00000514 E50100EF SWI +485 \ ??edchat_onkey_18: \ 00000518 0700A0E1 MOV R0,R7 \ 0000051C 150000EF SWI +21 \ ??edchat_onkey_2: \ 00000520 0000E0E3 MVN R0,#+0 \ ??edchat_onkey_4: \ 00000524 4CDF8DE2 ADD SP,SP,#+304 \ 00000528 F08FBDE8 POP {R4-R11,PC} \ ??edchat_onkey_16: \ 0000052C 0D0058E3 CMP R8,#+13 \ 00000530 0A00001A BNE ??edchat_onkey_20 \ 00000534 0400A0E1 MOV R0,R4 \ 00000538 820100EF SWI +386 \ 0000053C 021040E2 SUB R1,R0,#+2 \ 00000540 020051E3 CMP R1,#+2 \ ??edchat_onkey_21: \ 00000544 F5FFFFBA BLT ??edchat_onkey_2 \ 00000548 0400A0E1 MOV R0,R4 \ 0000054C 9B0100EF SWI +411 \ 00000550 0110A0E3 MOV R1,#+1 \ 00000554 0400A0E1 MOV R0,R4 \ 00000558 D40100EF SWI +468 \ 0000055C EFFFFFEA B ??edchat_onkey_2 \ ??edchat_onkey_20: \ 00000560 0E0058E3 CMP R8,#+14 \ 00000564 41FFFF1A BNE ??edchat_onkey_13 \ 00000568 0400A0E1 MOV R0,R4 \ 0000056C 820100EF SWI +386 \ 00000570 021080E2 ADD R1,R0,#+2 \ 00000574 080096E5 LDR R0,[R6, #+8] \ 00000578 010050E1 CMP R0,R1 \ 0000057C F0FFFFEA B ??edchat_onkey_21 \ ??edchat_onkey_7: \ 00000580 ........ DC32 LongRightAction \ 00000584 ........ DC32 LongLeftAction \ 00000588 ........ DC32 GetTempName \ 0000058C ........ DC32 `?` + 1740 \ 00000590 ........ DC32 OpenBrowser \ 00000594 ........ DC32 `?` + 1756 \ 00000598 ........ DC32 ed_options_handler 5532 //1: close 5533 } 5534 5535 static const HEADER_DESC edchat_hdr={0,0,NULL,NULL,NULL,0,LGP_NULL}; 5536 5537 void (*old_ed_redraw)(void *data); \ In segment CODE, align 4, keep-with-next 5538 void my_ed_redraw(void *data) 5539 { \ my_ed_redraw: \ 00000000 30402DE9 PUSH {R4,R5,LR} 5540 void *edchat_gui; 5541 EDCHAT_STRUCT *ed_struct; 5542 if (old_ed_redraw) old_ed_redraw(data); \ 00000004 ........ LDR R4,??DataTable215 ;; S_ICONS \ 00000008 F81194E5 LDR R1,[R4, #+504] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0100000A BEQ ??my_ed_redraw_0 \ 00000014 31FF2FE1 BLX R1 5543 edchat_gui=FindGUIbyId(edchat_id,NULL); \ 00000018 0010A0E3 MOV R1,#+0 \ ??my_ed_redraw_0: \ 0000001C C00194E5 LDR R0,[R4, #+448] \ 00000020 090200EF SWI +521 5544 if (edchat_gui) \ 00000024 000050E3 CMP R0,#+0 \ 00000028 3080BD08 POPEQ {R4,R5,PC} 5545 { 5546 ed_struct=EDIT_GetUserPointer(edchat_gui); \ 0000002C DF0100EF SWI +479 5547 if (ed_struct) \ 00000030 000050E3 CMP R0,#+0 \ 00000034 3080BD08 POPEQ {R4,R5,PC} 5548 { 5549 int icon, width; 5550 #ifndef NEWSGOLD 5551 icon=*(S_ICONS+GetIconIndex(ed_struct->ed_contact)); 5552 ((HEADER_DESC *)&edchat_hdr)->rc.x2=ScreenW()-1-(width=GetImgWidth(icon)); 5553 DrawImg(ScreenW()-1-width,1,icon); 5554 #else 5555 icon=*(S_ICONS+GetIconIndex(ed_struct->ed_contact)); \ 00000038 000090E5 LDR R0,[R0, #+0] \ 0000003C ........ BL GetIconIndex \ 00000040 004194E7 LDR R4,[R4, +R0, LSL #+2] 5556 width=GetImgWidth(icon); \ 00000044 0400A0E1 MOV R0,R4 \ 00000048 220000EF SWI +34 \ 0000004C 0050A0E1 MOV R5,R0 5557 DrawImg(2,((HeaderH()-width)>>1)+YDISP,icon); \ 00000050 8A8100EF SWI +33162 \ 00000054 0420A0E1 MOV R2,R4 \ 00000058 050040E0 SUB R0,R0,R5 \ 0000005C 1810A0E3 MOV R1,#+24 \ 00000060 C01081E0 ADD R1,R1,R0, ASR #+1 \ 00000064 0200A0E3 MOV R0,#+2 \ 00000068 230000EF SWI +35 5558 /* DrawRoundedFrame(ScreenW()-8,YDISP,ScreenW()-1,YDISP+7,0,0,0, 5559 GetPaletteAdrByColorIndex(0), 5560 GetPaletteAdrByColorIndex(EDIT_IsBusy(edchat_gui)?3:4));*/ 5561 #endif 5562 } 5563 } 5564 } \ 0000006C 3080BDE8 POP {R4,R5,PC} ;; return 5565 \ In segment CODE, align 4, keep-with-next 5566 void edchat_ghook(GUI *data, int cmd) 5567 { \ edchat_ghook: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 5568 5569 static const SOFTKEY_DESC sk={0x0FFF,0x0000,(int)LG_MENU}; 5570 static const SOFTKEY_DESC sk_cancel={0x0FF0,0x0000,(int)LG_CLOSE}; 5571 // static SOFTKEY_DESC sk={0x0018,0x0000,(int)"Menu"}; 5572 int j; 5573 EDITCONTROL ec; 5574 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); 5575 PNGTOP_DESC *pltop=PNG_TOP(); 5576 if (cmd==9) \ 00000004 ........ LDR R4,??DataTable214 ;; S_ICONS \ 00000008 2CD04DE2 SUB SP,SP,#+44 \ 0000000C 0050A0E1 MOV R5,R0 \ 00000010 0190A0E1 MOV R9,R1 \ 00000014 DF0100EF SWI +479 \ 00000018 0070A0E1 MOV R7,R0 \ 0000001C B98100EF SWI +33209 \ 00000020 0080A0E1 MOV R8,R0 \ 00000024 0060A0E3 MOV R6,#+0 \ 00000028 090059E3 CMP R9,#+9 \ 0000002C 0500001A BNE ??edchat_ghook_0 5577 { 5578 GBS_DelTimer(&tmr_illumination); //by BoBa 25.06.07 \ 00000030 3400A0E3 MOV R0,#+52 \ 00000034 600D80E3 ORR R0,R0,#0x1800 \ 00000038 040080E0 ADD R0,R0,R4 \ 0000003C 8C0100EF SWI +396 5579 pltop->dyn_pltop=NULL; \ 00000040 086088E5 STR R6,[R8, #+8] \ 00000044 170000EA B ??edchat_ghook_1 5580 } 5581 if (cmd==2) \ ??edchat_ghook_0: \ 00000048 081097E5 LDR R1,[R7, #+8] \ 0000004C 020059E3 CMP R9,#+2 \ 00000050 1600001A BNE ??edchat_ghook_2 5582 { 5583 ed_struct->ed_chatgui=data; \ 00000054 045087E5 STR R5,[R7, #+4] 5584 // edgui_data=data; 5585 EDIT_SetFocus(data,ed_struct->ed_answer); \ 00000058 0500A0E1 MOV R0,R5 \ 0000005C 9B0100EF SWI +411 5586 5587 static void *methods[16]; 5588 void **m=GetDataOfItemByID(data,2); \ 00000060 0210A0E3 MOV R1,#+2 \ 00000064 0500A0E1 MOV R0,R5 \ 00000068 4F0100EF SWI +335 \ 0000006C 0050B0E1 MOVS R5,R0 5589 if (m) 5590 { 5591 if (m[1]) \ 00000070 04009515 LDRNE R0,[R5, #+4] \ 00000074 00005013 CMPNE R0,#+0 \ 00000078 6700000A BEQ ??edchat_ghook_3 5592 { 5593 memcpy(methods,m[1],sizeof(methods)); \ 0000007C 7F6FA0E3 MOV R6,#+508 \ 00000080 4020A0E3 MOV R2,#+64 \ 00000084 0010A0E1 MOV R1,R0 \ 00000088 040086E0 ADD R0,R6,R4 \ 0000008C 1E0100EF SWI +286 5594 old_ed_redraw=(void (*)(void *))(methods[0]); \ 00000090 040096E7 LDR R0,[R6, +R4] \ 00000094 F80184E5 STR R0,[R4, #+504] 5595 methods[0]=(void *)my_ed_redraw; \ 00000098 84019FE5 LDR R0,??edchat_ghook_4 ;; my_ed_redraw \ 0000009C 040086E7 STR R0,[R6, +R4] 5596 m[1]=methods; \ 000000A0 040086E0 ADD R0,R6,R4 \ 000000A4 040085E5 STR R0,[R5, #+4] \ ??edchat_ghook_1: \ 000000A8 2CD08DE2 ADD SP,SP,#+44 \ 000000AC F083BDE8 POP {R4-R9,PC} 5597 } 5598 } 5599 } 5600 if (cmd==3) \ ??edchat_ghook_2: \ 000000B0 030059E3 CMP R9,#+3 \ 000000B4 0E00001A BNE ??edchat_ghook_5 5601 { 5602 // if (edgui_data==data) edgui_data=NULL; 5603 if (ed_struct->ed_contact) \ 000000B8 000097E5 LDR R0,[R7, #+0] \ 000000BC 000050E3 CMP R0,#+0 \ 000000C0 0500000A BEQ ??edchat_ghook_6 5604 { 5605 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 000000C4 0D20A0E1 MOV R2,SP \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 690100EF SWI +361 5606 SaveAnswer(ed_struct->ed_contact,ec.pWS); \ 000000D0 28109DE5 LDR R1,[SP, #+40] \ 000000D4 000097E5 LDR R0,[R7, #+0] \ 000000D8 ........ BL SaveAnswer 5607 } 5608 RecountMenu(ed_struct->ed_contact,1); \ ??edchat_ghook_6: \ 000000DC 000097E5 LDR R0,[R7, #+0] \ 000000E0 0110A0E3 MOV R1,#+1 \ 000000E4 ........ BL RecountMenu 5609 mfree(ed_struct); \ 000000E8 0700A0E1 MOV R0,R7 \ 000000EC 150000EF SWI +21 \ 000000F0 ECFFFFEA B ??edchat_ghook_1 5610 } 5611 if (cmd==0x0A) \ ??edchat_ghook_5: \ 000000F4 0A0059E3 CMP R9,#+10 \ 000000F8 0D00001A BNE ??edchat_ghook_7 5612 { 5613 pltop->dyn_pltop=SmilesImgList; \ 000000FC 24019FE5 LDR R0,??edchat_ghook_4+0x4 ;; SmilesImgList \ 00000100 000090E5 LDR R0,[R0, #+0] \ 00000104 080088E5 STR R0,[R8, #+8] 5614 DisableIDLETMR(); \ 00000108 7F0100EF SWI +383 5615 total_unread-=ed_struct->requested_decrement_total_unread; \ 0000010C B00194E5 LDR R0,[R4, #+432] \ 00000110 0C1097E5 LDR R1,[R7, #+12] \ 00000114 010040E0 SUB R0,R0,R1 \ 00000118 B00184E5 STR R0,[R4, #+432] 5616 ed_struct->requested_decrement_total_unread=0; \ 0000011C 0C6087E5 STR R6,[R7, #+12] 5617 #ifdef ELKA 5618 if (!total_unread) \ 00000120 B00194E5 LDR R0,[R4, #+432] \ 00000124 000050E3 CMP R0,#+0 \ 00000128 3B00001A BNE ??edchat_ghook_3 5619 { 5620 SLI_Off(); \ 0000012C ........ BL SLI_Off \ 00000130 DCFFFFEA B ??edchat_ghook_1 5621 } 5622 #endif 5623 /* if (request_close_edchat) 5624 { 5625 request_close_edchat=0; 5626 GeneralFunc_flag1(edchat_id,1); 5627 return; 5628 }*/ 5629 } 5630 if (cmd==7) \ ??edchat_ghook_7: \ 00000134 070059E3 CMP R9,#+7 \ 00000138 2800001A BNE ??edchat_ghook_8 5631 { 5632 SetSoftKey(data,&sk,SET_SOFT_KEY_N); \ 0000013C E8809FE5 LDR R8,??edchat_ghook_4+0x8 ;; ??sk_1 \ 00000140 0020A0E3 MOV R2,#+0 \ 00000144 0810A0E1 MOV R1,R8 \ 00000148 0500A0E1 MOV R0,R5 \ 0000014C 680100EF SWI +360 5633 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 00000150 081097E5 LDR R1,[R7, #+8] \ 00000154 0D20A0E1 MOV R2,SP \ 00000158 0500A0E1 MOV R0,R5 \ 0000015C 690100EF SWI +361 5634 if (ec.pWS->wsbody[0]==0) \ 00000160 28009DE5 LDR R0,[SP, #+40] \ 00000164 000090E5 LDR R0,[R0, #+0] \ 00000168 B000D0E1 LDRH R0,[R0, #+0] \ 0000016C 000050E3 CMP R0,#+0 \ 00000170 0300001A BNE ??edchat_ghook_9 5635 SetSoftKey(data,&sk_cancel,SET_SOFT_KEY_N==0?1:0); \ 00000174 0120A0E3 MOV R2,#+1 \ 00000178 081088E2 ADD R1,R8,#+8 \ 0000017C 0500A0E1 MOV R0,R5 \ 00000180 680100EF SWI +360 5636 if (!EDIT_IsBusy(data)) \ ??edchat_ghook_9: \ 00000184 0500A0E1 MOV R0,R5 \ 00000188 1C0200EF SWI +540 \ 0000018C 000050E3 CMP R0,#+0 \ 00000190 2100001A BNE ??edchat_ghook_3 5637 { 5638 time_to_stop_t9=0; \ 00000194 E86184E5 STR R6,[R4, #+488] 5639 if (ed_struct->ed_contact->req_add) \ 00000198 000097E5 LDR R0,[R7, #+0] \ 0000019C 6C1090E5 LDR R1,[R0, #+108] \ 000001A0 000051E3 CMP R1,#+0 \ 000001A4 0500000A BEQ ??edchat_ghook_10 5640 { 5641 ed_struct->ed_contact->req_add=0; \ 000001A8 6C6080E5 STR R6,[R0, #+108] 5642 AddMsgToChat(data); \ 000001AC 0500A0E1 MOV R0,R5 \ 000001B0 ........ BL AddMsgToChat 5643 RecountMenu(ed_struct->ed_contact,1); \ 000001B4 000097E5 LDR R0,[R7, #+0] \ 000001B8 0110A0E3 MOV R1,#+1 \ 000001BC ........ BL RecountMenu 5644 } 5645 if (ed_struct->ed_contact->req_drawack) \ ??edchat_ghook_10: \ 000001C0 000097E5 LDR R0,[R7, #+0] \ 000001C4 701090E5 LDR R1,[R0, #+112] \ 000001C8 000051E3 CMP R1,#+0 \ 000001CC 1200000A BEQ ??edchat_ghook_3 5646 { 5647 ed_struct->ed_contact->req_drawack=0; \ 000001D0 706080E5 STR R6,[R0, #+112] 5648 DrawAck(data); \ 000001D4 0500A0E1 MOV R0,R5 \ 000001D8 ........ BL DrawAck \ 000001DC B1FFFFEA B ??edchat_ghook_1 5649 } 5650 } 5651 } 5652 if (cmd==0x0C) \ ??edchat_ghook_8: \ 000001E0 0C0059E3 CMP R9,#+12 \ 000001E4 0C00001A BNE ??edchat_ghook_3 5653 { 5654 j=EDIT_GetFocus(data); \ 000001E8 0500A0E1 MOV R0,R5 \ 000001EC 820100EF SWI +386 \ 000001F0 0040A0E1 MOV R4,R0 5655 if ((EDIT_GetUnFocus(data)ed_answer)) \ 000001F4 0500A0E1 MOV R0,R5 \ 000001F8 830100EF SWI +387 \ 000001FC 040050E1 CMP R0,R4 \ 00000200 050000AA BGE ??edchat_ghook_3 \ 00000204 080097E5 LDR R0,[R7, #+8] \ 00000208 000054E1 CMP R4,R0 \ 0000020C 0200000A BEQ ??edchat_ghook_3 5656 EDIT_SetCursorPos(data,1); \ 00000210 0110A0E3 MOV R1,#+1 \ 00000214 0500A0E1 MOV R0,R5 \ 00000218 D40100EF SWI +468 5657 } 5658 } \ ??edchat_ghook_3: \ 0000021C 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 00000220 F083BDE8 POP {R4-R9,PC} ;; return \ ??edchat_ghook_4: \ 00000224 ........ DC32 my_ed_redraw \ 00000228 ........ DC32 SmilesImgList \ 0000022C ........ DC32 ??sk_1 \ In segment DATA_C, align 4, align-sorted 5659 5660 5661 5662 static const INPUTDIA_DESC edchat_desc = \ edchat_desc: \ 00000000 01000000.... DC32 1, edchat_onkey, edchat_ghook, edchat_locret, 0, menu_skt \ ............ \ ........0000 \ 0000........ \ 00000018 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000020 080000006400 DC32 8, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ 00000038 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000040 000000000000 DC32 0H, 0, 2147483647 \ 0000FFFFFF7F \ 0000004C 2D2D2D2D2D2D DC8 "-------" \ 2D00 \ In segment DATA_C, align 4, align-sorted \ ??sk_1: \ 00000000 FF0F0000 DC16 4095, 0 \ 00000004 ........ DC32 `?` \ 00000008 F00F0000 DC16 4080, 0 \ 0000000C ........ DC32 `?` 5663 { 5664 1, 5665 edchat_onkey, 5666 edchat_ghook, 5667 (void *)edchat_locret, 5668 0, 5669 &menu_skt, 5670 {0,NULL,NULL,NULL}, 5671 FONT_SMALL, 5672 100, 5673 101, 5674 0, 5675 // 0x00000001 - Выровнять по правому краю 5676 // 0x00000002 - Выровнять по центру 5677 // 0x00000004 - Инверсия знакомест 5678 // 0x00000008 - UnderLine 5679 // 0x00000020 - Не переносить слова 5680 // 0x00000200 - bold 5681 0, 5682 // 0x00000002 - ReadOnly 5683 // 0x00000004 - Не двигается курсор 5684 // 0x40000000 - Поменять местами софт-кнопки 5685 0x40000000 5686 }; 5687 \ In segment CODE, align 4, keep-with-next 5688 void CreateEditChat(CLIST *t) 5689 { \ CreateEditChat: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 5690 extern const int FIRST_LETTER; 5691 void *ma=malloc_adr(); 5692 void *eq; 5693 EDITCONTROL ec; 5694 EDITC_OPTIONS ec_options; 5695 int color, font, type; 5696 int zc; 5697 5698 LOGQ *lp; 5699 int edchat_toitem; 5700 // edcontact=t; 5701 5702 *((int *)(&edchat_hdr.lgp_id))=(int)t->name; \ 00000004 8C649FE5 LDR R6,??CreateEditChat_0 ;; edchat_desc 5703 // *((int **)(&edchat_hdr.icon))=(int *)S_ICONS+GetIconIndex(t); 5704 *((int **)(&edchat_hdr.icon))=(int *)S_ICONS+IS_NULLICON; \ 00000008 ........ LDR R7,??DataTable215 ;; S_ICONS \ 0000000C 4CD04DE2 SUB SP,SP,#+76 \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 148000EF SWI +32788 \ 00000018 0050A0E1 MOV R5,R0 \ 0000001C 140084E2 ADD R0,R4,#+20 \ 00000020 440086E5 STR R0,[R6, #+68] \ 00000024 440087E2 ADD R0,R7,#+68 \ 00000028 400086E5 STR R0,[R6, #+64] 5705 5706 eq=AllocEQueue(ma,mfree_adr()); \ 0000002C 158000EF SWI +32789 \ 00000030 0010A0E1 MOV R1,R0 \ 00000034 0500A0E1 MOV R0,R5 \ 00000038 630100EF SWI +355 5707 5708 /* hist = malloc(256); 5709 if(!GetHistory(hist, 256, t->uin)) 5710 { 5711 ascii2ws(ews,hist); 5712 PrepareEditControl(&ec); 5713 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL|ECF_DISABLE_T9,ews,ews->wsbody[0]); 5714 } 5715 mfree(hist); 5716 5717 AddEditControlToEditQend(eq,&ec,ma); */ 5718 lp=t->log; \ 0000003C 749094E5 LDR R9,[R4, #+116] \ 00000040 0080A0E1 MOV R8,R0 \ 00000044 000059E3 CMP R9,#+0 \ 00000048 9500000A BEQ ??CreateEditChat_1 5719 5720 while(lp) 5721 { 5722 font = ED_H_FONT_SIZE; 5723 if ((zc=lp->acked&3)) \ ??CreateEditChat_2: \ 0000004C ........ LDR R2,??DataTable216 ;; ED_X_FONT_SIZE \ 00000050 ........ LDR R0,??DataTable217 ;; ED_H_FONT_SIZE \ 00000054 002092E5 LDR R2,[R2, #+0] \ 00000058 00A090E5 LDR R10,[R0, #+0] \ 0000005C 040099E5 LDR R0,[R9, #+4] \ 00000060 ........ LDR R1,??DataTable218 ;; I_COLOR \ 00000064 1C208DE5 STR R2,[SP, #+28] \ 00000068 ........ LDR R2,??DataTable219 ;; X_COLOR \ 0000006C 030010E2 ANDS R0,R0,#0x3 \ 00000070 002092E5 LDR R2,[R2, #+0] \ 00000074 14208DE5 STR R2,[SP, #+20] \ 00000078 ........ LDR R2,??DataTable220 ;; O_ED_X_FONT_SIZE \ 0000007C 002092E5 LDR R2,[R2, #+0] \ 00000080 18208DE5 STR R2,[SP, #+24] \ 00000084 ........ LDR R2,??DataTable221 ;; O_X_COLOR \ 00000088 002092E5 LDR R2,[R2, #+0] \ 0000008C 10208DE5 STR R2,[SP, #+16] \ 00000090 00B091E5 LDR R11,[R1, #+0] \ 00000094 0300000A BEQ ??CreateEditChat_3 5724 { 5725 if (zc==1) \ 00000098 010050E3 CMP R0,#+1 \ 0000009C 1E00001A BNE ??CreateEditChat_4 5726 color=ACK_COLOR; //Зеленый \ 000000A0 ........ LDR R0,??DataTable222 ;; ACK_COLOR \ 000000A4 1B0000EA B ??CreateEditChat_5 5727 else 5728 color=I_COLOR; 5729 } 5730 else 5731 { 5732 if (lp->ID==0xFFFFFFFF) \ ??CreateEditChat_3: \ 000000A8 080099E5 LDR R0,[R9, #+8] \ 000000AC 010070E3 CMN R0,#+1 \ 000000B0 1700001A BNE ??CreateEditChat_6 5733 { 5734 type = lp->type&0x0F; \ 000000B4 0C0099E5 LDR R0,[R9, #+12] \ 000000B8 0F1000E2 AND R1,R0,#0xF 5735 if(lp->type&0x10) \ 000000BC 100010E3 TST R0,#0x10 \ 000000C0 0B00000A BEQ ??CreateEditChat_7 5736 { 5737 color = (type==1)?O_I_COLOR:((type==3)?O_X_COLOR:O_TO_COLOR); \ 000000C4 010051E3 CMP R1,#+1 \ 000000C8 ........ LDREQ R0,??DataTable223 ;; O_I_COLOR \ 000000CC 0400000A BEQ ??CreateEditChat_8 \ 000000D0 030051E3 CMP R1,#+3 \ 000000D4 18A09D05 LDREQ R10,[SP, #+24] \ 000000D8 02B0A001 MOVEQ R11,R2 \ 000000DC 0E00000A BEQ ??CreateEditChat_4 \ 000000E0 ........ LDR R0,??DataTable224 ;; O_TO_COLOR \ ??CreateEditChat_8: \ 000000E4 00B090E5 LDR R11,[R0, #+0] \ 000000E8 ........ LDR R0,??DataTable225 ;; O_ED_H_FONT_SIZE \ 000000EC 00A090E5 LDR R10,[R0, #+0] \ 000000F0 090000EA B ??CreateEditChat_4 5738 font = (type==3)?O_ED_X_FONT_SIZE:O_ED_H_FONT_SIZE; 5739 } 5740 else 5741 { 5742 color = (type==1)?I_COLOR:((type==3)?X_COLOR:TO_COLOR); \ ??CreateEditChat_7: \ 000000F4 010051E3 CMP R1,#+1 \ 000000F8 0700000A BEQ ??CreateEditChat_4 \ 000000FC 030051E3 CMP R1,#+3 \ 00000100 14B09D05 LDREQ R11,[SP, #+20] \ 00000104 1CA09D05 LDREQ R10,[SP, #+28] \ 00000108 0300000A BEQ ??CreateEditChat_4 \ 0000010C ........ LDR R0,??DataTable226 ;; TO_COLOR \ 00000110 000000EA B ??CreateEditChat_5 5743 font = (type==3)?ED_X_FONT_SIZE:ED_H_FONT_SIZE; 5744 } 5745 } 5746 else 5747 color=UNACK_COLOR; //????? \ ??CreateEditChat_6: \ 00000114 ........ LDR R0,??DataTable227 ;; UNACK_COLOR \ ??CreateEditChat_5: \ 00000118 00B090E5 LDR R11,[R0, #+0] 5748 } 5749 PrepareEditControl(&ec); \ ??CreateEditChat_4: \ 0000011C 20008DE2 ADD R0,SP,#+32 \ 00000120 640100EF SWI +356 5750 if ((lp->type&0x0F)!=3) \ 00000124 0C0099E5 LDR R0,[R9, #+12] \ 00000128 0F0000E2 AND R0,R0,#0xF \ 0000012C 030050E3 CMP R0,#+3 \ 00000130 0800000A BEQ ??CreateEditChat_9 5751 { 5752 ascii2ws(ews,lp->hdr); \ 00000134 2C0197E5 LDR R0,[R7, #+300] \ 00000138 101089E2 ADD R1,R9,#+16 \ 0000013C ........ _BLF ascii2ws,??ascii2ws??rA 5753 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 00000140 2C3197E5 LDR R3,[R7, #+300] \ 00000144 4020A0E3 MOV R2,#+64 \ 00000148 000093E5 LDR R0,[R3, #+0] \ 0000014C B000D0E1 LDRH R0,[R0, #+0] \ 00000150 01002DE9 PUSH {R0} \ 00000154 030000EA B ??CreateEditChat_10 5754 } 5755 else 5756 { 5757 ConstructEditControl(&ec,ECT_HEADER,ECF_DELSTR,ews,0); \ ??CreateEditChat_9: \ 00000158 0000A0E3 MOV R0,#+0 \ 0000015C 01002DE9 PUSH {R0} \ 00000160 2C3197E5 LDR R3,[R7, #+300] \ 00000164 2020A0E3 MOV R2,#+32 \ ??CreateEditChat_10: \ 00000168 0110A0E3 MOV R1,#+1 \ 0000016C 24008DE2 ADD R0,SP,#+36 \ 00000170 650100EF SWI +357 \ 00000174 04D08DE2 ADD SP,SP,#+4 5758 } 5759 PrepareEditCOptions(&ec_options); \ 00000178 0D00A0E1 MOV R0,SP \ 0000017C C80100EF SWI +456 5760 SetPenColorToEditCOptions(&ec_options,color); \ 00000180 0B10A0E1 MOV R1,R11 \ 00000184 0D00A0E1 MOV R0,SP \ 00000188 CC0100EF SWI +460 5761 SetFontToEditCOptions(&ec_options,font); \ 0000018C 0A10A0E1 MOV R1,R10 \ 00000190 0D00A0E1 MOV R0,SP \ 00000194 CA0100EF SWI +458 5762 CopyOptionsToEditControl(&ec,&ec_options); \ 00000198 0D10A0E1 MOV R1,SP \ 0000019C 20008DE2 ADD R0,SP,#+32 \ 000001A0 CE0100EF SWI +462 5763 AddEditControlToEditQend(eq,&ec,ma); \ 000001A4 0520A0E1 MOV R2,R5 \ 000001A8 20108DE2 ADD R1,SP,#+32 \ 000001AC 0800A0E1 MOV R0,R8 \ 000001B0 660100EF SWI +358 5764 if ((lp->type&0x0F)!=3) \ 000001B4 0C0099E5 LDR R0,[R9, #+12] \ 000001B8 0F1000E2 AND R1,R0,#0xF \ 000001BC 030051E3 CMP R1,#+3 \ 000001C0 0300000A BEQ ??CreateEditChat_11 5765 { 5766 ParseAnswer(ews,lp->text); \ 000001C4 2C0197E5 LDR R0,[R7, #+300] \ 000001C8 601089E2 ADD R1,R9,#+96 \ 000001CC ........ BL ParseAnswer \ 000001D0 050000EA B ??CreateEditChat_12 5767 } 5768 else 5769 { 5770 ParseXStatusText(ews,lp->text,(lp->type&0x10)?O_X_COLOR:X_COLOR); \ ??CreateEditChat_11: \ 000001D4 100010E3 TST R0,#0x10 \ 000001D8 10209D15 LDRNE R2,[SP, #+16] \ 000001DC 2C0197E5 LDR R0,[R7, #+300] \ 000001E0 14209D05 LDREQ R2,[SP, #+20] \ 000001E4 601089E2 ADD R1,R9,#+96 \ 000001E8 ........ BL ParseXStatusText 5771 } 5772 PrepareEditControl(&ec); \ ??CreateEditChat_12: \ 000001EC 20008DE2 ADD R0,SP,#+32 \ 000001F0 640100EF SWI +356 5773 ConstructEditControl(&ec, 5774 ECT_NORMAL_TEXT, 5775 ews->wsbody[0] ? ECF_APPEND_EOL|ECF_DISABLE_T9 : ECF_DELSTR, 5776 ews,ews->wsbody[0]); \ 000001F4 2C3197E5 LDR R3,[R7, #+300] \ 000001F8 000093E5 LDR R0,[R3, #+0] \ 000001FC B010D0E1 LDRH R1,[R0, #+0] \ 00000200 000051E3 CMP R1,#+0 \ 00000204 0100A0E1 MOV R0,R1 \ 00000208 01002DE9 PUSH {R0} \ 0000020C 812DA013 MOVNE R2,#+8256 \ 00000210 2020A003 MOVEQ R2,#+32 \ 00000214 0310A0E3 MOV R1,#+3 \ 00000218 24008DE2 ADD R0,SP,#+36 \ 0000021C 650100EF SWI +357 5777 PrepareEditCOptions(&ec_options); \ 00000220 04008DE2 ADD R0,SP,#+4 \ 00000224 C80100EF SWI +456 5778 //#ifdef M75 5779 if ((lp->type&0x0F)!=3) \ 00000228 0C0099E5 LDR R0,[R9, #+12] \ 0000022C 04D08DE2 ADD SP,SP,#+4 \ 00000230 0F1000E2 AND R1,R0,#0xF \ 00000234 030051E3 CMP R1,#+3 \ 00000238 0400000A BEQ ??CreateEditChat_13 5780 { 5781 SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); \ 0000023C 100010E3 TST R0,#0x10 \ 00000240 ........ LDRNE R0,??DataTable228 ;; O_ED_FONT_SIZE \ 00000244 ........ LDREQ R0,??DataTable230 ;; ED_FONT_SIZE \ 00000248 001090E5 LDR R1,[R0, #+0] \ 0000024C 080000EA B ??CreateEditChat_14 5782 } 5783 else 5784 { 5785 SetPenColorToEditCOptions(&ec_options,(lp->type&0x10)?O_X_COLOR:X_COLOR); \ ??CreateEditChat_13: \ 00000250 100010E3 TST R0,#0x10 \ 00000254 10109D15 LDRNE R1,[SP, #+16] \ 00000258 0D00A0E1 MOV R0,SP \ 0000025C 14109D05 LDREQ R1,[SP, #+20] \ 00000260 CC0100EF SWI +460 5786 SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_X_FONT_SIZE:ED_X_FONT_SIZE); \ 00000264 0C0099E5 LDR R0,[R9, #+12] \ 00000268 100010E3 TST R0,#0x10 \ 0000026C 18109D15 LDRNE R1,[SP, #+24] \ 00000270 1C109D05 LDREQ R1,[SP, #+28] \ ??CreateEditChat_14: \ 00000274 0D00A0E1 MOV R0,SP \ 00000278 CA0100EF SWI +458 5787 } 5788 //#else 5789 // SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); 5790 //#endif 5791 CopyOptionsToEditControl(&ec,&ec_options); \ 0000027C 0D10A0E1 MOV R1,SP \ 00000280 20008DE2 ADD R0,SP,#+32 \ 00000284 CE0100EF SWI +462 5792 AddEditControlToEditQend(eq,&ec,ma); \ 00000288 0520A0E1 MOV R2,R5 \ 0000028C 20108DE2 ADD R1,SP,#+32 \ 00000290 0800A0E1 MOV R0,R8 \ 00000294 660100EF SWI +358 5793 lp=lp->next; \ 00000298 009099E5 LDR R9,[R9, #+0] 5794 } \ 0000029C 000059E3 CMP R9,#+0 \ 000002A0 69FFFF1A BNE ??CreateEditChat_2 5795 if (t->isunread) total_unread--; \ ??CreateEditChat_1: \ 000002A4 640094E5 LDR R0,[R4, #+100] 5796 total_unread2=total_unread2-t->unread_msg; 5797 t->unread_msg=0; \ 000002A8 0090A0E3 MOV R9,#+0 \ 000002AC 000050E3 CMP R0,#+0 \ 000002B0 B0019715 LDRNE R0,[R7, #+432] \ 000002B4 01004012 SUBNE R0,R0,#+1 \ 000002B8 B0018715 STRNE R0,[R7, #+432] \ 000002BC 140197E5 LDR R0,[R7, #+276] \ 000002C0 681094E5 LDR R1,[R4, #+104] \ 000002C4 010040E0 SUB R0,R0,R1 \ 000002C8 140187E5 STR R0,[R7, #+276] \ 000002CC 689084E5 STR R9,[R4, #+104] 5798 t->isunread=0; \ 000002D0 649084E5 STR R9,[R4, #+100] 5799 ChangeContactPos(t); \ 000002D4 0400A0E1 MOV R0,R4 \ 000002D8 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 5800 wsprintf(ews, "-------"); \ 000002DC 2C0197E5 LDR R0,[R7, #+300] \ 000002E0 4C1086E2 ADD R1,R6,#+76 \ 000002E4 240100EF SWI +292 5801 PrepareEditControl(&ec); \ 000002E8 20008DE2 ADD R0,SP,#+32 \ 000002EC 640100EF SWI +356 5802 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 000002F0 2C3197E5 LDR R3,[R7, #+300] \ 000002F4 4020A0E3 MOV R2,#+64 \ 000002F8 000093E5 LDR R0,[R3, #+0] \ 000002FC 0110A0E3 MOV R1,#+1 \ 00000300 B000D0E1 LDRH R0,[R0, #+0] \ 00000304 01002DE9 PUSH {R0} \ 00000308 24008DE2 ADD R0,SP,#+36 \ 0000030C 650100EF SWI +357 5803 PrepareEditCOptions(&ec_options); \ 00000310 04008DE2 ADD R0,SP,#+4 \ 00000314 C80100EF SWI +456 5804 SetFontToEditCOptions(&ec_options,ED_FONT_SIZE); \ 00000318 ........ LDR R0,??DataTable230 ;; ED_FONT_SIZE \ 0000031C 00A090E5 LDR R10,[R0, #+0] \ 00000320 04008DE2 ADD R0,SP,#+4 \ 00000324 0A10A0E1 MOV R1,R10 \ 00000328 CA0100EF SWI +458 5805 CopyOptionsToEditControl(&ec,&ec_options); \ 0000032C 04108DE2 ADD R1,SP,#+4 \ 00000330 24008DE2 ADD R0,SP,#+36 \ 00000334 CE0100EF SWI +462 5806 AddEditControlToEditQend(eq,&ec,ma); \ 00000338 0520A0E1 MOV R2,R5 \ 0000033C 24108DE2 ADD R1,SP,#+36 \ 00000340 0800A0E1 MOV R0,R8 \ 00000344 660100EF SWI +358 5807 5808 if (t->answer) ParseAnswer(ews,t->answer); \ 00000348 781094E5 LDR R1,[R4, #+120] \ 0000034C 04D08DE2 ADD SP,SP,#+4 \ 00000350 000051E3 CMP R1,#+0 \ 00000354 0200000A BEQ ??CreateEditChat_15 \ 00000358 2C0197E5 LDR R0,[R7, #+300] \ 0000035C ........ BL ParseAnswer \ 00000360 020000EA B ??CreateEditChat_16 5809 else CutWSTR(ews,0); \ ??CreateEditChat_15: \ 00000364 2C0197E5 LDR R0,[R7, #+300] \ 00000368 0010A0E3 MOV R1,#+0 \ 0000036C 260100EF SWI +294 5810 PrepareEditControl(&ec); \ ??CreateEditChat_16: \ 00000370 20008DE2 ADD R0,SP,#+32 \ 00000374 640100EF SWI +356 5811 ConstructEditControl(&ec,3,(FIRST_LETTER)?ECF_DEFAULT_BIG_LETTER:0,ews,1024); \ 00000378 1C019FE5 LDR R0,??CreateEditChat_0+0x4 ;; FIRST_LETTER \ 0000037C 0310A0E3 MOV R1,#+3 \ 00000380 000090E5 LDR R0,[R0, #+0] \ 00000384 000050E3 CMP R0,#+0 \ 00000388 400EA0E3 MOV R0,#+1024 \ 0000038C 01002DE9 PUSH {R0} \ 00000390 2C3197E5 LDR R3,[R7, #+300] \ 00000394 402DA013 MOVNE R2,#+4096 \ 00000398 0020A003 MOVEQ R2,#+0 \ 0000039C 24008DE2 ADD R0,SP,#+36 \ 000003A0 650100EF SWI +357 5812 5813 PrepareEditCOptions(&ec_options); \ 000003A4 04008DE2 ADD R0,SP,#+4 \ 000003A8 C80100EF SWI +456 5814 SetFontToEditCOptions(&ec_options,ED_FONT_SIZE); \ 000003AC 0A10A0E1 MOV R1,R10 \ 000003B0 04008DE2 ADD R0,SP,#+4 \ 000003B4 CA0100EF SWI +458 5815 CopyOptionsToEditControl(&ec,&ec_options); \ 000003B8 04108DE2 ADD R1,SP,#+4 \ 000003BC 24008DE2 ADD R0,SP,#+36 \ 000003C0 CE0100EF SWI +462 5816 edchat_toitem=AddEditControlToEditQend(eq,&ec,ma); \ 000003C4 0520A0E1 MOV R2,R5 \ 000003C8 24108DE2 ADD R1,SP,#+36 \ 000003CC 0800A0E1 MOV R0,R8 \ 000003D0 660100EF SWI +358 \ 000003D4 00A0A0E1 MOV R10,R0 5817 5818 if (t->req_xtext) \ 000003D8 8C0094E5 LDR R0,[R4, #+140] \ 000003DC 04D08DE2 ADD SP,SP,#+4 \ 000003E0 000050E3 CMP R0,#+0 \ 000003E4 0400000A BEQ ??CreateEditChat_17 5819 { 5820 FreeXText(t); \ 000003E8 0400A0E1 MOV R0,R4 \ 000003EC ........ _BLF FreeXText,??FreeXText??rA 5821 t->req_xtext=0; \ 000003F0 8C9084E5 STR R9,[R4, #+140] 5822 RequestXText(t->uin); \ 000003F4 0C0094E5 LDR R0,[R4, #+12] \ 000003F8 ........ BL RequestXText 5823 } 5824 5825 EDCHAT_STRUCT *ed_struct=malloc(sizeof(EDCHAT_STRUCT)); \ ??CreateEditChat_17: \ 000003FC 1400A0E3 MOV R0,#+20 \ 00000400 140000EF SWI +20 \ 00000404 0050A0E1 MOV R5,R0 5826 ed_struct->ed_contact=t; \ 00000408 004085E5 STR R4,[R5, #+0] 5827 ed_struct->ed_answer=edchat_toitem; \ 0000040C 08A085E5 STR R10,[R5, #+8] 5828 ed_struct->requested_decrement_total_unread=0; \ 00000410 0C9085E5 STR R9,[R5, #+12] 5829 t->req_add=0; \ 00000414 6C9084E5 STR R9,[R4, #+108] 5830 t->last_log=NULL; \ 00000418 7C9084E5 STR R9,[R4, #+124] 5831 5832 // int scr_w=ScreenW(); 5833 // int scr_h=ScreenH(); 5834 // int head_h=HeaderH(); 5835 5836 patch_header(&edchat_hdr); \ 0000041C B893C6E1 STRH R9,[R6, #+56] \ 00000420 1800A0E3 MOV R0,#+24 \ 00000424 BA03C6E1 STRH R0,[R6, #+58] \ 00000428 888100EF SWI +33160 \ 0000042C 010040E2 SUB R0,R0,#+1 \ 00000430 BC03C6E1 STRH R0,[R6, #+60] \ 00000434 8A8100EF SWI +33162 \ 00000438 170080E2 ADD R0,R0,#+23 \ 0000043C BE03C6E1 STRH R0,[R6, #+62] 5837 patch_input(&edchat_desc); \ 00000440 B891C6E1 STRH R9,[R6, #+24] \ 00000444 8A8100EF SWI +33162 \ 00000448 190080E2 ADD R0,R0,#+25 \ 0000044C BA01C6E1 STRH R0,[R6, #+26] \ 00000450 888100EF SWI +33160 \ 00000454 010040E2 SUB R0,R0,#+1 \ 00000458 BC01C6E1 STRH R0,[R6, #+28] \ 0000045C 898100EF SWI +33161 \ 00000460 0040A0E1 MOV R4,R0 \ 00000464 8B8100EF SWI +33163 \ 00000468 000044E0 SUB R0,R4,R0 \ 0000046C 010040E2 SUB R0,R0,#+1 \ 00000470 BE01C6E1 STRH R0,[R6, #+30] 5838 // edchat_desc.font=ED_FONT_SIZE; 5839 edchat_id=CreateInputTextDialog(&edchat_desc,&edchat_hdr,eq,1,ed_struct); \ 00000474 20002DE9 PUSH {R5} \ 00000478 0130A0E3 MOV R3,#+1 \ 0000047C 0820A0E1 MOV R2,R8 \ 00000480 381086E2 ADD R1,R6,#+56 \ 00000484 0600A0E1 MOV R0,R6 \ 00000488 670100EF SWI +359 \ 0000048C C00187E5 STR R0,[R7, #+448] 5840 } \ 00000490 50D08DE2 ADD SP,SP,#+80 \ 00000494 F08FBDE8 POP {R4-R11,PC} ;; return \ ??CreateEditChat_0: \ 00000498 ........ DC32 edchat_desc \ 0000049C ........ DC32 FIRST_LETTER 5841 5842 //----------------------------------------------------------------------------- 5843 #define EC_MNU_MAX 8 5844 \ In segment CODE, align 4, keep-with-next 5845 void Quote(GUI *data) 5846 { \ Quote: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 84D04DE2 SUB SP,SP,#+132 5847 int q_n; 5848 EDITCONTROL ec, ec_hdr; 5849 EDITCONTROL ec_ed; 5850 WSHDR *ed_ws; 5851 WSHDR *ws; 5852 5853 EDCHAT_STRUCT *ed_struct; 5854 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 5855 5856 q_n=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 820100EF SWI +386 \ 00000018 0050A0E1 MOV R5,R0 5857 ExtractEditControl(ed_struct->ed_chatgui,q_n,&ec); \ 0000001C 040094E5 LDR R0,[R4, #+4] \ 00000020 2C208DE2 ADD R2,SP,#+44 \ 00000024 0510A0E1 MOV R1,R5 \ 00000028 690100EF SWI +361 5858 ExtractEditControl(ed_struct->ed_chatgui,q_n-1,&ec_hdr); \ 0000002C 040094E5 LDR R0,[R4, #+4] \ 00000030 58208DE2 ADD R2,SP,#+88 \ 00000034 011045E2 SUB R1,R5,#+1 \ 00000038 690100EF SWI +361 5859 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec_ed); \ 0000003C 081094E5 LDR R1,[R4, #+8] \ 00000040 040094E5 LDR R0,[R4, #+4] \ 00000044 0D20A0E1 MOV R2,SP \ 00000048 690100EF SWI +361 5860 5861 ed_ws=AllocWS((ec_ed.maxlen<<1) + 1); \ 0000004C F801DDE1 LDRSH R0,[SP, #+24] \ 00000050 0110A0E3 MOV R1,#+1 \ 00000054 800081E0 ADD R0,R1,R0, LSL #+1 \ 00000058 250100EF SWI +293 \ 0000005C 0050A0E1 MOV R5,R0 5862 if(wstrlen(ec_hdr.pWS)) \ 00000060 80009DE5 LDR R0,[SP, #+128] \ 00000064 230100EF SWI +291 \ 00000068 000050E3 CMP R0,#+0 \ 0000006C 0600000A BEQ ??Quote_0 5863 { 5864 wstrcpy(ed_ws,ec_hdr.pWS); \ 00000070 80109DE5 LDR R1,[SP, #+128] \ 00000074 0500A0E1 MOV R0,R5 \ 00000078 1F0100EF SWI +287 5865 wsAppendChar(ed_ws,'\r'); \ 0000007C 0D10A0E3 MOV R1,#+13 \ 00000080 0500A0E1 MOV R0,R5 \ 00000084 1C0000EF SWI +28 \ 00000088 020000EA B ??Quote_1 5866 } 5867 else 5868 CutWSTR(ed_ws,0); \ ??Quote_0: \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 260100EF SWI +294 5869 if (EDIT_IsMarkModeActive(ed_struct->ed_chatgui)) \ ??Quote_1: \ 00000098 040094E5 LDR R0,[R4, #+4] \ 0000009C D80100EF SWI +472 \ 000000A0 000050E3 CMP R0,#+0 \ 000000A4 0300000A BEQ ??Quote_2 5870 { 5871 EDIT_GetMarkedText(ed_struct->ed_chatgui,ed_ws); \ 000000A8 040094E5 LDR R0,[R4, #+4] \ 000000AC 0510A0E1 MOV R1,R5 \ 000000B0 D90100EF SWI +473 \ 000000B4 020000EA B ??Quote_3 5872 } 5873 else 5874 { 5875 wstrcat(ed_ws,ec.pWS); \ ??Quote_2: \ 000000B8 54109DE5 LDR R1,[SP, #+84] \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 210100EF SWI +289 5876 } 5877 int ed_pos=0; \ ??Quote_3: \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 FF60A0E3 MOV R6,#+255 \ 000000CC FF6C86E3 ORR R6,R6,#0xFF00 5878 do 5879 { 5880 ed_pos++; \ ??Quote_4: \ 000000D0 017080E2 ADD R7,R0,#+1 5881 wsInsertChar(ed_ws,'>',ed_pos++); \ 000000D4 0720A0E1 MOV R2,R7 \ 000000D8 3E10A0E3 MOV R1,#+62 \ 000000DC 0500A0E1 MOV R0,R5 \ 000000E0 1D0000EF SWI +29 \ 000000E4 017087E2 ADD R7,R7,#+1 5882 wsInsertChar(ed_ws,' ',ed_pos); \ 000000E8 0720A0E1 MOV R2,R7 \ 000000EC 2010A0E3 MOV R1,#+32 \ 000000F0 0500A0E1 MOV R0,R5 \ 000000F4 1D0000EF SWI +29 5883 } 5884 while((ed_pos=wstrchr(ed_ws,ed_pos,'\r'))!=0xFFFF); \ 000000F8 0D20A0E3 MOV R2,#+13 \ 000000FC 0710A0E1 MOV R1,R7 \ 00000100 0500A0E1 MOV R0,R5 \ 00000104 DC0100EF SWI +476 \ 00000108 060050E1 CMP R0,R6 \ 0000010C EFFFFF1A BNE ??Quote_4 5885 wsAppendChar(ed_ws,'\r'); \ 00000110 0D10A0E3 MOV R1,#+13 \ 00000114 0500A0E1 MOV R0,R5 \ 00000118 1C0000EF SWI +28 5886 wsAppendChar(ed_ws,'\r'); \ 0000011C 0D10A0E3 MOV R1,#+13 \ 00000120 0500A0E1 MOV R0,R5 \ 00000124 1C0000EF SWI +28 5887 ws=AllocWS(ec_ed.pWS->wsbody[0]+ed_ws->wsbody[0]); \ 00000128 28009DE5 LDR R0,[SP, #+40] \ 0000012C 001095E5 LDR R1,[R5, #+0] \ 00000130 000090E5 LDR R0,[R0, #+0] \ 00000134 B010D1E1 LDRH R1,[R1, #+0] \ 00000138 B000D0E1 LDRH R0,[R0, #+0] \ 0000013C 000081E0 ADD R0,R1,R0 \ 00000140 250100EF SWI +293 5888 wstrcpy(ws,ec_ed.pWS); \ 00000144 28109DE5 LDR R1,[SP, #+40] \ 00000148 0060A0E1 MOV R6,R0 \ 0000014C 1F0100EF SWI +287 5889 wstrcat(ws,ed_ws); \ 00000150 0510A0E1 MOV R1,R5 \ 00000154 0600A0E1 MOV R0,R6 \ 00000158 210100EF SWI +289 5890 FreeWS(ed_ws); \ 0000015C 0500A0E1 MOV R0,R5 \ 00000160 290100EF SWI +297 5891 CutWSTR(ws,ec_ed.maxlen); \ 00000164 F811DDE1 LDRSH R1,[SP, #+24] \ 00000168 0600A0E1 MOV R0,R6 \ 0000016C 260100EF SWI +294 5892 EDIT_SetFocus(ed_struct->ed_chatgui,ed_struct->ed_answer); \ 00000170 081094E5 LDR R1,[R4, #+8] \ 00000174 040094E5 LDR R0,[R4, #+4] \ 00000178 9B0100EF SWI +411 5893 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 0000017C 040094E5 LDR R0,[R4, #+4] \ 00000180 0610A0E1 MOV R1,R6 \ 00000184 810100EF SWI +385 5894 FreeWS(ws); \ 00000188 0600A0E1 MOV R0,R6 \ 0000018C 290100EF SWI +297 5895 GeneralFuncF1(1); \ 00000190 0100A0E3 MOV R0,#+1 \ 00000194 3B0100EF SWI +315 5896 } \ 00000198 84D08DE2 ADD SP,SP,#+132 \ 0000019C F080BDE8 POP {R4-R7,PC} ;; return 5897 5898 \ In segment CODE, align 4, keep-with-next 5899 void GetShortInfo(GUI *data) 5900 { \ GetShortInfo: \ 00000000 70402DE9 PUSH {R4-R6,LR} 5901 EDCHAT_STRUCT *ed_struct; 5902 ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 \ 00000008 0040A0E1 MOV R4,R0 5903 5904 TPKT *p; 5905 CLIST *t; 5906 if ((t=ed_struct->ed_contact)&&(connect_state==3)) \ 0000000C 005094E5 LDR R5,[R4, #+0] \ 00000010 000055E3 CMP R5,#+0 \ 00000014 1E00000A BEQ ??GetShortInfo_0 \ 00000018 ........ LDR R0,??DataTable238 ;; S_ICONS + 396 \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 030050E3 CMP R0,#+3 \ 00000024 1A00001A BNE ??GetShortInfo_0 5907 { 5908 p=malloc(sizeof(PKT)); \ 00000028 0800A0E3 MOV R0,#+8 \ 0000002C 140000EF SWI +20 \ 00000030 0060A0E1 MOV R6,R0 5909 p->pkt.uin=t->uin; \ 00000034 0C0095E5 LDR R0,[R5, #+12] 5910 p->pkt.type=T_REQINFOSHORT; 5911 p->pkt.data_len=0; 5912 AddStringToLog(t, 0x01, "Request info...", I_str,0xFFFFFFFF); \ 00000038 0010E0E3 MVN R1,#+0 \ 0000003C 000086E5 STR R0,[R6, #+0] \ 00000040 0B00A0E3 MOV R0,#+11 \ 00000044 B400C6E1 STRH R0,[R6, #+4] \ 00000048 0000A0E3 MOV R0,#+0 \ 0000004C B600C6E1 STRH R0,[R6, #+6] \ 00000050 ........ LDR R0,??DataTable232 ;; `?` \ 00000054 02002DE9 PUSH {R1} \ 00000058 173080E2 ADD R3,R0,#+23 \ 0000005C 702E80E2 ADD R2,R0,#+1792 \ 00000060 0500A0E1 MOV R0,R5 \ 00000064 0110A0E3 MOV R1,#+1 \ 00000068 ........ BL AddStringToLog 5913 AddMsgToChat(ed_struct->ed_chatgui); \ 0000006C 040094E5 LDR R0,[R4, #+4] \ 00000070 ........ BL AddMsgToChat 5914 RecountMenu(t,1); \ 00000074 0110A0E3 MOV R1,#+1 \ 00000078 0500A0E1 MOV R0,R5 \ 0000007C ........ BL RecountMenu 5915 SUBPROC((void *)SendAnswer,0,p); \ 00000080 ........ LDR R0,??DataTable240 ;; SendAnswer \ 00000084 0620A0E1 MOV R2,R6 \ 00000088 0010A0E3 MOV R1,#+0 \ 0000008C 710100EF SWI +369 \ 00000090 04D08DE2 ADD SP,SP,#+4 5916 } 5917 GeneralFuncF1(1); \ ??GetShortInfo_0: \ 00000094 0100A0E3 MOV R0,#+1 \ 00000098 3B0100EF SWI +315 5918 } \ 0000009C 7080BDE8 POP {R4-R6,PC} ;; return 5919 5920 void AskNickAndAddContact(EDCHAT_STRUCT *); \ In segment CODE, align 4, keep-with-next 5921 void AddCurContact(GUI *data) 5922 { \ AddCurContact: \ 00000000 00402DE9 PUSH {LR} 5923 EDCHAT_STRUCT *ed_struct; 5924 ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 5925 5926 if ((ed_struct->ed_contact)&&(connect_state==3)) AskNickAndAddContact(ed_struct); \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0400000A BEQ ??AddCurContact_0 \ 00000014 ........ LDR R1,??DataTable238 ;; S_ICONS + 396 \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 030051E3 CMP R1,#+3 \ 00000020 0000001A BNE ??AddCurContact_0 \ 00000024 ........ _BLF CreateAddContactGrpDialog,??CreateAddContactGrpDialog??rA 5927 GeneralFuncF1(1); \ ??AddCurContact_0: \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 3B0100EF SWI +315 5928 } \ 00000030 0080BDE8 POP {PC} ;; return 5929 \ In segment CODE, align 4, keep-with-next 5930 void SendAuthReq(GUI *data) 5931 { \ SendAuthReq: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 14D04DE2 SUB SP,SP,#+20 5932 EDCHAT_STRUCT *ed_struct; 5933 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 5934 5935 TPKT *p; 5936 CLIST *t; 5937 int l; 5938 const char s[]=LG_AUTHREQ; \ 0000000C B4109FE5 LDR R1,??SendAuthReq_0 ;; `?ed_contact)&&(connect_state==3)) \ 00000020 005094E5 LDR R5,[R4, #+0] \ 00000024 000055E3 CMP R5,#+0 \ 00000028 2200000A BEQ ??SendAuthReq_1 \ 0000002C ........ LDR R0,??DataTable238 ;; S_ICONS + 396 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 030050E3 CMP R0,#+3 \ 00000038 1E00001A BNE ??SendAuthReq_1 5940 { 5941 p=malloc(sizeof(PKT)+(l=strlen(s))+1); \ 0000003C 0D00A0E1 MOV R0,SP \ 00000040 1B0000EF SWI +27 \ 00000044 0060A0E1 MOV R6,R0 \ 00000048 090086E2 ADD R0,R6,#+9 \ 0000004C 140000EF SWI +20 \ 00000050 0070A0E1 MOV R7,R0 5942 p->pkt.uin=t->uin; \ 00000054 0C0095E5 LDR R0,[R5, #+12] 5943 p->pkt.type=T_AUTHREQ; 5944 p->pkt.data_len=l; 5945 strcpy(p->data,s); \ 00000058 0D10A0E1 MOV R1,SP \ 0000005C 000087E5 STR R0,[R7, #+0] \ 00000060 0A00A0E3 MOV R0,#+10 \ 00000064 B400C7E1 STRH R0,[R7, #+4] \ 00000068 B660C7E1 STRH R6,[R7, #+6] \ 0000006C 080087E2 ADD R0,R7,#+8 \ 00000070 1A0000EF SWI +26 5946 AddStringToLog(t,0x01,p->data,I_str,0xFFFFFFFF); \ 00000074 ........ LDR R3,??DataTable239 ;; `?` + 23 \ 00000078 0000E0E3 MVN R0,#+0 \ 0000007C 01002DE9 PUSH {R0} \ 00000080 082087E2 ADD R2,R7,#+8 \ 00000084 0110A0E3 MOV R1,#+1 \ 00000088 0500A0E1 MOV R0,R5 \ 0000008C ........ BL AddStringToLog 5947 AddMsgToChat(ed_struct->ed_chatgui); \ 00000090 040094E5 LDR R0,[R4, #+4] \ 00000094 ........ BL AddMsgToChat 5948 RecountMenu(t,1); \ 00000098 0110A0E3 MOV R1,#+1 \ 0000009C 0500A0E1 MOV R0,R5 \ 000000A0 ........ BL RecountMenu 5949 SUBPROC((void *)SendAnswer,0,p); \ 000000A4 ........ LDR R0,??DataTable240 ;; SendAnswer \ 000000A8 0720A0E1 MOV R2,R7 \ 000000AC 0010A0E3 MOV R1,#+0 \ 000000B0 710100EF SWI +369 \ 000000B4 04D08DE2 ADD SP,SP,#+4 5950 } 5951 GeneralFuncF1(1); \ ??SendAuthReq_1: \ 000000B8 0100A0E3 MOV R0,#+1 \ 000000BC 3B0100EF SWI +315 5952 } \ 000000C0 14D08DE2 ADD SP,SP,#+20 \ 000000C4 F080BDE8 POP {R4-R7,PC} ;; return \ ??SendAuthReq_0: \ 000000C8 ........ DC32 `?ed_contact)&&(connect_state==3)) \ 00000020 005094E5 LDR R5,[R4, #+0] \ 00000024 000055E3 CMP R5,#+0 \ 00000028 2200000A BEQ ??SendAuthGrant_1 \ 0000002C ........ LDR R0,??DataTable238 ;; S_ICONS + 396 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 030050E3 CMP R0,#+3 \ 00000038 1E00001A BNE ??SendAuthGrant_1 5964 { 5965 p=malloc(sizeof(PKT)+(l=strlen(s))+1); \ 0000003C 0D00A0E1 MOV R0,SP \ 00000040 1B0000EF SWI +27 \ 00000044 0060A0E1 MOV R6,R0 \ 00000048 090086E2 ADD R0,R6,#+9 \ 0000004C 140000EF SWI +20 \ 00000050 0070A0E1 MOV R7,R0 5966 p->pkt.uin=t->uin; \ 00000054 0C0095E5 LDR R0,[R5, #+12] 5967 p->pkt.type=T_AUTHGRANT; 5968 p->pkt.data_len=l; 5969 strcpy(p->data,s); \ 00000058 0D10A0E1 MOV R1,SP \ 0000005C 000087E5 STR R0,[R7, #+0] \ 00000060 0E00A0E3 MOV R0,#+14 \ 00000064 B400C7E1 STRH R0,[R7, #+4] \ 00000068 B660C7E1 STRH R6,[R7, #+6] \ 0000006C 080087E2 ADD R0,R7,#+8 \ 00000070 1A0000EF SWI +26 5970 AddStringToLog(t,0x01,p->data,I_str,0xFFFFFFFF); \ 00000074 ........ LDR R3,??DataTable239 ;; `?` + 23 \ 00000078 0000E0E3 MVN R0,#+0 \ 0000007C 01002DE9 PUSH {R0} \ 00000080 082087E2 ADD R2,R7,#+8 \ 00000084 0110A0E3 MOV R1,#+1 \ 00000088 0500A0E1 MOV R0,R5 \ 0000008C ........ BL AddStringToLog 5971 AddMsgToChat(ed_struct->ed_chatgui); \ 00000090 040094E5 LDR R0,[R4, #+4] \ 00000094 ........ BL AddMsgToChat 5972 RecountMenu(t,1); \ 00000098 0110A0E3 MOV R1,#+1 \ 0000009C 0500A0E1 MOV R0,R5 \ 000000A0 ........ BL RecountMenu 5973 SUBPROC((void *)SendAnswer,0,p); \ 000000A4 ........ LDR R0,??DataTable240 ;; SendAnswer \ 000000A8 0720A0E1 MOV R2,R7 \ 000000AC 0010A0E3 MOV R1,#+0 \ 000000B0 710100EF SWI +369 \ 000000B4 04D08DE2 ADD SP,SP,#+4 5974 } 5975 GeneralFuncF1(1); \ ??SendAuthGrant_1: \ 000000B8 0100A0E3 MOV R0,#+1 \ 000000BC 3B0100EF SWI +315 5976 } \ 000000C0 FF80BDE8 POP {R0-R7,PC} ;; return \ ??SendAuthGrant_0: \ 000000C4 ........ DC32 `?ed_contact)) \ 00000018 000094E5 LDR R0,[R4, #+0] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 1800000A BEQ ??OpenLogfile_0 5991 { 5992 #ifdef EVILFOX 5993 wsprintf(ws,"%s\\%u\\%s(%d).txt",HIST_PATH,UIN,t->name, t->uin); 5994 #else 5995 #ifdef UIN_WRITE 5996 if (HISTORY_TYPE) \ 00000024 70409FE5 LDR R4,??OpenLogfile_1 ;; HISTORY_TYPE \ 00000028 0C3090E5 LDR R3,[R0, #+12] \ 0000002C 004094E5 LDR R4,[R4, #+0] \ 00000030 68109FE5 LDR R1,??OpenLogfile_1+0x4 ;; `?` \ 00000034 68209FE5 LDR R2,??OpenLogfile_1+0x8 ;; HIST_PATH \ 00000038 08002DE9 PUSH {R3} \ 0000003C 000054E3 CMP R4,#+0 \ 00000040 0700000A BEQ ??OpenLogfile_2 5997 wsprintf(ws,"%s\\%u\\%s(%d).txt",HIST_PATH,UIN,t->name, t->uin); \ 00000044 140080E2 ADD R0,R0,#+20 \ 00000048 01002DE9 PUSH {R0} \ 0000004C ........ LDR R0,??DataTable241 ;; UIN \ 00000050 003090E5 LDR R3,[R0, #+0] \ 00000054 0500A0E1 MOV R0,R5 \ 00000058 240100EF SWI +292 \ 0000005C 08D08DE2 ADD SP,SP,#+8 \ 00000060 040000EA B ??OpenLogfile_3 5998 else 5999 wsprintf(ws,"%s\\%s(%d).txt",HIST_PATH,t->name, t->uin); \ ??OpenLogfile_2: \ 00000064 143080E2 ADD R3,R0,#+20 \ 00000068 141081E2 ADD R1,R1,#+20 \ 0000006C 0500A0E1 MOV R0,R5 \ 00000070 240100EF SWI +292 \ 00000074 04D08DE2 ADD SP,SP,#+4 6000 #else 6001 if (HISTORY_TYPE) 6002 wsprintf(ws,"%s\\%u\\%u.txt",HIST_PATH,UIN, t->uin); 6003 else 6004 wsprintf(ws,"%s\\%u.txt",HIST_PATH, t->uin); 6005 #endif 6006 #endif 6007 ExecuteFile(ws,NULL,NULL); \ ??OpenLogfile_3: \ 00000078 0020A0E3 MOV R2,#+0 \ 0000007C 0010A0E3 MOV R1,#+0 \ 00000080 0500A0E1 MOV R0,R5 \ 00000084 940000EF SWI +148 6008 } 6009 FreeWS(ws); \ ??OpenLogfile_0: \ 00000088 0500A0E1 MOV R0,R5 \ 0000008C 290100EF SWI +297 6010 GeneralFuncF1(1); \ 00000090 0100A0E3 MOV R0,#+1 \ 00000094 3B0100EF SWI +315 6011 } \ 00000098 3080BDE8 POP {R4,R5,PC} ;; return \ ??OpenLogfile_1: \ 0000009C ........ DC32 HISTORY_TYPE \ 000000A0 ........ DC32 `?` \ 000000A4 ........ DC32 HIST_PATH 6012 \ In segment CODE, align 4, keep-with-next 6013 void ClearLog(GUI *data/*,void *dummy*/) 6014 { \ ClearLog: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 6015 EDITCONTROL ec; 6016 EDCHAT_STRUCT *ed_struct; 6017 WSHDR *ws; 6018 CLIST *t; 6019 6020 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 6021 6022 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ 00000010 081094E5 LDR R1,[R4, #+8] \ 00000014 040094E5 LDR R0,[R4, #+4] \ 00000018 0D20A0E1 MOV R2,SP \ 0000001C 690100EF SWI +361 6023 if(wstrlen(ec.pWS)>0) \ 00000020 28009DE5 LDR R0,[SP, #+40] \ 00000024 230100EF SWI +291 \ 00000028 010050E3 CMP R0,#+1 \ 0000002C 0D0000BA BLT ??ClearLog_0 6024 { 6025 ws=AllocWS(1); \ 00000030 0100A0E3 MOV R0,#+1 \ 00000034 250100EF SWI +293 \ 00000038 0050A0E1 MOV R5,R0 6026 CutWSTR(ws,0); \ 0000003C 0010A0E3 MOV R1,#+0 \ 00000040 260100EF SWI +294 6027 6028 EDIT_SetFocus(ed_struct->ed_chatgui,ed_struct->ed_answer); \ 00000044 081094E5 LDR R1,[R4, #+8] \ 00000048 040094E5 LDR R0,[R4, #+4] \ 0000004C 9B0100EF SWI +411 6029 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 00000050 040094E5 LDR R0,[R4, #+4] \ 00000054 0510A0E1 MOV R1,R5 \ 00000058 810100EF SWI +385 6030 6031 FreeWS(ws); \ 0000005C 0500A0E1 MOV R0,R5 \ 00000060 290100EF SWI +297 6032 GeneralFuncF1(1); \ 00000064 1D0000EA B ??ClearLog_1 6033 } 6034 else 6035 { 6036 6037 if ((t=ed_struct->ed_contact)) \ ??ClearLog_0: \ 00000068 005094E5 LDR R5,[R4, #+0] \ 0000006C 000055E3 CMP R5,#+0 \ 00000070 1C00000A BEQ ??ClearLog_2 6038 { 6039 if (t->log) \ 00000074 740095E5 LDR R0,[R5, #+116] \ 00000078 0060A0E3 MOV R6,#+0 \ 0000007C 000050E3 CMP R0,#+0 \ 00000080 1200000A BEQ ??ClearLog_3 6040 { 6041 FreeLOGQ(&t->log); \ 00000084 740085E2 ADD R0,R5,#+116 \ 00000088 ........ BL FreeLOGQ 6042 t->msg_count=0; \ 0000008C 846085E5 STR R6,[R5, #+132] 6043 if (ed_struct->ed_answer>=2&&ed_struct->ed_chatgui) \ 00000090 080094E5 LDR R0,[R4, #+8] \ 00000094 020050E3 CMP R0,#+2 \ 00000098 0C0000BA BLT ??ClearLog_3 \ 0000009C 040094E5 LDR R0,[R4, #+4] \ 000000A0 000050E3 CMP R0,#+0 \ 000000A4 0900000A BEQ ??ClearLog_3 \ 000000A8 050000EA B ??ClearLog_4 6044 { 6045 while(ed_struct->ed_answer!=2) 6046 { 6047 EDIT_RemoveEditControl(ed_struct->ed_chatgui,1); \ ??ClearLog_5: \ 000000AC 040094E5 LDR R0,[R4, #+4] \ 000000B0 0110A0E3 MOV R1,#+1 \ 000000B4 D10100EF SWI +465 6048 ed_struct->ed_answer--; \ 000000B8 080094E5 LDR R0,[R4, #+8] \ 000000BC 010040E2 SUB R0,R0,#+1 \ 000000C0 080084E5 STR R0,[R4, #+8] 6049 } \ ??ClearLog_4: \ 000000C4 080094E5 LDR R0,[R4, #+8] \ 000000C8 020050E3 CMP R0,#+2 \ 000000CC F6FFFF1A BNE ??ClearLog_5 6050 } 6051 } 6052 t->isactive=0; //by BoBa 18.06.07 \ ??ClearLog_3: \ 000000D0 806085E5 STR R6,[R5, #+128] 6053 RecountMenu(t,1); \ 000000D4 0110A0E3 MOV R1,#+1 \ 000000D8 0500A0E1 MOV R0,R5 \ 000000DC ........ BL RecountMenu 6054 GeneralFuncF1(1); \ ??ClearLog_1: \ 000000E0 0100A0E3 MOV R0,#+1 \ 000000E4 3B0100EF SWI +315 6055 } 6056 } 6057 } \ ??ClearLog_2: \ 000000E8 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 000000EC 7080BDE8 POP {R4-R6,PC} ;; return 6058 \ In segment CODE, align 4, keep-with-next 6059 void ecmenu_ghook(void *data, int cmd) 6060 { \ ecmenu_ghook: \ 00000000 00402DE9 PUSH {LR} 6061 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 6062 { 6063 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 6064 } 6065 } \ 00000010 0080BDE8 POP {PC} ;; return 6066 \ In segment DATA_C, align 4, align-sorted 6067 static const MENUITEM_DESC ecmenu_ITEMS[EC_MNU_MAX]= \ ecmenu_ITEMS: \ 00000000 00000000.... DC32 0H, `?` \ MAINCSM: \ 00000074 DS8 72 \ 000000BC REQUIRE `?` \ gipc: \ 000000BC DS8 12 \ 000000C8 REQUIRE `?` \ game_gipc: \ 000000C8 DS8 12 \ 000000D4 REQUIRE `?` \ tmr_gipc: \ 000000D4 DS8 12 \ 000000E0 REQUIRE `?` \ main_d: \ 000000E0 DS8 4 \ 000000E4 REQUIRE `?` \ dontLogOnConnect: \ 000000E4 DS8 4 \ 000000E8 REQUIRE `?` \ align: \ 000000E8 DS8 4 \ 000000EC REQUIRE `?` \ canvasdata: \ 000000EC DS8 4 \ 000000F0 REQUIRE `?` \ paused_height: \ 000000F0 DS8 4 \ 000000F4 REQUIRE `?` \ uins: \ 000000F4 DS8 4 \ 000000F8 REQUIRE `?` \ saver_on: \ 000000F8 DS8 4 \ 000000FC REQUIRE `?` \ Is_PING_On: \ 000000FC DS8 4 \ 00000100 REQUIRE `?` \ Is_SLI_On: \ 00000100 DS8 4 \ 00000104 REQUIRE `?` \ Is_SMARTCPU_On: \ 00000104 DS8 4 \ 00000108 REQUIRE `?` \ Is_INC_On: \ 00000108 DS8 4 \ 0000010C REQUIRE `?` \ Is_ILU_On: \ 0000010C DS8 4 \ 00000110 REQUIRE `?` \ Is_Double_Vibra_On: \ 00000110 DS8 4 \ 00000114 REQUIRE `?` \ total_unread2: \ 00000114 DS8 4 \ 00000118 REQUIRE `?` \ maincsm_id: \ 00000118 DS8 4 \ 0000011C REQUIRE `?` \ maingui_id: \ 0000011C DS8 4 \ 00000120 REQUIRE `?` \ SENDMSGCOUNT: \ 00000120 DS8 4 \ 00000124 REQUIRE `?` \ IsActiveUp: \ 00000124 DS8 4 \ 00000128 REQUIRE `?` \ Is_Id3tag_Enabled: \ 00000128 DS8 4 \ 0000012C REQUIRE `?` \ ews: \ 0000012C DS8 4 \ 00000130 REQUIRE `?` \ msg_away_timer: \ 00000130 DS8 4 \ 00000134 REQUIRE `?` \ inp_away_msg2: \ 00000134 DS8 4 \ 00000138 REQUIRE `?` \ away_m: \ 00000138 DS8 4 \ 0000013C REQUIRE `?` \ status_rem: \ 0000013C DS8 4 \ 00000140 REQUIRE `?` \ change_back_status: \ 00000140 DS8 4 \ 00000144 REQUIRE `?` \ Is_UPTIME_On: \ 00000144 DS8 4 \ 00000148 REQUIRE `?` \ xstatus_old: \ 00000148 DS8 4 \ 0000014C REQUIRE `?` \ minimum_xstatus: \ 0000014C DS8 4 \ 00000150 REQUIRE `?` \ maximum: \ 00000150 DS8 4 \ 00000154 REQUIRE `?` \ tracktimer: \ 00000154 DS8 4 \ 00000158 REQUIRE `?` \ inp_away_m: \ 00000158 DS8 4 \ 0000015C REQUIRE `?` \ silenthide: \ 0000015C DS8 4 \ 00000160 REQUIRE `?` \ disautorecconect: \ 00000160 DS8 4 \ 00000164 REQUIRE `?` \ Is_Vibra_Enabled: \ 00000164 DS8 4 \ 00000168 REQUIRE `?` \ Is_Sounds_Enabled: \ 00000168 DS8 4 \ 0000016C REQUIRE `?` \ Is_Show_Offline: \ 0000016C DS8 4 \ 00000170 REQUIRE `?` \ Is_Show_Groups: \ 00000170 DS8 4 \ 00000174 REQUIRE `?` \ CurrentStatus: \ 00000174 DS8 4 \ 00000178 REQUIRE `?` \ CurrentPrivateStatus: \ 00000178 DS8 4 \ 0000017C REQUIRE `?` \ vibra_count: \ 0000017C DS8 4 \ 00000180 REQUIRE `?` \ templates_chars: \ 00000180 DS8 4 \ 00000184 REQUIRE `?` \ templates_lines: \ 00000184 DS8 4 \ 00000188 REQUIRE `?` \ RXstate: \ 00000188 DS8 4 \ 0000018C REQUIRE `?` \ connect_state: \ 0000018C DS8 4 \ 00000190 REQUIRE `?` \ sock: \ 00000190 DS8 4 \ 00000194 REQUIRE `?` \ TOTALRECEIVED: \ 00000194 DS8 4 \ 00000198 REQUIRE `?` \ TOTALSENDED: \ 00000198 DS8 4 \ 0000019C REQUIRE `?` \ ALLTOTALRECEIVED: \ 0000019C DS8 4 \ 000001A0 REQUIRE `?` \ ALLTOTALSENDED: \ 000001A0 DS8 4 \ 000001A4 REQUIRE `?` \ sendq_l: \ 000001A4 DS8 4 \ 000001A8 REQUIRE `?` \ sendq_p: \ 000001A8 DS8 4 \ 000001AC REQUIRE `?` \ is_gprs_online: \ 000001AC DS8 4 \ 000001B0 REQUIRE `?` \ total_unread: \ 000001B0 DS8 4 \ 000001B4 REQUIRE `?` \ cltop: \ 000001B4 DS8 4 \ 000001B8 REQUIRE `?` \ GROUP_CACHE: \ 000001B8 DS8 4 \ 000001BC REQUIRE `?` \ contactlist_menu_id: \ 000001BC DS8 4 \ 000001C0 REQUIRE `?` \ edchat_id: \ 000001C0 DS8 4 \ 000001C4 REQUIRE `?` \ 000001C4 DS8 4 \ 000001C8 REQUIRE `?` \ tenseconds_to_ping: \ 000001C8 DS8 4 \ 000001CC REQUIRE `?` \ kopa_online: \ 000001CC DS8 4 \ 000001D0 REQUIRE `?` \ kopa_kontaktu: \ 000001D0 DS8 4 \ 000001D4 REQUIRE `?` \ DNR_ID: \ 000001D4 DS8 4 \ 000001D8 REQUIRE `?` \ DNR_TRIES: \ 000001D8 DS8 4 \ 000001DC REQUIRE `?` \ host_counter: \ 000001DC DS8 4 \ 000001E0 REQUIRE `?` \ ping_time: \ 000001E0 DS8 4 \ 000001E4 REQUIRE `?` \ NEW_MSG: \ 000001E4 DS8 4 \ 000001E8 REQUIRE `?` \ time_to_stop_t9: \ 000001E8 DS8 4 \ 000001EC REQUIRE `?` \ comanda: \ 000001EC DS8 4 \ 000001F0 REQUIRE `?` \ INC_show: \ 000001F0 DS8 4 \ 000001F4 REQUIRE `?` \ font: \ 000001F4 DS8 4 \ 000001F8 REQUIRE `?` \ old_ed_redraw: \ 000001F8 DS8 4 \ 000001FC REQUIRE `?` \ 000001FC DS8 64 \ 0000023C REQUIRE `?` \ elf_path: \ 0000023C DS8 256 \ 0000033C REQUIRE `?` \ ContactT9Key: \ 0000033C DS8 32 \ 0000035C REQUIRE `?` \ talk_sound: \ 0000035C DS8 128 \ 000003DC REQUIRE `?` \ unread_msg_info: \ 000003DC DS8 64 \ 0000041C REQUIRE `?` \ last_msg_buffer: \ 0000041C DS8 4048 \ 000013EC REQUIRE `?` \ mytmr3: \ 000013EC DS8 16 \ 000013FC REQUIRE `?` \ PINGO: \ 000013FC DS8 256 \ 000014FC REQUIRE `?` \ away_msg: \ 000014FC DS8 264 \ 00001604 REQUIRE `?` \ away_msg_time: \ 00001604 DS8 64 \ 00001644 REQUIRE `?` \ away_msg_time_dace: \ 00001644 DS8 16 \ 00001654 REQUIRE `?` \ tim_zone: \ 00001654 DS8 16 \ 00001664 REQUIRE `?` \ away_tmr: \ 00001664 DS8 16 \ 00001674 REQUIRE `?` \ mytmr: \ 00001674 DS8 16 \ 00001684 REQUIRE `?` \ mytmr2: \ 00001684 DS8 16 \ 00001694 REQUIRE `?` \ mytmr4: \ 00001694 DS8 16 \ 000016A4 REQUIRE `?` \ tracktmr: \ 000016A4 DS8 16 \ 000016B4 REQUIRE `?` \ hah: \ 000016B4 DS8 128 \ 00001734 REQUIRE `?` \ logmsg: \ 00001734 DS8 256 \ 00001834 REQUIRE `?` \ tmr_illumination: \ 00001834 DS8 16 \ 00001844 REQUIRE `?` \ tmr_vibra: \ 00001844 DS8 16 \ 00001854 REQUIRE `?` \ reconnect_tmr: \ 00001854 DS8 16 \ 00001864 REQUIRE `?` \ tmr_active: \ 00001864 DS8 16 \ 00001874 REQUIRE `?` \ clm_hdr_text: \ 00001874 DS8 48 \ 000018A4 REQUIRE `?` \ clmenu_sk_r: \ 000018A4 DS8 16 \ 000018B4 REQUIRE `?` \ hostbuf2: \ 000018B4 DS8 128 \ 00001934 REQUIRE `?` \ hostname: \ 00001934 DS8 128 \ 000019B4 REQUIRE `?` \ I_UIN: \ 000019B4 DS8 12 \ 000019C0 REQUIRE `?` \ a_txt: \ 000019C0 DS8 48 \ 000019F0 REQUIRE `?` \ s_txt: \ 000019F0 DS8 48 \ 00001A20 REQUIRE `?` \ d_txt: \ 00001A20 DS8 48 \ 00001A50 REQUIRE `?` \ f_txt: \ 00001A50 DS8 48 \ 00001A80 REQUIRE `?` \ g_txt: \ 00001A80 DS8 48 \ 00001AB0 REQUIRE `?` \ develop: \ 00001AB0 DS8 16 \ 00001AC0 REQUIRE `?` \ requests1: \ 00001AC0 DS8 24 \ 00001AD8 REQUIRE `?` \ requests2: \ 00001AD8 DS8 20 \ 00001AEC REQUIRE `?` \ requests3: \ 00001AEC DS8 24 \ 00001B04 REQUIRE `?` \ requests4: \ 00001B04 DS8 20 \ 00001B18 REQUIRE `?` \ requests6: \ 00001B18 DS8 24 \ 00001B30 REQUIRE `?` \ mod_info: \ 00001B30 DS8 264 \ 00001C38 REQUIRE `?` \ show_nick: \ 00001C38 DS8 32 \ 00001C58 REQUIRE `?` 6081 { 6082 Quote, 6083 AddSmile, 6084 GetShortInfo, 6085 AddCurContact, 6086 SendAuthReq, 6087 SendAuthGrant, 6088 OpenLogfile, 6089 ClearLog, 6090 }; 6091 6092 char ecm_contactname[64]; \ ecm_contactname: \ 00001C58 DS8 64 \ 00001C98 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ ??sk: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ input_awaymsg_sk: \ 00000000 DS8 24 \ 00000018 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ input_awaymsg_skt: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` 6093 \ In segment DATA_C, align 4, align-sorted 6094 static const HEADER_DESC ecmenu_HDR={0,0,NULL,NULL,NULL,(int)ecm_contactname,LGP_NULL}; \ ecmenu_HDR: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 00000000.... DC32 0H, ecm_contactname, 2147483647 \ ....FFFFFF7F \ 00000014 080000000000 DC32 8, 0H, ecmenu_ghook, 0H, menusoftkeys, menu_skt, 0, 0H \ 0000........ \ 00000000.... \ ............ \ 000000000000 \ 0000 \ 00000034 ............ DC32 ecmenu_ITEMS, ecmenu_HNDLS, 8 \ ....08000000 6095 6096 static const MENU_DESC ecmenu_STRUCT= 6097 { 6098 8,NULL,ecmenu_ghook,NULL, 6099 menusoftkeys, 6100 &menu_skt, 6101 0, 6102 NULL, 6103 ecmenu_ITEMS, 6104 ecmenu_HNDLS, 6105 EC_MNU_MAX 6106 }; 6107 \ In segment CODE, align 4, keep-with-next 6108 void ec_menu(EDCHAT_STRUCT *ed_struct) 6109 { \ ec_menu: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 24D04DE2 SUB SP,SP,#+36 \ 00000008 0040A0E1 MOV R4,R0 6110 CLIST *t; 6111 int to_remove[EC_MNU_MAX+1]; 6112 int remove=0; 6113 if ((t=ed_struct->ed_contact)) \ 0000000C 001094E5 LDR R1,[R4, #+0] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 4500000A BEQ ??ec_menu_0 6114 { 6115 if (t->name) \ 00000018 ........ LDR R5,??DataTable242 ;; S_ICONS \ 0000001C 5800A0E3 MOV R0,#+88 \ 00000020 700D80E3 ORR R0,R0,#0x1C00 \ 00000024 050080E0 ADD R0,R0,R5 \ 00000028 142091E2 ADDS R2,R1,#+20 \ 0000002C 0300000A BEQ ??ec_menu_1 6116 { 6117 strncpy(ecm_contactname,t->name,63); \ 00000030 3F20A0E3 MOV R2,#+63 \ 00000034 141081E2 ADD R1,R1,#+20 \ 00000038 160100EF SWI +278 \ 0000003C 020000EA B ??ec_menu_2 6118 } 6119 else 6120 { 6121 sprintf(ecm_contactname,"%u",t->uin); \ ??ec_menu_1: \ 00000040 0C2091E5 LDR R2,[R1, #+12] \ 00000044 3B1F8FE2 ADR R1,??ec_menu_3 ;; "%u" \ 00000048 160000EF SWI +22 6122 } 6123 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ ??ec_menu_2: \ 0000004C 040094E5 LDR R0,[R4, #+4] \ 00000050 0160A0E3 MOV R6,#+1 \ 00000054 820100EF SWI +386 \ 00000058 082094E5 LDR R2,[R4, #+8] \ 0000005C 0010A0E3 MOV R1,#+0 \ 00000060 020050E1 CMP R0,R2 6124 { 6125 to_remove[++remove]=0; \ 00000064 04108D05 STREQ R1,[SP, #+4] 6126 } 6127 else 6128 { 6129 to_remove[++remove]=1; \ 00000068 0120A013 MOVNE R2,#+1 \ 0000006C 04208D15 STRNE R2,[SP, #+4] 6130 } 6131 6132 if (ed_struct->ed_answer<=2) to_remove[++remove]=7; \ 00000070 080094E5 LDR R0,[R4, #+8] \ 00000074 030050E3 CMP R0,#+3 \ 00000078 0720A0B3 MOVLT R2,#+7 \ 0000007C 08208DB5 STRLT R2,[SP, #+8] 6133 if (!ed_struct->ed_contact || connect_state!=3) \ 00000080 000094E5 LDR R0,[R4, #+0] \ 00000084 0260A0B3 MOVLT R6,#+2 \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 0200000A BEQ ??ec_menu_4 \ 00000090 8C0195E5 LDR R0,[R5, #+396] \ 00000094 030050E3 CMP R0,#+3 \ 00000098 0D00000A BEQ ??ec_menu_5 6134 { 6135 to_remove[++remove]=2; \ ??ec_menu_4: \ 0000009C 010086E2 ADD R0,R6,#+1 \ 000000A0 0D20A0E1 MOV R2,SP \ 000000A4 0230A0E3 MOV R3,#+2 \ 000000A8 003182E7 STR R3,[R2, +R0, LSL #+2] 6136 to_remove[++remove]=3; \ 000000AC 010080E2 ADD R0,R0,#+1 \ 000000B0 0330A0E3 MOV R3,#+3 \ 000000B4 003182E7 STR R3,[R2, +R0, LSL #+2] 6137 to_remove[++remove]=4; \ 000000B8 010080E2 ADD R0,R0,#+1 \ 000000BC 0430A0E3 MOV R3,#+4 \ 000000C0 003182E7 STR R3,[R2, +R0, LSL #+2] 6138 to_remove[++remove]=5; \ 000000C4 016080E2 ADD R6,R0,#+1 \ 000000C8 0D00A0E1 MOV R0,SP \ 000000CC 0520A0E3 MOV R2,#+5 \ 000000D0 062180E7 STR R2,[R0, +R6, LSL #+2] 6139 } 6140 6141 patch_header(&ecmenu_HDR); \ ??ec_menu_5: \ 000000D4 60509FE5 LDR R5,??ec_menu_3+0x4 ;; ecmenu_HDR \ 000000D8 1800A0E3 MOV R0,#+24 \ 000000DC B010C5E1 STRH R1,[R5, #+0] \ 000000E0 B200C5E1 STRH R0,[R5, #+2] \ 000000E4 888100EF SWI +33160 \ 000000E8 010040E2 SUB R0,R0,#+1 \ 000000EC B400C5E1 STRH R0,[R5, #+4] \ 000000F0 8A8100EF SWI +33162 \ 000000F4 170080E2 ADD R0,R0,#+23 \ 000000F8 B600C5E1 STRH R0,[R5, #+6] 6142 to_remove[0]=remove; \ 000000FC 00608DE5 STR R6,[SP, #+0] 6143 CreateMenu(0,0,&ecmenu_STRUCT,&ecmenu_HDR,0,EC_MNU_MAX,ed_struct,to_remove); \ 00000100 0D00A0E1 MOV R0,SP \ 00000104 01002DE9 PUSH {R0} \ 00000108 10002DE9 PUSH {R4} \ 0000010C 0530A0E1 MOV R3,R5 \ 00000110 0800A0E3 MOV R0,#+8 \ 00000114 01002DE9 PUSH {R0} \ 00000118 142085E2 ADD R2,R5,#+20 \ 0000011C 0010A0E3 MOV R1,#+0 \ 00000120 0000A0E3 MOV R0,#+0 \ 00000124 01002DE9 PUSH {R0} \ 00000128 520100EF SWI +338 \ 0000012C 10D08DE2 ADD SP,SP,#+16 6144 } 6145 } \ ??ec_menu_0: \ 00000130 24D08DE2 ADD SP,SP,#+36 ;; stack cleaning \ 00000134 7080BDE8 POP {R4-R6,PC} ;; return \ ??ec_menu_3: \ 00000138 25750000 DC8 "%u",+0 \ 0000013C ........ DC32 ecmenu_HDR 6146 6147 \ In segment CODE, align 4, keep-with-next 6148 void AskNickAndAddContact(EDCHAT_STRUCT *ed_struct) 6149 { 6150 CreateAddContactGrpDialog(ed_struct->ed_contact); \ AskNickAndAddContact: \ 00000000 000090E5 LDR R0,[R0, #+0] \ 00000004 ........ _BF CreateAddContactGrpDialog,??CreateAddContactGrpDialog??rA ;; tailcall 6151 } 6152 \ In segment CODE, align 4, keep-with-next 6153 void AddSmile(GUI *data) 6154 { \ AddSmile: \ 00000000 00402DE9 PUSH {LR} 6155 EDCHAT_STRUCT *ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 6156 CreateSmileSelectGUI(ed_struct); \ 00000008 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA 6157 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 6158 } \ 00000014 0080BDE8 POP {PC} ;; return \ In segment CODE, align 4, keep-with-next \ ??DataTable1: \ 00000000 ........ DC32 Pinger2 \ In segment CODE, align 4, keep-with-next \ ??DataTable2: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable3: \ 00000000 ........ DC32 AUTO_ENGADE \ In segment CODE, align 4, keep-with-next \ ??DataTable5: \ 00000000 ........ DC32 Auto_Status \ In segment CODE, align 4, keep-with-next \ ??DataTable11: \ 00000000 ........ DC32 Remind_Timer2 \ In segment CODE, align 4, keep-with-next \ ??DataTable14: \ 00000000 ........ DC32 GetTags \ In segment CODE, align 4, keep-with-next \ ??DataTable19: \ 00000000 ........ DC32 showAwayIdle \ In segment CODE, align 4, keep-with-next \ ??DataTable20: \ 00000000 ........ DC32 spaco1 \ In segment CODE, align 4, keep-with-next \ ??DataTable21: \ 00000000 ........ DC32 fonto \ In segment CODE, align 4, keep-with-next \ ??DataTable23: \ 00000000 ........ DC32 away_msg2 \ In segment CODE, align 4, keep-with-next \ ??DataTable27: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable32: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable33: \ 00000000 ........ DC32 def_setting \ In segment CODE, align 4, keep-with-next \ ??DataTable34: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable35: \ 00000000 ........ DC32 CurrentXStatus \ In segment CODE, align 4, keep-with-next \ ??DataTable41: \ 00000000 ........ DC32 vibraPower \ In segment CODE, align 4, keep-with-next \ ??DataTable44: \ 00000000 ........ DC32 VIBR_TYPE \ In segment CODE, align 4, keep-with-next \ ??DataTable48: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable51: \ 00000000 ........ DC32 TIME_OR_MSG \ In segment CODE, align 4, keep-with-next \ ??DataTable55: \ 00000000 ........ DC32 XStatusesImgList \ In segment CODE, align 4, keep-with-next \ ??DataTable56: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable58: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable61: \ 00000000 ........ DC32 AUTO_ENGADE \ In segment CODE, align 4, keep-with-next \ ??DataTable62: \ 00000000 ........ DC32 S_ICONS + 436 \ In segment CODE, align 4, keep-with-next \ ??DataTable63: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable64: \ 00000000 ........ DC32 total_xstatuses \ In segment CODE, align 4, keep-with-next \ ??DataTable65: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable67: \ 00000000 ........ DC32 do_reconnect \ In segment CODE, align 4, keep-with-next \ ??DataTable68: \ 00000000 ........ DC32 RECONNECT_TIME \ In segment CODE, align 4, keep-with-next \ ??DataTable70: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable74: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable75: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable77: \ 00000000 ........ DC32 ignor_list \ In segment CODE, align 4, keep-with-next \ ??DataTable78: \ 00000000 ........ DC32 extended_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable79: \ 00000000 ........ DC32 main_count \ In segment CODE, align 4, keep-with-next \ ??DataTable81: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable82: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable84: \ 00000000 ........ DC32 ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable86: \ 00000000 ........ DC32 X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable87: \ 00000000 ........ DC32 O_ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable88: \ 00000000 ........ DC32 O_X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable96: \ 00000000 ........ DC32 O_ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable97: \ 00000000 ........ DC32 ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable99: \ 00000000 ........ DC32 ACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable100: \ 00000000 ........ DC32 O_TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable101: \ 00000000 ........ DC32 O_I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable102: \ 00000000 ........ DC32 TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable103: \ 00000000 ........ DC32 I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable104: \ 00000000 ........ DC32 UNACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable105: \ 00000000 ........ DC32 O_ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable106: \ 00000000 ........ DC32 ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable110: \ 00000000 ........ DC32 CurrentXStatus \ In segment CODE, align 4, keep-with-next \ ??DataTable114: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable116: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable117: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable118: \ 00000000 ........ DC32 main_count \ In segment CODE, align 4, keep-with-next \ ??DataTable119: \ 00000000 ........ DC32 main2_count \ In segment CODE, align 4, keep-with-next \ ??DataTable120: \ 00000000 ........ DC32 ignor_list \ In segment CODE, align 4, keep-with-next \ ??DataTable121: \ 00000000 ........ DC32 away_msg2 \ In segment CODE, align 4, keep-with-next \ ??DataTable123: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable126: \ 00000000 ........ DC32 VIBR_ON_CONNECT \ In segment CODE, align 4, keep-with-next \ ??DataTable127: \ 00000000 ........ DC32 extended_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable128: \ 00000000 ........ DC32 TIME_OR_MSG \ In segment CODE, align 4, keep-with-next \ ??DataTable129: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable130: \ 00000000 ........ DC32 SHOW_ACTIVE \ In segment CODE, align 4, keep-with-next \ ??DataTable131: \ 00000000 ........ DC32 VIBR_TYPE \ In segment CODE, align 4, keep-with-next \ ??DataTable132: \ 00000000 ........ DC32 main_count \ In segment CODE, align 4, keep-with-next \ ??DataTable133: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable134: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable137: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable138: \ 00000000 ........ DC32 total_xstatuses \ In segment CODE, align 4, keep-with-next \ ??DataTable143: \ 00000000 ........ DC32 AUTO_ENGADE \ In segment CODE, align 4, keep-with-next \ ??DataTable146: \ 00000000 ........ DC32 process_active_timer \ In segment CODE, align 4, keep-with-next \ ??DataTable149: \ 00000000 ........ DC32 my_keyhook \ In segment CODE, align 4, keep-with-next \ ??DataTable150: \ 00000000 ........ DC32 end_socket \ In segment CODE, align 4, keep-with-next \ ??DataTable154: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable155: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable156: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable157: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable162: \ 00000000 ........ DC32 XStatusesImgList \ In segment CODE, align 4, keep-with-next \ ??DataTable167: \ 00000000 ........ DC32 Auto_Status \ In segment CODE, align 4, keep-with-next \ ??DataTable168: \ 00000000 ........ DC32 showAwayIdle \ In segment CODE, align 4, keep-with-next \ ??DataTable169: \ 00000000 ........ DC32 spaco1 \ In segment CODE, align 4, keep-with-next \ ??DataTable174: \ 00000000 ........ DC32 do_reconnect \ In segment CODE, align 4, keep-with-next \ ??DataTable177: \ 00000000 ........ DC32 VIBR_ON_CONNECT \ In segment CODE, align 4, keep-with-next \ ??DataTable179: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable181: \ 00000000 ........ DC32 ClearSendQ \ In segment CODE, align 4, keep-with-next \ ??DataTable182: \ 00000000 ........ DC32 RECONNECT_TIME \ In segment CODE, align 4, keep-with-next \ ??DataTable184: \ 00000000 ........ DC32 ShowStatusIcon \ In segment CODE, align 4, keep-with-next \ ??DataTable185: \ 00000000 ........ DC32 show_xstatus \ In segment CODE, align 4, keep-with-next \ ??DataTable186: \ 00000000 ........ DC32 CurrentXStatus \ In segment CODE, align 4, keep-with-next \ ??DataTable187: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable190: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable191: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable192: \ 00000000 ........ DC32 successed_config_filename \ In segment CODE, align 4, keep-with-next \ ??DataTable193: \ 00000000 ........ DC32 ElfKiller \ In segment CODE, align 4, keep-with-next \ ??DataTable194: \ 00000000 ........ DC32 fontpath \ In segment CODE, align 4, keep-with-next \ ??DataTable195: \ 00000000 ........ DC32 fonto \ In segment CODE, align 4, keep-with-next \ ??DataTable196: \ 00000000 ........ DC32 addIconBar \ In segment CODE, align 4, keep-with-next \ ??DataTable197: \ 00000000 ........ DC32 Pinger2 \ In segment CODE, align 4, keep-with-next \ ??DataTable198: \ 00000000 ........ DC32 my_keyhook \ In segment CODE, align 4, keep-with-next \ ??DataTable200: \ 00000000 ........ DC32 S_ICONS + 436 \ In segment CODE, align 4, keep-with-next \ ??DataTable203: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable204: \ 00000000 ........ DC32 end_socket \ In segment CODE, align 4, keep-with-next \ ??DataTable205: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable206: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable208: \ 00000000 ........ DC32 SHOW_ACTIVE \ In segment CODE, align 4, keep-with-next \ ??DataTable211: \ 00000000 ........ DC32 main2_count \ In segment CODE, align 4, keep-with-next \ ??DataTable212: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable214: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable215: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable216: \ 00000000 ........ DC32 ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable217: \ 00000000 ........ DC32 ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable218: \ 00000000 ........ DC32 I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable219: \ 00000000 ........ DC32 X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable220: \ 00000000 ........ DC32 O_ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable221: \ 00000000 ........ DC32 O_X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable222: \ 00000000 ........ DC32 ACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable223: \ 00000000 ........ DC32 O_I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable224: \ 00000000 ........ DC32 O_TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable225: \ 00000000 ........ DC32 O_ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable226: \ 00000000 ........ DC32 TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable227: \ 00000000 ........ DC32 UNACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable228: \ 00000000 ........ DC32 O_ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable230: \ 00000000 ........ DC32 ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable232: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable238: \ 00000000 ........ DC32 S_ICONS + 396 \ In segment CODE, align 4, keep-with-next \ ??DataTable239: \ 00000000 ........ DC32 `?` + 23 \ In segment CODE, align 4, keep-with-next \ ??DataTable240: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable241: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable242: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable243: \ 00000000 ........ DC32 GetTags \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000010 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000020 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000030 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000040 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000050 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000060 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 000000000000 \ 0000 \ `?`: \ 00000074 ............ DC32 maincsm_onmessage, maincsm_oncreate, 0, 0, 0, 0, maincsm_onclose \ ....00000000 \ 000000000000 \ 000000000000 \ ........ \ 00000090 2C0000000100 DC32 44, 1, minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ 0000........ \ ........CCCC \ AA5555AA3333 \ 00000000 \ 000000AC 8B00 DC16 139 \ 000000AE 0000 DC8 0, 0 \ 000000B0 49636F6E4261 DC8 "IconBar" \ 7200 \ 000000B8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 000000C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 000000D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 000000E0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000E4 00000000 DC32 0 \ `?`: \ 000000E8 00000000 DC32 0 \ `?`: \ 000000EC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000F0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000F4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000F8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000FC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000100 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000104 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000108 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000010C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000110 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000114 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000118 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000011C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000120 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000124 00000000 DC32 0 \ `?`: \ 00000128 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000012C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000130 00000000 DC32 0 \ `?`: \ 00000134 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000138 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000013C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000140 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000144 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000148 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000014C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000150 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000154 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000158 00000000 DC32 0 \ `?`: \ 0000015C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000160 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000164 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000168 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000016C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000170 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000174 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000178 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000017C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000180 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000184 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000188 F6FFFFFF DC32 -10 \ `?`: \ 0000018C 00000000 DC32 0 \ `?`: \ 00000190 FFFFFFFF DC32 -1 \ `?`: \ 00000194 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000198 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000019C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001A0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001A4 00000000 DC32 0 \ `?`: \ 000001A8 00000000 DC32 0H \ `?`: \ 000001AC 01000000 DC32 1 \ `?`: \ 000001B0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001B4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001B8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001BC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001C0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001C4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001C8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001CC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001D0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001D4 00000000 DC32 0 \ `?`: \ 000001D8 03000000 DC32 3 \ `?`: \ 000001DC 00000000 DC32 0 \ `?`: \ 000001E0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001E4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001E8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001EC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001F0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001F4 09000000 DC32 9 \ `?`: \ 000001F8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000020C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000021C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000022C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000023C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000024C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000025C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000026C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000027C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000028C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000029C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000030C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000031C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000032C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000033C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000034C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000035C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000036C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000037C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000038C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000039C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000003DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000040C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000041C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000042C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000043C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000044C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000045C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000046C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000047C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000048C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000049C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000050C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000051C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000052C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000053C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000054C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000055C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000056C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000057C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000058C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000059C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000060C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000061C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000062C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000063C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000064C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000065C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000066C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000067C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000068C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000069C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000070C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000071C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000072C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000073C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000074C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000075C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000076C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000077C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000078C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000079C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000080C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000081C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000082C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000083C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000084C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000085C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000086C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000087C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000088C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000089C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000090C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000091C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000092C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000093C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000094C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000095C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000096C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000097C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000098C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000099C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000ABC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000ACC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000ADC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BBC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BCC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BDC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CBC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CCC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CDC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DBC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DCC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DDC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EBC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000ECC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EDC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FBC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FCC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FDC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000100C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000101C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000102C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000103C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000104C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000105C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000106C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000107C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000108C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000109C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000110C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000111C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000112C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000113C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000114C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000115C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000116C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000117C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000118C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000119C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000120C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000121C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000122C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000123C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000124C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000125C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000126C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000127C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000128C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000129C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000130C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000131C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000132C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000133C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000134C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000135C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000136C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000137C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000138C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000139C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000013EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000013FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000140C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000141C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000142C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000143C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000144C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000145C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000146C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000147C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000148C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000149C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000014FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000150C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000151C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000152C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000153C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000154C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000155C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000156C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000157C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000158C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000159C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 00001604 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001614 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001624 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001634 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001644 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001654 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001664 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001674 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001684 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001694 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000016A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000016B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001704 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001714 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001724 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001734 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001744 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001754 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001764 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001774 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001784 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001794 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001804 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001814 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001824 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001834 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001844 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001854 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001864 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001874 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001884 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001894 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000018A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000018B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001904 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001914 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001924 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001934 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001944 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001954 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001964 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001974 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001984 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001994 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000019B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 000019C0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019D0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019E0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000019F0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A00 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A10 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001A20 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A30 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A40 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001A50 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A60 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A70 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001A80 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A90 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AA0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001AB0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001AC0 53656E64696E DC8 "Sending online time..." \ 67206F6E6C69 \ 6E652074696D \ 652E2E2E00 \ 00001AD7 00 DC8 0 \ `?`: \ 00001AD8 53656E64696E DC8 "Sending msg info..." \ 67206D736720 \ 696E666F2E2E \ 2E00 \ `?`: \ 00001AEC 53656E64696E DC8 "Sending battery info..." \ 672062617474 \ 65727920696E \ 666F2E2E2E00 \ `?`: \ 00001B04 53656E64696E DC8 "Sending mod info..." \ 67206D6F6420 \ 696E666F2E2E \ 2E00 \ `?`: \ 00001B18 53656E64696E DC8 "Sending offline info..." \ 67206F66666C \ 696E6520696E \ 666F2E2E2E00 \ `?`: \ 00001B30 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B40 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B50 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B60 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B70 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B80 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B90 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BA0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BB0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BC0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BD0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BE0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BF0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C00 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C10 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C20 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C30 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 00001C38 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C48 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001C58 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C68 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C78 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C88 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 FF0F0000 DC16 4095, 0 \ 00000004 ........ DC32 `?`: \ 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_ID, align 4, align-sorted \ `?`: \ 00000000 ........0000 DC32 input_awaymsg_sk, 0 \ 0000 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CEEFF6E8E800 DC8 "\316\357\366\350\350" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 2532643A2532 DC8 "%2d:%2d" \ 6400 \ 00000008 28EEF2F1F3F2 DC8 "(\356\362\361\363\362\361\362\342\363\376 \357\360\350\354\345\360\355\356 \361 %02d:%02d [%s] )" \ F1F2E2F3FE20 \ EFF0E8ECE5F0 \ EDEE20F12025 \ 3032643A2530 \ 3264205B2573 \ 5D202900 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 474D54202D31 DC8 "GMT -12:00" \ 323A303000 \ 0000000B 00 DC8 0 \ 0000000C 474D54202D31 DC8 "GMT -11:00" \ 313A303000 \ 00000017 00 DC8 0 \ 00000018 474D54202D31 DC8 "GMT -10:00" \ 303A303000 \ 00000023 00 DC8 0 \ 00000024 474D54202D30 DC8 "GMT -09:00" \ 393A303000 \ 0000002F 00 DC8 0 \ 00000030 474D54202D30 DC8 "GMT -08:00" \ 383A303000 \ 0000003B 00 DC8 0 \ 0000003C 474D54202D30 DC8 "GMT -07:00" \ 373A303000 \ 00000047 00 DC8 0 \ 00000048 474D54202D30 DC8 "GMT -06:00" \ 363A303000 \ 00000053 00 DC8 0 \ 00000054 474D54202D30 DC8 "GMT -05:00" \ 353A303000 \ 0000005F 00 DC8 0 \ 00000060 474D54202D30 DC8 "GMT -04:00" \ 343A303000 \ 0000006B 00 DC8 0 \ 0000006C 474D54202D30 DC8 "GMT -03:30" \ 333A333000 \ 00000077 00 DC8 0 \ 00000078 474D54202D30 DC8 "GMT -03:00" \ 333A303000 \ 00000083 00 DC8 0 \ 00000084 474D54202D30 DC8 "GMT -02:00" \ 323A303000 \ 0000008F 00 DC8 0 \ 00000090 474D54202D30 DC8 "GMT -01:00" \ 313A303000 \ 0000009B 00 DC8 0 \ 0000009C 474D54203030 DC8 "GMT 00:00" \ 3A303000 \ 000000A6 0000 DC8 0, 0 \ 000000A8 474D54202B30 DC8 "GMT +01:00" \ 313A303000 \ 000000B3 00 DC8 0 \ 000000B4 474D54202B30 DC8 "GMT +02:00" \ 323A303000 \ 000000BF 00 DC8 0 \ 000000C0 474D54202B30 DC8 "GMT +03:00" \ 333A303000 \ 000000CB 00 DC8 0 \ 000000CC 474D54202B30 DC8 "GMT +03:30" \ 333A333000 \ 000000D7 00 DC8 0 \ 000000D8 474D54202B30 DC8 "GMT +04:00" \ 343A303000 \ 000000E3 00 DC8 0 \ 000000E4 474D54202B30 DC8 "GMT +04:30" \ 343A333000 \ 000000EF 00 DC8 0 \ 000000F0 474D54202B30 DC8 "GMT +05:00" \ 353A303000 \ 000000FB 00 DC8 0 \ 000000FC 474D54202B30 DC8 "GMT +05:30" \ 353A333000 \ 00000107 00 DC8 0 \ 00000108 474D54202B30 DC8 "GMT +06:00" \ 363A303000 \ 00000113 00 DC8 0 \ 00000114 474D54202B30 DC8 "GMT +06:30" \ 363A333000 \ 0000011F 00 DC8 0 \ 00000120 474D54202B30 DC8 "GMT +07:00" \ 373A303000 \ 0000012B 00 DC8 0 \ 0000012C 474D54202B30 DC8 "GMT +08:00" \ 383A303000 \ 00000137 00 DC8 0 \ 00000138 474D54202B30 DC8 "GMT +09:00" \ 393A303000 \ 00000143 00 DC8 0 \ 00000144 474D54202B30 DC8 "GMT +09:30" \ 393A333000 \ 0000014F 00 DC8 0 \ 00000150 474D54202B31 DC8 "GMT +10:00" \ 303A303000 \ 0000015B 00 DC8 0 \ 0000015C 474D54202B31 DC8 "GMT +11:00" \ 313A303000 \ 00000167 00 DC8 0 \ 00000168 474D54202B31 DC8 "GMT +12:00" \ 323A303000 \ 00000173 00 DC8 0 \ 00000174 474D54202B31 DC8 "GMT +13:00" \ 333A303000 \ 0000017F 00 DC8 0 \ 00000180 474D54202B30 DC8 "GMT +05:45" \ 353A343500 \ 0000018B 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4F6E6C696E65 DC8 "Online: %02d:%02d:%02d" \ 3A2025303264 \ 3A253032643A \ 2530326400 \ 00000017 00 DC8 0 \ 00000018 4F66666C696E DC8 "Offline" \ 6500 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 417761792066 DC8 "Away from [%s]" \ 726F6D205B25 \ 735D00 \ 0000000F 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5C25642E7478 DC8 "\\%d.txt" \ 7400 \ 00000008 5C302E747874 DC8 "\\0.txt" \ 00 \ 0000000F 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 5B415D00 DC8 "[A]" \ In segment DATA_C, align 4, align-sorted \ 00000000 5B495D00 DC8 "[I]" \ In segment DATA_C, align 4, align-sorted \ 00000000 5B565D00 DC8 "[V]" \ In segment DATA_C, align 4, align-sorted \ 00000000 5B535D00 DC8 "[S]" \ In segment DATA_C, align 4, align-sorted \ 00000000 5B525D00 DC8 "[R]" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 57616974696E DC8 "Waiting for GPRS up..." \ 6720666F7220 \ 475052532075 \ 702E2E2E00 \ 00000017 00 DC8 0 \ 00000018 436F6E6E6563 DC8 "Connect to %s:%d" \ 7420746F2025 \ 733A256400 \ 00000029 000000 DC8 0, 0, 0 \ 0000002C 0A436F6E6E65 DC8 "\012Connect by IP!" \ 637420627920 \ 49502100 \ 0000003C 53656E642044 DC8 "Send DNR..." \ 4E522E2E2E00 \ 00000048 444E52204552 DC8 "DNR ERROR %d!" \ 524F52202564 \ 2100 \ 00000056 0000 DC8 0, 0 \ 00000058 444E52204F6B DC8 "DNR Ok, connecting..." \ 2C20636F6E6E \ 656374696E67 \ 2E2E2E00 \ 0000006E 0000 DC8 0, 0 \ 00000070 CDE5E2EEE7EC DC8 "\315\345\342\356\347\354\356\346\355\356 \357\356\344\352\353\376\367\350\362\374\361\377!" \ EEE6EDEE20EF \ EEE4EAEBFEF7 \ E8F2FCF1FF21 \ 00 \ 00000089 000000 DC8 0, 0, 0 \ 0000008C CDE5E2EEE7EC DC8 "\315\345\342\356\347\354\356\346\355\356 \361\356\347\344\340\362\374 \361\356\352\345\362, \357\345\360\345\347\340\357\363\361\352 GPRS!" \ EEE6EDEE20F1 \ EEE7E4E0F2FC \ 20F1EEEAE5F2 \ 2C20EFE5F0E5 \ E7E0EFF3F1EA \ 204750525321 \ 00 \ 000000B7 00 DC8 0 \ 000000B8 D1E5F0E2E5F0 DC8 "\321\345\360\342\345\360 \355\345 \355\340\351\344\345\355!" \ 20EDE520EDE0 \ E9E4E5ED2100 \ 000000CA 0000 DC8 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 0A00 DC8 "\012" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 73656E642072 DC8 "send res %d" \ 657320256400 \ 0000000C 53656E642064 DC8 "Send delayed..." \ 656C61796564 \ 2E2E2E00 \ 0000001C 53656E642065 DC8 "Send error!" \ 72726F722100 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5369655F2530 DC8 "Sie_%04d" \ 346400 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 257300 DC8 "%s" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 25733A202573 DC8 "%s: %s" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 253032643A25 DC8 "%02d:%02d %02d-%02d %s:\015\012" \ 303264202530 \ 32642D253032 \ 642025733A0D \ 0A00 \ 0000001A 0000 DC8 0, 0 \ 0000001C 253032643A25 DC8 "%02d:%02d %02d-%02d %s:" \ 303264202530 \ 32642D253032 \ 642025733A00 \ In segment DATA_C, align 1, align-sorted \ 00000000 3A0A00 DC8 ":\012" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 686561642E70 DC8 "head.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E4154494351 DC8 "NATICQ: %d" \ 3A20256400 \ 0000000B 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 616263646566 DC8 61H, 62H, 63H, 64H, 65H, 66H, 67H, 68H \ 6768 \ 00000008 696A6B6C6D6E DC8 69H, 6AH, 6BH, 6CH, 6DH, 6EH, 6FH, 70H \ 6F70 \ 00000010 717273747576 DC8 71H, 72H, 73H, 74H, 75H, 76H, 77H, 78H \ 7778 \ 00000018 797A41424344 DC8 79H, 7AH, 41H, 42H, 43H, 44H, 45H, 46H \ 4546 \ 00000020 4748494A4B4C DC8 47H, 48H, 49H, 4AH, 4BH, 4CH, 4DH, 4EH \ 4D4E \ 00000028 4F5051525354 DC8 4FH, 50H, 51H, 52H, 53H, 54H, 55H, 56H \ 5556 \ 00000030 5758595A3031 DC8 57H, 58H, 59H, 5AH, 30H, 31H, 32H, 33H \ 3233 \ 00000038 343536373839 DC8 34H, 35H, 36H, 37H, 38H, 39H, 24H, 2DH \ 242D \ 00000040 5F2E2B212A27 DC8 5FH, 2EH, 2BH, 21H, 2AH, 27H, 28H, 29H \ 2829 \ 00000048 2C253B3A4026 DC8 2CH, 25H, 3BH, 3AH, 40H, 26H, 3DH, 2FH \ 3D2F \ 00000050 3FE0E1E2E3E4 DC8 3FH, 0E0H, 0E1H, 0E2H, 0E3H, 0E4H, 0E5H, 0B8H \ E5B8 \ 00000058 E6E7E8E9EAEB DC8 0E6H, 0E7H, 0E8H, 0E9H, 0EAH, 0EBH, 0ECH, 0EDH \ ECED \ 00000060 EEEFF0F1F2F3 DC8 0EEH, 0EFH, 0F0H, 0F1H, 0F2H, 0F3H, 0F4H, 0F5H \ F4F5 \ 00000068 F6F7F8F9FAFB DC8 0F6H, 0F7H, 0F8H, 0F9H, 0FAH, 0FBH, 0FCH, 0FDH \ FCFD \ 00000070 FEFFC0C1C2C3 DC8 0FEH, 0FFH, 0C0H, 0C1H, 0C2H, 0C3H, 0C4H, 0C5H \ C4C5 \ 00000078 A8C6C7C8C9CA DC8 0A8H, 0C6H, 0C7H, 0C8H, 0C9H, 0CAH, 0CBH, 0CCH \ CBCC \ 00000080 CDCECFD0D1D2 DC8 0CDH, 0CEH, 0CFH, 0D0H, 0D1H, 0D2H, 0D3H, 0D4H \ D3D4 \ 00000088 D5D6D7D8D9DA DC8 0D5H, 0D6H, 0D7H, 0D8H, 0D9H, 0DAH, 0DBH, 0DCH \ DBDC \ 00000090 DDDEDF00 DC8 0DDH, 0DEH, 0DFH, 0 \ 00000094 687474703A2F DC8 "http://" \ 2F00 \ 0000009C 7777772E00 DC8 "www." \ 000000A1 000000 DC8 0, 0, 0 \ 000000A4 2E6E657400 DC8 ".net" \ 000000A9 000000 DC8 0, 0, 0 \ 000000AC 2E636F6D00 DC8 ".com" \ 000000B1 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 2E727500 DC8 ".ru" \ 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 25735C25755C DC8 "%s\\%u\\%s(%d).txt" \ 257328256429 \ 2E74787400 \ 00000011 000000 DC8 0, 0, 0 \ 00000014 25735C257328 DC8 "%s\\%s(%d).txt" \ 2564292E7478 \ 7400 \ 00000022 0000 DC8 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 257500 DC8 "%u" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6F66666C696E DC8 "offline.png" \ 652E706E6700 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 696E76697369 DC8 "invisible.png" \ 626C652E706E \ 6700 \ 0000000E 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 617761792E70 DC8 "away.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6E612E706E67 DC8 "na.png" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6F6363757069 DC8 "occupied.png" \ 65642E706E67 \ 00 \ 0000000D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 646E642E706E DC8 "dnd.png" \ 6700 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 646570726573 DC8 "depression.png" \ 73696F6E2E70 \ 6E6700 \ 0000000F 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6576696C2E70 DC8 "evil.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 686F6D652E70 DC8 "home.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6C756E63682E DC8 "lunch.png" \ 706E6700 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 776F726B2E70 DC8 "work.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6F6E6C696E65 DC8 "online.png" \ 2E706E6700 \ 0000000B 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6666632E706E DC8 "ffc.png" \ 6700 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6D6573736167 DC8 "message.png" \ 652E706E6700 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 756E6B6E6F77 DC8 "unknown.png" \ 6E2E706E6700 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 67726F75706F DC8 "groupon.png" \ 6E2E706E6700 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 67726F75706F DC8 "groupoff.png" \ 66662E706E67 \ 00 \ 0000000D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6E756C6C2E70 DC8 "null.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 616464636F6E DC8 "addcont.png" \ 742E706E6700 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6C6F676F2E70 DC8 "logo.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 70696E672E70 DC8 "ping.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 73657474696E DC8 "settings.png" \ 67732E706E67 \ 00 \ 0000000D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 766973312E70 DC8 "vis1.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 766973322E70 DC8 "vis2.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 766973332E70 DC8 "vis3.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 766973342E70 DC8 "vis4.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 766973352E70 DC8 "vis5.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 496E70757420 DC8 "Input away msg" \ 61776179206D \ 736700 \ 0000000F 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CBE5E200 DC8 "\313\345\342" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CFF0E0E200 DC8 "\317\360\340\342" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C2FBE1EEF000 DC8 "\302\373\341\356\360" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C7E0EAF0FBF2 DC8 "\307\340\352\360\373\362\374" \ FC00 Maximum stack usage in bytes: Function CSTACK -------- ------ AddContactT9Key 12 AddCurContact 4 AddLOGQ 0 AddMsgToChat 108 AddSmile 4 AddStringToLog 188 AddToMain 44 AskNickAndAddContact 4 BackSpaceContactT9 8 ChangeSound 4 ChangeVibra 4 CheckComand 72 CheckDoubleRun 8 ClearContactT9Key 4 ClearLog 60 ClearSendQ 8 CreateEditChat 116 Draw11 12 Draw22 20 DrawAck 80 DrawAutoMSG 20 ElfKiller 4 ExtractAnswer 36 FindContactLOGQByAck 12 FindNextActiveContact 0 FindPrevActiveContact 0 FreeLOGQ 8 FreeTemplates 8 GetHost 0 GetHostsCount 0 GetIconIndex 0 GetLastXTextLOGQ 0 GetOnTotalContact 8 GetPort 16 GetShortInfo 20 GetTempName 20 Get_Online_total 0 IlluminationOff 8 IlluminationOn 24 InputAwayMsg 76 IsIdle 4 IsUrl 44 LastLOGQ 0 LoadTemplates 332 NewLOGQ 12 OpenLogfile 20 ParseAnswer 36 ParseXStatusText 20 Pinger2 16 Play 236 ProcessPacket 372 Quote 152 ReadDefSettings 156 RecountMenu 20 Remind_Timer2 8 Reminder_timer 4 RemoveLOGQ 4 ReqAddMsgToChat 16 RequestXText 8 SLI_Off 4 SLI_On 8 SLI_Timer 4 SLI_check 4 SMART_REDRAW 8 SaveAnswer 12 SendAnswer 28 SendAuthGrant 40 SendAuthReq 44 SendMSGACK 8 SetIconBarHandler 0 UpdateCLheader 40 UpdateCSMname 4 WriteDefSettings 152 addIconBar 16 ask_my_info 0 atoi 4 away_timer 24 begin_to_develop 4 contactlist_menu_ghook 8 contactlist_menu_iconhndl 668 contactlist_menu_onkey 56 create_connect 312 create_contactlist_menu 24 do_ping 4 do_reconnect 4 ec_menu 68 ecmenu_ghook 4 ed_options_handler 64 edchat_ghook 72 edchat_locret 0 edchat_onkey 344 end_socket 8 free_ICONS 16 get_answer 1096 init_time_zone 4 input_awaymsg_ghook 4 input_awaymsg_locret 0 input_awaymsg_onkey 68 main 64 maincsm_onclose 8 maincsm_oncreate 20 maincsm_onmessage 108 method0 96 method1 8 method2 8 method3 8 method4 0 method5 24 method8 0 method9 0 my_ed_redraw 12 my_keyhook 16 process_active_timer 12 recon 8 send_login 36 set_my_status 4 set_my_xstatus 48 set_my_xstatus2 36 setup_ICONS 12 show_pp_sender 56 start_vibra 8 start_vibra2 4 stop_vibra 4 stop_vibra2 4 to_develop 4 wstrstr 32 x_zstatus 20 xstatuse 12 Segment part sizes: Function/Label Bytes -------------- ----- Pinger2 144 SLI_TYPE 4 SMART_REDRAW 48 timeh 4 timemin 4 away_timer 228 init_time_zone 356 Draw11 80 Remind_Timer2 68 Reminder_timer 32 xstatuse 96 x_zstatus 156 Draw22 148 DrawAutoMSG 140 input_awaymsg_id 4 input_awaymsg_onkey 220 input_awaymsg_ghook 68 input_awaymsg_locret 4 InputAwayMsg 344 SLI_On 60 SLI_Off 72 SLI_check 32 SLI_Timer 36 setup_ICONS 72 free_ICONS 44 IlluminationOff 60 IlluminationOn 120 ReadDefSettings 372 WriteDefSettings 372 Play 304 start_vibra 100 stop_vibra 88 start_vibra2 60 stop_vibra2 88 ChangeVibra 56 ChangeSound 56 FreeTemplates 56 LoadTemplates 396 RXbuf 16392 TXbuf 16392 ElfKiller 32 NewLOGQ 52 LastLOGQ 36 FreeLOGQ 48 RemoveLOGQ 52 AddLOGQ 44 GetLastXTextLOGQ 72 GetIconIndex 228 FindContactLOGQByAck 88 UpdateCLheader 428 ClearContactT9Key 24 AddContactT9Key 36 BackSpaceContactT9 36 create_contactlist_menu 108 contactlist_menu_ghook 68 RecountMenu 160 contactlist_menu_onkey 1636 GetOnTotalContact 92 contactlist_menu_iconhndl 600 GetHost 192 atoi 84 GetPort 276 GetHostsCount 120 create_connect 744 ClearSendQ 32 end_socket 40 SendAnswer 388 send_login 148 do_ping 52 SendMSGACK 52 RequestXText 52 get_answer 1448 AddToMain 556 AddStringToLog 580 ParseXStatusText 152 AddMsgToChat 832 DrawAck 340 ask_my_info 4 set_my_status 72 set_my_xstatus 532 set_my_xstatus2 244 to_develop 96 ReqAddMsgToChat 120 begin_to_develop 52 CheckComand 1628 INC_Nick 32 show_pp_sender 284 Get_Online_total 92 ProcessPacket 2796 process_active_timer 148 method0 1012 method1 44 method2 36 method3 24 method4 20 method5 204 method8 8 method9 8 my_keyhook 164 ? 1952 ipc_test_name 8 S_OFFLINE 8 S_INVISIBLE 12 S_AWAY 8 S_NA 4 S_OCCUPIED 12 S_DND 4 S_ONLINE 8 S_FFC 4 icons_names 112 input_awaymsg_desc 88 def_setting 20 key_clmenu_sk_r 84 contactlist_menuhdr 68 menusoftkeys 12 menu_sk 24 clmenu_sk 24 menu_skt 8 clmenu_skt 8 color 4 maincsm_oncreate 264 maincsm_onclose 280 do_reconnect 40 CheckDoubleRun 120 maincsm_onmessage 2904 IsIdle 36 addIconBar 144 minus11 4 maincsm_name_body 280 UpdateCSMname 36 SetIconBarHandler 20 main 416 edchat_locret 4 ExtractAnswer 280 ??FindNextActiveContact_0 64 FindPrevActiveContact 88 ed_options_handler 436 wstrstr 124 IsUrl 424 ParseAnswer 612 SaveAnswer 36 GetTempName 172 DMonth 52 recon 52 edchat_onkey 1436 my_ed_redraw 112 edchat_ghook 560 edchat_desc 84 sk 16 CreateEditChat 1184 Quote 416 GetShortInfo 160 AddCurContact 52 SendAuthReq 204 SendAuthGrant 200 OpenLogfile 168 ClearLog 240 ecmenu_ghook 20 ecmenu_ITEMS 224 ecmenu_HNDLS 32 S_ICONS 7320 sk 8 input_awaymsg_sk 24 input_awaymsg_skt 8 ecmenu_HDR 64 ec_menu 320 AskNickAndAddContact 8 AddSmile 24 ??DataTable1 4 ??DataTable2 4 ??DataTable3 4 ??DataTable5 4 ??DataTable11 4 ??DataTable14 4 ??DataTable19 4 ??DataTable20 4 ??DataTable21 4 ??DataTable23 4 ??DataTable27 4 ??DataTable32 4 ??DataTable33 4 ??DataTable34 4 ??DataTable35 4 ??DataTable41 4 ??DataTable44 4 ??DataTable48 4 ??DataTable51 4 ??DataTable55 4 ??DataTable56 4 ??DataTable58 4 ??DataTable61 4 ??DataTable62 4 ??DataTable63 4 ??DataTable64 4 ??DataTable65 4 ??DataTable67 4 ??DataTable68 4 ??DataTable70 4 ??DataTable74 4 ??DataTable75 4 ??DataTable77 4 ??DataTable78 4 ??DataTable79 4 ??DataTable81 4 ??DataTable82 4 ??DataTable84 4 ??DataTable86 4 ??DataTable87 4 ??DataTable88 4 ??DataTable96 4 ??DataTable97 4 ??DataTable99 4 ??DataTable100 4 ??DataTable101 4 ??DataTable102 4 ??DataTable103 4 ??DataTable104 4 ??DataTable105 4 ??DataTable106 4 ??DataTable110 4 ??DataTable114 4 ??DataTable116 4 ??DataTable117 4 ??DataTable118 4 ??DataTable119 4 ??DataTable120 4 ??DataTable121 4 ??DataTable123 4 ??DataTable126 4 ??DataTable127 4 ??DataTable128 4 ??DataTable129 4 ??DataTable130 4 ??DataTable131 4 ??DataTable132 4 ??DataTable133 4 ??DataTable134 4 ??DataTable137 4 ??DataTable138 4 ??DataTable143 4 ??DataTable146 4 ??DataTable149 4 ??DataTable150 4 ??DataTable154 4 ??DataTable155 4 ??DataTable156 4 ??DataTable157 4 ??DataTable162 4 ??DataTable167 4 ??DataTable168 4 ??DataTable169 4 ??DataTable174 4 ??DataTable177 4 ??DataTable179 4 ??DataTable181 4 ??DataTable182 4 ??DataTable184 4 ??DataTable185 4 ??DataTable186 4 ??DataTable187 4 ??DataTable190 4 ??DataTable191 4 ??DataTable192 4 ??DataTable193 4 ??DataTable194 4 ??DataTable195 4 ??DataTable196 4 ??DataTable197 4 ??DataTable198 4 ??DataTable200 4 ??DataTable203 4 ??DataTable204 4 ??DataTable205 4 ??DataTable206 4 ??DataTable208 4 ??DataTable211 4 ??DataTable212 4 ??DataTable214 4 ??DataTable215 4 ??DataTable216 4 ??DataTable217 4 ??DataTable218 4 ??DataTable219 4 ??DataTable220 4 ??DataTable221 4 ??DataTable222 4 ??DataTable223 4 ??DataTable224 4 ??DataTable225 4 ??DataTable226 4 ??DataTable227 4 ??DataTable228 4 ??DataTable230 4 ??DataTable232 4 ??DataTable238 4 ??DataTable239 4 ??DataTable240 4 ??DataTable241 4 ??DataTable242 4 ??DataTable243 4 ? 7320 ? 8 ? 24 ? 8 ? 8 ? 48 ? 396 ? 32 ? 16 ? 3 ? 16 ? 4 ? 4 ? 4 ? 4 ? 4 ? 204 ? 2 ? 40 ? 12 ? 3 ? 8 ? 52 ? 3 ? 12 ? 12 ? 180 ? 4 ? 8 ? 36 ? 3 ? 12 ? 16 ? 12 ? 8 ? 16 ? 8 ? 16 ? 12 ? 12 ? 12 ? 12 ? 12 ? 8 ? 12 ? 12 ? 12 ? 16 ? 12 ? 12 ? 12 ? 12 ? 16 ? 12 ? 12 ? 12 ? 12 ? 12 ? 16 ? 4 ? 8 ? 8 ? 8 Others 1012 35 264 bytes in segment CODE 4 718 bytes in segment DATA_C 7 360 bytes in segment DATA_I 7 360 bytes in segment DATA_ID 33 108 bytes in segment DATA_Z 24 bytes in segment INITTAB 34 276 bytes of CODE memory (+ 1 012 bytes shared) 12 078 bytes of CONST memory 40 468 bytes of DATA memory Errors: none Warnings: none