############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 28/Jul/2010 10:50:10 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\pasha\elf\_MY_PROJECT_\naticq_mod\main.c # # Command line = D:\pasha\elf\_MY_PROJECT_\naticq_mod\main.c -D X75 # # -D kluchnik2 --preprocess # # D:\pasha\elf\_MY_PROJECT_\naticq_mod\Release_SGOLD_X # # 75\List\ -lC D:\pasha\elf\_MY_PROJECT_\naticq_mod\Re # # lease_SGOLD_X75\List\ -o D:\pasha\elf\_MY_PROJECT_\n # # aticq_mod\Release_SGOLD_X75\Obj\ -s9 --no_unroll # # --cpu_mode arm --endian little --cpu ARM926EJ-S # # --stack_align 4 --interwork -e --fpu None # # --dlib_config "D:\pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\LIB\dl5tpainl8n.h" -I # # "D:\pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\pasha\elf\_MY_PROJECT_\naticq_mod\Release_SGOLD_X # # 75\List\main.lst # # Object file = D:\pasha\elf\_MY_PROJECT_\naticq_mod\Release_SGOLD_X # # 75\Obj\main.r79 # # # # # ############################################################################## D:\pasha\elf\_MY_PROJECT_\naticq_mod\main.c 1 #include "../inc/swilib.h" 2 #include "../inc/cfg_items.h" 3 #include "../inc/pnglist.h" 4 #include "configs.h" 5 #include "NatICQ.h" 6 #include "history.h" 7 #include "conf_loader.h" 8 #include "mainmenu.h" 9 #include "main.h" 10 #include "language.h" 11 #include "../inc/xtask_ipc.h" 12 #include "smiles.h" 13 #include "naticq_ipc.h" 14 #include "status_change.h" 15 #include "strings.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 #ifdef NEWSGOLD 22 #include "screen_save.h" 23 #include "player_tags.h" 24 #endif 25 #include "swilib2.h" \ In segment CODE, align 4, keep-with-next \ __??Code32?? __code __interwork __atpcs int IsIdleUiOnTop(void) \ IsIdleUiOnTop: \ 00000000 00402DE9 PUSH {LR} \ 00000004 068100EF SWI +33030 \ 00000008 040090E5 LDR R0,[R0, #+4] \ 0000000C 080100EF SWI +264 \ 00000010 280090E5 LDR R0,[R0, #+40] \ 00000014 350100EF SWI +309 \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0100A013 MOVNE R0,#+1 \ 00000020 0080BDE8 POP {PC} ;; return 26 #include "rect_patcher.h" \ In segment CODE, align 4, keep-with-next \ __??Code32?? __code __interwork __atpcs void patch_header(HEADER_DESC const *) \ patch_header: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0000A0E3 MOV R0,#+0 \ 0000000C B000C4E1 STRH R0,[R4, #+0] \ 00000010 B200C4E1 STRH R0,[R4, #+2] \ 00000014 888100EF SWI +33160 \ 00000018 010040E2 SUB R0,R0,#+1 \ 0000001C B400C4E1 STRH R0,[R4, #+4] \ 00000020 8A8100EF SWI +33162 \ 00000024 010040E2 SUB R0,R0,#+1 \ 00000028 B600C4E1 STRH R0,[R4, #+6] \ 0000002C 1080BDE8 POP {R4,PC} ;; return 27 #include "addon.h" 28 29 extern int *XStatusesIconArray; 30 31 #ifndef NEWSGOLD 32 #define SEND_TIMER 33 #endif 34 35 #define IN_TICKS(sec) (sec * TMR_SECOND) 36 37 38 //------------- ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ -------------// 39 40 int main_d; 41 int align=0; 42 //int space=1; 43 void *canvasdata; 44 int paused_height; 45 WSHDR *wsBuffer;//мультибуффер 46 47 char talk_sound[128]; 48 int uins; 49 //char m_1[]="unofficial! private use only"; 50 //char m_2[]="mod by (c)Evilfox 315384924"; 51 char unread_msg_info[64]; 52 53 int saver_on; 54 55 #ifdef NEWSGOLD 56 extern char teast2[256]; 57 #endif 58 59 //#ifdef ELKA 60 char last_msg_buffer[4096]; 61 //#endif 62 63 //-------------------------------------------------// 64 65 66 67 //-------------------- AUTOPING -------------------// 68 69 GBSTMR ping_tmr; 70 static void PingToServer2(void) 71 { 72 TPKT *p; 73 p=malloc(sizeof(PKT)+sizeof(TTime)); 74 GetDateTime(NULL,(TTime *)p->data); 75 p->pkt.uin=0; 76 p->pkt.type=T_ECHO; 77 p->pkt.data_len=sizeof(TTime); 78 SUBPROC((void *)SendAnswer,0,p); 79 } 80 81 int Is_PING_On; 82 \ In segment CODE, align 4, keep-with-next 83 void Pinger2() 84 { 85 if(Is_PING_On) \ Pinger2: \ 00000000 ........ LDR R0,??DataTable22 ;; S_ICONS \ 00000004 70402DE9 PUSH {R4-R6,LR} \ 00000008 ........ LDR R5,??DataTable1 ;; Pinger2 \ 0000000C 8410A0E3 MOV R1,#+132 \ 00000010 541D81E3 ORR R1,R1,#0x1500 \ 00000014 004081E0 ADD R4,R1,R0 \ 00000018 E40190E5 LDR R0,[R0, #+484] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 1500000A BEQ ??Pinger2_0 86 { 87 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 88 GBS_StartTimerProc(&ping_tmr, 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} 89 } 90 else 91 GBS_StartTimerProc(&ping_tmr, 2160, Pinger2); \ ??Pinger2_0: \ 0000007C 0520A0E1 MOV R2,R5 \ 00000080 871EA0E3 MOV R1,#+2160 \ 00000084 0400A0E1 MOV R0,R4 \ 00000088 4D0000EF SWI +77 92 } \ 0000008C 7080BDE8 POP {R4-R6,PC} ;; return 93 94 //-------------------------------------------------// 95 96 97 98 extern volatile int total_smiles; 99 extern volatile int total_xstatuses; 100 extern volatile int xstatuses_load; 101 extern volatile int pictures_max; //2026rev 102 extern volatile int pictures_loaded; //2026rev 103 104 #ifdef ELKA 105 int Is_SLI_On;//мигаем светодиодом 106 #endif 107 108 int Is_SMARTCPU_On;//Вывод сообщений на гэ 109 int Is_INC_On;//Popup message 110 int Is_ILU_On;//Режим подсветки 111 int Is_Double_Vibra_On;//Режим напоминания 112 int total_unread; 113 int total_unread2; 114 115 #ifdef ELKA 116 const int SLI_TYPE=1; 117 #endif 118 119 char PINGO[256]; 120 121 #ifdef ELKA 122 extern const unsigned int SLI_time; 123 extern const unsigned int SLI_time2; 124 #endif 125 #define USE_MLMENU 126 127 #define TMR_SECOND 216 128 129 //IPC 130 const char ipc_my_name[32]=IPC_NATICQ_NAME; 131 const char ipc_xtask_name[]=IPC_XTASK_NAME; 132 const char ipc_test_name[]="test"; 133 IPC_REQ gipc; 134 135 136 char elf_path[256]; 137 int maincsm_id; 138 int maingui_id; 139 \ In segment CODE, align 4, keep-with-next 140 void SMART_REDRAW(void) 141 { \ SMART_REDRAW: \ 00000000 10402DE9 PUSH {R4,LR} 142 int f; 143 LockSched(); \ 00000004 460100EF SWI +326 144 f=IsGuiOnTop(maingui_id); \ 00000008 1C009FE5 LDR R0,??SMART_REDRAW_0 ;; S_ICONS + 512 \ 0000000C 000090E5 LDR R0,[R0, #+0] \ 00000010 350100EF SWI +309 \ 00000014 0040A0E1 MOV R4,R0 145 UnlockSched(); \ 00000018 470100EF SWI +327 146 if (f) REDRAW(); \ 0000001C 000054E3 CMP R4,#+0 \ 00000020 1080BD08 POPEQ {R4,PC} \ 00000024 720100EF SWI +370 147 } \ 00000028 1080BDE8 POP {R4,PC} ;; return \ ??SMART_REDRAW_0: \ 0000002C ........ DC32 S_ICONS + 512 148 149 //По 10 секунд 150 #define ACTIVE_TIME 360 151 152 //Максимальное количество сообщений в логе 153 #define MAXLOGMSG (20) 154 155 // Строковые описания статусов 156 157 const char S_OFFLINE[]="Offline"; 158 const char S_INVISIBLE[]="Invisible"; 159 const char S_AWAY[]="Away"; 160 const char S_NA[]="N/A"; 161 const char S_OCCUPIED[]="Occupied"; 162 const char S_DND[]="DND"; 163 const char S_ONLINE[]="Online"; 164 const char S_FFC[]="FFC"; 165 166 volatile int SENDMSGCOUNT; 167 #ifdef kluchnik 168 int IsActiveUp=1; 169 #else 170 int IsActiveUp=0; 171 #endif 172 int Is_Vibra_Enabled; \ In segment DATA_Z, align 4, align-sorted 173 int Is_Id3tag_Enabled; \ Is_Id3tag_Enabled: \ 00000000 DS8 4 174 unsigned int Is_Sounds_Enabled; 175 int Is_Show_Offline; 176 int Is_Show_Groups; 177 178 int S_ICONS[TOTAL_ICONS+1]; 179 180 #define EOP -10 181 int CurrentStatus; 182 int CurrentXStatus; 183 184 WSHDR *ews; 185 186 static const char * const icons_names[TOTAL_ICONS]= 187 { 188 "offline.png", 189 "invisible.png", 190 "away.png", 191 "na.png", 192 "occupied.png", 193 "dnd.png", 194 "depression.png", 195 "evil.png", 196 "home.png", 197 "lunch.png", 198 "work.png", 199 "online.png", 200 "ffc.png", 201 "message.png", 202 "unknown.png", 203 "groupon.png", 204 "groupoff.png", 205 "null.png", 206 "addcont.png", 207 "head.png", 208 "logo.png", 209 "ping.png", 210 "settings.png", 211 "vis1.png", 212 "vis2.png", 213 "vis3.png", 214 "vis4.png", 215 "vis5.png" 216 }; 217 218 219 220 221 //------------------------ SCREEN SAVER TIMER ---------------------------// 222 223 #ifdef NEWSGOLD 224 GBSTMR scrsTmr; 225 int scrsTime; 226 void ScreenSaverTimer() 227 { 228 if(scrsTime==screenSaverTime) 229 { 230 scrsTime=screenSaverTime;//на всякий случай 231 CloseScreensaver(); 232 DrawScreenSaver(); 233 GBS_StartTimerProc(&scrsTmr, 216*10, ScreenSaverTimer); 234 } 235 if(isScreenSaverEna) 236 scrsTime++; 237 GBS_StartTimerProc(&scrsTmr, 216*5, ScreenSaverTimer); 238 } 239 #endif 240 241 242 //-----------------------------------------------------------------------// 243 244 245 int msg_away_timer=0;//Счетчик для автостатуса 246 char away_msg[264];//Само сообщение для ответа 247 char away_msg_time[64];//Время когда сработал таймер 248 char away_msg_time_dace[16];//время отсутвтвия для вывода на идле 249 //char *inp_away_msg2;//Текст сообщения,если будем писать сами(на долгую 6 или VOL_DOWN_BUTTON),а не брать из конфига 250 char tim_zone[16]; \ In segment DATA_Z, align 4, align-sorted 251 int timeh; \ timeh: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 252 int timemin; \ timemin: \ 00000000 DS8 4 253 int away_m;//состояние автоответчика 254 int status_rem;//Для сохранения текущего статуса 255 int change_back_status;//вернуть предыдущий статус или нет 256 GBSTMR away_tmr; 257 258 259 int Show_XTX;//Показывать хстатус или время он лайн \ In segment CODE, align 4, keep-with-next 260 void FreeXText2(CLIST *t) 261 { \ FreeXText2: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 262 if (t->xtext2) { mfree(t->xtext2); t->xtext2=NULL; } \ 00000008 A80094E5 LDR R0,[R4, #+168] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD08 POPEQ {R4,PC} \ 00000014 150000EF SWI +21 \ 00000018 0000A0E3 MOV R0,#+0 \ 0000001C A80084E5 STR R0,[R4, #+168] 263 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 264 \ In segment CODE, align 4, keep-with-next 265 void away_timer()//Таймер автостатуса 266 { \ away_timer: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 267 if(msg_away_timer==(AUTO_ENGADE*12)) \ 00000004 ........ LDR R4,??DataTable22 ;; S_ICONS \ 00000008 ........ LDR R9,??DataTable24 ;; AUTO_ENGADE \ 0000000C 70819FE5 LDR R8,??away_timer_0 ;; `?` \ 00000010 08D04DE2 SUB SP,SP,#+8 \ 00000014 001099E5 LDR R1,[R9, #+0] \ 00000018 9C00A0E3 MOV R0,#+156 \ 0000001C 5C0D80E3 ORR R0,R0,#0x1700 \ 00000020 045080E0 ADD R5,R0,R4 \ 00000024 500080E2 ADD R0,R0,#+80 \ 00000028 046080E0 ADD R6,R0,R4 \ 0000002C 100040E2 SUB R0,R0,#+16 \ 00000030 047080E0 ADD R7,R0,R4 \ 00000034 1C0294E5 LDR R0,[R4, #+540] \ 00000038 0C20A0E3 MOV R2,#+12 \ 0000003C 920101E0 MUL R1,R2,R1 \ 00000040 010050E1 CMP R0,R1 \ 00000044 1D00001A BNE ??away_timer_1 268 { 269 TTime tt; 270 GetDateTime(NULL,&tt); \ 00000048 0D10A0E1 MOV R1,SP \ 0000004C 0000A0E3 MOV R0,#+0 \ 00000050 B40000EF SWI +180 271 sprintf(away_msg_time_dace, "%02d:%02d", tt.hour, tt.min); \ 00000054 0130DDE5 LDRB R3,[SP, #+1] \ 00000058 0020DDE5 LDRB R2,[SP, #+0] \ 0000005C 0810A0E1 MOV R1,R8 \ 00000060 0700A0E1 MOV R0,R7 \ 00000064 160000EF SWI +22 272 sprintf(away_msg_time, "( Отсутствую примерно с %02d:%02d [%s] )", tt.hour, tt.min, tim_zone); \ 00000068 0600A0E1 MOV R0,R6 \ 0000006C 01002DE9 PUSH {R0} \ 00000070 0530DDE5 LDRB R3,[SP, #+5] \ 00000074 0420DDE5 LDRB R2,[SP, #+4] \ 00000078 0C1088E2 ADD R1,R8,#+12 \ 0000007C 0500A0E1 MOV R0,R5 \ 00000080 160000EF SWI +22 273 away_m=1; 274 if(CurrentStatus!=2 && CurrentStatus!=isAutoStatusOn) \ 00000084 100294E5 LDR R0,[R4, #+528] \ 00000088 01A0A0E3 MOV R10,#+1 \ 0000008C 20A284E5 STR R10,[R4, #+544] \ 00000090 020050E3 CMP R0,#+2 \ 00000094 04D08DE2 ADD SP,SP,#+4 \ 00000098 0800000A BEQ ??away_timer_1 \ 0000009C E4109FE5 LDR R1,??away_timer_0+0x4 ;; isAutoStatusOn \ 000000A0 001091E5 LDR R1,[R1, #+0] \ 000000A4 010050E1 CMP R0,R1 \ 000000A8 0400000A BEQ ??away_timer_1 275 { 276 status_rem=CurrentStatus; \ 000000AC 240284E5 STR R0,[R4, #+548] 277 CurrentStatus=2; \ 000000B0 0200A0E3 MOV R0,#+2 \ 000000B4 100284E5 STR R0,[R4, #+528] 278 set_my_status(); \ 000000B8 ........ BL set_my_status 279 #ifdef NEWSGOLD 280 void SetIconBarHandler(); 281 SetIconBarHandler(); 282 #endif 283 change_back_status=1; \ 000000BC 28A284E5 STR R10,[R4, #+552] 284 } 285 } 286 287 if( (IsOnNAStatus) && (msg_away_timer==((AUTO_ENGADE*12)+(NAStatusTime*12))) )//Включить переключение на недоступен,в минутах \ ??away_timer_1: \ 000000C0 C4009FE5 LDR R0,??away_timer_0+0x8 ;; IsOnNAStatus \ 000000C4 000090E5 LDR R0,[R0, #+0] \ 000000C8 000050E3 CMP R0,#+0 \ 000000CC 1E00000A BEQ ??away_timer_2 \ 000000D0 B8209FE5 LDR R2,??away_timer_0+0xC ;; NAStatusTime \ 000000D4 001099E5 LDR R1,[R9, #+0] \ 000000D8 002092E5 LDR R2,[R2, #+0] \ 000000DC 1C0294E5 LDR R0,[R4, #+540] \ 000000E0 011082E0 ADD R1,R2,R1 \ 000000E4 0C20A0E3 MOV R2,#+12 \ 000000E8 920101E0 MUL R1,R2,R1 \ 000000EC 010050E1 CMP R0,R1 \ 000000F0 1500001A BNE ??away_timer_2 288 { 289 TTime tt; 290 GetDateTime(NULL,&tt); \ 000000F4 0D10A0E1 MOV R1,SP \ 000000F8 0000A0E3 MOV R0,#+0 \ 000000FC B40000EF SWI +180 291 sprintf(away_msg_time_dace, "%02d:%02d", tt.hour, tt.min); \ 00000100 0130DDE5 LDRB R3,[SP, #+1] \ 00000104 0020DDE5 LDRB R2,[SP, #+0] \ 00000108 0810A0E1 MOV R1,R8 \ 0000010C 0700A0E1 MOV R0,R7 \ 00000110 160000EF SWI +22 292 sprintf(away_msg_time, "( Недоступен примерно с %02d:%02d [%s] )", tt.hour, tt.min, tim_zone); \ 00000114 40002DE9 PUSH {R6} \ 00000118 0530DDE5 LDRB R3,[SP, #+5] \ 0000011C 0420DDE5 LDRB R2,[SP, #+4] \ 00000120 381088E2 ADD R1,R8,#+56 \ 00000124 0500A0E1 MOV R0,R5 \ 00000128 160000EF SWI +22 293 if(CurrentStatus!=3) \ 0000012C 100294E5 LDR R0,[R4, #+528] \ 00000130 04D08DE2 ADD SP,SP,#+4 \ 00000134 030050E3 CMP R0,#+3 \ 00000138 0300000A BEQ ??away_timer_2 294 { 295 status_rem=CurrentStatus; \ 0000013C 240284E5 STR R0,[R4, #+548] 296 CurrentStatus=3; \ 00000140 0300A0E3 MOV R0,#+3 \ 00000144 100284E5 STR R0,[R4, #+528] 297 set_my_status(); \ 00000148 ........ BL set_my_status 298 #ifdef NEWSGOLD 299 void SetIconBarHandler(); 300 SetIconBarHandler(); 301 #endif 302 } 303 } 304 305 if(Auto_Status) \ ??away_timer_2: \ 0000014C ........ LDR R0,??DataTable5 ;; Auto_Status 306 msg_away_timer++; 307 GBS_StartTimerProc(&away_tmr, 216*5, away_timer); \ 00000150 3C209FE5 LDR R2,??away_timer_0+0x10 ;; away_timer \ 00000154 000090E5 LDR R0,[R0, #+0] \ 00000158 3810A0E3 MOV R1,#+56 \ 0000015C 000050E3 CMP R0,#+0 \ 00000160 1C029415 LDRNE R0,[R4, #+540] \ 00000164 401E81E3 ORR R1,R1,#0x400 \ 00000168 01008012 ADDNE R0,R0,#+1 \ 0000016C 1C028415 STRNE R0,[R4, #+540] \ 00000170 FC00A0E3 MOV R0,#+252 \ 00000174 5C0D80E3 ORR R0,R0,#0x1700 \ 00000178 040080E0 ADD R0,R0,R4 \ 0000017C 4D0000EF SWI +77 308 } \ 00000180 F387BDE8 POP {R0,R1,R4-R10,PC} ;; return \ ??away_timer_0: \ 00000184 ........ DC32 `?` \ 00000188 ........ DC32 isAutoStatusOn \ 0000018C ........ DC32 IsOnNAStatus \ 00000190 ........ DC32 NAStatusTime \ 00000194 ........ DC32 away_timer 309 310 \ In segment CODE, align 4, keep-with-next 311 void init_time_zone() 312 { 313 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 + 6124 \ 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 080A0D10 DC8 +8,+10,+13,+16 \ 0000002C 12141618 DC8 +18,+20,+22,+24 \ 00000030 1A1C1E0E DC8 +26,+28,+30,+14 \ 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 314 { 315 case 0: 316 sprintf(tim_zone, "GMT -12:00"); \ ??init_time_zone_2: \ 0000004C 421F81E2 ADD R1,R1,#+264 \ 00000050 030000EA B ??init_time_zone_3 317 break; 318 case 1: 319 sprintf(tim_zone, "GMT -11:00"); \ ??init_time_zone_4: \ 00000054 451F81E2 ADD R1,R1,#+276 \ 00000058 160000EF SWI +22 \ 0000005C 0080BDE8 POP {PC} 320 break; 321 case 2: 322 sprintf(tim_zone, "GMT -10:00"); \ ??init_time_zone_5: \ 00000060 481F81E2 ADD R1,R1,#+288 \ ??init_time_zone_3: \ 00000064 160000EF SWI +22 \ 00000068 0080BDE8 POP {PC} 323 break; 324 case 3: 325 sprintf(tim_zone, "GMT -09:00"); \ ??init_time_zone_6: \ 0000006C 4B1F81E2 ADD R1,R1,#+300 \ 00000070 FBFFFFEA B ??init_time_zone_3 326 break; 327 case 4: 328 sprintf(tim_zone, "GMT -08:00"); \ ??init_time_zone_7: \ 00000074 4E1F81E2 ADD R1,R1,#+312 \ 00000078 F9FFFFEA B ??init_time_zone_3 329 break; 330 case 5: 331 sprintf(tim_zone, "GMT -07:00"); \ ??init_time_zone_8: \ 0000007C 511F81E2 ADD R1,R1,#+324 \ 00000080 F7FFFFEA B ??init_time_zone_3 332 break; 333 case 6: 334 sprintf(tim_zone, "GMT -06:00"); \ ??init_time_zone_9: \ 00000084 541F81E2 ADD R1,R1,#+336 \ 00000088 F5FFFFEA B ??init_time_zone_3 335 break; 336 case 7: 337 sprintf(tim_zone, "GMT -05:00"); \ ??init_time_zone_10: \ 0000008C 571F81E2 ADD R1,R1,#+348 \ 00000090 F3FFFFEA B ??init_time_zone_3 338 break; 339 case 8: 340 sprintf(tim_zone, "GMT -04:00"); \ ??init_time_zone_11: \ 00000094 5A1F81E2 ADD R1,R1,#+360 \ 00000098 F1FFFFEA B ??init_time_zone_3 341 break; 342 case 9: 343 sprintf(tim_zone, "GMT -03:30"); \ ??init_time_zone_12: \ 0000009C 5D1F81E2 ADD R1,R1,#+372 \ 000000A0 EFFFFFEA B ??init_time_zone_3 344 break; 345 case 10: 346 sprintf(tim_zone, "GMT -03:00"); \ ??init_time_zone_13: \ 000000A4 601F81E2 ADD R1,R1,#+384 \ 000000A8 EDFFFFEA B ??init_time_zone_3 347 break; 348 case 11: 349 sprintf(tim_zone, "GMT -02:00"); 350 break; 351 case 12: 352 sprintf(tim_zone, "GMT -01:00"); \ ??init_time_zone_14: \ 000000AC 0C1081E2 ADD R1,R1,#+12 \ 000000B0 EBFFFFEA B ??init_time_zone_3 353 break; 354 case 13: 355 sprintf(tim_zone, "GMT 00:00"); \ ??init_time_zone_15: \ 000000B4 181081E2 ADD R1,R1,#+24 \ 000000B8 E9FFFFEA B ??init_time_zone_3 356 break; 357 case 14: 358 sprintf(tim_zone, "GMT +01:00"); \ ??init_time_zone_16: \ 000000BC 241081E2 ADD R1,R1,#+36 \ 000000C0 E7FFFFEA B ??init_time_zone_3 359 break; 360 case 15: 361 sprintf(tim_zone, "GMT +02:00"); \ ??init_time_zone_17: \ 000000C4 301081E2 ADD R1,R1,#+48 \ 000000C8 E5FFFFEA B ??init_time_zone_3 362 break; 363 case 16: 364 sprintf(tim_zone, "GMT +03:00"); \ ??init_time_zone_18: \ 000000CC 3C1081E2 ADD R1,R1,#+60 \ 000000D0 E3FFFFEA B ??init_time_zone_3 365 break; 366 case 17: 367 sprintf(tim_zone, "GMT +03:30"); \ ??init_time_zone_19: \ 000000D4 481081E2 ADD R1,R1,#+72 \ 000000D8 E1FFFFEA B ??init_time_zone_3 368 break; 369 case 18: 370 sprintf(tim_zone, "GMT +04:00"); \ ??init_time_zone_20: \ 000000DC 541081E2 ADD R1,R1,#+84 \ 000000E0 DFFFFFEA B ??init_time_zone_3 371 break; 372 case 19: 373 sprintf(tim_zone, "GMT +04:30"); \ ??init_time_zone_21: \ 000000E4 601081E2 ADD R1,R1,#+96 \ 000000E8 DDFFFFEA B ??init_time_zone_3 374 break; 375 case 20: 376 sprintf(tim_zone, "GMT +05:00"); \ ??init_time_zone_22: \ 000000EC 6C1081E2 ADD R1,R1,#+108 \ 000000F0 DBFFFFEA B ??init_time_zone_3 377 break; 378 case 21: 379 sprintf(tim_zone, "GMT +05:30"); \ ??init_time_zone_23: \ 000000F4 781081E2 ADD R1,R1,#+120 \ 000000F8 D9FFFFEA B ??init_time_zone_3 380 break; 381 case 22: 382 sprintf(tim_zone, "GMT +05:45"); \ ??init_time_zone_24: \ 000000FC 841081E2 ADD R1,R1,#+132 \ 00000100 D7FFFFEA B ??init_time_zone_3 383 break; 384 case 23: 385 sprintf(tim_zone, "GMT +06:00"); \ ??init_time_zone_25: \ 00000104 901081E2 ADD R1,R1,#+144 \ 00000108 D5FFFFEA B ??init_time_zone_3 386 break; 387 case 24: 388 sprintf(tim_zone, "GMT +06:30"); \ ??init_time_zone_26: \ 0000010C 9C1081E2 ADD R1,R1,#+156 \ 00000110 D3FFFFEA B ??init_time_zone_3 389 break; 390 case 25: 391 sprintf(tim_zone, "GMT +07:00"); \ ??init_time_zone_27: \ 00000114 A81081E2 ADD R1,R1,#+168 \ 00000118 D1FFFFEA B ??init_time_zone_3 392 break; 393 case 26: 394 sprintf(tim_zone, "GMT +08:00"); \ ??init_time_zone_28: \ 0000011C B41081E2 ADD R1,R1,#+180 \ 00000120 CFFFFFEA B ??init_time_zone_3 395 break; 396 case 27: 397 sprintf(tim_zone, "GMT +09:00"); \ ??init_time_zone_29: \ 00000124 C01081E2 ADD R1,R1,#+192 \ 00000128 CDFFFFEA B ??init_time_zone_3 398 break; 399 case 28: 400 sprintf(tim_zone, "GMT +09:30"); \ ??init_time_zone_30: \ 0000012C CC1081E2 ADD R1,R1,#+204 \ 00000130 CBFFFFEA B ??init_time_zone_3 401 break; 402 case 29: 403 sprintf(tim_zone, "GMT +10:00"); \ ??init_time_zone_31: \ 00000134 D81081E2 ADD R1,R1,#+216 \ 00000138 C9FFFFEA B ??init_time_zone_3 404 break; 405 case 30: 406 sprintf(tim_zone, "GMT +11:00"); \ ??init_time_zone_32: \ 0000013C E41081E2 ADD R1,R1,#+228 \ 00000140 C7FFFFEA B ??init_time_zone_3 407 break; 408 case 31: 409 sprintf(tim_zone, "GMT +12:00"); \ ??init_time_zone_33: \ 00000144 F01081E2 ADD R1,R1,#+240 \ 00000148 C5FFFFEA B ??init_time_zone_3 410 break; 411 case 32: 412 sprintf(tim_zone, "GMT +13:00"); \ ??init_time_zone_34: \ 0000014C FC1081E2 ADD R1,R1,#+252 \ 00000150 160000EF SWI +22 413 break; 414 } 415 } \ ??init_time_zone_35: \ 00000154 0080BDE8 POP {PC} ;; return \ ??init_time_zone_1: \ 00000158 ........ DC32 time_zone \ 0000015C ........ DC32 S_ICONS + 6124 \ 00000160 ........ DC32 `?` 416 417 418 //------------------------ AUTO CHANGE STATUS ------------------------------// 419 420 void SetIconBarHandler(); 421 GBSTMR autoChangeStatus; 422 #pragma inline 423 static unsigned int GetStatusByIndex(int pos) 424 { 425 switch(pos) 426 { 427 case 1: 428 return IS_ONLINE; 429 case 2: 430 return IS_AWAY; 431 case 3: 432 return IS_NA; 433 case 4: 434 return IS_DND; 435 case 5: 436 return IS_OCCUPIED; 437 case 6: 438 return IS_FFC; 439 case 7: 440 return IS_INVISIBLE; 441 case 8: 442 return IS_DEPRESSION; 443 case 9: 444 return IS_EVIL; 445 case 10: 446 return IS_HOME; 447 case 11: 448 return IS_LUNCH; 449 case 12: 450 return IS_WORK; 451 } 452 return IS_UNKNOWN; 453 } 454 \ In segment CODE, align 4, keep-with-next 455 void AutoChangeStatus_timer()//Таймер автосмены статуса 456 { \ AutoChangeStatus_timer: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 457 TTime tt; 458 GetDateTime(NULL,&tt); \ 00000008 0D10A0E1 MOV R1,SP 459 460 if(status_1!=0 && tt.hour==tm_status_1.hour && tt.min==tm_status_1.min) \ 0000000C ........ LDR R4,??DataTable22 ;; S_ICONS \ 00000010 0000A0E3 MOV R0,#+0 \ 00000014 B40000EF SWI +180 \ 00000018 E4039FE5 LDR R0,??AutoChangeStatus_timer_5 ;; status_1 \ 0000001C 0150A0E3 MOV R5,#+1 \ 00000020 000090E5 LDR R0,[R0, #+0] \ 00000024 000050E3 CMP R0,#+0 \ 00000028 2C00000A BEQ ??AutoChangeStatus_timer_6 \ 0000002C D4139FE5 LDR R1,??AutoChangeStatus_timer_5+0x4 ;; tm_status_1 \ 00000030 0020DDE5 LDRB R2,[SP, #+0] \ 00000034 0030D1E5 LDRB R3,[R1, #+0] \ 00000038 030052E1 CMP R2,R3 \ 0000003C 2700001A BNE ??AutoChangeStatus_timer_6 \ 00000040 0120DDE5 LDRB R2,[SP, #+1] \ 00000044 0110D1E5 LDRB R1,[R1, #+1] \ 00000048 010052E1 CMP R2,R1 \ 0000004C 2300001A BNE ??AutoChangeStatus_timer_6 461 { 462 CurrentStatus=GetStatusByIndex(status_1); \ 00000050 010040E2 SUB R0,R0,#+1 \ 00000054 0B0050E3 CMP R0,#+11 \ 00000058 1D00008A BHI ??AutoChangeStatus_timer_7 \ 0000005C 011F8FE2 ADR R1,??AutoChangeStatus_timer_0 \ 00000060 0010D1E7 LDRB R1,[R1, R0] \ 00000064 01F18FE0 ADD PC,PC,R1, LSL #+2 \ ??AutoChangeStatus_timer_0: \ 00000068 02040608 DC8 +2,+4,+6,+8 \ 0000006C 0A0C0E10 DC8 +10,+12,+14,+16 \ 00000070 12141618 DC8 +18,+20,+22,+24 \ ??AutoChangeStatus_timer_8: \ 00000074 0B00A0E3 MOV R0,#+11 \ 00000078 160000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_10: \ 0000007C 0200A0E3 MOV R0,#+2 \ 00000080 140000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_11: \ 00000084 0300A0E3 MOV R0,#+3 \ 00000088 120000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_12: \ 0000008C 0500A0E3 MOV R0,#+5 \ 00000090 100000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_13: \ 00000094 0400A0E3 MOV R0,#+4 \ 00000098 0E0000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_14: \ 0000009C 0C00A0E3 MOV R0,#+12 \ 000000A0 0C0000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_15: \ 000000A4 0100A0E3 MOV R0,#+1 \ 000000A8 0A0000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_16: \ 000000AC 0600A0E3 MOV R0,#+6 \ 000000B0 080000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_17: \ 000000B4 0700A0E3 MOV R0,#+7 \ 000000B8 060000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_18: \ 000000BC 0800A0E3 MOV R0,#+8 \ 000000C0 040000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_19: \ 000000C4 0900A0E3 MOV R0,#+9 \ 000000C8 020000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_20: \ 000000CC 0A00A0E3 MOV R0,#+10 \ 000000D0 000000EA B ??AutoChangeStatus_timer_9 \ ??AutoChangeStatus_timer_7: \ 000000D4 0E00A0E3 MOV R0,#+14 \ ??AutoChangeStatus_timer_9: \ 000000D8 100284E5 STR R0,[R4, #+528] 463 set_my_status(); \ 000000DC ........ BL set_my_status 464 } 465 466 if(status_2!=0 && tt.hour==tm_status_2.hour && tt.min==tm_status_2.min) \ ??AutoChangeStatus_timer_6: \ 000000E0 24039FE5 LDR R0,??AutoChangeStatus_timer_5+0x8 ;; status_2 \ 000000E4 000090E5 LDR R0,[R0, #+0] \ 000000E8 000050E3 CMP R0,#+0 \ 000000EC 2C00000A BEQ ??AutoChangeStatus_timer_21 \ 000000F0 18139FE5 LDR R1,??AutoChangeStatus_timer_5+0xC ;; tm_status_2 \ 000000F4 0020DDE5 LDRB R2,[SP, #+0] \ 000000F8 0030D1E5 LDRB R3,[R1, #+0] \ 000000FC 030052E1 CMP R2,R3 \ 00000100 2700001A BNE ??AutoChangeStatus_timer_21 \ 00000104 0120DDE5 LDRB R2,[SP, #+1] \ 00000108 0110D1E5 LDRB R1,[R1, #+1] \ 0000010C 010052E1 CMP R2,R1 \ 00000110 2300001A BNE ??AutoChangeStatus_timer_21 467 { 468 CurrentStatus=GetStatusByIndex(status_2); \ 00000114 010040E2 SUB R0,R0,#+1 \ 00000118 0B0050E3 CMP R0,#+11 \ 0000011C 1D00008A BHI ??AutoChangeStatus_timer_22 \ 00000120 011F8FE2 ADR R1,??AutoChangeStatus_timer_1 \ 00000124 0010D1E7 LDRB R1,[R1, R0] \ 00000128 01F18FE0 ADD PC,PC,R1, LSL #+2 \ ??AutoChangeStatus_timer_1: \ 0000012C 02040608 DC8 +2,+4,+6,+8 \ 00000130 0A0C0E10 DC8 +10,+12,+14,+16 \ 00000134 12141618 DC8 +18,+20,+22,+24 \ ??AutoChangeStatus_timer_23: \ 00000138 0B00A0E3 MOV R0,#+11 \ 0000013C 160000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_25: \ 00000140 0200A0E3 MOV R0,#+2 \ 00000144 140000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_26: \ 00000148 0300A0E3 MOV R0,#+3 \ 0000014C 120000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_27: \ 00000150 0500A0E3 MOV R0,#+5 \ 00000154 100000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_28: \ 00000158 0400A0E3 MOV R0,#+4 \ 0000015C 0E0000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_29: \ 00000160 0C00A0E3 MOV R0,#+12 \ 00000164 0C0000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_30: \ 00000168 0100A0E3 MOV R0,#+1 \ 0000016C 0A0000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_31: \ 00000170 0600A0E3 MOV R0,#+6 \ 00000174 080000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_32: \ 00000178 0700A0E3 MOV R0,#+7 \ 0000017C 060000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_33: \ 00000180 0800A0E3 MOV R0,#+8 \ 00000184 040000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_34: \ 00000188 0900A0E3 MOV R0,#+9 \ 0000018C 020000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_35: \ 00000190 0A00A0E3 MOV R0,#+10 \ 00000194 000000EA B ??AutoChangeStatus_timer_24 \ ??AutoChangeStatus_timer_22: \ 00000198 0E00A0E3 MOV R0,#+14 \ ??AutoChangeStatus_timer_24: \ 0000019C 100284E5 STR R0,[R4, #+528] 469 set_my_status(); \ 000001A0 ........ BL set_my_status 470 } 471 472 if(status_3!=0 && tt.hour==tm_status_3.hour && tt.min==tm_status_3.min) \ ??AutoChangeStatus_timer_21: \ 000001A4 68029FE5 LDR R0,??AutoChangeStatus_timer_5+0x10 ;; status_3 \ 000001A8 000090E5 LDR R0,[R0, #+0] \ 000001AC 000050E3 CMP R0,#+0 \ 000001B0 2C00000A BEQ ??AutoChangeStatus_timer_36 \ 000001B4 5C129FE5 LDR R1,??AutoChangeStatus_timer_5+0x14 ;; tm_status_3 \ 000001B8 0020DDE5 LDRB R2,[SP, #+0] \ 000001BC 0030D1E5 LDRB R3,[R1, #+0] \ 000001C0 030052E1 CMP R2,R3 \ 000001C4 2700001A BNE ??AutoChangeStatus_timer_36 \ 000001C8 0120DDE5 LDRB R2,[SP, #+1] \ 000001CC 0110D1E5 LDRB R1,[R1, #+1] \ 000001D0 010052E1 CMP R2,R1 \ 000001D4 2300001A BNE ??AutoChangeStatus_timer_36 473 { 474 CurrentStatus=GetStatusByIndex(status_3); \ 000001D8 010040E2 SUB R0,R0,#+1 \ 000001DC 0B0050E3 CMP R0,#+11 \ 000001E0 1D00008A BHI ??AutoChangeStatus_timer_37 \ 000001E4 011F8FE2 ADR R1,??AutoChangeStatus_timer_2 \ 000001E8 0010D1E7 LDRB R1,[R1, R0] \ 000001EC 01F18FE0 ADD PC,PC,R1, LSL #+2 \ ??AutoChangeStatus_timer_2: \ 000001F0 02040608 DC8 +2,+4,+6,+8 \ 000001F4 0A0C0E10 DC8 +10,+12,+14,+16 \ 000001F8 12141618 DC8 +18,+20,+22,+24 \ ??AutoChangeStatus_timer_38: \ 000001FC 0B00A0E3 MOV R0,#+11 \ 00000200 160000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_40: \ 00000204 0200A0E3 MOV R0,#+2 \ 00000208 140000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_41: \ 0000020C 0300A0E3 MOV R0,#+3 \ 00000210 120000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_42: \ 00000214 0500A0E3 MOV R0,#+5 \ 00000218 100000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_43: \ 0000021C 0400A0E3 MOV R0,#+4 \ 00000220 0E0000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_44: \ 00000224 0C00A0E3 MOV R0,#+12 \ 00000228 0C0000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_45: \ 0000022C 0100A0E3 MOV R0,#+1 \ 00000230 0A0000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_46: \ 00000234 0600A0E3 MOV R0,#+6 \ 00000238 080000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_47: \ 0000023C 0700A0E3 MOV R0,#+7 \ 00000240 060000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_48: \ 00000244 0800A0E3 MOV R0,#+8 \ 00000248 040000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_49: \ 0000024C 0900A0E3 MOV R0,#+9 \ 00000250 020000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_50: \ 00000254 0A00A0E3 MOV R0,#+10 \ 00000258 000000EA B ??AutoChangeStatus_timer_39 \ ??AutoChangeStatus_timer_37: \ 0000025C 0E00A0E3 MOV R0,#+14 \ ??AutoChangeStatus_timer_39: \ 00000260 100284E5 STR R0,[R4, #+528] 475 set_my_status(); \ 00000264 ........ BL set_my_status 476 } 477 478 if(status_4!=0 && tt.hour==tm_status_4.hour && tt.min==tm_status_4.min) \ ??AutoChangeStatus_timer_36: \ 00000268 AC019FE5 LDR R0,??AutoChangeStatus_timer_5+0x18 ;; status_4 \ 0000026C 000090E5 LDR R0,[R0, #+0] \ 00000270 000050E3 CMP R0,#+0 \ 00000274 2C00000A BEQ ??AutoChangeStatus_timer_51 \ 00000278 A0119FE5 LDR R1,??AutoChangeStatus_timer_5+0x1C ;; tm_status_4 \ 0000027C 0020DDE5 LDRB R2,[SP, #+0] \ 00000280 0030D1E5 LDRB R3,[R1, #+0] \ 00000284 030052E1 CMP R2,R3 \ 00000288 2700001A BNE ??AutoChangeStatus_timer_51 \ 0000028C 0120DDE5 LDRB R2,[SP, #+1] \ 00000290 0110D1E5 LDRB R1,[R1, #+1] \ 00000294 010052E1 CMP R2,R1 \ 00000298 2300001A BNE ??AutoChangeStatus_timer_51 479 { 480 CurrentStatus=GetStatusByIndex(status_4); \ 0000029C 010040E2 SUB R0,R0,#+1 \ 000002A0 0B0050E3 CMP R0,#+11 \ 000002A4 1D00008A BHI ??AutoChangeStatus_timer_52 \ 000002A8 011F8FE2 ADR R1,??AutoChangeStatus_timer_3 \ 000002AC 0010D1E7 LDRB R1,[R1, R0] \ 000002B0 01F18FE0 ADD PC,PC,R1, LSL #+2 \ ??AutoChangeStatus_timer_3: \ 000002B4 02040608 DC8 +2,+4,+6,+8 \ 000002B8 0A0C0E10 DC8 +10,+12,+14,+16 \ 000002BC 12141618 DC8 +18,+20,+22,+24 \ ??AutoChangeStatus_timer_53: \ 000002C0 0B00A0E3 MOV R0,#+11 \ 000002C4 160000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_55: \ 000002C8 0200A0E3 MOV R0,#+2 \ 000002CC 140000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_56: \ 000002D0 0300A0E3 MOV R0,#+3 \ 000002D4 120000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_57: \ 000002D8 0500A0E3 MOV R0,#+5 \ 000002DC 100000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_58: \ 000002E0 0400A0E3 MOV R0,#+4 \ 000002E4 0E0000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_59: \ 000002E8 0C00A0E3 MOV R0,#+12 \ 000002EC 0C0000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_60: \ 000002F0 0100A0E3 MOV R0,#+1 \ 000002F4 0A0000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_61: \ 000002F8 0600A0E3 MOV R0,#+6 \ 000002FC 080000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_62: \ 00000300 0700A0E3 MOV R0,#+7 \ 00000304 060000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_63: \ 00000308 0800A0E3 MOV R0,#+8 \ 0000030C 040000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_64: \ 00000310 0900A0E3 MOV R0,#+9 \ 00000314 020000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_65: \ 00000318 0A00A0E3 MOV R0,#+10 \ 0000031C 000000EA B ??AutoChangeStatus_timer_54 \ ??AutoChangeStatus_timer_52: \ 00000320 0E00A0E3 MOV R0,#+14 \ ??AutoChangeStatus_timer_54: \ 00000324 100284E5 STR R0,[R4, #+528] 481 set_my_status(); \ 00000328 ........ BL set_my_status 482 } 483 484 if(status_5!=0 && tt.hour==tm_status_5.hour && tt.min==tm_status_5.min) \ ??AutoChangeStatus_timer_51: \ 0000032C F0009FE5 LDR R0,??AutoChangeStatus_timer_5+0x20 ;; status_5 \ 00000330 000090E5 LDR R0,[R0, #+0] \ 00000334 000050E3 CMP R0,#+0 \ 00000338 2A00000A BEQ ??AutoChangeStatus_timer_66 \ 0000033C E4109FE5 LDR R1,??AutoChangeStatus_timer_5+0x24 ;; tm_status_5 \ 00000340 0020DDE5 LDRB R2,[SP, #+0] \ 00000344 0030D1E5 LDRB R3,[R1, #+0] \ 00000348 030052E1 CMP R2,R3 \ 0000034C 2500001A BNE ??AutoChangeStatus_timer_66 \ 00000350 0120DDE5 LDRB R2,[SP, #+1] \ 00000354 0110D1E5 LDRB R1,[R1, #+1] \ 00000358 010052E1 CMP R2,R1 \ 0000035C 2100001A BNE ??AutoChangeStatus_timer_66 485 { 486 CurrentStatus=GetStatusByIndex(status_5); \ 00000360 010040E2 SUB R0,R0,#+1 \ 00000364 0B0050E3 CMP R0,#+11 \ 00000368 1B00008A BHI ??AutoChangeStatus_timer_67 \ 0000036C 011F8FE2 ADR R1,??AutoChangeStatus_timer_4 \ 00000370 0010D1E7 LDRB R1,[R1, R0] \ 00000374 01F18FE0 ADD PC,PC,R1, LSL #+2 \ ??AutoChangeStatus_timer_4: \ 00000378 02040608 DC8 +2,+4,+6,+8 \ 0000037C 0A0C190E DC8 +10,+12,+25,+14 \ 00000380 10121416 DC8 +16,+18,+20,+22 \ ??AutoChangeStatus_timer_68: \ 00000384 0B50A0E3 MOV R5,#+11 \ 00000388 140000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_70: \ 0000038C 0250A0E3 MOV R5,#+2 \ 00000390 120000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_71: \ 00000394 0350A0E3 MOV R5,#+3 \ 00000398 100000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_72: \ 0000039C 0550A0E3 MOV R5,#+5 \ 000003A0 0E0000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_73: \ 000003A4 0450A0E3 MOV R5,#+4 \ 000003A8 0C0000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_74: \ 000003AC 0C50A0E3 MOV R5,#+12 \ 000003B0 0A0000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_75: \ 000003B4 0650A0E3 MOV R5,#+6 \ 000003B8 080000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_76: \ 000003BC 0750A0E3 MOV R5,#+7 \ 000003C0 060000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_77: \ 000003C4 0850A0E3 MOV R5,#+8 \ 000003C8 040000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_78: \ 000003CC 0950A0E3 MOV R5,#+9 \ 000003D0 020000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_79: \ 000003D4 0A50A0E3 MOV R5,#+10 \ 000003D8 000000EA B ??AutoChangeStatus_timer_69 \ ??AutoChangeStatus_timer_67: \ 000003DC 0E50A0E3 MOV R5,#+14 \ ??AutoChangeStatus_timer_69: \ 000003E0 105284E5 STR R5,[R4, #+528] 487 set_my_status(); \ 000003E4 ........ BL set_my_status 488 } 489 #ifdef ELKA 490 SetIconBarHandler(); 491 #endif 492 493 GBS_StartTimerProc(&autoChangeStatus, 216*10, AutoChangeStatus_timer); \ ??AutoChangeStatus_timer_66: \ 000003E8 3C209FE5 LDR R2,??AutoChangeStatus_timer_5+0x28 ;; AutoChangeStatus_timer \ 000003EC 871EA0E3 MOV R1,#+2160 \ 000003F0 0C00A0E3 MOV R0,#+12 \ 000003F4 600D80E3 ORR R0,R0,#0x1800 \ 000003F8 040080E0 ADD R0,R0,R4 \ 000003FC 4D0000EF SWI +77 494 } \ 00000400 3380BDE8 POP {R0,R1,R4,R5,PC} ;; return \ ??AutoChangeStatus_timer_5: \ 00000404 ........ DC32 status_1 \ 00000408 ........ DC32 tm_status_1 \ 0000040C ........ DC32 status_2 \ 00000410 ........ DC32 tm_status_2 \ 00000414 ........ DC32 status_3 \ 00000418 ........ DC32 tm_status_3 \ 0000041C ........ DC32 status_4 \ 00000420 ........ DC32 tm_status_4 \ 00000424 ........ DC32 status_5 \ 00000428 ........ DC32 tm_status_5 \ 0000042C ........ DC32 AutoChangeStatus_timer 495 //=================================away_msg=============== 496 //////////////////////////////////////////tozhe dlja auto ping/////////////// 497 \ In segment CODE, align 4, keep-with-next 498 void DrawPing(void *canv) 499 { 500 PrintField(Ping_X,Ping_Y, PINGO, align, fonto, spaco1); \ DrawPing: \ 00000000 ........ LDR R1,??DataTable20 ;; spaco1 \ 00000004 ........ LDR R0,??DataTable22 ;; 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 CC3190E5 LDR R3,[R0, #+460] \ 00000024 9410A0E3 MOV R1,#+148 \ 00000028 541D81E3 ORR R1,R1,#0x1500 \ 0000002C 002081E0 ADD R2,R1,R0 \ 00000030 10009FE5 LDR R0,??DrawPing_0 ;; Ping_Y \ 00000034 001090E5 LDR R1,[R0, #+0] \ 00000038 0C009FE5 LDR R0,??DrawPing_0+0x4 ;; Ping_X \ 0000003C 000090E5 LDR R0,[R0, #+0] \ 00000040 ........ _BLF PrintField,??PrintField??rA 501 } \ 00000044 0380BDE8 POP {R0,R1,PC} ;; return \ ??DrawPing_0: \ 00000048 ........ DC32 Ping_Y \ 0000004C ........ DC32 Ping_X 502 503 //////////////////////////////////////////tozhe dlja auto ping/////////////// 504 505 GBSTMR remind_tmr; 506 volatile int vibra_count; 507 #ifdef ELKA 508 void SLI_Off(void); 509 #endif 510 void start_vibra2(void); 511 512 //////////////////////////reminder timer///////////////////////// 513 \ In segment CODE, align 4, keep-with-next 514 void Remind_Timer2() 515 { \ Remind_Timer2: \ 00000000 10402DE9 PUSH {R4,LR} 516 if (total_unread) \ 00000004 ........ LDR R4,??DataTable22 ;; S_ICONS \ 00000008 900294E5 LDR R0,[R4, #+656] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD08 POPEQ {R4,PC} 517 { 518 vibra_count=Vibra_cc; \ 00000014 24009FE5 LDR R0,??Remind_Timer2_0 ;; Vibra_cc \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C 5C0284E5 STR R0,[R4, #+604] 519 start_vibra2(); \ 00000020 ........ BL start_vibra2 520 GBS_StartTimerProc(&remind_tmr, 6480, Remind_Timer2); \ 00000024 ........ LDR R2,??DataTable12 ;; Remind_Timer2 \ 00000028 5010A0E3 MOV R1,#+80 \ 0000002C 641D81E3 ORR R1,R1,#0x1900 \ 00000030 4D0F41E2 SUB R0,R1,#+308 \ 00000034 040080E0 ADD R0,R0,R4 \ 00000038 4D0000EF SWI +77 521 } 522 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??Remind_Timer2_0: \ 00000040 ........ DC32 Vibra_cc 523 \ In segment CODE, align 4, keep-with-next 524 void Reminder_timer() 525 { 526 GBS_StartTimerProc(&remind_tmr, 6480, Remind_Timer2); \ Reminder_timer: \ 00000000 ........ LDR R2,??DataTable12 ;; Remind_Timer2 \ 00000004 10009FE5 LDR R0,??Reminder_timer_0 ;; S_ICONS + 6172 \ 00000008 00402DE9 PUSH {LR} \ 0000000C 5010A0E3 MOV R1,#+80 \ 00000010 641D81E3 ORR R1,R1,#0x1900 \ 00000014 4D0000EF SWI +77 527 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??Reminder_timer_0: \ 0000001C ........ DC32 S_ICONS + 6172 528 //////////////////////////reminder timer///////////////////////// 529 530 //////////////////////////uptime////////////////////////// 531 int Is_UPTIME_On; 532 int uptimeHour; 533 int uptimeMin; 534 int uptimeSec; 535 \ In segment CODE, align 4, keep-with-next 536 void UptimeMinHour() 537 { 538 uptimeSec++; \ UptimeMinHour: \ 00000000 ........ LDR R0,??DataTable22 ;; S_ICONS \ 00000004 3C1290E5 LDR R1,[R0, #+572] 539 if(uptimeSec==60) \ 00000008 382290E5 LDR R2,[R0, #+568] \ 0000000C 011081E2 ADD R1,R1,#+1 \ 00000010 3C0051E3 CMP R1,#+60 540 { 541 uptimeSec=0; \ 00000014 0010A003 MOVEQ R1,#+0 542 uptimeMin++; \ 00000018 01208202 ADDEQ R2,R2,#+1 \ 0000001C 3C1280E5 STR R1,[R0, #+572] 543 } 544 if(uptimeMin==60) \ 00000020 3C0052E3 CMP R2,#+60 \ 00000024 0300001A BNE ??UptimeMinHour_0 545 { 546 uptimeMin=0; 547 uptimeHour++; \ 00000028 341290E5 LDR R1,[R0, #+564] \ 0000002C 0020A0E3 MOV R2,#+0 \ 00000030 011081E2 ADD R1,R1,#+1 \ 00000034 341280E5 STR R1,[R0, #+564] \ ??UptimeMinHour_0: \ 00000038 382280E5 STR R2,[R0, #+568] 548 } 549 } \ 0000003C 1EFF2FE1 BX LR ;; return 550 551 GBSTMR uptime_tmr; 552 #ifdef NEWSGOLD 553 GBSTMR tracktmr; 554 int tracktimer; 555 #endif 556 \ In segment CODE, align 4, keep-with-next 557 void upTime() 558 { 559 if(connect_state==3) \ upTime: \ 00000000 ........ LDR R0,??DataTable22 ;; S_ICONS \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 48509FE5 LDR R5,??upTime_0 ;; upTime \ 0000000C 2C10A0E3 MOV R1,#+44 \ 00000010 601D81E3 ORR R1,R1,#0x1800 \ 00000014 004081E0 ADD R4,R1,R0 \ 00000018 6C1290E5 LDR R1,[R0, #+620] \ 0000001C 030051E3 CMP R1,#+3 \ 00000020 0100001A BNE ??upTime_1 560 { 561 UptimeMinHour(); \ 00000024 ........ BL UptimeMinHour 562 #ifdef NEWSGOLD 563 if (tracktimer>=10)/*&&(_GetPlayStatus()!=1))*/ 564 { 565 GBS_StartTimerProc(&tracktmr, 216*5, GetTags); 566 tracktimer=0; 567 } 568 tracktimer++; 569 #endif 570 GBS_StartTimerProc(&uptime_tmr, 216, upTime); \ 00000028 050000EA B ??upTime_2 571 } 572 else 573 { 574 if(!Pause_Time) \ ??upTime_1: \ 0000002C 28109FE5 LDR R1,??upTime_0+0x4 ;; Pause_Time \ 00000030 001091E5 LDR R1,[R1, #+0] \ 00000034 000051E3 CMP R1,#+0 575 { 576 uptimeHour=0; \ 00000038 34128005 STREQ R1,[R0, #+564] 577 uptimeMin=0; \ 0000003C 38128005 STREQ R1,[R0, #+568] 578 uptimeSec=0; \ 00000040 3C128005 STREQ R1,[R0, #+572] 579 } 580 GBS_StartTimerProc(&uptime_tmr, 216, upTime); \ ??upTime_2: \ 00000044 0520A0E1 MOV R2,R5 \ 00000048 D810A0E3 MOV R1,#+216 \ 0000004C 0400A0E1 MOV R0,R4 \ 00000050 4D0000EF SWI +77 581 } 582 } \ 00000054 3080BDE8 POP {R4,R5,PC} ;; return \ ??upTime_0: \ 00000058 ........ DC32 upTime \ 0000005C ........ DC32 Pause_Time 583 584 char onlineTime[128]; \ In segment CODE, align 4, keep-with-next 585 void DrawOnlineTime(void *canv) 586 { 587 if(connect_state==3) \ DrawOnlineTime: \ 00000000 80109FE5 LDR R1,??DrawOnlineTime_0 ;; `?` \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 ........ LDR R4,??DataTable22 ;; S_ICONS \ 0000000C 3C00A0E3 MOV R0,#+60 \ 00000010 600D80E3 ORR R0,R0,#0x1800 \ 00000014 045080E0 ADD R5,R0,R4 \ 00000018 6C0294E5 LDR R0,[R4, #+620] \ 0000001C 030050E3 CMP R0,#+3 \ 00000020 0700001A BNE ??DrawOnlineTime_1 588 { 589 sprintf(onlineTime,"Online: %02d:%02d:%02d", uptimeHour, uptimeMin, uptimeSec); \ 00000024 3C0294E5 LDR R0,[R4, #+572] \ 00000028 01002DE9 PUSH {R0} \ 0000002C 383294E5 LDR R3,[R4, #+568] \ 00000030 342294E5 LDR R2,[R4, #+564] \ 00000034 0500A0E1 MOV R0,R5 \ 00000038 160000EF SWI +22 \ 0000003C 04D08DE2 ADD SP,SP,#+4 \ 00000040 020000EA B ??DrawOnlineTime_2 590 } 591 else 592 sprintf(onlineTime,"Offline"); \ ??DrawOnlineTime_1: \ 00000044 181081E2 ADD R1,R1,#+24 \ 00000048 0500A0E1 MOV R0,R5 \ 0000004C 160000EF SWI +22 593 PrintField(onlineTime_x,onlineTime_y, onlineTime, align, fonto, spaco1); \ ??DrawOnlineTime_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 CC3194E5 LDR R3,[R4, #+460] \ 00000070 14009FE5 LDR R0,??DrawOnlineTime_0+0x4 ;; onlineTime_y \ 00000074 001090E5 LDR R1,[R0, #+0] \ 00000078 10009FE5 LDR R0,??DrawOnlineTime_0+0x8 ;; onlineTime_x \ 0000007C 000090E5 LDR R0,[R0, #+0] \ 00000080 ........ _BLF PrintField,??PrintField??rA 594 } \ 00000084 3380BDE8 POP {R0,R1,R4,R5,PC} ;; return \ ??DrawOnlineTime_0: \ 00000088 ........ DC32 `?` \ 0000008C ........ DC32 onlineTime_y \ 00000090 ........ DC32 onlineTime_x 595 596 597 //---------------------- Вывод времени на идле ---------------------// 598 599 \ In segment CODE, align 4, keep-with-next 600 void DrawAutoMSG(void *canv) 601 { \ DrawAutoMSG: \ 00000000 10402DE9 PUSH {R4,LR} 602 char awayTime[64]; 603 if(away_m && showAwayIdle) \ 00000004 ........ LDR R4,??DataTable22 ;; S_ICONS \ 00000008 40D04DE2 SUB SP,SP,#+64 \ 0000000C 200294E5 LDR R0,[R4, #+544] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 1700000A BEQ ??DrawAutoMSG_0 \ 00000018 ........ LDR R0,??DataTable19 ;; showAwayIdle \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 000050E3 CMP R0,#+0 \ 00000024 1300000A BEQ ??DrawAutoMSG_0 604 { 605 sprintf(awayTime,"Away from [%s]",away_msg_time_dace); \ 00000028 50109FE5 LDR R1,??DrawAutoMSG_1 ;; `?` \ 0000002C DC00A0E3 MOV R0,#+220 \ 00000030 5C0D80E3 ORR R0,R0,#0x1700 \ 00000034 042080E0 ADD R2,R0,R4 \ 00000038 0D00A0E1 MOV R0,SP \ 0000003C 160000EF SWI +22 606 PrintField(auto_x,auto_y, awayTime, align, fonto, spaco1); \ 00000040 ........ LDR R0,??DataTable20 ;; spaco1 \ 00000044 000090E5 LDR R0,[R0, #+0] \ 00000048 01002DE9 PUSH {R0} \ 0000004C ........ LDR R0,??DataTable21 ;; fonto \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 01002DE9 PUSH {R0} \ 00000058 CC3194E5 LDR R3,[R4, #+460] \ 0000005C 20009FE5 LDR R0,??DrawAutoMSG_1+0x4 ;; auto_y \ 00000060 08208DE2 ADD R2,SP,#+8 \ 00000064 001090E5 LDR R1,[R0, #+0] \ 00000068 18009FE5 LDR R0,??DrawAutoMSG_1+0x8 ;; auto_x \ 0000006C 000090E5 LDR R0,[R0, #+0] \ 00000070 ........ _BLF PrintField,??PrintField??rA \ 00000074 08D08DE2 ADD SP,SP,#+8 607 } 608 } \ ??DrawAutoMSG_0: \ 00000078 40D08DE2 ADD SP,SP,#+64 ;; stack cleaning \ 0000007C 1080BDE8 POP {R4,PC} ;; return \ ??DrawAutoMSG_1: \ 00000080 ........ DC32 `?` \ 00000084 ........ DC32 auto_y \ 00000088 ........ DC32 auto_x 609 610 611 //---------------------------- Input away msg ---------------------------// 612 613 //Вводим сообщение какое хотим,а не то что прописали в конфиге 614 int input_awaymsg_id; 615 616 const HEADER_DESC input_awaymsg_hdr={0,0,131,21,NULL,(int)"Ввод автосообщения",LGP_NULL}; 617 void UpdateCLheader(void); \ In segment CODE, align 4, keep-with-next 618 int input_awaymsg_onkey(GUI *data, GUI_MSG *msg) 619 { \ input_awaymsg_onkey: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 \ 00000008 0080A0E1 MOV R8,R0 620 WSHDR *ws; 621 if (msg->keys==0x0FFF || msg->keys==VOL_DOWN_BUTTON) \ 0000000C ........ LDR R5,??DataTable22 ;; S_ICONS \ 00000010 0140A0E1 MOV R4,R1 \ 00000014 F200D4E1 LDRSH R0,[R4, #+2] \ 00000018 0060A0E3 MOV R6,#+0 \ 0000001C FF10A0E3 MOV R1,#+255 \ 00000020 F01E81E3 ORR R1,R1,#0xF00 \ 00000024 010050E1 CMP R0,R1 \ 00000028 15005013 CMPNE R0,#+21 \ 0000002C 4300001A BNE ??input_awaymsg_onkey_0 622 { 623 EDITCONTROL ec; 624 ExtractEditControl(data,2,&ec); 625 ws=ec.pWS; 626 zeromem(awayMsg,256); \ 00000030 ........ LDR R7,??DataTable25 ;; awayMsg \ 00000034 0D20A0E1 MOV R2,SP \ 00000038 0210A0E3 MOV R1,#+2 \ 0000003C 0800A0E1 MOV R0,R8 \ 00000040 690100EF SWI +361 \ 00000044 28909DE5 LDR R9,[SP, #+40] \ 00000048 401FA0E3 MOV R1,#+256 \ 0000004C 0700A0E1 MOV R0,R7 \ 00000050 1D0100EF SWI +285 627 int i=0; 628 for(i=0;iwsbody[0];i++) \ 00000054 000099E5 LDR R0,[R9, #+0] \ 00000058 00A0A0E3 MOV R10,#+0 \ 0000005C B000D0E1 LDRH R0,[R0, #+0] \ 00000060 000050E3 CMP R0,#+0 \ 00000064 0500001A BNE ??input_awaymsg_onkey_1 \ 00000068 080000EA B ??input_awaymsg_onkey_2 629 awayMsg[i]=char16to8(ws->wsbody[i+1]); \ ??input_awaymsg_onkey_3: \ 0000006C 8A0080E0 ADD R0,R0,R10, LSL #+1 \ 00000070 B200D0E1 LDRH R0,[R0, #+2] \ 00000074 ........ _BLF char16to8,??char16to8??rA \ 00000078 0700CAE7 STRB R0,[R10, +R7] \ 0000007C 01A08AE2 ADD R10,R10,#+1 \ ??input_awaymsg_onkey_1: \ 00000080 000099E5 LDR R0,[R9, #+0] \ 00000084 B010D0E1 LDRH R1,[R0, #+0] \ 00000088 01005AE1 CMP R10,R1 \ 0000008C F6FFFFBA BLT ??input_awaymsg_onkey_3 630 awayMsg[i]=0; \ ??input_awaymsg_onkey_2: \ 00000090 0760CAE7 STRB R6,[R10, +R7] 631 632 #ifdef kluchnik2 633 char *s; 634 ExtractEditControl(data,4,&ec); \ 00000094 0D20A0E1 MOV R2,SP \ 00000098 0410A0E3 MOV R1,#+4 \ 0000009C 0800A0E1 MOV R0,R8 \ 000000A0 690100EF SWI +361 635 ws=ec.pWS; \ 000000A4 28809DE5 LDR R8,[SP, #+40] 636 s=malloc(ws->wsbody[0]); 637 *s=0; 638 for(i=0;iwsbody[0];i++) \ 000000A8 00A0A0E3 MOV R10,#+0 \ 000000AC 000098E5 LDR R0,[R8, #+0] \ 000000B0 B000D0E1 LDRH R0,[R0, #+0] \ 000000B4 140000EF SWI +20 \ 000000B8 0090A0E1 MOV R9,R0 \ 000000BC 0060C9E5 STRB R6,[R9, #+0] \ 000000C0 000098E5 LDR R0,[R8, #+0] \ 000000C4 B000D0E1 LDRH R0,[R0, #+0] \ 000000C8 000050E3 CMP R0,#+0 \ 000000CC 0500001A BNE ??input_awaymsg_onkey_4 \ 000000D0 080000EA B ??input_awaymsg_onkey_5 639 *(s+i)=char16to8(ws->wsbody[i+1]); \ ??input_awaymsg_onkey_6: \ 000000D4 8A0080E0 ADD R0,R0,R10, LSL #+1 \ 000000D8 B200D0E1 LDRH R0,[R0, #+2] \ 000000DC ........ _BLF char16to8,??char16to8??rA \ 000000E0 0900CAE7 STRB R0,[R10, +R9] \ 000000E4 01A08AE2 ADD R10,R10,#+1 \ ??input_awaymsg_onkey_4: \ 000000E8 000098E5 LDR R0,[R8, #+0] \ 000000EC B010D0E1 LDRH R1,[R0, #+0] \ 000000F0 01005AE1 CMP R10,R1 \ 000000F4 F6FFFFBA BLT ??input_awaymsg_onkey_6 640 *(s+i)=0; \ ??input_awaymsg_onkey_5: \ 000000F8 0960CAE7 STRB R6,[R10, +R9] 641 strcat(awayMsg,s); \ 000000FC 0910A0E1 MOV R1,R9 \ 00000100 0700A0E1 MOV R0,R7 \ 00000104 170000EF SWI +23 642 mfree(s); \ 00000108 0900A0E1 MOV R0,R9 \ 0000010C 150000EF SWI +21 643 #endif 644 msg_away_timer=(AUTO_ENGADE*12); \ 00000110 ........ LDR R0,??DataTable24 ;; AUTO_ENGADE \ 00000114 0C10A0E3 MOV R1,#+12 \ 00000118 000090E5 LDR R0,[R0, #+0] \ 0000011C 910000E0 MUL R0,R1,R0 \ 00000120 1C0285E5 STR R0,[R5, #+540] 645 away_m=1; \ 00000124 0100A0E3 MOV R0,#+1 \ 00000128 200285E5 STR R0,[R5, #+544] 646 away_timer(); \ 0000012C ........ BL away_timer 647 UpdateCLheader(); \ 00000130 ........ BL UpdateCLheader 648 GeneralFunc_flag1(input_awaymsg_id,1); \ 00000134 400295E5 LDR R0,[R5, #+576] \ 00000138 0110A0E3 MOV R1,#+1 \ 0000013C 3D0100EF SWI +317 649 // GeneralFuncF1(1); 650 } 651 652 if(msg->keys==LEFT_SOFT || msg->keys==RED_BUTTON) \ ??input_awaymsg_onkey_0: \ 00000140 F200D4E1 LDRSH R0,[R4, #+2] \ 00000144 010050E3 CMP R0,#+1 \ 00000148 0C005013 CMPNE R0,#+12 \ 0000014C 0900001A BNE ??input_awaymsg_onkey_7 653 { 654 msg_away_timer=0; 655 away_m=0; 656 if(change_back_status) \ 00000150 280295E5 LDR R0,[R5, #+552] \ 00000154 1C6285E5 STR R6,[R5, #+540] \ 00000158 206285E5 STR R6,[R5, #+544] \ 0000015C 000050E3 CMP R0,#+0 \ 00000160 0300000A BEQ ??input_awaymsg_onkey_8 657 { 658 CurrentStatus=status_rem; \ 00000164 240295E5 LDR R0,[R5, #+548] \ 00000168 100285E5 STR R0,[R5, #+528] 659 set_my_status(); \ 0000016C ........ BL set_my_status 660 change_back_status=0; \ 00000170 286285E5 STR R6,[R5, #+552] 661 } 662 UpdateCLheader(); \ ??input_awaymsg_onkey_8: \ 00000174 ........ BL UpdateCLheader 663 } 664 return(0); \ ??input_awaymsg_onkey_7: \ 00000178 0000A0E3 MOV R0,#+0 \ 0000017C 2CD08DE2 ADD SP,SP,#+44 \ 00000180 F087BDE8 POP {R4-R10,PC} ;; return 665 } 666 \ In segment CODE, align 4, keep-with-next 667 void input_awaymsg_ghook(GUI *gui, int cmd) 668 { \ input_awaymsg_ghook: \ 00000000 00402DE9 PUSH {LR} 669 static SOFTKEY_DESC sk={0x0FFF,0x0000,(int)"Сохранить"}; 670 if (cmd==7) \ 00000004 070051E3 CMP R1,#+7 \ 00000008 0300001A BNE ??input_awaymsg_ghook_0 671 { 672 SetSoftKey(gui,&sk,SET_SOFT_KEY_N); \ 0000000C 2C109FE5 LDR R1,??input_awaymsg_ghook_1 ;; ??sk \ 00000010 0120A0E3 MOV R2,#+1 \ 00000014 680100EF SWI +360 \ 00000018 0080BDE8 POP {PC} 673 } 674 if(cmd==0xA) \ ??input_awaymsg_ghook_0: \ 0000001C 0A0051E3 CMP R1,#+10 \ 00000020 0100001A BNE ??input_awaymsg_ghook_2 675 { 676 DisableIDLETMR(); // Отключаем таймер выхода по таймауту \ 00000024 7F0100EF SWI +383 \ 00000028 0080BDE8 POP {PC} 677 } 678 if (cmd==0x0C) \ ??input_awaymsg_ghook_2: \ 0000002C 0C0051E3 CMP R1,#+12 \ 00000030 0080BD18 POPNE {PC} 679 { 680 EDIT_SetCursorPos(gui,1); \ 00000034 0110A0E3 MOV R1,#+1 \ 00000038 D40100EF SWI +468 681 } 682 if(cmd==0x03){} 683 } \ 0000003C 0080BDE8 POP {PC} ;; return \ ??input_awaymsg_ghook_1: \ 00000040 ........ DC32 ??sk 684 \ In segment CODE, align 4, keep-with-next 685 void input_awaymsg_locret(void){} \ input_awaymsg_locret: \ 00000000 1EFF2FE1 BX LR ;; return 686 687 SOFTKEY_DESC input_awaymsg_sk[]= 688 { 689 {0x0018,0x0000,(int)"Лев"}, 690 {0x0001,0x0000,(int)"Прав"}, 691 {0x003D,0x0000,(int)LGP_DOIT_PIC} 692 }; 693 694 SOFTKEYSTAB input_awaymsg_skt= 695 { 696 input_awaymsg_sk,0 697 }; 698 699 const INPUTDIA_DESC input_awaymsg_desc= 700 { 701 1, 702 input_awaymsg_onkey, 703 input_awaymsg_ghook, 704 (void *)input_awaymsg_locret, 705 0, 706 &input_awaymsg_skt, 707 {0,NULL,NULL,NULL}, 708 FONT_SMALL, 709 100, 710 101, 711 0, 712 0x00000000, 713 0x40000000 714 }; 715 \ In segment CODE, align 4, keep-with-next 716 void InputAwayMsg() 717 { \ InputAwayMsg: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 718 WSHDR *wss=AllocWS(256); 719 void *ma=malloc_adr(); 720 void *eq=AllocEQueue(ma, mfree_adr()); 721 EDITCONTROL ec; 722 PrepareEditControl(&ec); 723 wsprintf(wss,"%t","Сообщение:\n"); \ 00000004 A8519FE5 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 5B8F8FE2 ADR R8,??InputAwayMsg_0 ;; "%t" \ 00000040 382085E2 ADD R2,R5,#+56 \ 00000044 0810A0E1 MOV R1,R8 \ 00000048 0600A0E1 MOV R0,R6 \ 0000004C 240100EF SWI +292 724 ConstructEditControl(&ec,ECT_HEADER,ECF_NORMAL_STR,wss,32); \ 00000050 2000A0E3 MOV R0,#+32 \ 00000054 01002DE9 PUSH {R0} \ 00000058 0630A0E1 MOV R3,R6 \ 0000005C 0020A0E3 MOV R2,#+0 \ 00000060 0110A0E3 MOV R1,#+1 \ 00000064 04008DE2 ADD R0,SP,#+4 \ 00000068 650100EF SWI +357 725 AddEditControlToEditQend(eq,&ec,ma); \ 0000006C 0720A0E1 MOV R2,R7 \ 00000070 04108DE2 ADD R1,SP,#+4 \ 00000074 0400A0E1 MOV R0,R4 \ 00000078 660100EF SWI +358 726 727 PrepareEditControl(&ec); \ 0000007C 04008DE2 ADD R0,SP,#+4 \ 00000080 640100EF SWI +356 728 CutWSTR(wss,0); \ 00000084 0010A0E3 MOV R1,#+0 \ 00000088 0600A0E1 MOV R0,R6 \ 0000008C 260100EF SWI +294 729 ascii2ws(wss,awayMsg); \ 00000090 ........ LDR R1,??DataTable25 ;; awayMsg \ 00000094 0600A0E1 MOV R0,R6 \ 00000098 ........ _BLF ascii2ws,??ascii2ws??rA 730 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL,wss,255); \ 0000009C FF00A0E3 MOV R0,#+255 \ 000000A0 01002DE9 PUSH {R0} \ 000000A4 0630A0E1 MOV R3,R6 \ 000000A8 4020A0E3 MOV R2,#+64 \ 000000AC 0310A0E3 MOV R1,#+3 \ 000000B0 08008DE2 ADD R0,SP,#+8 \ 000000B4 650100EF SWI +357 731 AddEditControlToEditQend(eq,&ec,ma); \ 000000B8 0720A0E1 MOV R2,R7 \ 000000BC 08108DE2 ADD R1,SP,#+8 \ 000000C0 0400A0E1 MOV R0,R4 \ 000000C4 660100EF SWI +358 732 #ifdef kluchnik2 733 PrepareEditControl(&ec); \ 000000C8 08008DE2 ADD R0,SP,#+8 \ 000000CC 640100EF SWI +356 734 wsprintf(wss,"%t","Сообщение 2:\n"); \ 000000D0 442085E2 ADD R2,R5,#+68 \ 000000D4 0810A0E1 MOV R1,R8 \ 000000D8 0600A0E1 MOV R0,R6 \ 000000DC 240100EF SWI +292 735 ConstructEditControl(&ec,ECT_HEADER,ECF_NORMAL_STR,wss,32); \ 000000E0 2000A0E3 MOV R0,#+32 \ 000000E4 01002DE9 PUSH {R0} \ 000000E8 0630A0E1 MOV R3,R6 \ 000000EC 0020A0E3 MOV R2,#+0 \ 000000F0 0110A0E3 MOV R1,#+1 \ 000000F4 0C008DE2 ADD R0,SP,#+12 \ 000000F8 650100EF SWI +357 736 AddEditControlToEditQend(eq,&ec,ma); \ 000000FC 0720A0E1 MOV R2,R7 \ 00000100 0C108DE2 ADD R1,SP,#+12 \ 00000104 0400A0E1 MOV R0,R4 \ 00000108 660100EF SWI +358 737 738 ascii2ws(wss,"когда смогу отвечу:)"); \ 0000010C 541085E2 ADD R1,R5,#+84 \ 00000110 0600A0E1 MOV R0,R6 \ 00000114 ........ _BLF ascii2ws,??ascii2ws??rA 739 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL,wss,255); \ 00000118 FF00A0E3 MOV R0,#+255 \ 0000011C 01002DE9 PUSH {R0} \ 00000120 0630A0E1 MOV R3,R6 \ 00000124 4020A0E3 MOV R2,#+64 \ 00000128 0310A0E3 MOV R1,#+3 \ 0000012C 10008DE2 ADD R0,SP,#+16 \ 00000130 650100EF SWI +357 740 AddEditControlToEditQend(eq,&ec,ma); \ 00000134 0720A0E1 MOV R2,R7 \ 00000138 10108DE2 ADD R1,SP,#+16 \ 0000013C 0400A0E1 MOV R0,R4 \ 00000140 660100EF SWI +358 741 #endif 742 patch_header(&input_awaymsg_hdr); \ 00000144 6C0085E2 ADD R0,R5,#+108 \ 00000148 ........ _BLF patch_header,??patch_header??rA 743 patch_input(&input_awaymsg_desc); \ 0000014C 0000A0E3 MOV R0,#+0 \ 00000150 B801C5E1 STRH R0,[R5, #+24] \ 00000154 8A8100EF SWI +33162 \ 00000158 010080E2 ADD R0,R0,#+1 \ 0000015C BA01C5E1 STRH R0,[R5, #+26] \ 00000160 888100EF SWI +33160 \ 00000164 010040E2 SUB R0,R0,#+1 \ 00000168 BC01C5E1 STRH R0,[R5, #+28] \ 0000016C 898100EF SWI +33161 \ 00000170 0060A0E1 MOV R6,R0 \ 00000174 8B8100EF SWI +33163 \ 00000178 000046E0 SUB R0,R6,R0 \ 0000017C 010040E2 SUB R0,R0,#+1 \ 00000180 BE01C5E1 STRH R0,[R5, #+30] 744 745 input_awaymsg_id=CreateInputTextDialog(&input_awaymsg_desc,&input_awaymsg_hdr,eq,1,0);//создаем диалоговое окно \ 00000184 0000A0E3 MOV R0,#+0 \ 00000188 01002DE9 PUSH {R0} \ 0000018C 0130A0E3 MOV R3,#+1 \ 00000190 0420A0E1 MOV R2,R4 \ 00000194 6C1085E2 ADD R1,R5,#+108 \ 00000198 0500A0E1 MOV R0,R5 \ 0000019C 670100EF SWI +359 \ 000001A0 10109FE5 LDR R1,??InputAwayMsg_0+0x8 ;; S_ICONS + 576 \ 000001A4 000081E5 STR R0,[R1, #+0] 746 } \ 000001A8 40D08DE2 ADD SP,SP,#+64 \ 000001AC F081BDE8 POP {R4-R8,PC} ;; return \ ??InputAwayMsg_0: \ 000001B0 25740000 DC8 "%t",+0 \ 000001B4 ........ DC32 input_awaymsg_desc \ 000001B8 ........ DC32 S_ICONS + 576 747 748 749 //////////////////////////uptime////////////////////////// 750 #ifdef ELKA 751 GBSTMR sli_tmr; 752 void SLI_On() 753 { 754 if(Is_SLI_On) 755 SLI_SetState(1); 756 GBS_StartTimerProc(&sli_tmr, IN_TICKS(2) / 20, SLI_Off); 757 } 758 759 void SLI_Off() 760 { 761 SLI_SetState(2); 762 if(total_unread) 763 GBS_StartTimerProc(&sli_tmr, IN_TICKS(2) / 20, SLI_On); //26*SLI_time2 764 else 765 SLI_SetState(0); 766 } 767 768 void SLI_check() 769 { 770 if (total_unread) 771 SLI_On(); 772 } 773 774 void SLI_Timer() 775 { 776 GBS_StartTimerProc(&sli_tmr, 262, SLI_check); //262*SLI_time 777 } 778 #endif 779 \ In segment CODE, align 4, keep-with-next 780 void setup_ICONS(void) 781 { \ setup_ICONS: \ 00000000 30402DE9 PUSH {R4,R5,LR} 782 int i=0; \ 00000004 ........ LDR R5,??DataTable28 ;; S_ICONS \ 00000008 0040A0E3 MOV R4,#+0 783 do 784 { 785 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 ........ LDR R0,??DataTable54 ;; ICON_PATH \ 00000028 ........ _BLF MakeGlobalString,??MakeGlobalString??rA \ 0000002C 040185E7 STR R0,[R5, +R4, LSL #+2] 786 i++; \ ??setup_ICONS_1: \ 00000030 014084E2 ADD R4,R4,#+1 787 } 788 while(i>2,stop_vibra); \ 0000004C 3610A0E3 MOV R1,#+54 \ 00000050 000000EA B ??start_vibra_2 1067 else 1068 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,stop_vibra); \ ??start_vibra_1: \ 00000054 6C10A0E3 MOV R1,#+108 \ ??start_vibra_2: \ 00000058 4D0000EF SWI +77 1069 } 1070 } \ 0000005C 1080BDE8 POP {R4,PC} ;; return \ ??start_vibra_0: \ 00000060 ........ DC32 stop_vibra 1071 \ In segment CODE, align 4, keep-with-next 1072 void stop_vibra(void) 1073 { \ stop_vibra: \ 00000000 00402DE9 PUSH {LR} 1074 SetVibration(0); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 7C0000EF SWI +124 1075 if (--vibra_count) \ 0000000C ........ LDR R0,??DataTable53 ;; S_ICONS \ 00000010 5C1290E5 LDR R1,[R0, #+604] \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 5C1280E5 STR R1,[R0, #+604] \ 0000001C 0080BD08 POPEQ {PC} 1076 { 1077 if(VIBR_TYPE) \ 00000020 2C209FE5 LDR R2,??stop_vibra_0 ;; start_vibra \ 00000024 CC10A0E3 MOV R1,#+204 \ 00000028 641D81E3 ORR R1,R1,#0x1900 \ 0000002C 000081E0 ADD R0,R1,R0 \ 00000030 ........ LDR R1,??DataTable45 ;; VIBR_TYPE \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 0100000A BEQ ??stop_vibra_1 1078 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>5,start_vibra); \ 00000040 0610A0E3 MOV R1,#+6 \ 00000044 000000EA B ??stop_vibra_2 1079 else 1080 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,start_vibra); \ ??stop_vibra_1: \ 00000048 6C10A0E3 MOV R1,#+108 \ ??stop_vibra_2: \ 0000004C 4D0000EF SWI +77 1081 } 1082 } \ 00000050 0080BDE8 POP {PC} ;; return \ ??stop_vibra_0: \ 00000054 ........ DC32 start_vibra 1083 \ In segment CODE, align 4, keep-with-next 1084 void start_vibra2(void) 1085 { 1086 void stop_vibra2(void); 1087 1088 SetVibration(vibraPower); \ start_vibra2: \ 00000000 ........ LDR R0,??DataTable42 ;; vibraPower \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 7C0000EF SWI +124 1089 if(VIBR_TYPE) \ 00000010 ........ LDR R1,??DataTable45 ;; VIBR_TYPE \ 00000014 18009FE5 LDR R0,??start_vibra2_0 ;; S_ICONS + 6604 \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 14209FE5 LDR R2,??start_vibra2_0+0x4 ;; stop_vibra2 \ 00000020 000051E3 CMP R1,#+0 1090 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>2,stop_vibra2); \ 00000024 3610A013 MOVNE R1,#+54 1091 else 1092 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,stop_vibra2); \ 00000028 6C10A003 MOVEQ R1,#+108 \ 0000002C 4D0000EF SWI +77 1093 } \ 00000030 0080BDE8 POP {PC} ;; return \ ??start_vibra2_0: \ 00000034 ........ DC32 S_ICONS + 6604 \ 00000038 ........ DC32 stop_vibra2 1094 \ In segment CODE, align 4, keep-with-next 1095 void stop_vibra2(void) 1096 { \ stop_vibra2: \ 00000000 00402DE9 PUSH {LR} 1097 SetVibration(0); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 7C0000EF SWI +124 1098 if (--vibra_count) \ 0000000C ........ LDR R0,??DataTable53 ;; S_ICONS \ 00000010 5C1290E5 LDR R1,[R0, #+604] \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 5C1280E5 STR R1,[R0, #+604] \ 0000001C 0080BD08 POPEQ {PC} 1099 { 1100 if(VIBR_TYPE) \ 00000020 2C209FE5 LDR R2,??stop_vibra2_0 ;; start_vibra2 \ 00000024 CC10A0E3 MOV R1,#+204 \ 00000028 641D81E3 ORR R1,R1,#0x1900 \ 0000002C 000081E0 ADD R0,R1,R0 \ 00000030 ........ LDR R1,??DataTable45 ;; VIBR_TYPE \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 0100000A BEQ ??stop_vibra2_1 1101 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>5,start_vibra2); \ 00000040 0610A0E3 MOV R1,#+6 \ 00000044 000000EA B ??stop_vibra2_2 1102 else 1103 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,start_vibra2); \ ??stop_vibra2_1: \ 00000048 6C10A0E3 MOV R1,#+108 \ ??stop_vibra2_2: \ 0000004C 4D0000EF SWI +77 1104 } 1105 } \ 00000050 0080BDE8 POP {PC} ;; return \ ??stop_vibra2_0: \ 00000054 ........ DC32 start_vibra2 1106 \ In segment CODE, align 4, keep-with-next 1107 void ChangeVibra(void) 1108 { 1109 if (!(Is_Vibra_Enabled=!(Is_Vibra_Enabled))) \ ChangeVibra: \ 00000000 ........ LDR R0,??DataTable53 ;; S_ICONS \ 00000004 00402DE9 PUSH {LR} \ 00000008 0C1290E5 LDR R1,[R0, #+524] \ 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,??DataTable52 ;; 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 1151 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 1152 if ((fsize=stat.size)<=0) goto L1; \ 00000060 08709DE5 LDR R7,[SP, #+8] \ 00000064 010057E3 CMP R7,#+1 \ 00000068 070000BA BLT ??LoadTemplates_1 1153 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 1154 { 1155 L1: 1156 strcpy(fn+i,"\\0.txt"); \ ??LoadTemplates_1: \ 0000008C 081086E2 ADD R1,R6,#+8 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 1A0000EF SWI +26 1157 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 1158 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 1159 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 1160 } 1161 if (f==-1) return 0; \ ??LoadTemplates_2: \ 000000E0 040058E1 CMP R8,R4 \ 000000E4 F1FFFF0A BEQ ??LoadTemplates_4 1162 p=templates_chars=malloc(fsize+1); \ 000000E8 ........ LDR R4,??DataTable53 ;; S_ICONS \ 000000EC 010087E2 ADD R0,R7,#+1 \ 000000F0 140000EF SWI +20 \ 000000F4 600284E5 STR R0,[R4, #+608] \ 000000F8 0060A0E1 MOV R6,R0 1163 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] 1164 fclose(f,&ul); \ 00000118 0D10A0E1 MOV R1,SP \ 0000011C 0800A0E1 MOV R0,R8 \ 00000120 0D0000EF SWI +13 1165 i=0; \ 00000124 0070A0E3 MOV R7,#+0 1166 pp=p; \ 00000128 0680A0E1 MOV R8,R6 \ 0000012C 020000EA B ??LoadTemplates_6 1167 for(;;) 1168 { 1169 c=*p; 1170 if (c<32) 1171 { 1172 if (pp&&(pp!=p)) 1173 { 1174 templates_lines=realloc(templates_lines,(i+1)*sizeof(char *)); 1175 templates_lines[i++]=pp; 1176 } 1177 pp=NULL; 1178 if (!c) break; 1179 *p=0; 1180 } 1181 else 1182 { 1183 if (pp==NULL) pp=p; \ ??LoadTemplates_7: \ 00000130 000058E3 CMP R8,#+0 \ 00000134 0680A001 MOVEQ R8,R6 1184 } 1185 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 640294E5 LDR R0,[R4, #+612] \ 00000158 01A087E2 ADD R10,R7,#+1 \ 0000015C 0A11A0E1 LSL R1,R10,#+2 \ 00000160 BA0000EF SWI +186 \ 00000164 640284E5 STR R0,[R4, #+612] \ 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 1186 } 1187 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 `?` 1188 } 1189 1190 1191 1192 //---------------------- AUTOBOT MESSAGE -------------------------// 1193 1194 1195 #ifdef kluchnik 1196 char *bot_chars; //Собственно файл 1197 char **bot_lines; //Массив указателей на строки 1198 1199 void FreeBotMessage(void) 1200 { 1201 if (bot_lines) mfree(bot_lines); 1202 if (bot_chars) mfree(bot_chars); 1203 bot_lines=NULL; 1204 bot_chars=NULL; 1205 } 1206 1207 int LoadBotMessage(unsigned int uin) 1208 { 1209 FSTATS stat; 1210 char fn[256]; 1211 int f; 1212 unsigned int ul; 1213 int i; 1214 int fsize; 1215 char *p; 1216 char *pp; 1217 int c; 1218 FreeBotMessage(); 1219 strcpy(fn,TEMPLATES_PATH); 1220 i=strlen(fn); 1221 sprintf(fn+i,"\\bot_%d.txt",uin); 1222 if (GetFileStats(fn,&stat,&ul)==-1) goto L1; 1223 if ((fsize=stat.size)<=0) goto L1; 1224 if ((f=fopen(fn,A_ReadOnly+A_BIN,P_READ,&ul))==-1) 1225 { 1226 L1: 1227 strcpy(fn+i,"\\bot.txt"); 1228 if (GetFileStats(fn,&stat,&ul)==-1) return 0; 1229 if ((fsize=stat.size)<=0) return 0; 1230 f=fopen(fn,A_ReadOnly+A_BIN,P_READ,&ul); 1231 } 1232 if (f==-1) return 0; 1233 p=bot_chars=malloc(fsize+1); 1234 p[fread(f,p,fsize,&ul)]=0; 1235 fclose(f,&ul); 1236 i=0; 1237 pp=p; 1238 for(;;) 1239 { 1240 c=*p; 1241 if (c<32) 1242 { 1243 if (pp&&(pp!=p)) 1244 { 1245 bot_lines=realloc(bot_lines,(i+1)*sizeof(char *)); 1246 bot_lines[i++]=pp; 1247 } 1248 pp=NULL; 1249 if (!c) break; 1250 *p=0; 1251 } 1252 else 1253 { 1254 if (pp==NULL) pp=p; 1255 } 1256 p++; 1257 } 1258 return i; 1259 } 1260 #endif 1261 1262 //=================================================================== 1263 1264 typedef struct 1265 { 1266 CSM_RAM csm; 1267 int gui_id; 1268 }MAIN_CSM; 1269 1270 typedef struct 1271 { 1272 GUI gui; 1273 WSHDR *ws1; 1274 WSHDR *ws2; 1275 int i1; 1276 }MAIN_GUI; 1277 1278 1279 1280 int RXstate=EOP; //-sizeof(RXpkt)..-1 - receive header, 0..RXpkt.data_len - receive data 1281 \ In segment DATA_Z, align 4, align-sorted 1282 TPKT RXbuf; \ RXbuf: \ 00000000 DS8 16392 \ In segment DATA_Z, align 4, align-sorted 1283 TPKT TXbuf; \ TXbuf: \ 00000000 DS8 16392 1284 1285 int connect_state=0; 1286 1287 int sock=-1; 1288 1289 volatile unsigned long TOTALRECEIVED; 1290 volatile unsigned long TOTALSENDED; 1291 volatile unsigned long ALLTOTALRECEIVED; //by BoBa 10.07 1292 volatile unsigned long ALLTOTALSENDED; 1293 1294 volatile int sendq_l=0; //Длинна очереди для send 1295 volatile void *sendq_p=NULL; //указатель очереди 1296 1297 volatile int is_gprs_online=1; 1298 1299 GBSTMR reconnect_tmr; 1300 1301 extern void kill_data(void *p,void (*func_p)(void *)); 1302 \ In segment CODE, align 4, keep-with-next 1303 void ElfKiller(void) 1304 { \ ElfKiller: \ 00000000 00402DE9 PUSH {LR} 1305 extern void *ELF_BEGIN; 1306 kill_data(&ELF_BEGIN,(void (*)(void *))mfree_adr()); \ 00000004 158000EF SWI +32789 \ 00000008 0010A0E1 MOV R1,R0 \ 0000000C 04009FE5 LDR R0,??ElfKiller_0 ;; ELF_BEGIN \ 00000010 0040BDE8 POP {LR} ;; Pop \ 00000014 ........ _BF kill_data,??kill_data??rA ;; tailcall \ ??ElfKiller_0: \ 00000018 ........ DC32 ELF_BEGIN 1307 } 1308 1309 int total_unread; 1310 1311 volatile CLIST *cltop; 1312 1313 volatile unsigned int GROUP_CACHE; //Текущая группа для добавления 1314 1315 volatile int contactlist_menu_id; 1316 1317 GBSTMR tmr_active; 1318 1319 volatile int edchat_id; 1320 1321 //Применяется для добавления сообщений 1322 //CLIST *edcontact; 1323 //void *edgui_data; 1324 1325 static int prev_clmenu_itemcount; 1326 1327 char clm_hdr_text[64]; 1328 static const char def_clm_hdr_text[] = LG_CLTITLE; 1329 static const char key_clm_hdr_text[] = LG_CLT9INP; 1330 #ifdef kluchnik 1331 int ICON_HD; 1332 static const HEADER_DESC contactlist_menuhdr = {0, 0, 0, 0, S_ICONS+IS_NULLICON, (int)clm_hdr_text, LGP_NULL}; 1333 #else 1334 static const HEADER_DESC contactlist_menuhdr = {0, 0, 0, 0, S_ICONS+ICON_HEAD, (int)clm_hdr_text, LGP_NULL}; 1335 #endif 1336 1337 static const int menusoftkeys[] = {0,1,2}; 1338 static const SOFTKEY_DESC menu_sk[] = 1339 { 1340 {0x0018, 0x0000, (int)LG_SELECT}, 1341 {0x0001, 0x0000, (int)LG_CLOSE}, 1342 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 1343 }; 1344 1345 char clmenu_sk_r[16]; 1346 static const char def_clmenu_sk_r[] = LG_CLOSE; 1347 static const char key_clmenu_sk_r[] = LG_CLEAR; 1348 1349 static const SOFTKEY_DESC clmenu_sk[]= 1350 { 1351 {0x0018, 0x0000, (int)LG_OPTIONS}, 1352 {0x0001, 0x0000, (int)clmenu_sk_r}, 1353 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 1354 }; 1355 1356 const SOFTKEYSTAB menu_skt = 1357 { 1358 menu_sk, 0 1359 }; 1360 1361 static const SOFTKEYSTAB clmenu_skt = 1362 { 1363 clmenu_sk, 0 1364 }; 1365 1366 void contactlist_menu_ghook(void *data, int cmd); 1367 int contactlist_menu_onkey(void *data, GUI_MSG *msg); 1368 void contactlist_menu_iconhndl(void *data, int curitem, void *unk); 1369 1370 #ifdef USE_MLMENU 1371 static const ML_MENU_DESC contactlist_menu= 1372 { 1373 8,contactlist_menu_onkey,contactlist_menu_ghook,NULL, 1374 menusoftkeys, 1375 &clmenu_skt, 1376 0x11, //+0x400 1377 contactlist_menu_iconhndl, 1378 NULL, //Items 1379 NULL, //Procs 1380 0, //n 1381 1 //Добавочных строк 1382 }; 1383 #else 1384 static const MENU_DESC contactlist_menu= 1385 { 1386 8,contactlist_menu_onkey,contactlist_menu_ghook,NULL, 1387 menusoftkeys, 1388 &clmenu_skt, 1389 0x11, //+0x400 1390 contactlist_menu_iconhndl, 1391 NULL, //Items 1392 NULL, //Procs 1393 0 //n 1394 }; 1395 #endif 1396 1397 //GBSTMR tmr_ping; 1398 int tenseconds_to_ping; 1399 \ In segment CODE, align 4, keep-with-next 1400 LOGQ *NewLOGQ(const char *s) 1401 { \ NewLOGQ: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 1402 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 1403 zeromem(p,sizeof(LOGQ)); \ 00000018 6010A0E3 MOV R1,#+96 \ 0000001C 1D0100EF SWI +285 1404 strcpy(p->text,s); \ 00000020 0410A0E1 MOV R1,R4 \ 00000024 600085E2 ADD R0,R5,#+96 \ 00000028 1A0000EF SWI +26 1405 return p; \ 0000002C 0500A0E1 MOV R0,R5 \ 00000030 3080BDE8 POP {R4,R5,PC} ;; return 1406 } 1407 \ In segment CODE, align 4, keep-with-next 1408 LOGQ *LastLOGQ(LOGQ **pp) 1409 { 1410 LOGQ *q=*pp; \ LastLOGQ: \ 00000000 000090E5 LDR R0,[R0, #+0] 1411 if (q) \ 00000004 000050E3 CMP R0,#+0 \ 00000008 1EFF2F01 BXEQ LR \ 0000000C 000000EA B ??LastLOGQ_0 1412 { 1413 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 1414 } 1415 return(q); \ 00000020 1EFF2FE1 BX LR ;; return 1416 } 1417 1418 //Уничтожить лог \ In segment CODE, align 4, keep-with-next 1419 void FreeLOGQ(LOGQ **pp) 1420 { \ FreeLOGQ: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0010A0E1 MOV R1,R0 1421 LOGQ *p=*pp; \ 00000008 000091E5 LDR R0,[R1, #+0] 1422 *pp=NULL; //Сразу обрежем \ 0000000C 0020A0E3 MOV R2,#+0 \ 00000010 002081E5 STR R2,[R1, #+0] \ 00000014 000050E3 CMP R0,#+0 \ 00000018 1080BD08 POPEQ {R4,PC} 1423 while(p) 1424 { 1425 LOGQ *np=p->next; \ ??FreeLOGQ_0: \ 0000001C 004090E5 LDR R4,[R0, #+0] 1426 mfree(p); \ 00000020 150000EF SWI +21 1427 p=np; \ 00000024 0400B0E1 MOVS R0,R4 1428 } \ 00000028 FBFFFF1A BNE ??FreeLOGQ_0 1429 } \ 0000002C 1080BDE8 POP {R4,PC} ;; return 1430 1431 //Удалить элемент из лога \ In segment CODE, align 4, keep-with-next 1432 void RemoveLOGQ(LOGQ **queue, LOGQ *p) 1433 { \ RemoveLOGQ: \ 00000000 00402DE9 PUSH {LR} 1434 LOGQ *q=(LOGQ *)queue; \ 00000004 000000EA B ??RemoveLOGQ_0 1435 LOGQ *qp; 1436 while(qp=q->next) 1437 { 1438 if (qp==p) 1439 { 1440 q->next=p->next; 1441 break; 1442 } 1443 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] 1444 } 1445 mfree(p); //Если элемент вообще не в логе \ ??RemoveLOGQ_2: \ 00000028 0100A0E1 MOV R0,R1 \ 0000002C 150000EF SWI +21 1446 } \ 00000030 0080BDE8 POP {PC} ;; return 1447 1448 //Добавить элемент в лог \ In segment CODE, align 4, keep-with-next 1449 int AddLOGQ(LOGQ **queue, LOGQ *p) 1450 { 1451 LOGQ *q=(LOGQ *)queue; 1452 LOGQ *qp; 1453 int i=0; \ AddLOGQ: \ 00000000 0020A0E3 MOV R2,#+0 \ 00000004 000000EA B ??AddLOGQ_0 1454 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 1455 p->next=NULL; \ 0000001C 003081E5 STR R3,[R1, #+0] 1456 q->next=p; \ 00000020 001080E5 STR R1,[R0, #+0] 1457 return(i+1); //Теперь всего в логе элементов \ 00000024 0200A0E1 MOV R0,R2 \ 00000028 1EFF2FE1 BX LR ;; return 1458 } 1459 \ In segment CODE, align 4, keep-with-next 1460 char *GetLastXTextLOGQ(CLIST *t) 1461 { 1462 LOGQ *p = t->log; \ GetLastXTextLOGQ: \ 00000000 901090E5 LDR R1,[R0, #+144] 1463 char *s = 0; \ 00000004 0000A0E3 MOV R0,#+0 1464 if(!p) return 0; \ 00000008 000051E3 CMP R1,#+0 \ 0000000C 0500001A BNE ??GetLastXTextLOGQ_0 \ 00000010 1EFF2FE1 BX LR 1465 while(p->next) 1466 { 1467 if((p->type&0x0F)==3) \ ??GetLastXTextLOGQ_1: \ 00000014 0C3091E5 LDR R3,[R1, #+12] \ 00000018 0F3003E2 AND R3,R3,#0xF \ 0000001C 030053E3 CMP R3,#+3 1468 s = p->text; \ 00000020 60008102 ADDEQ R0,R1,#+96 1469 p = p->next; \ 00000024 0210A0E1 MOV R1,R2 1470 } \ ??GetLastXTextLOGQ_0: \ 00000028 002091E5 LDR R2,[R1, #+0] \ 0000002C 000052E3 CMP R2,#+0 \ 00000030 F7FFFF1A BNE ??GetLastXTextLOGQ_1 1471 if((p->type&0x0F)==3) \ 00000034 0C2091E5 LDR R2,[R1, #+12] \ 00000038 0F2002E2 AND R2,R2,#0xF \ 0000003C 030052E3 CMP R2,#+3 1472 s = p->text; \ 00000040 60008102 ADDEQ R0,R1,#+96 1473 return s; \ 00000044 1EFF2FE1 BX LR ;; return 1474 } 1475 \ In segment CODE, align 4, keep-with-next 1476 int GetIconIndex(CLIST *t) 1477 { 1478 unsigned short s; 1479 if (t) \ GetIconIndex: \ 00000000 000050E3 CMP R0,#+0 \ 00000004 3400000A BEQ ??GetIconIndex_0 1480 { 1481 s=t->state; 1482 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 1483 if (t->isunread) \ 0000001C 800090E5 LDR R0,[R0, #+128] \ 00000020 000050E3 CMP R0,#+0 1484 return(IS_MSG); \ 00000024 0D00A013 MOVNE R0,#+13 \ 00000028 1EFF2F11 BXNE LR 1485 else 1486 { 1487 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 1488 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 1489 if ((s&0xF000)==0x3000) return (IS_EVIL); \ 0000004C C00D52E3 CMP R2,#+12288 \ 00000050 0700A003 MOVEQ R0,#+7 \ 00000054 1EFF2F01 BXEQ LR 1490 if ((s&0xF000)==0x4000) return (IS_DEPRESSION); \ 00000058 400C52E3 CMP R2,#+16384 \ 0000005C 0600A003 MOVEQ R0,#+6 \ 00000060 1EFF2F01 BXEQ LR 1491 if ((s&0xF000)==0x5000) return (IS_HOME); \ 00000064 500C52E3 CMP R2,#+20480 \ 00000068 0800A003 MOVEQ R0,#+8 \ 0000006C 1EFF2F01 BXEQ LR 1492 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 1493 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 1494 if (s & 0x0001) return(IS_AWAY); \ ??GetIconIndex_1: \ 00000090 010011E3 TST R1,#0x1 \ 00000094 0200A013 MOVNE R0,#+2 \ 00000098 1EFF2F11 BXNE LR 1495 if (s & 0x0005) return(IS_NA); \ 0000009C 050011E3 TST R1,#0x5 \ 000000A0 0300A013 MOVNE R0,#+3 \ 000000A4 1EFF2F11 BXNE LR 1496 if (s & 0x0011) return(IS_OCCUPIED); \ 000000A8 110011E3 TST R1,#0x11 \ 000000AC 0400A013 MOVNE R0,#+4 \ 000000B0 1EFF2F11 BXNE LR 1497 if (s & 0x0013) return(IS_DND); \ 000000B4 130011E3 TST R1,#0x13 \ 000000B8 0500A013 MOVNE R0,#+5 \ 000000BC 1EFF2F11 BXNE LR 1498 if (s & 0x0002) return(IS_FFC); \ 000000C0 020011E3 TST R1,#0x2 \ 000000C4 EFFFFF1A BNE ??GetIconIndex_2 1499 if (s & 0x0100) return(IS_INVISIBLE); \ 000000C8 400F11E3 TST R1,#0x100 \ 000000CC 0100A013 MOVNE R0,#+1 \ 000000D0 1EFF2F11 BXNE LR 1500 } 1501 } 1502 else 1503 { 1504 return(IS_UNKNOWN); 1505 } 1506 return(IS_ONLINE); \ 000000D4 0B00A0E3 MOV R0,#+11 \ 000000D8 1EFF2FE1 BX LR \ ??GetIconIndex_0: \ 000000DC 0E00A0E3 MOV R0,#+14 \ 000000E0 1EFF2FE1 BX LR ;; return 1507 } 1508 \ In segment CODE, align 4, keep-with-next 1509 LOGQ *FindContactLOGQByAck(TPKT *p) 1510 { \ FindContactLOGQByAck: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 1511 CLIST *t; 1512 LockSched(); \ 00000008 460100EF SWI +326 1513 t=FindContactByUin(p->pkt.uin); \ 0000000C 000094E5 LDR R0,[R4, #+0] \ 00000010 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000014 0050A0E1 MOV R5,R0 1514 UnlockSched(); \ 00000018 470100EF SWI +327 1515 unsigned int id=*((unsigned short*)(p->data)); \ 0000001C B840D4E1 LDRH R4,[R4, #+8] 1516 LOGQ *q; 1517 if (!t) return NULL; \ 00000020 000055E3 CMP R5,#+0 \ 00000024 0000A003 MOVEQ R0,#+0 \ 00000028 3080BD08 POPEQ {R4,R5,PC} 1518 LockSched(); \ 0000002C 460100EF SWI +326 1519 q=t->log; \ 00000030 905095E5 LDR R5,[R5, #+144] \ 00000034 000000EA B ??FindContactLOGQByAck_0 1520 while(q) 1521 { 1522 if (q->ID==id) break; 1523 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 1524 } 1525 UnlockSched(); \ 0000004C 470100EF SWI +327 1526 return q; \ 00000050 0500A0E1 MOV R0,R5 \ 00000054 3080BDE8 POP {R4,R5,PC} ;; return 1527 } 1528 1529 1530 1531 1532 /*----------------------------- SAVE CONTACT LIST TO FILE --------------------------------*/ 1533 \ In segment CODE, align 4, keep-with-next 1534 void CreateCLFile(void) 1535 { \ CreateCLFile: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 42DF4DE2 SUB SP,SP,#+264 1536 CLIST *t; 1537 t=(CLIST *)(&cltop); \ 00000008 ........ LDR R5,??DataTable51 ;; S_ICONS + 660 1538 char *s=malloc(128); 1539 volatile int hFile_cl; 1540 unsigned int io_error_cl = 0; 1541 char fn[256]; 1542 strcpy(fn,TEMPLATES_PATH); 1543 strcat(fn,"\\local.cl"); \ 0000000C D4609FE5 LDR R6,??CreateCLFile_0 ;; `?` \ 00000010 8000A0E3 MOV R0,#+128 \ 00000014 140000EF SWI +20 \ 00000018 0010A0E3 MOV R1,#+0 \ 0000001C 00108DE5 STR R1,[SP, #+0] \ 00000020 ........ LDR R1,??DataTable52 ;; TEMPLATES_PATH \ 00000024 0040A0E1 MOV R4,R0 \ 00000028 08008DE2 ADD R0,SP,#+8 \ 0000002C 1A0000EF SWI +26 \ 00000030 0610A0E1 MOV R1,R6 \ 00000034 08008DE2 ADD R0,SP,#+8 \ 00000038 170000EF SWI +23 1544 unlink(fn,&io_error_cl); \ 0000003C 0D10A0E1 MOV R1,SP \ 00000040 08008DE2 ADD R0,SP,#+8 \ 00000044 6B0100EF SWI +363 1545 hFile_cl = fopen(fn,A_ReadWrite + A_Create + A_Append + A_BIN,P_READ+P_WRITE, &io_error_cl); \ 00000048 0D30A0E1 MOV R3,SP \ 0000004C 602FA0E3 MOV R2,#+384 \ 00000050 0A10A0E3 MOV R1,#+10 \ 00000054 811C81E3 ORR R1,R1,#0x8100 \ 00000058 08008DE2 ADD R0,SP,#+8 \ 0000005C 0A0000EF SWI +10 \ 00000060 04008DE5 STR R0,[SP, #+4] 1546 if(hFile_cl!=-1) \ 00000064 04009DE5 LDR R0,[SP, #+4] \ 00000068 010070E3 CMN R0,#+1 \ 0000006C 1800001A BNE ??CreateCLFile_1 1547 { 1548 while(t=(CLIST *)(t->next)) 1549 { 1550 if(!t->isgroup) 1551 { 1552 sprintf(s, ";%d;%s;;;\r\n", t->uin, t->name); 1553 fwrite(hFile_cl, s, strlen(s), &io_error_cl); 1554 } 1555 } 1556 ShowMSG(2,(int)"Saved local.cl"); 1557 } 1558 else ShowMSG(2,(int)"Can't save local.cl"); \ 00000070 281086E2 ADD R1,R6,#+40 \ ??CreateCLFile_2: \ 00000074 0200A0E3 MOV R0,#+2 \ 00000078 480100EF SWI +328 1559 fclose(hFile_cl, &io_error_cl); \ 0000007C 04009DE5 LDR R0,[SP, #+4] \ 00000080 0D10A0E1 MOV R1,SP \ 00000084 0D0000EF SWI +13 1560 mfree(s); \ 00000088 0400A0E1 MOV R0,R4 \ 0000008C 150000EF SWI +21 1561 } \ 00000090 42DF8DE2 ADD SP,SP,#+264 \ 00000094 7080BDE8 POP {R4-R6,PC} ;; return \ ??CreateCLFile_3: \ 00000098 080095E5 LDR R0,[R5, #+8] \ 0000009C 000050E3 CMP R0,#+0 \ 000000A0 0B00001A BNE ??CreateCLFile_1 \ 000000A4 0C2095E5 LDR R2,[R5, #+12] \ 000000A8 143085E2 ADD R3,R5,#+20 \ 000000AC 0C1086E2 ADD R1,R6,#+12 \ 000000B0 0400A0E1 MOV R0,R4 \ 000000B4 160000EF SWI +22 \ 000000B8 0400A0E1 MOV R0,R4 \ 000000BC 1B0000EF SWI +27 \ 000000C0 0D30A0E1 MOV R3,SP \ 000000C4 0020A0E1 MOV R2,R0 \ 000000C8 04009DE5 LDR R0,[SP, #+4] \ 000000CC 0410A0E1 MOV R1,R4 \ 000000D0 0C0000EF SWI +12 \ ??CreateCLFile_1: \ 000000D4 005095E5 LDR R5,[R5, #+0] \ 000000D8 000055E3 CMP R5,#+0 \ 000000DC EDFFFF1A BNE ??CreateCLFile_3 \ 000000E0 181086E2 ADD R1,R6,#+24 \ 000000E4 E2FFFFEA B ??CreateCLFile_2 \ ??CreateCLFile_0: \ 000000E8 ........ DC32 `?` 1562 1563 /*-----------------------------------------------------------------------------------------*/ 1564 1565 char on_off_buf[128]; 1566 int on_off_timer=0; 1567 char ContactT9Key[32]; 1568 int kopa_online; 1569 int kopa_kontaktu; 1570 char status[64]; 1571 1572 #define nmeth 24 1573 1574 void * gui_methods2[nmeth]; 1575 void * old_redraw; 1576 1577 typedef void (*tredraw)(void *data); 1578 char prozr[]={0x00,0x00,0x00,0x64}; \ In segment CODE, align 4, keep-with-next 1579 void new_redraw(void *data) 1580 { \ new_redraw: \ 00000000 30402DE9 PUSH {R4,R5,LR} 1581 ((tredraw)old_redraw)(data); \ 00000004 ........ LDR R4,??DataTable53 ;; S_ICONS \ 00000008 40D04DE2 SUB SP,SP,#+64 \ 0000000C 181394E5 LDR R1,[R4, #+792] \ 00000010 31FF2FE1 BLX R1 1582 char s[64]; 1583 sprintf(s,"%s\\HEAD.png",ICON_PATH); \ 00000014 ........ LDR R2,??DataTable54 ;; ICON_PATH \ 00000018 64109FE5 LDR R1,??new_redraw_0 ;; `?` \ 0000001C 0D00A0E1 MOV R0,SP \ 00000020 160000EF SWI +22 1584 int x=GetImgWidth((int)s); \ 00000024 0D00A0E1 MOV R0,SP \ 00000028 220000EF SWI +34 \ 0000002C 0050A0E1 MOV R5,R0 1585 /*#ifdef ELKA 1586 #else 1587 DrawRectangle(0,YDISP,ScreenW()-1,ScreenH()-1,0,prozr,prozr); 1588 #endif*/ 1589 PrintText(x+7,YDISP+2,status,0,fonto,1,1,0,0,ScreenW()-x); \ 00000030 888100EF SWI +33160 \ 00000034 050040E0 SUB R0,R0,R5 \ 00000038 01002DE9 PUSH {R0} \ 0000003C 0030A0E3 MOV R3,#+0 \ 00000040 0210A0E3 MOV R1,#+2 \ 00000044 0000A0E3 MOV R0,#+0 \ 00000048 01002DE9 PUSH {R0} \ 0000004C 01002DE9 PUSH {R0} \ 00000050 0100A0E3 MOV R0,#+1 \ 00000054 01002DE9 PUSH {R0} \ 00000058 01002DE9 PUSH {R0} \ 0000005C ........ LDR R0,??DataTable55 ;; fonto \ 00000060 000090E5 LDR R0,[R0, #+0] \ 00000064 01002DE9 PUSH {R0} \ 00000068 CC00A0E3 MOV R0,#+204 \ 0000006C 680D80E3 ORR R0,R0,#0x1A00 \ 00000070 042080E0 ADD R2,R0,R4 \ 00000074 070085E2 ADD R0,R5,#+7 \ 00000078 ........ _BLF PrintText,??PrintText??rA 1590 #ifdef kluchnik 1591 switch(CurrentPrivateStatus) 1592 { 1593 case 0: ICON_HD=ICON_ALL_CAN_SEE; break; 1594 case 1: ICON_HD=ICON_NOBODY_CAN_SEE; break; 1595 case 2: ICON_HD=ICON_VISLIST_CAN_SEE; break; 1596 case 3: ICON_HD=ICON_INVISLIST_CANNOT_SEE; break; 1597 case 4: ICON_HD=ICON_CONTACTLIST_CAN_SEE; break; 1598 default : ICON_HD=ICON_HEAD; break; 1599 } 1600 int icon; 1601 icon=*(S_ICONS+ICON_HD); 1602 DrawImg(3,YDISP+3,icon); 1603 #endif 1604 } \ 0000007C 58D08DE2 ADD SP,SP,#+88 \ 00000080 3080BDE8 POP {R4,R5,PC} ;; return \ ??new_redraw_0: \ 00000084 ........ DC32 `?` 1605 1606 /* 1607 void (*old_ed_redraw)(void *data); 1608 void my_ed_redraw2(void *data) 1609 { 1610 void *gui; 1611 char s[128]; 1612 sprintf(s,"%s\\HEAD.png",ICON_PATH); 1613 int x=GetImgWidth((int)s); 1614 if (old_ed_redraw) old_ed_redraw(data); 1615 gui=FindGUIbyId(contactlist_menu_id,NULL); 1616 if (gui) 1617 { 1618 ClearScreen(); 1619 // canvasdata=BuildCanvas(); 1620 PrintText(x+7,YDISP+2,status,0,fonto,1,1,0,0,ScreenW()-x); 1621 switch(CurrentPrivateStatus) 1622 { 1623 case 0: ICON_HD=ICON_ALL_CAN_SEE; break; 1624 case 1: ICON_HD=ICON_NOBODY_CAN_SEE; break; 1625 case 2: ICON_HD=ICON_VISLIST_CAN_SEE; break; 1626 case 3: ICON_HD=ICON_INVISLIST_CANNOT_SEE; break; 1627 case 4: ICON_HD=ICON_CONTACTLIST_CAN_SEE; break; 1628 default : ICON_HD=ICON_HEAD; break; 1629 } 1630 int icon, width; 1631 #ifdef NEWSGOLD 1632 icon=*(S_ICONS+ICON_HD); 1633 ((HEADER_DESC *)&contactlist_menuhdr)->rc.x2=ScreenW()-1-(width=GetImgWidth(icon)); 1634 DrawImg(ScreenW()-1-width,1,icon); 1635 #else 1636 icon=*(S_ICONS+ICON_HD); 1637 width=GetImgWidth(icon); 1638 DrawImg(2,((HeaderH()-width)>>1)+YDISP,icon); 1639 #endif 1640 1641 } 1642 }*/ 1643 \ In segment CODE, align 4, keep-with-next 1644 void UpdateCLheader(void) 1645 { \ UpdateCLheader: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 1646 if (strlen(ContactT9Key)) \ 00000004 ........ LDR R7,??DataTable75 ;; S_ICONS \ 00000008 ........ LDR R6,??DataTable74 ;; Canvas \ 0000000C 98D04DE2 SUB SP,SP,#+152 \ 00000010 3C10A0E3 MOV R1,#+60 \ 00000014 681D81E3 ORR R1,R1,#0x1A00 \ 00000018 071081E0 ADD R1,R1,R7 \ 0000001C 0C108DE5 STR R1,[SP, #+12] \ 00000020 FC00A0E3 MOV R0,#+252 \ 00000024 640D80E3 ORR R0,R0,#0x1900 \ 00000028 074080E0 ADD R4,R0,R7 \ 0000002C D00080E2 ADD R0,R0,#+208 \ 00000030 075080E0 ADD R5,R0,R7 \ 00000034 A480A0E3 MOV R8,#+164 \ 00000038 408E88E3 ORR R8,R8,#0x400 \ 0000003C 070088E0 ADD R0,R8,R7 \ 00000040 1B0000EF SWI +27 \ 00000044 000050E3 CMP R0,#+0 \ 00000048 0A00000A BEQ ??UpdateCLheader_1 1647 { 1648 zeromem(status,64); \ 0000004C 4010A0E3 MOV R1,#+64 \ 00000050 0500A0E1 MOV R0,R5 \ 00000054 1D0100EF SWI +285 1649 strcpy(clm_hdr_text,key_clm_hdr_text); \ 00000058 4E1E86E2 ADD R1,R6,#+1248 \ 0000005C 0400A0E1 MOV R0,R4 \ 00000060 1A0000EF SWI +26 1650 strcat(clm_hdr_text,ContactT9Key); \ 00000064 071088E0 ADD R1,R8,R7 \ 00000068 0400A0E1 MOV R0,R4 \ 0000006C 170000EF SWI +23 1651 strcpy(clmenu_sk_r,key_clmenu_sk_r); \ 00000070 221086E2 ADD R1,R6,#+34 \ 00000074 3F0100EA B ??UpdateCLheader_2 1652 } 1653 else 1654 { 1655 TTime the; 1656 GetDateTime(NULL,&the); \ ??UpdateCLheader_1: \ 00000078 04108DE2 ADD R1,SP,#+4 \ 0000007C B40000EF SWI +180 1657 char t[64]; 1658 char s[32]; 1659 void Get_Online_total(); 1660 Get_Online_total(); \ 00000080 ........ BL Get_Online_total 1661 zeromem(clm_hdr_text,64); \ 00000084 4010A0E3 MOV R1,#+64 \ 00000088 0400A0E1 MOV R0,R4 \ 0000008C 1D0100EF SWI +285 1662 zeromem(status,64); \ 00000090 4010A0E3 MOV R1,#+64 \ 00000094 0500A0E1 MOV R0,R5 \ 00000098 1D0100EF SWI +285 1663 switch(TIME_OR_MSG) \ 0000009C ........ LDR R1,??DataTable63 ;; TIME_OR_MSG \ 000000A0 300088E2 ADD R0,R8,#+48 \ 000000A4 001091E5 LDR R1,[R1, #+0] \ 000000A8 AA8F8FE2 ADR R8,??UpdateCLheader_3 ;; "[S]" \ 000000AC AA9F8FE2 ADR R9,??UpdateCLheader_3+0x4 ;; "[V]" \ 000000B0 AAAF8FE2 ADR R10,??UpdateCLheader_3+0x8 ;; "[I]" \ 000000B4 AABF8FE2 ADR R11,??UpdateCLheader_3+0xC ;; "[A]" \ 000000B8 040051E3 CMP R1,#+4 \ 000000BC 2601008A BHI ??UpdateCLheader_4 \ 000000C0 022F8FE2 ADR R2,??UpdateCLheader_0 \ 000000C4 8110A0E1 MOV R1,R1, LSL #+1 \ 000000C8 B12092E1 LDRH R2,[R2, R1] \ 000000CC 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??UpdateCLheader_0: \ 000000D0 02000B001100 DC16 +2,+11,+17,+24 \ 1800 \ 000000D8 8E000000 DC16 +142,+0 1664 { 1665 case 0: 1666 sprintf(clm_hdr_text, "%s(%02d:%02d)",def_clm_hdr_text,the.hour,the.min); \ ??UpdateCLheader_5: \ 000000DC 0510DDE5 LDRB R1,[SP, #+5] \ 000000E0 062080E0 ADD R2,R0,R6 \ 000000E4 02002DE9 PUSH {R1} \ 000000E8 0830DDE5 LDRB R3,[SP, #+8] \ 000000EC 281086E2 ADD R1,R6,#+40 \ ??UpdateCLheader_6: \ 000000F0 0400A0E1 MOV R0,R4 \ ??UpdateCLheader_7: \ 000000F4 160000EF SWI +22 \ 000000F8 04D08DE2 ADD SP,SP,#+4 \ 000000FC 1A0100EA B ??UpdateCLheader_8 1667 break; 1668 case 1: 1669 sprintf(clm_hdr_text, "%s(%d/%d)",def_clm_hdr_text,total_unread,total_unread2); \ ??UpdateCLheader_9: \ 00000100 F81197E5 LDR R1,[R7, #+504] \ 00000104 062080E0 ADD R2,R0,R6 \ 00000108 02002DE9 PUSH {R1} \ 0000010C 903297E5 LDR R3,[R7, #+656] \ 00000110 381086E2 ADD R1,R6,#+56 \ 00000114 F5FFFFEA B ??UpdateCLheader_6 1670 break; 1671 case 2: 1672 sprintf(clm_hdr_text, "%s(%d/%d)",def_clm_hdr_text,kopa_kontaktu,kopa_online); \ ??UpdateCLheader_10: \ 00000118 B01297E5 LDR R1,[R7, #+688] \ 0000011C 062080E0 ADD R2,R0,R6 \ 00000120 02002DE9 PUSH {R1} \ 00000124 B43297E5 LDR R3,[R7, #+692] \ 00000128 0400A0E1 MOV R0,R4 \ 0000012C 381086E2 ADD R1,R6,#+56 \ 00000130 EFFFFFEA B ??UpdateCLheader_7 1673 break; 1674 case 3: 1675 { 1676 if(isShowTime) { sprintf(t,"[%02d:%02d]",the.hour,the.min); strcat(status,t); } \ ??UpdateCLheader_11: \ 00000134 50049FE5 LDR R0,??UpdateCLheader_12+0x4 ;; isShowTime \ 00000138 000090E5 LDR R0,[R0, #+0] \ 0000013C 000050E3 CMP R0,#+0 \ 00000140 0700000A BEQ ??UpdateCLheader_13 \ 00000144 0530DDE5 LDRB R3,[SP, #+5] \ 00000148 0420DDE5 LDRB R2,[SP, #+4] \ 0000014C 441086E2 ADD R1,R6,#+68 \ 00000150 58008DE2 ADD R0,SP,#+88 \ 00000154 160000EF SWI +22 \ 00000158 58108DE2 ADD R1,SP,#+88 \ 0000015C 0500A0E1 MOV R0,R5 \ 00000160 170000EF SWI +23 1677 if(isShowCont) { sprintf(s,"[%d/%d]",kopa_kontaktu,kopa_online); strcat(clm_hdr_text,s); } \ ??UpdateCLheader_13: \ 00000164 24049FE5 LDR R0,??UpdateCLheader_12+0x8 ;; isShowCont \ 00000168 000090E5 LDR R0,[R0, #+0] \ 0000016C 000050E3 CMP R0,#+0 \ 00000170 0700000A BEQ ??UpdateCLheader_14 \ 00000174 B03297E5 LDR R3,[R7, #+688] \ 00000178 B42297E5 LDR R2,[R7, #+692] \ 0000017C 501086E2 ADD R1,R6,#+80 \ 00000180 38008DE2 ADD R0,SP,#+56 \ 00000184 160000EF SWI +22 \ 00000188 38108DE2 ADD R1,SP,#+56 \ 0000018C 0400A0E1 MOV R0,R4 \ 00000190 170000EF SWI +23 1678 if(isShowUnread) { sprintf(s,"[%d/%d]",total_unread,total_unread2); strcat(clm_hdr_text,s); } \ ??UpdateCLheader_14: \ 00000194 F8039FE5 LDR R0,??UpdateCLheader_12+0xC ;; isShowUnread \ 00000198 000090E5 LDR R0,[R0, #+0] \ 0000019C 000050E3 CMP R0,#+0 \ 000001A0 0700000A BEQ ??UpdateCLheader_15 \ 000001A4 F83197E5 LDR R3,[R7, #+504] \ 000001A8 902297E5 LDR R2,[R7, #+656] \ 000001AC 501086E2 ADD R1,R6,#+80 \ 000001B0 38008DE2 ADD R0,SP,#+56 \ 000001B4 160000EF SWI +22 \ 000001B8 38108DE2 ADD R1,SP,#+56 \ 000001BC 0400A0E1 MOV R0,R4 \ 000001C0 170000EF SWI +23 1679 if(isShowTime) strcat(clm_hdr_text,t); \ ??UpdateCLheader_15: \ 000001C4 C0039FE5 LDR R0,??UpdateCLheader_12+0x4 ;; isShowTime \ 000001C8 000090E5 LDR R0,[R0, #+0] \ 000001CC 000050E3 CMP R0,#+0 \ 000001D0 0200000A BEQ ??UpdateCLheader_16 \ 000001D4 58108DE2 ADD R1,SP,#+88 \ 000001D8 0400A0E1 MOV R0,R4 \ 000001DC 170000EF SWI +23 1680 if(away_m && isShowA) strcat(clm_hdr_text,"[A]"); \ ??UpdateCLheader_16: \ 000001E0 200297E5 LDR R0,[R7, #+544] \ 000001E4 000050E3 CMP R0,#+0 \ 000001E8 0600000A BEQ ??UpdateCLheader_17 \ 000001EC A4039FE5 LDR R0,??UpdateCLheader_12+0x10 ;; isShowA \ 000001F0 000090E5 LDR R0,[R0, #+0] \ 000001F4 000050E3 CMP R0,#+0 \ 000001F8 0200000A BEQ ??UpdateCLheader_17 \ 000001FC 0B10A0E1 MOV R1,R11 \ 00000200 0400A0E1 MOV R0,R4 \ 00000204 170000EF SWI +23 1681 if(CurrentPrivateStatus==1 && isShowI) strcat(clm_hdr_text,"[I]") ; \ ??UpdateCLheader_17: \ 00000208 580297E5 LDR R0,[R7, #+600] \ 0000020C 010050E3 CMP R0,#+1 \ 00000210 0600001A BNE ??UpdateCLheader_18 \ 00000214 80039FE5 LDR R0,??UpdateCLheader_12+0x14 ;; isShowI \ 00000218 000090E5 LDR R0,[R0, #+0] \ 0000021C 000050E3 CMP R0,#+0 \ 00000220 0200000A BEQ ??UpdateCLheader_18 \ 00000224 0A10A0E1 MOV R1,R10 \ 00000228 0400A0E1 MOV R0,R4 \ 0000022C 170000EF SWI +23 1682 if(Is_Vibra_Enabled && isShowV) strcat(clm_hdr_text,"[V]") ; \ ??UpdateCLheader_18: \ 00000230 0C0297E5 LDR R0,[R7, #+524] \ 00000234 000050E3 CMP R0,#+0 \ 00000238 0600000A BEQ ??UpdateCLheader_19 \ 0000023C 5C039FE5 LDR R0,??UpdateCLheader_12+0x18 ;; isShowV \ 00000240 000090E5 LDR R0,[R0, #+0] \ 00000244 000050E3 CMP R0,#+0 \ 00000248 0200000A BEQ ??UpdateCLheader_19 \ 0000024C 0910A0E1 MOV R1,R9 \ 00000250 0400A0E1 MOV R0,R4 \ 00000254 170000EF SWI +23 1683 if(Is_Sounds_Enabled && isShowS) strcat(clm_hdr_text,"[S]") ; \ ??UpdateCLheader_19: \ 00000258 4C0297E5 LDR R0,[R7, #+588] \ 0000025C 000050E3 CMP R0,#+0 \ 00000260 0600000A BEQ ??UpdateCLheader_20 \ 00000264 38039FE5 LDR R0,??UpdateCLheader_12+0x1C ;; isShowS \ 00000268 000090E5 LDR R0,[R0, #+0] \ 0000026C 000050E3 CMP R0,#+0 \ 00000270 0200000A BEQ ??UpdateCLheader_20 \ 00000274 0810A0E1 MOV R1,R8 \ 00000278 0400A0E1 MOV R0,R4 \ 0000027C 170000EF SWI +23 1684 if(Is_Double_Vibra_On && isShowR) strcat(clm_hdr_text,"[R]") ; \ ??UpdateCLheader_20: \ 00000280 F40197E5 LDR R0,[R7, #+500] \ 00000284 000050E3 CMP R0,#+0 \ 00000288 0600000A BEQ ??UpdateCLheader_21 \ 0000028C 14039FE5 LDR R0,??UpdateCLheader_12+0x20 ;; isShowR \ 00000290 000090E5 LDR R0,[R0, #+0] \ 00000294 000050E3 CMP R0,#+0 \ 00000298 0200000A BEQ ??UpdateCLheader_21 \ 0000029C B91F8FE2 ADR R1,??UpdateCLheader_12 ;; "[R]" \ 000002A0 0400A0E1 MOV R0,R4 \ 000002A4 170000EF SWI +23 1685 if(Show_XTX && isShowTmXs) strcat(clm_hdr_text,"[Xs]"); \ ??UpdateCLheader_21: \ 000002A8 FC029FE5 LDR R0,??UpdateCLheader_12+0x24 ;; isShowTmXs \ 000002AC 2C1297E5 LDR R1,[R7, #+556] \ 000002B0 000090E5 LDR R0,[R0, #+0] \ 000002B4 000051E3 CMP R1,#+0 \ 000002B8 00005013 CMPNE R0,#+0 \ 000002BC 58108612 ADDNE R1,R6,#+88 \ 000002C0 0200001A BNE ??UpdateCLheader_22 1686 else if(isShowTmXs) strcat(clm_hdr_text,"[Tm]"); \ 000002C4 000050E3 CMP R0,#+0 \ 000002C8 0200000A BEQ ??UpdateCLheader_23 \ 000002CC 601086E2 ADD R1,R6,#+96 \ ??UpdateCLheader_22: \ 000002D0 0400A0E1 MOV R0,R4 \ 000002D4 170000EF SWI +23 1687 if(isShowBat) \ ??UpdateCLheader_23: \ 000002D8 D0029FE5 LDR R0,??UpdateCLheader_12+0x28 ;; isShowBat \ 000002DC 000090E5 LDR R0,[R0, #+0] \ 000002E0 000050E3 CMP R0,#+0 \ 000002E4 A000000A BEQ ??UpdateCLheader_8 1688 { 1689 int bat=*RamCap(); \ 000002E8 C88000EF SWI +32968 \ 000002EC B020D0E1 LDRH R2,[R0, #+0] 1690 char s[4]; 1691 sprintf(s,"[%d%%]",bat); \ 000002F0 681086E2 ADD R1,R6,#+104 \ 000002F4 0D00A0E1 MOV R0,SP \ 000002F8 160000EF SWI +22 1692 strcat(clm_hdr_text,s); \ 000002FC 0D10A0E1 MOV R1,SP \ 00000300 0400A0E1 MOV R0,R4 \ 00000304 170000EF SWI +23 \ 00000308 970000EA B ??UpdateCLheader_8 1693 } 1694 1695 } 1696 break; 1697 case 4://png 1698 { 1699 #ifdef kluchnik 1700 char A_s[]="[A [%s] ]"; 1701 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //sendq_l 1702 if(on_off_timer > 0 && strlen(on_off_buf)!=0) 1703 sprintf(status,on_off_buf); 1704 else 1705 { 1706 sprintf(status, "[Rx:%db/Tx:%db/Queue:%db]\n",RX,TX,sendq_l); 1707 } 1708 sprintf(t,"[%d/%d] [%d/%d] ",kopa_kontaktu, kopa_online,total_unread,total_unread2); 1709 strcat(status,t); 1710 if(away_m && isShowA) { sprintf(t,A_s,away_msg_time_dace); strcat(status,t); } 1711 #else 1712 char s[32]; 1713 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //sendq_l \ ??UpdateCLheader_24: \ 0000030C 7C1297E5 LDR R1,[R7, #+636] \ 00000310 10108DE5 STR R1,[SP, #+16] \ 00000314 801297E5 LDR R1,[R7, #+640] \ 00000318 14108DE5 STR R1,[SP, #+20] 1714 #ifdef NEWSGOLD 1715 if(on_off_timer>0 && strlen(on_off_buf)!=0) 1716 sprintf(status,on_off_buf); 1717 else 1718 if(ShowTraff) 1719 sprintf(status, "[T:%db/Queue:%db]\n",RX+TX,sendq_l); 1720 #else 1721 if(on_off_timer>0 && strlen(on_off_buf)!=0) \ 0000031C AC0297E5 LDR R0,[R7, #+684] \ 00000320 010050E3 CMP R0,#+1 \ 00000324 0F0000BA BLT ??UpdateCLheader_25 \ 00000328 4C10A0E3 MOV R1,#+76 \ 0000032C 681D81E3 ORR R1,R1,#0x1A00 \ 00000330 071081E0 ADD R1,R1,R7 \ 00000334 00108DE5 STR R1,[SP, #+0] \ 00000338 0100A0E1 MOV R0,R1 \ 0000033C 1B0000EF SWI +27 \ 00000340 000050E3 CMP R0,#+0 \ 00000344 0700000A BEQ ??UpdateCLheader_25 1722 sprintf(status,on_off_buf); \ 00000348 00109DE5 LDR R1,[SP, #+0] \ 0000034C 0500A0E1 MOV R0,R5 \ 00000350 160000EF SWI +22 \ 00000354 0E0000EA B ??UpdateCLheader_26 \ ??UpdateCLheader_3: \ 00000358 5B535D00 DC8 "[S]" \ 0000035C 5B565D00 DC8 "[V]" \ 00000360 5B495D00 DC8 "[I]" \ 00000364 5B415D00 DC8 "[A]" 1723 else 1724 if(ShowTraff) \ ??UpdateCLheader_25: \ 00000368 44029FE5 LDR R0,??UpdateCLheader_12+0x2C ;; ShowTraff \ 0000036C 000090E5 LDR R0,[R0, #+0] \ 00000370 000050E3 CMP R0,#+0 \ 00000374 0600000A BEQ ??UpdateCLheader_26 1725 sprintf(status, "[T:%db/Q:%db]\n",RX+TX,sendq_l); \ 00000378 843297E5 LDR R3,[R7, #+644] \ 0000037C 10009DE5 LDR R0,[SP, #+16] \ 00000380 14109DE5 LDR R1,[SP, #+20] \ 00000384 002081E0 ADD R2,R1,R0 \ 00000388 701086E2 ADD R1,R6,#+112 \ 0000038C 0500A0E1 MOV R0,R5 \ 00000390 160000EF SWI +22 1726 #endif 1727 //sprintf(status, "%s\n",def_clm_hdr_text); 1728 if(isShowTime) { sprintf(t,"[%02d:%02d]",the.hour,the.min); strcat(status,t); } \ ??UpdateCLheader_26: \ 00000394 F0019FE5 LDR R0,??UpdateCLheader_12+0x4 ;; isShowTime \ 00000398 000090E5 LDR R0,[R0, #+0] \ 0000039C 000050E3 CMP R0,#+0 \ 000003A0 0700000A BEQ ??UpdateCLheader_27 \ 000003A4 0530DDE5 LDRB R3,[SP, #+5] \ 000003A8 0420DDE5 LDRB R2,[SP, #+4] \ 000003AC 441086E2 ADD R1,R6,#+68 \ 000003B0 58008DE2 ADD R0,SP,#+88 \ 000003B4 160000EF SWI +22 \ 000003B8 58108DE2 ADD R1,SP,#+88 \ 000003BC 0500A0E1 MOV R0,R5 \ 000003C0 170000EF SWI +23 1729 if(isShowCont) { sprintf(s,"[%d/%d]",kopa_kontaktu,kopa_online); strcat(status,s); } \ ??UpdateCLheader_27: \ 000003C4 C4019FE5 LDR R0,??UpdateCLheader_12+0x8 ;; isShowCont \ 000003C8 000090E5 LDR R0,[R0, #+0] \ 000003CC 000050E3 CMP R0,#+0 \ 000003D0 0700000A BEQ ??UpdateCLheader_28 \ 000003D4 B03297E5 LDR R3,[R7, #+688] \ 000003D8 B42297E5 LDR R2,[R7, #+692] \ 000003DC 501086E2 ADD R1,R6,#+80 \ 000003E0 18008DE2 ADD R0,SP,#+24 \ 000003E4 160000EF SWI +22 \ 000003E8 18108DE2 ADD R1,SP,#+24 \ 000003EC 0500A0E1 MOV R0,R5 \ 000003F0 170000EF SWI +23 1730 if(isShowUnread) { sprintf(s,"[%d/%d]",total_unread,total_unread2); strcat(status,s); } \ ??UpdateCLheader_28: \ 000003F4 98019FE5 LDR R0,??UpdateCLheader_12+0xC ;; isShowUnread \ 000003F8 000090E5 LDR R0,[R0, #+0] \ 000003FC 000050E3 CMP R0,#+0 \ 00000400 0700000A BEQ ??UpdateCLheader_29 \ 00000404 F83197E5 LDR R3,[R7, #+504] \ 00000408 902297E5 LDR R2,[R7, #+656] \ 0000040C 501086E2 ADD R1,R6,#+80 \ 00000410 18008DE2 ADD R0,SP,#+24 \ 00000414 160000EF SWI +22 \ 00000418 18108DE2 ADD R1,SP,#+24 \ 0000041C 0500A0E1 MOV R0,R5 \ 00000420 170000EF SWI +23 1731 if(away_m && isShowA) { /* sprintf(t,A_s,away_msg_time_dace);*/ strcat(status,"[A]"); } \ ??UpdateCLheader_29: \ 00000424 200297E5 LDR R0,[R7, #+544] \ 00000428 000050E3 CMP R0,#+0 \ 0000042C 0600000A BEQ ??UpdateCLheader_30 \ 00000430 60019FE5 LDR R0,??UpdateCLheader_12+0x10 ;; isShowA \ 00000434 000090E5 LDR R0,[R0, #+0] \ 00000438 000050E3 CMP R0,#+0 \ 0000043C 0200000A BEQ ??UpdateCLheader_30 \ 00000440 0B10A0E1 MOV R1,R11 \ 00000444 0500A0E1 MOV R0,R5 \ 00000448 170000EF SWI +23 1732 #endif 1733 1734 if(CurrentPrivateStatus==1 && isShowI) strcat(status,"[I]"); \ ??UpdateCLheader_30: \ 0000044C 580297E5 LDR R0,[R7, #+600] \ 00000450 010050E3 CMP R0,#+1 \ 00000454 0600001A BNE ??UpdateCLheader_31 \ 00000458 3C019FE5 LDR R0,??UpdateCLheader_12+0x14 ;; isShowI \ 0000045C 000090E5 LDR R0,[R0, #+0] \ 00000460 000050E3 CMP R0,#+0 \ 00000464 0200000A BEQ ??UpdateCLheader_31 \ 00000468 0A10A0E1 MOV R1,R10 \ 0000046C 0500A0E1 MOV R0,R5 \ 00000470 170000EF SWI +23 1735 if(Is_Vibra_Enabled && isShowV) strcat(status,"[V]"); \ ??UpdateCLheader_31: \ 00000474 0C0297E5 LDR R0,[R7, #+524] \ 00000478 000050E3 CMP R0,#+0 \ 0000047C 0600000A BEQ ??UpdateCLheader_32 \ 00000480 18019FE5 LDR R0,??UpdateCLheader_12+0x18 ;; isShowV \ 00000484 000090E5 LDR R0,[R0, #+0] \ 00000488 000050E3 CMP R0,#+0 \ 0000048C 0200000A BEQ ??UpdateCLheader_32 \ 00000490 0910A0E1 MOV R1,R9 \ 00000494 0500A0E1 MOV R0,R5 \ 00000498 170000EF SWI +23 1736 if(Is_Sounds_Enabled && isShowS) strcat(status,"[S]"); \ ??UpdateCLheader_32: \ 0000049C 4C0297E5 LDR R0,[R7, #+588] \ 000004A0 000050E3 CMP R0,#+0 \ 000004A4 0600000A BEQ ??UpdateCLheader_33 \ 000004A8 F4009FE5 LDR R0,??UpdateCLheader_12+0x1C ;; isShowS \ 000004AC 000090E5 LDR R0,[R0, #+0] \ 000004B0 000050E3 CMP R0,#+0 \ 000004B4 0200000A BEQ ??UpdateCLheader_33 \ 000004B8 0810A0E1 MOV R1,R8 \ 000004BC 0500A0E1 MOV R0,R5 \ 000004C0 170000EF SWI +23 1737 if(Is_Double_Vibra_On && isShowR) strcat(status,"[R]"); \ ??UpdateCLheader_33: \ 000004C4 F40197E5 LDR R0,[R7, #+500] \ 000004C8 000050E3 CMP R0,#+0 \ 000004CC 0600000A BEQ ??UpdateCLheader_34 \ 000004D0 D0009FE5 LDR R0,??UpdateCLheader_12+0x20 ;; isShowR \ 000004D4 000090E5 LDR R0,[R0, #+0] \ 000004D8 000050E3 CMP R0,#+0 \ 000004DC 0200000A BEQ ??UpdateCLheader_34 \ 000004E0 281F8FE2 ADR R1,??UpdateCLheader_12 ;; "[R]" \ 000004E4 0500A0E1 MOV R0,R5 \ 000004E8 170000EF SWI +23 1738 if(Show_XTX && isShowTmXs) strcat(status,"[Xs]"); \ ??UpdateCLheader_34: \ 000004EC B8009FE5 LDR R0,??UpdateCLheader_12+0x24 ;; isShowTmXs \ 000004F0 2C1297E5 LDR R1,[R7, #+556] \ 000004F4 000090E5 LDR R0,[R0, #+0] \ 000004F8 000051E3 CMP R1,#+0 \ 000004FC 00005013 CMPNE R0,#+0 \ 00000500 58108612 ADDNE R1,R6,#+88 \ 00000504 0200001A BNE ??UpdateCLheader_35 1739 else 1740 if(isShowTmXs) strcat(status,"[Tm]"); \ 00000508 000050E3 CMP R0,#+0 \ 0000050C 0200000A BEQ ??UpdateCLheader_36 \ 00000510 601086E2 ADD R1,R6,#+96 \ ??UpdateCLheader_35: \ 00000514 0500A0E1 MOV R0,R5 \ 00000518 170000EF SWI +23 1741 if(isShowBat) \ ??UpdateCLheader_36: \ 0000051C 8C009FE5 LDR R0,??UpdateCLheader_12+0x28 ;; isShowBat \ 00000520 000090E5 LDR R0,[R0, #+0] \ 00000524 000050E3 CMP R0,#+0 \ 00000528 0700000A BEQ ??UpdateCLheader_37 1742 { 1743 int bat=*RamCap(); \ 0000052C C88000EF SWI +32968 \ 00000530 B020D0E1 LDRH R2,[R0, #+0] 1744 char s[4]; 1745 sprintf(s,"[%d%%]",bat); \ 00000534 681086E2 ADD R1,R6,#+104 \ 00000538 0D00A0E1 MOV R0,SP \ 0000053C 160000EF SWI +22 1746 strcat(status,s); \ 00000540 0D10A0E1 MOV R1,SP \ 00000544 0500A0E1 MOV R0,R5 \ 00000548 170000EF SWI +23 1747 } 1748 zeromem(clm_hdr_text,64); \ ??UpdateCLheader_37: \ 0000054C 4010A0E3 MOV R1,#+64 \ 00000550 0400A0E1 MOV R0,R4 \ 00000554 1D0100EF SWI +285 \ 00000558 030000EA B ??UpdateCLheader_8 1749 } 1750 break; 1751 default : 1752 sprintf(clm_hdr_text, percent_s,def_clm_hdr_text); \ ??UpdateCLheader_4: \ 0000055C 062080E0 ADD R2,R0,R6 \ 00000560 1B1086E2 ADD R1,R6,#+27 \ 00000564 0400A0E1 MOV R0,R4 \ 00000568 160000EF SWI +22 1753 break; 1754 } 1755 strcpy(clmenu_sk_r,def_clmenu_sk_r); \ ??UpdateCLheader_8: \ 0000056C EC00A0E3 MOV R0,#+236 \ 00000570 400E80E3 ORR R0,R0,#0x400 \ 00000574 061080E0 ADD R1,R0,R6 \ ??UpdateCLheader_2: \ 00000578 0C009DE5 LDR R0,[SP, #+12] \ 0000057C 1A0000EF SWI +26 1756 } 1757 } \ 00000580 98D08DE2 ADD SP,SP,#+152 \ 00000584 F08FBDE8 POP {R4-R11,PC} ;; return \ ??UpdateCLheader_12: \ 00000588 5B525D00 DC8 "[R]" \ 0000058C ........ DC32 isShowTime \ 00000590 ........ DC32 isShowCont \ 00000594 ........ DC32 isShowUnread \ 00000598 ........ DC32 isShowA \ 0000059C ........ DC32 isShowI \ 000005A0 ........ DC32 isShowV \ 000005A4 ........ DC32 isShowS \ 000005A8 ........ DC32 isShowR \ 000005AC ........ DC32 isShowTmXs \ 000005B0 ........ DC32 isShowBat \ 000005B4 ........ DC32 ShowTraff 1758 \ In segment CODE, align 4, keep-with-next 1759 void ClearContactT9Key(void) 1760 { 1761 zeromem(ContactT9Key,sizeof(ContactT9Key)); \ ClearContactT9Key: \ 00000000 0C009FE5 LDR R0,??ClearContactT9Key_0 ;; S_ICONS + 1188 \ 00000004 00402DE9 PUSH {LR} \ 00000008 2010A0E3 MOV R1,#+32 \ 0000000C 1D0100EF SWI +285 1762 } \ 00000010 0080BDE8 POP {PC} ;; return \ ??ClearContactT9Key_0: \ 00000014 ........ DC32 S_ICONS + 1188 1763 \ In segment CODE, align 4, keep-with-next 1764 void AddContactT9Key(int chr) 1765 { \ AddContactT9Key: \ 00000000 30402DE9 PUSH {R4,R5,LR} 1766 int l=strlen(ContactT9Key); \ 00000004 ........ LDR R5,??DataTable75 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C A400A0E3 MOV R0,#+164 \ 00000010 400E80E3 ORR R0,R0,#0x400 \ 00000014 050080E0 ADD R0,R0,R5 \ 00000018 1B0000EF SWI +27 1767 if (l<(sizeof(ContactT9Key)-1)) \ 0000001C 1F0050E3 CMP R0,#+31 1768 { 1769 ContactT9Key[l]=chr; \ 00000020 05008030 ADDCC R0,R0,R5 \ 00000024 A444C035 STRBCC R4,[R0, #+1188] 1770 } 1771 } \ 00000028 3080BDE8 POP {R4,R5,PC} ;; return 1772 \ In segment CODE, align 4, keep-with-next 1773 void BackSpaceContactT9(void) 1774 { \ BackSpaceContactT9: \ 00000000 10402DE9 PUSH {R4,LR} 1775 int l=strlen(ContactT9Key); \ 00000004 ........ LDR R4,??DataTable75 ;; S_ICONS \ 00000008 A400A0E3 MOV R0,#+164 \ 0000000C 400E80E3 ORR R0,R0,#0x400 \ 00000010 040080E0 ADD R0,R0,R4 \ 00000014 1B0000EF SWI +27 1776 if (l) \ 00000018 000050E3 CMP R0,#+0 1777 { 1778 l--; 1779 ContactT9Key[l]=0; \ 0000001C 04008010 ADDNE R0,R0,R4 \ 00000020 0010A013 MOVNE R1,#+0 \ 00000024 A314C015 STRBNE R1,[R0, #+1187] 1780 } 1781 } \ 00000028 1080BDE8 POP {R4,PC} ;; return 1782 1783 \ In segment CODE, align 4, keep-with-next 1784 void create_contactlist_menu(void) 1785 { \ create_contactlist_menu: \ 00000000 70402DE9 PUSH {R4-R6,LR} 1786 int i; 1787 i=CountContacts(); 1788 prev_clmenu_itemcount=i; \ 00000004 ........ LDR R5,??DataTable75 ;; S_ICONS 1789 UpdateCLheader(); 1790 patch_header(&contactlist_menuhdr); \ 00000008 38609FE5 LDR R6,??create_contactlist_menu_0 ;; contactlist_menuhdr \ 0000000C ........ _BLF CountContacts,??CountContacts??rA \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 A44285E5 STR R4,[R5, #+676] \ 00000018 ........ BL UpdateCLheader \ 0000001C 0600A0E1 MOV R0,R6 \ 00000020 ........ _BLF patch_header,??patch_header??rA 1791 #ifdef USE_MLMENU 1792 contactlist_menu_id=CreateMultiLinesMenu(0,0,&contactlist_menu,&contactlist_menuhdr,0,i); \ 00000024 10002DE9 PUSH {R4} \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 01002DE9 PUSH {R0} \ 00000030 0630A0E1 MOV R3,R6 \ 00000034 142086E2 ADD R2,R6,#+20 \ 00000038 0010A0E3 MOV R1,#+0 \ 0000003C 170200EF SWI +535 \ 00000040 9C0285E5 STR R0,[R5, #+668] 1793 #else 1794 contactlist_menu_id=CreateMenu(0,0,&contactlist_menu,&contactlist_menuhdr,0,i,0,0); 1795 #endif 1796 } \ 00000044 7380BDE8 POP {R0,R1,R4-R6,PC} ;; return \ ??create_contactlist_menu_0: \ 00000048 ........ DC32 contactlist_menuhdr 1797 1798 static int unhooked2=1; 1799 \ In segment CODE, align 4, keep-with-next 1800 void contactlist_menu_ghook(void *data, int cmd) 1801 { \ contactlist_menu_ghook: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 1802 PNGTOP_DESC *pltop=PNG_TOP(); 1803 if (cmd==9) 1804 { 1805 pltop->dyn_pltop=NULL; 1806 } 1807 static int unhooked=1; 1808 if( ((unhooked) || (unhooked2)) && (TIME_OR_MSG==4) ) \ 00000004 ........ LDR R8,??DataTable75 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 B98100EF SWI +33209 \ 00000014 0060A0E1 MOV R6,R0 \ 00000018 0070A0E3 MOV R7,#+0 \ 0000001C 090055E3 CMP R5,#+9 \ 00000020 08708605 STREQ R7,[R6, #+8] \ 00000024 200398E5 LDR R0,[R8, #+800] \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 1C039805 LDREQ R0,[R8, #+796] \ 00000030 00005003 CMPEQ R0,#+0 \ 00000034 1600000A BEQ ??contactlist_menu_ghook_0 \ 00000038 ........ LDR R0,??DataTable63 ;; TIME_OR_MSG \ 0000003C 000090E5 LDR R0,[R0, #+0] \ 00000040 040050E3 CMP R0,#+4 \ 00000044 1200001A BNE ??contactlist_menu_ghook_0 1809 { 1810 if(!(strlen(ContactT9Key))) \ 00000048 A400A0E3 MOV R0,#+164 \ 0000004C 400E80E3 ORR R0,R0,#0x400 \ 00000050 080080E0 ADD R0,R0,R8 \ 00000054 1B0000EF SWI +27 \ 00000058 000050E3 CMP R0,#+0 \ 0000005C 0A00001A BNE ??contactlist_menu_ghook_1 1811 { 1812 GUI * gui=(GUI*)data; 1813 memcpy(&gui_methods2,gui->methods,nmeth*4); \ 00000060 041094E5 LDR R1,[R4, #+4] \ 00000064 AE9FA0E3 MOV R9,#+696 \ 00000068 6020A0E3 MOV R2,#+96 \ 0000006C 080089E0 ADD R0,R9,R8 \ 00000070 1E0100EF SWI +286 1814 gui->methods=&gui_methods2; \ 00000074 080089E0 ADD R0,R9,R8 \ 00000078 040084E5 STR R0,[R4, #+4] 1815 old_redraw=gui_methods2[0]; \ 0000007C 080099E7 LDR R0,[R9, +R8] \ 00000080 180388E5 STR R0,[R8, #+792] 1816 gui_methods2[0]=(void*)&new_redraw; \ 00000084 28009FE5 LDR R0,??contactlist_menu_ghook_2 ;; new_redraw \ 00000088 080089E7 STR R0,[R9, +R8] 1817 } 1818 unhooked=0; \ ??contactlist_menu_ghook_1: \ 0000008C 207388E5 STR R7,[R8, #+800] 1819 unhooked2=0; \ 00000090 1C7388E5 STR R7,[R8, #+796] 1820 } 1821 /* 1822 if (cmd==2) 1823 { 1824 static void *methods[16]; 1825 void **m=GetDataOfItemByID(data,2); 1826 if (m) 1827 { 1828 if (m[1]) 1829 { 1830 memcpy(methods,m[1],sizeof(methods)); 1831 old_ed_redraw=(void (*)(void *))(methods[0]); 1832 methods[0]=(void *)my_ed_redraw2; 1833 m[1]=methods; 1834 } 1835 } 1836 }*/ 1837 1838 if (cmd==0x0A) \ ??contactlist_menu_ghook_0: \ 00000094 0A0055E3 CMP R5,#+10 \ 00000098 F083BD18 POPNE {R4-R9,PC} 1839 { 1840 silenthide=0; 1841 pltop->dyn_pltop=XStatusesImgList; \ 0000009C ........ LDR R0,??DataTable64 ;; XStatusesImgList \ 000000A0 447288E5 STR R7,[R8, #+580] \ 000000A4 000090E5 LDR R0,[R0, #+0] \ 000000A8 080086E5 STR R0,[R6, #+8] 1842 DisableIDLETMR(); \ 000000AC 7F0100EF SWI +383 1843 } 1844 } \ 000000B0 F083BDE8 POP {R4-R9,PC} ;; return \ ??contactlist_menu_ghook_2: \ 000000B4 ........ DC32 new_redraw 1845 \ In segment CODE, align 4, keep-with-next 1846 void RecountMenu(CLIST *req, int needfocus) 1847 { \ RecountMenu: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 1848 int i; 1849 int j; 1850 void *data; 1851 UpdateCLheader(); 1852 if (!contactlist_menu_id) return; //Нечего считать \ 00000004 ........ LDR R6,??DataTable75 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 ........ BL UpdateCLheader \ 00000014 9C0296E5 LDR R0,[R6, #+668] \ 00000018 000050E3 CMP R0,#+0 \ 0000001C F080BD08 POPEQ {R4-R7,PC} 1853 data=FindGUIbyId(contactlist_menu_id,NULL); \ 00000020 9C0296E5 LDR R0,[R6, #+668] \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 090200EF SWI +521 \ 0000002C 0070A0E1 MOV R7,R0 1854 if (req==NULL) \ 00000030 000054E3 CMP R4,#+0 \ 00000034 0200000A BEQ ??RecountMenu_0 1855 { 1856 j=0; 1857 } 1858 else 1859 { 1860 j=FindContactByContact(req); \ 00000038 0400A0E1 MOV R0,R4 \ 0000003C ........ _BLF FindContactByContact,??FindContactByContact??rA \ 00000040 0040A0E1 MOV R4,R0 1861 } 1862 i=CountContacts(); \ ??RecountMenu_0: \ 00000044 ........ _BLF CountContacts,??CountContacts??rA 1863 if (j>=i) j=i-1; 1864 if (j<0) j=0; 1865 if (i!=prev_clmenu_itemcount) \ 00000048 A41296E5 LDR R1,[R6, #+676] \ 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 1866 { 1867 prev_clmenu_itemcount=i; \ 00000064 A40286E5 STR R0,[R6, #+676] 1868 Menu_SetItemCountDyn(data,i); \ 00000068 0010A0E1 MOV R1,R0 \ 0000006C 0700A0E1 MOV R0,R7 \ 00000070 E60100EF SWI +486 1869 } 1870 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 1871 if (IsGuiOnTop(contactlist_menu_id)) RefreshGUI(); \ ??RecountMenu_2: \ 00000088 9C0296E5 LDR R0,[R6, #+668] \ 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 1872 } 1873 1874 1875 //-------------------- MANAGE CONTACT MENU --------------------------// 1876 1877 1878 #ifdef kluchnik 1879 #define _MAX 8 1880 #else 1881 #define _MAX 4 1882 #endif 1883 1884 static int uinContact; 1885 \ In segment CODE, align 4, keep-with-next 1886 static void ChangeVibraContact(GUI *data) 1887 { 1888 CLIST *t; 1889 t=FindContactByUin(uinContact); \ ChangeVibraContact: \ 00000000 ........ LDR R0,??DataTable69 ;; icon_array + 8 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 1890 t->isvibra=!(t->isvibra); \ 00000010 5C1090E5 LDR R1,[R0, #+92] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0110A003 MOVEQ R1,#+1 \ 0000001C 0010A013 MOVNE R1,#+0 \ 00000020 5C1080E5 STR R1,[R0, #+92] 1891 RefreshGUI(); \ 00000024 960100EF SWI +406 1892 } \ 00000028 0080BDE8 POP {PC} ;; return 1893 \ In segment CODE, align 4, keep-with-next 1894 static void ChangeSoundContact(GUI *data) 1895 { 1896 CLIST *t; 1897 t=FindContactByUin(uinContact); \ ChangeSoundContact: \ 00000000 ........ LDR R0,??DataTable69 ;; icon_array + 8 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 1898 t->issound=!(t->issound); \ 00000010 601090E5 LDR R1,[R0, #+96] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0110A003 MOVEQ R1,#+1 \ 0000001C 0010A013 MOVNE R1,#+0 \ 00000020 601080E5 STR R1,[R0, #+96] 1899 RefreshGUI(); \ 00000024 960100EF SWI +406 1900 } \ 00000028 0080BDE8 POP {PC} ;; return 1901 \ In segment CODE, align 4, keep-with-next 1902 static void ChangeAutoMsg(GUI *data) 1903 { 1904 CLIST *t; 1905 t=FindContactByUin(uinContact); \ ChangeAutoMsg: \ 00000000 ........ LDR R0,??DataTable69 ;; icon_array + 8 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 1906 t->isautomsg=!(t->isautomsg); \ 00000010 641090E5 LDR R1,[R0, #+100] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0110A003 MOVEQ R1,#+1 \ 0000001C 0010A013 MOVNE R1,#+0 \ 00000020 641080E5 STR R1,[R0, #+100] 1907 RefreshGUI(); \ 00000024 960100EF SWI +406 1908 } \ 00000028 0080BDE8 POP {PC} ;; return 1909 \ In segment CODE, align 4, keep-with-next 1910 static void ChangeShowXstatus(GUI *data) 1911 { 1912 CLIST *t; 1913 t=FindContactByUin(uinContact); \ ChangeShowXstatus: \ 00000000 ........ LDR R0,??DataTable69 ;; icon_array + 8 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 1914 t->isShowXst=!(t->isShowXst); \ 00000010 6C1090E5 LDR R1,[R0, #+108] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0110A003 MOVEQ R1,#+1 \ 0000001C 0010A013 MOVNE R1,#+0 \ 00000020 6C1080E5 STR R1,[R0, #+108] 1915 RefreshGUI(); \ 00000024 960100EF SWI +406 1916 } \ 00000028 0080BDE8 POP {PC} ;; return 1917 1918 #ifdef kluchnik 1919 1920 static void ChangeAccess(GUI *data) 1921 { 1922 CLIST *t; 1923 t=FindContactByUin(uinContact); 1924 t->isaccess=!(t->isaccess); 1925 RefreshGUI(); 1926 } 1927 1928 1929 static void ChangeAwaySignal(GUI *data) 1930 { 1931 CLIST *t; 1932 t=FindContactByUin(uinContact); 1933 t->automsgcount=automsgcount; 1934 RefreshGUI(); 1935 } 1936 1937 static void ChangeAutobot(GUI *data) 1938 { 1939 CLIST *t; 1940 t=FindContactByUin(uinContact); 1941 t->isautobot=!(t->isautobot); 1942 RefreshGUI(); 1943 } 1944 1945 static void ChangeLoadHistory(GUI *data) 1946 { 1947 CLIST *t; 1948 t=FindContactByUin(uinContact); 1949 t->isLoadHistory=!(t->isLoadHistory); 1950 RefreshGUI(); 1951 } 1952 #endif 1953 /* 1954 static void RqtXText(GUI *data) 1955 { 1956 void RequestXText(unsigned int uin); 1957 RequestXText(uinContact); 1958 GeneralFuncF1(1); 1959 } 1960 */ \ In segment CODE, align 4, keep-with-next 1961 static void contact_list_ghook(void *data, int cmd) 1962 { \ contact_list_ghook: \ 00000000 00402DE9 PUSH {LR} 1963 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 1964 { 1965 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 1966 } 1967 } \ 00000010 0080BDE8 POP {PC} ;; return 1968 static int icon_array[2]; 1969 1970 static const void *menuproc[_MAX]= 1971 { 1972 (void *)ChangeVibraContact, 1973 (void *)ChangeSoundContact, 1974 (void *)ChangeAutoMsg, 1975 (void *)ChangeShowXstatus, 1976 #ifdef kluchnik 1977 (void *)ChangeAccess, 1978 (void *)ChangeAwaySignal, 1979 (void *)ChangeLoadHistory, 1980 (void *)ChangeAutobot, 1981 #endif 1982 }; 1983 1984 static const char * const menutext[_MAX]= 1985 { 1986 "Вибра", 1987 "Звук", 1988 "Автоответчик", 1989 "Показ.хстатус", 1990 #ifdef kluchnik 1991 "Удаленное управление", 1992 "Синалы автоответчика", 1993 "Загруж.историю", 1994 "Aвтобот" 1995 #endif 1996 }; 1997 \ In segment CODE, align 4, keep-with-next 1998 static int contact_keyhook(void *data, GUI_MSG *msg) 1999 { \ contact_keyhook: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 2000 if ((msg->keys==0x18)||(msg->keys==0x3D)) \ 00000008 F200D1E1 LDRSH R0,[R1, #+2] \ 0000000C 180050E3 CMP R0,#+24 \ 00000010 3D005013 CMPNE R0,#+61 \ 00000014 0900001A BNE ??contact_keyhook_0 2001 { 2002 CLIST *t; 2003 t=FindContactByUin(uinContact); 2004 t->isIndividSet=1; \ 00000018 28509FE5 LDR R5,??contact_keyhook_1 ;; icon_array \ 0000001C 080095E5 LDR R0,[R5, #+8] \ 00000020 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000024 0110A0E3 MOV R1,#+1 \ 00000028 581080E5 STR R1,[R0, #+88] 2005 ((void (*)(void))(menuproc[GetCurMenuItem(data)]))(); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 8F0100EF SWI +399 \ 00000034 000185E0 ADD R0,R5,R0, LSL #+2 \ 00000038 0C0090E5 LDR R0,[R0, #+12] \ 0000003C 30FF2FE1 BLX R0 2006 } 2007 //if(msg->keys==LEFT_BUTTON) GeneralFuncF1(1); 2008 return(0); \ ??contact_keyhook_0: \ 00000040 0000A0E3 MOV R0,#+0 \ 00000044 3080BDE8 POP {R4,R5,PC} ;; return \ ??contact_keyhook_1: \ 00000048 ........ DC32 icon_array 2009 } 2010 \ In segment CODE, align 4, keep-with-next 2011 static void contacthandler(void *data, int curitem, void *unk) 2012 { \ contacthandler: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 2013 WSHDR *ws; 2014 void *item=AllocMenuItem(data); 2015 extern const char percent_t[]; 2016 ws=AllocMenuWS(data,strlen(menutext[curitem])); \ 00000004 ........ LDR R8,??DataTable74 ;; Canvas \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 970100EF SWI +407 \ 00000014 0060A0E1 MOV R6,R0 \ 00000018 050188E0 ADD R0,R8,R5, LSL #+2 \ 0000001C 089090E5 LDR R9,[R0, #+8] \ 00000020 0900A0E1 MOV R0,R9 \ 00000024 1B0000EF SWI +27 \ 00000028 0010A0E1 MOV R1,R0 \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 980100EF SWI +408 2017 wsprintf(ws,percent_t,menutext[curitem]); \ 00000034 181088E2 ADD R1,R8,#+24 2018 CLIST *t; 2019 t=FindContactByUin(uinContact); \ 00000038 ........ LDR R8,??DataTable72 ;; icon_array \ 0000003C 0070A0E1 MOV R7,R0 \ 00000040 0920A0E1 MOV R2,R9 \ 00000044 240100EF SWI +292 \ 00000048 080098E5 LDR R0,[R8, #+8] \ 0000004C ........ _BLF FindContactByUin,??FindContactByUin??rA 2020 switch(curitem) \ 00000050 0510B0E1 MOVS R1,R5 \ 00000054 0600000A BEQ ??contacthandler_0 \ 00000058 011055E2 SUBS R1,R5,#+1 \ 0000005C 0600000A BEQ ??contacthandler_1 \ 00000060 011051E2 SUBS R1,R1,#+1 \ 00000064 0600000A BEQ ??contacthandler_2 \ 00000068 011051E2 SUBS R1,R1,#+1 \ 0000006C 0600000A BEQ ??contacthandler_3 \ 00000070 0D0000EA B ??contacthandler_4 2021 { 2022 case 0: 2023 SetMenuItemIconArray(data,item,icon_array+(t->isvibra?0:1)); \ ??contacthandler_0: \ 00000074 5C0090E5 LDR R0,[R0, #+92] \ 00000078 040000EA B ??contacthandler_5 2024 break; 2025 case 1: 2026 SetMenuItemIconArray(data,item,icon_array+(t->issound?0:1)); \ ??contacthandler_1: \ 0000007C 600090E5 LDR R0,[R0, #+96] \ 00000080 020000EA B ??contacthandler_5 2027 break; 2028 case 2: 2029 SetMenuItemIconArray(data,item,icon_array+(t->isautomsg?0:1)); \ ??contacthandler_2: \ 00000084 640090E5 LDR R0,[R0, #+100] \ 00000088 000000EA B ??contacthandler_5 2030 break; 2031 case 3: 2032 SetMenuItemIconArray(data,item,icon_array+(t->isShowXst?0:1)); \ ??contacthandler_3: \ 0000008C 6C0090E5 LDR R0,[R0, #+108] \ ??contacthandler_5: \ 00000090 0610A0E1 MOV R1,R6 \ 00000094 000050E3 CMP R0,#+0 \ 00000098 0000A013 MOVNE R0,#+0 \ 0000009C 0100A003 MOVEQ R0,#+1 \ 000000A0 002188E0 ADD R2,R8,R0, LSL #+2 \ 000000A4 0400A0E1 MOV R0,R4 \ 000000A8 990100EF SWI +409 2033 break; 2034 #ifdef kluchnik 2035 case 4: 2036 SetMenuItemIconArray(data,item,icon_array+(t->isaccess?0:1)); 2037 break; 2038 case 5: 2039 SetMenuItemIconArray(data,item,icon_array+(t->automsgcount?0:1)); 2040 break; 2041 case 6: 2042 SetMenuItemIconArray(data,item,icon_array+(t->isLoadHistory?0:1)); 2043 break; 2044 case 7: 2045 SetMenuItemIconArray(data,item,icon_array+(t->isautobot?0:1)); 2046 break; 2047 #endif 2048 } 2049 SetMenuItemText(data, item, ws, curitem); \ ??contacthandler_4: \ 000000AC 0530A0E1 MOV R3,R5 \ 000000B0 0720A0E1 MOV R2,R7 \ 000000B4 0610A0E1 MOV R1,R6 \ 000000B8 0400A0E1 MOV R0,R4 \ 000000BC 9A0100EF SWI +410 2050 } \ 000000C0 F083BDE8 POP {R4-R9,PC} ;; return 2051 2052 char cont_hdr[64]; 2053 static const HEADER_DESC contact_list_HDR={0,0,NULL,NULL,NULL,(int)cont_hdr,LGP_NULL}; 2054 static const int _softkeys[] = {0,1,2}; 2055 2056 static const SOFTKEY_DESC _sk[] = 2057 { 2058 {0x0018, 0x0000, (int)"Выбрать"}, 2059 {0x0001, 0x0000, (int)LG_CLOSE}, 2060 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 2061 }; 2062 2063 const SOFTKEYSTAB _skt = 2064 { 2065 _sk, 0 2066 }; 2067 static const MENU_DESC contact_list_MNU= 2068 { 2069 8,contact_keyhook,contact_list_ghook,NULL, 2070 _softkeys, 2071 &_skt, 2072 0x11, 2073 contacthandler, 2074 NULL, 2075 NULL, 2076 _MAX 2077 }; 2078 2079 \ In segment CODE, align 4, keep-with-next 2080 int CreateContactMenu(CLIST *t) 2081 { \ CreateContactMenu: \ 00000000 70402DE9 PUSH {R4-R6,LR} 2082 uinContact=t->uin; \ 00000004 ........ LDR R5,??DataTable72 ;; icon_array 2083 icon_array[0]=GetPicNByUnicodeSymbol(CBOX_CHECKED); 2084 icon_array[1]=GetPicNByUnicodeSymbol(CBOX_UNCHECKED); 2085 sprintf(cont_hdr,"Меню кoнт. %s",t->name); \ 00000008 74609FE5 LDR R6,??CreateContactMenu_0 ;; `?next)) 2138 { 2139 if(cl->log) \ ??LongPressActionOnChat_10: \ 00000124 900098E5 LDR R0,[R8, #+144] \ 00000128 000050E3 CMP R0,#+0 \ 0000012C 0300000A BEQ ??LongPressActionOnChat_9 2140 { 2141 FreeLOGQ(&cl->log); \ 00000130 900088E2 ADD R0,R8,#+144 \ 00000134 ........ BL FreeLOGQ 2142 cl->msg_count=0; \ 00000138 A04088E5 STR R4,[R8, #+160] 2143 cl->isactive=0; \ 0000013C 9C4088E5 STR R4,[R8, #+156] 2144 } 2145 } \ ??LongPressActionOnChat_9: \ 00000140 008098E5 LDR R8,[R8, #+0] \ 00000144 000058E3 CMP R8,#+0 \ 00000148 F5FFFF1A BNE ??LongPressActionOnChat_10 2146 if(strlen(ContactT9Key)) ClearContactT9Key(); \ 0000014C 070086E0 ADD R0,R6,R7 \ 00000150 1B0000EF SWI +27 \ 00000154 000050E3 CMP R0,#+0 \ 00000158 0200000A BEQ ??LongPressActionOnChat_11 \ 0000015C 2010A0E3 MOV R1,#+32 \ 00000160 070086E0 ADD R0,R6,R7 \ 00000164 1D0100EF SWI +285 2147 RecountMenu(NULL,1); \ ??LongPressActionOnChat_11: \ 00000168 0110A0E3 MOV R1,#+1 \ 0000016C 0400A0E1 MOV R0,R4 \ 00000170 ........ BL RecountMenu 2148 ShowMSG(1,(int)"All chat clear!"); \ 00000174 F01085E2 ADD R1,R5,#+240 \ ??LongPressActionOnChat_5: \ 00000178 0B00A0E1 MOV R0,R11 \ ??LongPressActionOnChat_6: \ 0000017C 480100EF SWI +328 \ 00000180 F18FBDE8 POP {R0,R4-R11,PC} 2149 break; 2150 } 2151 case 6: 2152 if(!away_m) \ ??LongPressActionOnChat_12: \ 00000184 200297E5 LDR R0,[R7, #+544] \ 00000188 000050E3 CMP R0,#+0 \ 0000018C 0C00001A BNE ??LongPressActionOnChat_13 2153 { 2154 away_m=!away_m; \ 00000190 20B287E5 STR R11,[R7, #+544] 2155 GBS_StopTimer(&away_tmr); \ 00000194 FC00A0E3 MOV R0,#+252 \ 00000198 5C0D80E3 ORR R0,R0,#0x1700 \ 0000019C 070080E0 ADD R0,R0,R7 \ 000001A0 440100EF SWI +324 2156 msg_away_timer=AUTO_ENGADE*12; \ 000001A4 ........ LDR R0,??DataTable76 ;; AUTO_ENGADE \ 000001A8 0C10A0E3 MOV R1,#+12 \ 000001AC 000090E5 LDR R0,[R0, #+0] \ 000001B0 910000E0 MUL R0,R1,R0 \ 000001B4 1C0287E5 STR R0,[R7, #+540] 2157 InputAwayMsg(); \ 000001B8 ........ BL InputAwayMsg \ 000001BC ........ BL UpdateCLheader \ 000001C0 F18FBDE8 POP {R0,R4-R11,PC} 2158 2159 } 2160 else 2161 { 2162 msg_away_timer=0; 2163 away_m=!away_m; 2164 if(change_back_status) \ ??LongPressActionOnChat_13: \ 000001C4 280297E5 LDR R0,[R7, #+552] \ 000001C8 1C4287E5 STR R4,[R7, #+540] \ 000001CC 204287E5 STR R4,[R7, #+544] \ 000001D0 000050E3 CMP R0,#+0 \ 000001D4 0300000A BEQ ??LongPressActionOnChat_14 2165 { 2166 CurrentStatus=status_rem; \ 000001D8 240297E5 LDR R0,[R7, #+548] \ 000001DC 100287E5 STR R0,[R7, #+528] 2167 set_my_status(); \ 000001E0 ........ BL set_my_status 2168 change_back_status=0; \ 000001E4 284287E5 STR R4,[R7, #+552] 2169 } 2170 } 2171 UpdateCLheader(); \ ??LongPressActionOnChat_14: \ 000001E8 ........ BL UpdateCLheader \ 000001EC F18FBDE8 POP {R0,R4-R11,PC} 2172 break; 2173 case 7: 2174 { 2175 Show_XTX=!(Show_XTX); \ ??LongPressActionOnChat_15: \ 000001F0 2C0297E5 LDR R0,[R7, #+556] \ 000001F4 000050E3 CMP R0,#+0 \ 000001F8 00B0A013 MOVNE R11,#+0 \ 000001FC 2CB287E5 STR R11,[R7, #+556] 2176 if(Show_XTX) \ 00000200 00005BE3 CMP R11,#+0 \ 00000204 461F8502 ADDEQ R1,R5,#+280 2177 ShowMSG(1,(int)"Default show x-status"); \ 00000208 401F8512 ADDNE R1,R5,#+256 \ 0000020C 0100A0E3 MOV R0,#+1 \ 00000210 D9FFFFEA B ??LongPressActionOnChat_6 2178 else 2179 ShowMSG(1,(int)"Default show time"); 2180 } 2181 break; 2182 case 8: 2183 { 2184 WSHDR *ws; 2185 ws=AllocWS(150); \ ??LongPressActionOnChat_16: \ 00000214 9600A0E3 MOV R0,#+150 \ 00000218 250100EF SWI +293 2186 str_2ws(ws,suc_config_name,128); \ 0000021C ........ LDR R1,??DataTable77 ;; suc_config_name \ 00000220 020000EA B ??LongPressActionOnChat_17 2187 ExecuteFile(ws,0,0); 2188 FreeWS(ws); 2189 } 2190 break; 2191 case 9: 2192 { 2193 WSHDR *ws; 2194 ws=AllocWS(150); \ ??LongPressActionOnChat_18: \ 00000224 9600A0E3 MOV R0,#+150 \ 00000228 250100EF SWI +293 2195 str_2ws(ws,suc_config_name_mod,128); \ 0000022C ........ LDR R1,??DataTable78 ;; suc_config_name_mod \ ??LongPressActionOnChat_17: \ 00000230 0040A0E1 MOV R4,R0 \ 00000234 8020A0E3 MOV R2,#+128 \ 00000238 6C0100EF SWI +364 2196 ExecuteFile(ws,0,0); \ 0000023C 0020A0E3 MOV R2,#+0 \ 00000240 0010A0E3 MOV R1,#+0 \ 00000244 0400A0E1 MOV R0,R4 \ 00000248 940000EF SWI +148 2197 FreeWS(ws); \ 0000024C 0400A0E1 MOV R0,R4 \ 00000250 290100EF SWI +297 \ 00000254 F18FBDE8 POP {R0,R4-R11,PC} 2198 } 2199 break; 2200 case 10://ping 2201 { 2202 janis=1; \ ??LongPressActionOnChat_19: \ 00000258 ........ LDR R0,??DataTable79 ;; janis \ 0000025C 00B080E5 STR R11,[R0, #+0] 2203 TPKT *p; 2204 p=malloc(sizeof(PKT)+sizeof(TTime)); \ 00000260 1000A0E3 MOV R0,#+16 \ 00000264 140000EF SWI +20 \ 00000268 0050A0E1 MOV R5,R0 2205 GetDateTime(NULL,(TTime *)p->data); \ 0000026C 081085E2 ADD R1,R5,#+8 \ 00000270 0000A0E3 MOV R0,#+0 \ 00000274 B40000EF SWI +180 2206 p->pkt.uin=0; \ 00000278 004085E5 STR R4,[R5, #+0] 2207 p->pkt.type=T_ECHO; \ 0000027C 1200A0E3 MOV R0,#+18 \ 00000280 B400C5E1 STRH R0,[R5, #+4] 2208 p->pkt.data_len=sizeof(TTime); \ 00000284 0800A0E3 MOV R0,#+8 \ 00000288 B600C5E1 STRH R0,[R5, #+6] 2209 SUBPROC((void *)SendAnswer,0,p); \ 0000028C ........ LDR R0,??DataTable80 ;; SendAnswer \ 00000290 0520A0E1 MOV R2,R5 \ 00000294 0410A0E1 MOV R1,R4 \ 00000298 710100EF SWI +369 \ 0000029C F18FBDE8 POP {R0,R4-R11,PC} 2210 } 2211 break; 2212 case 11://go to idle 2213 { 2214 ClearContactT9Key(); \ ??LongPressActionOnChat_20: \ 000002A0 2010A0E3 MOV R1,#+32 \ 000002A4 070086E0 ADD R0,R6,R7 \ 000002A8 1D0100EF SWI +285 2215 RecountMenu(NULL,1); \ 000002AC 0110A0E3 MOV R1,#+1 \ 000002B0 0400A0E1 MOV R0,R4 \ 000002B4 ........ BL RecountMenu 2216 silenthide=1; \ 000002B8 44B287E5 STR R11,[R7, #+580] 2217 gipc.name_to=ipc_xtask_name; \ 000002BC 180086E3 ORR R0,R6,#0x18 \ 000002C0 050080E0 ADD R0,R0,R5 \ 000002C4 740087E5 STR R0,[R7, #+116] 2218 gipc.name_from=ipc_my_name; \ 000002C8 080046E2 SUB R0,R6,#+8 \ 000002CC 050080E0 ADD R0,R0,R5 \ 000002D0 780087E5 STR R0,[R7, #+120] 2219 gipc.data=0; \ 000002D4 7C4087E5 STR R4,[R7, #+124] 2220 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); \ 000002D8 743087E2 ADD R3,R7,#+116 \ 000002DC 0B20A0E1 MOV R2,R11 \ 000002E0 0A10A0E1 MOV R1,R10 \ 000002E4 0900A0E1 MOV R0,R9 \ 000002E8 000100EF SWI +256 \ 000002EC F18FBDE8 POP {R0,R4-R11,PC} 2221 } 2222 break; 2223 case 12://hide & lock 2224 { 2225 ClearContactT9Key(); \ ??LongPressActionOnChat_21: \ 000002F0 2010A0E3 MOV R1,#+32 \ 000002F4 070086E0 ADD R0,R6,R7 \ 000002F8 1D0100EF SWI +285 2226 RecountMenu(NULL,1); \ 000002FC 0110A0E3 MOV R1,#+1 \ 00000300 0400A0E1 MOV R0,R4 \ 00000304 ........ BL RecountMenu 2227 gipc.name_to=ipc_xtask_name; \ 00000308 180086E3 ORR R0,R6,#0x18 \ 0000030C 050080E0 ADD R0,R0,R5 \ 00000310 740087E5 STR R0,[R7, #+116] 2228 gipc.name_from=ipc_my_name; \ 00000314 080046E2 SUB R0,R6,#+8 \ 00000318 050080E0 ADD R0,R0,R5 \ 0000031C 780087E5 STR R0,[R7, #+120] 2229 gipc.data=0; \ 00000320 7C4087E5 STR R4,[R7, #+124] 2230 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); \ 00000324 743087E2 ADD R3,R7,#+116 \ 00000328 0B20A0E1 MOV R2,R11 \ 0000032C 0A10A0E1 MOV R1,R10 \ 00000330 0900A0E1 MOV R0,R9 \ 00000334 000100EF SWI +256 2231 if (IsUnlocked()) \ 00000338 430000EF SWI +67 \ 0000033C 000050E3 CMP R0,#+0 \ 00000340 F18FBD08 POPEQ {R0,R4-R11,PC} 2232 { 2233 KbdLock(); \ 00000344 A90000EF SWI +169 \ 00000348 F18FBDE8 POP {R0,R4-R11,PC} 2234 } 2235 // return(-1); 2236 } 2237 break; 2238 case 13://users menu 2239 { 2240 if(!t->isgroup) \ ??LongPressActionOnChat_22: \ 0000034C 081090E5 LDR R1,[R0, #+8] \ 00000350 000051E3 CMP R1,#+0 \ 00000354 F18FBD18 POPNE {R0,R4-R11,PC} 2241 CreateContactMenu(t); \ 00000358 ........ BL CreateContactMenu 2242 } 2243 break; 2244 }//switch() 2245 } \ ??LongPressActionOnChat_23: \ 0000035C F18FBDE8 POP {R0,R4-R11,PC} ;; return 2246 2247 //{"Без действия","Звук","Вибра","Инвиз","Реж.напоминания","Очистить чаты","Автоответчик","Показ.хстат/время","Конфиг","Конфиг мода","Пинг","Заблокировать","На гэ","Меню юзера"} 2248 \ In segment CODE, align 4, keep-with-next 2249 void LongPressAction(CLIST *t,int key) 2250 { \ LongPressAction: \ 00000000 00402DE9 PUSH {LR} 2251 switch(key) \ 00000004 231041E2 SUB R1,R1,#+35 \ 00000008 1B0051E3 CMP R1,#+27 \ 0000000C 0080BD88 POPHI {PC} \ 00000010 012F8FE2 ADR R2,??LongPressAction_0 \ 00000014 0120D2E7 LDRB R2,[R2, R1] \ 00000018 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??LongPressAction_0: \ 0000001C 20252525 DC8 +32,+37,+37,+37 \ 00000020 2525251E DC8 +37,+37,+37,+30 \ 00000024 25252525 DC8 +37,+37,+37,+37 \ 00000028 2506080C DC8 +37,+6,+8,+12 \ 0000002C 10121416 DC8 +16,+18,+20,+22 \ 00000030 181A1C25 DC8 +24,+26,+28,+37 \ 00000034 25252522 DC8 +37,+37,+37,+34 2252 { 2253 case '0': LongPressActionOnChat(t,longAct_0); break; \ ??LongPressAction_1: \ 00000038 78109FE5 LDR R1,??LongPressAction_2 ;; longAct_0 \ 0000003C 040000EA B ??LongPressAction_3 2254 case '1': LongPressActionOnChat(t,longAct_1); break; \ ??LongPressAction_4: \ 00000040 74109FE5 LDR R1,??LongPressAction_2+0x4 ;; longAct_1 \ 00000044 001091E5 LDR R1,[R1, #+0] \ 00000048 ........ BL LongPressActionOnChat \ 0000004C 0080BDE8 POP {PC} 2255 case '2': LongPressActionOnChat(t,longAct_2); break; \ ??LongPressAction_5: \ 00000050 68109FE5 LDR R1,??LongPressAction_2+0x8 ;; longAct_2 \ ??LongPressAction_3: \ 00000054 001091E5 LDR R1,[R1, #+0] \ 00000058 ........ BL LongPressActionOnChat \ 0000005C 0080BDE8 POP {PC} 2256 case '3': LongPressActionOnChat(t,longAct_3); break; \ ??LongPressAction_6: \ 00000060 5C109FE5 LDR R1,??LongPressAction_2+0xC ;; longAct_3 \ 00000064 FAFFFFEA B ??LongPressAction_3 2257 case '4': LongPressActionOnChat(t,longAct_4); break; \ ??LongPressAction_7: \ 00000068 58109FE5 LDR R1,??LongPressAction_2+0x10 ;; longAct_4 \ 0000006C F8FFFFEA B ??LongPressAction_3 2258 case '5': LongPressActionOnChat(t,longAct_5); break; \ ??LongPressAction_8: \ 00000070 54109FE5 LDR R1,??LongPressAction_2+0x14 ;; longAct_5 \ 00000074 F6FFFFEA B ??LongPressAction_3 2259 case '6': LongPressActionOnChat(t,longAct_6); break; \ ??LongPressAction_9: \ 00000078 50109FE5 LDR R1,??LongPressAction_2+0x18 ;; longAct_6 \ 0000007C F4FFFFEA B ??LongPressAction_3 2260 case '7': LongPressActionOnChat(t,longAct_7); break; \ ??LongPressAction_10: \ 00000080 4C109FE5 LDR R1,??LongPressAction_2+0x1C ;; longAct_7 \ 00000084 F2FFFFEA B ??LongPressAction_3 2261 case '8': LongPressActionOnChat(t,longAct_8); break; \ ??LongPressAction_11: \ 00000088 48109FE5 LDR R1,??LongPressAction_2+0x20 ;; longAct_8 \ 0000008C F0FFFFEA B ??LongPressAction_3 2262 case '9': LongPressActionOnChat(t,longAct_9); break; \ ??LongPressAction_12: \ 00000090 44109FE5 LDR R1,??LongPressAction_2+0x24 ;; longAct_9 \ 00000094 EEFFFFEA B ??LongPressAction_3 2263 case '*': LongPressActionOnChat(t,longAct_10); break; \ ??LongPressAction_13: \ 00000098 40109FE5 LDR R1,??LongPressAction_2+0x28 ;; longAct_10 \ 0000009C ECFFFFEA B ??LongPressAction_3 2264 case '#': LongPressActionOnChat(t,longAct_11); break; \ ??LongPressAction_14: \ 000000A0 3C109FE5 LDR R1,??LongPressAction_2+0x2C ;; longAct_11 \ 000000A4 EAFFFFEA B ??LongPressAction_3 2265 case RIGHT_BUTTON: LongPressActionOnChat(t,longAct_RB); break; \ ??LongPressAction_15: \ 000000A8 38109FE5 LDR R1,??LongPressAction_2+0x30 ;; longAct_RB \ 000000AC 001091E5 LDR R1,[R1, #+0] \ 000000B0 ........ BL LongPressActionOnChat 2266 } 2267 } \ ??LongPressAction_16: \ 000000B4 0080BDE8 POP {PC} ;; return \ ??LongPressAction_2: \ 000000B8 ........ DC32 longAct_0 \ 000000BC ........ DC32 longAct_1 \ 000000C0 ........ DC32 longAct_2 \ 000000C4 ........ DC32 longAct_3 \ 000000C8 ........ DC32 longAct_4 \ 000000CC ........ DC32 longAct_5 \ 000000D0 ........ DC32 longAct_6 \ 000000D4 ........ DC32 longAct_7 \ 000000D8 ........ DC32 longAct_8 \ 000000DC ........ DC32 longAct_9 \ 000000E0 ........ DC32 longAct_10 \ 000000E4 ........ DC32 longAct_11 \ 000000E8 ........ DC32 longAct_RB 2268 2269 char hostbuf2[128]; 2270 \ In segment CODE, align 4, keep-with-next 2271 int contactlist_menu_onkey(void *data, GUI_MSG *msg) 2272 { \ contactlist_menu_onkey: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 0160A0E1 MOV R6,R1 2273 #ifdef NEWSGOLD 2274 scrsTime=0; 2275 #endif 2276 2277 CLIST *t; 2278 int i; 2279 i=GetCurMenuItem(data); \ 00000008 8F0100EF SWI +399 2280 t=FindContactByN(i); \ 0000000C ........ _BLF FindContactByN,??FindContactByN??rA \ 00000010 0040A0E1 MOV R4,R0 2281 2282 if (msg->keys==0x18) \ 00000014 F200D6E1 LDRSH R0,[R6, #+2] \ 00000018 180050E3 CMP R0,#+24 \ 0000001C 0100001A BNE ??contactlist_menu_onkey_0 2283 { 2284 ShowMainMenu(); \ 00000020 ........ _BLF ShowMainMenu,??ShowMainMenu??rA 2285 return(-1); \ 00000024 120100EA B ??contactlist_menu_onkey_1 2286 } 2287 2288 if (msg->keys==0x3D) \ ??contactlist_menu_onkey_0: \ 00000028 ........ LDR R8,??DataTable94 ;; S_ICONS \ 0000002C A470A0E3 MOV R7,#+164 \ 00000030 407E87E3 ORR R7,R7,#0x400 \ 00000034 3D0050E3 CMP R0,#+61 \ 00000038 2400001A BNE ??contactlist_menu_onkey_2 2289 { 2290 if (t) \ 0000003C 000054E3 CMP R4,#+0 \ 00000040 3A00000A BEQ ??contactlist_menu_onkey_3 2291 { 2292 if (t->isgroup) \ 00000044 080094E5 LDR R0,[R4, #+8] \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 0700000A BEQ ??contactlist_menu_onkey_4 2293 { 2294 t->state^=0xFFFF; \ 00000050 B405D4E1 LDRH R0,[R4, #+84] \ 00000054 FF10A0E3 MOV R1,#+255 \ 00000058 FF1C81E3 ORR R1,R1,#0xFF00 \ 0000005C 000021E0 EOR R0,R1,R0 \ 00000060 B405C4E1 STRH R0,[R4, #+84] 2295 RecountMenu(t,1); \ 00000064 0110A0E3 MOV R1,#+1 \ 00000068 0400A0E1 MOV R0,R4 \ 0000006C 2E0000EA B ??contactlist_menu_onkey_5 2296 return(-1); 2297 } 2298 if (strlen(ContactT9Key)) \ ??contactlist_menu_onkey_4: \ 00000070 080087E0 ADD R0,R7,R8 \ 00000074 1B0000EF SWI +27 \ 00000078 000050E3 CMP R0,#+0 \ 0000007C 0500000A BEQ ??contactlist_menu_onkey_6 2299 { 2300 ClearContactT9Key(); \ 00000080 2010A0E3 MOV R1,#+32 \ 00000084 080087E0 ADD R0,R7,R8 \ 00000088 1D0100EF SWI +285 2301 RecountMenu(NULL,1); \ 0000008C 0110A0E3 MOV R1,#+1 \ 00000090 0000A0E3 MOV R0,#+0 \ 00000094 ........ BL RecountMenu 2302 } 2303 #ifdef kluchnik 2304 if(!t->isactive && HISTORY_BUFFER && (t->isLoadHistory && t->isIndividSet)) GetHistory(t, 64<isactive && HISTORY_BUFFER) GetHistory(t, 64<isactive && HISTORY_BUFFER) GetHistory(t, 64<keys==1) \ ??contactlist_menu_onkey_2: \ 000000D0 010050E3 CMP R0,#+1 \ 000000D4 0500001A BNE ??contactlist_menu_onkey_8 2315 { 2316 if (strlen(ContactT9Key)) \ 000000D8 080087E0 ADD R0,R7,R8 \ 000000DC 1B0000EF SWI +27 \ 000000E0 000050E3 CMP R0,#+0 \ 000000E4 0100000A BEQ ??contactlist_menu_onkey_8 2317 { 2318 BackSpaceContactT9(); \ 000000E8 ........ BL BackSpaceContactT9 2319 RecountMenu(NULL,1); \ 000000EC 0C0000EA B ??contactlist_menu_onkey_9 2320 return(-1); 2321 } 2322 } 2323 if (msg->gbsmsg->msg==KEY_DOWN) \ ??contactlist_menu_onkey_8: \ 000000F0 040096E5 LDR R0,[R6, #+4] \ 000000F4 9320A0E3 MOV R2,#+147 \ 000000F8 F210D0E1 LDRSH R1,[R0, #+2] \ 000000FC 402F82E3 ORR R2,R2,#0x100 \ 00000100 020051E1 CMP R1,R2 \ 00000104 5000001A BNE ??contactlist_menu_onkey_10 2324 { 2325 int key=msg->gbsmsg->submess; \ 00000108 049090E5 LDR R9,[R0, #+4] 2326 if ((key>='0')&&(key<='9')) \ 0000010C 300059E3 CMP R9,#+48 \ 00000110 080000BA BLT ??contactlist_menu_onkey_11 \ 00000114 3A0059E3 CMP R9,#+58 \ 00000118 200000AA BGE ??contactlist_menu_onkey_12 2327 { 2328 AddContactT9Key(key); \ 0000011C 0900A0E1 MOV R0,R9 \ 00000120 ........ BL AddContactT9Key 2329 RecountMenu(NULL,1); \ ??contactlist_menu_onkey_9: \ 00000124 0110A0E3 MOV R1,#+1 \ 00000128 0000A0E3 MOV R0,#+0 \ ??contactlist_menu_onkey_5: \ 0000012C ........ BL RecountMenu 2330 return(-1); \ ??contactlist_menu_onkey_3: \ 00000130 0000E0E3 MVN R0,#+0 \ 00000134 F087BDE8 POP {R4-R10,PC} 2331 } 2332 2333 if (key==VOL_UP_BUTTON && isVolUpButton) \ ??contactlist_menu_onkey_11: \ 00000138 140059E3 CMP R9,#+20 \ 0000013C 1700001A BNE ??contactlist_menu_onkey_12 \ 00000140 70039FE5 LDR R0,??contactlist_menu_onkey_13 ;; isVolUpButton \ 00000144 000090E5 LDR R0,[R0, #+0] \ 00000148 000050E3 CMP R0,#+0 \ 0000014C 1300000A BEQ ??contactlist_menu_onkey_12 2334 { 2335 #ifdef NEWSGOLD 2336 CreateScreenSelectGUI(); 2337 #else 2338 char *small_info=malloc(256); \ 00000150 400FA0E3 MOV R0,#+256 \ 00000154 140000EF SWI +20 2339 sprintf(small_info, "Время в онлайн:\n" 2340 "%02d:%02d:%02d\n" 2341 "Сервер:\n%s" 2342 ,uptimeHour, uptimeMin, uptimeSec, hostbuf2); \ 00000158 5C139FE5 LDR R1,??contactlist_menu_onkey_13+0x4 ;; `?gbsmsg->submess==VOL_DOWN_BUTTON && isVolDownButton) \ ??contactlist_menu_onkey_12: \ 000001A0 040096E5 LDR R0,[R6, #+4] \ 000001A4 0050A0E3 MOV R5,#+0 \ 000001A8 040090E5 LDR R0,[R0, #+4] \ 000001AC 01A0A0E3 MOV R10,#+1 \ 000001B0 150050E3 CMP R0,#+21 \ 000001B4 1500001A BNE ??contactlist_menu_onkey_14 \ 000001B8 00039FE5 LDR R0,??contactlist_menu_onkey_13+0x8 ;; isVolDownButton \ 000001BC 000090E5 LDR R0,[R0, #+0] \ 000001C0 000050E3 CMP R0,#+0 \ 000001C4 1100000A BEQ ??contactlist_menu_onkey_14 2349 { 2350 if(!away_m) \ 000001C8 200298E5 LDR R0,[R8, #+544] \ 000001CC 000050E3 CMP R0,#+0 \ 000001D0 0300001A BNE ??contactlist_menu_onkey_15 2351 { 2352 away_m=!away_m; \ 000001D4 20A288E5 STR R10,[R8, #+544] 2353 /* GBS_StopTimer(&away_tmr); 2354 msg_away_timer=AUTO_ENGADE; 2355 away_timer();*/ 2356 main_d=1; \ 000001D8 C8A188E5 STR R10,[R8, #+456] 2357 InputAwayMsg(); \ 000001DC ........ BL InputAwayMsg \ 000001E0 080000EA B ??contactlist_menu_onkey_16 2358 } 2359 else 2360 { 2361 msg_away_timer=0; 2362 away_m=!away_m; 2363 if(change_back_status) \ ??contactlist_menu_onkey_15: \ 000001E4 280298E5 LDR R0,[R8, #+552] \ 000001E8 1C5288E5 STR R5,[R8, #+540] \ 000001EC 205288E5 STR R5,[R8, #+544] \ 000001F0 000050E3 CMP R0,#+0 \ 000001F4 0300000A BEQ ??contactlist_menu_onkey_16 2364 { 2365 CurrentStatus=status_rem; \ 000001F8 240298E5 LDR R0,[R8, #+548] \ 000001FC 100288E5 STR R0,[R8, #+528] 2366 set_my_status(); \ 00000200 ........ BL set_my_status 2367 change_back_status=0; \ 00000204 285288E5 STR R5,[R8, #+552] 2368 } 2369 } 2370 UpdateCLheader(); \ ??contactlist_menu_onkey_16: \ 00000208 ........ BL UpdateCLheader 2371 RefreshGUI(); \ 0000020C 960100EF SWI +406 2372 } 2373 2374 if(key==GREEN_BUTTON) \ ??contactlist_menu_onkey_14: \ 00000210 0B0059E3 CMP R9,#+11 \ 00000214 0700001A BNE ??contactlist_menu_onkey_17 2375 { 2376 IsActiveUp=!IsActiveUp; \ 00000218 080298E5 LDR R0,[R8, #+520] 2377 RecountMenu(NULL,1); \ 0000021C 0110A0E3 MOV R1,#+1 \ 00000220 000050E3 CMP R0,#+0 \ 00000224 00A0A013 MOVNE R10,#+0 \ 00000228 08A288E5 STR R10,[R8, #+520] \ 0000022C 0000A0E3 MOV R0,#+0 \ 00000230 ........ BL RecountMenu \ 00000234 9D0000EA B ??contactlist_menu_onkey_18 2378 return(-1); 2379 } 2380 2381 if(key==LEFT_BUTTON && (CountContacts()>0)) \ ??contactlist_menu_onkey_17: \ 00000238 3D0059E3 CMP R9,#+61 \ 0000023C 3200001A BNE ??contactlist_menu_onkey_19 \ 00000240 ........ _BLF CountContacts,??CountContacts??rA \ 00000244 010050E3 CMP R0,#+1 \ 00000248 1A0000AA BGE ??contactlist_menu_onkey_20 2382 { 2383 while(t=(CLIST *)(t->next)) 2384 { 2385 if (t->isunread) goto doit; 2386 } 2387 t=(CLIST *)(&cltop); 2388 while(t=(CLIST *)(t->next)) 2389 { 2390 if (t->isunread) goto doit; 2391 } 2392 if (t && Is_Show_Groups) { 2393 if (!t->isgroup) 2394 t=FindGroupByID(t->group); 2395 if (t && !t->state) { 2396 t->state^=0xFFFF; 2397 goto does; 2398 } 2399 } 2400 doit: 2401 { 2402 CLIST *g=FindGroupByID(t->group); 2403 if (g) 2404 { 2405 if (g->state) 2406 { 2407 g->state=0; 2408 } 2409 } 2410 } 2411 does: 2412 RecountMenu(t,1); 2413 return(-1); 2414 } 2415 2416 if (key=='*' && (CountContacts()>0)) 2417 { 2418 while(t=(CLIST *)(t->next)) 2419 { 2420 if (t->just_now) goto doit3; 2421 } 2422 t=(CLIST *)(&cltop); 2423 while(t=(CLIST *)(t->next)) 2424 { 2425 if (t->just_now) goto doit3; 2426 } 2427 return(-1); 2428 doit3: 2429 { 2430 CLIST *g=FindGroupByID(t->group); 2431 if (g) 2432 { 2433 if (g->state) 2434 { 2435 g->state=0; 2436 } 2437 } 2438 } 2439 RecountMenu(t,1); 2440 return(-1); 2441 } 2442 2443 if (key=='#' && (CountContacts()>0))//Если есть хоть один контакт то выполнять,иначе возможен пикофф 2444 { 2445 if(ActionResh) 2446 { 2447 while(t=(CLIST *)(t->next)) 2448 { 2449 if (t->isactive) goto doit4; 2450 } 2451 t=(CLIST *)(&cltop); 2452 while(t=(CLIST *)(t->next)) 2453 { 2454 if (t->isactive) goto doit4; 2455 } 2456 return(-1); 2457 doit4: 2458 { 2459 CLIST *g=FindGroupByID(t->group); 2460 if (g) 2461 { 2462 if (g->state) 2463 { 2464 g->state=0; 2465 } 2466 } 2467 } 2468 RecountMenu(t,1); 2469 } 2470 else 2471 { 2472 if(t->log && !(t->just_now))//очистить лог 2473 { 2474 FreeLOGQ(&t->log); 2475 t->msg_count=0; 2476 t->isactive=0; 2477 } 2478 2479 if(t->just_now)//если контакт тока зашел,то обнуляем 2480 { 2481 CLIST *tt; 2482 tt=FindContactByUin(t->uin); 2483 tt->just_now=0; 2484 } 2485 2486 if(t->uin==UIN)//если нажали на Loopback, то обнуляем все just_now'ы 2487 { 2488 CLIST *tt; 2489 tt=(CLIST *)(&cltop); 2490 while(tt=(CLIST *)(tt->next)) 2491 { 2492 if(tt->just_now) tt->just_now=0; 2493 } 2494 } 2495 2496 if(strlen(ContactT9Key)) ClearContactT9Key(); 2497 RecountMenu(NULL,0); 2498 } 2499 return(-1); 2500 } 2501 2502 if (key==RIGHT_BUTTON) 2503 { 2504 //Послать запрос текста XStatus 2505 if (t) 2506 { 2507 if (!t->isgroup) 2508 { 2509 FreeXText(t); 2510 t->req_xtext=0; 2511 RequestXText(t->uin); 2512 RefreshGUI(); 2513 return(-1); 2514 } 2515 } 2516 } 2517 } 2518 2519 if (msg->gbsmsg->msg==LONG_PRESS) \ ??contactlist_menu_onkey_10: \ 0000024C 040096E5 LDR R0,[R6, #+4] \ 00000250 9520A0E3 MOV R2,#+149 \ 00000254 F210D0E1 LDRSH R1,[R0, #+2] \ 00000258 402F82E3 ORR R2,R2,#0x100 \ 0000025C 020051E1 CMP R1,R2 \ 00000260 0F00001A BNE ??contactlist_menu_onkey_21 2520 { 2521 /* if (msg->gbsmsg->submess=='#') 2522 { 2523 ClearContactT9Key(); 2524 RecountMenu(NULL,1); 2525 gipc.name_to=ipc_xtask_name; 2526 gipc.name_from=ipc_my_name; 2527 gipc.data=0; 2528 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); 2529 if (IsUnlocked()) 2530 { 2531 KbdLock(); 2532 } 2533 // CreateScreenSelectGUI(); 2534 return(-1); 2535 } 2536 if(msg->gbsmsg->submess=='*') 2537 { 2538 ClearContactT9Key(); 2539 RecountMenu(NULL,1); 2540 silenthide=1; 2541 gipc.name_to=ipc_xtask_name; 2542 gipc.name_from=ipc_my_name; 2543 gipc.data=0; 2544 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); 2545 } 2546 2547 if(msg->gbsmsg->submess==RIGHT_BUTTON) 2548 { 2549 if(!t->isgroup) 2550 CreateContactMenu(t); 2551 }*/ 2552 2553 //-------------------- LONG PRESS ACTION ON CL --------------------// 2554 /* switch(msg->gbsmsg->submess) 2555 { 2556 case '1': 2557 Is_Sounds_Enabled=!(Is_Sounds_Enabled); 2558 if(Is_Sounds_Enabled) 2559 ShowMSG(1,(int)"Sound 0n"); 2560 else 2561 ShowMSG(1,(int)"Sound Off"); 2562 SUBPROC((void*)WriteDefSettings); 2563 break; 2564 case '2': 2565 Is_Vibra_Enabled=!(Is_Vibra_Enabled); 2566 SUBPROC((void*)WriteDefSettings); 2567 if(Is_Vibra_Enabled) 2568 ShowMSG(1,(int)"Vibra On"); 2569 else 2570 ShowMSG(1,(int)"Vibra Off"); 2571 break; 2572 case '3': 2573 if(CurrentPrivateStatus!=1) 2574 { 2575 SetPrivateStatus(1);//Инвиз 2576 ShowMSG(1,(int)"Инвиз включен"); 2577 } 2578 else 2579 { 2580 SetPrivateStatus(3); 2581 ShowMSG(1,(int)"Инвиз выключен"); 2582 } 2583 break; 2584 case '4': 2585 Is_Double_Vibra_On=!(Is_Double_Vibra_On); 2586 SUBPROC((void*)WriteDefSettings); 2587 if(Is_Double_Vibra_On) 2588 ShowMSG(1,(int)"Vibra rem On"); 2589 else 2590 ShowMSG(1,(int)"Vibra rem Off"); 2591 break; 2592 case '5': 2593 { 2594 CLIST *cl; 2595 cl=(CLIST *)(&cltop); 2596 while(cl=(CLIST *)(cl->next)) 2597 { 2598 if(cl->log) 2599 { 2600 FreeLOGQ(&cl->log); 2601 cl->msg_count=0; 2602 cl->isactive=0; 2603 } 2604 } 2605 if(strlen(ContactT9Key)) ClearContactT9Key(); 2606 RecountMenu(NULL,1); 2607 return (-1); 2608 } 2609 case '6': 2610 Is_Show_Offline=!(Is_Show_Offline); 2611 if(Is_Show_Offline) 2612 ShowMSG(1,(int)"Offline on"); 2613 else 2614 ShowMSG(1,(int)"Offline off"); 2615 UpdateCLheader(); 2616 break; 2617 case '7': 2618 { 2619 Show_XTX=!(Show_XTX); 2620 if(Show_XTX) 2621 ShowMSG(1,(int)"Default show x-status"); 2622 else 2623 ShowMSG(1,(int)"Default show time"); 2624 } 2625 break; 2626 case '8': 2627 { 2628 WSHDR *ws; 2629 ws=AllocWS(150); 2630 str_2ws(ws,suc_config_name,128); 2631 ExecuteFile(ws,0,0); 2632 FreeWS(ws); 2633 } 2634 break; 2635 case '9': 2636 { 2637 WSHDR *ws; 2638 ws=AllocWS(150); 2639 str_2ws(ws,suc_config_name_mod,128); 2640 ExecuteFile(ws,0,0); 2641 FreeWS(ws); 2642 } 2643 break; 2644 case '0'://ping 2645 { 2646 janis=1; 2647 TPKT *p; 2648 p=malloc(sizeof(PKT)+sizeof(TTime)); 2649 GetDateTime(NULL,(TTime *)p->data); 2650 p->pkt.uin=0; 2651 p->pkt.type=T_ECHO; 2652 p->pkt.data_len=sizeof(TTime); 2653 SUBPROC((void *)SendAnswer,0,p); 2654 } 2655 break; 2656 } */ 2657 LongPressAction(t,msg->gbsmsg->submess); \ 00000264 041090E5 LDR R1,[R0, #+4] \ 00000268 0400A0E1 MOV R0,R4 \ 0000026C ........ BL LongPressAction 2658 2659 int key=msg->gbsmsg->submess; \ 00000270 040096E5 LDR R0,[R6, #+4] \ 00000274 040090E5 LDR R0,[R0, #+4] 2660 if ((key>='0')&&(key<='9')) \ 00000278 300050E3 CMP R0,#+48 \ 0000027C 080000BA BLT ??contactlist_menu_onkey_21 \ 00000280 3A0050E3 CMP R0,#+58 \ 00000284 060000AA BGE ??contactlist_menu_onkey_21 2661 { 2662 ClearContactT9Key(); \ 00000288 2010A0E3 MOV R1,#+32 \ 0000028C 080087E0 ADD R0,R7,R8 \ 00000290 1D0100EF SWI +285 2663 UpdateCLheader(); \ 00000294 ........ BL UpdateCLheader 2664 RecountMenu(NULL,1); \ 00000298 0110A0E3 MOV R1,#+1 \ 0000029C 0000A0E3 MOV R0,#+0 \ 000002A0 ........ BL RecountMenu 2665 } 2666 } 2667 return(0); \ ??contactlist_menu_onkey_21: \ 000002A4 0000A0E3 MOV R0,#+0 \ 000002A8 F087BDE8 POP {R4-R10,PC} ;; return \ ??contactlist_menu_onkey_22: \ 000002AC 800094E5 LDR R0,[R4, #+128] \ 000002B0 000050E3 CMP R0,#+0 \ 000002B4 0900001A BNE ??contactlist_menu_onkey_23 \ ??contactlist_menu_onkey_20: \ 000002B8 004094E5 LDR R4,[R4, #+0] \ 000002BC 000054E3 CMP R4,#+0 \ 000002C0 F9FFFF1A BNE ??contactlist_menu_onkey_22 \ 000002C4 A54F88E2 ADD R4,R8,#+660 \ ??contactlist_menu_onkey_24: \ 000002C8 004094E5 LDR R4,[R4, #+0] \ 000002CC 000054E3 CMP R4,#+0 \ 000002D0 0200000A BEQ ??contactlist_menu_onkey_23 \ 000002D4 800094E5 LDR R0,[R4, #+128] \ 000002D8 000050E3 CMP R0,#+0 \ 000002DC F9FFFF0A BEQ ??contactlist_menu_onkey_24 \ ??contactlist_menu_onkey_23: \ 000002E0 100094E5 LDR R0,[R4, #+16] \ 000002E4 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 000002E8 000050E3 CMP R0,#+0 \ 000002EC B415D011 LDRHNE R1,[R0, #+84] \ 000002F0 00005113 CMPNE R1,#+0 \ 000002F4 B455C011 STRHNE R5,[R0, #+84] \ 000002F8 0110A0E3 MOV R1,#+1 \ 000002FC 0400A0E1 MOV R0,R4 \ 00000300 ........ BL RecountMenu \ 00000304 0500E0E1 MVN R0,R5 \ 00000308 F087BDE8 POP {R4-R10,PC} \ ??contactlist_menu_onkey_19: \ 0000030C 2A0059E3 CMP R9,#+42 \ 00000310 1100001A BNE ??contactlist_menu_onkey_25 \ 00000314 ........ _BLF CountContacts,??CountContacts??rA \ 00000318 010050E3 CMP R0,#+1 \ 0000031C CAFFFFBA BLT ??contactlist_menu_onkey_10 \ 00000320 020000EA B ??contactlist_menu_onkey_26 \ ??contactlist_menu_onkey_27: \ 00000324 680094E5 LDR R0,[R4, #+104] \ 00000328 000050E3 CMP R0,#+0 \ 0000032C EBFFFF1A BNE ??contactlist_menu_onkey_23 \ ??contactlist_menu_onkey_26: \ 00000330 004094E5 LDR R4,[R4, #+0] \ 00000334 000054E3 CMP R4,#+0 \ 00000338 F9FFFF1A BNE ??contactlist_menu_onkey_27 \ 0000033C A54F88E2 ADD R4,R8,#+660 \ ??contactlist_menu_onkey_28: \ 00000340 004094E5 LDR R4,[R4, #+0] \ 00000344 000054E3 CMP R4,#+0 \ 00000348 78FFFF0A BEQ ??contactlist_menu_onkey_3 \ 0000034C 680094E5 LDR R0,[R4, #+104] \ 00000350 000050E3 CMP R0,#+0 \ 00000354 F9FFFF0A BEQ ??contactlist_menu_onkey_28 \ 00000358 E0FFFFEA B ??contactlist_menu_onkey_23 \ ??contactlist_menu_onkey_25: \ 0000035C 230059E3 CMP R9,#+35 \ 00000360 4500001A BNE ??contactlist_menu_onkey_29 \ 00000364 ........ _BLF CountContacts,??CountContacts??rA \ 00000368 010050E3 CMP R0,#+1 \ 0000036C B6FFFFBA BLT ??contactlist_menu_onkey_10 \ 00000370 4C019FE5 LDR R0,??contactlist_menu_onkey_13+0xC ;; ActionResh \ 00000374 000090E5 LDR R0,[R0, #+0] \ 00000378 000050E3 CMP R0,#+0 \ 0000037C 1900001A BNE ??contactlist_menu_onkey_30 \ 00000380 900094E5 LDR R0,[R4, #+144] \ 00000384 000050E3 CMP R0,#+0 \ 00000388 0600000A BEQ ??contactlist_menu_onkey_31 \ 0000038C 680094E5 LDR R0,[R4, #+104] \ 00000390 000050E3 CMP R0,#+0 \ 00000394 0300001A BNE ??contactlist_menu_onkey_31 \ 00000398 900084E2 ADD R0,R4,#+144 \ 0000039C ........ BL FreeLOGQ \ 000003A0 A05084E5 STR R5,[R4, #+160] \ 000003A4 9C5084E5 STR R5,[R4, #+156] \ ??contactlist_menu_onkey_31: \ 000003A8 680094E5 LDR R0,[R4, #+104] \ 000003AC 000050E3 CMP R0,#+0 \ 000003B0 0200000A BEQ ??contactlist_menu_onkey_32 \ 000003B4 0C0094E5 LDR R0,[R4, #+12] \ 000003B8 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 000003BC 685080E5 STR R5,[R0, #+104] \ ??contactlist_menu_onkey_32: \ 000003C0 ........ LDR R1,??DataTable99 ;; UIN \ 000003C4 0C0094E5 LDR R0,[R4, #+12] \ 000003C8 001091E5 LDR R1,[R1, #+0] \ 000003CC 010050E1 CMP R0,R1 \ 000003D0 1D00001A BNE ??contactlist_menu_onkey_33 \ 000003D4 A50F88E2 ADD R0,R8,#+660 \ 000003D8 180000EA B ??contactlist_menu_onkey_34 \ ??contactlist_menu_onkey_35: \ 000003DC 9C0094E5 LDR R0,[R4, #+156] \ 000003E0 000050E3 CMP R0,#+0 \ 000003E4 0900001A BNE ??contactlist_menu_onkey_36 \ ??contactlist_menu_onkey_30: \ 000003E8 004094E5 LDR R4,[R4, #+0] \ 000003EC 000054E3 CMP R4,#+0 \ 000003F0 F9FFFF1A BNE ??contactlist_menu_onkey_35 \ 000003F4 A54F88E2 ADD R4,R8,#+660 \ ??contactlist_menu_onkey_37: \ 000003F8 004094E5 LDR R4,[R4, #+0] \ 000003FC 000054E3 CMP R4,#+0 \ 00000400 4AFFFF0A BEQ ??contactlist_menu_onkey_3 \ 00000404 9C0094E5 LDR R0,[R4, #+156] \ 00000408 000050E3 CMP R0,#+0 \ 0000040C F9FFFF0A BEQ ??contactlist_menu_onkey_37 \ ??contactlist_menu_onkey_36: \ 00000410 100094E5 LDR R0,[R4, #+16] \ 00000414 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 00000418 000050E3 CMP R0,#+0 \ 0000041C B415D011 LDRHNE R1,[R0, #+84] \ 00000420 00005113 CMPNE R1,#+0 \ 00000424 B455C011 STRHNE R5,[R0, #+84] \ 00000428 0110A0E3 MOV R1,#+1 \ 0000042C 0400A0E1 MOV R0,R4 \ 00000430 0E0000EA B ??contactlist_menu_onkey_38 \ ??contactlist_menu_onkey_39: \ 00000434 681090E5 LDR R1,[R0, #+104] \ 00000438 000051E3 CMP R1,#+0 \ 0000043C 68508015 STRNE R5,[R0, #+104] \ ??contactlist_menu_onkey_34: \ 00000440 000090E5 LDR R0,[R0, #+0] \ 00000444 000050E3 CMP R0,#+0 \ 00000448 F9FFFF1A BNE ??contactlist_menu_onkey_39 \ ??contactlist_menu_onkey_33: \ 0000044C 080087E0 ADD R0,R7,R8 \ 00000450 1B0000EF SWI +27 \ 00000454 000050E3 CMP R0,#+0 \ 00000458 0200000A BEQ ??contactlist_menu_onkey_40 \ 0000045C 2010A0E3 MOV R1,#+32 \ 00000460 080087E0 ADD R0,R7,R8 \ 00000464 1D0100EF SWI +285 \ ??contactlist_menu_onkey_40: \ 00000468 0010A0E3 MOV R1,#+0 \ 0000046C 0100A0E1 MOV R0,R1 \ ??contactlist_menu_onkey_38: \ 00000470 ........ BL RecountMenu \ ??contactlist_menu_onkey_1: \ 00000474 0000E0E3 MVN R0,#+0 \ 00000478 F087BDE8 POP {R4-R10,PC} \ ??contactlist_menu_onkey_29: \ 0000047C 3E0059E3 CMP R9,#+62 \ 00000480 71FFFF1A BNE ??contactlist_menu_onkey_10 \ 00000484 000054E3 CMP R4,#+0 \ 00000488 6FFFFF0A BEQ ??contactlist_menu_onkey_10 \ 0000048C 080094E5 LDR R0,[R4, #+8] \ 00000490 000050E3 CMP R0,#+0 \ 00000494 6CFFFF1A BNE ??contactlist_menu_onkey_10 \ 00000498 0400A0E1 MOV R0,R4 \ 0000049C ........ _BLF FreeXText,??FreeXText??rA \ 000004A0 AC5084E5 STR R5,[R4, #+172] \ 000004A4 0C0094E5 LDR R0,[R4, #+12] \ 000004A8 ........ BL RequestXText \ 000004AC 960100EF SWI +406 \ ??contactlist_menu_onkey_18: \ 000004B0 0500E0E1 MVN R0,R5 \ 000004B4 F087BDE8 POP {R4-R10,PC} \ ??contactlist_menu_onkey_13: \ 000004B8 ........ DC32 isVolUpButton \ 000004BC ........ DC32 `?next)) 2676 { 2677 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 2678 { 2679 total++; 2680 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 2681 } 2682 } \ ??GetOnTotalContact_0: \ 00000040 002092E5 LDR R2,[R2, #+0] \ 00000044 000052E3 CMP R2,#+0 \ 00000048 F3FFFF1A BNE ??GetOnTotalContact_1 2683 _onlinetotal[0]=online; \ 0000004C 003081E5 STR R3,[R1, #+0] 2684 _onlinetotal[1]=total; \ 00000050 04C081E5 STR R12,[R1, #+4] 2685 } \ 00000054 3000BDE8 POP {R4,R5} \ 00000058 1EFF2FE1 BX LR ;; return 2686 2687 \ In segment CODE, align 4, keep-with-next 2688 void contactlist_menu_iconhndl(void *data, int curitem, void *unk) 2689 { \ contactlist_menu_iconhndl: \ 00000000 F24F2DE9 PUSH {R1,R4-R11,LR} \ 00000004 9CDF4DE2 SUB SP,SP,#+624 2690 CLIST *t; 2691 #ifdef USE_MLMENU 2692 void *item=AllocMLMenuItem(data); 2693 #else 2694 void *item=AllocMenuItem(data); 2695 #endif 2696 int icon; 2697 2698 WSHDR *ws2; 2699 #ifdef USE_MLMENU 2700 WSHDR *ws4; 2701 #endif 2702 WSHDR ws1loc, *ws1; 2703 unsigned short num[128]; 2704 ws1=CreateLocalWS(&ws1loc,num,128); 2705 #ifdef USE_MLMENU 2706 WSHDR ws3loc, *ws3; 2707 unsigned short num3[128]; 2708 ws3=CreateLocalWS(&ws3loc,num3,128); 2709 char s[64]; 2710 #endif 2711 t=FindContactByN(curitem); 2712 if (t) \ 00000008 ........ LDR R10,??DataTable90 ;; Canvas \ 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 0080B0E1 MOVS R8,R0 \ 0000004C 7800000A BEQ ??contactlist_menu_iconhndl_0 2713 { 2714 icon=GetIconIndex(t); \ 00000050 ........ BL GetIconIndex \ 00000054 0090A0E1 MOV R9,R0 2715 if (icon!=IS_GROUP) \ 00000058 0F0059E3 CMP R9,#+15 \ 0000005C 6300000A BEQ ??contactlist_menu_iconhndl_1 2716 { 2717 if(t->just_now) \ 00000060 680098E5 LDR R0,[R8, #+104] \ 00000064 000050E3 CMP R0,#+0 \ 00000068 0C00000A BEQ ??contactlist_menu_iconhndl_2 2718 { 2719 char *test=malloc(64); \ 0000006C 4000A0E3 MOV R0,#+64 \ 00000070 140000EF SWI +20 \ 00000074 00B0A0E1 MOV R11,R0 2720 sprintf(test, ">> %s <<", t->name); \ 00000078 142088E2 ADD R2,R8,#+20 \ 0000007C 4B1F8AE2 ADD R1,R10,#+300 \ 00000080 160000EF SWI +22 2721 wsprintf(ws1,percent_t,test); \ 00000084 0B20A0E1 MOV R2,R11 \ 00000088 18108AE2 ADD R1,R10,#+24 \ 0000008C 0600A0E1 MOV R0,R6 \ 00000090 240100EF SWI +292 2722 mfree(test); \ 00000094 0B00A0E1 MOV R0,R11 \ 00000098 150000EF SWI +21 \ 0000009C 030000EA B ??contactlist_menu_iconhndl_3 2723 } 2724 else 2725 wsprintf(ws1,percent_t,t->name); \ ??contactlist_menu_iconhndl_2: \ 000000A0 142088E2 ADD R2,R8,#+20 \ 000000A4 18108AE2 ADD R1,R10,#+24 \ 000000A8 0600A0E1 MOV R0,R6 \ 000000AC 240100EF SWI +292 2726 if (t->just_now) \ ??contactlist_menu_iconhndl_3: \ 000000B0 680098E5 LDR R0,[R8, #+104] \ 000000B4 08B0A0E3 MOV R11,#+8 \ 000000B8 E0BC8BE3 ORR R11,R11,#0xE000 \ 000000BC 000050E3 CMP R0,#+0 2727 { 2728 wsInsertChar(ws1,0x0004,1); \ 000000C0 0120A013 MOVNE R2,#+1 \ 000000C4 0410A013 MOVNE R1,#+4 \ 000000C8 0400001A BNE ??contactlist_menu_iconhndl_4 2729 wsInsertChar(ws1,0xE008,1); 2730 } 2731 else 2732 if (t->isactive) \ 000000CC 9C0098E5 LDR R0,[R8, #+156] \ 000000D0 000050E3 CMP R0,#+0 \ 000000D4 0700000A BEQ ??contactlist_menu_iconhndl_5 2733 { 2734 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 2735 wsInsertChar(ws1,0xE008,1); \ 000000E8 0120A0E3 MOV R2,#+1 \ 000000EC 0B10A0E1 MOV R1,R11 \ 000000F0 0600A0E1 MOV R0,R6 \ 000000F4 1D0000EF SWI +29 2736 } 2737 2738 #ifdef USE_MLMENU 2739 if ((t->xtext && t->xtext[0]!=0) && (t->isShowXst) && (t->state!=0xFFFF))//Если контакт онлайн и показывать хстату \ ??contactlist_menu_iconhndl_5: \ 000000F8 A40098E5 LDR R0,[R8, #+164] \ 000000FC 0AB08BE2 ADD R11,R11,#+10 \ 00000100 000050E3 CMP R0,#+0 \ 00000104 0000D015 LDRBNE R0,[R0, #+0] \ 00000108 00005013 CMPNE R0,#+0 \ 0000010C 6C009815 LDRNE R0,[R8, #+108] \ 00000110 00005013 CMPNE R0,#+0 \ 00000114 1400000A BEQ ??contactlist_menu_iconhndl_6 \ 00000118 B405D8E1 LDRH R0,[R8, #+84] \ 0000011C FF10A0E3 MOV R1,#+255 \ 00000120 FF1C81E3 ORR R1,R1,#0xFF00 \ 00000124 010050E1 CMP R0,R1 \ 00000128 0F00000A BEQ ??contactlist_menu_iconhndl_6 2740 { 2741 int i; 2742 zeromem(s,64); \ 0000012C 4010A0E3 MOV R1,#+64 \ 00000130 820F8DE2 ADD R0,SP,#+520 \ 00000134 1D0100EF SWI +285 2743 i=t->xtext[0]; \ 00000138 A40098E5 LDR R0,[R8, #+164] \ ??contactlist_menu_iconhndl_7: \ 0000013C 0020D0E5 LDRB R2,[R0, #+0] 2744 if (i>63) i=63; 2745 strncpy(s,t->xtext+1,i); \ 00000140 011080E2 ADD R1,R0,#+1 \ 00000144 820F8DE2 ADD R0,SP,#+520 \ 00000148 400052E3 CMP R2,#+64 \ 0000014C 3F20A0A3 MOVGE R2,#+63 \ 00000150 160100EF SWI +278 2746 wsprintf(ws3,"%c%t",0xE012,s); \ 00000154 823F8DE2 ADD R3,SP,#+520 \ 00000158 0B20A0E1 MOV R2,R11 \ 0000015C 4E1F8AE2 ADD R1,R10,#+312 \ 00000160 0700A0E1 MOV R0,R7 \ 00000164 240100EF SWI +292 \ 00000168 110000EA B ??contactlist_menu_iconhndl_8 2747 } 2748 else 2749 if(t->xtext2 && t->xtext2[0]!=0 && isLogStatusChange) \ ??contactlist_menu_iconhndl_6: \ 0000016C A80098E5 LDR R0,[R8, #+168] \ 00000170 000050E3 CMP R0,#+0 \ 00000174 0000D015 LDRBNE R0,[R0, #+0] \ 00000178 00005013 CMPNE R0,#+0 \ 0000017C 0800000A BEQ ??contactlist_menu_iconhndl_9 \ 00000180 ........ LDR R0,??DataTable86 ;; isLogStatusChange \ 00000184 000090E5 LDR R0,[R0, #+0] \ 00000188 000050E3 CMP R0,#+0 \ 0000018C 0400000A BEQ ??contactlist_menu_iconhndl_9 2750 { 2751 int i; 2752 zeromem(s,64); \ 00000190 4010A0E3 MOV R1,#+64 \ 00000194 820F8DE2 ADD R0,SP,#+520 \ 00000198 1D0100EF SWI +285 2753 i=t->xtext2[0]; \ 0000019C A80098E5 LDR R0,[R8, #+168] \ 000001A0 E5FFFFEA B ??contactlist_menu_iconhndl_7 2754 if (i>63) i=63; 2755 strncpy(s,t->xtext2+1,i); 2756 wsprintf(ws3,"%c%t",0xE012,s); 2757 } 2758 else 2759 wsprintf(ws3,percent_d,t->uin); \ ??contactlist_menu_iconhndl_9: \ 000001A4 0C2098E5 LDR R2,[R8, #+12] \ 000001A8 1E108AE2 ADD R1,R10,#+30 \ 000001AC 0700A0E1 MOV R0,R7 \ 000001B0 240100EF SWI +292 2760 if ((t->xstatexstate)) \ ??contactlist_menu_iconhndl_8: \ 000001B4 B605D8E1 LDRH R0,[R8, #+86] \ 000001B8 ........ LDR R2,??DataTable87 ;; total_xstatuses \ 000001BC 0010A0E1 MOV R1,R0 \ 000001C0 002092E5 LDR R2,[R2, #+0] \ 000001C4 020051E1 CMP R1,R2 \ 000001C8 1C0000AA BGE ??contactlist_menu_iconhndl_10 \ 000001CC 000050E3 CMP R0,#+0 \ 000001D0 1A00000A BEQ ??contactlist_menu_iconhndl_10 2761 { 2762 wsInsertChar(ws3,FIRST_UCS2_BITMAP+t->xstate,1); \ 000001D4 0120A0E3 MOV R2,#+1 \ 000001D8 3700A0E3 MOV R0,#+55 \ 000001DC E10C80E3 ORR R0,R0,#0xE100 \ 000001E0 011080E0 ADD R1,R0,R1 \ 000001E4 0700A0E1 MOV R0,R7 \ 000001E8 1D0000EF SWI +29 \ 000001EC 130000EA B ??contactlist_menu_iconhndl_10 2763 } 2764 #endif 2765 } 2766 else 2767 { 2768 int onlinetotal[2]; 2769 GetOnTotalContact(t->group,onlinetotal); \ ??contactlist_menu_iconhndl_1: \ 000001F0 100098E5 LDR R0,[R8, #+16] \ 000001F4 0D10A0E1 MOV R1,SP \ 000001F8 ........ BL GetOnTotalContact 2770 #ifdef USE_MLMENU 2771 wsprintf(ws1,percent_t,t->name); \ 000001FC 142088E2 ADD R2,R8,#+20 \ 00000200 18108AE2 ADD R1,R10,#+24 \ 00000204 0600A0E1 MOV R0,R6 \ 00000208 240100EF SWI +292 2772 wsprintf(ws3,"(%d/%d)",onlinetotal[0],onlinetotal[1]); \ 0000020C 04309DE5 LDR R3,[SP, #+4] \ 00000210 00209DE5 LDR R2,[SP, #+0] \ 00000214 501F8AE2 ADD R1,R10,#+320 \ 00000218 0700A0E1 MOV R0,R7 \ 0000021C 240100EF SWI +292 2773 #else 2774 wsprintf(ws1,"%t%c%c(%d/%d)",t->name,0xE01D,0xE012,onlinetotal[0],onlinetotal[1]); 2775 #endif 2776 if (t->state) icon++; //Модификация иконки группы \ 00000220 B405D8E1 LDRH R0,[R8, #+84] \ 00000224 000050E3 CMP R0,#+0 \ 00000228 0400000A BEQ ??contactlist_menu_iconhndl_10 \ 0000022C 019089E2 ADD R9,R9,#+1 \ 00000230 020000EA B ??contactlist_menu_iconhndl_10 2777 } 2778 } 2779 else 2780 { 2781 wsprintf(ws1, LG_CLERROR); \ ??contactlist_menu_iconhndl_0: \ 00000234 521F8AE2 ADD R1,R10,#+328 \ 00000238 0600A0E1 MOV R0,R6 \ 0000023C 240100EF SWI +292 2782 } 2783 ws2=AllocMenuWS(data,ws1->wsbody[0]+1); \ ??contactlist_menu_iconhndl_10: \ 00000240 000096E5 LDR R0,[R6, #+0] \ 00000244 B000D0E1 LDRH R0,[R0, #+0] \ 00000248 011080E2 ADD R1,R0,#+1 \ 0000024C 0400A0E1 MOV R0,R4 \ 00000250 980100EF SWI +408 \ 00000254 0080A0E1 MOV R8,R0 2784 wstrcpy(ws2,ws1); \ 00000258 0610A0E1 MOV R1,R6 \ 0000025C 1F0100EF SWI +287 2785 2786 /* 2787 #ifdef kluchnik 2788 if ((t->xstatexstate)) 2789 { 2790 wsInsertChar(ws2,NumXStatusToIconBar+t->xstate,1); 2791 } 2792 #endif 2793 */ 2794 2795 SetMenuItemIconArray(data, item, S_ICONS+icon); \ 00000260 ........ LDR R0,??DataTable88 ;; S_ICONS \ 00000264 0510A0E1 MOV R1,R5 \ 00000268 092180E0 ADD R2,R0,R9, LSL #+2 \ 0000026C 0400A0E1 MOV R0,R4 \ 00000270 990100EF SWI +409 2796 #ifdef USE_MLMENU 2797 ws4=AllocMenuWS(data,ws3->wsbody[0]); \ 00000274 000097E5 LDR R0,[R7, #+0] \ 00000278 B010D0E1 LDRH R1,[R0, #+0] \ 0000027C 0400A0E1 MOV R0,R4 \ 00000280 980100EF SWI +408 \ 00000284 0060A0E1 MOV R6,R0 2798 wstrcpy(ws4,ws3); \ 00000288 0710A0E1 MOV R1,R7 \ 0000028C 1F0100EF SWI +287 2799 SetMLMenuItemText(data, item, ws2, ws4, curitem); \ 00000290 70029DE5 LDR R0,[SP, #+624] \ 00000294 0630A0E1 MOV R3,R6 \ 00000298 01002DE9 PUSH {R0} \ 0000029C 0820A0E1 MOV R2,R8 \ 000002A0 0510A0E1 MOV R1,R5 \ 000002A4 0400A0E1 MOV R0,R4 \ 000002A8 180200EF SWI +536 2800 #else 2801 SetMenuItemText(data, item, ws2, curitem); 2802 #endif 2803 } \ 000002AC 9EDF8DE2 ADD SP,SP,#+632 \ 000002B0 F08FBDE8 POP {R4-R11,PC} ;; return 2804 2805 //=============================================================================================== 2806 2807 int DNR_ID=0; 2808 int DNR_TRIES=3; 2809 2810 char hostname[128]; //2058 che toka 128? :) 2811 2812 int host_counter = 0; 2813 2814 //--------------------------------------------------------------------------- 2815 \ In segment CODE, align 4, keep-with-next 2816 const char *GetHost(int cnt, const char *str, char *buf) 2817 { 2818 const char *tmp = str, *begin, *end; \ GetHost: \ 00000000 0130A0E1 MOV R3,R1 2819 if(cnt) \ 00000004 000050E3 CMP R0,#+0 \ 00000008 0100001A BNE ??GetHost_0 \ 0000000C 180000EA B ??GetHost_1 2820 { 2821 for(;cnt;cnt--) 2822 { 2823 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 2824 if(!*str) str = tmp; \ 00000030 00005CE3 CMP R12,#+0 \ 00000034 0200001A BNE ??GetHost_3 \ 00000038 0310A0E1 MOV R1,R3 \ 0000003C 000000EA B ??GetHost_3 2825 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 2826 if(!*str) str = tmp; \ ??GetHost_5: \ 00000064 00005CE3 CMP R12,#+0 \ 00000068 0310A001 MOVEQ R1,R3 2827 } \ 0000006C 010050E2 SUBS R0,R0,#+1 \ 00000070 E7FFFF1A BNE ??GetHost_0 2828 } 2829 tmp = buf; \ ??GetHost_1: \ 00000074 0200A0E1 MOV R0,R2 2830 begin = str; \ 00000078 0130A0E1 MOV R3,R1 \ 0000007C 000000EA B ??GetHost_6 2831 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 2832 end = str; 2833 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 2845 } 2846 } 2847 //--------------------------------------------------------------------------- \ In segment CODE, align 4, keep-with-next 2848 int GetPort(int cnt, const char *str) 2849 { \ GetPort: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 2850 const char *tmp = str; \ 00000008 01C0A0E1 MOV R12,R1 2851 char numbuf[6], numcnt = 0; \ 0000000C 0020A0E3 MOV R2,#+0 \ 00000010 0030A0E3 MOV R3,#+0 2852 if(cnt) \ 00000014 000050E3 CMP R0,#+0 \ 00000018 0100001A BNE ??GetPort_0 \ 0000001C 180000EA B ??GetPort_1 2853 { 2854 for(;cnt;cnt--) 2855 { 2856 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 2857 if(!*str) str = tmp; \ 00000040 000054E3 CMP R4,#+0 \ 00000044 0200001A BNE ??GetPort_3 \ 00000048 0C10A0E1 MOV R1,R12 \ 0000004C 000000EA B ??GetPort_3 2858 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 2859 if(!*str) str = tmp; \ ??GetPort_5: \ 00000074 000054E3 CMP R4,#+0 \ 00000078 0C10A001 MOVEQ R1,R12 2860 } \ 0000007C 010050E2 SUBS R0,R0,#+1 \ 00000080 E7FFFF1A BNE ??GetPort_0 2861 } 2862 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 2863 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} 2864 str++; 2865 numbuf[5] = 0; \ 000000BC 0520CDE5 STRB R2,[SP, #+5] \ 000000C0 030000EA B ??GetPort_7 2866 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 2867 numbuf[numcnt] = 0; //2058 \ ??GetPort_9: \ 00000100 0020C0E5 STRB R2,[R0, #+0] 2868 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 2869 2870 } 2871 // 2872 //--------------------------------------------------------------------------- \ In segment CODE, align 4, keep-with-next 2873 int GetHostsCount(const char *str) 2874 { 2875 char cnt = 1; \ GetHostsCount: \ 00000000 0110A0E3 MOV R1,#+1 \ 00000004 000000EA B ??GetHostsCount_0 2876 for(;cnt;cnt++) 2877 { 2878 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 2879 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 2880 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 2881 if(!*str) return cnt; \ ??GetHostsCount_5: \ 0000005C 000052E3 CMP R2,#+0 \ 00000060 F2FFFF0A BEQ ??GetHostsCount_3 2882 } \ 00000064 011081E2 ADD R1,R1,#+1 \ 00000068 FF1011E2 ANDS R1,R1,#0xFF \ 0000006C E6FFFF1A BNE ??GetHostsCount_0 2883 return 0; \ 00000070 0000A0E3 MOV R0,#+0 \ 00000074 1EFF2FE1 BX LR ;; return 2884 } 2885 //--------------------------------------------------------------------------- 2886 \ In segment CODE, align 4, keep-with-next 2887 void create_connect(void) 2888 { \ create_connect: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 2889 // static int host_counter = 0; 2890 char hostbuf[128], buf[128]; 2891 int hostport; 2892 int ***p_res=NULL; 2893 void do_reconnect(void); 2894 SOCK_ADDR sa; 2895 //Устанавливаем соединение 2896 connect_state = 0; \ 00000004 ........ LDR R5,??DataTable94 ;; S_ICONS 2897 int err; 2898 unsigned int ip; 2899 GBS_DelTimer(&reconnect_tmr); 2900 if (!IsGPRSEnabled()) \ 00000008 ........ LDR R8,??DataTable90 ;; Canvas \ 0000000C 45DF4DE2 SUB SP,SP,#+276 \ 00000010 0040A0E3 MOV R4,#+0 \ 00000014 00408DE5 STR R4,[SP, #+0] \ 00000018 6C4285E5 STR R4,[R5, #+620] \ 0000001C DC00A0E3 MOV R0,#+220 \ 00000020 640D80E3 ORR R0,R0,#0x1900 \ 00000024 056080E0 ADD R6,R0,R5 \ 00000028 0600A0E1 MOV R0,R6 \ 0000002C 8C0100EF SWI +396 \ 00000030 BC00A0E3 MOV R0,#+188 \ 00000034 600D80E3 ORR R0,R0,#0x1800 \ 00000038 057080E0 ADD R7,R0,R5 \ 0000003C A70000EF SWI +167 \ 00000040 000050E3 CMP R0,#+0 \ 00000044 0400001A BNE ??create_connect_0 2901 { 2902 is_gprs_online=0; \ 00000048 8C4285E5 STR R4,[R5, #+652] 2903 strcpy(logmsg,LG_GRWAITFORGPRS); \ 0000004C 541F88E2 ADD R1,R8,#+336 \ 00000050 0700A0E1 MOV R0,R7 \ 00000054 1A0000EF SWI +26 2904 SMART_REDRAW(); \ 00000058 850000EA B ??create_connect_1 2905 return; 2906 } 2907 DNR_ID=0; 2908 *socklasterr()=0; 2909 if(host_counter > GetHostsCount(NATICQ_HOST)-1) host_counter = 0; //2058 \ ??create_connect_0: \ 0000005C 90929FE5 LDR R9,??create_connect_2+0x4 ;; NATICQ_HOST \ 00000060 244385E5 STR R4,[R5, #+804] \ 00000064 7C8100EF SWI +33148 \ 00000068 004080E5 STR R4,[R0, #+0] \ 0000006C 0900A0E1 MOV R0,R9 \ 00000070 ........ BL GetHostsCount \ 00000074 2C1395E5 LDR R1,[R5, #+812] \ 00000078 010040E2 SUB R0,R0,#+1 \ 0000007C 010050E1 CMP R0,R1 \ 00000080 2C4385B5 STRLT R4,[R5, #+812] 2910 GetHost(host_counter, NATICQ_HOST, hostbuf); \ 00000084 2C0395E5 LDR R0,[R5, #+812] \ 00000088 14208DE2 ADD R2,SP,#+20 \ 0000008C 0910A0E1 MOV R1,R9 \ 00000090 ........ BL GetHost 2911 hostport = GetPort(host_counter, NATICQ_HOST); \ 00000094 2C0395E5 LDR R0,[R5, #+812] \ 00000098 0910A0E1 MOV R1,R9 \ 0000009C ........ BL GetPort \ 000000A0 0090A0E1 MOV R9,R0 2912 host_counter++; \ 000000A4 2C0395E5 LDR R0,[R5, #+812] 2913 2914 sprintf(hostname, "Connect to %s:%d", hostbuf, hostport); //2058 - stavim hostname, izbavlyaemsya ot buf \ 000000A8 0930A0E1 MOV R3,R9 \ 000000AC 010080E2 ADD R0,R0,#+1 \ 000000B0 2C0385E5 STR R0,[R5, #+812] \ 000000B4 14208DE2 ADD R2,SP,#+20 \ 000000B8 5A1F88E2 ADD R1,R8,#+360 \ 000000BC 8C00A0E3 MOV R0,#+140 \ 000000C0 6C0D80E3 ORR R0,R0,#0x1B00 \ 000000C4 050080E0 ADD R0,R0,R5 \ 000000C8 160000EF SWI +22 2915 //strcpy(hostbuf2, hostbuf); //vyvod host v get_online_time 2916 zeromem(hostbuf2,128); \ 000000CC 0C00A0E3 MOV R0,#+12 \ 000000D0 6C0D80E3 ORR R0,R0,#0x1B00 \ 000000D4 05A080E0 ADD R10,R0,R5 \ 000000D8 8010A0E3 MOV R1,#+128 \ 000000DC 0A00A0E1 MOV R0,R10 \ 000000E0 1D0100EF SWI +285 2917 sprintf(hostbuf2, percent_s,hostbuf); \ 000000E4 14208DE2 ADD R2,SP,#+20 \ 000000E8 1B1088E2 ADD R1,R8,#+27 \ 000000EC 0A00A0E1 MOV R0,R10 2918 strcpy(logmsg,buf); 2919 SMART_REDRAW(); 2920 2921 ip=str2ip(hostbuf); \ 000000F0 ........ LDR R10,??DataTable91 ;; do_reconnect \ 000000F4 160000EF SWI +22 \ 000000F8 94108DE2 ADD R1,SP,#+148 \ 000000FC 0700A0E1 MOV R0,R7 \ 00000100 1A0000EF SWI +26 \ 00000104 ........ BL SMART_REDRAW \ 00000108 14008DE2 ADD R0,SP,#+20 \ 0000010C B70100EF SWI +439 \ 00000110 04B0E0E1 MVN R11,R4 \ 00000114 0B0050E1 CMP R0,R11 \ 00000118 0500000A BEQ ??create_connect_3 2922 if (ip!=0xFFFFFFFF) 2923 { 2924 sa.ip=ip; \ 0000011C 08008DE5 STR R0,[SP, #+8] 2925 strcpy(logmsg,"\nConnect by IP!"); //strcat->strcpy \ 00000120 5F1F88E2 ADD R1,R8,#+380 \ 00000124 0700A0E1 MOV R0,R7 \ 00000128 1A0000EF SWI +26 2926 SMART_REDRAW(); \ 0000012C ........ BL SMART_REDRAW 2927 goto L_CONNECT; \ 00000130 390000EA B ??create_connect_4 2928 } \ ??create_connect_3: \ 00000134 6D1F8FE2 ADR R1,??create_connect_2 ;; "\n" \ 00000138 0700A0E1 MOV R0,R7 2929 strcat(logmsg,"\n"); \ 0000013C 170000EF SWI +23 2930 strcpy(logmsg,LG_GRSENDDNR); //strcat->strcpy \ 00000140 631F88E2 ADD R1,R8,#+396 \ 00000144 0700A0E1 MOV R0,R7 \ 00000148 1A0000EF SWI +26 2931 SMART_REDRAW(); \ 0000014C ........ BL SMART_REDRAW 2932 err=async_gethostbyname(hostbuf,&p_res,&DNR_ID); //03461351 3<70<19<81 \ 00000150 C92F85E2 ADD R2,R5,#+804 \ 00000154 0D10A0E1 MOV R1,SP \ 00000158 14008DE2 ADD R0,SP,#+20 \ 0000015C B60100EF SWI +438 \ 00000160 0030B0E1 MOVS R3,R0 2933 if (err) \ 00000164 1600000A BEQ ??create_connect_5 2934 { 2935 if ((err==0xC9)||(err==0xD6)) \ 00000168 C90053E3 CMP R3,#+201 \ 0000016C D6005313 CMPNE R3,#+214 \ 00000170 0600001A BNE ??create_connect_6 2936 { 2937 if (DNR_ID) \ 00000174 240395E5 LDR R0,[R5, #+804] \ 00000178 000050E3 CMP R0,#+0 \ 0000017C 1000000A BEQ ??create_connect_5 2938 { 2939 host_counter--; \ 00000180 2C0395E5 LDR R0,[R5, #+812] \ 00000184 010040E2 SUB R0,R0,#+1 \ 00000188 2C0385E5 STR R0,[R5, #+812] 2940 return; //Ждем готовности DNR \ 0000018C 390000EA B ??create_connect_7 2941 } 2942 } 2943 else 2944 { 2945 snprintf(logmsg,255,LG_GRDNRERROR,err); \ ??create_connect_6: \ 00000190 662F88E2 ADD R2,R8,#+408 \ 00000194 FF10A0E3 MOV R1,#+255 \ 00000198 0700A0E1 MOV R0,R7 \ 0000019C 1B0100EF SWI +283 2946 SMART_REDRAW(); \ 000001A0 ........ BL SMART_REDRAW 2947 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ ??create_connect_8: \ 000001A4 ........ LDR R0,??DataTable92 ;; RECONNECT_TIME \ 000001A8 0A20A0E1 MOV R2,R10 \ 000001AC 000090E5 LDR R0,[R0, #+0] \ 000001B0 D830A0E3 MOV R3,#+216 \ 000001B4 930001E0 MUL R1,R3,R0 \ 000001B8 0600A0E1 MOV R0,R6 \ 000001BC 4D0000EF SWI +77 2948 return; \ 000001C0 2C0000EA B ??create_connect_7 2949 } 2950 } 2951 if (p_res) \ ??create_connect_5: \ 000001C4 00009DE5 LDR R0,[SP, #+0] \ 000001C8 000050E3 CMP R0,#+0 \ 000001CC 3D00000A BEQ ??create_connect_9 2952 { 2953 if (p_res[3]) \ 000001D0 0C0090E5 LDR R0,[R0, #+12] \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 4200000A BEQ ??create_connect_10 2954 { 2955 strcpy(logmsg,buf); \ 000001DC 94108DE2 ADD R1,SP,#+148 \ 000001E0 0700A0E1 MOV R0,R7 \ 000001E4 1A0000EF SWI +26 2956 strcat(logmsg,"\n"); \ 000001E8 401F8FE2 ADR R1,??create_connect_2 ;; "\n" \ 000001EC 0700A0E1 MOV R0,R7 \ 000001F0 170000EF SWI +23 2957 strcpy(logmsg,LG_GRDNROK); \ 000001F4 6A1F88E2 ADD R1,R8,#+424 \ 000001F8 0700A0E1 MOV R0,R7 \ 000001FC 1A0000EF SWI +26 2958 SMART_REDRAW(); \ 00000200 ........ BL SMART_REDRAW 2959 DNR_TRIES=0; \ 00000204 284385E5 STR R4,[R5, #+808] 2960 sa.ip=p_res[3][0][0]; \ 00000208 00109DE5 LDR R1,[SP, #+0] \ 0000020C 0C1091E5 LDR R1,[R1, #+12] \ 00000210 001091E5 LDR R1,[R1, #+0] \ 00000214 001091E5 LDR R1,[R1, #+0] \ 00000218 08108DE5 STR R1,[SP, #+8] 2961 L_CONNECT: 2962 sock=socket(1,1,0); \ ??create_connect_4: \ 0000021C 0020A0E3 MOV R2,#+0 \ 00000220 0110A0E3 MOV R1,#+1 \ 00000224 0100A0E1 MOV R0,R1 \ 00000228 730100EF SWI +371 \ 0000022C 700285E5 STR R0,[R5, #+624] 2963 if (sock!=-1) \ 00000230 0B0050E1 CMP R0,R11 \ 00000234 1A00000A BEQ ??create_connect_11 2964 { 2965 sa.family=1; \ 00000238 0170A0E3 MOV R7,#+1 \ 0000023C B470CDE1 STRH R7,[SP, #+4] 2966 sa.port=htons(hostport); \ 00000240 0908A0E1 MOV R0,R9, LSL #+16 \ 00000244 2008A0E1 MOV R0,R0, LSR #+16 \ 00000248 7A0100EF SWI +378 \ 0000024C B600CDE1 STRH R0,[SP, #+6] 2967 // sa.ip=htonl(IP_ADDR(82,207,89,182)); 2968 if (connect(sock,&sa,sizeof(sa))!=-1) \ 00000250 700295E5 LDR R0,[R5, #+624] \ 00000254 1020A0E3 MOV R2,#+16 \ 00000258 04108DE2 ADD R1,SP,#+4 \ 0000025C 740100EF SWI +372 \ 00000260 0B0050E1 CMP R0,R11 \ 00000264 0500000A BEQ ??create_connect_12 2969 { 2970 connect_state=1; \ 00000268 6C7285E5 STR R7,[R5, #+620] 2971 TOTALRECEIVED=0; \ 0000026C 744285E5 STR R4,[R5, #+628] 2972 TOTALSENDED=0; \ 00000270 784285E5 STR R4,[R5, #+632] 2973 SMART_REDRAW(); \ ??create_connect_1: \ 00000274 ........ BL SMART_REDRAW \ ??create_connect_7: \ 00000278 45DF8DE2 ADD SP,SP,#+276 \ 0000027C F08FBDE8 POP {R4-R11,PC} 2974 } 2975 else 2976 { 2977 closesocket(sock); \ ??create_connect_12: \ 00000280 700295E5 LDR R0,[R5, #+624] \ 00000284 760100EF SWI +374 2978 sock=-1; \ 00000288 70B285E5 STR R11,[R5, #+624] 2979 LockSched(); \ 0000028C 460100EF SWI +326 2980 ShowMSG(1,(int)LG_MSGCANTCONN); \ 00000290 701F88E2 ADD R1,R8,#+448 \ 00000294 0100A0E3 MOV R0,#+1 \ 00000298 480100EF SWI +328 2981 UnlockSched(); \ 0000029C 470100EF SWI +327 2982 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 000002A0 BFFFFFEA B ??create_connect_8 2983 2984 } 2985 } 2986 else 2987 { 2988 LockSched(); \ ??create_connect_11: \ 000002A4 460100EF SWI +326 2989 ShowMSG(1,(int)LG_MSGCANTCRSC); \ 000002A8 771F88E2 ADD R1,R8,#+476 \ 000002AC 0100A0E3 MOV R0,#+1 \ 000002B0 480100EF SWI +328 2990 UnlockSched(); \ 000002B4 470100EF SWI +327 2991 //Не осилили создания сокета, закрываем GPRS-сессию 2992 GPRS_OnOff(0,1); \ 000002B8 0110A0E3 MOV R1,#+1 \ 000002BC 0000A0E3 MOV R0,#+0 \ 000002C0 8E0100EF SWI +398 \ 000002C4 EBFFFFEA B ??create_connect_7 2993 } 2994 } 2995 } 2996 else 2997 { 2998 DNR_TRIES--; \ ??create_connect_9: \ 000002C8 280395E5 LDR R0,[R5, #+808] \ 000002CC 010040E2 SUB R0,R0,#+1 \ 000002D0 280385E5 STR R0,[R5, #+808] 2999 LockSched(); \ 000002D4 460100EF SWI +326 3000 ShowMSG(1,(int)LG_MSGHOSTNFND); \ 000002D8 821F88E2 ADD R1,R8,#+520 \ 000002DC 0100A0E3 MOV R0,#+1 \ 000002E0 480100EF SWI +328 3001 UnlockSched(); \ 000002E4 470100EF SWI +327 \ ??create_connect_10: \ 000002E8 45DF8DE2 ADD SP,SP,#+276 ;; stack cleaning \ 000002EC F08FBDE8 POP {R4-R11,PC} ;; return \ ??create_connect_2: \ 000002F0 0A000000 DC8 "\n",+0,+0 \ 000002F4 ........ DC32 NATICQ_HOST 3002 } 3003 } 3004 3005 #ifdef SEND_TIMER 3006 GBSTMR send_tmr; 3007 #endif 3008 \ In segment CODE, align 4, keep-with-next 3009 void ClearSendQ(void) 3010 { \ ClearSendQ: \ 00000000 10402DE9 PUSH {R4,LR} 3011 mfree((void *)sendq_p); \ 00000004 ........ LDR R4,??DataTable94 ;; S_ICONS \ 00000008 880294E5 LDR R0,[R4, #+648] \ 0000000C 150000EF SWI +21 3012 sendq_p=NULL; \ 00000010 0000A0E3 MOV R0,#+0 \ 00000014 880284E5 STR R0,[R4, #+648] 3013 sendq_l=NULL; \ 00000018 840284E5 STR R0,[R4, #+644] 3014 #ifdef SEND_TIMER 3015 GBS_DelTimer(&send_tmr); \ 0000001C 0C00A0E3 MOV R0,#+12 \ 00000020 700D80E3 ORR R0,R0,#0x1C00 \ 00000024 040080E0 ADD R0,R0,R4 \ 00000028 8C0100EF SWI +396 3016 #endif 3017 } \ 0000002C 1080BDE8 POP {R4,PC} ;; return 3018 \ In segment CODE, align 4, keep-with-next 3019 void end_socket(void) 3020 { \ end_socket: \ 00000000 10402DE9 PUSH {R4,LR} 3021 if (sock>=0) \ 00000004 ........ LDR R4,??DataTable94 ;; S_ICONS \ 00000008 700294E5 LDR R0,[R4, #+624] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0300004A BMI ??end_socket_0 3022 { 3023 shutdown(sock,2); \ 00000014 0210A0E3 MOV R1,#+2 \ 00000018 770100EF SWI +375 3024 closesocket(sock); \ 0000001C 700294E5 LDR R0,[R4, #+624] \ 00000020 760100EF SWI +374 3025 } 3026 #ifdef SEND_TIMER 3027 GBS_DelTimer(&send_tmr); \ ??end_socket_0: \ 00000024 0C00A0E3 MOV R0,#+12 \ 00000028 700D80E3 ORR R0,R0,#0x1C00 \ 0000002C 040080E0 ADD R0,R0,R4 \ 00000030 8C0100EF SWI +396 3028 #endif 3029 } \ 00000034 1080BDE8 POP {R4,PC} ;; return 3030 3031 #ifdef SEND_TIMER \ In segment CODE, align 4, keep-with-next 3032 static void resend(void) 3033 { 3034 void SendAnswer(int dummy, TPKT *p); 3035 SUBPROC((void*)SendAnswer,0,0); \ resend: \ 00000000 ........ LDR R0,??DataTable100 ;; SendAnswer \ 00000004 00402DE9 PUSH {LR} \ 00000008 0020A0E3 MOV R2,#+0 \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 710100EF SWI +369 3036 } \ 00000014 0080BDE8 POP {PC} ;; return 3037 #endif 3038 \ In segment CODE, align 4, keep-with-next 3039 void SendAnswer(int dummy, TPKT *p) 3040 { \ SendAnswer: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 3041 int i; 3042 int j; 3043 if (connect_state<2) \ 00000004 ........ LDR R4,??DataTable110 ;; S_ICONS \ 00000008 0160A0E1 MOV R6,R1 \ 0000000C 6C0294E5 LDR R0,[R4, #+620] \ 00000010 020050E3 CMP R0,#+2 \ 00000014 020000AA BGE ??SendAnswer_0 3044 { 3045 mfree(p); \ 00000018 0600A0E1 MOV R0,R6 \ 0000001C 150000EF SWI +21 3046 return; \ 00000020 F083BDE8 POP {R4-R9,PC} 3047 } 3048 if (p) \ ??SendAnswer_0: \ 00000024 000056E3 CMP R6,#+0 \ 00000028 1E00000A BEQ ??SendAnswer_1 3049 { 3050 j=sizeof(PKT)+p->pkt.data_len; //Размер пакета \ 0000002C B600D6E1 LDRH R0,[R6, #+6] \ 00000030 085080E2 ADD R5,R0,#+8 3051 TOTALSENDED+=j; \ 00000034 780294E5 LDR R0,[R4, #+632] \ 00000038 000085E0 ADD R0,R5,R0 \ 0000003C 780284E5 STR R0,[R4, #+632] 3052 ALLTOTALSENDED+=j; //by BoBa 10.07 \ 00000040 800294E5 LDR R0,[R4, #+640] \ 00000044 000085E0 ADD R0,R5,R0 \ 00000048 800284E5 STR R0,[R4, #+640] 3053 //Проверяем, не надо ли добавить в очередь 3054 if (sendq_p) \ 0000004C 880294E5 LDR R0,[R4, #+648] \ 00000050 000050E3 CMP R0,#+0 \ 00000054 0F00000A BEQ ??SendAnswer_2 3055 { 3056 //Есть очередь, добавляем в нее 3057 sendq_p=realloc((void *)sendq_p,sendq_l+j); \ 00000058 841294E5 LDR R1,[R4, #+644] \ 0000005C 011085E0 ADD R1,R5,R1 \ 00000060 BA0000EF SWI +186 \ 00000064 880284E5 STR R0,[R4, #+648] 3058 memcpy((char *)sendq_p+sendq_l,p,j); \ 00000068 840294E5 LDR R0,[R4, #+644] \ 0000006C 883294E5 LDR R3,[R4, #+648] \ 00000070 0520A0E1 MOV R2,R5 \ 00000074 0610A0E1 MOV R1,R6 \ 00000078 030080E0 ADD R0,R0,R3 \ 0000007C 1E0100EF SWI +286 3059 mfree(p); \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 150000EF SWI +21 3060 sendq_l+=j; \ 00000088 840294E5 LDR R0,[R4, #+644] \ 0000008C 000085E0 ADD R0,R5,R0 \ 00000090 840284E5 STR R0,[R4, #+644] 3061 return; \ 00000094 F083BDE8 POP {R4-R9,PC} 3062 } 3063 sendq_p=p; \ ??SendAnswer_2: \ 00000098 886284E5 STR R6,[R4, #+648] 3064 sendq_l=j; \ 0000009C 845284E5 STR R5,[R4, #+644] \ 000000A0 000000EA B ??SendAnswer_1 3065 } 3066 //Отправляем уже существующее в очереди 3067 while((i=sendq_l)!=0) 3068 { 3069 if (i>0x400) i=0x400; 3070 j=send(sock,(void *)sendq_p,i,0); 3071 snprintf(logmsg,255,"send res %d",j); 3072 SMART_REDRAW(); 3073 if (j<0) 3074 { 3075 j=*socklasterr(); 3076 if ((j==0xC9)||(j==0xD6)) 3077 { 3078 //Передали что хотели 3079 strcpy(logmsg,"Send delayed..."); 3080 return; //Видимо, надо ждать сообщения ENIP_BUFFER_FREE 3081 } 3082 else 3083 { 3084 //Ошибка 3085 LockSched(); 3086 ShowMSG(1,(int)"Send error!"); 3087 UnlockSched(); 3088 end_socket(); 3089 return; 3090 } 3091 } 3092 memcpy((void *)sendq_p,(char *)sendq_p+j,sendq_l-=j); //Удалили переданное 3093 if (j` \ 000000C0 0100A0E3 MOV R0,#+1 \ 000000C4 400E80E3 ORR R0,R0,#0x400 \ 000000C8 000057E1 CMP R7,R0 \ 000000CC 700294E5 LDR R0,[R4, #+624] \ 000000D0 407EA0A3 MOVGE R7,#+1024 \ 000000D4 0030A0E3 MOV R3,#+0 \ 000000D8 0720A0E1 MOV R2,R7 \ 000000DC 790100EF SWI +377 \ 000000E0 0050A0E1 MOV R5,R0 \ 000000E4 BC00A0E3 MOV R0,#+188 \ 000000E8 600D80E3 ORR R0,R0,#0x1800 \ 000000EC 048080E0 ADD R8,R0,R4 \ 000000F0 0530A0E1 MOV R3,R5 \ 000000F4 0920A0E1 MOV R2,R9 \ 000000F8 FF10A0E3 MOV R1,#+255 \ 000000FC 0800A0E1 MOV R0,R8 \ 00000100 1B0100EF SWI +283 \ 00000104 ........ BL SMART_REDRAW \ 00000108 000055E3 CMP R5,#+0 \ 0000010C 0F00005A BPL ??SendAnswer_6 \ 00000110 7C8100EF SWI +33148 \ 00000114 005090E5 LDR R5,[R0, #+0] \ 00000118 C90055E3 CMP R5,#+201 \ 0000011C D6005513 CMPNE R5,#+214 \ 00000120 0300001A BNE ??SendAnswer_7 \ 00000124 0C1089E2 ADD R1,R9,#+12 \ 00000128 0800A0E1 MOV R0,R8 \ 0000012C 1A0000EF SWI +26 \ 00000130 F083BDE8 POP {R4-R9,PC} \ ??SendAnswer_7: \ 00000134 460100EF SWI +326 \ 00000138 1C1089E2 ADD R1,R9,#+28 \ 0000013C 0100A0E3 MOV R0,#+1 \ 00000140 480100EF SWI +328 \ 00000144 470100EF SWI +327 \ 00000148 ........ BL end_socket \ 0000014C F083BDE8 POP {R4-R9,PC} \ ??SendAnswer_6: \ 00000150 840294E5 LDR R0,[R4, #+644] \ 00000154 052040E0 SUB R2,R0,R5 \ 00000158 842284E5 STR R2,[R4, #+644] \ 0000015C 880294E5 LDR R0,[R4, #+648] \ 00000160 001085E0 ADD R1,R5,R0 \ 00000164 1E0100EF SWI +286 \ 00000168 070055E1 CMP R5,R7 \ 0000016C CCFFFFAA BGE ??SendAnswer_3 \ 00000170 2C209FE5 LDR R2,??SendAnswer_5+0x4 ;; resend \ 00000174 3810A0E3 MOV R1,#+56 \ 00000178 401E81E3 ORR R1,R1,#0x400 \ 0000017C 0C00A0E3 MOV R0,#+12 \ 00000180 700D80E3 ORR R0,R0,#0x1C00 \ 00000184 040080E0 ADD R0,R0,R4 \ 00000188 4D0000EF SWI +77 \ 0000018C F083BDE8 POP {R4-R9,PC} 3102 } 3103 mfree((void *)sendq_p); \ ??SendAnswer_4: \ 00000190 0100A0E1 MOV R0,R1 \ 00000194 150000EF SWI +21 3104 sendq_p=NULL; \ 00000198 886284E5 STR R6,[R4, #+648] 3105 } \ 0000019C F083BDE8 POP {R4-R9,PC} ;; return \ ??SendAnswer_5: \ 000001A0 ........ DC32 `?` \ 000001A4 ........ DC32 resend 3106 3107 \ In segment CODE, align 4, keep-with-next 3108 void send_login(int dummy, TPKT *p) 3109 { 3110 connect_state=2; 3111 char rev[16]; 3112 //Кто будет менять в этом месте идентификатор клиента, буду банить на уровне сервера!!! 3113 //А Вова будет банить на форуме! 3114 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,??DataTable110 ;; S_ICONS \ 0000000C 10D04DE2 SUB SP,SP,#+16 \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 0150A0E1 MOV R5,R1 \ 00000018 0200A0E3 MOV R0,#+2 \ 0000001C 6C0286E5 STR R0,[R6, #+620] \ 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 3115 3116 TPKT *p2=malloc(sizeof(PKT)+8); \ 00000034 1000A0E3 MOV R0,#+16 \ 00000038 140000EF SWI +20 \ 0000003C 0070A0E1 MOV R7,R0 3117 p2->pkt.uin=UIN; \ 00000040 ........ LDR R0,??DataTable99 ;; UIN 3118 p2->pkt.type=T_SETCLIENT_ID; 3119 p2->pkt.data_len=8; 3120 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 3121 SendAnswer(0,p2); \ 0000006C 0710A0E1 MOV R1,R7 \ 00000070 0000A0E3 MOV R0,#+0 \ 00000074 ........ BL SendAnswer 3122 SendAnswer(dummy,p); \ 00000078 0510A0E1 MOV R1,R5 \ 0000007C 0400A0E1 MOV R0,R4 \ 00000080 ........ BL SendAnswer 3123 RXstate=-(int)sizeof(PKT); \ 00000084 0700E0E3 MVN R0,#+7 \ 00000088 680286E5 STR R0,[R6, #+616] 3124 } \ 0000008C FF80BDE8 POP {R0-R7,PC} ;; return \ ??send_login_0: \ 00000090 ........ DC32 `?` 3125 \ In segment CODE, align 4, keep-with-next 3126 void do_ping(void) 3127 { \ do_ping: \ 00000000 00402DE9 PUSH {LR} 3128 TPKT *pingp=malloc(sizeof(PKT)); \ 00000004 0800A0E3 MOV R0,#+8 \ 00000008 140000EF SWI +20 3129 pingp->pkt.uin=UIN; \ 0000000C ........ LDR R1,??DataTable99 ;; UIN \ 00000010 001091E5 LDR R1,[R1, #+0] \ 00000014 001080E5 STR R1,[R0, #+0] 3130 pingp->pkt.type=0; \ 00000018 0010A0E3 MOV R1,#+0 \ 0000001C B410C0E1 STRH R1,[R0, #+4] 3131 pingp->pkt.data_len=0; \ 00000020 B610C0E1 STRH R1,[R0, #+6] 3132 SendAnswer(0,pingp); \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 0040BDE8 POP {LR} ;; Pop \ 00000030 ........ B SendAnswer ;; tailcall 3133 } 3134 \ In segment CODE, align 4, keep-with-next 3135 void SendMSGACK(int i) 3136 { \ SendMSGACK: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 3137 TPKT *ackp=malloc(sizeof(PKT)); \ 00000008 0800A0E3 MOV R0,#+8 \ 0000000C 140000EF SWI +20 3138 ackp->pkt.uin=i; \ 00000010 004080E5 STR R4,[R0, #+0] 3139 ackp->pkt.type=T_MSGACK; \ 00000014 1710A0E3 MOV R1,#+23 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 3140 ackp->pkt.data_len=0; \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 3141 SendAnswer(0,ackp); \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 1040BDE8 POP {R4,LR} ;; Pop \ 00000030 ........ B SendAnswer ;; tailcall 3142 } 3143 \ In segment CODE, align 4, keep-with-next 3144 void RequestXText(unsigned int uin) 3145 { \ RequestXText: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 3146 TPKT *p=malloc(sizeof(PKT)); \ 00000008 0800A0E3 MOV R0,#+8 \ 0000000C 140000EF SWI +20 3147 p->pkt.uin=uin; \ 00000010 004080E5 STR R4,[R0, #+0] 3148 p->pkt.type=T_XTEXT_REQ; \ 00000014 1810A0E3 MOV R1,#+24 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 3149 p->pkt.data_len=0; \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 3150 SUBPROC((void *)SendAnswer,0,p); \ 00000024 0020A0E1 MOV R2,R0 \ 00000028 ........ LDR R0,??DataTable100 ;; SendAnswer \ 0000002C 710100EF SWI +369 3151 } \ 00000030 1080BDE8 POP {R4,PC} ;; return 3152 3153 extern int main2_count; 3154 3155 int ping_time; 3156 char I_UIN[9]; 3157 \ In segment CODE, align 4, keep-with-next 3158 void get_answer(void) 3159 { \ get_answer: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 3160 void *p; 3161 int i=RXstate; \ 00000004 ........ LDR R5,??DataTable110 ;; S_ICONS \ 00000008 1CD04DE2 SUB SP,SP,#+28 \ 0000000C 40DE4DE2 SUB SP,SP,#+1024 3162 int j; 3163 int n; 3164 char rb[1024]; 3165 char *rp=rb; 3166 if (connect_state<2) return; \ 00000010 6C0295E5 LDR R0,[R5, #+620] \ 00000014 688295E5 LDR R8,[R5, #+616] \ 00000018 1C108DE2 ADD R1,SP,#+28 \ 0000001C 00108DE5 STR R1,[SP, #+0] \ 00000020 020050E3 CMP R0,#+2 \ 00000024 610100BA BLT ??get_answer_1 \ 00000028 0A0078E3 CMN R8,#+10 \ 0000002C 5F01000A BEQ ??get_answer_1 3167 if (i==EOP) return; 3168 j=recv(sock,rb,sizeof(rb),0); \ 00000030 700295E5 LDR R0,[R5, #+624] \ 00000034 ........ LDR R10,??DataTable102 ;; Canvas \ 00000038 0030A0E3 MOV R3,#+0 \ 0000003C 402EA0E3 MOV R2,#+1024 \ 00000040 780100EF SWI +376 \ 00000044 0060A0E1 MOV R6,R0 \ 00000048 0E0000EA B ??get_answer_2 3169 while(j>0) 3170 { 3171 if (i<0) 3172 { 3173 //Принимаем заголовок 3174 n=-i; //Требуемое количество байт 3175 if (j=0) 3182 { 3183 //Принимаем тельце ;) 3184 n=RXbuf.pkt.data_len; //Всего в тельце 3185 if (n>16383) 3186 { 3187 //Слишком много 3188 strcpy(logmsg,LG_GRBADPACKET); 3189 end_socket(); 3190 RXstate=EOP; 3191 return; 3192 } 3193 n-=i; //Количество требуемых байт (общая длинна тельца-текущая позиция) 3194 if (n>0) 3195 { 3196 if (jisIndividSet)//Если индивидуальные натсройки(меню на долгое вправо) 3281 { 3282 if(t->issound) Play(sndMsg);//если звук включен то играем 3283 break; 3284 } 3285 else 3286 if(t->automsgcount < automsgcount && away_m)//если сигналы автоответчика 3287 { 3288 Play(sndMsg); 3289 break; 3290 } 3291 else 3292 if(t->isaccess)//если удаленный доступ ;) 3293 { 3294 if(t->signals) Play(sndMsg); 3295 break; 3296 } 3297 else//в остальный случаях 3298 Play(sndMsg); 3299 } 3300 else 3301 { 3302 uins=RXbuf.pkt.uin; 3303 volatile int hFile_ex; 3304 unsigned int io_error_ex = 0; 3305 sprintf(talk_sound, "%s%d.wav", sndMsg2, uins); 3306 hFile_ex = fopen(talk_sound,A_ReadOnly + A_BIN,P_READ, &io_error_ex); 3307 if(hFile_ex!=-1) 3308 { 3309 fclose(hFile_ex, &io_error_ex); 3310 Play(talk_sound); 3311 } 3312 else 3313 Play(sndMsg); 3314 } 3315 } 3316 break; 3317 case T_SSLRESP: 3318 LockSched(); 3319 ShowMSG(1,(int)RXbuf.data); 3320 UnlockSched(); 3321 break; 3322 case T_SRV_ACK: 3323 if (FindContactLOGQByAck(&RXbuf)) Play(sndMsgSent); 3324 case T_CLIENT_ACK: 3325 p=malloc(sizeof(PKT)+2); 3326 memcpy(p,&RXbuf,sizeof(PKT)+2); 3327 GBS_SendMessage(MMI_CEPID,MSG_HELPER_TRANSLATOR,0,p,sock); 3328 break; 3329 case T_ECHORET: 3330 { 3331 TDate d; 3332 TTime t; 3333 TTime *pt=(TTime *)(RXbuf.data); 3334 int s1; 3335 int s2; 3336 GetDateTime(&d,&t); 3337 s1=t.hour*3600+t.min*60+t.sec; 3338 s2=pt->hour*3600+pt->min*60+pt->sec; 3339 s1-=s2; 3340 if (s1<0) s1+=86400; 3341 snprintf(logmsg,255,"Ping %d-%d seconds!",s1,s1+1); 3342 sprintf(PINGO, "Ping: %d sec",s1); 3343 LockSched(); 3344 if(janis==1) 3345 { 3346 ShowMSG(1,(int)logmsg); 3347 Play(pingsnd); 3348 janis=0; 3349 } 3350 else 3351 { 3352 if(ping_time==0) 3353 { 3354 ping_time=ping_time_config; 3355 Play(pingsnd); 3356 } 3357 else 3358 ping_time--; 3359 } 3360 UnlockSched(); 3361 } 3362 break; 3363 case T_LASTPRIVACY: 3364 n=i+sizeof(PKT); \ ??get_answer_3: \ 0000004C 0040A0E1 MOV R4,R0 3365 p=malloc(n); \ ??get_answer_4: \ 00000050 140000EF SWI +20 \ 00000054 00B0A0E1 MOV R11,R0 3366 memcpy(p,&RXbuf,n); \ 00000058 0420A0E1 MOV R2,R4 \ ??get_answer_5: \ 0000005C 0710A0E1 MOV R1,R7 \ 00000060 1E0100EF SWI +286 3367 GBS_SendMessage(MMI_CEPID,MSG_HELPER_TRANSLATOR,0,p,sock); \ 00000064 700295E5 LDR R0,[R5, #+624] \ 00000068 0B30A0E1 MOV R3,R11 \ 0000006C 01002DE9 PUSH {R0} \ 00000070 0020A0E3 MOV R2,#+0 \ 00000074 FC1FA0E3 MOV R1,#+1008 \ 00000078 0800A0E1 MOV R0,R8 \ 0000007C 000100EF SWI +256 \ ??get_answer_6: \ 00000080 04D08DE2 ADD SP,SP,#+4 ;; stack cleaning 3368 break; 3369 } 3370 i=-(int)sizeof(PKT); //А может еще есть данные \ ??get_answer_7: \ 00000084 0780E0E3 MVN R8,#+7 \ ??get_answer_2: \ 00000088 010056E3 CMP R6,#+1 \ 0000008C 460100BA BLT ??get_answer_8 \ 00000090 28759FE5 LDR R7,??get_answer_9+0x4 ;; RXbuf \ 00000094 000058E3 CMP R8,#+0 \ 00000098 0C00005A BPL ??get_answer_10 \ 0000009C 00109DE5 LDR R1,[SP, #+0] \ 000000A0 004068E2 RSB R4,R8,#+0 \ 000000A4 040056E1 CMP R6,R4 \ 000000A8 0640A0B1 MOVLT R4,R6 \ 000000AC 0420A0E1 MOV R2,R4 \ 000000B0 070088E0 ADD R0,R8,R7 \ 000000B4 080080E2 ADD R0,R0,#+8 \ 000000B8 1E0100EF SWI +286 \ 000000BC 00109DE5 LDR R1,[SP, #+0] \ 000000C0 088084E0 ADD R8,R4,R8 \ 000000C4 046046E0 SUB R6,R6,R4 \ 000000C8 011084E0 ADD R1,R4,R1 \ 000000CC 00108DE5 STR R1,[SP, #+0] \ ??get_answer_10: \ 000000D0 000058E3 CMP R8,#+0 \ 000000D4 EBFFFF4A BMI ??get_answer_2 \ 000000D8 B640D7E1 LDRH R4,[R7, #+6] \ 000000DC BC00A0E3 MOV R0,#+188 \ 000000E0 600D80E3 ORR R0,R0,#0x1800 \ 000000E4 059080E0 ADD R9,R0,R5 \ 000000E8 400C54E3 CMP R4,#+16384 \ 000000EC 080000BA BLT ??get_answer_11 \ 000000F0 871F8AE2 ADD R1,R10,#+540 \ 000000F4 0900A0E1 MOV R0,R9 \ 000000F8 1A0000EF SWI +26 \ 000000FC ........ BL end_socket \ 00000100 0900E0E3 MVN R0,#+9 \ 00000104 680285E5 STR R0,[R5, #+616] \ 00000108 1CD08DE2 ADD SP,SP,#+28 \ 0000010C 40DE8DE2 ADD SP,SP,#+1024 \ 00000110 F08FBDE8 POP {R4-R11,PC} \ ??get_answer_11: \ 00000114 084044E0 SUB R4,R4,R8 \ 00000118 010054E3 CMP R4,#+1 \ 0000011C 0B0000BA BLT ??get_answer_12 \ 00000120 00109DE5 LDR R1,[SP, #+0] \ 00000124 040056E1 CMP R6,R4 \ 00000128 0640A0B1 MOVLT R4,R6 \ 0000012C 0420A0E1 MOV R2,R4 \ 00000130 070088E0 ADD R0,R8,R7 \ 00000134 080080E2 ADD R0,R0,#+8 \ 00000138 1E0100EF SWI +286 \ 0000013C 00109DE5 LDR R1,[SP, #+0] \ 00000140 088084E0 ADD R8,R4,R8 \ 00000144 046046E0 SUB R6,R6,R4 \ 00000148 011084E0 ADD R1,R4,R1 \ 0000014C 00108DE5 STR R1,[SP, #+0] \ ??get_answer_12: \ 00000150 B600D7E1 LDRH R0,[R7, #+6] \ 00000154 080050E1 CMP R0,R8 \ 00000158 CAFFFF1A BNE ??get_answer_2 \ 0000015C 741295E5 LDR R1,[R5, #+628] \ 00000160 080088E2 ADD R0,R8,#+8 \ 00000164 011080E0 ADD R1,R0,R1 \ 00000168 741285E5 STR R1,[R5, #+628] \ 0000016C 7C1295E5 LDR R1,[R5, #+636] \ 00000170 0020A0E3 MOV R2,#+0 \ 00000174 011080E0 ADD R1,R0,R1 \ 00000178 7C1285E5 STR R1,[R5, #+636] \ 0000017C 071088E0 ADD R1,R8,R7 \ 00000180 0820C1E5 STRB R2,[R1, #+8] \ 00000184 B410D7E1 LDRH R1,[R7, #+4] \ 00000188 094088E2 ADD R4,R8,#+9 \ 0000018C 0980A0E3 MOV R8,#+9 \ 00000190 428C88E3 ORR R8,R8,#0x4200 \ 00000194 031041E2 SUB R1,R1,#+3 \ 00000198 1C0051E3 CMP R1,#+28 \ 0000019C B8FFFF8A BHI ??get_answer_7 \ 000001A0 022F8FE2 ADR R2,??get_answer_0 \ 000001A4 8110A0E1 MOV R1,R1, LSL #+1 \ 000001A8 F12092E1 LDRSH R2,[R2, R1] \ 000001AC 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??get_answer_0: \ 000001B0 48000E00B4FF DC16 +72,+14,+65460,+65 \ 4100 \ 000001B8 2900B4FF2B00 DC16 +41,+65460,+43,+65460 \ B4FF \ 000001C0 B4FFB4FFAE00 DC16 +65460,+65460,+174,+65460 \ B4FF \ 000001C8 B4FFB400BA00 DC16 +65460,+180,+186,+65460 \ B4FF \ 000001D0 BF0029002900 DC16 +191,+41,+41,+65460 \ B4FF \ 000001D8 B4FFB4FF2900 DC16 +65460,+65460,+41,+65460 \ B4FF \ 000001E0 B4FFB4FFB4FF DC16 +65460,+65460,+65460,+65460 \ B4FF \ 000001E8 A6FF0000 DC16 +65446,+0 \ ??get_answer_13: \ 000001EC 0400A0E1 MOV R0,R4 \ 000001F0 140000EF SWI +20 \ 000001F4 00B0A0E1 MOV R11,R0 \ 000001F8 0420A0E1 MOV R2,R4 \ 000001FC 0710A0E1 MOV R1,R7 \ 00000200 1E0100EF SWI +286 \ 00000204 700295E5 LDR R0,[R5, #+624] \ 00000208 0B30A0E1 MOV R3,R11 \ 0000020C 01002DE9 PUSH {R0} \ 00000210 0020A0E3 MOV R2,#+0 \ 00000214 FC1FA0E3 MOV R1,#+1008 \ 00000218 0800A0E1 MOV R0,R8 \ 0000021C 000100EF SWI +256 \ 00000220 9C039FE5 LDR R0,??get_answer_9+0x8 ;; sndStartup \ 00000224 ........ BL Play \ 00000228 083087E2 ADD R3,R7,#+8 \ 0000022C E22F8FE2 ADR R2,??get_answer_9 ;; "%s" \ 00000230 FF10A0E3 MOV R1,#+255 \ 00000234 0900A0E1 MOV R0,R9 \ 00000238 1B0100EF SWI +283 \ 0000023C 0300A0E3 MOV R0,#+3 \ 00000240 6C0285E5 STR R0,[R5, #+620] \ 00000244 2C0395E5 LDR R0,[R5, #+812] \ 00000248 010040E2 SUB R0,R0,#+1 \ 0000024C 2C0385E5 STR R0,[R5, #+812] \ 00000250 ........ BL SMART_REDRAW \ 00000254 89FFFFEA B ??get_answer_6 \ ??get_answer_14: \ 00000258 0400A0E1 MOV R0,R4 \ 0000025C 7BFFFFEA B ??get_answer_4 \ ??get_answer_15: \ 00000260 0040A0E1 MOV R4,R0 \ 00000264 140000EF SWI +20 \ 00000268 00B0A0E1 MOV R11,R0 \ 0000026C 0420A0E1 MOV R2,R4 \ 00000270 0710A0E1 MOV R1,R7 \ 00000274 1E0100EF SWI +286 \ 00000278 B800D7E1 LDRH R0,[R7, #+8] \ 0000027C 8A2F8AE2 ADD R2,R10,#+552 \ 00000280 FF10A0E3 MOV R1,#+255 \ 00000284 01002DE9 PUSH {R0} \ 00000288 003097E5 LDR R3,[R7, #+0] \ 0000028C 0900A0E1 MOV R0,R9 \ 00000290 1B0100EF SWI +283 \ 00000294 700295E5 LDR R0,[R5, #+624] \ 00000298 0B30A0E1 MOV R3,R11 \ 0000029C 01002DE9 PUSH {R0} \ 000002A0 0020A0E3 MOV R2,#+0 \ 000002A4 FC1FA0E3 MOV R1,#+1008 \ 000002A8 0800A0E1 MOV R0,R8 \ 000002AC 000100EF SWI +256 \ 000002B0 08D08DE2 ADD SP,SP,#+8 \ 000002B4 72FFFFEA B ??get_answer_7 \ ??get_answer_16: \ 000002B8 083087E2 ADD R3,R7,#+8 \ 000002BC 8D2F8AE2 ADD R2,R10,#+564 \ 000002C0 FF10A0E3 MOV R1,#+255 \ 000002C4 0900A0E1 MOV R0,R9 \ 000002C8 1B0100EF SWI +283 \ 000002CC ........ BL SMART_REDRAW \ 000002D0 6BFFFFEA B ??get_answer_7 \ ??get_answer_17: \ 000002D4 0400A0E1 MOV R0,R4 \ 000002D8 140000EF SWI +20 \ 000002DC 00B0A0E1 MOV R11,R0 \ 000002E0 0420A0E1 MOV R2,R4 \ 000002E4 0710A0E1 MOV R1,R7 \ 000002E8 1E0100EF SWI +286 \ 000002EC 08008BE2 ADD R0,R11,#+8 \ 000002F0 030000EA B ??get_answer_18 \ ??get_answer_19: \ 000002F4 030051E3 CMP R1,#+3 \ 000002F8 2010A0B3 MOVLT R1,#+32 \ 000002FC 0010C0B5 STRBLT R1,[R0, #+0] \ 00000300 010080E2 ADD R0,R0,#+1 \ ??get_answer_18: \ 00000304 0010D0E5 LDRB R1,[R0, #+0] \ 00000308 000051E3 CMP R1,#+0 \ 0000030C F8FFFF1A BNE ??get_answer_19 \ 00000310 002097E5 LDR R2,[R7, #+0] \ 00000314 1C00A0E3 MOV R0,#+28 \ 00000318 700D80E3 ORR R0,R0,#0x1C00 \ 0000031C 054080E0 ADD R4,R0,R5 \ 00000320 8F1F8AE2 ADD R1,R10,#+572 \ 00000324 0400A0E1 MOV R0,R4 \ 00000328 160000EF SWI +22 \ 0000032C ........ LDR R0,??DataTable103 ;; ignor_list \ 00000330 0410A0E1 MOV R1,R4 \ 00000334 180100EF SWI +280 \ 00000338 000050E3 CMP R0,#+0 \ 0000033C 50FFFF1A BNE ??get_answer_7 \ 00000340 80429FE5 LDR R4,??get_answer_9+0xC ;; sndMsg \ 00000344 080087E2 ADD R0,R7,#+8 \ 00000348 01002DE9 PUSH {R0} \ 0000034C 003097E5 LDR R3,[R7, #+0] \ 00000350 912F8AE2 ADD R2,R10,#+580 \ 00000354 FF10A0E3 MOV R1,#+255 \ 00000358 0900A0E1 MOV R0,R9 \ 0000035C 1B0100EF SWI +283 \ 00000360 740295E5 LDR R0,[R5, #+628] \ 00000364 ........ BL SendMSGACK \ 00000368 700295E5 LDR R0,[R5, #+624] \ 0000036C 0B30A0E1 MOV R3,R11 \ 00000370 01002DE9 PUSH {R0} \ 00000374 0020A0E3 MOV R2,#+0 \ 00000378 FC1FA0E3 MOV R1,#+1008 \ 0000037C 0800A0E1 MOV R0,R8 \ 00000380 000100EF SWI +256 \ 00000384 ........ BL SMART_REDRAW \ 00000388 ........ LDR R0,??DataTable104 ;; extended_sounds \ 0000038C 000090E5 LDR R0,[R0, #+0] \ 00000390 08D08DE2 ADD SP,SP,#+8 \ 00000394 000050E3 CMP R0,#+0 \ 00000398 000097E5 LDR R0,[R7, #+0] \ 0000039C 1A00001A BNE ??get_answer_20 \ 000003A0 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 000003A4 581090E5 LDR R1,[R0, #+88] \ 000003A8 000051E3 CMP R1,#+0 \ 000003AC 0500000A BEQ ??get_answer_21 \ 000003B0 600090E5 LDR R0,[R0, #+96] \ 000003B4 000050E3 CMP R0,#+0 \ 000003B8 31FFFF0A BEQ ??get_answer_7 \ ??get_answer_22: \ 000003BC 0400A0E1 MOV R0,R4 \ ??get_answer_23: \ 000003C0 ........ BL Play \ 000003C4 2EFFFFEA B ??get_answer_7 \ ??get_answer_21: \ 000003C8 ........ LDR R2,??DataTable105 ;; automsgcount \ 000003CC 781090E5 LDR R1,[R0, #+120] \ 000003D0 002092E5 LDR R2,[R2, #+0] \ 000003D4 020051E1 CMP R1,R2 \ 000003D8 0200002A BCS ??get_answer_24 \ 000003DC 201295E5 LDR R1,[R5, #+544] \ 000003E0 000051E3 CMP R1,#+0 \ 000003E4 F4FFFF1A BNE ??get_answer_22 \ ??get_answer_24: \ 000003E8 741090E5 LDR R1,[R0, #+116] \ 000003EC 000051E3 CMP R1,#+0 \ 000003F0 0300000A BEQ ??get_answer_25 \ 000003F4 700090E5 LDR R0,[R0, #+112] \ 000003F8 000050E3 CMP R0,#+0 \ 000003FC 20FFFF0A BEQ ??get_answer_7 \ 00000400 EDFFFFEA B ??get_answer_22 \ ??get_answer_25: \ 00000404 0400A0E1 MOV R0,R4 \ 00000408 ECFFFFEA B ??get_answer_23 \ ??get_answer_20: \ 0000040C B8219FE5 LDR R2,??get_answer_9+0x10 ;; sndMsg2 \ 00000410 DC0185E5 STR R0,[R5, #+476] \ 00000414 0010A0E3 MOV R1,#+0 \ 00000418 08108DE5 STR R1,[SP, #+8] \ 0000041C DC3195E5 LDR R3,[R5, #+476] \ 00000420 C470A0E3 MOV R7,#+196 \ 00000424 407E87E3 ORR R7,R7,#0x400 \ 00000428 941F8AE2 ADD R1,R10,#+592 \ 0000042C 050087E0 ADD R0,R7,R5 \ 00000430 160000EF SWI +22 \ 00000434 08308DE2 ADD R3,SP,#+8 \ 00000438 8020A0E3 MOV R2,#+128 \ 0000043C 801CA0E3 MOV R1,#+32768 \ 00000440 050087E0 ADD R0,R7,R5 \ 00000444 0A0000EF SWI +10 \ 00000448 04008DE5 STR R0,[SP, #+4] \ 0000044C 04009DE5 LDR R0,[SP, #+4] \ 00000450 010070E3 CMN R0,#+1 \ 00000454 EAFFFF0A BEQ ??get_answer_25 \ 00000458 04009DE5 LDR R0,[SP, #+4] \ 0000045C 08108DE2 ADD R1,SP,#+8 \ 00000460 0D0000EF SWI +13 \ 00000464 050087E0 ADD R0,R7,R5 \ 00000468 D4FFFFEA B ??get_answer_23 \ ??get_answer_26: \ 0000046C 460100EF SWI +326 \ 00000470 081087E2 ADD R1,R7,#+8 \ 00000474 0100A0E3 MOV R0,#+1 \ 00000478 480100EF SWI +328 \ ??get_answer_27: \ 0000047C 470100EF SWI +327 \ 00000480 FFFEFFEA B ??get_answer_7 \ ??get_answer_28: \ 00000484 0700A0E1 MOV R0,R7 \ 00000488 ........ BL FindContactLOGQByAck \ 0000048C 000050E3 CMP R0,#+0 \ 00000490 0100000A BEQ ??get_answer_29 \ 00000494 34019FE5 LDR R0,??get_answer_9+0x14 ;; sndMsgSent \ 00000498 ........ BL Play \ ??get_answer_29: \ 0000049C 0A00A0E3 MOV R0,#+10 \ 000004A0 140000EF SWI +20 \ 000004A4 00B0A0E1 MOV R11,R0 \ 000004A8 0A20A0E3 MOV R2,#+10 \ 000004AC EAFEFFEA B ??get_answer_5 \ ??get_answer_30: \ 000004B0 0C108DE2 ADD R1,SP,#+12 \ 000004B4 14008DE2 ADD R0,SP,#+20 \ 000004B8 B40000EF SWI +180 \ 000004BC 0C00DDE5 LDRB R0,[SP, #+12] \ 000004C0 0D20DDE5 LDRB R2,[SP, #+13] \ 000004C4 E11EA0E3 MOV R1,#+3600 \ 000004C8 3C30A0E3 MOV R3,#+60 \ 000004CC 930202E0 MUL R2,R3,R2 \ 000004D0 912020E0 MLA R0,R1,R0,R2 \ 000004D4 0E10DDE5 LDRB R1,[SP, #+14] \ 000004D8 E12EA0E3 MOV R2,#+3600 \ 000004DC 000081E0 ADD R0,R1,R0 \ 000004E0 0810D7E5 LDRB R1,[R7, #+8] \ 000004E4 920101E0 MUL R1,R2,R1 \ 000004E8 972F8AE2 ADD R2,R10,#+604 \ 000004EC 010040E0 SUB R0,R0,R1 \ 000004F0 0910D7E5 LDRB R1,[R7, #+9] \ 000004F4 930101E0 MUL R1,R3,R1 \ 000004F8 010040E0 SUB R0,R0,R1 \ 000004FC 0A10D7E5 LDRB R1,[R7, #+10] \ 00000500 ........ LDR R7,??DataTable106 ;; janis \ 00000504 014050E0 SUBS R4,R0,R1 \ 00000508 500BA043 MOVMI R0,#+81920 \ 0000050C 460D8043 ORRMI R0,R0,#0x1180 \ 00000510 04408040 ADDMI R4,R0,R4 \ 00000514 010084E2 ADD R0,R4,#+1 \ 00000518 01002DE9 PUSH {R0} \ 0000051C 0430A0E1 MOV R3,R4 \ 00000520 FF10A0E3 MOV R1,#+255 \ 00000524 0900A0E1 MOV R0,R9 \ 00000528 1B0100EF SWI +283 \ 0000052C 0420A0E1 MOV R2,R4 \ 00000530 9C1F8AE2 ADD R1,R10,#+624 \ 00000534 98409FE5 LDR R4,??get_answer_9+0x18 ;; pingsnd \ 00000538 9400A0E3 MOV R0,#+148 \ 0000053C 540D80E3 ORR R0,R0,#0x1500 \ 00000540 050080E0 ADD R0,R0,R5 \ 00000544 160000EF SWI +22 \ 00000548 460100EF SWI +326 \ 0000054C 000097E5 LDR R0,[R7, #+0] \ 00000550 04D08DE2 ADD SP,SP,#+4 \ 00000554 010050E3 CMP R0,#+1 \ 00000558 0700001A BNE ??get_answer_31 \ 0000055C 0910A0E1 MOV R1,R9 \ 00000560 0100A0E3 MOV R0,#+1 \ 00000564 480100EF SWI +328 \ 00000568 0400A0E1 MOV R0,R4 \ 0000056C ........ BL Play \ 00000570 0000A0E3 MOV R0,#+0 \ 00000574 000087E5 STR R0,[R7, #+0] \ 00000578 BFFFFFEA B ??get_answer_27 \ ??get_answer_31: \ 0000057C 300395E5 LDR R0,[R5, #+816] \ 00000580 000050E3 CMP R0,#+0 \ 00000584 0500001A BNE ??get_answer_32 \ 00000588 48009FE5 LDR R0,??get_answer_9+0x1C ;; ping_time_config \ 0000058C 000090E5 LDR R0,[R0, #+0] \ 00000590 300385E5 STR R0,[R5, #+816] \ 00000594 0400A0E1 MOV R0,R4 \ 00000598 ........ BL Play \ 0000059C B6FFFFEA B ??get_answer_27 \ ??get_answer_32: \ 000005A0 010040E2 SUB R0,R0,#+1 \ 000005A4 300385E5 STR R0,[R5, #+816] \ 000005A8 B3FFFFEA B ??get_answer_27 3371 } 3372 } 3373 } 3374 RXstate=i; \ ??get_answer_8: \ 000005AC 688285E5 STR R8,[R5, #+616] 3375 // GBS_StartTimerProc(&tmr_dorecv,3000,dorecv); 3376 // SMART_REDRAW(); 3377 } \ ??get_answer_1: \ 000005B0 1CD08DE2 ADD SP,SP,#+28 \ 000005B4 40DE8DE2 ADD SP,SP,#+1024 \ 000005B8 F08FBDE8 POP {R4-R11,PC} ;; return \ ??get_answer_9: \ 000005BC 25730000 DC8 "%s",+0 \ 000005C0 ........ DC32 RXbuf \ 000005C4 ........ DC32 sndStartup \ 000005C8 ........ DC32 sndMsg \ 000005CC ........ DC32 sndMsg2 \ 000005D0 ........ DC32 sndMsgSent \ 000005D4 ........ DC32 pingsnd \ 000005D8 ........ DC32 ping_time_config 3378 3379 3380 extern int main_count; 3381 3382 //=====================add to main info==================== 3383 3384 //Сюда я не лез...и че та желания нет...kluchnik ;) 3385 3386 char a_txt[45]; 3387 char s_txt[45]; 3388 char d_txt[45]; 3389 char f_txt[45]; 3390 char g_txt[45]; 3391 unsigned int main_msg_timer2; \ In segment CODE, align 4, keep-with-next 3392 void AddToMain(const char *nameu,char *si) 3393 { \ AddToMain: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0180A0E1 MOV R8,R1 3394 char *de=malloc(64); \ 00000010 4000A0E3 MOV R0,#+64 \ 00000014 140000EF SWI +20 \ 00000018 0050A0E1 MOV R5,R0 3395 int text_l; 3396 int iz; 3397 int name_l; 3398 name_l=0; 3399 text_l=0; 3400 name_l=strlen(nameu); \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 1B0000EF SWI +27 3401 iz=0; 3402 #ifdef ELKA 3403 text_l=main_lenght-name_l; 3404 #else 3405 text_l=main_lenght-name_l; \ 00000024 04129FE5 LDR R1,??AddToMain_0 ;; main_lenght \ 00000028 0070A0E3 MOV R7,#+0 \ 0000002C 001091E5 LDR R1,[R1, #+0] 3406 #endif 3407 3408 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 3409 { 3410 while(text_l!=0) 3411 { 3412 de[iz]=si[iz]; 3413 iz++; 3414 text_l--; 3415 } 3416 if(use_cutter) 3417 { 3418 de[iz]='.'; 3419 iz++; 3420 de[iz]='.'; 3421 iz++; 3422 de[iz]='.'; 3423 iz++; 3424 } 3425 de[iz]='\0'; 3426 } 3427 else 3428 strcpy(de, si); \ 00000048 0810A0E1 MOV R1,R8 \ 0000004C 0500A0E1 MOV R0,R5 \ 00000050 1A0000EF SWI +26 3429 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 B4119FE5 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 3430 while(strlen(de)!=iz) 3431 { 3432 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] 3433 if(de[iz]==0x0A) de[iz]=0x20; \ 000000B8 0510D7E7 LDRB R1,[R7, +R5] \ 000000BC 0A0051E3 CMP R1,#+10 \ 000000C0 0500C707 STRBEQ R0,[R7, +R5] 3434 iz++; \ 000000C4 017087E2 ADD R7,R7,#+1 3435 } \ ??AddToMain_3: \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 1B0000EF SWI +27 \ 000000D0 070050E1 CMP R0,R7 \ 000000D4 F3FFFF1A BNE ??AddToMain_6 3436 de[iz]='\0'; 3437 if(main_count==0) sprintf(a_txt, "%s: %s", nameu,de); \ 000000D8 ........ LDR R8,??DataTable107 ;; main_count \ 000000DC 0560C7E7 STRB R6,[R7, +R5] \ 000000E0 ........ LDR R6,??DataTable110 ;; S_ICONS \ 000000E4 4C719FE5 LDR R7,??AddToMain_0+0x8 ;; `?` \ 000000E8 2810A0E3 MOV R1,#+40 \ 000000EC 701D81E3 ORR R1,R1,#0x1C00 \ 000000F0 061081E0 ADD R1,R1,R6 \ 000000F4 04108DE5 STR R1,[SP, #+4] \ 000000F8 000098E5 LDR R0,[R8, #+0] \ 000000FC 000050E3 CMP R0,#+0 \ 00000100 0400001A BNE ??AddToMain_7 \ 00000104 04009DE5 LDR R0,[SP, #+4] \ 00000108 0530A0E1 MOV R3,R5 \ 0000010C 0420A0E1 MOV R2,R4 \ 00000110 0710A0E1 MOV R1,R7 \ 00000114 160000EF SWI +22 3438 if(main_count==1) sprintf(s_txt, "%s: %s", nameu,de); \ ??AddToMain_7: \ 00000118 5810A0E3 MOV R1,#+88 \ 0000011C 701D81E3 ORR R1,R1,#0x1C00 \ 00000120 061081E0 ADD R1,R1,R6 \ 00000124 00108DE5 STR R1,[SP, #+0] \ 00000128 000098E5 LDR R0,[R8, #+0] \ 0000012C 010050E3 CMP R0,#+1 \ 00000130 0400001A BNE ??AddToMain_8 \ 00000134 00009DE5 LDR R0,[SP, #+0] \ 00000138 0530A0E1 MOV R3,R5 \ 0000013C 0420A0E1 MOV R2,R4 \ 00000140 0710A0E1 MOV R1,R7 \ 00000144 160000EF SWI +22 3439 if(main_count==2) sprintf(d_txt, "%s: %s", nameu,de); \ ??AddToMain_8: \ 00000148 8800A0E3 MOV R0,#+136 \ 0000014C 700D80E3 ORR R0,R0,#0x1C00 \ 00000150 069080E0 ADD R9,R0,R6 \ 00000154 000098E5 LDR R0,[R8, #+0] \ 00000158 020050E3 CMP R0,#+2 \ 0000015C 0400001A BNE ??AddToMain_9 \ 00000160 0530A0E1 MOV R3,R5 \ 00000164 0420A0E1 MOV R2,R4 \ 00000168 0710A0E1 MOV R1,R7 \ 0000016C 0900A0E1 MOV R0,R9 \ 00000170 160000EF SWI +22 3440 if(main_count==3) sprintf(f_txt, "%s: %s", nameu,de); \ ??AddToMain_9: \ 00000174 B800A0E3 MOV R0,#+184 \ 00000178 700D80E3 ORR R0,R0,#0x1C00 \ 0000017C 06A080E0 ADD R10,R0,R6 \ 00000180 000098E5 LDR R0,[R8, #+0] \ 00000184 030050E3 CMP R0,#+3 \ 00000188 0400001A BNE ??AddToMain_10 \ 0000018C 0530A0E1 MOV R3,R5 \ 00000190 0420A0E1 MOV R2,R4 \ 00000194 0710A0E1 MOV R1,R7 \ 00000198 0A00A0E1 MOV R0,R10 \ 0000019C 160000EF SWI +22 3441 if(main_count==4) sprintf(g_txt, "%s: %s", nameu,de); \ ??AddToMain_10: \ 000001A0 E800A0E3 MOV R0,#+232 \ 000001A4 700D80E3 ORR R0,R0,#0x1C00 \ 000001A8 06B080E0 ADD R11,R0,R6 \ 000001AC 000098E5 LDR R0,[R8, #+0] \ 000001B0 040050E3 CMP R0,#+4 \ 000001B4 0400001A BNE ??AddToMain_11 \ 000001B8 0530A0E1 MOV R3,R5 \ 000001BC 0420A0E1 MOV R2,R4 \ 000001C0 0710A0E1 MOV R1,R7 \ 000001C4 0B00A0E1 MOV R0,R11 \ 000001C8 160000EF SWI +22 3442 if(main_count>4) \ ??AddToMain_11: \ 000001CC 000098E5 LDR R0,[R8, #+0] \ 000001D0 050050E3 CMP R0,#+5 \ 000001D4 100000BA BLT ??AddToMain_12 3443 { 3444 strcpy(a_txt, s_txt); \ 000001D8 00109DE5 LDR R1,[SP, #+0] \ 000001DC 04009DE5 LDR R0,[SP, #+4] \ 000001E0 1A0000EF SWI +26 3445 strcpy(s_txt, d_txt); \ 000001E4 00009DE5 LDR R0,[SP, #+0] \ 000001E8 0910A0E1 MOV R1,R9 \ 000001EC 1A0000EF SWI +26 3446 strcpy(d_txt, f_txt); \ 000001F0 0A10A0E1 MOV R1,R10 \ 000001F4 0900A0E1 MOV R0,R9 \ 000001F8 1A0000EF SWI +26 3447 strcpy(f_txt, g_txt); \ 000001FC 0B10A0E1 MOV R1,R11 \ 00000200 0A00A0E1 MOV R0,R10 \ 00000204 1A0000EF SWI +26 3448 sprintf(g_txt, "%s: %s", nameu,de); \ 00000208 0530A0E1 MOV R3,R5 \ 0000020C 0420A0E1 MOV R2,R4 \ 00000210 0710A0E1 MOV R1,R7 \ 00000214 0B00A0E1 MOV R0,R11 \ 00000218 160000EF SWI +22 3449 } 3450 mfree(de); \ ??AddToMain_12: \ 0000021C 0500A0E1 MOV R0,R5 \ 00000220 150000EF SWI +21 3451 main_d=1; \ 00000224 0100A0E3 MOV R0,#+1 \ 00000228 C80186E5 STR R0,[R6, #+456] 3452 } \ 0000022C F38FBDE8 POP {R0,R1,R4-R11,PC} ;; return \ ??AddToMain_0: \ 00000230 ........ DC32 main_lenght \ 00000234 ........ DC32 use_cutter \ 00000238 ........ DC32 `?` 3453 3454 //======================add to main info================ 3455 3456 int NEW_MSG; 3457 \ In segment CODE, align 4, keep-with-next 3458 void AddStringToLog(CLIST *t, int code, char *s, const char *name, unsigned int IDforACK,int flag) 3459 { \ AddStringToLog: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 90D04DE2 SUB SP,SP,#+144 \ 00000008 B0709DE5 LDR R7,[SP, #+176] \ 0000000C B4909DE5 LDR R9,[SP, #+180] \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 0150A0E1 MOV R5,R1 \ 00000018 0280A0E1 MOV R8,R2 \ 0000001C 0360A0E1 MOV R6,R3 3460 char hs[128], *lastX; 3461 TTime tt; 3462 TDate d; 3463 GetDateTime(&d,&tt); \ 00000020 0D10A0E1 MOV R1,SP \ 00000024 08008DE2 ADD R0,SP,#+8 \ 00000028 B40000EF SWI +180 3464 int i; 3465 3466 // if(code == 3 && !LOG_XTXT) return; //Нl нуcно nоodrн?nь cennnrnуn 3467 if ( code==3 && NOT_LOG_SAME_XTXT ) \ 0000002C 030055E3 CMP R5,#+3 \ 00000030 1600001A BNE ??AddStringToLog_0 \ 00000034 04029FE5 LDR R0,??AddStringToLog_1 ;; NOT_LOG_SAME_XTXT \ 00000038 000090E5 LDR R0,[R0, #+0] \ 0000003C 000050E3 CMP R0,#+0 \ 00000040 1200000A BEQ ??AddStringToLog_0 3468 { 3469 #ifdef kluchnik 3470 if(!t->isactive && HISTORY_BUFFER && (t->isLoadHistory && t->isIndividSet)) GetHistory(t, 64<isactive && HISTORY_BUFFER) GetHistory(t, 64<isactive && HISTORY_BUFFER) GetHistory(t, 64<` \ 00000094 0600A0E1 MOV R0,R6 \ 00000098 01002DE9 PUSH {R0} \ 0000009C 1000DDE5 LDRB R0,[SP, #+16] \ 000000A0 0A20A0E1 MOV R2,R10 \ 000000A4 7F10A0E3 MOV R1,#+127 \ 000000A8 01002DE9 PUSH {R0} \ 000000AC 1500DDE5 LDRB R0,[SP, #+21] \ 000000B0 01002DE9 PUSH {R0} \ 000000B4 0E00DDE5 LDRB R0,[SP, #+14] \ 000000B8 01002DE9 PUSH {R0} \ 000000BC 1100DDE5 LDRB R0,[SP, #+17] \ 000000C0 01002DE9 PUSH {R0} \ 000000C4 1430DDE5 LDRB R3,[SP, #+20] \ 000000C8 24008DE2 ADD R0,SP,#+36 \ 000000CC 1B0100EF SWI +283 3481 if(code != 3 || ((LOG_XTXT) && (flag)))//Нужно сохранять иксстатус \ 000000D0 030055E3 CMP R5,#+3 \ 000000D4 14D08DE2 ADD SP,SP,#+20 \ 000000D8 0400001A BNE ??AddStringToLog_4 \ 000000DC 64019FE5 LDR R0,??AddStringToLog_1+0x8 ;; LOG_XTXT \ 000000E0 000090E5 LDR R0,[R0, #+0] \ 000000E4 000050E3 CMP R0,#+0 \ 000000E8 00005913 CMPNE R9,#+0 \ 000000EC 0400000A BEQ ??AddStringToLog_5 3482 Add2History(t, hs, s, code); \ ??AddStringToLog_4: \ 000000F0 0530A0E1 MOV R3,R5 \ 000000F4 0820A0E1 MOV R2,R8 \ 000000F8 10108DE2 ADD R1,SP,#+16 \ 000000FC 0400A0E1 MOV R0,R4 \ 00000100 ........ _BLF Add2History,??Add2History??rA 3483 3484 LOGQ *p=NewLOGQ(s); \ ??AddStringToLog_5: \ 00000104 0800A0E1 MOV R0,R8 \ 00000108 ........ BL NewLOGQ \ 0000010C 0080A0E1 MOV R8,R0 3485 snprintf(p->hdr,79,"%02d:%02d:%02d %02d.%02d %s:",tt.hour,tt.min,tt.sec,d.day,d.month,name); \ 00000110 40002DE9 PUSH {R6} \ 00000114 1000DDE5 LDRB R0,[SP, #+16] \ 00000118 20208AE2 ADD R2,R10,#+32 \ 0000011C 4F10A0E3 MOV R1,#+79 \ 00000120 01002DE9 PUSH {R0} \ 00000124 1500DDE5 LDRB R0,[SP, #+21] \ 00000128 01002DE9 PUSH {R0} \ 0000012C 0E00DDE5 LDRB R0,[SP, #+14] \ 00000130 01002DE9 PUSH {R0} \ 00000134 1100DDE5 LDRB R0,[SP, #+17] \ 00000138 01002DE9 PUSH {R0} \ 0000013C 1430DDE5 LDRB R3,[SP, #+20] \ 00000140 100088E2 ADD R0,R8,#+16 \ 00000144 1B0100EF SWI +283 3486 p->type=code; \ 00000148 0C5088E5 STR R5,[R8, #+12] 3487 p->ID=IDforACK; //0-32767 \ 0000014C 087088E5 STR R7,[R8, #+8] 3488 i=AddLOGQ(&t->log,p); \ 00000150 0810A0E1 MOV R1,R8 \ 00000154 900084E2 ADD R0,R4,#+144 \ 00000158 ........ BL AddLOGQ \ 0000015C 0060A0E1 MOV R6,R0 \ 00000160 150056E3 CMP R6,#+21 \ 00000164 14D08DE2 ADD SP,SP,#+20 \ 00000168 090000BA BLT ??AddStringToLog_6 3489 while(i>MAXLOGMSG) 3490 { 3491 if (t->log==t->last_log) t->last_log=t->last_log->next; \ ??AddStringToLog_7: \ 0000016C 980094E5 LDR R0,[R4, #+152] \ 00000170 901094E5 LDR R1,[R4, #+144] 3492 RemoveLOGQ(&t->log,t->log); 3493 i--; \ 00000174 016046E2 SUB R6,R6,#+1 \ 00000178 000051E1 CMP R1,R0 \ 0000017C 00009005 LDREQ R0,[R0, #+0] \ 00000180 98008405 STREQ R0,[R4, #+152] \ 00000184 900084E2 ADD R0,R4,#+144 \ 00000188 ........ BL RemoveLOGQ 3494 } \ 0000018C 150056E3 CMP R6,#+21 \ 00000190 F5FFFFAA BGE ??AddStringToLog_7 3495 t->msg_count=i; \ ??AddStringToLog_6: \ 00000194 A06084E5 STR R6,[R4, #+160] 3496 if (!t->last_log) t->last_log=p; \ 00000198 980094E5 LDR R0,[R4, #+152] 3497 if (code==3) \ 0000019C ........ LDR R6,??DataTable110 ;; S_ICONS \ 000001A0 000050E3 CMP R0,#+0 \ 000001A4 98808405 STREQ R8,[R4, #+152] \ 000001A8 030055E3 CMP R5,#+3 \ 000001AC 0D00001A BNE ??AddStringToLog_8 3498 { 3499 if (edchat_id) \ 000001B0 A00296E5 LDR R0,[R6, #+672] \ 000001B4 000050E3 CMP R0,#+0 \ 000001B8 1C00000A BEQ ??AddStringToLog_9 3500 { 3501 void *data=FindGUIbyId(edchat_id,NULL); \ 000001BC A00296E5 LDR R0,[R6, #+672] \ 000001C0 0010A0E3 MOV R1,#+0 \ 000001C4 090200EF SWI +521 3502 if (data) \ 000001C8 000050E3 CMP R0,#+0 \ 000001CC 1700000A BEQ ??AddStringToLog_9 3503 { 3504 EDCHAT_STRUCT *ed_struct; 3505 ed_struct=EDIT_GetUserPointer(data); \ 000001D0 DF0100EF SWI +479 3506 if (ed_struct) \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 1400000A BEQ ??AddStringToLog_9 3507 { 3508 if (ed_struct->ed_contact==t) \ 000001DC 000090E5 LDR R0,[R0, #+0] \ 000001E0 040050E1 CMP R0,R4 \ 000001E4 1100001A BNE ??AddStringToLog_9 3509 { 3510 goto L_INC; 3511 } 3512 } 3513 } 3514 } 3515 goto L_NOINC; 3516 } 3517 L_INC: 3518 if (!t->isunread) total_unread++; \ ??AddStringToLog_8: \ 000001E8 800094E5 LDR R0,[R4, #+128] \ 000001EC 000050E3 CMP R0,#+0 \ 000001F0 90029605 LDREQ R0,[R6, #+656] \ 000001F4 01008002 ADDEQ R0,R0,#+1 \ 000001F8 90028605 STREQ R0,[R6, #+656] 3519 if(NEW_MSG==1) \ 000001FC 380396E5 LDR R0,[R6, #+824] \ 00000200 010050E3 CMP R0,#+1 \ 00000204 0700001A BNE ??AddStringToLog_10 3520 { 3521 t->unread_msg++; \ 00000208 840094E5 LDR R0,[R4, #+132] \ 0000020C 010080E2 ADD R0,R0,#+1 \ 00000210 840084E5 STR R0,[R4, #+132] 3522 total_unread2++; \ 00000214 F80196E5 LDR R0,[R6, #+504] \ 00000218 010080E2 ADD R0,R0,#+1 \ 0000021C F80186E5 STR R0,[R6, #+504] 3523 NEW_MSG=0; \ 00000220 0000A0E3 MOV R0,#+0 \ 00000224 380386E5 STR R0,[R6, #+824] 3524 } 3525 t->isunread=1; \ ??AddStringToLog_10: \ 00000228 0100A0E3 MOV R0,#+1 \ 0000022C 800084E5 STR R0,[R4, #+128] 3526 L_NOINC: 3527 ChangeContactPos(t); \ ??AddStringToLog_9: \ 00000230 0400A0E1 MOV R0,R4 \ 00000234 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 3528 } \ ??AddStringToLog_3: \ 00000238 90D08DE2 ADD SP,SP,#+144 ;; stack cleaning \ 0000023C F087BDE8 POP {R4-R10,PC} ;; return \ ??AddStringToLog_1: \ 00000240 ........ DC32 NOT_LOG_SAME_XTXT \ 00000244 ........ DC32 `?` \ 00000248 ........ DC32 LOG_XTXT 3529 3530 void ParseAnswer(WSHDR *ws, const char *s); 3531 3532 int time_to_stop_t9; 3533 \ In segment CODE, align 4, keep-with-next 3534 void ParseXStatusText(WSHDR *ws, const char *s, int color) 3535 { \ ParseXStatusText: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 \ 0000000C 0260A0E1 MOV R6,R2 3536 int c; 3537 int flag=0; \ 00000010 0070A0E3 MOV R7,#+0 3538 CutWSTR(ws,0); \ 00000014 0010A0E3 MOV R1,#+0 \ 00000018 260100EF SWI +294 3539 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} 3540 wsAppendChar(ws,0xE008); \ 0000002C 0810A0E3 MOV R1,#+8 \ 00000030 E01C81E3 ORR R1,R1,#0xE000 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 1C0000EF SWI +28 3541 wsAppendChar(ws,color); \ 0000003C 0610A0E1 MOV R1,R6 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 1C0000EF SWI +28 3542 wsAppendChar(ws,0xE013); \ 00000048 1310A0E3 MOV R1,#+19 \ 0000004C E01C81E3 ORR R1,R1,#0xE000 \ 00000050 0A0000EA B ??ParseXStatusText_0 3543 while((c=*s++)) 3544 { 3545 if (c==13) \ ??ParseXStatusText_1: \ 00000054 0D0050E3 CMP R0,#+13 3546 { 3547 if (!flag) \ 00000058 00005703 CMPEQ R7,#+0 \ 0000005C 0500001A BNE ??ParseXStatusText_2 3548 { 3549 flag=1; \ 00000060 0170A0E3 MOV R7,#+1 3550 wsAppendChar(ws,0xE012); \ 00000064 1210A0E3 MOV R1,#+18 \ 00000068 E01C81E3 ORR R1,R1,#0xE000 \ 0000006C 0400A0E1 MOV R0,R4 \ 00000070 1C0000EF SWI +28 3551 c=' '; \ 00000074 2000A0E3 MOV R0,#+32 3552 } 3553 } 3554 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 3555 } \ 00000088 ........ LDRB R0,[R5], #+1 \ 0000008C 000050E3 CMP R0,#+0 \ 00000090 EFFFFF1A BNE ??ParseXStatusText_1 \ 00000094 F080BDE8 POP {R4-R7,PC} ;; return 3556 } 3557 3558 //Добавление итемов в чат при получении нового сообщения \ In segment CODE, align 4, keep-with-next 3559 void AddMsgToChat(void *data) 3560 { \ AddMsgToChat: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 3CD04DE2 SUB SP,SP,#+60 3561 LOGQ *p; 3562 EDITCONTROL ec; 3563 EDITC_OPTIONS ec_options; 3564 EDCHAT_STRUCT *ed_struct; 3565 int j; 3566 int color, font, type; 3567 int zc; 3568 if (!data) return; \ 00000008 000050E3 CMP R0,#+0 \ 0000000C C400000A BEQ ??AddMsgToChat_0 3569 ed_struct=EDIT_GetUserPointer(data); \ 00000010 DF0100EF SWI +479 \ 00000014 0040B0E1 MOVS R4,R0 3570 if (!ed_struct) return; \ 00000018 C100000A BEQ ??AddMsgToChat_0 3571 if (!ed_struct->ed_contact->isunread) return; \ 0000001C 000094E5 LDR R0,[R4, #+0] \ 00000020 801090E5 LDR R1,[R0, #+128] \ 00000024 000051E3 CMP R1,#+0 \ 00000028 BD00000A BEQ ??AddMsgToChat_0 3572 3573 p=ed_struct->ed_contact->last_log; \ 0000002C 985090E5 LDR R5,[R0, #+152] 3574 if (p) \ 00000030 ........ LDR R6,??DataTable146 ;; S_ICONS \ 00000034 ........ LDR R7,??DataTable112 ;; O_ED_X_FONT_SIZE \ 00000038 ........ LDR R8,??DataTable113 ;; X_COLOR \ 0000003C ........ LDR R9,??DataTable114 ;; O_X_COLOR \ 00000040 000055E3 CMP R5,#+0 \ 00000044 A100000A BEQ ??AddMsgToChat_1 3575 { 3576 while(p) 3577 { 3578 font = ED_H_FONT_SIZE; \ ??AddMsgToChat_2: \ 00000048 ........ LDR R0,??DataTable135 ;; ED_H_FONT_SIZE 3579 if ((zc=p->acked&3)) \ 0000004C ........ LDR R1,??DataTable132 ;; I_COLOR \ 00000050 00A090E5 LDR R10,[R0, #+0] \ 00000054 040095E5 LDR R0,[R5, #+4] \ 00000058 00B091E5 LDR R11,[R1, #+0] \ 0000005C 030010E2 ANDS R0,R0,#0x3 \ 00000060 0300000A BEQ ??AddMsgToChat_3 3580 { 3581 if (zc==1) \ 00000064 010050E3 CMP R0,#+1 \ 00000068 1E00001A BNE ??AddMsgToChat_4 3582 color=ACK_COLOR; //Зеленый \ 0000006C ........ LDR R0,??DataTable128 ;; ACK_COLOR \ 00000070 1B0000EA B ??AddMsgToChat_5 3583 else 3584 color=I_COLOR; 3585 } 3586 else 3587 { 3588 if (p->ID==0xFFFFFFFF) \ ??AddMsgToChat_3: \ 00000074 080095E5 LDR R0,[R5, #+8] \ 00000078 010070E3 CMN R0,#+1 \ 0000007C 1700001A BNE ??AddMsgToChat_6 3589 { 3590 type = p->type&0x0F; \ 00000080 0C0095E5 LDR R0,[R5, #+12] \ 00000084 0F1000E2 AND R1,R0,#0xF 3591 if(p->type&0x10) \ 00000088 100010E3 TST R0,#0x10 \ 0000008C 0B00000A BEQ ??AddMsgToChat_7 3592 { 3593 color = (type==1)?O_I_COLOR:((type==3)?O_X_COLOR:O_TO_COLOR); \ 00000090 010051E3 CMP R1,#+1 \ 00000094 ........ LDREQ R0,??DataTable130 ;; O_I_COLOR \ 00000098 0400000A BEQ ??AddMsgToChat_8 \ 0000009C 030051E3 CMP R1,#+3 \ 000000A0 00B09905 LDREQ R11,[R9, #+0] \ 000000A4 00A09705 LDREQ R10,[R7, #+0] \ 000000A8 0E00000A BEQ ??AddMsgToChat_4 \ 000000AC ........ LDR R0,??DataTable129 ;; O_TO_COLOR \ ??AddMsgToChat_8: \ 000000B0 00B090E5 LDR R11,[R0, #+0] \ 000000B4 ........ LDR R0,??DataTable134 ;; O_ED_H_FONT_SIZE \ ??AddMsgToChat_9: \ 000000B8 00A090E5 LDR R10,[R0, #+0] \ 000000BC 090000EA B ??AddMsgToChat_4 3594 font = (type==3)?O_ED_X_FONT_SIZE:O_ED_H_FONT_SIZE; 3595 } 3596 else 3597 { 3598 color = (type==1)?I_COLOR:((type==3)?X_COLOR:TO_COLOR); \ ??AddMsgToChat_7: \ 000000C0 010051E3 CMP R1,#+1 \ 000000C4 0700000A BEQ ??AddMsgToChat_4 \ 000000C8 030051E3 CMP R1,#+3 \ 000000CC 00B09805 LDREQ R11,[R8, #+0] \ 000000D0 ........ LDREQ R0,??DataTable126 ;; ED_X_FONT_SIZE \ 000000D4 F7FFFF0A BEQ ??AddMsgToChat_9 \ 000000D8 ........ LDR R0,??DataTable131 ;; TO_COLOR \ 000000DC 000000EA B ??AddMsgToChat_5 3599 font = (type==3)?ED_X_FONT_SIZE:ED_H_FONT_SIZE; 3600 } 3601 } 3602 else 3603 color=UNACK_COLOR; //????? \ ??AddMsgToChat_6: \ 000000E0 ........ LDR R0,??DataTable133 ;; UNACK_COLOR \ ??AddMsgToChat_5: \ 000000E4 00B090E5 LDR R11,[R0, #+0] 3604 } 3605 PrepareEditControl(&ec); \ ??AddMsgToChat_4: \ 000000E8 10008DE2 ADD R0,SP,#+16 \ 000000EC 640100EF SWI +356 3606 if ((p->type&0x0F)!=3) \ 000000F0 0C0095E5 LDR R0,[R5, #+12] \ 000000F4 0F0000E2 AND R0,R0,#0xF \ 000000F8 030050E3 CMP R0,#+3 \ 000000FC 0800000A BEQ ??AddMsgToChat_10 3607 { 3608 ascii2ws(ews,p->hdr); \ 00000100 180296E5 LDR R0,[R6, #+536] \ 00000104 101085E2 ADD R1,R5,#+16 \ 00000108 ........ _BLF ascii2ws,??ascii2ws??rA 3609 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 0000010C 183296E5 LDR R3,[R6, #+536] \ 00000110 4020A0E3 MOV R2,#+64 \ 00000114 000093E5 LDR R0,[R3, #+0] \ 00000118 B000D0E1 LDRH R0,[R0, #+0] \ 0000011C 01002DE9 PUSH {R0} \ 00000120 030000EA B ??AddMsgToChat_11 3610 } 3611 else 3612 ConstructEditControl(&ec,ECT_HEADER,ECF_DELSTR,ews,0); \ ??AddMsgToChat_10: \ 00000124 0000A0E3 MOV R0,#+0 \ 00000128 01002DE9 PUSH {R0} \ 0000012C 183296E5 LDR R3,[R6, #+536] \ 00000130 2020A0E3 MOV R2,#+32 \ ??AddMsgToChat_11: \ 00000134 0110A0E3 MOV R1,#+1 \ 00000138 14008DE2 ADD R0,SP,#+20 \ 0000013C 650100EF SWI +357 \ 00000140 04D08DE2 ADD SP,SP,#+4 3613 PrepareEditCOptions(&ec_options); \ 00000144 0D00A0E1 MOV R0,SP \ 00000148 C80100EF SWI +456 3614 SetPenColorToEditCOptions(&ec_options,color); \ 0000014C 0B10A0E1 MOV R1,R11 \ 00000150 0D00A0E1 MOV R0,SP \ 00000154 CC0100EF SWI +460 3615 SetFontToEditCOptions(&ec_options,font); \ 00000158 0A10A0E1 MOV R1,R10 \ 0000015C 0D00A0E1 MOV R0,SP \ 00000160 CA0100EF SWI +458 3616 CopyOptionsToEditControl(&ec,&ec_options); \ 00000164 0D10A0E1 MOV R1,SP \ 00000168 10008DE2 ADD R0,SP,#+16 \ 0000016C CE0100EF SWI +462 3617 //AddEditControlToEditQend(eq,&ec,ma); 3618 EDIT_InsertEditControl(data,ed_struct->ed_answer-1,&ec); \ 00000170 080094E5 LDR R0,[R4, #+8] \ 00000174 10208DE2 ADD R2,SP,#+16 \ 00000178 011040E2 SUB R1,R0,#+1 \ 0000017C 3C009DE5 LDR R0,[SP, #+60] \ 00000180 D20100EF SWI +466 3619 ed_struct->ed_answer++; \ 00000184 080094E5 LDR R0,[R4, #+8] \ 00000188 010080E2 ADD R0,R0,#+1 \ 0000018C 080084E5 STR R0,[R4, #+8] 3620 if ((p->type&0x0F)!=3) \ 00000190 0C0095E5 LDR R0,[R5, #+12] \ 00000194 0F1000E2 AND R1,R0,#0xF \ 00000198 030051E3 CMP R1,#+3 \ 0000019C 0300000A BEQ ??AddMsgToChat_12 3621 { 3622 ParseAnswer(ews,p->text); \ 000001A0 180296E5 LDR R0,[R6, #+536] \ 000001A4 601085E2 ADD R1,R5,#+96 \ 000001A8 ........ BL ParseAnswer \ 000001AC 050000EA B ??AddMsgToChat_13 3623 } 3624 else 3625 { 3626 ParseXStatusText(ews, p->text, (p->type&0x10)?O_X_COLOR:X_COLOR); \ ??AddMsgToChat_12: \ 000001B0 100010E3 TST R0,#0x10 \ 000001B4 00209915 LDRNE R2,[R9, #+0] \ 000001B8 180296E5 LDR R0,[R6, #+536] \ 000001BC 00209805 LDREQ R2,[R8, #+0] \ 000001C0 601085E2 ADD R1,R5,#+96 \ 000001C4 ........ BL ParseXStatusText 3627 } 3628 PrepareEditControl(&ec); \ ??AddMsgToChat_13: \ 000001C8 10008DE2 ADD R0,SP,#+16 \ 000001CC 640100EF SWI +356 3629 ConstructEditControl(&ec, 3630 ECT_NORMAL_TEXT, 3631 ews->wsbody[0] ? ECF_APPEND_EOL|ECF_DISABLE_T9 : ECF_DELSTR, 3632 ews,ews->wsbody[0]); \ 000001D0 183296E5 LDR R3,[R6, #+536] \ 000001D4 000093E5 LDR R0,[R3, #+0] \ 000001D8 B010D0E1 LDRH R1,[R0, #+0] \ 000001DC 000051E3 CMP R1,#+0 \ 000001E0 0100A0E1 MOV R0,R1 \ 000001E4 01002DE9 PUSH {R0} \ 000001E8 812DA013 MOVNE R2,#+8256 \ 000001EC 2020A003 MOVEQ R2,#+32 \ 000001F0 0310A0E3 MOV R1,#+3 \ 000001F4 14008DE2 ADD R0,SP,#+20 \ 000001F8 650100EF SWI +357 3633 PrepareEditCOptions(&ec_options); \ 000001FC 04008DE2 ADD R0,SP,#+4 \ 00000200 C80100EF SWI +456 3634 //#ifdef M75 3635 if ((p->type&0x0F)!=3) \ 00000204 0C0095E5 LDR R0,[R5, #+12] \ 00000208 04D08DE2 ADD SP,SP,#+4 \ 0000020C 0F1000E2 AND R1,R0,#0xF \ 00000210 030051E3 CMP R1,#+3 \ 00000214 0400000A BEQ ??AddMsgToChat_14 3636 { 3637 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); \ 00000218 100010E3 TST R0,#0x10 \ 0000021C ........ LDRNE R0,??DataTable124 ;; O_ED_FONT_SIZE \ 00000220 ........ LDREQ R0,??DataTable125 ;; ED_FONT_SIZE \ 00000224 001090E5 LDR R1,[R0, #+0] \ 00000228 090000EA B ??AddMsgToChat_15 3638 } 3639 else 3640 { 3641 SetPenColorToEditCOptions(&ec_options,(p->type&0x10)?O_X_COLOR:X_COLOR); \ ??AddMsgToChat_14: \ 0000022C 100010E3 TST R0,#0x10 \ 00000230 00109915 LDRNE R1,[R9, #+0] \ 00000234 0D00A0E1 MOV R0,SP \ 00000238 00109805 LDREQ R1,[R8, #+0] \ 0000023C CC0100EF SWI +460 3642 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_X_FONT_SIZE:ED_X_FONT_SIZE); \ 00000240 0C0095E5 LDR R0,[R5, #+12] \ 00000244 100010E3 TST R0,#0x10 \ 00000248 ........ LDREQ R0,??DataTable126 ;; ED_X_FONT_SIZE \ 0000024C 00109715 LDRNE R1,[R7, #+0] \ 00000250 00109005 LDREQ R1,[R0, #+0] \ ??AddMsgToChat_15: \ 00000254 0D00A0E1 MOV R0,SP \ 00000258 CA0100EF SWI +458 3643 } 3644 //#else 3645 // SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); 3646 //#endif 3647 CopyOptionsToEditControl(&ec,&ec_options); \ 0000025C 0D10A0E1 MOV R1,SP \ 00000260 10008DE2 ADD R0,SP,#+16 \ 00000264 CE0100EF SWI +462 3648 EDIT_InsertEditControl(data,ed_struct->ed_answer-1,&ec); \ 00000268 080094E5 LDR R0,[R4, #+8] \ 0000026C 10208DE2 ADD R2,SP,#+16 \ 00000270 011040E2 SUB R1,R0,#+1 \ 00000274 3C009DE5 LDR R0,[SP, #+60] \ 00000278 D20100EF SWI +466 3649 ed_struct->ed_answer++; \ 0000027C 080094E5 LDR R0,[R4, #+8] \ 00000280 010080E2 ADD R0,R0,#+1 \ 00000284 080084E5 STR R0,[R4, #+8] 3650 p=p->next; \ 00000288 005095E5 LDR R5,[R5, #+0] 3651 } \ 0000028C 000055E3 CMP R5,#+0 \ 00000290 6CFFFF1A BNE ??AddMsgToChat_2 3652 j=((ed_struct->ed_contact->msg_count+1)*2); //Ожидаемый ed_answer \ 00000294 001094E5 LDR R1,[R4, #+0] \ 00000298 A01091E5 LDR R1,[R1, #+160] \ 0000029C 011081E2 ADD R1,R1,#+1 \ 000002A0 8150A0E1 LSL R5,R1,#+1 \ 000002A4 000055E1 CMP R5,R0 \ 000002A8 070000AA BGE ??AddMsgToChat_16 3653 while(jed_answer) 3654 { 3655 EDIT_RemoveEditControl(ed_struct->ed_chatgui,1); \ ??AddMsgToChat_17: \ 000002AC 040094E5 LDR R0,[R4, #+4] \ 000002B0 0110A0E3 MOV R1,#+1 \ 000002B4 D10100EF SWI +465 3656 ed_struct->ed_answer--; \ 000002B8 080094E5 LDR R0,[R4, #+8] \ 000002BC 010040E2 SUB R0,R0,#+1 \ 000002C0 080084E5 STR R0,[R4, #+8] 3657 } \ 000002C4 000055E1 CMP R5,R0 \ 000002C8 F7FFFFBA BLT ??AddMsgToChat_17 3658 } 3659 ed_struct->ed_contact->last_log=NULL; \ ??AddMsgToChat_16: \ 000002CC 0050A0E3 MOV R5,#+0 \ ??AddMsgToChat_1: \ 000002D0 000094E5 LDR R0,[R4, #+0] \ 000002D4 985080E5 STR R5,[R0, #+152] 3660 if (IsGuiOnTop(edchat_id)) \ 000002D8 A00296E5 LDR R0,[R6, #+672] \ 000002DC 350100EF SWI +309 \ 000002E0 000050E3 CMP R0,#+0 \ 000002E4 0300000A BEQ ??AddMsgToChat_18 3661 { 3662 total_unread--; \ 000002E8 900296E5 LDR R0,[R6, #+656] \ 000002EC 010040E2 SUB R0,R0,#+1 \ 000002F0 900286E5 STR R0,[R6, #+656] \ 000002F4 020000EA B ??AddMsgToChat_19 3663 } 3664 else 3665 ed_struct->requested_decrement_total_unread++; \ ??AddMsgToChat_18: \ 000002F8 0C0094E5 LDR R0,[R4, #+12] \ 000002FC 010080E2 ADD R0,R0,#+1 \ 00000300 0C0084E5 STR R0,[R4, #+12] 3666 ed_struct->ed_contact->isunread=0; \ ??AddMsgToChat_19: \ 00000304 000094E5 LDR R0,[R4, #+0] \ 00000308 805080E5 STR R5,[R0, #+128] 3667 total_unread2=total_unread2-ed_struct->ed_contact->unread_msg; \ 0000030C F81196E5 LDR R1,[R6, #+504] \ 00000310 842090E5 LDR R2,[R0, #+132] \ 00000314 021041E0 SUB R1,R1,R2 \ 00000318 F81186E5 STR R1,[R6, #+504] 3668 ed_struct->ed_contact->unread_msg=0; \ 0000031C 845080E5 STR R5,[R0, #+132] 3669 ChangeContactPos(ed_struct->ed_contact); \ 00000320 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 3670 // EDIT_SetFocus(data,ed_struct->ed_answer); 3671 } \ ??AddMsgToChat_0: \ 00000324 40D08DE2 ADD SP,SP,#+64 ;; stack cleaning \ 00000328 F08FBDE8 POP {R4-R11,PC} ;; return 3672 3673 //Рисуем подтверждения непосредственно \ In segment CODE, align 4, keep-with-next 3674 void DrawAck(void *data) 3675 { \ DrawAck: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 3CD04DE2 SUB SP,SP,#+60 \ 00000008 0040B0E1 MOVS R4,R0 3676 LOGQ *p; 3677 EDITCONTROL ec; 3678 EDITC_OPTIONS ec_options; 3679 EDCHAT_STRUCT *ed_struct; 3680 int j; 3681 int color; 3682 int dorefresh=0; \ 0000000C 0060A0E3 MOV R6,#+0 3683 if (!data) return; \ 00000010 4C00000A BEQ ??DrawAck_0 3684 ed_struct=EDIT_GetUserPointer(data); \ 00000014 DF0100EF SWI +479 3685 if (!ed_struct) return; \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 4900000A BEQ ??DrawAck_0 3686 p=ed_struct->ed_contact->log; \ 00000020 001090E5 LDR R1,[R0, #+0] 3687 j=ed_struct->ed_answer; 3688 j-=(ed_struct->ed_contact->msg_count*2)+1; //Номер собственно хедера верхнего итема \ 00000024 080090E5 LDR R0,[R0, #+8] \ 00000028 905091E5 LDR R5,[R1, #+144] \ 0000002C A01091E5 LDR R1,[R1, #+160] \ 00000030 000055E3 CMP R5,#+0 \ 00000034 810040E0 SUB R0,R0,R1, LSL #+1 \ 00000038 017040E2 SUB R7,R0,#+1 \ 0000003C 3A00000A BEQ ??DrawAck_1 3689 while(p) 3690 { 3691 if (j>=1) //Пока возможно лишнее \ ??DrawAck_2: \ 00000040 010057E3 CMP R7,#+1 \ 00000044 340000BA BLT ??DrawAck_3 3692 { 3693 if (!(p->acked&4)) \ 00000048 040095E5 LDR R0,[R5, #+4] \ 0000004C 040010E3 TST R0,#0x4 \ 00000050 3100001A BNE ??DrawAck_3 3694 { 3695 ExtractEditControl(data,j,&ec); \ 00000054 10208DE2 ADD R2,SP,#+16 \ 00000058 0710A0E1 MOV R1,R7 \ 0000005C 0400A0E1 MOV R0,R4 \ 00000060 690100EF SWI +361 3696 PrepareEditCOptions(&ec_options); \ 00000064 0D00A0E1 MOV R0,SP \ 00000068 C80100EF SWI +456 3697 if (p->acked) \ 0000006C 040095E5 LDR R0,[R5, #+4] \ 00000070 000050E3 CMP R0,#+0 \ 00000074 0300000A BEQ ??DrawAck_4 3698 { 3699 if (p->acked==1) \ 00000078 010050E3 CMP R0,#+1 \ 0000007C ........ LDRNE R0,??DataTable132 ;; I_COLOR 3700 color=ACK_COLOR; //Зеленый \ 00000080 ........ LDREQ R0,??DataTable128 ;; ACK_COLOR \ 00000084 0F0000EA B ??DrawAck_5 3701 else 3702 color=I_COLOR; 3703 } 3704 else 3705 { 3706 if (p->ID==0xFFFFFFFF) \ ??DrawAck_4: \ 00000088 080095E5 LDR R0,[R5, #+8] \ 0000008C 010070E3 CMN R0,#+1 \ 00000090 0B00001A BNE ??DrawAck_6 3707 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,??DataTable129 ;; O_TO_COLOR \ 000000AC ........ LDREQ R0,??DataTable130 ;; O_I_COLOR \ 000000B0 040000EA B ??DrawAck_5 \ ??DrawAck_7: \ 000000B4 010050E3 CMP R0,#+1 \ 000000B8 ........ LDRNE R0,??DataTable131 ;; TO_COLOR \ 000000BC ........ LDREQ R0,??DataTable132 ;; I_COLOR \ 000000C0 000000EA B ??DrawAck_5 3708 else 3709 color=UNACK_COLOR; //Серый \ ??DrawAck_6: \ 000000C4 ........ LDR R0,??DataTable133 ;; UNACK_COLOR 3710 } 3711 SetPenColorToEditCOptions(&ec_options,color/*p->type==1?I_COLOR:TO_COLOR*/); 3712 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_H_FONT_SIZE:ED_H_FONT_SIZE); 3713 CopyOptionsToEditControl(&ec,&ec_options); 3714 StoreEditControl(data,j,&ec); 3715 p->acked|=4; //Обработали 3716 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,??DataTable134 ;; O_ED_H_FONT_SIZE \ 000000E4 ........ LDREQ R0,??DataTable135 ;; 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] 3717 } 3718 } 3719 j+=2; 3720 p=p->next; \ ??DrawAck_3: \ 0000011C 005095E5 LDR R5,[R5, #+0] \ 00000120 027087E2 ADD R7,R7,#+2 3721 } \ 00000124 000055E3 CMP R5,#+0 \ 00000128 C4FFFF1A BNE ??DrawAck_2 3722 if (IsGuiOnTop(edchat_id)&&dorefresh) RefreshGUI(); \ ??DrawAck_1: \ 0000012C 1C009FE5 LDR R0,??DrawAck_8 ;; S_ICONS + 672 \ 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 + 672 3723 } 3724 \ In segment CODE, align 4, keep-with-next 3725 void ask_my_info(void) 3726 { 3727 /* TPKT *p; 3728 CLIST *t; 3729 p=malloc(sizeof(PKT)); 3730 p->pkt.uin=UIN; 3731 p->pkt.type=T_REQINFOSHORT; 3732 p->pkt.data_len=0; 3733 // AddStringToLog(t,0x01,"Request info...",I_str); 3734 SUBPROC((void *)SendAnswer,0,p);*/ 3735 } \ ask_my_info: \ 00000000 1EFF2FE1 BX LR ;; return 3736 \ In segment CODE, align 4, keep-with-next 3737 void set_my_status(void) 3738 { \ set_my_status: \ 00000000 00402DE9 PUSH {LR} 3739 TPKT *p; 3740 p=malloc(sizeof(PKT)+1); \ 00000004 0900A0E3 MOV R0,#+9 \ 00000008 140000EF SWI +20 3741 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 001080E5 STR R1,[R0, #+0] 3742 p->pkt.type=T_MY_STATUS_CH; // Тип пакета: изменение статуса \ 00000014 0F10A0E3 MOV R1,#+15 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 3743 p->pkt.data_len=1; // Длина пакета: 1 байт \ 0000001C 0110A0E3 MOV R1,#+1 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 3744 p->data[0]=CurrentStatus; \ 00000024 18109FE5 LDR R1,??set_my_status_0 ;; S_ICONS + 528 3745 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,??DataTable147 ;; SendAnswer \ 00000038 0010A0E3 MOV R1,#+0 \ 0000003C 710100EF SWI +369 3746 } \ 00000040 0080BDE8 POP {PC} ;; return \ ??set_my_status_0: \ 00000044 ........ DC32 S_ICONS + 528 3747 3748 extern int Send0; 3749 \ In segment CODE, align 4, keep-with-next 3750 void set_my_xstatus(void) 3751 { \ set_my_xstatus: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 3752 #ifdef NEWSGOLD 3753 if(Is_Id3tag_Enabled) 3754 { 3755 if(CurrentXStatus!=11) 3756 { 3757 #endif 3758 TPKT *p; 3759 char *s1; 3760 char *s2; 3761 int l1; 3762 int l2; 3763 p=malloc(sizeof(PKT)+1); 3764 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере 3765 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса 3766 p->pkt.data_len=1; // Длина пакета: 1 байт 3767 p->data[0]=CurrentXStatus; \ 00000004 ........ LDR R8,??DataTable146 ;; S_ICONS 3768 SUBPROC((void *)SendAnswer,0,p); \ 00000008 ........ LDR R6,??DataTable147 ;; SendAnswer \ 0000000C 0CD04DE2 SUB SP,SP,#+12 \ 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 140298E5 LDR R0,[R8, #+532] \ 00000038 0420A0E1 MOV R2,R4 \ 0000003C 0800C4E5 STRB R0,[R4, #+8] \ 00000040 0010A0E3 MOV R1,#+0 \ 00000044 0600A0E1 MOV R0,R6 \ 00000048 710100EF SWI +369 3769 s1=GetXStatusStr(CurrentXStatus*3+1,&l1); \ 0000004C 140298E5 LDR R0,[R8, #+532] \ 00000050 0D10A0E1 MOV R1,SP \ 00000054 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000058 010080E2 ADD R0,R0,#+1 \ 0000005C ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 00000060 0070A0E1 MOV R7,R0 3770 s2=GetXStatusStr(CurrentXStatus*3+2,&l2); \ 00000064 140298E5 LDR R0,[R8, #+532] \ 00000068 04108DE2 ADD R1,SP,#+4 \ 0000006C 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000070 020080E2 ADD R0,R0,#+2 \ 00000074 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 00000078 0080A0E1 MOV R8,R0 3771 if ((!s1)||(!s2)) return; \ 0000007C 000057E3 CMP R7,#+0 \ 00000080 00005813 CMPNE R8,#+0 \ 00000084 F781BD08 POPEQ {R0-R2,R4-R8,PC} 3772 p=malloc(sizeof(PKT)+l1+l2+1); \ 00000088 00009DE5 LDR R0,[SP, #+0] \ 0000008C 04109DE5 LDR R1,[SP, #+4] \ 00000090 000081E0 ADD R0,R1,R0 \ 00000094 090080E2 ADD R0,R0,#+9 \ 00000098 140000EF SWI +20 \ 0000009C 0040A0E1 MOV R4,R0 3773 p->pkt.uin=0; \ 000000A0 005084E5 STR R5,[R4, #+0] 3774 p->pkt.type=T_XTEXT_SET; \ 000000A4 1A00A0E3 MOV R0,#+26 \ 000000A8 B400C4E1 STRH R0,[R4, #+4] 3775 p->pkt.data_len=l1+l2+1; \ 000000AC 00009DE5 LDR R0,[SP, #+0] \ 000000B0 04109DE5 LDR R1,[SP, #+4] \ 000000B4 000081E0 ADD R0,R1,R0 \ 000000B8 010080E2 ADD R0,R0,#+1 \ 000000BC B600C4E1 STRH R0,[R4, #+6] 3776 strncpy(p->data+0,s1,l1); \ 000000C0 00209DE5 LDR R2,[SP, #+0] \ 000000C4 0710A0E1 MOV R1,R7 \ 000000C8 080084E2 ADD R0,R4,#+8 \ 000000CC 160100EF SWI +278 3777 p->data[l1]=0; \ 000000D0 00009DE5 LDR R0,[SP, #+0] 3778 strncpy(p->data+l1+1,s2,l2); \ 000000D4 0810A0E1 MOV R1,R8 \ 000000D8 040080E0 ADD R0,R0,R4 \ 000000DC 0850C0E5 STRB R5,[R0, #+8] \ 000000E0 00009DE5 LDR R0,[SP, #+0] \ 000000E4 04209DE5 LDR R2,[SP, #+4] \ 000000E8 040080E0 ADD R0,R0,R4 \ 000000EC 090080E2 ADD R0,R0,#+9 \ 000000F0 160100EF SWI +278 3779 SUBPROC((void *)SendAnswer,0,p); \ 000000F4 0420A0E1 MOV R2,R4 \ 000000F8 0010A0E3 MOV R1,#+0 \ 000000FC 0600A0E1 MOV R0,R6 \ 00000100 710100EF SWI +369 3780 #ifdef NEWSGOLD 3781 } 3782 else 3783 { 3784 tracktimer=0; 3785 GetTags(); 3786 } 3787 } 3788 else 3789 { 3790 TPKT *p; 3791 char *s1; 3792 char *s2; 3793 int l1; 3794 int l2; 3795 p=malloc(sizeof(PKT)+1); 3796 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере 3797 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса 3798 p->pkt.data_len=1; // Длина пакета: 1 байт 3799 p->data[0]=CurrentXStatus; 3800 SUBPROC((void *)SendAnswer,0,p); 3801 s1=GetXStatusStr(CurrentXStatus*3+1,&l1); 3802 s2=GetXStatusStr(CurrentXStatus*3+2,&l2); 3803 if ((!s1)||(!s2)) return; 3804 p=malloc(sizeof(PKT)+l1+l2+1); 3805 p->pkt.uin=0; 3806 p->pkt.type=T_XTEXT_SET; 3807 p->pkt.data_len=l1+l2+1; 3808 strncpy(p->data+0,s1,l1); 3809 p->data[l1]=0; 3810 strncpy(p->data+l1+1,s2,l2); 3811 SUBPROC((void *)SendAnswer,0,p); 3812 tracktimer=0; 3813 GetTags(); 3814 } 3815 #endif 3816 } \ 00000104 F781BDE8 POP {R0-R2,R4-R8,PC} ;; return 3817 3818 #ifdef NEWSGOLD 3819 3820 void set_my_xstatus2(void) 3821 { 3822 TPKT *p; 3823 // char *s1; 3824 // char *s2; 3825 int l1; 3826 int l2; 3827 p=malloc(sizeof(PKT)+1); 3828 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере 3829 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса 3830 p->pkt.data_len=1; // Длина пакета: 1 байт 3831 p->data[0]=11; 3832 SUBPROC((void *)SendAnswer,0,p); 3833 // char *s1; 3834 char *sk2=malloc(256); 3835 // strcpy(s1, playing); 3836 // s1="Now playing:"; 3837 strcpy(sk2,teast2); 3838 l1=strlen(playing); 3839 l2=strlen(sk2); 3840 if ((!playing)||(!sk2)) return; 3841 p=malloc(sizeof(PKT)+l1+l2+1); 3842 p->pkt.uin=0; 3843 p->pkt.type=T_XTEXT_SET; 3844 p->pkt.data_len=l1+l2+1; 3845 strncpy(p->data+0,playing,l1); 3846 p->data[l1]=0; 3847 strncpy(p->data+l1+1,sk2,l2); 3848 mfree(sk2); 3849 SUBPROC((void *)SendAnswer,0,p); 3850 // mfree(s1); 3851 // mfree(s2); 3852 } 3853 #endif \ In segment CODE, align 4, keep-with-next 3854 void to_develop(void) 3855 { 3856 if (silenthide) return; \ to_develop: \ 00000000 ........ LDR R0,??DataTable146 ;; S_ICONS \ 00000004 00402DE9 PUSH {LR} \ 00000008 441290E5 LDR R1,[R0, #+580] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0080BD18 POPNE {PC} 3857 gipc.name_to=ipc_xtask_name; \ 00000014 ........ LDR R1,??DataTable140 ;; Canvas \ 00000018 BC20A0E3 MOV R2,#+188 \ 0000001C 402E82E3 ORR R2,R2,#0x400 \ 00000020 012082E0 ADD R2,R2,R1 \ 00000024 742080E5 STR R2,[R0, #+116] 3858 gipc.name_from=ipc_my_name; \ 00000028 9C20A0E3 MOV R2,#+156 \ 0000002C 402E82E3 ORR R2,R2,#0x400 \ 00000030 011082E0 ADD R1,R2,R1 \ 00000034 781080E5 STR R1,[R0, #+120] 3859 gipc.data=(void *)maincsm_id; \ 00000038 FC1190E5 LDR R1,[R0, #+508] 3860 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc); \ 0000003C 743080E2 ADD R3,R0,#+116 \ 00000040 7C1080E5 STR R1,[R0, #+124] \ 00000044 0220A0E3 MOV R2,#+2 \ 00000048 FC1F82E3 ORR R1,R2,#0x3F0 \ 0000004C 0900A0E3 MOV R0,#+9 \ 00000050 420C80E3 ORR R0,R0,#0x4200 \ 00000054 000100EF SWI +256 3861 } \ 00000058 0080BDE8 POP {PC} ;; return 3862 \ In segment CODE, align 4, keep-with-next 3863 void ReqAddMsgToChat(CLIST *t) 3864 { \ ReqAddMsgToChat: \ 00000000 70402DE9 PUSH {R4-R6,LR} 3865 if (edchat_id) \ 00000004 ........ LDR R5,??DataTable146 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C A00295E5 LDR R0,[R5, #+672] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 7080BD08 POPEQ {R4-R6,PC} 3866 { 3867 void *data=FindGUIbyId(edchat_id,NULL); \ 00000018 A00295E5 LDR R0,[R5, #+672] \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 090200EF SWI +521 \ 00000024 0060A0E1 MOV R6,R0 3868 { 3869 EDCHAT_STRUCT *ed_struct; 3870 ed_struct=EDIT_GetUserPointer(data); \ 00000028 DF0100EF SWI +479 3871 if (ed_struct) \ 0000002C 000050E3 CMP R0,#+0 \ 00000030 7080BD08 POPEQ {R4-R6,PC} 3872 { 3873 if (ed_struct->ed_contact==t) \ 00000034 000090E5 LDR R0,[R0, #+0] \ 00000038 040050E1 CMP R0,R4 \ 0000003C 7080BD18 POPNE {R4-R6,PC} 3874 { 3875 if (EDIT_IsBusy(data)) \ 00000040 0600A0E1 MOV R0,R6 \ 00000044 1C0200EF SWI +540 \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 0400000A BEQ ??ReqAddMsgToChat_0 3876 { 3877 t->req_add=1; \ 00000050 0100A0E3 MOV R0,#+1 \ 00000054 880084E5 STR R0,[R4, #+136] 3878 #ifdef EVILFOX 3879 time_to_stop_t9=2; 3880 #else 3881 time_to_stop_t9=3; \ 00000058 0300A0E3 MOV R0,#+3 \ 0000005C 3C0385E5 STR R0,[R5, #+828] \ 00000060 7080BDE8 POP {R4-R6,PC} 3882 #endif 3883 } 3884 else 3885 { 3886 AddMsgToChat(data); \ ??ReqAddMsgToChat_0: \ 00000064 0600A0E1 MOV R0,R6 \ 00000068 ........ BL AddMsgToChat 3887 DirectRedrawGUI_ID(edchat_id); \ 0000006C A00295E5 LDR R0,[R5, #+672] \ 00000070 400100EF SWI +320 3888 } 3889 } 3890 } 3891 } 3892 } 3893 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return 3894 3895 GBSTMR develop; 3896 \ In segment CODE, align 4, keep-with-next 3897 void begin_to_develop() 3898 { \ begin_to_develop: \ 00000000 00402DE9 PUSH {LR} 3899 if(IsUnlocked()) \ 00000004 430000EF SWI +67 \ 00000008 000050E3 CMP R0,#+0 \ 0000000C 0100000A BEQ ??begin_to_develop_0 3900 to_develop(); \ 00000010 0040BDE8 POP {LR} ;; Pop \ 00000014 ........ B to_develop ;; tailcall 3901 else 3902 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 + 7448 \ 00000020 6410A0E3 MOV R1,#+100 \ 00000024 4D0000EF SWI +77 3903 } \ 00000028 0080BDE8 POP {PC} ;; return \ ??begin_to_develop_1: \ 0000002C ........ DC32 begin_to_develop \ 00000030 ........ DC32 S_ICONS + 7448 3904 3905 3906 3907 //----------------------------- LOAD COMMANDS -----------------------------// 3908 //Templates 3909 char *cmd_chars; //Собственно файл 3910 char **cmd_lines; //Массив указателей на строки 3911 \ In segment CODE, align 4, keep-with-next 3912 void cmdFree(void) 3913 { \ cmdFree: \ 00000000 10402DE9 PUSH {R4,LR} 3914 if (cmd_lines) mfree(cmd_lines); \ 00000004 ........ LDR R4,??DataTable145 ;; CmdMenuHeader \ 00000008 180094E5 LDR R0,[R4, #+24] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0000000A BEQ ??cmdFree_0 \ 00000014 150000EF SWI +21 3915 if (cmd_chars) mfree(cmd_chars); \ ??cmdFree_0: \ 00000018 140094E5 LDR R0,[R4, #+20] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 0100000A BEQ ??cmdFree_1 \ 00000024 150000EF SWI +21 3916 cmd_lines=NULL; \ 00000028 0000A0E3 MOV R0,#+0 \ ??cmdFree_1: \ 0000002C 180084E5 STR R0,[R4, #+24] 3917 cmd_chars=NULL; \ 00000030 140084E5 STR R0,[R4, #+20] 3918 } \ 00000034 1080BDE8 POP {R4,PC} ;; return 3919 \ In segment CODE, align 4, keep-with-next 3920 int LoadCmd() 3921 { \ LoadCmd: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 4BDF4DE2 SUB SP,SP,#+300 3922 FSTATS stat; 3923 char fn[256]; 3924 int f; 3925 unsigned int ul; 3926 int i; 3927 int fsize; 3928 char *p; 3929 char *pp; 3930 int c; 3931 cmdFree(); \ 00000008 ........ BL cmdFree 3932 strcpy(fn,TEMPLATES_PATH); \ 0000000C ........ LDR R1,??DataTable143 ;; TEMPLATES_PATH \ 00000010 04008DE2 ADD R0,SP,#+4 \ 00000014 1A0000EF SWI +26 3933 i=strlen(fn); \ 00000018 04008DE2 ADD R0,SP,#+4 \ 0000001C 1B0000EF SWI +27 3934 sprintf(fn+i,"\\cmd.txt"); \ 00000020 EC109FE5 LDR R1,??LoadCmd_0 ;; `?` \ 00000024 0070A0E1 MOV R7,R0 \ 00000028 04008DE2 ADD R0,SP,#+4 \ 0000002C 000087E0 ADD R0,R7,R0 \ 00000030 160000EF SWI +22 3935 GetFileStats(fn,&stat,&ul); \ 00000034 0D20A0E1 MOV R2,SP \ 00000038 411F8DE2 ADD R1,SP,#+260 \ 0000003C 04008DE2 ADD R0,SP,#+4 \ 00000040 840000EF SWI +132 3936 fsize=stat.size; \ 00000044 08719DE5 LDR R7,[SP, #+264] 3937 f=fopen(fn,A_ReadOnly+A_BIN,P_READ,&ul); \ 00000048 0D30A0E1 MOV R3,SP \ 0000004C 8020A0E3 MOV R2,#+128 \ 00000050 801CA0E3 MOV R1,#+32768 \ 00000054 04008DE2 ADD R0,SP,#+4 \ 00000058 0A0000EF SWI +10 \ 0000005C 0080A0E1 MOV R8,R0 3938 if (f==-1) return 0; \ 00000060 010078E3 CMN R8,#+1 \ 00000064 0200001A BNE ??LoadCmd_1 \ 00000068 0000A0E3 MOV R0,#+0 \ ??LoadCmd_2: \ 0000006C 4BDF8DE2 ADD SP,SP,#+300 ;; stack cleaning \ 00000070 F087BDE8 POP {R4-R10,PC} ;; return 3939 p=cmd_chars=malloc(fsize+1); \ ??LoadCmd_1: \ 00000074 ........ LDR R4,??DataTable145 ;; CmdMenuHeader \ 00000078 010087E2 ADD R0,R7,#+1 \ 0000007C 140000EF SWI +20 \ 00000080 140084E5 STR R0,[R4, #+20] \ 00000084 0060A0E1 MOV R6,R0 3940 p[fread(f,p,fsize,&ul)]=0; \ 00000088 0050A0E3 MOV R5,#+0 \ 0000008C 0D30A0E1 MOV R3,SP \ 00000090 0720A0E1 MOV R2,R7 \ 00000094 0610A0E1 MOV R1,R6 \ 00000098 0800A0E1 MOV R0,R8 \ 0000009C 0B0000EF SWI +11 \ 000000A0 0650C0E7 STRB R5,[R0, +R6] 3941 fclose(f,&ul); \ 000000A4 0D10A0E1 MOV R1,SP \ 000000A8 0800A0E1 MOV R0,R8 \ 000000AC 0D0000EF SWI +13 3942 i=0; \ 000000B0 0070A0E3 MOV R7,#+0 3943 pp=p; \ 000000B4 0680A0E1 MOV R8,R6 \ 000000B8 020000EA B ??LoadCmd_3 3944 for(;;) 3945 { 3946 c=*p; 3947 if (c<32) 3948 { 3949 if (pp&&(pp!=p)) 3950 { 3951 cmd_lines=realloc(cmd_lines,(i+1)*sizeof(char *)); 3952 cmd_lines[i++]=pp; 3953 } 3954 pp=NULL; 3955 if (!c) break; 3956 *p=0; 3957 } 3958 else 3959 { 3960 if (pp==NULL) pp=p; \ ??LoadCmd_4: \ 000000BC 000058E3 CMP R8,#+0 \ 000000C0 0680A001 MOVEQ R8,R6 3961 } 3962 p++; \ ??LoadCmd_5: \ 000000C4 016086E2 ADD R6,R6,#+1 \ ??LoadCmd_3: \ 000000C8 0090D6E5 LDRB R9,[R6, #+0] \ 000000CC 200059E3 CMP R9,#+32 \ 000000D0 F9FFFFAA BGE ??LoadCmd_4 \ 000000D4 000058E3 CMP R8,#+0 \ 000000D8 06005811 CMPNE R8,R6 \ 000000DC 0600000A BEQ ??LoadCmd_6 \ 000000E0 180094E5 LDR R0,[R4, #+24] \ 000000E4 01A087E2 ADD R10,R7,#+1 \ 000000E8 0A11A0E1 LSL R1,R10,#+2 \ 000000EC BA0000EF SWI +186 \ 000000F0 180084E5 STR R0,[R4, #+24] \ 000000F4 078180E7 STR R8,[R0, +R7, LSL #+2] \ 000000F8 0A70A0E1 MOV R7,R10 \ ??LoadCmd_6: \ 000000FC 0080A0E3 MOV R8,#+0 \ 00000100 000059E3 CMP R9,#+0 3963 } 3964 return i; \ 00000104 0700A001 MOVEQ R0,R7 \ 00000108 D7FFFF0A BEQ ??LoadCmd_2 \ 0000010C 0050C6E5 STRB R5,[R6, #+0] \ 00000110 EBFFFFEA B ??LoadCmd_5 \ ??LoadCmd_0: \ 00000114 ........ DC32 `?` 3965 } 3966 3967 int NumOfItems=0; 3968 HEADER_DESC CmdMenuHeader={NULL,NULL,NULL,NULL,NULL,NULL,LGP_NULL}; 3969 \ In segment CODE, align 4, keep-with-next 3970 void CmdMenuItemHandler(void *data, int curitem, void *unk) 3971 { \ CmdMenuItemHandler: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 3972 void *item=AllocMenuItem(data); \ 0000000C 970100EF SWI +407 \ 00000010 0060A0E1 MOV R6,R0 3973 char *p=cmd_lines[curitem]; \ 00000014 3C009FE5 LDR R0,??CmdMenuItemHandler_0 ;; CmdMenuHeader + 24 \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C 057190E7 LDR R7,[R0, +R5, LSL #+2] 3974 WSHDR *ws=AllocMenuWS(data,strlen(p)); \ 00000020 0700A0E1 MOV R0,R7 \ 00000024 1B0000EF SWI +27 \ 00000028 0010A0E1 MOV R1,R0 \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 980100EF SWI +408 \ 00000034 0080A0E1 MOV R8,R0 3975 ascii2ws(ws,p); \ 00000038 0710A0E1 MOV R1,R7 \ 0000003C ........ _BLF ascii2ws,??ascii2ws??rA 3976 SetMenuItemText(data, item, ws, curitem); \ 00000040 0530A0E1 MOV R3,R5 \ 00000044 0820A0E1 MOV R2,R8 \ 00000048 0610A0E1 MOV R1,R6 \ 0000004C 0400A0E1 MOV R0,R4 \ 00000050 9A0100EF SWI +410 3977 } \ 00000054 F081BDE8 POP {R4-R8,PC} ;; return \ ??CmdMenuItemHandler_0: \ 00000058 ........ DC32 CmdMenuHeader + 24 3978 \ In segment CODE, align 4, keep-with-next 3979 void CmdMenuGHook(void *data, int cmd) 3980 { \ CmdMenuGHook: \ 00000000 00402DE9 PUSH {LR} 3981 if (cmd==TI_CMD_FOCUS) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0100001A BNE ??CmdMenuGHook_0 3982 { 3983 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 \ 00000010 0080BDE8 POP {PC} 3984 } 3985 if (cmd==TI_CMD_DESTROY) \ ??CmdMenuGHook_0: \ 00000014 030051E3 CMP R1,#+3 \ 00000018 0080BD18 POPNE {PC} 3986 { 3987 cmdFree(); \ 0000001C 0040BDE8 POP {LR} ;; Pop \ 00000020 ........ B cmdFree ;; tailcall 3988 } 3989 } 3990 \ In segment CODE, align 4, keep-with-next 3991 static int CmdMenuKeyHook(void *data, GUI_MSG *msg) 3992 { \ CmdMenuKeyHook: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 3993 int Selected=GetCurMenuItem(data); \ 0000000C 8F0100EF SWI +399 \ 00000010 0060A0E1 MOV R6,R0 3994 EDCHAT_STRUCT *ed_struct=MenuGetUserPointer(data); \ 00000014 0400A0E1 MOV R0,R4 \ 00000018 E00100EF SWI +480 \ 0000001C 0040A0E1 MOV R4,R0 3995 if ((msg->keys==0x18)||(msg->keys==0x3D)) \ 00000020 F200D5E1 LDRSH R0,[R5, #+2] \ 00000024 180050E3 CMP R0,#+24 \ 00000028 3D005013 CMPNE R0,#+61 \ 0000002C 1700001A BNE ??CmdMenuKeyHook_0 3996 { 3997 if (NumOfItems) \ 00000030 ........ LDR R0,??DataTable145 ;; CmdMenuHeader \ 00000034 1C1090E5 LDR R1,[R0, #+28] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 1300000A BEQ ??CmdMenuKeyHook_0 3998 { 3999 const char *p=cmd_lines[Selected]; \ 00000040 180090E5 LDR R0,[R0, #+24] \ 00000044 065190E7 LDR R5,[R0, +R6, LSL #+2] 4000 WSHDR *ws; 4001 ws=AllocWS(256); \ 00000048 400FA0E3 MOV R0,#+256 \ 0000004C 250100EF SWI +293 \ 00000050 0060A0E1 MOV R6,R0 4002 wsprintf(ws,p); \ 00000054 0510A0E1 MOV R1,R5 \ 00000058 240100EF SWI +292 4003 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ws); \ 0000005C 040094E5 LDR R0,[R4, #+4] \ 00000060 081094E5 LDR R1,[R4, #+8] \ 00000064 0620A0E1 MOV R2,R6 \ 00000068 DE0100EF SWI +478 4004 EDIT_SetCursorPos(ed_struct->ed_chatgui,wstrlen(ws)+1); \ 0000006C 0600A0E1 MOV R0,R6 \ 00000070 230100EF SWI +291 \ 00000074 011080E2 ADD R1,R0,#+1 \ 00000078 040094E5 LDR R0,[R4, #+4] \ 0000007C D40100EF SWI +468 4005 4006 FreeWS(ws); \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 290100EF SWI +297 4007 return(1); \ 00000088 0100A0E3 MOV R0,#+1 \ 0000008C 7080BDE8 POP {R4-R6,PC} 4008 } 4009 } 4010 return(0); \ ??CmdMenuKeyHook_0: \ 00000090 0000A0E3 MOV R0,#+0 \ 00000094 7080BDE8 POP {R4-R6,PC} ;; return 4011 } 4012 4013 const int CmdSoftkeys[]={0,1,2}; 4014 4015 const SOFTKEY_DESC cmd_sk[]= 4016 { 4017 {0x0004,0x0000,(int)""}, 4018 {0x0001,0x0000,(int)LG_CLOSE}, 4019 {0x003D,0x0000,(int)LGP_DOIT_PIC} 4020 }; 4021 const SOFTKEYSTAB cmd_Back_skt= 4022 { 4023 cmd_sk,0 4024 }; 4025 static const MENU_DESC CmdMenuStruct= 4026 { 4027 8,CmdMenuKeyHook,CmdMenuGHook,NULL, 4028 CmdSoftkeys, 4029 &cmd_Back_skt, 4030 0x10, 4031 CmdMenuItemHandler, 4032 NULL, //menuitems, 4033 NULL, //menuprocs, 4034 NULL 4035 }; 4036 \ In segment CODE, align 4, keep-with-next 4037 int DispCmdMenu(void *ed_gui) 4038 { \ DispCmdMenu: \ 00000000 70402DE9 PUSH {R4-R6,LR} 4039 NumOfItems=LoadCmd(); \ 00000004 68509FE5 LDR R5,??DispCmdMenu_0 ;; CmdMenuHeader 4040 if(NumOfItems) \ 00000008 68609FE5 LDR R6,??DispCmdMenu_0+0x4 ;; `?` \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 ........ BL LoadCmd \ 00000014 1C0085E5 STR R0,[R5, #+28] \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0F00000A BEQ ??DispCmdMenu_1 4041 { 4042 *((int *)(&CmdMenuHeader.lgp_id))=(int)"Select command"; \ 00000020 0C6085E5 STR R6,[R5, #+12] 4043 patch_header(&CmdMenuHeader); \ 00000024 0500A0E1 MOV R0,R5 \ 00000028 ........ _BLF patch_header,??patch_header??rA 4044 return CreateMenu(0,0,&CmdMenuStruct,&CmdMenuHeader,0,NumOfItems,ed_gui,0); \ 0000002C 0000A0E3 MOV R0,#+0 \ 00000030 01002DE9 PUSH {R0} \ 00000034 10002DE9 PUSH {R4} \ 00000038 1C0095E5 LDR R0,[R5, #+28] \ 0000003C 0530A0E1 MOV R3,R5 \ 00000040 01002DE9 PUSH {R0} \ 00000044 202086E2 ADD R2,R6,#+32 \ 00000048 0010A0E3 MOV R1,#+0 \ 0000004C 0000A0E3 MOV R0,#+0 \ 00000050 01002DE9 PUSH {R0} \ 00000054 520100EF SWI +338 \ 00000058 10D08DE2 ADD SP,SP,#+16 \ 0000005C 7080BDE8 POP {R4-R6,PC} 4045 } 4046 MsgBoxError(1, (int)"FILE NOT FOUND!"); \ ??DispCmdMenu_1: \ 00000060 101086E2 ADD R1,R6,#+16 \ 00000064 0100A0E3 MOV R0,#+1 \ 00000068 4E0000EF SWI +78 4047 return(0); \ 0000006C 0000A0E3 MOV R0,#+0 \ 00000070 7080BDE8 POP {R4-R6,PC} ;; return \ ??DispCmdMenu_0: \ 00000074 ........ DC32 CmdMenuHeader \ 00000078 ........ DC32 `?` 4048 } 4049 /* 4050 char *GetStatusByIconIndex(int icon) 4051 { 4052 char *stat=malloc(32); 4053 switch(icon) 4054 { 4055 case IS_OFFLINE : sprintf(stat,"Offline"); break; 4056 case IS_INVISIBLE : sprintf(stat,"Invisable"); break; 4057 case IS_AWAY : sprintf(stat,"Away"); break; 4058 case IS_NA : sprintf(stat,"N/A"); break; 4059 case IS_OCCUPIED: sprintf(stat,"Occupied"); break; 4060 case IS_DND : sprintf(stat,"DND"); break; 4061 case IS_DEPRESSION : sprintf(stat,"Depression"); break; 4062 case IS_EVIL : sprintf(stat,"Evil"); break; 4063 case IS_HOME : sprintf(stat,"Home"); break; 4064 case IS_LUNCH : sprintf(stat,"Lunch"); break; 4065 case IS_WORK : sprintf(stat,"Work"); break; 4066 case IS_ONLINE : sprintf(stat,"Online"); break; 4067 case IS_FFC : sprintf(stat,"FFC"); break; 4068 default : sprintf(stat,"Error status"); break; 4069 } 4070 return stat; 4071 } 4072 */ 4073 \ In segment CODE, align 4, keep-with-next 4074 char *GetStatusByIconIndex(int icon) 4075 { \ GetStatusByIconIndex: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 4076 char *stat=malloc(32); \ 00000008 2000A0E3 MOV R0,#+32 \ 0000000C 140000EF SWI +20 4077 switch(icon) \ 00000010 94109FE5 LDR R1,??GetStatusByIconIndex_1+0x4 ;; `?` \ 00000014 0050A0E1 MOV R5,R0 \ 00000018 0C0054E3 CMP R4,#+12 \ 0000001C 1A00008A BHI ??GetStatusByIconIndex_2 \ 00000020 010F8FE2 ADR R0,??GetStatusByIconIndex_0 \ 00000024 0400D0E7 LDRB R0,[R0, R4] \ 00000028 00F18FE0 ADD PC,PC,R0, LSL #+2 \ ??GetStatusByIconIndex_0: \ 0000002C 1A030507 DC8 +26,+3,+5,+7 \ 00000030 090B0D0F DC8 +9,+11,+13,+15 \ 00000034 11131517 DC8 +17,+19,+21,+23 \ 00000038 19000000 DC8 +25,+0,+0,+0 4078 { 4079 case IS_OFFLINE : sprintf(stat,"Отключен"); break; 4080 case IS_INVISIBLE : sprintf(stat,"Невидимый"); break; \ ??GetStatusByIconIndex_3: \ 0000003C 0C1081E2 ADD R1,R1,#+12 \ 00000040 140000EA B ??GetStatusByIconIndex_4 4081 case IS_AWAY : sprintf(stat,"Отсутсвует"); break; \ ??GetStatusByIconIndex_5: \ 00000044 181081E2 ADD R1,R1,#+24 \ 00000048 120000EA B ??GetStatusByIconIndex_4 4082 case IS_NA : sprintf(stat,"Не доступен"); break; \ ??GetStatusByIconIndex_6: \ 0000004C 241081E2 ADD R1,R1,#+36 \ 00000050 100000EA B ??GetStatusByIconIndex_4 4083 case IS_OCCUPIED: sprintf(stat,"Занят"); break; \ ??GetStatusByIconIndex_7: \ 00000054 301081E2 ADD R1,R1,#+48 \ 00000058 0E0000EA B ??GetStatusByIconIndex_4 4084 case IS_DND : sprintf(stat,"Не беспокоить");break; \ ??GetStatusByIconIndex_8: \ 0000005C 381081E2 ADD R1,R1,#+56 \ 00000060 0C0000EA B ??GetStatusByIconIndex_4 4085 case IS_DEPRESSION : sprintf(stat,"Депрессия"); break; \ ??GetStatusByIconIndex_9: \ 00000064 481081E2 ADD R1,R1,#+72 \ 00000068 0A0000EA B ??GetStatusByIconIndex_4 4086 case IS_EVIL : sprintf(stat,"Злой"); break; \ ??GetStatusByIconIndex_10: \ 0000006C 541081E2 ADD R1,R1,#+84 \ 00000070 080000EA B ??GetStatusByIconIndex_4 4087 case IS_HOME : sprintf(stat,"Дома"); break; \ ??GetStatusByIconIndex_11: \ 00000074 5C1081E2 ADD R1,R1,#+92 \ 00000078 060000EA B ??GetStatusByIconIndex_4 4088 case IS_LUNCH : sprintf(stat,"Жру"); break; \ ??GetStatusByIconIndex_12: \ 0000007C 091F8FE2 ADR R1,??GetStatusByIconIndex_1 ;; "Жру" \ 00000080 040000EA B ??GetStatusByIconIndex_4 4089 case IS_WORK : sprintf(stat,"Работа"); break; \ ??GetStatusByIconIndex_13: \ 00000084 641081E2 ADD R1,R1,#+100 \ 00000088 020000EA B ??GetStatusByIconIndex_4 4090 case IS_ONLINE : sprintf(stat,"В сети"); break; \ ??GetStatusByIconIndex_2: \ 0000008C 6C1081E2 ADD R1,R1,#+108 \ 00000090 000000EA B ??GetStatusByIconIndex_4 4091 case IS_FFC : sprintf(stat,"Готов болтать");break; \ ??GetStatusByIconIndex_14: \ 00000094 741081E2 ADD R1,R1,#+116 \ ??GetStatusByIconIndex_4: \ 00000098 0500A0E1 MOV R0,R5 \ 0000009C 160000EF SWI +22 4092 default : sprintf(stat,"В сети"); break; 4093 } 4094 return stat; \ 000000A0 0500A0E1 MOV R0,R5 \ 000000A4 3080BDE8 POP {R4,R5,PC} ;; return \ ??GetStatusByIconIndex_1: \ 000000A8 C6F0F300 DC8 "Жру" \ 000000AC ........ DC32 `?` 4095 } 4096 //----------------------------- CHECK COMMANDS -----------------------------// 4097 4098 4099 int comanda; 4100 4101 char requests1[]="Sending online time..."; 4102 char requests2[]="Sending msg info..."; 4103 char requests3[]="Sending battery info..."; 4104 char requests4[]="Sending mod info..."; 4105 char requests6[]="Sending offline info..."; 4106 char mod_info[264]; 4107 #ifdef NEWSGOLD 4108 #ifdef ELKA 4109 #ifdef ole64//kluchnik 4110 #define PLATFORM "Plяtform from ОлежкО" 4111 #else 4112 #define PLATFORM "Platform: ЁLKA" 4113 #endif 4114 #else 4115 #define PLATFORM "Platform: NEWЫGOLD" 4116 #endif 4117 #else 4118 #define PLATFORM "Platform: ЫGOLD" 4119 #endif 4120 4121 #define ENA_SIGNAL 1 //для команд, активировать сигналы,али нет 4122 #define DIS_SIGNAL 0 4123 4124 4125 \ In segment CODE, align 4, keep-with-next 4126 void SendData(CLIST *t,char *s,int signal,int count) 4127 { \ SendData: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 0140A0E1 MOV R4,R1 \ 00000008 0050A0E1 MOV R5,R0 4128 comanda=0; \ 0000000C ........ LDR R0,??DataTable146 ;; S_ICONS \ 00000010 0010A0E3 MOV R1,#+0 \ 00000014 401380E5 STR R1,[R0, #+832] 4129 t->signals=signal; \ 00000018 702085E5 STR R2,[R5, #+112] 4130 TPKT *p; 4131 SENDMSGCOUNT+=count; \ 0000001C 041290E5 LDR R1,[R0, #+516] \ 00000020 011083E0 ADD R1,R3,R1 \ 00000024 041280E5 STR R1,[R0, #+516] 4132 p=malloc(sizeof(PKT)+strlen(s)+1); \ 00000028 0400A0E1 MOV R0,R4 \ 0000002C 1B0000EF SWI +27 \ 00000030 090080E2 ADD R0,R0,#+9 \ 00000034 140000EF SWI +20 \ 00000038 0060A0E1 MOV R6,R0 4133 p->pkt.uin=t->uin; \ 0000003C 0C0095E5 LDR R0,[R5, #+12] \ 00000040 000086E5 STR R0,[R6, #+0] 4134 p->pkt.type=T_SENDMSG; \ 00000044 0200A0E3 MOV R0,#+2 \ 00000048 B400C6E1 STRH R0,[R6, #+4] 4135 p->pkt.data_len=strlen(s); \ 0000004C 0400A0E1 MOV R0,R4 \ 00000050 1B0000EF SWI +27 \ 00000054 B600C6E1 STRH R0,[R6, #+6] 4136 strcpy(p->data,s); \ 00000058 0410A0E1 MOV R1,R4 \ 0000005C 080086E2 ADD R0,R6,#+8 \ 00000060 1A0000EF SWI +26 4137 SUBPROC((void *)SendAnswer,0,p); \ 00000064 ........ LDR R0,??DataTable147 ;; SendAnswer \ 00000068 0620A0E1 MOV R2,R6 \ 0000006C 0010A0E3 MOV R1,#+0 \ 00000070 710100EF SWI +369 4138 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return 4139 \ In segment DATA_Z, align 4, align-sorted 4140 unsigned int *errornumber; \ errornumber: \ 00000000 DS8 4 4141 \ In segment CODE, align 4, keep-with-next 4142 void CheckComand(char *txt, CLIST *t) 4143 { \ CheckComand: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 4144 comanda=1; \ 00000004 ........ LDR R5,??DataTable165 ;; S_ICONS 4145 #ifdef ole64 4146 sprintf(mod_info,"mod by Evilfox,kluchnik,windes based on revision 2058 from ОлежкО64, mod date: %s at %s ",__DATE__,__TIME__); 4147 #else 4148 sprintf(mod_info,"mod by Evilfox,kluchnik,windes based on revision 2058, mod date: %s at %s ",__DATE__,__TIME__); \ 00000008 086B9FE5 LDR R6,??CheckComand_0 ;; `?` \ 0000000C 8ADF4DE2 SUB SP,SP,#+552 \ 00000010 00B0A0E1 MOV R11,R0 \ 00000014 0140A0E1 MOV R4,R1 \ 00000018 0100A0E3 MOV R0,#+1 \ 0000001C 400385E5 STR R0,[R5, #+832] 4149 #endif 4150 // sprintf(mod_info,"mod by %s based on revision 2058, mod date: Apr 21 2008 ",devel); 4151 t->signals=1; 4152 if(!strcmp(txt, "__TEXTINFO") || !strcmp(txt, "__TI")) \ 00000020 ........ LDR R7,??DataTable149 ;; I_str \ 00000024 F08A9FE5 LDR R8,??CheckComand_0+0x4 ;; show_send_info \ 00000028 9810A0E3 MOV R1,#+152 \ 0000002C 741D81E3 ORR R1,R1,#0x1D00 \ 00000030 051081E0 ADD R1,R1,R5 \ 00000034 10108DE5 STR R1,[SP, #+16] \ 00000038 10009DE5 LDR R0,[SP, #+16] \ 0000003C 583086E2 ADD R3,R6,#+88 \ 00000040 4C2086E2 ADD R2,R6,#+76 \ 00000044 0610A0E1 MOV R1,R6 \ 00000048 160000EF SWI +22 \ 0000004C 0100A0E3 MOV R0,#+1 \ 00000050 700084E5 STR R0,[R4, #+112] \ 00000054 0C10A0E3 MOV R1,#+12 \ 00000058 6C1D81E3 ORR R1,R1,#0x1B00 \ 0000005C 051081E0 ADD R1,R1,R5 \ 00000060 14108DE5 STR R1,[SP, #+20] \ 00000064 0090A0E3 MOV R9,#+0 \ 00000068 6B1F86E2 ADD R1,R6,#+428 \ 0000006C 0B00A0E1 MOV R0,R11 \ 00000070 190000EF SWI +25 \ 00000074 000050E3 CMP R0,#+0 \ 00000078 0400000A BEQ ??CheckComand_1 \ 0000007C 6E1F86E2 ADD R1,R6,#+440 \ 00000080 0B00A0E1 MOV R0,R11 \ 00000084 190000EF SWI +25 \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 8500001A BNE ??CheckComand_2 4153 { 4154 char *s=malloc(16384); \ ??CheckComand_1: \ 00000090 400CA0E3 MOV R0,#+16384 \ 00000094 140000EF SWI +20 \ 00000098 00A0A0E1 MOV R10,R0 4155 char pl[256]; 4156 *s=0; \ 0000009C 0090CAE5 STRB R9,[R10, #+0] 4157 snprintf(pl,256,"%s model: %s sw: %s\r\n",PLATFORM,Get_Phone_Info(PI_MODEL),Get_Phone_Info(PI_SW_NUMBER)); \ 000000A0 0700A0E3 MOV R0,#+7 \ 000000A4 D50100EF SWI +469 \ 000000A8 00B0A0E1 MOV R11,R0 \ 000000AC 0900A0E3 MOV R0,#+9 \ 000000B0 D50100EF SWI +469 \ 000000B4 00082DE9 PUSH {R11} \ 000000B8 01002DE9 PUSH {R0} \ 000000BC 7C3086E2 ADD R3,R6,#+124 \ 000000C0 642086E2 ADD R2,R6,#+100 \ 000000C4 401FA0E3 MOV R1,#+256 \ 000000C8 30008DE2 ADD R0,SP,#+48 \ 000000CC 1B0100EF SWI +283 4158 strcat(s,pl); \ 000000D0 30108DE2 ADD R1,SP,#+48 \ 000000D4 0A00A0E1 MOV R0,R10 \ 000000D8 170000EF SWI +23 4159 char online[256]; 4160 sprintf(online,"Время в онлайн: %02d:%02d:%02d \r\n" 4161 "Сервер: %s \r\n%s \r\n", uptimeHour, uptimeMin, uptimeSec, hostbuf2,PINGO); \ 000000DC 9400A0E3 MOV R0,#+148 \ 000000E0 540D80E3 ORR R0,R0,#0x1500 \ 000000E4 050080E0 ADD R0,R0,R5 \ 000000E8 01002DE9 PUSH {R0} \ 000000EC 20009DE5 LDR R0,[SP, #+32] \ 000000F0 8C1086E2 ADD R1,R6,#+140 \ 000000F4 01002DE9 PUSH {R0} \ 000000F8 3C0295E5 LDR R0,[R5, #+572] \ 000000FC 01002DE9 PUSH {R0} \ 00000100 383295E5 LDR R3,[R5, #+568] \ 00000104 342295E5 LDR R2,[R5, #+564] \ 00000108 4F0F8DE2 ADD R0,SP,#+316 \ 0000010C 160000EF SWI +22 4162 strcat(s,online); \ 00000110 4F1F8DE2 ADD R1,SP,#+316 \ 00000114 0A00A0E1 MOV R0,R10 \ 00000118 170000EF SWI +23 4163 char *send_txt=malloc(64); \ 0000011C 4000A0E3 MOV R0,#+64 \ 00000120 140000EF SWI +20 \ 00000124 00B0A0E1 MOV R11,R0 4164 sprintf(send_txt, "Отправлено сообщений: %d \r\n" 4165 "Принято сообщений: %d \r\n", main2_count, main_count); \ 00000128 ........ LDR R0,??DataTable153 ;; main_count \ 0000012C C01086E2 ADD R1,R6,#+192 \ 00000130 003090E5 LDR R3,[R0, #+0] \ 00000134 ........ LDR R0,??DataTable154 ;; main2_count \ 00000138 002090E5 LDR R2,[R0, #+0] \ 0000013C 0B00A0E1 MOV R0,R11 \ 00000140 160000EF SWI +22 4166 strcat(s,send_txt); \ 00000144 0B10A0E1 MOV R1,R11 \ 00000148 0A00A0E1 MOV R0,R10 \ 0000014C 170000EF SWI +23 4167 4168 WSHDR *ws=AllocWS(64); \ 00000150 4000A0E3 MOV R0,#+64 \ 00000154 250100EF SWI +293 \ 00000158 14008DE5 STR R0,[SP, #+20] 4169 GetProvider(ws,0); \ 0000015C 0010A0E3 MOV R1,#+0 \ 00000160 410000EF SWI +65 4170 char prov[16]; 4171 ws_2str(ws,prov,wstrlen(ws)); \ 00000164 14009DE5 LDR R0,[SP, #+20] \ 00000168 230100EF SWI +291 \ 0000016C 0020A0E1 MOV R2,R0 \ 00000170 14009DE5 LDR R0,[SP, #+20] \ 00000174 2C108DE2 ADD R1,SP,#+44 \ 00000178 A30000EF SWI +163 4172 sprintf(send_txt, "Оператор: %s \r\n", prov); \ 0000017C 2C208DE2 ADD R2,SP,#+44 \ 00000180 F41086E2 ADD R1,R6,#+244 \ 00000184 0B00A0E1 MOV R0,R11 \ 00000188 160000EF SWI +22 4173 FreeWS(ws); \ 0000018C 14009DE5 LDR R0,[SP, #+20] \ 00000190 290100EF SWI +297 4174 strcat(s,send_txt); \ 00000194 0B10A0E1 MOV R1,R11 \ 00000198 0A00A0E1 MOV R0,R10 \ 0000019C 170000EF SWI +23 4175 4176 int bat; 4177 bat=*RamCap(); \ 000001A0 C88000EF SWI +32968 \ 000001A4 B020D0E1 LDRH R2,[R0, #+0] 4178 sprintf(send_txt, "Заряд батареи: %d процентов \r\n", bat); \ 000001A8 411F86E2 ADD R1,R6,#+260 \ 000001AC 0B00A0E1 MOV R0,R11 \ 000001B0 160000EF SWI +22 4179 strcat(s,send_txt); \ 000001B4 0B10A0E1 MOV R1,R11 \ 000001B8 0A00A0E1 MOV R0,R10 \ 000001BC 170000EF SWI +23 4180 4181 char *status=malloc(256); \ 000001C0 400FA0E3 MOV R0,#+256 \ 000001C4 140000EF SWI +20 \ 000001C8 14008DE5 STR R0,[SP, #+20] 4182 TTime the; 4183 GetDateTime(NULL,&the); \ 000001CC 1C108DE2 ADD R1,SP,#+28 \ 000001D0 0900A0E1 MOV R0,R9 \ 000001D4 B40000EF SWI +180 4184 void Get_Online_total(); 4185 Get_Online_total(); \ 000001D8 ........ BL Get_Online_total 4186 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //sendq_l \ 000001DC 7C2295E5 LDR R2,[R5, #+636] \ 000001E0 803295E5 LDR R3,[R5, #+640] 4187 sprintf(status, "Traffic: Rx : %db Tx : %db Queue: %db \r\nTime: %02d:%02d\r\n" 4188 "Online contact: %d [total: %d] \r\nUnread message: %d/%d ", 4189 RX,TX,sendq_l, 4190 the.hour, the.min, 4191 kopa_kontaktu, kopa_online, 4192 total_unread,total_unread2); \ 000001E4 F80195E5 LDR R0,[R5, #+504] \ 000001E8 491F86E2 ADD R1,R6,#+292 \ 000001EC 01002DE9 PUSH {R0} \ 000001F0 900295E5 LDR R0,[R5, #+656] \ 000001F4 01002DE9 PUSH {R0} \ 000001F8 B00295E5 LDR R0,[R5, #+688] \ 000001FC 01002DE9 PUSH {R0} \ 00000200 B40295E5 LDR R0,[R5, #+692] \ 00000204 01002DE9 PUSH {R0} \ 00000208 2D00DDE5 LDRB R0,[SP, #+45] \ 0000020C 01002DE9 PUSH {R0} \ 00000210 3000DDE5 LDRB R0,[SP, #+48] \ 00000214 01002DE9 PUSH {R0} \ 00000218 840295E5 LDR R0,[R5, #+644] \ 0000021C 01002DE9 PUSH {R0} \ 00000220 30009DE5 LDR R0,[SP, #+48] \ 00000224 160000EF SWI +22 \ 00000228 30D08DE2 ADD SP,SP,#+48 4193 strcat(s,status); \ 0000022C 00109DE5 LDR R1,[SP, #+0] \ 00000230 0A00A0E1 MOV R0,R10 \ 00000234 170000EF SWI +23 4194 comanda=0; 4195 if(show_send_info) \ 00000238 000098E5 LDR R0,[R8, #+0] \ 0000023C 409385E5 STR R9,[R5, #+832] \ 00000240 000050E3 CMP R0,#+0 \ 00000244 040295E5 LDR R0,[R5, #+516] \ 00000248 010080E2 ADD R0,R0,#+1 \ 0000024C 040285E5 STR R0,[R5, #+516] \ 00000250 0900000A BEQ ??CheckComand_3 4196 AddStringToLog(t,0x01,"Sending textinfo...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000254 0110A0E3 MOV R1,#+1 \ 00000258 02002DE9 PUSH {R1} \ 0000025C 8008A0E1 LSL R0,R0,#+17 \ 00000260 A008A0E1 LSR R0,R0,#+17 \ 00000264 01002DE9 PUSH {R0} \ 00000268 0730A0E1 MOV R3,R7 \ 0000026C 662F86E2 ADD R2,R6,#+408 \ 00000270 0400A0E1 MOV R0,R4 \ 00000274 ........ BL AddStringToLog \ 00000278 08D08DE2 ADD SP,SP,#+8 4197 else 4198 SENDMSGCOUNT++; 4199 SendData(t,s,ENA_SIGNAL,0); \ ??CheckComand_3: \ 0000027C 0030A0E3 MOV R3,#+0 \ 00000280 0120A0E3 MOV R2,#+1 \ 00000284 0A10A0E1 MOV R1,R10 \ 00000288 0400A0E1 MOV R0,R4 \ 0000028C ........ BL SendData 4200 mfree(s); \ 00000290 0A00A0E1 MOV R0,R10 \ 00000294 150000EF SWI +21 4201 mfree(send_txt); \ 00000298 0B00A0E1 MOV R0,R11 \ 0000029C 150000EF SWI +21 4202 mfree(status); \ 000002A0 00009DE5 LDR R0,[SP, #+0] \ 000002A4 670100EA B ??CheckComand_4 4203 return; 4204 } 4205 4206 if(!strcmp(txt, "__TIME") || !strcmp(txt, "__T") || !strcmp(txt, "GET_TIME")) \ ??CheckComand_2: \ 000002A8 781F86E2 ADD R1,R6,#+480 \ 000002AC 0B00A0E1 MOV R0,R11 \ 000002B0 190000EF SWI +25 \ 000002B4 000050E3 CMP R0,#+0 \ 000002B8 0900000A BEQ ??CheckComand_5 \ 000002BC DA1F8FE2 ADR R1,??CheckComand_6 ;; "__T" \ 000002C0 0B00A0E1 MOV R0,R11 \ 000002C4 190000EF SWI +25 \ 000002C8 000050E3 CMP R0,#+0 \ 000002CC 0400000A BEQ ??CheckComand_5 \ 000002D0 7A1F86E2 ADD R1,R6,#+488 \ 000002D4 0B00A0E1 MOV R0,R11 \ 000002D8 190000EF SWI +25 \ 000002DC 000050E3 CMP R0,#+0 \ 000002E0 2200001A BNE ??CheckComand_7 4207 { 4208 char *status=malloc(256); \ ??CheckComand_5: \ 000002E4 400FA0E3 MOV R0,#+256 \ 000002E8 140000EF SWI +20 \ 000002EC 00A0A0E1 MOV R10,R0 4209 TTime the; 4210 GetDateTime(NULL,&the); \ 000002F0 08108DE2 ADD R1,SP,#+8 \ 000002F4 0000A0E3 MOV R0,#+0 \ 000002F8 B40000EF SWI +180 4211 sprintf(status, "Time: %02d:%02d",the.hour, the.min); \ 000002FC 0930DDE5 LDRB R3,[SP, #+9] \ 00000300 0820DDE5 LDRB R2,[SP, #+8] \ 00000304 701F86E2 ADD R1,R6,#+448 \ 00000308 0A00A0E1 MOV R0,R10 \ 0000030C 160000EF SWI +22 4212 comanda=0; 4213 if(show_send_info) \ 00000310 000098E5 LDR R0,[R8, #+0] \ 00000314 409385E5 STR R9,[R5, #+832] \ 00000318 000050E3 CMP R0,#+0 \ 0000031C 040295E5 LDR R0,[R5, #+516] \ 00000320 010080E2 ADD R0,R0,#+1 \ 00000324 040285E5 STR R0,[R5, #+516] \ 00000328 0900000A BEQ ??CheckComand_8 4214 AddStringToLog(t,0x01,"Sending time...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 0000032C 0110A0E3 MOV R1,#+1 \ 00000330 02002DE9 PUSH {R1} \ 00000334 8008A0E1 LSL R0,R0,#+17 \ 00000338 A008A0E1 LSR R0,R0,#+17 \ 0000033C 01002DE9 PUSH {R0} \ 00000340 0730A0E1 MOV R3,R7 \ 00000344 742F86E2 ADD R2,R6,#+464 \ 00000348 0400A0E1 MOV R0,R4 \ 0000034C ........ BL AddStringToLog \ 00000350 08D08DE2 ADD SP,SP,#+8 4215 else 4216 SENDMSGCOUNT++; 4217 SendData(t,status,ENA_SIGNAL,0); \ ??CheckComand_8: \ 00000354 0030A0E3 MOV R3,#+0 \ 00000358 0120A0E3 MOV R2,#+1 \ 0000035C 0A10A0E1 MOV R1,R10 \ 00000360 0400A0E1 MOV R0,R4 \ 00000364 ........ BL SendData 4218 mfree(status); \ 00000368 0A00A0E1 MOV R0,R10 \ 0000036C 350100EA B ??CheckComand_4 4219 return; 4220 } 4221 4222 if(!strcmp(txt, "GET_PLATFORM_INFO") || !strcmp(txt, "__PLATFORM") || !strcmp(txt,"__HW")) \ ??CheckComand_7: \ 00000370 ........ LDR R10,??DataTable152 ;; SendAnswer \ 00000374 891F86E2 ADD R1,R6,#+548 \ 00000378 0B00A0E1 MOV R0,R11 \ 0000037C 190000EF SWI +25 \ 00000380 000050E3 CMP R0,#+0 \ 00000384 0900000A BEQ ??CheckComand_9 \ 00000388 8E1F86E2 ADD R1,R6,#+568 \ 0000038C 0B00A0E1 MOV R0,R11 \ 00000390 190000EF SWI +25 \ 00000394 000050E3 CMP R0,#+0 \ 00000398 0400000A BEQ ??CheckComand_9 \ 0000039C 911F86E2 ADD R1,R6,#+580 \ 000003A0 0B00A0E1 MOV R0,R11 \ 000003A4 190000EF SWI +25 \ 000003A8 000050E3 CMP R0,#+0 \ 000003AC 3100001A BNE ??CheckComand_10 4223 { 4224 comanda=0; \ ??CheckComand_9: \ 000003B0 409385E5 STR R9,[R5, #+832] 4225 TPKT *p; 4226 char pl[256]; 4227 snprintf(pl,256,"%s model: %s sw: %s",PLATFORM,Get_Phone_Info(PI_MODEL),Get_Phone_Info(PI_SW_NUMBER)); \ 000003B4 0700A0E3 MOV R0,#+7 \ 000003B8 D50100EF SWI +469 \ 000003BC 0090A0E1 MOV R9,R0 \ 000003C0 0900A0E3 MOV R0,#+9 \ 000003C4 D50100EF SWI +469 \ 000003C8 00022DE9 PUSH {R9} \ 000003CC 01002DE9 PUSH {R0} \ 000003D0 7C3086E2 ADD R3,R6,#+124 \ 000003D4 7D2F86E2 ADD R2,R6,#+500 \ 000003D8 401FA0E3 MOV R1,#+256 \ 000003DC 4C0F8DE2 ADD R0,SP,#+304 \ 000003E0 1B0100EF SWI +283 4228 p=malloc(sizeof(PKT)+strlen(pl)+1); \ 000003E4 4C0F8DE2 ADD R0,SP,#+304 \ 000003E8 1B0000EF SWI +27 \ 000003EC 090080E2 ADD R0,R0,#+9 \ 000003F0 140000EF SWI +20 \ 000003F4 0090A0E1 MOV R9,R0 4229 p->pkt.uin=t->uin; \ 000003F8 0C0094E5 LDR R0,[R4, #+12] \ 000003FC 000089E5 STR R0,[R9, #+0] 4230 p->pkt.type=T_SENDMSG; \ 00000400 0200A0E3 MOV R0,#+2 \ 00000404 B400C9E1 STRH R0,[R9, #+4] 4231 p->pkt.data_len=strlen(pl); \ 00000408 4C0F8DE2 ADD R0,SP,#+304 \ 0000040C 1B0000EF SWI +27 \ 00000410 B600C9E1 STRH R0,[R9, #+6] 4232 strcpy(p->data,pl); \ 00000414 4C1F8DE2 ADD R1,SP,#+304 \ 00000418 080089E2 ADD R0,R9,#+8 \ 0000041C 1A0000EF SWI +26 4233 if(show_send_info) \ 00000420 000098E5 LDR R0,[R8, #+0] \ 00000424 08D08DE2 ADD SP,SP,#+8 \ 00000428 000050E3 CMP R0,#+0 \ 0000042C 040295E5 LDR R0,[R5, #+516] \ 00000430 010080E2 ADD R0,R0,#+1 \ 00000434 040285E5 STR R0,[R5, #+516] \ 00000438 0900000A BEQ ??CheckComand_11 4234 AddStringToLog(t,0x01,"Sending platform info...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 0000043C 0110A0E3 MOV R1,#+1 \ 00000440 02002DE9 PUSH {R1} \ 00000444 8008A0E1 LSL R0,R0,#+17 \ 00000448 A008A0E1 LSR R0,R0,#+17 \ 0000044C 01002DE9 PUSH {R0} \ 00000450 0730A0E1 MOV R3,R7 \ 00000454 822F86E2 ADD R2,R6,#+520 \ 00000458 0400A0E1 MOV R0,R4 \ 0000045C ........ BL AddStringToLog \ 00000460 08D08DE2 ADD SP,SP,#+8 4235 else 4236 SENDMSGCOUNT++; 4237 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_11: \ 00000464 0920A0E1 MOV R2,R9 \ ??CheckComand_12: \ 00000468 0010A0E3 MOV R1,#+0 \ 0000046C 0A00A0E1 MOV R0,R10 \ 00000470 710100EF SWI +369 4238 return; \ 00000474 F40000EA B ??CheckComand_13 4239 } 4240 4241 if(!strcmp(txt, "GET_ONLINE_TIME") || !strcmp(txt, "__ONLINE")) \ ??CheckComand_10: \ 00000478 9E1F86E2 ADD R1,R6,#+632 \ 0000047C 0B00A0E1 MOV R0,R11 \ 00000480 190000EF SWI +25 \ 00000484 000050E3 CMP R0,#+0 \ 00000488 0400000A BEQ ??CheckComand_14 \ 0000048C A21F86E2 ADD R1,R6,#+648 \ 00000490 0B00A0E1 MOV R0,R11 \ 00000494 190000EF SWI +25 \ 00000498 000050E3 CMP R0,#+0 \ 0000049C 2D00001A BNE ??CheckComand_15 4242 { 4243 comanda=0; \ ??CheckComand_14: \ 000004A0 409385E5 STR R9,[R5, #+832] 4244 TPKT *p; 4245 char online[256]; 4246 sprintf(online,"Время в онлайн: %02d:%02d:%02d \n" 4247 "Сервер: %s", uptimeHour, uptimeMin, uptimeSec, hostbuf2); \ 000004A4 14009DE5 LDR R0,[SP, #+20] \ 000004A8 931F86E2 ADD R1,R6,#+588 \ 000004AC 01002DE9 PUSH {R0} \ 000004B0 3C0295E5 LDR R0,[R5, #+572] \ 000004B4 01002DE9 PUSH {R0} \ 000004B8 383295E5 LDR R3,[R5, #+568] \ 000004BC 342295E5 LDR R2,[R5, #+564] \ 000004C0 4C0F8DE2 ADD R0,SP,#+304 \ 000004C4 160000EF SWI +22 4248 p=malloc(sizeof(PKT)+strlen(online)+1); \ 000004C8 4C0F8DE2 ADD R0,SP,#+304 \ 000004CC 1B0000EF SWI +27 \ 000004D0 090080E2 ADD R0,R0,#+9 \ 000004D4 140000EF SWI +20 \ 000004D8 0060A0E1 MOV R6,R0 4249 p->pkt.uin=t->uin; \ 000004DC 0C0094E5 LDR R0,[R4, #+12] \ 000004E0 000086E5 STR R0,[R6, #+0] 4250 p->pkt.type=T_SENDMSG; \ 000004E4 0200A0E3 MOV R0,#+2 \ 000004E8 B400C6E1 STRH R0,[R6, #+4] 4251 p->pkt.data_len=strlen(online); \ 000004EC 4C0F8DE2 ADD R0,SP,#+304 \ 000004F0 1B0000EF SWI +27 \ 000004F4 B600C6E1 STRH R0,[R6, #+6] 4252 strcpy(p->data,online); \ 000004F8 4C1F8DE2 ADD R1,SP,#+304 \ 000004FC 080086E2 ADD R0,R6,#+8 \ 00000500 1A0000EF SWI +26 4253 if(show_send_info) \ 00000504 000098E5 LDR R0,[R8, #+0] \ 00000508 08D08DE2 ADD SP,SP,#+8 \ 0000050C 000050E3 CMP R0,#+0 \ 00000510 040295E5 LDR R0,[R5, #+516] \ 00000514 010080E2 ADD R0,R0,#+1 \ 00000518 040285E5 STR R0,[R5, #+516] \ 0000051C 0B00000A BEQ ??CheckComand_16 4254 AddStringToLog(t,0x01,requests1,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000520 0110A0E3 MOV R1,#+1 \ 00000524 02002DE9 PUSH {R1} \ 00000528 8008A0E1 LSL R0,R0,#+17 \ 0000052C A008A0E1 LSR R0,R0,#+17 \ 00000530 01002DE9 PUSH {R0} \ 00000534 0730A0E1 MOV R3,R7 \ 00000538 2800A0E3 MOV R0,#+40 \ 0000053C 740D80E3 ORR R0,R0,#0x1D00 \ 00000540 052080E0 ADD R2,R0,R5 \ 00000544 0400A0E1 MOV R0,R4 \ 00000548 ........ BL AddStringToLog \ 0000054C 08D08DE2 ADD SP,SP,#+8 4255 else 4256 SENDMSGCOUNT++; 4257 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_16: \ 00000550 0620A0E1 MOV R2,R6 \ 00000554 C3FFFFEA B ??CheckComand_12 4258 return; 4259 } 4260 4261 if(!strcmp(txt, "GET_MSG_INFO") || !strcmp(txt, "__MSG")) \ ??CheckComand_15: \ 00000558 B11F86E2 ADD R1,R6,#+708 \ 0000055C 0B00A0E1 MOV R0,R11 \ 00000560 190000EF SWI +25 \ 00000564 000050E3 CMP R0,#+0 \ 00000568 0400000A BEQ ??CheckComand_17 \ 0000056C B51F86E2 ADD R1,R6,#+724 \ 00000570 0B00A0E1 MOV R0,R11 \ 00000574 190000EF SWI +25 \ 00000578 000050E3 CMP R0,#+0 \ 0000057C 2B00001A BNE ??CheckComand_18 4262 { 4263 comanda=0; \ ??CheckComand_17: \ 00000580 409385E5 STR R9,[R5, #+832] 4264 TPKT *p; 4265 char *send_txt=malloc(64); \ 00000584 4000A0E3 MOV R0,#+64 \ 00000588 140000EF SWI +20 \ 0000058C 0090A0E1 MOV R9,R0 4266 sprintf(send_txt, "Отправлено сообщений: %d \n" 4267 "Принято сообщений: %d" 4268 , main2_count, main_count); \ 00000590 ........ LDR R0,??DataTable153 ;; main_count \ 00000594 A51F86E2 ADD R1,R6,#+660 \ 00000598 003090E5 LDR R3,[R0, #+0] \ 0000059C ........ LDR R0,??DataTable154 ;; main2_count \ 000005A0 002090E5 LDR R2,[R0, #+0] \ 000005A4 0900A0E1 MOV R0,R9 \ 000005A8 160000EF SWI +22 4269 p=malloc(sizeof(PKT)+strlen(send_txt)+1); \ 000005AC 0900A0E1 MOV R0,R9 \ 000005B0 1B0000EF SWI +27 \ 000005B4 090080E2 ADD R0,R0,#+9 \ 000005B8 140000EF SWI +20 \ 000005BC 0060A0E1 MOV R6,R0 4270 p->pkt.uin=t->uin; \ 000005C0 0C0094E5 LDR R0,[R4, #+12] \ 000005C4 000086E5 STR R0,[R6, #+0] 4271 p->pkt.type=T_SENDMSG; \ 000005C8 0200A0E3 MOV R0,#+2 \ 000005CC B400C6E1 STRH R0,[R6, #+4] 4272 p->pkt.data_len=strlen(send_txt); \ 000005D0 0900A0E1 MOV R0,R9 \ 000005D4 1B0000EF SWI +27 \ 000005D8 B600C6E1 STRH R0,[R6, #+6] 4273 strcpy(p->data,send_txt); \ 000005DC 0910A0E1 MOV R1,R9 \ 000005E0 080086E2 ADD R0,R6,#+8 \ 000005E4 1A0000EF SWI +26 4274 if(show_send_info) \ 000005E8 000098E5 LDR R0,[R8, #+0] \ 000005EC 000050E3 CMP R0,#+0 \ 000005F0 040295E5 LDR R0,[R5, #+516] \ 000005F4 010080E2 ADD R0,R0,#+1 \ 000005F8 040285E5 STR R0,[R5, #+516] \ 000005FC 8C00000A BEQ ??CheckComand_19 4275 AddStringToLog(t,0x01,requests2,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000600 0110A0E3 MOV R1,#+1 \ 00000604 02002DE9 PUSH {R1} \ 00000608 8008A0E1 LSL R0,R0,#+17 \ 0000060C A008A0E1 LSR R0,R0,#+17 \ 00000610 01002DE9 PUSH {R0} \ 00000614 0730A0E1 MOV R3,R7 \ 00000618 752D85E2 ADD R2,R5,#+7488 \ 0000061C 0400A0E1 MOV R0,R4 \ 00000620 ........ BL AddStringToLog \ 00000624 08D08DE2 ADD SP,SP,#+8 4276 else 4277 SENDMSGCOUNT++; 4278 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_20: \ 00000628 810000EA B ??CheckComand_19 \ ??CheckComand_6: \ 0000062C 5F5F5400 DC8 "__T" 4279 mfree(send_txt); 4280 return; 4281 } 4282 4283 //==========================windes commands begin ===================== 4284 4285 if(!strcmp(txt, "GET_PROVIDER") || !strcmp(txt, "__PROVIDER")) \ ??CheckComand_18: \ 00000630 C21F86E2 ADD R1,R6,#+776 \ 00000634 0B00A0E1 MOV R0,R11 \ 00000638 190000EF SWI +25 \ 0000063C 000050E3 CMP R0,#+0 \ 00000640 0400000A BEQ ??CheckComand_21 \ 00000644 C61F86E2 ADD R1,R6,#+792 \ 00000648 0B00A0E1 MOV R0,R11 \ 0000064C 190000EF SWI +25 \ 00000650 000050E3 CMP R0,#+0 \ 00000654 3600001A BNE ??CheckComand_22 4286 { 4287 comanda=0; \ ??CheckComand_21: \ 00000658 409385E5 STR R9,[R5, #+832] 4288 TPKT *p; 4289 4290 WSHDR *ws=AllocWS(32); \ 0000065C 2000A0E3 MOV R0,#+32 \ 00000660 250100EF SWI +293 \ 00000664 0090A0E1 MOV R9,R0 4291 GetProvider(ws,0); \ 00000668 0010A0E3 MOV R1,#+0 \ 0000066C 410000EF SWI +65 4292 char prov[16]; 4293 ws_2str(ws,prov,wstrlen(ws)); \ 00000670 0900A0E1 MOV R0,R9 \ 00000674 230100EF SWI +291 \ 00000678 0020A0E1 MOV R2,R0 \ 0000067C 18108DE2 ADD R1,SP,#+24 \ 00000680 0900A0E1 MOV R0,R9 \ 00000684 A30000EF SWI +163 4294 char *send_txt=malloc(32); \ 00000688 2000A0E3 MOV R0,#+32 \ 0000068C 140000EF SWI +20 \ 00000690 00B0A0E1 MOV R11,R0 4295 sprintf(send_txt, "Оператор: %s", prov); \ 00000694 18208DE2 ADD R2,SP,#+24 \ 00000698 B71F86E2 ADD R1,R6,#+732 \ 0000069C 160000EF SWI +22 4296 FreeWS(ws); \ 000006A0 0900A0E1 MOV R0,R9 \ 000006A4 290100EF SWI +297 4297 4298 p=malloc(sizeof(PKT)+28+1); \ 000006A8 2500A0E3 MOV R0,#+37 \ 000006AC 140000EF SWI +20 \ 000006B0 0090A0E1 MOV R9,R0 4299 p->pkt.uin=t->uin; \ 000006B4 0C0094E5 LDR R0,[R4, #+12] \ 000006B8 000089E5 STR R0,[R9, #+0] 4300 p->pkt.type=T_SENDMSG; \ 000006BC 0200A0E3 MOV R0,#+2 \ 000006C0 B400C9E1 STRH R0,[R9, #+4] 4301 p->pkt.data_len=strlen(send_txt); \ 000006C4 0B00A0E1 MOV R0,R11 \ 000006C8 1B0000EF SWI +27 \ 000006CC B600C9E1 STRH R0,[R9, #+6] 4302 strcpy(p->data,send_txt); \ 000006D0 0B10A0E1 MOV R1,R11 \ 000006D4 080089E2 ADD R0,R9,#+8 \ 000006D8 1A0000EF SWI +26 4303 if(show_send_info) \ 000006DC 000098E5 LDR R0,[R8, #+0] \ 000006E0 000050E3 CMP R0,#+0 \ 000006E4 040295E5 LDR R0,[R5, #+516] \ 000006E8 010080E2 ADD R0,R0,#+1 \ 000006EC 040285E5 STR R0,[R5, #+516] \ 000006F0 0900000A BEQ ??CheckComand_23 4304 AddStringToLog(t,0x01,"Sending provider name...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000006F4 0110A0E3 MOV R1,#+1 \ 000006F8 02002DE9 PUSH {R1} \ 000006FC 8008A0E1 LSL R0,R0,#+17 \ 00000700 A008A0E1 LSR R0,R0,#+17 \ 00000704 01002DE9 PUSH {R0} \ 00000708 0730A0E1 MOV R3,R7 \ 0000070C BB2F86E2 ADD R2,R6,#+748 \ 00000710 0400A0E1 MOV R0,R4 \ 00000714 ........ BL AddStringToLog \ 00000718 08D08DE2 ADD SP,SP,#+8 4305 else 4306 SENDMSGCOUNT++; 4307 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_23: \ 0000071C 0920A0E1 MOV R2,R9 \ 00000720 0010A0E3 MOV R1,#+0 \ 00000724 0A00A0E1 MOV R0,R10 \ 00000728 710100EF SWI +369 4308 mfree(send_txt); \ 0000072C 0B00A0E1 MOV R0,R11 \ 00000730 440000EA B ??CheckComand_4 4309 return; 4310 } 4311 4312 4313 //----------------------------------------------------------------------- 4314 4315 4316 if(!strcmp(txt, "GET_MOD_INFO") || !strcmp(txt, "__MOD")) \ ??CheckComand_22: \ 00000734 CE1F86E2 ADD R1,R6,#+824 \ 00000738 0B00A0E1 MOV R0,R11 \ 0000073C 190000EF SWI +25 \ 00000740 000050E3 CMP R0,#+0 \ 00000744 0400000A BEQ ??CheckComand_24 \ 00000748 D21F86E2 ADD R1,R6,#+840 \ 0000074C 0B00A0E1 MOV R0,R11 \ 00000750 190000EF SWI +25 \ 00000754 000050E3 CMP R0,#+0 \ 00000758 3D00001A BNE ??CheckComand_25 4317 { 4318 comanda=0; \ ??CheckComand_24: \ 0000075C 409385E5 STR R9,[R5, #+832] 4319 TPKT *p; 4320 char *send_txt=malloc(256); \ 00000760 400FA0E3 MOV R0,#+256 \ 00000764 140000EF SWI +20 \ 00000768 0090A0E1 MOV R9,R0 4321 // sprintf(I_UIN, "uin%d", t->uin); 4322 strcpy(I_UIN, t->name); \ 0000076C 1C00A0E3 MOV R0,#+28 \ 00000770 700D80E3 ORR R0,R0,#0x1C00 \ 00000774 05B080E0 ADD R11,R0,R5 \ 00000778 141084E2 ADD R1,R4,#+20 \ 0000077C 0B00A0E1 MOV R0,R11 \ 00000780 1A0000EF SWI +26 4323 if(strstr(ignor_list,I_UIN)==0) \ 00000784 ........ LDR R0,??DataTable155 ;; ignor_list \ 00000788 0B10A0E1 MOV R1,R11 \ 0000078C 180100EF SWI +280 \ 00000790 000050E3 CMP R0,#+0 4324 { 4325 strcpy(send_txt, mod_info); \ 00000794 10109D05 LDREQ R1,[SP, #+16] 4326 } 4327 else 4328 strcpy(send_txt, "***Access denied***"); \ 00000798 0900A0E1 MOV R0,R9 \ 0000079C C91F8612 ADDNE R1,R6,#+804 \ 000007A0 1A0000EF SWI +26 4329 4330 strcpy(send_txt, mod_info); \ 000007A4 10109DE5 LDR R1,[SP, #+16] \ 000007A8 0900A0E1 MOV R0,R9 \ 000007AC 1A0000EF SWI +26 4331 4332 p=malloc(sizeof(PKT)+strlen(send_txt)+1); \ 000007B0 0900A0E1 MOV R0,R9 \ 000007B4 1B0000EF SWI +27 \ 000007B8 090080E2 ADD R0,R0,#+9 \ 000007BC 140000EF SWI +20 \ 000007C0 0060A0E1 MOV R6,R0 4333 p->pkt.uin=t->uin; \ 000007C4 0C0094E5 LDR R0,[R4, #+12] \ 000007C8 000086E5 STR R0,[R6, #+0] 4334 p->pkt.type=T_SENDMSG; \ 000007CC 0200A0E3 MOV R0,#+2 \ 000007D0 B400C6E1 STRH R0,[R6, #+4] 4335 p->pkt.data_len=strlen(send_txt); \ 000007D4 0900A0E1 MOV R0,R9 \ 000007D8 1B0000EF SWI +27 \ 000007DC B600C6E1 STRH R0,[R6, #+6] 4336 strcpy(p->data,send_txt); \ 000007E0 0910A0E1 MOV R1,R9 \ 000007E4 080086E2 ADD R0,R6,#+8 \ 000007E8 1A0000EF SWI +26 4337 #ifdef EVILFOX 4338 SENDMSGCOUNT++; 4339 #else 4340 if(show_send_info) \ 000007EC 000098E5 LDR R0,[R8, #+0] \ 000007F0 000050E3 CMP R0,#+0 \ 000007F4 040295E5 LDR R0,[R5, #+516] \ 000007F8 010080E2 ADD R0,R0,#+1 \ 000007FC 040285E5 STR R0,[R5, #+516] \ 00000800 0B00000A BEQ ??CheckComand_19 4341 AddStringToLog(t,0x01,requests4,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000804 0110A0E3 MOV R1,#+1 \ 00000808 02002DE9 PUSH {R1} \ 0000080C 8008A0E1 LSL R0,R0,#+17 \ 00000810 A008A0E1 LSR R0,R0,#+17 \ 00000814 01002DE9 PUSH {R0} \ 00000818 0730A0E1 MOV R3,R7 \ 0000081C 6C00A0E3 MOV R0,#+108 \ 00000820 740D80E3 ORR R0,R0,#0x1D00 \ 00000824 052080E0 ADD R2,R0,R5 \ 00000828 0400A0E1 MOV R0,R4 \ 0000082C ........ BL AddStringToLog \ 00000830 08D08DE2 ADD SP,SP,#+8 4342 else 4343 SENDMSGCOUNT++; 4344 #endif 4345 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_19: \ 00000834 0620A0E1 MOV R2,R6 \ ??CheckComand_26: \ 00000838 0010A0E3 MOV R1,#+0 \ 0000083C 0A00A0E1 MOV R0,R10 \ 00000840 710100EF SWI +369 4346 mfree(send_txt); \ 00000844 0900A0E1 MOV R0,R9 \ ??CheckComand_4: \ 00000848 150000EF SWI +21 \ ??CheckComand_13: \ 0000084C 8ADF8DE2 ADD SP,SP,#+552 \ 00000850 F08FBDE8 POP {R4-R11,PC} 4347 return; 4348 } 4349 4350 if(!strcmp(txt, "GET_BAT_INFO") || !strcmp(txt, "__BAT")) \ ??CheckComand_25: \ 00000854 DB1F86E2 ADD R1,R6,#+876 \ 00000858 0B00A0E1 MOV R0,R11 \ 0000085C 190000EF SWI +25 \ 00000860 000050E3 CMP R0,#+0 \ 00000864 0400000A BEQ ??CheckComand_27 \ 00000868 DF1F86E2 ADD R1,R6,#+892 \ 0000086C 0B00A0E1 MOV R0,R11 \ 00000870 190000EF SWI +25 \ 00000874 000050E3 CMP R0,#+0 \ 00000878 2800001A BNE ??CheckComand_28 4351 { 4352 comanda=0; \ ??CheckComand_27: \ 0000087C 409385E5 STR R9,[R5, #+832] 4353 TPKT *p; 4354 int bat; 4355 bat=*RamCap(); \ 00000880 C88000EF SWI +32968 \ 00000884 B0B0D0E1 LDRH R11,[R0, #+0] 4356 char *send_txt=malloc(64); \ 00000888 4000A0E3 MOV R0,#+64 \ 0000088C 140000EF SWI +20 \ 00000890 0090A0E1 MOV R9,R0 4357 sprintf(send_txt, "Заряд батареи: %d процентов", bat); \ 00000894 0B20A0E1 MOV R2,R11 \ 00000898 D41F86E2 ADD R1,R6,#+848 \ 0000089C 160000EF SWI +22 4358 p=malloc(sizeof(PKT)+28+1); \ 000008A0 2500A0E3 MOV R0,#+37 \ 000008A4 140000EF SWI +20 \ 000008A8 0060A0E1 MOV R6,R0 4359 p->pkt.uin=t->uin; \ 000008AC 0C0094E5 LDR R0,[R4, #+12] \ 000008B0 000086E5 STR R0,[R6, #+0] 4360 p->pkt.type=T_SENDMSG; \ 000008B4 0200A0E3 MOV R0,#+2 \ 000008B8 B400C6E1 STRH R0,[R6, #+4] 4361 p->pkt.data_len=strlen(send_txt); \ 000008BC 0900A0E1 MOV R0,R9 \ 000008C0 1B0000EF SWI +27 \ 000008C4 B600C6E1 STRH R0,[R6, #+6] 4362 strcpy(p->data,send_txt); \ 000008C8 0910A0E1 MOV R1,R9 \ 000008CC 080086E2 ADD R0,R6,#+8 \ 000008D0 1A0000EF SWI +26 4363 #ifdef EVILFOX 4364 SENDMSGCOUNT++; 4365 #else 4366 if(show_send_info) \ 000008D4 000098E5 LDR R0,[R8, #+0] \ 000008D8 000050E3 CMP R0,#+0 \ 000008DC 040295E5 LDR R0,[R5, #+516] \ 000008E0 010080E2 ADD R0,R0,#+1 \ 000008E4 040285E5 STR R0,[R5, #+516] \ 000008E8 D1FFFF0A BEQ ??CheckComand_19 4367 AddStringToLog(t,0x01,requests3,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000008EC 0110A0E3 MOV R1,#+1 \ 000008F0 02002DE9 PUSH {R1} \ 000008F4 8008A0E1 LSL R0,R0,#+17 \ 000008F8 A008A0E1 LSR R0,R0,#+17 \ 000008FC 01002DE9 PUSH {R0} \ 00000900 0730A0E1 MOV R3,R7 \ 00000904 5400A0E3 MOV R0,#+84 \ 00000908 740D80E3 ORR R0,R0,#0x1D00 \ 0000090C 052080E0 ADD R2,R0,R5 \ 00000910 0400A0E1 MOV R0,R4 \ 00000914 ........ BL AddStringToLog \ 00000918 08D08DE2 ADD SP,SP,#+8 4368 else 4369 SENDMSGCOUNT++; 4370 #endif 4371 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_29: \ 0000091C C4FFFFEA B ??CheckComand_19 4372 mfree(send_txt); 4373 return; 4374 } 4375 4376 if((away_m==1 || t->isautomsg) && (t->automsgcount < automsgcount)) \ ??CheckComand_28: \ 00000920 201295E5 LDR R1,[R5, #+544] \ 00000924 ........ LDR R2,??DataTable156 ;; automsgcount \ 00000928 640094E5 LDR R0,[R4, #+100] \ 0000092C 002092E5 LDR R2,[R2, #+0] \ 00000930 010051E3 CMP R1,#+1 \ 00000934 0100000A BEQ ??CheckComand_30 \ 00000938 000050E3 CMP R0,#+0 \ 0000093C 3700000A BEQ ??CheckComand_31 \ ??CheckComand_30: \ 00000940 783094E5 LDR R3,[R4, #+120] \ 00000944 020053E1 CMP R3,R2 \ 00000948 3200002A BCS ??CheckComand_32 4377 { 4378 t->automsgcount++; 4379 comanda=1; 4380 TPKT *p; 4381 // sprintf(hah,"online: %02d:%02d:%02d", uptimeHour, uptimeMin, uptimeSec); 4382 sprintf(away_msg, "Автоответчик: %s %s! %s %s", awayHelloMsg, t->name, awayMsg, away_msg_time); \ 0000094C CC219FE5 LDR R2,??CheckComand_0+0x8 ;; awayHelloMsg \ 00000950 010083E2 ADD R0,R3,#+1 \ 00000954 780084E5 STR R0,[R4, #+120] \ 00000958 0100A0E3 MOV R0,#+1 \ 0000095C 400385E5 STR R0,[R5, #+832] \ 00000960 9400A0E3 MOV R0,#+148 \ 00000964 580D80E3 ORR R0,R0,#0x1600 \ 00000968 059080E0 ADD R9,R0,R5 \ 0000096C 420F80E3 ORR R0,R0,#0x108 \ 00000970 050080E0 ADD R0,R0,R5 \ 00000974 01002DE9 PUSH {R0} \ 00000978 ........ LDR R0,??DataTable157 ;; awayMsg \ 0000097C 143084E2 ADD R3,R4,#+20 \ 00000980 01002DE9 PUSH {R0} \ 00000984 FF1F86E2 ADD R1,R6,#+1020 \ 00000988 0900A0E1 MOV R0,R9 \ 0000098C 160000EF SWI +22 4383 p=malloc(sizeof(PKT)+strlen(away_msg)+1); \ 00000990 0900A0E1 MOV R0,R9 \ 00000994 1B0000EF SWI +27 \ 00000998 090080E2 ADD R0,R0,#+9 \ 0000099C 140000EF SWI +20 \ 000009A0 0060A0E1 MOV R6,R0 4384 p->pkt.uin=t->uin; \ 000009A4 0C0094E5 LDR R0,[R4, #+12] \ 000009A8 000086E5 STR R0,[R6, #+0] 4385 p->pkt.type=T_SENDMSG; \ 000009AC 0200A0E3 MOV R0,#+2 \ 000009B0 B400C6E1 STRH R0,[R6, #+4] 4386 p->pkt.data_len=strlen(away_msg); \ 000009B4 0900A0E1 MOV R0,R9 \ 000009B8 1B0000EF SWI +27 \ 000009BC B600C6E1 STRH R0,[R6, #+6] 4387 strcpy(p->data,away_msg); \ 000009C0 0910A0E1 MOV R1,R9 \ 000009C4 080086E2 ADD R0,R6,#+8 \ 000009C8 1A0000EF SWI +26 4388 if(show_send_info) \ 000009CC 000098E5 LDR R0,[R8, #+0] \ 000009D0 08D08DE2 ADD SP,SP,#+8 \ 000009D4 000050E3 CMP R0,#+0 \ 000009D8 040295E5 LDR R0,[R5, #+516] \ 000009DC 010080E2 ADD R0,R0,#+1 \ 000009E0 040285E5 STR R0,[R5, #+516] \ 000009E4 0900000A BEQ ??CheckComand_33 4389 #ifdef kluchnik 4390 AddStringToLog(t,0x01,away_msg,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 4391 #else 4392 AddStringToLog(t,0x01,requests6,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000009E8 0110A0E3 MOV R1,#+1 \ 000009EC 02002DE9 PUSH {R1} \ 000009F0 8008A0E1 LSL R0,R0,#+17 \ 000009F4 A008A0E1 LSR R0,R0,#+17 \ 000009F8 01002DE9 PUSH {R0} \ 000009FC 0730A0E1 MOV R3,R7 \ 00000A00 762D85E2 ADD R2,R5,#+7552 \ 00000A04 0400A0E1 MOV R0,R4 \ 00000A08 ........ BL AddStringToLog \ 00000A0C 08D08DE2 ADD SP,SP,#+8 4393 #endif 4394 else 4395 SENDMSGCOUNT++; 4396 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_33: \ 00000A10 0620A0E1 MOV R2,R6 \ 00000A14 93FEFFEA B ??CheckComand_12 4397 return; 4398 } 4399 #ifdef kluchnik 4400 else 4401 if((away_m==1 || t->isautomsg) && (t->uin==438532198)){ t->automsgcount=0;/* t->awaysignal=1;*/ return; } 4402 /* else 4403 if((away_m==1 || t->isautomsg) && (t->automsgcount<=(automsgcount+3)) ) 4404 { 4405 t->awaysignal=0; 4406 t->automsgcount++; 4407 sprintf(away_msg,"Бля,ну русским ж языком написали,НЕТУ МЕНЯ!!!че по сто сообщений слать?тем более если тебе делать нех..."); 4408 if(show_send_info) 4409 AddStringToLog(t,0x01,away_msg,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 4410 else 4411 SENDMSGCOUNT++; 4412 SendData(t,away_msg,ENA_SIGNAL,0); 4413 return; 4414 }*/ 4415 #endif 4416 else 4417 if(away_m==1 || t->isautomsg) \ ??CheckComand_32: \ 00000A18 010051E3 CMP R1,#+1 \ 00000A1C 0100000A BEQ ??CheckComand_34 \ ??CheckComand_31: \ 00000A20 000050E3 CMP R0,#+0 \ 00000A24 0100000A BEQ ??CheckComand_35 4418 { 4419 t->automsgcount=automsgcount; \ ??CheckComand_34: \ 00000A28 782084E5 STR R2,[R4, #+120] 4420 return; \ 00000A2C 86FFFFEA B ??CheckComand_13 4421 } 4422 4423 4424 //---------------------------------------------------------------------------// 4425 4426 4427 if(!strcmp(txt, "GET_URL_INFO") || !strcmp(txt, "__URL"))// by kluchnik 26.03.08 \ ??CheckComand_35: \ 00000A30 F91F86E2 ADD R1,R6,#+996 \ 00000A34 0B00A0E1 MOV R0,R11 \ 00000A38 190000EF SWI +25 \ 00000A3C 000050E3 CMP R0,#+0 \ 00000A40 0400000A BEQ ??CheckComand_36 \ 00000A44 FD1F86E2 ADD R1,R6,#+1012 \ 00000A48 0B00A0E1 MOV R0,R11 \ 00000A4C 190000EF SWI +25 \ 00000A50 000050E3 CMP R0,#+0 \ 00000A54 2A00001A BNE ??CheckComand_37 4428 { 4429 comanda=0; \ ??CheckComand_36: \ 00000A58 409385E5 STR R9,[R5, #+832] 4430 TPKT *p; 4431 4432 char *send_txt=malloc(256); \ 00000A5C 400FA0E3 MOV R0,#+256 \ 00000A60 140000EF SWI +20 \ 00000A64 0090A0E1 MOV R9,R0 4433 sprintf(send_txt,"revision 2058, mod date: %s at %s ", 4434 "http://kluchnik.jino-net.ru/naticqmod/",__DATE__,__TIME__); \ 00000A68 580086E2 ADD R0,R6,#+88 \ 00000A6C 01002DE9 PUSH {R0} \ 00000A70 4C3086E2 ADD R3,R6,#+76 \ 00000A74 EA2F86E2 ADD R2,R6,#+936 \ 00000A78 E11F86E2 ADD R1,R6,#+900 \ 00000A7C 0900A0E1 MOV R0,R9 \ 00000A80 160000EF SWI +22 4435 4436 p=malloc(sizeof(PKT)+256); \ 00000A84 420FA0E3 MOV R0,#+264 \ 00000A88 140000EF SWI +20 \ 00000A8C 00B0A0E1 MOV R11,R0 4437 p->pkt.uin=t->uin; \ 00000A90 0C0094E5 LDR R0,[R4, #+12] \ 00000A94 00008BE5 STR R0,[R11, #+0] 4438 p->pkt.type=T_SENDMSG; \ 00000A98 0200A0E3 MOV R0,#+2 \ 00000A9C B400CBE1 STRH R0,[R11, #+4] 4439 p->pkt.data_len=strlen(send_txt); \ 00000AA0 0900A0E1 MOV R0,R9 \ 00000AA4 1B0000EF SWI +27 \ 00000AA8 B600CBE1 STRH R0,[R11, #+6] 4440 strcpy(p->data,send_txt); \ 00000AAC 0910A0E1 MOV R1,R9 \ 00000AB0 08008BE2 ADD R0,R11,#+8 \ 00000AB4 1A0000EF SWI +26 4441 if(show_send_info) \ 00000AB8 000098E5 LDR R0,[R8, #+0] \ 00000ABC 04D08DE2 ADD SP,SP,#+4 \ 00000AC0 000050E3 CMP R0,#+0 \ 00000AC4 040295E5 LDR R0,[R5, #+516] \ 00000AC8 010080E2 ADD R0,R0,#+1 \ 00000ACC 040285E5 STR R0,[R5, #+516] \ 00000AD0 0900000A BEQ ??CheckComand_38 4442 AddStringToLog(t,0x01,"Sending url info...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000AD4 0110A0E3 MOV R1,#+1 \ 00000AD8 02002DE9 PUSH {R1} \ 00000ADC 8008A0E1 LSL R0,R0,#+17 \ 00000AE0 A008A0E1 LSR R0,R0,#+17 \ 00000AE4 01002DE9 PUSH {R0} \ 00000AE8 0730A0E1 MOV R3,R7 \ 00000AEC F42F86E2 ADD R2,R6,#+976 \ 00000AF0 0400A0E1 MOV R0,R4 \ 00000AF4 ........ BL AddStringToLog \ 00000AF8 08D08DE2 ADD SP,SP,#+8 4443 else 4444 SENDMSGCOUNT++; 4445 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_38: \ 00000AFC 0B20A0E1 MOV R2,R11 \ 00000B00 4CFFFFEA B ??CheckComand_26 4446 mfree(send_txt); 4447 return; 4448 } 4449 4450 #ifdef kluchnik // не доступно для всех,потому что имхо,будет еще большая перегрузка серверов!!!а оно нам надо? 4451 if(t->isautobot) 4452 { 4453 TPKT *p; 4454 int i=LoadBotMessage(t->uin); 4455 if(i==0) return;//если нет никаких файлов то просто возвращаемся 4456 char *pp=bot_lines[t->bot_msg]; 4457 t->bot_msg++; 4458 if(t->bot_msg==i) 4459 t->bot_msg=0; 4460 p=malloc(sizeof(PKT)+strlen(pp)+1); 4461 p->pkt.uin=t->uin; 4462 p->pkt.type=T_SENDMSG; 4463 p->pkt.data_len=strlen(pp); 4464 strcpy(p->data,pp); 4465 AddStringToLog(t,0x01,pp,"Autobot",(++SENDMSGCOUNT)&0x7FFF,1); 4466 SUBPROC((void *)SendAnswer,0,p); 4467 return; 4468 } 4469 #endif 4470 4471 CheckComand2(txt,t); \ ??CheckComand_37: \ 00000B04 0410A0E1 MOV R1,R4 \ 00000B08 0B00A0E1 MOV R0,R11 \ 00000B0C ........ _BLF CheckComand2,??CheckComand2??rA 4472 } \ 00000B10 8ADF8DE2 ADD SP,SP,#+552 \ 00000B14 F08FBDE8 POP {R4-R11,PC} ;; return \ ??CheckComand_0: \ 00000B18 ........ DC32 `?` \ 00000B1C ........ DC32 show_send_info \ 00000B20 ........ DC32 awayHelloMsg 4473 4474 //------------- Попап месаже для подключившегося контакта -----------// 4475 \ In segment DATA_Z, align 4, align-sorted 4476 char INC_Nick[32]; \ INC_Nick: \ 00000000 DS8 32 4477 char show_nick[32]; 4478 int INC_show; 4479 4480 char onContact[64]; 4481 int INC_show2; 4482 GBSTMR incs2; 4483 extern void DrawScreenShot(); 4484 \ In segment CODE, align 4, keep-with-next 4485 void show_on_contact() 4486 { \ show_on_contact: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 4487 if(INC_show2>0) \ 00000004 ........ LDR R4,??DataTable165 ;; S_ICONS \ 00000008 08D04DE2 SUB SP,SP,#+8 \ 0000000C 480394E5 LDR R0,[R4, #+840] \ 00000010 010050E3 CMP R0,#+1 \ 00000014 490000BA BLT ??show_on_contact_0 4488 { 4489 WSHDR *ws=AllocWS(64); \ 00000018 4000A0E3 MOV R0,#+64 \ 0000001C 250100EF SWI +293 \ 00000020 0050A0E1 MOV R5,R0 4490 ascii2ws(ws,onContact); \ 00000024 7B1D84E2 ADD R1,R4,#+7872 \ 00000028 ........ _BLF ascii2ws,??ascii2ws??rA 4491 int csm_oncreate_addr = ((int*)(((CSM_RAM*)(CSM_root()->csm_q->csm.last))->constr))[1] - 1; \ 0000002C 068100EF SWI +33030 \ 00000030 080090E5 LDR R0,[R0, #+8] 4492 char java_oncreate_pattern[8] = {0xB0, 0xB5, 0x04, 0x1C, 0x00, 0x25, 0x05, 0x61}; \ 00000034 0C219FE5 LDR R2,??show_on_contact_1 ;; `?` \ 00000038 0C0090E5 LDR R0,[R0, #+12] \ 0000003C 480092E8 LDM R2,{R3,R6} \ 00000040 080090E5 LDR R0,[R0, #+8] \ 00000044 0D10A0E1 MOV R1,SP \ 00000048 040090E5 LDR R0,[R0, #+4] \ 0000004C 480081E8 STM R1,{R3,R6} \ 00000050 010040E2 SUB R0,R0,#+1 4493 if(!(memcmp((void*)csm_oncreate_addr, java_oncreate_pattern, 8))) \ 00000054 0820A0E3 MOV R2,#+8 \ 00000058 1C0100EF SWI +284 \ 0000005C 000050E3 CMP R0,#+0 \ 00000060 0300001A BNE ??show_on_contact_2 4494 { 4495 DrawScreenShot(); \ 00000064 ........ _BLF DrawScreenShot,??DrawScreenShot??rA 4496 INC_show2-=2; \ 00000068 480394E5 LDR R0,[R4, #+840] \ 0000006C 020040E2 SUB R0,R0,#+2 \ 00000070 010000EA B ??show_on_contact_3 4497 } 4498 else 4499 INC_show2--; \ ??show_on_contact_2: \ 00000074 480394E5 LDR R0,[R4, #+840] \ 00000078 010040E2 SUB R0,R0,#+1 4500 DrawRectangle(0,0,Get_WS_width(ws,PopupFont)+2,GetFontYSIZE(PopupFont)+2,0,PopupBGCl,PopupBGCl); \ ??show_on_contact_3: \ 0000007C ........ LDR R6,??DataTable162 ;; PopupFont \ 00000080 480384E5 STR R0,[R4, #+840] \ 00000084 000096E5 LDR R0,[R6, #+0] \ 00000088 C50100EF SWI +453 \ 0000008C 001096E5 LDR R1,[R6, #+0] \ 00000090 0070A0E1 MOV R7,R0 \ 00000094 0500A0E1 MOV R0,R5 \ 00000098 080200EF SWI +520 \ 0000009C ........ LDR R1,??DataTable163 ;; PopupBGCl \ 000000A0 023087E2 ADD R3,R7,#+2 \ 000000A4 0120A0E1 MOV R2,R1 \ 000000A8 04002DE9 PUSH {R2} \ 000000AC 02002DE9 PUSH {R1} \ 000000B0 0010A0E3 MOV R1,#+0 \ 000000B4 02002DE9 PUSH {R1} \ 000000B8 022080E2 ADD R2,R0,#+2 \ 000000BC 0000A0E3 MOV R0,#+0 \ 000000C0 B40100EF SWI +436 4501 DrawString(ws,1,1,1+Get_WS_width(ws,PopupFont)+2,1+GetFontYSIZE(PopupFont),PopupFont,0,PopupOnlineCl,GetPaletteAdrByColorIndex(23)); \ 000000C4 1700A0E3 MOV R0,#+23 \ 000000C8 2E0100EF SWI +302 \ 000000CC 0080A0E1 MOV R8,R0 \ 000000D0 000096E5 LDR R0,[R6, #+0] \ 000000D4 C50100EF SWI +453 \ 000000D8 001096E5 LDR R1,[R6, #+0] \ 000000DC 0070A0E1 MOV R7,R0 \ 000000E0 0500A0E1 MOV R0,R5 \ 000000E4 080200EF SWI +520 \ 000000E8 5C109FE5 LDR R1,??show_on_contact_1+0x4 ;; PopupOnlineCl \ 000000EC 00012DE9 PUSH {R8} \ 000000F0 02002DE9 PUSH {R1} \ 000000F4 033080E2 ADD R3,R0,#+3 \ 000000F8 0120A0E3 MOV R2,#+1 \ 000000FC 0500A0E1 MOV R0,R5 \ 00000100 0010A0E3 MOV R1,#+0 \ 00000104 02002DE9 PUSH {R1} \ 00000108 001096E5 LDR R1,[R6, #+0] \ 0000010C 02002DE9 PUSH {R1} \ 00000110 011087E2 ADD R1,R7,#+1 \ 00000114 02002DE9 PUSH {R1} \ 00000118 0210A0E1 MOV R1,R2 \ 0000011C 4C0100EF SWI +332 4502 FreeWS(ws); \ 00000120 0500A0E1 MOV R0,R5 \ 00000124 290100EF SWI +297 4503 GBS_StartTimerProc(&incs2, 15, show_on_contact); \ 00000128 20209FE5 LDR R2,??show_on_contact_1+0x8 ;; show_on_contact \ 0000012C 0F10A0E3 MOV R1,#+15 \ 00000130 7C0D84E2 ADD R0,R4,#+7936 \ 00000134 4D0000EF SWI +77 \ 00000138 20D08DE2 ADD SP,SP,#+32 \ 0000013C F381BDE8 POP {R0,R1,R4-R8,PC} 4504 } 4505 else 4506 RefreshGUI(); \ ??show_on_contact_0: \ 00000140 960100EF SWI +406 4507 } \ 00000144 F381BDE8 POP {R0,R1,R4-R8,PC} ;; return \ ??show_on_contact_1: \ 00000148 ........ DC32 `?` \ 0000014C ........ DC32 PopupOnlineCl \ 00000150 ........ DC32 show_on_contact 4508 4509 4510 //---------------------------- popup message ---------------------------// 4511 4512 \ In segment CODE, align 4, keep-with-next 4513 void show_pp_sender() 4514 { \ show_pp_sender: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 4515 if(INC_show>0) \ 00000004 ........ LDR R4,??DataTable165 ;; S_ICONS \ 00000008 08D04DE2 SUB SP,SP,#+8 \ 0000000C 440394E5 LDR R0,[R4, #+836] \ 00000010 010050E3 CMP R0,#+1 \ 00000014 F381BDB8 POPLT {R0,R1,R4-R8,PC} 4516 { 4517 WSHDR *ws=AllocWS(256); \ 00000018 400FA0E3 MOV R0,#+256 \ 0000001C 250100EF SWI +293 \ 00000020 0050A0E1 MOV R5,R0 4518 ascii2ws(ws,show_nick); \ 00000024 A000A0E3 MOV R0,#+160 \ 00000028 780D80E3 ORR R0,R0,#0x1E00 \ 0000002C 041080E0 ADD R1,R0,R4 \ 00000030 0500A0E1 MOV R0,R5 \ 00000034 ........ _BLF ascii2ws,??ascii2ws??rA 4519 int csm_oncreate_addr = ((int*)(((CSM_RAM*)(CSM_root()->csm_q->csm.last))->constr))[1] - 1; \ 00000038 068100EF SWI +33030 \ 0000003C 080090E5 LDR R0,[R0, #+8] 4520 char java_oncreate_pattern[8] = {0xB0, 0xB5, 0x04, 0x1C, 0x00, 0x25, 0x05, 0x61}; \ 00000040 0C219FE5 LDR R2,??show_pp_sender_0 ;; `?_1` \ 00000044 0C0090E5 LDR R0,[R0, #+12] \ 00000048 480092E8 LDM R2,{R3,R6} \ 0000004C 080090E5 LDR R0,[R0, #+8] \ 00000050 0D10A0E1 MOV R1,SP \ 00000054 040090E5 LDR R0,[R0, #+4] \ 00000058 480081E8 STM R1,{R3,R6} \ 0000005C 010040E2 SUB R0,R0,#+1 4521 if(!(memcmp((void*)csm_oncreate_addr, java_oncreate_pattern, 8))) \ 00000060 0820A0E3 MOV R2,#+8 \ 00000064 1C0100EF SWI +284 \ 00000068 000050E3 CMP R0,#+0 \ 0000006C 0300001A BNE ??show_pp_sender_1 4522 { 4523 DrawScreenShot(); \ 00000070 ........ _BLF DrawScreenShot,??DrawScreenShot??rA 4524 INC_show-=2; \ 00000074 440394E5 LDR R0,[R4, #+836] \ 00000078 020040E2 SUB R0,R0,#+2 \ 0000007C 010000EA B ??show_pp_sender_2 4525 } 4526 else 4527 INC_show--; \ ??show_pp_sender_1: \ 00000080 440394E5 LDR R0,[R4, #+836] \ 00000084 010040E2 SUB R0,R0,#+1 4528 #ifdef NEWSGOLD 4529 DrawRectangle(0,0,Get_WS_width(ws,PopupFont)+4+GetImgWidth(NumStatusToIconBar + IS_MSG),GetFontYSIZE(PopupFont)+4,0,PopupBGCl,PopupBGCl); 4530 DrawImg(2,2,NumStatusToIconBar + IS_MSG);//GetImgWidth((int)S_ICONS[icn] 4531 DrawString(ws,GetImgWidth(NumStatusToIconBar + IS_MSG)+4,1,GetImgWidth(NumStatusToIconBar + IS_MSG)+Get_WS_width(ws,PopupFont)+4,1+GetFontYSIZE(PopupFont),PopupFont,0,PopupMsgCl,GetPaletteAdrByColorIndex(23)); 4532 #else 4533 DrawRectangle(0,0,Get_WS_width(ws,PopupFont)+2,GetFontYSIZE(PopupFont)+2,0,PopupBGCl,PopupBGCl); \ ??show_pp_sender_2: \ 00000088 ........ LDR R6,??DataTable162 ;; PopupFont \ 0000008C 440384E5 STR R0,[R4, #+836] \ 00000090 000096E5 LDR R0,[R6, #+0] \ 00000094 C50100EF SWI +453 \ 00000098 001096E5 LDR R1,[R6, #+0] \ 0000009C 0070A0E1 MOV R7,R0 \ 000000A0 0500A0E1 MOV R0,R5 \ 000000A4 080200EF SWI +520 \ 000000A8 ........ LDR R1,??DataTable163 ;; PopupBGCl \ 000000AC 023087E2 ADD R3,R7,#+2 \ 000000B0 0120A0E1 MOV R2,R1 \ 000000B4 04002DE9 PUSH {R2} \ 000000B8 02002DE9 PUSH {R1} \ 000000BC 0010A0E3 MOV R1,#+0 \ 000000C0 02002DE9 PUSH {R1} \ 000000C4 022080E2 ADD R2,R0,#+2 \ 000000C8 0000A0E3 MOV R0,#+0 \ 000000CC B40100EF SWI +436 4534 DrawString(ws,1,1,1+Get_WS_width(ws,PopupFont)+2,1+GetFontYSIZE(PopupFont),PopupFont,0,PopupMsgCl,GetPaletteAdrByColorIndex(23)); \ 000000D0 1700A0E3 MOV R0,#+23 \ 000000D4 2E0100EF SWI +302 \ 000000D8 0080A0E1 MOV R8,R0 \ 000000DC 000096E5 LDR R0,[R6, #+0] \ 000000E0 C50100EF SWI +453 \ 000000E4 001096E5 LDR R1,[R6, #+0] \ 000000E8 0070A0E1 MOV R7,R0 \ 000000EC 0500A0E1 MOV R0,R5 \ 000000F0 080200EF SWI +520 \ 000000F4 5C109FE5 LDR R1,??show_pp_sender_0+0x4 ;; PopupMsgCl \ 000000F8 00012DE9 PUSH {R8} \ 000000FC 02002DE9 PUSH {R1} \ 00000100 033080E2 ADD R3,R0,#+3 \ 00000104 0120A0E3 MOV R2,#+1 \ 00000108 0500A0E1 MOV R0,R5 \ 0000010C 0010A0E3 MOV R1,#+0 \ 00000110 02002DE9 PUSH {R1} \ 00000114 001096E5 LDR R1,[R6, #+0] \ 00000118 02002DE9 PUSH {R1} \ 0000011C 011087E2 ADD R1,R7,#+1 \ 00000120 02002DE9 PUSH {R1} \ 00000124 0210A0E1 MOV R1,R2 \ 00000128 4C0100EF SWI +332 4535 #endif 4536 FreeWS(ws); \ 0000012C 0500A0E1 MOV R0,R5 \ 00000130 290100EF SWI +297 4537 GBS_StartTimerProc(&develop, 10, show_pp_sender); \ 00000134 20209FE5 LDR R2,??show_pp_sender_0+0x8 ;; show_pp_sender \ 00000138 0A10A0E3 MOV R1,#+10 \ 0000013C 1800A0E3 MOV R0,#+24 \ 00000140 740D80E3 ORR R0,R0,#0x1D00 \ 00000144 040080E0 ADD R0,R0,R4 \ 00000148 4D0000EF SWI +77 \ 0000014C 20D08DE2 ADD SP,SP,#+32 4538 } 4539 } \ 00000150 F381BDE8 POP {R0,R1,R4-R8,PC} ;; return \ ??show_pp_sender_0: \ 00000154 ........ DC32 `?_1` \ 00000158 ........ DC32 PopupMsgCl \ 0000015C ........ DC32 show_pp_sender 4540 4541 4542 //----------------------------------------------------------------------------------------// 4543 4544 \ In segment CODE, align 4, keep-with-next 4545 void Get_Online_total() 4546 { 4547 CLIST *t; 4548 kopa_online=0; \ Get_Online_total: \ 00000000 ........ LDR R0,??DataTable165 ;; S_ICONS \ 00000004 0010A0E3 MOV R1,#+0 \ 00000008 B01280E5 STR R1,[R0, #+688] 4549 kopa_kontaktu=0; \ 0000000C B41280E5 STR R1,[R0, #+692] 4550 t=(CLIST *)(&cltop); \ 00000010 A51F80E2 ADD R1,R0,#+660 \ 00000014 FF30A0E3 MOV R3,#+255 \ 00000018 FF3C83E3 ORR R3,R3,#0xFF00 \ 0000001C 0A0000EA B ??Get_Online_total_0 4551 while(t=(CLIST *)(t->next)) 4552 { 4553 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 4554 { 4555 kopa_online++; \ 0000002C B02290E5 LDR R2,[R0, #+688] \ 00000030 012082E2 ADD R2,R2,#+1 \ 00000034 B02280E5 STR R2,[R0, #+688] 4556 if (t->state!=65535) kopa_kontaktu++; \ 00000038 B425D1E1 LDRH R2,[R1, #+84] \ 0000003C 030052E1 CMP R2,R3 \ 00000040 B4229015 LDRNE R2,[R0, #+692] \ 00000044 01208212 ADDNE R2,R2,#+1 \ 00000048 B4228015 STRNE R2,[R0, #+692] 4557 } 4558 } \ ??Get_Online_total_0: \ 0000004C 001091E5 LDR R1,[R1, #+0] \ 00000050 000051E3 CMP R1,#+0 \ 00000054 F1FFFF1A BNE ??Get_Online_total_1 4559 } \ 00000058 1EFF2FE1 BX LR ;; return 4560 4561 4562 //-------------------------------------------------------------------------------------------// 4563 4564 \ In segment CODE, align 4, keep-with-next 4565 void SetIndividStatus()//set to all contact to default vibra, sound and other by kluchnik 04.04.08 4566 { 4567 CLIST *t; 4568 t=(CLIST *)(&cltop); \ SetIndividStatus: \ 00000000 ........ LDR R0,??DataTable165 ;; S_ICONS \ 00000004 A51F80E2 ADD R1,R0,#+660 \ 00000008 0B0000EA B ??SetIndividStatus_0 4569 while(t=(CLIST *)(t->next)) 4570 { 4571 if (!t->isgroup) \ ??SetIndividStatus_1: \ 0000000C 082091E5 LDR R2,[R1, #+8] \ 00000010 000052E3 CMP R2,#+0 \ 00000014 0800001A BNE ??SetIndividStatus_0 4572 { 4573 t->isvibra=1; \ 00000018 0120A0E3 MOV R2,#+1 \ 0000001C 5C2081E5 STR R2,[R1, #+92] 4574 t->issound=1; \ 00000020 602081E5 STR R2,[R1, #+96] 4575 t->isShowXst=Show_XTX; \ 00000024 2C3290E5 LDR R3,[R0, #+556] \ 00000028 6C3081E5 STR R3,[R1, #+108] 4576 #ifdef kluchnik 4577 t->isLoadHistory=1; 4578 #endif 4579 t->signals=1; \ 0000002C 702081E5 STR R2,[R1, #+112] 4580 t->isaccess=1; \ 00000030 742081E5 STR R2,[R1, #+116] 4581 4582 t->automsgcount=0; \ 00000034 0020A0E3 MOV R2,#+0 \ 00000038 782081E5 STR R2,[R1, #+120] 4583 } 4584 } \ ??SetIndividStatus_0: \ 0000003C 001091E5 LDR R1,[R1, #+0] \ 00000040 000051E3 CMP R1,#+0 \ 00000044 F0FFFF1A BNE ??SetIndividStatus_1 4585 } \ 00000048 1EFF2FE1 BX LR ;; return 4586 4587 //-------------------------------------------------------------------------------------------// 4588 4589 \ In segment CODE, align 4, keep-with-next 4590 ProcessPacket(TPKT *p) 4591 { \ ProcessPacket: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 4EDF4DE2 SUB SP,SP,#+312 4592 CLIST *t; 4593 LOGQ *q; 4594 char s[256]; 4595 switch(p->pkt.type) \ 00000008 28AB9FE5 LDR R10,??ProcessPacket_1+0x4 ;; ILL_RECV_FADE \ 0000000C ........ LDR R5,??DataTable184 ;; Canvas \ 00000010 ........ LDR R7,??DataTable186 ;; S_ICONS \ 00000014 0040A0E1 MOV R4,R0 \ 00000018 B410D4E1 LDRH R1,[R4, #+4] \ 0000001C 000094E5 LDR R0,[R4, #+0] \ 00000020 0160A0E3 MOV R6,#+1 \ 00000024 0090A0E3 MOV R9,#+0 \ 00000028 031041E2 SUB R1,R1,#+3 \ 0000002C 1C0051E3 CMP R1,#+28 \ 00000030 BB02008A BHI ??ProcessPacket_2 \ 00000034 022F8FE2 ADR R2,??ProcessPacket_0 \ 00000038 8110A0E1 MOV R1,R1, LSL #+1 \ 0000003C B12092E1 LDRH R2,[R2, R1] \ 00000040 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??ProcessPacket_0: \ 00000044 36010E00B702 DC16 +310,+14,+695,+695 \ B702 \ 0000004C 1100B7024D00 DC16 +17,+695,+77,+695 \ B702 \ 00000054 B702B702B702 DC16 +695,+695,+695,+695 \ B702 \ 0000005C B7021D021D02 DC16 +695,+541,+541,+695 \ B702 \ 00000064 B7023D004B00 DC16 +695,+61,+75,+695 \ B702 \ 0000006C B702B7024D02 DC16 +695,+695,+589,+695 \ B702 \ 00000074 B702B702B702 DC16 +695,+695,+695,+695 \ B702 \ 0000007C B5020000 DC16 +693,+0 4596 { 4597 case T_LOGIN: 4598 set_my_status(); \ ??ProcessPacket_3: \ 00000080 ........ BL set_my_status 4599 set_my_xstatus(); \ 00000084 ........ BL set_my_xstatus \ 00000088 A50200EA B ??ProcessPacket_2 4600 break; 4601 case T_CLENTRY: 4602 if (p->pkt.uin) \ ??ProcessPacket_4: \ 0000008C 000050E3 CMP R0,#+0 \ 00000090 1800000A BEQ ??ProcessPacket_5 4603 { 4604 if ((t=FindContactByUin(p->pkt.uin))) \ 00000094 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000098 0080B0E1 MOVS R8,R0 \ 0000009C 0E00000A BEQ ??ProcessPacket_6 4605 { 4606 // t->state=0xFFFF; 4607 if (!t->local) strncpy(t->name,p->data,63); \ 000000A0 B00098E5 LDR R0,[R8, #+176] \ 000000A4 000050E3 CMP R0,#+0 \ 000000A8 0300001A BNE ??ProcessPacket_7 \ 000000AC 3F20A0E3 MOV R2,#+63 \ 000000B0 081084E2 ADD R1,R4,#+8 \ 000000B4 140088E2 ADD R0,R8,#+20 \ 000000B8 160100EF SWI +278 4608 t->group=GROUP_CACHE; \ ??ProcessPacket_7: \ 000000BC 980297E5 LDR R0,[R7, #+664] \ 000000C0 100088E5 STR R0,[R8, #+16] 4609 ChangeContactPos(t); \ ??ProcessPacket_8: \ 000000C4 0800A0E1 MOV R0,R8 \ 000000C8 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 4610 RecountMenu(t,1); \ 000000CC 0110A0E3 MOV R1,#+1 \ 000000D0 0800A0E1 MOV R0,R8 \ ??ProcessPacket_9: \ 000000D4 ........ BL RecountMenu \ 000000D8 910200EA B ??ProcessPacket_2 4611 } 4612 else 4613 { 4614 RecountMenu(AddContact(p->pkt.uin,p->data, GROUP_CACHE, 0),1); \ ??ProcessPacket_6: \ 000000DC 982297E5 LDR R2,[R7, #+664] \ 000000E0 000094E5 LDR R0,[R4, #+0] \ 000000E4 0030A0E3 MOV R3,#+0 \ 000000E8 081084E2 ADD R1,R4,#+8 \ 000000EC ........ _BLF AddContact,??AddContact??rA \ 000000F0 0610A0E1 MOV R1,R6 \ 000000F4 F6FFFFEA B ??ProcessPacket_9 4615 } 4616 } 4617 else 4618 { 4619 if(VIBR_ON_CONNECT) \ ??ProcessPacket_5: \ 000000F8 ........ LDR R0,??DataTable168 ;; VIBR_ON_CONNECT \ 000000FC 000090E5 LDR R0,[R0, #+0] \ 00000100 000050E3 CMP R0,#+0 \ 00000104 0100000A BEQ ??ProcessPacket_10 4620 { 4621 vibra_count=1; \ 00000108 5C6287E5 STR R6,[R7, #+604] 4622 start_vibra(); \ 0000010C ........ BL start_vibra 4623 } 4624 GROUP_CACHE=0; \ ??ProcessPacket_10: \ 00000110 989287E5 STR R9,[R7, #+664] 4625 ask_my_info(); 4626 if (contactlist_menu_id) \ 00000114 9C0297E5 LDR R0,[R7, #+668] \ 00000118 000050E3 CMP R0,#+0 \ 0000011C 0200000A BEQ ??ProcessPacket_11 4627 { 4628 RecountMenu(NULL,1); \ 00000120 0110A0E3 MOV R1,#+1 \ 00000124 0900A0E1 MOV R0,R9 \ ??ProcessPacket_12: \ 00000128 E9FFFFEA B ??ProcessPacket_9 4629 } 4630 else 4631 { 4632 unhooked2=1; \ ??ProcessPacket_11: \ 0000012C 1C6387E5 STR R6,[R7, #+796] 4633 create_contactlist_menu(); \ 00000130 ........ BL create_contactlist_menu 4634 SetIndividStatus(); \ 00000134 ........ BL SetIndividStatus \ 00000138 790200EA B ??ProcessPacket_2 4635 } 4636 } 4637 break; 4638 case T_GROUPID: 4639 if (t=FindGroupByID(GROUP_CACHE=p->pkt.uin)) \ ??ProcessPacket_13: \ 0000013C 980287E5 STR R0,[R7, #+664] \ 00000140 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 00000144 0080B0E1 MOVS R8,R0 \ 00000148 0400000A BEQ ??ProcessPacket_14 4640 { 4641 strncpy(t->name,p->data,63); \ 0000014C 3F20A0E3 MOV R2,#+63 \ 00000150 081084E2 ADD R1,R4,#+8 \ 00000154 140088E2 ADD R0,R8,#+20 \ 00000158 160100EF SWI +278 4642 ChangeContactPos(t); \ 0000015C D8FFFFEA B ??ProcessPacket_8 4643 RecountMenu(t,1); 4644 } 4645 else 4646 { 4647 RecountMenu(AddGroup(p->pkt.uin,p->data),1); \ ??ProcessPacket_14: \ 00000160 000094E5 LDR R0,[R4, #+0] \ 00000164 081084E2 ADD R1,R4,#+8 \ 00000168 ........ _BLF AddGroup,??AddGroup??rA \ 0000016C 0110A0E3 MOV R1,#+1 \ 00000170 D7FFFFEA B ??ProcessPacket_9 4648 } 4649 break; 4650 case T_GROUPFOLLOW: 4651 GROUP_CACHE=p->pkt.uin; \ ??ProcessPacket_15: \ 00000174 980287E5 STR R0,[R7, #+664] \ 00000178 690200EA B ??ProcessPacket_2 4652 break; 4653 case T_STATUSCHANGE: 4654 t=FindContactByUin(p->pkt.uin); \ ??ProcessPacket_16: \ 0000017C ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000180 0080B0E1 MOVS R8,R0 4655 if (t) \ 00000184 6602000A BEQ ??ProcessPacket_2 4656 { 4657 int i=t->state; \ 00000188 B415D8E1 LDRH R1,[R8, #+84] 4658 CLIST *oldt=NULL; \ 0000018C 00B0A0E3 MOV R11,#+0 \ 00000190 04108DE5 STR R1,[SP, #+4] \ 00000194 0A00D4E5 LDRB R0,[R4, #+10] \ 00000198 B615D8E1 LDRH R1,[R8, #+86] \ 0000019C 000051E1 CMP R1,R0 \ 000001A0 1D00000A BEQ ??ProcessPacket_17 4659 if (t->xstate!=p->data[2]) // Если картинка икс статуса сменилась 4660 { 4661 t->xstate=p->data[2]; \ 000001A4 B605C8E1 STRH R0,[R8, #+86] 4662 FreeXText(t); \ 000001A8 0800A0E1 MOV R0,R8 \ 000001AC ........ _BLF FreeXText,??FreeXText??rA 4663 if (t->xstate && ENA_AUTO_XTXT) // Если установлен икс статус и можно запрашивать по смене икс статуса :) \ 000001B0 B605D8E1 LDRH R0,[R8, #+86] \ 000001B4 000050E3 CMP R0,#+0 \ 000001B8 1600000A BEQ ??ProcessPacket_18 \ 000001BC 78099FE5 LDR R0,??ProcessPacket_1+0x8 ;; ENA_AUTO_XTXT \ 000001C0 000090E5 LDR R0,[R0, #+0] \ 000001C4 000050E3 CMP R0,#+0 \ 000001C8 1200000A BEQ ??ProcessPacket_18 4664 { 4665 t->req_xtext=1; \ 000001CC AC6088E5 STR R6,[R8, #+172] 4666 if (edchat_id) // Если открыт чат \ 000001D0 A00297E5 LDR R0,[R7, #+672] \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 0F00000A BEQ ??ProcessPacket_17 4667 { 4668 void *data=FindGUIbyId(edchat_id,NULL); \ 000001DC A00297E5 LDR R0,[R7, #+672] \ 000001E0 0010A0E3 MOV R1,#+0 \ 000001E4 090200EF SWI +521 4669 if (data) \ 000001E8 000050E3 CMP R0,#+0 \ 000001EC 0A00000A BEQ ??ProcessPacket_17 4670 { 4671 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); \ 000001F0 DF0100EF SWI +479 4672 if (ed_struct) \ 000001F4 000050E3 CMP R0,#+0 \ 000001F8 0700000A BEQ ??ProcessPacket_17 4673 { 4674 if (ed_struct->ed_contact==t) // Если наш чат то запрашиваем текст статуса \ 000001FC 000090E5 LDR R0,[R0, #+0] \ 00000200 080050E1 CMP R0,R8 \ 00000204 0400001A BNE ??ProcessPacket_17 4675 { 4676 t->req_xtext=0; \ 00000208 AC9088E5 STR R9,[R8, #+172] 4677 RequestXText(t->uin); \ 0000020C 0C0098E5 LDR R0,[R8, #+12] \ 00000210 ........ BL RequestXText \ 00000214 000000EA B ??ProcessPacket_17 4678 } 4679 } 4680 } 4681 } 4682 } 4683 else // Если икс статус не установлен то на всякий случай снимаем флаг получения текста 4684 { 4685 t->req_xtext=0; \ ??ProcessPacket_18: \ 00000218 AC9088E5 STR R9,[R8, #+172] 4686 } 4687 } 4688 if (contactlist_menu_id) \ ??ProcessPacket_17: \ 0000021C 9C0297E5 LDR R0,[R7, #+668] \ 00000220 000050E3 CMP R0,#+0 \ 00000224 0500000A BEQ ??ProcessPacket_19 4689 { 4690 oldt=FindContactByN(GetCurMenuItem(FindGUIbyId(contactlist_menu_id,NULL))); \ 00000228 9C0297E5 LDR R0,[R7, #+668] \ 0000022C 0010A0E3 MOV R1,#+0 \ 00000230 090200EF SWI +521 \ 00000234 8F0100EF SWI +399 \ 00000238 ........ _BLF FindContactByN,??FindContactByN??rA \ 0000023C 00B0A0E1 MOV R11,R0 4691 } 4692 if(t->state==65535) t->change=1; \ ??ProcessPacket_19: \ 00000240 B405D8E1 LDRH R0,[R8, #+84] \ 00000244 FFA0A0E3 MOV R10,#+255 \ 00000248 FFAC8AE3 ORR R10,R10,#0xFF00 \ 0000024C 0A0050E1 CMP R0,R10 \ 00000250 7C608805 STREQ R6,[R8, #+124] 4693 t->state=*((unsigned short *)(p->data)); \ 00000254 B800D4E1 LDRH R0,[R4, #+8] \ 00000258 B405C8E1 STRH R0,[R8, #+84] 4694 if((t->state!=65535)&&(t->change==1)) \ 0000025C 0A0050E1 CMP R0,R10 \ 00000260 0400000A BEQ ??ProcessPacket_20 \ 00000264 7C0098E5 LDR R0,[R8, #+124] \ 00000268 010050E3 CMP R0,#+1 4695 { 4696 t->just_now=2; \ 0000026C 0200A003 MOVEQ R0,#+2 \ 00000270 68008805 STREQ R0,[R8, #+104] 4697 t->change=0; \ 00000274 7C908805 STREQ R9,[R8, #+124] 4698 } 4699 LogStatusChange(t); \ ??ProcessPacket_20: \ 00000278 0800A0E1 MOV R0,R8 \ 0000027C ........ _BLF LogStatusChange,??LogStatusChange??rA 4700 ChangeContactPos(t); \ 00000280 0800A0E1 MOV R0,R8 \ 00000284 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 4701 RecountMenu(oldt,1); \ 00000288 0110A0E3 MOV R1,#+1 \ 0000028C 0B00A0E1 MOV R0,R11 \ 00000290 ........ BL RecountMenu 4702 4703 if(isLogStatusChange)//isLogStatusChange // by kluchnik 05.04.08 \ 00000294 ........ LDR R0,??DataTable169 ;; isLogStatusChange \ 00000298 000090E5 LDR R0,[R0, #+0] \ 0000029C 000050E3 CMP R0,#+0 \ 000002A0 2B00000A BEQ ??ProcessPacket_21 4704 { 4705 char *s=GetStatusByIconIndex(GetIconIndex(t)); \ 000002A4 0800A0E1 MOV R0,R8 \ 000002A8 ........ BL GetIconIndex \ 000002AC ........ BL GetStatusByIconIndex \ 000002B0 00008DE5 STR R0,[SP, #+0] 4706 FreeXText2(t); \ 000002B4 0800A0E1 MOV R0,R8 \ 000002B8 ........ BL FreeXText2 4707 TTime time; 4708 GetDateTime(NULL,&time); \ 000002BC 08108DE2 ADD R1,SP,#+8 \ 000002C0 0000A0E3 MOV R0,#+0 \ 000002C4 B40000EF SWI +180 4709 char *txt=malloc(64); \ 000002C8 4000A0E3 MOV R0,#+64 \ 000002CC 140000EF SWI +20 \ 000002D0 00B0A0E1 MOV R11,R0 4710 sprintf(txt," %s: %02d:%02d:%02d",s,time.hour,time.min,time.sec); \ 000002D4 0A00DDE5 LDRB R0,[SP, #+10] \ 000002D8 A01F85E2 ADD R1,R5,#+640 \ 000002DC 01002DE9 PUSH {R0} \ 000002E0 0D00DDE5 LDRB R0,[SP, #+13] \ 000002E4 01002DE9 PUSH {R0} \ 000002E8 1030DDE5 LDRB R3,[SP, #+16] \ 000002EC 08209DE5 LDR R2,[SP, #+8] \ 000002F0 0B00A0E1 MOV R0,R11 \ 000002F4 160000EF SWI +22 4711 t->xtext2=malloc(64); \ 000002F8 4000A0E3 MOV R0,#+64 \ 000002FC 140000EF SWI +20 \ 00000300 A80088E5 STR R0,[R8, #+168] 4712 snprintf(t->xtext2,64,txt); \ 00000304 0B20A0E1 MOV R2,R11 \ 00000308 4010A0E3 MOV R1,#+64 \ 0000030C 1B0100EF SWI +283 4713 AddStringToLog(t,0x03,txt,"Status change",0xFFFFFFFF, 0); \ 00000310 0900A0E1 MOV R0,R9 \ 00000314 01002DE9 PUSH {R0} \ 00000318 A53F85E2 ADD R3,R5,#+660 \ 0000031C 0B20A0E1 MOV R2,R11 \ 00000320 0310A0E3 MOV R1,#+3 \ 00000324 0000E0E1 MVN R0,R0 \ 00000328 01002DE9 PUSH {R0} \ 0000032C 0800A0E1 MOV R0,R8 \ 00000330 ........ BL AddStringToLog 4714 ReqAddMsgToChat(t); \ 00000334 0800A0E1 MOV R0,R8 \ 00000338 ........ BL ReqAddMsgToChat 4715 RecountMenu(NULL, 0); \ 0000033C 0910A0E1 MOV R1,R9 \ 00000340 0100A0E1 MOV R0,R1 \ 00000344 ........ BL RecountMenu 4716 mfree(txt); \ 00000348 0B00A0E1 MOV R0,R11 \ 0000034C 150000EF SWI +21 \ 00000350 10D08DE2 ADD SP,SP,#+16 4717 } 4718 4719 if ((t->state!=0xFFFF)&&(i==0xFFFF))//Звук \ ??ProcessPacket_21: \ 00000354 B405D8E1 LDRH R0,[R8, #+84] \ 00000358 4C10A0E3 MOV R1,#+76 \ 0000035C 681D81E3 ORR R1,R1,#0x1A00 \ 00000360 07B081E0 ADD R11,R1,R7 \ 00000364 0A0050E1 CMP R0,R10 \ 00000368 4500000A BEQ ??ProcessPacket_22 \ 0000036C 04109DE5 LDR R1,[SP, #+4] \ 00000370 0A0051E1 CMP R1,R10 \ 00000374 4200001A BNE ??ProcessPacket_22 4720 { 4721 if(Is_INC_On && (PopupShow==2 || PopupShow==3)) \ 00000378 EC0197E5 LDR R0,[R7, #+492] \ 0000037C 000050E3 CMP R0,#+0 \ 00000380 1600000A BEQ ??ProcessPacket_23 \ 00000384 B4079FE5 LDR R0,??ProcessPacket_1+0xC ;; PopupShow \ 00000388 000090E5 LDR R0,[R0, #+0] \ 0000038C 020050E3 CMP R0,#+2 \ 00000390 03005013 CMPNE R0,#+3 \ 00000394 1100001A BNE ??ProcessPacket_23 4722 { 4723 INC_show2=20; 4724 sprintf(onContact,PopupOnlineString,t->name); \ 00000398 A4179FE5 LDR R1,??ProcessPacket_1+0x10 ;; PopupOnlineString \ 0000039C 1400A0E3 MOV R0,#+20 \ 000003A0 480387E5 STR R0,[R7, #+840] \ 000003A4 142088E2 ADD R2,R8,#+20 \ 000003A8 7B0D87E2 ADD R0,R7,#+7872 \ 000003AC 160000EF SWI +22 4725 sprintf(on_off_buf,"[%s: %s]\n",t->xtext2+1,t->name); \ 000003B0 A80098E5 LDR R0,[R8, #+168] \ 000003B4 143088E2 ADD R3,R8,#+20 \ 000003B8 012080E2 ADD R2,R0,#+1 \ 000003BC A91F85E2 ADD R1,R5,#+676 \ 000003C0 0B00A0E1 MOV R0,R11 \ 000003C4 160000EF SWI +22 4726 on_off_timer=ON_OFF_TIME; \ 000003C8 78079FE5 LDR R0,??ProcessPacket_1+0x14 ;; ON_OFF_TIME \ 000003CC 000090E5 LDR R0,[R0, #+0] \ 000003D0 AC0287E5 STR R0,[R7, #+684] 4727 UpdateCLheader(); \ 000003D4 ........ BL UpdateCLheader 4728 show_on_contact(); \ 000003D8 ........ BL show_on_contact \ 000003DC 010000EA B ??ProcessPacket_24 4729 } 4730 else 4731 GBS_DelTimer(&incs2);//на всяк \ ??ProcessPacket_23: \ 000003E0 7C0D87E2 ADD R0,R7,#+7936 \ 000003E4 8C0100EF SWI +396 4732 if(!extended_sounds) \ ??ProcessPacket_24: \ 000003E8 ........ LDR R0,??DataTable170 ;; extended_sounds \ 000003EC 58A79FE5 LDR R10,??ProcessPacket_1+0x18 ;; sndGlobal \ 000003F0 000090E5 LDR R0,[R0, #+0] \ 000003F4 000050E3 CMP R0,#+0 \ 000003F8 0200001A BNE ??ProcessPacket_25 4733 { 4734 Play(sndGlobal); \ 000003FC 0A00A0E1 MOV R0,R10 \ 00000400 ........ BL Play \ 00000404 360000EA B ??ProcessPacket_26 4735 } 4736 else 4737 { 4738 FSTATS stat; 4739 int fsize; 4740 unsigned int ul = 0; 4741 uins=t->uin; 4742 sprintf(talk_sound, "%s%d.wav", sndGlobal2, uins); \ ??ProcessPacket_25: \ 00000408 40279FE5 LDR R2,??ProcessPacket_1+0x1C ;; sndGlobal2 \ 0000040C 00908DE5 STR R9,[SP, #+0] \ 00000410 0C0098E5 LDR R0,[R8, #+12] \ 00000414 941F85E2 ADD R1,R5,#+592 \ 00000418 DC0187E5 STR R0,[R7, #+476] \ 0000041C 0030A0E1 MOV R3,R0 \ 00000420 C400A0E3 MOV R0,#+196 \ 00000424 400E80E3 ORR R0,R0,#0x400 \ 00000428 070080E0 ADD R0,R0,R7 \ 0000042C 160000EF SWI +22 4743 GetFileStats(talk_sound,&stat,&ul); \ 00000430 0D20A0E1 MOV R2,SP \ 00000434 441F8DE2 ADD R1,SP,#+272 \ 00000438 C400A0E3 MOV R0,#+196 \ 0000043C 400E80E3 ORR R0,R0,#0x400 \ 00000440 070080E0 ADD R0,R0,R7 \ 00000444 840000EF SWI +132 4744 fsize=stat.size; 4745 if(fsize>0) \ 00000448 14019DE5 LDR R0,[SP, #+276] \ 0000044C 010050E3 CMP R0,#+1 \ 00000450 030000BA BLT ??ProcessPacket_27 4746 Play(talk_sound); \ 00000454 C400A0E3 MOV R0,#+196 \ 00000458 400E80E3 ORR R0,R0,#0x400 \ 0000045C 070080E0 ADD R0,R0,R7 \ 00000460 000000EA B ??ProcessPacket_28 4747 else 4748 Play(sndGlobal); \ ??ProcessPacket_27: \ 00000464 0A00A0E1 MOV R0,R10 \ ??ProcessPacket_28: \ 00000468 ........ BL Play 4749 t->isvibra=1; \ 0000046C 5C6088E5 STR R6,[R8, #+92] 4750 t->issound=1; \ 00000470 606088E5 STR R6,[R8, #+96] 4751 t->isShowXst=Show_XTX; \ 00000474 2C0297E5 LDR R0,[R7, #+556] \ 00000478 6C0088E5 STR R0,[R8, #+108] 4752 #ifdef kluchnik 4753 t->isLoadHistory=1; 4754 #endif 4755 t->signals=1; \ 0000047C 706088E5 STR R6,[R8, #+112] \ 00000480 170000EA B ??ProcessPacket_26 4756 } 4757 } 4758 4759 if ((i!=0xFFFF)&&(t->state==0xFFFF))//Звук \ ??ProcessPacket_22: \ 00000484 04109DE5 LDR R1,[SP, #+4] \ 00000488 0A0051E1 CMP R1,R10 \ 0000048C 1400000A BEQ ??ProcessPacket_26 \ 00000490 0A0050E1 CMP R0,R10 \ 00000494 1200001A BNE ??ProcessPacket_26 4760 { 4761 Play(sndSrvMsg); \ 00000498 B4069FE5 LDR R0,??ProcessPacket_1+0x20 ;; sndSrvMsg \ 0000049C ........ BL Play 4762 if(TIME_OR_MSG==2 || TIME_OR_MSG==3 | TIME_OR_MSG==4) \ 000004A0 ........ LDR R0,??DataTable171 ;; TIME_OR_MSG \ 000004A4 000090E5 LDR R0,[R0, #+0] \ 000004A8 020050E3 CMP R0,#+2 \ 000004AC 03005013 CMPNE R0,#+3 \ 000004B0 04005013 CMPNE R0,#+4 \ 000004B4 0000001A BNE ??ProcessPacket_29 4763 Get_Online_total(); \ 000004B8 ........ BL Get_Online_total 4764 sprintf(on_off_buf,"[%s: %s]\n",t->xtext2+1,t->name); \ ??ProcessPacket_29: \ 000004BC A80098E5 LDR R0,[R8, #+168] \ 000004C0 143088E2 ADD R3,R8,#+20 \ 000004C4 012080E2 ADD R2,R0,#+1 \ 000004C8 A91F85E2 ADD R1,R5,#+676 \ 000004CC 0B00A0E1 MOV R0,R11 \ 000004D0 160000EF SWI +22 4765 on_off_timer=ON_OFF_TIME; \ 000004D4 6C069FE5 LDR R0,??ProcessPacket_1+0x14 ;; ON_OFF_TIME \ 000004D8 000090E5 LDR R0,[R0, #+0] \ 000004DC AC0287E5 STR R0,[R7, #+684] 4766 UpdateCLheader(); \ 000004E0 ........ BL UpdateCLheader 4767 } 4768 4769 if (edchat_id) \ ??ProcessPacket_26: \ 000004E4 A00297E5 LDR R0,[R7, #+672] \ 000004E8 000050E3 CMP R0,#+0 \ 000004EC 8C01000A BEQ ??ProcessPacket_2 4770 { 4771 void *data=FindGUIbyId(edchat_id,NULL); \ 000004F0 A00297E5 LDR R0,[R7, #+672] \ 000004F4 0010A0E3 MOV R1,#+0 \ 000004F8 090200EF SWI +521 4772 { 4773 EDCHAT_STRUCT *ed_struct; 4774 ed_struct=EDIT_GetUserPointer(data); \ 000004FC DF0100EF SWI +479 4775 if (ed_struct) \ 00000500 000050E3 CMP R0,#+0 \ 00000504 8601000A BEQ ??ProcessPacket_2 4776 { 4777 if (ed_struct->ed_contact==t) \ 00000508 000090E5 LDR R0,[R0, #+0] \ 0000050C 080050E1 CMP R0,R8 \ 00000510 8301001A BNE ??ProcessPacket_2 4778 { 4779 DirectRedrawGUI_ID(edchat_id); \ 00000514 A00297E5 LDR R0,[R7, #+672] \ 00000518 400100EF SWI +320 \ 0000051C 800100EA B ??ProcessPacket_2 4780 } 4781 } 4782 } 4783 } 4784 } 4785 break; 4786 case T_RECVMSG: 4787 NEW_MSG=1; \ ??ProcessPacket_30: \ 00000520 386387E5 STR R6,[R7, #+824] 4788 t=FindContactByUin(p->pkt.uin); \ 00000524 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000528 0080B0E1 MOVS R8,R0 4789 if (!t) \ 0000052C 0900001A BNE ??ProcessPacket_31 4790 { 4791 sprintf(s,percent_d,p->pkt.uin); \ 00000530 002094E5 LDR R2,[R4, #+0] \ 00000534 1E1085E2 ADD R1,R5,#+30 \ 00000538 10008DE2 ADD R0,SP,#+16 \ 0000053C 160000EF SWI +22 4792 t=AddContact(p->pkt.uin,s,GROUP_CACHE,0); \ 00000540 982297E5 LDR R2,[R7, #+664] \ 00000544 000094E5 LDR R0,[R4, #+0] \ 00000548 0030A0E3 MOV R3,#+0 \ 0000054C 10108DE2 ADD R1,SP,#+16 \ 00000550 ........ _BLF AddContact,??AddContact??rA \ 00000554 0080A0E1 MOV R8,R0 4793 } 4794 #ifdef kluchnik 4795 if(!t->isactive && HISTORY_BUFFER && (t->isLoadHistory && t->isIndividSet)) GetHistory(t, 64<isactive && HISTORY_BUFFER) GetHistory(t, 64<isactive && HISTORY_BUFFER) GetHistory(t, 64<name[0]=='#') \ ??ProcessPacket_32: \ 00000584 1810A0E3 MOV R1,#+24 \ 00000588 741D81E3 ORR R1,R1,#0x1D00 \ 0000058C 071081E0 ADD R1,R1,R7 \ 00000590 00108DE5 STR R1,[SP, #+0] \ 00000594 1400D8E5 LDRB R0,[R8, #+20] \ 00000598 230050E3 CMP R0,#+35 \ 0000059C 1700001A BNE ??ProcessPacket_33 4802 { 4803 //Если это конференция, патчим имя 4804 char *s=strchr(p->data,'>'); \ 000005A0 3E10A0E3 MOV R1,#+62 \ 000005A4 080084E2 ADD R0,R4,#+8 \ 000005A8 180000EF SWI +24 4805 //Если нашли символ > и после него пробел и ник короче 16 символов 4806 if (s) \ 000005AC 000050E3 CMP R0,#+0 \ 000005B0 1200000A BEQ ??ProcessPacket_33 4807 { 4808 if ((s[1]==' ')&&((s-p->data)<16)) \ 000005B4 0110D0E5 LDRB R1,[R0, #+1] \ 000005B8 200051E3 CMP R1,#+32 \ 000005BC 0F00001A BNE ??ProcessPacket_33 \ 000005C0 081084E2 ADD R1,R4,#+8 \ 000005C4 011040E0 SUB R1,R0,R1 \ 000005C8 100051E3 CMP R1,#+16 \ 000005CC 0B0000AA BGE ??ProcessPacket_33 4809 { 4810 *s=0; //Режем строку \ 000005D0 0090C0E5 STRB R9,[R0, #+0] 4811 AddStringToLog(t,0x02,s+2,p->data,0xFFFFFFFF,1); //Добавляем имя из текста сообщения \ 000005D4 0110A0E3 MOV R1,#+1 \ 000005D8 02002DE9 PUSH {R1} \ 000005DC 083084E2 ADD R3,R4,#+8 \ 000005E0 022080E2 ADD R2,R0,#+2 \ 000005E4 0800A0E1 MOV R0,R8 \ 000005E8 001061E2 RSB R1,R1,#+0 \ 000005EC 02002DE9 PUSH {R1} \ 000005F0 0210A0E3 MOV R1,#+2 \ 000005F4 ........ BL AddStringToLog 4812 goto L1; \ 000005F8 08D08DE2 ADD SP,SP,#+8 \ 000005FC 790000EA B ??ProcessPacket_34 4813 } 4814 } 4815 } 4816 4817 //=================== tas bus jautri ===================// 4818 4819 comanda=1; \ ??ProcessPacket_33: \ 00000600 406387E5 STR R6,[R7, #+832] 4820 CheckComand(p->data, t); \ 00000604 0810A0E1 MOV R1,R8 \ 00000608 48559FE5 LDR R5,??ProcessPacket_1+0x24 ;; ILL_KEYS_RECV \ 0000060C 48B59FE5 LDR R11,??ProcessPacket_1+0x28 ;; ILL_RECV_TMR \ 00000610 080084E2 ADD R0,R4,#+8 \ 00000614 ........ BL CheckComand \ 00000618 703098E5 LDR R3,[R8, #+112] \ 0000061C ........ LDR R0,??DataTable173 ;; automsgcount \ 00000620 ........ LDR R1,??DataTable174 ;; VIBR_TYPE \ 00000624 000053E3 CMP R3,#+0 \ 00000628 74309815 LDRNE R3,[R8, #+116] \ 0000062C 5A2FA0E3 MOV R2,#+360 \ 00000630 00005313 CMPNE R3,#+0 \ 00000634 1000000A BEQ ??ProcessPacket_35 4821 if(t->signals && t->isaccess) 4822 { 4823 #ifdef NEWSGOLD 4824 scrsTime=0; 4825 #endif 4826 if(SHOW_ACTIVE) \ 00000638 ........ LDR R3,??DataTable176 ;; SHOW_ACTIVE \ 0000063C 003093E5 LDR R3,[R3, #+0] \ 00000640 000053E3 CMP R3,#+0 4827 t->isactive=ACTIVE_TIME; \ 00000644 9C208815 STRNE R2,[R8, #+156] 4828 if(t->isvibra) \ 00000648 5C2098E5 LDR R2,[R8, #+92] \ 0000064C 000052E3 CMP R2,#+0 \ 00000650 2500000A BEQ ??ProcessPacket_36 4829 { 4830 if(VIBR_TYPE) \ 00000654 001091E5 LDR R1,[R1, #+0] \ 00000658 000051E3 CMP R1,#+0 4831 vibra_count=2; \ 0000065C 0210A013 MOVNE R1,#+2 \ 00000660 5C128715 STRNE R1,[R7, #+604] 4832 else 4833 vibra_count=1; \ 00000664 5C628705 STREQ R6,[R7, #+604] 4834 if(t->automsgcountisIndividSet) \ ??ProcessPacket_35: \ 0000067C ........ LDR R3,??DataTable176 ;; SHOW_ACTIVE \ 00000680 58C098E5 LDR R12,[R8, #+88] \ 00000684 003093E5 LDR R3,[R3, #+0] \ 00000688 00005CE3 CMP R12,#+0 \ 0000068C 0A00000A BEQ ??ProcessPacket_38 4851 { 4852 #ifdef NEWSGOLD 4853 scrsTime=0; 4854 #endif 4855 if(SHOW_ACTIVE) \ 00000690 000053E3 CMP R3,#+0 4856 t->isactive=ACTIVE_TIME; \ 00000694 9C208815 STRNE R2,[R8, #+156] 4857 if(t->isvibra) \ 00000698 5C0098E5 LDR R0,[R8, #+92] \ 0000069C 000050E3 CMP R0,#+0 \ 000006A0 1100000A BEQ ??ProcessPacket_36 4858 { 4859 if(VIBR_TYPE) \ 000006A4 000091E5 LDR R0,[R1, #+0] \ 000006A8 000050E3 CMP R0,#+0 4860 vibra_count=2; \ 000006AC 0200A013 MOVNE R0,#+2 \ 000006B0 5C028715 STRNE R0,[R7, #+604] 4861 else 4862 vibra_count=1; \ 000006B4 5C628705 STREQ R6,[R7, #+604] 4863 if(t->automsgcount < automsgcount && away_m) 4864 start_vibra(); \ 000006B8 0A0000EA B ??ProcessPacket_37 4865 else 4866 start_vibra(); 4867 } 4868 #ifdef ELKA 4869 if(SLI_TYPE) 4870 SLI_Timer(); 4871 #endif 4872 if(Is_Double_Vibra_On) 4873 { 4874 Reminder_timer(); 4875 } 4876 4877 if (Is_ILU_On) 4878 IlluminationOn(ILL_DISP_RECV,ILL_KEYS_RECV,ILL_RECV_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 4879 } 4880 else 4881 { 4882 #ifdef NEWSGOLD 4883 scrsTime=0; 4884 #endif 4885 if(SHOW_ACTIVE) \ ??ProcessPacket_38: \ 000006BC 000053E3 CMP R3,#+0 4886 t->isactive=ACTIVE_TIME; \ 000006C0 9C208815 STRNE R2,[R8, #+156] 4887 if(VIBR_TYPE) \ 000006C4 001091E5 LDR R1,[R1, #+0] \ 000006C8 000051E3 CMP R1,#+0 4888 vibra_count=2; \ 000006CC 0210A013 MOVNE R1,#+2 \ 000006D0 5C128715 STRNE R1,[R7, #+604] 4889 else 4890 vibra_count=1; \ 000006D4 5C628705 STREQ R6,[R7, #+604] 4891 if(t->automsgcount >= automsgcount) vibra_count=0; \ 000006D8 781098E5 LDR R1,[R8, #+120] \ 000006DC 000090E5 LDR R0,[R0, #+0] \ 000006E0 000051E1 CMP R1,R0 \ 000006E4 5C928725 STRCS R9,[R7, #+604] 4892 start_vibra(); \ ??ProcessPacket_37: \ 000006E8 ........ BL start_vibra 4893 #ifdef ELKA 4894 if(SLI_TYPE) 4895 SLI_Timer(); 4896 #endif 4897 if(Is_Double_Vibra_On) \ ??ProcessPacket_36: \ 000006EC F40197E5 LDR R0,[R7, #+500] \ 000006F0 000050E3 CMP R0,#+0 \ 000006F4 0000000A BEQ ??ProcessPacket_39 4898 { 4899 Reminder_timer(); \ 000006F8 ........ BL Reminder_timer 4900 } 4901 4902 if (Is_ILU_On) \ ??ProcessPacket_39: \ 000006FC F00197E5 LDR R0,[R7, #+496] \ 00000700 000050E3 CMP R0,#+0 \ 00000704 0500000A BEQ ??ProcessPacket_40 4903 IlluminationOn(ILL_DISP_RECV,ILL_KEYS_RECV,ILL_RECV_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 \ 00000708 50049FE5 LDR R0,??ProcessPacket_1+0x2C ;; ILL_DISP_RECV \ 0000070C 00309AE5 LDR R3,[R10, #+0] \ 00000710 00209BE5 LDR R2,[R11, #+0] \ 00000714 001095E5 LDR R1,[R5, #+0] \ 00000718 000090E5 LDR R0,[R0, #+0] \ 0000071C ........ BL IlluminationOn 4904 } 4905 4906 if(comanda==1) \ ??ProcessPacket_40: \ 00000720 400397E5 LDR R0,[R7, #+832] \ 00000724 010050E3 CMP R0,#+1 \ 00000728 2E00001A BNE ??ProcessPacket_34 4907 { 4908 AddStringToLog(t,0x02,p->data,t->name,0xFFFFFFFF,1); \ 0000072C 01002DE9 PUSH {R0} \ 00000730 143088E2 ADD R3,R8,#+20 \ 00000734 082084E2 ADD R2,R4,#+8 \ 00000738 0210A0E3 MOV R1,#+2 \ 0000073C 000066E2 RSB R0,R6,#+0 \ 00000740 01002DE9 PUSH {R0} \ 00000744 0800A0E1 MOV R0,R8 \ 00000748 ........ BL AddStringToLog 4909 main_count++; \ 0000074C ........ LDR R0,??DataTable177 ;; main_count \ 00000750 001090E5 LDR R1,[R0, #+0] \ 00000754 011081E2 ADD R1,R1,#+1 \ 00000758 001080E5 STR R1,[R0, #+0] 4910 if(Is_INC_On && (PopupShow==1 || PopupShow==3)) \ 0000075C EC0197E5 LDR R0,[R7, #+492] \ 00000760 08D08DE2 ADD SP,SP,#+8 \ 00000764 000050E3 CMP R0,#+0 \ 00000768 1300000A BEQ ??ProcessPacket_41 \ 0000076C CC039FE5 LDR R0,??ProcessPacket_1+0xC ;; PopupShow \ 00000770 000090E5 LDR R0,[R0, #+0] \ 00000774 010050E3 CMP R0,#+1 \ 00000778 03005013 CMPNE R0,#+3 \ 0000077C 0E00001A BNE ??ProcessPacket_41 4911 { 4912 sprintf(show_nick,PopupMsgString,t->name); \ 00000780 DC139FE5 LDR R1,??ProcessPacket_1+0x30 ;; PopupMsgString \ 00000784 142088E2 ADD R2,R8,#+20 \ 00000788 A000A0E3 MOV R0,#+160 \ 0000078C 780D80E3 ORR R0,R0,#0x1E00 \ 00000790 070080E0 ADD R0,R0,R7 \ 00000794 160000EF SWI +22 4913 if(!IsIdleUiOnTop()&&(!saver_on)) \ 00000798 ........ BL IsIdleUiOnTop \ 0000079C 000050E3 CMP R0,#+0 \ 000007A0 E0019705 LDREQ R0,[R7, #+480] \ 000007A4 00005003 CMPEQ R0,#+0 \ 000007A8 0500001A BNE ??ProcessPacket_42 4914 { 4915 INC_show=20; \ 000007AC 1400A0E3 MOV R0,#+20 \ 000007B0 440387E5 STR R0,[R7, #+836] 4916 show_pp_sender(); \ 000007B4 ........ BL show_pp_sender \ 000007B8 010000EA B ??ProcessPacket_42 4917 } 4918 } 4919 else 4920 GBS_DelTimer(&develop); \ ??ProcessPacket_41: \ 000007BC 00009DE5 LDR R0,[SP, #+0] \ 000007C0 8C0100EF SWI +396 4921 4922 main_msg_timer2=main_msg_timer;//при получении сообщения восстанавливаем таймер \ ??ProcessPacket_42: \ 000007C4 9C039FE5 LDR R0,??ProcessPacket_1+0x34 ;; main_msg_timer \ 000007C8 000090E5 LDR R0,[R0, #+0] \ 000007CC 340387E5 STR R0,[R7, #+820] 4923 if(Is_SMARTCPU_On) \ 000007D0 E80197E5 LDR R0,[R7, #+488] \ 000007D4 000050E3 CMP R0,#+0 \ 000007D8 0200000A BEQ ??ProcessPacket_34 4924 AddToMain(t->name,p->data); \ 000007DC 081084E2 ADD R1,R4,#+8 \ 000007E0 140088E2 ADD R0,R8,#+20 \ 000007E4 ........ BL AddToMain 4925 } 4926 L1: 4927 //Разворачиваем группу, в которой пришло сообщение 4928 { 4929 CLIST *g=FindGroupByID(t->group); \ ??ProcessPacket_34: \ 000007E8 100098E5 LDR R0,[R8, #+16] \ 000007EC ........ _BLF FindGroupByID,??FindGroupByID??rA 4930 if (g) \ 000007F0 000050E3 CMP R0,#+0 4931 { 4932 if (g->state) \ 000007F4 B415D011 LDRHNE R1,[R0, #+84] \ 000007F8 00005113 CMPNE R1,#+0 4933 { 4934 g->state=0; \ 000007FC B495C011 STRHNE R9,[R0, #+84] 4935 } 4936 } 4937 } 4938 4939 ReqAddMsgToChat(t); \ 00000800 0800A0E1 MOV R0,R8 \ 00000804 ........ BL ReqAddMsgToChat 4940 RecountMenu(t,1); \ 00000808 0110A0E3 MOV R1,#+1 \ 0000080C 0800A0E1 MOV R0,R8 \ 00000810 ........ BL RecountMenu 4941 4942 switch (DEVELOP_IF) \ 00000814 50039FE5 LDR R0,??ProcessPacket_1+0x38 ;; DEVELOP_IF \ 00000818 000090E5 LDR R0,[R0, #+0] \ 0000081C 000050E3 CMP R0,#+0 \ 00000820 0400000A BEQ ??ProcessPacket_43 \ 00000824 010050E2 SUBS R0,R0,#+1 \ 00000828 0B00000A BEQ ??ProcessPacket_44 \ 0000082C 020050E2 SUBS R0,R0,#+2 \ 00000830 1300000A BEQ ??ProcessPacket_45 \ 00000834 BA0000EA B ??ProcessPacket_2 4943 { 4944 case 0: 4945 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)) to_develop(); \ ??ProcessPacket_43: \ 00000838 068100EF SWI +33030 \ 0000083C 080090E5 LDR R0,[R0, #+8] \ 00000840 FC1197E5 LDR R1,[R7, #+508] \ 00000844 0C0090E5 LDR R0,[R0, #+12] \ 00000848 0C0090E5 LDR R0,[R0, #+12] \ 0000084C 010050E1 CMP R0,R1 \ ??ProcessPacket_46: \ 00000850 B300000A BEQ ??ProcessPacket_2 \ 00000854 ........ BL to_develop \ 00000858 B10000EA B ??ProcessPacket_2 4946 break; 4947 case 1: 4948 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)&&(IsUnlocked())) to_develop(); \ ??ProcessPacket_44: \ 0000085C 068100EF SWI +33030 \ 00000860 080090E5 LDR R0,[R0, #+8] \ 00000864 FC1197E5 LDR R1,[R7, #+508] \ 00000868 0C0090E5 LDR R0,[R0, #+12] \ 0000086C 0C0090E5 LDR R0,[R0, #+12] \ 00000870 010050E1 CMP R0,R1 \ 00000874 AA00000A BEQ ??ProcessPacket_2 \ 00000878 430000EF SWI +67 \ 0000087C 000050E3 CMP R0,#+0 \ 00000880 F2FFFFEA B ??ProcessPacket_46 4949 break; 4950 case 2: 4951 break; 4952 case 3: 4953 GBS_DelTimer(&develop); \ ??ProcessPacket_45: \ 00000884 00009DE5 LDR R0,[SP, #+0] \ 00000888 8C0100EF SWI +396 4954 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)&&(!IsUnlocked())) begin_to_develop(); \ 0000088C 068100EF SWI +33030 \ 00000890 080090E5 LDR R0,[R0, #+8] \ 00000894 FC1197E5 LDR R1,[R7, #+508] \ 00000898 0C0090E5 LDR R0,[R0, #+12] \ 0000089C 0C0090E5 LDR R0,[R0, #+12] \ 000008A0 010050E1 CMP R0,R1 \ 000008A4 9E00000A BEQ ??ProcessPacket_2 \ 000008A8 430000EF SWI +67 \ 000008AC 000050E3 CMP R0,#+0 \ 000008B0 9B00001A BNE ??ProcessPacket_2 \ 000008B4 ........ BL begin_to_develop \ 000008B8 990000EA B ??ProcessPacket_2 4955 break; 4956 } 4957 break; 4958 case T_SRV_ACK: 4959 case T_CLIENT_ACK: 4960 q=FindContactLOGQByAck(p); \ ??ProcessPacket_47: \ 000008BC 0400A0E1 MOV R0,R4 \ 000008C0 ........ BL FindContactLOGQByAck 4961 if (q) \ 000008C4 000050E3 CMP R0,#+0 \ 000008C8 9500000A BEQ ??ProcessPacket_2 4962 { 4963 q->acked=p->pkt.type==T_SRV_ACK?1:2; \ 000008CC B410D4E1 LDRH R1,[R4, #+4] \ 000008D0 100051E3 CMP R1,#+16 \ 000008D4 0110A003 MOVEQ R1,#+1 \ 000008D8 0210A013 MOVNE R1,#+2 \ 000008DC 041080E5 STR R1,[R0, #+4] 4964 t=FindContactByUin(p->pkt.uin); \ 000008E0 000094E5 LDR R0,[R4, #+0] \ 000008E4 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 000008E8 0080A0E1 MOV R8,R0 4965 if (edchat_id) \ 000008EC A00297E5 LDR R0,[R7, #+672] \ 000008F0 000050E3 CMP R0,#+0 \ 000008F4 8A00000A BEQ ??ProcessPacket_2 4966 { 4967 void *data=FindGUIbyId(edchat_id,NULL); \ 000008F8 A00297E5 LDR R0,[R7, #+672] \ 000008FC 0010A0E3 MOV R1,#+0 \ 00000900 090200EF SWI +521 \ 00000904 0050B0E1 MOVS R5,R0 4968 if (data) \ 00000908 8500000A BEQ ??ProcessPacket_2 4969 { 4970 EDCHAT_STRUCT *ed_struct; 4971 ed_struct=EDIT_GetUserPointer(data); \ 0000090C DF0100EF SWI +479 4972 if (ed_struct) \ 00000910 000050E3 CMP R0,#+0 \ 00000914 8200000A BEQ ??ProcessPacket_2 4973 { 4974 if (ed_struct->ed_contact==t) \ 00000918 000090E5 LDR R0,[R0, #+0] \ 0000091C 080050E1 CMP R0,R8 \ 00000920 7F00001A BNE ??ProcessPacket_2 4975 { 4976 if (EDIT_IsBusy(data)) \ 00000924 0500A0E1 MOV R0,R5 \ 00000928 1C0200EF SWI +540 \ 0000092C 000050E3 CMP R0,#+0 \ 00000930 0300000A BEQ ??ProcessPacket_48 4977 { 4978 t->req_drawack=1; \ 00000934 8C6088E5 STR R6,[R8, #+140] 4979 time_to_stop_t9=3; \ 00000938 0300A0E3 MOV R0,#+3 \ 0000093C 3C0387E5 STR R0,[R7, #+828] \ 00000940 770000EA B ??ProcessPacket_2 4980 } 4981 else { 4982 DrawAck(data); \ ??ProcessPacket_48: \ 00000944 0500A0E1 MOV R0,R5 \ 00000948 ........ BL DrawAck 4983 if (p->pkt.type==T_SRV_ACK) \ 0000094C B400D4E1 LDRH R0,[R4, #+4] \ 00000950 100050E3 CMP R0,#+16 \ 00000954 7200001A BNE ??ProcessPacket_2 4984 IlluminationOn(ILL_DISP_SEND,ILL_KEYS_SEND,ILL_SEND_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 \ 00000958 10029FE5 LDR R0,??ProcessPacket_1+0x3C ;; ILL_SEND_TMR \ 0000095C 00309AE5 LDR R3,[R10, #+0] \ 00000960 002090E5 LDR R2,[R0, #+0] \ 00000964 08029FE5 LDR R0,??ProcessPacket_1+0x40 ;; ILL_KEYS_SEND \ 00000968 001090E5 LDR R1,[R0, #+0] \ 0000096C 04029FE5 LDR R0,??ProcessPacket_1+0x44 ;; ILL_DISP_SEND \ 00000970 000090E5 LDR R0,[R0, #+0] \ 00000974 ........ BL IlluminationOn \ 00000978 690000EA B ??ProcessPacket_2 4985 } 4986 } 4987 } 4988 } 4989 } 4990 } 4991 break; 4992 case T_XTEXT_ACK: 4993 t=FindContactByUin(p->pkt.uin); \ ??ProcessPacket_49: \ 0000097C ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000980 0080B0E1 MOVS R8,R0 4994 if (t) \ 00000984 6600000A BEQ ??ProcessPacket_2 4995 { 4996 int i; 4997 int j; 4998 FreeXText(t); \ 00000988 ........ _BLF FreeXText,??FreeXText??rA 4999 i=p->pkt.data_len; \ 0000098C B660D4E1 LDRH R6,[R4, #+6] 5000 memcpy(t->xtext=malloc(i),p->data,i); \ 00000990 0600A0E1 MOV R0,R6 \ 00000994 140000EF SWI +20 \ 00000998 A40088E5 STR R0,[R8, #+164] \ 0000099C 0620A0E1 MOV R2,R6 \ 000009A0 081084E2 ADD R1,R4,#+8 \ 000009A4 1E0100EF SWI +286 5001 zeromem(s,256); \ 000009A8 401FA0E3 MOV R1,#+256 \ 000009AC 10008DE2 ADD R0,SP,#+16 \ 000009B0 1D0100EF SWI +285 5002 strcpy(s,t->name); \ 000009B4 141088E2 ADD R1,R8,#+20 \ 000009B8 10008DE2 ADD R0,SP,#+16 \ 000009BC 1A0000EF SWI +26 5003 strcat(s,":\n"); \ 000009C0 5B1F8FE2 ADR R1,??ProcessPacket_1 ;; ":\n" \ 000009C4 10008DE2 ADD R0,SP,#+16 \ 000009C8 170000EF SWI +23 5004 i=strlen(s); \ 000009CC 10008DE2 ADD R0,SP,#+16 \ 000009D0 1B0000EF SWI +27 5005 j=p->data[0]; \ 000009D4 0860D4E5 LDRB R6,[R4, #+8] \ 000009D8 0070A0E1 MOV R7,R0 5006 if (j>(255-i)) j=255-i; \ 000009DC FF0067E2 RSB R0,R7,#+255 \ 000009E0 060050E1 CMP R0,R6 \ 000009E4 0060A0B1 MOVLT R6,R0 5007 strncpy(s+i,p->data+1,j); \ 000009E8 0620A0E1 MOV R2,R6 \ 000009EC 091084E2 ADD R1,R4,#+9 \ 000009F0 10008DE2 ADD R0,SP,#+16 \ 000009F4 000087E0 ADD R0,R7,R0 \ 000009F8 160100EF SWI +278 5008 i+=j; \ 000009FC 070086E0 ADD R0,R6,R7 5009 if (i<255) \ 00000A00 FF0050E3 CMP R0,#+255 \ 00000A04 100000AA BGE ??ProcessPacket_50 5010 { 5011 s[i]='\n'; \ 00000A08 10108DE2 ADD R1,SP,#+16 \ 00000A0C 0A20A0E3 MOV R2,#+10 \ 00000A10 0120C0E7 STRB R2,[R0, +R1] 5012 i++; \ 00000A14 0810D4E5 LDRB R1,[R4, #+8] \ 00000A18 B620D4E1 LDRH R2,[R4, #+6] \ 00000A1C 010080E2 ADD R0,R0,#+1 5013 j=p->pkt.data_len-p->data[0]-1; 5014 if (j>(255-i)) j=255-i; 5015 strncpy(s+i,p->data+p->data[0]+1,j); \ 00000A20 10308DE2 ADD R3,SP,#+16 \ 00000A24 012042E0 SUB R2,R2,R1 \ 00000A28 016042E2 SUB R6,R2,#+1 \ 00000A2C FF2060E2 RSB R2,R0,#+255 \ 00000A30 060052E1 CMP R2,R6 \ 00000A34 0260A0B1 MOVLT R6,R2 \ 00000A38 0620A0E1 MOV R2,R6 \ 00000A3C 041081E0 ADD R1,R1,R4 \ 00000A40 091081E2 ADD R1,R1,#+9 \ 00000A44 030080E0 ADD R0,R0,R3 \ 00000A48 160100EF SWI +278 5016 } 5017 5018 zeromem(s,256); \ ??ProcessPacket_50: \ 00000A4C 401FA0E3 MOV R1,#+256 \ 00000A50 10008DE2 ADD R0,SP,#+16 \ 00000A54 1D0100EF SWI +285 5019 i=0; 5020 j=p->data[0]; \ 00000A58 0860D4E5 LDRB R6,[R4, #+8] 5021 if (j>(255-i)) j=255-i; 5022 strncpy(s,p->data+1,j); \ 00000A5C 091084E2 ADD R1,R4,#+9 \ 00000A60 10008DE2 ADD R0,SP,#+16 \ 00000A64 400F56E3 CMP R6,#+256 \ 00000A68 FF60A0A3 MOVGE R6,#+255 \ 00000A6C 0620A0E1 MOV R2,R6 \ 00000A70 160100EF SWI +278 5023 i+=j; 5024 if (i<255) \ 00000A74 FF0056E3 CMP R6,#+255 \ 00000A78 100000AA BGE ??ProcessPacket_51 5025 { 5026 s[i++]=13; \ 00000A7C 10108DE2 ADD R1,SP,#+16 \ 00000A80 0D20A0E3 MOV R2,#+13 \ 00000A84 0120C6E7 STRB R2,[R6, +R1] \ 00000A88 0810D4E5 LDRB R1,[R4, #+8] \ 00000A8C B620D4E1 LDRH R2,[R4, #+6] \ 00000A90 010086E2 ADD R0,R6,#+1 5027 j=p->pkt.data_len-p->data[0]-1; 5028 if (j>(255-i)) j=255-i; 5029 strncpy(s+i,p->data+p->data[0]+1,j); \ 00000A94 10308DE2 ADD R3,SP,#+16 \ 00000A98 012042E0 SUB R2,R2,R1 \ 00000A9C 016042E2 SUB R6,R2,#+1 \ 00000AA0 FF2060E2 RSB R2,R0,#+255 \ 00000AA4 060052E1 CMP R2,R6 \ 00000AA8 0260A0B1 MOVLT R6,R2 \ 00000AAC 0620A0E1 MOV R2,R6 \ 00000AB0 041081E0 ADD R1,R1,R4 \ 00000AB4 091081E2 ADD R1,R1,#+9 \ 00000AB8 030080E0 ADD R0,R0,R3 \ 00000ABC 160100EF SWI +278 5030 } 5031 AddStringToLog(t,0x03,s,x_status_change,0xFFFFFFFF,1); \ ??ProcessPacket_51: \ 00000AC0 0100A0E3 MOV R0,#+1 \ 00000AC4 01002DE9 PUSH {R0} \ 00000AC8 0310A0E3 MOV R1,#+3 \ 00000ACC 000060E2 RSB R0,R0,#+0 \ 00000AD0 01002DE9 PUSH {R0} \ 00000AD4 18208DE2 ADD R2,SP,#+24 \ 00000AD8 C400A0E3 MOV R0,#+196 \ 00000ADC 400E80E3 ORR R0,R0,#0x400 \ 00000AE0 053080E0 ADD R3,R0,R5 \ 00000AE4 0800A0E1 MOV R0,R8 \ 00000AE8 ........ BL AddStringToLog 5032 ReqAddMsgToChat(t); \ 00000AEC 0800A0E1 MOV R0,R8 \ 00000AF0 ........ BL ReqAddMsgToChat 5033 if (strlen(p->data)) // Если x-status не пустой \ 00000AF4 080084E2 ADD R0,R4,#+8 \ 00000AF8 1B0000EF SWI +27 \ 00000AFC 000050E3 CMP R0,#+0 \ 00000B00 08D08DE2 ADD SP,SP,#+8 5034 RecountMenu(t, 1); \ 00000B04 0110A013 MOVNE R1,#+1 \ 00000B08 0800A011 MOVNE R0,R8 \ 00000B0C 70FDFF1A BNE ??ProcessPacket_9 5035 else 5036 RecountMenu(NULL, 0); \ 00000B10 0010A0E3 MOV R1,#+0 \ 00000B14 0100A0E1 MOV R0,R1 \ 00000B18 6DFDFFEA B ??ProcessPacket_9 5037 } 5038 break; 5039 case T_LASTPRIVACY: 5040 CurrentPrivateStatus=p->data[0]; \ ??ProcessPacket_52: \ 00000B1C 0800D4E5 LDRB R0,[R4, #+8] \ 00000B20 580287E5 STR R0,[R7, #+600] 5041 break; 5042 } 5043 mfree(p); \ ??ProcessPacket_2: \ 00000B24 0400A0E1 MOV R0,R4 \ 00000B28 150000EF SWI +21 5044 } \ 00000B2C 4EDF8DE2 ADD SP,SP,#+312 \ 00000B30 F08FBDE8 POP {R4-R11,PC} ;; return \ ??ProcessPacket_1: \ 00000B34 3A0A0000 DC8 ":\n",+0 \ 00000B38 ........ DC32 ILL_RECV_FADE \ 00000B3C ........ DC32 ENA_AUTO_XTXT \ 00000B40 ........ DC32 PopupShow \ 00000B44 ........ DC32 PopupOnlineString \ 00000B48 ........ DC32 ON_OFF_TIME \ 00000B4C ........ DC32 sndGlobal \ 00000B50 ........ DC32 sndGlobal2 \ 00000B54 ........ DC32 sndSrvMsg \ 00000B58 ........ DC32 ILL_KEYS_RECV \ 00000B5C ........ DC32 ILL_RECV_TMR \ 00000B60 ........ DC32 ILL_DISP_RECV \ 00000B64 ........ DC32 PopupMsgString \ 00000B68 ........ DC32 main_msg_timer \ 00000B6C ........ DC32 DEVELOP_IF \ 00000B70 ........ DC32 ILL_SEND_TMR \ 00000B74 ........ DC32 ILL_KEYS_SEND \ 00000B78 ........ DC32 ILL_DISP_SEND 5045 5046 5047 IPC_REQ tmr_gipc; \ In segment CODE, align 4, keep-with-next 5048 void process_active_timer(void) 5049 { \ process_active_timer: \ 00000000 30402DE9 PUSH {R4,R5,LR} 5050 if (connect_state>2) \ 00000004 ........ LDR R5,??DataTable186 ;; S_ICONS \ 00000008 0040A0E3 MOV R4,#+0 \ 0000000C 6C0295E5 LDR R0,[R5, #+620] \ 00000010 030050E3 CMP R0,#+3 \ 00000014 070000BA BLT ??process_active_timer_0 5051 { 5052 if (++tenseconds_to_ping>12) \ 00000018 A80295E5 LDR R0,[R5, #+680] \ 0000001C 010080E2 ADD R0,R0,#+1 \ 00000020 A80285E5 STR R0,[R5, #+680] \ 00000024 0D0050E3 CMP R0,#+13 \ 00000028 020000BA BLT ??process_active_timer_0 5053 { 5054 tenseconds_to_ping=0; 5055 SUBPROC((void *)do_ping); \ 0000002C 5C009FE5 LDR R0,??process_active_timer_1 ;; do_ping \ 00000030 A84285E5 STR R4,[R5, #+680] \ 00000034 710100EF SWI +369 5056 } 5057 } 5058 tmr_gipc.name_to=ipc_my_name; \ ??process_active_timer_0: \ 00000038 ........ LDR R1,??DataTable184 ;; Canvas \ 0000003C 9C00A0E3 MOV R0,#+156 \ 00000040 400E80E3 ORR R0,R0,#0x400 \ 00000044 012080E0 ADD R2,R0,R1 \ 00000048 802085E5 STR R2,[R5, #+128] 5059 tmr_gipc.name_from=ipc_my_name; \ 0000004C 010080E0 ADD R0,R0,R1 \ 00000050 840085E5 STR R0,[R5, #+132] 5060 tmr_gipc.data=NULL; \ 00000054 884085E5 STR R4,[R5, #+136] 5061 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_TENSECONDS,&tmr_gipc); \ 00000058 803085E2 ADD R3,R5,#+128 \ 0000005C 0420A0E3 MOV R2,#+4 \ 00000060 F210A0E3 MOV R1,#+242 \ 00000064 C01F81E3 ORR R1,R1,#0x300 \ 00000068 0900A0E3 MOV R0,#+9 \ 0000006C 420C80E3 ORR R0,R0,#0x4200 \ 00000070 000100EF SWI +256 5062 GBS_StartTimerProc(&tmr_active,TMR_SECOND*10,process_active_timer); \ 00000074 ........ LDR R2,??DataTable206 ;; process_active_timer \ 00000078 871EA0E3 MOV R1,#+2160 \ 0000007C EC00A0E3 MOV R0,#+236 \ 00000080 640D80E3 ORR R0,R0,#0x1900 \ 00000084 050080E0 ADD R0,R0,R5 \ 00000088 4D0000EF SWI +77 5063 } \ 0000008C 3080BDE8 POP {R4,R5,PC} ;; return \ ??process_active_timer_1: \ 00000090 ........ DC32 do_ping 5064 5065 GBSTMR tm22; \ In segment CODE, align 4, keep-with-next 5066 void OneSecTmr() 5067 { 5068 tmr_gipc.name_to=ipc_my_name; \ OneSecTmr: \ 00000000 ........ LDR R1,??DataTable184 ;; Canvas \ 00000004 10402DE9 PUSH {R4,LR} \ 00000008 ........ LDR R4,??DataTable186 ;; S_ICONS \ 0000000C 9C00A0E3 MOV R0,#+156 \ 00000010 400E80E3 ORR R0,R0,#0x400 \ 00000014 012080E0 ADD R2,R0,R1 \ 00000018 802084E5 STR R2,[R4, #+128] 5069 tmr_gipc.name_from=ipc_my_name; \ 0000001C 010080E0 ADD R0,R0,R1 \ 00000020 840084E5 STR R0,[R4, #+132] 5070 tmr_gipc.data=NULL; \ 00000024 0000A0E3 MOV R0,#+0 \ 00000028 880084E5 STR R0,[R4, #+136] 5071 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_ONESECOND,&tmr_gipc); \ 0000002C 803084E2 ADD R3,R4,#+128 \ 00000030 0620A0E3 MOV R2,#+6 \ 00000034 FB1F82E2 ADD R1,R2,#+1004 \ 00000038 0900A0E3 MOV R0,#+9 \ 0000003C 420C80E3 ORR R0,R0,#0x4200 \ 00000040 000100EF SWI +256 5072 GBS_StartTimerProc(&tm22,TMR_SECOND,OneSecTmr); \ 00000044 14209FE5 LDR R2,??OneSecTmr_0 ;; OneSecTmr \ 00000048 D810A0E3 MOV R1,#+216 \ 0000004C 1000A0E3 MOV R0,#+16 \ 00000050 7C0D80E3 ORR R0,R0,#0x1F00 \ 00000054 040080E0 ADD R0,R0,R4 \ 00000058 4D0000EF SWI +77 5073 } \ 0000005C 1080BDE8 POP {R4,PC} ;; return \ ??OneSecTmr_0: \ 00000060 ........ DC32 OneSecTmr 5074 5075 5076 //=============================================================================================== 5077 5078 extern ADDUIN addonuin[]; 5079 5080 int itemFromDisp;//кол-во на экране 5081 int totalItems;//общее количество итемов 5082 int curpos=0;//позичия курсора 5083 int curpage=1;//текущая страница 5084 5085 const char clrSelect[4]={0xFF,0x00,0x00,0x60}; 5086 const char fntSelect[4]={0xFF,0xFF,0x00,0x60}; 5087 const char bordSelect[4]={0x00,0x00,0x00,0x60}; 5088 5089 const char clrNotSelect[4]={0x00,0x00,0x00,0x60}; 5090 const char bordNotSelect[4]={0x00,0x00,0x00,0x60}; 5091 const char fntNotSelect[4]={0xFF,0xFF,0xFF,0x60}; 5092 5093 char clrBlack[]={0x00,0x00,0x00,0x64}; 5094 char clrWhite[]={0xFF,0xFF,0xFF,0x64}; 5095 //char prozr[]={0x00,0x00,0x00,0x00}; 5096 const int font=FONT_SMALL; 5097 const char _t[]="%t"; 5098 5099 extern int ParseUINS(); 5100 int USE_ADD_UIN=0; 5101 #define CLIST_Y1 (YDISP+GetFontYSIZE(font)+8) 5102 \ In segment CODE, align 4, keep-with-next 5103 static void DrawList() 5104 { \ DrawList: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 5105 int font_y = GetFontYSIZE(font)+2;//16+2 5106 int scr_w=ScreenW(); 5107 int scr_h=ScreenH()-1; 5108 // int y2=scr_w-(GetFontYSIZE(font)+2); 5109 #ifdef ELKA 5110 itemFromDisp = sdiv(font_y,ScreenH()-CLIST_Y1-GetFontYSIZE(font)-2)-1; 5111 #else 5112 itemFromDisp = sdiv(font_y,ScreenH()-CLIST_Y1-GetFontYSIZE(font)-2); \ 00000004 ........ LDR R5,??DataTable186 ;; S_ICONS \ 00000008 08D04DE2 SUB SP,SP,#+8 5113 #endif 5114 5115 LockSched(); 5116 totalItems = ParseUINS(); 5117 // Определяем количество страниц списка контактов 5118 int pageNum = sdiv(itemFromDisp, totalItems); 5119 if( itemFromDisp*pageNum < totalItems) pageNum++; //На всяк,вдруг еще страница нужна 5120 WSHDR* out_ws = AllocWS(256); 5121 int i=0; \ 0000000C ........ LDR R8,??DataTable184 ;; Canvas \ 00000010 0700A0E3 MOV R0,#+7 \ 00000014 C50100EF SWI +453 \ 00000018 024080E2 ADD R4,R0,#+2 \ 0000001C 888100EF SWI +33160 \ 00000020 04008DE5 STR R0,[SP, #+4] \ 00000024 898100EF SWI +33161 \ 00000028 898100EF SWI +33161 \ 0000002C 0060A0E1 MOV R6,R0 \ 00000030 0700A0E3 MOV R0,#+7 \ 00000034 C50100EF SWI +453 \ 00000038 0070A0E1 MOV R7,R0 \ 0000003C 0700A0E3 MOV R0,#+7 \ 00000040 C50100EF SWI +453 \ 00000044 071046E0 SUB R1,R6,R7 \ 00000048 081041E2 SUB R1,R1,#+8 \ 0000004C 000041E0 SUB R0,R1,R0 \ 00000050 021040E2 SUB R1,R0,#+2 \ 00000054 0400A0E1 MOV R0,R4 \ 00000058 B80000EF SWI +184 \ 0000005C 4C0385E5 STR R0,[R5, #+844] \ 00000060 460100EF SWI +326 \ 00000064 ........ _BLF ParseUINS,??ParseUINS??rA \ 00000068 500385E5 STR R0,[R5, #+848] \ 0000006C 0010A0E1 MOV R1,R0 \ 00000070 4C0395E5 LDR R0,[R5, #+844] \ 00000074 0070A0E3 MOV R7,#+0 \ 00000078 B80000EF SWI +184 \ 0000007C 00008DE5 STR R0,[SP, #+0] \ 00000080 4C0395E5 LDR R0,[R5, #+844] \ 00000084 00109DE5 LDR R1,[SP, #+0] \ 00000088 910000E0 MUL R0,R1,R0 \ 0000008C 501395E5 LDR R1,[R5, #+848] \ 00000090 010050E1 CMP R0,R1 \ 00000094 00109DB5 LDRLT R1,[SP, #+0] \ 00000098 400FA0E3 MOV R0,#+256 \ 0000009C 011081B2 ADDLT R1,R1,#+1 \ 000000A0 00108DB5 STRLT R1,[SP, #+0] \ 000000A4 250100EF SWI +293 \ 000000A8 0060A0E1 MOV R6,R0 5122 int start_y; 5123 int x=1; 5124 while(i<=totalItems) \ ??DrawList_0: \ 000000AC 500395E5 LDR R0,[R5, #+848] \ 000000B0 070050E1 CMP R0,R7 \ 000000B4 590000BA BLT ??DrawList_1 5125 { 5126 if((i>=(curpage-1)*itemFromDisp) && (i<=itemFromDisp*curpage))//если те итемы который нужно выводить на экран со страници curpage \ 000000B8 4C0395E5 LDR R0,[R5, #+844] \ 000000BC 581395E5 LDR R1,[R5, #+856] \ 000000C0 012041E2 SUB R2,R1,#+1 \ 000000C4 900202E0 MUL R2,R0,R2 \ 000000C8 020057E1 CMP R7,R2 \ 000000CC 910000A0 MULGE R0,R1,R0 \ 000000D0 070050A1 CMPGE R0,R7 \ 000000D4 4B0000BA BLT ??DrawList_2 5127 { 5128 wsprintf(out_ws,"%d. %d",i+1,addonuin[i].uin);//имя закладки \ 000000D8 ........ LDR R0,??DataTable188 ;; addonuin \ 000000DC 012087E2 ADD R2,R7,#+1 \ 000000E0 073290E7 LDR R3,[R0, +R7, LSL #+4] \ 000000E4 AC1F88E2 ADD R1,R8,#+688 \ 000000E8 0600A0E1 MOV R0,R6 \ 000000EC 240100EF SWI +292 5129 start_y = (CLIST_Y1 + (i - (curpage-1)*itemFromDisp)*font_y); //определяем начальное смещение по у \ 000000F0 0700A0E3 MOV R0,#+7 \ 000000F4 C50100EF SWI +453 \ 000000F8 581395E5 LDR R1,[R5, #+856] \ 000000FC 4C2395E5 LDR R2,[R5, #+844] \ 00000100 011041E2 SUB R1,R1,#+1 \ 00000104 920101E0 MUL R1,R2,R1 \ 00000108 011047E0 SUB R1,R7,R1 \ 0000010C 940120E0 MLA R0,R4,R1,R0 \ 00000110 089080E2 ADD R9,R0,#+8 5130 5131 if(i==curpos) \ 00000114 04009DE5 LDR R0,[SP, #+4] \ 00000118 09B084E0 ADD R11,R4,R9 \ 0000011C 01A040E2 SUB R10,R0,#+1 \ 00000120 540395E5 LDR R0,[R5, #+852] \ 00000124 000057E1 CMP R7,R0 \ 00000128 1600001A BNE ??DrawList_3 5132 { 5133 DrawRoundedFrame(x-4,start_y,scr_w-1,start_y+font_y,5,5,0,bordSelect,clrSelect); \ 0000012C F400A0E3 MOV R0,#+244 \ 00000130 400E80E3 ORR R0,R0,#0x400 \ 00000134 080080E0 ADD R0,R0,R8 \ 00000138 01002DE9 PUSH {R0} \ 0000013C 0B30A0E1 MOV R3,R11 \ 00000140 0A20A0E1 MOV R2,R10 \ 00000144 0910A0E1 MOV R1,R9 \ 00000148 FC00A0E3 MOV R0,#+252 \ 0000014C 400E80E3 ORR R0,R0,#0x400 \ 00000150 080080E0 ADD R0,R0,R8 \ 00000154 01002DE9 PUSH {R0} \ 00000158 0000A0E3 MOV R0,#+0 \ 0000015C 01002DE9 PUSH {R0} \ 00000160 0500A0E3 MOV R0,#+5 \ 00000164 01002DE9 PUSH {R0} \ 00000168 01002DE9 PUSH {R0} \ 0000016C 0200E0E3 MVN R0,#+2 \ 00000170 500100EF SWI +336 5134 DrawString(out_ws,x,start_y+2,scr_w-1,start_y+font_y,font,0,fntSelect,0); \ 00000174 0000A0E3 MOV R0,#+0 \ 00000178 01002DE9 PUSH {R0} \ 0000017C F800A0E3 MOV R0,#+248 \ 00000180 400E80E3 ORR R0,R0,#0x400 \ 00000184 120000EA B ??DrawList_4 5135 } 5136 else 5137 { 5138 DrawRoundedFrame(x,start_y+1,scr_w-1,start_y+font_y,0,0,0,bordNotSelect,clrNotSelect);//clrBlack \ ??DrawList_3: \ 00000188 500E88E2 ADD R0,R8,#+1280 \ 0000018C 01002DE9 PUSH {R0} \ 00000190 0B30A0E1 MOV R3,R11 \ 00000194 0A20A0E1 MOV R2,R10 \ 00000198 011089E2 ADD R1,R9,#+1 \ 0000019C 0400A0E3 MOV R0,#+4 \ 000001A0 500E80E3 ORR R0,R0,#0x500 \ 000001A4 080080E0 ADD R0,R0,R8 \ 000001A8 01002DE9 PUSH {R0} \ 000001AC 0000A0E3 MOV R0,#+0 \ 000001B0 01002DE9 PUSH {R0} \ 000001B4 01002DE9 PUSH {R0} \ 000001B8 01002DE9 PUSH {R0} \ 000001BC 0100A0E3 MOV R0,#+1 \ 000001C0 500100EF SWI +336 5139 DrawString(out_ws,x,start_y+2,scr_w-1,start_y+font_y,font,0,fntNotSelect,0); \ 000001C4 0000A0E3 MOV R0,#+0 \ 000001C8 01002DE9 PUSH {R0} \ 000001CC 0800A0E3 MOV R0,#+8 \ 000001D0 500E80E3 ORR R0,R0,#0x500 \ ??DrawList_4: \ 000001D4 080080E0 ADD R0,R0,R8 \ 000001D8 01002DE9 PUSH {R0} \ 000001DC 0A30A0E1 MOV R3,R10 \ 000001E0 022089E2 ADD R2,R9,#+2 \ 000001E4 0110A0E3 MOV R1,#+1 \ 000001E8 0000A0E3 MOV R0,#+0 \ 000001EC 01002DE9 PUSH {R0} \ 000001F0 0700A0E3 MOV R0,#+7 \ 000001F4 01002DE9 PUSH {R0} \ 000001F8 00082DE9 PUSH {R11} \ 000001FC 0600A0E1 MOV R0,R6 \ 00000200 4C0100EF SWI +332 \ 00000204 28D08DE2 ADD SP,SP,#+40 5140 } 5141 } 5142 i++; 5143 if(i>(pageNum*itemFromDisp)) break; \ ??DrawList_2: \ 00000208 00009DE5 LDR R0,[SP, #+0] \ 0000020C 4C1395E5 LDR R1,[R5, #+844] \ 00000210 017087E2 ADD R7,R7,#+1 \ 00000214 910000E0 MUL R0,R1,R0 \ 00000218 070050E1 CMP R0,R7 \ 0000021C A2FFFFAA BGE ??DrawList_0 5144 } 5145 UnlockSched(); \ ??DrawList_1: \ 00000220 470100EF SWI +327 5146 FreeWS(out_ws); \ 00000224 0600A0E1 MOV R0,R6 \ 00000228 290100EF SWI +297 5147 } \ 0000022C F38FBDE8 POP {R0,R1,R4-R11,PC} ;; return 5148 5149 // Управление курсором \ In segment CODE, align 4, keep-with-next 5150 void MoveUp() 5151 { \ MoveUp: \ 00000000 10402DE9 PUSH {R4,LR} 5152 if(!itemFromDisp)return; \ 00000004 ........ LDR R4,??DataTable186 ;; S_ICONS \ 00000008 4C0394E5 LDR R0,[R4, #+844] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD08 POPEQ {R4,PC} 5153 if(curpos<1) \ 00000014 541394E5 LDR R1,[R4, #+852] \ 00000018 010051E3 CMP R1,#+1 \ 0000001C 0A0000AA BGE ??MoveUp_0 5154 { 5155 curpos=totalItems; \ 00000020 501394E5 LDR R1,[R4, #+848] \ 00000024 541384E5 STR R1,[R4, #+852] 5156 if(itemFromDisp!=totalItems) \ 00000028 010050E1 CMP R0,R1 \ 0000002C 0300000A BEQ ??MoveUp_1 5157 { 5158 curpage = sdiv(itemFromDisp,totalItems)+1; \ 00000030 B80000EF SWI +184 \ 00000034 010080E2 ADD R0,R0,#+1 \ 00000038 580384E5 STR R0,[R4, #+856] \ 0000003C 1080BDE8 POP {R4,PC} 5159 } 5160 else 5161 curpage = 1; \ ??MoveUp_1: \ 00000040 0100A0E3 MOV R0,#+1 \ 00000044 580384E5 STR R0,[R4, #+856] \ 00000048 1080BDE8 POP {R4,PC} 5162 } 5163 else 5164 { 5165 curpos--; \ ??MoveUp_0: \ 0000004C 582394E5 LDR R2,[R4, #+856] \ 00000050 011041E2 SUB R1,R1,#+1 \ 00000054 012042E2 SUB R2,R2,#+1 \ 00000058 900203E0 MUL R3,R0,R2 \ 0000005C 541384E5 STR R1,[R4, #+852] \ 00000060 030051E1 CMP R1,R3 5166 if(curpos<(curpage-1)*itemFromDisp){ curpos++; curpage--; } \ 00000064 010081B2 ADDLT R0,R1,#+1 \ 00000068 540384B5 STRLT R0,[R4, #+852] \ 0000006C 582384B5 STRLT R2,[R4, #+856] \ 00000070 1080BDE8 POP {R4,PC} ;; return 5167 } 5168 // REDRAW(); 5169 } 5170 5171 \ In segment CODE, align 4, keep-with-next 5172 void MoveDown() 5173 { 5174 if(!totalItems)return; \ MoveDown: \ 00000000 ........ LDR R0,??DataTable215 ;; S_ICONS \ 00000004 501390E5 LDR R1,[R0, #+848] \ 00000008 000051E3 CMP R1,#+0 \ 0000000C 1EFF2F01 BXEQ LR 5175 curpos++; \ 00000010 542390E5 LDR R2,[R0, #+852] \ 00000014 012082E2 ADD R2,R2,#+1 \ 00000018 542380E5 STR R2,[R0, #+852] 5176 if(curpos>totalItems) { curpos=0; curpage=1; } \ 0000001C 020051E1 CMP R1,R2 \ 00000020 030000AA BGE ??MoveDown_0 \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 541380E5 STR R1,[R0, #+852] \ 0000002C 0110A0E3 MOV R1,#+1 \ 00000030 581380E5 STR R1,[R0, #+856] 5177 if(curpage*itemFromDispws1,LG_GRSTATESTRING,connect_state,RXstate,RX,TX,sendq_l,hostname,logmsg); \ 000000C4 BC20A0E3 MOV R2,#+188 \ 000000C8 602D82E3 ORR R2,R2,#0x1800 \ 000000CC 0A2082E0 ADD R2,R2,R10 \ 000000D0 04002DE9 PUSH {R2} \ 000000D4 8C20A0E3 MOV R2,#+140 \ 000000D8 6C2D82E3 ORR R2,R2,#0x1B00 \ 000000DC 0A2082E0 ADD R2,R2,R10 \ 000000E0 04002DE9 PUSH {R2} \ 000000E4 84229AE5 LDR R2,[R10, #+644] \ 000000E8 04002DE9 PUSH {R2} \ 000000EC 02002DE9 PUSH {R1} \ 000000F0 01002DE9 PUSH {R0} \ 000000F4 68329AE5 LDR R3,[R10, #+616] \ 000000F8 6C229AE5 LDR R2,[R10, #+620] \ 000000FC 300094E5 LDR R0,[R4, #+48] \ 00000100 AE1F85E2 ADD R1,R5,#+696 \ 00000104 240100EF SWI +292 5221 if(pm != pl) \ 00000108 18009DE5 LDR R0,[SP, #+24] \ 0000010C 1C109DE5 LDR R1,[SP, #+28] \ 00000110 14D08DE2 ADD SP,SP,#+20 \ 00000114 010050E1 CMP R0,R1 \ 00000118 3400000A BEQ ??method0_3 \ 0000011C C4039FE5 LDR R0,??method0_0+0x10 ;; BGPBcolor \ 00000120 0B30A0E1 MOV R3,R11 \ 00000124 0010A0E1 MOV R1,R0 \ 00000128 02002DE9 PUSH {R1} \ 0000012C 01002DE9 PUSH {R0} \ 00000130 0920A0E1 MOV R2,R9 \ 00000134 0810A0E1 MOV R1,R8 \ 00000138 0000A0E3 MOV R0,#+0 \ 0000013C 01002DE9 PUSH {R0} \ 00000140 0600A0E1 MOV R0,R6 5222 { 5223 /* DrawRectangle(0,scr_h-4-2*GetFontYSIZE(FONT_SMALL_BOLD),scr_w-1,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD)-2,0, 5224 GetPaletteAdrByColorIndex(0), 5225 GetPaletteAdrByColorIndex(0));*/ 5226 // pos_status = ((scr_w-1) * pl) / pm; 5227 /* DrawRectangle(1,scr_h-4-2*GetFontYSIZE(FONT_SMALL_BOLD)+1,pos_status,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD)-3,0, 5228 GetPaletteAdrByColorIndex(14), 5229 GetPaletteAdrByColorIndex(14)); */ 5230 // wstrcatprintf(data->ws1,"\nLoading images..."); 5231 5232 DrawRectangle(rc.x,rc.y,rc.x2,rc.y2,0,BGPBcolor,BGPBcolor); \ 00000144 B40100EF SWI +436 5233 pos_status = (((rc.x2-rc.x)-1) * pl) / pm; \ 00000148 14109DE5 LDR R1,[SP, #+20] \ 0000014C 060049E0 SUB R0,R9,R6 \ 00000150 010040E2 SUB R0,R0,#+1 \ 00000154 910000E0 MUL R0,R1,R0 \ 00000158 10109DE5 LDR R1,[SP, #+16] 5234 DrawRectangle(rc.x+2,rc.y+2,rc.x+pos_status+2,rc.y2-2,0,PBcolor,PBcolor); \ 0000015C 02304BE2 SUB R3,R11,#+2 \ 00000160 ........ _BLF ??div32_a,??rA??div32_a \ 00000164 80039FE5 LDR R0,??method0_0+0x14 ;; PBcolor \ 00000168 0020A0E1 MOV R2,R0 \ 0000016C 04002DE9 PUSH {R2} \ 00000170 01002DE9 PUSH {R0} \ 00000174 0000A0E3 MOV R0,#+0 \ 00000178 01002DE9 PUSH {R0} \ 0000017C 060081E0 ADD R0,R1,R6 \ 00000180 022080E2 ADD R2,R0,#+2 \ 00000184 021088E2 ADD R1,R8,#+2 \ 00000188 020086E2 ADD R0,R6,#+2 \ 0000018C B40100EF SWI +436 5235 5236 if(total_smiles) \ 00000190 58039FE5 LDR R0,??method0_0+0x18 ;; total_smiles \ 00000194 001090E5 LDR R1,[R0, #+0] \ 00000198 18D08DE2 ADD SP,SP,#+24 \ 0000019C 000051E3 CMP R1,#+0 \ 000001A0 0300000A BEQ ??method0_4 5237 { 5238 wstrcatprintf(data->ws1,"\nLoaded %d smiles",total_smiles); \ 000001A4 002090E5 LDR R2,[R0, #+0] \ 000001A8 300094E5 LDR R0,[R4, #+48] \ 000001AC BC1F85E2 ADD R1,R5,#+752 \ 000001B0 160200EF SWI +534 5239 } 5240 if (xstatuses_load) \ ??method0_4: \ 000001B4 38039FE5 LDR R0,??method0_0+0x1C ;; xstatuses_load \ 000001B8 000090E5 LDR R0,[R0, #+0] \ 000001BC 000050E3 CMP R0,#+0 \ 000001C0 0A00000A BEQ ??method0_3 5241 { 5242 wstrcatprintf(data->ws1,"\nLoaded %d xstatus",total_xstatuses); \ 000001C4 ........ LDR R0,??DataTable197 ;; total_xstatuses \ 000001C8 C11F85E2 ADD R1,R5,#+772 \ 000001CC 002090E5 LDR R2,[R0, #+0] \ 000001D0 300094E5 LDR R0,[R4, #+48] \ 000001D4 160200EF SWI +534 \ 000001D8 040000EA B ??method0_3 5243 } 5244 } 5245 } 5246 else 5247 { 5248 wsprintf(data->ws1,"State: %d, RXstate: %d",connect_state,RXstate); \ ??method0_2: \ 000001DC 68329AE5 LDR R3,[R10, #+616] \ 000001E0 6C229AE5 LDR R2,[R10, #+620] \ 000001E4 300094E5 LDR R0,[R4, #+48] \ 000001E8 C61F85E2 ADD R1,R5,#+792 \ 000001EC 240100EF SWI +292 5249 } 5250 5251 DrawString(data->ws1,3,3+YDISP,scr_w-4,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD),FONT_SMALL,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ ??method0_3: \ 000001F0 1700A0E3 MOV R0,#+23 \ 000001F4 2E0100EF SWI +302 \ 000001F8 0060A0E1 MOV R6,R0 \ 000001FC 0000A0E3 MOV R0,#+0 \ 00000200 2E0100EF SWI +302 \ 00000204 0080A0E1 MOV R8,R0 \ 00000208 0300A0E3 MOV R0,#+3 \ 0000020C C50100EF SWI +453 \ 00000210 40002DE9 PUSH {R6} \ 00000214 00012DE9 PUSH {R8} \ 00000218 0010A0E3 MOV R1,#+0 \ 0000021C 02002DE9 PUSH {R1} \ 00000220 043047E2 SUB R3,R7,#+4 \ 00000224 0320A0E3 MOV R2,#+3 \ 00000228 0710A0E3 MOV R1,#+7 \ 0000022C 02002DE9 PUSH {R1} \ 00000230 10109DE5 LDR R1,[SP, #+16] \ 00000234 041041E2 SUB R1,R1,#+4 \ 00000238 000041E0 SUB R0,R1,R0 \ 0000023C 01002DE9 PUSH {R0} \ 00000240 300094E5 LDR R0,[R4, #+48] \ 00000244 0310A0E3 MOV R1,#+3 \ 00000248 4C0100EF SWI +332 \ 0000024C 14D08DE2 ADD SP,SP,#+20 \ 00000250 290000EA B ??method0_5 5252 } 5253 else 5254 { 5255 wsprintf(data->ws1,"%t UIN!","Выберите"); \ ??method0_1: \ 00000254 300094E5 LDR R0,[R4, #+48] \ 00000258 CE2F85E2 ADD R2,R5,#+824 \ 0000025C CC1F85E2 ADD R1,R5,#+816 \ 00000260 240100EF SWI +292 5256 DrawLine(0,CLIST_Y1-3,ScreenW()-1,CLIST_Y1-3,0,clrWhite); \ 00000264 0700A0E3 MOV R0,#+7 \ 00000268 C50100EF SWI +453 \ 0000026C 0060A0E1 MOV R6,R0 \ 00000270 888100EF SWI +33160 \ 00000274 0080A0E1 MOV R8,R0 \ 00000278 0700A0E3 MOV R0,#+7 \ 0000027C C50100EF SWI +453 \ 00000280 2010A0E3 MOV R1,#+32 \ 00000284 7C1D81E3 ORR R1,R1,#0x1F00 \ 00000288 0A1081E0 ADD R1,R1,R10 \ 0000028C 02002DE9 PUSH {R1} \ 00000290 053086E2 ADD R3,R6,#+5 \ 00000294 012048E2 SUB R2,R8,#+1 \ 00000298 0010A0E3 MOV R1,#+0 \ 0000029C 02002DE9 PUSH {R1} \ 000002A0 051080E2 ADD R1,R0,#+5 \ 000002A4 0000A0E3 MOV R0,#+0 \ 000002A8 B30100EF SWI +435 5257 DrawString(data->ws1,2,YDISP+2,scr_w-1,YDISP+GetFontYSIZE(FONT_SMALL),FONT_SMALL,0,fntSelect,0); \ 000002AC 0700A0E3 MOV R0,#+7 \ 000002B0 C50100EF SWI +453 \ 000002B4 0010A0E3 MOV R1,#+0 \ 000002B8 02002DE9 PUSH {R1} \ 000002BC 013047E2 SUB R3,R7,#+1 \ 000002C0 0220A0E3 MOV R2,#+2 \ 000002C4 F810A0E3 MOV R1,#+248 \ 000002C8 401E81E3 ORR R1,R1,#0x400 \ 000002CC 051081E0 ADD R1,R1,R5 \ 000002D0 02002DE9 PUSH {R1} \ 000002D4 0010A0E3 MOV R1,#+0 \ 000002D8 02002DE9 PUSH {R1} \ 000002DC 0710A0E3 MOV R1,#+7 \ 000002E0 02002DE9 PUSH {R1} \ 000002E4 01002DE9 PUSH {R0} \ 000002E8 300094E5 LDR R0,[R4, #+48] \ 000002EC 0210A0E3 MOV R1,#+2 \ 000002F0 4C0100EF SWI +332 5258 DrawList(); \ 000002F4 ........ BL DrawList \ 000002F8 1CD08DE2 ADD SP,SP,#+28 5259 } 5260 5261 if(IsInvertSoftKey) \ ??method0_5: \ 000002FC 00109DE5 LDR R1,[SP, #+0] \ 00000300 340094E5 LDR R0,[R4, #+52] \ 00000304 048041E2 SUB R8,R1,#+4 \ 00000308 ........ LDR R1,??DataTable200 ;; IsInvertSoftKey \ 0000030C C760A0E1 ASR R6,R7,#+1 \ 00000310 001091E5 LDR R1,[R1, #+0] \ 00000314 047047E2 SUB R7,R7,#+4 \ 00000318 D19FA0E3 MOV R9,#+836 \ 0000031C 000051E3 CMP R1,#+0 \ 00000320 3600000A BEQ ??method0_6 5262 { 5263 wsprintf(data->ws2,percent_t,LG_GRSKEYEXIT); \ 00000324 052089E0 ADD R2,R9,R5 \ 00000328 181085E2 ADD R1,R5,#+24 \ 0000032C 240100EF SWI +292 5264 DrawString(data->ws2,(scr_w >> 1),scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD),scr_w-4,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNRIGHT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000330 1700A0E3 MOV R0,#+23 \ 00000334 2E0100EF SWI +302 \ 00000338 0090A0E1 MOV R9,R0 \ 0000033C 0000A0E3 MOV R0,#+0 \ 00000340 2E0100EF SWI +302 \ 00000344 00B0A0E1 MOV R11,R0 \ 00000348 0300A0E3 MOV R0,#+3 \ 0000034C C50100EF SWI +453 \ 00000350 00022DE9 PUSH {R9} \ 00000354 00082DE9 PUSH {R11} \ 00000358 0410A0E3 MOV R1,#+4 \ 0000035C 02002DE9 PUSH {R1} \ 00000360 0730A0E1 MOV R3,R7 \ 00000364 002048E0 SUB R2,R8,R0 \ 00000368 0310A0E3 MOV R1,#+3 \ 0000036C 02002DE9 PUSH {R1} \ 00000370 0810A0E1 MOV R1,R8 \ 00000374 02002DE9 PUSH {R1} \ 00000378 340094E5 LDR R0,[R4, #+52] \ 0000037C 0610A0E1 MOV R1,R6 \ 00000380 4C0100EF SWI +332 5265 5266 wsprintf(data->ws2,percent_t,cltop?LG_GRSKEYCLIST:empty_str); \ 00000384 94029AE5 LDR R0,[R10, #+660] \ 00000388 14D08DE2 ADD SP,SP,#+20 \ 0000038C 000050E3 CMP R0,#+0 \ 00000390 340094E5 LDR R0,[R4, #+52] \ 00000394 D32F8512 ADDNE R2,R5,#+844 \ 00000398 21208502 ADDEQ R2,R5,#+33 \ 0000039C 181085E2 ADD R1,R5,#+24 \ 000003A0 240100EF SWI +292 5267 DrawString(data->ws2,3,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD), scr_w>>1,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 000003A4 1700A0E3 MOV R0,#+23 \ 000003A8 2E0100EF SWI +302 \ 000003AC 0050A0E1 MOV R5,R0 \ 000003B0 0000A0E3 MOV R0,#+0 \ 000003B4 2E0100EF SWI +302 \ 000003B8 0070A0E1 MOV R7,R0 \ 000003BC 0300A0E3 MOV R0,#+3 \ 000003C0 C50100EF SWI +453 \ 000003C4 20002DE9 PUSH {R5} \ 000003C8 80002DE9 PUSH {R7} \ 000003CC 0110A0E3 MOV R1,#+1 \ 000003D0 02002DE9 PUSH {R1} \ 000003D4 0630A0E1 MOV R3,R6 \ 000003D8 002048E0 SUB R2,R8,R0 \ 000003DC 0310A0E3 MOV R1,#+3 \ 000003E0 02002DE9 PUSH {R1} \ 000003E4 0810A0E1 MOV R1,R8 \ 000003E8 02002DE9 PUSH {R1} \ 000003EC 340094E5 LDR R0,[R4, #+52] \ 000003F0 0310A0E3 MOV R1,#+3 \ 000003F4 4C0100EF SWI +332 \ 000003F8 14D08DE2 ADD SP,SP,#+20 \ 000003FC F78FBDE8 POP {R0-R2,R4-R11,PC} 5268 } 5269 else 5270 { 5271 wsprintf(data->ws2,percent_t,cltop?LG_GRSKEYCLIST:empty_str); \ ??method0_6: \ 00000400 94129AE5 LDR R1,[R10, #+660] \ 00000404 000051E3 CMP R1,#+0 \ 00000408 D32F8512 ADDNE R2,R5,#+844 \ 0000040C 21208502 ADDEQ R2,R5,#+33 \ 00000410 181085E2 ADD R1,R5,#+24 \ 00000414 240100EF SWI +292 5272 DrawString(data->ws2,(scr_w >> 1),scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD),scr_w-4,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNRIGHT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000418 1700A0E3 MOV R0,#+23 \ 0000041C 2E0100EF SWI +302 \ 00000420 00A0A0E1 MOV R10,R0 \ 00000424 0000A0E3 MOV R0,#+0 \ 00000428 2E0100EF SWI +302 \ 0000042C 00B0A0E1 MOV R11,R0 \ 00000430 0300A0E3 MOV R0,#+3 \ 00000434 C50100EF SWI +453 \ 00000438 00042DE9 PUSH {R10} \ 0000043C 00082DE9 PUSH {R11} \ 00000440 0410A0E3 MOV R1,#+4 \ 00000444 02002DE9 PUSH {R1} \ 00000448 0730A0E1 MOV R3,R7 \ 0000044C 002048E0 SUB R2,R8,R0 \ 00000450 0310A0E3 MOV R1,#+3 \ 00000454 02002DE9 PUSH {R1} \ 00000458 0810A0E1 MOV R1,R8 \ 0000045C 02002DE9 PUSH {R1} \ 00000460 340094E5 LDR R0,[R4, #+52] \ 00000464 0610A0E1 MOV R1,R6 \ 00000468 4C0100EF SWI +332 5273 5274 wsprintf(data->ws2,percent_t,LG_GRSKEYEXIT); \ 0000046C 340094E5 LDR R0,[R4, #+52] \ 00000470 052089E0 ADD R2,R9,R5 \ 00000474 181085E2 ADD R1,R5,#+24 \ 00000478 240100EF SWI +292 5275 DrawString(data->ws2,3,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD), scr_w>>1,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 0000047C 1700A0E3 MOV R0,#+23 \ 00000480 2E0100EF SWI +302 \ 00000484 0050A0E1 MOV R5,R0 \ 00000488 0000A0E3 MOV R0,#+0 \ 0000048C 2E0100EF SWI +302 \ 00000490 0070A0E1 MOV R7,R0 \ 00000494 0300A0E3 MOV R0,#+3 \ 00000498 C50100EF SWI +453 \ 0000049C 20002DE9 PUSH {R5} \ 000004A0 80002DE9 PUSH {R7} \ 000004A4 0110A0E3 MOV R1,#+1 \ 000004A8 02002DE9 PUSH {R1} \ 000004AC 0630A0E1 MOV R3,R6 \ 000004B0 002048E0 SUB R2,R8,R0 \ 000004B4 0310A0E3 MOV R1,#+3 \ 000004B8 02002DE9 PUSH {R1} \ 000004BC 0810A0E1 MOV R1,R8 \ 000004C0 02002DE9 PUSH {R1} \ 000004C4 340094E5 LDR R0,[R4, #+52] \ 000004C8 0310A0E3 MOV R1,#+3 \ 000004CC 4C0100EF SWI +332 \ 000004D0 28D08DE2 ADD SP,SP,#+40 5276 } 5277 /* 5278 wsprintf(data->ws2,"%d %s",addonuin[0].uin,addonuin[0].pass); 5279 DrawString(data->ws2,3,scr_h-4-(GetFontYSIZE(FONT_MEDIUM_BOLD)*3), scr_w>>1,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 5280 */ 5281 5282 } \ 000004D4 F78FBDE8 POP {R0-R2,R4-R11,PC} ;; return \ ??method0_0: \ 000004D8 ........ DC32 pictures_max \ 000004DC ........ DC32 PBRECT \ 000004E0 ........ DC32 pictures_loaded \ 000004E4 ........ DC32 IsShowInfo \ 000004E8 ........ DC32 BGPBcolor \ 000004EC ........ DC32 PBcolor \ 000004F0 ........ DC32 total_smiles \ 000004F4 ........ DC32 xstatuses_load 5283 \ In segment CODE, align 4, keep-with-next 5284 void method1(MAIN_GUI *data,void *(*malloc_adr)(int)) 5285 { \ method1: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5286 data->ws1=AllocWS(256); \ 00000008 400FA0E3 MOV R0,#+256 \ 0000000C 250100EF SWI +293 \ 00000010 300084E5 STR R0,[R4, #+48] 5287 data->ws2=AllocWS(256); \ 00000014 400FA0E3 MOV R0,#+256 \ 00000018 250100EF SWI +293 \ 0000001C 340084E5 STR R0,[R4, #+52] 5288 data->gui.state=1; \ 00000020 0100A0E3 MOV R0,#+1 \ 00000024 0C00C4E5 STRB R0,[R4, #+12] 5289 } \ 00000028 1080BDE8 POP {R4,PC} ;; return 5290 \ In segment CODE, align 4, keep-with-next 5291 void method2(MAIN_GUI *data,void (*mfree_adr)(void *)) 5292 { \ method2: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5293 FreeWS(data->ws1); \ 00000008 300094E5 LDR R0,[R4, #+48] \ 0000000C 290100EF SWI +297 5294 FreeWS(data->ws2); \ 00000010 340094E5 LDR R0,[R4, #+52] \ 00000014 290100EF SWI +297 5295 data->gui.state=0; \ 00000018 0000A0E3 MOV R0,#+0 \ 0000001C 0C00C4E5 STRB R0,[R4, #+12] 5296 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 5297 \ In segment CODE, align 4, keep-with-next 5298 void method3(MAIN_GUI *data,void *(*malloc_adr)(int),void (*mfree_adr)(void *)) 5299 { \ method3: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5300 DisableIDLETMR(); \ 00000008 7F0100EF SWI +383 5301 data->gui.state=2; \ 0000000C 0200A0E3 MOV R0,#+2 \ 00000010 0C00C4E5 STRB R0,[R4, #+12] 5302 } \ 00000014 1080BDE8 POP {R4,PC} ;; return 5303 \ In segment CODE, align 4, keep-with-next 5304 void method4(MAIN_GUI *data,void (*mfree_adr)(void *)) 5305 { 5306 if (data->gui.state!=2) \ method4: \ 00000000 0C10D0E5 LDRB R1,[R0, #+12] \ 00000004 020051E3 CMP R1,#+2 5307 return; 5308 data->gui.state=1; \ 00000008 0110A003 MOVEQ R1,#+1 \ 0000000C 0C10C005 STRBEQ R1,[R0, #+12] 5309 } \ 00000010 1EFF2FE1 BX LR ;; return 5310 \ In segment CODE, align 4, keep-with-next 5311 int method5(MAIN_GUI *data,GUI_MSG *msg) 5312 { \ method5: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 \ 00000008 0140A0E1 MOV R4,R1 5313 DirectRedrawGUI(); 5314 if (msg->gbsmsg->msg==KEY_DOWN) \ 0000000C 9350A0E3 MOV R5,#+147 \ 00000010 3F0100EF SWI +319 \ 00000014 041094E5 LDR R1,[R4, #+4] \ 00000018 405F85E3 ORR R5,R5,#0x100 \ 0000001C F200D1E1 LDRSH R0,[R1, #+2] \ 00000020 050050E1 CMP R0,R5 \ 00000024 5300001A BNE ??method5_1 5315 { 5316 switch(msg->gbsmsg->submess) \ 00000028 ........ LDR R6,??DataTable215 ;; S_ICONS \ 0000002C ........ LDR R0,??DataTable200 ;; IsInvertSoftKey \ 00000030 041091E5 LDR R1,[R1, #+4] \ 00000034 942296E5 LDR R2,[R6, #+660] \ 00000038 003090E5 LDR R3,[R0, #+0] \ 0000003C ........ LDR R7,??DataTable214 ;; create_connect \ 00000040 DC00A0E3 MOV R0,#+220 \ 00000044 640D80E3 ORR R0,R0,#0x1900 \ 00000048 068080E0 ADD R8,R0,R6 \ 0000004C ........ LDR R0,??DataTable202 ;; WriteDefSettings \ 00000050 0390A0E3 MOV R9,#+3 \ 00000054 01A0A0E3 MOV R10,#+1 \ 00000058 00B0A0E3 MOV R11,#+0 \ 0000005C 011041E2 SUB R1,R1,#+1 \ 00000060 330051E3 CMP R1,#+51 \ 00000064 4300008A BHI ??method5_1 \ 00000068 01CF8FE2 ADR R12,??method5_0 \ 0000006C 01C0DCE7 LDRB R12,[R12, R1] \ 00000070 0CF18FE0 ADD PC,PC,R12, LSL #+2 \ ??method5_0: \ 00000074 0E404017 DC8 +14,+64,+64,+23 \ 00000078 40404040 DC8 +64,+64,+64,+64 \ 0000007C 40401D40 DC8 +64,+64,+29,+64 \ 00000080 40404040 DC8 +64,+64,+64,+64 \ 00000084 40404040 DC8 +64,+64,+64,+64 \ 00000088 40404040 DC8 +64,+64,+64,+64 \ 0000008C 400C4040 DC8 +64,+12,+64,+64 \ 00000090 40404040 DC8 +64,+64,+64,+64 \ 00000094 40404040 DC8 +64,+64,+64,+64 \ 00000098 40404040 DC8 +64,+64,+64,+64 \ 0000009C 40404040 DC8 +64,+64,+64,+64 \ 000000A0 40404028 DC8 +64,+64,+64,+40 \ 000000A4 2B30353B DC8 +43,+48,+53,+59 5317 { 5318 case ENTER_BUTTON: Enter(); break; \ ??method5_2: \ 000000A8 ........ BL Enter \ 000000AC 310000EA B ??method5_1 5319 case LEFT_SOFT: 5320 if(IsInvertSoftKey) \ ??method5_3: \ 000000B0 000053E3 CMP R3,#+0 \ 000000B4 0400000A BEQ ??method5_4 5321 { 5322 if (cltop) create_contactlist_menu(); \ 000000B8 000052E3 CMP R2,#+0 \ 000000BC 0000000A BEQ ??method5_5 \ 000000C0 ........ BL create_contactlist_menu 5323 unhooked2=1; \ ??method5_5: \ 000000C4 1CA386E5 STR R10,[R6, #+796] \ 000000C8 2A0000EA B ??method5_1 5324 } 5325 else return 1; \ ??method5_4: \ 000000CC 0100A0E3 MOV R0,#+1 \ 000000D0 F68FBDE8 POP {R1,R2,R4-R11,PC} 5326 // if (cltop) remake_clmenu(); 5327 break; 5328 case RIGHT_SOFT: 5329 if(IsInvertSoftKey) \ ??method5_6: \ 000000D4 000053E3 CMP R3,#+0 \ 000000D8 FBFFFF1A BNE ??method5_4 5330 return(1); //Происходит вызов GeneralFunc для тек. GUI -> закрытие GUI 5331 else 5332 { 5333 if (cltop) create_contactlist_menu(); \ 000000DC 000052E3 CMP R2,#+0 \ 000000E0 0000000A BEQ ??method5_7 \ 000000E4 ........ BL create_contactlist_menu 5334 unhooked2=1; \ ??method5_7: \ 000000E8 1CA386E5 STR R10,[R6, #+796] 5335 } 5336 case GREEN_BUTTON: 5337 disautorecconect=0; \ ??method5_8: \ 000000EC 48B286E5 STR R11,[R6, #+584] 5338 if ((connect_state==0)&&(sock==-1)) \ 000000F0 6C0296E5 LDR R0,[R6, #+620] \ 000000F4 000050E3 CMP R0,#+0 \ 000000F8 70029605 LDREQ R0,[R6, #+624] \ 000000FC 01007003 CMNEQ R0,#+1 \ 00000100 1C00001A BNE ??method5_1 5339 { 5340 GBS_DelTimer(&reconnect_tmr); \ ??method5_9: \ 00000104 0800A0E1 MOV R0,R8 \ 00000108 8C0100EF SWI +396 5341 DNR_TRIES=3; \ 0000010C 289386E5 STR R9,[R6, #+808] 5342 SUBPROC((void *)create_connect); \ 00000110 0700A0E1 MOV R0,R7 \ 00000114 160000EA B ??method5_10 5343 } 5344 break; 5345 case '0': 5346 SUBPROC((void*)end_socket); \ ??method5_11: \ 00000118 ........ LDR R0,??DataTable210 ;; end_socket \ 0000011C 710100EF SWI +369 5347 GBS_DelTimer(&reconnect_tmr); \ 00000120 F7FFFFEA B ??method5_9 5348 DNR_TRIES=3; 5349 SUBPROC((void *)create_connect); 5350 break; 5351 5352 //------------------------------------------------------// 5353 5354 case '1': 5355 Is_Sounds_Enabled=!(Is_Sounds_Enabled); \ ??method5_12: \ 00000124 4C1296E5 LDR R1,[R6, #+588] \ 00000128 000051E3 CMP R1,#+0 \ 0000012C 00A0A013 MOVNE R10,#+0 \ 00000130 4CA286E5 STR R10,[R6, #+588] 5356 SUBPROC((void*)WriteDefSettings); \ 00000134 0E0000EA B ??method5_10 5357 break; 5358 case '2': 5359 Is_Vibra_Enabled=!(Is_Vibra_Enabled); \ ??method5_13: \ 00000138 0C1296E5 LDR R1,[R6, #+524] \ 0000013C 000051E3 CMP R1,#+0 \ 00000140 00A0A013 MOVNE R10,#+0 \ 00000144 0CA286E5 STR R10,[R6, #+524] 5360 SUBPROC((void*)WriteDefSettings); \ 00000148 090000EA B ??method5_10 5361 break; 5362 case '3': 5363 if(CurrentPrivateStatus!=1) \ ??method5_14: \ 0000014C 580296E5 LDR R0,[R6, #+600] \ 00000150 010050E3 CMP R0,#+1 \ 00000154 0300A003 MOVEQ R0,#+3 5364 SetPrivateStatus(1);//Инвиз \ 00000158 0100A013 MOVNE R0,#+1 \ 0000015C ........ _BLF SetPrivateStatus,??SetPrivateStatus??rA \ 00000160 040000EA B ??method5_1 5365 else 5366 SetPrivateStatus(3); 5367 break; 5368 case '4': 5369 Is_Double_Vibra_On=!(Is_Double_Vibra_On); \ ??method5_15: \ 00000164 F41196E5 LDR R1,[R6, #+500] \ 00000168 000051E3 CMP R1,#+0 \ 0000016C 00A0A013 MOVNE R10,#+0 \ 00000170 F4A186E5 STR R10,[R6, #+500] 5370 SUBPROC((void*)WriteDefSettings); \ ??method5_10: \ 00000174 710100EF SWI +369 5371 break; 5372 } 5373 } 5374 5375 if(msg->gbsmsg->msg==LONG_PRESS || msg->gbsmsg->msg==KEY_DOWN) \ ??method5_1: \ 00000178 040094E5 LDR R0,[R4, #+4] \ 0000017C 022085E2 ADD R2,R5,#+2 \ 00000180 F210D0E1 LDRSH R1,[R0, #+2] \ 00000184 020051E1 CMP R1,R2 \ 00000188 05005111 CMPNE R1,R5 \ 0000018C 0900001A BNE ??method5_16 5376 { 5377 switch(msg->gbsmsg->submess) \ 00000190 040090E5 LDR R0,[R0, #+4] \ 00000194 3B0050E2 SUBS R0,R0,#+59 \ 00000198 0200000A BEQ ??method5_17 \ 0000019C 010050E2 SUBS R0,R0,#+1 \ 000001A0 0300000A BEQ ??method5_18 \ 000001A4 000000EA B ??method5_19 5378 { 5379 case UP_BUTTON: MoveUp(); break; \ ??method5_17: \ 000001A8 ........ BL MoveUp \ ??method5_19: \ 000001AC 0000A0E3 MOV R0,#+0 \ 000001B0 F68FBDE8 POP {R1,R2,R4-R11,PC} 5380 case DOWN_BUTTON: MoveDown(); break; \ ??method5_18: \ 000001B4 ........ BL MoveDown 5381 } 5382 } 5383 5384 return(0); \ ??method5_16: \ 000001B8 0000A0E3 MOV R0,#+0 \ 000001BC F68FBDE8 POP {R1,R2,R4-R11,PC} ;; return 5385 } 5386 \ In segment CODE, align 4, keep-with-next 5387 int method8(void){return(0);} \ method8: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 5388 \ In segment CODE, align 4, keep-with-next 5389 int method9(void){return(0);} \ method9: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 5390 5391 const void * const gui_methods[11]={ 5392 (void *)method0, //Redraw 5393 (void *)method1, //Create 5394 (void *)method2, //Close 5395 (void *)method3, //Focus 5396 (void *)method4, //Unfocus 5397 (void *)method5, //OnKey 5398 0, 5399 (void *)kill_data, //method7, //Destroy 5400 (void *)method8, 5401 (void *)method9, 5402 0 5403 }; 5404 5405 \ In segment CODE, align 4, keep-with-next 5406 int my_keyhook(int key, int m) 5407 { \ my_keyhook: \ 00000000 30402DE9 PUSH {R4,R5,LR} 5408 if(m==KEY_DOWN) \ 00000004 9300A0E3 MOV R0,#+147 \ 00000008 400F80E3 ORR R0,R0,#0x100 \ 0000000C 000051E1 CMP R1,R0 \ 00000010 0E00001A BNE ??my_keyhook_0 5409 { 5410 #ifdef ELKA 5411 if ((key==CAMERA_BUTTON)&&(!IsUnlocked())) 5412 { 5413 GBS_StopTimer(&away_tmr); 5414 msg_away_timer=AUTO_ENGADE*12; 5415 away_timer(); 5416 main_d=1; 5417 } 5418 else 5419 { 5420 #endif 5421 if(Reset_timer) \ 00000014 3C009FE5 LDR R0,??my_keyhook_1 ;; Reset_timer \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 3080BD08 POPEQ {R4,R5,PC} 5422 { 5423 msg_away_timer=0; \ 00000024 ........ LDR R4,??DataTable215 ;; S_ICONS \ 00000028 0050A0E3 MOV R5,#+0 5424 away_m=0; 5425 if(change_back_status) \ 0000002C 280294E5 LDR R0,[R4, #+552] \ 00000030 1C5284E5 STR R5,[R4, #+540] \ 00000034 205284E5 STR R5,[R4, #+544] \ 00000038 000050E3 CMP R0,#+0 \ 0000003C 3080BD08 POPEQ {R4,R5,PC} 5426 { 5427 CurrentStatus=status_rem; \ 00000040 240294E5 LDR R0,[R4, #+548] \ 00000044 100284E5 STR R0,[R4, #+528] 5428 set_my_status(); \ 00000048 ........ BL set_my_status 5429 change_back_status=0; \ 0000004C 285284E5 STR R5,[R4, #+552] 5430 } 5431 } 5432 #ifdef ELKA 5433 } 5434 #endif 5435 } 5436 return 0; \ ??my_keyhook_0: \ 00000050 0000A0E3 MOV R0,#+0 \ 00000054 3080BDE8 POP {R4,R5,PC} ;; return \ ??my_keyhook_1: \ 00000058 ........ DC32 Reset_timer 5437 } \ In segment DATA_C, align 4, align-sorted 5438 5439 const RECT Canvas={0,0,0,0}; \ Canvas: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 ........ DC32 `?` \ 0000000C ........ DC32 `?` \ 00000010 ........ DC32 `?> %s <<" \ 3C3C00 \ 00000135 000000 DC8 0, 0, 0 \ 00000138 2563257400 DC8 "%c%t" \ 0000013D 000000 DC8 0, 0, 0 \ 00000140 2825642F2564 DC8 "(%d/%d)" \ 2900 \ 00000148 EEF8E8E1EAE0 DC8 "\356\370\350\341\352\340" \ 00 \ 0000014F 00 DC8 0 \ 00000150 57616974696E DC8 "Waiting for GPRS up..." \ 6720666F7220 \ 475052532075 \ 702E2E2E00 \ 00000167 00 DC8 0 \ 00000168 436F6E6E6563 DC8 "Connect to %s:%d" \ 7420746F2025 \ 733A256400 \ 00000179 000000 DC8 0, 0, 0 \ 0000017C 0A436F6E6E65 DC8 "\012Connect by IP!" \ 637420627920 \ 49502100 \ 0000018C 53656E642044 DC8 "Send DNR..." \ 4E522E2E2E00 \ 00000198 444E52204552 DC8 "DNR ERROR %d!" \ 524F52202564 \ 2100 \ 000001A6 0000 DC8 0, 0 \ 000001A8 444E52204F6B DC8 "DNR Ok, connecting..." \ 2C20636F6E6E \ 656374696E67 \ 2E2E2E00 \ 000001BE 0000 DC8 0, 0 \ 000001C0 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 \ 000001D9 000000 DC8 0, 0, 0 \ 000001DC 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 \ 00000207 00 DC8 0 \ 00000208 D1E5F0E2E5F0 DC8 "\321\345\360\342\345\360 \355\345 \355\340\351\344\345\355!" \ 20EDE520EDE0 \ E9E4E5ED2100 \ 0000021A 0000 DC8 0, 0 \ 0000021C 426164207061 DC8 "Bad packet" \ 636B657400 \ 00000227 00 DC8 0 \ 00000228 534325643A20 DC8 "SC%d: %04X" \ 2530345800 \ 00000233 00 DC8 0 \ 00000234 4552523A2025 DC8 "ERR: %s" \ 7300 \ 0000023C 75696E256400 DC8 "uin%d" \ 00000242 0000 DC8 0, 0 \ 00000244 4D534725643A DC8 "MSG%d: %s" \ 20257300 \ 0000024E 0000 DC8 0, 0 \ 00000250 257325642E77 DC8 "%s%d.wav" \ 617600 \ 00000259 000000 DC8 0, 0, 0 \ 0000025C 50696E672025 DC8 "Ping %d-%d seconds!" \ 642D25642073 \ 65636F6E6473 \ 2100 \ 00000270 50696E673A20 DC8 "Ping: %d sec" \ 256420736563 \ 00 \ 0000027D 000000 DC8 0, 0, 0 \ 00000280 2025733A2025 DC8 " %s: %02d:%02d:%02d" \ 3032643A2530 \ 32643A253032 \ 6400 \ 00000294 537461747573 DC8 "Status change" \ 206368616E67 \ 6500 \ 000002A2 0000 DC8 0, 0 \ 000002A4 5B25733A2025 DC8 "[%s: %s]\012" \ 735D0A00 \ 000002AE 0000 DC8 0, 0 \ 000002B0 25642E202564 DC8 "%d. %d" \ 00 \ 000002B7 00 DC8 0 \ 000002B8 53746174653A DC8 53H, 74H, 61H, 74H, 65H, 3AH, 20H, 25H \ 2025 \ 000002C0 642C20525873 DC8 64H, 2CH, 20H, 52H, 58H, 73H, 74H, 61H \ 7461 \ 000002C8 74653A202564 DC8 74H, 65H, 3AH, 20H, 25H, 64H, 0AH, 52H \ 0A52 \ 000002D0 783A2564622C DC8 78H, 3AH, 25H, 64H, 62H, 2CH, 54H, 78H \ 5478 \ 000002D8 3A2564620A51 DC8 3AH, 25H, 64H, 62H, 0AH, 51H, 75H, 65H \ 7565 \ 000002E0 75653A202564 DC8 75H, 65H, 3AH, 20H, 25H, 64H, 62H, 0AH \ 620A \ 000002E8 25730A257300 DC8 25H, 73H, 0AH, 25H, 73H, 0 \ 000002EE 0000 DC8 0, 0 \ 000002F0 0A4C6F616465 DC8 "\012Loaded %d smiles" \ 642025642073 \ 6D696C657300 \ 00000302 0000 DC8 0, 0 \ 00000304 0A4C6F616465 DC8 "\012Loaded %d xstatus" \ 642025642078 \ 737461747573 \ 00 \ 00000317 00 DC8 0 \ 00000318 53746174653A DC8 "State: %d, RXstate: %d" \ 2025642C2052 \ 587374617465 \ 3A20256400 \ 0000032F 00 DC8 0 \ 00000330 25742055494E DC8 "%t UIN!" \ 2100 \ 00000338 C2FBE1E5F0E8 DC8 "\302\373\341\345\360\350\362\345" \ F2E500 \ 00000341 000000 DC8 0, 0, 0 \ 00000344 4578697400 DC8 "Exit" \ 00000349 000000 DC8 0, 0, 0 \ 0000034C 434C69737400 DC8 "CList" \ 00000352 0000 DC8 0, 0 \ 00000354 4675636B2079 DC8 "Fuck you hacker! my password sux ur ass" \ 6F7520686163 \ 6B657221206D \ 792070617373 \ 776F72642073 \ 757820757220 \ 61737300 \ 0000037C 556E72656164 DC8 "Unread: %d" \ 3A20256400 \ 00000387 00 DC8 0 \ 00000388 4E6174494351 DC8 "NatICQ config updated!" \ 20636F6E6669 \ 672075706461 \ 7465642100 \ 0000039F 00 DC8 0 \ 000003A0 257332323430 DC8 "%s2240.png" \ 2E706E6700 \ 000003AB 00 DC8 0 \ 000003AC 475052532075 DC8 "GPRS up, wait 10 sec..." \ 702C20776169 \ 742031302073 \ 65632E2E2E00 \ 000003C4 54727920746F DC8 "Try to login..." \ 206C6F67696E \ 2E2E2E00 \ 000003D4 CDE520E220F1 DC8 "\315\345 \342 \361\357\350\361\352\345" \ EFE8F1EAE500 \ 000003E0 4C6F6F706261 DC8 "Loopback" \ 636B00 \ 000003E9 000000 DC8 0, 0, 0 \ 000003EC 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 \ 00000414 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 \ 00000436 0000 DC8 0, 0 \ 00000438 446973636F6E DC8 "Disconnected, %d bytes not sended!" \ 6E6563746564 \ 2C2025642062 \ 79746573206E \ 6F742073656E \ 6465642100 \ 0000045B 00 DC8 0 \ 0000045C 25730A526563 DC8 "%s\012Reconect after %d second..." \ 6F6E65637420 \ 616674657220 \ 256420736563 \ 6F6E642E2E2E \ 00 \ 0000047B 00 DC8 0 \ 0000047C 50696E67204E DC8 "Ping None" \ 6F6E6500 \ 00000486 0000 DC8 0, 0 \ 00000488 C2E2E5E4E8F2 DC8 "\302\342\345\344\350\362\345 UIN/\357\340\360\356\353\374!" \ E52055494E2F \ EFE0F0EEEBFC \ 2100 \ ipc_my_name: \ 0000049C 4E6174494351 DC8 "NatICQ" \ 00 \ 000004A3 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004B3 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000 \ ipc_xtask_name: \ 000004BC 585461736B00 DC8 "XTask" \ 000004C2 0000 DC8 0, 0 \ x_status_change: \ 000004C4 582D53746174 DC8 "X-Status change" \ 757320636861 \ 6E676500 \ 000004D4 CAEEEDF2E0EA DC8 "\312\356\355\362\340\352\362\373" \ F2FB00 \ 000004DD 000000 DC8 0, 0, 0 \ 000004E0 C2E2EEE42054 DC8 "\302\342\356\344 T9: " \ 393A2000 \ 000004EA 0000 DC8 0, 0 \ 000004EC C7E0EAF0FBF2 DC8 "\307\340\352\360\373\362\374" \ FC00 \ clrSelect: \ 000004F4 FF000060 DC8 255, 0, 0, 96 \ fntSelect: \ 000004F8 FFFF0060 DC8 255, 255, 0, 96 \ bordSelect: \ 000004FC 00000060 DC8 0, 0, 0, 96 \ clrNotSelect: \ 00000500 00000060 DC8 0, 0, 0, 96 \ bordNotSelect: \ 00000504 00000060 DC8 0, 0, 0, 96 \ fntNotSelect: \ 00000508 FFFFFF60 DC8 255, 255, 255, 96 \ gui_methods: \ 0000050C ............ DC32 method0, method1, method2, method3, method4, method5, 0H \ ............ \ ............ \ ............ \ 00000000 \ 00000528 ............ 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 070000006400 DC32 7, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ 00000038 D1EEEEE1F9E5 DC8 "\321\356\356\341\371\345\355\350\345:\012" \ EDE8E53A0A00 \ 00000044 D1EEEEE1F9E5 DC8 "\321\356\356\341\371\345\355\350\345 2:\012" \ EDE8E520323A \ 0A00 \ 00000052 0000 DC8 0, 0 \ 00000054 EAEEE3E4E020 DC8 "\352\356\343\344\340 \361\354\356\343\363 \356\362\342\345\367\363:)" \ F1ECEEE3F320 \ EEF2E2E5F7F3 \ 3A2900 \ 00000069 000000 DC8 0, 0, 0 \ input_awaymsg_hdr: \ 0000006C 000000008300 DC16 0, 0, 131, 21 \ 1500 \ 00000074 00000000.... DC32 0H, `?` \ 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 \ `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 \ In segment DATA_C, align 4, align-sorted \ _skt: \ 00000000 ........0000 DC32 _sk, 0 \ 0000 \ In segment DATA_C, align 4, align-sorted \ CmdSoftkeys: \ 00000000 000000000100 DC32 0, 1, 2 \ 000002000000 \ In segment DATA_C, align 4, align-sorted \ cmd_sk: \ 00000000 04000000 DC16 4, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 \ In segment DATA_C, align 4, align-sorted \ cmd_Back_skt: \ 00000000 ........0000 DC32 cmd_sk, 0 \ 0000 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 53656C656374 DC8 "Select command" \ 20636F6D6D61 \ 6E6400 \ 0000000F 00 DC8 0 \ 00000010 46494C45204E DC8 "FILE NOT FOUND!" \ 4F5420464F55 \ 4E442100 \ 00000020 08000000.... DC32 8, CmdMenuKeyHook, CmdMenuGHook, 0H, CmdSoftkeys, cmd_Back_skt, 16 \ ............ \ 00000000.... \ ............ \ 10000000 \ 0000003C ........0000 DC32 CmdMenuItemHandler, 0H, 0H, 0 \ 000000000000 \ 00000000 \ In segment DATA_C, align 4, align-sorted \ font: \ 00000000 07000000 DC32 7 \ In segment DATA_C, align 1, align-sorted \ _t: \ 00000000 257400 DC8 "%t" 5440 \ In segment CODE, align 4, keep-with-next 5441 void maincsm_oncreate(CSM_RAM *data) 5442 { \ maincsm_oncreate: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0050A0E1 MOV R5,R0 5443 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); \ 00000008 3C00A0E3 MOV R0,#+60 5444 MAIN_CSM*csm=(MAIN_CSM*)data; 5445 zeromem(main_gui,sizeof(MAIN_GUI)); 5446 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 3C10A0E3 MOV R1,#+60 \ 0000001C 1D0100EF SWI +285 \ 00000020 898100EF SWI +33161 \ 00000024 0040A0E1 MOV R4,R0 \ 00000028 888100EF SWI +33160 \ 0000002C 011044E2 SUB R1,R4,#+1 \ 00000030 00419FE5 LDR R4,??maincsm_oncreate_0 ;; Canvas \ 00000034 010040E2 SUB R0,R0,#+1 \ 00000038 007084E5 STR R7,[R4, #+0] \ 0000003C B400C4E1 STRH R0,[R4, #+4] \ 00000040 B610C4E1 STRH R1,[R4, #+6] 5447 main_gui->gui.canvas=(void *)(&Canvas); \ 00000044 004086E5 STR R4,[R6, #+0] 5448 // main_gui->gui.flag30=2; 5449 main_gui->gui.methods=(void *)gui_methods; \ 00000048 0C00A0E3 MOV R0,#+12 \ 0000004C 500E80E3 ORR R0,R0,#0x500 \ 00000050 040080E0 ADD R0,R0,R4 \ 00000054 040086E5 STR R0,[R6, #+4] 5450 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); \ 00000058 158000EF SWI +32789 \ 0000005C 1C0086E5 STR R0,[R6, #+28] 5451 csm->csm.state=0; \ 00000060 107085E5 STR R7,[R5, #+16] 5452 csm->csm.unk1=0; \ 00000064 147085E5 STR R7,[R5, #+20] 5453 maingui_id=csm->gui_id=CreateGUI(main_gui); \ 00000068 0600A0E1 MOV R0,R6 \ 0000006C 370100EF SWI +311 \ 00000070 280085E5 STR R0,[R5, #+40] \ 00000074 ........ LDR R5,??DataTable215 ;; S_ICONS \ 00000078 000285E5 STR R0,[R5, #+512] 5454 ews=AllocWS(16384); \ 0000007C 400CA0E3 MOV R0,#+16384 \ 00000080 250100EF SWI +293 \ 00000084 180285E5 STR R0,[R5, #+536] 5455 // MutexCreate(&contactlist_mtx); 5456 DNR_TRIES=3; \ 00000088 0300A0E3 MOV R0,#+3 \ 0000008C 280385E5 STR R0,[R5, #+808] 5457 // SUBPROC((void *)InitSmiles); 5458 // SUBPROC((void *)create_connect); 5459 wsBuffer=AllocWS(4096); \ 00000090 400DA0E3 MOV R0,#+4096 \ 00000094 250100EF SWI +293 \ 00000098 D80185E5 STR R0,[R5, #+472] 5460 OneSecTmr(); \ 0000009C ........ BL OneSecTmr 5461 5462 if(ParseUINS()!=0) \ 000000A0 ........ _BLF ParseUINS,??ParseUINS??rA \ 000000A4 000050E3 CMP R0,#+0 \ 000000A8 0200000A BEQ ??maincsm_oncreate_1 5463 { 5464 USE_ADD_UIN=1; \ 000000AC 0100A0E3 MOV R0,#+1 \ 000000B0 5C0385E5 STR R0,[R5, #+860] 5465 InitXStatusesImg(); \ 000000B4 ........ _BLF InitXStatusesImg,??InitXStatusesImg??rA 5466 } 5467 5468 GBS_StartTimerProc(&tmr_active,TMR_SECOND*10,process_active_timer); \ ??maincsm_oncreate_1: \ 000000B8 ........ LDR R2,??DataTable206 ;; process_active_timer \ 000000BC 871EA0E3 MOV R1,#+2160 \ 000000C0 EC00A0E3 MOV R0,#+236 \ 000000C4 640D80E3 ORR R0,R0,#0x1900 \ 000000C8 050080E0 ADD R0,R0,R5 \ 000000CC 4D0000EF SWI +77 5469 5470 if(!USE_ADD_UIN) \ 000000D0 5C0395E5 LDR R0,[R5, #+860] \ 000000D4 000050E3 CMP R0,#+0 \ 000000D8 F080BD18 POPNE {R4-R7,PC} 5471 { 5472 sprintf((char *)ipc_my_name+6,percent_d,UIN); \ 000000DC ........ LDR R0,??DataTable207 ;; UIN \ 000000E0 1E1084E2 ADD R1,R4,#+30 \ 000000E4 002090E5 LDR R2,[R0, #+0] \ 000000E8 A200A0E3 MOV R0,#+162 \ 000000EC 400E80E3 ORR R0,R0,#0x400 \ 000000F0 040080E0 ADD R0,R0,R4 \ 000000F4 160000EF SWI +22 5473 gipc.name_to=ipc_my_name; \ 000000F8 9C00A0E3 MOV R0,#+156 \ 000000FC 400E80E3 ORR R0,R0,#0x400 \ 00000100 041080E0 ADD R1,R0,R4 \ 00000104 741085E5 STR R1,[R5, #+116] 5474 gipc.name_from=ipc_my_name; \ 00000108 040080E0 ADD R0,R0,R4 \ 0000010C 780085E5 STR R0,[R5, #+120] 5475 gipc.data=(void *)-1; \ 00000110 0700E0E1 MVN R0,R7 \ 00000114 7C0085E5 STR R0,[R5, #+124] 5476 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_CHECK_DOUBLERUN,&gipc); \ 00000118 743085E2 ADD R3,R5,#+116 \ 0000011C 0120A0E3 MOV R2,#+1 \ 00000120 F210A0E3 MOV R1,#+242 \ 00000124 C01F81E3 ORR R1,R1,#0x300 \ 00000128 0900A0E3 MOV R0,#+9 \ 0000012C 420C80E3 ORR R0,R0,#0x4200 \ 00000130 000100EF SWI +256 5477 } 5478 /* 5479 InitXStatusesImg(); 5480 //InitSmiles(); Это вызовется из InitXStatusesImg 5481 create_connect(); 5482 silenthide=1; 5483 gipc.name_to=ipc_xtask_name; 5484 gipc.name_from=ipc_my_name; 5485 gipc.data=0; 5486 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); 5487 */ 5488 } \ 00000134 F080BDE8 POP {R4-R7,PC} ;; return \ ??maincsm_oncreate_0: \ 00000138 ........ DC32 Canvas 5489 \ In segment CODE, align 4, keep-with-next 5490 void maincsm_onclose(CSM_RAM *csm) 5491 { \ maincsm_onclose: \ 00000000 10402DE9 PUSH {R4,LR} 5492 WriteDefSettings(); 5493 FreeWS(wsBuffer); \ 00000004 ........ LDR R4,??DataTable215 ;; S_ICONS \ 00000008 ........ BL WriteDefSettings \ 0000000C D80194E5 LDR R0,[R4, #+472] \ 00000010 290100EF SWI +297 5494 //GBS_DelTimer(&tmr_dorecv); 5495 RemoveKeybMsgHook((void *)my_keyhook); \ 00000014 ........ LDR R0,??DataTable209 ;; my_keyhook \ 00000018 2D0100EF SWI +301 5496 GBS_DelTimer(&tmr_active); \ 0000001C EC00A0E3 MOV R0,#+236 \ 00000020 640D80E3 ORR R0,R0,#0x1900 \ 00000024 040080E0 ADD R0,R0,R4 \ 00000028 8C0100EF SWI +396 5497 GBS_DelTimer(&tmr_vibra); \ 0000002C CC00A0E3 MOV R0,#+204 \ 00000030 640D80E3 ORR R0,R0,#0x1900 \ 00000034 040080E0 ADD R0,R0,R4 \ 00000038 8C0100EF SWI +396 5498 GBS_DelTimer(&reconnect_tmr); \ 0000003C DC00A0E3 MOV R0,#+220 \ 00000040 640D80E3 ORR R0,R0,#0x1900 \ 00000044 040080E0 ADD R0,R0,R4 \ 00000048 8C0100EF SWI +396 5499 GBS_DelTimer(&tmr_illumination); \ 0000004C BC00A0E3 MOV R0,#+188 \ 00000050 640D80E3 ORR R0,R0,#0x1900 \ 00000054 040080E0 ADD R0,R0,R4 \ 00000058 8C0100EF SWI +396 5500 GBS_DelTimer(&tm22); \ 0000005C 1000A0E3 MOV R0,#+16 \ 00000060 7C0D80E3 ORR R0,R0,#0x1F00 \ 00000064 040080E0 ADD R0,R0,R4 \ 00000068 8C0100EF SWI +396 5501 #ifdef ELKA 5502 GBS_DelTimer(&sli_tmr); 5503 #endif 5504 GBS_DelTimer(&remind_tmr); \ 0000006C 1C00A0E3 MOV R0,#+28 \ 00000070 600D80E3 ORR R0,R0,#0x1800 \ 00000074 040080E0 ADD R0,R0,R4 \ 00000078 8C0100EF SWI +396 5505 GBS_DelTimer(&ping_tmr); \ 0000007C 8400A0E3 MOV R0,#+132 \ 00000080 540D80E3 ORR R0,R0,#0x1500 \ 00000084 040080E0 ADD R0,R0,R4 \ 00000088 8C0100EF SWI +396 5506 GBS_DelTimer(&uptime_tmr); \ 0000008C 2C00A0E3 MOV R0,#+44 \ 00000090 600D80E3 ORR R0,R0,#0x1800 \ 00000094 040080E0 ADD R0,R0,R4 \ 00000098 8C0100EF SWI +396 5507 GBS_DelTimer(&autoChangeStatus); \ 0000009C 0C00A0E3 MOV R0,#+12 \ 000000A0 600D80E3 ORR R0,R0,#0x1800 \ 000000A4 040080E0 ADD R0,R0,R4 \ 000000A8 8C0100EF SWI +396 5508 #ifdef NEWSGOLD 5509 GBS_DelTimer(&tracktmr); 5510 GBS_DelTimer(&scrsTmr); 5511 #endif 5512 GBS_DelTimer(&incs2); \ 000000AC 7C0D84E2 ADD R0,R4,#+7936 \ 000000B0 8C0100EF SWI +396 5513 GBS_DelTimer(&develop); \ 000000B4 1800A0E3 MOV R0,#+24 \ 000000B8 740D80E3 ORR R0,R0,#0x1D00 \ 000000BC 040080E0 ADD R0,R0,R4 \ 000000C0 8C0100EF SWI +396 5514 GBS_DelTimer(&away_tmr); \ 000000C4 FC00A0E3 MOV R0,#+252 \ 000000C8 5C0D80E3 ORR R0,R0,#0x1700 \ 000000CC 040080E0 ADD R0,R0,R4 \ 000000D0 8C0100EF SWI +396 5515 SetVibration(0); \ 000000D4 0000A0E3 MOV R0,#+0 \ 000000D8 7C0000EF SWI +124 5516 FreeTemplates(); \ 000000DC ........ BL FreeTemplates 5517 cmdFree(); \ 000000E0 ........ BL cmdFree 5518 #ifdef kluchnik 5519 FreeBotMessage(); 5520 #endif 5521 FreeCLIST(); \ 000000E4 ........ _BLF FreeCLIST,??FreeCLIST??rA 5522 free_ICONS(); \ 000000E8 ........ BL free_ICONS 5523 // FreeSmiles(); 5524 FreeWS(ews); \ 000000EC 180294E5 LDR R0,[R4, #+536] \ 000000F0 290100EF SWI +297 5525 FreeXStatusText(); \ 000000F4 ........ _BLF FreeXStatusText,??FreeXStatusText??rA 5526 PrintLibFree(); \ 000000F8 ........ _BLF PrintLibFree,??PrintLibFree??rA 5527 SUBPROC((void *)FreeSmiles); \ 000000FC 24009FE5 LDR R0,??maincsm_onclose_0 ;; FreeSmiles \ 00000100 710100EF SWI +369 5528 SUBPROC((void *)FreeXStatusesImg); \ 00000104 20009FE5 LDR R0,??maincsm_onclose_0+0x4 ;; FreeXStatusesImg \ 00000108 710100EF SWI +369 5529 SUBPROC((void *)end_socket); \ 0000010C ........ LDR R0,??DataTable210 ;; end_socket \ 00000110 710100EF SWI +369 5530 SUBPROC((void *)ClearSendQ); \ 00000114 ........ LDR R0,??DataTable240 ;; ClearSendQ \ 00000118 710100EF SWI +369 5531 SUBPROC((void *)ElfKiller); \ 0000011C ........ LDR R0,??DataTable212 ;; ElfKiller \ 00000120 710100EF SWI +369 5532 } \ 00000124 1080BDE8 POP {R4,PC} ;; return \ ??maincsm_onclose_0: \ 00000128 ........ DC32 FreeSmiles \ 0000012C ........ DC32 FreeXStatusesImg 5533 \ In segment CODE, align 4, keep-with-next 5534 void do_reconnect(void) 5535 { 5536 if (is_gprs_online) \ do_reconnect: \ 00000000 ........ LDR R0,??DataTable215 ;; S_ICONS \ 00000004 00402DE9 PUSH {LR} \ 00000008 8C1290E5 LDR R1,[R0, #+652] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0080BD08 POPEQ {PC} 5537 { 5538 DNR_TRIES=3; \ 00000014 0310A0E3 MOV R1,#+3 \ 00000018 281380E5 STR R1,[R0, #+808] 5539 SUBPROC((void*)create_connect); \ 0000001C ........ LDR R0,??DataTable214 ;; create_connect \ 00000020 710100EF SWI +369 5540 } 5541 } \ 00000024 0080BDE8 POP {PC} ;; return 5542 \ In segment CODE, align 4, keep-with-next 5543 void CheckDoubleRun(void) 5544 { \ CheckDoubleRun: \ 00000000 10402DE9 PUSH {R4,LR} 5545 int csm_id; 5546 if ((csm_id=(int)(gipc.data))!=-1) \ 00000004 ........ LDR R4,??DataTable215 ;; S_ICONS \ 00000008 7C0094E5 LDR R0,[R4, #+124] \ 0000000C 010070E3 CMN R0,#+1 \ 00000010 1400000A BEQ ??CheckDoubleRun_0 5547 { 5548 gipc.name_to=ipc_xtask_name; \ 00000014 ........ LDR R1,??DataTable216 ;; Canvas \ 00000018 BC20A0E3 MOV R2,#+188 \ 0000001C 402E82E3 ORR R2,R2,#0x400 \ 00000020 012082E0 ADD R2,R2,R1 \ 00000024 742084E5 STR R2,[R4, #+116] 5549 gipc.name_from=ipc_my_name; \ 00000028 9C20A0E3 MOV R2,#+156 \ 0000002C 402E82E3 ORR R2,R2,#0x400 \ 00000030 011082E0 ADD R1,R2,R1 \ 00000034 781084E5 STR R1,[R4, #+120] 5550 gipc.data=(void *)csm_id; \ 00000038 7C0084E5 STR R0,[R4, #+124] 5551 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc); \ 0000003C 743084E2 ADD R3,R4,#+116 \ 00000040 0220A0E3 MOV R2,#+2 \ 00000044 FC1F82E3 ORR R1,R2,#0x3F0 \ 00000048 0900A0E3 MOV R0,#+9 \ 0000004C 420C80E3 ORR R0,R0,#0x4200 \ 00000050 000100EF SWI +256 5552 LockSched(); \ 00000054 460100EF SWI +326 5553 CloseCSM(maincsm_id); \ 00000058 FC0194E5 LDR R0,[R4, #+508] \ 0000005C FC0100EF SWI +508 5554 //ShowMSG(1,(int)LG_ALREADY_STARTED); 5555 UnlockSched(); \ 00000060 470100EF SWI +327 \ 00000064 1080BDE8 POP {R4,PC} 5556 } 5557 else 5558 if(!USE_ADD_UIN) \ ??CheckDoubleRun_0: \ 00000068 5C0394E5 LDR R0,[R4, #+860] \ 0000006C 000050E3 CMP R0,#+0 \ 00000070 0200001A BNE ??CheckDoubleRun_1 5559 { 5560 InitXStatusesImg(); \ 00000074 ........ _BLF InitXStatusesImg,??InitXStatusesImg??rA 5561 //InitSmiles(); Это вызовется из InitXStatusesImg 5562 create_connect(); \ 00000078 ........ BL create_connect \ 0000007C 1080BDE8 POP {R4,PC} 5563 } 5564 else 5565 { 5566 InitXStatusesImg(); \ ??CheckDoubleRun_1: \ 00000080 ........ _BLF InitXStatusesImg,??InitXStatusesImg??rA 5567 USE_ADD_UIN=1; \ 00000084 0100A0E3 MOV R0,#+1 \ 00000088 5C0384E5 STR R0,[R4, #+860] 5568 } 5569 5570 } \ 0000008C 1080BDE8 POP {R4,PC} ;; return 5571 5572 5573 5574 //------------------------------------------------------------// 5575 5576 5577 #define idlegui_id(icsm) (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) \ In segment CODE, align 4, keep-with-next 5578 int checkGui(int id) 5579 { \ checkGui: \ 00000000 10402DE9 PUSH {R4,LR} 5580 int retval = 0; \ 00000004 0040A0E3 MOV R4,#+0 5581 if (IsGuiOnTop(id)) \ 00000008 350100EF SWI +309 \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0A00000A BEQ ??checkGui_0 5582 { 5583 GUI* igui = GetTopGUI(); \ 00000014 4D0100EF SWI +333 5584 if (igui) \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0700000A BEQ ??checkGui_0 5585 { 5586 #ifdef ELKA 5587 canvasdata = BuildCanvas(); 5588 retval = 1; 5589 #else 5590 void *idata = GetDataOfItemByID(igui, 2); \ 00000020 0210A0E3 MOV R1,#+2 \ 00000024 4F0100EF SWI +335 5591 if (idata) \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 0300000A BEQ ??checkGui_0 5592 { 5593 canvasdata = ((void **)idata)[DISPLACE_OF_IDLECANVAS / 4]; \ 00000030 10109FE5 LDR R1,??checkGui_1 ;; S_ICONS + 464 \ 00000034 140090E5 LDR R0,[R0, #+20] 5594 retval = 1; \ 00000038 0140A0E3 MOV R4,#+1 \ 0000003C 000081E5 STR R0,[R1, #+0] 5595 } 5596 #endif 5597 } 5598 } 5599 return retval; \ ??checkGui_0: \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 1080BDE8 POP {R4,PC} ;; return \ ??checkGui_1: \ 00000048 ........ DC32 S_ICONS + 464 5600 } 5601 5602 5603 //-------------------------------------------------------------// 5604 #define IPC_GAME 7 5605 5606 typedef struct{ 5607 unsigned long uin; 5608 char *msg; 5609 }IPCmsg; 5610 \ In segment CODE, align 4, keep-with-next 5611 int maincsm_onmessage(CSM_RAM *data,GBS_MSG *msg) 5612 { \ maincsm_onmessage: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} 5613 5614 // char ss[100]; 5615 MAIN_CSM *csm=(MAIN_CSM*)data; 5616 { 5617 //IPC 5618 if (msg->msg==MSG_IPC) \ 00000004 ........ LDR R5,??DataTable217 ;; S_ICONS \ 00000008 20D04DE2 SUB SP,SP,#+32 \ 0000000C ........ LDR R7,??DataTable243 ;; Canvas \ 00000010 0140A0E1 MOV R4,R1 \ 00000014 4C10A0E3 MOV R1,#+76 \ 00000018 681D81E3 ORR R1,R1,#0x1A00 \ 0000001C 051081E0 ADD R1,R1,R5 \ 00000020 00108DE5 STR R1,[SP, #+0] \ 00000024 F200D4E1 LDRSH R0,[R4, #+2] \ 00000028 0060A0E3 MOV R6,#+0 \ 0000002C F210A0E3 MOV R1,#+242 \ 00000030 C01F81E3 ORR R1,R1,#0x300 \ 00000034 010050E1 CMP R0,R1 \ 00000038 9800001A BNE ??maincsm_onmessage_2 5619 { 5620 IPC_REQ *ipc; 5621 if ((ipc=(IPC_REQ*)msg->data0)) \ 0000003C 088094E5 LDR R8,[R4, #+8] \ 00000040 000058E3 CMP R8,#+0 \ 00000044 9500000A BEQ ??maincsm_onmessage_2 5622 { 5623 if (strcmp_nocase(ipc->name_to,ipc_my_name)==0) \ 00000048 000098E5 LDR R0,[R8, #+0] \ 0000004C AA9081E2 ADD R9,R1,#+170 \ 00000050 071089E0 ADD R1,R9,R7 \ 00000054 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 00000058 000050E3 CMP R0,#+0 \ 0000005C 8F00001A BNE ??maincsm_onmessage_2 5624 { 5625 switch (msg->submess) \ 00000060 041094E5 LDR R1,[R4, #+4] \ 00000064 040098E5 LDR R0,[R8, #+4] \ 00000068 011041E2 SUB R1,R1,#+1 \ 0000006C 050051E3 CMP R1,#+5 \ 00000070 8A00008A BHI ??maincsm_onmessage_2 \ 00000074 012F8FE2 ADR R2,??maincsm_onmessage_0 \ 00000078 0120D2E7 LDRB R2,[R2, R1] \ 0000007C 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??maincsm_onmessage_0: \ 00000080 010A1127 DC8 +1,+10,+17,+39 \ 00000084 64160000 DC8 +100,+22,+0,+0 5626 { 5627 case IPC_CHECK_DOUBLERUN: 5628 //Если приняли свое собственное сообщение, значит запускаем чекер 5629 if (ipc->name_from==ipc_my_name) SUBPROC((void *)CheckDoubleRun); \ ??maincsm_onmessage_3: \ 00000088 071089E0 ADD R1,R9,R7 \ 0000008C 010050E1 CMP R0,R1 \ 00000090 0200001A BNE ??maincsm_onmessage_4 \ 00000094 500B9FE5 LDR R0,??maincsm_onmessage_5 ;; CheckDoubleRun \ 00000098 710100EF SWI +369 \ 0000009C 7F0000EA B ??maincsm_onmessage_2 5630 else ipc->data=(void *)maincsm_id; \ ??maincsm_onmessage_4: \ 000000A0 FC0195E5 LDR R0,[R5, #+508] \ 000000A4 080088E5 STR R0,[R8, #+8] \ 000000A8 7C0000EA B ??maincsm_onmessage_2 5631 break; 5632 case IPC_SMILE_PROCESSED: 5633 //Только собственные смайлы ;) 5634 if (ipc->name_from==ipc_my_name) SUBPROC((void *)ProcessNextSmile); \ ??maincsm_onmessage_6: \ 000000AC 071089E0 ADD R1,R9,R7 \ 000000B0 010050E1 CMP R0,R1 \ 000000B4 0100001A BNE ??maincsm_onmessage_7 \ 000000B8 300B9FE5 LDR R0,??maincsm_onmessage_5+0x4 ;; ProcessNextSmile \ ??maincsm_onmessage_8: \ 000000BC 710100EF SWI +369 5635 SMART_REDRAW(); \ ??maincsm_onmessage_7: \ 000000C0 ........ BL SMART_REDRAW \ 000000C4 750000EA B ??maincsm_onmessage_2 5636 break; 5637 case IPC_XSTATUSIMG_PROCESSED: 5638 //Только собственные иксстатусы ;) 5639 if (ipc->name_from==ipc_my_name) SUBPROC((void *)ProcessNextXStatImg); \ ??maincsm_onmessage_9: \ 000000C8 071089E0 ADD R1,R9,R7 \ 000000CC 010050E1 CMP R0,R1 \ 000000D0 FAFFFF1A BNE ??maincsm_onmessage_7 \ 000000D4 180B9FE5 LDR R0,??maincsm_onmessage_5+0x8 ;; ProcessNextXStatImg \ 000000D8 F7FFFFEA B ??maincsm_onmessage_8 5640 SMART_REDRAW(); 5641 break; 5642 case IPC_ONESECOND: 5643 if (ipc->name_from==ipc_my_name) \ ??maincsm_onmessage_10: \ 000000DC 071089E0 ADD R1,R9,R7 \ 000000E0 010050E1 CMP R0,R1 \ 000000E4 6D00001A BNE ??maincsm_onmessage_2 5644 { 5645 //if(!(--on_off_timer)) on_off_timer=0;//таймер показа подключившихся/отключившихся 5646 if(on_off_timer>0) \ 000000E8 AC0295E5 LDR R0,[R5, #+684] \ 000000EC 010050E3 CMP R0,#+1 5647 on_off_timer--; \ 000000F0 010040A2 SUBGE R0,R0,#+1 \ 000000F4 AC0285A5 STRGE R0,[R5, #+684] \ 000000F8 680000AA BGE ??maincsm_onmessage_2 5648 else 5649 if(on_off_timer!=-1) \ 000000FC 010070E3 CMN R0,#+1 \ 00000100 6600000A BEQ ??maincsm_onmessage_2 5650 { 5651 on_off_timer=-1; \ 00000104 0600E0E1 MVN R0,R6 \ 00000108 AC0285E5 STR R0,[R5, #+684] 5652 zeromem(on_off_buf,128); \ 0000010C 00009DE5 LDR R0,[SP, #+0] \ 00000110 8010A0E3 MOV R1,#+128 \ 00000114 1D0100EF SWI +285 5653 UpdateCLheader(); \ 00000118 ........ BL UpdateCLheader \ 0000011C 5F0000EA B ??maincsm_onmessage_2 5654 } 5655 } 5656 break; 5657 case IPC_TENSECONDS: 5658 //Только свое сообщение 5659 if (ipc->name_from==ipc_my_name) \ ??maincsm_onmessage_11: \ 00000120 071089E0 ADD R1,R9,R7 \ 00000124 010050E1 CMP R0,R1 \ 00000128 5C00001A BNE ??maincsm_onmessage_2 5660 { 5661 CLIST *t=(CLIST *)cltop; 5662 int f=0; 5663 if(main_msg_timer2!=0) main_msg_timer2--; else main_msg_timer2=0; \ 0000012C 340395E5 LDR R0,[R5, #+820] \ 00000130 948295E5 LDR R8,[R5, #+660] \ 00000134 0090A0E3 MOV R9,#+0 \ 00000138 000050E3 CMP R0,#+0 \ 0000013C 1900000A BEQ ??maincsm_onmessage_12 \ 00000140 010040E2 SUB R0,R0,#+1 \ 00000144 340385E5 STR R0,[R5, #+820] \ 00000148 160000EA B ??maincsm_onmessage_12 5664 while(t) 5665 { 5666 if(t->just_now) \ ??maincsm_onmessage_13: \ 0000014C 680098E5 LDR R0,[R8, #+104] \ 00000150 000050E3 CMP R0,#+0 \ 00000154 0200000A BEQ ??maincsm_onmessage_14 5667 { 5668 if (!(--(t->just_now))) f=1; \ 00000158 010050E2 SUBS R0,R0,#+1 \ 0000015C 680088E5 STR R0,[R8, #+104] \ 00000160 0190A003 MOVEQ R9,#+1 5669 } 5670 if (t->isactive) \ ??maincsm_onmessage_14: \ 00000164 9C0098E5 LDR R0,[R8, #+156] \ 00000168 000050E3 CMP R0,#+0 \ 0000016C 0C00000A BEQ ??maincsm_onmessage_15 5671 { 5672 if (!(--(t->isactive))) \ 00000170 010050E2 SUBS R0,R0,#+1 \ 00000174 9C0088E5 STR R0,[R8, #+156] \ 00000178 0900001A BNE ??maincsm_onmessage_15 5673 { 5674 f=1; //Если дошли до 0 хотя бы один раз - надо перерисовать меню 5675 if ((t->log)&&(!t->isunread)) \ 0000017C 900098E5 LDR R0,[R8, #+144] \ 00000180 0190A0E3 MOV R9,#+1 \ 00000184 000050E3 CMP R0,#+0 \ 00000188 0500000A BEQ ??maincsm_onmessage_15 \ 0000018C 800098E5 LDR R0,[R8, #+128] \ 00000190 000050E3 CMP R0,#+0 \ 00000194 0200001A BNE ??maincsm_onmessage_15 5676 { 5677 FreeLOGQ(&t->log); \ 00000198 900088E2 ADD R0,R8,#+144 \ 0000019C ........ BL FreeLOGQ 5678 t->msg_count=0; \ 000001A0 A06088E5 STR R6,[R8, #+160] 5679 } 5680 } 5681 } 5682 t=(CLIST *)(t->next); \ ??maincsm_onmessage_15: \ 000001A4 008098E5 LDR R8,[R8, #+0] 5683 } \ ??maincsm_onmessage_12: \ 000001A8 000058E3 CMP R8,#+0 \ 000001AC E6FFFF1A BNE ??maincsm_onmessage_13 5684 if (f) \ 000001B0 000059E3 CMP R9,#+0 \ 000001B4 0A00000A BEQ ??maincsm_onmessage_16 5685 { 5686 CLIST *oldt=NULL; 5687 if (contactlist_menu_id) \ 000001B8 9C1295E5 LDR R1,[R5, #+668] \ 000001BC 0000A0E3 MOV R0,#+0 \ 000001C0 000051E3 CMP R1,#+0 \ 000001C4 0400000A BEQ ??maincsm_onmessage_17 5688 { 5689 oldt=FindContactByN(GetCurMenuItem(FindGUIbyId(contactlist_menu_id,NULL))); \ 000001C8 9C0295E5 LDR R0,[R5, #+668] \ 000001CC 0010A0E3 MOV R1,#+0 \ 000001D0 090200EF SWI +521 \ 000001D4 8F0100EF SWI +399 \ 000001D8 ........ _BLF FindContactByN,??FindContactByN??rA 5690 } 5691 RecountMenu(oldt,1); \ ??maincsm_onmessage_17: \ 000001DC 0110A0E3 MOV R1,#+1 \ 000001E0 ........ BL RecountMenu 5692 } 5693 if (time_to_stop_t9) \ ??maincsm_onmessage_16: \ 000001E4 3C0395E5 LDR R0,[R5, #+828] \ 000001E8 000050E3 CMP R0,#+0 \ 000001EC 2B00000A BEQ ??maincsm_onmessage_2 5694 { 5695 if (!(--time_to_stop_t9)) \ 000001F0 010050E2 SUBS R0,R0,#+1 \ 000001F4 3C0385E5 STR R0,[R5, #+828] \ 000001F8 2800001A BNE ??maincsm_onmessage_2 5696 { 5697 if (IsGuiOnTop(edchat_id)) RefreshGUI(); \ 000001FC A00295E5 LDR R0,[R5, #+672] \ 00000200 350100EF SWI +309 \ 00000204 000050E3 CMP R0,#+0 \ 00000208 2400000A BEQ ??maincsm_onmessage_2 \ 0000020C 960100EF SWI +406 \ 00000210 220000EA B ??maincsm_onmessage_2 5698 } 5699 } 5700 } 5701 break; 5702 case IPC_SENDMSG: ; //IPC_SENDMSG by BoBa 26.06.07 5703 int l=strlen(((IPCMsg *)(ipc->data))->msg); \ ??maincsm_onmessage_18: \ 00000214 080098E5 LDR R0,[R8, #+8] \ 00000218 040090E5 LDR R0,[R0, #+4] \ 0000021C 1B0000EF SWI +27 \ 00000220 0090A0E1 MOV R9,R0 5704 TPKT *msg=malloc(sizeof(PKT)+l+30); \ 00000224 260089E2 ADD R0,R9,#+38 \ 00000228 140000EF SWI +20 \ 0000022C 00A0A0E1 MOV R10,R0 5705 msg->pkt.uin=((IPCMsg *)(ipc->data))->uin; \ 00000230 080098E5 LDR R0,[R8, #+8] 5706 msg->pkt.type=T_SENDMSG; 5707 msg->pkt.data_len=l; 5708 memcpy(msg->data,((IPCMsg *)(ipc->data))->msg,l); \ 00000234 0920A0E1 MOV R2,R9 \ 00000238 000090E5 LDR R0,[R0, #+0] \ 0000023C 00008AE5 STR R0,[R10, #+0] \ 00000240 0200A0E3 MOV R0,#+2 \ 00000244 B400CAE1 STRH R0,[R10, #+4] \ 00000248 B690CAE1 STRH R9,[R10, #+6] \ 0000024C 080098E5 LDR R0,[R8, #+8] \ 00000250 041090E5 LDR R1,[R0, #+4] \ 00000254 08008AE2 ADD R0,R10,#+8 \ 00000258 1E0100EF SWI +286 5709 //slientsend=1; 5710 if(strstr(msg->data,PASS)==0) \ 0000025C ........ LDR R1,??DataTable237 ;; PASS \ 00000260 08008AE2 ADD R0,R10,#+8 \ 00000264 180100EF SWI +280 \ 00000268 000050E3 CMP R0,#+0 \ 0000026C 0400000A BEQ ??maincsm_onmessage_19 5711 { 5712 SENDMSGCOUNT++; //Номер сообщения 5713 SUBPROC((void *)SendAnswer,0,msg); 5714 } 5715 else 5716 { 5717 msg->pkt.data_len=40; \ 00000270 2800A0E3 MOV R0,#+40 \ 00000274 B600CAE1 STRH R0,[R10, #+6] 5718 strcpy(msg->data, "Fuck you hacker! my password sux ur ass"); \ 00000278 D51F87E2 ADD R1,R7,#+852 \ 0000027C 08008AE2 ADD R0,R10,#+8 \ 00000280 1A0000EF SWI +26 5719 SENDMSGCOUNT++; //Номер сообщения \ ??maincsm_onmessage_19: \ 00000284 040295E5 LDR R0,[R5, #+516] 5720 SUBPROC((void *)SendAnswer,0,msg); \ 00000288 0A20A0E1 MOV R2,R10 \ 0000028C 010080E2 ADD R0,R0,#+1 \ 00000290 040285E5 STR R0,[R5, #+516] \ 00000294 ........ LDR R0,??DataTable238 ;; SendAnswer \ 00000298 0010A0E3 MOV R1,#+0 \ 0000029C 710100EF SWI +369 5721 } 5722 break; 5723 } 5724 } 5725 } 5726 } 5727 //Нарисуем иконочку моего статуса 5728 //#define idlegui_id (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) 5729 //CSM_RAM *icsm=FindCSMbyID(CSM_root()->idle_id); 5730 // if (IsGuiOnTop(idlegui_id)/*&&IsUnlocked()*/) //Если IdleGui на самом верху 5731 // { 5732 void *icsm; 5733 icsm=FindCSMbyID(CSM_root()->idle_id); \ ??maincsm_onmessage_2: \ 000002A0 068100EF SWI +33030 \ 000002A4 040090E5 LDR R0,[R0, #+4] \ 000002A8 080100EF SWI +264 \ 000002AC 000050E3 CMP R0,#+0 \ 000002B0 0700000A BEQ ??maincsm_onmessage_20 \ 000002B4 280090E5 LDR R0,[R0, #+40] 5734 if (icsm && checkGui(idlegui_id(icsm))) \ 000002B8 ........ BL checkGui \ 000002BC 000050E3 CMP R0,#+0 \ 000002C0 0300000A BEQ ??maincsm_onmessage_20 5735 { 5736 // GUI *igui=GetTopGUI(); 5737 // if (igui) //И он существует 5738 //{ 5739 INC_show=0; \ 000002C4 446385E5 STR R6,[R5, #+836] 5740 canvasdata=BuildCanvas(); //void * - belyj fon! \ 000002C8 F18000EF SWI +33009 \ 000002CC D00185E5 STR R0,[R5, #+464] \ 000002D0 010000EA B ??maincsm_onmessage_21 5741 //Тут трохи поменял 5742 // by Rainmaker: Рисуем канву только для иконки и выводим в своих координатах 5743 #ifdef ELKA 5744 if (total_unread) 5745 SLI_On(); 5746 #endif 5747 } 5748 //} 5749 else 5750 { 5751 main_d=1; \ ??maincsm_onmessage_20: \ 000002D4 0100A0E3 MOV R0,#+1 \ 000002D8 C80185E5 STR R0,[R5, #+456] 5752 } 5753 } 5754 5755 //---------------------------------------------------// 5756 void *icsm; 5757 icsm=FindCSMbyID(CSM_root()->idle_id); 5758 if (icsm && checkGui(idlegui_id(icsm))) \ ??maincsm_onmessage_21: \ 000002DC ........ LDR R8,??DataTable250 ;; fonto \ 000002E0 068100EF SWI +33030 \ 000002E4 040090E5 LDR R0,[R0, #+4] \ 000002E8 080100EF SWI +264 \ 000002EC 000050E3 CMP R0,#+0 \ 000002F0 3801000A BEQ ??maincsm_onmessage_22 \ 000002F4 280090E5 LDR R0,[R0, #+40] \ 000002F8 ........ BL checkGui \ 000002FC 000050E3 CMP R0,#+0 \ 00000300 3401000A BEQ ??maincsm_onmessage_22 5759 { 5760 int icn; 5761 if(total_unread) \ 00000304 900295E5 LDR R0,[R5, #+656] \ 00000308 000050E3 CMP R0,#+0 5762 icn=IS_MSG; \ 0000030C 0D90A013 MOVNE R9,#+13 \ 00000310 0A00001A BNE ??maincsm_onmessage_23 5763 else 5764 { 5765 switch(connect_state) \ 00000314 6C0295E5 LDR R0,[R5, #+620] \ 00000318 000050E3 CMP R0,#+0 \ 0000031C 0200000A BEQ ??maincsm_onmessage_24 \ 00000320 030050E2 SUBS R0,R0,#+3 \ 00000324 0200000A BEQ ??maincsm_onmessage_25 \ 00000328 030000EA B ??maincsm_onmessage_26 5766 { 5767 case 0: 5768 icn=IS_OFFLINE; break; \ ??maincsm_onmessage_24: \ 0000032C 0090A0E3 MOV R9,#+0 \ 00000330 020000EA B ??maincsm_onmessage_23 5769 case 3: 5770 icn=CurrentStatus; //IS_ONLINE; \ ??maincsm_onmessage_25: \ 00000334 109295E5 LDR R9,[R5, #+528] \ 00000338 000000EA B ??maincsm_onmessage_23 5771 break; 5772 default: 5773 icn=IS_UNKNOWN; break; \ ??maincsm_onmessage_26: \ 0000033C 0E90A0E3 MOV R9,#+14 5774 } 5775 } 5776 5777 #ifdef NEWSGOLD 5778 if(ShowStatusIcon==0 || ShowStatusIcon==2 || ShowStatusIcon==3) //kluchnik 26.03.08 5779 { 5780 #endif 5781 if((IsUnlocked()) || (!IsUnlocked()) || (IsScreenSaver())) \ ??maincsm_onmessage_23: \ 00000340 430000EF SWI +67 \ 00000344 000050E3 CMP R0,#+0 \ 00000348 0500001A BNE ??maincsm_onmessage_27 \ 0000034C 430000EF SWI +67 \ 00000350 000050E3 CMP R0,#+0 \ 00000354 0200000A BEQ ??maincsm_onmessage_27 \ 00000358 420000EF SWI +66 \ 0000035C 000050E3 CMP R0,#+0 \ 00000360 1800000A BEQ ??maincsm_onmessage_28 5782 { 5783 DrawCanvas(canvasdata,IDLEICON_X,IDLEICON_Y,IDLEICON_X+GetImgWidth((int)S_ICONS[icn])-1, 5784 IDLEICON_Y+GetImgHeight((int)S_ICONS[icn])-1,1); \ ??maincsm_onmessage_27: \ 00000364 8CB89FE5 LDR R11,??maincsm_onmessage_5+0xC ;; IDLEICON_Y \ 00000368 099185E0 ADD R9,R5,R9, LSL #+2 \ 0000036C 000099E5 LDR R0,[R9, #+0] \ 00000370 210000EF SWI +33 \ 00000374 00A0A0E1 MOV R10,R0 \ 00000378 000099E5 LDR R0,[R9, #+0] \ 0000037C 220000EF SWI +34 \ 00000380 74189FE5 LDR R1,??maincsm_onmessage_5+0x10 ;; IDLEICON_X \ 00000384 00209BE5 LDR R2,[R11, #+0] \ 00000388 001091E5 LDR R1,[R1, #+0] \ 0000038C 0130A0E3 MOV R3,#+1 \ 00000390 08002DE9 PUSH {R3} \ 00000394 010080E0 ADD R0,R0,R1 \ 00000398 02308AE0 ADD R3,R10,R2 \ 0000039C 013043E2 SUB R3,R3,#+1 \ 000003A0 08002DE9 PUSH {R3} \ 000003A4 013040E2 SUB R3,R0,#+1 \ 000003A8 D00195E5 LDR R0,[R5, #+464] \ 000003AC 250000EF SWI +37 5785 DrawImg(IDLEICON_X,IDLEICON_Y,S_ICONS[icn]); \ 000003B0 44089FE5 LDR R0,??maincsm_onmessage_5+0x10 ;; IDLEICON_X \ 000003B4 002099E5 LDR R2,[R9, #+0] \ 000003B8 00109BE5 LDR R1,[R11, #+0] \ 000003BC 000090E5 LDR R0,[R0, #+0] \ 000003C0 230000EF SWI +35 \ 000003C4 08D08DE2 ADD SP,SP,#+8 5786 } 5787 #ifdef NEWSGOLD 5788 } 5789 #ifdef kluchnik 5790 if(show_xstatus==1) 5791 #else 5792 if(show_xstatus==1 || show_xstatus==3) //kluchnik 26.03.08 5793 #endif 5794 #else 5795 if(show_xstatus==1) //kluchnik 26.03.08 \ ??maincsm_onmessage_28: \ 000003C8 30089FE5 LDR R0,??maincsm_onmessage_5+0x14 ;; show_xstatus \ 000003CC 000090E5 LDR R0,[R0, #+0] \ 000003D0 010050E3 CMP R0,#+1 \ 000003D4 2300001A BNE ??maincsm_onmessage_29 5796 #endif 5797 { 5798 PNGTOP_DESC *pltop=PNG_TOP(); 5799 pltop->dyn_pltop=XStatusesImgList; 5800 DisableIDLETMR(); 5801 DrawCanvas(canvasdata,IDLEICON_XX,IDLEICON_YX,IDLEICON_XX+GetImgWidth((int)XStatusesIconArray[CurrentXStatus])-1, 5802 IDLEICON_YX+GetImgHeight((int)XStatusesIconArray[CurrentXStatus])-1,1); \ 000003D8 24989FE5 LDR R9,??maincsm_onmessage_5+0x18 ;; XStatusesIconArray \ 000003DC 24B89FE5 LDR R11,??maincsm_onmessage_5+0x1C ;; IDLEICON_YX \ 000003E0 B98100EF SWI +33209 \ 000003E4 ........ LDR R1,??DataTable222 ;; XStatusesImgList \ 000003E8 001091E5 LDR R1,[R1, #+0] \ 000003EC 081080E5 STR R1,[R0, #+8] \ 000003F0 7F0100EF SWI +383 \ 000003F4 140295E5 LDR R0,[R5, #+532] \ 000003F8 001099E5 LDR R1,[R9, #+0] \ 000003FC 000191E7 LDR R0,[R1, +R0, LSL #+2] \ 00000400 210000EF SWI +33 \ 00000404 001099E5 LDR R1,[R9, #+0] \ 00000408 00A0A0E1 MOV R10,R0 \ 0000040C 140295E5 LDR R0,[R5, #+532] \ 00000410 000191E7 LDR R0,[R1, +R0, LSL #+2] \ 00000414 220000EF SWI +34 \ 00000418 EC179FE5 LDR R1,??maincsm_onmessage_5+0x20 ;; IDLEICON_XX \ 0000041C 00209BE5 LDR R2,[R11, #+0] \ 00000420 001091E5 LDR R1,[R1, #+0] \ 00000424 0130A0E3 MOV R3,#+1 \ 00000428 08002DE9 PUSH {R3} \ 0000042C 010080E0 ADD R0,R0,R1 \ 00000430 02308AE0 ADD R3,R10,R2 \ 00000434 013043E2 SUB R3,R3,#+1 \ 00000438 08002DE9 PUSH {R3} \ 0000043C 013040E2 SUB R3,R0,#+1 \ 00000440 D00195E5 LDR R0,[R5, #+464] \ 00000444 250000EF SWI +37 5803 DrawImg(IDLEICON_XX,IDLEICON_YX,XStatusesIconArray[CurrentXStatus]); \ 00000448 140295E5 LDR R0,[R5, #+532] \ 0000044C 001099E5 LDR R1,[R9, #+0] \ 00000450 002191E7 LDR R2,[R1, +R0, LSL #+2] \ 00000454 B0079FE5 LDR R0,??maincsm_onmessage_5+0x20 ;; IDLEICON_XX \ 00000458 00109BE5 LDR R1,[R11, #+0] \ 0000045C 000090E5 LDR R0,[R0, #+0] \ 00000460 230000EF SWI +35 \ 00000464 08D08DE2 ADD SP,SP,#+8 5804 } 5805 5806 5807 if(IsUnlocked()) \ ??maincsm_onmessage_29: \ 00000468 430000EF SWI +67 \ 0000046C 000050E3 CMP R0,#+0 \ 00000470 D800000A BEQ ??maincsm_onmessage_22 5808 { 5809 if (main_d==1) \ 00000474 C80195E5 LDR R0,[R5, #+456] \ 00000478 010050E3 CMP R0,#+1 \ 0000047C 8A00001A BNE ??maincsm_onmessage_30 5810 { 5811 if(Is_SMARTCPU_On && main_msg_timer2) \ 00000480 E80195E5 LDR R0,[R5, #+488] \ 00000484 000050E3 CMP R0,#+0 \ 00000488 34039515 LDRNE R0,[R5, #+820] \ 0000048C 00005013 CMPNE R0,#+0 \ 00000490 8400000A BEQ ??maincsm_onmessage_31 5812 { 5813 if(fonto==1) \ 00000494 74979FE5 LDR R9,??maincsm_onmessage_5+0x24 ;; msg_d_x \ 00000498 74A79FE5 LDR R10,??maincsm_onmessage_5+0x28 ;; msg_d_y \ 0000049C 74B79FE5 LDR R11,??maincsm_onmessage_5+0x2C ;; spaco2 \ 000004A0 CC3195E5 LDR R3,[R5, #+460] \ 000004A4 E810A0E3 MOV R1,#+232 \ 000004A8 701D81E3 ORR R1,R1,#0x1C00 \ 000004AC 051081E0 ADD R1,R1,R5 \ 000004B0 18108DE5 STR R1,[SP, #+24] \ 000004B4 B810A0E3 MOV R1,#+184 \ 000004B8 701D81E3 ORR R1,R1,#0x1C00 \ 000004BC 051081E0 ADD R1,R1,R5 \ 000004C0 14108DE5 STR R1,[SP, #+20] \ 000004C4 8810A0E3 MOV R1,#+136 \ 000004C8 701D81E3 ORR R1,R1,#0x1C00 \ 000004CC 051081E0 ADD R1,R1,R5 \ 000004D0 10108DE5 STR R1,[SP, #+16] \ 000004D4 5810A0E3 MOV R1,#+88 \ 000004D8 701D81E3 ORR R1,R1,#0x1C00 \ 000004DC 051081E0 ADD R1,R1,R5 \ 000004E0 0C108DE5 STR R1,[SP, #+12] \ 000004E4 000099E5 LDR R0,[R9, #+0] \ 000004E8 00109AE5 LDR R1,[R10, #+0] \ 000004EC 00C09BE5 LDR R12,[R11, #+0] \ 000004F0 00E098E5 LDR LR,[R8, #+0] \ 000004F4 00102DE9 PUSH {R12} \ 000004F8 2820A0E3 MOV R2,#+40 \ 000004FC 702D82E3 ORR R2,R2,#0x1C00 \ 00000500 052082E0 ADD R2,R2,R5 \ 00000504 01005EE3 CMP LR,#+1 \ 00000508 2E00001A BNE ??maincsm_onmessage_32 5814 { 5815 PrintField(msg_d_x,msg_d_y, a_txt, align, fonto, spaco2); \ 0000050C 01C0A0E3 MOV R12,#+1 \ 00000510 00102DE9 PUSH {R12} \ 00000514 ........ _BLF PrintField,??PrintField??rA 5816 PrintField(msg_d_x,msg_d_y+paused_height, s_txt, align, fonto, spaco2); \ 00000518 00009BE5 LDR R0,[R11, #+0] \ 0000051C 01002DE9 PUSH {R0} \ 00000520 000098E5 LDR R0,[R8, #+0] \ 00000524 01002DE9 PUSH {R0} \ 00000528 D41195E5 LDR R1,[R5, #+468] \ 0000052C CC3195E5 LDR R3,[R5, #+460] \ 00000530 1C209DE5 LDR R2,[SP, #+28] \ 00000534 00009AE5 LDR R0,[R10, #+0] \ 00000538 001081E0 ADD R1,R1,R0 \ 0000053C 000099E5 LDR R0,[R9, #+0] \ 00000540 ........ _BLF PrintField,??PrintField??rA 5817 PrintField(msg_d_x,msg_d_y+(2*paused_height), d_txt, align, fonto, spaco2); \ 00000544 00009BE5 LDR R0,[R11, #+0] \ 00000548 01002DE9 PUSH {R0} \ 0000054C 000098E5 LDR R0,[R8, #+0] \ 00000550 01002DE9 PUSH {R0} \ 00000554 D41195E5 LDR R1,[R5, #+468] \ 00000558 CC3195E5 LDR R3,[R5, #+460] \ 0000055C 28209DE5 LDR R2,[SP, #+40] \ 00000560 00009AE5 LDR R0,[R10, #+0] \ 00000564 811080E0 ADD R1,R0,R1, LSL #+1 \ 00000568 000099E5 LDR R0,[R9, #+0] \ 0000056C ........ _BLF PrintField,??PrintField??rA 5818 PrintField(msg_d_x,msg_d_y+(3*paused_height), f_txt, align, fonto, spaco2); \ 00000570 00009BE5 LDR R0,[R11, #+0] \ 00000574 01002DE9 PUSH {R0} \ 00000578 000098E5 LDR R0,[R8, #+0] \ 0000057C 01002DE9 PUSH {R0} \ 00000580 D41195E5 LDR R1,[R5, #+468] \ 00000584 CC3195E5 LDR R3,[R5, #+460] \ 00000588 34209DE5 LDR R2,[SP, #+52] \ 0000058C 00009AE5 LDR R0,[R10, #+0] \ 00000590 811081E0 ADD R1,R1,R1, LSL #+1 \ 00000594 001081E0 ADD R1,R1,R0 \ 00000598 000099E5 LDR R0,[R9, #+0] \ 0000059C ........ _BLF PrintField,??PrintField??rA 5819 PrintField(msg_d_x,msg_d_y+(4*paused_height), g_txt, align, fonto, spaco2); \ 000005A0 00009BE5 LDR R0,[R11, #+0] \ 000005A4 01002DE9 PUSH {R0} \ 000005A8 000098E5 LDR R0,[R8, #+0] \ 000005AC 01002DE9 PUSH {R0} \ 000005B0 D41195E5 LDR R1,[R5, #+468] \ 000005B4 CC3195E5 LDR R3,[R5, #+460] \ 000005B8 40209DE5 LDR R2,[SP, #+64] \ 000005BC 00009AE5 LDR R0,[R10, #+0] \ 000005C0 011180E0 ADD R1,R0,R1, LSL #+2 \ 000005C4 340000EA B ??maincsm_onmessage_33 5820 } 5821 else 5822 { 5823 PrintField(msg_d_x,msg_d_y, a_txt, align, fonto, spaco2); \ ??maincsm_onmessage_32: \ 000005C8 00402DE9 PUSH {LR} \ 000005CC ........ _BLF PrintField,??PrintField??rA 5824 PrintField(msg_d_x,msg_d_y+GetFontYSIZE(paused_height)+1, s_txt, align, fonto, spaco2); \ 000005D0 D40195E5 LDR R0,[R5, #+468] \ 000005D4 C50100EF SWI +453 \ 000005D8 00109BE5 LDR R1,[R11, #+0] \ 000005DC 02002DE9 PUSH {R1} \ 000005E0 001098E5 LDR R1,[R8, #+0] \ 000005E4 02002DE9 PUSH {R1} \ 000005E8 CC3195E5 LDR R3,[R5, #+460] \ 000005EC 1C209DE5 LDR R2,[SP, #+28] \ 000005F0 00109AE5 LDR R1,[R10, #+0] \ 000005F4 010080E0 ADD R0,R0,R1 \ 000005F8 011080E2 ADD R1,R0,#+1 \ 000005FC 000099E5 LDR R0,[R9, #+0] \ 00000600 ........ _BLF PrintField,??PrintField??rA 5825 PrintField(msg_d_x,msg_d_y+(2*GetFontYSIZE(paused_height))+2, d_txt, align, fonto, spaco2); \ 00000604 D40195E5 LDR R0,[R5, #+468] \ 00000608 C50100EF SWI +453 \ 0000060C 00109BE5 LDR R1,[R11, #+0] \ 00000610 02002DE9 PUSH {R1} \ 00000614 001098E5 LDR R1,[R8, #+0] \ 00000618 02002DE9 PUSH {R1} \ 0000061C CC3195E5 LDR R3,[R5, #+460] \ 00000620 28209DE5 LDR R2,[SP, #+40] \ 00000624 00109AE5 LDR R1,[R10, #+0] \ 00000628 800081E0 ADD R0,R1,R0, LSL #+1 \ 0000062C 021080E2 ADD R1,R0,#+2 \ 00000630 000099E5 LDR R0,[R9, #+0] \ 00000634 ........ _BLF PrintField,??PrintField??rA 5826 PrintField(msg_d_x,msg_d_y+(3*GetFontYSIZE(paused_height))+3, f_txt, align, fonto, spaco2); \ 00000638 D40195E5 LDR R0,[R5, #+468] \ 0000063C C50100EF SWI +453 \ 00000640 00109BE5 LDR R1,[R11, #+0] \ 00000644 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000648 02002DE9 PUSH {R1} \ 0000064C 001098E5 LDR R1,[R8, #+0] \ 00000650 02002DE9 PUSH {R1} \ 00000654 CC3195E5 LDR R3,[R5, #+460] \ 00000658 34209DE5 LDR R2,[SP, #+52] \ 0000065C 00109AE5 LDR R1,[R10, #+0] \ 00000660 010080E0 ADD R0,R0,R1 \ 00000664 031080E2 ADD R1,R0,#+3 \ 00000668 000099E5 LDR R0,[R9, #+0] \ 0000066C ........ _BLF PrintField,??PrintField??rA 5827 PrintField(msg_d_x,msg_d_y+(4*GetFontYSIZE(paused_height))+4, g_txt, align, fonto, spaco2); \ 00000670 D40195E5 LDR R0,[R5, #+468] \ 00000674 C50100EF SWI +453 \ 00000678 00109BE5 LDR R1,[R11, #+0] \ 0000067C 02002DE9 PUSH {R1} \ 00000680 001098E5 LDR R1,[R8, #+0] \ 00000684 02002DE9 PUSH {R1} \ 00000688 CC3195E5 LDR R3,[R5, #+460] \ 0000068C 40209DE5 LDR R2,[SP, #+64] \ 00000690 00109AE5 LDR R1,[R10, #+0] \ 00000694 000181E0 ADD R0,R1,R0, LSL #+2 \ 00000698 041080E2 ADD R1,R0,#+4 \ ??maincsm_onmessage_33: \ 0000069C 000099E5 LDR R0,[R9, #+0] \ 000006A0 ........ _BLF PrintField,??PrintField??rA \ 000006A4 28D08DE2 ADD SP,SP,#+40 5828 } 5829 } 5830 main_d=0; \ ??maincsm_onmessage_31: \ 000006A8 C86185E5 STR R6,[R5, #+456] 5831 } 5832 5833 if(Is_UPTIME_On) DrawOnlineTime(canvasdata); \ ??maincsm_onmessage_30: \ 000006AC 300295E5 LDR R0,[R5, #+560] \ 000006B0 000050E3 CMP R0,#+0 \ 000006B4 0100000A BEQ ??maincsm_onmessage_34 \ 000006B8 D00195E5 LDR R0,[R5, #+464] \ 000006BC ........ BL DrawOnlineTime 5834 if(Is_PING_On) DrawPing(canvasdata); \ ??maincsm_onmessage_34: \ 000006C0 E40195E5 LDR R0,[R5, #+484] \ 000006C4 000050E3 CMP R0,#+0 \ 000006C8 0100000A BEQ ??maincsm_onmessage_35 \ 000006CC D00195E5 LDR R0,[R5, #+464] \ 000006D0 ........ BL DrawPing 5835 if(Auto_Status && showAwayIdle) DrawAutoMSG(canvasdata); \ ??maincsm_onmessage_35: \ 000006D4 ........ LDR R0,??DataTable223 ;; Auto_Status \ 000006D8 000090E5 LDR R0,[R0, #+0] \ 000006DC 000050E3 CMP R0,#+0 \ 000006E0 0500000A BEQ ??maincsm_onmessage_36 \ 000006E4 ........ LDR R0,??DataTable224 ;; showAwayIdle \ 000006E8 000090E5 LDR R0,[R0, #+0] \ 000006EC 000050E3 CMP R0,#+0 \ 000006F0 0100000A BEQ ??maincsm_onmessage_36 \ 000006F4 D00195E5 LDR R0,[R5, #+464] \ 000006F8 ........ BL DrawAutoMSG 5836 if(Is_Unread_On) \ ??maincsm_onmessage_36: \ 000006FC 18059FE5 LDR R0,??maincsm_onmessage_5+0x30 ;; Is_Unread_On \ 00000700 ........ LDR R9,??DataTable225 ;; spaco1 \ 00000704 000090E5 LDR R0,[R0, #+0] \ 00000708 000050E3 CMP R0,#+0 \ 0000070C 1100000A BEQ ??maincsm_onmessage_37 5837 { 5838 sprintf(unread_msg_info, "Unread: %d", total_unread2); \ 00000710 F82195E5 LDR R2,[R5, #+504] \ 00000714 44A0A0E3 MOV R10,#+68 \ 00000718 50AE8AE3 ORR R10,R10,#0x500 \ 0000071C DF1F87E2 ADD R1,R7,#+892 \ 00000720 05008AE0 ADD R0,R10,R5 \ 00000724 160000EF SWI +22 5839 PrintField(unread_X,unread_Y, unread_msg_info, align, fonto, spaco1); \ 00000728 000099E5 LDR R0,[R9, #+0] \ 0000072C 05208AE0 ADD R2,R10,R5 \ 00000730 01002DE9 PUSH {R0} \ 00000734 000098E5 LDR R0,[R8, #+0] \ 00000738 01002DE9 PUSH {R0} \ 0000073C CC3195E5 LDR R3,[R5, #+460] \ 00000740 D8049FE5 LDR R0,??maincsm_onmessage_5+0x34 ;; unread_Y \ 00000744 001090E5 LDR R1,[R0, #+0] \ 00000748 D4049FE5 LDR R0,??maincsm_onmessage_5+0x38 ;; unread_X \ 0000074C 000090E5 LDR R0,[R0, #+0] \ 00000750 ........ _BLF PrintField,??PrintField??rA \ 00000754 08D08DE2 ADD SP,SP,#+8 5840 } 5841 5842 if(Is_Online_On && strlen(on_off_buf)!=0) \ ??maincsm_onmessage_37: \ 00000758 C8049FE5 LDR R0,??maincsm_onmessage_5+0x3C ;; Is_Online_On \ 0000075C 000090E5 LDR R0,[R0, #+0] \ 00000760 000050E3 CMP R0,#+0 \ 00000764 1B00000A BEQ ??maincsm_onmessage_22 \ 00000768 00009DE5 LDR R0,[SP, #+0] \ 0000076C 1B0000EF SWI +27 \ 00000770 000050E3 CMP R0,#+0 \ 00000774 1700000A BEQ ??maincsm_onmessage_22 5843 { 5844 char *s=malloc(128); \ 00000778 8000A0E3 MOV R0,#+128 \ 0000077C 140000EF SWI +20 5845 sprintf(s,percent_s,on_off_buf); \ 00000780 00209DE5 LDR R2,[SP, #+0] \ 00000784 00A0A0E1 MOV R10,R0 \ 00000788 1B1087E2 ADD R1,R7,#+27 \ 0000078C 160000EF SWI +22 5846 s[strlen(s)-1]=0; \ 00000790 0A00A0E1 MOV R0,R10 \ 00000794 1B0000EF SWI +27 \ 00000798 0A0080E0 ADD R0,R0,R10 \ 0000079C 016040E5 STRB R6,[R0, #-1] 5847 PrintField(online_x,online_y,s, align, fonto, spaco1); \ 000007A0 000099E5 LDR R0,[R9, #+0] \ 000007A4 0A20A0E1 MOV R2,R10 \ 000007A8 01002DE9 PUSH {R0} \ 000007AC 000098E5 LDR R0,[R8, #+0] \ 000007B0 01002DE9 PUSH {R0} \ 000007B4 CC3195E5 LDR R3,[R5, #+460] \ 000007B8 6C049FE5 LDR R0,??maincsm_onmessage_5+0x40 ;; online_y \ 000007BC 001090E5 LDR R1,[R0, #+0] \ 000007C0 68049FE5 LDR R0,??maincsm_onmessage_5+0x44 ;; online_x \ 000007C4 000090E5 LDR R0,[R0, #+0] \ 000007C8 ........ _BLF PrintField,??PrintField??rA 5848 mfree(s); \ 000007CC 0A00A0E1 MOV R0,R10 \ 000007D0 150000EF SWI +21 \ 000007D4 08D08DE2 ADD SP,SP,#+8 5849 } 5850 }//if(IsUnlocked()) 5851 } 5852 5853 5854 //-----------------------------------------------------------// 5855 5856 5857 if (msg->msg==MSG_RECONFIGURE_REQ) \ ??maincsm_onmessage_22: \ 000007D8 F200D4E1 LDRSH R0,[R4, #+2] \ 000007DC F110A0E3 MOV R1,#+241 \ 000007E0 C01F81E3 ORR R1,R1,#0x300 \ 000007E4 010050E1 CMP R0,R1 \ 000007E8 2F00001A BNE ??maincsm_onmessage_38 5858 { 5859 //if (strcmp_nocase(successed_config_filename,(char *)msg->data0)==0) 5860 if( (strcmp_nocase(suc_config_name,(char *)msg->data0)==0) 5861 || (strcmp_nocase(suc_config_name_mod,(char *)msg->data0)==0)) \ 000007EC ........ LDR R0,??DataTable245 ;; suc_config_name \ 000007F0 081094E5 LDR R1,[R4, #+8] \ 000007F4 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 000007F8 000050E3 CMP R0,#+0 \ 000007FC 0400000A BEQ ??maincsm_onmessage_39 \ 00000800 ........ LDR R0,??DataTable227 ;; suc_config_name_mod \ 00000804 081094E5 LDR R1,[R4, #+8] \ 00000808 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 0000080C 000050E3 CMP R0,#+0 \ 00000810 2500001A BNE ??maincsm_onmessage_38 5862 { 5863 ShowMSG(1,(int)"NatICQ config updated!"); 5864 // InitConfig(); 5865 UpdateConfig(); 5866 #ifdef NEWSGOLD 5867 initTags(); 5868 #endif 5869 PrintLibInit(1); 5870 FontPathInit((char *)fontpath, 1); \ ??maincsm_onmessage_39: \ 00000814 ........ LDR R9,??DataTable247 ;; fontpath \ 00000818 E21F87E2 ADD R1,R7,#+904 \ 0000081C 0100A0E3 MOV R0,#+1 \ 00000820 480100EF SWI +328 \ 00000824 ........ _BLF UpdateConfig,??UpdateConfig??rA \ 00000828 0100A0E3 MOV R0,#+1 \ 0000082C ........ _BLF PrintLibInit,??PrintLibInit??rA \ 00000830 0110A0E3 MOV R1,#+1 \ 00000834 0900A0E1 MOV R0,R9 \ 00000838 ........ _BLF FontPathInit,??FontPathInit??rA 5871 SetFontColor((char*)fontColor,(char*)bgrColor,1); \ 0000083C ........ LDR R1,??DataTable248 ;; bgrColor \ 00000840 ........ LDR R0,??DataTable249 ;; fontColor \ 00000844 0120A0E3 MOV R2,#+1 \ 00000848 ........ _BLF SetFontColor,??SetFontColor??rA 5872 //#ifdef ELKA 5873 if(fonto==1) \ 0000084C 000098E5 LDR R0,[R8, #+0] \ 00000850 010050E3 CMP R0,#+1 \ 00000854 0B00001A BNE ??maincsm_onmessage_40 5874 { 5875 char *heght=malloc(64); \ 00000858 4000A0E3 MOV R0,#+64 \ 0000085C 140000EF SWI +20 \ 00000860 0080A0E1 MOV R8,R0 5876 sprintf(heght, "%s2240.png", fontpath); \ 00000864 0920A0E1 MOV R2,R9 \ 00000868 E81F87E2 ADD R1,R7,#+928 \ 0000086C 160000EF SWI +22 5877 paused_height=GetImgHeight((int)heght); \ 00000870 0800A0E1 MOV R0,R8 \ 00000874 210000EF SWI +33 \ 00000878 D40185E5 STR R0,[R5, #+468] 5878 mfree(heght); \ 0000087C 0800A0E1 MOV R0,R8 \ 00000880 150000EF SWI +21 \ 00000884 010000EA B ??maincsm_onmessage_41 5879 } 5880 else 5881 paused_height=fonto-100; \ ??maincsm_onmessage_40: \ 00000888 640040E2 SUB R0,R0,#+100 \ 0000088C D40185E5 STR R0,[R5, #+468] 5882 //#endif 5883 free_ICONS(); \ ??maincsm_onmessage_41: \ 00000890 ........ BL free_ICONS 5884 setup_ICONS(); \ 00000894 ........ BL setup_ICONS 5885 ResortCL(); \ 00000898 ........ _BLF ResortCL,??ResortCL??rA 5886 RecountMenu(NULL,1); \ 0000089C 0110A0E3 MOV R1,#+1 \ 000008A0 0000A0E3 MOV R0,#+0 \ 000008A4 ........ BL RecountMenu 5887 init_time_zone(); \ 000008A8 ........ BL init_time_zone 5888 // InitSmiles(); 5889 } 5890 } 5891 5892 if (msg->msg==MSG_GUI_DESTROYED) \ ??maincsm_onmessage_38: \ 000008AC F200D4E1 LDRSH R0,[R4, #+2] \ 000008B0 980050E3 CMP R0,#+152 \ 000008B4 0E00001A BNE ??maincsm_onmessage_42 5893 { 5894 if ((int)msg->data0==csm->gui_id) \ 000008B8 20109DE5 LDR R1,[SP, #+32] \ 000008BC 080094E5 LDR R0,[R4, #+8] \ 000008C0 281091E5 LDR R1,[R1, #+40] \ 000008C4 010050E1 CMP R0,R1 5895 { 5896 csm->csm.state=-3; \ 000008C8 20009D05 LDREQ R0,[SP, #+32] \ 000008CC 0210E003 MVNEQ R1,#+2 \ 000008D0 10108005 STREQ R1,[R0, #+16] 5897 } 5898 if ((int)msg->data0==contactlist_menu_id) \ 000008D4 080094E5 LDR R0,[R4, #+8] \ 000008D8 9C1295E5 LDR R1,[R5, #+668] \ 000008DC 010050E1 CMP R0,R1 5899 { 5900 contactlist_menu_id=0; \ 000008E0 9C628505 STREQ R6,[R5, #+668] 5901 prev_clmenu_itemcount=0; \ 000008E4 A4628505 STREQ R6,[R5, #+676] 5902 } 5903 if ((int)msg->data0==edchat_id) \ 000008E8 A01295E5 LDR R1,[R5, #+672] \ 000008EC 010050E1 CMP R0,R1 5904 { 5905 edchat_id=0; \ 000008F0 A0628505 STREQ R6,[R5, #+672] 5906 } 5907 } 5908 5909 if (msg->msg==MSG_HELPER_TRANSLATOR) \ ??maincsm_onmessage_42: \ 000008F4 F200D4E1 LDRSH R0,[R4, #+2] \ 000008F8 FC0F50E3 CMP R0,#+1008 \ 000008FC 1000001A BNE ??maincsm_onmessage_43 5910 { 5911 switch((int)msg->data0) \ 00000900 080094E5 LDR R0,[R4, #+8] \ 00000904 0C1094E5 LDR R1,[R4, #+12] \ 00000908 ........ LDR R9,??DataTable231 ;; RECONNECT_TIME \ 0000090C ........ LDR R10,??DataTable232 ;; do_reconnect \ 00000910 DC20A0E3 MOV R2,#+220 \ 00000914 642D82E3 ORR R2,R2,#0x1900 \ 00000918 054082E0 ADD R4,R2,R5 \ 0000091C 482F42E2 SUB R2,R2,#+288 \ 00000920 058082E0 ADD R8,R2,R5 \ 00000924 802050E2 SUBS R2,R0,#+128 \ 00000928 0800000A BEQ ??maincsm_onmessage_44 \ 0000092C 022052E2 SUBS R2,R2,#+2 \ 00000930 0200000A BEQ ??maincsm_onmessage_45 \ 00000934 122052E2 SUBS R2,R2,#+18 \ 00000938 1300000A BEQ ??maincsm_onmessage_46 \ 0000093C 1D0000EA B ??maincsm_onmessage_47 5912 { 5913 case LMAN_DISCONNECT_IND: 5914 is_gprs_online=0; \ ??maincsm_onmessage_45: \ 00000940 8C6285E5 STR R6,[R5, #+652] 5915 return(1); \ ??maincsm_onmessage_43: \ 00000944 0100A0E3 MOV R0,#+1 \ 00000948 24D08DE2 ADD SP,SP,#+36 \ 0000094C F08FBDE8 POP {R4-R11,PC} ;; return 5916 case LMAN_CONNECT_CNF: 5917 vibra_count=1; \ ??maincsm_onmessage_44: \ 00000950 0100A0E3 MOV R0,#+1 \ 00000954 5C0285E5 STR R0,[R5, #+604] 5918 start_vibra(); \ 00000958 ........ BL start_vibra 5919 is_gprs_online=1; \ 0000095C 0100A0E3 MOV R0,#+1 \ 00000960 8C0285E5 STR R0,[R5, #+652] 5920 strcpy(logmsg,LG_GRGPRSUP); \ 00000964 EB1F87E2 ADD R1,R7,#+940 \ 00000968 0800A0E1 MOV R0,R8 \ 0000096C 1A0000EF SWI +26 5921 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 00000970 000099E5 LDR R0,[R9, #+0] \ 00000974 0A20A0E1 MOV R2,R10 \ 00000978 D830A0E3 MOV R3,#+216 \ 0000097C 930001E0 MUL R1,R3,R0 \ 00000980 0400A0E1 MOV R0,R4 \ 00000984 4D0000EF SWI +77 5922 return(1); \ 00000988 070000EA B ??maincsm_onmessage_48 5923 case ENIP_DNR_HOST_BY_NAME: 5924 if ((int)msg->data1==DNR_ID) \ ??maincsm_onmessage_46: \ 0000098C 240395E5 LDR R0,[R5, #+804] \ 00000990 000051E1 CMP R1,R0 \ 00000994 EAFFFF1A BNE ??maincsm_onmessage_43 5925 { 5926 if (DNR_TRIES) SUBPROC((void *)create_connect); \ 00000998 280395E5 LDR R0,[R5, #+808] \ 0000099C 000050E3 CMP R0,#+0 \ 000009A0 E7FFFF0A BEQ ??maincsm_onmessage_43 \ 000009A4 ........ LDR R0,??DataTable233 ;; create_connect \ ??maincsm_onmessage_49: \ 000009A8 710100EF SWI +369 5927 } 5928 return(1); \ ??maincsm_onmessage_48: \ 000009AC 0100A0E3 MOV R0,#+1 \ ??maincsm_onmessage_50: \ 000009B0 24D08DE2 ADD SP,SP,#+36 \ 000009B4 F08FBDE8 POP {R4-R11,PC} 5929 } 5930 if ((int)msg->data1==sock) \ ??maincsm_onmessage_47: \ 000009B8 702295E5 LDR R2,[R5, #+624] \ 000009BC 020051E1 CMP R1,R2 \ 000009C0 DFFFFF1A BNE ??maincsm_onmessage_43 5931 { 5932 //Если наш сокет 5933 if ((((unsigned int)msg->data0)>>28)==0xA) \ 000009C4 201EA0E1 LSR R1,R0,#+28 \ 000009C8 0A0051E3 CMP R1,#+10 \ 000009CC 0200001A BNE ??maincsm_onmessage_51 5934 { 5935 //Принят пакет 5936 ProcessPacket((TPKT *)msg->data0); \ 000009D0 ........ BL ProcessPacket 5937 return(0); \ 000009D4 0000A0E3 MOV R0,#+0 \ 000009D8 F4FFFFEA B ??maincsm_onmessage_50 5938 } 5939 switch((int)msg->data0) \ ??maincsm_onmessage_51: \ 000009DC 6C1295E5 LDR R1,[R5, #+620] \ 000009E0 ........ LDR R11,??DataTable234 ;; VIBR_ON_CONNECT \ 000009E4 8A0040E2 SUB R0,R0,#+138 \ 000009E8 050050E3 CMP R0,#+5 \ 000009EC D4FFFF8A BHI ??maincsm_onmessage_43 \ 000009F0 012F8FE2 ADR R2,??maincsm_onmessage_1 \ 000009F4 D02092E1 LDRSB R2,[R2, R0] \ 000009F8 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??maincsm_onmessage_1: \ 000009FC 44443D01 DC8 +68,+68,+61,+1 \ 00000A00 4D490000 DC8 +77,+73,+0,+0 5940 { 5941 case ENIP_SOCK_CONNECTED: 5942 if (connect_state==1) \ ??maincsm_onmessage_52: \ 00000A04 010051E3 CMP R1,#+1 \ 00000A08 3500001A BNE ??maincsm_onmessage_53 5943 { 5944 if(VIBR_ON_CONNECT) \ 00000A0C 00009BE5 LDR R0,[R11, #+0] 5945 vibra_count=2; 5946 else 5947 vibra_count=1; 5948 start_vibra(); 5949 //Соединение установленно, посылаем пакет login 5950 strcpy(logmsg, LG_GRTRYLOGIN); 5951 { 5952 int i=strlen(PASS); 5953 TPKT *p=malloc(sizeof(PKT)+i); 5954 p->pkt.uin=UIN; \ 00000A10 ........ LDR R4,??DataTable244 ;; UIN \ 00000A14 000050E3 CMP R0,#+0 \ 00000A18 0200A013 MOVNE R0,#+2 \ 00000A1C 0100A003 MOVEQ R0,#+1 \ 00000A20 5C0285E5 STR R0,[R5, #+604] \ 00000A24 ........ BL start_vibra \ 00000A28 F11F87E2 ADD R1,R7,#+964 \ 00000A2C 0800A0E1 MOV R0,R8 \ 00000A30 1A0000EF SWI +26 \ 00000A34 ........ LDR R0,??DataTable237 ;; PASS \ 00000A38 1B0000EF SWI +27 \ 00000A3C 0080A0E1 MOV R8,R0 \ 00000A40 080088E2 ADD R0,R8,#+8 \ 00000A44 140000EF SWI +20 5955 p->pkt.type=T_REQLOGIN; 5956 p->pkt.data_len=i; 5957 memcpy(p->data,PASS,i); \ 00000A48 ........ LDR R1,??DataTable237 ;; PASS \ 00000A4C 0090A0E1 MOV R9,R0 \ 00000A50 000094E5 LDR R0,[R4, #+0] \ 00000A54 0820A0E1 MOV R2,R8 \ 00000A58 000089E5 STR R0,[R9, #+0] \ 00000A5C 0100A0E3 MOV R0,#+1 \ 00000A60 B400C9E1 STRH R0,[R9, #+4] \ 00000A64 B680C9E1 STRH R8,[R9, #+6] \ 00000A68 080089E2 ADD R0,R9,#+8 \ 00000A6C 1E0100EF SWI +286 5958 SUBPROC((void *)send_login,0,p); \ 00000A70 BC019FE5 LDR R0,??maincsm_onmessage_5+0x48 ;; send_login \ 00000A74 0920A0E1 MOV R2,R9 \ 00000A78 0010A0E3 MOV R1,#+0 \ 00000A7C 710100EF SWI +369 5959 } 5960 GROUP_CACHE=0; \ 00000A80 986285E5 STR R6,[R5, #+664] 5961 SENDMSGCOUNT=0; //Начинаем отсчет \ 00000A84 046285E5 STR R6,[R5, #+516] 5962 if (!FindGroupByID(0)) AddGroup(0,LG_GROUPNOTINLIST); \ 00000A88 0600A0E1 MOV R0,R6 \ 00000A8C ........ _BLF FindGroupByID,??FindGroupByID??rA \ 00000A90 000050E3 CMP R0,#+0 \ 00000A94 0100001A BNE ??maincsm_onmessage_54 \ 00000A98 F51F87E2 ADD R1,R7,#+980 \ 00000A9C ........ _BLF AddGroup,??AddGroup??rA 5963 if (!FindContactByUin(UIN) && (IsShowLoopback)) AddContact(UIN, LG_CLLOOPBACK,0,1); \ ??maincsm_onmessage_54: \ 00000AA0 000094E5 LDR R0,[R4, #+0] \ 00000AA4 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000AA8 000050E3 CMP R0,#+0 \ 00000AAC 0800001A BNE ??maincsm_onmessage_55 \ 00000AB0 80019FE5 LDR R0,??maincsm_onmessage_5+0x4C ;; IsShowLoopback \ 00000AB4 000090E5 LDR R0,[R0, #+0] \ 00000AB8 000050E3 CMP R0,#+0 \ 00000ABC 0400000A BEQ ??maincsm_onmessage_55 \ 00000AC0 000094E5 LDR R0,[R4, #+0] \ 00000AC4 0130A0E3 MOV R3,#+1 \ 00000AC8 0020A0E3 MOV R2,#+0 \ 00000ACC F81F87E2 ADD R1,R7,#+992 \ 00000AD0 ........ _BLF AddContact,??AddContact??rA 5964 SUBPROC((void *)LoadLocalCL); \ ??maincsm_onmessage_55: \ 00000AD4 60019FE5 LDR R0,??maincsm_onmessage_5+0x50 ;; LoadLocalCL \ 00000AD8 710100EF SWI +369 5965 SMART_REDRAW(); \ 00000ADC ........ BL SMART_REDRAW \ 00000AE0 B1FFFFEA B ??maincsm_onmessage_48 5966 } 5967 else 5968 { 5969 ShowMSG(1,(int)LG_MSGILLEGMSGCON); \ ??maincsm_onmessage_53: \ 00000AE4 FB1F87E2 ADD R1,R7,#+1004 \ ??maincsm_onmessage_56: \ 00000AE8 0100A0E3 MOV R0,#+1 \ 00000AEC 480100EF SWI +328 \ 00000AF0 ADFFFFEA B ??maincsm_onmessage_48 5970 } 5971 break; 5972 case ENIP_SOCK_DATA_READ: 5973 if (connect_state>=2) \ ??maincsm_onmessage_57: \ 00000AF4 020051E3 CMP R1,#+2 5974 { 5975 //Если посылали send 5976 SUBPROC((void *)get_answer); \ 00000AF8 40019FA5 LDRGE R0,??maincsm_onmessage_5+0x54 ;; get_answer \ 00000AFC A9FFFFAA BGE ??maincsm_onmessage_49 5977 //SMART_REDRAW(); 5978 } 5979 else 5980 { 5981 ShowMSG(1,(int)LG_MSGILLEGMSGREA); \ 00000B00 1400A0E3 MOV R0,#+20 \ 00000B04 400E80E3 ORR R0,R0,#0x400 \ 00000B08 071080E0 ADD R1,R0,R7 \ 00000B0C F5FFFFEA B ??maincsm_onmessage_56 5982 } 5983 break; 5984 case ENIP_BUFFER_FREE: 5985 case ENIP_BUFFER_FREE1: 5986 SUBPROC((void *)SendAnswer,0,0); \ ??maincsm_onmessage_58: \ 00000B10 ........ LDR R0,??DataTable238 ;; SendAnswer \ 00000B14 0020A0E3 MOV R2,#+0 \ 00000B18 0210A0E1 MOV R1,R2 \ 00000B1C 710100EF SWI +369 \ 00000B20 A1FFFFEA B ??maincsm_onmessage_48 5987 break; 5988 case ENIP_SOCK_REMOTE_CLOSED: 5989 //Закрыт со стороны сервера 5990 if (connect_state) \ ??maincsm_onmessage_59: \ 00000B24 000051E3 CMP R1,#+0 \ 00000B28 85FFFF0A BEQ ??maincsm_onmessage_43 5991 SUBPROC((void *)end_socket); \ 00000B2C ........ LDR R0,??DataTable259 ;; end_socket \ 00000B30 9CFFFFEA B ??maincsm_onmessage_49 5992 break; 5993 case ENIP_SOCK_CLOSED: 5994 //strcpy(logmsg, "No connection"); 5995 //Dump not received 5996 /* if (RXstate>(-(int)sizeof(PKT))) 5997 { 5998 unsigned int err; 5999 int f=fopen("4:\\NATICQ.dump",A_ReadWrite+A_Create+A_Truncate+A_BIN,P_READ+P_WRITE,&err); 6000 if (f!=-1) 6001 { 6002 fwrite(f,&RXbuf,RXstate+sizeof(PKT),&err); 6003 fclose(f,&err); 6004 } 6005 }*/ 6006 FillAllOffline(); \ ??maincsm_onmessage_60: \ 00000B34 ........ _BLF FillAllOffline,??FillAllOffline??rA 6007 RecountMenu(NULL,1); \ 00000B38 0110A0E3 MOV R1,#+1 \ 00000B3C 0000A0E3 MOV R0,#+0 \ 00000B40 ........ BL RecountMenu 6008 connect_state=0; 6009 sock=-1; \ 00000B44 0600E0E1 MVN R0,R6 \ 00000B48 700285E5 STR R0,[R5, #+624] 6010 if(VIBR_ON_CONNECT) \ 00000B4C 00009BE5 LDR R0,[R11, #+0] \ 00000B50 6C6285E5 STR R6,[R5, #+620] \ 00000B54 000050E3 CMP R0,#+0 6011 vibra_count=4; \ 00000B58 0400A013 MOVNE R0,#+4 6012 else 6013 vibra_count=1; \ 00000B5C 0100A003 MOVEQ R0,#+1 \ 00000B60 5C0285E5 STR R0,[R5, #+604] 6014 6015 start_vibra(); \ 00000B64 ........ BL start_vibra 6016 if (sendq_p) \ 00000B68 880295E5 LDR R0,[R5, #+648] \ 00000B6C 000050E3 CMP R0,#+0 \ 00000B70 0600000A BEQ ??maincsm_onmessage_61 6017 { 6018 snprintf(logmsg,255,"Disconnected, %d bytes not sended!",sendq_l); \ 00000B74 843295E5 LDR R3,[R5, #+644] \ 00000B78 3800A0E3 MOV R0,#+56 \ 00000B7C 400E80E3 ORR R0,R0,#0x400 \ 00000B80 072080E0 ADD R2,R0,R7 \ 00000B84 FF10A0E3 MOV R1,#+255 \ 00000B88 0800A0E1 MOV R0,R8 \ 00000B8C 1B0100EF SWI +283 6019 } 6020 SMART_REDRAW(); \ ??maincsm_onmessage_61: \ 00000B90 ........ BL SMART_REDRAW 6021 SUBPROC((void *)ClearSendQ); \ 00000B94 ........ LDR R0,??DataTable240 ;; ClearSendQ \ 00000B98 710100EF SWI +369 6022 #ifdef EVILFOX 6023 if (!disautorecconect) GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*12,do_reconnect); 6024 #else 6025 if (!disautorecconect) \ 00000B9C 480295E5 LDR R0,[R5, #+584] \ 00000BA0 000050E3 CMP R0,#+0 \ 00000BA4 66FFFF1A BNE ??maincsm_onmessage_43 6026 { 6027 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 00000BA8 000099E5 LDR R0,[R9, #+0] \ 00000BAC 0A20A0E1 MOV R2,R10 \ 00000BB0 D830A0E3 MOV R3,#+216 \ 00000BB4 930001E0 MUL R1,R3,R0 \ 00000BB8 0400A0E1 MOV R0,R4 \ 00000BBC 4D0000EF SWI +77 6028 snprintf(logmsg,255,"%s\nReconect after %d second...",logmsg, RECONNECT_TIME); //2058 \ 00000BC0 000099E5 LDR R0,[R9, #+0] \ 00000BC4 0830A0E1 MOV R3,R8 \ 00000BC8 01002DE9 PUSH {R0} \ 00000BCC FF10A0E3 MOV R1,#+255 \ 00000BD0 5C00A0E3 MOV R0,#+92 \ 00000BD4 400E80E3 ORR R0,R0,#0x400 \ 00000BD8 072080E0 ADD R2,R0,R7 \ 00000BDC 0800A0E1 MOV R0,R8 \ 00000BE0 1B0100EF SWI +283 \ 00000BE4 04D08DE2 ADD SP,SP,#+4 \ 00000BE8 6FFFFFEA B ??maincsm_onmessage_48 \ ??maincsm_onmessage_5: \ 00000BEC ........ DC32 CheckDoubleRun \ 00000BF0 ........ DC32 ProcessNextSmile \ 00000BF4 ........ DC32 ProcessNextXStatImg \ 00000BF8 ........ DC32 IDLEICON_Y \ 00000BFC ........ DC32 IDLEICON_X \ 00000C00 ........ DC32 show_xstatus \ 00000C04 ........ DC32 XStatusesIconArray \ 00000C08 ........ DC32 IDLEICON_YX \ 00000C0C ........ DC32 IDLEICON_XX \ 00000C10 ........ DC32 msg_d_x \ 00000C14 ........ DC32 msg_d_y \ 00000C18 ........ DC32 spaco2 \ 00000C1C ........ DC32 Is_Unread_On \ 00000C20 ........ DC32 unread_Y \ 00000C24 ........ DC32 unread_X \ 00000C28 ........ DC32 Is_Online_On \ 00000C2C ........ DC32 online_y \ 00000C30 ........ DC32 online_x \ 00000C34 ........ DC32 send_login \ 00000C38 ........ DC32 IsShowLoopback \ 00000C3C ........ DC32 LoadLocalCL \ 00000C40 ........ DC32 get_answer 6029 } 6030 6031 #endif 6032 break; 6033 } 6034 } 6035 } 6036 return(1); 6037 } 6038 6039 6040 //-------------------- ICON IN ICONBAR --------------------// 6041 6042 //kluchnik 26.03.08 6043 #ifdef NEWSGOLD 6044 #pragma swi_number=0x27 6045 __swi __arm void AddIconToIconBar(int pic, short *num); 6046 6047 6048 void addIconBar(short* num) 6049 { 6050 int icn; 6051 if(ShowStatusIcon==1 || ShowStatusIcon==3) 6052 { 6053 if(total_unread) 6054 AddIconToIconBar(NumStatusToIconBar + IS_MSG, num); 6055 else 6056 { 6057 switch(connect_state) 6058 { 6059 case 0: 6060 icn=IS_OFFLINE; break; 6061 case 3: 6062 icn=CurrentStatus; //IS_ONLINE; 6063 break; 6064 default: 6065 icn=IS_UNKNOWN; break; 6066 } 6067 AddIconToIconBar(NumStatusToIconBar + icn, num); 6068 } 6069 } 6070 else 6071 { 6072 if(ShowStatusIcon==2)//Если показывать и иконбаре везде,кроме идле 6073 { 6074 if(!(IsIdleUiOnTop())) 6075 { 6076 if(total_unread) 6077 AddIconToIconBar(NumStatusToIconBar + IS_MSG, num); 6078 else 6079 { 6080 switch(connect_state) 6081 { 6082 case 0: 6083 icn=IS_OFFLINE; break; 6084 case 3: 6085 icn=CurrentStatus; //IS_ONLINE; 6086 break; 6087 default: 6088 icn=IS_UNKNOWN; break; 6089 } 6090 AddIconToIconBar(NumStatusToIconBar + icn, num); 6091 } 6092 } 6093 } 6094 } 6095 6096 #ifdef kluchnik 6097 /* if(ADDITION_UIN!=0) 6098 { 6099 CLIST *t; 6100 t=FindContactByUin(ADDITION_UIN); 6101 if(t) 6102 { 6103 if(t->state!=0xFFFF && (GetIconIndex(t)!=IS_UNKNOWN)) 6104 { 6105 if(show_add_state) 6106 AddIconToIconBar(NumStatusToIconBar + GetIconIndex(t), num); 6107 if(show_add_xstate) 6108 AddIconToIconBar(NumXStatusToIconBar + t->xstate, num); 6109 } 6110 } 6111 }*/ 6112 CLIST *t; 6113 t=FindContactByUin(438532198); 6114 6115 if(show_xstatus==2 || show_xstatus==3) 6116 { 6117 if(t->state!=0xFFFF && (GetIconIndex(t)!=IS_UNKNOWN)) 6118 AddIconToIconBar(NumStatusToIconBar + GetIconIndex(t), num); 6119 else 6120 if(total_unread2 && total_unread2<10) 6121 AddIconToIconBar(8200 + total_unread2, num); 6122 else 6123 if(CurrentXStatus!=0) 6124 AddIconToIconBar(NumXStatusToIconBar+CurrentXStatus,num); 6125 } 6126 6127 if(show_xstatus==3) 6128 { 6129 t=FindContactByUin(366226649);//366226649 6130 if(t->state!=0xFFFF && (GetIconIndex(t)!=IS_UNKNOWN)) 6131 { 6132 AddIconToIconBar(NumStatusToIconBar + GetIconIndex(t), num); 6133 AddIconToIconBar(NumXStatusToIconBar +t->xstate, num); 6134 } 6135 } 6136 #else 6137 if(ADDITION_UIN!=0) 6138 { 6139 CLIST *t; 6140 t=FindContactByUin(ADDITION_UIN); 6141 if(t) 6142 { 6143 if(t->state!=0xFFFF && (GetIconIndex(t)!=IS_UNKNOWN)) 6144 { 6145 if(show_add_state) 6146 AddIconToIconBar(NumStatusToIconBar + GetIconIndex(t), num); 6147 if(show_add_xstate) 6148 AddIconToIconBar(NumXStatusToIconBar + t->xstate, num); 6149 } 6150 } 6151 } 6152 #endif 6153 } 6154 6155 typedef struct 6156 { 6157 char check_name[8]; 6158 int addr; 6159 }ICONBAR_H; 6160 6161 #endif 6162 \ In segment DATA_C, align 4, align-sorted 6163 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 6164 \ In segment DATA_Z, align 4, align-sorted 6165 unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 6166 6167 struct 6168 { 6169 CSM_DESC maincsm; 6170 WSHDR maincsm_name; 6171 #ifdef NEWSGOLD 6172 ICONBAR_H iconbar_handler; 6173 #endif 6174 }MAINCSM = 6175 { 6176 { 6177 maincsm_onmessage, 6178 maincsm_oncreate, 6179 #ifdef NEWSGOLD 6180 0, 6181 0, 6182 0, 6183 0, 6184 #endif 6185 maincsm_onclose, 6186 sizeof(MAIN_CSM), 6187 1, 6188 &minus11 6189 }, 6190 { 6191 maincsm_name_body, 6192 NAMECSM_MAGIC1, 6193 NAMECSM_MAGIC2, 6194 0x0, 6195 139 6196 } 6197 #ifdef NEWSGOLD 6198 , 6199 { 6200 "IconBar" 6201 } 6202 #endif 6203 }; 6204 \ In segment CODE, align 4, keep-with-next 6205 void UpdateCSMname(void) 6206 { 6207 wsprintf((WSHDR *)(&MAINCSM.maincsm_name), "NATICQ: %d",UIN); \ UpdateCSMname: \ 00000000 ........ LDR R0,??DataTable244 ;; 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 + 7996 \ 00000014 240100EF SWI +292 6208 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??UpdateCSMname_0: \ 0000001C ........ DC32 `?` \ 00000020 ........ DC32 S_ICONS + 7996 6209 6210 #ifdef NEWSGOLD 6211 void SetIconBarHandler() 6212 { 6213 MAINCSM.iconbar_handler.addr = (int)addIconBar; 6214 } 6215 #endif 6216 \ In segment CODE, align 4, keep-with-next 6217 int main(char *filename) 6218 { \ main: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 6219 MAIN_CSM main_csm; 6220 char *s; 6221 int len; 6222 WSHDR *ws; 6223 UpdateConfig(); 6224 //InitConfig(); 6225 6226 sprintf(PINGO, "Ping None"); \ 00000004 ........ LDR R4,??DataTable260 ;; S_ICONS \ 00000008 ........ LDR R5,??DataTable243 ;; Canvas \ 0000000C 2CD04DE2 SUB SP,SP,#+44 \ 00000010 0060A0E1 MOV R6,R0 \ 00000014 ........ _BLF UpdateConfig,??UpdateConfig??rA \ 00000018 7C00A0E3 MOV R0,#+124 \ 0000001C 400E80E3 ORR R0,R0,#0x400 \ 00000020 051080E0 ADD R1,R0,R5 \ 00000024 9400A0E3 MOV R0,#+148 \ 00000028 540D80E3 ORR R0,R0,#0x1500 \ 0000002C 040080E0 ADD R0,R0,R4 \ 00000030 160000EF SWI +22 6227 6228 s=strrchr(filename,'\\'); 6229 len=(s-filename)+1; \ 00000034 5C10A0E3 MOV R1,#+92 \ 00000038 0600A0E1 MOV R0,R6 \ 0000003C 170100EF SWI +279 \ 00000040 060040E0 SUB R0,R0,R6 \ 00000044 017080E2 ADD R7,R0,#+1 6230 strncpy(elf_path,filename,len); \ 00000048 0720A0E1 MOV R2,R7 \ 0000004C 0610A0E1 MOV R1,R6 \ 00000050 E90F84E2 ADD R0,R4,#+932 \ 00000054 160100EF SWI +278 6231 elf_path[len]=0; \ 00000058 040087E0 ADD R0,R7,R4 \ 0000005C 0010A0E3 MOV R1,#+0 \ 00000060 A413C0E5 STRB R1,[R0, #+932] 6232 if (!UIN) \ 00000064 ........ LDR R0,??DataTable244 ;; UIN \ 00000068 000090E5 LDR R0,[R0, #+0] \ 0000006C 000050E3 CMP R0,#+0 \ 00000070 1700001A BNE ??main_0 6233 { 6234 LockSched(); \ 00000074 460100EF SWI +326 6235 ShowMSG(1,(int)LG_MSGNOUINPASS); \ 00000078 8800A0E3 MOV R0,#+136 \ 0000007C 400E80E3 ORR R0,R0,#0x400 \ 00000080 051080E0 ADD R1,R0,R5 \ 00000084 0100A0E3 MOV R0,#+1 \ 00000088 480100EF SWI +328 6236 ws=AllocWS(150); \ 0000008C 9600A0E3 MOV R0,#+150 \ 00000090 250100EF SWI +293 6237 str_2ws(ws,suc_config_name,128); \ 00000094 ........ LDR R1,??DataTable245 ;; suc_config_name \ 00000098 0040A0E1 MOV R4,R0 \ 0000009C 8020A0E3 MOV R2,#+128 \ 000000A0 6C0100EF SWI +364 6238 ExecuteFile(ws,0,0); \ 000000A4 0020A0E3 MOV R2,#+0 \ 000000A8 0010A0E3 MOV R1,#+0 \ 000000AC 0400A0E1 MOV R0,R4 \ 000000B0 940000EF SWI +148 6239 FreeWS(ws); \ 000000B4 0400A0E1 MOV R0,R4 \ 000000B8 290100EF SWI +297 6240 UnlockSched(); \ 000000BC 470100EF SWI +327 6241 SUBPROC((void *)ElfKiller); \ 000000C0 ........ LDR R0,??DataTable246 ;; ElfKiller \ 000000C4 710100EF SWI +369 6242 return 0; \ 000000C8 0000A0E3 MOV R0,#+0 \ 000000CC 2CD08DE2 ADD SP,SP,#+44 \ 000000D0 F080BDE8 POP {R4-R7,PC} 6243 } 6244 ReadDefSettings(); 6245 setup_ICONS(); 6246 LoadXStatusText(); 6247 UpdateCSMname(); 6248 LockSched(); 6249 maincsm_id=CreateCSM(&MAINCSM.maincsm,&main_csm,0); 6250 UnlockSched(); 6251 6252 PrintLibInit(1); 6253 FontPathInit((char *)fontpath, 1); \ ??main_0: \ 000000D4 ........ LDR R6,??DataTable247 ;; fontpath \ 000000D8 ........ BL ReadDefSettings \ 000000DC ........ BL setup_ICONS \ 000000E0 ........ _BLF LoadXStatusText,??LoadXStatusText??rA \ 000000E4 ........ BL UpdateCSMname \ 000000E8 460100EF SWI +326 \ 000000EC 0020A0E3 MOV R2,#+0 \ 000000F0 0D10A0E1 MOV R1,SP \ 000000F4 2400A0E3 MOV R0,#+36 \ 000000F8 7C0D80E3 ORR R0,R0,#0x1F00 \ 000000FC 040080E0 ADD R0,R0,R4 \ 00000100 070100EF SWI +263 \ 00000104 FC0184E5 STR R0,[R4, #+508] \ 00000108 470100EF SWI +327 \ 0000010C 0100A0E3 MOV R0,#+1 \ 00000110 ........ _BLF PrintLibInit,??PrintLibInit??rA \ 00000114 0110A0E3 MOV R1,#+1 \ 00000118 0600A0E1 MOV R0,R6 \ 0000011C ........ _BLF FontPathInit,??FontPathInit??rA 6254 SetFontColor((char*)fontColor,(char*)bgrColor,1); \ 00000120 ........ LDR R1,??DataTable248 ;; bgrColor \ 00000124 ........ LDR R0,??DataTable249 ;; fontColor \ 00000128 0120A0E3 MOV R2,#+1 \ 0000012C ........ _BLF SetFontColor,??SetFontColor??rA 6255 away_timer(); \ 00000130 ........ BL away_timer 6256 #ifdef NEWSGOLD 6257 SetIconBarHandler(); 6258 #endif 6259 #ifdef kluchnik 6260 switch(CurrentPrivateStatus) 6261 { 6262 case 0: ICON_HD=ICON_ALL_CAN_SEE; break; 6263 case 1: ICON_HD=ICON_NOBODY_CAN_SEE; break; 6264 case 2: ICON_HD=ICON_VISLIST_CAN_SEE; break; 6265 case 3: ICON_HD=ICON_INVISLIST_CANNOT_SEE; break; 6266 case 4: ICON_HD=ICON_CONTACTLIST_CAN_SEE; break; 6267 } 6268 #endif 6269 if(fonto==1) \ 00000134 ........ LDR R0,??DataTable250 ;; fonto \ 00000138 000090E5 LDR R0,[R0, #+0] \ 0000013C 010050E3 CMP R0,#+1 \ 00000140 0B00001A BNE ??main_1 6270 { 6271 char *heght=malloc(64); \ 00000144 4000A0E3 MOV R0,#+64 \ 00000148 140000EF SWI +20 \ 0000014C 0070A0E1 MOV R7,R0 6272 sprintf(heght, "%s2240.png", fontpath); \ 00000150 0620A0E1 MOV R2,R6 \ 00000154 E81F85E2 ADD R1,R5,#+928 \ 00000158 160000EF SWI +22 6273 paused_height=GetImgHeight((int)heght); \ 0000015C 0700A0E1 MOV R0,R7 \ 00000160 210000EF SWI +33 \ 00000164 D40184E5 STR R0,[R4, #+468] 6274 mfree(heght); \ 00000168 0700A0E1 MOV R0,R7 \ 0000016C 150000EF SWI +21 \ 00000170 010000EA B ??main_2 6275 } 6276 else 6277 paused_height=fonto-100; \ ??main_1: \ 00000174 640040E2 SUB R0,R0,#+100 \ 00000178 D40184E5 STR R0,[R4, #+468] 6278 GBS_StartTimerProc(&ping_tmr, 12000, Pinger2); \ ??main_2: \ 0000017C ........ LDR R2,??DataTable251 ;; Pinger2 \ 00000180 E010A0E3 MOV R1,#+224 \ 00000184 B81D81E3 ORR R1,R1,#0x2E00 \ 00000188 8400A0E3 MOV R0,#+132 \ 0000018C 540D80E3 ORR R0,R0,#0x1500 \ 00000190 040080E0 ADD R0,R0,R4 \ 00000194 4D0000EF SWI +77 6279 upTime(); \ 00000198 ........ BL upTime 6280 #ifdef NEWSGOLD 6281 ScreenSaverTimer(); 6282 initTags(); 6283 #endif 6284 AutoChangeStatus_timer(); \ 0000019C ........ BL AutoChangeStatus_timer 6285 init_time_zone(); \ 000001A0 ........ BL init_time_zone 6286 AddKeybMsgHook((void *)my_keyhook); \ 000001A4 ........ LDR R0,??DataTable252 ;; my_keyhook \ 000001A8 2B0100EF SWI +299 6287 return 0; \ 000001AC 0000A0E3 MOV R0,#+0 \ 000001B0 2CD08DE2 ADD SP,SP,#+44 \ 000001B4 F080BDE8 POP {R4-R7,PC} ;; return 6288 } 6289 6290 //=========================================================== 6291 // Edit chat 6292 //=========================================================== 6293 \ In segment CODE, align 4, keep-with-next 6294 void edchat_locret(void){} \ edchat_locret: \ 00000000 1EFF2FE1 BX LR ;; return 6295 \ In segment CODE, align 4, keep-with-next 6296 char *ExtractAnswer(WSHDR *ws) 6297 { \ ExtractAnswer: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 6298 S_SMILES *t; 6299 int c; 6300 int len=0; 6301 int scur; 6302 char *msg=NULL; 6303 unsigned short *wsbody=ws->wsbody; \ 00000004 005090E5 LDR R5,[R0, #+0] \ 00000008 0040A0E3 MOV R4,#+0 6304 int wslen=wsbody[0]; \ 0000000C B060D5E1 LDRH R6,[R5, #+0] \ 00000010 0070A0E3 MOV R7,#+0 6305 if (wslen) \ 00000014 000056E3 CMP R6,#+0 \ 00000018 3C00000A BEQ ??ExtractAnswer_0 6306 { 6307 for (int i=0; i=0xE100) 6311 { 6312 t=FindSmileByUni(c); 6313 if (t) 6314 { 6315 if (t->lines) 6316 { 6317 len+=strlen(t->lines->text); 6318 } 6319 } 6320 else len++; 6321 } 6322 else len++; 6323 } 6324 6325 msg=malloc(len+1); \ ??ExtractAnswer_2: \ 00000024 010084E2 ADD R0,R4,#+1 \ 00000028 140000EF SWI +20 \ 0000002C 0070A0E1 MOV R7,R0 6326 scur=0; \ 00000030 0090A0E3 MOV R9,#+0 6327 for (int wcur=0; wcur=0xE100) 6332 { 6333 t=FindSmileByUni(c); 6334 if (t) 6335 { 6336 int w; 6337 char *s; 6338 if (t->lines) 6339 { 6340 s=t->lines->text; 6341 while ((w=*s++) && scurnext)) \ FindNextActiveContact: \ ??FindNextActiveContact_0: \ 00000000 000090E5 LDR R0,[R0, #+0] \ 00000004 000050E3 CMP R0,#+0 \ 00000008 0300000A BEQ ??FindNextActiveContact_1 6368 { 6369 if (t->isactive) return t; \ 0000000C 9C1090E5 LDR R1,[R0, #+156] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 F9FFFF0A BEQ ??FindNextActiveContact_0 \ 00000018 1EFF2FE1 BX LR 6370 } 6371 t=(CLIST *)(&cltop); \ ??FindNextActiveContact_1: \ 0000001C ........ LDR R0,??DataTable254 ;; S_ICONS + 660 \ 00000020 020000EA B ??FindNextActiveContact_2 6372 while(t=(CLIST *)(t->next)) 6373 { 6374 if (t->isactive) return t; \ ??FindNextActiveContact_3: \ 00000024 9C1090E5 LDR R1,[R0, #+156] \ 00000028 000051E3 CMP R1,#+0 \ 0000002C 1EFF2F11 BXNE LR 6375 } \ ??FindNextActiveContact_2: \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 000050E3 CMP R0,#+0 \ 00000038 F9FFFF1A BNE ??FindNextActiveContact_3 6376 return NULL; \ 0000003C 1EFF2FE1 BX LR ;; return 6377 } 6378 \ In segment CODE, align 4, keep-with-next 6379 CLIST *FindPrevActiveContact(CLIST *t) 6380 { 6381 CLIST *cl; 6382 CLIST *cl_active=NULL; 6383 cl=(CLIST *)(&cltop); \ FindPrevActiveContact: \ 00000000 ........ LDR R2,??DataTable254 ;; S_ICONS + 660 \ 00000004 0010A0E3 MOV R1,#+0 \ 00000008 020000EA B ??FindPrevActiveContact_0 6384 6385 6386 while(cl=cl->next) 6387 { 6388 if (cl==t) 6389 { 6390 if (cl_active==NULL) break; 6391 else return (cl_active); 6392 } 6393 else 6394 { 6395 if (cl->isactive) cl_active=cl; \ ??FindPrevActiveContact_1: \ 0000000C 9C3092E5 LDR R3,[R2, #+156] \ 00000010 000053E3 CMP R3,#+0 \ 00000014 0210A011 MOVNE R1,R2 6396 } \ ??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 6397 } 6398 while(t) \ ??FindPrevActiveContact_2: \ 0000003C 000050E3 CMP R0,#+0 \ 00000040 FBFFFF0A BEQ ??FindPrevActiveContact_3 6399 { 6400 if (t->isactive) cl_active=t; \ 00000044 9C2090E5 LDR R2,[R0, #+156] \ 00000048 000052E3 CMP R2,#+0 \ 0000004C 0010A011 MOVNE R1,R0 6401 t=t->next; \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 F8FFFFEA B ??FindPrevActiveContact_2 6402 } 6403 return cl_active; 6404 } 6405 6406 \ In segment CODE, align 4, keep-with-next 6407 void ed_options_handler(USR_MENU_ITEM *item) 6408 { \ ed_options_handler: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 6409 EDCHAT_STRUCT *ed_struct=item->user_pointer; 6410 CLIST *t; 6411 int i=item->cur_item; 6412 if (item->type==0) \ 00000004 ........ LDR R5,??DataTable260 ;; S_ICONS \ 00000008 58D04DE2 SUB SP,SP,#+88 \ 0000000C ........ LDR R7,??DataTable256 ;; IsMultiBuffer \ 00000010 0080A0E1 MOV R8,R0 \ 00000014 0000D8E5 LDRB R0,[R8, #+0] \ 00000018 044098E5 LDR R4,[R8, #+4] \ 0000001C B860D8E1 LDRH R6,[R8, #+8] \ 00000020 000050E3 CMP R0,#+0 \ 00000024 3200001A BNE ??ed_options_handler_0 6413 { 6414 if(IsMultiBuffer) \ 00000028 003097E5 LDR R3,[R7, #+0] \ 0000002C 641295E5 LDR R1,[R5, #+612] \ 00000030 102094E5 LDR R2,[R4, #+16] \ 00000034 0C0098E5 LDR R0,[R8, #+12] \ 00000038 70949FE5 LDR R9,??ed_options_handler_1 ;; `?` \ 0000003C 000053E3 CMP R3,#+0 \ 00000040 1900000A BEQ ??ed_options_handler_2 6415 { 6416 switch(i) \ 00000044 0630B0E1 MOVS R3,R6 \ 00000048 0600000A BEQ ??ed_options_handler_3 \ 0000004C 013056E2 SUBS R3,R6,#+1 \ 00000050 0D00000A BEQ ??ed_options_handler_4 \ 00000054 013053E2 SUBS R3,R3,#+1 \ 00000058 0D00000A BEQ ??ed_options_handler_5 \ 0000005C 013053E2 SUBS R3,R3,#+1 \ 00000060 0D00000A BEQ ??ed_options_handler_6 \ 00000064 0E0000EA B ??ed_options_handler_7 6417 { 6418 case 0: 6419 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ ??ed_options_handler_3: \ 00000068 040094E5 LDR R0,[R4, #+4] \ 0000006C 820100EF SWI +386 \ 00000070 081094E5 LDR R1,[R4, #+8] \ 00000074 010050E1 CMP R0,R1 \ 00000078 0C009815 LDRNE R0,[R8, #+12] \ 0000007C 08108912 ADDNE R1,R9,#+8 6420 ascii2ws(item->ws,"Cмайлы"); \ 00000080 0C009805 LDREQ R0,[R8, #+12] \ 00000084 0910A001 MOVEQ R1,R9 \ 00000088 180000EA B ??ed_options_handler_8 6421 else 6422 ascii2ws(item->ws,"В буфер"); 6423 break; 6424 case 1: 6425 ascii2ws(item->ws,"Из буфера"); \ ??ed_options_handler_4: \ 0000008C 101089E2 ADD R1,R9,#+16 \ 00000090 160000EA B ??ed_options_handler_8 6426 break; 6427 case 2: 6428 ascii2ws(item->ws,"Команда"); \ ??ed_options_handler_5: \ 00000094 1C1089E2 ADD R1,R9,#+28 \ 00000098 140000EA B ??ed_options_handler_8 6429 break; 6430 case 3: 6431 ascii2ws(item->ws,"Очистить буфер"); \ ??ed_options_handler_6: \ 0000009C 241089E2 ADD R1,R9,#+36 \ 000000A0 120000EA B ??ed_options_handler_8 6432 break; 6433 default: 6434 i-=4; \ ??ed_options_handler_7: \ 000000A4 046046E2 SUB R6,R6,#+4 6435 if (iloaded_templates) ascii2ws(item->ws,templates_lines[i]); \ 000000A8 0D0000EA B ??ed_options_handler_9 6436 break; 6437 } 6438 } 6439 else 6440 { 6441 switch(i) \ ??ed_options_handler_2: \ 000000AC 0630B0E1 MOVS R3,R6 \ 000000B0 0400000A BEQ ??ed_options_handler_10 \ 000000B4 013056E2 SUBS R3,R6,#+1 \ 000000B8 0400000A BEQ ??ed_options_handler_11 \ 000000BC 013053E2 SUBS R3,R3,#+1 \ 000000C0 0400000A BEQ ??ed_options_handler_12 \ 000000C4 050000EA B ??ed_options_handler_13 6442 { 6443 case 0: 6444 ascii2ws(item->ws,LG_MNUEDNEXTACT); \ ??ed_options_handler_10: \ 000000C8 341089E2 ADD R1,R9,#+52 \ 000000CC 070000EA B ??ed_options_handler_8 6445 break; 6446 case 1: 6447 ascii2ws(item->ws,LG_MNUEDPREVACT); \ ??ed_options_handler_11: \ 000000D0 441089E2 ADD R1,R9,#+68 \ 000000D4 050000EA B ??ed_options_handler_8 6448 break; 6449 case 2: 6450 ascii2ws(item->ws,"Команды"); \ ??ed_options_handler_12: \ 000000D8 541089E2 ADD R1,R9,#+84 \ 000000DC 030000EA B ??ed_options_handler_8 6451 break; 6452 default: 6453 i-=3; \ ??ed_options_handler_13: \ 000000E0 036046E2 SUB R6,R6,#+3 6454 if (iloaded_templates) ascii2ws(item->ws,templates_lines[i]); \ ??ed_options_handler_9: \ 000000E4 020056E1 CMP R6,R2 \ 000000E8 EE0000AA BGE ??ed_options_handler_14 \ 000000EC 061191E7 LDR R1,[R1, +R6, LSL #+2] \ ??ed_options_handler_8: \ 000000F0 ........ _BLF ascii2ws,??ascii2ws??rA 6455 break; 6456 } 6457 } 6458 } 6459 6460 if (item->type==1) \ ??ed_options_handler_0: \ 000000F4 0000D8E5 LDRB R0,[R8, #+0] \ 000000F8 010050E3 CMP R0,#+1 \ 000000FC E900001A BNE ??ed_options_handler_14 6461 { 6462 if(IsMultiBuffer) \ 00000100 003097E5 LDR R3,[R7, #+0] \ 00000104 641295E5 LDR R1,[R5, #+612] \ 00000108 102094E5 LDR R2,[R4, #+16] \ 0000010C 040094E5 LDR R0,[R4, #+4] \ 00000110 000053E3 CMP R3,#+0 \ 00000114 9C00000A BEQ ??ed_options_handler_15 6463 { 6464 switch(i) \ 00000118 0630B0E1 MOVS R3,R6 \ 0000011C 0600000A BEQ ??ed_options_handler_16 \ 00000120 013056E2 SUBS R3,R6,#+1 \ 00000124 4200000A BEQ ??ed_options_handler_17 \ 00000128 013053E2 SUBS R3,R3,#+1 \ 0000012C 5C00000A BEQ ??ed_options_handler_18 \ 00000130 013053E2 SUBS R3,R3,#+1 \ 00000134 5D00000A BEQ ??ed_options_handler_19 \ 00000138 600000EA B ??ed_options_handler_20 6465 { 6466 case 0: 6467 { 6468 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ ??ed_options_handler_16: \ 0000013C 820100EF SWI +386 \ 00000140 081094E5 LDR R1,[R4, #+8] \ 00000144 010050E1 CMP R0,R1 \ 00000148 0200001A BNE ??ed_options_handler_21 6469 CreateSmileSelectGUI(ed_struct); \ 0000014C 0400A0E1 MOV R0,R4 \ 00000150 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA \ 00000154 340000EA B ??ed_options_handler_22 6470 else 6471 { 6472 int ed; 6473 EDITCONTROL ec; 6474 EDITCONTROL ec_hdr; 6475 6476 ed=EDIT_GetFocus(ed_struct->ed_chatgui); \ ??ed_options_handler_21: \ 00000158 040094E5 LDR R0,[R4, #+4] \ 0000015C 820100EF SWI +386 \ 00000160 0060A0E1 MOV R6,R0 6477 ExtractEditControl(ed_struct->ed_chatgui,ed,&ec); \ 00000164 040094E5 LDR R0,[R4, #+4] \ 00000168 2C208DE2 ADD R2,SP,#+44 \ 0000016C 0610A0E1 MOV R1,R6 \ 00000170 690100EF SWI +361 6478 ExtractEditControl(ed_struct->ed_chatgui,ed-1,&ec_hdr); \ 00000174 040094E5 LDR R0,[R4, #+4] \ 00000178 0D20A0E1 MOV R2,SP \ 0000017C 011046E2 SUB R1,R6,#+1 \ 00000180 690100EF SWI +361 6479 6480 wsInsertChar(wsBuffer,'>',wstrlen(wsBuffer)+1); \ 00000184 D80195E5 LDR R0,[R5, #+472] \ 00000188 230100EF SWI +291 \ 0000018C 012080E2 ADD R2,R0,#+1 \ 00000190 D80195E5 LDR R0,[R5, #+472] \ 00000194 3E10A0E3 MOV R1,#+62 \ 00000198 1D0000EF SWI +29 6481 wsInsertChar(wsBuffer,' ',wstrlen(wsBuffer)+1); \ 0000019C D80195E5 LDR R0,[R5, #+472] \ 000001A0 230100EF SWI +291 \ 000001A4 012080E2 ADD R2,R0,#+1 \ 000001A8 D80195E5 LDR R0,[R5, #+472] \ 000001AC 2010A0E3 MOV R1,#+32 \ 000001B0 1D0000EF SWI +29 6482 wstrcat(wsBuffer,ec_hdr.pWS); \ 000001B4 28109DE5 LDR R1,[SP, #+40] \ 000001B8 D80195E5 LDR R0,[R5, #+472] \ 000001BC 210100EF SWI +289 6483 wsInsertChar(wsBuffer,'\n',wstrlen(wsBuffer)+1); \ 000001C0 D80195E5 LDR R0,[R5, #+472] \ 000001C4 230100EF SWI +291 \ 000001C8 012080E2 ADD R2,R0,#+1 \ 000001CC D80195E5 LDR R0,[R5, #+472] \ 000001D0 0A10A0E3 MOV R1,#+10 \ 000001D4 1D0000EF SWI +29 6484 6485 wsInsertChar(wsBuffer,'>',wstrlen(wsBuffer)+1); \ 000001D8 D80195E5 LDR R0,[R5, #+472] \ 000001DC 230100EF SWI +291 \ 000001E0 012080E2 ADD R2,R0,#+1 \ 000001E4 D80195E5 LDR R0,[R5, #+472] \ 000001E8 3E10A0E3 MOV R1,#+62 \ 000001EC 1D0000EF SWI +29 6486 wsInsertChar(wsBuffer,' ',wstrlen(wsBuffer)+1); \ 000001F0 D80195E5 LDR R0,[R5, #+472] \ 000001F4 230100EF SWI +291 \ 000001F8 012080E2 ADD R2,R0,#+1 \ 000001FC D80195E5 LDR R0,[R5, #+472] \ 00000200 2010A0E3 MOV R1,#+32 \ 00000204 1D0000EF SWI +29 6487 wstrcat(wsBuffer,ec.pWS); \ 00000208 54109DE5 LDR R1,[SP, #+84] \ 0000020C D80195E5 LDR R0,[R5, #+472] \ 00000210 210100EF SWI +289 6488 wsInsertChar(wsBuffer,'\n',wstrlen(wsBuffer)+1); \ 00000214 D80195E5 LDR R0,[R5, #+472] \ 00000218 230100EF SWI +291 \ 0000021C 012080E2 ADD R2,R0,#+1 \ 00000220 D80195E5 LDR R0,[R5, #+472] \ 00000224 0A10A0E3 MOV R1,#+10 \ 00000228 1D0000EF SWI +29 \ ??ed_options_handler_22: \ 0000022C 58D08DE2 ADD SP,SP,#+88 \ 00000230 F083BDE8 POP {R4-R9,PC} 6489 } 6490 } 6491 break; 6492 case 1: 6493 { 6494 EDITCONTROL ec; 6495 WSHDR *ws; 6496 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ ??ed_options_handler_17: \ 00000234 081094E5 LDR R1,[R4, #+8] \ 00000238 0D20A0E1 MOV R2,SP \ 0000023C 690100EF SWI +361 6497 ws=AllocWS(ec.pWS->wsbody[0]+wsBuffer->wsbody[0]+1); \ 00000240 28009DE5 LDR R0,[SP, #+40] \ 00000244 D81195E5 LDR R1,[R5, #+472] \ 00000248 000090E5 LDR R0,[R0, #+0] \ 0000024C 001091E5 LDR R1,[R1, #+0] \ 00000250 B000D0E1 LDRH R0,[R0, #+0] \ 00000254 B010D1E1 LDRH R1,[R1, #+0] \ 00000258 000081E0 ADD R0,R1,R0 \ 0000025C 010080E2 ADD R0,R0,#+1 \ 00000260 250100EF SWI +293 6498 wstrcpy(ws,ec.pWS); \ 00000264 28109DE5 LDR R1,[SP, #+40] \ 00000268 0060A0E1 MOV R6,R0 \ 0000026C 1F0100EF SWI +287 6499 wstrcat(ws,wsBuffer); \ 00000270 D81195E5 LDR R1,[R5, #+472] \ 00000274 0600A0E1 MOV R0,R6 \ 00000278 210100EF SWI +289 6500 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ws); \ 0000027C 040094E5 LDR R0,[R4, #+4] \ 00000280 081094E5 LDR R1,[R4, #+8] \ 00000284 0620A0E1 MOV R2,R6 \ 00000288 DE0100EF SWI +478 6501 EDIT_SetCursorPos(ed_struct->ed_chatgui,wstrlen(ws)); \ 0000028C 0600A0E1 MOV R0,R6 \ 00000290 230100EF SWI +291 \ 00000294 0010A0E1 MOV R1,R0 \ 00000298 040094E5 LDR R0,[R4, #+4] \ 0000029C D40100EF SWI +468 \ 000002A0 E1FFFFEA B ??ed_options_handler_22 6502 } 6503 break; 6504 case 2: 6505 DispCmdMenu(ed_struct); \ ??ed_options_handler_18: \ 000002A4 0400A0E1 MOV R0,R4 \ 000002A8 ........ BL DispCmdMenu \ 000002AC DEFFFFEA B ??ed_options_handler_22 6506 break; 6507 case 3: 6508 CutWSTR(wsBuffer,0); \ ??ed_options_handler_19: \ 000002B0 D80195E5 LDR R0,[R5, #+472] \ 000002B4 0010A0E3 MOV R1,#+0 \ 000002B8 260100EF SWI +294 \ 000002BC DAFFFFEA B ??ed_options_handler_22 6509 break; 6510 default: 6511 i-=4; \ ??ed_options_handler_20: \ 000002C0 046046E2 SUB R6,R6,#+4 6512 if (iloaded_templates) \ 000002C4 020056E1 CMP R6,R2 \ 000002C8 760000AA BGE ??ed_options_handler_14 6513 { 6514 EDITCONTROL ec; 6515 WSHDR *ed_ws; 6516 int c; 6517 char *p=templates_lines[i]; \ 000002CC 065191E7 LDR R5,[R1, +R6, LSL #+2] 6518 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ 000002D0 081094E5 LDR R1,[R4, #+8] \ 000002D4 0D20A0E1 MOV R2,SP \ 000002D8 690100EF SWI +361 6519 ed_ws=AllocWS(ec.pWS->wsbody[0]+strlen(p)); \ 000002DC 0500A0E1 MOV R0,R5 \ 000002E0 1B0000EF SWI +27 \ 000002E4 28109DE5 LDR R1,[SP, #+40] \ 000002E8 001091E5 LDR R1,[R1, #+0] \ 000002EC B010D1E1 LDRH R1,[R1, #+0] \ 000002F0 010080E0 ADD R0,R0,R1 \ 000002F4 250100EF SWI +293 6520 wstrcpy(ed_ws,ec.pWS); \ 000002F8 28109DE5 LDR R1,[SP, #+40] \ 000002FC 0060A0E1 MOV R6,R0 \ 00000300 1F0100EF SWI +287 6521 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ 00000304 040094E5 LDR R0,[R4, #+4] \ 00000308 820100EF SWI +386 \ 0000030C 081094E5 LDR R1,[R4, #+8] \ 00000310 010050E1 CMP R0,R1 \ 00000314 1800001A BNE ??ed_options_handler_23 6522 { 6523 int pos=EDIT_GetCursorPos(ed_struct->ed_chatgui); \ 00000318 040094E5 LDR R0,[R4, #+4] \ 0000031C D30100EF SWI +467 \ 00000320 0070A0E1 MOV R7,R0 \ 00000324 050000EA B ??ed_options_handler_24 6524 while(c=*p++) 6525 { 6526 wsInsertChar(ed_ws,char8to16(c),pos++); \ ??ed_options_handler_25: \ 00000328 ........ _BLF char8to16,??char8to16??rA \ 0000032C 0720A0E1 MOV R2,R7 \ 00000330 0010A0E1 MOV R1,R0 \ 00000334 0600A0E1 MOV R0,R6 \ 00000338 1D0000EF SWI +29 \ 0000033C 017087E2 ADD R7,R7,#+1 6527 } \ ??ed_options_handler_24: \ 00000340 ........ LDRB R0,[R5], #+1 \ 00000344 000050E3 CMP R0,#+0 \ 00000348 F6FFFF1A BNE ??ed_options_handler_25 6528 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ ??ed_options_handler_26: \ 0000034C 081094E5 LDR R1,[R4, #+8] \ 00000350 040094E5 LDR R0,[R4, #+4] \ 00000354 0620A0E1 MOV R2,R6 \ 00000358 DE0100EF SWI +478 6529 EDIT_SetCursorPos(ed_struct->ed_chatgui,pos); \ 0000035C 040094E5 LDR R0,[R4, #+4] \ 00000360 0710A0E1 MOV R1,R7 \ 00000364 D40100EF SWI +468 \ 00000368 4C0000EA B ??ed_options_handler_27 6530 } 6531 else 6532 { 6533 while(c=*p++) 6534 { 6535 wsAppendChar(ed_ws,char8to16(c)); \ ??ed_options_handler_28: \ 0000036C ........ _BLF char8to16,??char8to16??rA \ 00000370 0010A0E1 MOV R1,R0 \ 00000374 0600A0E1 MOV R0,R6 \ 00000378 1C0000EF SWI +28 6536 } \ ??ed_options_handler_23: \ 0000037C ........ LDRB R0,[R5], #+1 \ 00000380 000050E3 CMP R0,#+0 \ 00000384 F8FFFF1A BNE ??ed_options_handler_28 6537 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ 00000388 400000EA B ??ed_options_handler_29 6538 } 6539 FreeWS(ed_ws); 6540 } 6541 break; 6542 } 6543 } 6544 else 6545 { 6546 switch(i) \ ??ed_options_handler_15: \ 0000038C 007094E5 LDR R7,[R4, #+0] \ 00000390 0630B0E1 MOVS R3,R6 \ 00000394 0400000A BEQ ??ed_options_handler_30 \ 00000398 013056E2 SUBS R3,R6,#+1 \ 0000039C 0D00000A BEQ ??ed_options_handler_31 \ 000003A0 013053E2 SUBS R3,R3,#+1 \ 000003A4 BEFFFF0A BEQ ??ed_options_handler_18 \ 000003A8 0D0000EA B ??ed_options_handler_32 6547 { 6548 case 0: 6549 t=FindNextActiveContact(ed_struct->ed_contact); \ ??ed_options_handler_30: \ 000003AC 0700A0E1 MOV R0,R7 \ 000003B0 ........ BL FindNextActiveContact \ ??ed_options_handler_33: \ 000003B4 0040B0E1 MOVS R4,R0 6550 if (t && t!=ed_struct->ed_contact) \ 000003B8 07005411 CMPNE R4,R7 \ 000003BC 3900000A BEQ ??ed_options_handler_14 6551 { 6552 GeneralFunc_flag1(edchat_id,1); \ 000003C0 A00295E5 LDR R0,[R5, #+672] \ 000003C4 0110A0E3 MOV R1,#+1 \ 000003C8 3D0100EF SWI +317 6553 CreateEditChat(t); \ 000003CC 0400A0E1 MOV R0,R4 \ 000003D0 ........ BL CreateEditChat \ 000003D4 94FFFFEA B ??ed_options_handler_22 6554 } 6555 break; 6556 case 1: 6557 t=FindPrevActiveContact(ed_struct->ed_contact); \ ??ed_options_handler_31: \ 000003D8 0700A0E1 MOV R0,R7 \ 000003DC ........ BL FindPrevActiveContact \ 000003E0 F3FFFFEA B ??ed_options_handler_33 6558 if (t && t!=ed_struct->ed_contact) 6559 { 6560 GeneralFunc_flag1(edchat_id,1); 6561 CreateEditChat(t); 6562 } 6563 break; 6564 case 2: 6565 DispCmdMenu(ed_struct); 6566 break; 6567 default: 6568 i-=3; \ ??ed_options_handler_32: \ 000003E4 036046E2 SUB R6,R6,#+3 6569 if (iloaded_templates) \ 000003E8 020056E1 CMP R6,R2 \ 000003EC 2D0000AA BGE ??ed_options_handler_14 6570 { 6571 EDITCONTROL ec; 6572 WSHDR *ed_ws; 6573 int c; 6574 char *p=templates_lines[i]; \ 000003F0 065191E7 LDR R5,[R1, +R6, LSL #+2] 6575 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ 000003F4 081094E5 LDR R1,[R4, #+8] \ 000003F8 0D20A0E1 MOV R2,SP \ 000003FC 690100EF SWI +361 6576 ed_ws=AllocWS(ec.pWS->wsbody[0]+strlen(p)); \ 00000400 0500A0E1 MOV R0,R5 \ 00000404 1B0000EF SWI +27 \ 00000408 28109DE5 LDR R1,[SP, #+40] \ 0000040C 001091E5 LDR R1,[R1, #+0] \ 00000410 B010D1E1 LDRH R1,[R1, #+0] \ 00000414 010080E0 ADD R0,R0,R1 \ 00000418 250100EF SWI +293 6577 wstrcpy(ed_ws,ec.pWS); \ 0000041C 28109DE5 LDR R1,[SP, #+40] \ 00000420 0060A0E1 MOV R6,R0 \ 00000424 1F0100EF SWI +287 6578 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ 00000428 040094E5 LDR R0,[R4, #+4] \ 0000042C 820100EF SWI +386 \ 00000430 081094E5 LDR R1,[R4, #+8] \ 00000434 010050E1 CMP R0,R1 \ 00000438 1100001A BNE ??ed_options_handler_34 6579 { 6580 int pos=EDIT_GetCursorPos(ed_struct->ed_chatgui); \ 0000043C 040094E5 LDR R0,[R4, #+4] \ 00000440 D30100EF SWI +467 \ 00000444 0070A0E1 MOV R7,R0 \ 00000448 050000EA B ??ed_options_handler_35 6581 while(c=*p++) 6582 { 6583 wsInsertChar(ed_ws,char8to16(c),pos++); \ ??ed_options_handler_36: \ 0000044C ........ _BLF char8to16,??char8to16??rA \ 00000450 0010A0E1 MOV R1,R0 \ 00000454 0720A0E1 MOV R2,R7 \ 00000458 0600A0E1 MOV R0,R6 \ 0000045C 1D0000EF SWI +29 \ 00000460 017087E2 ADD R7,R7,#+1 6584 } \ ??ed_options_handler_35: \ 00000464 ........ LDRB R0,[R5], #+1 \ 00000468 000050E3 CMP R0,#+0 \ 0000046C F6FFFF1A BNE ??ed_options_handler_36 6585 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ 00000470 B5FFFFEA B ??ed_options_handler_26 6586 EDIT_SetCursorPos(ed_struct->ed_chatgui,pos); 6587 } 6588 else 6589 { 6590 while(c=*p++) 6591 { 6592 wsAppendChar(ed_ws,char8to16(c)); \ ??ed_options_handler_37: \ 00000474 ........ _BLF char8to16,??char8to16??rA \ 00000478 0010A0E1 MOV R1,R0 \ 0000047C 0600A0E1 MOV R0,R6 \ 00000480 1C0000EF SWI +28 6593 } \ ??ed_options_handler_34: \ 00000484 ........ LDRB R0,[R5], #+1 \ 00000488 000050E3 CMP R0,#+0 \ 0000048C F8FFFF1A BNE ??ed_options_handler_37 6594 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ ??ed_options_handler_29: \ 00000490 081094E5 LDR R1,[R4, #+8] \ 00000494 040094E5 LDR R0,[R4, #+4] \ 00000498 0620A0E1 MOV R2,R6 \ 0000049C DE0100EF SWI +478 6595 } 6596 FreeWS(ed_ws); \ ??ed_options_handler_27: \ 000004A0 0600A0E1 MOV R0,R6 \ 000004A4 290100EF SWI +297 6597 } 6598 break; 6599 } 6600 } 6601 } 6602 } \ ??ed_options_handler_14: \ 000004A8 58D08DE2 ADD SP,SP,#+88 ;; stack cleaning \ 000004AC F083BDE8 POP {R4-R9,PC} ;; return \ ??ed_options_handler_1: \ 000004B0 ........ DC32 `?` 6603 \ In segment CODE, align 4, keep-with-next 6604 unsigned short * wstrstr(unsigned short *ws, char *str, int *wslen, int len) 6605 { \ wstrstr: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 0070A0E1 MOV R7,R0 \ 00000008 0140A0E1 MOV R4,R1 \ 0000000C 0250A0E1 MOV R5,R2 \ 00000010 0360A0E1 MOV R6,R3 \ 00000014 030000EA B ??wstrstr_0 6606 char *s; 6607 unsigned short *w; 6608 int l; 6609 6610 while(*wslen >= len) 6611 { 6612 s = str; 6613 w = ws; 6614 l = len; 6615 for(; (char16to8(*w) == *s) && l; w++, s++, l--); 6616 if(!l) return ws; 6617 ws++; 6618 (*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} 6619 } 6620 return 0; \ ??wstrstr_2: \ 00000074 0000A0E3 MOV R0,#+0 \ 00000078 F087BDE8 POP {R4-R10,PC} ;; return 6621 6622 } 6623 \ In segment CODE, align 4, keep-with-next 6624 int IsUrl(WSHDR *ws, int pos, char *link) 6625 { \ IsUrl: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0150A0E1 MOV R5,R1 6626 const char *valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%;:@&=/?абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; 6627 6628 int len = wstrlen(ws); 6629 unsigned short *str = ws->wsbody+1, *tmp, *begin; 6630 tmp = str; 6631 6632 begin = str = wstrstr(str, "http://", &len, 7); \ 0000000C ........ LDR R7,??DataTable258 ;; `?` \ 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 6633 6634 while(str && (begin-tmp <= pos)) 6635 { 6636 while(len && strchr(valid, char16to8(*str))) {str++; len--;} 6637 if(str-tmp >= pos-2) 6638 { 6639 for(;begin < str; begin++, link++) 6640 *link = char16to8(*begin); 6641 link[str-begin] = 0; 6642 return 1; 6643 } 6644 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 6645 } 6646 6647 len = wstrlen(ws); \ ??IsUrl_2: \ 00000080 04009DE5 LDR R0,[SP, #+4] \ 00000084 230100EF SWI +291 \ 00000088 00008DE5 STR R0,[SP, #+0] 6648 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} 6649 while(str && (begin-tmp <= pos)) 6650 { 6651 while(len && strchr(valid, char16to8(*str))) {str++; len--;} 6652 if(str-tmp >= pos-2) 6653 { 6654 for(;begin < str; begin++, link++) 6655 *link = char16to8(*begin); 6656 link[str-begin] = 0; 6657 return 1; 6658 } 6659 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 6660 } 6661 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 6662 } 6663 6664 #define UTF16_DIS_UNDERLINE (0xE002) 6665 #define UTF16_ENA_UNDERLINE (0xE001) 6666 \ In segment CODE, align 4, keep-with-next 6667 void ParseAnswer(WSHDR *ws, const char *s) 6668 { \ ParseAnswer: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 0040A0E1 MOV R4,R0 6669 const char *valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%;:@&=/?абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; 6670 S_SMILES *t; 6671 S_SMILES *t_root=(S_SMILES *)s_top; \ 00000008 10029FE5 LDR R0,??ParseAnswer_0 ;; s_top \ 0000000C 04D04DE2 SUB SP,SP,#+4 \ 00000010 006090E5 LDR R6,[R0, #+0] \ 00000014 0150A0E1 MOV R5,R1 6672 STXT_SMILES *st; 6673 unsigned int wchar; 6674 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 6675 CutWSTR(ws,0); \ 00000034 0010A0E3 MOV R1,#+0 \ 00000038 0400A0E1 MOV R0,R4 \ 0000003C 260100EF SWI +294 \ 00000040 160000EA B ??ParseAnswer_1 6676 int i; 6677 while(wchar=*s) 6678 { 6679 if(s==strstr(s, "http://") || s == strstr(s, "www.")) 6680 { 6681 wsAppendChar(ws,UTF16_ENA_UNDERLINE); 6682 while(*s && strchr(valid, *s)) 6683 { 6684 wchar=char8to16(*s); \ ??ParseAnswer_2: \ 00000044 ........ LDRB R0,[R5], #+1 \ 00000048 ........ _BLF char8to16,??char8to16??rA 6685 wsAppendChar(ws,wchar); \ 0000004C 0010A0E1 MOV R1,R0 \ ??ParseAnswer_3: \ 00000050 0400A0E1 MOV R0,R4 \ 00000054 1C0000EF SWI +28 6686 s++; 6687 } \ 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 6688 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 6689 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 6690 continue; \ ??ParseAnswer_1: \ 000000A0 0070D5E5 LDRB R7,[R5, #+0] \ 000000A4 000057E3 CMP R7,#+0 \ 000000A8 4F00000A BEQ ??ParseAnswer_5 \ 000000AC ........ LDR R9,??DataTable258 ;; `?` \ 000000B0 0500A0E1 MOV R0,R5 \ 000000B4 941089E2 ADD R1,R9,#+148 \ 000000B8 180100EF SWI +280 \ 000000BC 000055E1 CMP R5,R0 \ 000000C0 0400000A BEQ ??ParseAnswer_6 \ 000000C4 9C1089E2 ADD R1,R9,#+156 \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 180100EF SWI +280 \ 000000D0 000055E1 CMP R5,R0 \ 000000D4 0200001A BNE ??ParseAnswer_7 \ ??ParseAnswer_6: \ 000000D8 0110A0E3 MOV R1,#+1 \ 000000DC E01C81E3 ORR R1,R1,#0xE000 \ 000000E0 DAFFFFEA B ??ParseAnswer_3 6691 } 6692 t=t_root; \ ??ParseAnswer_7: \ 000000E4 0690A0E1 MOV R9,R6 \ 000000E8 230000EA B ??ParseAnswer_8 6693 while(t) 6694 { 6695 st=t->lines; 6696 while(st) 6697 { 6698 if ((ulb&st->mask)==st->key) \ ??ParseAnswer_9: \ 000000EC 0B00DAE5 LDRB R0,[R10, #+11] \ 000000F0 0A10DAE5 LDRB R1,[R10, #+10] \ 000000F4 0620DAE5 LDRB R2,[R10, #+6] \ 000000F8 000481E1 ORR R0,R1,R0, LSL #+8 \ 000000FC 0910DAE5 LDRB R1,[R10, #+9] \ 00000100 000481E1 ORR R0,R1,R0, LSL #+8 \ 00000104 0810DAE5 LDRB R1,[R10, #+8] \ 00000108 000481E1 ORR R0,R1,R0, LSL #+8 \ 0000010C 0710DAE5 LDRB R1,[R10, #+7] \ 00000110 080000E0 AND R0,R0,R8 \ 00000114 011482E1 ORR R1,R2,R1, LSL #+8 \ 00000118 0520DAE5 LDRB R2,[R10, #+5] \ 0000011C 011482E1 ORR R1,R2,R1, LSL #+8 \ 00000120 0420DAE5 LDRB R2,[R10, #+4] \ 00000124 011482E1 ORR R1,R2,R1, LSL #+8 \ 00000128 010050E1 CMP R0,R1 \ 0000012C 0700001A BNE ??ParseAnswer_10 6699 { 6700 if (!strncmp(s,st->text,strlen(st->text))) goto L1; \ 00000130 0C008AE2 ADD R0,R10,#+12 \ 00000134 1B0000EF SWI +27 \ 00000138 0020A0E1 MOV R2,R0 \ 0000013C 0C108AE2 ADD R1,R10,#+12 \ 00000140 0500A0E1 MOV R0,R5 \ 00000144 150100EF SWI +277 \ 00000148 000050E3 CMP R0,#+0 \ 0000014C 1500000A BEQ ??ParseAnswer_11 6701 } 6702 st=st->next; \ ??ParseAnswer_10: \ 00000150 0000A0E3 MOV R0,#+0 \ ??ParseAnswer_12: \ 00000154 0A20D0E7 LDRB R2,[R0, +R10] \ 00000158 0D10A0E1 MOV R1,SP \ 0000015C 0120C0E7 STRB R2,[R0, +R1] \ 00000160 010080E2 ADD R0,R0,#+1 \ 00000164 040050E3 CMP R0,#+4 \ 00000168 F9FFFFBA BLT ??ParseAnswer_12 \ 0000016C 00A09DE5 LDR R10,[SP, #+0] 6703 } \ ??ParseAnswer_13: \ 00000170 00005AE3 CMP R10,#+0 \ 00000174 DCFFFF1A BNE ??ParseAnswer_9 6704 t=t->next; \ 00000178 009099E5 LDR R9,[R9, #+0] \ ??ParseAnswer_8: \ 0000017C 000059E3 CMP R9,#+0 \ 00000180 08A09915 LDRNE R10,[R9, #+8] \ 00000184 F9FFFF1A BNE ??ParseAnswer_13 6705 } 6706 L1: 6707 if (t) 6708 { 6709 wchar=t->uni_smile; 6710 s+=strlen(st->text); 6711 ulb=s[0]+(s[1]<<8)+(s[2]<<16)+(s[3]<<24); 6712 } 6713 else 6714 { 6715 wchar=char8to16(wchar); \ 00000188 0700A0E1 MOV R0,R7 \ 0000018C ........ _BLF char8to16,??char8to16??rA \ 00000190 0070A0E1 MOV R7,R0 6716 s++; 6717 ulb>>=8; 6718 ulb+=s[3]<<24; \ 00000194 015085E2 ADD R5,R5,#+1 \ 00000198 0300D5E5 LDRB R0,[R5, #+3] \ 0000019C 000CA0E1 LSL R0,R0,#+24 \ 000001A0 288480E0 ADD R8,R0,R8, LSR #+8 \ 000001A4 0A0000EA B ??ParseAnswer_14 6719 } \ ??ParseAnswer_11: \ 000001A8 047099E5 LDR R7,[R9, #+4] \ 000001AC 0C008AE2 ADD R0,R10,#+12 \ 000001B0 1B0000EF SWI +27 \ 000001B4 055080E0 ADD R5,R0,R5 \ 000001B8 0000D5E5 LDRB R0,[R5, #+0] \ 000001BC 0110D5E5 LDRB R1,[R5, #+1] \ 000001C0 010480E0 ADD R0,R0,R1, LSL #+8 \ 000001C4 0210D5E5 LDRB R1,[R5, #+2] \ 000001C8 010880E0 ADD R0,R0,R1, LSL #+16 \ 000001CC 0310D5E5 LDRB R1,[R5, #+3] \ 000001D0 018C80E0 ADD R8,R0,R1, LSL #+24 6720 if (wchar!=10) wsAppendChar(ws,wchar); \ ??ParseAnswer_14: \ 000001D4 0A0057E3 CMP R7,#+10 \ 000001D8 B0FFFF0A BEQ ??ParseAnswer_1 \ 000001DC 0710A0E1 MOV R1,R7 \ 000001E0 0400A0E1 MOV R0,R4 \ 000001E4 1C0000EF SWI +28 \ 000001E8 ACFFFFEA B ??ParseAnswer_1 6721 } 6722 i=ws->wsbody[0]; \ ??ParseAnswer_5: \ 000001EC 000094E5 LDR R0,[R4, #+0] \ 000001F0 B010D0E1 LDRH R1,[R0, #+0] \ 000001F4 000000EA B ??ParseAnswer_15 6723 while(i>1) 6724 { 6725 if (ws->wsbody[i--]!=13) break; 6726 ws->wsbody[0]=i; \ ??ParseAnswer_16: \ 000001F8 B010C0E1 STRH R1,[R0, #+0] \ ??ParseAnswer_15: \ 000001FC 020051E3 CMP R1,#+2 \ 00000200 F187BDB8 POPLT {R0,R4-R10,PC} \ 00000204 0120A0E1 MOV R2,R1 \ 00000208 011042E2 SUB R1,R2,#+1 \ 0000020C 822080E0 ADD R2,R0,R2, LSL #+1 \ 00000210 B020D2E1 LDRH R2,[R2, #+0] \ 00000214 0D0052E3 CMP R2,#+13 \ 00000218 F6FFFF0A BEQ ??ParseAnswer_16 6727 } 6728 } \ 0000021C F187BDE8 POP {R0,R4-R10,PC} ;; return \ ??ParseAnswer_0: \ 00000220 ........ DC32 s_top 6729 \ In segment CODE, align 4, keep-with-next 6730 void SaveAnswer(CLIST *cl, WSHDR *ws) 6731 { \ SaveAnswer: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0100A0E1 MOV R0,R1 6732 char *p=ExtractAnswer(ws); \ 0000000C ........ BL ExtractAnswer \ 00000010 0050A0E1 MOV R5,R0 6733 mfree(cl->answer); \ 00000014 940094E5 LDR R0,[R4, #+148] \ 00000018 150000EF SWI +21 6734 cl->answer=p; \ 0000001C 945084E5 STR R5,[R4, #+148] 6735 } \ 00000020 3080BDE8 POP {R4,R5,PC} ;; return 6736 6737 //links applicator 6738 6739 \ In segment CODE, align 4, keep-with-next 6740 int GetTempName(void) 6741 { \ GetTempName: \ 00000000 00402DE9 PUSH {LR} \ 00000004 10D04DE2 SUB SP,SP,#+16 6742 static const int DMonth[]={0,31,59,90,120,151,181,212,243,273,304,334,365}; 6743 unsigned long iday; 6744 TTime tt; 6745 TDate dd; 6746 GetDateTime(&dd,&tt); \ 00000008 08108DE2 ADD R1,SP,#+8 \ 0000000C 0D00A0E1 MOV R0,SP \ 00000010 B40000EF SWI +180 6747 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 6748 iday=365*dd.year+DMonth[dd.month-1]+(dd.day - 1); 6749 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] 6750 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 6751 iday++; \ ??GetTempName_1: \ 00000078 011081E2 ADD R1,R1,#+1 6752 iday=(tt.sec+60*(tt.min+60*(tt.hour+24* iday))); 6753 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 6754 } \ 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 6755 6756 \ In segment CODE, align 4, keep-with-next 6757 void recon() 6758 { 6759 SUBPROC((void*)end_socket); \ recon: \ 00000000 ........ LDR R0,??DataTable259 ;; end_socket \ 00000004 10402DE9 PUSH {R4,LR} 6760 GBS_DelTimer(&reconnect_tmr); \ 00000008 ........ LDR R4,??DataTable260 ;; S_ICONS \ 0000000C 710100EF SWI +369 \ 00000010 DC00A0E3 MOV R0,#+220 \ 00000014 640D80E3 ORR R0,R0,#0x1900 \ 00000018 040080E0 ADD R0,R0,R4 \ 0000001C 8C0100EF SWI +396 6761 DNR_TRIES=3; \ 00000020 0300A0E3 MOV R0,#+3 \ 00000024 280384E5 STR R0,[R4, #+808] 6762 SUBPROC((void *)create_connect); \ 00000028 ........ LDR R0,??DataTable261 ;; create_connect \ 0000002C 710100EF SWI +369 6763 } \ 00000030 1080BDE8 POP {R4,PC} ;; return 6764 \ In segment CODE, align 4, keep-with-next 6765 int edchat_onkey(GUI *data, GUI_MSG *msg) 6766 { \ edchat_onkey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 6767 //-1 - do redraw 6768 GBS_DelTimer(&tmr_illumination); \ 00000004 ........ LDR R6,??DataTable270 ;; S_ICONS \ 00000008 4CDF4DE2 SUB SP,SP,#+304 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 0170A0E1 MOV R7,R1 \ 00000014 BC00A0E3 MOV R0,#+188 \ 00000018 640D80E3 ORR R0,R0,#0x1900 \ 0000001C 060080E0 ADD R0,R0,R6 \ 00000020 8C0100EF SWI +396 6769 CLIST *t; 6770 TPKT *p; 6771 EDITCONTROL ec; 6772 int len, f;//2026rev 6773 unsigned err;//2026rev 6774 char *s; 6775 int l=msg->gbsmsg->submess; \ 00000024 040097E5 LDR R0,[R7, #+4] \ 00000028 048090E5 LDR R8,[R0, #+4] 6776 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 DF0100EF SWI +479 \ 00000034 0050A0E1 MOV R5,R0 6777 char fn[256]; 6778 6779 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 6780 { 6781 void ec_menu(EDCHAT_STRUCT *); 6782 ec_menu(ed_struct); \ 0000004C 0500A0E1 MOV R0,R5 \ 00000050 ........ BL ec_menu 6783 return(-1); \ ??edchat_onkey_1: \ 00000054 8C0000EA B ??edchat_onkey_2 6784 } 6785 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 890000EA B ??edchat_onkey_4 \ ??edchat_onkey_3: \ 00000068 040097E5 LDR R0,[R7, #+4] \ 0000006C 9510A0E3 MOV R1,#+149 \ 00000070 F200D0E1 LDRSH R0,[R0, #+2] \ 00000074 401F81E3 ORR R1,R1,#0x100 \ 00000078 010050E1 CMP R0,R1 \ 0000007C 0C00001A BNE ??edchat_onkey_5 6786 6787 void AddSmile(GUI *data); 6788 if (msg->gbsmsg->msg==LONG_PRESS) 6789 { 6790 if (l==RIGHT_BUTTON) \ 00000080 3E0058E3 CMP R8,#+62 \ 00000084 3B00001A BNE ??edchat_onkey_6 6791 { 6792 if(LongRightAction==2 && EDIT_GetFocus(data)==ed_struct->ed_answer) \ 00000088 5C959FE5 LDR R9,??edchat_onkey_7 ;; LongRightAction \ 0000008C 000099E5 LDR R0,[R9, #+0] \ 00000090 020050E3 CMP R0,#+2 \ 00000094 1A00001A BNE ??edchat_onkey_8 \ 00000098 0400A0E1 MOV R0,R4 \ 0000009C 820100EF SWI +386 \ 000000A0 081095E5 LDR R1,[R5, #+8] \ 000000A4 010050E1 CMP R0,R1 \ 000000A8 1500001A BNE ??edchat_onkey_8 6793 CreateSmileSelectGUI(ed_struct); \ 000000AC 0500A0E1 MOV R0,R5 \ 000000B0 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA 6794 else 6795 if(LongRightAction==1) 6796 { 6797 if (EDIT_GetFocus(data)==ed_struct->ed_answer) 6798 { 6799 ExtractEditControl(data,ed_struct->ed_answer,&ec); 6800 if (ec.pWS->wsbody[0]==(EDIT_GetCursorPos(data)-1)) 6801 { 6802 t=FindNextActiveContact(ed_struct->ed_contact); 6803 if (t && t!=ed_struct->ed_contact) 6804 { 6805 CreateEditChat(t); 6806 return(1); 6807 } 6808 } 6809 } 6810 } 6811 } 6812 if (l==LEFT_BUTTON && LongLeftAction) 6813 { 6814 if (EDIT_GetFocus(data)==ed_struct->ed_answer) 6815 { 6816 ExtractEditControl(data,ed_struct->ed_answer,&ec); 6817 if (ec.pWS->wsbody[0]==(EDIT_GetCursorPos(data)-1)) 6818 { 6819 t=FindPrevActiveContact(ed_struct->ed_contact); 6820 if (t && t!=ed_struct->ed_contact) 6821 { 6822 CreateEditChat(t); 6823 return(1); 6824 } 6825 } 6826 } 6827 } 6828 //#ifdef ELKA 6829 if (l==VOL_DOWN_BUTTON) 6830 { 6831 #ifdef kluchnik 6832 if((EDIT_GetFocus(data)==ed_struct->ed_answer)) 6833 #else 6834 if(LongVolDownAction) 6835 #endif 6836 { 6837 WSHDR *ws; 6838 ExtractEditControl(data,ed_struct->ed_answer,&ec); 6839 if(wstrlen(ec.pWS)>0) 6840 { 6841 ws=AllocWS(1); 6842 CutWSTR(ws,0); 6843 6844 EDIT_SetFocus(data,ed_struct->ed_answer); 6845 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); 6846 6847 FreeWS(ws); 6848 RefreshGUI(); 6849 } 6850 } 6851 else 6852 { 6853 int pos; 6854 if ((pos=EDIT_GetFocus(data)+2)<=ed_struct->ed_answer) 6855 { 6856 EDIT_SetFocus(data, pos); 6857 EDIT_SetCursorPos(data, 1); 6858 } 6859 return (-1); 6860 } 6861 6862 } 6863 6864 if (l==VOL_UP_BUTTON) 6865 { 6866 if(LongVolUpAction) 6867 { 6868 WSHDR *ws=AllocWS(strlen(last_msg_buffer)+1); 6869 ascii2ws(ws,last_msg_buffer); 6870 EDIT_SetFocus(ed_struct->ed_chatgui,ed_struct->ed_answer); 6871 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); 6872 FreeWS(ws); 6873 RefreshGUI(); 6874 } 6875 else 6876 { 6877 int pos; 6878 if ((pos=EDIT_GetFocus(data)-2)>=2) 6879 { 6880 EDIT_SetFocus(data, pos); 6881 EDIT_SetCursorPos(data, 1); 6882 } 6883 return (-1); 6884 } 6885 } 6886 //#endif 6887 #ifdef kluchnik 6888 if(l==LEFT_BUTTON && EDIT_GetFocus(ed_struct->ed_chatgui)!=ed_struct->ed_answer && EDIT_GetCursorPos(data)==1) 6889 { 6890 int ed; 6891 EDITCONTROL ec; 6892 ed=EDIT_GetFocus(ed_struct->ed_chatgui); 6893 ExtractEditControl(ed_struct->ed_chatgui,ed,&ec); 6894 6895 wsInsertChar(wsBuffer,'>',wstrlen(wsBuffer)+1); 6896 wsInsertChar(wsBuffer,' ',wstrlen(wsBuffer)+1); 6897 wstrcat(wsBuffer,ec.pWS); 6898 wsInsertChar(wsBuffer,'\n',wstrlen(wsBuffer)+1); 6899 6900 ShowMSG(1,(int)"Message add to buffer"); 6901 } 6902 #endif 6903 } 6904 6905 if (msg->gbsmsg->msg==KEY_DOWN) \ ??edchat_onkey_5: \ 000000B4 040097E5 LDR R0,[R7, #+4] \ 000000B8 9310A0E3 MOV R1,#+147 \ 000000BC F200D0E1 LDRSH R0,[R0, #+2] \ 000000C0 401F81E3 ORR R1,R1,#0x100 \ 000000C4 010050E1 CMP R0,R1 \ 000000C8 0A00001A BNE ??edchat_onkey_9 6906 { 6907 if ((l>='0')&&(l<='9')) \ 000000CC 300058E3 CMP R8,#+48 \ 000000D0 8A0000BA BLT ??edchat_onkey_10 \ 000000D4 3A0058E3 CMP R8,#+58 \ 000000D8 060000AA BGE ??edchat_onkey_9 6908 { 6909 if (EDIT_GetFocus(data)!=ed_struct->ed_answer) \ 000000DC 0400A0E1 MOV R0,R4 \ 000000E0 820100EF SWI +386 \ 000000E4 081095E5 LDR R1,[R5, #+8] \ 000000E8 010050E1 CMP R0,R1 \ 000000EC 0100000A BEQ ??edchat_onkey_9 6910 EDIT_SetFocus(data,ed_struct->ed_answer); \ 000000F0 0400A0E1 MOV R0,R4 \ 000000F4 9B0100EF SWI +411 6911 } 6912 6913 if (l==GREEN_BUTTON) 6914 { 6915 if (connect_state==3) 6916 { 6917 if ((t=ed_struct->ed_contact)) 6918 { 6919 ExtractEditControl(data,ed_struct->ed_answer,&ec); 6920 SaveAnswer(t,ec.pWS); 6921 if ((s=t->answer)) 6922 { 6923 if ((len=strlen(s))) 6924 { 6925 msg_away_timer=0; 6926 away_m=0; 6927 t->automsgcount=0; 6928 if(change_back_status) 6929 { 6930 CurrentStatus=status_rem; 6931 set_my_status(); 6932 change_back_status=0; 6933 } 6934 if(SHOW_ACTIVE) 6935 t->isactive=ACTIVE_TIME; 6936 p=malloc(sizeof(PKT)+len+1); 6937 p->pkt.uin=t->uin; 6938 p->pkt.type=T_SENDMSG; 6939 p->pkt.data_len=len; 6940 strcpy(p->data,s); 6941 //#ifdef ELKA 6942 strcpy(last_msg_buffer, s); 6943 //#endif 6944 AddStringToLog(t,0x01,p->data,I_str,(++SENDMSGCOUNT)&0x7FFF,1); //Номер сообщения 6945 SUBPROC((void *)SendAnswer,0,p); 6946 main2_count++; 6947 mfree(t->answer); 6948 t->answer=NULL; 6949 // request_remake_edchat=1; 6950 EDIT_SetFocus(data,ed_struct->ed_answer); 6951 CutWSTR(ews,0); 6952 EDIT_SetTextToFocused(data,ews); 6953 AddMsgToChat(data); 6954 RecountMenu(t,1); 6955 return(-1); 6956 } 6957 } 6958 } 6959 } 6960 } 6961 //================2026rev-begin 6962 if (l==ENTER_BUTTON) 6963 { 6964 if (!EDIT_IsMarkModeActive(data)) // ?????? ???? ?? ????????? 6965 { 6966 int pos, len; 6967 char *link; 6968 ExtractEditControl(ed_struct->ed_chatgui,EDIT_GetFocus(ed_struct->ed_chatgui),&ec); 6969 wstrcpy(ews,ec.pWS); 6970 pos = EDIT_GetCursorPos(data); 6971 len = wstrlen(ews); 6972 link = malloc(len+1); 6973 6974 if(IsUrl(ews, pos, link) && IsOpenBrowser) 6975 { 6976 snprintf(fn, 255, "%s\\tmp%u.url", TEMPLATES_PATH, GetTempName); 6977 if ((f=fopen(fn,A_WriteOnly+A_BIN+A_Create+A_Truncate,P_WRITE,&err))!=-1) 6978 { 6979 fwrite(f,link,strlen(link),&err); 6980 fclose(f,&err); 6981 str_2ws(ews,fn,256); 6982 ExecuteFile(ews,0,0); 6983 unlink(fn, &err); 6984 } 6985 mfree(link); 6986 return (-1); 6987 } 6988 else 6989 { 6990 int i=ed_struct->loaded_templates=LoadTemplates(ed_struct->ed_contact->uin); 6991 6992 if(IsMultiBuffer) 6993 EDIT_OpenOptionMenuWithUserItems(data,ed_options_handler,ed_struct,i+4); 6994 else 6995 EDIT_OpenOptionMenuWithUserItems(data,ed_options_handler,ed_struct,i+3); 6996 6997 mfree(link); 6998 return (-1); 6999 } 7000 } 7001 } 7002 7003 //================ 2026rev-end =================// 7004 7005 if (l==VOL_UP_BUTTON) 7006 { 7007 int pos; 7008 7009 if ((pos=EDIT_GetFocus(data)-2)>=2) 7010 { 7011 EDIT_SetFocus(data, pos); 7012 EDIT_SetCursorPos(data, 1); 7013 } 7014 return (-1); 7015 } 7016 if (l==VOL_DOWN_BUTTON) 7017 { 7018 int pos; 7019 7020 if ((pos=EDIT_GetFocus(data)+2)<=ed_struct->ed_answer) 7021 { 7022 EDIT_SetFocus(data, pos); 7023 EDIT_SetCursorPos(data, 1); 7024 } 7025 return (-1); 7026 } 7027 } 7028 return(0); //Do standart keys \ ??edchat_onkey_9: \ 000000F8 0000A0E3 MOV R0,#+0 \ 000000FC 4CDF8DE2 ADD SP,SP,#+304 \ 00000100 F08FBDE8 POP {R4-R11,PC} ;; return \ ??edchat_onkey_8: \ 00000104 000099E5 LDR R0,[R9, #+0] \ 00000108 010050E3 CMP R0,#+1 \ 0000010C E8FFFF1A BNE ??edchat_onkey_5 \ 00000110 0400A0E1 MOV R0,R4 \ 00000114 820100EF SWI +386 \ 00000118 081095E5 LDR R1,[R5, #+8] \ 0000011C 010050E1 CMP R0,R1 \ 00000120 E3FFFF1A BNE ??edchat_onkey_5 \ 00000124 04208DE2 ADD R2,SP,#+4 \ 00000128 0400A0E1 MOV R0,R4 \ 0000012C 690100EF SWI +361 \ 00000130 0400A0E1 MOV R0,R4 \ 00000134 D30100EF SWI +467 \ 00000138 2C109DE5 LDR R1,[SP, #+44] \ 0000013C 010040E2 SUB R0,R0,#+1 \ 00000140 001091E5 LDR R1,[R1, #+0] \ 00000144 B010D1E1 LDRH R1,[R1, #+0] \ 00000148 000051E1 CMP R1,R0 \ 0000014C D8FFFF1A BNE ??edchat_onkey_5 \ 00000150 00A095E5 LDR R10,[R5, #+0] \ 00000154 0A00A0E1 MOV R0,R10 \ 00000158 ........ BL FindNextActiveContact \ 0000015C 0090B0E1 MOVS R9,R0 \ 00000160 0A005911 CMPNE R9,R10 \ 00000164 D2FFFF0A BEQ ??edchat_onkey_5 \ ??edchat_onkey_11: \ 00000168 0900A0E1 MOV R0,R9 \ 0000016C ........ BL CreateEditChat \ 00000170 0100A0E3 MOV R0,#+1 \ 00000174 450000EA B ??edchat_onkey_4 \ ??edchat_onkey_6: \ 00000178 3D0058E3 CMP R8,#+61 \ 0000017C 1A00001A BNE ??edchat_onkey_12 \ 00000180 68049FE5 LDR R0,??edchat_onkey_7+0x4 ;; LongLeftAction \ 00000184 000090E5 LDR R0,[R0, #+0] \ 00000188 000050E3 CMP R0,#+0 \ 0000018C C8FFFF0A BEQ ??edchat_onkey_5 \ 00000190 0400A0E1 MOV R0,R4 \ 00000194 820100EF SWI +386 \ 00000198 081095E5 LDR R1,[R5, #+8] \ 0000019C 010050E1 CMP R0,R1 \ 000001A0 C3FFFF1A BNE ??edchat_onkey_5 \ 000001A4 04208DE2 ADD R2,SP,#+4 \ 000001A8 0400A0E1 MOV R0,R4 \ 000001AC 690100EF SWI +361 \ 000001B0 0400A0E1 MOV R0,R4 \ 000001B4 D30100EF SWI +467 \ 000001B8 2C109DE5 LDR R1,[SP, #+44] \ 000001BC 010040E2 SUB R0,R0,#+1 \ 000001C0 001091E5 LDR R1,[R1, #+0] \ 000001C4 B010D1E1 LDRH R1,[R1, #+0] \ 000001C8 000051E1 CMP R1,R0 \ 000001CC B8FFFF1A BNE ??edchat_onkey_5 \ 000001D0 00A095E5 LDR R10,[R5, #+0] \ 000001D4 0A00A0E1 MOV R0,R10 \ 000001D8 ........ BL FindPrevActiveContact \ 000001DC 0090B0E1 MOVS R9,R0 \ 000001E0 0A005911 CMPNE R9,R10 \ 000001E4 B2FFFF0A BEQ ??edchat_onkey_5 \ 000001E8 DEFFFFEA B ??edchat_onkey_11 \ ??edchat_onkey_12: \ 000001EC 150058E3 CMP R8,#+21 \ 000001F0 2800001A BNE ??edchat_onkey_13 \ 000001F4 F8039FE5 LDR R0,??edchat_onkey_7+0x8 ;; LongVolDownAction \ 000001F8 000090E5 LDR R0,[R0, #+0] \ 000001FC 000050E3 CMP R0,#+0 \ 00000200 1600000A BEQ ??edchat_onkey_14 \ 00000204 081095E5 LDR R1,[R5, #+8] \ 00000208 04208DE2 ADD R2,SP,#+4 \ 0000020C 0400A0E1 MOV R0,R4 \ 00000210 690100EF SWI +361 \ 00000214 2C009DE5 LDR R0,[SP, #+44] \ 00000218 230100EF SWI +291 \ 0000021C 010050E3 CMP R0,#+1 \ 00000220 A3FFFFBA BLT ??edchat_onkey_5 \ 00000224 0100A0E3 MOV R0,#+1 \ 00000228 250100EF SWI +293 \ 0000022C 0090A0E1 MOV R9,R0 \ 00000230 0010A0E3 MOV R1,#+0 \ 00000234 260100EF SWI +294 \ 00000238 081095E5 LDR R1,[R5, #+8] \ 0000023C 0400A0E1 MOV R0,R4 \ ??edchat_onkey_15: \ 00000240 9B0100EF SWI +411 \ 00000244 040095E5 LDR R0,[R5, #+4] \ 00000248 0910A0E1 MOV R1,R9 \ 0000024C 810100EF SWI +385 \ 00000250 0900A0E1 MOV R0,R9 \ 00000254 290100EF SWI +297 \ 00000258 960100EF SWI +406 \ 0000025C 94FFFFEA B ??edchat_onkey_5 \ ??edchat_onkey_14: \ 00000260 0400A0E1 MOV R0,R4 \ 00000264 820100EF SWI +386 \ 00000268 021080E2 ADD R1,R0,#+2 \ 0000026C 080095E5 LDR R0,[R5, #+8] \ 00000270 010050E1 CMP R0,R1 \ ??edchat_onkey_16: \ 00000274 040000BA BLT ??edchat_onkey_2 \ 00000278 0400A0E1 MOV R0,R4 \ 0000027C 9B0100EF SWI +411 \ 00000280 0110A0E3 MOV R1,#+1 \ 00000284 0400A0E1 MOV R0,R4 \ 00000288 D40100EF SWI +468 \ ??edchat_onkey_2: \ 0000028C 0000E0E3 MVN R0,#+0 \ ??edchat_onkey_4: \ 00000290 4CDF8DE2 ADD SP,SP,#+304 \ 00000294 F08FBDE8 POP {R4-R11,PC} \ ??edchat_onkey_13: \ 00000298 140058E3 CMP R8,#+20 \ 0000029C 84FFFF1A BNE ??edchat_onkey_5 \ 000002A0 50039FE5 LDR R0,??edchat_onkey_7+0xC ;; LongVolUpAction \ 000002A4 000090E5 LDR R0,[R0, #+0] \ 000002A8 000050E3 CMP R0,#+0 \ 000002AC 0E00000A BEQ ??edchat_onkey_17 \ 000002B0 8400A0E3 MOV R0,#+132 \ 000002B4 500E80E3 ORR R0,R0,#0x500 \ 000002B8 060080E0 ADD R0,R0,R6 \ 000002BC 1B0000EF SWI +27 \ 000002C0 010080E2 ADD R0,R0,#+1 \ 000002C4 250100EF SWI +293 \ 000002C8 0090A0E1 MOV R9,R0 \ 000002CC 8400A0E3 MOV R0,#+132 \ 000002D0 500E80E3 ORR R0,R0,#0x500 \ 000002D4 061080E0 ADD R1,R0,R6 \ 000002D8 0900A0E1 MOV R0,R9 \ 000002DC ........ _BLF ascii2ws,??ascii2ws??rA \ 000002E0 081095E5 LDR R1,[R5, #+8] \ 000002E4 040095E5 LDR R0,[R5, #+4] \ 000002E8 D4FFFFEA B ??edchat_onkey_15 \ ??edchat_onkey_17: \ 000002EC 0400A0E1 MOV R0,R4 \ 000002F0 820100EF SWI +386 \ 000002F4 021040E2 SUB R1,R0,#+2 \ 000002F8 020051E3 CMP R1,#+2 \ 000002FC DCFFFFEA B ??edchat_onkey_16 \ ??edchat_onkey_10: \ 00000300 0B0058E3 CMP R8,#+11 \ 00000304 5B00001A BNE ??edchat_onkey_18 \ 00000308 6C0296E5 LDR R0,[R6, #+620] \ 0000030C 030050E3 CMP R0,#+3 \ 00000310 78FFFF1A BNE ??edchat_onkey_9 \ 00000314 009095E5 LDR R9,[R5, #+0] \ 00000318 000059E3 CMP R9,#+0 \ 0000031C 75FFFF0A BEQ ??edchat_onkey_9 \ 00000320 081095E5 LDR R1,[R5, #+8] \ 00000324 04208DE2 ADD R2,SP,#+4 \ 00000328 0400A0E1 MOV R0,R4 \ 0000032C 690100EF SWI +361 \ 00000330 2C109DE5 LDR R1,[SP, #+44] \ 00000334 0900A0E1 MOV R0,R9 \ 00000338 ........ BL SaveAnswer \ 0000033C 94A099E5 LDR R10,[R9, #+148] \ 00000340 00005AE3 CMP R10,#+0 \ 00000344 6BFFFF0A BEQ ??edchat_onkey_9 \ 00000348 0A00A0E1 MOV R0,R10 \ 0000034C 1B0000EF SWI +27 \ 00000350 00B0B0E1 MOVS R11,R0 \ 00000354 67FFFF0A BEQ ??edchat_onkey_9 \ 00000358 0070A0E3 MOV R7,#+0 \ 0000035C 1C7286E5 STR R7,[R6, #+540] \ 00000360 207286E5 STR R7,[R6, #+544] \ 00000364 787089E5 STR R7,[R9, #+120] \ 00000368 280296E5 LDR R0,[R6, #+552] \ 0000036C 000050E3 CMP R0,#+0 \ 00000370 0300000A BEQ ??edchat_onkey_19 \ 00000374 240296E5 LDR R0,[R6, #+548] \ 00000378 100286E5 STR R0,[R6, #+528] \ 0000037C ........ BL set_my_status \ 00000380 287286E5 STR R7,[R6, #+552] \ ??edchat_onkey_19: \ 00000384 ........ LDR R0,??DataTable263 ;; SHOW_ACTIVE \ 00000388 000090E5 LDR R0,[R0, #+0] \ 0000038C 000050E3 CMP R0,#+0 \ 00000390 5A0FA013 MOVNE R0,#+360 \ 00000394 9C008915 STRNE R0,[R9, #+156] \ 00000398 09008BE2 ADD R0,R11,#+9 \ 0000039C 140000EF SWI +20 \ 000003A0 0080A0E1 MOV R8,R0 \ 000003A4 0C0099E5 LDR R0,[R9, #+12] \ 000003A8 0A10A0E1 MOV R1,R10 \ 000003AC 000088E5 STR R0,[R8, #+0] \ 000003B0 0200A0E3 MOV R0,#+2 \ 000003B4 B400C8E1 STRH R0,[R8, #+4] \ 000003B8 B6B0C8E1 STRH R11,[R8, #+6] \ 000003BC 080088E2 ADD R0,R8,#+8 \ 000003C0 1A0000EF SWI +26 \ 000003C4 0A10A0E1 MOV R1,R10 \ 000003C8 8400A0E3 MOV R0,#+132 \ 000003CC 500E80E3 ORR R0,R0,#0x500 \ 000003D0 060080E0 ADD R0,R0,R6 \ 000003D4 1A0000EF SWI +26 \ 000003D8 040296E5 LDR R0,[R6, #+516] \ 000003DC ........ LDR R3,??DataTable299 ;; I_str \ 000003E0 010080E2 ADD R0,R0,#+1 \ 000003E4 040286E5 STR R0,[R6, #+516] \ 000003E8 0110A0E3 MOV R1,#+1 \ 000003EC 02002DE9 PUSH {R1} \ 000003F0 8008A0E1 LSL R0,R0,#+17 \ 000003F4 A008A0E1 LSR R0,R0,#+17 \ 000003F8 01002DE9 PUSH {R0} \ 000003FC 082088E2 ADD R2,R8,#+8 \ 00000400 0900A0E1 MOV R0,R9 \ 00000404 ........ BL AddStringToLog \ 00000408 ........ LDR R0,??DataTable300 ;; SendAnswer \ 0000040C 0820A0E1 MOV R2,R8 \ 00000410 0010A0E3 MOV R1,#+0 \ 00000414 710100EF SWI +369 \ 00000418 ........ LDR R0,??DataTable266 ;; main2_count \ 0000041C 001090E5 LDR R1,[R0, #+0] \ 00000420 011081E2 ADD R1,R1,#+1 \ 00000424 001080E5 STR R1,[R0, #+0] \ 00000428 940099E5 LDR R0,[R9, #+148] \ 0000042C 150000EF SWI +21 \ 00000430 947089E5 STR R7,[R9, #+148] \ 00000434 081095E5 LDR R1,[R5, #+8] \ 00000438 0400A0E1 MOV R0,R4 \ 0000043C 9B0100EF SWI +411 \ 00000440 180296E5 LDR R0,[R6, #+536] \ 00000444 0710A0E1 MOV R1,R7 \ 00000448 260100EF SWI +294 \ 0000044C 181296E5 LDR R1,[R6, #+536] \ 00000450 0400A0E1 MOV R0,R4 \ 00000454 810100EF SWI +385 \ 00000458 0400A0E1 MOV R0,R4 \ 0000045C ........ BL AddMsgToChat \ 00000460 0110A0E3 MOV R1,#+1 \ 00000464 0900A0E1 MOV R0,R9 \ 00000468 ........ BL RecountMenu \ 0000046C 0700E0E1 MVN R0,R7 \ 00000470 08D08DE2 ADD SP,SP,#+8 \ 00000474 85FFFFEA B ??edchat_onkey_4 \ ??edchat_onkey_18: \ 00000478 1A0058E3 CMP R8,#+26 \ 0000047C 5500001A BNE ??edchat_onkey_20 \ 00000480 0400A0E1 MOV R0,R4 \ 00000484 D80100EF SWI +472 \ 00000488 000050E3 CMP R0,#+0 \ 0000048C 19FFFF1A BNE ??edchat_onkey_9 \ 00000490 040095E5 LDR R0,[R5, #+4] \ 00000494 820100EF SWI +386 \ 00000498 04208DE2 ADD R2,SP,#+4 \ 0000049C 0010A0E1 MOV R1,R0 \ 000004A0 040095E5 LDR R0,[R5, #+4] \ 000004A4 690100EF SWI +361 \ 000004A8 180296E5 LDR R0,[R6, #+536] \ 000004AC 2C109DE5 LDR R1,[SP, #+44] \ 000004B0 1F0100EF SWI +287 \ 000004B4 0400A0E1 MOV R0,R4 \ 000004B8 D30100EF SWI +467 \ 000004BC 0080A0E1 MOV R8,R0 \ 000004C0 180296E5 LDR R0,[R6, #+536] \ 000004C4 230100EF SWI +291 \ 000004C8 010080E2 ADD R0,R0,#+1 \ 000004CC 140000EF SWI +20 \ 000004D0 0070A0E1 MOV R7,R0 \ 000004D4 180296E5 LDR R0,[R6, #+536] \ 000004D8 0720A0E1 MOV R2,R7 \ 000004DC 0810A0E1 MOV R1,R8 \ 000004E0 ........ BL IsUrl \ 000004E4 000050E3 CMP R0,#+0 \ 000004E8 2C00000A BEQ ??edchat_onkey_21 \ 000004EC 08019FE5 LDR R0,??edchat_onkey_7+0x10 ;; IsOpenBrowser \ 000004F0 000090E5 LDR R0,[R0, #+0] \ 000004F4 000050E3 CMP R0,#+0 \ 000004F8 2800000A BEQ ??edchat_onkey_21 \ 000004FC FC009FE5 LDR R0,??edchat_onkey_7+0x14 ;; GetTempName \ 00000500 ........ LDR R3,??DataTable267 ;; TEMPLATES_PATH \ 00000504 F8209FE5 LDR R2,??edchat_onkey_7+0x18 ;; `?` \ 00000508 01002DE9 PUSH {R0} \ 0000050C FF10A0E3 MOV R1,#+255 \ 00000510 34008DE2 ADD R0,SP,#+52 \ 00000514 1B0100EF SWI +283 \ 00000518 04308DE2 ADD R3,SP,#+4 \ 0000051C 402FA0E3 MOV R2,#+256 \ 00000520 0110A0E3 MOV R1,#+1 \ 00000524 831C81E3 ORR R1,R1,#0x8300 \ 00000528 34008DE2 ADD R0,SP,#+52 \ 0000052C 0A0000EF SWI +10 \ 00000530 0040A0E1 MOV R4,R0 \ 00000534 010074E3 CMN R4,#+1 \ 00000538 04D08DE2 ADD SP,SP,#+4 \ 0000053C 1400000A BEQ ??edchat_onkey_22 \ 00000540 0700A0E1 MOV R0,R7 \ 00000544 1B0000EF SWI +27 \ 00000548 0020A0E1 MOV R2,R0 \ 0000054C 0D30A0E1 MOV R3,SP \ 00000550 0710A0E1 MOV R1,R7 \ 00000554 0400A0E1 MOV R0,R4 \ 00000558 0C0000EF SWI +12 \ 0000055C 0D10A0E1 MOV R1,SP \ 00000560 0400A0E1 MOV R0,R4 \ 00000564 0D0000EF SWI +13 \ 00000568 180296E5 LDR R0,[R6, #+536] \ 0000056C 402FA0E3 MOV R2,#+256 \ 00000570 30108DE2 ADD R1,SP,#+48 \ 00000574 6C0100EF SWI +364 \ 00000578 180296E5 LDR R0,[R6, #+536] \ 0000057C 0020A0E3 MOV R2,#+0 \ 00000580 0010A0E3 MOV R1,#+0 \ 00000584 940000EF SWI +148 \ 00000588 0D10A0E1 MOV R1,SP \ 0000058C 30008DE2 ADD R0,SP,#+48 \ 00000590 6B0100EF SWI +363 \ ??edchat_onkey_22: \ 00000594 0700A0E1 MOV R0,R7 \ 00000598 150000EF SWI +21 \ 0000059C 3AFFFFEA B ??edchat_onkey_2 \ ??edchat_onkey_21: \ 000005A0 000095E5 LDR R0,[R5, #+0] \ 000005A4 0C0090E5 LDR R0,[R0, #+12] \ 000005A8 ........ BL LoadTemplates \ 000005AC ........ LDR R2,??DataTable268 ;; IsMultiBuffer \ 000005B0 50109FE5 LDR R1,??edchat_onkey_7+0x1C ;; ed_options_handler \ 000005B4 100085E5 STR R0,[R5, #+16] \ 000005B8 002092E5 LDR R2,[R2, #+0] \ 000005BC 000052E3 CMP R2,#+0 \ 000005C0 03308002 ADDEQ R3,R0,#+3 \ 000005C4 04308012 ADDNE R3,R0,#+4 \ 000005C8 0520A0E1 MOV R2,R5 \ 000005CC 0400A0E1 MOV R0,R4 \ 000005D0 E50100EF SWI +485 \ 000005D4 EEFFFFEA B ??edchat_onkey_22 \ ??edchat_onkey_20: \ 000005D8 140058E3 CMP R8,#+20 \ 000005DC 42FFFF0A BEQ ??edchat_onkey_17 \ ??edchat_onkey_23: \ 000005E0 150058E3 CMP R8,#+21 \ 000005E4 C3FEFF1A BNE ??edchat_onkey_9 \ 000005E8 1CFFFFEA B ??edchat_onkey_14 \ ??edchat_onkey_7: \ 000005EC ........ DC32 LongRightAction \ 000005F0 ........ DC32 LongLeftAction \ 000005F4 ........ DC32 LongVolDownAction \ 000005F8 ........ DC32 LongVolUpAction \ 000005FC ........ DC32 IsOpenBrowser \ 00000600 ........ DC32 GetTempName \ 00000604 ........ DC32 `?` \ 00000608 ........ DC32 ed_options_handler 7029 //1: close 7030 } 7031 7032 static const HEADER_DESC edchat_hdr={0,0,NULL,NULL,NULL,0,LGP_NULL}; 7033 7034 void (*old_ed_redraw)(void *data); \ In segment CODE, align 4, keep-with-next 7035 void my_ed_redraw(void *data) 7036 { \ my_ed_redraw: \ 00000000 70402DE9 PUSH {R4-R6,LR} 7037 void *edchat_gui; 7038 EDCHAT_STRUCT *ed_struct; 7039 if (old_ed_redraw) old_ed_redraw(data); \ 00000004 ........ LDR R4,??DataTable271 ;; S_ICONS \ 00000008 601394E5 LDR R1,[R4, #+864] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0100000A BEQ ??my_ed_redraw_0 \ 00000014 31FF2FE1 BLX R1 7040 edchat_gui=FindGUIbyId(edchat_id,NULL); \ 00000018 0010A0E3 MOV R1,#+0 \ ??my_ed_redraw_0: \ 0000001C A00294E5 LDR R0,[R4, #+672] \ 00000020 090200EF SWI +521 7041 if (edchat_gui) \ 00000024 000050E3 CMP R0,#+0 \ 00000028 7080BD08 POPEQ {R4-R6,PC} 7042 { 7043 ed_struct=EDIT_GetUserPointer(edchat_gui); \ 0000002C DF0100EF SWI +479 7044 if (ed_struct) \ 00000030 000050E3 CMP R0,#+0 \ 00000034 7080BD08 POPEQ {R4-R6,PC} 7045 { 7046 int icon, width; 7047 #ifndef NEWSGOLD 7048 icon=*(S_ICONS+GetIconIndex(ed_struct->ed_contact)); \ 00000038 000090E5 LDR R0,[R0, #+0] \ 0000003C ........ BL GetIconIndex \ 00000040 005194E7 LDR R5,[R4, +R0, LSL #+2] 7049 ((HEADER_DESC *)&edchat_hdr)->rc.x2=ScreenW()-1-(width=GetImgWidth(icon)); \ 00000044 888100EF SWI +33160 \ 00000048 0060A0E1 MOV R6,R0 \ 0000004C 0500A0E1 MOV R0,R5 \ 00000050 220000EF SWI +34 \ 00000054 28109FE5 LDR R1,??my_ed_redraw_1 ;; edchat_desc + 60 \ 00000058 0040A0E1 MOV R4,R0 \ 0000005C 012046E2 SUB R2,R6,#+1 \ 00000060 000042E0 SUB R0,R2,R0 \ 00000064 B000C1E1 STRH R0,[R1, #+0] 7050 DrawImg(ScreenW()-1-width,1,icon); \ 00000068 888100EF SWI +33160 \ 0000006C 0520A0E1 MOV R2,R5 \ 00000070 0110A0E3 MOV R1,#+1 \ 00000074 010040E2 SUB R0,R0,#+1 \ 00000078 040040E0 SUB R0,R0,R4 \ 0000007C 230000EF SWI +35 7051 #else 7052 icon=*(S_ICONS+GetIconIndex(ed_struct->ed_contact)); 7053 width=GetImgWidth(icon); 7054 DrawImg(2,((HeaderH()-width)>>1)+YDISP,icon); 7055 /* DrawRoundedFrame(ScreenW()-8,YDISP,ScreenW()-1,YDISP+7,0,0,0, 7056 GetPaletteAdrByColorIndex(0), 7057 GetPaletteAdrByColorIndex(EDIT_IsBusy(edchat_gui)?3:4));*/ 7058 #endif 7059 } 7060 } 7061 } \ 00000080 7080BDE8 POP {R4-R6,PC} ;; return \ ??my_ed_redraw_1: \ 00000084 ........ DC32 edchat_desc + 60 7062 \ In segment CODE, align 4, keep-with-next 7063 void edchat_ghook(GUI *data, int cmd) 7064 { \ edchat_ghook: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 7065 7066 static const SOFTKEY_DESC sk={0x0FFF,0x0000,(int)LG_MENU}; 7067 static const SOFTKEY_DESC sk_cancel={0x0FF0,0x0000,(int)LG_CLOSE}; 7068 // static SOFTKEY_DESC sk={0x0018,0x0000,(int)"Menu"}; 7069 int j; 7070 EDITCONTROL ec; 7071 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); 7072 PNGTOP_DESC *pltop=PNG_TOP(); 7073 if (cmd==9) \ 00000004 ........ LDR R4,??DataTable270 ;; 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 7074 { 7075 GBS_DelTimer(&tmr_illumination); //by BoBa 25.06.07 \ 00000030 BC00A0E3 MOV R0,#+188 \ 00000034 640D80E3 ORR R0,R0,#0x1900 \ 00000038 040080E0 ADD R0,R0,R4 \ 0000003C 8C0100EF SWI +396 7076 pltop->dyn_pltop=NULL; \ 00000040 086088E5 STR R6,[R8, #+8] \ 00000044 170000EA B ??edchat_ghook_1 7077 } 7078 if (cmd==2) \ ??edchat_ghook_0: \ 00000048 081097E5 LDR R1,[R7, #+8] \ 0000004C 020059E3 CMP R9,#+2 \ 00000050 1600001A BNE ??edchat_ghook_2 7079 { 7080 ed_struct->ed_chatgui=data; \ 00000054 045087E5 STR R5,[R7, #+4] 7081 // edgui_data=data; 7082 EDIT_SetFocus(data,ed_struct->ed_answer); \ 00000058 0500A0E1 MOV R0,R5 \ 0000005C 9B0100EF SWI +411 7083 7084 static void *methods[16]; 7085 void **m=GetDataOfItemByID(data,2); \ 00000060 0210A0E3 MOV R1,#+2 \ 00000064 0500A0E1 MOV R0,R5 \ 00000068 4F0100EF SWI +335 \ 0000006C 0050B0E1 MOVS R5,R0 7086 if (m) 7087 { 7088 if (m[1]) \ 00000070 04009515 LDRNE R0,[R5, #+4] \ 00000074 00005013 CMPNE R0,#+0 \ 00000078 6300000A BEQ ??edchat_ghook_3 7089 { 7090 memcpy(methods,m[1],sizeof(methods)); \ 0000007C D96FA0E3 MOV R6,#+868 \ 00000080 4020A0E3 MOV R2,#+64 \ 00000084 0010A0E1 MOV R1,R0 \ 00000088 040086E0 ADD R0,R6,R4 \ 0000008C 1E0100EF SWI +286 7091 old_ed_redraw=(void (*)(void *))(methods[0]); \ 00000090 040096E7 LDR R0,[R6, +R4] \ 00000094 600384E5 STR R0,[R4, #+864] 7092 methods[0]=(void *)my_ed_redraw; \ 00000098 74019FE5 LDR R0,??edchat_ghook_4 ;; my_ed_redraw \ 0000009C 040086E7 STR R0,[R6, +R4] 7093 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} 7094 } 7095 } 7096 } 7097 if (cmd==3) \ ??edchat_ghook_2: \ 000000B0 030059E3 CMP R9,#+3 \ 000000B4 0E00001A BNE ??edchat_ghook_5 7098 { 7099 // if (edgui_data==data) edgui_data=NULL; 7100 if (ed_struct->ed_contact) \ 000000B8 000097E5 LDR R0,[R7, #+0] \ 000000BC 000050E3 CMP R0,#+0 \ 000000C0 0500000A BEQ ??edchat_ghook_6 7101 { 7102 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 000000C4 0D20A0E1 MOV R2,SP \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 690100EF SWI +361 7103 SaveAnswer(ed_struct->ed_contact,ec.pWS); \ 000000D0 28109DE5 LDR R1,[SP, #+40] \ 000000D4 000097E5 LDR R0,[R7, #+0] \ 000000D8 ........ BL SaveAnswer 7104 } 7105 RecountMenu(ed_struct->ed_contact,1); \ ??edchat_ghook_6: \ 000000DC 000097E5 LDR R0,[R7, #+0] \ 000000E0 0110A0E3 MOV R1,#+1 \ 000000E4 ........ BL RecountMenu 7106 mfree(ed_struct); \ 000000E8 0700A0E1 MOV R0,R7 \ 000000EC 150000EF SWI +21 \ 000000F0 ECFFFFEA B ??edchat_ghook_1 7107 } 7108 if (cmd==0x0A) \ ??edchat_ghook_5: \ 000000F4 0A0059E3 CMP R9,#+10 \ 000000F8 0900001A BNE ??edchat_ghook_7 7109 { 7110 pltop->dyn_pltop=SmilesImgList; \ 000000FC 14019FE5 LDR R0,??edchat_ghook_4+0x4 ;; SmilesImgList \ 00000100 000090E5 LDR R0,[R0, #+0] \ 00000104 080088E5 STR R0,[R8, #+8] 7111 DisableIDLETMR(); \ 00000108 7F0100EF SWI +383 7112 total_unread-=ed_struct->requested_decrement_total_unread; \ 0000010C 900294E5 LDR R0,[R4, #+656] \ 00000110 0C1097E5 LDR R1,[R7, #+12] \ 00000114 010040E0 SUB R0,R0,R1 \ 00000118 900284E5 STR R0,[R4, #+656] 7113 ed_struct->requested_decrement_total_unread=0; \ 0000011C 0C6087E5 STR R6,[R7, #+12] \ 00000120 E0FFFFEA B ??edchat_ghook_1 7114 #ifdef ELKA 7115 if (!total_unread) 7116 { 7117 SLI_Off(); 7118 } 7119 #endif 7120 /* if (request_close_edchat) 7121 { 7122 request_close_edchat=0; 7123 GeneralFunc_flag1(edchat_id,1); 7124 return; 7125 }*/ 7126 } 7127 if (cmd==7) \ ??edchat_ghook_7: \ 00000124 070059E3 CMP R9,#+7 \ 00000128 2800001A BNE ??edchat_ghook_8 7128 { 7129 SetSoftKey(data,&sk,SET_SOFT_KEY_N); \ 0000012C E8809FE5 LDR R8,??edchat_ghook_4+0x8 ;; ??sk_1 \ 00000130 0120A0E3 MOV R2,#+1 \ 00000134 0810A0E1 MOV R1,R8 \ 00000138 0500A0E1 MOV R0,R5 \ 0000013C 680100EF SWI +360 7130 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 00000140 081097E5 LDR R1,[R7, #+8] \ 00000144 0D20A0E1 MOV R2,SP \ 00000148 0500A0E1 MOV R0,R5 \ 0000014C 690100EF SWI +361 7131 if (ec.pWS->wsbody[0]==0) \ 00000150 28009DE5 LDR R0,[SP, #+40] \ 00000154 000090E5 LDR R0,[R0, #+0] \ 00000158 B000D0E1 LDRH R0,[R0, #+0] \ 0000015C 000050E3 CMP R0,#+0 \ 00000160 0300001A BNE ??edchat_ghook_9 7132 SetSoftKey(data,&sk_cancel,SET_SOFT_KEY_N==0?1:0); \ 00000164 0020A0E3 MOV R2,#+0 \ 00000168 081088E2 ADD R1,R8,#+8 \ 0000016C 0500A0E1 MOV R0,R5 \ 00000170 680100EF SWI +360 7133 if (!EDIT_IsBusy(data)) \ ??edchat_ghook_9: \ 00000174 0500A0E1 MOV R0,R5 \ 00000178 1C0200EF SWI +540 \ 0000017C 000050E3 CMP R0,#+0 \ 00000180 2100001A BNE ??edchat_ghook_3 7134 { 7135 time_to_stop_t9=0; \ 00000184 3C6384E5 STR R6,[R4, #+828] 7136 if (ed_struct->ed_contact->req_add) \ 00000188 000097E5 LDR R0,[R7, #+0] \ 0000018C 881090E5 LDR R1,[R0, #+136] \ 00000190 000051E3 CMP R1,#+0 \ 00000194 0500000A BEQ ??edchat_ghook_10 7137 { 7138 ed_struct->ed_contact->req_add=0; \ 00000198 886080E5 STR R6,[R0, #+136] 7139 AddMsgToChat(data); \ 0000019C 0500A0E1 MOV R0,R5 \ 000001A0 ........ BL AddMsgToChat 7140 RecountMenu(ed_struct->ed_contact,1); \ 000001A4 000097E5 LDR R0,[R7, #+0] \ 000001A8 0110A0E3 MOV R1,#+1 \ 000001AC ........ BL RecountMenu 7141 } 7142 if (ed_struct->ed_contact->req_drawack) \ ??edchat_ghook_10: \ 000001B0 000097E5 LDR R0,[R7, #+0] \ 000001B4 8C1090E5 LDR R1,[R0, #+140] \ 000001B8 000051E3 CMP R1,#+0 \ 000001BC 1200000A BEQ ??edchat_ghook_3 7143 { 7144 ed_struct->ed_contact->req_drawack=0; \ 000001C0 8C6080E5 STR R6,[R0, #+140] 7145 DrawAck(data); \ 000001C4 0500A0E1 MOV R0,R5 \ 000001C8 ........ BL DrawAck \ 000001CC B5FFFFEA B ??edchat_ghook_1 7146 } 7147 } 7148 } 7149 if (cmd==0x0C) \ ??edchat_ghook_8: \ 000001D0 0C0059E3 CMP R9,#+12 \ 000001D4 0C00001A BNE ??edchat_ghook_3 7150 { 7151 j=EDIT_GetFocus(data); \ 000001D8 0500A0E1 MOV R0,R5 \ 000001DC 820100EF SWI +386 \ 000001E0 0040A0E1 MOV R4,R0 7152 if ((EDIT_GetUnFocus(data)ed_answer)) \ 000001E4 0500A0E1 MOV R0,R5 \ 000001E8 830100EF SWI +387 \ 000001EC 040050E1 CMP R0,R4 \ 000001F0 050000AA BGE ??edchat_ghook_3 \ 000001F4 080097E5 LDR R0,[R7, #+8] \ 000001F8 000054E1 CMP R4,R0 \ 000001FC 0200000A BEQ ??edchat_ghook_3 7153 EDIT_SetCursorPos(data,1); \ 00000200 0110A0E3 MOV R1,#+1 \ 00000204 0500A0E1 MOV R0,R5 \ 00000208 D40100EF SWI +468 7154 } 7155 } \ ??edchat_ghook_3: \ 0000020C 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 00000210 F083BDE8 POP {R4-R9,PC} ;; return \ ??edchat_ghook_4: \ 00000214 ........ DC32 my_ed_redraw \ 00000218 ........ DC32 SmilesImgList \ 0000021C ........ DC32 ??sk_1 \ In segment DATA_C, align 4, align-sorted 7156 7157 7158 7159 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 070000006400 DC32 7, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ 00000038 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000040 000000000000 DC32 0H, 0, 32767 \ 0000FF7F0000 \ 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 `?` 7160 { 7161 1, 7162 edchat_onkey, 7163 edchat_ghook, 7164 (void *)edchat_locret, 7165 0, 7166 &menu_skt, 7167 {0,NULL,NULL,NULL}, 7168 FONT_SMALL, 7169 100, 7170 101, 7171 0, 7172 // 0x00000001 - Выровнять по правому краю 7173 // 0x00000002 - Выровнять по центру 7174 // 0x00000004 - Инверсия знакомест 7175 // 0x00000008 - UnderLine 7176 // 0x00000020 - Не переносить слова 7177 // 0x00000200 - bold 7178 0, 7179 // 0x00000002 - ReadOnly 7180 // 0x00000004 - Не двигается курсор 7181 // 0x40000000 - Поменять местами софт-кнопки 7182 0x40000000 7183 }; 7184 \ In segment CODE, align 4, keep-with-next 7185 void CreateEditChat(CLIST *t) 7186 { \ CreateEditChat: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 7187 7188 void *ma=malloc_adr(); 7189 void *eq; 7190 EDITCONTROL ec; 7191 EDITC_OPTIONS ec_options; 7192 int color, font, type; 7193 int zc; 7194 7195 LOGQ *lp; 7196 int edchat_toitem; 7197 // edcontact=t; 7198 7199 *((int *)(&edchat_hdr.lgp_id))=(int)t->name; \ 00000004 58649FE5 LDR R6,??CreateEditChat_0 ;; edchat_desc 7200 // *((int **)(&edchat_hdr.icon))=(int *)S_ICONS+GetIconIndex(t); 7201 *((int **)(&edchat_hdr.icon))=(int *)S_ICONS+IS_NULLICON; \ 00000008 ........ LDR R7,??DataTable271 ;; S_ICONS \ 0000000C 3CD04DE2 SUB SP,SP,#+60 \ 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] 7202 7203 eq=AllocEQueue(ma,mfree_adr()); \ 0000002C 158000EF SWI +32789 \ 00000030 0010A0E1 MOV R1,R0 \ 00000034 0500A0E1 MOV R0,R5 \ 00000038 630100EF SWI +355 7204 7205 /* hist = malloc(256); 7206 if(!GetHistory(hist, 256, t->uin)) 7207 { 7208 ascii2ws(ews,hist); 7209 PrepareEditControl(&ec); 7210 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL|ECF_DISABLE_T9,ews,ews->wsbody[0]); 7211 } 7212 mfree(hist); 7213 7214 AddEditControlToEditQend(eq,&ec,ma); */ 7215 lp=t->log; \ 0000003C 909094E5 LDR R9,[R4, #+144] \ 00000040 0080A0E1 MOV R8,R0 \ 00000044 000059E3 CMP R9,#+0 \ 00000048 8F00000A BEQ ??CreateEditChat_1 7216 7217 while(lp) 7218 { 7219 font = ED_H_FONT_SIZE; \ ??CreateEditChat_2: \ 0000004C ........ LDR R0,??DataTable272 ;; ED_H_FONT_SIZE 7220 if ((zc=lp->acked&3)) \ 00000050 ........ LDR R1,??DataTable273 ;; I_COLOR \ 00000054 00A090E5 LDR R10,[R0, #+0] \ 00000058 040099E5 LDR R0,[R9, #+4] \ 0000005C 00B091E5 LDR R11,[R1, #+0] \ 00000060 030010E2 ANDS R0,R0,#0x3 \ 00000064 0300000A BEQ ??CreateEditChat_3 7221 { 7222 if (zc==1) \ 00000068 010050E3 CMP R0,#+1 \ 0000006C 2200001A BNE ??CreateEditChat_4 7223 color=ACK_COLOR; //Зеленый \ 00000070 ........ LDR R0,??DataTable274 ;; ACK_COLOR \ 00000074 1F0000EA B ??CreateEditChat_5 7224 else 7225 color=I_COLOR; 7226 } 7227 else 7228 { 7229 if (lp->ID==0xFFFFFFFF) \ ??CreateEditChat_3: \ 00000078 080099E5 LDR R0,[R9, #+8] \ 0000007C 010070E3 CMN R0,#+1 \ 00000080 1B00001A BNE ??CreateEditChat_6 7230 { 7231 type = lp->type&0x0F; \ 00000084 0C0099E5 LDR R0,[R9, #+12] \ 00000088 0F1000E2 AND R1,R0,#0xF 7232 if(lp->type&0x10) \ 0000008C 100010E3 TST R0,#0x10 \ 00000090 0D00000A BEQ ??CreateEditChat_7 7233 { 7234 color = (type==1)?O_I_COLOR:((type==3)?O_X_COLOR:O_TO_COLOR); \ 00000094 010051E3 CMP R1,#+1 \ 00000098 ........ LDREQ R0,??DataTable275 ;; O_I_COLOR \ 0000009C 0700000A BEQ ??CreateEditChat_8 \ 000000A0 030051E3 CMP R1,#+3 \ 000000A4 0400001A BNE ??CreateEditChat_9 \ 000000A8 ........ LDR R0,??DataTable288 ;; O_X_COLOR \ 000000AC 00B090E5 LDR R11,[R0, #+0] \ 000000B0 ........ LDR R0,??DataTable290 ;; O_ED_X_FONT_SIZE \ ??CreateEditChat_10: \ 000000B4 00A090E5 LDR R10,[R0, #+0] \ 000000B8 0F0000EA B ??CreateEditChat_4 \ ??CreateEditChat_9: \ 000000BC ........ LDR R0,??DataTable278 ;; O_TO_COLOR \ ??CreateEditChat_8: \ 000000C0 00B090E5 LDR R11,[R0, #+0] \ 000000C4 ........ LDR R0,??DataTable279 ;; O_ED_H_FONT_SIZE \ 000000C8 F9FFFFEA B ??CreateEditChat_10 7235 font = (type==3)?O_ED_X_FONT_SIZE:O_ED_H_FONT_SIZE; 7236 } 7237 else 7238 { 7239 color = (type==1)?I_COLOR:((type==3)?X_COLOR:TO_COLOR); \ ??CreateEditChat_7: \ 000000CC 010051E3 CMP R1,#+1 \ 000000D0 0900000A BEQ ??CreateEditChat_4 \ 000000D4 030051E3 CMP R1,#+3 \ 000000D8 0300001A BNE ??CreateEditChat_11 \ 000000DC ........ LDR R0,??DataTable289 ;; X_COLOR \ 000000E0 00B090E5 LDR R11,[R0, #+0] \ 000000E4 ........ LDR R0,??DataTable291 ;; ED_X_FONT_SIZE \ 000000E8 F1FFFFEA B ??CreateEditChat_10 \ ??CreateEditChat_11: \ 000000EC ........ LDR R0,??DataTable282 ;; TO_COLOR \ 000000F0 000000EA B ??CreateEditChat_5 7240 font = (type==3)?ED_X_FONT_SIZE:ED_H_FONT_SIZE; 7241 } 7242 } 7243 else 7244 color=UNACK_COLOR; //????? \ ??CreateEditChat_6: \ 000000F4 ........ LDR R0,??DataTable283 ;; UNACK_COLOR \ ??CreateEditChat_5: \ 000000F8 00B090E5 LDR R11,[R0, #+0] 7245 } 7246 PrepareEditControl(&ec); \ ??CreateEditChat_4: \ 000000FC 10008DE2 ADD R0,SP,#+16 \ 00000100 640100EF SWI +356 7247 if ((lp->type&0x0F)!=3) \ 00000104 0C0099E5 LDR R0,[R9, #+12] \ 00000108 0F0000E2 AND R0,R0,#0xF \ 0000010C 030050E3 CMP R0,#+3 \ 00000110 0800000A BEQ ??CreateEditChat_12 7248 { 7249 ascii2ws(ews,lp->hdr); \ 00000114 180297E5 LDR R0,[R7, #+536] \ 00000118 101089E2 ADD R1,R9,#+16 \ 0000011C ........ _BLF ascii2ws,??ascii2ws??rA 7250 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 00000120 183297E5 LDR R3,[R7, #+536] \ 00000124 4020A0E3 MOV R2,#+64 \ 00000128 000093E5 LDR R0,[R3, #+0] \ 0000012C B000D0E1 LDRH R0,[R0, #+0] \ 00000130 01002DE9 PUSH {R0} \ 00000134 030000EA B ??CreateEditChat_13 7251 } 7252 else 7253 { 7254 ConstructEditControl(&ec,ECT_HEADER,ECF_DELSTR,ews,0); \ ??CreateEditChat_12: \ 00000138 0000A0E3 MOV R0,#+0 \ 0000013C 01002DE9 PUSH {R0} \ 00000140 183297E5 LDR R3,[R7, #+536] \ 00000144 2020A0E3 MOV R2,#+32 \ ??CreateEditChat_13: \ 00000148 0110A0E3 MOV R1,#+1 \ 0000014C 14008DE2 ADD R0,SP,#+20 \ 00000150 650100EF SWI +357 \ 00000154 04D08DE2 ADD SP,SP,#+4 7255 } 7256 PrepareEditCOptions(&ec_options); \ 00000158 0D00A0E1 MOV R0,SP \ 0000015C C80100EF SWI +456 7257 SetPenColorToEditCOptions(&ec_options,color); \ 00000160 0B10A0E1 MOV R1,R11 \ 00000164 0D00A0E1 MOV R0,SP \ 00000168 CC0100EF SWI +460 7258 SetFontToEditCOptions(&ec_options,font); \ 0000016C 0A10A0E1 MOV R1,R10 \ 00000170 0D00A0E1 MOV R0,SP \ 00000174 CA0100EF SWI +458 7259 CopyOptionsToEditControl(&ec,&ec_options); \ 00000178 0D10A0E1 MOV R1,SP \ 0000017C 10008DE2 ADD R0,SP,#+16 \ 00000180 CE0100EF SWI +462 7260 AddEditControlToEditQend(eq,&ec,ma); \ 00000184 0520A0E1 MOV R2,R5 \ 00000188 10108DE2 ADD R1,SP,#+16 \ 0000018C 0800A0E1 MOV R0,R8 \ 00000190 660100EF SWI +358 7261 if ((lp->type&0x0F)!=3) \ 00000194 0C0099E5 LDR R0,[R9, #+12] \ 00000198 0F1000E2 AND R1,R0,#0xF \ 0000019C 030051E3 CMP R1,#+3 \ 000001A0 0300000A BEQ ??CreateEditChat_14 7262 { 7263 ParseAnswer(ews,lp->text); \ 000001A4 180297E5 LDR R0,[R7, #+536] \ 000001A8 601089E2 ADD R1,R9,#+96 \ 000001AC ........ BL ParseAnswer \ 000001B0 060000EA B ??CreateEditChat_15 7264 } 7265 else 7266 { 7267 ParseXStatusText(ews,lp->text,(lp->type&0x10)?O_X_COLOR:X_COLOR); \ ??CreateEditChat_14: \ 000001B4 100010E3 TST R0,#0x10 \ 000001B8 ........ LDRNE R0,??DataTable288 ;; O_X_COLOR \ 000001BC 601089E2 ADD R1,R9,#+96 \ 000001C0 ........ LDREQ R0,??DataTable289 ;; X_COLOR \ 000001C4 002090E5 LDR R2,[R0, #+0] \ 000001C8 180297E5 LDR R0,[R7, #+536] \ 000001CC ........ BL ParseXStatusText 7268 } 7269 PrepareEditControl(&ec); \ ??CreateEditChat_15: \ 000001D0 10008DE2 ADD R0,SP,#+16 \ 000001D4 640100EF SWI +356 7270 ConstructEditControl(&ec, 7271 ECT_NORMAL_TEXT, 7272 ews->wsbody[0] ? ECF_APPEND_EOL|ECF_DISABLE_T9 : ECF_DELSTR, 7273 ews,ews->wsbody[0]); \ 000001D8 183297E5 LDR R3,[R7, #+536] \ 000001DC 000093E5 LDR R0,[R3, #+0] \ 000001E0 B010D0E1 LDRH R1,[R0, #+0] \ 000001E4 000051E3 CMP R1,#+0 \ 000001E8 0100A0E1 MOV R0,R1 \ 000001EC 01002DE9 PUSH {R0} \ 000001F0 812DA013 MOVNE R2,#+8256 \ 000001F4 2020A003 MOVEQ R2,#+32 \ 000001F8 0310A0E3 MOV R1,#+3 \ 000001FC 14008DE2 ADD R0,SP,#+20 \ 00000200 650100EF SWI +357 7274 PrepareEditCOptions(&ec_options); \ 00000204 04008DE2 ADD R0,SP,#+4 \ 00000208 C80100EF SWI +456 7275 //#ifdef M75 7276 if ((lp->type&0x0F)!=3) \ 0000020C 0C0099E5 LDR R0,[R9, #+12] \ 00000210 04D08DE2 ADD SP,SP,#+4 \ 00000214 0F1000E2 AND R1,R0,#0xF \ 00000218 030051E3 CMP R1,#+3 \ 0000021C 0300000A BEQ ??CreateEditChat_16 7277 { 7278 SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); \ 00000220 100010E3 TST R0,#0x10 \ 00000224 ........ LDRNE R0,??DataTable286 ;; O_ED_FONT_SIZE \ 00000228 ........ LDREQ R0,??DataTable293 ;; ED_FONT_SIZE \ 0000022C 090000EA B ??CreateEditChat_17 7279 } 7280 else 7281 { 7282 SetPenColorToEditCOptions(&ec_options,(lp->type&0x10)?O_X_COLOR:X_COLOR); \ ??CreateEditChat_16: \ 00000230 100010E3 TST R0,#0x10 \ 00000234 ........ LDRNE R0,??DataTable288 ;; O_X_COLOR \ 00000238 ........ LDREQ R0,??DataTable289 ;; X_COLOR \ 0000023C 001090E5 LDR R1,[R0, #+0] \ 00000240 0D00A0E1 MOV R0,SP \ 00000244 CC0100EF SWI +460 7283 SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_X_FONT_SIZE:ED_X_FONT_SIZE); \ 00000248 0C0099E5 LDR R0,[R9, #+12] \ 0000024C 100010E3 TST R0,#0x10 \ 00000250 ........ LDRNE R0,??DataTable290 ;; O_ED_X_FONT_SIZE \ 00000254 ........ LDREQ R0,??DataTable291 ;; ED_X_FONT_SIZE \ ??CreateEditChat_17: \ 00000258 001090E5 LDR R1,[R0, #+0] \ 0000025C 0D00A0E1 MOV R0,SP \ 00000260 CA0100EF SWI +458 7284 } 7285 //#else 7286 // SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); 7287 //#endif 7288 CopyOptionsToEditControl(&ec,&ec_options); \ 00000264 0D10A0E1 MOV R1,SP \ 00000268 10008DE2 ADD R0,SP,#+16 \ 0000026C CE0100EF SWI +462 7289 AddEditControlToEditQend(eq,&ec,ma); \ 00000270 0520A0E1 MOV R2,R5 \ 00000274 10108DE2 ADD R1,SP,#+16 \ 00000278 0800A0E1 MOV R0,R8 \ 0000027C 660100EF SWI +358 7290 lp=lp->next; \ 00000280 009099E5 LDR R9,[R9, #+0] 7291 } \ 00000284 000059E3 CMP R9,#+0 \ 00000288 6FFFFF1A BNE ??CreateEditChat_2 7292 if (t->isunread) total_unread--; \ ??CreateEditChat_1: \ 0000028C 800094E5 LDR R0,[R4, #+128] 7293 total_unread2=total_unread2-t->unread_msg; 7294 t->unread_msg=0; \ 00000290 0090A0E3 MOV R9,#+0 \ 00000294 000050E3 CMP R0,#+0 \ 00000298 90029715 LDRNE R0,[R7, #+656] \ 0000029C 01004012 SUBNE R0,R0,#+1 \ 000002A0 90028715 STRNE R0,[R7, #+656] \ 000002A4 F80197E5 LDR R0,[R7, #+504] \ 000002A8 841094E5 LDR R1,[R4, #+132] \ 000002AC 010040E0 SUB R0,R0,R1 \ 000002B0 F80187E5 STR R0,[R7, #+504] \ 000002B4 849084E5 STR R9,[R4, #+132] 7295 t->isunread=0; \ 000002B8 809084E5 STR R9,[R4, #+128] 7296 ChangeContactPos(t); \ 000002BC 0400A0E1 MOV R0,R4 \ 000002C0 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 7297 wsprintf(ews, "-------"); \ 000002C4 180297E5 LDR R0,[R7, #+536] \ 000002C8 4C1086E2 ADD R1,R6,#+76 \ 000002CC 240100EF SWI +292 7298 PrepareEditControl(&ec); \ 000002D0 10008DE2 ADD R0,SP,#+16 \ 000002D4 640100EF SWI +356 7299 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 000002D8 183297E5 LDR R3,[R7, #+536] \ 000002DC 4020A0E3 MOV R2,#+64 \ 000002E0 000093E5 LDR R0,[R3, #+0] \ 000002E4 0110A0E3 MOV R1,#+1 \ 000002E8 B000D0E1 LDRH R0,[R0, #+0] \ 000002EC 01002DE9 PUSH {R0} \ 000002F0 14008DE2 ADD R0,SP,#+20 \ 000002F4 650100EF SWI +357 7300 PrepareEditCOptions(&ec_options); \ 000002F8 04008DE2 ADD R0,SP,#+4 \ 000002FC C80100EF SWI +456 7301 SetFontToEditCOptions(&ec_options,ED_FONT_SIZE); \ 00000300 ........ LDR R0,??DataTable293 ;; ED_FONT_SIZE \ 00000304 001090E5 LDR R1,[R0, #+0] \ 00000308 04008DE2 ADD R0,SP,#+4 \ 0000030C CA0100EF SWI +458 7302 CopyOptionsToEditControl(&ec,&ec_options); \ 00000310 04108DE2 ADD R1,SP,#+4 \ 00000314 14008DE2 ADD R0,SP,#+20 \ 00000318 CE0100EF SWI +462 7303 AddEditControlToEditQend(eq,&ec,ma); \ 0000031C 0520A0E1 MOV R2,R5 \ 00000320 14108DE2 ADD R1,SP,#+20 \ 00000324 0800A0E1 MOV R0,R8 \ 00000328 660100EF SWI +358 7304 7305 if (t->answer) ParseAnswer(ews,t->answer); \ 0000032C 941094E5 LDR R1,[R4, #+148] \ 00000330 04D08DE2 ADD SP,SP,#+4 \ 00000334 000051E3 CMP R1,#+0 \ 00000338 0200000A BEQ ??CreateEditChat_18 \ 0000033C 180297E5 LDR R0,[R7, #+536] \ 00000340 ........ BL ParseAnswer \ 00000344 020000EA B ??CreateEditChat_19 7306 else CutWSTR(ews,0); \ ??CreateEditChat_18: \ 00000348 180297E5 LDR R0,[R7, #+536] \ 0000034C 0010A0E3 MOV R1,#+0 \ 00000350 260100EF SWI +294 7307 PrepareEditControl(&ec); \ ??CreateEditChat_19: \ 00000354 10008DE2 ADD R0,SP,#+16 \ 00000358 640100EF SWI +356 7308 // ConstructEditControl(&ec,3,(FIRST_LETTER)?ECF_DEFAULT_BIG_LETTER:0,ews,1024); 7309 ConstructEditControl(&ec,3,(FIRST_LETTER)?ECF_DEFAULT_BIG_LETTER:0,ews,4096); \ 0000035C 04019FE5 LDR R0,??CreateEditChat_0+0x4 ;; FIRST_LETTER \ 00000360 0310A0E3 MOV R1,#+3 \ 00000364 000090E5 LDR R0,[R0, #+0] \ 00000368 000050E3 CMP R0,#+0 \ 0000036C 400DA0E3 MOV R0,#+4096 \ 00000370 01002DE9 PUSH {R0} \ 00000374 183297E5 LDR R3,[R7, #+536] \ 00000378 402DA013 MOVNE R2,#+4096 \ 0000037C 0020A003 MOVEQ R2,#+0 \ 00000380 14008DE2 ADD R0,SP,#+20 \ 00000384 650100EF SWI +357 7310 7311 PrepareEditCOptions(&ec_options); \ 00000388 04008DE2 ADD R0,SP,#+4 \ 0000038C C80100EF SWI +456 7312 SetFontToEditCOptions(&ec_options,ED_FONT_SIZE); \ 00000390 ........ LDR R0,??DataTable293 ;; ED_FONT_SIZE \ 00000394 001090E5 LDR R1,[R0, #+0] \ 00000398 04008DE2 ADD R0,SP,#+4 \ 0000039C CA0100EF SWI +458 7313 CopyOptionsToEditControl(&ec,&ec_options); \ 000003A0 04108DE2 ADD R1,SP,#+4 \ 000003A4 14008DE2 ADD R0,SP,#+20 \ 000003A8 CE0100EF SWI +462 7314 edchat_toitem=AddEditControlToEditQend(eq,&ec,ma); \ 000003AC 0520A0E1 MOV R2,R5 \ 000003B0 14108DE2 ADD R1,SP,#+20 \ 000003B4 0800A0E1 MOV R0,R8 \ 000003B8 660100EF SWI +358 \ 000003BC 00A0A0E1 MOV R10,R0 7315 7316 if (t->req_xtext) \ 000003C0 AC0094E5 LDR R0,[R4, #+172] \ 000003C4 04D08DE2 ADD SP,SP,#+4 \ 000003C8 000050E3 CMP R0,#+0 \ 000003CC 0400000A BEQ ??CreateEditChat_20 7317 { 7318 FreeXText(t); \ 000003D0 0400A0E1 MOV R0,R4 \ 000003D4 ........ _BLF FreeXText,??FreeXText??rA 7319 t->req_xtext=0; \ 000003D8 AC9084E5 STR R9,[R4, #+172] 7320 RequestXText(t->uin); \ 000003DC 0C0094E5 LDR R0,[R4, #+12] \ 000003E0 ........ BL RequestXText 7321 } 7322 7323 EDCHAT_STRUCT *ed_struct=malloc(sizeof(EDCHAT_STRUCT)); \ ??CreateEditChat_20: \ 000003E4 1400A0E3 MOV R0,#+20 \ 000003E8 140000EF SWI +20 \ 000003EC 0050A0E1 MOV R5,R0 7324 ed_struct->ed_contact=t; \ 000003F0 004085E5 STR R4,[R5, #+0] 7325 ed_struct->ed_answer=edchat_toitem; \ 000003F4 08A085E5 STR R10,[R5, #+8] 7326 ed_struct->requested_decrement_total_unread=0; \ 000003F8 0C9085E5 STR R9,[R5, #+12] 7327 t->req_add=0; \ 000003FC 889084E5 STR R9,[R4, #+136] 7328 t->last_log=NULL; \ 00000400 989084E5 STR R9,[R4, #+152] 7329 7330 // int scr_w=ScreenW(); 7331 // int scr_h=ScreenH(); 7332 // int head_h=HeaderH(); 7333 7334 patch_header(&edchat_hdr); \ 00000404 380086E2 ADD R0,R6,#+56 \ 00000408 ........ _BLF patch_header,??patch_header??rA 7335 patch_input(&edchat_desc); \ 0000040C B891C6E1 STRH R9,[R6, #+24] \ 00000410 8A8100EF SWI +33162 \ 00000414 010080E2 ADD R0,R0,#+1 \ 00000418 BA01C6E1 STRH R0,[R6, #+26] \ 0000041C 888100EF SWI +33160 \ 00000420 010040E2 SUB R0,R0,#+1 \ 00000424 BC01C6E1 STRH R0,[R6, #+28] \ 00000428 898100EF SWI +33161 \ 0000042C 0040A0E1 MOV R4,R0 \ 00000430 8B8100EF SWI +33163 \ 00000434 000044E0 SUB R0,R4,R0 \ 00000438 010040E2 SUB R0,R0,#+1 \ 0000043C BE01C6E1 STRH R0,[R6, #+30] 7336 // edchat_desc.font=ED_FONT_SIZE; 7337 edchat_id=CreateInputTextDialog(&edchat_desc,&edchat_hdr,eq,1,ed_struct); \ 00000440 20002DE9 PUSH {R5} \ 00000444 0130A0E3 MOV R3,#+1 \ 00000448 0820A0E1 MOV R2,R8 \ 0000044C 381086E2 ADD R1,R6,#+56 \ 00000450 0600A0E1 MOV R0,R6 \ 00000454 670100EF SWI +359 \ 00000458 A00287E5 STR R0,[R7, #+672] 7338 } \ 0000045C 40D08DE2 ADD SP,SP,#+64 \ 00000460 F08FBDE8 POP {R4-R11,PC} ;; return \ ??CreateEditChat_0: \ 00000464 ........ DC32 edchat_desc \ 00000468 ........ DC32 FIRST_LETTER 7339 7340 //----------------------------------------------------------------------------- 7341 7342 #define EC_MNU_MAX 9 7343 \ In segment CODE, align 4, keep-with-next 7344 void Quote(GUI *data) 7345 { \ Quote: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 84D04DE2 SUB SP,SP,#+132 7346 int q_n; 7347 EDITCONTROL ec, ec_hdr; 7348 EDITCONTROL ec_ed; 7349 WSHDR *ed_ws; 7350 WSHDR *ws; 7351 7352 EDCHAT_STRUCT *ed_struct; 7353 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 7354 7355 q_n=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 820100EF SWI +386 \ 00000018 0050A0E1 MOV R5,R0 7356 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 7357 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 7358 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 7359 7360 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 7361 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 7362 { 7363 wstrcpy(ed_ws,ec_hdr.pWS); \ 00000070 80109DE5 LDR R1,[SP, #+128] \ 00000074 0500A0E1 MOV R0,R5 \ 00000078 1F0100EF SWI +287 7364 wsAppendChar(ed_ws,'\r'); \ 0000007C 0D10A0E3 MOV R1,#+13 \ 00000080 0500A0E1 MOV R0,R5 \ 00000084 1C0000EF SWI +28 \ 00000088 020000EA B ??Quote_1 7365 } 7366 else 7367 CutWSTR(ed_ws,0); \ ??Quote_0: \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 260100EF SWI +294 7368 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 7369 { 7370 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 7371 } 7372 else 7373 { 7374 wstrcat(ed_ws,ec.pWS); \ ??Quote_2: \ 000000B8 54109DE5 LDR R1,[SP, #+84] \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 210100EF SWI +289 7375 } 7376 int ed_pos=0; \ ??Quote_3: \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 FF60A0E3 MOV R6,#+255 \ 000000CC FF6C86E3 ORR R6,R6,#0xFF00 7377 do 7378 { 7379 ed_pos++; \ ??Quote_4: \ 000000D0 017080E2 ADD R7,R0,#+1 7380 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 7381 wsInsertChar(ed_ws,' ',ed_pos); \ 000000E8 0720A0E1 MOV R2,R7 \ 000000EC 2010A0E3 MOV R1,#+32 \ 000000F0 0500A0E1 MOV R0,R5 \ 000000F4 1D0000EF SWI +29 7382 } 7383 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 7384 wsAppendChar(ed_ws,'\r'); \ 00000110 0D10A0E3 MOV R1,#+13 \ 00000114 0500A0E1 MOV R0,R5 \ 00000118 1C0000EF SWI +28 7385 wsAppendChar(ed_ws,'\r'); \ 0000011C 0D10A0E3 MOV R1,#+13 \ 00000120 0500A0E1 MOV R0,R5 \ 00000124 1C0000EF SWI +28 7386 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 7387 wstrcpy(ws,ec_ed.pWS); \ 00000144 28109DE5 LDR R1,[SP, #+40] \ 00000148 0060A0E1 MOV R6,R0 \ 0000014C 1F0100EF SWI +287 7388 wstrcat(ws,ed_ws); \ 00000150 0510A0E1 MOV R1,R5 \ 00000154 0600A0E1 MOV R0,R6 \ 00000158 210100EF SWI +289 7389 FreeWS(ed_ws); \ 0000015C 0500A0E1 MOV R0,R5 \ 00000160 290100EF SWI +297 7390 CutWSTR(ws,ec_ed.maxlen); \ 00000164 F811DDE1 LDRSH R1,[SP, #+24] \ 00000168 0600A0E1 MOV R0,R6 \ 0000016C 260100EF SWI +294 7391 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 7392 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 0000017C 040094E5 LDR R0,[R4, #+4] \ 00000180 0610A0E1 MOV R1,R6 \ 00000184 810100EF SWI +385 7393 FreeWS(ws); \ 00000188 0600A0E1 MOV R0,R6 \ 0000018C 290100EF SWI +297 7394 GeneralFuncF1(1); \ 00000190 0100A0E3 MOV R0,#+1 \ 00000194 3B0100EF SWI +315 7395 } \ 00000198 84D08DE2 ADD SP,SP,#+132 \ 0000019C F080BDE8 POP {R4-R7,PC} ;; return 7396 \ In segment CODE, align 4, keep-with-next 7397 void Quote2(GUI *data)//цитирование без фокуса на ответ 7398 { \ Quote2: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 84D04DE2 SUB SP,SP,#+132 7399 int q_n; 7400 EDITCONTROL ec, ec_hdr; 7401 EDITCONTROL ec_ed; 7402 WSHDR *ed_ws; 7403 WSHDR *ws; 7404 7405 EDCHAT_STRUCT *ed_struct; 7406 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 7407 7408 q_n=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 820100EF SWI +386 \ 00000018 0050A0E1 MOV R5,R0 7409 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 7410 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 7411 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 7412 7413 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 7414 if(wstrlen(ec_hdr.pWS)) \ 00000060 80009DE5 LDR R0,[SP, #+128] \ 00000064 230100EF SWI +291 \ 00000068 000050E3 CMP R0,#+0 \ 0000006C 0600000A BEQ ??Quote2_0 7415 { 7416 wstrcpy(ed_ws,ec_hdr.pWS); \ 00000070 80109DE5 LDR R1,[SP, #+128] \ 00000074 0500A0E1 MOV R0,R5 \ 00000078 1F0100EF SWI +287 7417 wsAppendChar(ed_ws,'\r'); \ 0000007C 0D10A0E3 MOV R1,#+13 \ 00000080 0500A0E1 MOV R0,R5 \ 00000084 1C0000EF SWI +28 \ 00000088 020000EA B ??Quote2_1 7418 } 7419 else 7420 CutWSTR(ed_ws,0); \ ??Quote2_0: \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 260100EF SWI +294 7421 if (EDIT_IsMarkModeActive(ed_struct->ed_chatgui)) \ ??Quote2_1: \ 00000098 040094E5 LDR R0,[R4, #+4] \ 0000009C D80100EF SWI +472 \ 000000A0 000050E3 CMP R0,#+0 \ 000000A4 0300000A BEQ ??Quote2_2 7422 { 7423 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 ??Quote2_3 7424 } 7425 else 7426 { 7427 wstrcat(ed_ws,ec.pWS); \ ??Quote2_2: \ 000000B8 54109DE5 LDR R1,[SP, #+84] \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 210100EF SWI +289 7428 } 7429 int ed_pos=0; \ ??Quote2_3: \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 FF60A0E3 MOV R6,#+255 \ 000000CC FF6C86E3 ORR R6,R6,#0xFF00 7430 do 7431 { 7432 ed_pos++; \ ??Quote2_4: \ 000000D0 017080E2 ADD R7,R0,#+1 7433 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 7434 wsInsertChar(ed_ws,' ',ed_pos); \ 000000E8 0720A0E1 MOV R2,R7 \ 000000EC 2010A0E3 MOV R1,#+32 \ 000000F0 0500A0E1 MOV R0,R5 \ 000000F4 1D0000EF SWI +29 7435 } 7436 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 ??Quote2_4 7437 wsAppendChar(ed_ws,'\r'); \ 00000110 0D10A0E3 MOV R1,#+13 \ 00000114 0500A0E1 MOV R0,R5 \ 00000118 1C0000EF SWI +28 7438 wsAppendChar(ed_ws,'\r'); \ 0000011C 0D10A0E3 MOV R1,#+13 \ 00000120 0500A0E1 MOV R0,R5 \ 00000124 1C0000EF SWI +28 7439 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 7440 wstrcpy(ws,ec_ed.pWS); \ 00000144 28109DE5 LDR R1,[SP, #+40] \ 00000148 0060A0E1 MOV R6,R0 \ 0000014C 1F0100EF SWI +287 7441 wstrcat(ws,ed_ws); \ 00000150 0510A0E1 MOV R1,R5 \ 00000154 0600A0E1 MOV R0,R6 \ 00000158 210100EF SWI +289 7442 FreeWS(ed_ws); \ 0000015C 0500A0E1 MOV R0,R5 \ 00000160 290100EF SWI +297 7443 CutWSTR(ws,ec_ed.maxlen); \ 00000164 F811DDE1 LDRSH R1,[SP, #+24] \ 00000168 0600A0E1 MOV R0,R6 \ 0000016C 260100EF SWI +294 7444 int ii=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000170 040094E5 LDR R0,[R4, #+4] \ 00000174 820100EF SWI +386 7445 EDIT_SetFocus(ed_struct->ed_chatgui,ed_struct->ed_answer); \ 00000178 081094E5 LDR R1,[R4, #+8] \ 0000017C 0050A0E1 MOV R5,R0 \ 00000180 040094E5 LDR R0,[R4, #+4] \ 00000184 9B0100EF SWI +411 7446 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 00000188 040094E5 LDR R0,[R4, #+4] \ 0000018C 0610A0E1 MOV R1,R6 \ 00000190 810100EF SWI +385 7447 EDIT_SetFocus(ed_struct->ed_chatgui,ii); \ 00000194 040094E5 LDR R0,[R4, #+4] \ 00000198 0510A0E1 MOV R1,R5 \ 0000019C 9B0100EF SWI +411 7448 FreeWS(ws); \ 000001A0 0600A0E1 MOV R0,R6 \ 000001A4 290100EF SWI +297 7449 GeneralFuncF1(1); \ 000001A8 0100A0E3 MOV R0,#+1 \ 000001AC 3B0100EF SWI +315 7450 } \ 000001B0 84D08DE2 ADD SP,SP,#+132 \ 000001B4 F080BDE8 POP {R4-R7,PC} ;; return 7451 7452 \ In segment CODE, align 4, keep-with-next 7453 void GetShortInfo(GUI *data) 7454 { \ GetShortInfo: \ 00000000 70402DE9 PUSH {R4-R6,LR} 7455 EDCHAT_STRUCT *ed_struct; 7456 ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 \ 00000008 0040A0E1 MOV R4,R0 7457 7458 TPKT *p; 7459 CLIST *t; 7460 if ((t=ed_struct->ed_contact)&&(connect_state==3)) \ 0000000C 005094E5 LDR R5,[R4, #+0] \ 00000010 000055E3 CMP R5,#+0 \ 00000014 1F00000A BEQ ??GetShortInfo_0 \ 00000018 ........ LDR R0,??DataTable301 ;; S_ICONS + 620 \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 030050E3 CMP R0,#+3 \ 00000024 1B00001A BNE ??GetShortInfo_0 7461 { 7462 p=malloc(sizeof(PKT)); \ 00000028 0800A0E3 MOV R0,#+8 \ 0000002C 140000EF SWI +20 7463 p->pkt.uin=t->uin; 7464 p->pkt.type=T_REQINFOSHORT; 7465 p->pkt.data_len=0; 7466 AddStringToLog(t, 0x01, "Request info...", I_str,0xFFFFFFFF,1); \ 00000030 ........ LDR R3,??DataTable299 ;; I_str \ 00000034 68209FE5 LDR R2,??GetShortInfo_1 ;; `?` \ 00000038 0060A0E1 MOV R6,R0 \ 0000003C 0C0095E5 LDR R0,[R5, #+12] \ 00000040 0110A0E3 MOV R1,#+1 \ 00000044 000086E5 STR R0,[R6, #+0] \ 00000048 0B00A0E3 MOV R0,#+11 \ 0000004C B400C6E1 STRH R0,[R6, #+4] \ 00000050 0000A0E3 MOV R0,#+0 \ 00000054 B600C6E1 STRH R0,[R6, #+6] \ 00000058 0100A0E3 MOV R0,#+1 \ 0000005C 01002DE9 PUSH {R0} \ 00000060 000060E2 RSB R0,R0,#+0 \ 00000064 01002DE9 PUSH {R0} \ 00000068 0500A0E1 MOV R0,R5 \ 0000006C ........ BL AddStringToLog 7467 AddMsgToChat(ed_struct->ed_chatgui); \ 00000070 040094E5 LDR R0,[R4, #+4] \ 00000074 ........ BL AddMsgToChat 7468 RecountMenu(t,1); \ 00000078 0110A0E3 MOV R1,#+1 \ 0000007C 0500A0E1 MOV R0,R5 \ 00000080 ........ BL RecountMenu 7469 SUBPROC((void *)SendAnswer,0,p); \ 00000084 ........ LDR R0,??DataTable300 ;; SendAnswer \ 00000088 0620A0E1 MOV R2,R6 \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 710100EF SWI +369 \ 00000094 08D08DE2 ADD SP,SP,#+8 7470 } 7471 GeneralFuncF1(1); \ ??GetShortInfo_0: \ 00000098 0100A0E3 MOV R0,#+1 \ 0000009C 3B0100EF SWI +315 7472 } \ 000000A0 7080BDE8 POP {R4-R6,PC} ;; return \ ??GetShortInfo_1: \ 000000A4 ........ DC32 `?` 7473 7474 void AskNickAndAddContact(EDCHAT_STRUCT *); \ In segment CODE, align 4, keep-with-next 7475 void AddCurContact(GUI *data) 7476 { \ AddCurContact: \ 00000000 00402DE9 PUSH {LR} 7477 EDCHAT_STRUCT *ed_struct; 7478 ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 7479 7480 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,??DataTable301 ;; S_ICONS + 620 \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 030051E3 CMP R1,#+3 \ 00000020 0000001A BNE ??AddCurContact_0 \ 00000024 ........ _BLF CreateAddContactGrpDialog,??CreateAddContactGrpDialog??rA 7481 GeneralFuncF1(1); \ ??AddCurContact_0: \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 3B0100EF SWI +315 7482 } \ 00000030 0080BDE8 POP {PC} ;; return 7483 \ In segment CODE, align 4, keep-with-next 7484 void SendAuthReq(GUI *data) 7485 { \ SendAuthReq: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 14D04DE2 SUB SP,SP,#+20 7486 EDCHAT_STRUCT *ed_struct; 7487 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 7488 7489 TPKT *p; 7490 CLIST *t; 7491 int l; 7492 const char s[]=LG_AUTHREQ; \ 0000000C BC109FE5 LDR R1,??SendAuthReq_0 ;; `?ed_contact)&&(connect_state==3)) \ 00000020 005094E5 LDR R5,[R4, #+0] \ 00000024 000055E3 CMP R5,#+0 \ 00000028 2400000A BEQ ??SendAuthReq_1 \ 0000002C ........ LDR R0,??DataTable301 ;; S_ICONS + 620 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 030050E3 CMP R0,#+3 \ 00000038 2000001A BNE ??SendAuthReq_1 7494 { 7495 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 7496 p->pkt.uin=t->uin; \ 00000054 0C0095E5 LDR R0,[R5, #+12] 7497 p->pkt.type=T_AUTHREQ; 7498 p->pkt.data_len=l; 7499 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 7500 AddStringToLog(t,0x01,p->data,I_str,0xFFFFFFFF,1); \ 00000074 ........ LDR R3,??DataTable299 ;; I_str \ 00000078 0100A0E3 MOV R0,#+1 \ 0000007C 01002DE9 PUSH {R0} \ 00000080 082087E2 ADD R2,R7,#+8 \ 00000084 0110A0E3 MOV R1,#+1 \ 00000088 000060E2 RSB R0,R0,#+0 \ 0000008C 01002DE9 PUSH {R0} \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 ........ BL AddStringToLog 7501 AddMsgToChat(ed_struct->ed_chatgui); \ 00000098 040094E5 LDR R0,[R4, #+4] \ 0000009C ........ BL AddMsgToChat 7502 RecountMenu(t,1); \ 000000A0 0110A0E3 MOV R1,#+1 \ 000000A4 0500A0E1 MOV R0,R5 \ 000000A8 ........ BL RecountMenu 7503 SUBPROC((void *)SendAnswer,0,p); \ 000000AC ........ LDR R0,??DataTable300 ;; SendAnswer \ 000000B0 0720A0E1 MOV R2,R7 \ 000000B4 0010A0E3 MOV R1,#+0 \ 000000B8 710100EF SWI +369 \ 000000BC 08D08DE2 ADD SP,SP,#+8 7504 } 7505 GeneralFuncF1(1); \ ??SendAuthReq_1: \ 000000C0 0100A0E3 MOV R0,#+1 \ 000000C4 3B0100EF SWI +315 7506 } \ 000000C8 14D08DE2 ADD SP,SP,#+20 \ 000000CC F080BDE8 POP {R4-R7,PC} ;; return \ ??SendAuthReq_0: \ 000000D0 ........ DC32 `?ed_contact)&&(connect_state==3)) \ 00000020 005094E5 LDR R5,[R4, #+0] \ 00000024 000055E3 CMP R5,#+0 \ 00000028 2400000A BEQ ??SendAuthGrant_1 \ 0000002C ........ LDR R0,??DataTable301 ;; S_ICONS + 620 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 030050E3 CMP R0,#+3 \ 00000038 2000001A BNE ??SendAuthGrant_1 7518 { 7519 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 7520 p->pkt.uin=t->uin; \ 00000054 0C0095E5 LDR R0,[R5, #+12] 7521 p->pkt.type=T_AUTHGRANT; 7522 p->pkt.data_len=l; 7523 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 7524 AddStringToLog(t,0x01,p->data,I_str,0xFFFFFFFF,1); \ 00000074 ........ LDR R3,??DataTable302 ;; I_str \ 00000078 0100A0E3 MOV R0,#+1 \ 0000007C 01002DE9 PUSH {R0} \ 00000080 082087E2 ADD R2,R7,#+8 \ 00000084 0110A0E3 MOV R1,#+1 \ 00000088 000060E2 RSB R0,R0,#+0 \ 0000008C 01002DE9 PUSH {R0} \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 ........ BL AddStringToLog 7525 AddMsgToChat(ed_struct->ed_chatgui); \ 00000098 040094E5 LDR R0,[R4, #+4] \ 0000009C ........ BL AddMsgToChat 7526 RecountMenu(t,1); \ 000000A0 0110A0E3 MOV R1,#+1 \ 000000A4 0500A0E1 MOV R0,R5 \ 000000A8 ........ BL RecountMenu 7527 SUBPROC((void *)SendAnswer,0,p); \ 000000AC ........ LDR R0,??DataTable303 ;; SendAnswer \ 000000B0 0720A0E1 MOV R2,R7 \ 000000B4 0010A0E3 MOV R1,#+0 \ 000000B8 710100EF SWI +369 \ 000000BC 08D08DE2 ADD SP,SP,#+8 7528 } 7529 GeneralFuncF1(1); \ ??SendAuthGrant_1: \ 000000C0 0100A0E3 MOV R0,#+1 \ 000000C4 3B0100EF SWI +315 7530 } \ 000000C8 FF80BDE8 POP {R0-R7,PC} ;; return \ ??SendAuthGrant_0: \ 000000CC ........ DC32 `?ed_contact)) \ 00000014 005095E5 LDR R5,[R5, #+0] \ 00000018 0040A0E1 MOV R4,R0 \ 0000001C 000055E3 CMP R5,#+0 \ 00000020 2600000A BEQ ??OpenLogfile_0 7540 { 7541 if(HISTORY_SAVE_TYPE) \ 00000024 ........ LDR R1,??DataTable304 ;; UIN \ 00000028 A4E09FE5 LDR LR,??OpenLogfile_1 ;; HISTORY_SAVE_TYPE \ 0000002C 003091E5 LDR R3,[R1, #+0] \ 00000030 A0109FE5 LDR R1,??OpenLogfile_1+0x4 ;; HISTORY_TYPE \ 00000034 00E09EE5 LDR LR,[LR, #+0] \ 00000038 0C0095E5 LDR R0,[R5, #+12] \ 0000003C 00C091E5 LDR R12,[R1, #+0] \ 00000040 94109FE5 LDR R1,??OpenLogfile_1+0x8 ;; `?` \ 00000044 94209FE5 LDR R2,??OpenLogfile_1+0xC ;; HIST_PATH \ 00000048 00005EE3 CMP LR,#+0 \ 0000004C 0E00000A BEQ ??OpenLogfile_2 7542 { 7543 if(HISTORY_TYPE) \ 00000050 01002DE9 PUSH {R0} \ 00000054 00005CE3 CMP R12,#+0 \ 00000058 0500000A BEQ ??OpenLogfile_3 7544 wsprintf(ws,"%s\\%u\\%s(%d).txt", HIST_PATH, UIN, t->name, t->uin); \ 0000005C 140085E2 ADD R0,R5,#+20 \ 00000060 01002DE9 PUSH {R0} \ 00000064 0400A0E1 MOV R0,R4 \ 00000068 240100EF SWI +292 \ 0000006C 08D08DE2 ADD SP,SP,#+8 \ 00000070 0E0000EA B ??OpenLogfile_4 7545 else 7546 wsprintf(ws,"%s\\%s(%d).txt", HIST_PATH, t->name, t->uin); \ ??OpenLogfile_3: \ 00000074 143085E2 ADD R3,R5,#+20 \ 00000078 141081E2 ADD R1,R1,#+20 \ ??OpenLogfile_5: \ 0000007C 0400A0E1 MOV R0,R4 \ 00000080 240100EF SWI +292 \ 00000084 04D08DE2 ADD SP,SP,#+4 \ 00000088 080000EA B ??OpenLogfile_4 7547 } 7548 else 7549 { 7550 if(HISTORY_TYPE) \ ??OpenLogfile_2: \ 0000008C 00005CE3 CMP R12,#+0 \ 00000090 0200000A BEQ ??OpenLogfile_6 7551 wsprintf(ws,"%s\\%u\\%u.txt", HIST_PATH, UIN, t->uin); \ 00000094 01002DE9 PUSH {R0} \ 00000098 241081E2 ADD R1,R1,#+36 \ 0000009C F6FFFFEA B ??OpenLogfile_5 7552 else 7553 wsprintf(ws,"%s\\%u.txt", HIST_PATH, t->uin); \ ??OpenLogfile_6: \ 000000A0 0030A0E1 MOV R3,R0 \ 000000A4 341081E2 ADD R1,R1,#+52 \ 000000A8 0400A0E1 MOV R0,R4 \ 000000AC 240100EF SWI +292 7554 } 7555 ExecuteFile(ws,NULL,NULL); \ ??OpenLogfile_4: \ 000000B0 0020A0E3 MOV R2,#+0 \ 000000B4 0010A0E3 MOV R1,#+0 \ 000000B8 0400A0E1 MOV R0,R4 \ 000000BC 940000EF SWI +148 7556 } 7557 FreeWS(ws); \ ??OpenLogfile_0: \ 000000C0 0400A0E1 MOV R0,R4 \ 000000C4 290100EF SWI +297 7558 GeneralFuncF1(1); \ 000000C8 0100A0E3 MOV R0,#+1 \ 000000CC 3B0100EF SWI +315 7559 } \ 000000D0 3080BDE8 POP {R4,R5,PC} ;; return \ ??OpenLogfile_1: \ 000000D4 ........ DC32 HISTORY_SAVE_TYPE \ 000000D8 ........ DC32 HISTORY_TYPE \ 000000DC ........ DC32 `?` \ 000000E0 ........ DC32 HIST_PATH 7560 \ In segment CODE, align 4, keep-with-next 7561 void ClearLog(GUI *data/*,void *dummy*/) 7562 { \ ClearLog: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 7563 EDITCONTROL ec; 7564 EDCHAT_STRUCT *ed_struct; 7565 WSHDR *ws; 7566 CLIST *t; 7567 7568 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 7569 7570 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 7571 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 7572 { 7573 ws=AllocWS(1); \ 00000030 0100A0E3 MOV R0,#+1 \ 00000034 250100EF SWI +293 \ 00000038 0050A0E1 MOV R5,R0 7574 CutWSTR(ws,0); \ 0000003C 0010A0E3 MOV R1,#+0 \ 00000040 260100EF SWI +294 7575 7576 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 7577 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 00000050 040094E5 LDR R0,[R4, #+4] \ 00000054 0510A0E1 MOV R1,R5 \ 00000058 810100EF SWI +385 7578 7579 FreeWS(ws); \ 0000005C 0500A0E1 MOV R0,R5 \ 00000060 290100EF SWI +297 7580 GeneralFuncF1(1); \ 00000064 1D0000EA B ??ClearLog_1 7581 } 7582 else 7583 { 7584 7585 if ((t=ed_struct->ed_contact)) \ ??ClearLog_0: \ 00000068 005094E5 LDR R5,[R4, #+0] \ 0000006C 000055E3 CMP R5,#+0 \ 00000070 1C00000A BEQ ??ClearLog_2 7586 { 7587 if (t->log) \ 00000074 900095E5 LDR R0,[R5, #+144] \ 00000078 0060A0E3 MOV R6,#+0 \ 0000007C 000050E3 CMP R0,#+0 \ 00000080 1200000A BEQ ??ClearLog_3 7588 { 7589 FreeLOGQ(&t->log); \ 00000084 900085E2 ADD R0,R5,#+144 \ 00000088 ........ BL FreeLOGQ 7590 t->msg_count=0; \ 0000008C A06085E5 STR R6,[R5, #+160] 7591 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 7592 { 7593 while(ed_struct->ed_answer!=2) 7594 { 7595 EDIT_RemoveEditControl(ed_struct->ed_chatgui,1); \ ??ClearLog_5: \ 000000AC 040094E5 LDR R0,[R4, #+4] \ 000000B0 0110A0E3 MOV R1,#+1 \ 000000B4 D10100EF SWI +465 7596 ed_struct->ed_answer--; \ 000000B8 080094E5 LDR R0,[R4, #+8] \ 000000BC 010040E2 SUB R0,R0,#+1 \ 000000C0 080084E5 STR R0,[R4, #+8] 7597 } \ ??ClearLog_4: \ 000000C4 080094E5 LDR R0,[R4, #+8] \ 000000C8 020050E3 CMP R0,#+2 \ 000000CC F6FFFF1A BNE ??ClearLog_5 7598 } 7599 } 7600 t->isactive=0; //by BoBa 18.06.07 \ ??ClearLog_3: \ 000000D0 9C6085E5 STR R6,[R5, #+156] 7601 RecountMenu(t,1); \ 000000D4 0110A0E3 MOV R1,#+1 \ 000000D8 0500A0E1 MOV R0,R5 \ 000000DC ........ BL RecountMenu 7602 GeneralFuncF1(1); \ ??ClearLog_1: \ 000000E0 0100A0E3 MOV R0,#+1 \ 000000E4 3B0100EF SWI +315 7603 } 7604 } 7605 } \ ??ClearLog_2: \ 000000E8 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 000000EC 7080BDE8 POP {R4-R6,PC} ;; return 7606 \ In segment CODE, align 4, keep-with-next 7607 void ecmenu_ghook(void *data, int cmd) 7608 { \ ecmenu_ghook: \ 00000000 00402DE9 PUSH {LR} 7609 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 7610 { 7611 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 7612 } 7613 } \ 00000010 0080BDE8 POP {PC} ;; return 7614 \ In segment DATA_C, align 4, align-sorted 7615 static const MENUITEM_DESC ecmenu_ITEMS[EC_MNU_MAX]= \ ecmenu_ITEMS: \ 00000000 00000000.... DC32 0H, `?` \ gipc: \ 00000074 DS8 12 \ 00000080 REQUIRE `?` \ tmr_gipc: \ 00000080 DS8 12 \ 0000008C REQUIRE `?` \ def_set: \ 0000008C DS8 316 \ 000001C8 REQUIRE `?` \ main_d: \ 000001C8 DS8 4 \ 000001CC REQUIRE `?` \ align: \ 000001CC DS8 4 \ 000001D0 REQUIRE `?` \ canvasdata: \ 000001D0 DS8 4 \ 000001D4 REQUIRE `?` \ paused_height: \ 000001D4 DS8 4 \ 000001D8 REQUIRE `?` \ wsBuffer: \ 000001D8 DS8 4 \ 000001DC REQUIRE `?` \ uins: \ 000001DC DS8 4 \ 000001E0 REQUIRE `?` \ saver_on: \ 000001E0 DS8 4 \ 000001E4 REQUIRE `?` \ Is_PING_On: \ 000001E4 DS8 4 \ 000001E8 REQUIRE `?` \ Is_SMARTCPU_On: \ 000001E8 DS8 4 \ 000001EC REQUIRE `?` \ Is_INC_On: \ 000001EC DS8 4 \ 000001F0 REQUIRE `?` \ Is_ILU_On: \ 000001F0 DS8 4 \ 000001F4 REQUIRE `?` \ Is_Double_Vibra_On: \ 000001F4 DS8 4 \ 000001F8 REQUIRE `?` \ total_unread2: \ 000001F8 DS8 4 \ 000001FC REQUIRE `?` \ maincsm_id: \ 000001FC DS8 4 \ 00000200 REQUIRE `?` \ maingui_id: \ 00000200 DS8 4 \ 00000204 REQUIRE `?` \ SENDMSGCOUNT: \ 00000204 DS8 4 \ 00000208 REQUIRE `?` \ IsActiveUp: \ 00000208 DS8 4 \ 0000020C REQUIRE `?` \ Is_Vibra_Enabled: \ 0000020C DS8 4 \ 00000210 REQUIRE `?` \ CurrentStatus: \ 00000210 DS8 4 \ 00000214 REQUIRE `?` \ CurrentXStatus: \ 00000214 DS8 4 \ 00000218 REQUIRE `?` \ ews: \ 00000218 DS8 4 \ 0000021C REQUIRE `?` \ msg_away_timer: \ 0000021C DS8 4 \ 00000220 REQUIRE `?` \ away_m: \ 00000220 DS8 4 \ 00000224 REQUIRE `?` \ status_rem: \ 00000224 DS8 4 \ 00000228 REQUIRE `?` \ change_back_status: \ 00000228 DS8 4 \ 0000022C REQUIRE `?` \ Show_XTX: \ 0000022C DS8 4 \ 00000230 REQUIRE `?` \ Is_UPTIME_On: \ 00000230 DS8 4 \ 00000234 REQUIRE `?` \ uptimeHour: \ 00000234 DS8 4 \ 00000238 REQUIRE `?` \ uptimeMin: \ 00000238 DS8 4 \ 0000023C REQUIRE `?` \ uptimeSec: \ 0000023C DS8 4 \ 00000240 REQUIRE `?` \ input_awaymsg_id: \ 00000240 DS8 4 \ 00000244 REQUIRE `?` \ silenthide: \ 00000244 DS8 4 \ 00000248 REQUIRE `?` \ disautorecconect: \ 00000248 DS8 4 \ 0000024C REQUIRE `?` \ Is_Sounds_Enabled: \ 0000024C DS8 4 \ 00000250 REQUIRE `?` \ Is_Show_Offline: \ 00000250 DS8 4 \ 00000254 REQUIRE `?` \ Is_Show_Groups: \ 00000254 DS8 4 \ 00000258 REQUIRE `?` \ CurrentPrivateStatus: \ 00000258 DS8 4 \ 0000025C REQUIRE `?` \ vibra_count: \ 0000025C DS8 4 \ 00000260 REQUIRE `?` \ templates_chars: \ 00000260 DS8 4 \ 00000264 REQUIRE `?` \ templates_lines: \ 00000264 DS8 4 \ 00000268 REQUIRE `?` \ RXstate: \ 00000268 DS8 4 \ 0000026C REQUIRE `?` \ connect_state: \ 0000026C DS8 4 \ 00000270 REQUIRE `?` \ sock: \ 00000270 DS8 4 \ 00000274 REQUIRE `?` \ TOTALRECEIVED: \ 00000274 DS8 4 \ 00000278 REQUIRE `?` \ TOTALSENDED: \ 00000278 DS8 4 \ 0000027C REQUIRE `?` \ ALLTOTALRECEIVED: \ 0000027C DS8 4 \ 00000280 REQUIRE `?` \ ALLTOTALSENDED: \ 00000280 DS8 4 \ 00000284 REQUIRE `?` \ sendq_l: \ 00000284 DS8 4 \ 00000288 REQUIRE `?` \ sendq_p: \ 00000288 DS8 4 \ 0000028C REQUIRE `?` \ is_gprs_online: \ 0000028C DS8 4 \ 00000290 REQUIRE `?` \ total_unread: \ 00000290 DS8 4 \ 00000294 REQUIRE `?` \ cltop: \ 00000294 DS8 4 \ 00000298 REQUIRE `?` \ GROUP_CACHE: \ 00000298 DS8 4 \ 0000029C REQUIRE `?` \ contactlist_menu_id: \ 0000029C DS8 4 \ 000002A0 REQUIRE `?` \ edchat_id: \ 000002A0 DS8 4 \ 000002A4 REQUIRE `?` \ 000002A4 DS8 4 \ 000002A8 REQUIRE `?` \ tenseconds_to_ping: \ 000002A8 DS8 4 \ 000002AC REQUIRE `?` \ on_off_timer: \ 000002AC DS8 4 \ 000002B0 REQUIRE `?` \ kopa_online: \ 000002B0 DS8 4 \ 000002B4 REQUIRE `?` \ kopa_kontaktu: \ 000002B4 DS8 4 \ 000002B8 REQUIRE `?` \ gui_methods2: \ 000002B8 DS8 96 \ 00000318 REQUIRE `?` \ old_redraw: \ 00000318 DS8 4 \ 0000031C REQUIRE `?` \ 0000031C DS8 4 \ 00000320 REQUIRE `?` \ 00000320 DS8 4 \ 00000324 REQUIRE `?` \ DNR_ID: \ 00000324 DS8 4 \ 00000328 REQUIRE `?` \ DNR_TRIES: \ 00000328 DS8 4 \ 0000032C REQUIRE `?` \ host_counter: \ 0000032C DS8 4 \ 00000330 REQUIRE `?` \ ping_time: \ 00000330 DS8 4 \ 00000334 REQUIRE `?` \ main_msg_timer2: \ 00000334 DS8 4 \ 00000338 REQUIRE `?` \ NEW_MSG: \ 00000338 DS8 4 \ 0000033C REQUIRE `?` \ time_to_stop_t9: \ 0000033C DS8 4 \ 00000340 REQUIRE `?` \ comanda: \ 00000340 DS8 4 \ 00000344 REQUIRE `?` \ INC_show: \ 00000344 DS8 4 \ 00000348 REQUIRE `?` \ INC_show2: \ 00000348 DS8 4 \ 0000034C REQUIRE `?` \ itemFromDisp: \ 0000034C DS8 4 \ 00000350 REQUIRE `?` \ totalItems: \ 00000350 DS8 4 \ 00000354 REQUIRE `?` \ curpos: \ 00000354 DS8 4 \ 00000358 REQUIRE `?` \ curpage: \ 00000358 DS8 4 \ 0000035C REQUIRE `?` \ USE_ADD_UIN: \ 0000035C DS8 4 \ 00000360 REQUIRE `?` \ old_ed_redraw: \ 00000360 DS8 4 \ 00000364 REQUIRE `?` \ 00000364 DS8 64 \ 000003A4 REQUIRE `?` \ elf_path: \ 000003A4 DS8 256 \ 000004A4 REQUIRE `?` \ ContactT9Key: \ 000004A4 DS8 32 \ 000004C4 REQUIRE `?` \ talk_sound: \ 000004C4 DS8 128 \ 00000544 REQUIRE `?` \ unread_msg_info: \ 00000544 DS8 64 \ 00000584 REQUIRE `?` \ last_msg_buffer: \ 00000584 DS8 4096 \ 00001584 REQUIRE `?` \ ping_tmr: \ 00001584 DS8 16 \ 00001594 REQUIRE `?` \ PINGO: \ 00001594 DS8 256 \ 00001694 REQUIRE `?` \ away_msg: \ 00001694 DS8 264 \ 0000179C REQUIRE `?` \ away_msg_time: \ 0000179C DS8 64 \ 000017DC REQUIRE `?` \ away_msg_time_dace: \ 000017DC DS8 16 \ 000017EC REQUIRE `?` \ tim_zone: \ 000017EC DS8 16 \ 000017FC REQUIRE `?` \ away_tmr: \ 000017FC DS8 16 \ 0000180C REQUIRE `?` \ autoChangeStatus: \ 0000180C DS8 16 \ 0000181C REQUIRE `?` \ remind_tmr: \ 0000181C DS8 16 \ 0000182C REQUIRE `?` \ uptime_tmr: \ 0000182C DS8 16 \ 0000183C REQUIRE `?` \ onlineTime: \ 0000183C DS8 128 \ 000018BC REQUIRE `?` \ logmsg: \ 000018BC DS8 256 \ 000019BC REQUIRE `?` \ tmr_illumination: \ 000019BC DS8 16 \ 000019CC REQUIRE `?` \ tmr_vibra: \ 000019CC DS8 16 \ 000019DC REQUIRE `?` \ reconnect_tmr: \ 000019DC DS8 16 \ 000019EC REQUIRE `?` \ tmr_active: \ 000019EC DS8 16 \ 000019FC REQUIRE `?` \ clm_hdr_text: \ 000019FC DS8 64 \ 00001A3C REQUIRE `?` \ clmenu_sk_r: \ 00001A3C DS8 16 \ 00001A4C REQUIRE `?` \ on_off_buf: \ 00001A4C DS8 128 \ 00001ACC REQUIRE `?` \ status: \ 00001ACC DS8 64 \ 00001B0C REQUIRE `?` \ hostbuf2: \ 00001B0C DS8 128 \ 00001B8C REQUIRE `?` \ hostname: \ 00001B8C DS8 128 \ 00001C0C REQUIRE `?` \ send_tmr: \ 00001C0C DS8 16 \ 00001C1C REQUIRE `?` \ I_UIN: \ 00001C1C DS8 12 \ 00001C28 REQUIRE `?` \ a_txt: \ 00001C28 DS8 48 \ 00001C58 REQUIRE `?` \ s_txt: \ 00001C58 DS8 48 \ 00001C88 REQUIRE `?` \ d_txt: \ 00001C88 DS8 48 \ 00001CB8 REQUIRE `?` \ f_txt: \ 00001CB8 DS8 48 \ 00001CE8 REQUIRE `?` \ g_txt: \ 00001CE8 DS8 48 \ 00001D18 REQUIRE `?` \ develop: \ 00001D18 DS8 16 \ 00001D28 REQUIRE `?` \ requests1: \ 00001D28 DS8 24 \ 00001D40 REQUIRE `?` \ requests2: \ 00001D40 DS8 20 \ 00001D54 REQUIRE `?` \ requests3: \ 00001D54 DS8 24 \ 00001D6C REQUIRE `?` \ requests4: \ 00001D6C DS8 20 \ 00001D80 REQUIRE `?` \ requests6: \ 00001D80 DS8 24 \ 00001D98 REQUIRE `?` \ mod_info: \ 00001D98 DS8 264 \ 00001EA0 REQUIRE `?` \ show_nick: \ 00001EA0 DS8 32 \ 00001EC0 REQUIRE `?` \ onContact: \ 00001EC0 DS8 64 \ 00001F00 REQUIRE `?` \ incs2: \ 00001F00 DS8 16 \ 00001F10 REQUIRE `?` \ tm22: \ 00001F10 DS8 16 \ 00001F20 REQUIRE `?` \ clrWhite: \ 00001F20 DS8 4 \ 00001F24 REQUIRE `?` \ MAINCSM: \ 00001F24 DS8 44 \ 00001F50 REQUIRE `?` 7630 { 7631 Quote, 7632 Quote2, 7633 AddSmile, 7634 GetShortInfo, 7635 AddCurContact, 7636 SendAuthReq, 7637 SendAuthGrant, 7638 OpenLogfile, 7639 ClearLog, 7640 }; 7641 7642 char ecm_contactname[64]; \ ecm_contactname: \ 00001F50 DS8 64 \ 00001F90 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 `?` \ In segment DATA_I, align 4, align-sorted \ prozr: \ 00000000 DS8 4 \ 00000004 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ icon_array: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` \ 00000008 DS8 4 \ 0000000C REQUIRE `?` \ 0000000C DS8 16 \ 0000001C REQUIRE `?` \ cont_hdr: \ 0000001C DS8 64 \ 0000005C REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ CmdMenuHeader: \ 00000000 DS8 20 \ 00000014 REQUIRE `?` \ cmd_chars: \ 00000014 DS8 4 \ 00000018 REQUIRE `?` \ cmd_lines: \ 00000018 DS8 4 \ 0000001C REQUIRE `?` \ NumOfItems: \ 0000001C DS8 4 \ 00000020 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ clrBlack: \ 00000000 DS8 4 \ 00000004 REQUIRE `?` 7643 \ In segment DATA_C, align 4, align-sorted 7644 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, 32767 \ ....FF7F0000 \ 00000014 080000000000 DC32 8, 0H, ecmenu_ghook, 0H, menusoftkeys, menu_skt, 0, 0H \ 0000........ \ 00000000.... \ ............ \ 000000000000 \ 0000 \ 00000034 ............ DC32 ecmenu_ITEMS, ecmenu_HNDLS, 9 \ ....09000000 7645 7646 static const MENU_DESC ecmenu_STRUCT= 7647 { 7648 8,NULL,ecmenu_ghook,NULL, 7649 menusoftkeys, 7650 &menu_skt, 7651 0, 7652 NULL, 7653 ecmenu_ITEMS, 7654 ecmenu_HNDLS, 7655 EC_MNU_MAX 7656 }; 7657 \ In segment CODE, align 4, keep-with-next 7658 void ec_menu(EDCHAT_STRUCT *ed_struct) 7659 { \ ec_menu: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 28D04DE2 SUB SP,SP,#+40 \ 00000008 0040A0E1 MOV R4,R0 7660 CLIST *t; 7661 int to_remove[EC_MNU_MAX+1]; 7662 int remove=0; 7663 if ((t=ed_struct->ed_contact)) \ 0000000C 001094E5 LDR R1,[R4, #+0] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 4800000A BEQ ??ec_menu_0 7664 { 7665 if (t->name) \ 00000018 ........ LDR R5,??DataTable305 ;; S_ICONS \ 0000001C 5000A0E3 MOV R0,#+80 \ 00000020 7C0D80E3 ORR R0,R0,#0x1F00 \ 00000024 050080E0 ADD R0,R0,R5 \ 00000028 142091E2 ADDS R2,R1,#+20 \ 0000002C 0300000A BEQ ??ec_menu_1 7666 { 7667 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 7668 } 7669 else 7670 { 7671 sprintf(ecm_contactname,"%u",t->uin); \ ??ec_menu_1: \ 00000040 0C2091E5 LDR R2,[R1, #+12] \ 00000044 3E1F8FE2 ADR R1,??ec_menu_3 ;; "%u" \ 00000048 160000EF SWI +22 7672 } 7673 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ ??ec_menu_2: \ 0000004C 040094E5 LDR R0,[R4, #+4] \ 00000050 820100EF SWI +386 \ 00000054 082094E5 LDR R2,[R4, #+8] \ 00000058 0210A0E3 MOV R1,#+2 \ 0000005C 020050E1 CMP R0,R2 \ 00000060 0500001A BNE ??ec_menu_4 7674 { 7675 to_remove[++remove]=0; \ 00000064 0020A0E3 MOV R2,#+0 \ 00000068 04208DE5 STR R2,[SP, #+4] 7676 to_remove[++remove]=1; \ 0000006C 0260A0E3 MOV R6,#+2 \ 00000070 0120A0E3 MOV R2,#+1 \ 00000074 08208DE5 STR R2,[SP, #+8] \ 00000078 010000EA B ??ec_menu_5 7677 } 7678 else 7679 { 7680 // to_remove[++remove]=1; 7681 to_remove[++remove]=2; \ ??ec_menu_4: \ 0000007C 0160A0E3 MOV R6,#+1 \ 00000080 04108DE5 STR R1,[SP, #+4] 7682 } 7683 7684 if (ed_struct->ed_answer<=2) \ ??ec_menu_5: \ 00000084 080094E5 LDR R0,[R4, #+8] \ 00000088 030050E3 CMP R0,#+3 \ 0000008C 030000AA BGE ??ec_menu_6 7685 to_remove[++remove]=7; \ 00000090 016086E2 ADD R6,R6,#+1 \ 00000094 0D00A0E1 MOV R0,SP \ 00000098 0720A0E3 MOV R2,#+7 \ 0000009C 062180E7 STR R2,[R0, +R6, LSL #+2] 7686 7687 if (!ed_struct->ed_contact || connect_state!=3) \ ??ec_menu_6: \ 000000A0 000094E5 LDR R0,[R4, #+0] \ 000000A4 000050E3 CMP R0,#+0 \ 000000A8 0200000A BEQ ??ec_menu_7 \ 000000AC 6C0295E5 LDR R0,[R5, #+620] \ 000000B0 030050E3 CMP R0,#+3 \ 000000B4 1000000A BEQ ??ec_menu_8 7688 { 7689 to_remove[++remove]=2; \ ??ec_menu_7: \ 000000B8 010086E2 ADD R0,R6,#+1 \ 000000BC 0D20A0E1 MOV R2,SP \ 000000C0 001182E7 STR R1,[R2, +R0, LSL #+2] 7690 to_remove[++remove]=3; \ 000000C4 010080E2 ADD R0,R0,#+1 \ 000000C8 0D10A0E1 MOV R1,SP \ 000000CC 0320A0E3 MOV R2,#+3 \ 000000D0 002181E7 STR R2,[R1, +R0, LSL #+2] 7691 to_remove[++remove]=4; \ 000000D4 010080E2 ADD R0,R0,#+1 \ 000000D8 0420A0E3 MOV R2,#+4 \ 000000DC 002181E7 STR R2,[R1, +R0, LSL #+2] 7692 to_remove[++remove]=5; \ 000000E0 010080E2 ADD R0,R0,#+1 \ 000000E4 0520A0E3 MOV R2,#+5 \ 000000E8 002181E7 STR R2,[R1, +R0, LSL #+2] 7693 to_remove[++remove]=6; \ 000000EC 016080E2 ADD R6,R0,#+1 \ 000000F0 0D00A0E1 MOV R0,SP \ 000000F4 0610A0E3 MOV R1,#+6 \ 000000F8 061180E7 STR R1,[R0, +R6, LSL #+2] 7694 } 7695 7696 patch_header(&ecmenu_HDR); \ ??ec_menu_8: \ 000000FC 44509FE5 LDR R5,??ec_menu_3+0x4 ;; ecmenu_HDR \ 00000100 0500A0E1 MOV R0,R5 \ 00000104 ........ _BLF patch_header,??patch_header??rA 7697 to_remove[0]=remove; \ 00000108 00608DE5 STR R6,[SP, #+0] 7698 CreateMenu(0,0,&ecmenu_STRUCT,&ecmenu_HDR,0,EC_MNU_MAX,ed_struct,to_remove); \ 0000010C 0D00A0E1 MOV R0,SP \ 00000110 01002DE9 PUSH {R0} \ 00000114 10002DE9 PUSH {R4} \ 00000118 0530A0E1 MOV R3,R5 \ 0000011C 0900A0E3 MOV R0,#+9 \ 00000120 01002DE9 PUSH {R0} \ 00000124 142085E2 ADD R2,R5,#+20 \ 00000128 0010A0E3 MOV R1,#+0 \ 0000012C 0000A0E3 MOV R0,#+0 \ 00000130 01002DE9 PUSH {R0} \ 00000134 520100EF SWI +338 \ 00000138 10D08DE2 ADD SP,SP,#+16 7699 } 7700 } \ ??ec_menu_0: \ 0000013C 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning \ 00000140 7080BDE8 POP {R4-R6,PC} ;; return \ ??ec_menu_3: \ 00000144 25750000 DC8 "%u",+0 \ 00000148 ........ DC32 ecmenu_HDR 7701 7702 \ In segment CODE, align 4, keep-with-next 7703 void AskNickAndAddContact(EDCHAT_STRUCT *ed_struct) 7704 { 7705 CreateAddContactGrpDialog(ed_struct->ed_contact); \ AskNickAndAddContact: \ 00000000 000090E5 LDR R0,[R0, #+0] \ 00000004 ........ _BF CreateAddContactGrpDialog,??CreateAddContactGrpDialog??rA ;; tailcall 7706 } 7707 \ In segment CODE, align 4, keep-with-next 7708 void AddSmile(GUI *data) 7709 { \ AddSmile: \ 00000000 00402DE9 PUSH {LR} 7710 EDCHAT_STRUCT *ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 7711 CreateSmileSelectGUI(ed_struct); \ 00000008 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA 7712 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 7713 } \ 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 \ ??DataTable5: \ 00000000 ........ DC32 Auto_Status \ In segment CODE, align 4, keep-with-next \ ??DataTable12: \ 00000000 ........ DC32 Remind_Timer2 \ 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 \ ??DataTable22: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable24: \ 00000000 ........ DC32 AUTO_ENGADE \ In segment CODE, align 4, keep-with-next \ ??DataTable25: \ 00000000 ........ DC32 awayMsg \ In segment CODE, align 4, keep-with-next \ ??DataTable28: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable33: \ 00000000 ........ DC32 def_setting \ In segment CODE, align 4, keep-with-next \ ??DataTable34: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable36: \ 00000000 ........ DC32 ind_set_xstatus \ In segment CODE, align 4, keep-with-next \ ??DataTable42: \ 00000000 ........ DC32 vibraPower \ In segment CODE, align 4, keep-with-next \ ??DataTable45: \ 00000000 ........ DC32 VIBR_TYPE \ In segment CODE, align 4, keep-with-next \ ??DataTable51: \ 00000000 ........ DC32 S_ICONS + 660 \ In segment CODE, align 4, keep-with-next \ ??DataTable52: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable53: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable54: \ 00000000 ........ DC32 ICON_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable55: \ 00000000 ........ DC32 fonto \ In segment CODE, align 4, keep-with-next \ ??DataTable63: \ 00000000 ........ DC32 TIME_OR_MSG \ In segment CODE, align 4, keep-with-next \ ??DataTable64: \ 00000000 ........ DC32 XStatusesImgList \ In segment CODE, align 4, keep-with-next \ ??DataTable69: \ 00000000 ........ DC32 icon_array + 8 \ In segment CODE, align 4, keep-with-next \ ??DataTable72: \ 00000000 ........ DC32 icon_array \ In segment CODE, align 4, keep-with-next \ ??DataTable73: \ 00000000 ........ DC32 WriteDefSettings \ In segment CODE, align 4, keep-with-next \ ??DataTable74: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable75: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable76: \ 00000000 ........ DC32 AUTO_ENGADE \ In segment CODE, align 4, keep-with-next \ ??DataTable77: \ 00000000 ........ DC32 suc_config_name \ In segment CODE, align 4, keep-with-next \ ??DataTable78: \ 00000000 ........ DC32 suc_config_name_mod \ In segment CODE, align 4, keep-with-next \ ??DataTable79: \ 00000000 ........ DC32 janis \ In segment CODE, align 4, keep-with-next \ ??DataTable80: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable82: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable84: \ 00000000 ........ DC32 S_ICONS + 660 \ In segment CODE, align 4, keep-with-next \ ??DataTable86: \ 00000000 ........ DC32 isLogStatusChange \ In segment CODE, align 4, keep-with-next \ ??DataTable87: \ 00000000 ........ DC32 total_xstatuses \ In segment CODE, align 4, keep-with-next \ ??DataTable88: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable90: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable91: \ 00000000 ........ DC32 do_reconnect \ In segment CODE, align 4, keep-with-next \ ??DataTable92: \ 00000000 ........ DC32 RECONNECT_TIME \ In segment CODE, align 4, keep-with-next \ ??DataTable94: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable99: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable100: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable102: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable103: \ 00000000 ........ DC32 ignor_list \ In segment CODE, align 4, keep-with-next \ ??DataTable104: \ 00000000 ........ DC32 extended_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable105: \ 00000000 ........ DC32 automsgcount \ In segment CODE, align 4, keep-with-next \ ??DataTable106: \ 00000000 ........ DC32 janis \ In segment CODE, align 4, keep-with-next \ ??DataTable107: \ 00000000 ........ DC32 main_count \ In segment CODE, align 4, keep-with-next \ ??DataTable109: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable110: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable112: \ 00000000 ........ DC32 O_ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable113: \ 00000000 ........ DC32 X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable114: \ 00000000 ........ DC32 O_X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable124: \ 00000000 ........ DC32 O_ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable125: \ 00000000 ........ DC32 ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable126: \ 00000000 ........ DC32 ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable128: \ 00000000 ........ DC32 ACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable129: \ 00000000 ........ DC32 O_TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable130: \ 00000000 ........ DC32 O_I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable131: \ 00000000 ........ DC32 TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable132: \ 00000000 ........ DC32 I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable133: \ 00000000 ........ DC32 UNACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable134: \ 00000000 ........ DC32 O_ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable135: \ 00000000 ........ DC32 ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable140: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable143: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable145: \ 00000000 ........ DC32 CmdMenuHeader \ In segment CODE, align 4, keep-with-next \ ??DataTable146: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable147: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable149: \ 00000000 ........ DC32 I_str \ In segment CODE, align 4, keep-with-next \ ??DataTable152: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable153: \ 00000000 ........ DC32 main_count \ In segment CODE, align 4, keep-with-next \ ??DataTable154: \ 00000000 ........ DC32 main2_count \ In segment CODE, align 4, keep-with-next \ ??DataTable155: \ 00000000 ........ DC32 ignor_list \ In segment CODE, align 4, keep-with-next \ ??DataTable156: \ 00000000 ........ DC32 automsgcount \ In segment CODE, align 4, keep-with-next \ ??DataTable157: \ 00000000 ........ DC32 awayMsg \ In segment CODE, align 4, keep-with-next \ ??DataTable162: \ 00000000 ........ DC32 PopupFont \ In segment CODE, align 4, keep-with-next \ ??DataTable163: \ 00000000 ........ DC32 PopupBGCl \ In segment CODE, align 4, keep-with-next \ ??DataTable165: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable168: \ 00000000 ........ DC32 VIBR_ON_CONNECT \ In segment CODE, align 4, keep-with-next \ ??DataTable169: \ 00000000 ........ DC32 isLogStatusChange \ In segment CODE, align 4, keep-with-next \ ??DataTable170: \ 00000000 ........ DC32 extended_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable171: \ 00000000 ........ DC32 TIME_OR_MSG \ In segment CODE, align 4, keep-with-next \ ??DataTable172: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable173: \ 00000000 ........ DC32 automsgcount \ In segment CODE, align 4, keep-with-next \ ??DataTable174: \ 00000000 ........ DC32 VIBR_TYPE \ In segment CODE, align 4, keep-with-next \ ??DataTable176: \ 00000000 ........ DC32 SHOW_ACTIVE \ In segment CODE, align 4, keep-with-next \ ??DataTable177: \ 00000000 ........ DC32 main_count \ In segment CODE, align 4, keep-with-next \ ??DataTable184: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable186: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable188: \ 00000000 ........ DC32 addonuin \ In segment CODE, align 4, keep-with-next \ ??DataTable192: \ 00000000 ........ DC32 PASS \ In segment CODE, align 4, keep-with-next \ ??DataTable195: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable197: \ 00000000 ........ DC32 total_xstatuses \ In segment CODE, align 4, keep-with-next \ ??DataTable200: \ 00000000 ........ DC32 IsInvertSoftKey \ In segment CODE, align 4, keep-with-next \ ??DataTable202: \ 00000000 ........ DC32 WriteDefSettings \ In segment CODE, align 4, keep-with-next \ ??DataTable206: \ 00000000 ........ DC32 process_active_timer \ In segment CODE, align 4, keep-with-next \ ??DataTable207: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable209: \ 00000000 ........ DC32 my_keyhook \ In segment CODE, align 4, keep-with-next \ ??DataTable210: \ 00000000 ........ DC32 end_socket \ In segment CODE, align 4, keep-with-next \ ??DataTable212: \ 00000000 ........ DC32 ElfKiller \ In segment CODE, align 4, keep-with-next \ ??DataTable214: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable215: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable216: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable217: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable222: \ 00000000 ........ DC32 XStatusesImgList \ In segment CODE, align 4, keep-with-next \ ??DataTable223: \ 00000000 ........ DC32 Auto_Status \ In segment CODE, align 4, keep-with-next \ ??DataTable224: \ 00000000 ........ DC32 showAwayIdle \ In segment CODE, align 4, keep-with-next \ ??DataTable225: \ 00000000 ........ DC32 spaco1 \ In segment CODE, align 4, keep-with-next \ ??DataTable227: \ 00000000 ........ DC32 suc_config_name_mod \ In segment CODE, align 4, keep-with-next \ ??DataTable231: \ 00000000 ........ DC32 RECONNECT_TIME \ In segment CODE, align 4, keep-with-next \ ??DataTable232: \ 00000000 ........ DC32 do_reconnect \ In segment CODE, align 4, keep-with-next \ ??DataTable233: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable234: \ 00000000 ........ DC32 VIBR_ON_CONNECT \ In segment CODE, align 4, keep-with-next \ ??DataTable237: \ 00000000 ........ DC32 PASS \ In segment CODE, align 4, keep-with-next \ ??DataTable238: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable240: \ 00000000 ........ DC32 ClearSendQ \ In segment CODE, align 4, keep-with-next \ ??DataTable243: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable244: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable245: \ 00000000 ........ DC32 suc_config_name \ In segment CODE, align 4, keep-with-next \ ??DataTable246: \ 00000000 ........ DC32 ElfKiller \ In segment CODE, align 4, keep-with-next \ ??DataTable247: \ 00000000 ........ DC32 fontpath \ In segment CODE, align 4, keep-with-next \ ??DataTable248: \ 00000000 ........ DC32 bgrColor \ In segment CODE, align 4, keep-with-next \ ??DataTable249: \ 00000000 ........ DC32 fontColor \ In segment CODE, align 4, keep-with-next \ ??DataTable250: \ 00000000 ........ DC32 fonto \ In segment CODE, align 4, keep-with-next \ ??DataTable251: \ 00000000 ........ DC32 Pinger2 \ In segment CODE, align 4, keep-with-next \ ??DataTable252: \ 00000000 ........ DC32 my_keyhook \ In segment CODE, align 4, keep-with-next \ ??DataTable254: \ 00000000 ........ DC32 S_ICONS + 660 \ In segment CODE, align 4, keep-with-next \ ??DataTable256: \ 00000000 ........ DC32 IsMultiBuffer \ In segment CODE, align 4, keep-with-next \ ??DataTable258: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable259: \ 00000000 ........ DC32 end_socket \ In segment CODE, align 4, keep-with-next \ ??DataTable260: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable261: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable263: \ 00000000 ........ DC32 SHOW_ACTIVE \ In segment CODE, align 4, keep-with-next \ ??DataTable266: \ 00000000 ........ DC32 main2_count \ In segment CODE, align 4, keep-with-next \ ??DataTable267: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable268: \ 00000000 ........ DC32 IsMultiBuffer \ In segment CODE, align 4, keep-with-next \ ??DataTable270: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable271: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable272: \ 00000000 ........ DC32 ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable273: \ 00000000 ........ DC32 I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable274: \ 00000000 ........ DC32 ACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable275: \ 00000000 ........ DC32 O_I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable278: \ 00000000 ........ DC32 O_TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable279: \ 00000000 ........ DC32 O_ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable282: \ 00000000 ........ DC32 TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable283: \ 00000000 ........ DC32 UNACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable286: \ 00000000 ........ DC32 O_ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable288: \ 00000000 ........ DC32 O_X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable289: \ 00000000 ........ DC32 X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable290: \ 00000000 ........ DC32 O_ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable291: \ 00000000 ........ DC32 ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable293: \ 00000000 ........ DC32 ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable299: \ 00000000 ........ DC32 I_str \ In segment CODE, align 4, keep-with-next \ ??DataTable300: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable301: \ 00000000 ........ DC32 S_ICONS + 620 \ In segment CODE, align 4, keep-with-next \ ??DataTable302: \ 00000000 ........ DC32 I_str \ In segment CODE, align 4, keep-with-next \ ??DataTable303: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable304: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable305: \ 00000000 ........ DC32 S_ICONS \ 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 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 00000080 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 0000008C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000009C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000010C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000011C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000012C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000013C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000014C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000015C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000016C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000017C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000018C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000019C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 000001C8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001CC 00000000 DC32 0 \ `?`: \ 000001D0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001D4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001D8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001DC 00000000 DC8 0, 0, 0, 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 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001F8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000001FC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000200 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000204 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000208 00000000 DC32 0 \ `?`: \ 0000020C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000210 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000214 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000218 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000021C 00000000 DC32 0 \ `?`: \ 00000220 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000224 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000228 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000022C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000230 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000234 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000238 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000023C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000240 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000244 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000248 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000024C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000250 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000254 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000258 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000025C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000260 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000264 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000268 F6FFFFFF DC32 -10 \ `?`: \ 0000026C 00000000 DC32 0 \ `?`: \ 00000270 FFFFFFFF DC32 -1 \ `?`: \ 00000274 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000278 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000027C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000280 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000284 00000000 DC32 0 \ `?`: \ 00000288 00000000 DC32 0H \ `?`: \ 0000028C 01000000 DC32 1 \ `?`: \ 00000290 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000294 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000298 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000029C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002A0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002A4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002A8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002AC 00000000 DC32 0 \ `?`: \ 000002B0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002B4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000002F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000308 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000318 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000031C 01000000 DC32 1 \ `?`: \ 00000320 01000000 DC32 1 \ `?`: \ 00000324 00000000 DC32 0 \ `?`: \ 00000328 03000000 DC32 3 \ `?`: \ 0000032C 00000000 DC32 0 \ `?`: \ 00000330 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000334 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000338 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000033C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000340 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000344 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000348 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000034C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000350 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000354 00000000 DC32 0 \ `?`: \ 00000358 01000000 DC32 1 \ `?`: \ 0000035C 00000000 DC32 0 \ `?`: \ 00000360 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000364 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000374 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000384 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000394 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000003A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000003F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000404 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000414 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000424 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000434 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000444 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000454 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000464 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000474 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000484 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000494 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000004A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000004C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000504 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000514 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000524 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000534 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000544 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000554 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000564 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000574 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000584 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000594 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000604 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000614 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000624 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000634 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000644 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000654 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000664 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000674 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000684 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000694 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000704 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000714 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000724 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000734 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000744 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000754 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000764 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000774 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000784 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000794 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000804 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000814 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000824 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000834 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000844 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000854 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000864 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000874 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000884 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000894 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000904 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000914 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000924 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000934 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000944 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000954 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000964 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000974 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000984 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000994 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A04 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A14 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A24 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A34 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A44 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A54 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A64 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A74 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A84 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A94 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AA4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AB4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AC4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AD4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AE4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AF4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B04 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B14 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B24 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B34 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B44 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B54 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B64 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B74 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B84 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B94 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BA4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BB4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BC4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BD4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BE4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BF4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C04 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C14 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C24 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C34 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C44 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C54 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C64 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C74 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C84 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C94 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CA4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CB4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CC4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CD4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CE4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CF4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D04 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D14 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D24 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D34 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D44 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D54 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D64 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D74 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D84 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D94 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DA4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DB4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DC4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DD4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DE4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DF4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E04 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E14 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E24 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E34 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E44 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E54 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E64 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E74 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E84 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E94 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EA4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EB4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EC4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000ED4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EE4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EF4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F04 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F14 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F24 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F34 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F44 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F54 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F64 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F74 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F84 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F94 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FA4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FB4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FC4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FD4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FE4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FF4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001004 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001014 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001024 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001034 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001044 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001054 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001064 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001074 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001084 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001094 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001104 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001114 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001124 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001134 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001144 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001154 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001164 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001174 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001184 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001194 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001204 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001214 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001224 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001234 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001244 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001254 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001264 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001274 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001284 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001294 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001304 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001314 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001324 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001334 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001344 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001354 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001364 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001374 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001384 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001394 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001404 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001414 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001424 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001434 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001444 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001454 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001464 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001474 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001484 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001494 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001504 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001514 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001524 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001534 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001544 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001554 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001564 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001574 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001584 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001594 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 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 \ 0000 \ `?`: \ 0000179C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000017DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000017EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000017FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000180C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000181C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000182C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000183C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000184C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000185C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000186C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000187C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000188C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000189C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000018BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000190C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000191C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000192C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000193C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000194C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000195C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000196C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000197C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000198C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000199C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019AC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000019BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000019CC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000019DC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000019EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000019FC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001A3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001A4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001ABC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001ACC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001ADC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001B0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001B8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BBC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BCC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BDC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001C0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001C1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 00001C28 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 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 \ 00001C98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CA8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001CB8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CC8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CD8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001CE8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CF8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001D18 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001D28 53656E64696E DC8 "Sending online time..." \ 67206F6E6C69 \ 6E652074696D \ 652E2E2E00 \ 00001D3F 00 DC8 0 \ `?`: \ 00001D40 53656E64696E DC8 "Sending msg info..." \ 67206D736720 \ 696E666F2E2E \ 2E00 \ `?`: \ 00001D54 53656E64696E DC8 "Sending battery info..." \ 672062617474 \ 65727920696E \ 666F2E2E2E00 \ `?`: \ 00001D6C 53656E64696E DC8 "Sending mod info..." \ 67206D6F6420 \ 696E666F2E2E \ 2E00 \ `?`: \ 00001D80 53656E64696E DC8 "Sending offline info..." \ 67206F66666C \ 696E6520696E \ 666F2E2E2E00 \ `?`: \ 00001D98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DA8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DB8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DC8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DD8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DE8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DF8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E18 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E28 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E38 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E48 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E58 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E68 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E78 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E88 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 00001EA0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EB0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001EC0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001ED0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EE0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EF0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001F00 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001F10 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001F20 FFFFFF64 DC8 255, 255, 255, 100 \ `?`: \ 00001F24 ............ DC32 maincsm_onmessage, maincsm_oncreate, maincsm_onclose, 44, 1 \ ............ \ 2C0000000100 \ 0000 \ 00001F38 ............ DC32 minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ ....CCCCAA55 \ 55AA33330000 \ 0000 \ 00001F4C 8B00 DC16 139 \ 00001F4E 0000 DC8 0, 0 \ `?`: \ 00001F50 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F60 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F70 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F80 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_ID, align 4, align-sorted \ `?`: \ 00000000 00000064 DC8 0, 0, 0, 100 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 00000008 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000000C ............ DC32 ChangeVibraContact, ChangeSoundContact, ChangeAutoMsg \ ............ \ 00000018 ........ DC32 ChangeShowXstatus \ `?`: \ 0000001C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000002C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000003C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000004C 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 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 000000000000 DC32 0H, 0, 32767 \ 0000FF7F0000 \ `?`: \ 00000014 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000018 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000001C 00000000 DC32 0 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 00000064 DC8 0, 0, 0, 100 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 474D54202D30 DC8 "GMT -02:00" \ 323A303000 \ 0000000B 00 DC8 0 \ 0000000C 474D54202D30 DC8 "GMT -01:00" \ 313A303000 \ 00000017 00 DC8 0 \ 00000018 474D54203030 DC8 "GMT 00:00" \ 3A303000 \ 00000022 0000 DC8 0, 0 \ 00000024 474D54202B30 DC8 "GMT +01:00" \ 313A303000 \ 0000002F 00 DC8 0 \ 00000030 474D54202B30 DC8 "GMT +02:00" \ 323A303000 \ 0000003B 00 DC8 0 \ 0000003C 474D54202B30 DC8 "GMT +03:00" \ 333A303000 \ 00000047 00 DC8 0 \ 00000048 474D54202B30 DC8 "GMT +03:30" \ 333A333000 \ 00000053 00 DC8 0 \ 00000054 474D54202B30 DC8 "GMT +04:00" \ 343A303000 \ 0000005F 00 DC8 0 \ 00000060 474D54202B30 DC8 "GMT +04:30" \ 343A333000 \ 0000006B 00 DC8 0 \ 0000006C 474D54202B30 DC8 "GMT +05:00" \ 353A303000 \ 00000077 00 DC8 0 \ 00000078 474D54202B30 DC8 "GMT +05:30" \ 353A333000 \ 00000083 00 DC8 0 \ 00000084 474D54202B30 DC8 "GMT +05:45" \ 353A343500 \ 0000008F 00 DC8 0 \ 00000090 474D54202B30 DC8 "GMT +06:00" \ 363A303000 \ 0000009B 00 DC8 0 \ 0000009C 474D54202B30 DC8 "GMT +06:30" \ 363A333000 \ 000000A7 00 DC8 0 \ 000000A8 474D54202B30 DC8 "GMT +07:00" \ 373A303000 \ 000000B3 00 DC8 0 \ 000000B4 474D54202B30 DC8 "GMT +08:00" \ 383A303000 \ 000000BF 00 DC8 0 \ 000000C0 474D54202B30 DC8 "GMT +09:00" \ 393A303000 \ 000000CB 00 DC8 0 \ 000000CC 474D54202B30 DC8 "GMT +09:30" \ 393A333000 \ 000000D7 00 DC8 0 \ 000000D8 474D54202B31 DC8 "GMT +10:00" \ 303A303000 \ 000000E3 00 DC8 0 \ 000000E4 474D54202B31 DC8 "GMT +11:00" \ 313A303000 \ 000000EF 00 DC8 0 \ 000000F0 474D54202B31 DC8 "GMT +12:00" \ 323A303000 \ 000000FB 00 DC8 0 \ 000000FC 474D54202B31 DC8 "GMT +13:00" \ 333A303000 \ 00000107 00 DC8 0 \ 00000108 474D54202D31 DC8 "GMT -12:00" \ 323A303000 \ 00000113 00 DC8 0 \ 00000114 474D54202D31 DC8 "GMT -11:00" \ 313A303000 \ 0000011F 00 DC8 0 \ 00000120 474D54202D31 DC8 "GMT -10:00" \ 303A303000 \ 0000012B 00 DC8 0 \ 0000012C 474D54202D30 DC8 "GMT -09:00" \ 393A303000 \ 00000137 00 DC8 0 \ 00000138 474D54202D30 DC8 "GMT -08:00" \ 383A303000 \ 00000143 00 DC8 0 \ 00000144 474D54202D30 DC8 "GMT -07:00" \ 373A303000 \ 0000014F 00 DC8 0 \ 00000150 474D54202D30 DC8 "GMT -06:00" \ 363A303000 \ 0000015B 00 DC8 0 \ 0000015C 474D54202D30 DC8 "GMT -05:00" \ 353A303000 \ 00000167 00 DC8 0 \ 00000168 474D54202D30 DC8 "GMT -04:00" \ 343A303000 \ 00000173 00 DC8 0 \ 00000174 474D54202D30 DC8 "GMT -03:30" \ 333A333000 \ 0000017F 00 DC8 0 \ 00000180 474D54202D30 DC8 "GMT -03:00" \ 333A303000 \ 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 5C6C6F63616C DC8 "\\local.cl" \ 2E636C00 \ 0000000A 0000 DC8 0, 0 \ 0000000C 3B25643B2573 DC8 ";%d;%s;;;\015\012" \ 3B3B3B0D0A00 \ 00000018 536176656420 DC8 "Saved local.cl" \ 6C6F63616C2E \ 636C00 \ 00000027 00 DC8 0 \ 00000028 43616E277420 DC8 "Can't save local.cl" \ 73617665206C \ 6F63616C2E63 \ 6C00 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 25735C484541 DC8 "%s\\HEAD.png" \ 442E706E6700 \ 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 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.%02d %s:\015\012" \ 3032643A2530 \ 326420253032 \ 642E25303264 \ 2025733A0D0A \ 00 \ 0000001F 00 DC8 0 \ 00000020 253032643A25 DC8 "%02d:%02d:%02d %02d.%02d %s:" \ 3032643A2530 \ 326420253032 \ 642E25303264 \ 2025733A00 \ 0000003D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5C636D642E74 DC8 "\\cmd.txt" \ 787400 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CEF2EAEBFEF7 DC8 "\316\362\352\353\376\367\345\355" \ E5ED00 \ 00000009 000000 DC8 0, 0, 0 \ 0000000C CDE5E2E8E4E8 DC8 "\315\345\342\350\344\350\354\373\351" \ ECFBE900 \ 00000016 0000 DC8 0, 0 \ 00000018 CEF2F1F3F2F1 DC8 "\316\362\361\363\362\361\342\363\345\362" \ E2F3E5F200 \ 00000023 00 DC8 0 \ 00000024 CDE520E4EEF1 DC8 "\315\345 \344\356\361\362\363\357\345\355" \ F2F3EFE5ED00 \ 00000030 C7E0EDFFF200 DC8 "\307\340\355\377\362" \ 00000036 0000 DC8 0, 0 \ 00000038 CDE520E1E5F1 DC8 "\315\345 \341\345\361\357\356\352\356\350\362\374" \ EFEEEAEEE8F2 \ FC00 \ 00000046 0000 DC8 0, 0 \ 00000048 C4E5EFF0E5F1 DC8 "\304\345\357\360\345\361\361\350\377" \ F1E8FF00 \ 00000052 0000 DC8 0, 0 \ 00000054 C7EBEEE900 DC8 "\307\353\356\351" \ 00000059 000000 DC8 0, 0, 0 \ 0000005C C4EEECE000 DC8 "\304\356\354\340" \ 00000061 000000 DC8 0, 0, 0 \ 00000064 D0E0E1EEF2E0 DC8 "\320\340\341\356\362\340" \ 00 \ 0000006B 00 DC8 0 \ 0000006C C220F1E5F2E8 DC8 "\302 \361\345\362\350" \ 00 \ 00000073 00 DC8 0 \ 00000074 C3EEF2EEE220 DC8 "\303\356\362\356\342 \341\356\353\362\340\362\374" \ E1EEEBF2E0F2 \ FC00 \ 00000082 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 C6F0F300 DC8 "\306\360\363" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6D6F64206279 DC8 6DH, 6FH, 64H, 20H, 62H, 79H, 20H, 45H \ 2045 \ 00000008 76696C666F78 DC8 76H, 69H, 6CH, 66H, 6FH, 78H, 2CH, 6BH \ 2C6B \ 00000010 6C7563686E69 DC8 6CH, 75H, 63H, 68H, 6EH, 69H, 6BH, 2CH \ 6B2C \ 00000018 77696E646573 DC8 77H, 69H, 6EH, 64H, 65H, 73H, 20H, 62H \ 2062 \ 00000020 61736564206F DC8 61H, 73H, 65H, 64H, 20H, 6FH, 6EH, 20H \ 6E20 \ 00000028 726576697369 DC8 72H, 65H, 76H, 69H, 73H, 69H, 6FH, 6EH \ 6F6E \ 00000030 20323035382C DC8 20H, 32H, 30H, 35H, 38H, 2CH, 20H, 6DH \ 206D \ 00000038 6F6420646174 DC8 6FH, 64H, 20H, 64H, 61H, 74H, 65H, 3AH \ 653A \ 00000040 202573206174 DC8 20H, 25H, 73H, 20H, 61H, 74H, 20H, 25H \ 2025 \ 00000048 732000 DC8 73H, 20H, 0 \ 0000004B 00 DC8 0 \ 0000004C 4A756C203238 DC8 "Jul 28 2010" \ 203230313000 \ 00000058 31303A34393A DC8 "10:49:58" \ 353800 \ 00000061 000000 DC8 0, 0, 0 \ 00000064 2573206D6F64 DC8 "%s model: %s sw: %s\015\012" \ 656C3A202573 \ 2073773A2025 \ 730D0A00 \ 0000007A 0000 DC8 0, 0 \ 0000007C 506C6174666F DC8 "Platform: \333GOLD" \ 726D3A20DB47 \ 4F4C4400 \ 0000008C C2F0E5ECFF20 DC8 0C2H, 0F0H, 0E5H, 0ECH, 0FFH, 20H, 0E2H, 20H \ E220 \ 00000094 EEEDEBE0E9ED DC8 0EEH, 0EDH, 0EBH, 0E0H, 0E9H, 0EDH, 3AH, 20H \ 3A20 \ 0000009C 253032643A25 DC8 25H, 30H, 32H, 64H, 3AH, 25H, 30H, 32H \ 3032 \ 000000A4 643A25303264 DC8 64H, 3AH, 25H, 30H, 32H, 64H, 20H, 0DH \ 200D \ 000000AC 0AD1E5F0E2E5 DC8 0AH, 0D1H, 0E5H, 0F0H, 0E2H, 0E5H, 0F0H, 3AH \ F03A \ 000000B4 202573200D0A DC8 20H, 25H, 73H, 20H, 0DH, 0AH, 25H, 73H \ 2573 \ 000000BC 200D0A00 DC8 20H, 0DH, 0AH, 0 \ 000000C0 CEF2EFF0E0E2 DC8 0CEH, 0F2H, 0EFH, 0F0H, 0E0H, 0E2H, 0EBH, 0E5H \ EBE5 \ 000000C8 EDEE20F1EEEE DC8 0EDH, 0EEH, 20H, 0F1H, 0EEH, 0EEH, 0E1H, 0F9H \ E1F9 \ 000000D0 E5EDE8E93A20 DC8 0E5H, 0EDH, 0E8H, 0E9H, 3AH, 20H, 25H, 64H \ 2564 \ 000000D8 200D0ACFF0E8 DC8 20H, 0DH, 0AH, 0CFH, 0F0H, 0E8H, 0EDH, 0FFH \ EDFF \ 000000E0 F2EE20F1EEEE DC8 0F2H, 0EEH, 20H, 0F1H, 0EEH, 0EEH, 0E1H, 0F9H \ E1F9 \ 000000E8 E5EDE8E93A20 DC8 0E5H, 0EDH, 0E8H, 0E9H, 3AH, 20H, 25H, 64H \ 2564 \ 000000F0 200D0A00 DC8 20H, 0DH, 0AH, 0 \ 000000F4 CEEFE5F0E0F2 DC8 "\316\357\345\360\340\362\356\360: %s \015\012" \ EEF03A202573 \ 200D0A00 \ 00000104 C7E0F0FFE420 DC8 "\307\340\360\377\344 \341\340\362\340\360\345\350: %d \357\360\356\366\345\355\362\356\342 \015\012" \ E1E0F2E0F0E5 \ E83A20256420 \ EFF0EEF6E5ED \ F2EEE2200D0A \ 00 \ 00000123 00 DC8 0 \ 00000124 547261666669 DC8 54H, 72H, 61H, 66H, 66H, 69H, 63H, 3AH \ 633A \ 0000012C 205278203A20 DC8 20H, 52H, 78H, 20H, 3AH, 20H, 25H, 64H \ 2564 \ 00000134 62205478203A DC8 62H, 20H, 54H, 78H, 20H, 3AH, 20H, 25H \ 2025 \ 0000013C 646220517565 DC8 64H, 62H, 20H, 51H, 75H, 65H, 75H, 65H \ 7565 \ 00000144 3A2025646220 DC8 3AH, 20H, 25H, 64H, 62H, 20H, 0DH, 0AH \ 0D0A \ 0000014C 54696D653A20 DC8 54H, 69H, 6DH, 65H, 3AH, 20H, 25H, 30H \ 2530 \ 00000154 32643A253032 DC8 32H, 64H, 3AH, 25H, 30H, 32H, 64H, 0DH \ 640D \ 0000015C 0A4F6E6C696E DC8 0AH, 4FH, 6EH, 6CH, 69H, 6EH, 65H, 20H \ 6520 \ 00000164 636F6E746163 DC8 63H, 6FH, 6EH, 74H, 61H, 63H, 74H, 3AH \ 743A \ 0000016C 202564205B74 DC8 20H, 25H, 64H, 20H, 5BH, 74H, 6FH, 74H \ 6F74 \ 00000174 616C3A202564 DC8 61H, 6CH, 3AH, 20H, 25H, 64H, 5DH, 20H \ 5D20 \ 0000017C 0D0A556E7265 DC8 0DH, 0AH, 55H, 6EH, 72H, 65H, 61H, 64H \ 6164 \ 00000184 206D65737361 DC8 20H, 6DH, 65H, 73H, 73H, 61H, 67H, 65H \ 6765 \ 0000018C 3A2025642F25 DC8 3AH, 20H, 25H, 64H, 2FH, 25H, 64H, 20H \ 6420 \ 00000194 00 DC8 0 \ 00000195 000000 DC8 0, 0, 0 \ 00000198 53656E64696E DC8 "Sending textinfo..." \ 672074657874 \ 696E666F2E2E \ 2E00 \ 000001AC 5F5F54455854 DC8 "__TEXTINFO" \ 494E464F00 \ 000001B7 00 DC8 0 \ 000001B8 5F5F544900 DC8 "__TI" \ 000001BD 000000 DC8 0, 0, 0 \ 000001C0 54696D653A20 DC8 "Time: %02d:%02d" \ 253032643A25 \ 30326400 \ 000001D0 53656E64696E DC8 "Sending time..." \ 672074696D65 \ 2E2E2E00 \ 000001E0 5F5F54494D45 DC8 "__TIME" \ 00 \ 000001E7 00 DC8 0 \ 000001E8 4745545F5449 DC8 "GET_TIME" \ 4D4500 \ 000001F1 000000 DC8 0, 0, 0 \ 000001F4 2573206D6F64 DC8 "%s model: %s sw: %s" \ 656C3A202573 \ 2073773A2025 \ 7300 \ 00000208 53656E64696E DC8 "Sending platform info..." \ 6720706C6174 \ 666F726D2069 \ 6E666F2E2E2E \ 00 \ 00000221 000000 DC8 0, 0, 0 \ 00000224 4745545F504C DC8 "GET_PLATFORM_INFO" \ 4154464F524D \ 5F494E464F00 \ 00000236 0000 DC8 0, 0 \ 00000238 5F5F504C4154 DC8 "__PLATFORM" \ 464F524D00 \ 00000243 00 DC8 0 \ 00000244 5F5F485700 DC8 "__HW" \ 00000249 000000 DC8 0, 0, 0 \ 0000024C 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 \ 00000277 00 DC8 0 \ 00000278 4745545F4F4E DC8 "GET_ONLINE_TIME" \ 4C494E455F54 \ 494D4500 \ 00000288 5F5F4F4E4C49 DC8 "__ONLINE" \ 4E4500 \ 00000291 000000 DC8 0, 0, 0 \ 00000294 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 \ 000002C4 4745545F4D53 DC8 "GET_MSG_INFO" \ 475F494E464F \ 00 \ 000002D1 000000 DC8 0, 0, 0 \ 000002D4 5F5F4D534700 DC8 "__MSG" \ 000002DA 0000 DC8 0, 0 \ 000002DC CEEFE5F0E0F2 DC8 "\316\357\345\360\340\362\356\360: %s" \ EEF03A202573 \ 00 \ 000002E9 000000 DC8 0, 0, 0 \ 000002EC 53656E64696E DC8 "Sending provider name..." \ 672070726F76 \ 69646572206E \ 616D652E2E2E \ 00 \ 00000305 000000 DC8 0, 0, 0 \ 00000308 4745545F5052 DC8 "GET_PROVIDER" \ 4F5649444552 \ 00 \ 00000315 000000 DC8 0, 0, 0 \ 00000318 5F5F50524F56 DC8 "__PROVIDER" \ 4944455200 \ 00000323 00 DC8 0 \ 00000324 2A2A2A416363 DC8 "***Access denied***" \ 657373206465 \ 6E6965642A2A \ 2A00 \ 00000338 4745545F4D4F DC8 "GET_MOD_INFO" \ 445F494E464F \ 00 \ 00000345 000000 DC8 0, 0, 0 \ 00000348 5F5F4D4F4400 DC8 "__MOD" \ 0000034E 0000 DC8 0, 0 \ 00000350 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 \ 0000036C 4745545F4241 DC8 "GET_BAT_INFO" \ 545F494E464F \ 00 \ 00000379 000000 DC8 0, 0, 0 \ 0000037C 5F5F42415400 DC8 "__BAT" \ 00000382 0000 DC8 0, 0 \ 00000384 726576697369 DC8 "revision 2058, mod date: %s at %s " \ 6F6E20323035 \ 382C206D6F64 \ 20646174653A \ 202573206174 \ 2025732000 \ 000003A7 00 DC8 0 \ 000003A8 687474703A2F DC8 "http://kluchnik.jino-net.ru/naticqmod/" \ 2F6B6C756368 \ 6E696B2E6A69 \ 6E6F2D6E6574 \ 2E72752F6E61 \ 746963716D6F \ 642F00 \ 000003CF 00 DC8 0 \ 000003D0 53656E64696E DC8 "Sending url info..." \ 672075726C20 \ 696E666F2E2E \ 2E00 \ 000003E4 4745545F5552 DC8 "GET_URL_INFO" \ 4C5F494E464F \ 00 \ 000003F1 000000 DC8 0, 0, 0 \ 000003F4 5F5F55524C00 DC8 "__URL" \ 000003FA 0000 DC8 0, 0 \ 000003FC C0E2F2EEEEF2 DC8 "\300\342\362\356\356\362\342\345\362\367\350\352: %s %s! %s %s" \ E2E5F2F7E8EA \ 3A2025732025 \ 732120257320 \ 257300 \ 00000417 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 5F5F5400 DC8 "__T" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 B0B5041C0025 DC8 176, 181, 4, 28, 0, 37, 5, 97 \ 0561 \ In segment DATA_C, align 4, align-sorted \ `?_1`: \ 00000000 B0B5041C0025 DC8 176, 181, 4, 28, 0, 37, 5, 97 \ 0561 \ In segment DATA_C, align 1, align-sorted \ 00000000 3A0A00 DC8 ":\012" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C2E8E1F0E000 DC8 "\302\350\341\360\340" \ 00000006 0000 DC8 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 43ECE0E9EBFB DC8 "C\354\340\351\353\373" \ 00 \ 00000007 00 DC8 0 \ 00000008 C220E1F3F4E5 DC8 "\302 \341\363\364\345\360" \ F000 \ 00000010 C8E720E1F3F4 DC8 "\310\347 \341\363\364\345\360\340" \ E5F0E000 \ 0000001A 0000 DC8 0, 0 \ 0000001C CAEEECE0EDE4 DC8 "\312\356\354\340\355\344\340" \ E000 \ 00000024 CEF7E8F1F2E8 DC8 "\316\367\350\361\362\350\362\374 \341\363\364\345\360" \ F2FC20E1F3F4 \ E5F000 \ 00000033 00 DC8 0 \ 00000034 D1EBE5E4F3FE DC8 "\321\353\345\344\363\376\371\350\351 \367\340\362" \ F9E8E920F7E0 \ F200 \ 00000042 0000 DC8 0, 0 \ 00000044 CFF0E5E4FBE4 DC8 "\317\360\345\344\373\344\363\371\350\351 \367\340\362" \ F3F9E8E920F7 \ E0F200 \ 00000053 00 DC8 0 \ 00000054 CAEEECE0EDE4 DC8 "\312\356\354\340\355\344\373" \ FB00 \ 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 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 25735C746D70 DC8 "%s\\tmp%u.url" \ 25752E75726C \ 00 \ 0000000D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 CCE5EDFE00 DC8 "\314\345\355\376" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 526571756573 DC8 "Request info..." \ 7420696E666F \ 2E2E2E00 \ 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 \ 00000024 25735C25755C DC8 "%s\\%u\\%u.txt" \ 25752E747874 \ 00 \ 00000031 000000 DC8 0, 0, 0 \ 00000034 25735C25752E DC8 "%s\\%u.txt" \ 74787400 \ 0000003E 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 686561642E70 DC8 "head.png" \ 6E6700 \ 00000009 000000 DC8 0, 0, 0 \ 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 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 \ 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 C7E2F3EA00 DC8 "\307\342\363\352" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C2FBE1F0E0F2 DC8 "\302\373\341\360\340\362\374" \ FC00 \ In segment DATA_C, align 1, align-sorted \ `?`: \ 00000000 00 DC8 "" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 253032643A25 DC8 "%02d:%02d" \ 30326400 \ 0000000A 0000 DC8 0, 0 \ 0000000C 2820CEF2F1F3 DC8 "( \316\362\361\363\362\361\362\342\363\376 \357\360\350\354\345\360\355\356 \361 %02d:%02d [%s] )" \ F2F1F2E2F3FE \ 20EFF0E8ECE5 \ F0EDEE20F120 \ 253032643A25 \ 303264205B25 \ 735D202900 \ 00000035 000000 DC8 0, 0, 0 \ 00000038 2820CDE5E4EE DC8 "( \315\345\344\356\361\362\363\357\345\355 \357\360\350\354\345\360\355\356 \361 %02d:%02d [%s] )" \ F1F2F3EFE5ED \ 20EFF0E8ECE5 \ F0EDEE20F120 \ 253032643A25 \ 303264205B25 \ 735D202900 \ 00000061 000000 DC8 0, 0, 0 Maximum stack usage in bytes: Function CSTACK -------- ------ AddContactT9Key 12 AddCurContact 4 AddLOGQ 0 AddMsgToChat 104 AddSmile 4 AddStringToLog 196 AddToMain 44 AskNickAndAddContact 4 AutoChangeStatus_timer 20 BackSpaceContactT9 8 ChangeAutoMsg 4 ChangeShowXstatus 4 ChangeSound 4 ChangeSoundContact 4 ChangeVibra 4 ChangeVibraContact 4 CheckComand 636 CheckDoubleRun 8 ClearContactT9Key 4 ClearLog 60 ClearSendQ 8 CmdMenuGHook 4 CmdMenuItemHandler 24 CmdMenuKeyHook 16 CreateCLFile 280 CreateContactMenu 32 CreateEditChat 100 DispCmdMenu 32 DrawAck 80 DrawAutoMSG 80 DrawList 84 DrawOnlineTime 20 DrawPing 12 ElfKiller 4 Enter 16 ExtractAnswer 36 FindContactLOGQByAck 12 FindNextActiveContact 0 FindPrevActiveContact 0 FreeLOGQ 8 FreeTemplates 8 FreeXText2 8 GetHost 0 GetHostsCount 0 GetIconIndex 0 GetLastXTextLOGQ 0 GetOnTotalContact 8 GetPort 16 GetShortInfo 24 GetStatusByIconIndex 12 GetTempName 20 Get_Online_total 0 IlluminationOff 8 IlluminationOn 24 InputAwayMsg 88 IsIdleUiOnTop 4 IsUrl 44 LastLOGQ 0 LoadCmd 332 LoadTemplates 332 LongPressAction 4 LongPressActionOnChat 40 MoveDown 0 MoveUp 8 NewLOGQ 12 OneSecTmr 8 OpenLogfile 20 ParseAnswer 36 ParseXStatusText 20 Pinger2 16 Play 236 ProcessPacket 364 Quote 152 Quote2 152 ReadDefSettings 180 RecountMenu 20 Remind_Timer2 8 Reminder_timer 4 RemoveLOGQ 4 ReqAddMsgToChat 16 RequestXText 8 SMART_REDRAW 8 SaveAnswer 12 SendAnswer 28 SendAuthGrant 44 SendAuthReq 48 SendData 16 SendMSGACK 8 SetIndividStatus 0 UpdateCLheader 192 UpdateCSMname 4 UptimeMinHour 0 WriteDefSettings 176 ask_my_info 0 atoi 4 away_timer 44 begin_to_develop 4 checkGui 8 cmdFree 8 contact_keyhook 12 contact_list_ghook 4 contacthandler 28 contactlist_menu_ghook 28 contactlist_menu_iconhndl 668 contactlist_menu_onkey 40 create_connect 312 create_contactlist_menu 24 do_ping 4 do_reconnect 4 ec_menu 72 ecmenu_ghook 4 ed_options_handler 116 edchat_ghook 72 edchat_locret 0 edchat_onkey 348 end_socket 8 free_ICONS 16 get_answer 1096 init_time_zone 4 input_awaymsg_ghook 4 input_awaymsg_locret 0 input_awaymsg_onkey 76 main 64 maincsm_onclose 8 maincsm_oncreate 20 maincsm_onmessage 112 method0 88 method1 8 method2 8 method3 8 method4 0 method5 44 method8 0 method9 0 my_ed_redraw 16 my_keyhook 12 new_redraw 100 patch_header 8 process_active_timer 12 recon 8 resend 4 send_login 36 set_my_status 4 set_my_xstatus 36 setup_ICONS 12 show_on_contact 64 show_pp_sender 64 start_vibra 8 start_vibra2 4 stop_vibra 4 stop_vibra2 4 to_develop 4 upTime 12 wstrstr 32 Segment part sizes: Function/Label Bytes -------------- ----- IsIdleUiOnTop 36 patch_header 48 Pinger2 144 SMART_REDRAW 48 Is_Id3tag_Enabled 4 timeh 4 timemin 4 FreeXText2 36 away_timer 408 init_time_zone 356 AutoChangeStatus_timer 1072 DrawPing 80 Remind_Timer2 68 Reminder_timer 32 UptimeMinHour 64 upTime 96 DrawOnlineTime 148 DrawAutoMSG 140 input_awaymsg_onkey 388 input_awaymsg_ghook 68 input_awaymsg_locret 4 InputAwayMsg 444 setup_ICONS 68 free_ICONS 44 IlluminationOff 56 IlluminationOn 120 ReadDefSettings 600 WriteDefSettings 600 Play 300 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 28 NewLOGQ 52 LastLOGQ 36 FreeLOGQ 48 RemoveLOGQ 52 AddLOGQ 44 GetLastXTextLOGQ 72 GetIconIndex 228 FindContactLOGQByAck 88 CreateCLFile 236 new_redraw 136 UpdateCLheader 1464 ClearContactT9Key 24 AddContactT9Key 44 BackSpaceContactT9 44 create_contactlist_menu 76 contactlist_menu_ghook 184 RecountMenu 160 ChangeVibraContact 44 ChangeSoundContact 44 ChangeAutoMsg 44 ChangeShowXstatus 44 contact_list_ghook 20 contact_keyhook 76 contacthandler 196 CreateContactMenu 136 LongPressActionOnChat 864 LongPressAction 236 contactlist_menu_onkey 1224 GetOnTotalContact 92 contactlist_menu_iconhndl 692 GetHost 192 atoi 84 GetPort 276 GetHostsCount 120 create_connect 760 ClearSendQ 48 end_socket 56 resend 24 SendAnswer 424 send_login 148 do_ping 52 SendMSGACK 52 RequestXText 52 get_answer 1500 AddToMain 572 AddStringToLog 588 ParseXStatusText 152 AddMsgToChat 812 DrawAck 340 ask_my_info 4 set_my_status 72 set_my_xstatus 264 to_develop 92 ReqAddMsgToChat 120 begin_to_develop 52 cmdFree 56 LoadCmd 280 CmdMenuItemHandler 92 CmdMenuGHook 36 CmdMenuKeyHook 152 DispCmdMenu 124 GetStatusByIconIndex 176 SendData 120 errornumber 4 CheckComand 2852 INC_Nick 32 show_on_contact 340 show_pp_sender 352 Get_Online_total 92 SetIndividStatus 76 ProcessPacket 2940 process_active_timer 148 OneSecTmr 100 DrawList 560 MoveUp 116 MoveDown 96 Enter 144 method0 1272 method1 44 method2 36 method3 24 method4 20 method5 448 method8 8 method9 8 my_keyhook 92 Canvas 1336 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 128 def_setting 48 contactlist_menuhdr 68 menusoftkeys 12 menu_sk 24 clmenu_sk 24 menu_skt 8 clmenu_skt 8 ? 76 font 4 _t 3 maincsm_oncreate 316 maincsm_onclose 304 do_reconnect 40 CheckDoubleRun 144 checkGui 76 maincsm_onmessage 3140 minus11 4 maincsm_name_body 280 UpdateCSMname 36 main 440 edchat_locret 4 ExtractAnswer 280 ??FindNextActiveContact_0 64 FindPrevActiveContact 88 ed_options_handler 1204 wstrstr 124 IsUrl 424 ParseAnswer 548 SaveAnswer 36 GetTempName 172 DMonth 52 recon 52 edchat_onkey 1548 my_ed_redraw 136 edchat_ghook 544 edchat_desc 84 sk 16 CreateEditChat 1132 Quote 416 Quote2 440 GetShortInfo 168 AddCurContact 52 SendAuthReq 212 SendAuthGrant 208 OpenLogfile 228 ClearLog 240 ecmenu_ghook 20 ecmenu_ITEMS 252 ecmenu_HNDLS 36 S_ICONS 8080 sk 8 input_awaymsg_sk 24 input_awaymsg_skt 8 prozr 4 icon_array 92 CmdMenuHeader 32 clrBlack 4 ecmenu_HDR 64 ec_menu 332 AskNickAndAddContact 8 AddSmile 24 ??DataTable1 4 ??DataTable2 4 ??DataTable5 4 ??DataTable12 4 ??DataTable19 4 ??DataTable20 4 ??DataTable21 4 ??DataTable22 4 ??DataTable24 4 ??DataTable25 4 ??DataTable28 4 ??DataTable33 4 ??DataTable34 4 ??DataTable36 4 ??DataTable42 4 ??DataTable45 4 ??DataTable51 4 ??DataTable52 4 ??DataTable53 4 ??DataTable54 4 ??DataTable55 4 ??DataTable63 4 ??DataTable64 4 ??DataTable69 4 ??DataTable72 4 ??DataTable73 4 ??DataTable74 4 ??DataTable75 4 ??DataTable76 4 ??DataTable77 4 ??DataTable78 4 ??DataTable79 4 ??DataTable80 4 ??DataTable82 4 ??DataTable84 4 ??DataTable86 4 ??DataTable87 4 ??DataTable88 4 ??DataTable90 4 ??DataTable91 4 ??DataTable92 4 ??DataTable94 4 ??DataTable99 4 ??DataTable100 4 ??DataTable102 4 ??DataTable103 4 ??DataTable104 4 ??DataTable105 4 ??DataTable106 4 ??DataTable107 4 ??DataTable109 4 ??DataTable110 4 ??DataTable112 4 ??DataTable113 4 ??DataTable114 4 ??DataTable124 4 ??DataTable125 4 ??DataTable126 4 ??DataTable128 4 ??DataTable129 4 ??DataTable130 4 ??DataTable131 4 ??DataTable132 4 ??DataTable133 4 ??DataTable134 4 ??DataTable135 4 ??DataTable140 4 ??DataTable143 4 ??DataTable145 4 ??DataTable146 4 ??DataTable147 4 ??DataTable149 4 ??DataTable152 4 ??DataTable153 4 ??DataTable154 4 ??DataTable155 4 ??DataTable156 4 ??DataTable157 4 ??DataTable162 4 ??DataTable163 4 ??DataTable165 4 ??DataTable168 4 ??DataTable169 4 ??DataTable170 4 ??DataTable171 4 ??DataTable172 4 ??DataTable173 4 ??DataTable174 4 ??DataTable176 4 ??DataTable177 4 ??DataTable184 4 ??DataTable186 4 ??DataTable188 4 ??DataTable192 4 ??DataTable195 4 ??DataTable197 4 ??DataTable200 4 ??DataTable202 4 ??DataTable206 4 ??DataTable207 4 ??DataTable209 4 ??DataTable210 4 ??DataTable212 4 ??DataTable214 4 ??DataTable215 4 ??DataTable216 4 ??DataTable217 4 ??DataTable222 4 ??DataTable223 4 ??DataTable224 4 ??DataTable225 4 ??DataTable227 4 ??DataTable231 4 ??DataTable232 4 ??DataTable233 4 ??DataTable234 4 ??DataTable237 4 ??DataTable238 4 ??DataTable240 4 ??DataTable243 4 ??DataTable244 4 ??DataTable245 4 ??DataTable246 4 ??DataTable247 4 ??DataTable248 4 ??DataTable249 4 ??DataTable250 4 ??DataTable251 4 ??DataTable252 4 ??DataTable254 4 ??DataTable256 4 ??DataTable258 4 ??DataTable259 4 ??DataTable260 4 ??DataTable261 4 ??DataTable263 4 ??DataTable266 4 ??DataTable267 4 ??DataTable268 4 ??DataTable270 4 ??DataTable271 4 ??DataTable272 4 ??DataTable273 4 ??DataTable274 4 ??DataTable275 4 ??DataTable278 4 ??DataTable279 4 ??DataTable282 4 ??DataTable283 4 ??DataTable286 4 ??DataTable288 4 ??DataTable289 4 ??DataTable290 4 ??DataTable291 4 ??DataTable293 4 ??DataTable299 4 ??DataTable300 4 ??DataTable301 4 ??DataTable302 4 ??DataTable303 4 ??DataTable304 4 ??DataTable305 4 ? 8080 ? 8 ? 24 ? 8 ? 4 ? 92 ? 32 ? 4 ? 396 ? 32 ? 16 ? 3 ? 16 ? 60 ? 12 ? 4 ? 4 ? 4 ? 4 ? 4 ? 2 ? 40 ? 12 ? 3 ? 8 ? 64 ? 12 ? 132 ? 4 ? 1048 ? 4 ? 8 ?_1 8 ? 3 ? 8 ? 12 ? 92 ? 164 ? 16 ? 8 ? 16 ? 64 ? 3 ? 12 ? 16 ? 12 ? 8 ? 16 ? 8 ? 16 ? 12 ? 12 ? 12 ? 12 ? 12 ? 8 ? 12 ? 12 ? 12 ? 16 ? 12 ? 12 ? 12 ? 12 ? 12 ? 16 ? 12 ? 12 ? 12 ? 12 ? 12 ? 4 ? 8 ? 8 ? 8 ? 8 ? 8 ? 8 ? 1 ? 100 Others 1140 45 720 bytes in segment CODE 5 742 bytes in segment DATA_C 8 252 bytes in segment DATA_I 8 252 bytes in segment DATA_ID 33 112 bytes in segment DATA_Z 24 bytes in segment INITTAB 44 556 bytes of CODE memory (+ 1 188 bytes shared) 13 994 bytes of CONST memory 41 364 bytes of DATA memory Errors: none Warnings: none