############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 29/Jun/2008 17:08:45 # # 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 # # NEWSGOLD -D UIN_WRITE -D ole64 --preprocess # # D:\Pasha\elf\_MY_PROJECT_\naticq_mod\ole64\List\ # # -lC D:\Pasha\elf\_MY_PROJECT_\naticq_mod\ole64\List\ # # -o D:\Pasha\elf\_MY_PROJECT_\naticq_mod\ole64\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\ole64\List\main # # .lst # # Object file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\ole64\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" 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,??DataTable26 ;; S_ICONS \ 00000004 70402DE9 PUSH {R4-R6,LR} \ 00000008 ........ LDR R5,??DataTable1 ;; Pinger2 \ 0000000C E410A0E3 MOV R1,#+228 \ 00000010 541D81E3 ORR R1,R1,#0x1500 \ 00000014 004081E0 ADD R4,R1,R0 \ 00000018 500290E5 LDR R0,[R0, #+592] \ 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 + 620 \ 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 + 620 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; 173 int Is_Id3tag_Enabled; 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; \ In segment CODE, align 4, keep-with-next 226 void ScreenSaverTimer() 227 { \ ScreenSaverTimer: \ 00000000 70402DE9 PUSH {R4-R6,LR} 228 if(scrsTime==screenSaverTime) \ 00000004 ........ LDR R4,??DataTable26 ;; S_ICONS \ 00000008 68609FE5 LDR R6,??ScreenSaverTimer_0 ;; ScreenSaverTimer \ 0000000C 8C1294E5 LDR R1,[R4, #+652] \ 00000010 F400A0E3 MOV R0,#+244 \ 00000014 580D80E3 ORR R0,R0,#0x1600 \ 00000018 045080E0 ADD R5,R0,R4 \ 0000001C 58009FE5 LDR R0,??ScreenSaverTimer_0+0x4 ;; screenSaverTime \ 00000020 000090E5 LDR R0,[R0, #+0] \ 00000024 000051E1 CMP R1,R0 \ 00000028 0600001A BNE ??ScreenSaverTimer_1 229 { 230 scrsTime=screenSaverTime;//на всякий случай \ 0000002C 8C0284E5 STR R0,[R4, #+652] 231 CloseScreensaver(); \ 00000030 9C0000EF SWI +156 232 DrawScreenSaver(); \ 00000034 200000EF SWI +32 233 GBS_StartTimerProc(&scrsTmr, 216*10, ScreenSaverTimer); \ 00000038 0620A0E1 MOV R2,R6 \ 0000003C 871EA0E3 MOV R1,#+2160 \ 00000040 0500A0E1 MOV R0,R5 \ 00000044 4D0000EF SWI +77 234 } 235 if(isScreenSaverEna) \ ??ScreenSaverTimer_1: \ 00000048 30009FE5 LDR R0,??ScreenSaverTimer_0+0x8 ;; isScreenSaverEna 236 scrsTime++; 237 GBS_StartTimerProc(&scrsTmr, 216*5, ScreenSaverTimer); \ 0000004C 0620A0E1 MOV R2,R6 \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 3810A0E3 MOV R1,#+56 \ 00000058 000050E3 CMP R0,#+0 \ 0000005C 8C029415 LDRNE R0,[R4, #+652] \ 00000060 401E81E3 ORR R1,R1,#0x400 \ 00000064 01008012 ADDNE R0,R0,#+1 \ 00000068 8C028415 STRNE R0,[R4, #+652] \ 0000006C 0500A0E1 MOV R0,R5 \ 00000070 4D0000EF SWI +77 238 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return \ ??ScreenSaverTimer_0: \ 00000078 ........ DC32 ScreenSaverTimer \ 0000007C ........ DC32 screenSaverTime \ 00000080 ........ DC32 isScreenSaverEna 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 { 267 if(msg_away_timer==AUTO_ENGADE) \ away_timer: \ 00000000 ........ LDR R1,??DataTable28 ;; AUTO_ENGADE \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 ........ LDR R4,??DataTable26 ;; S_ICONS \ 0000000C 08D04DE2 SUB SP,SP,#+8 \ 00000010 900294E5 LDR R0,[R4, #+656] \ 00000014 001091E5 LDR R1,[R1, #+0] \ 00000018 010050E1 CMP R0,R1 \ 0000001C 2600001A BNE ??away_timer_0 268 { 269 TTime tt; 270 GetDateTime(NULL,&tt); 271 sprintf(away_msg_time_dace, "%02d:%02d", tt.hour, tt.min); \ 00000020 CC509FE5 LDR R5,??away_timer_1 ;; `?` \ 00000024 0D10A0E1 MOV R1,SP \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C B40000EF SWI +180 \ 00000030 0130DDE5 LDRB R3,[SP, #+1] \ 00000034 0020DDE5 LDRB R2,[SP, #+0] \ 00000038 0510A0E1 MOV R1,R5 \ 0000003C 4C00A0E3 MOV R0,#+76 \ 00000040 600D80E3 ORR R0,R0,#0x1800 \ 00000044 040080E0 ADD R0,R0,R4 \ 00000048 160000EF SWI +22 272 sprintf(away_msg_time, "( Отсутствую примерно с %02d:%02d [%s] )", tt.hour, tt.min, tim_zone); \ 0000004C 5C00A0E3 MOV R0,#+92 \ 00000050 600D80E3 ORR R0,R0,#0x1800 \ 00000054 040080E0 ADD R0,R0,R4 \ 00000058 01002DE9 PUSH {R0} \ 0000005C 0530DDE5 LDRB R3,[SP, #+5] \ 00000060 0420DDE5 LDRB R2,[SP, #+4] \ 00000064 0C1085E2 ADD R1,R5,#+12 \ 00000068 0C00A0E3 MOV R0,#+12 \ 0000006C 600D80E3 ORR R0,R0,#0x1800 \ 00000070 040080E0 ADD R0,R0,R4 \ 00000074 160000EF SWI +22 273 away_m=1; 274 if(CurrentStatus!=2 && CurrentStatus!=isAutoStatusOn) \ 00000078 800294E5 LDR R0,[R4, #+640] \ 0000007C 0150A0E3 MOV R5,#+1 \ 00000080 945284E5 STR R5,[R4, #+660] \ 00000084 020050E3 CMP R0,#+2 \ 00000088 04D08DE2 ADD SP,SP,#+4 \ 0000008C 0A00000A BEQ ??away_timer_0 \ 00000090 60109FE5 LDR R1,??away_timer_1+0x4 ;; isAutoStatusOn \ 00000094 001091E5 LDR R1,[R1, #+0] \ 00000098 010050E1 CMP R0,R1 \ 0000009C 0600000A BEQ ??away_timer_0 275 { 276 status_rem=CurrentStatus; \ 000000A0 980284E5 STR R0,[R4, #+664] 277 CurrentStatus=2; \ 000000A4 0200A0E3 MOV R0,#+2 \ 000000A8 800284E5 STR R0,[R4, #+640] 278 set_my_status(); \ 000000AC ........ BL set_my_status 279 #ifdef NEWSGOLD 280 void SetIconBarHandler(); 281 SetIconBarHandler(); \ 000000B0 ........ LDR R0,??DataTable6 ;; addIconBar 282 #endif 283 change_back_status=1; \ 000000B4 9C5284E5 STR R5,[R4, #+668] \ 000000B8 B80084E5 STR R0,[R4, #+184] 284 } 285 } 286 287 if(Auto_Status) \ ??away_timer_0: \ 000000BC ........ LDR R0,??DataTable7 ;; Auto_Status 288 msg_away_timer++; 289 GBS_StartTimerProc(&away_tmr, 216*5, away_timer); \ 000000C0 34209FE5 LDR R2,??away_timer_1+0x8 ;; away_timer \ 000000C4 000090E5 LDR R0,[R0, #+0] \ 000000C8 3810A0E3 MOV R1,#+56 \ 000000CC 000050E3 CMP R0,#+0 \ 000000D0 90029415 LDRNE R0,[R4, #+656] \ 000000D4 401E81E3 ORR R1,R1,#0x400 \ 000000D8 01008012 ADDNE R0,R0,#+1 \ 000000DC 90028415 STRNE R0,[R4, #+656] \ 000000E0 6C00A0E3 MOV R0,#+108 \ 000000E4 600D80E3 ORR R0,R0,#0x1800 \ 000000E8 040080E0 ADD R0,R0,R4 \ 000000EC 4D0000EF SWI +77 290 } \ 000000F0 3380BDE8 POP {R0,R1,R4,R5,PC} ;; return \ ??away_timer_1: \ 000000F4 ........ DC32 `?` \ 000000F8 ........ DC32 isAutoStatusOn \ 000000FC ........ DC32 away_timer 291 292 \ In segment CODE, align 4, keep-with-next 293 void init_time_zone() 294 { 295 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 + 6236 \ 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 1A1C1E20 DC8 +26,+28,+30,+32 \ 00000034 22242628 DC8 +34,+36,+38,+40 \ 00000038 0E2A2C2E DC8 +14,+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 296 { 297 case 0: 298 sprintf(tim_zone, "GMT -12:00"); \ ??init_time_zone_2: \ 0000004C CC1081E2 ADD R1,R1,#+204 \ 00000050 030000EA B ??init_time_zone_3 299 break; 300 case 1: 301 sprintf(tim_zone, "GMT -11:00"); \ ??init_time_zone_4: \ 00000054 D81081E2 ADD R1,R1,#+216 \ 00000058 160000EF SWI +22 \ 0000005C 0080BDE8 POP {PC} 302 break; 303 case 2: 304 sprintf(tim_zone, "GMT -10:00"); \ ??init_time_zone_5: \ 00000060 E41081E2 ADD R1,R1,#+228 \ ??init_time_zone_3: \ 00000064 160000EF SWI +22 \ 00000068 0080BDE8 POP {PC} 305 break; 306 case 3: 307 sprintf(tim_zone, "GMT -09:00"); \ ??init_time_zone_6: \ 0000006C F01081E2 ADD R1,R1,#+240 \ 00000070 FBFFFFEA B ??init_time_zone_3 308 break; 309 case 4: 310 sprintf(tim_zone, "GMT -08:00"); \ ??init_time_zone_7: \ 00000074 FC1081E2 ADD R1,R1,#+252 \ 00000078 F9FFFFEA B ??init_time_zone_3 311 break; 312 case 5: 313 sprintf(tim_zone, "GMT -07:00"); \ ??init_time_zone_8: \ 0000007C 421F81E2 ADD R1,R1,#+264 \ 00000080 F7FFFFEA B ??init_time_zone_3 314 break; 315 case 6: 316 sprintf(tim_zone, "GMT -06:00"); \ ??init_time_zone_9: \ 00000084 451F81E2 ADD R1,R1,#+276 \ 00000088 F5FFFFEA B ??init_time_zone_3 317 break; 318 case 7: 319 sprintf(tim_zone, "GMT -05:00"); \ ??init_time_zone_10: \ 0000008C 481F81E2 ADD R1,R1,#+288 \ 00000090 F3FFFFEA B ??init_time_zone_3 320 break; 321 case 8: 322 sprintf(tim_zone, "GMT -04:00"); \ ??init_time_zone_11: \ 00000094 4B1F81E2 ADD R1,R1,#+300 \ 00000098 F1FFFFEA B ??init_time_zone_3 323 break; 324 case 9: 325 sprintf(tim_zone, "GMT -03:30"); \ ??init_time_zone_12: \ 0000009C 4E1F81E2 ADD R1,R1,#+312 \ 000000A0 EFFFFFEA B ??init_time_zone_3 326 break; 327 case 10: 328 sprintf(tim_zone, "GMT -03:00"); \ ??init_time_zone_13: \ 000000A4 511F81E2 ADD R1,R1,#+324 \ 000000A8 EDFFFFEA B ??init_time_zone_3 329 break; 330 case 11: 331 sprintf(tim_zone, "GMT -02:00"); \ ??init_time_zone_14: \ 000000AC 541F81E2 ADD R1,R1,#+336 \ 000000B0 EBFFFFEA B ??init_time_zone_3 332 break; 333 case 12: 334 sprintf(tim_zone, "GMT -01:00"); \ ??init_time_zone_15: \ 000000B4 571F81E2 ADD R1,R1,#+348 \ 000000B8 E9FFFFEA B ??init_time_zone_3 335 break; 336 case 13: 337 sprintf(tim_zone, "GMT 00:00"); \ ??init_time_zone_16: \ 000000BC 5A1F81E2 ADD R1,R1,#+360 \ 000000C0 E7FFFFEA B ??init_time_zone_3 338 break; 339 case 14: 340 sprintf(tim_zone, "GMT +01:00"); \ ??init_time_zone_17: \ 000000C4 5D1F81E2 ADD R1,R1,#+372 \ 000000C8 E5FFFFEA B ??init_time_zone_3 341 break; 342 case 15: 343 sprintf(tim_zone, "GMT +02:00"); \ ??init_time_zone_18: \ 000000CC 601F81E2 ADD R1,R1,#+384 \ 000000D0 E3FFFFEA B ??init_time_zone_3 344 break; 345 case 16: 346 sprintf(tim_zone, "GMT +03:00"); 347 break; 348 case 17: 349 sprintf(tim_zone, "GMT +03:30"); \ ??init_time_zone_19: \ 000000D4 0C1081E2 ADD R1,R1,#+12 \ 000000D8 E1FFFFEA B ??init_time_zone_3 350 break; 351 case 18: 352 sprintf(tim_zone, "GMT +04:00"); \ ??init_time_zone_20: \ 000000DC 181081E2 ADD R1,R1,#+24 \ 000000E0 DFFFFFEA B ??init_time_zone_3 353 break; 354 case 19: 355 sprintf(tim_zone, "GMT +04:30"); \ ??init_time_zone_21: \ 000000E4 241081E2 ADD R1,R1,#+36 \ 000000E8 DDFFFFEA B ??init_time_zone_3 356 break; 357 case 20: 358 sprintf(tim_zone, "GMT +05:00"); \ ??init_time_zone_22: \ 000000EC 301081E2 ADD R1,R1,#+48 \ 000000F0 DBFFFFEA B ??init_time_zone_3 359 break; 360 case 21: 361 sprintf(tim_zone, "GMT +05:30"); \ ??init_time_zone_23: \ 000000F4 3C1081E2 ADD R1,R1,#+60 \ 000000F8 D9FFFFEA B ??init_time_zone_3 362 break; 363 case 22: 364 sprintf(tim_zone, "GMT +05:45"); \ ??init_time_zone_24: \ 000000FC 481081E2 ADD R1,R1,#+72 \ 00000100 D7FFFFEA B ??init_time_zone_3 365 break; 366 case 23: 367 sprintf(tim_zone, "GMT +06:00"); \ ??init_time_zone_25: \ 00000104 541081E2 ADD R1,R1,#+84 \ 00000108 D5FFFFEA B ??init_time_zone_3 368 break; 369 case 24: 370 sprintf(tim_zone, "GMT +06:30"); \ ??init_time_zone_26: \ 0000010C 601081E2 ADD R1,R1,#+96 \ 00000110 D3FFFFEA B ??init_time_zone_3 371 break; 372 case 25: 373 sprintf(tim_zone, "GMT +07:00"); \ ??init_time_zone_27: \ 00000114 6C1081E2 ADD R1,R1,#+108 \ 00000118 D1FFFFEA B ??init_time_zone_3 374 break; 375 case 26: 376 sprintf(tim_zone, "GMT +08:00"); \ ??init_time_zone_28: \ 0000011C 781081E2 ADD R1,R1,#+120 \ 00000120 CFFFFFEA B ??init_time_zone_3 377 break; 378 case 27: 379 sprintf(tim_zone, "GMT +09:00"); \ ??init_time_zone_29: \ 00000124 841081E2 ADD R1,R1,#+132 \ 00000128 CDFFFFEA B ??init_time_zone_3 380 break; 381 case 28: 382 sprintf(tim_zone, "GMT +09:30"); \ ??init_time_zone_30: \ 0000012C 901081E2 ADD R1,R1,#+144 \ 00000130 CBFFFFEA B ??init_time_zone_3 383 break; 384 case 29: 385 sprintf(tim_zone, "GMT +10:00"); \ ??init_time_zone_31: \ 00000134 9C1081E2 ADD R1,R1,#+156 \ 00000138 C9FFFFEA B ??init_time_zone_3 386 break; 387 case 30: 388 sprintf(tim_zone, "GMT +11:00"); \ ??init_time_zone_32: \ 0000013C A81081E2 ADD R1,R1,#+168 \ 00000140 C7FFFFEA B ??init_time_zone_3 389 break; 390 case 31: 391 sprintf(tim_zone, "GMT +12:00"); \ ??init_time_zone_33: \ 00000144 B41081E2 ADD R1,R1,#+180 \ 00000148 C5FFFFEA B ??init_time_zone_3 392 break; 393 case 32: 394 sprintf(tim_zone, "GMT +13:00"); \ ??init_time_zone_34: \ 0000014C C01081E2 ADD R1,R1,#+192 \ 00000150 160000EF SWI +22 395 break; 396 } 397 } \ ??init_time_zone_35: \ 00000154 0080BDE8 POP {PC} ;; return \ ??init_time_zone_1: \ 00000158 ........ DC32 time_zone \ 0000015C ........ DC32 S_ICONS + 6236 \ 00000160 ........ DC32 `?` 398 399 400 //------------------------ AUTO CHANGE STATUS ------------------------------// 401 402 void SetIconBarHandler(); 403 GBSTMR autoChangeStatus; 404 #pragma inline 405 static unsigned int GetStatusByIndex(int pos) 406 { 407 switch(pos) 408 { 409 case 1: 410 return IS_ONLINE; 411 case 2: 412 return IS_AWAY; 413 case 3: 414 return IS_NA; 415 case 4: 416 return IS_DND; 417 case 5: 418 return IS_OCCUPIED; 419 case 6: 420 return IS_FFC; 421 case 7: 422 return IS_INVISIBLE; 423 case 8: 424 return IS_DEPRESSION; 425 case 9: 426 return IS_EVIL; 427 case 10: 428 return IS_HOME; 429 case 11: 430 return IS_LUNCH; 431 case 12: 432 return IS_WORK; 433 } 434 return IS_UNKNOWN; 435 } 436 \ In segment CODE, align 4, keep-with-next 437 void AutoChangeStatus_timer()//Таймер автосмены статуса 438 { \ AutoChangeStatus_timer: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 439 TTime tt; 440 GetDateTime(NULL,&tt); \ 00000008 0D10A0E1 MOV R1,SP 441 442 if(status_1!=0 && tt.hour==tm_status_1.hour && tt.min==tm_status_1.min) \ 0000000C ........ LDR R4,??DataTable26 ;; 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 443 { 444 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 800284E5 STR R0,[R4, #+640] 445 set_my_status(); \ 000000DC ........ BL set_my_status 446 } 447 448 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 449 { 450 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 800284E5 STR R0,[R4, #+640] 451 set_my_status(); \ 000001A0 ........ BL set_my_status 452 } 453 454 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 455 { 456 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 800284E5 STR R0,[R4, #+640] 457 set_my_status(); \ 00000264 ........ BL set_my_status 458 } 459 460 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 461 { 462 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 800284E5 STR R0,[R4, #+640] 463 set_my_status(); \ 00000328 ........ BL set_my_status 464 } 465 466 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 467 { 468 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 805284E5 STR R5,[R4, #+640] 469 set_my_status(); \ 000003E4 ........ BL set_my_status 470 } 471 #ifdef ELKA 472 SetIconBarHandler(); 473 #endif 474 475 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 7C00A0E3 MOV R0,#+124 \ 000003F4 600D80E3 ORR R0,R0,#0x1800 \ 000003F8 040080E0 ADD R0,R0,R4 \ 000003FC 4D0000EF SWI +77 476 } \ 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 477 //=================================away_msg=============== 478 //////////////////////////////////////////tozhe dlja auto ping/////////////// 479 \ In segment CODE, align 4, keep-with-next 480 void DrawPing(void *canv) 481 { 482 PrintField(Ping_X,Ping_Y, PINGO, align, fonto, spaco1); \ DrawPing: \ 00000000 ........ LDR R1,??DataTable24 ;; spaco1 \ 00000004 ........ LDR R0,??DataTable26 ;; S_ICONS \ 00000008 00402DE9 PUSH {LR} \ 0000000C 001091E5 LDR R1,[R1, #+0] \ 00000010 02002DE9 PUSH {R1} \ 00000014 ........ LDR R1,??DataTable25 ;; fonto \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 02002DE9 PUSH {R1} \ 00000020 383290E5 LDR R3,[R0, #+568] \ 00000024 F410A0E3 MOV R1,#+244 \ 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 483 } \ 00000044 0380BDE8 POP {R0,R1,PC} ;; return \ ??DrawPing_0: \ 00000048 ........ DC32 Ping_Y \ 0000004C ........ DC32 Ping_X 484 485 //////////////////////////////////////////tozhe dlja auto ping/////////////// 486 487 GBSTMR remind_tmr; 488 volatile int vibra_count; 489 #ifdef ELKA 490 void SLI_Off(void); 491 #endif 492 void start_vibra2(void); 493 494 //////////////////////////reminder timer///////////////////////// 495 \ In segment CODE, align 4, keep-with-next 496 void Remind_Timer2() 497 { \ Remind_Timer2: \ 00000000 10402DE9 PUSH {R4,LR} 498 if (total_unread) \ 00000004 ........ LDR R4,??DataTable26 ;; S_ICONS \ 00000008 080394E5 LDR R0,[R4, #+776] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD08 POPEQ {R4,PC} 499 { 500 vibra_count=Vibra_cc; \ 00000014 24009FE5 LDR R0,??Remind_Timer2_0 ;; Vibra_cc \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C D40284E5 STR R0,[R4, #+724] 501 start_vibra2(); \ 00000020 ........ BL start_vibra2 502 GBS_StartTimerProc(&remind_tmr, 6480, Remind_Timer2); \ 00000024 ........ LDR R2,??DataTable14 ;; Remind_Timer2 \ 00000028 5010A0E3 MOV R1,#+80 \ 0000002C 641D81E3 ORR R1,R1,#0x1900 \ 00000030 C40041E2 SUB R0,R1,#+196 \ 00000034 040080E0 ADD R0,R0,R4 \ 00000038 4D0000EF SWI +77 503 } 504 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??Remind_Timer2_0: \ 00000040 ........ DC32 Vibra_cc 505 \ In segment CODE, align 4, keep-with-next 506 void Reminder_timer() 507 { 508 GBS_StartTimerProc(&remind_tmr, 6480, Remind_Timer2); \ Reminder_timer: \ 00000000 ........ LDR R2,??DataTable14 ;; Remind_Timer2 \ 00000004 10009FE5 LDR R0,??Reminder_timer_0 ;; S_ICONS + 6284 \ 00000008 00402DE9 PUSH {LR} \ 0000000C 5010A0E3 MOV R1,#+80 \ 00000010 641D81E3 ORR R1,R1,#0x1900 \ 00000014 4D0000EF SWI +77 509 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??Reminder_timer_0: \ 0000001C ........ DC32 S_ICONS + 6284 510 //////////////////////////reminder timer///////////////////////// 511 512 //////////////////////////uptime////////////////////////// 513 int Is_UPTIME_On; 514 int uptimeHour; 515 int uptimeMin; 516 int uptimeSec; 517 \ In segment CODE, align 4, keep-with-next 518 void UptimeMinHour() 519 { 520 uptimeSec++; \ UptimeMinHour: \ 00000000 ........ LDR R0,??DataTable26 ;; S_ICONS \ 00000004 B01290E5 LDR R1,[R0, #+688] 521 if(uptimeSec==60) \ 00000008 AC2290E5 LDR R2,[R0, #+684] \ 0000000C 011081E2 ADD R1,R1,#+1 \ 00000010 3C0051E3 CMP R1,#+60 522 { 523 uptimeSec=0; \ 00000014 0010A003 MOVEQ R1,#+0 524 uptimeMin++; \ 00000018 01208202 ADDEQ R2,R2,#+1 \ 0000001C B01280E5 STR R1,[R0, #+688] 525 } 526 if(uptimeMin==60) \ 00000020 3C0052E3 CMP R2,#+60 \ 00000024 0300001A BNE ??UptimeMinHour_0 527 { 528 uptimeMin=0; 529 uptimeHour++; \ 00000028 A81290E5 LDR R1,[R0, #+680] \ 0000002C 0020A0E3 MOV R2,#+0 \ 00000030 011081E2 ADD R1,R1,#+1 \ 00000034 A81280E5 STR R1,[R0, #+680] \ ??UptimeMinHour_0: \ 00000038 AC2280E5 STR R2,[R0, #+684] 530 } 531 } \ 0000003C 1EFF2FE1 BX LR ;; return 532 533 GBSTMR uptime_tmr; 534 #ifdef NEWSGOLD 535 GBSTMR tracktmr; 536 int tracktimer; 537 #endif 538 \ In segment CODE, align 4, keep-with-next 539 void upTime() 540 { \ upTime: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 541 if(connect_state==3) \ 00000004 ........ LDR R4,??DataTable26 ;; S_ICONS \ 00000008 84609FE5 LDR R6,??upTime_0 ;; upTime \ 0000000C 9C00A0E3 MOV R0,#+156 \ 00000010 600D80E3 ORR R0,R0,#0x1800 \ 00000014 045080E0 ADD R5,R0,R4 \ 00000018 E40294E5 LDR R0,[R4, #+740] \ 0000001C 0070A0E3 MOV R7,#+0 \ 00000020 030050E3 CMP R0,#+3 \ 00000024 0F00001A BNE ??upTime_1 542 { 543 UptimeMinHour(); \ 00000028 ........ BL UptimeMinHour 544 #ifdef NEWSGOLD 545 if (tracktimer>=10)/*&&(_GetPlayStatus()!=1))*/ \ 0000002C B40294E5 LDR R0,[R4, #+692] \ 00000030 0A0050E3 CMP R0,#+10 \ 00000034 070000BA BLT ??upTime_2 546 { 547 GBS_StartTimerProc(&tracktmr, 216*5, GetTags); \ 00000038 ........ LDR R2,??DataTable17 ;; GetTags \ 0000003C 3810A0E3 MOV R1,#+56 \ 00000040 401E81E3 ORR R1,R1,#0x400 \ 00000044 AC00A0E3 MOV R0,#+172 \ 00000048 600D80E3 ORR R0,R0,#0x1800 \ 0000004C 040080E0 ADD R0,R0,R4 \ 00000050 4D0000EF SWI +77 548 tracktimer=0; \ 00000054 B47284E5 STR R7,[R4, #+692] 549 } 550 tracktimer++; \ ??upTime_2: \ 00000058 B40294E5 LDR R0,[R4, #+692] \ 0000005C 010080E2 ADD R0,R0,#+1 \ 00000060 B40284E5 STR R0,[R4, #+692] 551 #endif 552 GBS_StartTimerProc(&uptime_tmr, 216, upTime); \ 00000064 050000EA B ??upTime_3 553 } 554 else 555 { 556 if(!Pause_Time) \ ??upTime_1: \ 00000068 28009FE5 LDR R0,??upTime_0+0x4 ;; Pause_Time \ 0000006C 000090E5 LDR R0,[R0, #+0] \ 00000070 000050E3 CMP R0,#+0 557 { 558 uptimeHour=0; \ 00000074 A8728405 STREQ R7,[R4, #+680] 559 uptimeMin=0; \ 00000078 AC728405 STREQ R7,[R4, #+684] 560 uptimeSec=0; \ 0000007C B0728405 STREQ R7,[R4, #+688] 561 } 562 GBS_StartTimerProc(&uptime_tmr, 216, upTime); \ ??upTime_3: \ 00000080 0620A0E1 MOV R2,R6 \ 00000084 D810A0E3 MOV R1,#+216 \ 00000088 0500A0E1 MOV R0,R5 \ 0000008C 4D0000EF SWI +77 563 } 564 } \ 00000090 F080BDE8 POP {R4-R7,PC} ;; return \ ??upTime_0: \ 00000094 ........ DC32 upTime \ 00000098 ........ DC32 Pause_Time 565 566 char onlineTime[128]; \ In segment CODE, align 4, keep-with-next 567 void DrawOnlineTime(void *canv) 568 { 569 if(connect_state==3) \ DrawOnlineTime: \ 00000000 ........ LDR R1,??DataTable18 ;; `?` \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 ........ LDR R4,??DataTable26 ;; S_ICONS \ 0000000C BC00A0E3 MOV R0,#+188 \ 00000010 600D80E3 ORR R0,R0,#0x1800 \ 00000014 045080E0 ADD R5,R0,R4 \ 00000018 E40294E5 LDR R0,[R4, #+740] \ 0000001C 030050E3 CMP R0,#+3 \ 00000020 0700001A BNE ??DrawOnlineTime_0 570 { 571 sprintf(onlineTime,"Online: %02d:%02d:%02d", uptimeHour, uptimeMin, uptimeSec); \ 00000024 B00294E5 LDR R0,[R4, #+688] \ 00000028 01002DE9 PUSH {R0} \ 0000002C AC3294E5 LDR R3,[R4, #+684] \ 00000030 A82294E5 LDR R2,[R4, #+680] \ 00000034 0500A0E1 MOV R0,R5 \ 00000038 160000EF SWI +22 \ 0000003C 04D08DE2 ADD SP,SP,#+4 \ 00000040 020000EA B ??DrawOnlineTime_1 572 } 573 else 574 sprintf(onlineTime,"Offline"); \ ??DrawOnlineTime_0: \ 00000044 181081E2 ADD R1,R1,#+24 \ 00000048 0500A0E1 MOV R0,R5 \ 0000004C 160000EF SWI +22 575 PrintField(onlineTime_x,onlineTime_y, onlineTime, align, fonto, spaco1); \ ??DrawOnlineTime_1: \ 00000050 ........ LDR R0,??DataTable24 ;; spaco1 \ 00000054 0520A0E1 MOV R2,R5 \ 00000058 000090E5 LDR R0,[R0, #+0] \ 0000005C 01002DE9 PUSH {R0} \ 00000060 ........ LDR R0,??DataTable25 ;; fonto \ 00000064 000090E5 LDR R0,[R0, #+0] \ 00000068 01002DE9 PUSH {R0} \ 0000006C 383294E5 LDR R3,[R4, #+568] \ 00000070 10009FE5 LDR R0,??DrawOnlineTime_2 ;; onlineTime_y \ 00000074 001090E5 LDR R1,[R0, #+0] \ 00000078 0C009FE5 LDR R0,??DrawOnlineTime_2+0x4 ;; onlineTime_x \ 0000007C 000090E5 LDR R0,[R0, #+0] \ 00000080 ........ _BLF PrintField,??PrintField??rA 576 } \ 00000084 3380BDE8 POP {R0,R1,R4,R5,PC} ;; return \ ??DrawOnlineTime_2: \ 00000088 ........ DC32 onlineTime_y \ 0000008C ........ DC32 onlineTime_x 577 578 579 //---------------------- Вывод времени на идле ---------------------// 580 581 \ In segment CODE, align 4, keep-with-next 582 void DrawAutoMSG(void *canv) 583 { \ DrawAutoMSG: \ 00000000 10402DE9 PUSH {R4,LR} 584 char awayTime[64]; 585 if(away_m && showAwayIdle) \ 00000004 ........ LDR R4,??DataTable26 ;; S_ICONS \ 00000008 40D04DE2 SUB SP,SP,#+64 \ 0000000C 940294E5 LDR R0,[R4, #+660] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 1700000A BEQ ??DrawAutoMSG_0 \ 00000018 ........ LDR R0,??DataTable23 ;; showAwayIdle \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 000050E3 CMP R0,#+0 \ 00000024 1300000A BEQ ??DrawAutoMSG_0 586 { 587 sprintf(awayTime,"Away from [%s]",away_msg_time_dace); \ 00000028 50109FE5 LDR R1,??DrawAutoMSG_1 ;; `?` \ 0000002C 4C00A0E3 MOV R0,#+76 \ 00000030 600D80E3 ORR R0,R0,#0x1800 \ 00000034 042080E0 ADD R2,R0,R4 \ 00000038 0D00A0E1 MOV R0,SP \ 0000003C 160000EF SWI +22 588 PrintField(auto_x,auto_y, awayTime, align, fonto, spaco1); \ 00000040 ........ LDR R0,??DataTable24 ;; spaco1 \ 00000044 000090E5 LDR R0,[R0, #+0] \ 00000048 01002DE9 PUSH {R0} \ 0000004C ........ LDR R0,??DataTable25 ;; fonto \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 01002DE9 PUSH {R0} \ 00000058 383294E5 LDR R3,[R4, #+568] \ 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 589 } 590 } \ ??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 591 592 593 //---------------------------- Input away msg ---------------------------// 594 595 //Вводим сообщение какое хотим,а не то что прописали в конфиге 596 int input_awaymsg_id; 597 598 const HEADER_DESC input_awaymsg_hdr={0,0,131,21,NULL,(int)"Ввод автосообщения",LGP_NULL}; 599 void UpdateCLheader(void); \ In segment CODE, align 4, keep-with-next 600 int input_awaymsg_onkey(GUI *data, GUI_MSG *msg) 601 { \ input_awaymsg_onkey: \ 00000000 F0432DE9 PUSH {R4-R9,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 602 WSHDR *ws; 603 if (msg->keys==0x0FFF || msg->keys==VOL_DOWN_BUTTON) \ 00000008 ........ LDR R4,??DataTable26 ;; S_ICONS \ 0000000C 0160A0E1 MOV R6,R1 \ 00000010 F210D6E1 LDRSH R1,[R6, #+2] \ 00000014 0050A0E3 MOV R5,#+0 \ 00000018 FF20A0E3 MOV R2,#+255 \ 0000001C F02E82E3 ORR R2,R2,#0xF00 \ 00000020 020051E1 CMP R1,R2 \ 00000024 0E005113 CMPNE R1,#+14 \ 00000028 2100001A BNE ??input_awaymsg_onkey_0 604 { 605 EDITCONTROL ec; 606 ExtractEditControl(data,2,&ec); 607 ws=ec.pWS; 608 zeromem(awayMsg,256); \ 0000002C ........ LDR R8,??DataTable29 ;; awayMsg \ 00000030 0D20A0E1 MOV R2,SP \ 00000034 0210A0E3 MOV R1,#+2 \ 00000038 690100EF SWI +361 \ 0000003C 28709DE5 LDR R7,[SP, #+40] \ 00000040 401FA0E3 MOV R1,#+256 \ 00000044 0800A0E1 MOV R0,R8 \ 00000048 1D0100EF SWI +285 609 int i=0; 610 for(i=0;iwsbody[0];i++) \ 0000004C 000097E5 LDR R0,[R7, #+0] \ 00000050 0090A0E3 MOV R9,#+0 \ 00000054 B000D0E1 LDRH R0,[R0, #+0] \ 00000058 000050E3 CMP R0,#+0 \ 0000005C 0500001A BNE ??input_awaymsg_onkey_1 \ 00000060 080000EA B ??input_awaymsg_onkey_2 611 awayMsg[i]=char16to8(ws->wsbody[i+1]); \ ??input_awaymsg_onkey_3: \ 00000064 890080E0 ADD R0,R0,R9, LSL #+1 \ 00000068 B200D0E1 LDRH R0,[R0, #+2] \ 0000006C ........ _BLF char16to8,??char16to8??rA \ 00000070 0800C9E7 STRB R0,[R9, +R8] \ 00000074 019089E2 ADD R9,R9,#+1 \ ??input_awaymsg_onkey_1: \ 00000078 000097E5 LDR R0,[R7, #+0] \ 0000007C B010D0E1 LDRH R1,[R0, #+0] \ 00000080 010059E1 CMP R9,R1 \ 00000084 F6FFFFBA BLT ??input_awaymsg_onkey_3 612 awayMsg[i]=0; 613 614 #ifdef kluchnik2 615 char *s; 616 ExtractEditControl(data,4,&ec); 617 ws=ec.pWS; 618 s=malloc(ws->wsbody[0]); 619 *s=0; 620 for(i=0;iwsbody[0];i++) 621 *(s+i)=char16to8(ws->wsbody[i+1]); 622 *(s+i)=0; 623 strcat(awayMsg,s); 624 mfree(s); 625 #endif 626 msg_away_timer=AUTO_ENGADE; \ ??input_awaymsg_onkey_2: \ 00000088 ........ LDR R0,??DataTable28 ;; AUTO_ENGADE \ 0000008C 0850C9E7 STRB R5,[R9, +R8] \ 00000090 000090E5 LDR R0,[R0, #+0] \ 00000094 900284E5 STR R0,[R4, #+656] 627 away_m=1; \ 00000098 0100A0E3 MOV R0,#+1 \ 0000009C 940284E5 STR R0,[R4, #+660] 628 away_timer(); \ 000000A0 ........ BL away_timer 629 UpdateCLheader(); \ 000000A4 ........ BL UpdateCLheader 630 GeneralFunc_flag1(input_awaymsg_id,1); \ 000000A8 B80294E5 LDR R0,[R4, #+696] \ 000000AC 0110A0E3 MOV R1,#+1 \ 000000B0 3D0100EF SWI +317 631 // GeneralFuncF1(1); 632 } 633 634 if(msg->keys==LEFT_SOFT || msg->keys==RED_BUTTON) \ ??input_awaymsg_onkey_0: \ 000000B4 F200D6E1 LDRSH R0,[R6, #+2] \ 000000B8 010050E3 CMP R0,#+1 \ 000000BC 0C005013 CMPNE R0,#+12 \ 000000C0 0900001A BNE ??input_awaymsg_onkey_4 635 { 636 msg_away_timer=0; 637 away_m=0; 638 if(change_back_status) \ 000000C4 9C0294E5 LDR R0,[R4, #+668] \ 000000C8 905284E5 STR R5,[R4, #+656] \ 000000CC 945284E5 STR R5,[R4, #+660] \ 000000D0 000050E3 CMP R0,#+0 \ 000000D4 0300000A BEQ ??input_awaymsg_onkey_5 639 { 640 CurrentStatus=status_rem; \ 000000D8 980294E5 LDR R0,[R4, #+664] \ 000000DC 800284E5 STR R0,[R4, #+640] 641 set_my_status(); \ 000000E0 ........ BL set_my_status 642 change_back_status=0; \ 000000E4 9C5284E5 STR R5,[R4, #+668] 643 } 644 UpdateCLheader(); \ ??input_awaymsg_onkey_5: \ 000000E8 ........ BL UpdateCLheader 645 } 646 return(0); \ ??input_awaymsg_onkey_4: \ 000000EC 0000A0E3 MOV R0,#+0 \ 000000F0 2CD08DE2 ADD SP,SP,#+44 \ 000000F4 F083BDE8 POP {R4-R9,PC} ;; return 647 } 648 \ In segment CODE, align 4, keep-with-next 649 void input_awaymsg_ghook(GUI *gui, int cmd) 650 { \ input_awaymsg_ghook: \ 00000000 00402DE9 PUSH {LR} 651 static SOFTKEY_DESC sk={0x0FFF,0x0000,(int)"Сохранить"}; 652 if (cmd==7) \ 00000004 070051E3 CMP R1,#+7 \ 00000008 0300001A BNE ??input_awaymsg_ghook_0 653 { 654 SetSoftKey(gui,&sk,SET_SOFT_KEY_N); \ 0000000C 2C109FE5 LDR R1,??input_awaymsg_ghook_1 ;; ??sk \ 00000010 0020A0E3 MOV R2,#+0 \ 00000014 680100EF SWI +360 \ 00000018 0080BDE8 POP {PC} 655 } 656 if(cmd==0xA) \ ??input_awaymsg_ghook_0: \ 0000001C 0A0051E3 CMP R1,#+10 \ 00000020 0100001A BNE ??input_awaymsg_ghook_2 657 { 658 DisableIDLETMR(); // Отключаем таймер выхода по таймауту \ 00000024 7F0100EF SWI +383 \ 00000028 0080BDE8 POP {PC} 659 } 660 if (cmd==0x0C) \ ??input_awaymsg_ghook_2: \ 0000002C 0C0051E3 CMP R1,#+12 \ 00000030 0080BD18 POPNE {PC} 661 { 662 EDIT_SetCursorPos(gui,1); \ 00000034 0110A0E3 MOV R1,#+1 \ 00000038 D40100EF SWI +468 663 } 664 if(cmd==0x03){} 665 } \ 0000003C 0080BDE8 POP {PC} ;; return \ ??input_awaymsg_ghook_1: \ 00000040 ........ DC32 ??sk 666 \ In segment CODE, align 4, keep-with-next 667 void input_awaymsg_locret(void){} \ input_awaymsg_locret: \ 00000000 1EFF2FE1 BX LR ;; return 668 669 SOFTKEY_DESC input_awaymsg_sk[]= 670 { 671 {0x0018,0x0000,(int)"Лев"}, 672 {0x0001,0x0000,(int)"Прав"}, 673 {0x003D,0x0000,(int)LGP_DOIT_PIC} 674 }; 675 676 SOFTKEYSTAB input_awaymsg_skt= 677 { 678 input_awaymsg_sk,0 679 }; 680 681 const INPUTDIA_DESC input_awaymsg_desc= 682 { 683 1, 684 input_awaymsg_onkey, 685 input_awaymsg_ghook, 686 (void *)input_awaymsg_locret, 687 0, 688 &input_awaymsg_skt, 689 {0,NULL,NULL,NULL}, 690 FONT_SMALL, 691 100, 692 101, 693 0, 694 0x00000000, 695 0x40000000 696 }; 697 \ In segment CODE, align 4, keep-with-next 698 void InputAwayMsg() 699 { \ InputAwayMsg: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 700 WSHDR *wss=AllocWS(256); 701 void *ma=malloc_adr(); 702 void *eq=AllocEQueue(ma, mfree_adr()); 703 EDITCONTROL ec; 704 PrepareEditControl(&ec); 705 wsprintf(wss,"%t","Сообщение:\n"); \ 00000004 28519FE5 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 382085E2 ADD R2,R5,#+56 \ 00000040 3A1F8FE2 ADR R1,??InputAwayMsg_0 ;; "%t" \ 00000044 0600A0E1 MOV R0,R6 \ 00000048 240100EF SWI +292 706 ConstructEditControl(&ec,ECT_HEADER,ECF_NORMAL_STR,wss,32); \ 0000004C 2000A0E3 MOV R0,#+32 \ 00000050 01002DE9 PUSH {R0} \ 00000054 0630A0E1 MOV R3,R6 \ 00000058 0020A0E3 MOV R2,#+0 \ 0000005C 0110A0E3 MOV R1,#+1 \ 00000060 04008DE2 ADD R0,SP,#+4 \ 00000064 650100EF SWI +357 707 AddEditControlToEditQend(eq,&ec,ma); \ 00000068 0720A0E1 MOV R2,R7 \ 0000006C 04108DE2 ADD R1,SP,#+4 \ 00000070 0400A0E1 MOV R0,R4 \ 00000074 660100EF SWI +358 708 709 PrepareEditControl(&ec); \ 00000078 04008DE2 ADD R0,SP,#+4 \ 0000007C 640100EF SWI +356 710 CutWSTR(wss,0); \ 00000080 0010A0E3 MOV R1,#+0 \ 00000084 0600A0E1 MOV R0,R6 \ 00000088 260100EF SWI +294 711 ascii2ws(wss,awayMsg); \ 0000008C ........ LDR R1,??DataTable29 ;; awayMsg \ 00000090 0600A0E1 MOV R0,R6 \ 00000094 ........ _BLF ascii2ws,??ascii2ws??rA 712 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL,wss,255); \ 00000098 FF00A0E3 MOV R0,#+255 \ 0000009C 01002DE9 PUSH {R0} \ 000000A0 0630A0E1 MOV R3,R6 \ 000000A4 4020A0E3 MOV R2,#+64 \ 000000A8 0310A0E3 MOV R1,#+3 \ 000000AC 08008DE2 ADD R0,SP,#+8 \ 000000B0 650100EF SWI +357 713 AddEditControlToEditQend(eq,&ec,ma); \ 000000B4 0720A0E1 MOV R2,R7 \ 000000B8 08108DE2 ADD R1,SP,#+8 \ 000000BC 0400A0E1 MOV R0,R4 \ 000000C0 660100EF SWI +358 714 #ifdef kluchnik2 715 PrepareEditControl(&ec); 716 wsprintf(wss,"%t","Сообщение 2:\n"); 717 ConstructEditControl(&ec,ECT_HEADER,ECF_NORMAL_STR,wss,32); 718 AddEditControlToEditQend(eq,&ec,ma); 719 720 ascii2ws(wss,"когда смогу отвечу:)"); 721 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL,wss,255); 722 AddEditControlToEditQend(eq,&ec,ma); 723 #endif 724 patch_header(&input_awaymsg_hdr); \ 000000C4 440085E2 ADD R0,R5,#+68 \ 000000C8 ........ _BLF patch_header,??patch_header??rA 725 patch_input(&input_awaymsg_desc); \ 000000CC 0000A0E3 MOV R0,#+0 \ 000000D0 B801C5E1 STRH R0,[R5, #+24] \ 000000D4 8A8100EF SWI +33162 \ 000000D8 010080E2 ADD R0,R0,#+1 \ 000000DC BA01C5E1 STRH R0,[R5, #+26] \ 000000E0 888100EF SWI +33160 \ 000000E4 010040E2 SUB R0,R0,#+1 \ 000000E8 BC01C5E1 STRH R0,[R5, #+28] \ 000000EC 898100EF SWI +33161 \ 000000F0 0060A0E1 MOV R6,R0 \ 000000F4 8B8100EF SWI +33163 \ 000000F8 000046E0 SUB R0,R6,R0 \ 000000FC 010040E2 SUB R0,R0,#+1 \ 00000100 BE01C5E1 STRH R0,[R5, #+30] 726 727 input_awaymsg_id=CreateInputTextDialog(&input_awaymsg_desc,&input_awaymsg_hdr,eq,1,0);//создаем диалоговое окно \ 00000104 0000A0E3 MOV R0,#+0 \ 00000108 01002DE9 PUSH {R0} \ 0000010C 0130A0E3 MOV R3,#+1 \ 00000110 0420A0E1 MOV R2,R4 \ 00000114 441085E2 ADD R1,R5,#+68 \ 00000118 0500A0E1 MOV R0,R5 \ 0000011C 670100EF SWI +359 \ 00000120 10109FE5 LDR R1,??InputAwayMsg_0+0x8 ;; S_ICONS + 696 \ 00000124 000081E5 STR R0,[R1, #+0] 728 } \ 00000128 38D08DE2 ADD SP,SP,#+56 \ 0000012C F080BDE8 POP {R4-R7,PC} ;; return \ ??InputAwayMsg_0: \ 00000130 25740000 DC8 "%t",+0 \ 00000134 ........ DC32 input_awaymsg_desc \ 00000138 ........ DC32 S_ICONS + 696 729 730 731 //////////////////////////uptime////////////////////////// 732 #ifdef ELKA 733 GBSTMR sli_tmr; 734 void SLI_On() 735 { 736 if(Is_SLI_On) 737 SLI_SetState(1); 738 GBS_StartTimerProc(&sli_tmr, IN_TICKS(2) / 20, SLI_Off); 739 } 740 741 void SLI_Off() 742 { 743 SLI_SetState(2); 744 if(total_unread) 745 GBS_StartTimerProc(&sli_tmr, IN_TICKS(2) / 20, SLI_On); //26*SLI_time2 746 else 747 SLI_SetState(0); 748 } 749 750 void SLI_check() 751 { 752 if (total_unread) 753 SLI_On(); 754 } 755 756 void SLI_Timer() 757 { 758 GBS_StartTimerProc(&sli_tmr, 262, SLI_check); //262*SLI_time 759 } 760 #endif 761 \ In segment CODE, align 4, keep-with-next 762 void setup_ICONS(void) 763 { \ setup_ICONS: \ 00000000 30402DE9 PUSH {R4,R5,LR} 764 int i=0; \ 00000004 ........ LDR R5,??DataTable32 ;; S_ICONS \ 00000008 0040A0E3 MOV R4,#+0 765 do 766 { 767 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,??DataTable31 ;; ICON_PATH \ 00000028 ........ _BLF MakeGlobalString,??MakeGlobalString??rA \ 0000002C 040185E7 STR R0,[R5, +R4, LSL #+2] 768 i++; \ ??setup_ICONS_1: \ 00000030 014084E2 ADD R4,R4,#+1 769 } 770 while(i>2,stop_vibra); \ 0000004C 3610A0E3 MOV R1,#+54 \ 00000050 000000EA B ??start_vibra_2 1048 else 1049 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,stop_vibra); \ ??start_vibra_1: \ 00000054 6C10A0E3 MOV R1,#+108 \ ??start_vibra_2: \ 00000058 4D0000EF SWI +77 1050 } 1051 } \ 0000005C 1080BDE8 POP {R4,PC} ;; return \ ??start_vibra_0: \ 00000060 ........ DC32 stop_vibra 1052 \ In segment CODE, align 4, keep-with-next 1053 void stop_vibra(void) 1054 { \ stop_vibra: \ 00000000 00402DE9 PUSH {LR} 1055 SetVibration(0); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 7C0000EF SWI +124 1056 if (--vibra_count) \ 0000000C ........ LDR R0,??DataTable57 ;; S_ICONS \ 00000010 D41290E5 LDR R1,[R0, #+724] \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 D41280E5 STR R1,[R0, #+724] \ 0000001C 0080BD08 POPEQ {PC} 1057 { 1058 if(VIBR_TYPE) \ 00000020 2C209FE5 LDR R2,??stop_vibra_0 ;; start_vibra \ 00000024 4C10A0E3 MOV R1,#+76 \ 00000028 681D81E3 ORR R1,R1,#0x1A00 \ 0000002C 000081E0 ADD R0,R1,R0 \ 00000030 ........ LDR R1,??DataTable49 ;; VIBR_TYPE \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 0100000A BEQ ??stop_vibra_1 1059 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>5,start_vibra); \ 00000040 0610A0E3 MOV R1,#+6 \ 00000044 000000EA B ??stop_vibra_2 1060 else 1061 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,start_vibra); \ ??stop_vibra_1: \ 00000048 6C10A0E3 MOV R1,#+108 \ ??stop_vibra_2: \ 0000004C 4D0000EF SWI +77 1062 } 1063 } \ 00000050 0080BDE8 POP {PC} ;; return \ ??stop_vibra_0: \ 00000054 ........ DC32 start_vibra 1064 \ In segment CODE, align 4, keep-with-next 1065 void start_vibra2(void) 1066 { 1067 void stop_vibra2(void); 1068 1069 SetVibration(vibraPower); \ start_vibra2: \ 00000000 ........ LDR R0,??DataTable46 ;; vibraPower \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 7C0000EF SWI +124 1070 if(VIBR_TYPE) \ 00000010 ........ LDR R1,??DataTable49 ;; VIBR_TYPE \ 00000014 18009FE5 LDR R0,??start_vibra2_0 ;; S_ICONS + 6732 \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 14209FE5 LDR R2,??start_vibra2_0+0x4 ;; stop_vibra2 \ 00000020 000051E3 CMP R1,#+0 1071 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>2,stop_vibra2); \ 00000024 3610A013 MOVNE R1,#+54 1072 else 1073 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,stop_vibra2); \ 00000028 6C10A003 MOVEQ R1,#+108 \ 0000002C 4D0000EF SWI +77 1074 } \ 00000030 0080BDE8 POP {PC} ;; return \ ??start_vibra2_0: \ 00000034 ........ DC32 S_ICONS + 6732 \ 00000038 ........ DC32 stop_vibra2 1075 \ In segment CODE, align 4, keep-with-next 1076 void stop_vibra2(void) 1077 { \ stop_vibra2: \ 00000000 00402DE9 PUSH {LR} 1078 SetVibration(0); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 7C0000EF SWI +124 1079 if (--vibra_count) \ 0000000C ........ LDR R0,??DataTable57 ;; S_ICONS \ 00000010 D41290E5 LDR R1,[R0, #+724] \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 D41280E5 STR R1,[R0, #+724] \ 0000001C 0080BD08 POPEQ {PC} 1080 { 1081 if(VIBR_TYPE) \ 00000020 2C209FE5 LDR R2,??stop_vibra2_0 ;; start_vibra2 \ 00000024 4C10A0E3 MOV R1,#+76 \ 00000028 681D81E3 ORR R1,R1,#0x1A00 \ 0000002C 000081E0 ADD R0,R1,R0 \ 00000030 ........ LDR R1,??DataTable49 ;; VIBR_TYPE \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 0100000A BEQ ??stop_vibra2_1 1082 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>5,start_vibra2); \ 00000040 0610A0E3 MOV R1,#+6 \ 00000044 000000EA B ??stop_vibra2_2 1083 else 1084 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,start_vibra2); \ ??stop_vibra2_1: \ 00000048 6C10A0E3 MOV R1,#+108 \ ??stop_vibra2_2: \ 0000004C 4D0000EF SWI +77 1085 } 1086 } \ 00000050 0080BDE8 POP {PC} ;; return \ ??stop_vibra2_0: \ 00000054 ........ DC32 start_vibra2 1087 \ In segment CODE, align 4, keep-with-next 1088 void ChangeVibra(void) 1089 { 1090 if (!(Is_Vibra_Enabled=!(Is_Vibra_Enabled))) \ ChangeVibra: \ 00000000 ........ LDR R0,??DataTable57 ;; S_ICONS \ 00000004 00402DE9 PUSH {LR} \ 00000008 781290E5 LDR R1,[R0, #+632] \ 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,??DataTable56 ;; 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 1132 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 1133 if ((fsize=stat.size)<=0) goto L1; \ 00000060 08709DE5 LDR R7,[SP, #+8] \ 00000064 010057E3 CMP R7,#+1 \ 00000068 070000BA BLT ??LoadTemplates_1 1134 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 1135 { 1136 L1: 1137 strcpy(fn+i,"\\0.txt"); \ ??LoadTemplates_1: \ 0000008C 081086E2 ADD R1,R6,#+8 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 1A0000EF SWI +26 1138 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 1139 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 1140 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 1141 } 1142 if (f==-1) return 0; \ ??LoadTemplates_2: \ 000000E0 040058E1 CMP R8,R4 \ 000000E4 F1FFFF0A BEQ ??LoadTemplates_4 1143 p=templates_chars=malloc(fsize+1); \ 000000E8 ........ LDR R4,??DataTable57 ;; S_ICONS \ 000000EC 010087E2 ADD R0,R7,#+1 \ 000000F0 140000EF SWI +20 \ 000000F4 D80284E5 STR R0,[R4, #+728] \ 000000F8 0060A0E1 MOV R6,R0 1144 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] 1145 fclose(f,&ul); \ 00000118 0D10A0E1 MOV R1,SP \ 0000011C 0800A0E1 MOV R0,R8 \ 00000120 0D0000EF SWI +13 1146 i=0; \ 00000124 0070A0E3 MOV R7,#+0 1147 pp=p; \ 00000128 0680A0E1 MOV R8,R6 \ 0000012C 020000EA B ??LoadTemplates_6 1148 for(;;) 1149 { 1150 c=*p; 1151 if (c<32) 1152 { 1153 if (pp&&(pp!=p)) 1154 { 1155 templates_lines=realloc(templates_lines,(i+1)*sizeof(char *)); 1156 templates_lines[i++]=pp; 1157 } 1158 pp=NULL; 1159 if (!c) break; 1160 *p=0; 1161 } 1162 else 1163 { 1164 if (pp==NULL) pp=p; \ ??LoadTemplates_7: \ 00000130 000058E3 CMP R8,#+0 \ 00000134 0680A001 MOVEQ R8,R6 1165 } 1166 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 DC0294E5 LDR R0,[R4, #+732] \ 00000158 01A087E2 ADD R10,R7,#+1 \ 0000015C 0A11A0E1 LSL R1,R10,#+2 \ 00000160 BA0000EF SWI +186 \ 00000164 DC0284E5 STR R0,[R4, #+732] \ 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 1167 } 1168 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 `?` 1169 } 1170 1171 1172 1173 //---------------------- AUTOBOT MESSAGE -------------------------// 1174 1175 1176 #ifdef kluchnik 1177 char *bot_chars; //Собственно файл 1178 char **bot_lines; //Массив указателей на строки 1179 1180 void FreeBotMessage(void) 1181 { 1182 if (bot_lines) mfree(bot_lines); 1183 if (bot_chars) mfree(bot_chars); 1184 bot_lines=NULL; 1185 bot_chars=NULL; 1186 } 1187 1188 int LoadBotMessage(unsigned int uin) 1189 { 1190 FSTATS stat; 1191 char fn[256]; 1192 int f; 1193 unsigned int ul; 1194 int i; 1195 int fsize; 1196 char *p; 1197 char *pp; 1198 int c; 1199 FreeBotMessage(); 1200 strcpy(fn,TEMPLATES_PATH); 1201 i=strlen(fn); 1202 sprintf(fn+i,"\\bot_%d.txt",uin); 1203 if (GetFileStats(fn,&stat,&ul)==-1) goto L1; 1204 if ((fsize=stat.size)<=0) goto L1; 1205 if ((f=fopen(fn,A_ReadOnly+A_BIN,P_READ,&ul))==-1) 1206 { 1207 L1: 1208 strcpy(fn+i,"\\bot.txt"); 1209 if (GetFileStats(fn,&stat,&ul)==-1) return 0; 1210 if ((fsize=stat.size)<=0) return 0; 1211 f=fopen(fn,A_ReadOnly+A_BIN,P_READ,&ul); 1212 } 1213 if (f==-1) return 0; 1214 p=bot_chars=malloc(fsize+1); 1215 p[fread(f,p,fsize,&ul)]=0; 1216 fclose(f,&ul); 1217 i=0; 1218 pp=p; 1219 for(;;) 1220 { 1221 c=*p; 1222 if (c<32) 1223 { 1224 if (pp&&(pp!=p)) 1225 { 1226 bot_lines=realloc(bot_lines,(i+1)*sizeof(char *)); 1227 bot_lines[i++]=pp; 1228 } 1229 pp=NULL; 1230 if (!c) break; 1231 *p=0; 1232 } 1233 else 1234 { 1235 if (pp==NULL) pp=p; 1236 } 1237 p++; 1238 } 1239 return i; 1240 } 1241 #endif 1242 1243 //=================================================================== 1244 1245 typedef struct 1246 { 1247 CSM_RAM csm; 1248 int gui_id; 1249 }MAIN_CSM; 1250 1251 typedef struct 1252 { 1253 GUI gui; 1254 WSHDR *ws1; 1255 WSHDR *ws2; 1256 int i1; 1257 }MAIN_GUI; 1258 1259 1260 1261 int RXstate=EOP; //-sizeof(RXpkt)..-1 - receive header, 0..RXpkt.data_len - receive data 1262 \ In segment DATA_Z, align 4, align-sorted 1263 TPKT RXbuf; \ RXbuf: \ 00000000 DS8 16392 \ In segment DATA_Z, align 4, align-sorted 1264 TPKT TXbuf; \ TXbuf: \ 00000000 DS8 16392 1265 1266 int connect_state=0; 1267 1268 int sock=-1; 1269 1270 volatile unsigned long TOTALRECEIVED; 1271 volatile unsigned long TOTALSENDED; 1272 volatile unsigned long ALLTOTALRECEIVED; //by BoBa 10.07 1273 volatile unsigned long ALLTOTALSENDED; 1274 1275 volatile int sendq_l=0; //Длинна очереди для send 1276 volatile void *sendq_p=NULL; //указатель очереди 1277 1278 volatile int is_gprs_online=1; 1279 1280 GBSTMR reconnect_tmr; 1281 1282 extern void kill_data(void *p,void (*func_p)(void *)); 1283 \ In segment CODE, align 4, keep-with-next 1284 void ElfKiller(void) 1285 { \ ElfKiller: \ 00000000 00402DE9 PUSH {LR} 1286 extern void *ELF_BEGIN; 1287 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 1288 } 1289 1290 int total_unread; 1291 1292 volatile CLIST *cltop; 1293 1294 volatile unsigned int GROUP_CACHE; //Текущая группа для добавления 1295 1296 volatile int contactlist_menu_id; 1297 1298 GBSTMR tmr_active; 1299 1300 volatile int edchat_id; 1301 1302 //Применяется для добавления сообщений 1303 //CLIST *edcontact; 1304 //void *edgui_data; 1305 1306 static int prev_clmenu_itemcount; 1307 1308 char clm_hdr_text[64]; 1309 static const char def_clm_hdr_text[] = LG_CLTITLE; 1310 static const char key_clm_hdr_text[] = LG_CLT9INP; 1311 #ifdef kluchnik 1312 int ICON_HD; 1313 static const HEADER_DESC contactlist_menuhdr = {0, 0, 0, 0, S_ICONS+IS_NULLICON, (int)clm_hdr_text, LGP_NULL}; 1314 #else 1315 static const HEADER_DESC contactlist_menuhdr = {0, 0, 0, 0, S_ICONS+ICON_HEAD, (int)clm_hdr_text, LGP_NULL}; 1316 #endif 1317 1318 static const int menusoftkeys[] = {0,1,2}; 1319 static const SOFTKEY_DESC menu_sk[] = 1320 { 1321 {0x0018, 0x0000, (int)LG_SELECT}, 1322 {0x0001, 0x0000, (int)LG_CLOSE}, 1323 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 1324 }; 1325 1326 char clmenu_sk_r[16]; 1327 static const char def_clmenu_sk_r[] = LG_CLOSE; 1328 static const char key_clmenu_sk_r[] = LG_CLEAR; 1329 1330 static const SOFTKEY_DESC clmenu_sk[]= 1331 { 1332 {0x0018, 0x0000, (int)LG_OPTIONS}, 1333 {0x0001, 0x0000, (int)clmenu_sk_r}, 1334 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 1335 }; 1336 1337 const SOFTKEYSTAB menu_skt = 1338 { 1339 menu_sk, 0 1340 }; 1341 1342 static const SOFTKEYSTAB clmenu_skt = 1343 { 1344 clmenu_sk, 0 1345 }; 1346 1347 void contactlist_menu_ghook(void *data, int cmd); 1348 int contactlist_menu_onkey(void *data, GUI_MSG *msg); 1349 void contactlist_menu_iconhndl(void *data, int curitem, void *unk); 1350 1351 #ifdef USE_MLMENU 1352 static const ML_MENU_DESC contactlist_menu= 1353 { 1354 8,contactlist_menu_onkey,contactlist_menu_ghook,NULL, 1355 menusoftkeys, 1356 &clmenu_skt, 1357 0x11, //+0x400 1358 contactlist_menu_iconhndl, 1359 NULL, //Items 1360 NULL, //Procs 1361 0, //n 1362 1 //Добавочных строк 1363 }; 1364 #else 1365 static const MENU_DESC contactlist_menu= 1366 { 1367 8,contactlist_menu_onkey,contactlist_menu_ghook,NULL, 1368 menusoftkeys, 1369 &clmenu_skt, 1370 0x11, //+0x400 1371 contactlist_menu_iconhndl, 1372 NULL, //Items 1373 NULL, //Procs 1374 0 //n 1375 }; 1376 #endif 1377 1378 //GBSTMR tmr_ping; 1379 int tenseconds_to_ping; 1380 \ In segment CODE, align 4, keep-with-next 1381 LOGQ *NewLOGQ(const char *s) 1382 { \ NewLOGQ: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 1383 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 1384 zeromem(p,sizeof(LOGQ)); \ 00000018 6010A0E3 MOV R1,#+96 \ 0000001C 1D0100EF SWI +285 1385 strcpy(p->text,s); \ 00000020 0410A0E1 MOV R1,R4 \ 00000024 600085E2 ADD R0,R5,#+96 \ 00000028 1A0000EF SWI +26 1386 return p; \ 0000002C 0500A0E1 MOV R0,R5 \ 00000030 3080BDE8 POP {R4,R5,PC} ;; return 1387 } 1388 \ In segment CODE, align 4, keep-with-next 1389 LOGQ *LastLOGQ(LOGQ **pp) 1390 { 1391 LOGQ *q=*pp; \ LastLOGQ: \ 00000000 000090E5 LDR R0,[R0, #+0] 1392 if (q) \ 00000004 000050E3 CMP R0,#+0 \ 00000008 1EFF2F01 BXEQ LR \ 0000000C 000000EA B ??LastLOGQ_0 1393 { 1394 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 1395 } 1396 return(q); \ 00000020 1EFF2FE1 BX LR ;; return 1397 } 1398 1399 //Уничтожить лог \ In segment CODE, align 4, keep-with-next 1400 void FreeLOGQ(LOGQ **pp) 1401 { \ FreeLOGQ: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0010A0E1 MOV R1,R0 1402 LOGQ *p=*pp; \ 00000008 000091E5 LDR R0,[R1, #+0] 1403 *pp=NULL; //Сразу обрежем \ 0000000C 0020A0E3 MOV R2,#+0 \ 00000010 002081E5 STR R2,[R1, #+0] \ 00000014 000050E3 CMP R0,#+0 \ 00000018 1080BD08 POPEQ {R4,PC} 1404 while(p) 1405 { 1406 LOGQ *np=p->next; \ ??FreeLOGQ_0: \ 0000001C 004090E5 LDR R4,[R0, #+0] 1407 mfree(p); \ 00000020 150000EF SWI +21 1408 p=np; \ 00000024 0400B0E1 MOVS R0,R4 1409 } \ 00000028 FBFFFF1A BNE ??FreeLOGQ_0 1410 } \ 0000002C 1080BDE8 POP {R4,PC} ;; return 1411 1412 //Удалить элемент из лога \ In segment CODE, align 4, keep-with-next 1413 void RemoveLOGQ(LOGQ **queue, LOGQ *p) 1414 { \ RemoveLOGQ: \ 00000000 00402DE9 PUSH {LR} 1415 LOGQ *q=(LOGQ *)queue; \ 00000004 000000EA B ??RemoveLOGQ_0 1416 LOGQ *qp; 1417 while(qp=q->next) 1418 { 1419 if (qp==p) 1420 { 1421 q->next=p->next; 1422 break; 1423 } 1424 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] 1425 } 1426 mfree(p); //Если элемент вообще не в логе \ ??RemoveLOGQ_2: \ 00000028 0100A0E1 MOV R0,R1 \ 0000002C 150000EF SWI +21 1427 } \ 00000030 0080BDE8 POP {PC} ;; return 1428 1429 //Добавить элемент в лог \ In segment CODE, align 4, keep-with-next 1430 int AddLOGQ(LOGQ **queue, LOGQ *p) 1431 { 1432 LOGQ *q=(LOGQ *)queue; 1433 LOGQ *qp; 1434 int i=0; \ AddLOGQ: \ 00000000 0020A0E3 MOV R2,#+0 \ 00000004 000000EA B ??AddLOGQ_0 1435 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 1436 p->next=NULL; \ 0000001C 003081E5 STR R3,[R1, #+0] 1437 q->next=p; \ 00000020 001080E5 STR R1,[R0, #+0] 1438 return(i+1); //Теперь всего в логе элементов \ 00000024 0200A0E1 MOV R0,R2 \ 00000028 1EFF2FE1 BX LR ;; return 1439 } 1440 \ In segment CODE, align 4, keep-with-next 1441 char *GetLastXTextLOGQ(CLIST *t) 1442 { 1443 LOGQ *p = t->log; \ GetLastXTextLOGQ: \ 00000000 901090E5 LDR R1,[R0, #+144] 1444 char *s = 0; \ 00000004 0000A0E3 MOV R0,#+0 1445 if(!p) return 0; \ 00000008 000051E3 CMP R1,#+0 \ 0000000C 0500001A BNE ??GetLastXTextLOGQ_0 \ 00000010 1EFF2FE1 BX LR 1446 while(p->next) 1447 { 1448 if((p->type&0x0F)==3) \ ??GetLastXTextLOGQ_1: \ 00000014 0C3091E5 LDR R3,[R1, #+12] \ 00000018 0F3003E2 AND R3,R3,#0xF \ 0000001C 030053E3 CMP R3,#+3 1449 s = p->text; \ 00000020 60008102 ADDEQ R0,R1,#+96 1450 p = p->next; \ 00000024 0210A0E1 MOV R1,R2 1451 } \ ??GetLastXTextLOGQ_0: \ 00000028 002091E5 LDR R2,[R1, #+0] \ 0000002C 000052E3 CMP R2,#+0 \ 00000030 F7FFFF1A BNE ??GetLastXTextLOGQ_1 1452 if((p->type&0x0F)==3) \ 00000034 0C2091E5 LDR R2,[R1, #+12] \ 00000038 0F2002E2 AND R2,R2,#0xF \ 0000003C 030052E3 CMP R2,#+3 1453 s = p->text; \ 00000040 60008102 ADDEQ R0,R1,#+96 1454 return s; \ 00000044 1EFF2FE1 BX LR ;; return 1455 } 1456 \ In segment CODE, align 4, keep-with-next 1457 int GetIconIndex(CLIST *t) 1458 { 1459 unsigned short s; 1460 if (t) \ GetIconIndex: \ 00000000 000050E3 CMP R0,#+0 \ 00000004 3400000A BEQ ??GetIconIndex_0 1461 { 1462 s=t->state; 1463 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 1464 if (t->isunread) \ 0000001C 800090E5 LDR R0,[R0, #+128] \ 00000020 000050E3 CMP R0,#+0 1465 return(IS_MSG); \ 00000024 0D00A013 MOVNE R0,#+13 \ 00000028 1EFF2F11 BXNE LR 1466 else 1467 { 1468 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 1469 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 1470 if ((s&0xF000)==0x3000) return (IS_EVIL); \ 0000004C C00D52E3 CMP R2,#+12288 \ 00000050 0700A003 MOVEQ R0,#+7 \ 00000054 1EFF2F01 BXEQ LR 1471 if ((s&0xF000)==0x4000) return (IS_DEPRESSION); \ 00000058 400C52E3 CMP R2,#+16384 \ 0000005C 0600A003 MOVEQ R0,#+6 \ 00000060 1EFF2F01 BXEQ LR 1472 if ((s&0xF000)==0x5000) return (IS_HOME); \ 00000064 500C52E3 CMP R2,#+20480 \ 00000068 0800A003 MOVEQ R0,#+8 \ 0000006C 1EFF2F01 BXEQ LR 1473 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 1474 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 1475 if (s & 0x0001) return(IS_AWAY); \ ??GetIconIndex_1: \ 00000090 010011E3 TST R1,#0x1 \ 00000094 0200A013 MOVNE R0,#+2 \ 00000098 1EFF2F11 BXNE LR 1476 if (s & 0x0005) return(IS_NA); \ 0000009C 050011E3 TST R1,#0x5 \ 000000A0 0300A013 MOVNE R0,#+3 \ 000000A4 1EFF2F11 BXNE LR 1477 if (s & 0x0011) return(IS_OCCUPIED); \ 000000A8 110011E3 TST R1,#0x11 \ 000000AC 0400A013 MOVNE R0,#+4 \ 000000B0 1EFF2F11 BXNE LR 1478 if (s & 0x0013) return(IS_DND); \ 000000B4 130011E3 TST R1,#0x13 \ 000000B8 0500A013 MOVNE R0,#+5 \ 000000BC 1EFF2F11 BXNE LR 1479 if (s & 0x0002) return(IS_FFC); \ 000000C0 020011E3 TST R1,#0x2 \ 000000C4 EFFFFF1A BNE ??GetIconIndex_2 1480 if (s & 0x0100) return(IS_INVISIBLE); \ 000000C8 400F11E3 TST R1,#0x100 \ 000000CC 0100A013 MOVNE R0,#+1 \ 000000D0 1EFF2F11 BXNE LR 1481 } 1482 } 1483 else 1484 { 1485 return(IS_UNKNOWN); 1486 } 1487 return(IS_ONLINE); \ 000000D4 0B00A0E3 MOV R0,#+11 \ 000000D8 1EFF2FE1 BX LR \ ??GetIconIndex_0: \ 000000DC 0E00A0E3 MOV R0,#+14 \ 000000E0 1EFF2FE1 BX LR ;; return 1488 } 1489 \ In segment CODE, align 4, keep-with-next 1490 LOGQ *FindContactLOGQByAck(TPKT *p) 1491 { \ FindContactLOGQByAck: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 1492 CLIST *t; 1493 LockSched(); \ 00000008 460100EF SWI +326 1494 t=FindContactByUin(p->pkt.uin); \ 0000000C 000094E5 LDR R0,[R4, #+0] \ 00000010 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000014 0050A0E1 MOV R5,R0 1495 UnlockSched(); \ 00000018 470100EF SWI +327 1496 unsigned int id=*((unsigned short*)(p->data)); \ 0000001C B840D4E1 LDRH R4,[R4, #+8] 1497 LOGQ *q; 1498 if (!t) return NULL; \ 00000020 000055E3 CMP R5,#+0 \ 00000024 0000A003 MOVEQ R0,#+0 \ 00000028 3080BD08 POPEQ {R4,R5,PC} 1499 LockSched(); \ 0000002C 460100EF SWI +326 1500 q=t->log; \ 00000030 905095E5 LDR R5,[R5, #+144] \ 00000034 000000EA B ??FindContactLOGQByAck_0 1501 while(q) 1502 { 1503 if (q->ID==id) break; 1504 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 1505 } 1506 UnlockSched(); \ 0000004C 470100EF SWI +327 1507 return q; \ 00000050 0500A0E1 MOV R0,R5 \ 00000054 3080BDE8 POP {R4,R5,PC} ;; return 1508 } 1509 1510 1511 1512 1513 /*----------------------------- SAVE CONTACT LIST TO FILE --------------------------------*/ 1514 \ In segment CODE, align 4, keep-with-next 1515 void CreateCLFile(void) 1516 { \ CreateCLFile: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 42DF4DE2 SUB SP,SP,#+264 1517 CLIST *t; 1518 t=(CLIST *)(&cltop); \ 00000008 ........ LDR R5,??DataTable55 ;; S_ICONS + 780 1519 char *s=malloc(128); 1520 volatile int hFile_cl; 1521 unsigned int io_error_cl = 0; 1522 char fn[256]; 1523 strcpy(fn,TEMPLATES_PATH); 1524 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,??DataTable56 ;; 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 1525 unlink(fn,&io_error_cl); \ 0000003C 0D10A0E1 MOV R1,SP \ 00000040 08008DE2 ADD R0,SP,#+8 \ 00000044 6B0100EF SWI +363 1526 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] 1527 if(hFile_cl!=-1) \ 00000064 04009DE5 LDR R0,[SP, #+4] \ 00000068 010070E3 CMN R0,#+1 \ 0000006C 1800001A BNE ??CreateCLFile_1 1528 { 1529 while(t=(CLIST *)(t->next)) 1530 { 1531 if(!t->isgroup) 1532 { 1533 sprintf(s, ";%d;%s;;;\r\n", t->uin, t->name); 1534 fwrite(hFile_cl, s, strlen(s), &io_error_cl); 1535 } 1536 } 1537 ShowMSG(2,(int)"Saved local.cl"); 1538 } 1539 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 1540 fclose(hFile_cl, &io_error_cl); \ 0000007C 04009DE5 LDR R0,[SP, #+4] \ 00000080 0D10A0E1 MOV R1,SP \ 00000084 0D0000EF SWI +13 1541 mfree(s); \ 00000088 0400A0E1 MOV R0,R4 \ 0000008C 150000EF SWI +21 1542 } \ 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 `?` 1543 1544 /*-----------------------------------------------------------------------------------------*/ 1545 1546 char ContactT9Key[32]; 1547 int kopa_online; 1548 int kopa_kontaktu; 1549 char status[64]; 1550 1551 #define nmeth 24 1552 1553 void * gui_methods2[nmeth]; 1554 void * old_redraw; 1555 1556 typedef void (*tredraw)(void *data); 1557 char prozr[]={0x00,0x00,0x00,0x64}; \ In segment CODE, align 4, keep-with-next 1558 void new_redraw(void *data) 1559 { \ new_redraw: \ 00000000 70402DE9 PUSH {R4-R6,LR} 1560 ((tredraw)old_redraw)(data); \ 00000004 ........ LDR R4,??DataTable57 ;; S_ICONS \ 00000008 40D04DE2 SUB SP,SP,#+64 \ 0000000C 8C1394E5 LDR R1,[R4, #+908] \ 00000010 31FF2FE1 BLX R1 1561 char s[64]; 1562 sprintf(s,"%s\\HEAD.png",ICON_PATH); \ 00000014 A8109FE5 LDR R1,??new_redraw_0 ;; `?` \ 00000018 ........ LDR R2,??DataTable58 ;; ICON_PATH \ 0000001C 0D00A0E1 MOV R0,SP \ 00000020 160000EF SWI +22 1563 int x=GetImgWidth((int)s); \ 00000024 0D00A0E1 MOV R0,SP \ 00000028 220000EF SWI +34 \ 0000002C 0050A0E1 MOV R5,R0 1564 #ifdef ELKA 1565 #else 1566 DrawRectangle(0,YDISP,ScreenW()-1,ScreenH()-1,0,prozr,prozr); \ 00000030 898100EF SWI +33161 \ 00000034 0060A0E1 MOV R6,R0 \ 00000038 888100EF SWI +33160 \ 0000003C 0C10A0E3 MOV R1,#+12 \ 00000040 6C1D81E3 ORR R1,R1,#0x1B00 \ 00000044 041081E0 ADD R1,R1,R4 \ 00000048 0120A0E1 MOV R2,R1 \ 0000004C 04002DE9 PUSH {R2} \ 00000050 02002DE9 PUSH {R1} \ 00000054 013046E2 SUB R3,R6,#+1 \ 00000058 012040E2 SUB R2,R0,#+1 \ 0000005C 0000A0E3 MOV R0,#+0 \ 00000060 0010A0E3 MOV R1,#+0 \ 00000064 02002DE9 PUSH {R1} \ 00000068 B40100EF SWI +436 1567 #endif 1568 PrintText(x+7,YDISP+2,status,0,fonto,1,1,0,0,ScreenW()-x); \ 0000006C 888100EF SWI +33160 \ 00000070 050040E0 SUB R0,R0,R5 \ 00000074 01002DE9 PUSH {R0} \ 00000078 0030A0E3 MOV R3,#+0 \ 0000007C 0210A0E3 MOV R1,#+2 \ 00000080 0000A0E3 MOV R0,#+0 \ 00000084 01002DE9 PUSH {R0} \ 00000088 01002DE9 PUSH {R0} \ 0000008C 0100A0E3 MOV R0,#+1 \ 00000090 01002DE9 PUSH {R0} \ 00000094 01002DE9 PUSH {R0} \ 00000098 ........ LDR R0,??DataTable59 ;; fonto \ 0000009C 000090E5 LDR R0,[R0, #+0] \ 000000A0 01002DE9 PUSH {R0} \ 000000A4 CC00A0E3 MOV R0,#+204 \ 000000A8 680D80E3 ORR R0,R0,#0x1A00 \ 000000AC 042080E0 ADD R2,R0,R4 \ 000000B0 070085E2 ADD R0,R5,#+7 \ 000000B4 ........ _BLF PrintText,??PrintText??rA \ 000000B8 24D08DE2 ADD SP,SP,#+36 1569 #ifdef kluchnik 1570 switch(CurrentPrivateStatus) 1571 { 1572 case 0: ICON_HD=ICON_ALL_CAN_SEE; break; 1573 case 1: ICON_HD=ICON_NOBODY_CAN_SEE; break; 1574 case 2: ICON_HD=ICON_VISLIST_CAN_SEE; break; 1575 case 3: ICON_HD=ICON_INVISLIST_CANNOT_SEE; break; 1576 case 4: ICON_HD=ICON_CONTACTLIST_CAN_SEE; break; 1577 default : ICON_HD=ICON_HEAD; break; 1578 } 1579 int icon; 1580 icon=*(S_ICONS+ICON_HD); 1581 DrawImg(3,YDISP+3,icon); 1582 #endif 1583 } \ 000000BC 40D08DE2 ADD SP,SP,#+64 \ 000000C0 7080BDE8 POP {R4-R6,PC} ;; return \ ??new_redraw_0: \ 000000C4 ........ DC32 `?` 1584 \ In segment CODE, align 4, keep-with-next 1585 void UpdateCLheader(void) 1586 { \ UpdateCLheader: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 1587 if (strlen(ContactT9Key)) \ 00000004 ........ LDR R7,??DataTable69 ;; S_ICONS \ 00000008 ........ LDR R6,??DataTable61 ;; percent_s \ 0000000C 90D04DE2 SUB SP,SP,#+144 \ 00000010 BC10A0E3 MOV R1,#+188 \ 00000014 681D81E3 ORR R1,R1,#0x1A00 \ 00000018 071081E0 ADD R1,R1,R7 \ 0000001C 0C108DE5 STR R1,[SP, #+12] \ 00000020 7C00A0E3 MOV R0,#+124 \ 00000024 680D80E3 ORR R0,R0,#0x1A00 \ 00000028 074080E0 ADD R4,R0,R7 \ 0000002C 500080E2 ADD R0,R0,#+80 \ 00000030 075080E0 ADD R5,R0,R7 \ 00000034 0480A0E3 MOV R8,#+4 \ 00000038 508E88E3 ORR R8,R8,#0x500 \ 0000003C 070088E0 ADD R0,R8,R7 \ 00000040 1B0000EF SWI +27 \ 00000044 000050E3 CMP R0,#+0 \ 00000048 0A00000A BEQ ??UpdateCLheader_1 1588 { 1589 zeromem(status,64); \ 0000004C 4010A0E3 MOV R1,#+64 \ 00000050 0500A0E1 MOV R0,R5 \ 00000054 1D0100EF SWI +285 1590 strcpy(clm_hdr_text,key_clm_hdr_text); \ 00000058 4F1F86E2 ADD R1,R6,#+316 \ 0000005C 0400A0E1 MOV R0,R4 \ 00000060 1A0000EF SWI +26 1591 strcat(clm_hdr_text,ContactT9Key); \ 00000064 071088E0 ADD R1,R8,R7 \ 00000068 0400A0E1 MOV R0,R4 \ 0000006C 170000EF SWI +23 1592 strcpy(clmenu_sk_r,key_clmenu_sk_r); \ 00000070 031086E2 ADD R1,R6,#+3 \ 00000074 2A0100EA B ??UpdateCLheader_2 1593 } 1594 else 1595 { 1596 TTime the; 1597 GetDateTime(NULL,&the); \ ??UpdateCLheader_1: \ 00000078 04108DE2 ADD R1,SP,#+4 \ 0000007C B40000EF SWI +180 1598 char t[64]; 1599 char s[32]; 1600 void Get_Online_total(); 1601 Get_Online_total(); \ 00000080 ........ BL Get_Online_total 1602 zeromem(clm_hdr_text,64); \ 00000084 4010A0E3 MOV R1,#+64 \ 00000088 0400A0E1 MOV R0,R4 \ 0000008C 1D0100EF SWI +285 1603 zeromem(status,64); \ 00000090 4010A0E3 MOV R1,#+64 \ 00000094 0500A0E1 MOV R0,R5 \ 00000098 1D0100EF SWI +285 1604 switch(TIME_OR_MSG) \ 0000009C ........ LDR R1,??DataTable67 ;; TIME_OR_MSG \ 000000A0 4C0FA0E3 MOV R0,#+304 \ 000000A4 001091E5 LDR R1,[R1, #+0] \ 000000A8 978F8FE2 ADR R8,??UpdateCLheader_3 ;; "[S]" \ 000000AC 979F8FE2 ADR R9,??UpdateCLheader_3+0x4 ;; "[V]" \ 000000B0 97AF8FE2 ADR R10,??UpdateCLheader_3+0x8 ;; "[I]" \ 000000B4 97BF8FE2 ADR R11,??UpdateCLheader_3+0xC ;; "[A]" \ 000000B8 040051E3 CMP R1,#+4 \ 000000BC 1301008A 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 92000000 DC16 +146,+0 1605 { 1606 case 0: 1607 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 081086E2 ADD R1,R6,#+8 \ ??UpdateCLheader_6: \ 000000F0 0400A0E1 MOV R0,R4 \ ??UpdateCLheader_7: \ 000000F4 160000EF SWI +22 \ 000000F8 04D08DE2 ADD SP,SP,#+4 \ 000000FC 070100EA B ??UpdateCLheader_8 1608 break; 1609 case 1: 1610 sprintf(clm_hdr_text, "%s(%d/%d)",def_clm_hdr_text,total_unread,total_unread2); \ ??UpdateCLheader_9: \ 00000100 641297E5 LDR R1,[R7, #+612] \ 00000104 062080E0 ADD R2,R0,R6 \ 00000108 02002DE9 PUSH {R1} \ 0000010C 083397E5 LDR R3,[R7, #+776] \ 00000110 181086E2 ADD R1,R6,#+24 \ 00000114 F5FFFFEA B ??UpdateCLheader_6 1611 break; 1612 case 2: 1613 sprintf(clm_hdr_text, "%s(%d/%d)",def_clm_hdr_text,kopa_kontaktu,kopa_online); \ ??UpdateCLheader_10: \ 00000118 241397E5 LDR R1,[R7, #+804] \ 0000011C 062080E0 ADD R2,R0,R6 \ 00000120 02002DE9 PUSH {R1} \ 00000124 283397E5 LDR R3,[R7, #+808] \ 00000128 0400A0E1 MOV R0,R4 \ 0000012C 181086E2 ADD R1,R6,#+24 \ 00000130 EFFFFFEA B ??UpdateCLheader_7 1614 break; 1615 case 3: 1616 { 1617 if(isShowTime) { sprintf(t,"[%02d:%02d]",the.hour,the.min); strcat(status,t); } \ ??UpdateCLheader_11: \ 00000134 FC039FE5 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 241086E2 ADD R1,R6,#+36 \ 00000150 50008DE2 ADD R0,SP,#+80 \ 00000154 160000EF SWI +22 \ 00000158 50108DE2 ADD R1,SP,#+80 \ 0000015C 0500A0E1 MOV R0,R5 \ 00000160 170000EF SWI +23 1618 if(isShowCont) { sprintf(s,"[%d/%d]",kopa_kontaktu,kopa_online); strcat(clm_hdr_text,s); } \ ??UpdateCLheader_13: \ 00000164 D0039FE5 LDR R0,??UpdateCLheader_12+0x8 ;; isShowCont \ 00000168 000090E5 LDR R0,[R0, #+0] \ 0000016C 000050E3 CMP R0,#+0 \ 00000170 0700000A BEQ ??UpdateCLheader_14 \ 00000174 243397E5 LDR R3,[R7, #+804] \ 00000178 282397E5 LDR R2,[R7, #+808] \ 0000017C 301086E2 ADD R1,R6,#+48 \ 00000180 30008DE2 ADD R0,SP,#+48 \ 00000184 160000EF SWI +22 \ 00000188 30108DE2 ADD R1,SP,#+48 \ 0000018C 0400A0E1 MOV R0,R4 \ 00000190 170000EF SWI +23 1619 if(isShowUnread) { sprintf(s,"[%d/%d]",total_unread,total_unread2); strcat(clm_hdr_text,s); } \ ??UpdateCLheader_14: \ 00000194 A4039FE5 LDR R0,??UpdateCLheader_12+0xC ;; isShowUnread \ 00000198 000090E5 LDR R0,[R0, #+0] \ 0000019C 000050E3 CMP R0,#+0 \ 000001A0 0700000A BEQ ??UpdateCLheader_15 \ 000001A4 643297E5 LDR R3,[R7, #+612] \ 000001A8 082397E5 LDR R2,[R7, #+776] \ 000001AC 301086E2 ADD R1,R6,#+48 \ 000001B0 30008DE2 ADD R0,SP,#+48 \ 000001B4 160000EF SWI +22 \ 000001B8 30108DE2 ADD R1,SP,#+48 \ 000001BC 0400A0E1 MOV R0,R4 \ 000001C0 170000EF SWI +23 1620 if(isShowTime) strcat(clm_hdr_text,t); \ ??UpdateCLheader_15: \ 000001C4 6C039FE5 LDR R0,??UpdateCLheader_12+0x4 ;; isShowTime \ 000001C8 000090E5 LDR R0,[R0, #+0] \ 000001CC 000050E3 CMP R0,#+0 \ 000001D0 0200000A BEQ ??UpdateCLheader_16 \ 000001D4 50108DE2 ADD R1,SP,#+80 \ 000001D8 0400A0E1 MOV R0,R4 \ 000001DC 170000EF SWI +23 1621 if(away_m && isShowA) strcat(clm_hdr_text,"[A]"); \ ??UpdateCLheader_16: \ 000001E0 940297E5 LDR R0,[R7, #+660] \ 000001E4 000050E3 CMP R0,#+0 \ 000001E8 0600000A BEQ ??UpdateCLheader_17 \ 000001EC 50039FE5 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 1622 if(CurrentPrivateStatus==1 && isShowI) strcat(clm_hdr_text,"[I]") ; \ ??UpdateCLheader_17: \ 00000208 D00297E5 LDR R0,[R7, #+720] \ 0000020C 010050E3 CMP R0,#+1 \ 00000210 0600001A BNE ??UpdateCLheader_18 \ 00000214 2C039FE5 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 1623 if(Is_Vibra_Enabled && isShowV) strcat(clm_hdr_text,"[V]") ; \ ??UpdateCLheader_18: \ 00000230 780297E5 LDR R0,[R7, #+632] \ 00000234 000050E3 CMP R0,#+0 \ 00000238 0600000A BEQ ??UpdateCLheader_19 \ 0000023C 08039FE5 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 1624 if(Is_Sounds_Enabled && isShowS) strcat(clm_hdr_text,"[S]") ; \ ??UpdateCLheader_19: \ 00000258 C40297E5 LDR R0,[R7, #+708] \ 0000025C 000050E3 CMP R0,#+0 \ 00000260 0600000A BEQ ??UpdateCLheader_20 \ 00000264 E4029FE5 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 1625 if(Is_Double_Vibra_On && isShowR) strcat(clm_hdr_text,"[R]") ; \ ??UpdateCLheader_20: \ 00000280 600297E5 LDR R0,[R7, #+608] \ 00000284 000050E3 CMP R0,#+0 \ 00000288 0600000A BEQ ??UpdateCLheader_21 \ 0000028C C0029FE5 LDR R0,??UpdateCLheader_12+0x20 ;; isShowR \ 00000290 000090E5 LDR R0,[R0, #+0] \ 00000294 000050E3 CMP R0,#+0 \ 00000298 0200000A BEQ ??UpdateCLheader_21 \ 0000029C A41F8FE2 ADR R1,??UpdateCLheader_12 ;; "[R]" \ 000002A0 0400A0E1 MOV R0,R4 \ 000002A4 170000EF SWI +23 1626 if(Show_XTX && isShowTmXs) strcat(clm_hdr_text,"[Xs]"); \ ??UpdateCLheader_21: \ 000002A8 A8029FE5 LDR R0,??UpdateCLheader_12+0x24 ;; isShowTmXs \ 000002AC A01297E5 LDR R1,[R7, #+672] \ 000002B0 000090E5 LDR R0,[R0, #+0] \ 000002B4 000051E3 CMP R1,#+0 \ 000002B8 00005013 CMPNE R0,#+0 \ 000002BC 38108612 ADDNE R1,R6,#+56 \ 000002C0 0200001A BNE ??UpdateCLheader_22 1627 else if(isShowTmXs) strcat(clm_hdr_text,"[Tm]"); \ 000002C4 000050E3 CMP R0,#+0 \ 000002C8 0200000A BEQ ??UpdateCLheader_23 \ 000002CC 401086E2 ADD R1,R6,#+64 \ ??UpdateCLheader_22: \ 000002D0 0400A0E1 MOV R0,R4 \ 000002D4 170000EF SWI +23 1628 if(isShowBat) \ ??UpdateCLheader_23: \ 000002D8 7C029FE5 LDR R0,??UpdateCLheader_12+0x28 ;; isShowBat \ 000002DC 000090E5 LDR R0,[R0, #+0] \ 000002E0 000050E3 CMP R0,#+0 \ 000002E4 8D00000A BEQ ??UpdateCLheader_8 1629 { 1630 int bat=*RamCap(); \ 000002E8 C88000EF SWI +32968 \ 000002EC B020D0E1 LDRH R2,[R0, #+0] 1631 char s[4]; 1632 sprintf(s,"[%d%%]",bat); \ 000002F0 481086E2 ADD R1,R6,#+72 \ 000002F4 0D00A0E1 MOV R0,SP \ 000002F8 160000EF SWI +22 1633 strcat(clm_hdr_text,s); \ 000002FC 0D10A0E1 MOV R1,SP \ 00000300 0400A0E1 MOV R0,R4 \ 00000304 170000EF SWI +23 \ 00000308 840000EA B ??UpdateCLheader_8 \ ??UpdateCLheader_3: \ 0000030C 5B535D00 DC8 "[S]" \ 00000310 5B565D00 DC8 "[V]" \ 00000314 5B495D00 DC8 "[I]" \ 00000318 5B415D00 DC8 "[A]" 1634 } 1635 1636 } 1637 break; 1638 case 4: 1639 { 1640 #ifdef kluchnik 1641 char A_s[]="[A [%s] ]"; 1642 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //sendq_l 1643 sprintf(status, "[Rx:%db/Tx:%db/Queue:%db]\n[%d/%d] [%d/%d] ",RX,TX,sendq_l, 1644 kopa_kontaktu, kopa_online,total_unread,total_unread2); 1645 if(away_m && isShowA) { sprintf(t,A_s,away_msg_time_dace); strcat(status,t); } 1646 #else 1647 char s[32]; 1648 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //sendq_l 1649 #ifdef NEWSGOLD 1650 if(ShowTraff) \ ??UpdateCLheader_24: \ 0000031C 3C229FE5 LDR R2,??UpdateCLheader_12+0x2C ;; ShowTraff \ 00000320 F40297E5 LDR R0,[R7, #+756] \ 00000324 F81297E5 LDR R1,[R7, #+760] \ 00000328 002092E5 LDR R2,[R2, #+0] \ 0000032C 000052E3 CMP R2,#+0 \ 00000330 0400000A BEQ ??UpdateCLheader_25 1651 sprintf(status, "[T:%db/Queue:%db]\n",RX+TX,sendq_l); \ 00000334 FC3297E5 LDR R3,[R7, #+764] \ 00000338 002081E0 ADD R2,R1,R0 \ 0000033C 501086E2 ADD R1,R6,#+80 \ 00000340 0500A0E1 MOV R0,R5 \ 00000344 160000EF SWI +22 1652 #else 1653 if(ShowTraff) 1654 sprintf(status, "[T:%db/Q:%db]\n",RX+TX,sendq_l); 1655 #endif 1656 //sprintf(status, "%s\n",def_clm_hdr_text); 1657 if(isShowTime) { sprintf(t,"[%02d:%02d]",the.hour,the.min); strcat(status,t); } \ ??UpdateCLheader_25: \ 00000348 E8019FE5 LDR R0,??UpdateCLheader_12+0x4 ;; isShowTime \ 0000034C 000090E5 LDR R0,[R0, #+0] \ 00000350 000050E3 CMP R0,#+0 \ 00000354 0700000A BEQ ??UpdateCLheader_26 \ 00000358 0530DDE5 LDRB R3,[SP, #+5] \ 0000035C 0420DDE5 LDRB R2,[SP, #+4] \ 00000360 241086E2 ADD R1,R6,#+36 \ 00000364 50008DE2 ADD R0,SP,#+80 \ 00000368 160000EF SWI +22 \ 0000036C 50108DE2 ADD R1,SP,#+80 \ 00000370 0500A0E1 MOV R0,R5 \ 00000374 170000EF SWI +23 1658 if(isShowCont) { sprintf(s,"[%d/%d]",kopa_kontaktu,kopa_online); strcat(status,s); } \ ??UpdateCLheader_26: \ 00000378 BC019FE5 LDR R0,??UpdateCLheader_12+0x8 ;; isShowCont \ 0000037C 000090E5 LDR R0,[R0, #+0] \ 00000380 000050E3 CMP R0,#+0 \ 00000384 0700000A BEQ ??UpdateCLheader_27 \ 00000388 243397E5 LDR R3,[R7, #+804] \ 0000038C 282397E5 LDR R2,[R7, #+808] \ 00000390 301086E2 ADD R1,R6,#+48 \ 00000394 10008DE2 ADD R0,SP,#+16 \ 00000398 160000EF SWI +22 \ 0000039C 10108DE2 ADD R1,SP,#+16 \ 000003A0 0500A0E1 MOV R0,R5 \ 000003A4 170000EF SWI +23 1659 if(isShowUnread) { sprintf(s,"[%d/%d]",total_unread,total_unread2); strcat(status,s); } \ ??UpdateCLheader_27: \ 000003A8 90019FE5 LDR R0,??UpdateCLheader_12+0xC ;; isShowUnread \ 000003AC 000090E5 LDR R0,[R0, #+0] \ 000003B0 000050E3 CMP R0,#+0 \ 000003B4 0700000A BEQ ??UpdateCLheader_28 \ 000003B8 643297E5 LDR R3,[R7, #+612] \ 000003BC 082397E5 LDR R2,[R7, #+776] \ 000003C0 301086E2 ADD R1,R6,#+48 \ 000003C4 10008DE2 ADD R0,SP,#+16 \ 000003C8 160000EF SWI +22 \ 000003CC 10108DE2 ADD R1,SP,#+16 \ 000003D0 0500A0E1 MOV R0,R5 \ 000003D4 170000EF SWI +23 1660 if(away_m && isShowA) { /* sprintf(t,A_s,away_msg_time_dace);*/ strcat(status,"[A]"); } \ ??UpdateCLheader_28: \ 000003D8 940297E5 LDR R0,[R7, #+660] \ 000003DC 000050E3 CMP R0,#+0 \ 000003E0 0600000A BEQ ??UpdateCLheader_29 \ 000003E4 58019FE5 LDR R0,??UpdateCLheader_12+0x10 ;; isShowA \ 000003E8 000090E5 LDR R0,[R0, #+0] \ 000003EC 000050E3 CMP R0,#+0 \ 000003F0 0200000A BEQ ??UpdateCLheader_29 \ 000003F4 0B10A0E1 MOV R1,R11 \ 000003F8 0500A0E1 MOV R0,R5 \ 000003FC 170000EF SWI +23 1661 #endif 1662 1663 if(CurrentPrivateStatus==1 && isShowI) strcat(status,"[I]"); \ ??UpdateCLheader_29: \ 00000400 D00297E5 LDR R0,[R7, #+720] \ 00000404 010050E3 CMP R0,#+1 \ 00000408 0600001A BNE ??UpdateCLheader_30 \ 0000040C 34019FE5 LDR R0,??UpdateCLheader_12+0x14 ;; isShowI \ 00000410 000090E5 LDR R0,[R0, #+0] \ 00000414 000050E3 CMP R0,#+0 \ 00000418 0200000A BEQ ??UpdateCLheader_30 \ 0000041C 0A10A0E1 MOV R1,R10 \ 00000420 0500A0E1 MOV R0,R5 \ 00000424 170000EF SWI +23 1664 if(Is_Vibra_Enabled && isShowV) strcat(status,"[V]"); \ ??UpdateCLheader_30: \ 00000428 780297E5 LDR R0,[R7, #+632] \ 0000042C 000050E3 CMP R0,#+0 \ 00000430 0600000A BEQ ??UpdateCLheader_31 \ 00000434 10019FE5 LDR R0,??UpdateCLheader_12+0x18 ;; isShowV \ 00000438 000090E5 LDR R0,[R0, #+0] \ 0000043C 000050E3 CMP R0,#+0 \ 00000440 0200000A BEQ ??UpdateCLheader_31 \ 00000444 0910A0E1 MOV R1,R9 \ 00000448 0500A0E1 MOV R0,R5 \ 0000044C 170000EF SWI +23 1665 if(Is_Sounds_Enabled && isShowS) strcat(status,"[S]"); \ ??UpdateCLheader_31: \ 00000450 C40297E5 LDR R0,[R7, #+708] \ 00000454 000050E3 CMP R0,#+0 \ 00000458 0600000A BEQ ??UpdateCLheader_32 \ 0000045C EC009FE5 LDR R0,??UpdateCLheader_12+0x1C ;; isShowS \ 00000460 000090E5 LDR R0,[R0, #+0] \ 00000464 000050E3 CMP R0,#+0 \ 00000468 0200000A BEQ ??UpdateCLheader_32 \ 0000046C 0810A0E1 MOV R1,R8 \ 00000470 0500A0E1 MOV R0,R5 \ 00000474 170000EF SWI +23 1666 if(Is_Double_Vibra_On && isShowR) strcat(status,"[R]"); \ ??UpdateCLheader_32: \ 00000478 600297E5 LDR R0,[R7, #+608] \ 0000047C 000050E3 CMP R0,#+0 \ 00000480 0600000A BEQ ??UpdateCLheader_33 \ 00000484 C8009FE5 LDR R0,??UpdateCLheader_12+0x20 ;; isShowR \ 00000488 000090E5 LDR R0,[R0, #+0] \ 0000048C 000050E3 CMP R0,#+0 \ 00000490 0200000A BEQ ??UpdateCLheader_33 \ 00000494 261F8FE2 ADR R1,??UpdateCLheader_12 ;; "[R]" \ 00000498 0500A0E1 MOV R0,R5 \ 0000049C 170000EF SWI +23 1667 if(Show_XTX && isShowTmXs) strcat(status,"[Xs]"); \ ??UpdateCLheader_33: \ 000004A0 B0009FE5 LDR R0,??UpdateCLheader_12+0x24 ;; isShowTmXs \ 000004A4 A01297E5 LDR R1,[R7, #+672] \ 000004A8 000090E5 LDR R0,[R0, #+0] \ 000004AC 000051E3 CMP R1,#+0 \ 000004B0 00005013 CMPNE R0,#+0 \ 000004B4 38108612 ADDNE R1,R6,#+56 \ 000004B8 0200001A BNE ??UpdateCLheader_34 1668 else 1669 if(isShowTmXs) strcat(status,"[Tm]"); \ 000004BC 000050E3 CMP R0,#+0 \ 000004C0 0200000A BEQ ??UpdateCLheader_35 \ 000004C4 401086E2 ADD R1,R6,#+64 \ ??UpdateCLheader_34: \ 000004C8 0500A0E1 MOV R0,R5 \ 000004CC 170000EF SWI +23 1670 if(isShowBat) \ ??UpdateCLheader_35: \ 000004D0 84009FE5 LDR R0,??UpdateCLheader_12+0x28 ;; isShowBat \ 000004D4 000090E5 LDR R0,[R0, #+0] \ 000004D8 000050E3 CMP R0,#+0 \ 000004DC 0700000A BEQ ??UpdateCLheader_36 1671 { 1672 int bat=*RamCap(); \ 000004E0 C88000EF SWI +32968 \ 000004E4 B020D0E1 LDRH R2,[R0, #+0] 1673 char s[4]; 1674 sprintf(s,"[%d%%]",bat); \ 000004E8 481086E2 ADD R1,R6,#+72 \ 000004EC 0D00A0E1 MOV R0,SP \ 000004F0 160000EF SWI +22 1675 strcat(status,s); \ 000004F4 0D10A0E1 MOV R1,SP \ 000004F8 0500A0E1 MOV R0,R5 \ 000004FC 170000EF SWI +23 1676 } 1677 zeromem(clm_hdr_text,64); \ ??UpdateCLheader_36: \ 00000500 4010A0E3 MOV R1,#+64 \ 00000504 0400A0E1 MOV R0,R4 \ 00000508 1D0100EF SWI +285 \ 0000050C 030000EA B ??UpdateCLheader_8 1678 } 1679 break; 1680 default : 1681 sprintf(clm_hdr_text, percent_s,def_clm_hdr_text); \ ??UpdateCLheader_4: \ 00000510 062080E0 ADD R2,R0,R6 \ 00000514 0610A0E1 MOV R1,R6 \ 00000518 0400A0E1 MOV R0,R4 \ 0000051C 160000EF SWI +22 1682 break; 1683 } 1684 strcpy(clmenu_sk_r,def_clmenu_sk_r); \ ??UpdateCLheader_8: \ 00000520 521F86E2 ADD R1,R6,#+328 \ ??UpdateCLheader_2: \ 00000524 0C009DE5 LDR R0,[SP, #+12] \ 00000528 1A0000EF SWI +26 1685 } 1686 } \ 0000052C 90D08DE2 ADD SP,SP,#+144 \ 00000530 F08FBDE8 POP {R4-R11,PC} ;; return \ ??UpdateCLheader_12: \ 00000534 5B525D00 DC8 "[R]" \ 00000538 ........ DC32 isShowTime \ 0000053C ........ DC32 isShowCont \ 00000540 ........ DC32 isShowUnread \ 00000544 ........ DC32 isShowA \ 00000548 ........ DC32 isShowI \ 0000054C ........ DC32 isShowV \ 00000550 ........ DC32 isShowS \ 00000554 ........ DC32 isShowR \ 00000558 ........ DC32 isShowTmXs \ 0000055C ........ DC32 isShowBat \ 00000560 ........ DC32 ShowTraff 1687 \ In segment CODE, align 4, keep-with-next 1688 void ClearContactT9Key(void) 1689 { 1690 zeromem(ContactT9Key,sizeof(ContactT9Key)); \ ClearContactT9Key: \ 00000000 0C009FE5 LDR R0,??ClearContactT9Key_0 ;; S_ICONS + 1284 \ 00000004 00402DE9 PUSH {LR} \ 00000008 2010A0E3 MOV R1,#+32 \ 0000000C 1D0100EF SWI +285 1691 } \ 00000010 0080BDE8 POP {PC} ;; return \ ??ClearContactT9Key_0: \ 00000014 ........ DC32 S_ICONS + 1284 1692 \ In segment CODE, align 4, keep-with-next 1693 void AddContactT9Key(int chr) 1694 { \ AddContactT9Key: \ 00000000 30402DE9 PUSH {R4,R5,LR} 1695 int l=strlen(ContactT9Key); \ 00000004 ........ LDR R5,??DataTable69 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0400A0E3 MOV R0,#+4 \ 00000010 500E80E3 ORR R0,R0,#0x500 \ 00000014 050080E0 ADD R0,R0,R5 \ 00000018 1B0000EF SWI +27 1696 if (l<(sizeof(ContactT9Key)-1)) \ 0000001C 1F0050E3 CMP R0,#+31 1697 { 1698 ContactT9Key[l]=chr; \ 00000020 05008030 ADDCC R0,R0,R5 \ 00000024 0445C035 STRBCC R4,[R0, #+1284] 1699 } 1700 } \ 00000028 3080BDE8 POP {R4,R5,PC} ;; return 1701 \ In segment CODE, align 4, keep-with-next 1702 void BackSpaceContactT9(void) 1703 { \ BackSpaceContactT9: \ 00000000 10402DE9 PUSH {R4,LR} 1704 int l=strlen(ContactT9Key); \ 00000004 ........ LDR R4,??DataTable69 ;; S_ICONS \ 00000008 0400A0E3 MOV R0,#+4 \ 0000000C 500E80E3 ORR R0,R0,#0x500 \ 00000010 040080E0 ADD R0,R0,R4 \ 00000014 1B0000EF SWI +27 1705 if (l) \ 00000018 000050E3 CMP R0,#+0 1706 { 1707 l--; 1708 ContactT9Key[l]=0; \ 0000001C 04008010 ADDNE R0,R0,R4 \ 00000020 0010A013 MOVNE R1,#+0 \ 00000024 0315C015 STRBNE R1,[R0, #+1283] 1709 } 1710 } \ 00000028 1080BDE8 POP {R4,PC} ;; return 1711 1712 \ In segment CODE, align 4, keep-with-next 1713 void create_contactlist_menu(void) 1714 { \ create_contactlist_menu: \ 00000000 70402DE9 PUSH {R4-R6,LR} 1715 int i; 1716 i=CountContacts(); 1717 prev_clmenu_itemcount=i; \ 00000004 ........ LDR R5,??DataTable69 ;; S_ICONS 1718 UpdateCLheader(); 1719 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 1C4385E5 STR R4,[R5, #+796] \ 00000018 ........ BL UpdateCLheader \ 0000001C 0600A0E1 MOV R0,R6 \ 00000020 ........ _BLF patch_header,??patch_header??rA 1720 #ifdef USE_MLMENU 1721 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 140385E5 STR R0,[R5, #+788] 1722 #else 1723 contactlist_menu_id=CreateMenu(0,0,&contactlist_menu,&contactlist_menuhdr,0,i,0,0); 1724 #endif 1725 } \ 00000044 7380BDE8 POP {R0,R1,R4-R6,PC} ;; return \ ??create_contactlist_menu_0: \ 00000048 ........ DC32 contactlist_menuhdr 1726 1727 static int unhooked2=1; 1728 \ In segment CODE, align 4, keep-with-next 1729 void contactlist_menu_ghook(void *data, int cmd) 1730 { \ contactlist_menu_ghook: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 1731 PNGTOP_DESC *pltop=PNG_TOP(); 1732 if (cmd==9) 1733 { 1734 pltop->dyn_pltop=NULL; 1735 } 1736 static int unhooked=1; 1737 if( ((unhooked) || (unhooked2)) && (TIME_OR_MSG==4) ) \ 00000004 ........ LDR R8,??DataTable69 ;; 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 940398E5 LDR R0,[R8, #+916] \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 90039805 LDREQ R0,[R8, #+912] \ 00000030 00005003 CMPEQ R0,#+0 \ 00000034 1600000A BEQ ??contactlist_menu_ghook_0 \ 00000038 ........ LDR R0,??DataTable67 ;; TIME_OR_MSG \ 0000003C 000090E5 LDR R0,[R0, #+0] \ 00000040 040050E3 CMP R0,#+4 \ 00000044 1200001A BNE ??contactlist_menu_ghook_0 1738 { 1739 if(!(strlen(ContactT9Key))) \ 00000048 0400A0E3 MOV R0,#+4 \ 0000004C 500E80E3 ORR R0,R0,#0x500 \ 00000050 080080E0 ADD R0,R0,R8 \ 00000054 1B0000EF SWI +27 \ 00000058 000050E3 CMP R0,#+0 \ 0000005C 0A00001A BNE ??contactlist_menu_ghook_1 1740 { 1741 GUI * gui=(GUI*)data; 1742 memcpy(&gui_methods2,gui->methods,nmeth*4); \ 00000060 041094E5 LDR R1,[R4, #+4] \ 00000064 CB9FA0E3 MOV R9,#+812 \ 00000068 6020A0E3 MOV R2,#+96 \ 0000006C 080089E0 ADD R0,R9,R8 \ 00000070 1E0100EF SWI +286 1743 gui->methods=&gui_methods2; \ 00000074 080089E0 ADD R0,R9,R8 \ 00000078 040084E5 STR R0,[R4, #+4] 1744 old_redraw=gui_methods2[0]; \ 0000007C 080099E7 LDR R0,[R9, +R8] \ 00000080 8C0388E5 STR R0,[R8, #+908] 1745 gui_methods2[0]=(void*)&new_redraw; \ 00000084 28009FE5 LDR R0,??contactlist_menu_ghook_2 ;; new_redraw \ 00000088 080089E7 STR R0,[R9, +R8] 1746 } 1747 unhooked=0; \ ??contactlist_menu_ghook_1: \ 0000008C 947388E5 STR R7,[R8, #+916] 1748 unhooked2=0; \ 00000090 907388E5 STR R7,[R8, #+912] 1749 } 1750 1751 if (cmd==0x0A) \ ??contactlist_menu_ghook_0: \ 00000094 0A0055E3 CMP R5,#+10 \ 00000098 F083BD18 POPNE {R4-R9,PC} 1752 { 1753 silenthide=0; 1754 pltop->dyn_pltop=XStatusesImgList; \ 0000009C ........ LDR R0,??DataTable68 ;; XStatusesImgList \ 000000A0 BC7288E5 STR R7,[R8, #+700] \ 000000A4 000090E5 LDR R0,[R0, #+0] \ 000000A8 080086E5 STR R0,[R6, #+8] 1755 DisableIDLETMR(); \ 000000AC 7F0100EF SWI +383 1756 } 1757 } \ 000000B0 F083BDE8 POP {R4-R9,PC} ;; return \ ??contactlist_menu_ghook_2: \ 000000B4 ........ DC32 new_redraw 1758 \ In segment CODE, align 4, keep-with-next 1759 void RecountMenu(CLIST *req, int needfocus) 1760 { \ RecountMenu: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 1761 int i; 1762 int j; 1763 void *data; 1764 UpdateCLheader(); 1765 if (!contactlist_menu_id) return; //Нечего считать \ 00000004 ........ LDR R6,??DataTable69 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 ........ BL UpdateCLheader \ 00000014 140396E5 LDR R0,[R6, #+788] \ 00000018 000050E3 CMP R0,#+0 \ 0000001C F080BD08 POPEQ {R4-R7,PC} 1766 data=FindGUIbyId(contactlist_menu_id,NULL); \ 00000020 140396E5 LDR R0,[R6, #+788] \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 090200EF SWI +521 \ 0000002C 0070A0E1 MOV R7,R0 1767 if (req==NULL) \ 00000030 000054E3 CMP R4,#+0 \ 00000034 0200000A BEQ ??RecountMenu_0 1768 { 1769 j=0; 1770 } 1771 else 1772 { 1773 j=FindContactByContact(req); \ 00000038 0400A0E1 MOV R0,R4 \ 0000003C ........ _BLF FindContactByContact,??FindContactByContact??rA \ 00000040 0040A0E1 MOV R4,R0 1774 } 1775 i=CountContacts(); \ ??RecountMenu_0: \ 00000044 ........ _BLF CountContacts,??CountContacts??rA 1776 if (j>=i) j=i-1; 1777 if (j<0) j=0; 1778 if (i!=prev_clmenu_itemcount) \ 00000048 1C1396E5 LDR R1,[R6, #+796] \ 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 1779 { 1780 prev_clmenu_itemcount=i; \ 00000064 1C0386E5 STR R0,[R6, #+796] 1781 Menu_SetItemCountDyn(data,i); \ 00000068 0010A0E1 MOV R1,R0 \ 0000006C 0700A0E1 MOV R0,R7 \ 00000070 E60100EF SWI +486 1782 } 1783 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 1784 if (IsGuiOnTop(contactlist_menu_id)) RefreshGUI(); \ ??RecountMenu_2: \ 00000088 140396E5 LDR R0,[R6, #+788] \ 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 1785 } 1786 1787 1788 //-------------------- MANAGE CONTACT MENU --------------------------// 1789 1790 1791 #ifdef kluchnik 1792 #define _MAX 8 1793 #else 1794 #define _MAX 4 1795 #endif 1796 1797 static int uinContact; 1798 \ In segment CODE, align 4, keep-with-next 1799 static void ChangeVibraContact(GUI *data) 1800 { 1801 CLIST *t; 1802 t=FindContactByUin(uinContact); \ ChangeVibraContact: \ 00000000 ........ LDR R0,??DataTable73 ;; icon_array + 8 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 1803 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] 1804 RefreshGUI(); \ 00000024 960100EF SWI +406 1805 } \ 00000028 0080BDE8 POP {PC} ;; return 1806 \ In segment CODE, align 4, keep-with-next 1807 static void ChangeSoundContact(GUI *data) 1808 { 1809 CLIST *t; 1810 t=FindContactByUin(uinContact); \ ChangeSoundContact: \ 00000000 ........ LDR R0,??DataTable73 ;; icon_array + 8 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 1811 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] 1812 RefreshGUI(); \ 00000024 960100EF SWI +406 1813 } \ 00000028 0080BDE8 POP {PC} ;; return 1814 \ In segment CODE, align 4, keep-with-next 1815 static void ChangeAutoMsg(GUI *data) 1816 { 1817 CLIST *t; 1818 t=FindContactByUin(uinContact); \ ChangeAutoMsg: \ 00000000 ........ LDR R0,??DataTable73 ;; icon_array + 8 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 1819 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] 1820 RefreshGUI(); \ 00000024 960100EF SWI +406 1821 } \ 00000028 0080BDE8 POP {PC} ;; return 1822 \ In segment CODE, align 4, keep-with-next 1823 static void ChangeShowXstatus(GUI *data) 1824 { 1825 CLIST *t; 1826 t=FindContactByUin(uinContact); \ ChangeShowXstatus: \ 00000000 ........ LDR R0,??DataTable73 ;; icon_array + 8 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 1827 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] 1828 RefreshGUI(); \ 00000024 960100EF SWI +406 1829 } \ 00000028 0080BDE8 POP {PC} ;; return 1830 1831 #ifdef kluchnik 1832 1833 static void ChangeAccess(GUI *data) 1834 { 1835 CLIST *t; 1836 t=FindContactByUin(uinContact); 1837 t->isaccess=!(t->isaccess); 1838 RefreshGUI(); 1839 } 1840 1841 1842 static void ChangeAwaySignal(GUI *data) 1843 { 1844 CLIST *t; 1845 t=FindContactByUin(uinContact); 1846 t->automsgcount=automsgcount; 1847 RefreshGUI(); 1848 } 1849 1850 static void ChangeAutobot(GUI *data) 1851 { 1852 CLIST *t; 1853 t=FindContactByUin(uinContact); 1854 t->isautobot=!(t->isautobot); 1855 RefreshGUI(); 1856 } 1857 1858 static void ChangeLoadHistory(GUI *data) 1859 { 1860 CLIST *t; 1861 t=FindContactByUin(uinContact); 1862 t->isLoadHistory=!(t->isLoadHistory); 1863 RefreshGUI(); 1864 } 1865 #endif 1866 /* 1867 static void RqtXText(GUI *data) 1868 { 1869 void RequestXText(unsigned int uin); 1870 RequestXText(uinContact); 1871 GeneralFuncF1(1); 1872 } 1873 */ \ In segment CODE, align 4, keep-with-next 1874 static void contact_list_ghook(void *data, int cmd) 1875 { \ contact_list_ghook: \ 00000000 00402DE9 PUSH {LR} 1876 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 1877 { 1878 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 1879 } 1880 } \ 00000010 0080BDE8 POP {PC} ;; return 1881 static int icon_array[2]; 1882 1883 static const void *menuproc[_MAX]= 1884 { 1885 (void *)ChangeVibraContact, 1886 (void *)ChangeSoundContact, 1887 (void *)ChangeAutoMsg, 1888 (void *)ChangeShowXstatus, 1889 #ifdef kluchnik 1890 (void *)ChangeAccess, 1891 (void *)ChangeAwaySignal, 1892 (void *)ChangeLoadHistory, 1893 (void *)ChangeAutobot, 1894 #endif 1895 }; 1896 1897 static const char * const menutext[_MAX]= 1898 { 1899 "Вибра", 1900 "Звук", 1901 "Автоответчик", 1902 "Показ.хстатус", 1903 #ifdef kluchnik 1904 "Удаленное управление", 1905 "Синалы автоответчика", 1906 "Загруж.историю", 1907 "Aвтобот" 1908 #endif 1909 }; 1910 \ In segment CODE, align 4, keep-with-next 1911 static int contact_keyhook(void *data, GUI_MSG *msg) 1912 { \ contact_keyhook: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 1913 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 1914 { 1915 CLIST *t; 1916 t=FindContactByUin(uinContact); 1917 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] 1918 ((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 1919 } 1920 //if(msg->keys==LEFT_BUTTON) GeneralFuncF1(1); 1921 return(0); \ ??contact_keyhook_0: \ 00000040 0000A0E3 MOV R0,#+0 \ 00000044 3080BDE8 POP {R4,R5,PC} ;; return \ ??contact_keyhook_1: \ 00000048 ........ DC32 icon_array 1922 } 1923 \ In segment CODE, align 4, keep-with-next 1924 static void contacthandler(void *data, int curitem, void *unk) 1925 { \ contacthandler: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 1926 WSHDR *ws; 1927 void *item=AllocMenuItem(data); 1928 extern const char percent_t[]; 1929 ws=AllocMenuWS(data,strlen(menutext[curitem])); \ 00000004 ........ LDR R8,??DataTable87 ;; 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 1930 wsprintf(ws,percent_t,menutext[curitem]); \ 00000034 181088E2 ADD R1,R8,#+24 1931 CLIST *t; 1932 t=FindContactByUin(uinContact); \ 00000038 ........ LDR R8,??DataTable76 ;; 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 1933 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 1934 { 1935 case 0: 1936 SetMenuItemIconArray(data,item,icon_array+(t->isvibra?0:1)); \ ??contacthandler_0: \ 00000074 5C0090E5 LDR R0,[R0, #+92] \ 00000078 040000EA B ??contacthandler_5 1937 break; 1938 case 1: 1939 SetMenuItemIconArray(data,item,icon_array+(t->issound?0:1)); \ ??contacthandler_1: \ 0000007C 600090E5 LDR R0,[R0, #+96] \ 00000080 020000EA B ??contacthandler_5 1940 break; 1941 case 2: 1942 SetMenuItemIconArray(data,item,icon_array+(t->isautomsg?0:1)); \ ??contacthandler_2: \ 00000084 640090E5 LDR R0,[R0, #+100] \ 00000088 000000EA B ??contacthandler_5 1943 break; 1944 case 3: 1945 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 1946 break; 1947 #ifdef kluchnik 1948 case 4: 1949 SetMenuItemIconArray(data,item,icon_array+(t->isaccess?0:1)); 1950 break; 1951 case 5: 1952 SetMenuItemIconArray(data,item,icon_array+(t->automsgcount?0:1)); 1953 break; 1954 case 6: 1955 SetMenuItemIconArray(data,item,icon_array+(t->isLoadHistory?0:1)); 1956 break; 1957 case 7: 1958 SetMenuItemIconArray(data,item,icon_array+(t->isautobot?0:1)); 1959 break; 1960 #endif 1961 } 1962 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 1963 } \ 000000C0 F083BDE8 POP {R4-R9,PC} ;; return 1964 1965 char cont_hdr[64]; 1966 static const HEADER_DESC contact_list_HDR={0,0,NULL,NULL,NULL,(int)cont_hdr,LGP_NULL}; 1967 static const int _softkeys[] = {0,1,2}; 1968 1969 static const SOFTKEY_DESC _sk[] = 1970 { 1971 {0x0018, 0x0000, (int)"Выбрать"}, 1972 {0x0001, 0x0000, (int)LG_CLOSE}, 1973 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 1974 }; 1975 1976 const SOFTKEYSTAB _skt = 1977 { 1978 _sk, 0 1979 }; 1980 static const MENU_DESC contact_list_MNU= 1981 { 1982 8,contact_keyhook,contact_list_ghook,NULL, 1983 _softkeys, 1984 &_skt, 1985 0x11, 1986 contacthandler, 1987 NULL, 1988 NULL, 1989 _MAX 1990 }; 1991 1992 \ In segment CODE, align 4, keep-with-next 1993 int CreateContactMenu(CLIST *t) 1994 { \ CreateContactMenu: \ 00000000 70402DE9 PUSH {R4-R6,LR} 1995 uinContact=t->uin; \ 00000004 ........ LDR R5,??DataTable76 ;; icon_array 1996 icon_array[0]=GetPicNByUnicodeSymbol(CBOX_CHECKED); 1997 icon_array[1]=GetPicNByUnicodeSymbol(CBOX_UNCHECKED); 1998 sprintf(cont_hdr,"Меню кoнт. %s",t->name); \ 00000008 74609FE5 LDR R6,??CreateContactMenu_0 ;; `?next)) 2051 { 2052 if(cl->log) 2053 { 2054 FreeLOGQ(&cl->log); 2055 cl->msg_count=0; 2056 cl->isactive=0; 2057 } 2058 } 2059 if(strlen(ContactT9Key)) ClearContactT9Key(); 2060 RecountMenu(NULL,1); 2061 ShowMSG(1,(int)"All chat clear!"); 2062 break; 2063 } 2064 case 6: 2065 if(!away_m) 2066 { 2067 away_m=!away_m; 2068 GBS_StopTimer(&away_tmr); 2069 msg_away_timer=AUTO_ENGADE; 2070 InputAwayMsg(); 2071 2072 } 2073 else 2074 { 2075 msg_away_timer=0; 2076 away_m=!away_m; 2077 if(change_back_status) 2078 { 2079 CurrentStatus=status_rem; 2080 set_my_status(); 2081 change_back_status=0; 2082 } 2083 } 2084 UpdateCLheader(); 2085 break; 2086 case 7: 2087 { 2088 Show_XTX=!(Show_XTX); 2089 if(Show_XTX) 2090 ShowMSG(1,(int)"Default show x-status"); 2091 else 2092 ShowMSG(1,(int)"Default show time"); 2093 } 2094 break; 2095 case 8: 2096 { 2097 WSHDR *ws; 2098 ws=AllocWS(150); 2099 str_2ws(ws,suc_config_name,128); 2100 ExecuteFile(ws,0,0); 2101 FreeWS(ws); 2102 } 2103 break; 2104 case 9: 2105 { 2106 WSHDR *ws; 2107 ws=AllocWS(150); 2108 str_2ws(ws,suc_config_name_mod,128); 2109 ExecuteFile(ws,0,0); 2110 FreeWS(ws); 2111 } 2112 break; 2113 case 10://ping 2114 { 2115 janis=1; 2116 TPKT *p; 2117 p=malloc(sizeof(PKT)+sizeof(TTime)); 2118 GetDateTime(NULL,(TTime *)p->data); 2119 p->pkt.uin=0; 2120 p->pkt.type=T_ECHO; 2121 p->pkt.data_len=sizeof(TTime); 2122 SUBPROC((void *)SendAnswer,0,p); 2123 } 2124 break; 2125 } 2126 } 2127 2128 void LongPressAction(int key) 2129 { 2130 switch(key) 2131 { 2132 case '0': LongPressActionOnChat(longAct_0); break; 2133 case '1': LongPressActionOnChat(longAct_1); break; 2134 case '2': LongPressActionOnChat(longAct_2); break; 2135 case '3': LongPressActionOnChat(longAct_3); break; 2136 case '4': LongPressActionOnChat(longAct_4); break; 2137 case '5': LongPressActionOnChat(longAct_5); break; 2138 case '6': LongPressActionOnChat(longAct_6); break; 2139 case '7': LongPressActionOnChat(longAct_7); break; 2140 case '8': LongPressActionOnChat(longAct_8); break; 2141 case '9': LongPressActionOnChat(longAct_9); break; 2142 } 2143 } 2144 */ 2145 char hostbuf2[128]; 2146 \ In segment CODE, align 4, keep-with-next 2147 int contactlist_menu_onkey(void *data, GUI_MSG *msg) 2148 { \ contactlist_menu_onkey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 2149 #ifdef NEWSGOLD 2150 scrsTime=0; \ 00000004 ........ LDR R6,??DataTable77 ;; S_ICONS \ 00000008 04D04DE2 SUB SP,SP,#+4 \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 00A0A0E3 MOV R10,#+0 \ 00000014 8CA286E5 STR R10,[R6, #+652] 2151 #endif 2152 2153 CLIST *t; 2154 int i; 2155 i=GetCurMenuItem(data); \ 00000018 8F0100EF SWI +399 2156 t=FindContactByN(i); \ 0000001C ........ _BLF FindContactByN,??FindContactByN??rA \ 00000020 0090A0E1 MOV R9,R0 2157 2158 if (msg->keys==0x18) \ 00000024 F200D5E1 LDRSH R0,[R5, #+2] \ 00000028 180050E3 CMP R0,#+24 \ 0000002C 0100001A BNE ??contactlist_menu_onkey_1 2159 { 2160 ShowMainMenu(); \ 00000030 ........ _BLF ShowMainMenu,??ShowMainMenu??rA 2161 return(-1); \ 00000034 060100EA B ??contactlist_menu_onkey_2 2162 } 2163 2164 if (msg->keys==0x3D) \ ??contactlist_menu_onkey_1: \ 00000038 0470A0E3 MOV R7,#+4 \ 0000003C 507E87E3 ORR R7,R7,#0x500 \ 00000040 3D0050E3 CMP R0,#+61 \ 00000044 2400001A BNE ??contactlist_menu_onkey_3 2165 { 2166 if (t) \ 00000048 000059E3 CMP R9,#+0 \ 0000004C 6600000A BEQ ??contactlist_menu_onkey_4 2167 { 2168 if (t->isgroup) \ 00000050 080099E5 LDR R0,[R9, #+8] \ 00000054 000050E3 CMP R0,#+0 \ 00000058 0700000A BEQ ??contactlist_menu_onkey_5 2169 { 2170 t->state^=0xFFFF; \ 0000005C B405D9E1 LDRH R0,[R9, #+84] \ 00000060 FF10A0E3 MOV R1,#+255 \ 00000064 FF1C81E3 ORR R1,R1,#0xFF00 \ 00000068 000021E0 EOR R0,R1,R0 \ 0000006C B405C9E1 STRH R0,[R9, #+84] 2171 RecountMenu(t,1); \ 00000070 0110A0E3 MOV R1,#+1 \ 00000074 0900A0E1 MOV R0,R9 \ 00000078 5A0000EA B ??contactlist_menu_onkey_6 2172 return(-1); 2173 } 2174 if (strlen(ContactT9Key)) \ ??contactlist_menu_onkey_5: \ 0000007C 060087E0 ADD R0,R7,R6 \ 00000080 1B0000EF SWI +27 \ 00000084 000050E3 CMP R0,#+0 \ 00000088 0500000A BEQ ??contactlist_menu_onkey_7 2175 { 2176 ClearContactT9Key(); \ 0000008C 2010A0E3 MOV R1,#+32 \ 00000090 060087E0 ADD R0,R7,R6 \ 00000094 1D0100EF SWI +285 2177 RecountMenu(NULL,1); \ 00000098 0110A0E3 MOV R1,#+1 \ 0000009C 0000A0E3 MOV R0,#+0 \ 000000A0 ........ BL RecountMenu 2178 } 2179 #ifdef kluchnik 2180 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_3: \ 000000DC 010050E3 CMP R0,#+1 \ 000000E0 0500001A BNE ??contactlist_menu_onkey_9 2191 { 2192 if (strlen(ContactT9Key)) \ 000000E4 060087E0 ADD R0,R7,R6 \ 000000E8 1B0000EF SWI +27 \ 000000EC 000050E3 CMP R0,#+0 \ 000000F0 0100000A BEQ ??contactlist_menu_onkey_9 2193 { 2194 BackSpaceContactT9(); \ 000000F4 ........ BL BackSpaceContactT9 2195 RecountMenu(NULL,1); \ 000000F8 380000EA B ??contactlist_menu_onkey_10 2196 return(-1); 2197 } 2198 } 2199 if (msg->gbsmsg->msg==KEY_DOWN) \ ??contactlist_menu_onkey_9: \ 000000FC 040095E5 LDR R0,[R5, #+4] \ 00000100 0140A0E3 MOV R4,#+1 \ 00000104 041090E5 LDR R1,[R0, #+4] \ 00000108 9320A0E3 MOV R2,#+147 \ 0000010C 402F82E3 ORR R2,R2,#0x100 \ 00000110 020051E1 CMP R1,R2 \ 00000114 3B00001A BNE ??contactlist_menu_onkey_11 2200 { 2201 int key=msg->gbsmsg->submess; \ 00000118 088090E5 LDR R8,[R0, #+8] 2202 if ((key>='0')&&(key<='9')) \ 0000011C 300058E3 CMP R8,#+48 \ 00000120 070000BA BLT ??contactlist_menu_onkey_12 \ 00000124 3A0058E3 CMP R8,#+58 \ 00000128 0C0000AA BGE ??contactlist_menu_onkey_13 2203 { 2204 AddContactT9Key(key); \ 0000012C 0800A0E1 MOV R0,R8 \ 00000130 ........ BL AddContactT9Key 2205 RecountMenu(NULL,1); \ 00000134 0110A0E3 MOV R1,#+1 \ 00000138 0A00A0E1 MOV R0,R10 \ 0000013C ........ BL RecountMenu \ 00000140 D20000EA B ??contactlist_menu_onkey_14 2206 return(-1); 2207 } 2208 2209 if (key==VOL_UP_BUTTON && isVolUpButton) \ ??contactlist_menu_onkey_12: \ 00000144 0D0058E3 CMP R8,#+13 \ 00000148 0400001A BNE ??contactlist_menu_onkey_13 \ 0000014C 18069FE5 LDR R0,??contactlist_menu_onkey_15 ;; isVolUpButton \ 00000150 000090E5 LDR R0,[R0, #+0] \ 00000154 000050E3 CMP R0,#+0 \ 00000158 0000000A BEQ ??contactlist_menu_onkey_13 2210 { 2211 #ifdef NEWSGOLD 2212 CreateScreenSelectGUI(); \ 0000015C ........ _BLF CreateScreenSelectGUI,??CreateScreenSelectGUI??rA 2213 #else 2214 char *small_info=malloc(256); 2215 sprintf(small_info, "Время в онлайн:\n" 2216 "%02d:%02d:%02d\n" 2217 "Сервер:\n%s" 2218 ,uptimeHour, uptimeMin, uptimeSec, hostbuf2); 2219 ShowMSG(1,(int)small_info); 2220 mfree(small_info); 2221 #endif 2222 } 2223 2224 if(msg->gbsmsg->submess==VOL_DOWN_BUTTON && isVolDownButton) \ ??contactlist_menu_onkey_13: \ 00000160 040095E5 LDR R0,[R5, #+4] \ 00000164 080090E5 LDR R0,[R0, #+8] \ 00000168 0E0050E3 CMP R0,#+14 \ 0000016C 1500001A BNE ??contactlist_menu_onkey_16 \ 00000170 F8059FE5 LDR R0,??contactlist_menu_onkey_15+0x4 ;; isVolDownButton \ 00000174 000090E5 LDR R0,[R0, #+0] \ 00000178 000050E3 CMP R0,#+0 \ 0000017C 1100000A BEQ ??contactlist_menu_onkey_16 2225 { 2226 if(!away_m) \ 00000180 940296E5 LDR R0,[R6, #+660] \ 00000184 000050E3 CMP R0,#+0 \ 00000188 0300001A BNE ??contactlist_menu_onkey_17 2227 { 2228 away_m=!away_m; \ 0000018C 944286E5 STR R4,[R6, #+660] 2229 /* GBS_StopTimer(&away_tmr); 2230 msg_away_timer=AUTO_ENGADE; 2231 away_timer();*/ 2232 main_d=1; \ 00000190 344286E5 STR R4,[R6, #+564] 2233 InputAwayMsg(); \ 00000194 ........ BL InputAwayMsg \ 00000198 080000EA B ??contactlist_menu_onkey_18 2234 } 2235 else 2236 { 2237 msg_away_timer=0; 2238 away_m=!away_m; 2239 if(change_back_status) \ ??contactlist_menu_onkey_17: \ 0000019C 9C0296E5 LDR R0,[R6, #+668] \ 000001A0 90A286E5 STR R10,[R6, #+656] \ 000001A4 94A286E5 STR R10,[R6, #+660] \ 000001A8 000050E3 CMP R0,#+0 \ 000001AC 0300000A BEQ ??contactlist_menu_onkey_18 2240 { 2241 CurrentStatus=status_rem; \ 000001B0 980296E5 LDR R0,[R6, #+664] \ 000001B4 800286E5 STR R0,[R6, #+640] 2242 set_my_status(); \ 000001B8 ........ BL set_my_status 2243 change_back_status=0; \ 000001BC 9CA286E5 STR R10,[R6, #+668] 2244 } 2245 } 2246 UpdateCLheader(); \ ??contactlist_menu_onkey_18: \ 000001C0 ........ BL UpdateCLheader 2247 RefreshGUI(); \ 000001C4 960100EF SWI +406 2248 } 2249 2250 if(key==GREEN_BUTTON) \ ??contactlist_menu_onkey_16: \ 000001C8 0B0058E3 CMP R8,#+11 \ 000001CC 0800001A BNE ??contactlist_menu_onkey_19 2251 { 2252 IsActiveUp=!IsActiveUp; \ 000001D0 740296E5 LDR R0,[R6, #+628] \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 0040A013 MOVNE R4,#+0 \ 000001DC 744286E5 STR R4,[R6, #+628] 2253 RecountMenu(NULL,1); \ ??contactlist_menu_onkey_10: \ 000001E0 0110A0E3 MOV R1,#+1 \ 000001E4 0000A0E3 MOV R0,#+0 \ ??contactlist_menu_onkey_6: \ 000001E8 ........ BL RecountMenu 2254 return(-1); \ ??contactlist_menu_onkey_4: \ 000001EC 0A00E0E1 MVN R0,R10 \ 000001F0 F28FBDE8 POP {R1,R4-R11,PC} 2255 } 2256 2257 if(key==LEFT_BUTTON && (CountContacts()>0)) \ ??contactlist_menu_onkey_19: \ 000001F4 3D0058E3 CMP R8,#+61 \ 000001F8 3B00001A BNE ??contactlist_menu_onkey_20 \ 000001FC ........ _BLF CountContacts,??CountContacts??rA \ 00000200 010050E3 CMP R0,#+1 \ 00000204 230000AA BGE ??contactlist_menu_onkey_21 2258 { 2259 while(t=(CLIST *)(t->next)) 2260 { 2261 if (t->isunread) goto doit; 2262 } 2263 t=(CLIST *)(&cltop); 2264 while(t=(CLIST *)(t->next)) 2265 { 2266 if (t->isunread) goto doit; 2267 } 2268 if (t && Is_Show_Groups) { 2269 if (!t->isgroup) 2270 t=FindGroupByID(t->group); 2271 if (t && !t->state) { 2272 t->state^=0xFFFF; 2273 goto does; 2274 } 2275 } 2276 doit: 2277 { 2278 CLIST *g=FindGroupByID(t->group); 2279 if (g) 2280 { 2281 if (g->state) 2282 { 2283 g->state=0; 2284 } 2285 } 2286 } 2287 does: 2288 RecountMenu(t,1); 2289 return(-1); 2290 } 2291 2292 if (key=='*' && (CountContacts()>0)) 2293 { 2294 while(t=(CLIST *)(t->next)) 2295 { 2296 if (t->just_now) goto doit3; 2297 } 2298 t=(CLIST *)(&cltop); 2299 while(t=(CLIST *)(t->next)) 2300 { 2301 if (t->just_now) goto doit3; 2302 } 2303 return(-1); 2304 doit3: 2305 { 2306 CLIST *g=FindGroupByID(t->group); 2307 if (g) 2308 { 2309 if (g->state) 2310 { 2311 g->state=0; 2312 } 2313 } 2314 } 2315 RecountMenu(t,1); 2316 return(-1); 2317 } 2318 2319 if (key=='#' && (CountContacts()>0))//Если есть хоть один контакт то выполнять,иначе возможен пикофф 2320 { 2321 if(ActionResh) 2322 { 2323 while(t=(CLIST *)(t->next)) 2324 { 2325 if (t->isactive) goto doit4; 2326 } 2327 t=(CLIST *)(&cltop); 2328 while(t=(CLIST *)(t->next)) 2329 { 2330 if (t->isactive) goto doit4; 2331 } 2332 return(-1); 2333 doit4: 2334 { 2335 CLIST *g=FindGroupByID(t->group); 2336 if (g) 2337 { 2338 if (g->state) 2339 { 2340 g->state=0; 2341 } 2342 } 2343 } 2344 RecountMenu(t,1); 2345 } 2346 else 2347 { 2348 if(t->log && !(t->just_now))//очистить лог 2349 { 2350 FreeLOGQ(&t->log); 2351 t->msg_count=0; 2352 t->isactive=0; 2353 } 2354 2355 if(t->just_now)//если контакт тока зашел,то обнуляем 2356 { 2357 CLIST *tt; 2358 tt=FindContactByUin(t->uin); 2359 tt->just_now=0; 2360 } 2361 2362 if(t->uin==UIN)//если нажали на Loopback, то обнуляем все just_now'ы 2363 { 2364 CLIST *tt; 2365 tt=(CLIST *)(&cltop); 2366 while(tt=(CLIST *)(tt->next)) 2367 { 2368 if(tt->just_now) tt->just_now=0; 2369 } 2370 } 2371 2372 if(strlen(ContactT9Key)) ClearContactT9Key(); 2373 RecountMenu(NULL,0); 2374 } 2375 return(-1); 2376 } 2377 2378 if (key==RIGHT_BUTTON) 2379 { 2380 //Послать запрос текста XStatus 2381 if (t) 2382 { 2383 if (!t->isgroup) 2384 { 2385 FreeXText(t); 2386 t->req_xtext=0; 2387 RequestXText(t->uin); 2388 RefreshGUI(); 2389 return(-1); 2390 } 2391 } 2392 } 2393 } 2394 2395 if (msg->gbsmsg->msg==LONG_PRESS) \ ??contactlist_menu_onkey_11: \ 00000208 040095E5 LDR R0,[R5, #+4] \ 0000020C 652F84E3 ORR R2,R4,#0x194 \ 00000210 041090E5 LDR R1,[R0, #+4] \ 00000214 020051E1 CMP R1,R2 \ 00000218 5101001A BNE ??contactlist_menu_onkey_22 \ 0000021C 081090E5 LDR R1,[R0, #+8] \ 00000220 ........ LDR R8,??DataTable87 ;; Canvas \ 00000224 B0B0A0E3 MOV R11,#+176 \ 00000228 DEBC8BE3 ORR R11,R11,#0xDE00 \ 0000022C 230051E3 CMP R1,#+35 \ 00000230 9800001A BNE ??contactlist_menu_onkey_23 2396 { 2397 if (msg->gbsmsg->submess=='#') 2398 { 2399 ClearContactT9Key(); \ 00000234 2010A0E3 MOV R1,#+32 \ 00000238 060087E0 ADD R0,R7,R6 \ 0000023C 1D0100EF SWI +285 2400 RecountMenu(NULL,1); \ 00000240 0110A0E3 MOV R1,#+1 \ 00000244 0A00A0E1 MOV R0,R10 \ 00000248 ........ BL RecountMenu 2401 gipc.name_to=ipc_xtask_name; \ 0000024C D60F88E2 ADD R0,R8,#+856 \ 00000250 BC0086E5 STR R0,[R6, #+188] 2402 gipc.name_from=ipc_my_name; \ 00000254 CE0F88E2 ADD R0,R8,#+824 \ 00000258 C00086E5 STR R0,[R6, #+192] 2403 gipc.data=0; \ 0000025C C4A086E5 STR R10,[R6, #+196] 2404 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); \ 00000260 BC3086E2 ADD R3,R6,#+188 \ 00000264 0420A0E1 MOV R2,R4 \ 00000268 0B10A0E1 MOV R1,R11 \ 0000026C 0900A0E3 MOV R0,#+9 \ 00000270 420C80E3 ORR R0,R0,#0x4200 \ 00000274 000100EF SWI +256 2405 if (IsUnlocked()) \ 00000278 430000EF SWI +67 \ 0000027C 000050E3 CMP R0,#+0 \ 00000280 D9FFFF0A BEQ ??contactlist_menu_onkey_4 2406 { 2407 KbdLock(); \ 00000284 A90000EF SWI +169 \ 00000288 710000EA B ??contactlist_menu_onkey_2 2408 } 2409 // CreateScreenSelectGUI(); 2410 return(-1); 2411 } \ ??contactlist_menu_onkey_24: \ 0000028C 800099E5 LDR R0,[R9, #+128] \ 00000290 000050E3 CMP R0,#+0 \ 00000294 0900001A BNE ??contactlist_menu_onkey_25 \ ??contactlist_menu_onkey_21: \ 00000298 009099E5 LDR R9,[R9, #+0] \ 0000029C 000059E3 CMP R9,#+0 \ 000002A0 F9FFFF1A BNE ??contactlist_menu_onkey_24 \ 000002A4 C39F86E2 ADD R9,R6,#+780 \ ??contactlist_menu_onkey_26: \ 000002A8 009099E5 LDR R9,[R9, #+0] \ 000002AC 000059E3 CMP R9,#+0 \ 000002B0 0200000A BEQ ??contactlist_menu_onkey_25 \ 000002B4 800099E5 LDR R0,[R9, #+128] \ 000002B8 000050E3 CMP R0,#+0 \ 000002BC F9FFFF0A BEQ ??contactlist_menu_onkey_26 \ ??contactlist_menu_onkey_25: \ 000002C0 100099E5 LDR R0,[R9, #+16] \ 000002C4 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 000002C8 000050E3 CMP R0,#+0 \ 000002CC B415D011 LDRHNE R1,[R0, #+84] \ 000002D0 00005113 CMPNE R1,#+0 \ 000002D4 B4A5C011 STRHNE R10,[R0, #+84] \ 000002D8 0110A0E3 MOV R1,#+1 \ 000002DC 0900A0E1 MOV R0,R9 \ 000002E0 ........ BL RecountMenu \ 000002E4 000064E2 RSB R0,R4,#+0 \ 000002E8 F28FBDE8 POP {R1,R4-R11,PC} \ ??contactlist_menu_onkey_20: \ 000002EC 2A0058E3 CMP R8,#+42 \ 000002F0 1100001A BNE ??contactlist_menu_onkey_27 \ 000002F4 ........ _BLF CountContacts,??CountContacts??rA \ 000002F8 010050E3 CMP R0,#+1 \ 000002FC C1FFFFBA BLT ??contactlist_menu_onkey_11 \ 00000300 020000EA B ??contactlist_menu_onkey_28 \ ??contactlist_menu_onkey_29: \ 00000304 680099E5 LDR R0,[R9, #+104] \ 00000308 000050E3 CMP R0,#+0 \ 0000030C EBFFFF1A BNE ??contactlist_menu_onkey_25 \ ??contactlist_menu_onkey_28: \ 00000310 009099E5 LDR R9,[R9, #+0] \ 00000314 000059E3 CMP R9,#+0 \ 00000318 F9FFFF1A BNE ??contactlist_menu_onkey_29 \ 0000031C C39F86E2 ADD R9,R6,#+780 \ ??contactlist_menu_onkey_30: \ 00000320 009099E5 LDR R9,[R9, #+0] \ 00000324 000059E3 CMP R9,#+0 \ 00000328 AFFFFF0A BEQ ??contactlist_menu_onkey_4 \ 0000032C 680099E5 LDR R0,[R9, #+104] \ 00000330 000050E3 CMP R0,#+0 \ 00000334 F9FFFF0A BEQ ??contactlist_menu_onkey_30 \ 00000338 E0FFFFEA B ??contactlist_menu_onkey_25 \ ??contactlist_menu_onkey_27: \ 0000033C 230058E3 CMP R8,#+35 \ 00000340 4500001A BNE ??contactlist_menu_onkey_31 \ 00000344 ........ _BLF CountContacts,??CountContacts??rA \ 00000348 010050E3 CMP R0,#+1 \ 0000034C ADFFFFBA BLT ??contactlist_menu_onkey_11 \ 00000350 1C049FE5 LDR R0,??contactlist_menu_onkey_15+0x8 ;; ActionResh \ 00000354 000090E5 LDR R0,[R0, #+0] \ 00000358 000050E3 CMP R0,#+0 \ 0000035C 1900001A BNE ??contactlist_menu_onkey_32 \ 00000360 900099E5 LDR R0,[R9, #+144] \ 00000364 000050E3 CMP R0,#+0 \ 00000368 0600000A BEQ ??contactlist_menu_onkey_33 \ 0000036C 680099E5 LDR R0,[R9, #+104] \ 00000370 000050E3 CMP R0,#+0 \ 00000374 0300001A BNE ??contactlist_menu_onkey_33 \ 00000378 900089E2 ADD R0,R9,#+144 \ 0000037C ........ BL FreeLOGQ \ 00000380 A0A089E5 STR R10,[R9, #+160] \ 00000384 9CA089E5 STR R10,[R9, #+156] \ ??contactlist_menu_onkey_33: \ 00000388 680099E5 LDR R0,[R9, #+104] \ 0000038C 000050E3 CMP R0,#+0 \ 00000390 0200000A BEQ ??contactlist_menu_onkey_34 \ 00000394 0C0099E5 LDR R0,[R9, #+12] \ 00000398 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 0000039C 68A080E5 STR R10,[R0, #+104] \ ??contactlist_menu_onkey_34: \ 000003A0 ........ LDR R1,??DataTable99 ;; UIN \ 000003A4 0C0099E5 LDR R0,[R9, #+12] \ 000003A8 001091E5 LDR R1,[R1, #+0] \ 000003AC 010050E1 CMP R0,R1 \ 000003B0 1D00001A BNE ??contactlist_menu_onkey_35 \ 000003B4 C30F86E2 ADD R0,R6,#+780 \ 000003B8 180000EA B ??contactlist_menu_onkey_36 \ ??contactlist_menu_onkey_37: \ 000003BC 9C0099E5 LDR R0,[R9, #+156] \ 000003C0 000050E3 CMP R0,#+0 \ 000003C4 0900001A BNE ??contactlist_menu_onkey_38 \ ??contactlist_menu_onkey_32: \ 000003C8 009099E5 LDR R9,[R9, #+0] \ 000003CC 000059E3 CMP R9,#+0 \ 000003D0 F9FFFF1A BNE ??contactlist_menu_onkey_37 \ 000003D4 C39F86E2 ADD R9,R6,#+780 \ ??contactlist_menu_onkey_39: \ 000003D8 009099E5 LDR R9,[R9, #+0] \ 000003DC 000059E3 CMP R9,#+0 \ 000003E0 81FFFF0A BEQ ??contactlist_menu_onkey_4 \ 000003E4 9C0099E5 LDR R0,[R9, #+156] \ 000003E8 000050E3 CMP R0,#+0 \ 000003EC F9FFFF0A BEQ ??contactlist_menu_onkey_39 \ ??contactlist_menu_onkey_38: \ 000003F0 100099E5 LDR R0,[R9, #+16] \ 000003F4 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 000003F8 000050E3 CMP R0,#+0 \ 000003FC B415D011 LDRHNE R1,[R0, #+84] \ 00000400 00005113 CMPNE R1,#+0 \ 00000404 B4A5C011 STRHNE R10,[R0, #+84] \ 00000408 0110A0E3 MOV R1,#+1 \ 0000040C 0900A0E1 MOV R0,R9 \ 00000410 0E0000EA B ??contactlist_menu_onkey_40 \ ??contactlist_menu_onkey_41: \ 00000414 681090E5 LDR R1,[R0, #+104] \ 00000418 000051E3 CMP R1,#+0 \ 0000041C 68A08015 STRNE R10,[R0, #+104] \ ??contactlist_menu_onkey_36: \ 00000420 000090E5 LDR R0,[R0, #+0] \ 00000424 000050E3 CMP R0,#+0 \ 00000428 F9FFFF1A BNE ??contactlist_menu_onkey_41 \ ??contactlist_menu_onkey_35: \ 0000042C 060087E0 ADD R0,R7,R6 \ 00000430 1B0000EF SWI +27 \ 00000434 000050E3 CMP R0,#+0 \ 00000438 0200000A BEQ ??contactlist_menu_onkey_42 \ 0000043C 2010A0E3 MOV R1,#+32 \ 00000440 060087E0 ADD R0,R7,R6 \ 00000444 1D0100EF SWI +285 \ ??contactlist_menu_onkey_42: \ 00000448 0010A0E3 MOV R1,#+0 \ 0000044C 0100A0E1 MOV R0,R1 \ ??contactlist_menu_onkey_40: \ 00000450 ........ BL RecountMenu \ ??contactlist_menu_onkey_2: \ 00000454 0A00E0E1 MVN R0,R10 \ 00000458 F28FBDE8 POP {R1,R4-R11,PC} \ ??contactlist_menu_onkey_31: \ 0000045C 3E0058E3 CMP R8,#+62 \ 00000460 68FFFF1A BNE ??contactlist_menu_onkey_11 \ 00000464 000059E3 CMP R9,#+0 \ 00000468 66FFFF0A BEQ ??contactlist_menu_onkey_11 \ 0000046C 080099E5 LDR R0,[R9, #+8] \ 00000470 000050E3 CMP R0,#+0 \ 00000474 63FFFF1A BNE ??contactlist_menu_onkey_11 \ 00000478 0900A0E1 MOV R0,R9 \ 0000047C ........ _BLF FreeXText,??FreeXText??rA \ 00000480 ACA089E5 STR R10,[R9, #+172] \ 00000484 0C0099E5 LDR R0,[R9, #+12] \ 00000488 ........ BL RequestXText \ 0000048C 960100EF SWI +406 \ ??contactlist_menu_onkey_14: \ 00000490 000064E2 RSB R0,R4,#+0 \ 00000494 F28FBDE8 POP {R1,R4-R11,PC} 2412 if(msg->gbsmsg->submess=='*') \ ??contactlist_menu_onkey_23: \ 00000498 2A0051E3 CMP R1,#+42 \ 0000049C 1100001A BNE ??contactlist_menu_onkey_43 2413 { 2414 ClearContactT9Key(); \ 000004A0 2010A0E3 MOV R1,#+32 \ 000004A4 060087E0 ADD R0,R7,R6 \ 000004A8 1D0100EF SWI +285 2415 RecountMenu(NULL,1); \ 000004AC 0110A0E3 MOV R1,#+1 \ 000004B0 0A00A0E1 MOV R0,R10 \ 000004B4 ........ BL RecountMenu 2416 silenthide=1; \ 000004B8 BC4286E5 STR R4,[R6, #+700] 2417 gipc.name_to=ipc_xtask_name; \ 000004BC D60F88E2 ADD R0,R8,#+856 \ 000004C0 BC0086E5 STR R0,[R6, #+188] 2418 gipc.name_from=ipc_my_name; \ 000004C4 CE0F88E2 ADD R0,R8,#+824 \ 000004C8 C00086E5 STR R0,[R6, #+192] 2419 gipc.data=0; \ 000004CC C4A086E5 STR R10,[R6, #+196] 2420 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); \ 000004D0 BC3086E2 ADD R3,R6,#+188 \ 000004D4 0420A0E1 MOV R2,R4 \ 000004D8 0B10A0E1 MOV R1,R11 \ 000004DC 0900A0E3 MOV R0,#+9 \ 000004E0 420C80E3 ORR R0,R0,#0x4200 \ 000004E4 000100EF SWI +256 2421 } 2422 2423 if(msg->gbsmsg->submess==RIGHT_BUTTON) \ ??contactlist_menu_onkey_43: \ 000004E8 040095E5 LDR R0,[R5, #+4] \ 000004EC 080090E5 LDR R0,[R0, #+8] \ 000004F0 3E0050E3 CMP R0,#+62 2424 { 2425 if(!t->isgroup) \ 000004F4 08009905 LDREQ R0,[R9, #+8] \ 000004F8 00005003 CMPEQ R0,#+0 \ 000004FC 0100001A BNE ??contactlist_menu_onkey_44 2426 CreateContactMenu(t); \ 00000500 0900A0E1 MOV R0,R9 \ 00000504 ........ BL CreateContactMenu 2427 } 2428 2429 //-------------------- LONG PRESS ACTION ON CL --------------------// 2430 switch(msg->gbsmsg->submess) \ ??contactlist_menu_onkey_44: \ 00000508 040095E5 LDR R0,[R5, #+4] \ 0000050C ........ LDR R9,??DataTable81 ;; WriteDefSettings \ 00000510 080090E5 LDR R0,[R0, #+8] \ 00000514 300040E2 SUB R0,R0,#+48 \ 00000518 090050E3 CMP R0,#+9 \ 0000051C 8300008A BHI ??contactlist_menu_onkey_45 \ 00000520 011F8FE2 ADR R1,??contactlist_menu_onkey_0 \ 00000524 0010D1E7 LDRB R1,[R1, R0] \ 00000528 01F18FE0 ADD PC,PC,R1, LSL #+2 \ ??contactlist_menu_onkey_0: \ 0000052C 6F020E1B DC8 +111,+2,+14,+27 \ 00000530 27344853 DC8 +39,+52,+72,+83 \ 00000534 5E6B0000 DC8 +94,+107,+0,+0 2431 { 2432 case '1': 2433 Is_Sounds_Enabled=!(Is_Sounds_Enabled); \ ??contactlist_menu_onkey_46: \ 00000538 C40296E5 LDR R0,[R6, #+708] \ 0000053C 000050E3 CMP R0,#+0 \ 00000540 0040A013 MOVNE R4,#+0 \ 00000544 C44286E5 STR R4,[R6, #+708] 2434 if(Is_Sounds_Enabled) \ 00000548 000054E3 CMP R4,#+0 2435 ShowMSG(1,(int)"Sound 0n"); \ 0000054C 20108812 ADDNE R1,R8,#+32 2436 else 2437 ShowMSG(1,(int)"Sound Off"); \ 00000550 2C108802 ADDEQ R1,R8,#+44 \ 00000554 0100A0E3 MOV R0,#+1 \ 00000558 480100EF SWI +328 2438 SUBPROC((void*)WriteDefSettings); \ 0000055C 0900A0E1 MOV R0,R9 \ 00000560 710100EF SWI +369 \ 00000564 710000EA B ??contactlist_menu_onkey_45 2439 break; 2440 case '2': 2441 Is_Vibra_Enabled=!(Is_Vibra_Enabled); \ ??contactlist_menu_onkey_47: \ 00000568 780296E5 LDR R0,[R6, #+632] \ 0000056C 000050E3 CMP R0,#+0 \ 00000570 0040A013 MOVNE R4,#+0 \ 00000574 784286E5 STR R4,[R6, #+632] 2442 SUBPROC((void*)WriteDefSettings); \ 00000578 0900A0E1 MOV R0,R9 \ 0000057C 710100EF SWI +369 2443 if(Is_Vibra_Enabled) \ 00000580 780296E5 LDR R0,[R6, #+632] \ 00000584 000050E3 CMP R0,#+0 \ 00000588 44108802 ADDEQ R1,R8,#+68 2444 ShowMSG(1,(int)"Vibra On"); \ 0000058C 38108812 ADDNE R1,R8,#+56 \ ??contactlist_menu_onkey_48: \ 00000590 0100A0E3 MOV R0,#+1 \ ??contactlist_menu_onkey_49: \ 00000594 480100EF SWI +328 \ 00000598 640000EA B ??contactlist_menu_onkey_45 2445 else 2446 ShowMSG(1,(int)"Vibra Off"); 2447 break; 2448 case '3': 2449 if(CurrentPrivateStatus!=1) \ ??contactlist_menu_onkey_50: \ 0000059C D00296E5 LDR R0,[R6, #+720] \ 000005A0 010050E3 CMP R0,#+1 \ 000005A4 0400000A BEQ ??contactlist_menu_onkey_51 2450 { 2451 SetPrivateStatus(1);//Инвиз \ 000005A8 0100A0E3 MOV R0,#+1 \ 000005AC ........ _BLF SetPrivateStatus,??SetPrivateStatus??rA 2452 ShowMSG(1,(int)"Инвиз включен"); \ 000005B0 501088E2 ADD R1,R8,#+80 \ 000005B4 0400A0E1 MOV R0,R4 \ ??contactlist_menu_onkey_52: \ 000005B8 F5FFFFEA B ??contactlist_menu_onkey_49 2453 } 2454 else 2455 { 2456 SetPrivateStatus(3); \ ??contactlist_menu_onkey_51: \ 000005BC 0300A0E3 MOV R0,#+3 \ 000005C0 ........ _BLF SetPrivateStatus,??SetPrivateStatus??rA 2457 ShowMSG(1,(int)"Инвиз выключен"); \ 000005C4 601088E2 ADD R1,R8,#+96 \ 000005C8 F0FFFFEA B ??contactlist_menu_onkey_48 2458 } 2459 break; 2460 case '4': 2461 Is_Double_Vibra_On=!(Is_Double_Vibra_On); \ ??contactlist_menu_onkey_53: \ 000005CC 600296E5 LDR R0,[R6, #+608] \ 000005D0 000050E3 CMP R0,#+0 \ 000005D4 0040A013 MOVNE R4,#+0 \ 000005D8 604286E5 STR R4,[R6, #+608] 2462 SUBPROC((void*)WriteDefSettings); \ 000005DC 0900A0E1 MOV R0,R9 \ 000005E0 710100EF SWI +369 2463 if(Is_Double_Vibra_On) \ 000005E4 600296E5 LDR R0,[R6, #+608] \ 000005E8 000050E3 CMP R0,#+0 2464 ShowMSG(1,(int)"Vibra rem On"); \ 000005EC 70108812 ADDNE R1,R8,#+112 \ 000005F0 0100A013 MOVNE R0,#+1 \ 000005F4 E6FFFF1A BNE ??contactlist_menu_onkey_49 2465 else 2466 ShowMSG(1,(int)"Vibra rem Off"); \ 000005F8 801088E2 ADD R1,R8,#+128 \ 000005FC E3FFFFEA B ??contactlist_menu_onkey_48 2467 break; 2468 case '5': 2469 { 2470 CLIST *cl; 2471 cl=(CLIST *)(&cltop); \ ??contactlist_menu_onkey_54: \ 00000600 C34F86E2 ADD R4,R6,#+780 \ 00000604 060000EA B ??contactlist_menu_onkey_55 2472 while(cl=(CLIST *)(cl->next)) 2473 { 2474 if(cl->log) \ ??contactlist_menu_onkey_56: \ 00000608 900094E5 LDR R0,[R4, #+144] \ 0000060C 000050E3 CMP R0,#+0 \ 00000610 0300000A BEQ ??contactlist_menu_onkey_55 2475 { 2476 FreeLOGQ(&cl->log); \ 00000614 900084E2 ADD R0,R4,#+144 \ 00000618 ........ BL FreeLOGQ 2477 cl->msg_count=0; \ 0000061C A0A084E5 STR R10,[R4, #+160] 2478 cl->isactive=0; \ 00000620 9CA084E5 STR R10,[R4, #+156] 2479 } 2480 } \ ??contactlist_menu_onkey_55: \ 00000624 004094E5 LDR R4,[R4, #+0] \ 00000628 000054E3 CMP R4,#+0 \ 0000062C F5FFFF1A BNE ??contactlist_menu_onkey_56 2481 if(strlen(ContactT9Key)) ClearContactT9Key(); \ 00000630 060087E0 ADD R0,R7,R6 \ 00000634 1B0000EF SWI +27 \ 00000638 000050E3 CMP R0,#+0 \ 0000063C E7FEFF0A BEQ ??contactlist_menu_onkey_10 \ 00000640 2010A0E3 MOV R1,#+32 \ 00000644 060087E0 ADD R0,R7,R6 \ 00000648 1D0100EF SWI +285 2482 RecountMenu(NULL,1); \ 0000064C E3FEFFEA B ??contactlist_menu_onkey_10 2483 return (-1); 2484 } 2485 case '6': 2486 Is_Show_Offline=!(Is_Show_Offline); \ ??contactlist_menu_onkey_57: \ 00000650 C80296E5 LDR R0,[R6, #+712] \ 00000654 000050E3 CMP R0,#+0 \ 00000658 0040A013 MOVNE R4,#+0 \ 0000065C C84286E5 STR R4,[R6, #+712] 2487 if(Is_Show_Offline) \ 00000660 000054E3 CMP R4,#+0 2488 ShowMSG(1,(int)"Offline on"); \ 00000664 90108812 ADDNE R1,R8,#+144 2489 else 2490 ShowMSG(1,(int)"Offline off"); \ 00000668 9C108802 ADDEQ R1,R8,#+156 \ 0000066C 0100A0E3 MOV R0,#+1 \ 00000670 480100EF SWI +328 2491 UpdateCLheader(); \ 00000674 ........ BL UpdateCLheader \ 00000678 2C0000EA B ??contactlist_menu_onkey_45 2492 break; 2493 case '7': 2494 { 2495 Show_XTX=!(Show_XTX); \ ??contactlist_menu_onkey_58: \ 0000067C A00296E5 LDR R0,[R6, #+672] \ 00000680 000050E3 CMP R0,#+0 \ 00000684 0040A013 MOVNE R4,#+0 \ 00000688 A04286E5 STR R4,[R6, #+672] 2496 if(Show_XTX) \ 0000068C 000054E3 CMP R4,#+0 2497 ShowMSG(1,(int)"Default show x-status"); \ 00000690 A8108812 ADDNE R1,R8,#+168 \ 00000694 0100A013 MOVNE R0,#+1 \ 00000698 BDFFFF1A BNE ??contactlist_menu_onkey_49 2498 else 2499 ShowMSG(1,(int)"Default show time"); \ 0000069C C01088E2 ADD R1,R8,#+192 \ 000006A0 0100A0E3 MOV R0,#+1 \ 000006A4 BAFFFFEA B ??contactlist_menu_onkey_49 2500 } 2501 break; 2502 case '8': 2503 { 2504 WSHDR *ws; 2505 ws=AllocWS(150); \ ??contactlist_menu_onkey_59: \ 000006A8 9600A0E3 MOV R0,#+150 \ 000006AC 250100EF SWI +293 2506 str_2ws(ws,suc_config_name,128); \ 000006B0 ........ LDR R1,??DataTable82 ;; suc_config_name \ ??contactlist_menu_onkey_60: \ 000006B4 0040A0E1 MOV R4,R0 \ 000006B8 8020A0E3 MOV R2,#+128 \ 000006BC 6C0100EF SWI +364 2507 ExecuteFile(ws,0,0); \ 000006C0 0020A0E3 MOV R2,#+0 \ 000006C4 0210A0E1 MOV R1,R2 \ 000006C8 0400A0E1 MOV R0,R4 \ 000006CC 940000EF SWI +148 2508 FreeWS(ws); \ 000006D0 0400A0E1 MOV R0,R4 \ 000006D4 290100EF SWI +297 \ 000006D8 140000EA B ??contactlist_menu_onkey_45 2509 } 2510 break; 2511 case '9': 2512 { 2513 WSHDR *ws; 2514 ws=AllocWS(150); \ ??contactlist_menu_onkey_61: \ 000006DC 9600A0E3 MOV R0,#+150 \ 000006E0 250100EF SWI +293 2515 str_2ws(ws,suc_config_name_mod,128); \ 000006E4 ........ LDR R1,??DataTable83 ;; suc_config_name_mod \ 000006E8 F1FFFFEA B ??contactlist_menu_onkey_60 2516 ExecuteFile(ws,0,0); 2517 FreeWS(ws); 2518 } 2519 break; 2520 case '0'://ping 2521 { 2522 janis=1; \ ??contactlist_menu_onkey_62: \ 000006EC ........ LDR R0,??DataTable84 ;; janis \ 000006F0 004080E5 STR R4,[R0, #+0] 2523 TPKT *p; 2524 p=malloc(sizeof(PKT)+sizeof(TTime)); \ 000006F4 1000A0E3 MOV R0,#+16 \ 000006F8 140000EF SWI +20 \ 000006FC 0040A0E1 MOV R4,R0 2525 GetDateTime(NULL,(TTime *)p->data); \ 00000700 081084E2 ADD R1,R4,#+8 \ 00000704 0000A0E3 MOV R0,#+0 \ 00000708 B40000EF SWI +180 2526 p->pkt.uin=0; \ 0000070C 00A084E5 STR R10,[R4, #+0] 2527 p->pkt.type=T_ECHO; \ 00000710 1200A0E3 MOV R0,#+18 \ 00000714 B400C4E1 STRH R0,[R4, #+4] 2528 p->pkt.data_len=sizeof(TTime); \ 00000718 0800A0E3 MOV R0,#+8 \ 0000071C B600C4E1 STRH R0,[R4, #+6] 2529 SUBPROC((void *)SendAnswer,0,p); \ 00000720 ........ LDR R0,??DataTable101 ;; SendAnswer \ 00000724 0420A0E1 MOV R2,R4 \ 00000728 0A10A0E1 MOV R1,R10 \ 0000072C 710100EF SWI +369 2530 } 2531 break; 2532 } 2533 // LongPressAction(msg->gbsmsg->submess); 2534 2535 int key=msg->gbsmsg->submess; \ ??contactlist_menu_onkey_45: \ 00000730 040095E5 LDR R0,[R5, #+4] \ 00000734 080090E5 LDR R0,[R0, #+8] 2536 if ((key>='0')&&(key<='9')) \ 00000738 300050E3 CMP R0,#+48 \ 0000073C 080000BA BLT ??contactlist_menu_onkey_22 \ 00000740 3A0050E3 CMP R0,#+58 \ 00000744 060000AA BGE ??contactlist_menu_onkey_22 2537 { 2538 ClearContactT9Key(); \ 00000748 2010A0E3 MOV R1,#+32 \ 0000074C 060087E0 ADD R0,R7,R6 \ 00000750 1D0100EF SWI +285 2539 UpdateCLheader(); \ 00000754 ........ BL UpdateCLheader 2540 RecountMenu(NULL,1); \ 00000758 0110A0E3 MOV R1,#+1 \ 0000075C 0000A0E3 MOV R0,#+0 \ 00000760 ........ BL RecountMenu 2541 } 2542 } 2543 return(0); \ ??contactlist_menu_onkey_22: \ 00000764 0000A0E3 MOV R0,#+0 \ 00000768 F28FBDE8 POP {R1,R4-R11,PC} ;; return \ ??contactlist_menu_onkey_15: \ 0000076C ........ DC32 isVolUpButton \ 00000770 ........ DC32 isVolDownButton \ 00000774 ........ DC32 ActionResh 2544 } 2545 \ In segment CODE, align 4, keep-with-next 2546 void GetOnTotalContact(int group_id,int *_onlinetotal) 2547 { 2548 CLIST *t; 2549 t=(CLIST *)&cltop; \ GetOnTotalContact: \ 00000000 ........ LDR R2,??DataTable86 ;; S_ICONS + 780 \ 00000004 30002DE9 PUSH {R4,R5} 2550 int online=0,total=0; \ 00000008 0030A0E3 MOV R3,#+0 \ 0000000C 00C0A0E3 MOV R12,#+0 \ 00000010 FF50A0E3 MOV R5,#+255 \ 00000014 FF5C85E3 ORR R5,R5,#0xFF00 \ 00000018 080000EA B ??GetOnTotalContact_0 2551 while((t=t->next)) 2552 { 2553 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 2554 { 2555 total++; 2556 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 2557 } 2558 } \ ??GetOnTotalContact_0: \ 00000040 002092E5 LDR R2,[R2, #+0] \ 00000044 000052E3 CMP R2,#+0 \ 00000048 F3FFFF1A BNE ??GetOnTotalContact_1 2559 _onlinetotal[0]=online; \ 0000004C 003081E5 STR R3,[R1, #+0] 2560 _onlinetotal[1]=total; \ 00000050 04C081E5 STR R12,[R1, #+4] 2561 } \ 00000054 3000BDE8 POP {R4,R5} \ 00000058 1EFF2FE1 BX LR ;; return 2562 2563 \ In segment CODE, align 4, keep-with-next 2564 void contactlist_menu_iconhndl(void *data, int curitem, void *unk) 2565 { \ contactlist_menu_iconhndl: \ 00000000 F24F2DE9 PUSH {R1,R4-R11,LR} \ 00000004 9CDF4DE2 SUB SP,SP,#+624 2566 CLIST *t; 2567 #ifdef USE_MLMENU 2568 void *item=AllocMLMenuItem(data); 2569 #else 2570 void *item=AllocMenuItem(data); 2571 #endif 2572 int icon; 2573 2574 WSHDR *ws2; 2575 #ifdef USE_MLMENU 2576 WSHDR *ws4; 2577 #endif 2578 WSHDR ws1loc, *ws1; 2579 unsigned short num[128]; 2580 ws1=CreateLocalWS(&ws1loc,num,128); 2581 #ifdef USE_MLMENU 2582 WSHDR ws3loc, *ws3; 2583 unsigned short num3[128]; 2584 ws3=CreateLocalWS(&ws3loc,num3,128); 2585 char s[64]; 2586 #endif 2587 t=FindContactByN(curitem); 2588 if (t) \ 00000008 ........ LDR R10,??DataTable87 ;; 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 7700000A BEQ ??contactlist_menu_iconhndl_0 2589 { 2590 icon=GetIconIndex(t); \ 00000050 ........ BL GetIconIndex \ 00000054 0090A0E1 MOV R9,R0 2591 if (icon!=IS_GROUP) \ 00000058 0F0059E3 CMP R9,#+15 \ 0000005C 6200000A BEQ ??contactlist_menu_iconhndl_1 2592 { 2593 if(t->just_now) \ 00000060 680098E5 LDR R0,[R8, #+104] \ 00000064 000050E3 CMP R0,#+0 \ 00000068 0C00000A BEQ ??contactlist_menu_iconhndl_2 2594 { 2595 char *test=malloc(64); \ 0000006C 4000A0E3 MOV R0,#+64 \ 00000070 140000EF SWI +20 \ 00000074 00B0A0E1 MOV R11,R0 2596 sprintf(test, ">> %s <<", t->name); \ 00000078 142088E2 ADD R2,R8,#+20 \ 0000007C D4108AE2 ADD R1,R10,#+212 \ 00000080 160000EF SWI +22 2597 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 2598 mfree(test); \ 00000094 0B00A0E1 MOV R0,R11 \ 00000098 150000EF SWI +21 \ 0000009C 030000EA B ??contactlist_menu_iconhndl_3 2599 } 2600 else 2601 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 2602 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 2603 { 2604 wsInsertChar(ws1,0x0004,1); \ 000000C0 0120A013 MOVNE R2,#+1 \ 000000C4 0410A013 MOVNE R1,#+4 \ 000000C8 0400001A BNE ??contactlist_menu_iconhndl_4 2605 wsInsertChar(ws1,0xE008,1); 2606 } 2607 else 2608 if (t->isactive) \ 000000CC 9C0098E5 LDR R0,[R8, #+156] \ 000000D0 000050E3 CMP R0,#+0 \ 000000D4 0700000A BEQ ??contactlist_menu_iconhndl_5 2609 { 2610 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 2611 wsInsertChar(ws1,0xE008,1); \ 000000E8 0120A0E3 MOV R2,#+1 \ 000000EC 0B10A0E1 MOV R1,R11 \ 000000F0 0600A0E1 MOV R0,R6 \ 000000F4 1D0000EF SWI +29 2612 } 2613 2614 #ifdef USE_MLMENU 2615 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 2616 { 2617 int i; 2618 zeromem(s,64); \ 0000012C 4010A0E3 MOV R1,#+64 \ 00000130 820F8DE2 ADD R0,SP,#+520 \ 00000134 1D0100EF SWI +285 2619 i=t->xtext[0]; \ 00000138 A40098E5 LDR R0,[R8, #+164] \ ??contactlist_menu_iconhndl_7: \ 0000013C 0020D0E5 LDRB R2,[R0, #+0] 2620 if (i>63) i=63; 2621 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 2622 wsprintf(ws3,"%c%t",0xE012,s); \ 00000154 823F8DE2 ADD R3,SP,#+520 \ 00000158 0B20A0E1 MOV R2,R11 \ 0000015C E0108AE2 ADD R1,R10,#+224 \ 00000160 0700A0E1 MOV R0,R7 \ 00000164 240100EF SWI +292 \ 00000168 110000EA B ??contactlist_menu_iconhndl_8 2623 } 2624 else 2625 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,??DataTable88 ;; isLogStatusChange \ 00000184 000090E5 LDR R0,[R0, #+0] \ 00000188 000050E3 CMP R0,#+0 \ 0000018C 0400000A BEQ ??contactlist_menu_iconhndl_9 2626 { 2627 int i; 2628 zeromem(s,64); \ 00000190 4010A0E3 MOV R1,#+64 \ 00000194 820F8DE2 ADD R0,SP,#+520 \ 00000198 1D0100EF SWI +285 2629 i=t->xtext2[0]; \ 0000019C A80098E5 LDR R0,[R8, #+168] \ 000001A0 E5FFFFEA B ??contactlist_menu_iconhndl_7 2630 if (i>63) i=63; 2631 strncpy(s,t->xtext2+1,i); 2632 wsprintf(ws3,"%c%t",0xE012,s); 2633 } 2634 else 2635 wsprintf(ws3,percent_d,t->uin); \ ??contactlist_menu_iconhndl_9: \ 000001A4 0C2098E5 LDR R2,[R8, #+12] \ 000001A8 1B108AE2 ADD R1,R10,#+27 \ 000001AC 0700A0E1 MOV R0,R7 \ 000001B0 240100EF SWI +292 2636 if ((t->xstatexstate)) \ ??contactlist_menu_iconhndl_8: \ 000001B4 B605D8E1 LDRH R0,[R8, #+86] \ 000001B8 ........ LDR R2,??DataTable89 ;; total_xstatuses \ 000001BC 0010A0E1 MOV R1,R0 \ 000001C0 002092E5 LDR R2,[R2, #+0] \ 000001C4 020051E1 CMP R1,R2 \ 000001C8 1B0000AA BGE ??contactlist_menu_iconhndl_10 \ 000001CC 000050E3 CMP R0,#+0 \ 000001D0 1900000A BEQ ??contactlist_menu_iconhndl_10 2637 { 2638 wsInsertChar(ws3,FIRST_UCS2_BITMAP+t->xstate,1); \ 000001D4 0120A0E3 MOV R2,#+1 \ 000001D8 460F8BE2 ADD R0,R11,#+280 \ 000001DC 011080E0 ADD R1,R0,R1 \ 000001E0 0700A0E1 MOV R0,R7 \ 000001E4 1D0000EF SWI +29 \ 000001E8 130000EA B ??contactlist_menu_iconhndl_10 2639 } 2640 #endif 2641 } 2642 else 2643 { 2644 int onlinetotal[2]; 2645 GetOnTotalContact(t->group,onlinetotal); \ ??contactlist_menu_iconhndl_1: \ 000001EC 100098E5 LDR R0,[R8, #+16] \ 000001F0 0D10A0E1 MOV R1,SP \ 000001F4 ........ BL GetOnTotalContact 2646 #ifdef USE_MLMENU 2647 wsprintf(ws1,percent_t,t->name); \ 000001F8 142088E2 ADD R2,R8,#+20 \ 000001FC 18108AE2 ADD R1,R10,#+24 \ 00000200 0600A0E1 MOV R0,R6 \ 00000204 240100EF SWI +292 2648 wsprintf(ws3,"(%d/%d)",onlinetotal[0],onlinetotal[1]); \ 00000208 04309DE5 LDR R3,[SP, #+4] \ 0000020C 00209DE5 LDR R2,[SP, #+0] \ 00000210 E8108AE2 ADD R1,R10,#+232 \ 00000214 0700A0E1 MOV R0,R7 \ 00000218 240100EF SWI +292 2649 #else 2650 wsprintf(ws1,"%t%c%c(%d/%d)",t->name,0xE01D,0xE012,onlinetotal[0],onlinetotal[1]); 2651 #endif 2652 if (t->state) icon++; //Модификация иконки группы \ 0000021C B405D8E1 LDRH R0,[R8, #+84] \ 00000220 000050E3 CMP R0,#+0 \ 00000224 0400000A BEQ ??contactlist_menu_iconhndl_10 \ 00000228 019089E2 ADD R9,R9,#+1 \ 0000022C 020000EA B ??contactlist_menu_iconhndl_10 2653 } 2654 } 2655 else 2656 { 2657 wsprintf(ws1, LG_CLERROR); \ ??contactlist_menu_iconhndl_0: \ 00000230 F0108AE2 ADD R1,R10,#+240 \ 00000234 0600A0E1 MOV R0,R6 \ 00000238 240100EF SWI +292 2658 } 2659 ws2=AllocMenuWS(data,ws1->wsbody[0]+1); \ ??contactlist_menu_iconhndl_10: \ 0000023C 000096E5 LDR R0,[R6, #+0] \ 00000240 B000D0E1 LDRH R0,[R0, #+0] \ 00000244 011080E2 ADD R1,R0,#+1 \ 00000248 0400A0E1 MOV R0,R4 \ 0000024C 980100EF SWI +408 \ 00000250 0080A0E1 MOV R8,R0 2660 wstrcpy(ws2,ws1); \ 00000254 0610A0E1 MOV R1,R6 \ 00000258 1F0100EF SWI +287 2661 /* if ((t->xstatexstate)) 2662 { 2663 wsInsertChar(ws2,FIRST_UCS2_BITMAP+t->xstate,1); 2664 }*/ 2665 2666 SetMenuItemIconArray(data, item, S_ICONS+icon); \ 0000025C ........ LDR R0,??DataTable90 ;; S_ICONS \ 00000260 0510A0E1 MOV R1,R5 \ 00000264 092180E0 ADD R2,R0,R9, LSL #+2 \ 00000268 0400A0E1 MOV R0,R4 \ 0000026C 990100EF SWI +409 2667 #ifdef USE_MLMENU 2668 ws4=AllocMenuWS(data,ws3->wsbody[0]); \ 00000270 000097E5 LDR R0,[R7, #+0] \ 00000274 B010D0E1 LDRH R1,[R0, #+0] \ 00000278 0400A0E1 MOV R0,R4 \ 0000027C 980100EF SWI +408 \ 00000280 0060A0E1 MOV R6,R0 2669 wstrcpy(ws4,ws3); \ 00000284 0710A0E1 MOV R1,R7 \ 00000288 1F0100EF SWI +287 2670 SetMLMenuItemText(data, item, ws2, ws4, curitem); \ 0000028C 70029DE5 LDR R0,[SP, #+624] \ 00000290 0630A0E1 MOV R3,R6 \ 00000294 01002DE9 PUSH {R0} \ 00000298 0820A0E1 MOV R2,R8 \ 0000029C 0510A0E1 MOV R1,R5 \ 000002A0 0400A0E1 MOV R0,R4 \ 000002A4 180200EF SWI +536 2671 #else 2672 SetMenuItemText(data, item, ws2, curitem); 2673 #endif 2674 } \ 000002A8 9EDF8DE2 ADD SP,SP,#+632 \ 000002AC F08FBDE8 POP {R4-R11,PC} ;; return 2675 2676 //=============================================================================================== 2677 2678 int DNR_ID=0; 2679 int DNR_TRIES=3; 2680 2681 char hostname[128]; //2058 che toka 128? :) 2682 2683 int host_counter = 0; 2684 2685 //--------------------------------------------------------------------------- 2686 \ In segment CODE, align 4, keep-with-next 2687 const char *GetHost(int cnt, const char *str, char *buf) 2688 { 2689 const char *tmp = str, *begin, *end; \ GetHost: \ 00000000 0130A0E1 MOV R3,R1 2690 if(cnt) \ 00000004 000050E3 CMP R0,#+0 \ 00000008 0100001A BNE ??GetHost_0 \ 0000000C 180000EA B ??GetHost_1 2691 { 2692 for(;cnt;cnt--) 2693 { 2694 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 2695 if(!*str) str = tmp; \ 00000030 00005CE3 CMP R12,#+0 \ 00000034 0200001A BNE ??GetHost_3 \ 00000038 0310A0E1 MOV R1,R3 \ 0000003C 000000EA B ??GetHost_3 2696 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 2697 if(!*str) str = tmp; \ ??GetHost_5: \ 00000064 00005CE3 CMP R12,#+0 \ 00000068 0310A001 MOVEQ R1,R3 2698 } \ 0000006C 010050E2 SUBS R0,R0,#+1 \ 00000070 E7FFFF1A BNE ??GetHost_0 2699 } 2700 tmp = buf; \ ??GetHost_1: \ 00000074 0200A0E1 MOV R0,R2 2701 begin = str; \ 00000078 0130A0E1 MOV R3,R1 \ 0000007C 000000EA B ??GetHost_6 2702 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 2703 end = str; 2704 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 2716 } 2717 } 2718 //--------------------------------------------------------------------------- \ In segment CODE, align 4, keep-with-next 2719 int GetPort(int cnt, const char *str) 2720 { \ GetPort: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 2721 const char *tmp = str; \ 00000008 01C0A0E1 MOV R12,R1 2722 char numbuf[6], numcnt = 0; \ 0000000C 0020A0E3 MOV R2,#+0 \ 00000010 0030A0E3 MOV R3,#+0 2723 if(cnt) \ 00000014 000050E3 CMP R0,#+0 \ 00000018 0100001A BNE ??GetPort_0 \ 0000001C 180000EA B ??GetPort_1 2724 { 2725 for(;cnt;cnt--) 2726 { 2727 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 2728 if(!*str) str = tmp; \ 00000040 000054E3 CMP R4,#+0 \ 00000044 0200001A BNE ??GetPort_3 \ 00000048 0C10A0E1 MOV R1,R12 \ 0000004C 000000EA B ??GetPort_3 2729 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 2730 if(!*str) str = tmp; \ ??GetPort_5: \ 00000074 000054E3 CMP R4,#+0 \ 00000078 0C10A001 MOVEQ R1,R12 2731 } \ 0000007C 010050E2 SUBS R0,R0,#+1 \ 00000080 E7FFFF1A BNE ??GetPort_0 2732 } 2733 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 2734 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} 2735 str++; 2736 numbuf[5] = 0; \ 000000BC 0520CDE5 STRB R2,[SP, #+5] \ 000000C0 030000EA B ??GetPort_7 2737 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 2738 numbuf[numcnt] = 0; //2058 \ ??GetPort_9: \ 00000100 0020C0E5 STRB R2,[R0, #+0] 2739 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 2740 2741 } 2742 // 2743 //--------------------------------------------------------------------------- \ In segment CODE, align 4, keep-with-next 2744 int GetHostsCount(const char *str) 2745 { 2746 char cnt = 1; \ GetHostsCount: \ 00000000 0110A0E3 MOV R1,#+1 \ 00000004 000000EA B ??GetHostsCount_0 2747 for(;cnt;cnt++) 2748 { 2749 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 2750 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 2751 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 2752 if(!*str) return cnt; \ ??GetHostsCount_5: \ 0000005C 000052E3 CMP R2,#+0 \ 00000060 F2FFFF0A BEQ ??GetHostsCount_3 2753 } \ 00000064 011081E2 ADD R1,R1,#+1 \ 00000068 FF1011E2 ANDS R1,R1,#0xFF \ 0000006C E6FFFF1A BNE ??GetHostsCount_0 2754 return 0; \ 00000070 0000A0E3 MOV R0,#+0 \ 00000074 1EFF2FE1 BX LR ;; return 2755 } 2756 //--------------------------------------------------------------------------- 2757 \ In segment CODE, align 4, keep-with-next 2758 void create_connect(void) 2759 { \ create_connect: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 2760 // static int host_counter = 0; 2761 char hostbuf[128], buf[128]; 2762 int hostport; 2763 int ***p_res=NULL; 2764 void do_reconnect(void); 2765 SOCK_ADDR sa; 2766 //Устанавливаем соединение 2767 connect_state = 0; \ 00000004 ........ LDR R5,??DataTable109 ;; S_ICONS 2768 int err; 2769 unsigned int ip; 2770 GBS_DelTimer(&reconnect_tmr); 2771 if (!IsGPRSEnabled()) \ 00000008 ........ LDR R8,??DataTable92 ;; percent_s \ 0000000C 45DF4DE2 SUB SP,SP,#+276 \ 00000010 0040A0E3 MOV R4,#+0 \ 00000014 00408DE5 STR R4,[SP, #+0] \ 00000018 E44285E5 STR R4,[R5, #+740] \ 0000001C 5C00A0E3 MOV R0,#+92 \ 00000020 680D80E3 ORR R0,R0,#0x1A00 \ 00000024 056080E0 ADD R6,R0,R5 \ 00000028 0600A0E1 MOV R0,R6 \ 0000002C 8C0100EF SWI +396 \ 00000030 3C00A0E3 MOV R0,#+60 \ 00000034 640D80E3 ORR R0,R0,#0x1900 \ 00000038 057080E0 ADD R7,R0,R5 \ 0000003C A70000EF SWI +167 \ 00000040 000050E3 CMP R0,#+0 \ 00000044 0400001A BNE ??create_connect_0 2772 { 2773 is_gprs_online=0; \ 00000048 044385E5 STR R4,[R5, #+772] 2774 strcpy(logmsg,LG_GRWAITFORGPRS); \ 0000004C 641088E2 ADD R1,R8,#+100 \ 00000050 0700A0E1 MOV R0,R7 \ 00000054 1A0000EF SWI +26 2775 SMART_REDRAW(); \ 00000058 850000EA B ??create_connect_1 2776 return; 2777 } 2778 DNR_ID=0; 2779 *socklasterr()=0; 2780 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 984385E5 STR R4,[R5, #+920] \ 00000064 7C8100EF SWI +33148 \ 00000068 004080E5 STR R4,[R0, #+0] \ 0000006C 0900A0E1 MOV R0,R9 \ 00000070 ........ BL GetHostsCount \ 00000074 A01395E5 LDR R1,[R5, #+928] \ 00000078 010040E2 SUB R0,R0,#+1 \ 0000007C 010050E1 CMP R0,R1 \ 00000080 A04385B5 STRLT R4,[R5, #+928] 2781 GetHost(host_counter, NATICQ_HOST, hostbuf); \ 00000084 A00395E5 LDR R0,[R5, #+928] \ 00000088 14208DE2 ADD R2,SP,#+20 \ 0000008C 0910A0E1 MOV R1,R9 \ 00000090 ........ BL GetHost 2782 hostport = GetPort(host_counter, NATICQ_HOST); \ 00000094 A00395E5 LDR R0,[R5, #+928] \ 00000098 0910A0E1 MOV R1,R9 \ 0000009C ........ BL GetPort \ 000000A0 0090A0E1 MOV R9,R0 2783 host_counter++; \ 000000A4 A00395E5 LDR R0,[R5, #+928] 2784 2785 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 A00385E5 STR R0,[R5, #+928] \ 000000B4 14208DE2 ADD R2,SP,#+20 \ 000000B8 7C1088E2 ADD R1,R8,#+124 \ 000000BC 9000A0E3 MOV R0,#+144 \ 000000C0 6C0D80E3 ORR R0,R0,#0x1B00 \ 000000C4 050080E0 ADD R0,R0,R5 \ 000000C8 160000EF SWI +22 2786 //strcpy(hostbuf2, hostbuf); //vyvod host v get_online_time 2787 zeromem(hostbuf2,128); \ 000000CC 1000A0E3 MOV R0,#+16 \ 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 2788 sprintf(hostbuf2, percent_s,hostbuf); \ 000000E4 14208DE2 ADD R2,SP,#+20 \ 000000E8 0810A0E1 MOV R1,R8 \ 000000EC 0A00A0E1 MOV R0,R10 2789 strcpy(logmsg,buf); 2790 SMART_REDRAW(); 2791 2792 ip=str2ip(hostbuf); \ 000000F0 ........ LDR R10,??DataTable93 ;; 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 2793 if (ip!=0xFFFFFFFF) 2794 { 2795 sa.ip=ip; \ 0000011C 08008DE5 STR R0,[SP, #+8] 2796 strcpy(logmsg,"\nConnect by IP!"); //strcat->strcpy \ 00000120 901088E2 ADD R1,R8,#+144 \ 00000124 0700A0E1 MOV R0,R7 \ 00000128 1A0000EF SWI +26 2797 SMART_REDRAW(); \ 0000012C ........ BL SMART_REDRAW 2798 goto L_CONNECT; \ 00000130 390000EA B ??create_connect_4 2799 } \ ??create_connect_3: \ 00000134 6D1F8FE2 ADR R1,??create_connect_2 ;; "\n" \ 00000138 0700A0E1 MOV R0,R7 2800 strcat(logmsg,"\n"); \ 0000013C 170000EF SWI +23 2801 strcpy(logmsg,LG_GRSENDDNR); //strcat->strcpy \ 00000140 A01088E2 ADD R1,R8,#+160 \ 00000144 0700A0E1 MOV R0,R7 \ 00000148 1A0000EF SWI +26 2802 SMART_REDRAW(); \ 0000014C ........ BL SMART_REDRAW 2803 err=async_gethostbyname(hostbuf,&p_res,&DNR_ID); //03461351 3<70<19<81 \ 00000150 E62F85E2 ADD R2,R5,#+920 \ 00000154 0D10A0E1 MOV R1,SP \ 00000158 14008DE2 ADD R0,SP,#+20 \ 0000015C B60100EF SWI +438 \ 00000160 0030B0E1 MOVS R3,R0 2804 if (err) \ 00000164 1600000A BEQ ??create_connect_5 2805 { 2806 if ((err==0xC9)||(err==0xD6)) \ 00000168 C90053E3 CMP R3,#+201 \ 0000016C D6005313 CMPNE R3,#+214 \ 00000170 0600001A BNE ??create_connect_6 2807 { 2808 if (DNR_ID) \ 00000174 980395E5 LDR R0,[R5, #+920] \ 00000178 000050E3 CMP R0,#+0 \ 0000017C 1000000A BEQ ??create_connect_5 2809 { 2810 host_counter--; \ 00000180 A00395E5 LDR R0,[R5, #+928] \ 00000184 010040E2 SUB R0,R0,#+1 \ 00000188 A00385E5 STR R0,[R5, #+928] 2811 return; //Ждем готовности DNR \ 0000018C 390000EA B ??create_connect_7 2812 } 2813 } 2814 else 2815 { 2816 snprintf(logmsg,255,LG_GRDNRERROR,err); \ ??create_connect_6: \ 00000190 AC2088E2 ADD R2,R8,#+172 \ 00000194 FF10A0E3 MOV R1,#+255 \ 00000198 0700A0E1 MOV R0,R7 \ 0000019C 1B0100EF SWI +283 2817 SMART_REDRAW(); \ 000001A0 ........ BL SMART_REDRAW 2818 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ ??create_connect_8: \ 000001A4 ........ LDR R0,??DataTable94 ;; 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 2819 return; \ 000001C0 2C0000EA B ??create_connect_7 2820 } 2821 } 2822 if (p_res) \ ??create_connect_5: \ 000001C4 00009DE5 LDR R0,[SP, #+0] \ 000001C8 000050E3 CMP R0,#+0 \ 000001CC 3D00000A BEQ ??create_connect_9 2823 { 2824 if (p_res[3]) \ 000001D0 0C0090E5 LDR R0,[R0, #+12] \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 4200000A BEQ ??create_connect_10 2825 { 2826 strcpy(logmsg,buf); \ 000001DC 94108DE2 ADD R1,SP,#+148 \ 000001E0 0700A0E1 MOV R0,R7 \ 000001E4 1A0000EF SWI +26 2827 strcat(logmsg,"\n"); \ 000001E8 401F8FE2 ADR R1,??create_connect_2 ;; "\n" \ 000001EC 0700A0E1 MOV R0,R7 \ 000001F0 170000EF SWI +23 2828 strcpy(logmsg,LG_GRDNROK); \ 000001F4 BC1088E2 ADD R1,R8,#+188 \ 000001F8 0700A0E1 MOV R0,R7 \ 000001FC 1A0000EF SWI +26 2829 SMART_REDRAW(); \ 00000200 ........ BL SMART_REDRAW 2830 DNR_TRIES=0; \ 00000204 9C4385E5 STR R4,[R5, #+924] 2831 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] 2832 L_CONNECT: 2833 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 E80285E5 STR R0,[R5, #+744] 2834 if (sock!=-1) \ 00000230 0B0050E1 CMP R0,R11 \ 00000234 1A00000A BEQ ??create_connect_11 2835 { 2836 sa.family=1; \ 00000238 0170A0E3 MOV R7,#+1 \ 0000023C B470CDE1 STRH R7,[SP, #+4] 2837 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] 2838 // sa.ip=htonl(IP_ADDR(82,207,89,182)); 2839 if (connect(sock,&sa,sizeof(sa))!=-1) \ 00000250 E80295E5 LDR R0,[R5, #+744] \ 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 2840 { 2841 connect_state=1; \ 00000268 E47285E5 STR R7,[R5, #+740] 2842 TOTALRECEIVED=0; \ 0000026C EC4285E5 STR R4,[R5, #+748] 2843 TOTALSENDED=0; \ 00000270 F04285E5 STR R4,[R5, #+752] 2844 SMART_REDRAW(); \ ??create_connect_1: \ 00000274 ........ BL SMART_REDRAW \ ??create_connect_7: \ 00000278 45DF8DE2 ADD SP,SP,#+276 \ 0000027C F08FBDE8 POP {R4-R11,PC} 2845 } 2846 else 2847 { 2848 closesocket(sock); \ ??create_connect_12: \ 00000280 E80295E5 LDR R0,[R5, #+744] \ 00000284 760100EF SWI +374 2849 sock=-1; \ 00000288 E8B285E5 STR R11,[R5, #+744] 2850 LockSched(); \ 0000028C 460100EF SWI +326 2851 ShowMSG(1,(int)LG_MSGCANTCONN); \ 00000290 D41088E2 ADD R1,R8,#+212 \ 00000294 0100A0E3 MOV R0,#+1 \ 00000298 480100EF SWI +328 2852 UnlockSched(); \ 0000029C 470100EF SWI +327 2853 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 000002A0 BFFFFFEA B ??create_connect_8 2854 2855 } 2856 } 2857 else 2858 { 2859 LockSched(); \ ??create_connect_11: \ 000002A4 460100EF SWI +326 2860 ShowMSG(1,(int)LG_MSGCANTCRSC); \ 000002A8 F01088E2 ADD R1,R8,#+240 \ 000002AC 0100A0E3 MOV R0,#+1 \ 000002B0 480100EF SWI +328 2861 UnlockSched(); \ 000002B4 470100EF SWI +327 2862 //Не осилили создания сокета, закрываем GPRS-сессию 2863 GPRS_OnOff(0,1); \ 000002B8 0110A0E3 MOV R1,#+1 \ 000002BC 0000A0E3 MOV R0,#+0 \ 000002C0 8E0100EF SWI +398 \ 000002C4 EBFFFFEA B ??create_connect_7 2864 } 2865 } 2866 } 2867 else 2868 { 2869 DNR_TRIES--; \ ??create_connect_9: \ 000002C8 9C0395E5 LDR R0,[R5, #+924] \ 000002CC 010040E2 SUB R0,R0,#+1 \ 000002D0 9C0385E5 STR R0,[R5, #+924] 2870 LockSched(); \ 000002D4 460100EF SWI +326 2871 ShowMSG(1,(int)LG_MSGHOSTNFND); \ 000002D8 471F88E2 ADD R1,R8,#+284 \ 000002DC 0100A0E3 MOV R0,#+1 \ 000002E0 480100EF SWI +328 2872 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 2873 } 2874 } 2875 2876 #ifdef SEND_TIMER 2877 GBSTMR send_tmr; 2878 #endif 2879 \ In segment CODE, align 4, keep-with-next 2880 void ClearSendQ(void) 2881 { \ ClearSendQ: \ 00000000 10402DE9 PUSH {R4,LR} 2882 mfree((void *)sendq_p); \ 00000004 ........ LDR R4,??DataTable109 ;; S_ICONS \ 00000008 000394E5 LDR R0,[R4, #+768] \ 0000000C 150000EF SWI +21 2883 sendq_p=NULL; \ 00000010 0000A0E3 MOV R0,#+0 \ 00000014 000384E5 STR R0,[R4, #+768] 2884 sendq_l=NULL; \ 00000018 FC0284E5 STR R0,[R4, #+764] 2885 #ifdef SEND_TIMER 2886 GBS_DelTimer(&send_tmr); 2887 #endif 2888 } \ 0000001C 1080BDE8 POP {R4,PC} ;; return 2889 \ In segment CODE, align 4, keep-with-next 2890 void end_socket(void) 2891 { \ end_socket: \ 00000000 10402DE9 PUSH {R4,LR} 2892 if (sock>=0) \ 00000004 ........ LDR R4,??DataTable109 ;; S_ICONS \ 00000008 E80294E5 LDR R0,[R4, #+744] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD48 POPMI {R4,PC} 2893 { 2894 shutdown(sock,2); \ 00000014 0210A0E3 MOV R1,#+2 \ 00000018 770100EF SWI +375 2895 closesocket(sock); \ 0000001C E80294E5 LDR R0,[R4, #+744] \ 00000020 760100EF SWI +374 2896 } 2897 #ifdef SEND_TIMER 2898 GBS_DelTimer(&send_tmr); 2899 #endif 2900 } \ 00000024 1080BDE8 POP {R4,PC} ;; return 2901 2902 #ifdef SEND_TIMER 2903 static void resend(void) 2904 { 2905 void SendAnswer(int dummy, TPKT *p); 2906 SUBPROC((void*)SendAnswer,0,0); 2907 } 2908 #endif 2909 \ In segment CODE, align 4, keep-with-next 2910 void SendAnswer(int dummy, TPKT *p) 2911 { \ SendAnswer: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 2912 int i; 2913 int j; 2914 if (connect_state<2) \ 00000004 ........ LDR R4,??DataTable109 ;; S_ICONS \ 00000008 0160A0E1 MOV R6,R1 \ 0000000C E40294E5 LDR R0,[R4, #+740] \ 00000010 020050E3 CMP R0,#+2 \ 00000014 020000AA BGE ??SendAnswer_0 2915 { 2916 mfree(p); \ 00000018 0600A0E1 MOV R0,R6 \ 0000001C 150000EF SWI +21 2917 return; \ 00000020 F083BDE8 POP {R4-R9,PC} 2918 } 2919 if (p) \ ??SendAnswer_0: \ 00000024 000056E3 CMP R6,#+0 \ 00000028 2600000A BEQ ??SendAnswer_1 2920 { 2921 j=sizeof(PKT)+p->pkt.data_len; //Размер пакета \ 0000002C B600D6E1 LDRH R0,[R6, #+6] \ 00000030 085080E2 ADD R5,R0,#+8 2922 TOTALSENDED+=j; \ 00000034 F00294E5 LDR R0,[R4, #+752] \ 00000038 000085E0 ADD R0,R5,R0 \ 0000003C F00284E5 STR R0,[R4, #+752] 2923 ALLTOTALSENDED+=j; //by BoBa 10.07 \ 00000040 F80294E5 LDR R0,[R4, #+760] \ 00000044 000085E0 ADD R0,R5,R0 \ 00000048 F80284E5 STR R0,[R4, #+760] 2924 //Проверяем, не надо ли добавить в очередь 2925 if (sendq_p) \ 0000004C 000394E5 LDR R0,[R4, #+768] \ 00000050 000050E3 CMP R0,#+0 \ 00000054 0F00000A BEQ ??SendAnswer_2 2926 { 2927 //Есть очередь, добавляем в нее 2928 sendq_p=realloc((void *)sendq_p,sendq_l+j); \ 00000058 FC1294E5 LDR R1,[R4, #+764] \ 0000005C 011085E0 ADD R1,R5,R1 \ 00000060 BA0000EF SWI +186 \ 00000064 000384E5 STR R0,[R4, #+768] 2929 memcpy((char *)sendq_p+sendq_l,p,j); \ 00000068 FC0294E5 LDR R0,[R4, #+764] \ 0000006C 003394E5 LDR R3,[R4, #+768] \ 00000070 0520A0E1 MOV R2,R5 \ 00000074 0610A0E1 MOV R1,R6 \ 00000078 030080E0 ADD R0,R0,R3 \ 0000007C 1E0100EF SWI +286 2930 mfree(p); \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 150000EF SWI +21 2931 sendq_l+=j; \ 00000088 FC0294E5 LDR R0,[R4, #+764] \ 0000008C 000085E0 ADD R0,R5,R0 \ 00000090 FC0284E5 STR R0,[R4, #+764] 2932 return; \ 00000094 F083BDE8 POP {R4-R9,PC} 2933 } 2934 sendq_p=p; \ ??SendAnswer_2: \ 00000098 006384E5 STR R6,[R4, #+768] 2935 sendq_l=j; \ 0000009C FC5284E5 STR R5,[R4, #+764] \ 000000A0 080000EA B ??SendAnswer_1 2936 } 2937 //Отправляем уже существующее в очереди 2938 while((i=sendq_l)!=0) 2939 { 2940 if (i>0x400) i=0x400; 2941 j=send(sock,(void *)sendq_p,i,0); 2942 snprintf(logmsg,255,"send res %d",j); 2943 SMART_REDRAW(); 2944 if (j<0) 2945 { 2946 j=*socklasterr(); 2947 if ((j==0xC9)||(j==0xD6)) 2948 { 2949 //Передали что хотели 2950 strcpy(logmsg,"Send delayed..."); 2951 return; //Видимо, надо ждать сообщения ENIP_BUFFER_FREE 2952 } 2953 else 2954 { 2955 //Ошибка 2956 LockSched(); 2957 ShowMSG(1,(int)"Send error!"); 2958 UnlockSched(); 2959 end_socket(); 2960 return; 2961 } 2962 } 2963 memcpy((void *)sendq_p,(char *)sendq_p+j,sendq_l-=j); //Удалили переданное \ ??SendAnswer_3: \ 000000A4 FC0294E5 LDR R0,[R4, #+764] \ 000000A8 052040E0 SUB R2,R0,R5 \ 000000AC FC2284E5 STR R2,[R4, #+764] \ 000000B0 000394E5 LDR R0,[R4, #+768] \ 000000B4 001085E0 ADD R1,R5,R0 \ 000000B8 1E0100EF SWI +286 2964 if (j` \ 000000E0 0100A0E3 MOV R0,#+1 \ 000000E4 400E80E3 ORR R0,R0,#0x400 \ 000000E8 000057E1 CMP R7,R0 \ 000000EC E80294E5 LDR R0,[R4, #+744] \ 000000F0 407EA0A3 MOVGE R7,#+1024 \ 000000F4 0030A0E3 MOV R3,#+0 \ 000000F8 0720A0E1 MOV R2,R7 \ 000000FC 790100EF SWI +377 \ 00000100 0050A0E1 MOV R5,R0 \ 00000104 3C00A0E3 MOV R0,#+60 \ 00000108 640D80E3 ORR R0,R0,#0x1900 \ 0000010C 048080E0 ADD R8,R0,R4 \ 00000110 0530A0E1 MOV R3,R5 \ 00000114 0920A0E1 MOV R2,R9 \ 00000118 FF10A0E3 MOV R1,#+255 \ 0000011C 0800A0E1 MOV R0,R8 \ 00000120 1B0100EF SWI +283 \ 00000124 ........ BL SMART_REDRAW \ 00000128 000055E3 CMP R5,#+0 \ 0000012C DCFFFF5A BPL ??SendAnswer_3 \ 00000130 7C8100EF SWI +33148 \ 00000134 005090E5 LDR R5,[R0, #+0] \ 00000138 C90055E3 CMP R5,#+201 \ 0000013C D6005513 CMPNE R5,#+214 \ 00000140 0300001A BNE ??SendAnswer_6 \ 00000144 0C1089E2 ADD R1,R9,#+12 \ 00000148 0800A0E1 MOV R0,R8 \ 0000014C 1A0000EF SWI +26 \ 00000150 F083BDE8 POP {R4-R9,PC} \ ??SendAnswer_6: \ 00000154 460100EF SWI +326 \ 00000158 1C1089E2 ADD R1,R9,#+28 \ 0000015C 0100A0E3 MOV R0,#+1 \ 00000160 480100EF SWI +328 \ 00000164 470100EF SWI +327 \ 00000168 ........ BL end_socket \ 0000016C F083BDE8 POP {R4-R9,PC} 2973 } 2974 mfree((void *)sendq_p); \ ??SendAnswer_4: \ 00000170 0100A0E1 MOV R0,R1 \ 00000174 150000EF SWI +21 2975 sendq_p=NULL; \ 00000178 006384E5 STR R6,[R4, #+768] 2976 } \ 0000017C F083BDE8 POP {R4-R9,PC} ;; return \ ??SendAnswer_5: \ 00000180 ........ DC32 `?` 2977 2978 \ In segment CODE, align 4, keep-with-next 2979 void send_login(int dummy, TPKT *p) 2980 { 2981 connect_state=2; 2982 char rev[16]; 2983 //Кто будет менять в этом месте идентификатор клиента, буду банить на уровне сервера!!! 2984 //А Вова будет банить на форуме! 2985 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,??DataTable109 ;; S_ICONS \ 0000000C 10D04DE2 SUB SP,SP,#+16 \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 0150A0E1 MOV R5,R1 \ 00000018 0200A0E3 MOV R0,#+2 \ 0000001C E40286E5 STR R0,[R6, #+740] \ 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 2986 2987 TPKT *p2=malloc(sizeof(PKT)+8); \ 00000034 1000A0E3 MOV R0,#+16 \ 00000038 140000EF SWI +20 \ 0000003C 0070A0E1 MOV R7,R0 2988 p2->pkt.uin=UIN; \ 00000040 ........ LDR R0,??DataTable99 ;; UIN 2989 p2->pkt.type=T_SETCLIENT_ID; 2990 p2->pkt.data_len=8; 2991 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 2992 SendAnswer(0,p2); \ 0000006C 0710A0E1 MOV R1,R7 \ 00000070 0000A0E3 MOV R0,#+0 \ 00000074 ........ BL SendAnswer 2993 SendAnswer(dummy,p); \ 00000078 0510A0E1 MOV R1,R5 \ 0000007C 0400A0E1 MOV R0,R4 \ 00000080 ........ BL SendAnswer 2994 RXstate=-(int)sizeof(PKT); \ 00000084 0700E0E3 MVN R0,#+7 \ 00000088 E00286E5 STR R0,[R6, #+736] 2995 } \ 0000008C FF80BDE8 POP {R0-R7,PC} ;; return \ ??send_login_0: \ 00000090 ........ DC32 `?` 2996 \ In segment CODE, align 4, keep-with-next 2997 void do_ping(void) 2998 { \ do_ping: \ 00000000 00402DE9 PUSH {LR} 2999 TPKT *pingp=malloc(sizeof(PKT)); \ 00000004 0800A0E3 MOV R0,#+8 \ 00000008 140000EF SWI +20 3000 pingp->pkt.uin=UIN; \ 0000000C ........ LDR R1,??DataTable100 ;; UIN \ 00000010 001091E5 LDR R1,[R1, #+0] \ 00000014 001080E5 STR R1,[R0, #+0] 3001 pingp->pkt.type=0; \ 00000018 0010A0E3 MOV R1,#+0 \ 0000001C B410C0E1 STRH R1,[R0, #+4] 3002 pingp->pkt.data_len=0; \ 00000020 B610C0E1 STRH R1,[R0, #+6] 3003 SendAnswer(0,pingp); \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 0040BDE8 POP {LR} ;; Pop \ 00000030 ........ B SendAnswer ;; tailcall 3004 } 3005 \ In segment CODE, align 4, keep-with-next 3006 void SendMSGACK(int i) 3007 { \ SendMSGACK: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 3008 TPKT *ackp=malloc(sizeof(PKT)); \ 00000008 0800A0E3 MOV R0,#+8 \ 0000000C 140000EF SWI +20 3009 ackp->pkt.uin=i; \ 00000010 004080E5 STR R4,[R0, #+0] 3010 ackp->pkt.type=T_MSGACK; \ 00000014 1710A0E3 MOV R1,#+23 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 3011 ackp->pkt.data_len=0; \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 3012 SendAnswer(0,ackp); \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 1040BDE8 POP {R4,LR} ;; Pop \ 00000030 ........ B SendAnswer ;; tailcall 3013 } 3014 \ In segment CODE, align 4, keep-with-next 3015 void RequestXText(unsigned int uin) 3016 { \ RequestXText: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 3017 TPKT *p=malloc(sizeof(PKT)); \ 00000008 0800A0E3 MOV R0,#+8 \ 0000000C 140000EF SWI +20 3018 p->pkt.uin=uin; \ 00000010 004080E5 STR R4,[R0, #+0] 3019 p->pkt.type=T_XTEXT_REQ; \ 00000014 1810A0E3 MOV R1,#+24 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 3020 p->pkt.data_len=0; \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 3021 SUBPROC((void *)SendAnswer,0,p); \ 00000024 0020A0E1 MOV R2,R0 \ 00000028 ........ LDR R0,??DataTable101 ;; SendAnswer \ 0000002C 710100EF SWI +369 3022 } \ 00000030 1080BDE8 POP {R4,PC} ;; return 3023 3024 extern int main2_count; 3025 3026 int ping_time; 3027 char I_UIN[9]; 3028 \ In segment CODE, align 4, keep-with-next 3029 void get_answer(void) 3030 { \ get_answer: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 3031 void *p; 3032 int i=RXstate; \ 00000004 ........ LDR R5,??DataTable109 ;; S_ICONS \ 00000008 1CD04DE2 SUB SP,SP,#+28 \ 0000000C 40DE4DE2 SUB SP,SP,#+1024 3033 int j; 3034 int n; 3035 char rb[1024]; 3036 char *rp=rb; 3037 if (connect_state<2) return; \ 00000010 E40295E5 LDR R0,[R5, #+740] \ 00000014 E08295E5 LDR R8,[R5, #+736] \ 00000018 1C108DE2 ADD R1,SP,#+28 \ 0000001C 00108DE5 STR R1,[SP, #+0] \ 00000020 020050E3 CMP R0,#+2 \ 00000024 640100BA BLT ??get_answer_1 \ 00000028 0A0078E3 CMN R8,#+10 \ 0000002C 6201000A BEQ ??get_answer_1 3038 if (i==EOP) return; 3039 j=recv(sock,rb,sizeof(rb),0); \ 00000030 E80295E5 LDR R0,[R5, #+744] \ 00000034 0030A0E3 MOV R3,#+0 \ 00000038 402EA0E3 MOV R2,#+1024 \ 0000003C 780100EF SWI +376 \ 00000040 0060A0E1 MOV R6,R0 \ 00000044 0990A0E3 MOV R9,#+9 \ 00000048 429C89E3 ORR R9,R9,#0x4200 \ 0000004C 0E0000EA B ??get_answer_2 3040 while(j>0) 3041 { 3042 if (i<0) 3043 { 3044 //Принимаем заголовок 3045 n=-i; //Требуемое количество байт 3046 if (j=0) 3053 { 3054 //Принимаем тельце ;) 3055 n=RXbuf.pkt.data_len; //Всего в тельце 3056 if (n>16383) 3057 { 3058 //Слишком много 3059 strcpy(logmsg,LG_GRBADPACKET); 3060 end_socket(); 3061 RXstate=EOP; 3062 return; 3063 } 3064 n-=i; //Количество требуемых байт (общая длинна тельца-текущая позиция) 3065 if (n>0) 3066 { 3067 if (jisIndividSet)//Если индивидуальные натсройки(меню на долгое вправо) 3152 { 3153 if(t->issound) Play(sndMsg);//если звук включен то играем 3154 break; 3155 } 3156 else 3157 if(t->automsgcount < automsgcount && away_m)//если сигналы автоответчика 3158 { 3159 Play(sndMsg); 3160 break; 3161 } 3162 else 3163 if(t->isaccess)//если удаленный доступ ;) 3164 { 3165 if(t->signals) Play(sndMsg); 3166 break; 3167 } 3168 else//в остальный случаях 3169 Play(sndMsg); 3170 } 3171 else 3172 { 3173 uins=RXbuf.pkt.uin; 3174 volatile int hFile_ex; 3175 unsigned int io_error_ex = 0; 3176 sprintf(talk_sound, "%s%d.wav", sndMsg2, uins); 3177 hFile_ex = fopen(talk_sound,A_ReadOnly + A_BIN,P_READ, &io_error_ex); 3178 if(hFile_ex!=-1) 3179 { 3180 fclose(hFile_ex, &io_error_ex); 3181 Play(talk_sound); 3182 } 3183 else 3184 Play(sndMsg); 3185 } 3186 } 3187 break; 3188 case T_SSLRESP: 3189 LockSched(); 3190 ShowMSG(1,(int)RXbuf.data); 3191 UnlockSched(); 3192 break; 3193 case T_SRV_ACK: 3194 if (FindContactLOGQByAck(&RXbuf)) Play(sndMsgSent); 3195 case T_CLIENT_ACK: 3196 p=malloc(sizeof(PKT)+2); 3197 memcpy(p,&RXbuf,sizeof(PKT)+2); 3198 GBS_SendMessage(MMI_CEPID,MSG_HELPER_TRANSLATOR,0,p,sock); 3199 break; 3200 case T_ECHORET: 3201 { 3202 TDate d; 3203 TTime t; 3204 TTime *pt=(TTime *)(RXbuf.data); 3205 int s1; 3206 int s2; 3207 GetDateTime(&d,&t); 3208 s1=t.hour*3600+t.min*60+t.sec; 3209 s2=pt->hour*3600+pt->min*60+pt->sec; 3210 s1-=s2; 3211 if (s1<0) s1+=86400; 3212 snprintf(logmsg,255,"Ping %d-%d seconds!",s1,s1+1); 3213 sprintf(PINGO, "Ping: %d sec",s1); 3214 LockSched(); 3215 if(janis==1) 3216 { 3217 ShowMSG(1,(int)logmsg); 3218 Play(pingsnd); 3219 janis=0; 3220 } 3221 else 3222 { 3223 if(ping_time==0) 3224 { 3225 ping_time=ping_time_config; 3226 Play(pingsnd); 3227 } 3228 else 3229 ping_time--; 3230 } 3231 UnlockSched(); 3232 } 3233 break; 3234 case T_LASTPRIVACY: 3235 n=i+sizeof(PKT); \ ??get_answer_3: \ 00000050 0040A0E1 MOV R4,R0 3236 p=malloc(n); \ ??get_answer_4: \ 00000054 140000EF SWI +20 \ 00000058 00B0A0E1 MOV R11,R0 3237 memcpy(p,&RXbuf,n); \ 0000005C 0420A0E1 MOV R2,R4 \ ??get_answer_5: \ 00000060 0710A0E1 MOV R1,R7 \ 00000064 1E0100EF SWI +286 3238 GBS_SendMessage(MMI_CEPID,MSG_HELPER_TRANSLATOR,0,p,sock); \ 00000068 E80295E5 LDR R0,[R5, #+744] \ 0000006C 0B30A0E1 MOV R3,R11 \ 00000070 01002DE9 PUSH {R0} \ 00000074 0020A0E3 MOV R2,#+0 \ 00000078 0810A0E1 MOV R1,R8 \ 0000007C 0900A0E1 MOV R0,R9 \ 00000080 000100EF SWI +256 \ ??get_answer_6: \ 00000084 04D08DE2 ADD SP,SP,#+4 ;; stack cleaning 3239 break; 3240 } 3241 i=-(int)sizeof(PKT); //А может еще есть данные \ ??get_answer_7: \ 00000088 0780E0E3 MVN R8,#+7 \ ??get_answer_2: \ 0000008C 010056E3 CMP R6,#+1 \ 00000090 480100BA BLT ??get_answer_8 \ 00000094 30759FE5 LDR R7,??get_answer_9+0x4 ;; RXbuf \ 00000098 000058E3 CMP R8,#+0 \ 0000009C 0C00005A BPL ??get_answer_10 \ 000000A0 00109DE5 LDR R1,[SP, #+0] \ 000000A4 004068E2 RSB R4,R8,#+0 \ 000000A8 040056E1 CMP R6,R4 \ 000000AC 0640A0B1 MOVLT R4,R6 \ 000000B0 0420A0E1 MOV R2,R4 \ 000000B4 070088E0 ADD R0,R8,R7 \ 000000B8 080080E2 ADD R0,R0,#+8 \ 000000BC 1E0100EF SWI +286 \ 000000C0 00109DE5 LDR R1,[SP, #+0] \ 000000C4 088084E0 ADD R8,R4,R8 \ 000000C8 046046E0 SUB R6,R6,R4 \ 000000CC 011084E0 ADD R1,R4,R1 \ 000000D0 00108DE5 STR R1,[SP, #+0] \ ??get_answer_10: \ 000000D4 000058E3 CMP R8,#+0 \ 000000D8 EBFFFF4A BMI ??get_answer_2 \ 000000DC B640D7E1 LDRH R4,[R7, #+6] \ 000000E0 3C00A0E3 MOV R0,#+60 \ 000000E4 640D80E3 ORR R0,R0,#0x1900 \ 000000E8 05A080E0 ADD R10,R0,R5 \ 000000EC 400C54E3 CMP R4,#+16384 \ 000000F0 080000BA BLT ??get_answer_11 \ 000000F4 D4149FE5 LDR R1,??get_answer_9+0x8 ;; Canvas + 248 \ 000000F8 0A00A0E1 MOV R0,R10 \ 000000FC 1A0000EF SWI +26 \ 00000100 ........ BL end_socket \ 00000104 0900E0E3 MVN R0,#+9 \ 00000108 E00285E5 STR R0,[R5, #+736] \ 0000010C 1CD08DE2 ADD SP,SP,#+28 \ 00000110 40DE8DE2 ADD SP,SP,#+1024 \ 00000114 F08FBDE8 POP {R4-R11,PC} \ ??get_answer_11: \ 00000118 084044E0 SUB R4,R4,R8 \ 0000011C 010054E3 CMP R4,#+1 \ 00000120 0B0000BA BLT ??get_answer_12 \ 00000124 00109DE5 LDR R1,[SP, #+0] \ 00000128 040056E1 CMP R6,R4 \ 0000012C 0640A0B1 MOVLT R4,R6 \ 00000130 0420A0E1 MOV R2,R4 \ 00000134 070088E0 ADD R0,R8,R7 \ 00000138 080080E2 ADD R0,R0,#+8 \ 0000013C 1E0100EF SWI +286 \ 00000140 00109DE5 LDR R1,[SP, #+0] \ 00000144 088084E0 ADD R8,R4,R8 \ 00000148 046046E0 SUB R6,R6,R4 \ 0000014C 011084E0 ADD R1,R4,R1 \ 00000150 00108DE5 STR R1,[SP, #+0] \ ??get_answer_12: \ 00000154 B600D7E1 LDRH R0,[R7, #+6] \ 00000158 080050E1 CMP R0,R8 \ 0000015C CAFFFF1A BNE ??get_answer_2 \ 00000160 EC1295E5 LDR R1,[R5, #+748] \ 00000164 080088E2 ADD R0,R8,#+8 \ 00000168 011080E0 ADD R1,R0,R1 \ 0000016C EC1285E5 STR R1,[R5, #+748] \ 00000170 F41295E5 LDR R1,[R5, #+756] \ 00000174 0020A0E3 MOV R2,#+0 \ 00000178 011080E0 ADD R1,R0,R1 \ 0000017C F41285E5 STR R1,[R5, #+756] \ 00000180 071088E0 ADD R1,R8,R7 \ 00000184 0820C1E5 STRB R2,[R1, #+8] \ 00000188 B410D7E1 LDRH R1,[R7, #+4] \ 0000018C 094088E2 ADD R4,R8,#+9 \ 00000190 AE80A0E3 MOV R8,#+174 \ 00000194 DE8C88E3 ORR R8,R8,#0xDE00 \ 00000198 031041E2 SUB R1,R1,#+3 \ 0000019C 1C0051E3 CMP R1,#+28 \ 000001A0 B8FFFF8A BHI ??get_answer_7 \ 000001A4 022F8FE2 ADR R2,??get_answer_0 \ 000001A8 8110A0E1 MOV R1,R1, LSL #+1 \ 000001AC F12092E1 LDRSH R2,[R2, R1] \ 000001B0 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??get_answer_0: \ 000001B4 48000E00B4FF DC16 +72,+14,+65460,+65 \ 4100 \ 000001BC 2900B4FF2B00 DC16 +41,+65460,+43,+65460 \ B4FF \ 000001C4 B4FFB4FFB000 DC16 +65460,+65460,+176,+65460 \ B4FF \ 000001CC B4FFB600BC00 DC16 +65460,+182,+188,+65460 \ B4FF \ 000001D4 C10029002900 DC16 +193,+41,+41,+65460 \ B4FF \ 000001DC B4FFB4FF2900 DC16 +65460,+65460,+41,+65460 \ B4FF \ 000001E4 B4FFB4FFB4FF DC16 +65460,+65460,+65460,+65460 \ B4FF \ 000001EC A6FF0000 DC16 +65446,+0 \ ??get_answer_13: \ 000001F0 0400A0E1 MOV R0,R4 \ 000001F4 140000EF SWI +20 \ 000001F8 00B0A0E1 MOV R11,R0 \ 000001FC 0420A0E1 MOV R2,R4 \ 00000200 0710A0E1 MOV R1,R7 \ 00000204 1E0100EF SWI +286 \ 00000208 E80295E5 LDR R0,[R5, #+744] \ 0000020C 0B30A0E1 MOV R3,R11 \ 00000210 01002DE9 PUSH {R0} \ 00000214 0020A0E3 MOV R2,#+0 \ 00000218 0810A0E1 MOV R1,R8 \ 0000021C 0900A0E1 MOV R0,R9 \ 00000220 000100EF SWI +256 \ 00000224 A8039FE5 LDR R0,??get_answer_9+0xC ;; sndStartup \ 00000228 ........ BL Play \ 0000022C 083087E2 ADD R3,R7,#+8 \ 00000230 E42F8FE2 ADR R2,??get_answer_9 ;; "%s" \ 00000234 FF10A0E3 MOV R1,#+255 \ 00000238 0A00A0E1 MOV R0,R10 \ 0000023C 1B0100EF SWI +283 \ 00000240 0300A0E3 MOV R0,#+3 \ 00000244 E40285E5 STR R0,[R5, #+740] \ 00000248 A00395E5 LDR R0,[R5, #+928] \ 0000024C 010040E2 SUB R0,R0,#+1 \ 00000250 A00385E5 STR R0,[R5, #+928] \ 00000254 ........ BL SMART_REDRAW \ 00000258 89FFFFEA B ??get_answer_6 \ ??get_answer_14: \ 0000025C 0400A0E1 MOV R0,R4 \ 00000260 7BFFFFEA B ??get_answer_4 \ ??get_answer_15: \ 00000264 0040A0E1 MOV R4,R0 \ 00000268 140000EF SWI +20 \ 0000026C 00B0A0E1 MOV R11,R0 \ 00000270 0420A0E1 MOV R2,R4 \ 00000274 0710A0E1 MOV R1,R7 \ 00000278 1E0100EF SWI +286 \ 0000027C B800D7E1 LDRH R0,[R7, #+8] \ 00000280 50239FE5 LDR R2,??get_answer_9+0x10 ;; Canvas + 260 \ 00000284 FF10A0E3 MOV R1,#+255 \ 00000288 01002DE9 PUSH {R0} \ 0000028C 003097E5 LDR R3,[R7, #+0] \ 00000290 0A00A0E1 MOV R0,R10 \ 00000294 1B0100EF SWI +283 \ 00000298 E80295E5 LDR R0,[R5, #+744] \ 0000029C 0B30A0E1 MOV R3,R11 \ 000002A0 01002DE9 PUSH {R0} \ 000002A4 0020A0E3 MOV R2,#+0 \ 000002A8 0810A0E1 MOV R1,R8 \ 000002AC 0900A0E1 MOV R0,R9 \ 000002B0 000100EF SWI +256 \ 000002B4 08D08DE2 ADD SP,SP,#+8 \ 000002B8 72FFFFEA B ??get_answer_7 \ ??get_answer_16: \ 000002BC 18239FE5 LDR R2,??get_answer_9+0x14 ;; Canvas + 272 \ 000002C0 083087E2 ADD R3,R7,#+8 \ 000002C4 FF10A0E3 MOV R1,#+255 \ 000002C8 0A00A0E1 MOV R0,R10 \ 000002CC 1B0100EF SWI +283 \ 000002D0 ........ BL SMART_REDRAW \ 000002D4 6BFFFFEA B ??get_answer_7 \ ??get_answer_17: \ 000002D8 0400A0E1 MOV R0,R4 \ 000002DC 140000EF SWI +20 \ 000002E0 00B0A0E1 MOV R11,R0 \ 000002E4 0420A0E1 MOV R2,R4 \ 000002E8 0710A0E1 MOV R1,R7 \ 000002EC 1E0100EF SWI +286 \ 000002F0 08008BE2 ADD R0,R11,#+8 \ 000002F4 030000EA B ??get_answer_18 \ ??get_answer_19: \ 000002F8 030051E3 CMP R1,#+3 \ 000002FC 2010A0B3 MOVLT R1,#+32 \ 00000300 0010C0B5 STRBLT R1,[R0, #+0] \ 00000304 010080E2 ADD R0,R0,#+1 \ ??get_answer_18: \ 00000308 0010D0E5 LDRB R1,[R0, #+0] \ 0000030C 000051E3 CMP R1,#+0 \ 00000310 F8FFFF1A BNE ??get_answer_19 \ 00000314 ........ LDR R0,??DataTable103 ;; addIconBar \ 00000318 002097E5 LDR R2,[R7, #+0] \ 0000031C BC129FE5 LDR R1,??get_answer_9+0x18 ;; Canvas + 280 \ 00000320 B80085E5 STR R0,[R5, #+184] \ 00000324 1000A0E3 MOV R0,#+16 \ 00000328 700D80E3 ORR R0,R0,#0x1C00 \ 0000032C 054080E0 ADD R4,R0,R5 \ 00000330 0400A0E1 MOV R0,R4 \ 00000334 160000EF SWI +22 \ 00000338 ........ LDR R0,??DataTable104 ;; ignor_list \ 0000033C 0410A0E1 MOV R1,R4 \ 00000340 180100EF SWI +280 \ 00000344 000050E3 CMP R0,#+0 \ 00000348 4EFFFF1A BNE ??get_answer_7 \ 0000034C 90229FE5 LDR R2,??get_answer_9+0x1C ;; Canvas + 288 \ 00000350 90429FE5 LDR R4,??get_answer_9+0x20 ;; sndMsg \ 00000354 080087E2 ADD R0,R7,#+8 \ 00000358 01002DE9 PUSH {R0} \ 0000035C 003097E5 LDR R3,[R7, #+0] \ 00000360 FF10A0E3 MOV R1,#+255 \ 00000364 0A00A0E1 MOV R0,R10 \ 00000368 1B0100EF SWI +283 \ 0000036C EC0295E5 LDR R0,[R5, #+748] \ 00000370 ........ BL SendMSGACK \ 00000374 E80295E5 LDR R0,[R5, #+744] \ 00000378 0B30A0E1 MOV R3,R11 \ 0000037C 01002DE9 PUSH {R0} \ 00000380 0020A0E3 MOV R2,#+0 \ 00000384 0810A0E1 MOV R1,R8 \ 00000388 0900A0E1 MOV R0,R9 \ 0000038C 000100EF SWI +256 \ 00000390 ........ BL SMART_REDRAW \ 00000394 ........ LDR R0,??DataTable105 ;; extended_sounds \ 00000398 000090E5 LDR R0,[R0, #+0] \ 0000039C 08D08DE2 ADD SP,SP,#+8 \ 000003A0 000050E3 CMP R0,#+0 \ 000003A4 000097E5 LDR R0,[R7, #+0] \ 000003A8 1A00001A BNE ??get_answer_20 \ 000003AC ........ _BLF FindContactByUin,??FindContactByUin??rA \ 000003B0 581090E5 LDR R1,[R0, #+88] \ 000003B4 000051E3 CMP R1,#+0 \ 000003B8 0500000A BEQ ??get_answer_21 \ 000003BC 600090E5 LDR R0,[R0, #+96] \ 000003C0 000050E3 CMP R0,#+0 \ 000003C4 2FFFFF0A BEQ ??get_answer_7 \ ??get_answer_22: \ 000003C8 0400A0E1 MOV R0,R4 \ ??get_answer_23: \ 000003CC ........ BL Play \ 000003D0 2CFFFFEA B ??get_answer_7 \ ??get_answer_21: \ 000003D4 ........ LDR R2,??DataTable106 ;; automsgcount \ 000003D8 781090E5 LDR R1,[R0, #+120] \ 000003DC 002092E5 LDR R2,[R2, #+0] \ 000003E0 020051E1 CMP R1,R2 \ 000003E4 0200002A BCS ??get_answer_24 \ 000003E8 941295E5 LDR R1,[R5, #+660] \ 000003EC 000051E3 CMP R1,#+0 \ 000003F0 F4FFFF1A BNE ??get_answer_22 \ ??get_answer_24: \ 000003F4 741090E5 LDR R1,[R0, #+116] \ 000003F8 000051E3 CMP R1,#+0 \ 000003FC 0300000A BEQ ??get_answer_25 \ 00000400 700090E5 LDR R0,[R0, #+112] \ 00000404 000050E3 CMP R0,#+0 \ 00000408 1EFFFF0A BEQ ??get_answer_7 \ 0000040C EDFFFFEA B ??get_answer_22 \ ??get_answer_25: \ 00000410 0400A0E1 MOV R0,R4 \ 00000414 ECFFFFEA B ??get_answer_23 \ ??get_answer_20: \ 00000418 CC219FE5 LDR R2,??get_answer_9+0x24 ;; sndMsg2 \ 0000041C 480285E5 STR R0,[R5, #+584] \ 00000420 0010A0E3 MOV R1,#+0 \ 00000424 08108DE5 STR R1,[SP, #+8] \ 00000428 483295E5 LDR R3,[R5, #+584] \ 0000042C BC119FE5 LDR R1,??get_answer_9+0x28 ;; Canvas + 300 \ 00000430 2470A0E3 MOV R7,#+36 \ 00000434 507E87E3 ORR R7,R7,#0x500 \ 00000438 050087E0 ADD R0,R7,R5 \ 0000043C 160000EF SWI +22 \ 00000440 08308DE2 ADD R3,SP,#+8 \ 00000444 8020A0E3 MOV R2,#+128 \ 00000448 801CA0E3 MOV R1,#+32768 \ 0000044C 050087E0 ADD R0,R7,R5 \ 00000450 0A0000EF SWI +10 \ 00000454 04008DE5 STR R0,[SP, #+4] \ 00000458 04009DE5 LDR R0,[SP, #+4] \ 0000045C 010070E3 CMN R0,#+1 \ 00000460 EAFFFF0A BEQ ??get_answer_25 \ 00000464 04009DE5 LDR R0,[SP, #+4] \ 00000468 08108DE2 ADD R1,SP,#+8 \ 0000046C 0D0000EF SWI +13 \ 00000470 050087E0 ADD R0,R7,R5 \ 00000474 D4FFFFEA B ??get_answer_23 \ ??get_answer_26: \ 00000478 460100EF SWI +326 \ 0000047C 081087E2 ADD R1,R7,#+8 \ 00000480 0100A0E3 MOV R0,#+1 \ 00000484 480100EF SWI +328 \ ??get_answer_27: \ 00000488 470100EF SWI +327 \ 0000048C FDFEFFEA B ??get_answer_7 \ ??get_answer_28: \ 00000490 0700A0E1 MOV R0,R7 \ 00000494 ........ BL FindContactLOGQByAck \ 00000498 000050E3 CMP R0,#+0 \ 0000049C 0100000A BEQ ??get_answer_29 \ 000004A0 4C019FE5 LDR R0,??get_answer_9+0x2C ;; sndMsgSent \ 000004A4 ........ BL Play \ ??get_answer_29: \ 000004A8 0A00A0E3 MOV R0,#+10 \ 000004AC 140000EF SWI +20 \ 000004B0 00B0A0E1 MOV R11,R0 \ 000004B4 0A20A0E3 MOV R2,#+10 \ 000004B8 E8FEFFEA B ??get_answer_5 \ ??get_answer_30: \ 000004BC 0C108DE2 ADD R1,SP,#+12 \ 000004C0 14008DE2 ADD R0,SP,#+20 \ 000004C4 B40000EF SWI +180 \ 000004C8 0C00DDE5 LDRB R0,[SP, #+12] \ 000004CC 0D20DDE5 LDRB R2,[SP, #+13] \ 000004D0 E11EA0E3 MOV R1,#+3600 \ 000004D4 3C30A0E3 MOV R3,#+60 \ 000004D8 930202E0 MUL R2,R3,R2 \ 000004DC 912020E0 MLA R0,R1,R0,R2 \ 000004E0 0E10DDE5 LDRB R1,[SP, #+14] \ 000004E4 E12EA0E3 MOV R2,#+3600 \ 000004E8 000081E0 ADD R0,R1,R0 \ 000004EC 0810D7E5 LDRB R1,[R7, #+8] \ 000004F0 920101E0 MUL R1,R2,R1 \ 000004F4 FC209FE5 LDR R2,??get_answer_9+0x30 ;; Canvas + 312 \ 000004F8 010040E0 SUB R0,R0,R1 \ 000004FC 0910D7E5 LDRB R1,[R7, #+9] \ 00000500 930101E0 MUL R1,R3,R1 \ 00000504 010040E0 SUB R0,R0,R1 \ 00000508 0A10D7E5 LDRB R1,[R7, #+10] \ 0000050C ........ LDR R7,??DataTable107 ;; janis \ 00000510 014050E0 SUBS R4,R0,R1 \ 00000514 500BA043 MOVMI R0,#+81920 \ 00000518 460D8043 ORRMI R0,R0,#0x1180 \ 0000051C 04408040 ADDMI R4,R0,R4 \ 00000520 010084E2 ADD R0,R4,#+1 \ 00000524 01002DE9 PUSH {R0} \ 00000528 0430A0E1 MOV R3,R4 \ 0000052C FF10A0E3 MOV R1,#+255 \ 00000530 0A00A0E1 MOV R0,R10 \ 00000534 1B0100EF SWI +283 \ 00000538 BC109FE5 LDR R1,??get_answer_9+0x34 ;; Canvas + 332 \ 0000053C 0420A0E1 MOV R2,R4 \ 00000540 B8409FE5 LDR R4,??get_answer_9+0x38 ;; pingsnd \ 00000544 F400A0E3 MOV R0,#+244 \ 00000548 540D80E3 ORR R0,R0,#0x1500 \ 0000054C 050080E0 ADD R0,R0,R5 \ 00000550 160000EF SWI +22 \ 00000554 460100EF SWI +326 \ 00000558 000097E5 LDR R0,[R7, #+0] \ 0000055C 04D08DE2 ADD SP,SP,#+4 \ 00000560 010050E3 CMP R0,#+1 \ 00000564 0700001A BNE ??get_answer_31 \ 00000568 0A10A0E1 MOV R1,R10 \ 0000056C 0100A0E3 MOV R0,#+1 \ 00000570 480100EF SWI +328 \ 00000574 0400A0E1 MOV R0,R4 \ 00000578 ........ BL Play \ 0000057C 0000A0E3 MOV R0,#+0 \ 00000580 000087E5 STR R0,[R7, #+0] \ 00000584 BFFFFFEA B ??get_answer_27 \ ??get_answer_31: \ 00000588 A40395E5 LDR R0,[R5, #+932] \ 0000058C 000050E3 CMP R0,#+0 \ 00000590 0500001A BNE ??get_answer_32 \ 00000594 68009FE5 LDR R0,??get_answer_9+0x3C ;; ping_time_config \ 00000598 000090E5 LDR R0,[R0, #+0] \ 0000059C A40385E5 STR R0,[R5, #+932] \ 000005A0 0400A0E1 MOV R0,R4 \ 000005A4 ........ BL Play \ 000005A8 B6FFFFEA B ??get_answer_27 \ ??get_answer_32: \ 000005AC 010040E2 SUB R0,R0,#+1 \ 000005B0 A40385E5 STR R0,[R5, #+932] \ 000005B4 B3FFFFEA B ??get_answer_27 3242 } 3243 } 3244 } 3245 RXstate=i; \ ??get_answer_8: \ 000005B8 E08285E5 STR R8,[R5, #+736] 3246 // GBS_StartTimerProc(&tmr_dorecv,3000,dorecv); 3247 // SMART_REDRAW(); 3248 } \ ??get_answer_1: \ 000005BC 1CD08DE2 ADD SP,SP,#+28 \ 000005C0 40DE8DE2 ADD SP,SP,#+1024 \ 000005C4 F08FBDE8 POP {R4-R11,PC} ;; return \ ??get_answer_9: \ 000005C8 25730000 DC8 "%s",+0 \ 000005CC ........ DC32 RXbuf \ 000005D0 ........ DC32 Canvas + 248 \ 000005D4 ........ DC32 sndStartup \ 000005D8 ........ DC32 Canvas + 260 \ 000005DC ........ DC32 Canvas + 272 \ 000005E0 ........ DC32 Canvas + 280 \ 000005E4 ........ DC32 Canvas + 288 \ 000005E8 ........ DC32 sndMsg \ 000005EC ........ DC32 sndMsg2 \ 000005F0 ........ DC32 Canvas + 300 \ 000005F4 ........ DC32 sndMsgSent \ 000005F8 ........ DC32 Canvas + 312 \ 000005FC ........ DC32 Canvas + 332 \ 00000600 ........ DC32 pingsnd \ 00000604 ........ DC32 ping_time_config 3249 3250 3251 extern int main_count; 3252 3253 //=====================add to main info==================== 3254 3255 //Сюда я не лез...и че та желания нет...kluchnik ;) 3256 3257 char a_txt[45]; 3258 char s_txt[45]; 3259 char d_txt[45]; 3260 char f_txt[45]; 3261 char g_txt[45]; 3262 unsigned int main_msg_timer2; \ In segment CODE, align 4, keep-with-next 3263 void AddToMain(const char *nameu,char *si) 3264 { \ AddToMain: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0180A0E1 MOV R8,R1 3265 char *de=malloc(64); \ 00000010 4000A0E3 MOV R0,#+64 \ 00000014 140000EF SWI +20 \ 00000018 0050A0E1 MOV R5,R0 3266 int text_l; 3267 int iz; 3268 int name_l; 3269 name_l=0; 3270 text_l=0; 3271 name_l=strlen(nameu); \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 1B0000EF SWI +27 3272 iz=0; 3273 #ifdef ELKA 3274 text_l=main_lenght-name_l; 3275 #else 3276 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] 3277 #endif 3278 3279 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 3280 { 3281 while(text_l!=0) 3282 { 3283 de[iz]=si[iz]; 3284 iz++; 3285 text_l--; 3286 } 3287 if(use_cutter) 3288 { 3289 de[iz]='.'; 3290 iz++; 3291 de[iz]='.'; 3292 iz++; 3293 de[iz]='.'; 3294 iz++; 3295 } 3296 de[iz]='\0'; 3297 } 3298 else 3299 strcpy(de, si); \ 00000048 0810A0E1 MOV R1,R8 \ 0000004C 0500A0E1 MOV R0,R5 \ 00000050 1A0000EF SWI +26 3300 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 3301 while(strlen(de)!=iz) 3302 { 3303 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] 3304 if(de[iz]==0x0A) de[iz]=0x20; \ 000000B8 0510D7E7 LDRB R1,[R7, +R5] \ 000000BC 0A0051E3 CMP R1,#+10 \ 000000C0 0500C707 STRBEQ R0,[R7, +R5] 3305 iz++; \ 000000C4 017087E2 ADD R7,R7,#+1 3306 } \ ??AddToMain_3: \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 1B0000EF SWI +27 \ 000000D0 070050E1 CMP R0,R7 \ 000000D4 F3FFFF1A BNE ??AddToMain_6 3307 de[iz]='\0'; 3308 if(main_count==0) sprintf(a_txt, "%s: %s", nameu,de); \ 000000D8 ........ LDR R8,??DataTable108 ;; main_count \ 000000DC 0560C7E7 STRB R6,[R7, +R5] \ 000000E0 ........ LDR R6,??DataTable109 ;; S_ICONS \ 000000E4 4C719FE5 LDR R7,??AddToMain_0+0x8 ;; `?` \ 000000E8 1C10A0E3 MOV R1,#+28 \ 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 3309 if(main_count==1) sprintf(s_txt, "%s: %s", nameu,de); \ ??AddToMain_7: \ 00000118 4C10A0E3 MOV R1,#+76 \ 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 3310 if(main_count==2) sprintf(d_txt, "%s: %s", nameu,de); \ ??AddToMain_8: \ 00000148 7C00A0E3 MOV R0,#+124 \ 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 3311 if(main_count==3) sprintf(f_txt, "%s: %s", nameu,de); \ ??AddToMain_9: \ 00000174 AC00A0E3 MOV R0,#+172 \ 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 3312 if(main_count==4) sprintf(g_txt, "%s: %s", nameu,de); \ ??AddToMain_10: \ 000001A0 DC00A0E3 MOV R0,#+220 \ 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 3313 if(main_count>4) \ ??AddToMain_11: \ 000001CC 000098E5 LDR R0,[R8, #+0] \ 000001D0 050050E3 CMP R0,#+5 \ 000001D4 100000BA BLT ??AddToMain_12 3314 { 3315 strcpy(a_txt, s_txt); \ 000001D8 00109DE5 LDR R1,[SP, #+0] \ 000001DC 04009DE5 LDR R0,[SP, #+4] \ 000001E0 1A0000EF SWI +26 3316 strcpy(s_txt, d_txt); \ 000001E4 00009DE5 LDR R0,[SP, #+0] \ 000001E8 0910A0E1 MOV R1,R9 \ 000001EC 1A0000EF SWI +26 3317 strcpy(d_txt, f_txt); \ 000001F0 0A10A0E1 MOV R1,R10 \ 000001F4 0900A0E1 MOV R0,R9 \ 000001F8 1A0000EF SWI +26 3318 strcpy(f_txt, g_txt); \ 000001FC 0B10A0E1 MOV R1,R11 \ 00000200 0A00A0E1 MOV R0,R10 \ 00000204 1A0000EF SWI +26 3319 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 3320 } 3321 mfree(de); \ ??AddToMain_12: \ 0000021C 0500A0E1 MOV R0,R5 \ 00000220 150000EF SWI +21 3322 main_d=1; \ 00000224 0100A0E3 MOV R0,#+1 \ 00000228 340286E5 STR R0,[R6, #+564] 3323 } \ 0000022C F38FBDE8 POP {R0,R1,R4-R11,PC} ;; return \ ??AddToMain_0: \ 00000230 ........ DC32 main_lenght \ 00000234 ........ DC32 use_cutter \ 00000238 ........ DC32 `?` 3324 3325 //======================add to main info================ 3326 3327 int NEW_MSG; 3328 \ In segment CODE, align 4, keep-with-next 3329 void AddStringToLog(CLIST *t, int code, char *s, const char *name, unsigned int IDforACK,int flag) 3330 { \ 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 3331 char hs[128], *lastX; 3332 TTime tt; 3333 TDate d; 3334 GetDateTime(&d,&tt); \ 00000020 0D10A0E1 MOV R1,SP \ 00000024 08008DE2 ADD R0,SP,#+8 \ 00000028 B40000EF SWI +180 3335 int i; 3336 3337 // if(code == 3 && !LOG_XTXT) return; //Нl нуcно nоodrн?nь cennnrnуn 3338 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 3339 { 3340 #ifdef kluchnik 3341 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 3354 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 3355 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 3356 3357 LOGQ *p=NewLOGQ(s); \ ??AddStringToLog_5: \ 00000104 0800A0E1 MOV R0,R8 \ 00000108 ........ BL NewLOGQ \ 0000010C 0080A0E1 MOV R8,R0 3358 // snprintf(p->hdr,79,"%02d:%02d %02d-%02d %s:",tt.hour,tt.min,d.day,d.month,name); 3359 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 3360 p->type=code; \ 00000148 0C5088E5 STR R5,[R8, #+12] 3361 p->ID=IDforACK; //0-32767 \ 0000014C 087088E5 STR R7,[R8, #+8] 3362 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 3363 while(i>MAXLOGMSG) 3364 { 3365 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] 3366 RemoveLOGQ(&t->log,t->log); 3367 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 3368 } \ 0000018C 150056E3 CMP R6,#+21 \ 00000190 F5FFFFAA BGE ??AddStringToLog_7 3369 t->msg_count=i; \ ??AddStringToLog_6: \ 00000194 A06084E5 STR R6,[R4, #+160] 3370 if (!t->last_log) t->last_log=p; \ 00000198 980094E5 LDR R0,[R4, #+152] 3371 if (code==3) \ 0000019C ........ LDR R6,??DataTable149 ;; S_ICONS \ 000001A0 000050E3 CMP R0,#+0 \ 000001A4 98808405 STREQ R8,[R4, #+152] \ 000001A8 030055E3 CMP R5,#+3 \ 000001AC 0D00001A BNE ??AddStringToLog_8 3372 { 3373 if (edchat_id) \ 000001B0 180396E5 LDR R0,[R6, #+792] \ 000001B4 000050E3 CMP R0,#+0 \ 000001B8 1C00000A BEQ ??AddStringToLog_9 3374 { 3375 void *data=FindGUIbyId(edchat_id,NULL); \ 000001BC 180396E5 LDR R0,[R6, #+792] \ 000001C0 0010A0E3 MOV R1,#+0 \ 000001C4 090200EF SWI +521 3376 if (data) \ 000001C8 000050E3 CMP R0,#+0 \ 000001CC 1700000A BEQ ??AddStringToLog_9 3377 { 3378 EDCHAT_STRUCT *ed_struct; 3379 ed_struct=EDIT_GetUserPointer(data); \ 000001D0 DF0100EF SWI +479 3380 if (ed_struct) \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 1400000A BEQ ??AddStringToLog_9 3381 { 3382 if (ed_struct->ed_contact==t) \ 000001DC 000090E5 LDR R0,[R0, #+0] \ 000001E0 040050E1 CMP R0,R4 \ 000001E4 1100001A BNE ??AddStringToLog_9 3383 { 3384 goto L_INC; 3385 } 3386 } 3387 } 3388 } 3389 goto L_NOINC; 3390 } 3391 L_INC: 3392 if (!t->isunread) total_unread++; \ ??AddStringToLog_8: \ 000001E8 800094E5 LDR R0,[R4, #+128] \ 000001EC 000050E3 CMP R0,#+0 \ 000001F0 08039605 LDREQ R0,[R6, #+776] \ 000001F4 01008002 ADDEQ R0,R0,#+1 \ 000001F8 08038605 STREQ R0,[R6, #+776] 3393 if(NEW_MSG==1) \ 000001FC AC0396E5 LDR R0,[R6, #+940] \ 00000200 010050E3 CMP R0,#+1 \ 00000204 0700001A BNE ??AddStringToLog_10 3394 { 3395 t->unread_msg++; \ 00000208 840094E5 LDR R0,[R4, #+132] \ 0000020C 010080E2 ADD R0,R0,#+1 \ 00000210 840084E5 STR R0,[R4, #+132] 3396 total_unread2++; \ 00000214 640296E5 LDR R0,[R6, #+612] \ 00000218 010080E2 ADD R0,R0,#+1 \ 0000021C 640286E5 STR R0,[R6, #+612] 3397 NEW_MSG=0; \ 00000220 0000A0E3 MOV R0,#+0 \ 00000224 AC0386E5 STR R0,[R6, #+940] 3398 } 3399 t->isunread=1; \ ??AddStringToLog_10: \ 00000228 0100A0E3 MOV R0,#+1 \ 0000022C 800084E5 STR R0,[R4, #+128] 3400 L_NOINC: 3401 ChangeContactPos(t); \ ??AddStringToLog_9: \ 00000230 0400A0E1 MOV R0,R4 \ 00000234 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 3402 } \ ??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 3403 3404 void ParseAnswer(WSHDR *ws, const char *s); 3405 3406 int time_to_stop_t9; 3407 \ In segment CODE, align 4, keep-with-next 3408 void ParseXStatusText(WSHDR *ws, const char *s, int color) 3409 { \ ParseXStatusText: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 \ 0000000C 0260A0E1 MOV R6,R2 3410 int c; 3411 int flag=0; \ 00000010 0070A0E3 MOV R7,#+0 3412 CutWSTR(ws,0); \ 00000014 0010A0E3 MOV R1,#+0 \ 00000018 260100EF SWI +294 3413 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} 3414 wsAppendChar(ws,0xE008); \ 0000002C 0810A0E3 MOV R1,#+8 \ 00000030 E01C81E3 ORR R1,R1,#0xE000 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 1C0000EF SWI +28 3415 wsAppendChar(ws,color); \ 0000003C 0610A0E1 MOV R1,R6 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 1C0000EF SWI +28 3416 wsAppendChar(ws,0xE013); \ 00000048 1310A0E3 MOV R1,#+19 \ 0000004C E01C81E3 ORR R1,R1,#0xE000 \ 00000050 0A0000EA B ??ParseXStatusText_0 3417 while((c=*s++)) 3418 { 3419 if (c==13) \ ??ParseXStatusText_1: \ 00000054 0D0050E3 CMP R0,#+13 3420 { 3421 if (!flag) \ 00000058 00005703 CMPEQ R7,#+0 \ 0000005C 0500001A BNE ??ParseXStatusText_2 3422 { 3423 flag=1; \ 00000060 0170A0E3 MOV R7,#+1 3424 wsAppendChar(ws,0xE012); \ 00000064 1210A0E3 MOV R1,#+18 \ 00000068 E01C81E3 ORR R1,R1,#0xE000 \ 0000006C 0400A0E1 MOV R0,R4 \ 00000070 1C0000EF SWI +28 3425 c=' '; \ 00000074 2000A0E3 MOV R0,#+32 3426 } 3427 } 3428 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 3429 } \ 00000088 ........ LDRB R0,[R5], #+1 \ 0000008C 000050E3 CMP R0,#+0 \ 00000090 EFFFFF1A BNE ??ParseXStatusText_1 \ 00000094 F080BDE8 POP {R4-R7,PC} ;; return 3430 } 3431 3432 //Добавление итемов в чат при получении нового сообщения \ In segment CODE, align 4, keep-with-next 3433 void AddMsgToChat(void *data) 3434 { \ AddMsgToChat: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 3CD04DE2 SUB SP,SP,#+60 3435 LOGQ *p; 3436 EDITCONTROL ec; 3437 EDITC_OPTIONS ec_options; 3438 EDCHAT_STRUCT *ed_struct; 3439 int j; 3440 int color, font, type; 3441 int zc; 3442 if (!data) return; \ 00000008 000050E3 CMP R0,#+0 \ 0000000C C400000A BEQ ??AddMsgToChat_0 3443 ed_struct=EDIT_GetUserPointer(data); \ 00000010 DF0100EF SWI +479 \ 00000014 0040B0E1 MOVS R4,R0 3444 if (!ed_struct) return; \ 00000018 C100000A BEQ ??AddMsgToChat_0 3445 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 3446 3447 p=ed_struct->ed_contact->last_log; \ 0000002C 985090E5 LDR R5,[R0, #+152] 3448 if (p) \ 00000030 ........ LDR R6,??DataTable149 ;; S_ICONS \ 00000034 ........ LDR R7,??DataTable113 ;; O_ED_X_FONT_SIZE \ 00000038 ........ LDR R8,??DataTable114 ;; X_COLOR \ 0000003C ........ LDR R9,??DataTable115 ;; O_X_COLOR \ 00000040 000055E3 CMP R5,#+0 \ 00000044 A100000A BEQ ??AddMsgToChat_1 3449 { 3450 while(p) 3451 { 3452 font = ED_H_FONT_SIZE; \ ??AddMsgToChat_2: \ 00000048 ........ LDR R0,??DataTable136 ;; ED_H_FONT_SIZE 3453 if ((zc=p->acked&3)) \ 0000004C ........ LDR R1,??DataTable133 ;; 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 3454 { 3455 if (zc==1) \ 00000064 010050E3 CMP R0,#+1 \ 00000068 1E00001A BNE ??AddMsgToChat_4 3456 color=ACK_COLOR; //Зеленый \ 0000006C ........ LDR R0,??DataTable129 ;; ACK_COLOR \ 00000070 1B0000EA B ??AddMsgToChat_5 3457 else 3458 color=I_COLOR; 3459 } 3460 else 3461 { 3462 if (p->ID==0xFFFFFFFF) \ ??AddMsgToChat_3: \ 00000074 080095E5 LDR R0,[R5, #+8] \ 00000078 010070E3 CMN R0,#+1 \ 0000007C 1700001A BNE ??AddMsgToChat_6 3463 { 3464 type = p->type&0x0F; \ 00000080 0C0095E5 LDR R0,[R5, #+12] \ 00000084 0F1000E2 AND R1,R0,#0xF 3465 if(p->type&0x10) \ 00000088 100010E3 TST R0,#0x10 \ 0000008C 0B00000A BEQ ??AddMsgToChat_7 3466 { 3467 color = (type==1)?O_I_COLOR:((type==3)?O_X_COLOR:O_TO_COLOR); \ 00000090 010051E3 CMP R1,#+1 \ 00000094 ........ LDREQ R0,??DataTable131 ;; 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,??DataTable130 ;; O_TO_COLOR \ ??AddMsgToChat_8: \ 000000B0 00B090E5 LDR R11,[R0, #+0] \ 000000B4 ........ LDR R0,??DataTable135 ;; O_ED_H_FONT_SIZE \ ??AddMsgToChat_9: \ 000000B8 00A090E5 LDR R10,[R0, #+0] \ 000000BC 090000EA B ??AddMsgToChat_4 3468 font = (type==3)?O_ED_X_FONT_SIZE:O_ED_H_FONT_SIZE; 3469 } 3470 else 3471 { 3472 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,??DataTable127 ;; ED_X_FONT_SIZE \ 000000D4 F7FFFF0A BEQ ??AddMsgToChat_9 \ 000000D8 ........ LDR R0,??DataTable132 ;; TO_COLOR \ 000000DC 000000EA B ??AddMsgToChat_5 3473 font = (type==3)?ED_X_FONT_SIZE:ED_H_FONT_SIZE; 3474 } 3475 } 3476 else 3477 color=UNACK_COLOR; //????? \ ??AddMsgToChat_6: \ 000000E0 ........ LDR R0,??DataTable134 ;; UNACK_COLOR \ ??AddMsgToChat_5: \ 000000E4 00B090E5 LDR R11,[R0, #+0] 3478 } 3479 PrepareEditControl(&ec); \ ??AddMsgToChat_4: \ 000000E8 10008DE2 ADD R0,SP,#+16 \ 000000EC 640100EF SWI +356 3480 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 3481 { 3482 ascii2ws(ews,p->hdr); \ 00000100 880296E5 LDR R0,[R6, #+648] \ 00000104 101085E2 ADD R1,R5,#+16 \ 00000108 ........ _BLF ascii2ws,??ascii2ws??rA 3483 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 0000010C 883296E5 LDR R3,[R6, #+648] \ 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 3484 } 3485 else 3486 ConstructEditControl(&ec,ECT_HEADER,ECF_DELSTR,ews,0); \ ??AddMsgToChat_10: \ 00000124 0000A0E3 MOV R0,#+0 \ 00000128 01002DE9 PUSH {R0} \ 0000012C 883296E5 LDR R3,[R6, #+648] \ 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 3487 PrepareEditCOptions(&ec_options); \ 00000144 0D00A0E1 MOV R0,SP \ 00000148 C80100EF SWI +456 3488 SetPenColorToEditCOptions(&ec_options,color); \ 0000014C 0B10A0E1 MOV R1,R11 \ 00000150 0D00A0E1 MOV R0,SP \ 00000154 CC0100EF SWI +460 3489 SetFontToEditCOptions(&ec_options,font); \ 00000158 0A10A0E1 MOV R1,R10 \ 0000015C 0D00A0E1 MOV R0,SP \ 00000160 CA0100EF SWI +458 3490 CopyOptionsToEditControl(&ec,&ec_options); \ 00000164 0D10A0E1 MOV R1,SP \ 00000168 10008DE2 ADD R0,SP,#+16 \ 0000016C CE0100EF SWI +462 3491 //AddEditControlToEditQend(eq,&ec,ma); 3492 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 3493 ed_struct->ed_answer++; \ 00000184 080094E5 LDR R0,[R4, #+8] \ 00000188 010080E2 ADD R0,R0,#+1 \ 0000018C 080084E5 STR R0,[R4, #+8] 3494 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 3495 { 3496 ParseAnswer(ews,p->text); \ 000001A0 880296E5 LDR R0,[R6, #+648] \ 000001A4 601085E2 ADD R1,R5,#+96 \ 000001A8 ........ BL ParseAnswer \ 000001AC 050000EA B ??AddMsgToChat_13 3497 } 3498 else 3499 { 3500 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 880296E5 LDR R0,[R6, #+648] \ 000001BC 00209805 LDREQ R2,[R8, #+0] \ 000001C0 601085E2 ADD R1,R5,#+96 \ 000001C4 ........ BL ParseXStatusText 3501 } 3502 PrepareEditControl(&ec); \ ??AddMsgToChat_13: \ 000001C8 10008DE2 ADD R0,SP,#+16 \ 000001CC 640100EF SWI +356 3503 ConstructEditControl(&ec, 3504 ECT_NORMAL_TEXT, 3505 ews->wsbody[0] ? ECF_APPEND_EOL|ECF_DISABLE_T9 : ECF_DELSTR, 3506 ews,ews->wsbody[0]); \ 000001D0 883296E5 LDR R3,[R6, #+648] \ 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 3507 PrepareEditCOptions(&ec_options); \ 000001FC 04008DE2 ADD R0,SP,#+4 \ 00000200 C80100EF SWI +456 3508 //#ifdef M75 3509 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 3510 { 3511 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); \ 00000218 100010E3 TST R0,#0x10 \ 0000021C ........ LDRNE R0,??DataTable125 ;; O_ED_FONT_SIZE \ 00000220 ........ LDREQ R0,??DataTable126 ;; ED_FONT_SIZE \ 00000224 001090E5 LDR R1,[R0, #+0] \ 00000228 090000EA B ??AddMsgToChat_15 3512 } 3513 else 3514 { 3515 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 3516 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,??DataTable127 ;; 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 3517 } 3518 //#else 3519 // SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); 3520 //#endif 3521 CopyOptionsToEditControl(&ec,&ec_options); \ 0000025C 0D10A0E1 MOV R1,SP \ 00000260 10008DE2 ADD R0,SP,#+16 \ 00000264 CE0100EF SWI +462 3522 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 3523 ed_struct->ed_answer++; \ 0000027C 080094E5 LDR R0,[R4, #+8] \ 00000280 010080E2 ADD R0,R0,#+1 \ 00000284 080084E5 STR R0,[R4, #+8] 3524 p=p->next; \ 00000288 005095E5 LDR R5,[R5, #+0] 3525 } \ 0000028C 000055E3 CMP R5,#+0 \ 00000290 6CFFFF1A BNE ??AddMsgToChat_2 3526 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 3527 while(jed_answer) 3528 { 3529 EDIT_RemoveEditControl(ed_struct->ed_chatgui,1); \ ??AddMsgToChat_17: \ 000002AC 040094E5 LDR R0,[R4, #+4] \ 000002B0 0110A0E3 MOV R1,#+1 \ 000002B4 D10100EF SWI +465 3530 ed_struct->ed_answer--; \ 000002B8 080094E5 LDR R0,[R4, #+8] \ 000002BC 010040E2 SUB R0,R0,#+1 \ 000002C0 080084E5 STR R0,[R4, #+8] 3531 } \ 000002C4 000055E1 CMP R5,R0 \ 000002C8 F7FFFFBA BLT ??AddMsgToChat_17 3532 } 3533 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] 3534 if (IsGuiOnTop(edchat_id)) \ 000002D8 180396E5 LDR R0,[R6, #+792] \ 000002DC 350100EF SWI +309 \ 000002E0 000050E3 CMP R0,#+0 \ 000002E4 0300000A BEQ ??AddMsgToChat_18 3535 { 3536 total_unread--; \ 000002E8 080396E5 LDR R0,[R6, #+776] \ 000002EC 010040E2 SUB R0,R0,#+1 \ 000002F0 080386E5 STR R0,[R6, #+776] \ 000002F4 020000EA B ??AddMsgToChat_19 3537 } 3538 else 3539 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] 3540 ed_struct->ed_contact->isunread=0; \ ??AddMsgToChat_19: \ 00000304 000094E5 LDR R0,[R4, #+0] \ 00000308 805080E5 STR R5,[R0, #+128] 3541 total_unread2=total_unread2-ed_struct->ed_contact->unread_msg; \ 0000030C 641296E5 LDR R1,[R6, #+612] \ 00000310 842090E5 LDR R2,[R0, #+132] \ 00000314 021041E0 SUB R1,R1,R2 \ 00000318 641286E5 STR R1,[R6, #+612] 3542 ed_struct->ed_contact->unread_msg=0; \ 0000031C 845080E5 STR R5,[R0, #+132] 3543 ChangeContactPos(ed_struct->ed_contact); \ 00000320 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 3544 // EDIT_SetFocus(data,ed_struct->ed_answer); 3545 } \ ??AddMsgToChat_0: \ 00000324 40D08DE2 ADD SP,SP,#+64 ;; stack cleaning \ 00000328 F08FBDE8 POP {R4-R11,PC} ;; return 3546 3547 //Рисуем подтверждения непосредственно \ In segment CODE, align 4, keep-with-next 3548 void DrawAck(void *data) 3549 { \ DrawAck: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 3CD04DE2 SUB SP,SP,#+60 \ 00000008 0040B0E1 MOVS R4,R0 3550 LOGQ *p; 3551 EDITCONTROL ec; 3552 EDITC_OPTIONS ec_options; 3553 EDCHAT_STRUCT *ed_struct; 3554 int j; 3555 int color; 3556 int dorefresh=0; \ 0000000C 0060A0E3 MOV R6,#+0 3557 if (!data) return; \ 00000010 4C00000A BEQ ??DrawAck_0 3558 ed_struct=EDIT_GetUserPointer(data); \ 00000014 DF0100EF SWI +479 3559 if (!ed_struct) return; \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 4900000A BEQ ??DrawAck_0 3560 p=ed_struct->ed_contact->log; \ 00000020 001090E5 LDR R1,[R0, #+0] 3561 j=ed_struct->ed_answer; 3562 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 3563 while(p) 3564 { 3565 if (j>=1) //Пока возможно лишнее \ ??DrawAck_2: \ 00000040 010057E3 CMP R7,#+1 \ 00000044 340000BA BLT ??DrawAck_3 3566 { 3567 if (!(p->acked&4)) \ 00000048 040095E5 LDR R0,[R5, #+4] \ 0000004C 040010E3 TST R0,#0x4 \ 00000050 3100001A BNE ??DrawAck_3 3568 { 3569 ExtractEditControl(data,j,&ec); \ 00000054 10208DE2 ADD R2,SP,#+16 \ 00000058 0710A0E1 MOV R1,R7 \ 0000005C 0400A0E1 MOV R0,R4 \ 00000060 690100EF SWI +361 3570 PrepareEditCOptions(&ec_options); \ 00000064 0D00A0E1 MOV R0,SP \ 00000068 C80100EF SWI +456 3571 if (p->acked) \ 0000006C 040095E5 LDR R0,[R5, #+4] \ 00000070 000050E3 CMP R0,#+0 \ 00000074 0300000A BEQ ??DrawAck_4 3572 { 3573 if (p->acked==1) \ 00000078 010050E3 CMP R0,#+1 \ 0000007C ........ LDRNE R0,??DataTable133 ;; I_COLOR 3574 color=ACK_COLOR; //Зеленый \ 00000080 ........ LDREQ R0,??DataTable129 ;; ACK_COLOR \ 00000084 0F0000EA B ??DrawAck_5 3575 else 3576 color=I_COLOR; 3577 } 3578 else 3579 { 3580 if (p->ID==0xFFFFFFFF) \ ??DrawAck_4: \ 00000088 080095E5 LDR R0,[R5, #+8] \ 0000008C 010070E3 CMN R0,#+1 \ 00000090 0B00001A BNE ??DrawAck_6 3581 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,??DataTable130 ;; O_TO_COLOR \ 000000AC ........ LDREQ R0,??DataTable131 ;; O_I_COLOR \ 000000B0 040000EA B ??DrawAck_5 \ ??DrawAck_7: \ 000000B4 010050E3 CMP R0,#+1 \ 000000B8 ........ LDRNE R0,??DataTable132 ;; TO_COLOR \ 000000BC ........ LDREQ R0,??DataTable133 ;; I_COLOR \ 000000C0 000000EA B ??DrawAck_5 3582 else 3583 color=UNACK_COLOR; //Серый \ ??DrawAck_6: \ 000000C4 ........ LDR R0,??DataTable134 ;; UNACK_COLOR 3584 } 3585 SetPenColorToEditCOptions(&ec_options,color/*p->type==1?I_COLOR:TO_COLOR*/); 3586 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_H_FONT_SIZE:ED_H_FONT_SIZE); 3587 CopyOptionsToEditControl(&ec,&ec_options); 3588 StoreEditControl(data,j,&ec); 3589 p->acked|=4; //Обработали 3590 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,??DataTable135 ;; O_ED_H_FONT_SIZE \ 000000E4 ........ LDREQ R0,??DataTable136 ;; 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] 3591 } 3592 } 3593 j+=2; 3594 p=p->next; \ ??DrawAck_3: \ 0000011C 005095E5 LDR R5,[R5, #+0] \ 00000120 027087E2 ADD R7,R7,#+2 3595 } \ 00000124 000055E3 CMP R5,#+0 \ 00000128 C4FFFF1A BNE ??DrawAck_2 3596 if (IsGuiOnTop(edchat_id)&&dorefresh) RefreshGUI(); \ ??DrawAck_1: \ 0000012C 1C009FE5 LDR R0,??DrawAck_8 ;; S_ICONS + 792 \ 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 + 792 3597 } 3598 \ In segment CODE, align 4, keep-with-next 3599 void ask_my_info(void) 3600 { 3601 /* TPKT *p; 3602 CLIST *t; 3603 p=malloc(sizeof(PKT)); 3604 p->pkt.uin=UIN; 3605 p->pkt.type=T_REQINFOSHORT; 3606 p->pkt.data_len=0; 3607 // AddStringToLog(t,0x01,"Request info...",I_str); 3608 SUBPROC((void *)SendAnswer,0,p);*/ 3609 } \ ask_my_info: \ 00000000 1EFF2FE1 BX LR ;; return 3610 \ In segment CODE, align 4, keep-with-next 3611 void set_my_status(void) 3612 { \ set_my_status: \ 00000000 00402DE9 PUSH {LR} 3613 TPKT *p; 3614 p=malloc(sizeof(PKT)+1); \ 00000004 0900A0E3 MOV R0,#+9 \ 00000008 140000EF SWI +20 3615 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 001080E5 STR R1,[R0, #+0] 3616 p->pkt.type=T_MY_STATUS_CH; // Тип пакета: изменение статуса \ 00000014 0F10A0E3 MOV R1,#+15 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 3617 p->pkt.data_len=1; // Длина пакета: 1 байт \ 0000001C 0110A0E3 MOV R1,#+1 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 3618 p->data[0]=CurrentStatus; \ 00000024 18109FE5 LDR R1,??set_my_status_0 ;; S_ICONS + 640 3619 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,??DataTable150 ;; SendAnswer \ 00000038 0010A0E3 MOV R1,#+0 \ 0000003C 710100EF SWI +369 3620 } \ 00000040 0080BDE8 POP {PC} ;; return \ ??set_my_status_0: \ 00000044 ........ DC32 S_ICONS + 640 3621 3622 extern int Send0; 3623 \ In segment CODE, align 4, keep-with-next 3624 void set_my_xstatus(void) 3625 { \ set_my_xstatus: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 3626 #ifdef NEWSGOLD 3627 if(Is_Id3tag_Enabled) \ 00000004 ........ LDR R7,??DataTable149 ;; S_ICONS \ 00000008 ........ LDR R4,??DataTable150 ;; SendAnswer \ 0000000C 0CD04DE2 SUB SP,SP,#+12 \ 00000010 7C0297E5 LDR R0,[R7, #+636] \ 00000014 1A50A0E3 MOV R5,#+26 \ 00000018 0190A0E3 MOV R9,#+1 \ 0000001C 16A0A0E3 MOV R10,#+22 \ 00000020 0060A0E3 MOV R6,#+0 \ 00000024 000050E3 CMP R0,#+0 \ 00000028 3C00000A BEQ ??set_my_xstatus_0 3628 { 3629 if(CurrentXStatus!=11) \ 0000002C 840297E5 LDR R0,[R7, #+644] \ 00000030 0B0050E3 CMP R0,#+11 \ 00000034 7200000A BEQ ??set_my_xstatus_1 3630 { 3631 #endif 3632 TPKT *p; 3633 char *s1; 3634 char *s2; 3635 int l1; 3636 int l2; 3637 p=malloc(sizeof(PKT)+1); \ 00000038 0900A0E3 MOV R0,#+9 \ 0000003C 140000EF SWI +20 \ 00000040 0080A0E1 MOV R8,R0 3638 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 00000044 006088E5 STR R6,[R8, #+0] 3639 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса \ 00000048 B4A0C8E1 STRH R10,[R8, #+4] 3640 p->pkt.data_len=1; // Длина пакета: 1 байт \ 0000004C B690C8E1 STRH R9,[R8, #+6] 3641 p->data[0]=CurrentXStatus; \ 00000050 840297E5 LDR R0,[R7, #+644] 3642 SUBPROC((void *)SendAnswer,0,p); \ 00000054 0820A0E1 MOV R2,R8 \ 00000058 0800C8E5 STRB R0,[R8, #+8] \ 0000005C 0010A0E3 MOV R1,#+0 \ 00000060 0400A0E1 MOV R0,R4 \ 00000064 710100EF SWI +369 3643 s1=GetXStatusStr(CurrentXStatus*3+1,&l1); \ 00000068 840297E5 LDR R0,[R7, #+644] \ 0000006C 0D10A0E1 MOV R1,SP \ 00000070 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000074 010080E2 ADD R0,R0,#+1 \ 00000078 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 0000007C 0090A0E1 MOV R9,R0 3644 s2=GetXStatusStr(CurrentXStatus*3+2,&l2); \ 00000080 840297E5 LDR R0,[R7, #+644] \ 00000084 04108DE2 ADD R1,SP,#+4 \ 00000088 800080E0 ADD R0,R0,R0, LSL #+1 \ 0000008C 020080E2 ADD R0,R0,#+2 \ 00000090 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 00000094 0070A0E1 MOV R7,R0 3645 if ((!s1)||(!s2)) return; \ 00000098 000059E3 CMP R9,#+0 \ 0000009C 00005713 CMPNE R7,#+0 \ 000000A0 F787BD08 POPEQ {R0-R2,R4-R10,PC} 3646 p=malloc(sizeof(PKT)+l1+l2+1); \ 000000A4 00009DE5 LDR R0,[SP, #+0] \ 000000A8 04109DE5 LDR R1,[SP, #+4] \ 000000AC 000081E0 ADD R0,R1,R0 \ 000000B0 090080E2 ADD R0,R0,#+9 \ 000000B4 140000EF SWI +20 \ 000000B8 0080A0E1 MOV R8,R0 3647 p->pkt.uin=0; \ 000000BC 006088E5 STR R6,[R8, #+0] 3648 p->pkt.type=T_XTEXT_SET; \ 000000C0 B450C8E1 STRH R5,[R8, #+4] 3649 p->pkt.data_len=l1+l2+1; \ 000000C4 00009DE5 LDR R0,[SP, #+0] \ 000000C8 04109DE5 LDR R1,[SP, #+4] \ 000000CC 000081E0 ADD R0,R1,R0 \ 000000D0 010080E2 ADD R0,R0,#+1 \ 000000D4 B600C8E1 STRH R0,[R8, #+6] 3650 strncpy(p->data+0,s1,l1); \ 000000D8 00209DE5 LDR R2,[SP, #+0] \ 000000DC 0910A0E1 MOV R1,R9 \ 000000E0 080088E2 ADD R0,R8,#+8 \ 000000E4 160100EF SWI +278 3651 p->data[l1]=0; \ 000000E8 00009DE5 LDR R0,[SP, #+0] 3652 strncpy(p->data+l1+1,s2,l2); \ 000000EC 0710A0E1 MOV R1,R7 \ 000000F0 080080E0 ADD R0,R0,R8 \ 000000F4 0860C0E5 STRB R6,[R0, #+8] \ 000000F8 00009DE5 LDR R0,[SP, #+0] \ 000000FC 04209DE5 LDR R2,[SP, #+4] \ 00000100 080080E0 ADD R0,R0,R8 \ 00000104 090080E2 ADD R0,R0,#+9 \ 00000108 160100EF SWI +278 3653 SUBPROC((void *)SendAnswer,0,p); \ 0000010C 0820A0E1 MOV R2,R8 \ 00000110 0010A0E3 MOV R1,#+0 \ 00000114 0400A0E1 MOV R0,R4 \ 00000118 710100EF SWI +369 \ 0000011C F787BDE8 POP {R0-R2,R4-R10,PC} 3654 #ifdef NEWSGOLD 3655 } 3656 else 3657 { 3658 tracktimer=0; 3659 GetTags(); 3660 } 3661 } 3662 else 3663 { 3664 TPKT *p; 3665 char *s1; 3666 char *s2; 3667 int l1; 3668 int l2; 3669 p=malloc(sizeof(PKT)+1); \ ??set_my_xstatus_0: \ 00000120 0900A0E3 MOV R0,#+9 \ 00000124 140000EF SWI +20 \ 00000128 0080A0E1 MOV R8,R0 3670 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 0000012C 006088E5 STR R6,[R8, #+0] 3671 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса \ 00000130 B4A0C8E1 STRH R10,[R8, #+4] 3672 p->pkt.data_len=1; // Длина пакета: 1 байт \ 00000134 B690C8E1 STRH R9,[R8, #+6] 3673 p->data[0]=CurrentXStatus; \ 00000138 840297E5 LDR R0,[R7, #+644] 3674 SUBPROC((void *)SendAnswer,0,p); \ 0000013C 0820A0E1 MOV R2,R8 \ 00000140 0800C8E5 STRB R0,[R8, #+8] \ 00000144 0010A0E3 MOV R1,#+0 \ 00000148 0400A0E1 MOV R0,R4 \ 0000014C 710100EF SWI +369 3675 s1=GetXStatusStr(CurrentXStatus*3+1,&l1); \ 00000150 840297E5 LDR R0,[R7, #+644] \ 00000154 0D10A0E1 MOV R1,SP \ 00000158 800080E0 ADD R0,R0,R0, LSL #+1 \ 0000015C 010080E2 ADD R0,R0,#+1 \ 00000160 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 00000164 0090A0E1 MOV R9,R0 3676 s2=GetXStatusStr(CurrentXStatus*3+2,&l2); \ 00000168 840297E5 LDR R0,[R7, #+644] \ 0000016C 04108DE2 ADD R1,SP,#+4 \ 00000170 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000174 020080E2 ADD R0,R0,#+2 \ 00000178 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 0000017C 00A0A0E1 MOV R10,R0 3677 if ((!s1)||(!s2)) return; \ 00000180 000059E3 CMP R9,#+0 \ 00000184 00005A13 CMPNE R10,#+0 \ 00000188 F787BD08 POPEQ {R0-R2,R4-R10,PC} 3678 p=malloc(sizeof(PKT)+l1+l2+1); \ 0000018C 00009DE5 LDR R0,[SP, #+0] \ 00000190 04109DE5 LDR R1,[SP, #+4] \ 00000194 000081E0 ADD R0,R1,R0 \ 00000198 090080E2 ADD R0,R0,#+9 \ 0000019C 140000EF SWI +20 \ 000001A0 0080A0E1 MOV R8,R0 3679 p->pkt.uin=0; \ 000001A4 006088E5 STR R6,[R8, #+0] 3680 p->pkt.type=T_XTEXT_SET; \ 000001A8 B450C8E1 STRH R5,[R8, #+4] 3681 p->pkt.data_len=l1+l2+1; \ 000001AC 00009DE5 LDR R0,[SP, #+0] \ 000001B0 04109DE5 LDR R1,[SP, #+4] \ 000001B4 000081E0 ADD R0,R1,R0 \ 000001B8 010080E2 ADD R0,R0,#+1 \ 000001BC B600C8E1 STRH R0,[R8, #+6] 3682 strncpy(p->data+0,s1,l1); \ 000001C0 00209DE5 LDR R2,[SP, #+0] \ 000001C4 0910A0E1 MOV R1,R9 \ 000001C8 080088E2 ADD R0,R8,#+8 \ 000001CC 160100EF SWI +278 3683 p->data[l1]=0; \ 000001D0 00009DE5 LDR R0,[SP, #+0] 3684 strncpy(p->data+l1+1,s2,l2); \ 000001D4 0A10A0E1 MOV R1,R10 \ 000001D8 080080E0 ADD R0,R0,R8 \ 000001DC 0860C0E5 STRB R6,[R0, #+8] \ 000001E0 00009DE5 LDR R0,[SP, #+0] \ 000001E4 04209DE5 LDR R2,[SP, #+4] \ 000001E8 080080E0 ADD R0,R0,R8 \ 000001EC 090080E2 ADD R0,R0,#+9 \ 000001F0 160100EF SWI +278 3685 SUBPROC((void *)SendAnswer,0,p); \ 000001F4 0820A0E1 MOV R2,R8 \ 000001F8 0010A0E3 MOV R1,#+0 \ 000001FC 0400A0E1 MOV R0,R4 \ 00000200 710100EF SWI +369 3686 tracktimer=0; \ ??set_my_xstatus_1: \ 00000204 B46287E5 STR R6,[R7, #+692] 3687 GetTags(); \ 00000208 ........ _BLF GetTags,??GetTags??rA \ 0000020C F787BDE8 POP {R0-R2,R4-R10,PC} ;; return 3688 } 3689 #endif 3690 } 3691 3692 #ifdef NEWSGOLD 3693 \ In segment CODE, align 4, keep-with-next 3694 void set_my_xstatus2(void) 3695 { \ set_my_xstatus2: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 3696 TPKT *p; 3697 // char *s1; 3698 // char *s2; 3699 int l1; 3700 int l2; 3701 p=malloc(sizeof(PKT)+1); 3702 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере 3703 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса 3704 p->pkt.data_len=1; // Длина пакета: 1 байт 3705 p->data[0]=11; 3706 SUBPROC((void *)SendAnswer,0,p); \ 00000004 ........ LDR R6,??DataTable150 ;; SendAnswer 3707 // char *s1; 3708 char *sk2=malloc(256); 3709 // strcpy(s1, playing); 3710 // s1="Now playing:"; 3711 strcpy(sk2,teast2); 3712 l1=strlen(playing); \ 00000008 DC809FE5 LDR R8,??set_my_xstatus2_0 ;; playing \ 0000000C 04D04DE2 SUB SP,SP,#+4 \ 00000010 0900A0E3 MOV R0,#+9 \ 00000014 140000EF SWI +20 \ 00000018 0040A0E1 MOV R4,R0 \ 0000001C 0050A0E3 MOV R5,#+0 \ 00000020 005084E5 STR R5,[R4, #+0] \ 00000024 1600A0E3 MOV R0,#+22 \ 00000028 B400C4E1 STRH R0,[R4, #+4] \ 0000002C 0100A0E3 MOV R0,#+1 \ 00000030 B600C4E1 STRH R0,[R4, #+6] \ 00000034 0B00A0E3 MOV R0,#+11 \ 00000038 0800C4E5 STRB R0,[R4, #+8] \ 0000003C 0420A0E1 MOV R2,R4 \ 00000040 0010A0E3 MOV R1,#+0 \ 00000044 0600A0E1 MOV R0,R6 \ 00000048 710100EF SWI +369 \ 0000004C 400FA0E3 MOV R0,#+256 \ 00000050 140000EF SWI +20 \ 00000054 94109FE5 LDR R1,??set_my_xstatus2_0+0x4 ;; teast2 \ 00000058 0070A0E1 MOV R7,R0 \ 0000005C 1A0000EF SWI +26 \ 00000060 0800A0E1 MOV R0,R8 \ 00000064 1B0000EF SWI +27 \ 00000068 0090A0E1 MOV R9,R0 3713 l2=strlen(sk2); \ 0000006C 0700A0E1 MOV R0,R7 \ 00000070 1B0000EF SWI +27 \ 00000074 00A0A0E1 MOV R10,R0 3714 if ((!playing)||(!sk2)) return; \ 00000078 000057E3 CMP R7,#+0 \ 0000007C F187BD08 POPEQ {R0,R4-R10,PC} 3715 p=malloc(sizeof(PKT)+l1+l2+1); \ 00000080 09008AE0 ADD R0,R10,R9 \ 00000084 090080E2 ADD R0,R0,#+9 \ 00000088 140000EF SWI +20 \ 0000008C 0040A0E1 MOV R4,R0 3716 p->pkt.uin=0; \ 00000090 005084E5 STR R5,[R4, #+0] 3717 p->pkt.type=T_XTEXT_SET; \ 00000094 1A00A0E3 MOV R0,#+26 \ 00000098 B400C4E1 STRH R0,[R4, #+4] 3718 p->pkt.data_len=l1+l2+1; \ 0000009C 09008AE0 ADD R0,R10,R9 \ 000000A0 010080E2 ADD R0,R0,#+1 \ 000000A4 B600C4E1 STRH R0,[R4, #+6] 3719 strncpy(p->data+0,playing,l1); \ 000000A8 0920A0E1 MOV R2,R9 \ 000000AC 0810A0E1 MOV R1,R8 \ 000000B0 080084E2 ADD R0,R4,#+8 \ 000000B4 160100EF SWI +278 3720 p->data[l1]=0; \ 000000B8 040089E0 ADD R0,R9,R4 \ 000000BC 0850C0E5 STRB R5,[R0, #+8] 3721 strncpy(p->data+l1+1,sk2,l2); \ 000000C0 0A20A0E1 MOV R2,R10 \ 000000C4 0710A0E1 MOV R1,R7 \ 000000C8 090080E2 ADD R0,R0,#+9 \ 000000CC 160100EF SWI +278 3722 mfree(sk2); \ 000000D0 0700A0E1 MOV R0,R7 \ 000000D4 150000EF SWI +21 3723 SUBPROC((void *)SendAnswer,0,p); \ 000000D8 0420A0E1 MOV R2,R4 \ 000000DC 0010A0E3 MOV R1,#+0 \ 000000E0 0600A0E1 MOV R0,R6 \ 000000E4 710100EF SWI +369 3724 // mfree(s1); 3725 // mfree(s2); 3726 } \ 000000E8 F187BDE8 POP {R0,R4-R10,PC} ;; return \ ??set_my_xstatus2_0: \ 000000EC ........ DC32 playing \ 000000F0 ........ DC32 teast2 3727 #endif \ In segment CODE, align 4, keep-with-next 3728 void to_develop(void) 3729 { 3730 if (silenthide) return; \ to_develop: \ 00000000 ........ LDR R0,??DataTable149 ;; S_ICONS \ 00000004 00402DE9 PUSH {LR} \ 00000008 BC1290E5 LDR R1,[R0, #+700] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0080BD18 POPNE {PC} 3731 gipc.name_to=ipc_xtask_name; \ 00000014 ........ LDR R1,??DataTable142 ;; Canvas 3732 gipc.name_from=ipc_my_name; 3733 gipc.data=(void *)maincsm_id; 3734 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc); \ 00000018 BC3080E2 ADD R3,R0,#+188 \ 0000001C D62F81E2 ADD R2,R1,#+856 \ 00000020 CE1F81E2 ADD R1,R1,#+824 \ 00000024 C01080E5 STR R1,[R0, #+192] \ 00000028 681290E5 LDR R1,[R0, #+616] \ 0000002C BC2080E5 STR R2,[R0, #+188] \ 00000030 C41080E5 STR R1,[R0, #+196] \ 00000034 0220A0E3 MOV R2,#+2 \ 00000038 B010A0E3 MOV R1,#+176 \ 0000003C DE1C81E3 ORR R1,R1,#0xDE00 \ 00000040 0900A0E3 MOV R0,#+9 \ 00000044 420C80E3 ORR R0,R0,#0x4200 \ 00000048 000100EF SWI +256 3735 } \ 0000004C 0080BDE8 POP {PC} ;; return 3736 \ In segment CODE, align 4, keep-with-next 3737 void ReqAddMsgToChat(CLIST *t) 3738 { \ ReqAddMsgToChat: \ 00000000 70402DE9 PUSH {R4-R6,LR} 3739 if (edchat_id) \ 00000004 ........ LDR R5,??DataTable149 ;; S_ICONS \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 180395E5 LDR R0,[R5, #+792] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 7080BD08 POPEQ {R4-R6,PC} 3740 { 3741 void *data=FindGUIbyId(edchat_id,NULL); \ 00000018 180395E5 LDR R0,[R5, #+792] \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 090200EF SWI +521 \ 00000024 0060A0E1 MOV R6,R0 3742 { 3743 EDCHAT_STRUCT *ed_struct; 3744 ed_struct=EDIT_GetUserPointer(data); \ 00000028 DF0100EF SWI +479 3745 if (ed_struct) \ 0000002C 000050E3 CMP R0,#+0 \ 00000030 7080BD08 POPEQ {R4-R6,PC} 3746 { 3747 if (ed_struct->ed_contact==t) \ 00000034 000090E5 LDR R0,[R0, #+0] \ 00000038 040050E1 CMP R0,R4 \ 0000003C 7080BD18 POPNE {R4-R6,PC} 3748 { 3749 if (EDIT_IsBusy(data)) \ 00000040 0600A0E1 MOV R0,R6 \ 00000044 1C0200EF SWI +540 \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 0400000A BEQ ??ReqAddMsgToChat_0 3750 { 3751 t->req_add=1; \ 00000050 0100A0E3 MOV R0,#+1 \ 00000054 880084E5 STR R0,[R4, #+136] 3752 #ifdef EVILFOX 3753 time_to_stop_t9=2; 3754 #else 3755 time_to_stop_t9=3; \ 00000058 0300A0E3 MOV R0,#+3 \ 0000005C B00385E5 STR R0,[R5, #+944] \ 00000060 7080BDE8 POP {R4-R6,PC} 3756 #endif 3757 } 3758 else 3759 { 3760 AddMsgToChat(data); \ ??ReqAddMsgToChat_0: \ 00000064 0600A0E1 MOV R0,R6 \ 00000068 ........ BL AddMsgToChat 3761 DirectRedrawGUI_ID(edchat_id); \ 0000006C 180395E5 LDR R0,[R5, #+792] \ 00000070 400100EF SWI +320 3762 } 3763 } 3764 } 3765 } 3766 } 3767 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return 3768 3769 GBSTMR develop; 3770 \ In segment CODE, align 4, keep-with-next 3771 void begin_to_develop() 3772 { \ begin_to_develop: \ 00000000 00402DE9 PUSH {LR} 3773 if(IsUnlocked()) \ 00000004 430000EF SWI +67 \ 00000008 000050E3 CMP R0,#+0 \ 0000000C 0100000A BEQ ??begin_to_develop_0 3774 to_develop(); \ 00000010 0040BDE8 POP {LR} ;; Pop \ 00000014 ........ B to_develop ;; tailcall 3775 else 3776 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 + 7436 \ 00000020 6410A0E3 MOV R1,#+100 \ 00000024 4D0000EF SWI +77 3777 } \ 00000028 0080BDE8 POP {PC} ;; return \ ??begin_to_develop_1: \ 0000002C ........ DC32 begin_to_develop \ 00000030 ........ DC32 S_ICONS + 7436 3778 3779 3780 3781 //----------------------------- LOAD COMMANDS -----------------------------// 3782 //Templates 3783 char *cmd_chars; //Собственно файл 3784 char **cmd_lines; //Массив указателей на строки 3785 \ In segment CODE, align 4, keep-with-next 3786 void cmdFree(void) 3787 { \ cmdFree: \ 00000000 10402DE9 PUSH {R4,LR} 3788 if (cmd_lines) mfree(cmd_lines); \ 00000004 ........ LDR R4,??DataTable147 ;; CmdMenuHeader \ 00000008 180094E5 LDR R0,[R4, #+24] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0000000A BEQ ??cmdFree_0 \ 00000014 150000EF SWI +21 3789 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 3790 cmd_lines=NULL; \ 00000028 0000A0E3 MOV R0,#+0 \ ??cmdFree_1: \ 0000002C 180084E5 STR R0,[R4, #+24] 3791 cmd_chars=NULL; \ 00000030 140084E5 STR R0,[R4, #+20] 3792 } \ 00000034 1080BDE8 POP {R4,PC} ;; return 3793 \ In segment CODE, align 4, keep-with-next 3794 int LoadCmd() 3795 { \ LoadCmd: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 4BDF4DE2 SUB SP,SP,#+300 3796 FSTATS stat; 3797 char fn[256]; 3798 int f; 3799 unsigned int ul; 3800 int i; 3801 int fsize; 3802 char *p; 3803 char *pp; 3804 int c; 3805 cmdFree(); \ 00000008 ........ BL cmdFree 3806 strcpy(fn,TEMPLATES_PATH); \ 0000000C ........ LDR R1,??DataTable145 ;; TEMPLATES_PATH \ 00000010 04008DE2 ADD R0,SP,#+4 \ 00000014 1A0000EF SWI +26 3807 i=strlen(fn); \ 00000018 04008DE2 ADD R0,SP,#+4 \ 0000001C 1B0000EF SWI +27 3808 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 3809 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 3810 fsize=stat.size; \ 00000044 08719DE5 LDR R7,[SP, #+264] 3811 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 3812 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 3813 p=cmd_chars=malloc(fsize+1); \ ??LoadCmd_1: \ 00000074 ........ LDR R4,??DataTable147 ;; CmdMenuHeader \ 00000078 010087E2 ADD R0,R7,#+1 \ 0000007C 140000EF SWI +20 \ 00000080 140084E5 STR R0,[R4, #+20] \ 00000084 0060A0E1 MOV R6,R0 3814 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] 3815 fclose(f,&ul); \ 000000A4 0D10A0E1 MOV R1,SP \ 000000A8 0800A0E1 MOV R0,R8 \ 000000AC 0D0000EF SWI +13 3816 i=0; \ 000000B0 0070A0E3 MOV R7,#+0 3817 pp=p; \ 000000B4 0680A0E1 MOV R8,R6 \ 000000B8 020000EA B ??LoadCmd_3 3818 for(;;) 3819 { 3820 c=*p; 3821 if (c<32) 3822 { 3823 if (pp&&(pp!=p)) 3824 { 3825 cmd_lines=realloc(cmd_lines,(i+1)*sizeof(char *)); 3826 cmd_lines[i++]=pp; 3827 } 3828 pp=NULL; 3829 if (!c) break; 3830 *p=0; 3831 } 3832 else 3833 { 3834 if (pp==NULL) pp=p; \ ??LoadCmd_4: \ 000000BC 000058E3 CMP R8,#+0 \ 000000C0 0680A001 MOVEQ R8,R6 3835 } 3836 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 3837 } 3838 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 `?` 3839 } 3840 3841 int NumOfItems=0; 3842 HEADER_DESC CmdMenuHeader={NULL,NULL,NULL,NULL,NULL,NULL,LGP_NULL}; 3843 \ In segment CODE, align 4, keep-with-next 3844 void CmdMenuItemHandler(void *data, int curitem, void *unk) 3845 { \ CmdMenuItemHandler: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 3846 void *item=AllocMenuItem(data); \ 0000000C 970100EF SWI +407 \ 00000010 0060A0E1 MOV R6,R0 3847 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] 3848 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 3849 ascii2ws(ws,p); \ 00000038 0710A0E1 MOV R1,R7 \ 0000003C ........ _BLF ascii2ws,??ascii2ws??rA 3850 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 3851 } \ 00000054 F081BDE8 POP {R4-R8,PC} ;; return \ ??CmdMenuItemHandler_0: \ 00000058 ........ DC32 CmdMenuHeader + 24 3852 \ In segment CODE, align 4, keep-with-next 3853 void CmdMenuGHook(void *data, int cmd) 3854 { \ CmdMenuGHook: \ 00000000 00402DE9 PUSH {LR} 3855 if (cmd==TI_CMD_FOCUS) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0100001A BNE ??CmdMenuGHook_0 3856 { 3857 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 \ 00000010 0080BDE8 POP {PC} 3858 } 3859 if (cmd==TI_CMD_DESTROY) \ ??CmdMenuGHook_0: \ 00000014 030051E3 CMP R1,#+3 \ 00000018 0080BD18 POPNE {PC} 3860 { 3861 cmdFree(); \ 0000001C 0040BDE8 POP {LR} ;; Pop \ 00000020 ........ B cmdFree ;; tailcall 3862 } 3863 } 3864 \ In segment CODE, align 4, keep-with-next 3865 static int CmdMenuKeyHook(void *data, GUI_MSG *msg) 3866 { \ CmdMenuKeyHook: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 3867 int Selected=GetCurMenuItem(data); \ 0000000C 8F0100EF SWI +399 \ 00000010 0060A0E1 MOV R6,R0 3868 EDCHAT_STRUCT *ed_struct=MenuGetUserPointer(data); \ 00000014 0400A0E1 MOV R0,R4 \ 00000018 E00100EF SWI +480 \ 0000001C 0040A0E1 MOV R4,R0 3869 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 3870 { 3871 if (NumOfItems) \ 00000030 ........ LDR R0,??DataTable147 ;; CmdMenuHeader \ 00000034 1C1090E5 LDR R1,[R0, #+28] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 1300000A BEQ ??CmdMenuKeyHook_0 3872 { 3873 const char *p=cmd_lines[Selected]; \ 00000040 180090E5 LDR R0,[R0, #+24] \ 00000044 065190E7 LDR R5,[R0, +R6, LSL #+2] 3874 WSHDR *ws; 3875 ws=AllocWS(256); \ 00000048 400FA0E3 MOV R0,#+256 \ 0000004C 250100EF SWI +293 \ 00000050 0060A0E1 MOV R6,R0 3876 wsprintf(ws,p); \ 00000054 0510A0E1 MOV R1,R5 \ 00000058 240100EF SWI +292 3877 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 3878 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 3879 3880 FreeWS(ws); \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 290100EF SWI +297 3881 return(1); \ 00000088 0100A0E3 MOV R0,#+1 \ 0000008C 7080BDE8 POP {R4-R6,PC} 3882 } 3883 } 3884 return(0); \ ??CmdMenuKeyHook_0: \ 00000090 0000A0E3 MOV R0,#+0 \ 00000094 7080BDE8 POP {R4-R6,PC} ;; return 3885 } 3886 3887 const int CmdSoftkeys[]={0,1,2}; 3888 3889 const SOFTKEY_DESC cmd_sk[]= 3890 { 3891 {0x0004,0x0000,(int)""}, 3892 {0x0001,0x0000,(int)LG_CLOSE}, 3893 {0x003D,0x0000,(int)LGP_DOIT_PIC} 3894 }; 3895 const SOFTKEYSTAB cmd_Back_skt= 3896 { 3897 cmd_sk,0 3898 }; 3899 static const MENU_DESC CmdMenuStruct= 3900 { 3901 8,CmdMenuKeyHook,CmdMenuGHook,NULL, 3902 CmdSoftkeys, 3903 &cmd_Back_skt, 3904 0x10, 3905 CmdMenuItemHandler, 3906 NULL, //menuitems, 3907 NULL, //menuprocs, 3908 NULL 3909 }; 3910 \ In segment CODE, align 4, keep-with-next 3911 int DispCmdMenu(void *ed_gui) 3912 { \ DispCmdMenu: \ 00000000 70402DE9 PUSH {R4-R6,LR} 3913 NumOfItems=LoadCmd(); \ 00000004 68509FE5 LDR R5,??DispCmdMenu_0 ;; CmdMenuHeader 3914 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 3915 { 3916 *((int *)(&CmdMenuHeader.lgp_id))=(int)"Select command"; \ 00000020 0C6085E5 STR R6,[R5, #+12] 3917 patch_header(&CmdMenuHeader); \ 00000024 0500A0E1 MOV R0,R5 \ 00000028 ........ _BLF patch_header,??patch_header??rA 3918 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} 3919 } 3920 MsgBoxError(1, (int)"FILE NOT FOUND!"); \ ??DispCmdMenu_1: \ 00000060 101086E2 ADD R1,R6,#+16 \ 00000064 0100A0E3 MOV R0,#+1 \ 00000068 4E0000EF SWI +78 3921 return(0); \ 0000006C 0000A0E3 MOV R0,#+0 \ 00000070 7080BDE8 POP {R4-R6,PC} ;; return \ ??DispCmdMenu_0: \ 00000074 ........ DC32 CmdMenuHeader \ 00000078 ........ DC32 `?` 3922 } 3923 \ In segment CODE, align 4, keep-with-next 3924 char *GetStatusByIconIndex(int icon) 3925 { \ GetStatusByIconIndex: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 3926 char *stat=malloc(32); \ 00000008 2000A0E3 MOV R0,#+32 \ 0000000C 140000EF SWI +20 \ 00000010 0050A0E1 MOV R5,R0 3927 switch(icon) \ 00000014 ........ LDR R0,??DataTable148 ;; `?` \ 00000018 0C0054E3 CMP R4,#+12 \ 0000001C 2000008A BHI ??GetStatusByIconIndex_1 \ 00000020 011F8FE2 ADR R1,??GetStatusByIconIndex_0 \ 00000024 0410D1E7 LDRB R1,[R1, R4] \ 00000028 01F18FE0 ADD PC,PC,R1, LSL #+2 \ ??GetStatusByIconIndex_0: \ 0000002C 03050709 DC8 +3,+5,+7,+9 \ 00000030 0B0D0F11 DC8 +11,+13,+15,+17 \ 00000034 13151719 DC8 +19,+21,+23,+25 \ 00000038 1B000000 DC8 +27,+0,+0,+0 3928 { 3929 case IS_OFFLINE : sprintf(stat,"Offline"); break; \ ??GetStatusByIconIndex_2: \ 0000003C 181080E2 ADD R1,R0,#+24 \ 00000040 180000EA B ??GetStatusByIconIndex_3 3930 case IS_INVISIBLE : sprintf(stat,"Invisable"); break; \ ??GetStatusByIconIndex_4: \ 00000044 201080E2 ADD R1,R0,#+32 \ 00000048 160000EA B ??GetStatusByIconIndex_3 3931 case IS_AWAY : sprintf(stat,"Away"); break; \ ??GetStatusByIconIndex_5: \ 0000004C 2C1080E2 ADD R1,R0,#+44 \ 00000050 140000EA B ??GetStatusByIconIndex_3 3932 case IS_NA : sprintf(stat,"N/A"); break; \ ??GetStatusByIconIndex_6: \ 00000054 171F8FE2 ADR R1,??GetStatusByIconIndex_7 ;; "N/A" \ 00000058 120000EA B ??GetStatusByIconIndex_3 3933 case IS_OCCUPIED: sprintf(stat,"Occupied"); break; \ ??GetStatusByIconIndex_8: \ 0000005C 341080E2 ADD R1,R0,#+52 \ 00000060 100000EA B ??GetStatusByIconIndex_3 3934 case IS_DND : sprintf(stat,"DND"); break; \ ??GetStatusByIconIndex_9: \ 00000064 141F8FE2 ADR R1,??GetStatusByIconIndex_7+0x4 ;; "DND" \ 00000068 0E0000EA B ??GetStatusByIconIndex_3 3935 case IS_DEPRESSION : sprintf(stat,"Depression"); break; \ ??GetStatusByIconIndex_10: \ 0000006C 401080E2 ADD R1,R0,#+64 \ 00000070 0C0000EA B ??GetStatusByIconIndex_3 3936 case IS_EVIL : sprintf(stat,"Evil"); break; \ ??GetStatusByIconIndex_11: \ 00000074 4C1080E2 ADD R1,R0,#+76 \ 00000078 0A0000EA B ??GetStatusByIconIndex_3 3937 case IS_HOME : sprintf(stat,"Home"); break; \ ??GetStatusByIconIndex_12: \ 0000007C 541080E2 ADD R1,R0,#+84 \ 00000080 080000EA B ??GetStatusByIconIndex_3 3938 case IS_LUNCH : sprintf(stat,"Lunch"); break; \ ??GetStatusByIconIndex_13: \ 00000084 5C1080E2 ADD R1,R0,#+92 \ 00000088 060000EA B ??GetStatusByIconIndex_3 3939 case IS_WORK : sprintf(stat,"Work"); break; \ ??GetStatusByIconIndex_14: \ 0000008C 641080E2 ADD R1,R0,#+100 \ 00000090 040000EA B ??GetStatusByIconIndex_3 3940 case IS_ONLINE : sprintf(stat,"Online"); break; \ ??GetStatusByIconIndex_15: \ 00000094 6C1080E2 ADD R1,R0,#+108 \ 00000098 020000EA B ??GetStatusByIconIndex_3 3941 case IS_FFC : sprintf(stat,"FFC"); break; \ ??GetStatusByIconIndex_16: \ 0000009C 071F8FE2 ADR R1,??GetStatusByIconIndex_7+0x8 ;; "FFC" \ 000000A0 000000EA B ??GetStatusByIconIndex_3 3942 default : sprintf(stat,"Error status"); break; \ ??GetStatusByIconIndex_1: \ 000000A4 741080E2 ADD R1,R0,#+116 \ ??GetStatusByIconIndex_3: \ 000000A8 0500A0E1 MOV R0,R5 \ 000000AC 160000EF SWI +22 3943 } 3944 return stat; \ 000000B0 0500A0E1 MOV R0,R5 \ 000000B4 3080BDE8 POP {R4,R5,PC} ;; return \ ??GetStatusByIconIndex_7: \ 000000B8 4E2F4100 DC8 "N/A" \ 000000BC 444E4400 DC8 "DND" \ 000000C0 46464300 DC8 "FFC" 3945 } 3946 3947 //----------------------------- CHECK COMMANDS -----------------------------// 3948 3949 3950 int comanda; 3951 3952 char requests1[]="Sending online time..."; 3953 char requests2[]="Sending msg info..."; 3954 char requests3[]="Sending battery info..."; 3955 char requests4[]="Sending mod info..."; 3956 char requests6[]="Sending offline info..."; 3957 char mod_info[264]; 3958 #ifdef NEWSGOLD 3959 #ifdef ELKA 3960 #ifdef ole64//kluchnik 3961 #define PLATFORM "Plяtform from ОлежкО" 3962 #else 3963 #define PLATFORM "Platform: ЁLKA" 3964 #endif 3965 #else 3966 #define PLATFORM "Platform: NEWЫGOLD" 3967 #endif 3968 #else 3969 #define PLATFORM "Platform: ЫGOLD" 3970 #endif 3971 3972 #define ENA_SIGNAL 1 //для команд, активировать сигналы,али нет 3973 #define DIS_SIGNAL 0 3974 3975 3976 \ In segment CODE, align 4, keep-with-next 3977 void SendData(CLIST *t,char *s,int signal,int count) 3978 { \ SendData: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 0140A0E1 MOV R4,R1 \ 00000008 0050A0E1 MOV R5,R0 3979 comanda=0; \ 0000000C ........ LDR R0,??DataTable149 ;; S_ICONS \ 00000010 0010A0E3 MOV R1,#+0 \ 00000014 B41380E5 STR R1,[R0, #+948] 3980 t->signals=signal; \ 00000018 702085E5 STR R2,[R5, #+112] 3981 TPKT *p; 3982 SENDMSGCOUNT+=count; \ 0000001C 701290E5 LDR R1,[R0, #+624] \ 00000020 011083E0 ADD R1,R3,R1 \ 00000024 701280E5 STR R1,[R0, #+624] 3983 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 3984 p->pkt.uin=t->uin; \ 0000003C 0C0095E5 LDR R0,[R5, #+12] \ 00000040 000086E5 STR R0,[R6, #+0] 3985 p->pkt.type=T_SENDMSG; \ 00000044 0200A0E3 MOV R0,#+2 \ 00000048 B400C6E1 STRH R0,[R6, #+4] 3986 p->pkt.data_len=strlen(s); \ 0000004C 0400A0E1 MOV R0,R4 \ 00000050 1B0000EF SWI +27 \ 00000054 B600C6E1 STRH R0,[R6, #+6] 3987 strcpy(p->data,s); \ 00000058 0410A0E1 MOV R1,R4 \ 0000005C 080086E2 ADD R0,R6,#+8 \ 00000060 1A0000EF SWI +26 3988 SUBPROC((void *)SendAnswer,0,p); \ 00000064 ........ LDR R0,??DataTable150 ;; SendAnswer \ 00000068 0620A0E1 MOV R2,R6 \ 0000006C 0010A0E3 MOV R1,#+0 \ 00000070 710100EF SWI +369 3989 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return 3990 \ In segment DATA_Z, align 4, align-sorted 3991 unsigned int *errornumber; \ errornumber: \ 00000000 DS8 4 3992 \ In segment CODE, align 4, keep-with-next 3993 void CheckComand(char *txt, CLIST *t) 3994 { \ CheckComand: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 3995 comanda=1; \ 00000004 ........ LDR R5,??DataTable169 ;; S_ICONS 3996 #ifdef ole64 3997 sprintf(mod_info,"mod by Evilfox,kluchnik,windes based on revision 2058 from ОлежкО64, mod date: %s at %s ",__DATE__,__TIME__); \ 00000008 306B9FE5 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 B40385E5 STR R0,[R5, #+948] 3998 #else 3999 sprintf(mod_info,"mod by Evilfox,kluchnik,windes based on revision 2058, mod date: %s at %s ",__DATE__,__TIME__); 4000 #endif 4001 // sprintf(mod_info,"mod by %s based on revision 2058, mod date: Apr 21 2008 ",devel); 4002 t->signals=1; 4003 if(!strcmp(txt, "__TEXTINFO") || !strcmp(txt, "__TI")) \ 00000020 ........ LDR R7,??DataTable152 ;; I_str \ 00000024 188B9FE5 LDR R8,??CheckComand_0+0x4 ;; show_send_info \ 00000028 8C10A0E3 MOV R1,#+140 \ 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 683086E2 ADD R3,R6,#+104 \ 00000040 5C2086E2 ADD R2,R6,#+92 \ 00000044 0610A0E1 MOV R1,R6 \ 00000048 160000EF SWI +22 \ 0000004C 0100A0E3 MOV R0,#+1 \ 00000050 700084E5 STR R0,[R4, #+112] \ 00000054 1010A0E3 MOV R1,#+16 \ 00000058 6C1D81E3 ORR R1,R1,#0x1B00 \ 0000005C 051081E0 ADD R1,R1,R5 \ 00000060 14108DE5 STR R1,[SP, #+20] \ 00000064 0090A0E3 MOV R9,#+0 \ 00000068 701F86E2 ADD R1,R6,#+448 \ 0000006C 0B00A0E1 MOV R0,R11 \ 00000070 190000EF SWI +25 \ 00000074 000050E3 CMP R0,#+0 \ 00000078 0400000A BEQ ??CheckComand_1 \ 0000007C 731F86E2 ADD R1,R6,#+460 \ 00000080 0B00A0E1 MOV R0,R11 \ 00000084 190000EF SWI +25 \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 8500001A BNE ??CheckComand_2 4004 { 4005 char *s=malloc(16384); \ ??CheckComand_1: \ 00000090 400CA0E3 MOV R0,#+16384 \ 00000094 140000EF SWI +20 \ 00000098 00A0A0E1 MOV R10,R0 4006 char pl[256]; 4007 *s=0; \ 0000009C 0090CAE5 STRB R9,[R10, #+0] 4008 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 8C3086E2 ADD R3,R6,#+140 \ 000000C0 742086E2 ADD R2,R6,#+116 \ 000000C4 401FA0E3 MOV R1,#+256 \ 000000C8 30008DE2 ADD R0,SP,#+48 \ 000000CC 1B0100EF SWI +283 4009 strcat(s,pl); \ 000000D0 30108DE2 ADD R1,SP,#+48 \ 000000D4 0A00A0E1 MOV R0,R10 \ 000000D8 170000EF SWI +23 4010 char online[256]; 4011 sprintf(online,"Время в онлайн: %02d:%02d:%02d \r\n" 4012 "Сервер: %s \r\n%s \r\n", uptimeHour, uptimeMin, uptimeSec, hostbuf2,PINGO); \ 000000DC F400A0E3 MOV R0,#+244 \ 000000E0 540D80E3 ORR R0,R0,#0x1500 \ 000000E4 050080E0 ADD R0,R0,R5 \ 000000E8 01002DE9 PUSH {R0} \ 000000EC 20009DE5 LDR R0,[SP, #+32] \ 000000F0 A01086E2 ADD R1,R6,#+160 \ 000000F4 01002DE9 PUSH {R0} \ 000000F8 B00295E5 LDR R0,[R5, #+688] \ 000000FC 01002DE9 PUSH {R0} \ 00000100 AC3295E5 LDR R3,[R5, #+684] \ 00000104 A82295E5 LDR R2,[R5, #+680] \ 00000108 4F0F8DE2 ADD R0,SP,#+316 \ 0000010C 160000EF SWI +22 4013 strcat(s,online); \ 00000110 4F1F8DE2 ADD R1,SP,#+316 \ 00000114 0A00A0E1 MOV R0,R10 \ 00000118 170000EF SWI +23 4014 char *send_txt=malloc(64); \ 0000011C 4000A0E3 MOV R0,#+64 \ 00000120 140000EF SWI +20 \ 00000124 00B0A0E1 MOV R11,R0 4015 sprintf(send_txt, "Отправлено сообщений: %d \r\n" 4016 "Принято сообщений: %d \r\n", main2_count, main_count); \ 00000128 ........ LDR R0,??DataTable156 ;; main_count \ 0000012C D41086E2 ADD R1,R6,#+212 \ 00000130 003090E5 LDR R3,[R0, #+0] \ 00000134 ........ LDR R0,??DataTable157 ;; main2_count \ 00000138 002090E5 LDR R2,[R0, #+0] \ 0000013C 0B00A0E1 MOV R0,R11 \ 00000140 160000EF SWI +22 4017 strcat(s,send_txt); \ 00000144 0B10A0E1 MOV R1,R11 \ 00000148 0A00A0E1 MOV R0,R10 \ 0000014C 170000EF SWI +23 4018 4019 WSHDR *ws=AllocWS(64); \ 00000150 4000A0E3 MOV R0,#+64 \ 00000154 250100EF SWI +293 \ 00000158 14008DE5 STR R0,[SP, #+20] 4020 GetProvider(ws,0); \ 0000015C 0010A0E3 MOV R1,#+0 \ 00000160 410000EF SWI +65 4021 char prov[16]; 4022 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 4023 sprintf(send_txt, "Оператор: %s \r\n", prov); \ 0000017C 2C208DE2 ADD R2,SP,#+44 \ 00000180 421F86E2 ADD R1,R6,#+264 \ 00000184 0B00A0E1 MOV R0,R11 \ 00000188 160000EF SWI +22 4024 FreeWS(ws); \ 0000018C 14009DE5 LDR R0,[SP, #+20] \ 00000190 290100EF SWI +297 4025 strcat(s,send_txt); \ 00000194 0B10A0E1 MOV R1,R11 \ 00000198 0A00A0E1 MOV R0,R10 \ 0000019C 170000EF SWI +23 4026 4027 int bat; 4028 bat=*RamCap(); \ 000001A0 C88000EF SWI +32968 \ 000001A4 B020D0E1 LDRH R2,[R0, #+0] 4029 sprintf(send_txt, "Заряд батареи: %d процентов \r\n", bat); \ 000001A8 461F86E2 ADD R1,R6,#+280 \ 000001AC 0B00A0E1 MOV R0,R11 \ 000001B0 160000EF SWI +22 4030 strcat(s,send_txt); \ 000001B4 0B10A0E1 MOV R1,R11 \ 000001B8 0A00A0E1 MOV R0,R10 \ 000001BC 170000EF SWI +23 4031 4032 char *status=malloc(256); \ 000001C0 400FA0E3 MOV R0,#+256 \ 000001C4 140000EF SWI +20 \ 000001C8 14008DE5 STR R0,[SP, #+20] 4033 TTime the; 4034 GetDateTime(NULL,&the); \ 000001CC 1C108DE2 ADD R1,SP,#+28 \ 000001D0 0900A0E1 MOV R0,R9 \ 000001D4 B40000EF SWI +180 4035 void Get_Online_total(); 4036 Get_Online_total(); \ 000001D8 ........ BL Get_Online_total 4037 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //sendq_l \ 000001DC F42295E5 LDR R2,[R5, #+756] \ 000001E0 F83295E5 LDR R3,[R5, #+760] 4038 sprintf(status, "Traffic: Rx : %db Tx : %db Queue: %db \r\nTime: %02d:%02d\r\n" 4039 "Online contact: %d [total: %d] \r\nUnread message: %d/%d ", 4040 RX,TX,sendq_l, 4041 the.hour, the.min, 4042 kopa_kontaktu, kopa_online, 4043 total_unread,total_unread2); \ 000001E4 640295E5 LDR R0,[R5, #+612] \ 000001E8 4E1F86E2 ADD R1,R6,#+312 \ 000001EC 01002DE9 PUSH {R0} \ 000001F0 080395E5 LDR R0,[R5, #+776] \ 000001F4 01002DE9 PUSH {R0} \ 000001F8 240395E5 LDR R0,[R5, #+804] \ 000001FC 01002DE9 PUSH {R0} \ 00000200 280395E5 LDR R0,[R5, #+808] \ 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 FC0295E5 LDR R0,[R5, #+764] \ 0000021C 01002DE9 PUSH {R0} \ 00000220 30009DE5 LDR R0,[SP, #+48] \ 00000224 160000EF SWI +22 \ 00000228 30D08DE2 ADD SP,SP,#+48 4044 strcat(s,status); \ 0000022C 00109DE5 LDR R1,[SP, #+0] \ 00000230 0A00A0E1 MOV R0,R10 \ 00000234 170000EF SWI +23 4045 comanda=0; 4046 if(show_send_info) \ 00000238 000098E5 LDR R0,[R8, #+0] \ 0000023C B49385E5 STR R9,[R5, #+948] \ 00000240 000050E3 CMP R0,#+0 \ 00000244 700295E5 LDR R0,[R5, #+624] \ 00000248 010080E2 ADD R0,R0,#+1 \ 0000024C 700285E5 STR R0,[R5, #+624] \ 00000250 0900000A BEQ ??CheckComand_3 4047 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 6B2F86E2 ADD R2,R6,#+428 \ 00000270 0400A0E1 MOV R0,R4 \ 00000274 ........ BL AddStringToLog \ 00000278 08D08DE2 ADD SP,SP,#+8 4048 else 4049 SENDMSGCOUNT++; 4050 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 4051 mfree(s); \ 00000290 0A00A0E1 MOV R0,R10 \ 00000294 150000EF SWI +21 4052 mfree(send_txt); \ 00000298 0B00A0E1 MOV R0,R11 \ 0000029C 150000EF SWI +21 4053 mfree(status); \ 000002A0 00009DE5 LDR R0,[SP, #+0] \ 000002A4 6B0100EA B ??CheckComand_4 4054 return; 4055 } 4056 4057 if(!strcmp(txt, "__TIME") || !strcmp(txt, "__T") || !strcmp(txt, "GET_TIME")) \ ??CheckComand_2: \ 000002A8 7D1F86E2 ADD R1,R6,#+500 \ 000002AC 0B00A0E1 MOV R0,R11 \ 000002B0 190000EF SWI +25 \ 000002B4 000050E3 CMP R0,#+0 \ 000002B8 0900000A BEQ ??CheckComand_5 \ 000002BC DC1F8FE2 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 7F1F86E2 ADD R1,R6,#+508 \ 000002D4 0B00A0E1 MOV R0,R11 \ 000002D8 190000EF SWI +25 \ 000002DC 000050E3 CMP R0,#+0 \ 000002E0 2200001A BNE ??CheckComand_7 4058 { 4059 char *status=malloc(256); \ ??CheckComand_5: \ 000002E4 400FA0E3 MOV R0,#+256 \ 000002E8 140000EF SWI +20 \ 000002EC 00A0A0E1 MOV R10,R0 4060 TTime the; 4061 GetDateTime(NULL,&the); \ 000002F0 08108DE2 ADD R1,SP,#+8 \ 000002F4 0000A0E3 MOV R0,#+0 \ 000002F8 B40000EF SWI +180 4062 sprintf(status, "Time: %02d:%02d",the.hour, the.min); \ 000002FC 0930DDE5 LDRB R3,[SP, #+9] \ 00000300 0820DDE5 LDRB R2,[SP, #+8] \ 00000304 751F86E2 ADD R1,R6,#+468 \ 00000308 0A00A0E1 MOV R0,R10 \ 0000030C 160000EF SWI +22 4063 comanda=0; 4064 if(show_send_info) \ 00000310 000098E5 LDR R0,[R8, #+0] \ 00000314 B49385E5 STR R9,[R5, #+948] \ 00000318 000050E3 CMP R0,#+0 \ 0000031C 700295E5 LDR R0,[R5, #+624] \ 00000320 010080E2 ADD R0,R0,#+1 \ 00000324 700285E5 STR R0,[R5, #+624] \ 00000328 0900000A BEQ ??CheckComand_8 4065 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 792F86E2 ADD R2,R6,#+484 \ 00000348 0400A0E1 MOV R0,R4 \ 0000034C ........ BL AddStringToLog \ 00000350 08D08DE2 ADD SP,SP,#+8 4066 else 4067 SENDMSGCOUNT++; 4068 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 4069 mfree(status); \ 00000368 0A00A0E1 MOV R0,R10 \ 0000036C 390100EA B ??CheckComand_4 4070 return; 4071 } 4072 4073 if(!strcmp(txt, "GET_PLATFORM_INFO") || !strcmp(txt, "__PLATFORM") || !strcmp(txt,"__HW")) \ ??CheckComand_7: \ 00000370 ........ LDR R10,??DataTable155 ;; SendAnswer \ 00000374 8E1F86E2 ADD R1,R6,#+568 \ 00000378 0B00A0E1 MOV R0,R11 \ 0000037C 190000EF SWI +25 \ 00000380 000050E3 CMP R0,#+0 \ 00000384 0900000A BEQ ??CheckComand_9 \ 00000388 931F86E2 ADD R1,R6,#+588 \ 0000038C 0B00A0E1 MOV R0,R11 \ 00000390 190000EF SWI +25 \ 00000394 000050E3 CMP R0,#+0 \ 00000398 0400000A BEQ ??CheckComand_9 \ 0000039C 961F86E2 ADD R1,R6,#+600 \ 000003A0 0B00A0E1 MOV R0,R11 \ 000003A4 190000EF SWI +25 \ 000003A8 000050E3 CMP R0,#+0 \ 000003AC 3100001A BNE ??CheckComand_10 4074 { 4075 comanda=0; \ ??CheckComand_9: \ 000003B0 B49385E5 STR R9,[R5, #+948] 4076 TPKT *p; 4077 char pl[256]; 4078 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 8C3086E2 ADD R3,R6,#+140 \ 000003D4 822F86E2 ADD R2,R6,#+520 \ 000003D8 401FA0E3 MOV R1,#+256 \ 000003DC 4C0F8DE2 ADD R0,SP,#+304 \ 000003E0 1B0100EF SWI +283 4079 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 4080 p->pkt.uin=t->uin; \ 000003F8 0C0094E5 LDR R0,[R4, #+12] \ 000003FC 000089E5 STR R0,[R9, #+0] 4081 p->pkt.type=T_SENDMSG; \ 00000400 0200A0E3 MOV R0,#+2 \ 00000404 B400C9E1 STRH R0,[R9, #+4] 4082 p->pkt.data_len=strlen(pl); \ 00000408 4C0F8DE2 ADD R0,SP,#+304 \ 0000040C 1B0000EF SWI +27 \ 00000410 B600C9E1 STRH R0,[R9, #+6] 4083 strcpy(p->data,pl); \ 00000414 4C1F8DE2 ADD R1,SP,#+304 \ 00000418 080089E2 ADD R0,R9,#+8 \ 0000041C 1A0000EF SWI +26 4084 if(show_send_info) \ 00000420 000098E5 LDR R0,[R8, #+0] \ 00000424 08D08DE2 ADD SP,SP,#+8 \ 00000428 000050E3 CMP R0,#+0 \ 0000042C 700295E5 LDR R0,[R5, #+624] \ 00000430 010080E2 ADD R0,R0,#+1 \ 00000434 700285E5 STR R0,[R5, #+624] \ 00000438 0900000A BEQ ??CheckComand_11 4085 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 872F86E2 ADD R2,R6,#+540 \ 00000458 0400A0E1 MOV R0,R4 \ 0000045C ........ BL AddStringToLog \ 00000460 08D08DE2 ADD SP,SP,#+8 4086 else 4087 SENDMSGCOUNT++; 4088 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 4089 return; \ 00000474 F80000EA B ??CheckComand_13 4090 } 4091 4092 if(!strcmp(txt, "GET_ONLINE_TIME") || !strcmp(txt, "__ONLINE")) \ ??CheckComand_10: \ 00000478 A31F86E2 ADD R1,R6,#+652 \ 0000047C 0B00A0E1 MOV R0,R11 \ 00000480 190000EF SWI +25 \ 00000484 000050E3 CMP R0,#+0 \ 00000488 0400000A BEQ ??CheckComand_14 \ 0000048C A71F86E2 ADD R1,R6,#+668 \ 00000490 0B00A0E1 MOV R0,R11 \ 00000494 190000EF SWI +25 \ 00000498 000050E3 CMP R0,#+0 \ 0000049C 2D00001A BNE ??CheckComand_15 4093 { 4094 comanda=0; \ ??CheckComand_14: \ 000004A0 B49385E5 STR R9,[R5, #+948] 4095 TPKT *p; 4096 char online[256]; 4097 sprintf(online,"Время в онлайн: %02d:%02d:%02d \n" 4098 "Сервер: %s", uptimeHour, uptimeMin, uptimeSec, hostbuf2); \ 000004A4 14009DE5 LDR R0,[SP, #+20] \ 000004A8 981F86E2 ADD R1,R6,#+608 \ 000004AC 01002DE9 PUSH {R0} \ 000004B0 B00295E5 LDR R0,[R5, #+688] \ 000004B4 01002DE9 PUSH {R0} \ 000004B8 AC3295E5 LDR R3,[R5, #+684] \ 000004BC A82295E5 LDR R2,[R5, #+680] \ 000004C0 4C0F8DE2 ADD R0,SP,#+304 \ 000004C4 160000EF SWI +22 4099 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 4100 p->pkt.uin=t->uin; \ 000004DC 0C0094E5 LDR R0,[R4, #+12] \ 000004E0 000086E5 STR R0,[R6, #+0] 4101 p->pkt.type=T_SENDMSG; \ 000004E4 0200A0E3 MOV R0,#+2 \ 000004E8 B400C6E1 STRH R0,[R6, #+4] 4102 p->pkt.data_len=strlen(online); \ 000004EC 4C0F8DE2 ADD R0,SP,#+304 \ 000004F0 1B0000EF SWI +27 \ 000004F4 B600C6E1 STRH R0,[R6, #+6] 4103 strcpy(p->data,online); \ 000004F8 4C1F8DE2 ADD R1,SP,#+304 \ 000004FC 080086E2 ADD R0,R6,#+8 \ 00000500 1A0000EF SWI +26 4104 if(show_send_info) \ 00000504 000098E5 LDR R0,[R8, #+0] \ 00000508 08D08DE2 ADD SP,SP,#+8 \ 0000050C 000050E3 CMP R0,#+0 \ 00000510 700295E5 LDR R0,[R5, #+624] \ 00000514 010080E2 ADD R0,R0,#+1 \ 00000518 700285E5 STR R0,[R5, #+624] \ 0000051C 0B00000A BEQ ??CheckComand_16 4105 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 1C00A0E3 MOV R0,#+28 \ 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 4106 else 4107 SENDMSGCOUNT++; 4108 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_16: \ 00000550 0620A0E1 MOV R2,R6 \ 00000554 C3FFFFEA B ??CheckComand_12 4109 return; 4110 } 4111 4112 if(!strcmp(txt, "GET_MSG_INFO") || !strcmp(txt, "__MSG")) \ ??CheckComand_15: \ 00000558 B61F86E2 ADD R1,R6,#+728 \ 0000055C 0B00A0E1 MOV R0,R11 \ 00000560 190000EF SWI +25 \ 00000564 000050E3 CMP R0,#+0 \ 00000568 0400000A BEQ ??CheckComand_17 \ 0000056C BA1F86E2 ADD R1,R6,#+744 \ 00000570 0B00A0E1 MOV R0,R11 \ 00000574 190000EF SWI +25 \ 00000578 000050E3 CMP R0,#+0 \ 0000057C 2D00001A BNE ??CheckComand_18 4113 { 4114 comanda=0; \ ??CheckComand_17: \ 00000580 B49385E5 STR R9,[R5, #+948] 4115 TPKT *p; 4116 char *send_txt=malloc(64); \ 00000584 4000A0E3 MOV R0,#+64 \ 00000588 140000EF SWI +20 \ 0000058C 0090A0E1 MOV R9,R0 4117 sprintf(send_txt, "Отправлено сообщений: %d \n" 4118 "Принято сообщений: %d" 4119 , main2_count, main_count); \ 00000590 ........ LDR R0,??DataTable156 ;; main_count \ 00000594 AA1F86E2 ADD R1,R6,#+680 \ 00000598 003090E5 LDR R3,[R0, #+0] \ 0000059C ........ LDR R0,??DataTable157 ;; main2_count \ 000005A0 002090E5 LDR R2,[R0, #+0] \ 000005A4 0900A0E1 MOV R0,R9 \ 000005A8 160000EF SWI +22 4120 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 4121 p->pkt.uin=t->uin; \ 000005C0 0C0094E5 LDR R0,[R4, #+12] \ 000005C4 000086E5 STR R0,[R6, #+0] 4122 p->pkt.type=T_SENDMSG; \ 000005C8 0200A0E3 MOV R0,#+2 \ 000005CC B400C6E1 STRH R0,[R6, #+4] 4123 p->pkt.data_len=strlen(send_txt); \ 000005D0 0900A0E1 MOV R0,R9 \ 000005D4 1B0000EF SWI +27 \ 000005D8 B600C6E1 STRH R0,[R6, #+6] 4124 strcpy(p->data,send_txt); \ 000005DC 0910A0E1 MOV R1,R9 \ 000005E0 080086E2 ADD R0,R6,#+8 \ 000005E4 1A0000EF SWI +26 4125 if(show_send_info) \ 000005E8 000098E5 LDR R0,[R8, #+0] \ 000005EC 000050E3 CMP R0,#+0 \ 000005F0 700295E5 LDR R0,[R5, #+624] \ 000005F4 010080E2 ADD R0,R0,#+1 \ 000005F8 700285E5 STR R0,[R5, #+624] \ 000005FC 9000000A BEQ ??CheckComand_19 4126 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 3400A0E3 MOV R0,#+52 \ 0000061C 740D80E3 ORR R0,R0,#0x1D00 \ 00000620 052080E0 ADD R2,R0,R5 \ 00000624 0400A0E1 MOV R0,R4 \ 00000628 ........ BL AddStringToLog \ 0000062C 08D08DE2 ADD SP,SP,#+8 4127 else 4128 SENDMSGCOUNT++; 4129 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_20: \ 00000630 830000EA B ??CheckComand_19 \ ??CheckComand_6: \ 00000634 5F5F5400 DC8 "__T" 4130 mfree(send_txt); 4131 return; 4132 } 4133 4134 //==========================windes commands begin ===================== 4135 4136 if(!strcmp(txt, "GET_PROVIDER") || !strcmp(txt, "__PROVIDER")) \ ??CheckComand_18: \ 00000638 C71F86E2 ADD R1,R6,#+796 \ 0000063C 0B00A0E1 MOV R0,R11 \ 00000640 190000EF SWI +25 \ 00000644 000050E3 CMP R0,#+0 \ 00000648 0400000A BEQ ??CheckComand_21 \ 0000064C CB1F86E2 ADD R1,R6,#+812 \ 00000650 0B00A0E1 MOV R0,R11 \ 00000654 190000EF SWI +25 \ 00000658 000050E3 CMP R0,#+0 \ 0000065C 3600001A BNE ??CheckComand_22 4137 { 4138 comanda=0; \ ??CheckComand_21: \ 00000660 B49385E5 STR R9,[R5, #+948] 4139 TPKT *p; 4140 4141 WSHDR *ws=AllocWS(32); \ 00000664 2000A0E3 MOV R0,#+32 \ 00000668 250100EF SWI +293 \ 0000066C 0090A0E1 MOV R9,R0 4142 GetProvider(ws,0); \ 00000670 0010A0E3 MOV R1,#+0 \ 00000674 410000EF SWI +65 4143 char prov[16]; 4144 ws_2str(ws,prov,wstrlen(ws)); \ 00000678 0900A0E1 MOV R0,R9 \ 0000067C 230100EF SWI +291 \ 00000680 0020A0E1 MOV R2,R0 \ 00000684 18108DE2 ADD R1,SP,#+24 \ 00000688 0900A0E1 MOV R0,R9 \ 0000068C A30000EF SWI +163 4145 char *send_txt=malloc(32); \ 00000690 2000A0E3 MOV R0,#+32 \ 00000694 140000EF SWI +20 \ 00000698 00B0A0E1 MOV R11,R0 4146 sprintf(send_txt, "Оператор: %s", prov); \ 0000069C 18208DE2 ADD R2,SP,#+24 \ 000006A0 BC1F86E2 ADD R1,R6,#+752 \ 000006A4 160000EF SWI +22 4147 FreeWS(ws); \ 000006A8 0900A0E1 MOV R0,R9 \ 000006AC 290100EF SWI +297 4148 4149 p=malloc(sizeof(PKT)+28+1); \ 000006B0 2500A0E3 MOV R0,#+37 \ 000006B4 140000EF SWI +20 \ 000006B8 0090A0E1 MOV R9,R0 4150 p->pkt.uin=t->uin; \ 000006BC 0C0094E5 LDR R0,[R4, #+12] \ 000006C0 000089E5 STR R0,[R9, #+0] 4151 p->pkt.type=T_SENDMSG; \ 000006C4 0200A0E3 MOV R0,#+2 \ 000006C8 B400C9E1 STRH R0,[R9, #+4] 4152 p->pkt.data_len=strlen(send_txt); \ 000006CC 0B00A0E1 MOV R0,R11 \ 000006D0 1B0000EF SWI +27 \ 000006D4 B600C9E1 STRH R0,[R9, #+6] 4153 strcpy(p->data,send_txt); \ 000006D8 0B10A0E1 MOV R1,R11 \ 000006DC 080089E2 ADD R0,R9,#+8 \ 000006E0 1A0000EF SWI +26 4154 if(show_send_info) \ 000006E4 000098E5 LDR R0,[R8, #+0] \ 000006E8 000050E3 CMP R0,#+0 \ 000006EC 700295E5 LDR R0,[R5, #+624] \ 000006F0 010080E2 ADD R0,R0,#+1 \ 000006F4 700285E5 STR R0,[R5, #+624] \ 000006F8 0900000A BEQ ??CheckComand_23 4155 AddStringToLog(t,0x01,"Sending provider name...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000006FC 0110A0E3 MOV R1,#+1 \ 00000700 02002DE9 PUSH {R1} \ 00000704 8008A0E1 LSL R0,R0,#+17 \ 00000708 A008A0E1 LSR R0,R0,#+17 \ 0000070C 01002DE9 PUSH {R0} \ 00000710 0730A0E1 MOV R3,R7 \ 00000714 C02F86E2 ADD R2,R6,#+768 \ 00000718 0400A0E1 MOV R0,R4 \ 0000071C ........ BL AddStringToLog \ 00000720 08D08DE2 ADD SP,SP,#+8 4156 else 4157 SENDMSGCOUNT++; 4158 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_23: \ 00000724 0920A0E1 MOV R2,R9 \ 00000728 0010A0E3 MOV R1,#+0 \ 0000072C 0A00A0E1 MOV R0,R10 \ 00000730 710100EF SWI +369 4159 mfree(send_txt); \ 00000734 0B00A0E1 MOV R0,R11 \ 00000738 460000EA B ??CheckComand_4 4160 return; 4161 } 4162 4163 4164 //----------------------------------------------------------------------- 4165 4166 4167 if(!strcmp(txt, "GET_MOD_INFO") || !strcmp(txt, "__MOD")) \ ??CheckComand_22: \ 0000073C D31F86E2 ADD R1,R6,#+844 \ 00000740 0B00A0E1 MOV R0,R11 \ 00000744 190000EF SWI +25 \ 00000748 000050E3 CMP R0,#+0 \ 0000074C 0600000A BEQ ??CheckComand_24 \ 00000750 2400A0E3 MOV R0,#+36 \ 00000754 400E80E3 ORR R0,R0,#0x400 \ 00000758 061080E0 ADD R1,R0,R6 \ 0000075C 0B00A0E1 MOV R0,R11 \ 00000760 190000EF SWI +25 \ 00000764 000050E3 CMP R0,#+0 \ 00000768 3D00001A BNE ??CheckComand_25 4168 { 4169 comanda=0; \ ??CheckComand_24: \ 0000076C B49385E5 STR R9,[R5, #+948] 4170 TPKT *p; 4171 char *send_txt=malloc(256); \ 00000770 400FA0E3 MOV R0,#+256 \ 00000774 140000EF SWI +20 \ 00000778 0090A0E1 MOV R9,R0 4172 // sprintf(I_UIN, "uin%d", t->uin); 4173 strcpy(I_UIN, t->name); \ 0000077C 1000A0E3 MOV R0,#+16 \ 00000780 700D80E3 ORR R0,R0,#0x1C00 \ 00000784 05B080E0 ADD R11,R0,R5 \ 00000788 141084E2 ADD R1,R4,#+20 \ 0000078C 0B00A0E1 MOV R0,R11 \ 00000790 1A0000EF SWI +26 4174 if(strstr(ignor_list,I_UIN)==0) \ 00000794 ........ LDR R0,??DataTable158 ;; ignor_list \ 00000798 0B10A0E1 MOV R1,R11 \ 0000079C 180100EF SWI +280 \ 000007A0 000050E3 CMP R0,#+0 4175 { 4176 strcpy(send_txt, mod_info); \ 000007A4 10109D05 LDREQ R1,[SP, #+16] 4177 } 4178 else 4179 strcpy(send_txt, "***Access denied***"); \ 000007A8 0900A0E1 MOV R0,R9 \ 000007AC CE1F8612 ADDNE R1,R6,#+824 \ 000007B0 1A0000EF SWI +26 4180 4181 strcpy(send_txt, mod_info); \ 000007B4 10109DE5 LDR R1,[SP, #+16] \ 000007B8 0900A0E1 MOV R0,R9 \ 000007BC 1A0000EF SWI +26 4182 4183 p=malloc(sizeof(PKT)+strlen(send_txt)+1); \ 000007C0 0900A0E1 MOV R0,R9 \ 000007C4 1B0000EF SWI +27 \ 000007C8 090080E2 ADD R0,R0,#+9 \ 000007CC 140000EF SWI +20 \ 000007D0 0060A0E1 MOV R6,R0 4184 p->pkt.uin=t->uin; \ 000007D4 0C0094E5 LDR R0,[R4, #+12] \ 000007D8 000086E5 STR R0,[R6, #+0] 4185 p->pkt.type=T_SENDMSG; \ 000007DC 0200A0E3 MOV R0,#+2 \ 000007E0 B400C6E1 STRH R0,[R6, #+4] 4186 p->pkt.data_len=strlen(send_txt); \ 000007E4 0900A0E1 MOV R0,R9 \ 000007E8 1B0000EF SWI +27 \ 000007EC B600C6E1 STRH R0,[R6, #+6] 4187 strcpy(p->data,send_txt); \ 000007F0 0910A0E1 MOV R1,R9 \ 000007F4 080086E2 ADD R0,R6,#+8 \ 000007F8 1A0000EF SWI +26 4188 #ifdef EVILFOX 4189 SENDMSGCOUNT++; 4190 #else 4191 if(show_send_info) \ 000007FC 000098E5 LDR R0,[R8, #+0] \ 00000800 000050E3 CMP R0,#+0 \ 00000804 700295E5 LDR R0,[R5, #+624] \ 00000808 010080E2 ADD R0,R0,#+1 \ 0000080C 700285E5 STR R0,[R5, #+624] \ 00000810 0B00000A BEQ ??CheckComand_19 4192 AddStringToLog(t,0x01,requests4,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000814 0110A0E3 MOV R1,#+1 \ 00000818 02002DE9 PUSH {R1} \ 0000081C 8008A0E1 LSL R0,R0,#+17 \ 00000820 A008A0E1 LSR R0,R0,#+17 \ 00000824 01002DE9 PUSH {R0} \ 00000828 0730A0E1 MOV R3,R7 \ 0000082C 6000A0E3 MOV R0,#+96 \ 00000830 740D80E3 ORR R0,R0,#0x1D00 \ 00000834 052080E0 ADD R2,R0,R5 \ 00000838 0400A0E1 MOV R0,R4 \ 0000083C ........ BL AddStringToLog \ 00000840 08D08DE2 ADD SP,SP,#+8 4193 else 4194 SENDMSGCOUNT++; 4195 #endif 4196 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_19: \ 00000844 0620A0E1 MOV R2,R6 \ ??CheckComand_26: \ 00000848 0010A0E3 MOV R1,#+0 \ 0000084C 0A00A0E1 MOV R0,R10 \ 00000850 710100EF SWI +369 4197 mfree(send_txt); \ 00000854 0900A0E1 MOV R0,R9 \ ??CheckComand_4: \ 00000858 150000EF SWI +21 \ ??CheckComand_13: \ 0000085C 8ADF8DE2 ADD SP,SP,#+552 \ 00000860 F08FBDE8 POP {R4-R11,PC} 4198 return; 4199 } 4200 4201 if(!strcmp(txt, "GET_BAT_INFO") || !strcmp(txt, "__BAT")) \ ??CheckComand_25: \ 00000864 DE1F86E2 ADD R1,R6,#+888 \ 00000868 0B00A0E1 MOV R0,R11 \ 0000086C 190000EF SWI +25 \ 00000870 000050E3 CMP R0,#+0 \ 00000874 0400000A BEQ ??CheckComand_27 \ 00000878 E21F86E2 ADD R1,R6,#+904 \ 0000087C 0B00A0E1 MOV R0,R11 \ 00000880 190000EF SWI +25 \ 00000884 000050E3 CMP R0,#+0 \ 00000888 2800001A BNE ??CheckComand_28 4202 { 4203 comanda=0; \ ??CheckComand_27: \ 0000088C B49385E5 STR R9,[R5, #+948] 4204 TPKT *p; 4205 int bat; 4206 bat=*RamCap(); \ 00000890 C88000EF SWI +32968 \ 00000894 B0B0D0E1 LDRH R11,[R0, #+0] 4207 char *send_txt=malloc(64); \ 00000898 4000A0E3 MOV R0,#+64 \ 0000089C 140000EF SWI +20 \ 000008A0 0090A0E1 MOV R9,R0 4208 sprintf(send_txt, "Заряд батареи: %d процентов", bat); \ 000008A4 0B20A0E1 MOV R2,R11 \ 000008A8 D71F86E2 ADD R1,R6,#+860 \ 000008AC 160000EF SWI +22 4209 p=malloc(sizeof(PKT)+28+1); \ 000008B0 2500A0E3 MOV R0,#+37 \ 000008B4 140000EF SWI +20 \ 000008B8 0060A0E1 MOV R6,R0 4210 p->pkt.uin=t->uin; \ 000008BC 0C0094E5 LDR R0,[R4, #+12] \ 000008C0 000086E5 STR R0,[R6, #+0] 4211 p->pkt.type=T_SENDMSG; \ 000008C4 0200A0E3 MOV R0,#+2 \ 000008C8 B400C6E1 STRH R0,[R6, #+4] 4212 p->pkt.data_len=strlen(send_txt); \ 000008CC 0900A0E1 MOV R0,R9 \ 000008D0 1B0000EF SWI +27 \ 000008D4 B600C6E1 STRH R0,[R6, #+6] 4213 strcpy(p->data,send_txt); \ 000008D8 0910A0E1 MOV R1,R9 \ 000008DC 080086E2 ADD R0,R6,#+8 \ 000008E0 1A0000EF SWI +26 4214 #ifdef EVILFOX 4215 SENDMSGCOUNT++; 4216 #else 4217 if(show_send_info) \ 000008E4 000098E5 LDR R0,[R8, #+0] \ 000008E8 000050E3 CMP R0,#+0 \ 000008EC 700295E5 LDR R0,[R5, #+624] \ 000008F0 010080E2 ADD R0,R0,#+1 \ 000008F4 700285E5 STR R0,[R5, #+624] \ 000008F8 D1FFFF0A BEQ ??CheckComand_19 4218 AddStringToLog(t,0x01,requests3,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000008FC 0110A0E3 MOV R1,#+1 \ 00000900 02002DE9 PUSH {R1} \ 00000904 8008A0E1 LSL R0,R0,#+17 \ 00000908 A008A0E1 LSR R0,R0,#+17 \ 0000090C 01002DE9 PUSH {R0} \ 00000910 0730A0E1 MOV R3,R7 \ 00000914 4800A0E3 MOV R0,#+72 \ 00000918 740D80E3 ORR R0,R0,#0x1D00 \ 0000091C 052080E0 ADD R2,R0,R5 \ 00000920 0400A0E1 MOV R0,R4 \ 00000924 ........ BL AddStringToLog \ 00000928 08D08DE2 ADD SP,SP,#+8 4219 else 4220 SENDMSGCOUNT++; 4221 #endif 4222 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_29: \ 0000092C C4FFFFEA B ??CheckComand_19 4223 mfree(send_txt); 4224 return; 4225 } 4226 4227 if((away_m==1 || t->isautomsg) && (t->automsgcount < automsgcount)) \ ??CheckComand_28: \ 00000930 941295E5 LDR R1,[R5, #+660] \ 00000934 ........ LDR R2,??DataTable159 ;; automsgcount \ 00000938 640094E5 LDR R0,[R4, #+100] \ 0000093C 002092E5 LDR R2,[R2, #+0] \ 00000940 010051E3 CMP R1,#+1 \ 00000944 0100000A BEQ ??CheckComand_30 \ 00000948 000050E3 CMP R0,#+0 \ 0000094C 3900000A BEQ ??CheckComand_31 \ ??CheckComand_30: \ 00000950 783094E5 LDR R3,[R4, #+120] \ 00000954 020053E1 CMP R3,R2 \ 00000958 3400002A BCS ??CheckComand_32 4228 { 4229 t->automsgcount++; 4230 comanda=1; 4231 TPKT *p; 4232 // sprintf(hah,"online: %02d:%02d:%02d", uptimeHour, uptimeMin, uptimeSec); 4233 sprintf(away_msg, "Автоответчик: %s %s! %s %s", awayHelloMsg, t->name, awayMsg, away_msg_time); \ 0000095C E4219FE5 LDR R2,??CheckComand_0+0x8 ;; awayHelloMsg \ 00000960 010083E2 ADD R0,R3,#+1 \ 00000964 780084E5 STR R0,[R4, #+120] \ 00000968 0100A0E3 MOV R0,#+1 \ 0000096C B40385E5 STR R0,[R5, #+948] \ 00000970 0400A0E3 MOV R0,#+4 \ 00000974 5C0D80E3 ORR R0,R0,#0x1700 \ 00000978 059080E0 ADD R9,R0,R5 \ 0000097C 420F80E2 ADD R0,R0,#+264 \ 00000980 050080E0 ADD R0,R0,R5 \ 00000984 01002DE9 PUSH {R0} \ 00000988 ........ LDR R0,??DataTable160 ;; awayMsg \ 0000098C 143084E2 ADD R3,R4,#+20 \ 00000990 01002DE9 PUSH {R0} \ 00000994 E41F86E2 ADD R1,R6,#+912 \ 00000998 0900A0E1 MOV R0,R9 \ 0000099C 160000EF SWI +22 4234 p=malloc(sizeof(PKT)+strlen(away_msg)+1); \ 000009A0 0900A0E1 MOV R0,R9 \ 000009A4 1B0000EF SWI +27 \ 000009A8 090080E2 ADD R0,R0,#+9 \ 000009AC 140000EF SWI +20 \ 000009B0 0060A0E1 MOV R6,R0 4235 p->pkt.uin=t->uin; \ 000009B4 0C0094E5 LDR R0,[R4, #+12] \ 000009B8 000086E5 STR R0,[R6, #+0] 4236 p->pkt.type=T_SENDMSG; \ 000009BC 0200A0E3 MOV R0,#+2 \ 000009C0 B400C6E1 STRH R0,[R6, #+4] 4237 p->pkt.data_len=strlen(away_msg); \ 000009C4 0900A0E1 MOV R0,R9 \ 000009C8 1B0000EF SWI +27 \ 000009CC B600C6E1 STRH R0,[R6, #+6] 4238 strcpy(p->data,away_msg); \ 000009D0 0910A0E1 MOV R1,R9 \ 000009D4 080086E2 ADD R0,R6,#+8 \ 000009D8 1A0000EF SWI +26 4239 if(show_send_info) \ 000009DC 000098E5 LDR R0,[R8, #+0] \ 000009E0 08D08DE2 ADD SP,SP,#+8 \ 000009E4 000050E3 CMP R0,#+0 \ 000009E8 700295E5 LDR R0,[R5, #+624] \ 000009EC 010080E2 ADD R0,R0,#+1 \ 000009F0 700285E5 STR R0,[R5, #+624] \ 000009F4 0B00000A BEQ ??CheckComand_33 4240 #ifdef kluchnik 4241 AddStringToLog(t,0x01,away_msg,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 4242 #else 4243 AddStringToLog(t,0x01,requests6,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000009F8 0110A0E3 MOV R1,#+1 \ 000009FC 02002DE9 PUSH {R1} \ 00000A00 8008A0E1 LSL R0,R0,#+17 \ 00000A04 A008A0E1 LSR R0,R0,#+17 \ 00000A08 01002DE9 PUSH {R0} \ 00000A0C 0730A0E1 MOV R3,R7 \ 00000A10 7400A0E3 MOV R0,#+116 \ 00000A14 740D80E3 ORR R0,R0,#0x1D00 \ 00000A18 052080E0 ADD R2,R0,R5 \ 00000A1C 0400A0E1 MOV R0,R4 \ 00000A20 ........ BL AddStringToLog \ 00000A24 08D08DE2 ADD SP,SP,#+8 4244 #endif 4245 else 4246 SENDMSGCOUNT++; 4247 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_33: \ 00000A28 0620A0E1 MOV R2,R6 \ 00000A2C 8DFEFFEA B ??CheckComand_12 4248 return; 4249 } 4250 #ifdef kluchnik 4251 else 4252 if((away_m==1 || t->isautomsg) && (t->uin==438532198)){ t->automsgcount=0;/* t->awaysignal=1;*/ return; } 4253 /* else 4254 if((away_m==1 || t->isautomsg) && (t->automsgcount<=(automsgcount+3)) ) 4255 { 4256 t->awaysignal=0; 4257 t->automsgcount++; 4258 sprintf(away_msg,"Бля,ну русским ж языком написали,НЕТУ МЕНЯ!!!че по сто сообщений слать?тем более если тебе делать нех..."); 4259 if(show_send_info) 4260 AddStringToLog(t,0x01,away_msg,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 4261 else 4262 SENDMSGCOUNT++; 4263 SendData(t,away_msg,ENA_SIGNAL,0); 4264 return; 4265 }*/ 4266 #endif 4267 else 4268 if(away_m==1 || t->isautomsg) \ ??CheckComand_32: \ 00000A30 010051E3 CMP R1,#+1 \ 00000A34 0100000A BEQ ??CheckComand_34 \ ??CheckComand_31: \ 00000A38 000050E3 CMP R0,#+0 \ 00000A3C 0100000A BEQ ??CheckComand_35 4269 { 4270 t->automsgcount=automsgcount; \ ??CheckComand_34: \ 00000A40 782084E5 STR R2,[R4, #+120] 4271 return; \ 00000A44 84FFFFEA B ??CheckComand_13 4272 } 4273 4274 4275 //---------------------------------------------------------------------------// 4276 4277 4278 if(!strcmp(txt, "GET_URL_INFO") || !strcmp(txt, "__URL"))// by kluchnik 26.03.08 \ ??CheckComand_35: \ 00000A48 0C00A0E3 MOV R0,#+12 \ 00000A4C 400E80E3 ORR R0,R0,#0x400 \ 00000A50 061080E0 ADD R1,R0,R6 \ 00000A54 0B00A0E1 MOV R0,R11 \ 00000A58 190000EF SWI +25 \ 00000A5C 000050E3 CMP R0,#+0 \ 00000A60 0600000A BEQ ??CheckComand_36 \ 00000A64 1C00A0E3 MOV R0,#+28 \ 00000A68 400E80E3 ORR R0,R0,#0x400 \ 00000A6C 061080E0 ADD R1,R0,R6 \ 00000A70 0B00A0E1 MOV R0,R11 \ 00000A74 190000EF SWI +25 \ 00000A78 000050E3 CMP R0,#+0 \ 00000A7C 2A00001A BNE ??CheckComand_37 4279 { 4280 comanda=0; \ ??CheckComand_36: \ 00000A80 B49385E5 STR R9,[R5, #+948] 4281 TPKT *p; 4282 4283 char *send_txt=malloc(256); \ 00000A84 400FA0E3 MOV R0,#+256 \ 00000A88 140000EF SWI +20 \ 00000A8C 0090A0E1 MOV R9,R0 4284 sprintf(send_txt,"revision 2058, mod date: %s at %s ", 4285 "http://kluchnik.jino-net.ru/naticqmod/",__DATE__,__TIME__); \ 00000A90 680086E2 ADD R0,R6,#+104 \ 00000A94 01002DE9 PUSH {R0} \ 00000A98 5C3086E2 ADD R3,R6,#+92 \ 00000A9C F42F86E2 ADD R2,R6,#+976 \ 00000AA0 EB1F86E2 ADD R1,R6,#+940 \ 00000AA4 0900A0E1 MOV R0,R9 \ 00000AA8 160000EF SWI +22 4286 4287 p=malloc(sizeof(PKT)+256); \ 00000AAC 420FA0E3 MOV R0,#+264 \ 00000AB0 140000EF SWI +20 \ 00000AB4 00B0A0E1 MOV R11,R0 4288 p->pkt.uin=t->uin; \ 00000AB8 0C0094E5 LDR R0,[R4, #+12] \ 00000ABC 00008BE5 STR R0,[R11, #+0] 4289 p->pkt.type=T_SENDMSG; \ 00000AC0 0200A0E3 MOV R0,#+2 \ 00000AC4 B400CBE1 STRH R0,[R11, #+4] 4290 p->pkt.data_len=strlen(send_txt); \ 00000AC8 0900A0E1 MOV R0,R9 \ 00000ACC 1B0000EF SWI +27 \ 00000AD0 B600CBE1 STRH R0,[R11, #+6] 4291 strcpy(p->data,send_txt); \ 00000AD4 0910A0E1 MOV R1,R9 \ 00000AD8 08008BE2 ADD R0,R11,#+8 \ 00000ADC 1A0000EF SWI +26 4292 if(show_send_info) \ 00000AE0 000098E5 LDR R0,[R8, #+0] \ 00000AE4 04D08DE2 ADD SP,SP,#+4 \ 00000AE8 000050E3 CMP R0,#+0 \ 00000AEC 700295E5 LDR R0,[R5, #+624] \ 00000AF0 010080E2 ADD R0,R0,#+1 \ 00000AF4 700285E5 STR R0,[R5, #+624] \ 00000AF8 0900000A BEQ ??CheckComand_38 4293 AddStringToLog(t,0x01,"Sending url info...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000AFC 0110A0E3 MOV R1,#+1 \ 00000B00 02002DE9 PUSH {R1} \ 00000B04 8008A0E1 LSL R0,R0,#+17 \ 00000B08 A008A0E1 LSR R0,R0,#+17 \ 00000B0C 01002DE9 PUSH {R0} \ 00000B10 0730A0E1 MOV R3,R7 \ 00000B14 FE2F86E2 ADD R2,R6,#+1016 \ 00000B18 0400A0E1 MOV R0,R4 \ 00000B1C ........ BL AddStringToLog \ 00000B20 08D08DE2 ADD SP,SP,#+8 4294 else 4295 SENDMSGCOUNT++; 4296 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_38: \ 00000B24 0B20A0E1 MOV R2,R11 \ 00000B28 46FFFFEA B ??CheckComand_26 4297 mfree(send_txt); 4298 return; 4299 } 4300 4301 #ifdef kluchnik // не доступно для всех,потому что имхо,будет еще большая перегрузка серверов!!!а оно нам надо? 4302 if(t->isautobot) 4303 { 4304 TPKT *p; 4305 int i=LoadBotMessage(t->uin); 4306 if(i==0) return;//если нет никаких файлов то просто возвращаемся 4307 char *pp=bot_lines[t->bot_msg]; 4308 t->bot_msg++; 4309 if(t->bot_msg==i) 4310 t->bot_msg=0; 4311 p=malloc(sizeof(PKT)+strlen(pp)+1); 4312 p->pkt.uin=t->uin; 4313 p->pkt.type=T_SENDMSG; 4314 p->pkt.data_len=strlen(pp); 4315 strcpy(p->data,pp); 4316 AddStringToLog(t,0x01,pp,"Autobot",(++SENDMSGCOUNT)&0x7FFF,1); 4317 SUBPROC((void *)SendAnswer,0,p); 4318 return; 4319 } 4320 #endif 4321 4322 CheckComand2(txt,t); \ ??CheckComand_37: \ 00000B2C 0410A0E1 MOV R1,R4 \ 00000B30 0B00A0E1 MOV R0,R11 \ 00000B34 ........ _BLF CheckComand2,??CheckComand2??rA 4323 } \ 00000B38 8ADF8DE2 ADD SP,SP,#+552 \ 00000B3C F08FBDE8 POP {R4-R11,PC} ;; return \ ??CheckComand_0: \ 00000B40 ........ DC32 `?` \ 00000B44 ........ DC32 show_send_info \ 00000B48 ........ DC32 awayHelloMsg 4324 4325 //------------- Попап месаже для подключившегося контакта -----------// 4326 \ In segment DATA_Z, align 4, align-sorted 4327 char INC_Nick[32]; \ INC_Nick: \ 00000000 DS8 32 4328 char show_nick[32]; 4329 int INC_show; 4330 4331 char onContact[64]; 4332 int INC_show2; 4333 GBSTMR incs2; 4334 extern void DrawScreenShot(); 4335 \ In segment CODE, align 4, keep-with-next 4336 void show_on_contact() 4337 { \ show_on_contact: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 4338 if(INC_show2>0) \ 00000004 ........ LDR R4,??DataTable169 ;; S_ICONS \ 00000008 08D04DE2 SUB SP,SP,#+8 \ 0000000C BC0394E5 LDR R0,[R4, #+956] \ 00000010 010050E3 CMP R0,#+1 \ 00000014 4E0000BA BLT ??show_on_contact_0 4339 { 4340 WSHDR *ws=AllocWS(64); \ 00000018 4000A0E3 MOV R0,#+64 \ 0000001C 250100EF SWI +293 \ 00000020 0050A0E1 MOV R5,R0 4341 ascii2ws(ws,onContact); \ 00000024 B400A0E3 MOV R0,#+180 \ 00000028 780D80E3 ORR R0,R0,#0x1E00 \ 0000002C 041080E0 ADD R1,R0,R4 \ 00000030 0500A0E1 MOV R0,R5 \ 00000034 ........ _BLF ascii2ws,??ascii2ws??rA 4342 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] 4343 char java_oncreate_pattern[8] = {0xB0, 0xB5, 0x04, 0x1C, 0x00, 0x25, 0x05, 0x61}; \ 00000040 14219FE5 LDR R2,??show_on_contact_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 4344 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_on_contact_2 4345 { 4346 DrawScreenShot(); \ 00000070 ........ _BLF DrawScreenShot,??DrawScreenShot??rA 4347 INC_show2-=2; \ 00000074 BC0394E5 LDR R0,[R4, #+956] \ 00000078 020040E2 SUB R0,R0,#+2 \ 0000007C 010000EA B ??show_on_contact_3 4348 } 4349 else 4350 INC_show2--; \ ??show_on_contact_2: \ 00000080 BC0394E5 LDR R0,[R4, #+956] \ 00000084 010040E2 SUB R0,R0,#+1 4351 DrawRectangle(0,0,Get_WS_width(ws,PopupFont)+2,GetFontYSIZE(PopupFont)+2,0,PopupBGCl,PopupBGCl); \ ??show_on_contact_3: \ 00000088 ........ LDR R6,??DataTable165 ;; PopupFont \ 0000008C BC0384E5 STR R0,[R4, #+956] \ 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,??DataTable167 ;; 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 4352 DrawString(ws,1,1,1+Get_WS_width(ws,PopupFont)+2,1+GetFontYSIZE(PopupFont),PopupFont,0,PopupOnlineCl,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 64109FE5 LDR R1,??show_on_contact_1+0x4 ;; PopupOnlineCl \ 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 4353 FreeWS(ws); \ 0000012C 0500A0E1 MOV R0,R5 \ 00000130 290100EF SWI +297 4354 GBS_StartTimerProc(&incs2, 15, show_on_contact); \ 00000134 28209FE5 LDR R2,??show_on_contact_1+0x8 ;; show_on_contact \ 00000138 0F10A0E3 MOV R1,#+15 \ 0000013C F400A0E3 MOV R0,#+244 \ 00000140 780D80E3 ORR R0,R0,#0x1E00 \ 00000144 040080E0 ADD R0,R0,R4 \ 00000148 4D0000EF SWI +77 \ 0000014C 20D08DE2 ADD SP,SP,#+32 \ 00000150 F381BDE8 POP {R0,R1,R4-R8,PC} 4355 } 4356 else 4357 RefreshGUI(); \ ??show_on_contact_0: \ 00000154 960100EF SWI +406 4358 } \ 00000158 F381BDE8 POP {R0,R1,R4-R8,PC} ;; return \ ??show_on_contact_1: \ 0000015C ........ DC32 `?` \ 00000160 ........ DC32 PopupOnlineCl \ 00000164 ........ DC32 show_on_contact 4359 4360 4361 //---------------------------- popup message ---------------------------// 4362 4363 \ In segment CODE, align 4, keep-with-next 4364 void show_pp_sender() 4365 { \ show_pp_sender: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 4366 if(INC_show>0) \ 00000004 ........ LDR R4,??DataTable169 ;; S_ICONS \ 00000008 08D04DE2 SUB SP,SP,#+8 \ 0000000C B80394E5 LDR R0,[R4, #+952] \ 00000010 010050E3 CMP R0,#+1 \ 00000014 F38FBDB8 POPLT {R0,R1,R4-R11,PC} 4367 { 4368 WSHDR *ws=AllocWS(256); \ 00000018 400FA0E3 MOV R0,#+256 \ 0000001C 250100EF SWI +293 \ 00000020 0050A0E1 MOV R5,R0 4369 ascii2ws(ws,show_nick); \ 00000024 9400A0E3 MOV R0,#+148 \ 00000028 780D80E3 ORR R0,R0,#0x1E00 \ 0000002C 041080E0 ADD R1,R0,R4 \ 00000030 0500A0E1 MOV R0,R5 \ 00000034 ........ _BLF ascii2ws,??ascii2ws??rA 4370 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] 4371 char java_oncreate_pattern[8] = {0xB0, 0xB5, 0x04, 0x1C, 0x00, 0x25, 0x05, 0x61}; \ 00000040 5C219FE5 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 4372 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 4373 { 4374 DrawScreenShot(); \ 00000070 ........ _BLF DrawScreenShot,??DrawScreenShot??rA 4375 INC_show-=2; \ 00000074 B80394E5 LDR R0,[R4, #+952] \ 00000078 020040E2 SUB R0,R0,#+2 \ 0000007C 010000EA B ??show_pp_sender_2 4376 } 4377 else 4378 INC_show--; \ ??show_pp_sender_1: \ 00000080 B80394E5 LDR R0,[R4, #+952] \ 00000084 010040E2 SUB R0,R0,#+1 4379 #ifdef NEWSGOLD 4380 DrawRectangle(0,0,Get_WS_width(ws,PopupFont)+4+GetImgWidth(NumStatusToIconBar + IS_MSG),GetFontYSIZE(PopupFont)+4,0,PopupBGCl,PopupBGCl); \ ??show_pp_sender_2: \ 00000088 ........ LDR R6,??DataTable165 ;; PopupFont \ 0000008C ........ LDR R11,??DataTable166 ;; NumStatusToIconBar \ 00000090 B80384E5 STR R0,[R4, #+952] \ 00000094 000096E5 LDR R0,[R6, #+0] \ 00000098 C50100EF SWI +453 \ 0000009C 001096E5 LDR R1,[R6, #+0] \ 000000A0 0070A0E1 MOV R7,R0 \ 000000A4 0500A0E1 MOV R0,R5 \ 000000A8 080200EF SWI +520 \ 000000AC 0080A0E1 MOV R8,R0 \ 000000B0 00009BE5 LDR R0,[R11, #+0] \ 000000B4 0D0080E2 ADD R0,R0,#+13 \ 000000B8 220000EF SWI +34 \ 000000BC ........ LDR R1,??DataTable167 ;; PopupBGCl \ 000000C0 043087E2 ADD R3,R7,#+4 \ 000000C4 0120A0E1 MOV R2,R1 \ 000000C8 04002DE9 PUSH {R2} \ 000000CC 02002DE9 PUSH {R1} \ 000000D0 080080E0 ADD R0,R0,R8 \ 000000D4 042080E2 ADD R2,R0,#+4 \ 000000D8 0000A0E3 MOV R0,#+0 \ 000000DC 0010A0E3 MOV R1,#+0 \ 000000E0 02002DE9 PUSH {R1} \ 000000E4 B40100EF SWI +436 4381 DrawImg(2,2,NumStatusToIconBar + IS_MSG);//GetImgWidth((int)S_ICONS[icn] \ 000000E8 00009BE5 LDR R0,[R11, #+0] \ 000000EC 0210A0E3 MOV R1,#+2 \ 000000F0 0D2080E2 ADD R2,R0,#+13 \ 000000F4 0100A0E1 MOV R0,R1 \ 000000F8 230000EF SWI +35 4382 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)); \ 000000FC 1700A0E3 MOV R0,#+23 \ 00000100 2E0100EF SWI +302 \ 00000104 0070A0E1 MOV R7,R0 \ 00000108 000096E5 LDR R0,[R6, #+0] \ 0000010C C50100EF SWI +453 \ 00000110 0080A0E1 MOV R8,R0 \ 00000114 00009BE5 LDR R0,[R11, #+0] \ 00000118 0D0080E2 ADD R0,R0,#+13 \ 0000011C 220000EF SWI +34 \ 00000120 001096E5 LDR R1,[R6, #+0] \ 00000124 0090A0E1 MOV R9,R0 \ 00000128 0500A0E1 MOV R0,R5 \ 0000012C 080200EF SWI +520 \ 00000130 00A0A0E1 MOV R10,R0 \ 00000134 00009BE5 LDR R0,[R11, #+0] \ 00000138 0D0080E2 ADD R0,R0,#+13 \ 0000013C 220000EF SWI +34 \ 00000140 60109FE5 LDR R1,??show_pp_sender_0+0x4 ;; PopupMsgCl \ 00000144 80002DE9 PUSH {R7} \ 00000148 02002DE9 PUSH {R1} \ 0000014C 0120A0E3 MOV R2,#+1 \ 00000150 0010A0E3 MOV R1,#+0 \ 00000154 02002DE9 PUSH {R1} \ 00000158 001096E5 LDR R1,[R6, #+0] \ 0000015C 02002DE9 PUSH {R1} \ 00000160 011088E2 ADD R1,R8,#+1 \ 00000164 02002DE9 PUSH {R1} \ 00000168 09108AE0 ADD R1,R10,R9 \ 0000016C 043081E2 ADD R3,R1,#+4 \ 00000170 041080E2 ADD R1,R0,#+4 \ 00000174 0500A0E1 MOV R0,R5 \ 00000178 4C0100EF SWI +332 4383 #else 4384 DrawRectangle(0,0,Get_WS_width(ws,PopupFont)+2,GetFontYSIZE(PopupFont)+2,0,PopupBGCl,PopupBGCl); 4385 DrawString(ws,1,1,1+Get_WS_width(ws,PopupFont)+2,1+GetFontYSIZE(PopupFont),PopupFont,0,PopupMsgCl,GetPaletteAdrByColorIndex(23)); 4386 #endif 4387 FreeWS(ws); \ 0000017C 0500A0E1 MOV R0,R5 \ 00000180 290100EF SWI +297 4388 GBS_StartTimerProc(&develop, 10, show_pp_sender); \ 00000184 20209FE5 LDR R2,??show_pp_sender_0+0x8 ;; show_pp_sender \ 00000188 0A10A0E3 MOV R1,#+10 \ 0000018C 0C00A0E3 MOV R0,#+12 \ 00000190 740D80E3 ORR R0,R0,#0x1D00 \ 00000194 040080E0 ADD R0,R0,R4 \ 00000198 4D0000EF SWI +77 \ 0000019C 20D08DE2 ADD SP,SP,#+32 4389 } 4390 } \ 000001A0 F38FBDE8 POP {R0,R1,R4-R11,PC} ;; return \ ??show_pp_sender_0: \ 000001A4 ........ DC32 `?_1` \ 000001A8 ........ DC32 PopupMsgCl \ 000001AC ........ DC32 show_pp_sender 4391 4392 4393 //----------------------------------------------------------------------------------------// 4394 4395 \ In segment CODE, align 4, keep-with-next 4396 void Get_Online_total() 4397 { 4398 CLIST *t; 4399 kopa_online=0; \ Get_Online_total: \ 00000000 ........ LDR R0,??DataTable169 ;; S_ICONS \ 00000004 0010A0E3 MOV R1,#+0 \ 00000008 241380E5 STR R1,[R0, #+804] 4400 kopa_kontaktu=0; \ 0000000C 281380E5 STR R1,[R0, #+808] 4401 t=(CLIST *)(&cltop); \ 00000010 C31F80E2 ADD R1,R0,#+780 \ 00000014 FF30A0E3 MOV R3,#+255 \ 00000018 FF3C83E3 ORR R3,R3,#0xFF00 \ 0000001C 0A0000EA B ??Get_Online_total_0 4402 while(t=(CLIST *)(t->next)) 4403 { 4404 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 4405 { 4406 kopa_online++; \ 0000002C 242390E5 LDR R2,[R0, #+804] \ 00000030 012082E2 ADD R2,R2,#+1 \ 00000034 242380E5 STR R2,[R0, #+804] 4407 if (t->state!=65535) kopa_kontaktu++; \ 00000038 B425D1E1 LDRH R2,[R1, #+84] \ 0000003C 030052E1 CMP R2,R3 \ 00000040 28239015 LDRNE R2,[R0, #+808] \ 00000044 01208212 ADDNE R2,R2,#+1 \ 00000048 28238015 STRNE R2,[R0, #+808] 4408 } 4409 } \ ??Get_Online_total_0: \ 0000004C 001091E5 LDR R1,[R1, #+0] \ 00000050 000051E3 CMP R1,#+0 \ 00000054 F1FFFF1A BNE ??Get_Online_total_1 4410 } \ 00000058 1EFF2FE1 BX LR ;; return 4411 4412 4413 //-------------------------------------------------------------------------------------------// 4414 4415 \ In segment CODE, align 4, keep-with-next 4416 void SetIndividStatus()//set to all contact to default vibra, sound and other by kluchnik 04.04.08 4417 { 4418 CLIST *t; 4419 t=(CLIST *)(&cltop); \ SetIndividStatus: \ 00000000 ........ LDR R0,??DataTable169 ;; S_ICONS \ 00000004 C31F80E2 ADD R1,R0,#+780 \ 00000008 0B0000EA B ??SetIndividStatus_0 4420 while(t=(CLIST *)(t->next)) 4421 { 4422 if (!t->isgroup) \ ??SetIndividStatus_1: \ 0000000C 082091E5 LDR R2,[R1, #+8] \ 00000010 000052E3 CMP R2,#+0 \ 00000014 0800001A BNE ??SetIndividStatus_0 4423 { 4424 t->isvibra=1; \ 00000018 0120A0E3 MOV R2,#+1 \ 0000001C 5C2081E5 STR R2,[R1, #+92] 4425 t->issound=1; \ 00000020 602081E5 STR R2,[R1, #+96] 4426 t->isShowXst=Show_XTX; \ 00000024 A03290E5 LDR R3,[R0, #+672] \ 00000028 6C3081E5 STR R3,[R1, #+108] 4427 #ifdef kluchnik 4428 t->isLoadHistory=1; 4429 #endif 4430 t->signals=1; \ 0000002C 702081E5 STR R2,[R1, #+112] 4431 t->isaccess=1; \ 00000030 742081E5 STR R2,[R1, #+116] 4432 4433 t->automsgcount=0; \ 00000034 0020A0E3 MOV R2,#+0 \ 00000038 782081E5 STR R2,[R1, #+120] 4434 } 4435 } \ ??SetIndividStatus_0: \ 0000003C 001091E5 LDR R1,[R1, #+0] \ 00000040 000051E3 CMP R1,#+0 \ 00000044 F0FFFF1A BNE ??SetIndividStatus_1 4436 } \ 00000048 1EFF2FE1 BX LR ;; return 4437 4438 //-------------------------------------------------------------------------------------------// 4439 4440 \ In segment CODE, align 4, keep-with-next 4441 ProcessPacket(TPKT *p) 4442 { \ ProcessPacket: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 4EDF4DE2 SUB SP,SP,#+312 4443 CLIST *t; 4444 LOGQ *q; 4445 char s[256]; 4446 switch(p->pkt.type) \ 00000008 CCAA9FE5 LDR R10,??ProcessPacket_1+0x4 ;; ILL_RECV_FADE \ 0000000C ........ LDR R5,??DataTable186 ;; Canvas \ 00000010 ........ LDR R7,??DataTable183 ;; 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 A402008A 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 1D010E00A002 DC16 +285,+14,+672,+672 \ A002 \ 0000004C 1100A0024D00 DC16 +17,+672,+77,+672 \ A002 \ 00000054 A002A002A002 DC16 +672,+672,+672,+672 \ A002 \ 0000005C A00208020802 DC16 +672,+520,+520,+672 \ A002 \ 00000064 A0023D004B00 DC16 +672,+61,+75,+672 \ A002 \ 0000006C A002A0023802 DC16 +672,+672,+568,+672 \ A002 \ 00000074 A002A002A002 DC16 +672,+672,+672,+672 \ A002 \ 0000007C 9E020000 DC16 +670,+0 4447 { 4448 case T_LOGIN: 4449 set_my_status(); \ ??ProcessPacket_3: \ 00000080 ........ BL set_my_status 4450 set_my_xstatus(); \ 00000084 ........ BL set_my_xstatus \ 00000088 8E0200EA B ??ProcessPacket_2 4451 break; 4452 case T_CLENTRY: 4453 if (p->pkt.uin) \ ??ProcessPacket_4: \ 0000008C 000050E3 CMP R0,#+0 \ 00000090 1800000A BEQ ??ProcessPacket_5 4454 { 4455 if ((t=FindContactByUin(p->pkt.uin))) \ 00000094 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000098 0080B0E1 MOVS R8,R0 \ 0000009C 0E00000A BEQ ??ProcessPacket_6 4456 { 4457 // t->state=0xFFFF; 4458 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 4459 t->group=GROUP_CACHE; \ ??ProcessPacket_7: \ 000000BC 100397E5 LDR R0,[R7, #+784] \ 000000C0 100088E5 STR R0,[R8, #+16] 4460 ChangeContactPos(t); \ ??ProcessPacket_8: \ 000000C4 0800A0E1 MOV R0,R8 \ 000000C8 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 4461 RecountMenu(t,1); \ 000000CC 0110A0E3 MOV R1,#+1 \ 000000D0 0800A0E1 MOV R0,R8 \ ??ProcessPacket_9: \ 000000D4 ........ BL RecountMenu \ 000000D8 7A0200EA B ??ProcessPacket_2 4462 } 4463 else 4464 { 4465 RecountMenu(AddContact(p->pkt.uin,p->data, GROUP_CACHE, 0),1); \ ??ProcessPacket_6: \ 000000DC 102397E5 LDR R2,[R7, #+784] \ 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 4466 } 4467 } 4468 else 4469 { 4470 if(VIBR_ON_CONNECT) \ ??ProcessPacket_5: \ 000000F8 ........ LDR R0,??DataTable172 ;; VIBR_ON_CONNECT \ 000000FC 000090E5 LDR R0,[R0, #+0] \ 00000100 000050E3 CMP R0,#+0 \ 00000104 0100000A BEQ ??ProcessPacket_10 4471 { 4472 vibra_count=1; \ 00000108 D46287E5 STR R6,[R7, #+724] 4473 start_vibra(); \ 0000010C ........ BL start_vibra 4474 } 4475 GROUP_CACHE=0; \ ??ProcessPacket_10: \ 00000110 109387E5 STR R9,[R7, #+784] 4476 ask_my_info(); 4477 if (contactlist_menu_id) \ 00000114 140397E5 LDR R0,[R7, #+788] \ 00000118 000050E3 CMP R0,#+0 \ 0000011C 0200000A BEQ ??ProcessPacket_11 4478 { 4479 RecountMenu(NULL,1); \ 00000120 0110A0E3 MOV R1,#+1 \ 00000124 0900A0E1 MOV R0,R9 \ ??ProcessPacket_12: \ 00000128 E9FFFFEA B ??ProcessPacket_9 4480 } 4481 else 4482 { 4483 unhooked2=1; \ ??ProcessPacket_11: \ 0000012C 906387E5 STR R6,[R7, #+912] 4484 create_contactlist_menu(); \ 00000130 ........ BL create_contactlist_menu 4485 SetIndividStatus(); \ 00000134 ........ BL SetIndividStatus \ 00000138 620200EA B ??ProcessPacket_2 4486 } 4487 } 4488 break; 4489 case T_GROUPID: 4490 if (t=FindGroupByID(GROUP_CACHE=p->pkt.uin)) \ ??ProcessPacket_13: \ 0000013C 100387E5 STR R0,[R7, #+784] \ 00000140 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 00000144 0080B0E1 MOVS R8,R0 \ 00000148 0400000A BEQ ??ProcessPacket_14 4491 { 4492 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 4493 ChangeContactPos(t); \ 0000015C D8FFFFEA B ??ProcessPacket_8 4494 RecountMenu(t,1); 4495 } 4496 else 4497 { 4498 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 4499 } 4500 break; 4501 case T_GROUPFOLLOW: 4502 GROUP_CACHE=p->pkt.uin; \ ??ProcessPacket_15: \ 00000174 100387E5 STR R0,[R7, #+784] \ 00000178 520200EA B ??ProcessPacket_2 4503 break; 4504 case T_STATUSCHANGE: 4505 t=FindContactByUin(p->pkt.uin); \ ??ProcessPacket_16: \ 0000017C ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000180 0080B0E1 MOVS R8,R0 4506 if (t) \ 00000184 4F02000A BEQ ??ProcessPacket_2 4507 { 4508 int i=t->state; \ 00000188 B415D8E1 LDRH R1,[R8, #+84] 4509 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 4510 if (t->xstate!=p->data[2]) // Если картинка икс статуса сменилась 4511 { 4512 t->xstate=p->data[2]; \ 000001A4 B605C8E1 STRH R0,[R8, #+86] 4513 FreeXText(t); \ 000001A8 0800A0E1 MOV R0,R8 \ 000001AC ........ _BLF FreeXText,??FreeXText??rA 4514 if (t->xstate && ENA_AUTO_XTXT) // Если установлен икс статус и можно запрашивать по смене икс статуса :) \ 000001B0 B605D8E1 LDRH R0,[R8, #+86] \ 000001B4 000050E3 CMP R0,#+0 \ 000001B8 1600000A BEQ ??ProcessPacket_18 \ 000001BC 1C099FE5 LDR R0,??ProcessPacket_1+0x8 ;; ENA_AUTO_XTXT \ 000001C0 000090E5 LDR R0,[R0, #+0] \ 000001C4 000050E3 CMP R0,#+0 \ 000001C8 1200000A BEQ ??ProcessPacket_18 4515 { 4516 t->req_xtext=1; \ 000001CC AC6088E5 STR R6,[R8, #+172] 4517 if (edchat_id) // Если открыт чат \ 000001D0 180397E5 LDR R0,[R7, #+792] \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 0F00000A BEQ ??ProcessPacket_17 4518 { 4519 void *data=FindGUIbyId(edchat_id,NULL); \ 000001DC 180397E5 LDR R0,[R7, #+792] \ 000001E0 0010A0E3 MOV R1,#+0 \ 000001E4 090200EF SWI +521 4520 if (data) \ 000001E8 000050E3 CMP R0,#+0 \ 000001EC 0A00000A BEQ ??ProcessPacket_17 4521 { 4522 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); \ 000001F0 DF0100EF SWI +479 4523 if (ed_struct) \ 000001F4 000050E3 CMP R0,#+0 \ 000001F8 0700000A BEQ ??ProcessPacket_17 4524 { 4525 if (ed_struct->ed_contact==t) // Если наш чат то запрашиваем текст статуса \ 000001FC 000090E5 LDR R0,[R0, #+0] \ 00000200 080050E1 CMP R0,R8 \ 00000204 0400001A BNE ??ProcessPacket_17 4526 { 4527 t->req_xtext=0; \ 00000208 AC9088E5 STR R9,[R8, #+172] 4528 RequestXText(t->uin); \ 0000020C 0C0098E5 LDR R0,[R8, #+12] \ 00000210 ........ BL RequestXText \ 00000214 000000EA B ??ProcessPacket_17 4529 } 4530 } 4531 } 4532 } 4533 } 4534 else // Если икс статус не установлен то на всякий случай снимаем флаг получения текста 4535 { 4536 t->req_xtext=0; \ ??ProcessPacket_18: \ 00000218 AC9088E5 STR R9,[R8, #+172] 4537 } 4538 } 4539 if (contactlist_menu_id) \ ??ProcessPacket_17: \ 0000021C 140397E5 LDR R0,[R7, #+788] \ 00000220 000050E3 CMP R0,#+0 \ 00000224 0500000A BEQ ??ProcessPacket_19 4540 { 4541 oldt=FindContactByN(GetCurMenuItem(FindGUIbyId(contactlist_menu_id,NULL))); \ 00000228 140397E5 LDR R0,[R7, #+788] \ 0000022C 0010A0E3 MOV R1,#+0 \ 00000230 090200EF SWI +521 \ 00000234 8F0100EF SWI +399 \ 00000238 ........ _BLF FindContactByN,??FindContactByN??rA \ 0000023C 00B0A0E1 MOV R11,R0 4542 } 4543 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] 4544 t->state=*((unsigned short *)(p->data)); \ 00000254 B800D4E1 LDRH R0,[R4, #+8] \ 00000258 B405C8E1 STRH R0,[R8, #+84] 4545 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 4546 { 4547 t->just_now=2; \ 0000026C 0200A003 MOVEQ R0,#+2 \ 00000270 68008805 STREQ R0,[R8, #+104] 4548 t->change=0; \ 00000274 7C908805 STREQ R9,[R8, #+124] 4549 } 4550 LogStatusChange(t); \ ??ProcessPacket_20: \ 00000278 0800A0E1 MOV R0,R8 \ 0000027C ........ _BLF LogStatusChange,??LogStatusChange??rA 4551 ChangeContactPos(t); \ 00000280 0800A0E1 MOV R0,R8 \ 00000284 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 4552 RecountMenu(oldt,1); \ 00000288 0110A0E3 MOV R1,#+1 \ 0000028C 0B00A0E1 MOV R0,R11 \ 00000290 ........ BL RecountMenu 4553 4554 if(isLogStatusChange)//isLogStatusChange // by kluchnik 05.04.08 \ 00000294 ........ LDR R0,??DataTable173 ;; isLogStatusChange \ 00000298 000090E5 LDR R0,[R0, #+0] \ 0000029C 000050E3 CMP R0,#+0 \ 000002A0 2B00000A BEQ ??ProcessPacket_21 4555 { 4556 char *s=GetStatusByIconIndex(GetIconIndex(t)); \ 000002A4 0800A0E1 MOV R0,R8 \ 000002A8 ........ BL GetIconIndex \ 000002AC ........ BL GetStatusByIconIndex \ 000002B0 00008DE5 STR R0,[SP, #+0] 4557 FreeXText2(t); \ 000002B4 0800A0E1 MOV R0,R8 \ 000002B8 ........ BL FreeXText2 4558 TTime time; 4559 GetDateTime(NULL,&time); \ 000002BC 08108DE2 ADD R1,SP,#+8 \ 000002C0 0000A0E3 MOV R0,#+0 \ 000002C4 B40000EF SWI +180 4560 char *txt=malloc(64); \ 000002C8 4000A0E3 MOV R0,#+64 \ 000002CC 140000EF SWI +20 \ 000002D0 00B0A0E1 MOV R11,R0 4561 sprintf(txt," %s: %02d:%02d:%02d",s,time.hour,time.min,time.sec); \ 000002D4 0A00DDE5 LDRB R0,[SP, #+10] \ 000002D8 571F85E2 ADD R1,R5,#+348 \ 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 4562 t->xtext2=malloc(64); \ 000002F8 4000A0E3 MOV R0,#+64 \ 000002FC 140000EF SWI +20 \ 00000300 A80088E5 STR R0,[R8, #+168] 4563 snprintf(t->xtext2,64,txt); \ 00000304 0B20A0E1 MOV R2,R11 \ 00000308 4010A0E3 MOV R1,#+64 \ 0000030C 1B0100EF SWI +283 4564 AddStringToLog(t,0x03,txt,"Status change",0xFFFFFFFF, 0); \ 00000310 0900A0E1 MOV R0,R9 \ 00000314 01002DE9 PUSH {R0} \ 00000318 5C3F85E2 ADD R3,R5,#+368 \ 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 4565 ReqAddMsgToChat(t); \ 00000334 0800A0E1 MOV R0,R8 \ 00000338 ........ BL ReqAddMsgToChat 4566 RecountMenu(NULL, 0); \ 0000033C 0910A0E1 MOV R1,R9 \ 00000340 0100A0E1 MOV R0,R1 \ 00000344 ........ BL RecountMenu 4567 mfree(txt); \ 00000348 0B00A0E1 MOV R0,R11 \ 0000034C 150000EF SWI +21 \ 00000350 10D08DE2 ADD SP,SP,#+16 4568 } 4569 4570 if ((t->state!=0xFFFF)&&(i==0xFFFF))//Звук \ ??ProcessPacket_21: \ 00000354 B405D8E1 LDRH R0,[R8, #+84] \ 00000358 0A0050E1 CMP R0,R10 \ 0000035C 3900000A BEQ ??ProcessPacket_22 \ 00000360 04109DE5 LDR R1,[SP, #+4] \ 00000364 0A0051E1 CMP R1,R10 \ 00000368 3600001A BNE ??ProcessPacket_22 4571 { 4572 if(Is_INC_On && (PopupShow==2 || PopupShow==3)) \ 0000036C 580297E5 LDR R0,[R7, #+600] \ 00000370 000050E3 CMP R0,#+0 \ 00000374 0E00000A BEQ ??ProcessPacket_23 \ 00000378 64079FE5 LDR R0,??ProcessPacket_1+0xC ;; PopupShow \ 0000037C 000090E5 LDR R0,[R0, #+0] \ 00000380 020050E3 CMP R0,#+2 \ 00000384 03005013 CMPNE R0,#+3 \ 00000388 0900001A BNE ??ProcessPacket_23 4573 { 4574 INC_show2=20; 4575 sprintf(onContact,PopupOnlineString,t->name); \ 0000038C 54179FE5 LDR R1,??ProcessPacket_1+0x10 ;; PopupOnlineString \ 00000390 1400A0E3 MOV R0,#+20 \ 00000394 BC0387E5 STR R0,[R7, #+956] \ 00000398 142088E2 ADD R2,R8,#+20 \ 0000039C B400A0E3 MOV R0,#+180 \ 000003A0 780D80E3 ORR R0,R0,#0x1E00 \ 000003A4 070080E0 ADD R0,R0,R7 \ 000003A8 160000EF SWI +22 4576 show_on_contact(); \ 000003AC ........ BL show_on_contact \ 000003B0 030000EA B ??ProcessPacket_24 4577 } 4578 else 4579 GBS_DelTimer(&incs2);//на всяк \ ??ProcessPacket_23: \ 000003B4 F400A0E3 MOV R0,#+244 \ 000003B8 780D80E3 ORR R0,R0,#0x1E00 \ 000003BC 070080E0 ADD R0,R0,R7 \ 000003C0 8C0100EF SWI +396 4580 if(!extended_sounds) \ ??ProcessPacket_24: \ 000003C4 ........ LDR R0,??DataTable174 ;; extended_sounds \ 000003C8 1CA79FE5 LDR R10,??ProcessPacket_1+0x14 ;; sndGlobal \ 000003CC 000090E5 LDR R0,[R0, #+0] \ 000003D0 000050E3 CMP R0,#+0 \ 000003D4 0200001A BNE ??ProcessPacket_25 4581 { 4582 Play(sndGlobal); \ 000003D8 0A00A0E1 MOV R0,R10 \ 000003DC ........ BL Play \ 000003E0 260000EA B ??ProcessPacket_26 4583 } 4584 else 4585 { 4586 FSTATS stat; 4587 int fsize; 4588 unsigned int ul = 0; 4589 uins=t->uin; 4590 sprintf(talk_sound, "%s%d.wav", sndGlobal2, uins); \ ??ProcessPacket_25: \ 000003E4 04279FE5 LDR R2,??ProcessPacket_1+0x18 ;; sndGlobal2 \ 000003E8 00908DE5 STR R9,[SP, #+0] \ 000003EC 0C0098E5 LDR R0,[R8, #+12] \ 000003F0 2490A0E3 MOV R9,#+36 \ 000003F4 480287E5 STR R0,[R7, #+584] \ 000003F8 509E89E3 ORR R9,R9,#0x500 \ 000003FC 0030A0E1 MOV R3,R0 \ 00000400 4B1F85E2 ADD R1,R5,#+300 \ 00000404 070089E0 ADD R0,R9,R7 \ 00000408 160000EF SWI +22 4591 GetFileStats(talk_sound,&stat,&ul); \ 0000040C 0D20A0E1 MOV R2,SP \ 00000410 441F8DE2 ADD R1,SP,#+272 \ 00000414 070089E0 ADD R0,R9,R7 \ 00000418 840000EF SWI +132 4592 fsize=stat.size; 4593 if(fsize>0) \ 0000041C 14019DE5 LDR R0,[SP, #+276] \ 00000420 010050E3 CMP R0,#+1 4594 Play(talk_sound); \ 00000424 070089A0 ADDGE R0,R9,R7 4595 else 4596 Play(sndGlobal); \ 00000428 0A00A0B1 MOVLT R0,R10 \ 0000042C ........ BL Play 4597 t->isvibra=1; \ 00000430 5C6088E5 STR R6,[R8, #+92] 4598 t->issound=1; \ 00000434 606088E5 STR R6,[R8, #+96] 4599 t->isShowXst=Show_XTX; \ 00000438 A00297E5 LDR R0,[R7, #+672] \ 0000043C 6C0088E5 STR R0,[R8, #+108] 4600 #ifdef kluchnik 4601 t->isLoadHistory=1; 4602 #endif 4603 t->signals=1; \ 00000440 706088E5 STR R6,[R8, #+112] \ 00000444 0D0000EA B ??ProcessPacket_26 4604 } 4605 } 4606 4607 if ((i!=0xFFFF)&&(t->state==0xFFFF))//Звук \ ??ProcessPacket_22: \ 00000448 04109DE5 LDR R1,[SP, #+4] \ 0000044C 0A0051E1 CMP R1,R10 \ 00000450 0A00000A BEQ ??ProcessPacket_26 \ 00000454 0A0050E1 CMP R0,R10 \ 00000458 0800001A BNE ??ProcessPacket_26 4608 { 4609 Play(sndSrvMsg); \ 0000045C 90069FE5 LDR R0,??ProcessPacket_1+0x1C ;; sndSrvMsg \ 00000460 ........ BL Play 4610 if(TIME_OR_MSG==2 || TIME_OR_MSG==3 | TIME_OR_MSG==4) \ 00000464 ........ LDR R0,??DataTable175 ;; TIME_OR_MSG \ 00000468 000090E5 LDR R0,[R0, #+0] \ 0000046C 020050E3 CMP R0,#+2 \ 00000470 03005013 CMPNE R0,#+3 \ 00000474 04005013 CMPNE R0,#+4 \ 00000478 0000001A BNE ??ProcessPacket_26 4611 Get_Online_total(); \ 0000047C ........ BL Get_Online_total 4612 } 4613 4614 if (edchat_id) \ ??ProcessPacket_26: \ 00000480 180397E5 LDR R0,[R7, #+792] \ 00000484 000050E3 CMP R0,#+0 \ 00000488 8E01000A BEQ ??ProcessPacket_2 4615 { 4616 void *data=FindGUIbyId(edchat_id,NULL); \ 0000048C 180397E5 LDR R0,[R7, #+792] \ 00000490 0010A0E3 MOV R1,#+0 \ 00000494 090200EF SWI +521 4617 { 4618 EDCHAT_STRUCT *ed_struct; 4619 ed_struct=EDIT_GetUserPointer(data); \ 00000498 DF0100EF SWI +479 4620 if (ed_struct) \ 0000049C 000050E3 CMP R0,#+0 \ 000004A0 8801000A BEQ ??ProcessPacket_2 4621 { 4622 if (ed_struct->ed_contact==t) \ 000004A4 000090E5 LDR R0,[R0, #+0] \ 000004A8 080050E1 CMP R0,R8 \ 000004AC 8501001A BNE ??ProcessPacket_2 4623 { 4624 DirectRedrawGUI_ID(edchat_id); \ 000004B0 180397E5 LDR R0,[R7, #+792] \ 000004B4 400100EF SWI +320 \ 000004B8 820100EA B ??ProcessPacket_2 4625 } 4626 } 4627 } 4628 } 4629 } 4630 break; 4631 case T_RECVMSG: 4632 NEW_MSG=1; \ ??ProcessPacket_27: \ 000004BC AC6387E5 STR R6,[R7, #+940] 4633 t=FindContactByUin(p->pkt.uin); \ 000004C0 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 000004C4 0080B0E1 MOVS R8,R0 4634 if (!t) \ 000004C8 0900001A BNE ??ProcessPacket_28 4635 { 4636 sprintf(s,percent_d,p->pkt.uin); \ 000004CC 002094E5 LDR R2,[R4, #+0] \ 000004D0 1B1085E2 ADD R1,R5,#+27 \ 000004D4 10008DE2 ADD R0,SP,#+16 \ 000004D8 160000EF SWI +22 4637 t=AddContact(p->pkt.uin,s,GROUP_CACHE,0); \ 000004DC 102397E5 LDR R2,[R7, #+784] \ 000004E0 000094E5 LDR R0,[R4, #+0] \ 000004E4 0030A0E3 MOV R3,#+0 \ 000004E8 10108DE2 ADD R1,SP,#+16 \ 000004EC ........ _BLF AddContact,??AddContact??rA \ 000004F0 0080A0E1 MOV R8,R0 4638 } 4639 #ifdef kluchnik 4640 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_29: \ 00000520 0C10A0E3 MOV R1,#+12 \ 00000524 741D81E3 ORR R1,R1,#0x1D00 \ 00000528 071081E0 ADD R1,R1,R7 \ 0000052C 00108DE5 STR R1,[SP, #+0] \ 00000530 1400D8E5 LDRB R0,[R8, #+20] \ 00000534 230050E3 CMP R0,#+35 \ 00000538 1700001A BNE ??ProcessPacket_30 4647 { 4648 //Если это конференция, патчим имя 4649 char *s=strchr(p->data,'>'); \ 0000053C 3E10A0E3 MOV R1,#+62 \ 00000540 080084E2 ADD R0,R4,#+8 \ 00000544 180000EF SWI +24 4650 //Если нашли символ > и после него пробел и ник короче 16 символов 4651 if (s) \ 00000548 000050E3 CMP R0,#+0 \ 0000054C 1200000A BEQ ??ProcessPacket_30 4652 { 4653 if ((s[1]==' ')&&((s-p->data)<16)) \ 00000550 0110D0E5 LDRB R1,[R0, #+1] \ 00000554 200051E3 CMP R1,#+32 \ 00000558 0F00001A BNE ??ProcessPacket_30 \ 0000055C 081084E2 ADD R1,R4,#+8 \ 00000560 011040E0 SUB R1,R0,R1 \ 00000564 100051E3 CMP R1,#+16 \ 00000568 0B0000AA BGE ??ProcessPacket_30 4654 { 4655 *s=0; //Режем строку \ 0000056C 0090C0E5 STRB R9,[R0, #+0] 4656 AddStringToLog(t,0x02,s+2,p->data,0xFFFFFFFF,1); //Добавляем имя из текста сообщения \ 00000570 0110A0E3 MOV R1,#+1 \ 00000574 02002DE9 PUSH {R1} \ 00000578 083084E2 ADD R3,R4,#+8 \ 0000057C 022080E2 ADD R2,R0,#+2 \ 00000580 0800A0E1 MOV R0,R8 \ 00000584 001061E2 RSB R1,R1,#+0 \ 00000588 02002DE9 PUSH {R1} \ 0000058C 0210A0E3 MOV R1,#+2 \ 00000590 ........ BL AddStringToLog 4657 goto L1; \ 00000594 08D08DE2 ADD SP,SP,#+8 \ 00000598 7D0000EA B ??ProcessPacket_31 4658 } 4659 } 4660 } 4661 4662 //=================== tas bus jautri ===================// 4663 4664 comanda=1; \ ??ProcessPacket_30: \ 0000059C B46387E5 STR R6,[R7, #+948] 4665 CheckComand(p->data, t); \ 000005A0 0810A0E1 MOV R1,R8 \ 000005A4 4C559FE5 LDR R5,??ProcessPacket_1+0x20 ;; ILL_KEYS_RECV \ 000005A8 4CB59FE5 LDR R11,??ProcessPacket_1+0x24 ;; ILL_RECV_TMR \ 000005AC 080084E2 ADD R0,R4,#+8 \ 000005B0 ........ BL CheckComand \ 000005B4 703098E5 LDR R3,[R8, #+112] \ 000005B8 ........ LDR R0,??DataTable177 ;; automsgcount \ 000005BC ........ LDR R1,??DataTable178 ;; VIBR_TYPE \ 000005C0 000053E3 CMP R3,#+0 \ 000005C4 74309815 LDRNE R3,[R8, #+116] \ 000005C8 5A2FA0E3 MOV R2,#+360 \ 000005CC 00005313 CMPNE R3,#+0 \ 000005D0 1100000A BEQ ??ProcessPacket_32 4666 if(t->signals && t->isaccess) 4667 { 4668 #ifdef NEWSGOLD 4669 scrsTime=0; 4670 #endif 4671 if(SHOW_ACTIVE) \ 000005D4 ........ LDR R3,??DataTable181 ;; SHOW_ACTIVE \ 000005D8 8C9287E5 STR R9,[R7, #+652] \ 000005DC 003093E5 LDR R3,[R3, #+0] \ 000005E0 000053E3 CMP R3,#+0 4672 t->isactive=ACTIVE_TIME; \ 000005E4 9C208815 STRNE R2,[R8, #+156] 4673 if(t->isvibra) \ 000005E8 5C2098E5 LDR R2,[R8, #+92] \ 000005EC 000052E3 CMP R2,#+0 \ 000005F0 2800000A BEQ ??ProcessPacket_33 4674 { 4675 if(VIBR_TYPE) \ 000005F4 001091E5 LDR R1,[R1, #+0] \ 000005F8 000051E3 CMP R1,#+0 4676 vibra_count=2; \ 000005FC 0210A013 MOVNE R1,#+2 \ 00000600 D4128715 STRNE R1,[R7, #+724] 4677 else 4678 vibra_count=1; \ 00000604 D4628705 STREQ R6,[R7, #+724] 4679 if(t->automsgcountisIndividSet) \ ??ProcessPacket_32: \ 0000061C 583098E5 LDR R3,[R8, #+88] \ 00000620 8C9287E5 STR R9,[R7, #+652] \ 00000624 000053E3 CMP R3,#+0 \ 00000628 0C00000A BEQ ??ProcessPacket_35 4696 { 4697 #ifdef NEWSGOLD 4698 scrsTime=0; 4699 #endif 4700 if(SHOW_ACTIVE) \ 0000062C ........ LDR R0,??DataTable181 ;; SHOW_ACTIVE \ 00000630 000090E5 LDR R0,[R0, #+0] \ 00000634 000050E3 CMP R0,#+0 4701 t->isactive=ACTIVE_TIME; \ 00000638 9C208815 STRNE R2,[R8, #+156] 4702 if(t->isvibra) \ 0000063C 5C0098E5 LDR R0,[R8, #+92] \ 00000640 000050E3 CMP R0,#+0 \ 00000644 1300000A BEQ ??ProcessPacket_33 4703 { 4704 if(VIBR_TYPE) \ 00000648 000091E5 LDR R0,[R1, #+0] \ 0000064C 000050E3 CMP R0,#+0 4705 vibra_count=2; \ 00000650 0200A013 MOVNE R0,#+2 \ 00000654 D4028715 STRNE R0,[R7, #+724] 4706 else 4707 vibra_count=1; \ 00000658 D4628705 STREQ R6,[R7, #+724] 4708 if(t->automsgcount < automsgcount && away_m) 4709 start_vibra(); \ 0000065C 0C0000EA B ??ProcessPacket_34 4710 else 4711 start_vibra(); 4712 } 4713 #ifdef ELKA 4714 if(SLI_TYPE) 4715 SLI_Timer(); 4716 #endif 4717 if(Is_Double_Vibra_On) 4718 { 4719 Reminder_timer(); 4720 } 4721 4722 if (Is_ILU_On) 4723 IlluminationOn(ILL_DISP_RECV,ILL_KEYS_RECV,ILL_RECV_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 4724 } 4725 else 4726 { 4727 #ifdef NEWSGOLD 4728 scrsTime=0; 4729 #endif 4730 if(SHOW_ACTIVE) \ ??ProcessPacket_35: \ 00000660 ........ LDR R3,??DataTable181 ;; SHOW_ACTIVE \ 00000664 003093E5 LDR R3,[R3, #+0] \ 00000668 000053E3 CMP R3,#+0 4731 t->isactive=ACTIVE_TIME; \ 0000066C 9C208815 STRNE R2,[R8, #+156] 4732 if(VIBR_TYPE) \ 00000670 001091E5 LDR R1,[R1, #+0] \ 00000674 000051E3 CMP R1,#+0 4733 vibra_count=2; \ 00000678 0210A013 MOVNE R1,#+2 \ 0000067C D4128715 STRNE R1,[R7, #+724] 4734 else 4735 vibra_count=1; \ 00000680 D4628705 STREQ R6,[R7, #+724] 4736 if(t->automsgcount >= automsgcount) vibra_count=0; \ 00000684 781098E5 LDR R1,[R8, #+120] \ 00000688 000090E5 LDR R0,[R0, #+0] \ 0000068C 000051E1 CMP R1,R0 \ 00000690 D4928725 STRCS R9,[R7, #+724] 4737 start_vibra(); \ ??ProcessPacket_34: \ 00000694 ........ BL start_vibra 4738 #ifdef ELKA 4739 if(SLI_TYPE) 4740 SLI_Timer(); 4741 #endif 4742 if(Is_Double_Vibra_On) \ ??ProcessPacket_33: \ 00000698 600297E5 LDR R0,[R7, #+608] \ 0000069C 000050E3 CMP R0,#+0 \ 000006A0 0000000A BEQ ??ProcessPacket_36 4743 { 4744 Reminder_timer(); \ 000006A4 ........ BL Reminder_timer 4745 } 4746 4747 if (Is_ILU_On) \ ??ProcessPacket_36: \ 000006A8 5C0297E5 LDR R0,[R7, #+604] \ 000006AC 000050E3 CMP R0,#+0 \ 000006B0 0500000A BEQ ??ProcessPacket_37 4748 IlluminationOn(ILL_DISP_RECV,ILL_KEYS_RECV,ILL_RECV_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 \ 000006B4 44049FE5 LDR R0,??ProcessPacket_1+0x28 ;; ILL_DISP_RECV \ 000006B8 00309AE5 LDR R3,[R10, #+0] \ 000006BC 00209BE5 LDR R2,[R11, #+0] \ 000006C0 001095E5 LDR R1,[R5, #+0] \ 000006C4 000090E5 LDR R0,[R0, #+0] \ 000006C8 ........ BL IlluminationOn 4749 } 4750 4751 if(comanda==1) \ ??ProcessPacket_37: \ 000006CC B40397E5 LDR R0,[R7, #+948] \ 000006D0 010050E3 CMP R0,#+1 \ 000006D4 2E00001A BNE ??ProcessPacket_31 4752 { 4753 AddStringToLog(t,0x02,p->data,t->name,0xFFFFFFFF,1); \ 000006D8 01002DE9 PUSH {R0} \ 000006DC 143088E2 ADD R3,R8,#+20 \ 000006E0 082084E2 ADD R2,R4,#+8 \ 000006E4 0210A0E3 MOV R1,#+2 \ 000006E8 000066E2 RSB R0,R6,#+0 \ 000006EC 01002DE9 PUSH {R0} \ 000006F0 0800A0E1 MOV R0,R8 \ 000006F4 ........ BL AddStringToLog 4754 main_count++; \ 000006F8 ........ LDR R0,??DataTable182 ;; main_count \ 000006FC 001090E5 LDR R1,[R0, #+0] \ 00000700 011081E2 ADD R1,R1,#+1 \ 00000704 001080E5 STR R1,[R0, #+0] 4755 if(Is_INC_On && (PopupShow==1 || PopupShow==3)) \ 00000708 580297E5 LDR R0,[R7, #+600] \ 0000070C 08D08DE2 ADD SP,SP,#+8 \ 00000710 000050E3 CMP R0,#+0 \ 00000714 1300000A BEQ ??ProcessPacket_38 \ 00000718 C4039FE5 LDR R0,??ProcessPacket_1+0xC ;; PopupShow \ 0000071C 000090E5 LDR R0,[R0, #+0] \ 00000720 010050E3 CMP R0,#+1 \ 00000724 03005013 CMPNE R0,#+3 \ 00000728 0E00001A BNE ??ProcessPacket_38 4756 { 4757 sprintf(show_nick,PopupMsgString,t->name); \ 0000072C D0139FE5 LDR R1,??ProcessPacket_1+0x2C ;; PopupMsgString \ 00000730 142088E2 ADD R2,R8,#+20 \ 00000734 9400A0E3 MOV R0,#+148 \ 00000738 780D80E3 ORR R0,R0,#0x1E00 \ 0000073C 070080E0 ADD R0,R0,R7 \ 00000740 160000EF SWI +22 4758 if(!IsIdleUiOnTop()&&(!saver_on)) \ 00000744 C50000EF SWI +197 \ 00000748 000050E3 CMP R0,#+0 \ 0000074C 4C029705 LDREQ R0,[R7, #+588] \ 00000750 00005003 CMPEQ R0,#+0 \ 00000754 0500001A BNE ??ProcessPacket_39 4759 { 4760 INC_show=20; \ 00000758 1400A0E3 MOV R0,#+20 \ 0000075C B80387E5 STR R0,[R7, #+952] 4761 show_pp_sender(); \ 00000760 ........ BL show_pp_sender \ 00000764 010000EA B ??ProcessPacket_39 4762 } 4763 } 4764 else 4765 GBS_DelTimer(&develop); \ ??ProcessPacket_38: \ 00000768 00009DE5 LDR R0,[SP, #+0] \ 0000076C 8C0100EF SWI +396 4766 4767 main_msg_timer2=main_msg_timer;//при получении сообщения восстанавливаем таймер \ ??ProcessPacket_39: \ 00000770 90039FE5 LDR R0,??ProcessPacket_1+0x30 ;; main_msg_timer \ 00000774 000090E5 LDR R0,[R0, #+0] \ 00000778 A80387E5 STR R0,[R7, #+936] 4768 if(Is_SMARTCPU_On) \ 0000077C 540297E5 LDR R0,[R7, #+596] \ 00000780 000050E3 CMP R0,#+0 \ 00000784 0200000A BEQ ??ProcessPacket_31 4769 AddToMain(t->name,p->data); \ 00000788 081084E2 ADD R1,R4,#+8 \ 0000078C 140088E2 ADD R0,R8,#+20 \ 00000790 ........ BL AddToMain 4770 } 4771 L1: 4772 //Разворачиваем группу, в которой пришло сообщение 4773 { 4774 CLIST *g=FindGroupByID(t->group); \ ??ProcessPacket_31: \ 00000794 100098E5 LDR R0,[R8, #+16] \ 00000798 ........ _BLF FindGroupByID,??FindGroupByID??rA 4775 if (g) \ 0000079C 000050E3 CMP R0,#+0 4776 { 4777 if (g->state) \ 000007A0 B415D011 LDRHNE R1,[R0, #+84] \ 000007A4 00005113 CMPNE R1,#+0 4778 { 4779 g->state=0; \ 000007A8 B495C011 STRHNE R9,[R0, #+84] 4780 } 4781 } 4782 } 4783 4784 ReqAddMsgToChat(t); \ 000007AC 0800A0E1 MOV R0,R8 \ 000007B0 ........ BL ReqAddMsgToChat 4785 RecountMenu(t,1); \ 000007B4 0110A0E3 MOV R1,#+1 \ 000007B8 0800A0E1 MOV R0,R8 \ 000007BC ........ BL RecountMenu 4786 4787 switch (DEVELOP_IF) \ 000007C0 44039FE5 LDR R0,??ProcessPacket_1+0x34 ;; DEVELOP_IF \ 000007C4 000090E5 LDR R0,[R0, #+0] \ 000007C8 000050E3 CMP R0,#+0 \ 000007CC 0400000A BEQ ??ProcessPacket_40 \ 000007D0 010050E2 SUBS R0,R0,#+1 \ 000007D4 0B00000A BEQ ??ProcessPacket_41 \ 000007D8 020050E2 SUBS R0,R0,#+2 \ 000007DC 1300000A BEQ ??ProcessPacket_42 \ 000007E0 B80000EA B ??ProcessPacket_2 4788 { 4789 case 0: 4790 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)) to_develop(); \ ??ProcessPacket_40: \ 000007E4 068100EF SWI +33030 \ 000007E8 080090E5 LDR R0,[R0, #+8] \ 000007EC 681297E5 LDR R1,[R7, #+616] \ 000007F0 0C0090E5 LDR R0,[R0, #+12] \ 000007F4 0C0090E5 LDR R0,[R0, #+12] \ 000007F8 010050E1 CMP R0,R1 \ ??ProcessPacket_43: \ 000007FC B100000A BEQ ??ProcessPacket_2 \ 00000800 ........ BL to_develop \ 00000804 AF0000EA B ??ProcessPacket_2 4791 break; 4792 case 1: 4793 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)&&(IsUnlocked())) to_develop(); \ ??ProcessPacket_41: \ 00000808 068100EF SWI +33030 \ 0000080C 080090E5 LDR R0,[R0, #+8] \ 00000810 681297E5 LDR R1,[R7, #+616] \ 00000814 0C0090E5 LDR R0,[R0, #+12] \ 00000818 0C0090E5 LDR R0,[R0, #+12] \ 0000081C 010050E1 CMP R0,R1 \ 00000820 A800000A BEQ ??ProcessPacket_2 \ 00000824 430000EF SWI +67 \ 00000828 000050E3 CMP R0,#+0 \ 0000082C F2FFFFEA B ??ProcessPacket_43 4794 break; 4795 case 2: 4796 break; 4797 case 3: 4798 GBS_DelTimer(&develop); \ ??ProcessPacket_42: \ 00000830 00009DE5 LDR R0,[SP, #+0] \ 00000834 8C0100EF SWI +396 4799 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)&&(!IsUnlocked())) begin_to_develop(); \ 00000838 068100EF SWI +33030 \ 0000083C 080090E5 LDR R0,[R0, #+8] \ 00000840 681297E5 LDR R1,[R7, #+616] \ 00000844 0C0090E5 LDR R0,[R0, #+12] \ 00000848 0C0090E5 LDR R0,[R0, #+12] \ 0000084C 010050E1 CMP R0,R1 \ 00000850 9C00000A BEQ ??ProcessPacket_2 \ 00000854 430000EF SWI +67 \ 00000858 000050E3 CMP R0,#+0 \ 0000085C 9900001A BNE ??ProcessPacket_2 \ 00000860 ........ BL begin_to_develop \ 00000864 970000EA B ??ProcessPacket_2 4800 break; 4801 } 4802 break; 4803 case T_SRV_ACK: 4804 case T_CLIENT_ACK: 4805 q=FindContactLOGQByAck(p); \ ??ProcessPacket_44: \ 00000868 0400A0E1 MOV R0,R4 \ 0000086C ........ BL FindContactLOGQByAck 4806 if (q) \ 00000870 000050E3 CMP R0,#+0 \ 00000874 9300000A BEQ ??ProcessPacket_2 4807 { 4808 q->acked=p->pkt.type==T_SRV_ACK?1:2; \ 00000878 B410D4E1 LDRH R1,[R4, #+4] \ 0000087C 100051E3 CMP R1,#+16 \ 00000880 0110A003 MOVEQ R1,#+1 \ 00000884 0210A013 MOVNE R1,#+2 \ 00000888 041080E5 STR R1,[R0, #+4] 4809 t=FindContactByUin(p->pkt.uin); \ 0000088C 000094E5 LDR R0,[R4, #+0] \ 00000890 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000894 0080A0E1 MOV R8,R0 4810 if (edchat_id) \ 00000898 180397E5 LDR R0,[R7, #+792] \ 0000089C 000050E3 CMP R0,#+0 \ 000008A0 8800000A BEQ ??ProcessPacket_2 4811 { 4812 void *data=FindGUIbyId(edchat_id,NULL); \ 000008A4 180397E5 LDR R0,[R7, #+792] \ 000008A8 0010A0E3 MOV R1,#+0 \ 000008AC 090200EF SWI +521 \ 000008B0 0050B0E1 MOVS R5,R0 4813 if (data) \ 000008B4 8300000A BEQ ??ProcessPacket_2 4814 { 4815 EDCHAT_STRUCT *ed_struct; 4816 ed_struct=EDIT_GetUserPointer(data); \ 000008B8 DF0100EF SWI +479 4817 if (ed_struct) \ 000008BC 000050E3 CMP R0,#+0 \ 000008C0 8000000A BEQ ??ProcessPacket_2 4818 { 4819 if (ed_struct->ed_contact==t) \ 000008C4 000090E5 LDR R0,[R0, #+0] \ 000008C8 080050E1 CMP R0,R8 \ 000008CC 7D00001A BNE ??ProcessPacket_2 4820 { 4821 if (EDIT_IsBusy(data)) \ 000008D0 0500A0E1 MOV R0,R5 \ 000008D4 1C0200EF SWI +540 \ 000008D8 000050E3 CMP R0,#+0 \ 000008DC 0300000A BEQ ??ProcessPacket_45 4822 { 4823 t->req_drawack=1; \ 000008E0 8C6088E5 STR R6,[R8, #+140] 4824 time_to_stop_t9=3; \ 000008E4 0300A0E3 MOV R0,#+3 \ 000008E8 B00387E5 STR R0,[R7, #+944] \ 000008EC 750000EA B ??ProcessPacket_2 4825 } 4826 else { 4827 DrawAck(data); \ ??ProcessPacket_45: \ 000008F0 0500A0E1 MOV R0,R5 \ 000008F4 ........ BL DrawAck 4828 if (p->pkt.type==T_SRV_ACK) \ 000008F8 B400D4E1 LDRH R0,[R4, #+4] \ 000008FC 100050E3 CMP R0,#+16 \ 00000900 7000001A BNE ??ProcessPacket_2 4829 IlluminationOn(ILL_DISP_SEND,ILL_KEYS_SEND,ILL_SEND_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 \ 00000904 04029FE5 LDR R0,??ProcessPacket_1+0x38 ;; ILL_SEND_TMR \ 00000908 00309AE5 LDR R3,[R10, #+0] \ 0000090C 002090E5 LDR R2,[R0, #+0] \ 00000910 FC019FE5 LDR R0,??ProcessPacket_1+0x3C ;; ILL_KEYS_SEND \ 00000914 001090E5 LDR R1,[R0, #+0] \ 00000918 F8019FE5 LDR R0,??ProcessPacket_1+0x40 ;; ILL_DISP_SEND \ 0000091C 000090E5 LDR R0,[R0, #+0] \ 00000920 ........ BL IlluminationOn \ 00000924 670000EA B ??ProcessPacket_2 4830 } 4831 } 4832 } 4833 } 4834 } 4835 } 4836 break; 4837 case T_XTEXT_ACK: 4838 t=FindContactByUin(p->pkt.uin); \ ??ProcessPacket_46: \ 00000928 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 0000092C 0080B0E1 MOVS R8,R0 4839 if (t) \ 00000930 6400000A BEQ ??ProcessPacket_2 4840 { 4841 int i; 4842 int j; 4843 FreeXText(t); \ 00000934 ........ _BLF FreeXText,??FreeXText??rA 4844 i=p->pkt.data_len; \ 00000938 B660D4E1 LDRH R6,[R4, #+6] 4845 memcpy(t->xtext=malloc(i),p->data,i); \ 0000093C 0600A0E1 MOV R0,R6 \ 00000940 140000EF SWI +20 \ 00000944 A40088E5 STR R0,[R8, #+164] \ 00000948 0620A0E1 MOV R2,R6 \ 0000094C 081084E2 ADD R1,R4,#+8 \ 00000950 1E0100EF SWI +286 4846 zeromem(s,256); \ 00000954 401FA0E3 MOV R1,#+256 \ 00000958 10008DE2 ADD R0,SP,#+16 \ 0000095C 1D0100EF SWI +285 4847 strcpy(s,t->name); \ 00000960 141088E2 ADD R1,R8,#+20 \ 00000964 10008DE2 ADD R0,SP,#+16 \ 00000968 1A0000EF SWI +26 4848 strcat(s,":\n"); \ 0000096C 591F8FE2 ADR R1,??ProcessPacket_1 ;; ":\n" \ 00000970 10008DE2 ADD R0,SP,#+16 \ 00000974 170000EF SWI +23 4849 i=strlen(s); \ 00000978 10008DE2 ADD R0,SP,#+16 \ 0000097C 1B0000EF SWI +27 4850 j=p->data[0]; \ 00000980 0860D4E5 LDRB R6,[R4, #+8] \ 00000984 0070A0E1 MOV R7,R0 4851 if (j>(255-i)) j=255-i; \ 00000988 FF0067E2 RSB R0,R7,#+255 \ 0000098C 060050E1 CMP R0,R6 \ 00000990 0060A0B1 MOVLT R6,R0 4852 strncpy(s+i,p->data+1,j); \ 00000994 0620A0E1 MOV R2,R6 \ 00000998 091084E2 ADD R1,R4,#+9 \ 0000099C 10008DE2 ADD R0,SP,#+16 \ 000009A0 000087E0 ADD R0,R7,R0 \ 000009A4 160100EF SWI +278 4853 i+=j; \ 000009A8 070086E0 ADD R0,R6,R7 4854 if (i<255) \ 000009AC FF0050E3 CMP R0,#+255 \ 000009B0 100000AA BGE ??ProcessPacket_47 4855 { 4856 s[i]='\n'; \ 000009B4 10108DE2 ADD R1,SP,#+16 \ 000009B8 0A20A0E3 MOV R2,#+10 \ 000009BC 0120C0E7 STRB R2,[R0, +R1] 4857 i++; \ 000009C0 0810D4E5 LDRB R1,[R4, #+8] \ 000009C4 B620D4E1 LDRH R2,[R4, #+6] \ 000009C8 010080E2 ADD R0,R0,#+1 4858 j=p->pkt.data_len-p->data[0]-1; 4859 if (j>(255-i)) j=255-i; 4860 strncpy(s+i,p->data+p->data[0]+1,j); \ 000009CC 10308DE2 ADD R3,SP,#+16 \ 000009D0 012042E0 SUB R2,R2,R1 \ 000009D4 016042E2 SUB R6,R2,#+1 \ 000009D8 FF2060E2 RSB R2,R0,#+255 \ 000009DC 060052E1 CMP R2,R6 \ 000009E0 0260A0B1 MOVLT R6,R2 \ 000009E4 0620A0E1 MOV R2,R6 \ 000009E8 041081E0 ADD R1,R1,R4 \ 000009EC 091081E2 ADD R1,R1,#+9 \ 000009F0 030080E0 ADD R0,R0,R3 \ 000009F4 160100EF SWI +278 4861 } 4862 4863 zeromem(s,256); \ ??ProcessPacket_47: \ 000009F8 401FA0E3 MOV R1,#+256 \ 000009FC 10008DE2 ADD R0,SP,#+16 \ 00000A00 1D0100EF SWI +285 4864 i=0; 4865 j=p->data[0]; \ 00000A04 0860D4E5 LDRB R6,[R4, #+8] 4866 if (j>(255-i)) j=255-i; 4867 strncpy(s,p->data+1,j); \ 00000A08 091084E2 ADD R1,R4,#+9 \ 00000A0C 10008DE2 ADD R0,SP,#+16 \ 00000A10 400F56E3 CMP R6,#+256 \ 00000A14 FF60A0A3 MOVGE R6,#+255 \ 00000A18 0620A0E1 MOV R2,R6 \ 00000A1C 160100EF SWI +278 4868 i+=j; 4869 if (i<255) \ 00000A20 FF0056E3 CMP R6,#+255 \ 00000A24 100000AA BGE ??ProcessPacket_48 4870 { 4871 s[i++]=13; \ 00000A28 10108DE2 ADD R1,SP,#+16 \ 00000A2C 0D20A0E3 MOV R2,#+13 \ 00000A30 0120C6E7 STRB R2,[R6, +R1] \ 00000A34 0810D4E5 LDRB R1,[R4, #+8] \ 00000A38 B620D4E1 LDRH R2,[R4, #+6] \ 00000A3C 010086E2 ADD R0,R6,#+1 4872 j=p->pkt.data_len-p->data[0]-1; 4873 if (j>(255-i)) j=255-i; 4874 strncpy(s+i,p->data+p->data[0]+1,j); \ 00000A40 10308DE2 ADD R3,SP,#+16 \ 00000A44 012042E0 SUB R2,R2,R1 \ 00000A48 016042E2 SUB R6,R2,#+1 \ 00000A4C FF2060E2 RSB R2,R0,#+255 \ 00000A50 060052E1 CMP R2,R6 \ 00000A54 0260A0B1 MOVLT R6,R2 \ 00000A58 0620A0E1 MOV R2,R6 \ 00000A5C 041081E0 ADD R1,R1,R4 \ 00000A60 091081E2 ADD R1,R1,#+9 \ 00000A64 030080E0 ADD R0,R0,R3 \ 00000A68 160100EF SWI +278 4875 } 4876 AddStringToLog(t,0x03,s,x_status_change,0xFFFFFFFF,1); \ ??ProcessPacket_48: \ 00000A6C 0100A0E3 MOV R0,#+1 \ 00000A70 01002DE9 PUSH {R0} \ 00000A74 D83F85E2 ADD R3,R5,#+864 \ 00000A78 0310A0E3 MOV R1,#+3 \ 00000A7C 000060E2 RSB R0,R0,#+0 \ 00000A80 01002DE9 PUSH {R0} \ 00000A84 18208DE2 ADD R2,SP,#+24 \ 00000A88 0800A0E1 MOV R0,R8 \ 00000A8C ........ BL AddStringToLog 4877 ReqAddMsgToChat(t); \ 00000A90 0800A0E1 MOV R0,R8 \ 00000A94 ........ BL ReqAddMsgToChat 4878 if (strlen(p->data)) // Если x-status не пустой \ 00000A98 080084E2 ADD R0,R4,#+8 \ 00000A9C 1B0000EF SWI +27 \ 00000AA0 000050E3 CMP R0,#+0 \ 00000AA4 08D08DE2 ADD SP,SP,#+8 4879 RecountMenu(t, 1); \ 00000AA8 0110A013 MOVNE R1,#+1 \ 00000AAC 0800A011 MOVNE R0,R8 \ 00000AB0 87FDFF1A BNE ??ProcessPacket_9 4880 else 4881 RecountMenu(NULL, 0); \ 00000AB4 0010A0E3 MOV R1,#+0 \ 00000AB8 0100A0E1 MOV R0,R1 \ 00000ABC 84FDFFEA B ??ProcessPacket_9 4882 } 4883 break; 4884 case T_LASTPRIVACY: 4885 CurrentPrivateStatus=p->data[0]; \ ??ProcessPacket_49: \ 00000AC0 0800D4E5 LDRB R0,[R4, #+8] \ 00000AC4 D00287E5 STR R0,[R7, #+720] 4886 break; 4887 } 4888 mfree(p); \ ??ProcessPacket_2: \ 00000AC8 0400A0E1 MOV R0,R4 \ 00000ACC 150000EF SWI +21 4889 } \ 00000AD0 4EDF8DE2 ADD SP,SP,#+312 \ 00000AD4 F08FBDE8 POP {R4-R11,PC} ;; return \ ??ProcessPacket_1: \ 00000AD8 3A0A0000 DC8 ":\n",+0 \ 00000ADC ........ DC32 ILL_RECV_FADE \ 00000AE0 ........ DC32 ENA_AUTO_XTXT \ 00000AE4 ........ DC32 PopupShow \ 00000AE8 ........ DC32 PopupOnlineString \ 00000AEC ........ DC32 sndGlobal \ 00000AF0 ........ DC32 sndGlobal2 \ 00000AF4 ........ DC32 sndSrvMsg \ 00000AF8 ........ DC32 ILL_KEYS_RECV \ 00000AFC ........ DC32 ILL_RECV_TMR \ 00000B00 ........ DC32 ILL_DISP_RECV \ 00000B04 ........ DC32 PopupMsgString \ 00000B08 ........ DC32 main_msg_timer \ 00000B0C ........ DC32 DEVELOP_IF \ 00000B10 ........ DC32 ILL_SEND_TMR \ 00000B14 ........ DC32 ILL_KEYS_SEND \ 00000B18 ........ DC32 ILL_DISP_SEND 4890 4891 4892 IPC_REQ tmr_gipc; \ In segment CODE, align 4, keep-with-next 4893 void process_active_timer(void) 4894 { \ process_active_timer: \ 00000000 30402DE9 PUSH {R4,R5,LR} 4895 if (connect_state>2) \ 00000004 ........ LDR R5,??DataTable183 ;; S_ICONS \ 00000008 0040A0E3 MOV R4,#+0 \ 0000000C E40295E5 LDR R0,[R5, #+740] \ 00000010 030050E3 CMP R0,#+3 \ 00000014 070000BA BLT ??process_active_timer_0 4896 { 4897 if (++tenseconds_to_ping>12) \ 00000018 200395E5 LDR R0,[R5, #+800] \ 0000001C 010080E2 ADD R0,R0,#+1 \ 00000020 200385E5 STR R0,[R5, #+800] \ 00000024 0D0050E3 CMP R0,#+13 \ 00000028 020000BA BLT ??process_active_timer_0 4898 { 4899 tenseconds_to_ping=0; 4900 SUBPROC((void *)do_ping); \ 0000002C 58009FE5 LDR R0,??process_active_timer_1 ;; do_ping \ 00000030 204385E5 STR R4,[R5, #+800] \ 00000034 710100EF SWI +369 4901 } 4902 } 4903 tmr_gipc.name_to=ipc_my_name; \ ??process_active_timer_0: \ 00000038 ........ LDR R1,??DataTable186 ;; Canvas \ 0000003C CE0FA0E3 MOV R0,#+824 \ 00000040 012080E0 ADD R2,R0,R1 \ 00000044 C82085E5 STR R2,[R5, #+200] 4904 tmr_gipc.name_from=ipc_my_name; \ 00000048 010080E0 ADD R0,R0,R1 \ 0000004C CC0085E5 STR R0,[R5, #+204] 4905 tmr_gipc.data=NULL; \ 00000050 D04085E5 STR R4,[R5, #+208] 4906 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_TENSECONDS,&tmr_gipc); \ 00000054 C83085E2 ADD R3,R5,#+200 \ 00000058 0420A0E3 MOV R2,#+4 \ 0000005C B010A0E3 MOV R1,#+176 \ 00000060 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000064 0900A0E3 MOV R0,#+9 \ 00000068 420C80E3 ORR R0,R0,#0x4200 \ 0000006C 000100EF SWI +256 4907 GBS_StartTimerProc(&tmr_active,TMR_SECOND*10,process_active_timer); \ 00000070 ........ LDR R2,??DataTable195 ;; process_active_timer \ 00000074 871EA0E3 MOV R1,#+2160 \ 00000078 6C00A0E3 MOV R0,#+108 \ 0000007C 680D80E3 ORR R0,R0,#0x1A00 \ 00000080 050080E0 ADD R0,R0,R5 \ 00000084 4D0000EF SWI +77 4908 } \ 00000088 3080BDE8 POP {R4,R5,PC} ;; return \ ??process_active_timer_1: \ 0000008C ........ DC32 do_ping 4909 4910 4911 //=============================================================================================== 4912 \ In segment CODE, align 4, keep-with-next 4913 void method0(MAIN_GUI *data) 4914 { \ method0: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 14D04DE2 SUB SP,SP,#+20 4915 int scr_w=ScreenW(); 4916 int scr_h=ScreenH(); 4917 int pos_status;//2026rev 4918 int pm = pictures_max, pl = pictures_loaded;//2026rev 4919 4920 DrawRectangle(0,YDISP,scr_w-1,scr_h-1,0, GetPaletteAdrByColorIndex(1), GetPaletteAdrByColorIndex(1)); 4921 4922 DrawImg(0,0,S_ICONS[ICON_LOGO]); 4923 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //by BoBa 10.07 4924 wsprintf(data->ws1,LG_GRSTATESTRING,connect_state,RXstate,RX,TX,sendq_l,hostname,logmsg); \ 00000008 ........ LDR R7,??DataTable186 ;; Canvas \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 888100EF SWI +33160 \ 00000014 04008DE5 STR R0,[SP, #+4] \ 00000018 898100EF SWI +33161 \ 0000001C 20139FE5 LDR R1,??method0_0 ;; pictures_max \ 00000020 0050A0E1 MOV R5,R0 \ 00000024 001091E5 LDR R1,[R1, #+0] \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 08108DE5 STR R1,[SP, #+8] \ 00000030 10139FE5 LDR R1,??method0_0+0x4 ;; pictures_loaded \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 0C108DE5 STR R1,[SP, #+12] \ 0000003C 2E0100EF SWI +302 \ 00000040 0060A0E1 MOV R6,R0 \ 00000044 0100A0E3 MOV R0,#+1 \ 00000048 2E0100EF SWI +302 \ 0000004C 04209DE5 LDR R2,[SP, #+4] \ 00000050 013045E2 SUB R3,R5,#+1 \ 00000054 012042E2 SUB R2,R2,#+1 \ 00000058 00208DE5 STR R2,[SP, #+0] \ 0000005C 40002DE9 PUSH {R6} \ 00000060 ........ LDR R6,??DataTable187 ;; S_ICONS \ 00000064 01002DE9 PUSH {R0} \ 00000068 0010A0E3 MOV R1,#+0 \ 0000006C 0000A0E3 MOV R0,#+0 \ 00000070 01002DE9 PUSH {R0} \ 00000074 B40100EF SWI +436 \ 00000078 502096E5 LDR R2,[R6, #+80] \ 0000007C 0010A0E3 MOV R1,#+0 \ 00000080 0100A0E1 MOV R0,R1 \ 00000084 230000EF SWI +35 \ 00000088 F40296E5 LDR R0,[R6, #+756] \ 0000008C F81296E5 LDR R1,[R6, #+760] \ 00000090 3C20A0E3 MOV R2,#+60 \ 00000094 642D82E3 ORR R2,R2,#0x1900 \ 00000098 062082E0 ADD R2,R2,R6 \ 0000009C 04002DE9 PUSH {R2} \ 000000A0 9020A0E3 MOV R2,#+144 \ 000000A4 6C2D82E3 ORR R2,R2,#0x1B00 \ 000000A8 062082E0 ADD R2,R2,R6 \ 000000AC 04002DE9 PUSH {R2} \ 000000B0 FC2296E5 LDR R2,[R6, #+764] \ 000000B4 04002DE9 PUSH {R2} \ 000000B8 02002DE9 PUSH {R1} \ 000000BC 01002DE9 PUSH {R0} \ 000000C0 E03296E5 LDR R3,[R6, #+736] \ 000000C4 E42296E5 LDR R2,[R6, #+740] \ 000000C8 340094E5 LDR R0,[R4, #+52] \ 000000CC 601F87E2 ADD R1,R7,#+384 \ 000000D0 240100EF SWI +292 4925 if(pm != pl) \ 000000D4 28009DE5 LDR R0,[SP, #+40] \ 000000D8 2C109DE5 LDR R1,[SP, #+44] \ 000000DC 20D08DE2 ADD SP,SP,#+32 \ 000000E0 010050E1 CMP R0,R1 \ 000000E4 4400000A BEQ ??method0_1 4926 { 4927 DrawRectangle(0,scr_h-4-2*GetFontYSIZE(FONT_SMALL_BOLD),scr_w-1,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD)-2,0, 4928 GetPaletteAdrByColorIndex(0), 4929 GetPaletteAdrByColorIndex(0)); \ 000000E8 0000A0E3 MOV R0,#+0 \ 000000EC 2E0100EF SWI +302 \ 000000F0 0080A0E1 MOV R8,R0 \ 000000F4 0000A0E3 MOV R0,#+0 \ 000000F8 2E0100EF SWI +302 \ 000000FC 0090A0E1 MOV R9,R0 \ 00000100 0500A0E3 MOV R0,#+5 \ 00000104 C50100EF SWI +453 \ 00000108 00A0A0E1 MOV R10,R0 \ 0000010C 0C00A0E3 MOV R0,#+12 \ 00000110 C50100EF SWI +453 \ 00000114 00012DE9 PUSH {R8} \ 00000118 00022DE9 PUSH {R9} \ 0000011C 0010A0E3 MOV R1,#+0 \ 00000120 02002DE9 PUSH {R1} \ 00000124 0C209DE5 LDR R2,[SP, #+12] \ 00000128 04B045E2 SUB R11,R5,#+4 \ 0000012C 0A104BE0 SUB R1,R11,R10 \ 00000130 023041E2 SUB R3,R1,#+2 \ 00000134 80104BE0 SUB R1,R11,R0, LSL #+1 \ 00000138 0000A0E3 MOV R0,#+0 \ 0000013C B40100EF SWI +436 4930 pos_status = ((scr_w-1) * pl) / pm; 4931 DrawRectangle(1,scr_h-4-2*GetFontYSIZE(FONT_SMALL_BOLD)+1,pos_status,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD)-3,0, 4932 GetPaletteAdrByColorIndex(14), 4933 GetPaletteAdrByColorIndex(14)); \ 00000140 0E00A0E3 MOV R0,#+14 \ 00000144 2E0100EF SWI +302 \ 00000148 0080A0E1 MOV R8,R0 \ 0000014C 0E00A0E3 MOV R0,#+14 \ 00000150 2E0100EF SWI +302 \ 00000154 0090A0E1 MOV R9,R0 \ 00000158 0500A0E3 MOV R0,#+5 \ 0000015C C50100EF SWI +453 \ 00000160 1C008DE5 STR R0,[SP, #+28] \ 00000164 0C00A0E3 MOV R0,#+12 \ 00000168 C50100EF SWI +453 \ 0000016C 00A0A0E1 MOV R10,R0 \ 00000170 00012DE9 PUSH {R8} \ 00000174 00022DE9 PUSH {R9} \ 00000178 0000A0E3 MOV R0,#+0 \ 0000017C 01002DE9 PUSH {R0} \ 00000180 24109DE5 LDR R1,[SP, #+36] \ 00000184 28009DE5 LDR R0,[SP, #+40] \ 00000188 00004BE0 SUB R0,R11,R0 \ 0000018C 033040E2 SUB R3,R0,#+3 \ 00000190 18009DE5 LDR R0,[SP, #+24] \ 00000194 910000E0 MUL R0,R1,R0 \ 00000198 20109DE5 LDR R1,[SP, #+32] \ 0000019C ........ _BLF ??div32_a,??rA??div32_a \ 000001A0 0120A0E1 MOV R2,R1 \ 000001A4 8A004BE0 SUB R0,R11,R10, LSL #+1 \ 000001A8 011080E2 ADD R1,R0,#+1 \ 000001AC 0100A0E3 MOV R0,#+1 \ 000001B0 B40100EF SWI +436 4934 // wstrcatprintf(data->ws1,"\nLoading images..."); 4935 4936 if(total_smiles) \ 000001B4 90019FE5 LDR R0,??method0_0+0x8 ;; total_smiles \ 000001B8 001090E5 LDR R1,[R0, #+0] \ 000001BC 18D08DE2 ADD SP,SP,#+24 \ 000001C0 000051E3 CMP R1,#+0 \ 000001C4 0300000A BEQ ??method0_2 4937 { 4938 wstrcatprintf(data->ws1,"\nLoaded %d smiles",total_smiles); \ 000001C8 002090E5 LDR R2,[R0, #+0] \ 000001CC 340094E5 LDR R0,[R4, #+52] \ 000001D0 6E1F87E2 ADD R1,R7,#+440 \ 000001D4 160200EF SWI +534 4939 } 4940 if (xstatuses_load) \ ??method0_2: \ 000001D8 70019FE5 LDR R0,??method0_0+0xC ;; xstatuses_load \ 000001DC 000090E5 LDR R0,[R0, #+0] \ 000001E0 000050E3 CMP R0,#+0 \ 000001E4 0400000A BEQ ??method0_1 4941 { 4942 wstrcatprintf(data->ws1,"\nLoaded %d xstatus",total_xstatuses); \ 000001E8 ........ LDR R0,??DataTable188 ;; total_xstatuses \ 000001EC 731F87E2 ADD R1,R7,#+460 \ 000001F0 002090E5 LDR R2,[R0, #+0] \ 000001F4 340094E5 LDR R0,[R4, #+52] \ 000001F8 160200EF SWI +534 4943 } 4944 } 4945 4946 #ifdef kluchnik 4947 DrawString(data->ws1,3,3+YDISP,scr_w-4,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD), FONT_SMALL,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 4948 wsprintf(data->ws2,percent_t,LG_GRSKEYEXIT); 4949 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)); 4950 wsprintf(data->ws2,percent_t,cltop?LG_GRSKEYCLIST:empty_str); 4951 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)); 4952 int y=140; 4953 char A[]="[A] %s"; 4954 char I[]="[I]"; 4955 char V[]="[V]"; 4956 char S[]="[S]"; 4957 4958 if(CurrentPrivateStatus==1) 4959 { 4960 wsprintf(data->ws2,I); 4961 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); 4962 y+=GetFontYSIZE(11)+5; 4963 } 4964 4965 if(Is_Vibra_Enabled) 4966 { 4967 wsprintf(data->ws2,V); 4968 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); 4969 y+=GetFontYSIZE(11)+5; 4970 } 4971 4972 if(Is_Sounds_Enabled) 4973 { 4974 wsprintf(data->ws2,S); 4975 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); 4976 y+=GetFontYSIZE(11)+5; 4977 } 4978 4979 if(Is_Double_Vibra_On) 4980 { 4981 wsprintf(data->ws2,"[Vr]"); 4982 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); 4983 } 4984 4985 if(away_m) 4986 { 4987 wsprintf(data->ws2,A,away_msg_time_dace); 4988 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); 4989 y+=GetFontYSIZE(11)+5; 4990 } 4991 4992 if(connect_state==3) 4993 { 4994 wsprintf(data->ws2,"Online: %02d:%02d:%02d not action %d sec", uptimeHour, uptimeMin, uptimeSec,msg_away_timer*5); 4995 } 4996 else 4997 wsprintf(data->ws2,"Offline"); 4998 DrawString(data->ws2,1,scr_h-4-3*GetFontYSIZE(FONT_SMALL_BOLD)+1,ScreenW()-1,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD)-3 4999 ,FONT_SMALL,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 5000 #else 5001 DrawString(data->ws1,3,3+YDISP,scr_w-4,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD),FONT_SMALL,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ ??method0_1: \ 000001FC 1700A0E3 MOV R0,#+23 \ 00000200 2E0100EF SWI +302 \ 00000204 0090A0E1 MOV R9,R0 \ 00000208 0000A0E3 MOV R0,#+0 \ 0000020C 2E0100EF SWI +302 \ 00000210 00A0A0E1 MOV R10,R0 \ 00000214 0500A0E3 MOV R0,#+5 \ 00000218 C50100EF SWI +453 \ 0000021C 04109DE5 LDR R1,[SP, #+4] \ 00000220 00022DE9 PUSH {R9} \ 00000224 048041E2 SUB R8,R1,#+4 \ 00000228 00042DE9 PUSH {R10} \ 0000022C 0010A0E3 MOV R1,#+0 \ 00000230 02002DE9 PUSH {R1} \ 00000234 04B045E2 SUB R11,R5,#+4 \ 00000238 00004BE0 SUB R0,R11,R0 \ 0000023C 0830A0E1 MOV R3,R8 \ 00000240 0B10A0E3 MOV R1,#+11 \ 00000244 02002DE9 PUSH {R1} \ 00000248 01002DE9 PUSH {R0} \ 0000024C 340094E5 LDR R0,[R4, #+52] \ 00000250 0320A0E3 MOV R2,#+3 \ 00000254 0310A0E3 MOV R1,#+3 \ 00000258 4C0100EF SWI +332 5002 wsprintf(data->ws2,percent_t,LG_GRSKEYEXIT); \ 0000025C 380094E5 LDR R0,[R4, #+56] \ 00000260 782F87E2 ADD R2,R7,#+480 \ 00000264 181087E2 ADD R1,R7,#+24 \ 00000268 240100EF SWI +292 5003 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)); \ 0000026C 1700A0E3 MOV R0,#+23 \ 00000270 2E0100EF SWI +302 \ 00000274 0050A0E1 MOV R5,R0 \ 00000278 0000A0E3 MOV R0,#+0 \ 0000027C 2E0100EF SWI +302 \ 00000280 0090A0E1 MOV R9,R0 \ 00000284 0500A0E3 MOV R0,#+5 \ 00000288 C50100EF SWI +453 \ 0000028C 18109DE5 LDR R1,[SP, #+24] \ 00000290 20002DE9 PUSH {R5} \ 00000294 C1A0A0E1 ASR R10,R1,#+1 \ 00000298 00022DE9 PUSH {R9} \ 0000029C 0410A0E3 MOV R1,#+4 \ 000002A0 02002DE9 PUSH {R1} \ 000002A4 0830A0E1 MOV R3,R8 \ 000002A8 00204BE0 SUB R2,R11,R0 \ 000002AC 0510A0E3 MOV R1,#+5 \ 000002B0 02002DE9 PUSH {R1} \ 000002B4 0B10A0E1 MOV R1,R11 \ 000002B8 02002DE9 PUSH {R1} \ 000002BC 380094E5 LDR R0,[R4, #+56] \ 000002C0 0A10A0E1 MOV R1,R10 \ 000002C4 4C0100EF SWI +332 \ 000002C8 28D08DE2 ADD SP,SP,#+40 5004 wsprintf(data->ws2,percent_t,cltop?LG_GRSKEYCLIST:empty_str); \ 000002CC 0C0396E5 LDR R0,[R6, #+780] \ 000002D0 181087E2 ADD R1,R7,#+24 \ 000002D4 000050E3 CMP R0,#+0 \ 000002D8 380094E5 LDR R0,[R4, #+56] \ 000002DC 7A2F8712 ADDNE R2,R7,#+488 \ 000002E0 1E208702 ADDEQ R2,R7,#+30 \ 000002E4 240100EF SWI +292 5005 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)); \ 000002E8 1700A0E3 MOV R0,#+23 \ 000002EC 2E0100EF SWI +302 \ 000002F0 0050A0E1 MOV R5,R0 \ 000002F4 0000A0E3 MOV R0,#+0 \ 000002F8 2E0100EF SWI +302 \ 000002FC 0060A0E1 MOV R6,R0 \ 00000300 0500A0E3 MOV R0,#+5 \ 00000304 C50100EF SWI +453 \ 00000308 20002DE9 PUSH {R5} \ 0000030C 40002DE9 PUSH {R6} \ 00000310 0110A0E3 MOV R1,#+1 \ 00000314 02002DE9 PUSH {R1} \ 00000318 0A30A0E1 MOV R3,R10 \ 0000031C 00204BE0 SUB R2,R11,R0 \ 00000320 0510A0E3 MOV R1,#+5 \ 00000324 02002DE9 PUSH {R1} \ 00000328 0B10A0E1 MOV R1,R11 \ 0000032C 02002DE9 PUSH {R1} \ 00000330 380094E5 LDR R0,[R4, #+56] \ 00000334 0310A0E3 MOV R1,#+3 \ 00000338 4C0100EF SWI +332 5006 #endif 5007 } \ 0000033C 28D08DE2 ADD SP,SP,#+40 \ 00000340 F08FBDE8 POP {R4-R11,PC} ;; return \ ??method0_0: \ 00000344 ........ DC32 pictures_max \ 00000348 ........ DC32 pictures_loaded \ 0000034C ........ DC32 total_smiles \ 00000350 ........ DC32 xstatuses_load 5008 \ In segment CODE, align 4, keep-with-next 5009 void method1(MAIN_GUI *data,void *(*malloc_adr)(int)) 5010 { \ method1: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5011 data->ws1=AllocWS(256); \ 00000008 400FA0E3 MOV R0,#+256 \ 0000000C 250100EF SWI +293 \ 00000010 340084E5 STR R0,[R4, #+52] 5012 data->ws2=AllocWS(256); \ 00000014 400FA0E3 MOV R0,#+256 \ 00000018 250100EF SWI +293 \ 0000001C 380084E5 STR R0,[R4, #+56] 5013 data->gui.state=1; \ 00000020 0100A0E3 MOV R0,#+1 \ 00000024 0C00C4E5 STRB R0,[R4, #+12] 5014 } \ 00000028 1080BDE8 POP {R4,PC} ;; return 5015 \ In segment CODE, align 4, keep-with-next 5016 void method2(MAIN_GUI *data,void (*mfree_adr)(void *)) 5017 { \ method2: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5018 FreeWS(data->ws1); \ 00000008 340094E5 LDR R0,[R4, #+52] \ 0000000C 290100EF SWI +297 5019 FreeWS(data->ws2); \ 00000010 380094E5 LDR R0,[R4, #+56] \ 00000014 290100EF SWI +297 5020 data->gui.state=0; \ 00000018 0000A0E3 MOV R0,#+0 \ 0000001C 0C00C4E5 STRB R0,[R4, #+12] 5021 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 5022 \ In segment CODE, align 4, keep-with-next 5023 void method3(MAIN_GUI *data,void *(*malloc_adr)(int),void (*mfree_adr)(void *)) 5024 { \ method3: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5025 DisableIDLETMR(); \ 00000008 7F0100EF SWI +383 5026 data->gui.state=2; \ 0000000C 0200A0E3 MOV R0,#+2 \ 00000010 0C00C4E5 STRB R0,[R4, #+12] 5027 } \ 00000014 1080BDE8 POP {R4,PC} ;; return 5028 \ In segment CODE, align 4, keep-with-next 5029 void method4(MAIN_GUI *data,void (*mfree_adr)(void *)) 5030 { 5031 if (data->gui.state!=2) \ method4: \ 00000000 0C10D0E5 LDRB R1,[R0, #+12] \ 00000004 020051E3 CMP R1,#+2 5032 return; 5033 data->gui.state=1; \ 00000008 0110A003 MOVEQ R1,#+1 \ 0000000C 0C10C005 STRBEQ R1,[R0, #+12] 5034 } \ 00000010 1EFF2FE1 BX LR ;; return 5035 \ In segment CODE, align 4, keep-with-next 5036 int method5(MAIN_GUI *data,GUI_MSG *msg) 5037 { \ method5: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 \ 00000008 0140A0E1 MOV R4,R1 5038 DirectRedrawGUI(); \ 0000000C 3F0100EF SWI +319 5039 if (msg->gbsmsg->msg==KEY_DOWN) \ 00000010 041094E5 LDR R1,[R4, #+4] \ 00000014 9320A0E3 MOV R2,#+147 \ 00000018 040091E5 LDR R0,[R1, #+4] \ 0000001C 402F82E3 ORR R2,R2,#0x100 \ 00000020 020050E1 CMP R0,R2 \ 00000024 4800001A BNE ??method5_1 5040 { 5041 switch(msg->gbsmsg->submess) \ 00000028 ........ LDR R5,??DataTable204 ;; S_ICONS \ 0000002C 081091E5 LDR R1,[R1, #+8] \ 00000030 ........ LDR R4,??DataTable203 ;; create_connect \ 00000034 5C00A0E3 MOV R0,#+92 \ 00000038 680D80E3 ORR R0,R0,#0x1A00 \ 0000003C 056080E0 ADD R6,R0,R5 \ 00000040 ........ LDR R0,??DataTable191 ;; WriteDefSettings \ 00000044 0370A0E3 MOV R7,#+3 \ 00000048 0180A0E3 MOV R8,#+1 \ 0000004C 0020A0E3 MOV R2,#+0 \ 00000050 011041E2 SUB R1,R1,#+1 \ 00000054 330051E3 CMP R1,#+51 \ 00000058 3B00008A BHI ??method5_1 \ 0000005C 013F8FE2 ADR R3,??method5_0 \ 00000060 0130D3E7 LDRB R3,[R3, R1] \ 00000064 03F18FE0 ADD PC,PC,R3, LSL #+2 \ ??method5_0: \ 00000068 0C383812 DC8 +12,+56,+56,+18 \ 0000006C 38383838 DC8 +56,+56,+56,+56 \ 00000070 38381438 DC8 +56,+56,+20,+56 \ 00000074 38383838 DC8 +56,+56,+56,+56 \ 00000078 38383838 DC8 +56,+56,+56,+56 \ 0000007C 38383838 DC8 +56,+56,+56,+56 \ 00000080 38383838 DC8 +56,+56,+56,+56 \ 00000084 38383838 DC8 +56,+56,+56,+56 \ 00000088 38383838 DC8 +56,+56,+56,+56 \ 0000008C 38383838 DC8 +56,+56,+56,+56 \ 00000090 38383838 DC8 +56,+56,+56,+56 \ 00000094 3838381F DC8 +56,+56,+56,+31 \ 00000098 22272C33 DC8 +34,+39,+44,+51 5042 { 5043 case LEFT_SOFT: 5044 if (cltop) create_contactlist_menu(); \ ??method5_2: \ 0000009C 0C0395E5 LDR R0,[R5, #+780] \ 000000A0 000050E3 CMP R0,#+0 \ 000000A4 0000000A BEQ ??method5_3 \ 000000A8 ........ BL create_contactlist_menu 5045 unhooked2=1; \ ??method5_3: \ 000000AC 908385E5 STR R8,[R5, #+912] \ 000000B0 1E0000EA B ??method5_4 5046 // if (cltop) remake_clmenu(); 5047 break; 5048 case RIGHT_SOFT: 5049 return(1); //Происходит вызов GeneralFunc для тек. GUI -> закрытие GUI \ ??method5_5: \ 000000B4 0100A0E3 MOV R0,#+1 \ 000000B8 F681BDE8 POP {R1,R2,R4-R8,PC} 5050 case GREEN_BUTTON: 5051 disautorecconect=0; \ ??method5_6: \ 000000BC C02285E5 STR R2,[R5, #+704] 5052 if ((connect_state==0)&&(sock==-1)) \ 000000C0 E40295E5 LDR R0,[R5, #+740] \ 000000C4 000050E3 CMP R0,#+0 \ 000000C8 E8029505 LDREQ R0,[R5, #+744] \ 000000CC 01007003 CMNEQ R0,#+1 \ 000000D0 1D00001A BNE ??method5_1 5053 { 5054 GBS_DelTimer(&reconnect_tmr); \ ??method5_7: \ 000000D4 0600A0E1 MOV R0,R6 \ 000000D8 8C0100EF SWI +396 5055 DNR_TRIES=3; \ 000000DC 9C7385E5 STR R7,[R5, #+924] 5056 SUBPROC((void *)create_connect); \ 000000E0 0400A0E1 MOV R0,R4 \ 000000E4 170000EA B ??method5_8 5057 } 5058 break; 5059 case '0': 5060 SUBPROC((void*)end_socket); \ ??method5_9: \ 000000E8 ........ LDR R0,??DataTable199 ;; end_socket \ 000000EC 710100EF SWI +369 5061 GBS_DelTimer(&reconnect_tmr); \ 000000F0 F7FFFFEA B ??method5_7 5062 DNR_TRIES=3; 5063 SUBPROC((void *)create_connect); 5064 break; 5065 5066 //------------------------------------------------------// 5067 5068 case '1': 5069 Is_Sounds_Enabled=!(Is_Sounds_Enabled); \ ??method5_10: \ 000000F4 C41295E5 LDR R1,[R5, #+708] \ 000000F8 000051E3 CMP R1,#+0 \ 000000FC 0080A013 MOVNE R8,#+0 \ 00000100 C48285E5 STR R8,[R5, #+708] 5070 SUBPROC((void*)WriteDefSettings); \ 00000104 0F0000EA B ??method5_8 5071 break; 5072 case '2': 5073 Is_Vibra_Enabled=!(Is_Vibra_Enabled); \ ??method5_11: \ 00000108 781295E5 LDR R1,[R5, #+632] \ 0000010C 000051E3 CMP R1,#+0 \ 00000110 0080A013 MOVNE R8,#+0 \ 00000114 788285E5 STR R8,[R5, #+632] 5074 SUBPROC((void*)WriteDefSettings); \ 00000118 0A0000EA B ??method5_8 5075 break; 5076 case '3': 5077 if(CurrentPrivateStatus!=1) \ ??method5_12: \ 0000011C D00295E5 LDR R0,[R5, #+720] \ 00000120 010050E3 CMP R0,#+1 \ 00000124 0300A003 MOVEQ R0,#+3 5078 SetPrivateStatus(1);//Инвиз \ 00000128 0100A013 MOVNE R0,#+1 \ 0000012C ........ _BLF SetPrivateStatus,??SetPrivateStatus??rA \ ??method5_4: \ 00000130 0000A0E3 MOV R0,#+0 \ 00000134 F681BDE8 POP {R1,R2,R4-R8,PC} 5079 else 5080 SetPrivateStatus(3); 5081 break; 5082 case '4': 5083 Is_Double_Vibra_On=!(Is_Double_Vibra_On); \ ??method5_13: \ 00000138 601295E5 LDR R1,[R5, #+608] \ 0000013C 000051E3 CMP R1,#+0 \ 00000140 0080A013 MOVNE R8,#+0 \ 00000144 608285E5 STR R8,[R5, #+608] 5084 SUBPROC((void*)WriteDefSettings); \ ??method5_8: \ 00000148 710100EF SWI +369 5085 break; 5086 } 5087 } 5088 return(0); \ ??method5_1: \ 0000014C 0000A0E3 MOV R0,#+0 \ 00000150 F681BDE8 POP {R1,R2,R4-R8,PC} ;; return 5089 } 5090 \ In segment CODE, align 4, keep-with-next 5091 int method8(void){return(0);} \ method8: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 5092 \ In segment CODE, align 4, keep-with-next 5093 int method9(void){return(0);} \ method9: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 5094 5095 const void * const gui_methods[11]={ 5096 (void *)method0, //Redraw 5097 (void *)method1, //Create 5098 (void *)method2, //Close 5099 (void *)method3, //Focus 5100 (void *)method4, //Unfocus 5101 (void *)method5, //OnKey 5102 0, 5103 (void *)kill_data, //method7, //Destroy 5104 (void *)method8, 5105 (void *)method9, 5106 0 5107 }; 5108 5109 \ In segment CODE, align 4, keep-with-next 5110 int my_keyhook(int key, int m) 5111 { \ my_keyhook: \ 00000000 30402DE9 PUSH {R4,R5,LR} 5112 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 5113 { 5114 #ifdef ELKA 5115 if ((key==CAMERA_BUTTON)&&(!IsUnlocked())) 5116 { 5117 GBS_StopTimer(&away_tmr); 5118 msg_away_timer=AUTO_ENGADE; 5119 away_timer(); 5120 main_d=1; 5121 } 5122 else 5123 { 5124 #endif 5125 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} 5126 { 5127 msg_away_timer=0; \ 00000024 ........ LDR R4,??DataTable204 ;; S_ICONS \ 00000028 0050A0E3 MOV R5,#+0 5128 away_m=0; 5129 if(change_back_status) \ 0000002C 9C0294E5 LDR R0,[R4, #+668] \ 00000030 905284E5 STR R5,[R4, #+656] \ 00000034 945284E5 STR R5,[R4, #+660] \ 00000038 000050E3 CMP R0,#+0 \ 0000003C 3080BD08 POPEQ {R4,R5,PC} 5130 { 5131 CurrentStatus=status_rem; \ 00000040 980294E5 LDR R0,[R4, #+664] \ 00000044 800284E5 STR R0,[R4, #+640] 5132 set_my_status(); \ 00000048 ........ BL set_my_status 5133 change_back_status=0; \ 0000004C 9C5284E5 STR R5,[R4, #+668] 5134 } 5135 } 5136 #ifdef ELKA 5137 } 5138 #endif 5139 } 5140 return 0; \ ??my_keyhook_0: \ 00000050 0000A0E3 MOV R0,#+0 \ 00000054 3080BDE8 POP {R4,R5,PC} ;; return \ ??my_keyhook_1: \ 00000058 ........ DC32 Reset_timer 5141 } \ In segment DATA_C, align 4, align-sorted 5142 5143 const RECT Canvas={0,0,0,0}; \ Canvas: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 ........ DC32 `?` \ 0000000C ........ DC32 `?` \ 00000010 ........ DC32 `?> %s <<" \ 3C3C00 \ 000000DD 000000 DC8 0, 0, 0 \ 000000E0 2563257400 DC8 "%c%t" \ 000000E5 000000 DC8 0, 0, 0 \ 000000E8 2825642F2564 DC8 "(%d/%d)" \ 2900 \ 000000F0 EEF8E8E1EAE0 DC8 "\356\370\350\341\352\340" \ 00 \ 000000F7 00 DC8 0 \ 000000F8 426164207061 DC8 "Bad packet" \ 636B657400 \ 00000103 00 DC8 0 \ 00000104 534325643A20 DC8 "SC%d: %04X" \ 2530345800 \ 0000010F 00 DC8 0 \ 00000110 4552523A2025 DC8 "ERR: %s" \ 7300 \ 00000118 75696E256400 DC8 "uin%d" \ 0000011E 0000 DC8 0, 0 \ 00000120 4D534725643A DC8 "MSG%d: %s" \ 20257300 \ 0000012A 0000 DC8 0, 0 \ 0000012C 257325642E77 DC8 "%s%d.wav" \ 617600 \ 00000135 000000 DC8 0, 0, 0 \ 00000138 50696E672025 DC8 "Ping %d-%d seconds!" \ 642D25642073 \ 65636F6E6473 \ 2100 \ 0000014C 50696E673A20 DC8 "Ping: %d sec" \ 256420736563 \ 00 \ 00000159 000000 DC8 0, 0, 0 \ 0000015C 2025733A2025 DC8 " %s: %02d:%02d:%02d" \ 3032643A2530 \ 32643A253032 \ 6400 \ 00000170 537461747573 DC8 "Status change" \ 206368616E67 \ 6500 \ 0000017E 0000 DC8 0, 0 \ 00000180 53746174653A DC8 53H, 74H, 61H, 74H, 65H, 3AH, 20H, 25H \ 2025 \ 00000188 642C20525873 DC8 64H, 2CH, 20H, 52H, 58H, 73H, 74H, 61H \ 7461 \ 00000190 74653A202564 DC8 74H, 65H, 3AH, 20H, 25H, 64H, 0AH, 52H \ 0A52 \ 00000198 783A2564622C DC8 78H, 3AH, 25H, 64H, 62H, 2CH, 54H, 78H \ 5478 \ 000001A0 3A2564620A51 DC8 3AH, 25H, 64H, 62H, 0AH, 51H, 75H, 65H \ 7565 \ 000001A8 75653A202564 DC8 75H, 65H, 3AH, 20H, 25H, 64H, 62H, 0AH \ 620A \ 000001B0 25730A257300 DC8 25H, 73H, 0AH, 25H, 73H, 0 \ 000001B6 0000 DC8 0, 0 \ 000001B8 0A4C6F616465 DC8 "\012Loaded %d smiles" \ 642025642073 \ 6D696C657300 \ 000001CA 0000 DC8 0, 0 \ 000001CC 0A4C6F616465 DC8 "\012Loaded %d xstatus" \ 642025642078 \ 737461747573 \ 00 \ 000001DF 00 DC8 0 \ 000001E0 4578697400 DC8 "Exit" \ 000001E5 000000 DC8 0, 0, 0 \ 000001E8 434C69737400 DC8 "CList" \ 000001EE 0000 DC8 0, 0 \ 000001F0 4675636B2079 DC8 "Fuck you hacker! my password sux ur ass" \ 6F7520686163 \ 6B657221206D \ 792070617373 \ 776F72642073 \ 757820757220 \ 61737300 \ 00000218 556E72656164 DC8 "Unread: %d" \ 3A20256400 \ 00000223 00 DC8 0 \ 00000224 4E6174494351 DC8 "NatICQ config updated!" \ 20636F6E6669 \ 672075706461 \ 7465642100 \ 0000023B 00 DC8 0 \ 0000023C 257332323430 DC8 "%s2240.png" \ 2E706E6700 \ 00000247 00 DC8 0 \ 00000248 475052532075 DC8 "GPRS up, wait 10 sec..." \ 702C20776169 \ 742031302073 \ 65632E2E2E00 \ 00000260 54727920746F DC8 "Try to login..." \ 206C6F67696E \ 2E2E2E00 \ 00000270 CDE520E220F1 DC8 "\315\345 \342 \361\357\350\361\352\345" \ EFE8F1EAE500 \ 0000027C 4C6F6F706261 DC8 "Loopback" \ 636B00 \ 00000285 000000 DC8 0, 0, 0 \ 00000288 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 \ 000002B0 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 \ 000002D2 0000 DC8 0, 0 \ 000002D4 446973636F6E DC8 "Disconnected, %d bytes not sended!" \ 6E6563746564 \ 2C2025642062 \ 79746573206E \ 6F742073656E \ 6465642100 \ 000002F7 00 DC8 0 \ 000002F8 25730A526563 DC8 "%s\012Reconect after %d second..." \ 6F6E65637420 \ 616674657220 \ 256420736563 \ 6F6E642E2E2E \ 00 \ 00000317 00 DC8 0 \ 00000318 50696E67204E DC8 "Ping None" \ 6F6E6500 \ 00000322 0000 DC8 0, 0 \ 00000324 C2E2E5E4E8F2 DC8 "\302\342\345\344\350\362\345 UIN/\357\340\360\356\353\374!" \ E52055494E2F \ EFE0F0EEEBFC \ 2100 \ ipc_my_name: \ 00000338 4E6174494351 DC8 "NatICQ" \ 00 \ 0000033F 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000034F 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000 \ ipc_xtask_name: \ 00000358 585461736B00 DC8 "XTask" \ 0000035E 0000 DC8 0, 0 \ x_status_change: \ 00000360 582D53746174 DC8 "X-Status change" \ 757320636861 \ 6E676500 \ gui_methods: \ 00000370 ............ DC32 method0, method1, method2, method3, method4, method5, 0H \ ............ \ ............ \ ............ \ 00000000 \ 0000038C ............ 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 0B0000006400 DC32 11, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ 00000038 D1EEEEE1F9E5 DC8 "\321\356\356\341\371\345\355\350\345:\012" \ EDE8E53A0A00 \ input_awaymsg_hdr: \ 00000044 000000008300 DC16 0, 0, 131, 21 \ 1500 \ 0000004C 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 5144 \ In segment CODE, align 4, keep-with-next 5145 void maincsm_oncreate(CSM_RAM *data) 5146 { \ maincsm_oncreate: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0050A0E1 MOV R5,R0 5147 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); \ 00000008 4000A0E3 MOV R0,#+64 5148 MAIN_CSM*csm=(MAIN_CSM*)data; 5149 zeromem(main_gui,sizeof(MAIN_GUI)); 5150 patch_rect((RECT*)&Canvas,0,0,ScreenW()-1,ScreenH()-1); \ 0000000C 0070A0E3 MOV R7,#+0 \ 00000010 140000EF SWI +20 \ 00000014 0060A0E1 MOV R6,R0 \ 00000018 4010A0E3 MOV R1,#+64 \ 0000001C 1D0100EF SWI +285 \ 00000020 898100EF SWI +33161 \ 00000024 0040A0E1 MOV R4,R0 \ 00000028 888100EF SWI +33160 \ 0000002C 011044E2 SUB R1,R4,#+1 \ 00000030 CC409FE5 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] 5151 main_gui->gui.canvas=(void *)(&Canvas); \ 00000044 004086E5 STR R4,[R6, #+0] 5152 // main_gui->gui.flag30=2; 5153 main_gui->gui.methods=(void *)gui_methods; \ 00000048 DC0F84E2 ADD R0,R4,#+880 \ 0000004C 040086E5 STR R0,[R6, #+4] 5154 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); \ 00000050 158000EF SWI +32789 \ 00000054 200086E5 STR R0,[R6, #+32] 5155 csm->csm.state=0; \ 00000058 107085E5 STR R7,[R5, #+16] 5156 csm->csm.unk1=0; \ 0000005C 147085E5 STR R7,[R5, #+20] 5157 maingui_id=csm->gui_id=CreateGUI(main_gui); \ 00000060 0600A0E1 MOV R0,R6 \ 00000064 370100EF SWI +311 \ 00000068 280085E5 STR R0,[R5, #+40] \ 0000006C ........ LDR R5,??DataTable204 ;; S_ICONS \ 00000070 6C0285E5 STR R0,[R5, #+620] 5158 ews=AllocWS(16384); \ 00000074 400CA0E3 MOV R0,#+16384 \ 00000078 250100EF SWI +293 \ 0000007C 880285E5 STR R0,[R5, #+648] 5159 // MutexCreate(&contactlist_mtx); 5160 DNR_TRIES=3; \ 00000080 0300A0E3 MOV R0,#+3 \ 00000084 9C0385E5 STR R0,[R5, #+924] 5161 // SUBPROC((void *)InitSmiles); 5162 // SUBPROC((void *)create_connect); 5163 wsBuffer=AllocWS(4096); \ 00000088 400DA0E3 MOV R0,#+4096 \ 0000008C 250100EF SWI +293 5164 GBS_StartTimerProc(&tmr_active,TMR_SECOND*10,process_active_timer); \ 00000090 ........ LDR R2,??DataTable195 ;; process_active_timer \ 00000094 440285E5 STR R0,[R5, #+580] \ 00000098 871EA0E3 MOV R1,#+2160 \ 0000009C 6C00A0E3 MOV R0,#+108 \ 000000A0 680D80E3 ORR R0,R0,#0x1A00 \ 000000A4 050080E0 ADD R0,R0,R5 \ 000000A8 4D0000EF SWI +77 5165 sprintf((char *)ipc_my_name+6,percent_d,UIN); \ 000000AC ........ LDR R0,??DataTable225 ;; UIN \ 000000B0 1B1084E2 ADD R1,R4,#+27 \ 000000B4 002090E5 LDR R2,[R0, #+0] \ 000000B8 3E00A0E3 MOV R0,#+62 \ 000000BC C00F80E3 ORR R0,R0,#0x300 \ 000000C0 040080E0 ADD R0,R0,R4 \ 000000C4 160000EF SWI +22 5166 gipc.name_to=ipc_my_name; \ 000000C8 CE0FA0E3 MOV R0,#+824 \ 000000CC 041080E0 ADD R1,R0,R4 \ 000000D0 BC1085E5 STR R1,[R5, #+188] 5167 gipc.name_from=ipc_my_name; \ 000000D4 040080E0 ADD R0,R0,R4 \ 000000D8 C00085E5 STR R0,[R5, #+192] 5168 gipc.data=(void *)-1; \ 000000DC 0700E0E1 MVN R0,R7 \ 000000E0 C40085E5 STR R0,[R5, #+196] 5169 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_CHECK_DOUBLERUN,&gipc); \ 000000E4 BC3085E2 ADD R3,R5,#+188 \ 000000E8 0120A0E3 MOV R2,#+1 \ 000000EC B010A0E3 MOV R1,#+176 \ 000000F0 DE1C81E3 ORR R1,R1,#0xDE00 \ 000000F4 0900A0E3 MOV R0,#+9 \ 000000F8 420C80E3 ORR R0,R0,#0x4200 \ 000000FC 000100EF SWI +256 5170 /* 5171 InitXStatusesImg(); 5172 //InitSmiles(); Это вызовется из InitXStatusesImg 5173 create_connect(); 5174 silenthide=1; 5175 gipc.name_to=ipc_xtask_name; 5176 gipc.name_from=ipc_my_name; 5177 gipc.data=0; 5178 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); 5179 */ 5180 } \ 00000100 F080BDE8 POP {R4-R7,PC} ;; return \ ??maincsm_oncreate_0: \ 00000104 ........ DC32 Canvas 5181 \ In segment CODE, align 4, keep-with-next 5182 void maincsm_onclose(CSM_RAM *csm) 5183 { \ maincsm_onclose: \ 00000000 10402DE9 PUSH {R4,LR} 5184 WriteDefSettings(); 5185 FreeWS(wsBuffer); \ 00000004 ........ LDR R4,??DataTable204 ;; S_ICONS \ 00000008 ........ BL WriteDefSettings \ 0000000C 440294E5 LDR R0,[R4, #+580] \ 00000010 290100EF SWI +297 5186 //GBS_DelTimer(&tmr_dorecv); 5187 RemoveKeybMsgHook((void *)my_keyhook); \ 00000014 ........ LDR R0,??DataTable198 ;; my_keyhook \ 00000018 2D0100EF SWI +301 5188 GBS_DelTimer(&tmr_active); \ 0000001C 6C00A0E3 MOV R0,#+108 \ 00000020 680D80E3 ORR R0,R0,#0x1A00 \ 00000024 040080E0 ADD R0,R0,R4 \ 00000028 8C0100EF SWI +396 5189 GBS_DelTimer(&tmr_vibra); \ 0000002C 4C00A0E3 MOV R0,#+76 \ 00000030 680D80E3 ORR R0,R0,#0x1A00 \ 00000034 040080E0 ADD R0,R0,R4 \ 00000038 8C0100EF SWI +396 5190 GBS_DelTimer(&reconnect_tmr); \ 0000003C 5C00A0E3 MOV R0,#+92 \ 00000040 680D80E3 ORR R0,R0,#0x1A00 \ 00000044 040080E0 ADD R0,R0,R4 \ 00000048 8C0100EF SWI +396 5191 GBS_DelTimer(&tmr_illumination); \ 0000004C 3C00A0E3 MOV R0,#+60 \ 00000050 680D80E3 ORR R0,R0,#0x1A00 \ 00000054 040080E0 ADD R0,R0,R4 \ 00000058 8C0100EF SWI +396 5192 #ifdef ELKA 5193 GBS_DelTimer(&sli_tmr); 5194 #endif 5195 GBS_DelTimer(&remind_tmr); \ 0000005C 8C00A0E3 MOV R0,#+140 \ 00000060 600D80E3 ORR R0,R0,#0x1800 \ 00000064 040080E0 ADD R0,R0,R4 \ 00000068 8C0100EF SWI +396 5196 GBS_DelTimer(&ping_tmr); \ 0000006C E400A0E3 MOV R0,#+228 \ 00000070 540D80E3 ORR R0,R0,#0x1500 \ 00000074 040080E0 ADD R0,R0,R4 \ 00000078 8C0100EF SWI +396 5197 GBS_DelTimer(&uptime_tmr); \ 0000007C 9C00A0E3 MOV R0,#+156 \ 00000080 600D80E3 ORR R0,R0,#0x1800 \ 00000084 040080E0 ADD R0,R0,R4 \ 00000088 8C0100EF SWI +396 5198 GBS_DelTimer(&autoChangeStatus); \ 0000008C 7C00A0E3 MOV R0,#+124 \ 00000090 600D80E3 ORR R0,R0,#0x1800 \ 00000094 040080E0 ADD R0,R0,R4 \ 00000098 8C0100EF SWI +396 5199 #ifdef NEWSGOLD 5200 GBS_DelTimer(&tracktmr); \ 0000009C AC00A0E3 MOV R0,#+172 \ 000000A0 600D80E3 ORR R0,R0,#0x1800 \ 000000A4 040080E0 ADD R0,R0,R4 \ 000000A8 8C0100EF SWI +396 5201 GBS_DelTimer(&scrsTmr); \ 000000AC F400A0E3 MOV R0,#+244 \ 000000B0 580D80E3 ORR R0,R0,#0x1600 \ 000000B4 040080E0 ADD R0,R0,R4 \ 000000B8 8C0100EF SWI +396 5202 #endif 5203 GBS_DelTimer(&incs2); \ 000000BC F400A0E3 MOV R0,#+244 \ 000000C0 780D80E3 ORR R0,R0,#0x1E00 \ 000000C4 040080E0 ADD R0,R0,R4 \ 000000C8 8C0100EF SWI +396 5204 GBS_DelTimer(&develop); \ 000000CC 0C00A0E3 MOV R0,#+12 \ 000000D0 740D80E3 ORR R0,R0,#0x1D00 \ 000000D4 040080E0 ADD R0,R0,R4 \ 000000D8 8C0100EF SWI +396 5205 GBS_DelTimer(&away_tmr); \ 000000DC 6C00A0E3 MOV R0,#+108 \ 000000E0 600D80E3 ORR R0,R0,#0x1800 \ 000000E4 040080E0 ADD R0,R0,R4 \ 000000E8 8C0100EF SWI +396 5206 SetVibration(0); \ 000000EC 0000A0E3 MOV R0,#+0 \ 000000F0 7C0000EF SWI +124 5207 FreeTemplates(); \ 000000F4 ........ BL FreeTemplates 5208 cmdFree(); \ 000000F8 ........ BL cmdFree 5209 #ifdef kluchnik 5210 FreeBotMessage(); 5211 #endif 5212 FreeCLIST(); \ 000000FC ........ _BLF FreeCLIST,??FreeCLIST??rA 5213 free_ICONS(); \ 00000100 ........ BL free_ICONS 5214 // FreeSmiles(); 5215 FreeWS(ews); \ 00000104 880294E5 LDR R0,[R4, #+648] \ 00000108 290100EF SWI +297 5216 FreeXStatusText(); \ 0000010C ........ _BLF FreeXStatusText,??FreeXStatusText??rA 5217 PrintLibFree(); \ 00000110 ........ _BLF PrintLibFree,??PrintLibFree??rA 5218 SUBPROC((void *)FreeSmiles); \ 00000114 24009FE5 LDR R0,??maincsm_onclose_0 ;; FreeSmiles \ 00000118 710100EF SWI +369 5219 SUBPROC((void *)FreeXStatusesImg); \ 0000011C 20009FE5 LDR R0,??maincsm_onclose_0+0x4 ;; FreeXStatusesImg \ 00000120 710100EF SWI +369 5220 SUBPROC((void *)end_socket); \ 00000124 ........ LDR R0,??DataTable199 ;; end_socket \ 00000128 710100EF SWI +369 5221 SUBPROC((void *)ClearSendQ); \ 0000012C ........ LDR R0,??DataTable228 ;; ClearSendQ \ 00000130 710100EF SWI +369 5222 SUBPROC((void *)ElfKiller); \ 00000134 ........ LDR R0,??DataTable201 ;; ElfKiller \ 00000138 710100EF SWI +369 5223 } \ 0000013C 1080BDE8 POP {R4,PC} ;; return \ ??maincsm_onclose_0: \ 00000140 ........ DC32 FreeSmiles \ 00000144 ........ DC32 FreeXStatusesImg 5224 \ In segment CODE, align 4, keep-with-next 5225 void do_reconnect(void) 5226 { 5227 if (is_gprs_online) \ do_reconnect: \ 00000000 ........ LDR R0,??DataTable204 ;; S_ICONS \ 00000004 00402DE9 PUSH {LR} \ 00000008 041390E5 LDR R1,[R0, #+772] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0080BD08 POPEQ {PC} 5228 { 5229 DNR_TRIES=3; \ 00000014 0310A0E3 MOV R1,#+3 \ 00000018 9C1380E5 STR R1,[R0, #+924] 5230 SUBPROC((void*)create_connect); \ 0000001C ........ LDR R0,??DataTable203 ;; create_connect \ 00000020 710100EF SWI +369 5231 } 5232 } \ 00000024 0080BDE8 POP {PC} ;; return 5233 \ In segment CODE, align 4, keep-with-next 5234 void CheckDoubleRun(void) 5235 { \ CheckDoubleRun: \ 00000000 10402DE9 PUSH {R4,LR} 5236 int csm_id; 5237 if ((csm_id=(int)(gipc.data))!=-1) \ 00000004 ........ LDR R4,??DataTable204 ;; S_ICONS \ 00000008 C40094E5 LDR R0,[R4, #+196] \ 0000000C 010070E3 CMN R0,#+1 \ 00000010 1100000A BEQ ??CheckDoubleRun_0 5238 { 5239 gipc.name_to=ipc_xtask_name; \ 00000014 ........ LDR R1,??DataTable236 ;; Canvas 5240 gipc.name_from=ipc_my_name; 5241 gipc.data=(void *)csm_id; \ 00000018 C40084E5 STR R0,[R4, #+196] \ 0000001C D62F81E2 ADD R2,R1,#+856 \ 00000020 BC2084E5 STR R2,[R4, #+188] \ 00000024 CE1F81E2 ADD R1,R1,#+824 \ 00000028 C01084E5 STR R1,[R4, #+192] 5242 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc); \ 0000002C BC3084E2 ADD R3,R4,#+188 \ 00000030 0220A0E3 MOV R2,#+2 \ 00000034 B010A0E3 MOV R1,#+176 \ 00000038 DE1C81E3 ORR R1,R1,#0xDE00 \ 0000003C 0900A0E3 MOV R0,#+9 \ 00000040 420C80E3 ORR R0,R0,#0x4200 \ 00000044 000100EF SWI +256 5243 LockSched(); \ 00000048 460100EF SWI +326 5244 CloseCSM(maincsm_id); \ 0000004C 680294E5 LDR R0,[R4, #+616] \ 00000050 FC0100EF SWI +508 5245 //ShowMSG(1,(int)LG_ALREADY_STARTED); 5246 UnlockSched(); \ 00000054 470100EF SWI +327 \ 00000058 1080BDE8 POP {R4,PC} 5247 } 5248 else 5249 { 5250 InitXStatusesImg(); \ ??CheckDoubleRun_0: \ 0000005C ........ _BLF InitXStatusesImg,??InitXStatusesImg??rA 5251 //InitSmiles(); Это вызовется из InitXStatusesImg 5252 create_connect(); \ 00000060 ........ BL create_connect 5253 } 5254 } \ 00000064 1080BDE8 POP {R4,PC} ;; return 5255 5256 5257 5258 //------------------------------------------------------------// 5259 5260 5261 #define idlegui_id(icsm) (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) \ In segment CODE, align 4, keep-with-next 5262 int checkGui(int id) 5263 { \ checkGui: \ 00000000 10402DE9 PUSH {R4,LR} 5264 int retval = 0; \ 00000004 0040A0E3 MOV R4,#+0 5265 if (IsGuiOnTop(id)) \ 00000008 350100EF SWI +309 \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0A00000A BEQ ??checkGui_0 5266 { 5267 GUI* igui = GetTopGUI(); \ 00000014 4D0100EF SWI +333 5268 if (igui) \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0700000A BEQ ??checkGui_0 5269 { 5270 #ifdef ELKA 5271 canvasdata = BuildCanvas(); 5272 retval = 1; 5273 #else 5274 void *idata = GetDataOfItemByID(igui, 2); \ 00000020 0210A0E3 MOV R1,#+2 \ 00000024 4F0100EF SWI +335 5275 if (idata) \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 0300000A BEQ ??checkGui_0 5276 { 5277 canvasdata = ((void **)idata)[DISPLACE_OF_IDLECANVAS / 4]; \ 00000030 10109FE5 LDR R1,??checkGui_1 ;; S_ICONS + 572 \ 00000034 180090E5 LDR R0,[R0, #+24] 5278 retval = 1; \ 00000038 0140A0E3 MOV R4,#+1 \ 0000003C 000081E5 STR R0,[R1, #+0] 5279 } 5280 #endif 5281 } 5282 } 5283 return retval; \ ??checkGui_0: \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 1080BDE8 POP {R4,PC} ;; return \ ??checkGui_1: \ 00000048 ........ DC32 S_ICONS + 572 5284 } 5285 5286 5287 //-------------------------------------------------------------// 5288 #define IPC_GAME 7 5289 5290 typedef struct{ 5291 unsigned long uin; 5292 char *msg; 5293 }IPCmsg; 5294 \ In segment CODE, align 4, keep-with-next 5295 int maincsm_onmessage(CSM_RAM *data,GBS_MSG *msg) 5296 { \ maincsm_onmessage: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 1CD04DE2 SUB SP,SP,#+28 \ 00000008 ........ LDR R5,??DataTable206 ;; S_ICONS \ 0000000C ........ LDR R7,??DataTable236 ;; Canvas \ 00000010 0140A0E1 MOV R4,R1 \ 00000014 040094E5 LDR R0,[R4, #+4] \ 00000018 0060A0E3 MOV R6,#+0 \ 0000001C B010A0E3 MOV R1,#+176 \ 00000020 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000024 010050E1 CMP R0,R1 \ 00000028 8700001A BNE ??maincsm_onmessage_2 5297 5298 // char ss[100]; 5299 MAIN_CSM *csm=(MAIN_CSM*)data; 5300 { 5301 //IPC 5302 if (msg->msg==MSG_IPC) 5303 { 5304 IPC_REQ *ipc; 5305 if ((ipc=(IPC_REQ*)msg->data0)) \ 0000002C 0C8094E5 LDR R8,[R4, #+12] \ 00000030 000058E3 CMP R8,#+0 \ 00000034 8400000A BEQ ??maincsm_onmessage_2 5306 { 5307 if (strcmp_nocase(ipc->name_to,ipc_my_name)==0) \ 00000038 000098E5 LDR R0,[R8, #+0] \ 0000003C CE9FA0E3 MOV R9,#+824 \ 00000040 071089E0 ADD R1,R9,R7 \ 00000044 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 7E00001A BNE ??maincsm_onmessage_2 5308 { 5309 switch (msg->submess) \ 00000050 081094E5 LDR R1,[R4, #+8] \ 00000054 040098E5 LDR R0,[R8, #+4] \ 00000058 011041E2 SUB R1,R1,#+1 \ 0000005C 040051E3 CMP R1,#+4 \ 00000060 7900008A BHI ??maincsm_onmessage_2 \ 00000064 012F8FE2 ADR R2,??maincsm_onmessage_0 \ 00000068 0120D2E7 LDRB R2,[R2, R1] \ 0000006C 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??maincsm_onmessage_0: \ 00000070 010A1116 DC8 +1,+10,+17,+22 \ 00000074 53000000 DC8 +83,+0,+0,+0 5310 { 5311 case IPC_CHECK_DOUBLERUN: 5312 //Если приняли свое собственное сообщение, значит запускаем чекер 5313 if (ipc->name_from==ipc_my_name) SUBPROC((void *)CheckDoubleRun); \ ??maincsm_onmessage_3: \ 00000078 071089E0 ADD R1,R9,R7 \ 0000007C 010050E1 CMP R0,R1 \ 00000080 0200001A BNE ??maincsm_onmessage_4 \ 00000084 980A9FE5 LDR R0,??maincsm_onmessage_5 ;; CheckDoubleRun \ 00000088 710100EF SWI +369 \ 0000008C 6E0000EA B ??maincsm_onmessage_2 5314 else ipc->data=(void *)maincsm_id; \ ??maincsm_onmessage_4: \ 00000090 680295E5 LDR R0,[R5, #+616] \ 00000094 080088E5 STR R0,[R8, #+8] \ 00000098 6B0000EA B ??maincsm_onmessage_2 5315 break; 5316 case IPC_SMILE_PROCESSED: 5317 //Только собственные смайлы ;) 5318 if (ipc->name_from==ipc_my_name) SUBPROC((void *)ProcessNextSmile); \ ??maincsm_onmessage_6: \ 0000009C 071089E0 ADD R1,R9,R7 \ 000000A0 010050E1 CMP R0,R1 \ 000000A4 0100001A BNE ??maincsm_onmessage_7 \ 000000A8 780A9FE5 LDR R0,??maincsm_onmessage_5+0x4 ;; ProcessNextSmile \ ??maincsm_onmessage_8: \ 000000AC 710100EF SWI +369 5319 SMART_REDRAW(); \ ??maincsm_onmessage_7: \ 000000B0 ........ BL SMART_REDRAW \ 000000B4 640000EA B ??maincsm_onmessage_2 5320 break; 5321 case IPC_XSTATUSIMG_PROCESSED: 5322 //Только собственные иксстатусы ;) 5323 if (ipc->name_from==ipc_my_name) SUBPROC((void *)ProcessNextXStatImg); \ ??maincsm_onmessage_9: \ 000000B8 071089E0 ADD R1,R9,R7 \ 000000BC 010050E1 CMP R0,R1 \ 000000C0 FAFFFF1A BNE ??maincsm_onmessage_7 \ 000000C4 600A9FE5 LDR R0,??maincsm_onmessage_5+0x8 ;; ProcessNextXStatImg \ 000000C8 F7FFFFEA B ??maincsm_onmessage_8 5324 SMART_REDRAW(); 5325 break; 5326 case IPC_GAME: 5327 { 5328 5329 } 5330 break; 5331 case IPC_TENSECONDS: 5332 //Только свое сообщение 5333 if (ipc->name_from==ipc_my_name) \ ??maincsm_onmessage_10: \ 000000CC 071089E0 ADD R1,R9,R7 \ 000000D0 010050E1 CMP R0,R1 \ 000000D4 5C00001A BNE ??maincsm_onmessage_2 5334 { 5335 CLIST *t=(CLIST *)cltop; 5336 int f=0; 5337 if(main_msg_timer2!=0) main_msg_timer2--; else main_msg_timer2=0; \ 000000D8 A80395E5 LDR R0,[R5, #+936] \ 000000DC 0C8395E5 LDR R8,[R5, #+780] \ 000000E0 0090A0E3 MOV R9,#+0 \ 000000E4 000050E3 CMP R0,#+0 \ 000000E8 1900000A BEQ ??maincsm_onmessage_11 \ 000000EC 010040E2 SUB R0,R0,#+1 \ 000000F0 A80385E5 STR R0,[R5, #+936] \ 000000F4 160000EA B ??maincsm_onmessage_11 5338 while(t) 5339 { 5340 if(t->just_now) \ ??maincsm_onmessage_12: \ 000000F8 680098E5 LDR R0,[R8, #+104] \ 000000FC 000050E3 CMP R0,#+0 \ 00000100 0200000A BEQ ??maincsm_onmessage_13 5341 { 5342 if (!(--(t->just_now))) f=1; \ 00000104 010050E2 SUBS R0,R0,#+1 \ 00000108 680088E5 STR R0,[R8, #+104] \ 0000010C 0190A003 MOVEQ R9,#+1 5343 } 5344 if (t->isactive) \ ??maincsm_onmessage_13: \ 00000110 9C0098E5 LDR R0,[R8, #+156] \ 00000114 000050E3 CMP R0,#+0 \ 00000118 0C00000A BEQ ??maincsm_onmessage_14 5345 { 5346 if (!(--(t->isactive))) \ 0000011C 010050E2 SUBS R0,R0,#+1 \ 00000120 9C0088E5 STR R0,[R8, #+156] \ 00000124 0900001A BNE ??maincsm_onmessage_14 5347 { 5348 f=1; //Если дошли до 0 хотя бы один раз - надо перерисовать меню 5349 if ((t->log)&&(!t->isunread)) \ 00000128 900098E5 LDR R0,[R8, #+144] \ 0000012C 0190A0E3 MOV R9,#+1 \ 00000130 000050E3 CMP R0,#+0 \ 00000134 0500000A BEQ ??maincsm_onmessage_14 \ 00000138 800098E5 LDR R0,[R8, #+128] \ 0000013C 000050E3 CMP R0,#+0 \ 00000140 0200001A BNE ??maincsm_onmessage_14 5350 { 5351 FreeLOGQ(&t->log); \ 00000144 900088E2 ADD R0,R8,#+144 \ 00000148 ........ BL FreeLOGQ 5352 t->msg_count=0; \ 0000014C A06088E5 STR R6,[R8, #+160] 5353 } 5354 } 5355 } 5356 t=(CLIST *)(t->next); \ ??maincsm_onmessage_14: \ 00000150 008098E5 LDR R8,[R8, #+0] 5357 } \ ??maincsm_onmessage_11: \ 00000154 000058E3 CMP R8,#+0 \ 00000158 E6FFFF1A BNE ??maincsm_onmessage_12 5358 if (f) \ 0000015C 000059E3 CMP R9,#+0 \ 00000160 0A00000A BEQ ??maincsm_onmessage_15 5359 { 5360 CLIST *oldt=NULL; 5361 if (contactlist_menu_id) \ 00000164 141395E5 LDR R1,[R5, #+788] \ 00000168 0000A0E3 MOV R0,#+0 \ 0000016C 000051E3 CMP R1,#+0 \ 00000170 0400000A BEQ ??maincsm_onmessage_16 5362 { 5363 oldt=FindContactByN(GetCurMenuItem(FindGUIbyId(contactlist_menu_id,NULL))); \ 00000174 140395E5 LDR R0,[R5, #+788] \ 00000178 0010A0E3 MOV R1,#+0 \ 0000017C 090200EF SWI +521 \ 00000180 8F0100EF SWI +399 \ 00000184 ........ _BLF FindContactByN,??FindContactByN??rA 5364 } 5365 RecountMenu(oldt,1); \ ??maincsm_onmessage_16: \ 00000188 0110A0E3 MOV R1,#+1 \ 0000018C ........ BL RecountMenu 5366 } 5367 if (time_to_stop_t9) \ ??maincsm_onmessage_15: \ 00000190 B00395E5 LDR R0,[R5, #+944] \ 00000194 000050E3 CMP R0,#+0 \ 00000198 2B00000A BEQ ??maincsm_onmessage_2 5368 { 5369 if (!(--time_to_stop_t9)) \ 0000019C 010050E2 SUBS R0,R0,#+1 \ 000001A0 B00385E5 STR R0,[R5, #+944] \ 000001A4 2800001A BNE ??maincsm_onmessage_2 5370 { 5371 if (IsGuiOnTop(edchat_id)) RefreshGUI(); \ 000001A8 180395E5 LDR R0,[R5, #+792] \ 000001AC 350100EF SWI +309 \ 000001B0 000050E3 CMP R0,#+0 \ 000001B4 2400000A BEQ ??maincsm_onmessage_2 \ 000001B8 960100EF SWI +406 \ 000001BC 220000EA B ??maincsm_onmessage_2 5372 } 5373 } 5374 } 5375 break; 5376 case IPC_SENDMSG: ; //IPC_SENDMSG by BoBa 26.06.07 5377 int l=strlen(((IPCMsg *)(ipc->data))->msg); \ ??maincsm_onmessage_17: \ 000001C0 080098E5 LDR R0,[R8, #+8] \ 000001C4 040090E5 LDR R0,[R0, #+4] \ 000001C8 1B0000EF SWI +27 \ 000001CC 0090A0E1 MOV R9,R0 5378 TPKT *msg=malloc(sizeof(PKT)+l+30); \ 000001D0 260089E2 ADD R0,R9,#+38 \ 000001D4 140000EF SWI +20 \ 000001D8 00A0A0E1 MOV R10,R0 5379 msg->pkt.uin=((IPCMsg *)(ipc->data))->uin; \ 000001DC 080098E5 LDR R0,[R8, #+8] 5380 msg->pkt.type=T_SENDMSG; 5381 msg->pkt.data_len=l; 5382 memcpy(msg->data,((IPCMsg *)(ipc->data))->msg,l); \ 000001E0 0920A0E1 MOV R2,R9 \ 000001E4 000090E5 LDR R0,[R0, #+0] \ 000001E8 00008AE5 STR R0,[R10, #+0] \ 000001EC 0200A0E3 MOV R0,#+2 \ 000001F0 B400CAE1 STRH R0,[R10, #+4] \ 000001F4 B690CAE1 STRH R9,[R10, #+6] \ 000001F8 080098E5 LDR R0,[R8, #+8] \ 000001FC 041090E5 LDR R1,[R0, #+4] \ 00000200 08008AE2 ADD R0,R10,#+8 \ 00000204 1E0100EF SWI +286 5383 //slientsend=1; 5384 if(strstr(msg->data,PASS)==0) \ 00000208 20199FE5 LDR R1,??maincsm_onmessage_5+0xC ;; PASS \ 0000020C 08008AE2 ADD R0,R10,#+8 \ 00000210 180100EF SWI +280 \ 00000214 000050E3 CMP R0,#+0 \ 00000218 0400000A BEQ ??maincsm_onmessage_18 5385 { 5386 SENDMSGCOUNT++; //Номер сообщения 5387 SUBPROC((void *)SendAnswer,0,msg); 5388 } 5389 else 5390 { 5391 msg->pkt.data_len=40; \ 0000021C 2800A0E3 MOV R0,#+40 \ 00000220 B600CAE1 STRH R0,[R10, #+6] 5392 strcpy(msg->data, "Fuck you hacker! my password sux ur ass"); \ 00000224 7C1F87E2 ADD R1,R7,#+496 \ 00000228 08008AE2 ADD R0,R10,#+8 \ 0000022C 1A0000EF SWI +26 5393 SENDMSGCOUNT++; //Номер сообщения \ ??maincsm_onmessage_18: \ 00000230 700295E5 LDR R0,[R5, #+624] 5394 SUBPROC((void *)SendAnswer,0,msg); \ 00000234 0A20A0E1 MOV R2,R10 \ 00000238 010080E2 ADD R0,R0,#+1 \ 0000023C 700285E5 STR R0,[R5, #+624] \ 00000240 ........ LDR R0,??DataTable226 ;; SendAnswer \ 00000244 0010A0E3 MOV R1,#+0 \ 00000248 710100EF SWI +369 5395 } 5396 break; 5397 } 5398 } 5399 } 5400 } 5401 //Нарисуем иконочку моего статуса 5402 //#define idlegui_id (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) 5403 //CSM_RAM *icsm=FindCSMbyID(CSM_root()->idle_id); 5404 // if (IsGuiOnTop(idlegui_id)/*&&IsUnlocked()*/) //Если IdleGui на самом верху 5405 // { 5406 void *icsm; 5407 icsm=FindCSMbyID(CSM_root()->idle_id); \ ??maincsm_onmessage_2: \ 0000024C 068100EF SWI +33030 \ 00000250 040090E5 LDR R0,[R0, #+4] \ 00000254 080100EF SWI +264 \ 00000258 000050E3 CMP R0,#+0 \ 0000025C 0700000A BEQ ??maincsm_onmessage_19 \ 00000260 2C0090E5 LDR R0,[R0, #+44] 5408 if (icsm && checkGui(idlegui_id(icsm))) \ 00000264 ........ BL checkGui \ 00000268 000050E3 CMP R0,#+0 \ 0000026C 0300000A BEQ ??maincsm_onmessage_19 5409 { 5410 // GUI *igui=GetTopGUI(); 5411 // if (igui) //И он существует 5412 //{ 5413 INC_show=0; \ 00000270 B86385E5 STR R6,[R5, #+952] 5414 canvasdata=BuildCanvas(); //void * - belyj fon! \ 00000274 F18000EF SWI +33009 \ 00000278 3C0285E5 STR R0,[R5, #+572] \ 0000027C 010000EA B ??maincsm_onmessage_20 5415 //Тут трохи поменял 5416 // by Rainmaker: Рисуем канву только для иконки и выводим в своих координатах 5417 #ifdef ELKA 5418 if (total_unread) 5419 SLI_On(); 5420 #endif 5421 } 5422 //} 5423 else 5424 { 5425 main_d=1; \ ??maincsm_onmessage_19: \ 00000280 0100A0E3 MOV R0,#+1 \ 00000284 340285E5 STR R0,[R5, #+564] 5426 } 5427 } 5428 5429 //---------------------------------------------------// 5430 void *icsm; 5431 icsm=FindCSMbyID(CSM_root()->idle_id); 5432 if (icsm && checkGui(idlegui_id(icsm))) \ ??maincsm_onmessage_20: \ 00000288 ........ LDR R8,??DataTable244 ;; fonto \ 0000028C 068100EF SWI +33030 \ 00000290 040090E5 LDR R0,[R0, #+4] \ 00000294 080100EF SWI +264 \ 00000298 000050E3 CMP R0,#+0 \ 0000029C 1C01000A BEQ ??maincsm_onmessage_21 \ 000002A0 2C0090E5 LDR R0,[R0, #+44] \ 000002A4 ........ BL checkGui \ 000002A8 000050E3 CMP R0,#+0 \ 000002AC 1801000A BEQ ??maincsm_onmessage_21 5433 { 5434 int icn; 5435 if(total_unread) \ 000002B0 080395E5 LDR R0,[R5, #+776] \ 000002B4 000050E3 CMP R0,#+0 5436 icn=IS_MSG; \ 000002B8 0D90A013 MOVNE R9,#+13 \ 000002BC 0A00001A BNE ??maincsm_onmessage_22 5437 else 5438 { 5439 switch(connect_state) \ 000002C0 E40295E5 LDR R0,[R5, #+740] \ 000002C4 000050E3 CMP R0,#+0 \ 000002C8 0200000A BEQ ??maincsm_onmessage_23 \ 000002CC 030050E2 SUBS R0,R0,#+3 \ 000002D0 0200000A BEQ ??maincsm_onmessage_24 \ 000002D4 030000EA B ??maincsm_onmessage_25 5440 { 5441 case 0: 5442 icn=IS_OFFLINE; break; \ ??maincsm_onmessage_23: \ 000002D8 0090A0E3 MOV R9,#+0 \ 000002DC 020000EA B ??maincsm_onmessage_22 5443 case 3: 5444 icn=CurrentStatus; //IS_ONLINE; \ ??maincsm_onmessage_24: \ 000002E0 809295E5 LDR R9,[R5, #+640] \ 000002E4 000000EA B ??maincsm_onmessage_22 5445 break; 5446 default: 5447 icn=IS_UNKNOWN; break; \ ??maincsm_onmessage_25: \ 000002E8 0E90A0E3 MOV R9,#+14 5448 } 5449 } 5450 5451 #ifdef NEWSGOLD 5452 if(ShowStatusIcon==0 || ShowStatusIcon==2 || ShowStatusIcon==3) //kluchnik 26.03.08 \ ??maincsm_onmessage_22: \ 000002EC ........ LDR R0,??DataTable231 ;; ShowStatusIcon \ 000002F0 000090E5 LDR R0,[R0, #+0] \ 000002F4 000050E3 CMP R0,#+0 \ 000002F8 02005013 CMPNE R0,#+2 \ 000002FC 03005013 CMPNE R0,#+3 \ 00000300 2100001A BNE ??maincsm_onmessage_26 5453 { 5454 #endif 5455 if((IsUnlocked()) || (!IsUnlocked()) || (IsScreenSaver())) \ 00000304 430000EF SWI +67 \ 00000308 000050E3 CMP R0,#+0 \ 0000030C 0500001A BNE ??maincsm_onmessage_27 \ 00000310 430000EF SWI +67 \ 00000314 000050E3 CMP R0,#+0 \ 00000318 0200000A BEQ ??maincsm_onmessage_27 \ 0000031C 420000EF SWI +66 \ 00000320 000050E3 CMP R0,#+0 \ 00000324 1800000A BEQ ??maincsm_onmessage_26 5456 { 5457 DrawCanvas(canvasdata,IDLEICON_X,IDLEICON_Y,IDLEICON_X+GetImgWidth((int)S_ICONS[icn])-1, 5458 IDLEICON_Y+GetImgHeight((int)S_ICONS[icn])-1,1); \ ??maincsm_onmessage_27: \ 00000328 04B89FE5 LDR R11,??maincsm_onmessage_5+0x10 ;; IDLEICON_Y \ 0000032C 099185E0 ADD R9,R5,R9, LSL #+2 \ 00000330 000099E5 LDR R0,[R9, #+0] \ 00000334 210000EF SWI +33 \ 00000338 00A0A0E1 MOV R10,R0 \ 0000033C 000099E5 LDR R0,[R9, #+0] \ 00000340 220000EF SWI +34 \ 00000344 EC179FE5 LDR R1,??maincsm_onmessage_5+0x14 ;; IDLEICON_X \ 00000348 00209BE5 LDR R2,[R11, #+0] \ 0000034C 001091E5 LDR R1,[R1, #+0] \ 00000350 0130A0E3 MOV R3,#+1 \ 00000354 08002DE9 PUSH {R3} \ 00000358 010080E0 ADD R0,R0,R1 \ 0000035C 02308AE0 ADD R3,R10,R2 \ 00000360 013043E2 SUB R3,R3,#+1 \ 00000364 08002DE9 PUSH {R3} \ 00000368 013040E2 SUB R3,R0,#+1 \ 0000036C 3C0295E5 LDR R0,[R5, #+572] \ 00000370 250000EF SWI +37 5459 DrawImg(IDLEICON_X,IDLEICON_Y,S_ICONS[icn]); \ 00000374 BC079FE5 LDR R0,??maincsm_onmessage_5+0x14 ;; IDLEICON_X \ 00000378 002099E5 LDR R2,[R9, #+0] \ 0000037C 00109BE5 LDR R1,[R11, #+0] \ 00000380 000090E5 LDR R0,[R0, #+0] \ 00000384 230000EF SWI +35 \ 00000388 08D08DE2 ADD SP,SP,#+8 5460 } 5461 #ifdef NEWSGOLD 5462 } 5463 #ifdef kluchnik 5464 if(show_xstatus==1) 5465 #else 5466 if(show_xstatus==1 || show_xstatus==3) //kluchnik 26.03.08 \ ??maincsm_onmessage_26: \ 0000038C ........ LDR R0,??DataTable232 ;; show_xstatus \ 00000390 000090E5 LDR R0,[R0, #+0] \ 00000394 010050E3 CMP R0,#+1 \ 00000398 03005013 CMPNE R0,#+3 \ 0000039C 2300001A BNE ??maincsm_onmessage_28 5467 #endif 5468 #else 5469 if(show_xstatus==1) //kluchnik 26.03.08 5470 #endif 5471 { 5472 PNGTOP_DESC *pltop=PNG_TOP(); 5473 pltop->dyn_pltop=XStatusesImgList; 5474 DisableIDLETMR(); 5475 DrawCanvas(canvasdata,IDLEICON_XX,IDLEICON_YX,IDLEICON_XX+GetImgWidth((int)XStatusesIconArray[CurrentXStatus])-1, 5476 IDLEICON_YX+GetImgHeight((int)XStatusesIconArray[CurrentXStatus])-1,1); \ 000003A0 94979FE5 LDR R9,??maincsm_onmessage_5+0x18 ;; XStatusesIconArray \ 000003A4 94B79FE5 LDR R11,??maincsm_onmessage_5+0x1C ;; IDLEICON_YX \ 000003A8 B98100EF SWI +33209 \ 000003AC ........ LDR R1,??DataTable212 ;; XStatusesImgList \ 000003B0 001091E5 LDR R1,[R1, #+0] \ 000003B4 081080E5 STR R1,[R0, #+8] \ 000003B8 7F0100EF SWI +383 \ 000003BC 840295E5 LDR R0,[R5, #+644] \ 000003C0 001099E5 LDR R1,[R9, #+0] \ 000003C4 000191E7 LDR R0,[R1, +R0, LSL #+2] \ 000003C8 210000EF SWI +33 \ 000003CC 001099E5 LDR R1,[R9, #+0] \ 000003D0 00A0A0E1 MOV R10,R0 \ 000003D4 840295E5 LDR R0,[R5, #+644] \ 000003D8 000191E7 LDR R0,[R1, +R0, LSL #+2] \ 000003DC 220000EF SWI +34 \ 000003E0 5C179FE5 LDR R1,??maincsm_onmessage_5+0x20 ;; IDLEICON_XX \ 000003E4 00209BE5 LDR R2,[R11, #+0] \ 000003E8 001091E5 LDR R1,[R1, #+0] \ 000003EC 0130A0E3 MOV R3,#+1 \ 000003F0 08002DE9 PUSH {R3} \ 000003F4 010080E0 ADD R0,R0,R1 \ 000003F8 02308AE0 ADD R3,R10,R2 \ 000003FC 013043E2 SUB R3,R3,#+1 \ 00000400 08002DE9 PUSH {R3} \ 00000404 013040E2 SUB R3,R0,#+1 \ 00000408 3C0295E5 LDR R0,[R5, #+572] \ 0000040C 250000EF SWI +37 5477 DrawImg(IDLEICON_XX,IDLEICON_YX,XStatusesIconArray[CurrentXStatus]); \ 00000410 840295E5 LDR R0,[R5, #+644] \ 00000414 001099E5 LDR R1,[R9, #+0] \ 00000418 002191E7 LDR R2,[R1, +R0, LSL #+2] \ 0000041C 20079FE5 LDR R0,??maincsm_onmessage_5+0x20 ;; IDLEICON_XX \ 00000420 00109BE5 LDR R1,[R11, #+0] \ 00000424 000090E5 LDR R0,[R0, #+0] \ 00000428 230000EF SWI +35 \ 0000042C 08D08DE2 ADD SP,SP,#+8 5478 } 5479 5480 if (main_d==1) \ ??maincsm_onmessage_28: \ 00000430 340295E5 LDR R0,[R5, #+564] \ 00000434 010050E3 CMP R0,#+1 \ 00000438 8A00001A BNE ??maincsm_onmessage_29 5481 { 5482 if(Is_SMARTCPU_On && main_msg_timer2) \ 0000043C 540295E5 LDR R0,[R5, #+596] \ 00000440 000050E3 CMP R0,#+0 \ 00000444 A8039515 LDRNE R0,[R5, #+936] \ 00000448 00005013 CMPNE R0,#+0 \ 0000044C 8400000A BEQ ??maincsm_onmessage_30 5483 { 5484 if(fonto==1) \ 00000450 F0969FE5 LDR R9,??maincsm_onmessage_5+0x24 ;; msg_d_x \ 00000454 F0A69FE5 LDR R10,??maincsm_onmessage_5+0x28 ;; msg_d_y \ 00000458 F0B69FE5 LDR R11,??maincsm_onmessage_5+0x2C ;; spaco2 \ 0000045C 383295E5 LDR R3,[R5, #+568] \ 00000460 DC10A0E3 MOV R1,#+220 \ 00000464 701D81E3 ORR R1,R1,#0x1C00 \ 00000468 051081E0 ADD R1,R1,R5 \ 0000046C 14108DE5 STR R1,[SP, #+20] \ 00000470 AC10A0E3 MOV R1,#+172 \ 00000474 701D81E3 ORR R1,R1,#0x1C00 \ 00000478 051081E0 ADD R1,R1,R5 \ 0000047C 10108DE5 STR R1,[SP, #+16] \ 00000480 7C10A0E3 MOV R1,#+124 \ 00000484 701D81E3 ORR R1,R1,#0x1C00 \ 00000488 051081E0 ADD R1,R1,R5 \ 0000048C 0C108DE5 STR R1,[SP, #+12] \ 00000490 4C10A0E3 MOV R1,#+76 \ 00000494 701D81E3 ORR R1,R1,#0x1C00 \ 00000498 051081E0 ADD R1,R1,R5 \ 0000049C 08108DE5 STR R1,[SP, #+8] \ 000004A0 000099E5 LDR R0,[R9, #+0] \ 000004A4 00109AE5 LDR R1,[R10, #+0] \ 000004A8 00C09BE5 LDR R12,[R11, #+0] \ 000004AC 00E098E5 LDR LR,[R8, #+0] \ 000004B0 00102DE9 PUSH {R12} \ 000004B4 1C20A0E3 MOV R2,#+28 \ 000004B8 702D82E3 ORR R2,R2,#0x1C00 \ 000004BC 052082E0 ADD R2,R2,R5 \ 000004C0 01005EE3 CMP LR,#+1 \ 000004C4 2E00001A BNE ??maincsm_onmessage_31 5485 { 5486 PrintField(msg_d_x,msg_d_y, a_txt, align, fonto, spaco2); \ 000004C8 01C0A0E3 MOV R12,#+1 \ 000004CC 00102DE9 PUSH {R12} \ 000004D0 ........ _BLF PrintField,??PrintField??rA 5487 PrintField(msg_d_x,msg_d_y+paused_height, s_txt, align, fonto, spaco2); \ 000004D4 00009BE5 LDR R0,[R11, #+0] \ 000004D8 01002DE9 PUSH {R0} \ 000004DC 000098E5 LDR R0,[R8, #+0] \ 000004E0 01002DE9 PUSH {R0} \ 000004E4 401295E5 LDR R1,[R5, #+576] \ 000004E8 383295E5 LDR R3,[R5, #+568] \ 000004EC 18209DE5 LDR R2,[SP, #+24] \ 000004F0 00009AE5 LDR R0,[R10, #+0] \ 000004F4 001081E0 ADD R1,R1,R0 \ 000004F8 000099E5 LDR R0,[R9, #+0] \ 000004FC ........ _BLF PrintField,??PrintField??rA 5488 PrintField(msg_d_x,msg_d_y+(2*paused_height), d_txt, align, fonto, spaco2); \ 00000500 00009BE5 LDR R0,[R11, #+0] \ 00000504 01002DE9 PUSH {R0} \ 00000508 000098E5 LDR R0,[R8, #+0] \ 0000050C 01002DE9 PUSH {R0} \ 00000510 401295E5 LDR R1,[R5, #+576] \ 00000514 383295E5 LDR R3,[R5, #+568] \ 00000518 24209DE5 LDR R2,[SP, #+36] \ 0000051C 00009AE5 LDR R0,[R10, #+0] \ 00000520 811080E0 ADD R1,R0,R1, LSL #+1 \ 00000524 000099E5 LDR R0,[R9, #+0] \ 00000528 ........ _BLF PrintField,??PrintField??rA 5489 PrintField(msg_d_x,msg_d_y+(3*paused_height), f_txt, align, fonto, spaco2); \ 0000052C 00009BE5 LDR R0,[R11, #+0] \ 00000530 01002DE9 PUSH {R0} \ 00000534 000098E5 LDR R0,[R8, #+0] \ 00000538 01002DE9 PUSH {R0} \ 0000053C 401295E5 LDR R1,[R5, #+576] \ 00000540 383295E5 LDR R3,[R5, #+568] \ 00000544 30209DE5 LDR R2,[SP, #+48] \ 00000548 00009AE5 LDR R0,[R10, #+0] \ 0000054C 811081E0 ADD R1,R1,R1, LSL #+1 \ 00000550 001081E0 ADD R1,R1,R0 \ 00000554 000099E5 LDR R0,[R9, #+0] \ 00000558 ........ _BLF PrintField,??PrintField??rA 5490 PrintField(msg_d_x,msg_d_y+(4*paused_height), g_txt, align, fonto, spaco2); \ 0000055C 00009BE5 LDR R0,[R11, #+0] \ 00000560 01002DE9 PUSH {R0} \ 00000564 000098E5 LDR R0,[R8, #+0] \ 00000568 01002DE9 PUSH {R0} \ 0000056C 401295E5 LDR R1,[R5, #+576] \ 00000570 383295E5 LDR R3,[R5, #+568] \ 00000574 3C209DE5 LDR R2,[SP, #+60] \ 00000578 00009AE5 LDR R0,[R10, #+0] \ 0000057C 011180E0 ADD R1,R0,R1, LSL #+2 \ 00000580 340000EA B ??maincsm_onmessage_32 5491 } 5492 else 5493 { 5494 PrintField(msg_d_x,msg_d_y, a_txt, align, fonto, spaco2); \ ??maincsm_onmessage_31: \ 00000584 00402DE9 PUSH {LR} \ 00000588 ........ _BLF PrintField,??PrintField??rA 5495 PrintField(msg_d_x,msg_d_y+GetFontYSIZE(paused_height)+1, s_txt, align, fonto, spaco2); \ 0000058C 400295E5 LDR R0,[R5, #+576] \ 00000590 C50100EF SWI +453 \ 00000594 00109BE5 LDR R1,[R11, #+0] \ 00000598 02002DE9 PUSH {R1} \ 0000059C 001098E5 LDR R1,[R8, #+0] \ 000005A0 02002DE9 PUSH {R1} \ 000005A4 383295E5 LDR R3,[R5, #+568] \ 000005A8 18209DE5 LDR R2,[SP, #+24] \ 000005AC 00109AE5 LDR R1,[R10, #+0] \ 000005B0 010080E0 ADD R0,R0,R1 \ 000005B4 011080E2 ADD R1,R0,#+1 \ 000005B8 000099E5 LDR R0,[R9, #+0] \ 000005BC ........ _BLF PrintField,??PrintField??rA 5496 PrintField(msg_d_x,msg_d_y+(2*GetFontYSIZE(paused_height))+2, d_txt, align, fonto, spaco2); \ 000005C0 400295E5 LDR R0,[R5, #+576] \ 000005C4 C50100EF SWI +453 \ 000005C8 00109BE5 LDR R1,[R11, #+0] \ 000005CC 02002DE9 PUSH {R1} \ 000005D0 001098E5 LDR R1,[R8, #+0] \ 000005D4 02002DE9 PUSH {R1} \ 000005D8 383295E5 LDR R3,[R5, #+568] \ 000005DC 24209DE5 LDR R2,[SP, #+36] \ 000005E0 00109AE5 LDR R1,[R10, #+0] \ 000005E4 800081E0 ADD R0,R1,R0, LSL #+1 \ 000005E8 021080E2 ADD R1,R0,#+2 \ 000005EC 000099E5 LDR R0,[R9, #+0] \ 000005F0 ........ _BLF PrintField,??PrintField??rA 5497 PrintField(msg_d_x,msg_d_y+(3*GetFontYSIZE(paused_height))+3, f_txt, align, fonto, spaco2); \ 000005F4 400295E5 LDR R0,[R5, #+576] \ 000005F8 C50100EF SWI +453 \ 000005FC 00109BE5 LDR R1,[R11, #+0] \ 00000600 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000604 02002DE9 PUSH {R1} \ 00000608 001098E5 LDR R1,[R8, #+0] \ 0000060C 02002DE9 PUSH {R1} \ 00000610 383295E5 LDR R3,[R5, #+568] \ 00000614 30209DE5 LDR R2,[SP, #+48] \ 00000618 00109AE5 LDR R1,[R10, #+0] \ 0000061C 010080E0 ADD R0,R0,R1 \ 00000620 031080E2 ADD R1,R0,#+3 \ 00000624 000099E5 LDR R0,[R9, #+0] \ 00000628 ........ _BLF PrintField,??PrintField??rA 5498 PrintField(msg_d_x,msg_d_y+(4*GetFontYSIZE(paused_height))+4, g_txt, align, fonto, spaco2); \ 0000062C 400295E5 LDR R0,[R5, #+576] \ 00000630 C50100EF SWI +453 \ 00000634 00109BE5 LDR R1,[R11, #+0] \ 00000638 02002DE9 PUSH {R1} \ 0000063C 001098E5 LDR R1,[R8, #+0] \ 00000640 02002DE9 PUSH {R1} \ 00000644 383295E5 LDR R3,[R5, #+568] \ 00000648 3C209DE5 LDR R2,[SP, #+60] \ 0000064C 00109AE5 LDR R1,[R10, #+0] \ 00000650 000181E0 ADD R0,R1,R0, LSL #+2 \ 00000654 041080E2 ADD R1,R0,#+4 \ ??maincsm_onmessage_32: \ 00000658 000099E5 LDR R0,[R9, #+0] \ 0000065C ........ _BLF PrintField,??PrintField??rA \ 00000660 28D08DE2 ADD SP,SP,#+40 5499 } 5500 } 5501 main_d=0; \ ??maincsm_onmessage_30: \ 00000664 346285E5 STR R6,[R5, #+564] 5502 } 5503 5504 if(Is_UPTIME_On) DrawOnlineTime(canvasdata); \ ??maincsm_onmessage_29: \ 00000668 A40295E5 LDR R0,[R5, #+676] \ 0000066C 000050E3 CMP R0,#+0 \ 00000670 0100000A BEQ ??maincsm_onmessage_33 \ 00000674 3C0295E5 LDR R0,[R5, #+572] \ 00000678 ........ BL DrawOnlineTime 5505 if(Is_PING_On) DrawPing(canvasdata); \ ??maincsm_onmessage_33: \ 0000067C 500295E5 LDR R0,[R5, #+592] \ 00000680 000050E3 CMP R0,#+0 \ 00000684 0100000A BEQ ??maincsm_onmessage_34 \ 00000688 3C0295E5 LDR R0,[R5, #+572] \ 0000068C ........ BL DrawPing 5506 if(Auto_Status && showAwayIdle) DrawAutoMSG(canvasdata); \ ??maincsm_onmessage_34: \ 00000690 ........ LDR R0,??DataTable213 ;; Auto_Status \ 00000694 000090E5 LDR R0,[R0, #+0] \ 00000698 000050E3 CMP R0,#+0 \ 0000069C 0500000A BEQ ??maincsm_onmessage_35 \ 000006A0 ........ LDR R0,??DataTable214 ;; showAwayIdle \ 000006A4 000090E5 LDR R0,[R0, #+0] \ 000006A8 000050E3 CMP R0,#+0 \ 000006AC 0100000A BEQ ??maincsm_onmessage_35 \ 000006B0 3C0295E5 LDR R0,[R5, #+572] \ 000006B4 ........ BL DrawAutoMSG 5507 if(Is_Unread_On) \ ??maincsm_onmessage_35: \ 000006B8 94049FE5 LDR R0,??maincsm_onmessage_5+0x30 ;; Is_Unread_On \ 000006BC 000090E5 LDR R0,[R0, #+0] \ 000006C0 000050E3 CMP R0,#+0 \ 000006C4 1200000A BEQ ??maincsm_onmessage_21 5508 { 5509 sprintf(unread_msg_info, "Unread: %d", total_unread2); \ 000006C8 642295E5 LDR R2,[R5, #+612] \ 000006CC A490A0E3 MOV R9,#+164 \ 000006D0 509E89E3 ORR R9,R9,#0x500 \ 000006D4 861F87E2 ADD R1,R7,#+536 \ 000006D8 050089E0 ADD R0,R9,R5 \ 000006DC 160000EF SWI +22 5510 PrintField(unread_X,unread_Y, unread_msg_info, align, fonto, spaco1); \ 000006E0 ........ LDR R0,??DataTable215 ;; spaco1 \ 000006E4 052089E0 ADD R2,R9,R5 \ 000006E8 000090E5 LDR R0,[R0, #+0] \ 000006EC 01002DE9 PUSH {R0} \ 000006F0 000098E5 LDR R0,[R8, #+0] \ 000006F4 01002DE9 PUSH {R0} \ 000006F8 383295E5 LDR R3,[R5, #+568] \ 000006FC 54049FE5 LDR R0,??maincsm_onmessage_5+0x34 ;; unread_Y \ 00000700 001090E5 LDR R1,[R0, #+0] \ 00000704 50049FE5 LDR R0,??maincsm_onmessage_5+0x38 ;; unread_X \ 00000708 000090E5 LDR R0,[R0, #+0] \ 0000070C ........ _BLF PrintField,??PrintField??rA \ 00000710 08D08DE2 ADD SP,SP,#+8 5511 } 5512 } 5513 5514 5515 //-----------------------------------------------------------// 5516 5517 5518 if (msg->msg==MSG_RECONFIGURE_REQ) \ ??maincsm_onmessage_21: \ 00000714 040094E5 LDR R0,[R4, #+4] \ 00000718 AF10A0E3 MOV R1,#+175 \ 0000071C DE1C81E3 ORR R1,R1,#0xDE00 \ 00000720 010050E1 CMP R0,R1 \ 00000724 3000001A BNE ??maincsm_onmessage_36 5519 { 5520 //if (strcmp_nocase(successed_config_filename,(char *)msg->data0)==0) 5521 if( (strcmp_nocase(suc_config_name,(char *)msg->data0)==0) 5522 || (strcmp_nocase(suc_config_name_mod,(char *)msg->data0)==0)) \ 00000728 ........ LDR R0,??DataTable238 ;; suc_config_name \ 0000072C 0C1094E5 LDR R1,[R4, #+12] \ 00000730 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 00000734 000050E3 CMP R0,#+0 \ 00000738 0400000A BEQ ??maincsm_onmessage_37 \ 0000073C ........ LDR R0,??DataTable217 ;; suc_config_name_mod \ 00000740 0C1094E5 LDR R1,[R4, #+12] \ 00000744 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 00000748 000050E3 CMP R0,#+0 \ 0000074C 2600001A BNE ??maincsm_onmessage_36 5523 { 5524 ShowMSG(1,(int)"NatICQ config updated!"); 5525 // InitConfig(); 5526 UpdateConfig(); 5527 #ifdef NEWSGOLD 5528 initTags(); 5529 #endif 5530 PrintLibInit(1); 5531 FontPathInit((char *)fontpath, 1); \ ??maincsm_onmessage_37: \ 00000750 ........ LDR R9,??DataTable240 ;; fontpath \ 00000754 891F87E2 ADD R1,R7,#+548 \ 00000758 0100A0E3 MOV R0,#+1 \ 0000075C 480100EF SWI +328 \ 00000760 ........ _BLF UpdateConfig,??UpdateConfig??rA \ 00000764 ........ _BLF initTags,??initTags??rA \ 00000768 0100A0E3 MOV R0,#+1 \ 0000076C ........ _BLF PrintLibInit,??PrintLibInit??rA \ 00000770 0110A0E3 MOV R1,#+1 \ 00000774 0900A0E1 MOV R0,R9 \ 00000778 ........ _BLF FontPathInit,??FontPathInit??rA 5532 SetFontColor((char*)fontColor,(char*)bgrColor,1); \ 0000077C ........ LDR R1,??DataTable241 ;; bgrColor \ 00000780 ........ LDR R0,??DataTable242 ;; fontColor \ 00000784 0120A0E3 MOV R2,#+1 \ 00000788 ........ _BLF SetFontColor,??SetFontColor??rA 5533 //#ifdef ELKA 5534 if(fonto==1) \ 0000078C 000098E5 LDR R0,[R8, #+0] \ 00000790 010050E3 CMP R0,#+1 \ 00000794 0B00001A BNE ??maincsm_onmessage_38 5535 { 5536 char *heght=malloc(64); \ 00000798 4000A0E3 MOV R0,#+64 \ 0000079C 140000EF SWI +20 \ 000007A0 0080A0E1 MOV R8,R0 5537 sprintf(heght, "%s2240.png", fontpath); \ 000007A4 0920A0E1 MOV R2,R9 \ 000007A8 8F1F87E2 ADD R1,R7,#+572 \ 000007AC 160000EF SWI +22 5538 paused_height=GetImgHeight((int)heght); \ 000007B0 0800A0E1 MOV R0,R8 \ 000007B4 210000EF SWI +33 \ 000007B8 400285E5 STR R0,[R5, #+576] 5539 mfree(heght); \ 000007BC 0800A0E1 MOV R0,R8 \ 000007C0 150000EF SWI +21 \ 000007C4 010000EA B ??maincsm_onmessage_39 5540 } 5541 else 5542 paused_height=fonto-100; \ ??maincsm_onmessage_38: \ 000007C8 640040E2 SUB R0,R0,#+100 \ 000007CC 400285E5 STR R0,[R5, #+576] 5543 //#endif 5544 free_ICONS(); \ ??maincsm_onmessage_39: \ 000007D0 ........ BL free_ICONS 5545 setup_ICONS(); \ 000007D4 ........ BL setup_ICONS 5546 ResortCL(); \ 000007D8 ........ _BLF ResortCL,??ResortCL??rA 5547 RecountMenu(NULL,1); \ 000007DC 0110A0E3 MOV R1,#+1 \ 000007E0 0000A0E3 MOV R0,#+0 \ 000007E4 ........ BL RecountMenu 5548 init_time_zone(); \ 000007E8 ........ BL init_time_zone 5549 // InitSmiles(); 5550 } 5551 } 5552 5553 if (msg->msg==MSG_GUI_DESTROYED) \ ??maincsm_onmessage_36: \ 000007EC 040094E5 LDR R0,[R4, #+4] \ 000007F0 0E10A0E3 MOV R1,#+14 \ 000007F4 641C81E3 ORR R1,R1,#0x6400 \ 000007F8 010050E1 CMP R0,R1 \ 000007FC 0E00001A BNE ??maincsm_onmessage_40 5554 { 5555 if ((int)msg->data0==csm->gui_id) \ 00000800 1C109DE5 LDR R1,[SP, #+28] \ 00000804 0C0094E5 LDR R0,[R4, #+12] \ 00000808 281091E5 LDR R1,[R1, #+40] \ 0000080C 010050E1 CMP R0,R1 5556 { 5557 csm->csm.state=-3; \ 00000810 1C009D05 LDREQ R0,[SP, #+28] \ 00000814 0210E003 MVNEQ R1,#+2 \ 00000818 10108005 STREQ R1,[R0, #+16] 5558 } 5559 if ((int)msg->data0==contactlist_menu_id) \ 0000081C 0C0094E5 LDR R0,[R4, #+12] \ 00000820 141395E5 LDR R1,[R5, #+788] \ 00000824 010050E1 CMP R0,R1 5560 { 5561 contactlist_menu_id=0; \ 00000828 14638505 STREQ R6,[R5, #+788] 5562 prev_clmenu_itemcount=0; \ 0000082C 1C638505 STREQ R6,[R5, #+796] 5563 } 5564 if ((int)msg->data0==edchat_id) \ 00000830 181395E5 LDR R1,[R5, #+792] \ 00000834 010050E1 CMP R0,R1 5565 { 5566 edchat_id=0; \ 00000838 18638505 STREQ R6,[R5, #+792] 5567 } 5568 } 5569 5570 if (msg->msg==MSG_HELPER_TRANSLATOR) \ ??maincsm_onmessage_40: \ 0000083C 040094E5 LDR R0,[R4, #+4] \ 00000840 AE10A0E3 MOV R1,#+174 \ 00000844 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000848 010050E1 CMP R0,R1 \ 0000084C 1000001A BNE ??maincsm_onmessage_41 5571 { 5572 switch((int)msg->data0) \ 00000850 0C0094E5 LDR R0,[R4, #+12] \ 00000854 101094E5 LDR R1,[R4, #+16] \ 00000858 ........ LDR R9,??DataTable221 ;; RECONNECT_TIME \ 0000085C ........ LDR R10,??DataTable222 ;; do_reconnect \ 00000860 5C20A0E3 MOV R2,#+92 \ 00000864 682D82E3 ORR R2,R2,#0x1A00 \ 00000868 054082E0 ADD R4,R2,R5 \ 0000086C 482F42E2 SUB R2,R2,#+288 \ 00000870 058082E0 ADD R8,R2,R5 \ 00000874 802050E2 SUBS R2,R0,#+128 \ 00000878 0800000A BEQ ??maincsm_onmessage_42 \ 0000087C 022052E2 SUBS R2,R2,#+2 \ 00000880 0200000A BEQ ??maincsm_onmessage_43 \ 00000884 122052E2 SUBS R2,R2,#+18 \ 00000888 1300000A BEQ ??maincsm_onmessage_44 \ 0000088C 1D0000EA B ??maincsm_onmessage_45 5573 { 5574 case LMAN_DISCONNECT_IND: 5575 is_gprs_online=0; \ ??maincsm_onmessage_43: \ 00000890 046385E5 STR R6,[R5, #+772] 5576 return(1); \ ??maincsm_onmessage_41: \ 00000894 0100A0E3 MOV R0,#+1 \ 00000898 20D08DE2 ADD SP,SP,#+32 \ 0000089C F08FBDE8 POP {R4-R11,PC} ;; return 5577 case LMAN_CONNECT_CNF: 5578 vibra_count=1; \ ??maincsm_onmessage_42: \ 000008A0 0100A0E3 MOV R0,#+1 \ 000008A4 D40285E5 STR R0,[R5, #+724] 5579 start_vibra(); \ 000008A8 ........ BL start_vibra 5580 is_gprs_online=1; \ 000008AC 0100A0E3 MOV R0,#+1 \ 000008B0 040385E5 STR R0,[R5, #+772] 5581 strcpy(logmsg,LG_GRGPRSUP); \ 000008B4 921F87E2 ADD R1,R7,#+584 \ 000008B8 0800A0E1 MOV R0,R8 \ 000008BC 1A0000EF SWI +26 5582 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 000008C0 000099E5 LDR R0,[R9, #+0] \ 000008C4 0A20A0E1 MOV R2,R10 \ 000008C8 D830A0E3 MOV R3,#+216 \ 000008CC 930001E0 MUL R1,R3,R0 \ 000008D0 0400A0E1 MOV R0,R4 \ 000008D4 4D0000EF SWI +77 5583 return(1); \ 000008D8 070000EA B ??maincsm_onmessage_46 5584 case ENIP_DNR_HOST_BY_NAME: 5585 if ((int)msg->data1==DNR_ID) \ ??maincsm_onmessage_44: \ 000008DC 980395E5 LDR R0,[R5, #+920] \ 000008E0 000051E1 CMP R1,R0 \ 000008E4 EAFFFF1A BNE ??maincsm_onmessage_41 5586 { 5587 if (DNR_TRIES) SUBPROC((void *)create_connect); \ 000008E8 9C0395E5 LDR R0,[R5, #+924] \ 000008EC 000050E3 CMP R0,#+0 \ 000008F0 E7FFFF0A BEQ ??maincsm_onmessage_41 \ 000008F4 ........ LDR R0,??DataTable223 ;; create_connect \ ??maincsm_onmessage_47: \ 000008F8 710100EF SWI +369 5588 } 5589 return(1); \ ??maincsm_onmessage_46: \ 000008FC 0100A0E3 MOV R0,#+1 \ ??maincsm_onmessage_48: \ 00000900 20D08DE2 ADD SP,SP,#+32 \ 00000904 F08FBDE8 POP {R4-R11,PC} 5590 } 5591 if ((int)msg->data1==sock) \ ??maincsm_onmessage_45: \ 00000908 E82295E5 LDR R2,[R5, #+744] \ 0000090C 020051E1 CMP R1,R2 \ 00000910 DFFFFF1A BNE ??maincsm_onmessage_41 5592 { 5593 //Если наш сокет 5594 if ((((unsigned int)msg->data0)>>28)==0xA) \ 00000914 201EA0E1 LSR R1,R0,#+28 \ 00000918 0A0051E3 CMP R1,#+10 \ 0000091C 0200001A BNE ??maincsm_onmessage_49 5595 { 5596 //Принят пакет 5597 ProcessPacket((TPKT *)msg->data0); \ 00000920 ........ BL ProcessPacket 5598 return(0); \ 00000924 0000A0E3 MOV R0,#+0 \ 00000928 F4FFFFEA B ??maincsm_onmessage_48 5599 } 5600 switch((int)msg->data0) \ ??maincsm_onmessage_49: \ 0000092C E41295E5 LDR R1,[R5, #+740] \ 00000930 ........ LDR R11,??DataTable224 ;; VIBR_ON_CONNECT \ 00000934 8A0040E2 SUB R0,R0,#+138 \ 00000938 050050E3 CMP R0,#+5 \ 0000093C D4FFFF8A BHI ??maincsm_onmessage_41 \ 00000940 012F8FE2 ADR R2,??maincsm_onmessage_1 \ 00000944 D02092E1 LDRSB R2,[R2, R0] \ 00000948 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??maincsm_onmessage_1: \ 0000094C 42423D01 DC8 +66,+66,+61,+1 \ 00000950 4B470000 DC8 +75,+71,+0,+0 5601 { 5602 case ENIP_SOCK_CONNECTED: 5603 if (connect_state==1) \ ??maincsm_onmessage_50: \ 00000954 010051E3 CMP R1,#+1 \ 00000958 3500001A BNE ??maincsm_onmessage_51 5604 { 5605 if(VIBR_ON_CONNECT) \ 0000095C 00009BE5 LDR R0,[R11, #+0] 5606 vibra_count=2; 5607 else 5608 vibra_count=1; 5609 start_vibra(); 5610 //Соединение установленно, посылаем пакет login 5611 strcpy(logmsg, LG_GRTRYLOGIN); 5612 { 5613 int i=strlen(PASS); 5614 TPKT *p=malloc(sizeof(PKT)+i); 5615 p->pkt.uin=UIN; \ 00000960 ........ LDR R4,??DataTable225 ;; UIN \ 00000964 000050E3 CMP R0,#+0 \ 00000968 0200A013 MOVNE R0,#+2 \ 0000096C 0100A003 MOVEQ R0,#+1 \ 00000970 D40285E5 STR R0,[R5, #+724] \ 00000974 ........ BL start_vibra \ 00000978 981F87E2 ADD R1,R7,#+608 \ 0000097C 0800A0E1 MOV R0,R8 \ 00000980 1A0000EF SWI +26 \ 00000984 A4019FE5 LDR R0,??maincsm_onmessage_5+0xC ;; PASS \ 00000988 1B0000EF SWI +27 \ 0000098C 0080A0E1 MOV R8,R0 \ 00000990 080088E2 ADD R0,R8,#+8 \ 00000994 140000EF SWI +20 5616 p->pkt.type=T_REQLOGIN; 5617 p->pkt.data_len=i; 5618 memcpy(p->data,PASS,i); \ 00000998 90119FE5 LDR R1,??maincsm_onmessage_5+0xC ;; PASS \ 0000099C 0090A0E1 MOV R9,R0 \ 000009A0 000094E5 LDR R0,[R4, #+0] \ 000009A4 0820A0E1 MOV R2,R8 \ 000009A8 000089E5 STR R0,[R9, #+0] \ 000009AC 0100A0E3 MOV R0,#+1 \ 000009B0 B400C9E1 STRH R0,[R9, #+4] \ 000009B4 B680C9E1 STRH R8,[R9, #+6] \ 000009B8 080089E2 ADD R0,R9,#+8 \ 000009BC 1E0100EF SWI +286 5619 SUBPROC((void *)send_login,0,p); \ 000009C0 98019FE5 LDR R0,??maincsm_onmessage_5+0x3C ;; send_login \ 000009C4 0920A0E1 MOV R2,R9 \ 000009C8 0010A0E3 MOV R1,#+0 \ 000009CC 710100EF SWI +369 5620 } 5621 GROUP_CACHE=0; \ 000009D0 106385E5 STR R6,[R5, #+784] 5622 SENDMSGCOUNT=0; //Начинаем отсчет \ 000009D4 706285E5 STR R6,[R5, #+624] 5623 if (!FindGroupByID(0)) AddGroup(0,LG_GROUPNOTINLIST); \ 000009D8 0600A0E1 MOV R0,R6 \ 000009DC ........ _BLF FindGroupByID,??FindGroupByID??rA \ 000009E0 000050E3 CMP R0,#+0 \ 000009E4 0100001A BNE ??maincsm_onmessage_52 \ 000009E8 9C1F87E2 ADD R1,R7,#+624 \ 000009EC ........ _BLF AddGroup,??AddGroup??rA 5624 if (!FindContactByUin(UIN) && (IsShowLoopback)) AddContact(UIN, LG_CLLOOPBACK,0,1); \ ??maincsm_onmessage_52: \ 000009F0 000094E5 LDR R0,[R4, #+0] \ 000009F4 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 000009F8 000050E3 CMP R0,#+0 \ 000009FC 0800001A BNE ??maincsm_onmessage_53 \ 00000A00 5C019FE5 LDR R0,??maincsm_onmessage_5+0x40 ;; IsShowLoopback \ 00000A04 000090E5 LDR R0,[R0, #+0] \ 00000A08 000050E3 CMP R0,#+0 \ 00000A0C 0400000A BEQ ??maincsm_onmessage_53 \ 00000A10 000094E5 LDR R0,[R4, #+0] \ 00000A14 0130A0E3 MOV R3,#+1 \ 00000A18 0020A0E3 MOV R2,#+0 \ 00000A1C 9F1F87E2 ADD R1,R7,#+636 \ 00000A20 ........ _BLF AddContact,??AddContact??rA 5625 SUBPROC((void *)LoadLocalCL); \ ??maincsm_onmessage_53: \ 00000A24 3C019FE5 LDR R0,??maincsm_onmessage_5+0x44 ;; LoadLocalCL \ 00000A28 710100EF SWI +369 5626 SMART_REDRAW(); \ 00000A2C ........ BL SMART_REDRAW \ 00000A30 B1FFFFEA B ??maincsm_onmessage_46 5627 } 5628 else 5629 { 5630 ShowMSG(1,(int)LG_MSGILLEGMSGCON); \ ??maincsm_onmessage_51: \ 00000A34 A21F87E2 ADD R1,R7,#+648 \ ??maincsm_onmessage_54: \ 00000A38 0100A0E3 MOV R0,#+1 \ 00000A3C 480100EF SWI +328 \ 00000A40 ADFFFFEA B ??maincsm_onmessage_46 5631 } 5632 break; 5633 case ENIP_SOCK_DATA_READ: 5634 if (connect_state>=2) \ ??maincsm_onmessage_55: \ 00000A44 020051E3 CMP R1,#+2 5635 { 5636 //Если посылали send 5637 SUBPROC((void *)get_answer); \ 00000A48 1C019FA5 LDRGE R0,??maincsm_onmessage_5+0x48 ;; get_answer \ 00000A4C A9FFFFAA BGE ??maincsm_onmessage_47 5638 //SMART_REDRAW(); 5639 } 5640 else 5641 { 5642 ShowMSG(1,(int)LG_MSGILLEGMSGREA); \ 00000A50 AC1F87E2 ADD R1,R7,#+688 \ 00000A54 F7FFFFEA B ??maincsm_onmessage_54 5643 } 5644 break; 5645 case ENIP_BUFFER_FREE: 5646 case ENIP_BUFFER_FREE1: 5647 SUBPROC((void *)SendAnswer,0,0); \ ??maincsm_onmessage_56: \ 00000A58 ........ LDR R0,??DataTable226 ;; SendAnswer \ 00000A5C 0020A0E3 MOV R2,#+0 \ 00000A60 0210A0E1 MOV R1,R2 \ 00000A64 710100EF SWI +369 \ 00000A68 A3FFFFEA B ??maincsm_onmessage_46 5648 break; 5649 case ENIP_SOCK_REMOTE_CLOSED: 5650 //Закрыт со стороны сервера 5651 if (connect_state) \ ??maincsm_onmessage_57: \ 00000A6C 000051E3 CMP R1,#+0 \ 00000A70 87FFFF0A BEQ ??maincsm_onmessage_41 5652 SUBPROC((void *)end_socket); \ 00000A74 ........ LDR R0,??DataTable252 ;; end_socket \ 00000A78 9EFFFFEA B ??maincsm_onmessage_47 5653 break; 5654 case ENIP_SOCK_CLOSED: 5655 //strcpy(logmsg, "No connection"); 5656 //Dump not received 5657 /* if (RXstate>(-(int)sizeof(PKT))) 5658 { 5659 unsigned int err; 5660 int f=fopen("4:\\NATICQ.dump",A_ReadWrite+A_Create+A_Truncate+A_BIN,P_READ+P_WRITE,&err); 5661 if (f!=-1) 5662 { 5663 fwrite(f,&RXbuf,RXstate+sizeof(PKT),&err); 5664 fclose(f,&err); 5665 } 5666 }*/ 5667 FillAllOffline(); \ ??maincsm_onmessage_58: \ 00000A7C ........ _BLF FillAllOffline,??FillAllOffline??rA 5668 RecountMenu(NULL,1); \ 00000A80 0110A0E3 MOV R1,#+1 \ 00000A84 0000A0E3 MOV R0,#+0 \ 00000A88 ........ BL RecountMenu 5669 connect_state=0; 5670 sock=-1; \ 00000A8C 0600E0E1 MVN R0,R6 \ 00000A90 E80285E5 STR R0,[R5, #+744] 5671 if(VIBR_ON_CONNECT) \ 00000A94 00009BE5 LDR R0,[R11, #+0] \ 00000A98 E46285E5 STR R6,[R5, #+740] \ 00000A9C 000050E3 CMP R0,#+0 5672 vibra_count=4; \ 00000AA0 0400A013 MOVNE R0,#+4 5673 else 5674 vibra_count=1; \ 00000AA4 0100A003 MOVEQ R0,#+1 \ 00000AA8 D40285E5 STR R0,[R5, #+724] 5675 5676 start_vibra(); \ 00000AAC ........ BL start_vibra 5677 if (sendq_p) \ 00000AB0 000395E5 LDR R0,[R5, #+768] \ 00000AB4 000050E3 CMP R0,#+0 \ 00000AB8 0400000A BEQ ??maincsm_onmessage_59 5678 { 5679 snprintf(logmsg,255,"Disconnected, %d bytes not sended!",sendq_l); \ 00000ABC FC3295E5 LDR R3,[R5, #+764] \ 00000AC0 B52F87E2 ADD R2,R7,#+724 \ 00000AC4 FF10A0E3 MOV R1,#+255 \ 00000AC8 0800A0E1 MOV R0,R8 \ 00000ACC 1B0100EF SWI +283 5680 } 5681 SMART_REDRAW(); \ ??maincsm_onmessage_59: \ 00000AD0 ........ BL SMART_REDRAW 5682 SUBPROC((void *)ClearSendQ); \ 00000AD4 ........ LDR R0,??DataTable228 ;; ClearSendQ \ 00000AD8 710100EF SWI +369 5683 #ifdef EVILFOX 5684 if (!disautorecconect) GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*12,do_reconnect); 5685 #else 5686 if (!disautorecconect) \ 00000ADC C00295E5 LDR R0,[R5, #+704] \ 00000AE0 000050E3 CMP R0,#+0 \ 00000AE4 6AFFFF1A BNE ??maincsm_onmessage_41 5687 { 5688 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 00000AE8 000099E5 LDR R0,[R9, #+0] \ 00000AEC 0A20A0E1 MOV R2,R10 \ 00000AF0 D830A0E3 MOV R3,#+216 \ 00000AF4 930001E0 MUL R1,R3,R0 \ 00000AF8 0400A0E1 MOV R0,R4 \ 00000AFC 4D0000EF SWI +77 5689 snprintf(logmsg,255,"%s\nReconect after %d second...",logmsg, RECONNECT_TIME); //2058 \ 00000B00 000099E5 LDR R0,[R9, #+0] \ 00000B04 0830A0E1 MOV R3,R8 \ 00000B08 01002DE9 PUSH {R0} \ 00000B0C BE2F87E2 ADD R2,R7,#+760 \ 00000B10 FF10A0E3 MOV R1,#+255 \ 00000B14 0800A0E1 MOV R0,R8 \ 00000B18 1B0100EF SWI +283 \ 00000B1C 04D08DE2 ADD SP,SP,#+4 \ 00000B20 75FFFFEA B ??maincsm_onmessage_46 \ ??maincsm_onmessage_5: \ 00000B24 ........ DC32 CheckDoubleRun \ 00000B28 ........ DC32 ProcessNextSmile \ 00000B2C ........ DC32 ProcessNextXStatImg \ 00000B30 ........ DC32 PASS \ 00000B34 ........ DC32 IDLEICON_Y \ 00000B38 ........ DC32 IDLEICON_X \ 00000B3C ........ DC32 XStatusesIconArray \ 00000B40 ........ DC32 IDLEICON_YX \ 00000B44 ........ DC32 IDLEICON_XX \ 00000B48 ........ DC32 msg_d_x \ 00000B4C ........ DC32 msg_d_y \ 00000B50 ........ DC32 spaco2 \ 00000B54 ........ DC32 Is_Unread_On \ 00000B58 ........ DC32 unread_Y \ 00000B5C ........ DC32 unread_X \ 00000B60 ........ DC32 send_login \ 00000B64 ........ DC32 IsShowLoopback \ 00000B68 ........ DC32 LoadLocalCL \ 00000B6C ........ DC32 get_answer 5690 } 5691 5692 #endif 5693 break; 5694 } 5695 } 5696 } 5697 return(1); 5698 } 5699 5700 5701 //-------------------- ICON IN ICONBAR --------------------// 5702 5703 //kluchnik 26.03.08 5704 #ifdef NEWSGOLD 5705 #pragma swi_number=0x27 5706 __swi __arm void AddIconToIconBar(int pic, short *num); 5707 5708 \ In segment CODE, align 4, keep-with-next 5709 void addIconBar(short* num) 5710 { \ addIconBar: \ 00000000 70402DE9 PUSH {R4-R6,LR} 5711 int icn; 5712 if(ShowStatusIcon==1 || ShowStatusIcon==3) \ 00000004 ........ LDR R6,??DataTable229 ;; NumStatusToIconBar \ 00000008 ........ LDR R5,??DataTable253 ;; S_ICONS \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 ........ LDR R0,??DataTable231 ;; ShowStatusIcon \ 00000014 000090E5 LDR R0,[R0, #+0] \ 00000018 010050E3 CMP R0,#+1 \ 0000001C 03005013 CMPNE R0,#+3 \ 00000020 1B00001A BNE ??addIconBar_0 5713 { 5714 if(total_unread) \ 00000024 080395E5 LDR R0,[R5, #+776] \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 1100000A BEQ ??addIconBar_1 5715 AddIconToIconBar(NumStatusToIconBar + IS_MSG, num); \ ??addIconBar_2: \ 00000030 000096E5 LDR R0,[R6, #+0] \ 00000034 0410A0E1 MOV R1,R4 \ 00000038 0D0080E2 ADD R0,R0,#+13 \ ??addIconBar_3: \ 0000003C 270000EF SWI +39 5716 else 5717 { 5718 switch(connect_state) 5719 { 5720 case 0: 5721 icn=IS_OFFLINE; break; 5722 case 3: 5723 icn=CurrentStatus; //IS_ONLINE; 5724 break; 5725 default: 5726 icn=IS_UNKNOWN; break; 5727 } 5728 AddIconToIconBar(NumStatusToIconBar + icn, num); 5729 } 5730 } 5731 else 5732 { 5733 if(ShowStatusIcon==2)//Если показывать и иконбаре везде,кроме идле 5734 { 5735 if(!(IsIdleUiOnTop())) 5736 { 5737 if(total_unread) 5738 AddIconToIconBar(NumStatusToIconBar + IS_MSG, num); 5739 else 5740 { 5741 switch(connect_state) 5742 { 5743 case 0: 5744 icn=IS_OFFLINE; break; 5745 case 3: 5746 icn=CurrentStatus; //IS_ONLINE; 5747 break; 5748 default: 5749 icn=IS_UNKNOWN; break; 5750 } 5751 AddIconToIconBar(NumStatusToIconBar + icn, num); 5752 } 5753 } 5754 } 5755 } 5756 5757 #ifdef kluchnik 5758 CLIST *t; 5759 t=FindContactByUin(438532198); 5760 5761 if(show_xstatus==2 || show_xstatus==3) 5762 { 5763 if(t->state!=0xFFFF && (GetIconIndex(t)!=IS_UNKNOWN)) 5764 AddIconToIconBar(NumStatusToIconBar + GetIconIndex(t), num); 5765 else 5766 if(total_unread2 && total_unread2<10) 5767 AddIconToIconBar(8200 + total_unread2, num); 5768 else 5769 if(CurrentXStatus!=0) 5770 AddIconToIconBar(NumXStatusToIconBar+CurrentXStatus,num); 5771 } 5772 5773 if(show_xstatus==3) 5774 { 5775 t=FindContactByUin(366226649);//366226649 5776 if(t->state!=0xFFFF && (GetIconIndex(t)!=IS_UNKNOWN)) 5777 { 5778 AddIconToIconBar(NumStatusToIconBar + GetIconIndex(t), num); 5779 AddIconToIconBar(NumXStatusToIconBar +t->xstate, num); 5780 } 5781 } 5782 #else 5783 if(show_xstatus==2 || show_xstatus==3) \ ??addIconBar_4: \ 00000040 ........ LDR R0,??DataTable232 ;; show_xstatus \ 00000044 000090E5 LDR R0,[R0, #+0] \ 00000048 020050E3 CMP R0,#+2 \ 0000004C 03005013 CMPNE R0,#+3 \ 00000050 7080BD18 POPNE {R4-R6,PC} 5784 if(CurrentXStatus!=0) \ 00000054 840295E5 LDR R0,[R5, #+644] \ 00000058 000050E3 CMP R0,#+0 \ 0000005C 7080BD08 POPEQ {R4-R6,PC} 5785 AddIconToIconBar(NumXStatusToIconBar+CurrentXStatus,num); \ 00000060 74209FE5 LDR R2,??addIconBar_5 ;; NumXStatusToIconBar \ 00000064 0410A0E1 MOV R1,R4 \ 00000068 002092E5 LDR R2,[R2, #+0] \ 0000006C 020080E0 ADD R0,R0,R2 \ 00000070 270000EF SWI +39 5786 #endif 5787 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return \ ??addIconBar_1: \ 00000078 E40295E5 LDR R0,[R5, #+740] \ 0000007C 000050E3 CMP R0,#+0 \ 00000080 1100000A BEQ ??addIconBar_6 \ 00000084 030050E2 SUBS R0,R0,#+3 \ 00000088 0E00001A BNE ??addIconBar_7 \ ??addIconBar_8: \ 0000008C 800295E5 LDR R0,[R5, #+640] \ 00000090 0D0000EA B ??addIconBar_6 \ ??addIconBar_0: \ 00000094 020050E3 CMP R0,#+2 \ 00000098 E8FFFF1A BNE ??addIconBar_4 \ 0000009C C50000EF SWI +197 \ 000000A0 000050E3 CMP R0,#+0 \ 000000A4 E5FFFF1A BNE ??addIconBar_4 \ 000000A8 080395E5 LDR R0,[R5, #+776] \ 000000AC 000050E3 CMP R0,#+0 \ 000000B0 DEFFFF1A BNE ??addIconBar_2 \ 000000B4 E40295E5 LDR R0,[R5, #+740] \ 000000B8 000050E3 CMP R0,#+0 \ 000000BC 0200000A BEQ ??addIconBar_6 \ 000000C0 030050E2 SUBS R0,R0,#+3 \ 000000C4 F0FFFF0A BEQ ??addIconBar_8 \ ??addIconBar_7: \ 000000C8 0E00A0E3 MOV R0,#+14 \ ??addIconBar_6: \ 000000CC 002096E5 LDR R2,[R6, #+0] \ 000000D0 0410A0E1 MOV R1,R4 \ 000000D4 020080E0 ADD R0,R0,R2 \ 000000D8 D7FFFFEA B ??addIconBar_3 \ ??addIconBar_5: \ 000000DC ........ DC32 NumXStatusToIconBar 5788 5789 typedef struct 5790 { 5791 char check_name[8]; 5792 int addr; 5793 }ICONBAR_H; 5794 5795 #endif 5796 \ In segment DATA_C, align 4, align-sorted 5797 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 5798 \ In segment DATA_Z, align 4, align-sorted 5799 unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 5800 5801 struct 5802 { 5803 CSM_DESC maincsm; 5804 WSHDR maincsm_name; 5805 #ifdef NEWSGOLD 5806 ICONBAR_H iconbar_handler; 5807 #endif 5808 }MAINCSM = 5809 { 5810 { 5811 maincsm_onmessage, 5812 maincsm_oncreate, 5813 #ifdef NEWSGOLD 5814 0, 5815 0, 5816 0, 5817 0, 5818 #endif 5819 maincsm_onclose, 5820 sizeof(MAIN_CSM), 5821 1, 5822 &minus11 5823 }, 5824 { 5825 maincsm_name_body, 5826 NAMECSM_MAGIC1, 5827 NAMECSM_MAGIC2, 5828 0x0, 5829 139 5830 } 5831 #ifdef NEWSGOLD 5832 , 5833 { 5834 "IconBar" 5835 } 5836 #endif 5837 }; 5838 \ In segment CODE, align 4, keep-with-next 5839 void UpdateCSMname(void) 5840 { 5841 wsprintf((WSHDR *)(&MAINCSM.maincsm_name), "NATICQ: %d",UIN); \ UpdateCSMname: \ 00000000 ........ LDR R0,??DataTable237 ;; UIN \ 00000004 10109FE5 LDR R1,??UpdateCSMname_0 ;; `?` \ 00000008 00402DE9 PUSH {LR} \ 0000000C 002090E5 LDR R2,[R0, #+0] \ 00000010 08009FE5 LDR R0,??UpdateCSMname_0+0x4 ;; S_ICONS + 156 \ 00000014 240100EF SWI +292 5842 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??UpdateCSMname_0: \ 0000001C ........ DC32 `?` \ 00000020 ........ DC32 S_ICONS + 156 5843 5844 #ifdef NEWSGOLD \ In segment CODE, align 4, keep-with-next 5845 void SetIconBarHandler() 5846 { 5847 MAINCSM.iconbar_handler.addr = (int)addIconBar; \ SetIconBarHandler: \ 00000000 08009FE5 LDR R0,??SetIconBarHandler_0 ;; S_ICONS + 184 \ 00000004 ........ LDR R1,??DataTable243 ;; addIconBar \ 00000008 001080E5 STR R1,[R0, #+0] 5848 } \ 0000000C 1EFF2FE1 BX LR ;; return \ ??SetIconBarHandler_0: \ 00000010 ........ DC32 S_ICONS + 184 5849 #endif 5850 \ In segment CODE, align 4, keep-with-next 5851 int main(char *filename) 5852 { \ main: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 5853 MAIN_CSM main_csm; 5854 char *s; 5855 int len; 5856 WSHDR *ws; 5857 UpdateConfig(); 5858 //InitConfig(); 5859 5860 sprintf(PINGO, "Ping None"); \ 00000004 ........ LDR R4,??DataTable253 ;; S_ICONS \ 00000008 ........ LDR R5,??DataTable236 ;; Canvas \ 0000000C 2CD04DE2 SUB SP,SP,#+44 \ 00000010 0060A0E1 MOV R6,R0 \ 00000014 ........ _BLF UpdateConfig,??UpdateConfig??rA \ 00000018 C61F85E2 ADD R1,R5,#+792 \ 0000001C F400A0E3 MOV R0,#+244 \ 00000020 540D80E3 ORR R0,R0,#0x1500 \ 00000024 040080E0 ADD R0,R0,R4 \ 00000028 160000EF SWI +22 5861 5862 s=strrchr(filename,'\\'); 5863 len=(s-filename)+1; \ 0000002C 5C10A0E3 MOV R1,#+92 \ 00000030 0600A0E1 MOV R0,R6 \ 00000034 170100EF SWI +279 \ 00000038 060040E0 SUB R0,R0,R6 \ 0000003C 017080E2 ADD R7,R0,#+1 5864 strncpy(elf_path,filename,len); \ 00000040 0720A0E1 MOV R2,R7 \ 00000044 0610A0E1 MOV R1,R6 \ 00000048 0400A0E3 MOV R0,#+4 \ 0000004C 400E80E3 ORR R0,R0,#0x400 \ 00000050 040080E0 ADD R0,R0,R4 \ 00000054 160100EF SWI +278 5865 elf_path[len]=0; \ 00000058 040087E0 ADD R0,R7,R4 \ 0000005C 0010A0E3 MOV R1,#+0 \ 00000060 0414C0E5 STRB R1,[R0, #+1028] 5866 if (!UIN) \ 00000064 ........ LDR R0,??DataTable237 ;; UIN \ 00000068 000090E5 LDR R0,[R0, #+0] \ 0000006C 000050E3 CMP R0,#+0 \ 00000070 1500001A BNE ??main_0 5867 { 5868 LockSched(); \ 00000074 460100EF SWI +326 5869 ShowMSG(1,(int)LG_MSGNOUINPASS); \ 00000078 C91F85E2 ADD R1,R5,#+804 \ 0000007C 0100A0E3 MOV R0,#+1 \ 00000080 480100EF SWI +328 5870 ws=AllocWS(150); \ 00000084 9600A0E3 MOV R0,#+150 \ 00000088 250100EF SWI +293 5871 str_2ws(ws,suc_config_name,128); \ 0000008C ........ LDR R1,??DataTable238 ;; suc_config_name \ 00000090 0040A0E1 MOV R4,R0 \ 00000094 8020A0E3 MOV R2,#+128 \ 00000098 6C0100EF SWI +364 5872 ExecuteFile(ws,0,0); \ 0000009C 0020A0E3 MOV R2,#+0 \ 000000A0 0010A0E3 MOV R1,#+0 \ 000000A4 0400A0E1 MOV R0,R4 \ 000000A8 940000EF SWI +148 5873 FreeWS(ws); \ 000000AC 0400A0E1 MOV R0,R4 \ 000000B0 290100EF SWI +297 5874 UnlockSched(); \ 000000B4 470100EF SWI +327 5875 SUBPROC((void *)ElfKiller); \ 000000B8 ........ LDR R0,??DataTable239 ;; ElfKiller \ 000000BC 710100EF SWI +369 5876 return 0; \ 000000C0 0000A0E3 MOV R0,#+0 \ 000000C4 2CD08DE2 ADD SP,SP,#+44 \ 000000C8 F080BDE8 POP {R4-R7,PC} 5877 } 5878 ReadDefSettings(); 5879 setup_ICONS(); 5880 LoadXStatusText(); 5881 UpdateCSMname(); 5882 LockSched(); 5883 maincsm_id=CreateCSM(&MAINCSM.maincsm,&main_csm,0); 5884 UnlockSched(); 5885 5886 PrintLibInit(1); 5887 FontPathInit((char *)fontpath, 1); \ ??main_0: \ 000000CC ........ LDR R6,??DataTable240 ;; fontpath \ 000000D0 ........ BL ReadDefSettings \ 000000D4 ........ BL setup_ICONS \ 000000D8 ........ _BLF LoadXStatusText,??LoadXStatusText??rA \ 000000DC ........ BL UpdateCSMname \ 000000E0 460100EF SWI +326 \ 000000E4 0020A0E3 MOV R2,#+0 \ 000000E8 0D10A0E1 MOV R1,SP \ 000000EC 740084E2 ADD R0,R4,#+116 \ 000000F0 070100EF SWI +263 \ 000000F4 680284E5 STR R0,[R4, #+616] \ 000000F8 470100EF SWI +327 \ 000000FC 0100A0E3 MOV R0,#+1 \ 00000100 ........ _BLF PrintLibInit,??PrintLibInit??rA \ 00000104 0110A0E3 MOV R1,#+1 \ 00000108 0600A0E1 MOV R0,R6 \ 0000010C ........ _BLF FontPathInit,??FontPathInit??rA 5888 SetFontColor((char*)fontColor,(char*)bgrColor,1); \ 00000110 ........ LDR R1,??DataTable241 ;; bgrColor \ 00000114 ........ LDR R0,??DataTable242 ;; fontColor \ 00000118 0120A0E3 MOV R2,#+1 \ 0000011C ........ _BLF SetFontColor,??SetFontColor??rA 5889 away_timer(); \ 00000120 ........ BL away_timer 5890 #ifdef NEWSGOLD 5891 SetIconBarHandler(); \ 00000124 ........ LDR R0,??DataTable243 ;; addIconBar \ 00000128 B80084E5 STR R0,[R4, #+184] 5892 #endif 5893 #ifdef kluchnik 5894 switch(CurrentPrivateStatus) 5895 { 5896 case 0: ICON_HD=ICON_ALL_CAN_SEE; break; 5897 case 1: ICON_HD=ICON_NOBODY_CAN_SEE; break; 5898 case 2: ICON_HD=ICON_VISLIST_CAN_SEE; break; 5899 case 3: ICON_HD=ICON_INVISLIST_CANNOT_SEE; break; 5900 case 4: ICON_HD=ICON_CONTACTLIST_CAN_SEE; break; 5901 } 5902 #endif 5903 if(fonto==1) \ 0000012C ........ LDR R0,??DataTable244 ;; fonto \ 00000130 000090E5 LDR R0,[R0, #+0] \ 00000134 010050E3 CMP R0,#+1 \ 00000138 0B00001A BNE ??main_1 5904 { 5905 char *heght=malloc(64); \ 0000013C 4000A0E3 MOV R0,#+64 \ 00000140 140000EF SWI +20 \ 00000144 0070A0E1 MOV R7,R0 5906 sprintf(heght, "%s2240.png", fontpath); \ 00000148 0620A0E1 MOV R2,R6 \ 0000014C 8F1F85E2 ADD R1,R5,#+572 \ 00000150 160000EF SWI +22 5907 paused_height=GetImgHeight((int)heght); \ 00000154 0700A0E1 MOV R0,R7 \ 00000158 210000EF SWI +33 \ 0000015C 400284E5 STR R0,[R4, #+576] 5908 mfree(heght); \ 00000160 0700A0E1 MOV R0,R7 \ 00000164 150000EF SWI +21 \ 00000168 010000EA B ??main_2 5909 } 5910 else 5911 paused_height=fonto-100; \ ??main_1: \ 0000016C 640040E2 SUB R0,R0,#+100 \ 00000170 400284E5 STR R0,[R4, #+576] 5912 GBS_StartTimerProc(&ping_tmr, 12000, Pinger2); \ ??main_2: \ 00000174 ........ LDR R2,??DataTable245 ;; Pinger2 \ 00000178 E010A0E3 MOV R1,#+224 \ 0000017C B81D81E3 ORR R1,R1,#0x2E00 \ 00000180 E400A0E3 MOV R0,#+228 \ 00000184 540D80E3 ORR R0,R0,#0x1500 \ 00000188 040080E0 ADD R0,R0,R4 \ 0000018C 4D0000EF SWI +77 5913 upTime(); \ 00000190 ........ BL upTime 5914 #ifdef NEWSGOLD 5915 ScreenSaverTimer(); \ 00000194 ........ BL ScreenSaverTimer 5916 initTags(); \ 00000198 ........ _BLF initTags,??initTags??rA 5917 #endif 5918 AutoChangeStatus_timer(); \ 0000019C ........ BL AutoChangeStatus_timer 5919 init_time_zone(); \ 000001A0 ........ BL init_time_zone 5920 AddKeybMsgHook((void *)my_keyhook); \ 000001A4 ........ LDR R0,??DataTable246 ;; my_keyhook \ 000001A8 2B0100EF SWI +299 5921 return 0; \ 000001AC 0000A0E3 MOV R0,#+0 \ 000001B0 2CD08DE2 ADD SP,SP,#+44 \ 000001B4 F080BDE8 POP {R4-R7,PC} ;; return 5922 } 5923 5924 //=========================================================== 5925 // Edit chat 5926 //=========================================================== 5927 \ In segment CODE, align 4, keep-with-next 5928 void edchat_locret(void){} \ edchat_locret: \ 00000000 1EFF2FE1 BX LR ;; return 5929 \ In segment CODE, align 4, keep-with-next 5930 char *ExtractAnswer(WSHDR *ws) 5931 { \ ExtractAnswer: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 5932 S_SMILES *t; 5933 int c; 5934 int len=0; 5935 int scur; 5936 char *msg=NULL; 5937 unsigned short *wsbody=ws->wsbody; \ 00000004 005090E5 LDR R5,[R0, #+0] \ 00000008 0040A0E3 MOV R4,#+0 5938 int wslen=wsbody[0]; \ 0000000C B060D5E1 LDRH R6,[R5, #+0] \ 00000010 0070A0E3 MOV R7,#+0 5939 if (wslen) \ 00000014 000056E3 CMP R6,#+0 \ 00000018 3C00000A BEQ ??ExtractAnswer_0 5940 { 5941 for (int i=0; i=0xE100) 5945 { 5946 t=FindSmileByUni(c); 5947 if (t) 5948 { 5949 if (t->lines) 5950 { 5951 len+=strlen(t->lines->text); 5952 } 5953 } 5954 else len++; 5955 } 5956 else len++; 5957 } 5958 5959 msg=malloc(len+1); \ ??ExtractAnswer_2: \ 00000024 010084E2 ADD R0,R4,#+1 \ 00000028 140000EF SWI +20 \ 0000002C 0070A0E1 MOV R7,R0 5960 scur=0; \ 00000030 0090A0E3 MOV R9,#+0 5961 for (int wcur=0; wcur=0xE100) 5966 { 5967 t=FindSmileByUni(c); 5968 if (t) 5969 { 5970 int w; 5971 char *s; 5972 if (t->lines) 5973 { 5974 s=t->lines->text; 5975 while ((w=*s++) && scurnext)) \ FindNextActiveContact: \ ??FindNextActiveContact_0: \ 00000000 000090E5 LDR R0,[R0, #+0] \ 00000004 000050E3 CMP R0,#+0 \ 00000008 0300000A BEQ ??FindNextActiveContact_1 6002 { 6003 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 6004 } 6005 t=(CLIST *)(&cltop); \ ??FindNextActiveContact_1: \ 0000001C ........ LDR R0,??DataTable248 ;; S_ICONS + 780 \ 00000020 020000EA B ??FindNextActiveContact_2 6006 while(t=(CLIST *)(t->next)) 6007 { 6008 if (t->isactive) return t; \ ??FindNextActiveContact_3: \ 00000024 9C1090E5 LDR R1,[R0, #+156] \ 00000028 000051E3 CMP R1,#+0 \ 0000002C 1EFF2F11 BXNE LR 6009 } \ ??FindNextActiveContact_2: \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 000050E3 CMP R0,#+0 \ 00000038 F9FFFF1A BNE ??FindNextActiveContact_3 6010 return NULL; \ 0000003C 1EFF2FE1 BX LR ;; return 6011 } 6012 \ In segment CODE, align 4, keep-with-next 6013 CLIST *FindPrevActiveContact(CLIST *t) 6014 { 6015 CLIST *cl; 6016 CLIST *cl_active=NULL; 6017 cl=(CLIST *)(&cltop); \ FindPrevActiveContact: \ 00000000 ........ LDR R2,??DataTable248 ;; S_ICONS + 780 \ 00000004 0010A0E3 MOV R1,#+0 \ 00000008 020000EA B ??FindPrevActiveContact_0 6018 6019 6020 while(cl=cl->next) 6021 { 6022 if (cl==t) 6023 { 6024 if (cl_active==NULL) break; 6025 else return (cl_active); 6026 } 6027 else 6028 { 6029 if (cl->isactive) cl_active=cl; \ ??FindPrevActiveContact_1: \ 0000000C 9C3092E5 LDR R3,[R2, #+156] \ 00000010 000053E3 CMP R3,#+0 \ 00000014 0210A011 MOVNE R1,R2 6030 } \ ??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 6031 } 6032 while(t) \ ??FindPrevActiveContact_2: \ 0000003C 000050E3 CMP R0,#+0 \ 00000040 FBFFFF0A BEQ ??FindPrevActiveContact_3 6033 { 6034 if (t->isactive) cl_active=t; \ 00000044 9C2090E5 LDR R2,[R0, #+156] \ 00000048 000052E3 CMP R2,#+0 \ 0000004C 0010A011 MOVNE R1,R0 6035 t=t->next; \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 F8FFFFEA B ??FindPrevActiveContact_2 6036 } 6037 return cl_active; 6038 } 6039 6040 \ In segment CODE, align 4, keep-with-next 6041 void ed_options_handler(USR_MENU_ITEM *item) 6042 { \ ed_options_handler: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 6043 EDCHAT_STRUCT *ed_struct=item->user_pointer; 6044 #ifdef ole64 6045 #else 6046 CLIST *t; 6047 #endif 6048 int i=item->cur_item; 6049 if (item->type==0) \ 00000004 ........ LDR R5,??DataTable253 ;; S_ICONS \ 00000008 58D04DE2 SUB SP,SP,#+88 \ 0000000C 0070A0E1 MOV R7,R0 \ 00000010 0000D7E5 LDRB R0,[R7, #+0] \ 00000014 044097E5 LDR R4,[R7, #+4] \ 00000018 B860D7E1 LDRH R6,[R7, #+8] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 2000001A BNE ??ed_options_handler_0 6050 { 6051 switch(i) \ 00000024 0C0097E5 LDR R0,[R7, #+12] \ 00000028 20839FE5 LDR R8,??ed_options_handler_1 ;; `?` \ 0000002C 0610B0E1 MOVS R1,R6 \ 00000030 0600000A BEQ ??ed_options_handler_2 \ 00000034 011056E2 SUBS R1,R6,#+1 \ 00000038 0D00000A BEQ ??ed_options_handler_3 \ 0000003C 011051E2 SUBS R1,R1,#+1 \ 00000040 0D00000A BEQ ??ed_options_handler_4 \ 00000044 011051E2 SUBS R1,R1,#+1 \ 00000048 0D00000A BEQ ??ed_options_handler_5 \ 0000004C 0E0000EA B ??ed_options_handler_6 6052 { 6053 #ifdef ole64 6054 case 0: 6055 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ ??ed_options_handler_2: \ 00000050 040094E5 LDR R0,[R4, #+4] \ 00000054 820100EF SWI +386 \ 00000058 081094E5 LDR R1,[R4, #+8] \ 0000005C 010050E1 CMP R0,R1 \ 00000060 0C009715 LDRNE R0,[R7, #+12] \ 00000064 08108812 ADDNE R1,R8,#+8 6056 ascii2ws(item->ws,"Cмайлы"); \ 00000068 0C009705 LDREQ R0,[R7, #+12] \ 0000006C 0810A001 MOVEQ R1,R8 \ 00000070 0B0000EA B ??ed_options_handler_7 6057 else 6058 ascii2ws(item->ws,"В буфер"); 6059 break; 6060 case 1: 6061 ascii2ws(item->ws,"Из буфера"); \ ??ed_options_handler_3: \ 00000074 101088E2 ADD R1,R8,#+16 \ 00000078 090000EA B ??ed_options_handler_7 6062 break; 6063 case 2: 6064 ascii2ws(item->ws,"Команда"); \ ??ed_options_handler_4: \ 0000007C 1C1088E2 ADD R1,R8,#+28 \ 00000080 070000EA B ??ed_options_handler_7 6065 break; 6066 case 3: 6067 ascii2ws(item->ws,"Очистить буфер"); \ ??ed_options_handler_5: \ 00000084 241088E2 ADD R1,R8,#+36 \ 00000088 050000EA B ??ed_options_handler_7 6068 break; 6069 default: 6070 i-=4; 6071 if (iloaded_templates) ascii2ws(item->ws,templates_lines[i]); \ ??ed_options_handler_6: \ 0000008C 101094E5 LDR R1,[R4, #+16] \ 00000090 046046E2 SUB R6,R6,#+4 \ 00000094 010056E1 CMP R6,R1 \ 00000098 AA0000AA BGE ??ed_options_handler_8 \ 0000009C DC1295E5 LDR R1,[R5, #+732] \ 000000A0 061191E7 LDR R1,[R1, +R6, LSL #+2] \ ??ed_options_handler_7: \ 000000A4 ........ _BLF ascii2ws,??ascii2ws??rA 6072 break; 6073 #else 6074 case 0: 6075 ascii2ws(item->ws,LG_MNUEDNEXTACT); 6076 break; 6077 case 1: 6078 ascii2ws(item->ws,LG_MNUEDPREVACT); 6079 break; 6080 case 2: 6081 ascii2ws(item->ws,"Команды"); 6082 break; 6083 default: 6084 i-=3; 6085 if (iloaded_templates) ascii2ws(item->ws,templates_lines[i]); 6086 break; 6087 #endif 6088 } 6089 } 6090 6091 if (item->type==1) \ ??ed_options_handler_0: \ 000000A8 0000D7E5 LDRB R0,[R7, #+0] \ 000000AC 010050E3 CMP R0,#+1 \ 000000B0 A400001A BNE ??ed_options_handler_8 6092 { 6093 switch(i) \ 000000B4 040094E5 LDR R0,[R4, #+4] \ 000000B8 0610B0E1 MOVS R1,R6 \ 000000BC 0600000A BEQ ??ed_options_handler_9 \ 000000C0 011056E2 SUBS R1,R6,#+1 \ 000000C4 4200000A BEQ ??ed_options_handler_10 \ 000000C8 011051E2 SUBS R1,R1,#+1 \ 000000CC 5C00000A BEQ ??ed_options_handler_11 \ 000000D0 011051E2 SUBS R1,R1,#+1 \ 000000D4 5D00000A BEQ ??ed_options_handler_12 \ 000000D8 600000EA B ??ed_options_handler_13 6094 { 6095 #ifdef ole64 6096 case 0: 6097 { 6098 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ ??ed_options_handler_9: \ 000000DC 820100EF SWI +386 \ 000000E0 081094E5 LDR R1,[R4, #+8] \ 000000E4 010050E1 CMP R0,R1 \ 000000E8 0200001A BNE ??ed_options_handler_14 6099 CreateSmileSelectGUI(ed_struct); \ 000000EC 0400A0E1 MOV R0,R4 \ 000000F0 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA \ 000000F4 340000EA B ??ed_options_handler_15 6100 else 6101 { 6102 int ed; 6103 EDITCONTROL ec; 6104 EDITCONTROL ec_hdr; 6105 6106 ed=EDIT_GetFocus(ed_struct->ed_chatgui); \ ??ed_options_handler_14: \ 000000F8 040094E5 LDR R0,[R4, #+4] \ 000000FC 820100EF SWI +386 \ 00000100 0060A0E1 MOV R6,R0 6107 ExtractEditControl(ed_struct->ed_chatgui,ed,&ec); \ 00000104 040094E5 LDR R0,[R4, #+4] \ 00000108 2C208DE2 ADD R2,SP,#+44 \ 0000010C 0610A0E1 MOV R1,R6 \ 00000110 690100EF SWI +361 6108 ExtractEditControl(ed_struct->ed_chatgui,ed-1,&ec_hdr); \ 00000114 040094E5 LDR R0,[R4, #+4] \ 00000118 0D20A0E1 MOV R2,SP \ 0000011C 011046E2 SUB R1,R6,#+1 \ 00000120 690100EF SWI +361 6109 6110 wsInsertChar(wsBuffer,'>',wstrlen(wsBuffer)+1); \ 00000124 440295E5 LDR R0,[R5, #+580] \ 00000128 230100EF SWI +291 \ 0000012C 012080E2 ADD R2,R0,#+1 \ 00000130 440295E5 LDR R0,[R5, #+580] \ 00000134 3E10A0E3 MOV R1,#+62 \ 00000138 1D0000EF SWI +29 6111 wsInsertChar(wsBuffer,' ',wstrlen(wsBuffer)+1); \ 0000013C 440295E5 LDR R0,[R5, #+580] \ 00000140 230100EF SWI +291 \ 00000144 012080E2 ADD R2,R0,#+1 \ 00000148 440295E5 LDR R0,[R5, #+580] \ 0000014C 2010A0E3 MOV R1,#+32 \ 00000150 1D0000EF SWI +29 6112 wstrcat(wsBuffer,ec_hdr.pWS); \ 00000154 28109DE5 LDR R1,[SP, #+40] \ 00000158 440295E5 LDR R0,[R5, #+580] \ 0000015C 210100EF SWI +289 6113 wsInsertChar(wsBuffer,'\n',wstrlen(wsBuffer)+1); \ 00000160 440295E5 LDR R0,[R5, #+580] \ 00000164 230100EF SWI +291 \ 00000168 012080E2 ADD R2,R0,#+1 \ 0000016C 440295E5 LDR R0,[R5, #+580] \ 00000170 0A10A0E3 MOV R1,#+10 \ 00000174 1D0000EF SWI +29 6114 6115 wsInsertChar(wsBuffer,'>',wstrlen(wsBuffer)+1); \ 00000178 440295E5 LDR R0,[R5, #+580] \ 0000017C 230100EF SWI +291 \ 00000180 012080E2 ADD R2,R0,#+1 \ 00000184 440295E5 LDR R0,[R5, #+580] \ 00000188 3E10A0E3 MOV R1,#+62 \ 0000018C 1D0000EF SWI +29 6116 wsInsertChar(wsBuffer,' ',wstrlen(wsBuffer)+1); \ 00000190 440295E5 LDR R0,[R5, #+580] \ 00000194 230100EF SWI +291 \ 00000198 012080E2 ADD R2,R0,#+1 \ 0000019C 440295E5 LDR R0,[R5, #+580] \ 000001A0 2010A0E3 MOV R1,#+32 \ 000001A4 1D0000EF SWI +29 6117 wstrcat(wsBuffer,ec.pWS); \ 000001A8 54109DE5 LDR R1,[SP, #+84] \ 000001AC 440295E5 LDR R0,[R5, #+580] \ 000001B0 210100EF SWI +289 6118 wsInsertChar(wsBuffer,'\n',wstrlen(wsBuffer)+1); \ 000001B4 440295E5 LDR R0,[R5, #+580] \ 000001B8 230100EF SWI +291 \ 000001BC 012080E2 ADD R2,R0,#+1 \ 000001C0 440295E5 LDR R0,[R5, #+580] \ 000001C4 0A10A0E3 MOV R1,#+10 \ 000001C8 1D0000EF SWI +29 \ ??ed_options_handler_15: \ 000001CC 58D08DE2 ADD SP,SP,#+88 \ 000001D0 F081BDE8 POP {R4-R8,PC} 6119 } 6120 } 6121 break; 6122 case 1: 6123 { 6124 EDITCONTROL ec; 6125 WSHDR *ws; 6126 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ ??ed_options_handler_10: \ 000001D4 081094E5 LDR R1,[R4, #+8] \ 000001D8 0D20A0E1 MOV R2,SP \ 000001DC 690100EF SWI +361 6127 ws=AllocWS(ec.pWS->wsbody[0]+wsBuffer->wsbody[0]+1); \ 000001E0 28009DE5 LDR R0,[SP, #+40] \ 000001E4 441295E5 LDR R1,[R5, #+580] \ 000001E8 000090E5 LDR R0,[R0, #+0] \ 000001EC 001091E5 LDR R1,[R1, #+0] \ 000001F0 B000D0E1 LDRH R0,[R0, #+0] \ 000001F4 B010D1E1 LDRH R1,[R1, #+0] \ 000001F8 000081E0 ADD R0,R1,R0 \ 000001FC 010080E2 ADD R0,R0,#+1 \ 00000200 250100EF SWI +293 6128 wstrcpy(ws,ec.pWS); \ 00000204 28109DE5 LDR R1,[SP, #+40] \ 00000208 0060A0E1 MOV R6,R0 \ 0000020C 1F0100EF SWI +287 6129 wstrcat(ws,wsBuffer); \ 00000210 441295E5 LDR R1,[R5, #+580] \ 00000214 0600A0E1 MOV R0,R6 \ 00000218 210100EF SWI +289 6130 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ws); \ 0000021C 040094E5 LDR R0,[R4, #+4] \ 00000220 081094E5 LDR R1,[R4, #+8] \ 00000224 0620A0E1 MOV R2,R6 \ 00000228 DE0100EF SWI +478 6131 EDIT_SetCursorPos(ed_struct->ed_chatgui,wstrlen(ws)); \ 0000022C 0600A0E1 MOV R0,R6 \ 00000230 230100EF SWI +291 \ 00000234 0010A0E1 MOV R1,R0 \ 00000238 040094E5 LDR R0,[R4, #+4] \ 0000023C D40100EF SWI +468 \ 00000240 E1FFFFEA B ??ed_options_handler_15 6132 } 6133 break; 6134 case 2: 6135 DispCmdMenu(ed_struct); \ ??ed_options_handler_11: \ 00000244 0400A0E1 MOV R0,R4 \ 00000248 ........ BL DispCmdMenu \ 0000024C DEFFFFEA B ??ed_options_handler_15 6136 break; 6137 case 3: 6138 CutWSTR(wsBuffer,0); \ ??ed_options_handler_12: \ 00000250 440295E5 LDR R0,[R5, #+580] \ 00000254 0010A0E3 MOV R1,#+0 \ 00000258 260100EF SWI +294 \ 0000025C DAFFFFEA B ??ed_options_handler_15 6139 break; 6140 default: 6141 i-=4; 6142 if (iloaded_templates) \ ??ed_options_handler_13: \ 00000260 101094E5 LDR R1,[R4, #+16] \ 00000264 046046E2 SUB R6,R6,#+4 \ 00000268 010056E1 CMP R6,R1 \ 0000026C 350000AA BGE ??ed_options_handler_8 6143 { 6144 EDITCONTROL ec; 6145 WSHDR *ed_ws; 6146 int c; 6147 char *p=templates_lines[i]; \ 00000270 DC1295E5 LDR R1,[R5, #+732] 6148 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ 00000274 0D20A0E1 MOV R2,SP \ 00000278 065191E7 LDR R5,[R1, +R6, LSL #+2] \ 0000027C 081094E5 LDR R1,[R4, #+8] \ 00000280 690100EF SWI +361 6149 ed_ws=AllocWS(ec.pWS->wsbody[0]+strlen(p)); \ 00000284 0500A0E1 MOV R0,R5 \ 00000288 1B0000EF SWI +27 \ 0000028C 28109DE5 LDR R1,[SP, #+40] \ 00000290 001091E5 LDR R1,[R1, #+0] \ 00000294 B010D1E1 LDRH R1,[R1, #+0] \ 00000298 010080E0 ADD R0,R0,R1 \ 0000029C 250100EF SWI +293 6150 wstrcpy(ed_ws,ec.pWS); \ 000002A0 28109DE5 LDR R1,[SP, #+40] \ 000002A4 0060A0E1 MOV R6,R0 \ 000002A8 1F0100EF SWI +287 6151 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ 000002AC 040094E5 LDR R0,[R4, #+4] \ 000002B0 820100EF SWI +386 \ 000002B4 081094E5 LDR R1,[R4, #+8] \ 000002B8 010050E1 CMP R0,R1 \ 000002BC 1800001A BNE ??ed_options_handler_16 6152 { 6153 int pos=EDIT_GetCursorPos(ed_struct->ed_chatgui); \ 000002C0 040094E5 LDR R0,[R4, #+4] \ 000002C4 D30100EF SWI +467 \ 000002C8 0070A0E1 MOV R7,R0 \ 000002CC 050000EA B ??ed_options_handler_17 6154 while(c=*p++) 6155 { 6156 wsInsertChar(ed_ws,char8to16(c),pos++); \ ??ed_options_handler_18: \ 000002D0 ........ _BLF char8to16,??char8to16??rA \ 000002D4 0010A0E1 MOV R1,R0 \ 000002D8 0720A0E1 MOV R2,R7 \ 000002DC 0600A0E1 MOV R0,R6 \ 000002E0 1D0000EF SWI +29 \ 000002E4 017087E2 ADD R7,R7,#+1 6157 } \ ??ed_options_handler_17: \ 000002E8 ........ LDRB R0,[R5], #+1 \ 000002EC 000050E3 CMP R0,#+0 \ 000002F0 F6FFFF1A BNE ??ed_options_handler_18 6158 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ 000002F4 081094E5 LDR R1,[R4, #+8] \ 000002F8 040094E5 LDR R0,[R4, #+4] \ 000002FC 0620A0E1 MOV R2,R6 \ 00000300 DE0100EF SWI +478 6159 EDIT_SetCursorPos(ed_struct->ed_chatgui,pos); \ 00000304 040094E5 LDR R0,[R4, #+4] \ 00000308 0710A0E1 MOV R1,R7 \ 0000030C D40100EF SWI +468 \ 00000310 0A0000EA B ??ed_options_handler_19 6160 } 6161 else 6162 { 6163 while(c=*p++) 6164 { 6165 wsAppendChar(ed_ws,char8to16(c)); \ ??ed_options_handler_20: \ 00000314 ........ _BLF char8to16,??char8to16??rA \ 00000318 0010A0E1 MOV R1,R0 \ 0000031C 0600A0E1 MOV R0,R6 \ 00000320 1C0000EF SWI +28 6166 } \ ??ed_options_handler_16: \ 00000324 ........ LDRB R0,[R5], #+1 \ 00000328 000050E3 CMP R0,#+0 \ 0000032C F8FFFF1A BNE ??ed_options_handler_20 6167 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ 00000330 081094E5 LDR R1,[R4, #+8] \ 00000334 040094E5 LDR R0,[R4, #+4] \ 00000338 0620A0E1 MOV R2,R6 \ 0000033C DE0100EF SWI +478 6168 } 6169 FreeWS(ed_ws); \ ??ed_options_handler_19: \ 00000340 0600A0E1 MOV R0,R6 \ 00000344 290100EF SWI +297 6170 } 6171 break; 6172 #else 6173 case 0: 6174 t=FindNextActiveContact(ed_struct->ed_contact); 6175 if (t && t!=ed_struct->ed_contact) 6176 { 6177 GeneralFunc_flag1(edchat_id,1); 6178 CreateEditChat(t); 6179 } 6180 break; 6181 case 1: 6182 t=FindPrevActiveContact(ed_struct->ed_contact); 6183 if (t && t!=ed_struct->ed_contact) 6184 { 6185 GeneralFunc_flag1(edchat_id,1); 6186 CreateEditChat(t); 6187 } 6188 break; 6189 case 2: 6190 DispCmdMenu(ed_struct); 6191 break; 6192 default: 6193 i-=3; 6194 if (iloaded_templates) 6195 { 6196 EDITCONTROL ec; 6197 WSHDR *ed_ws; 6198 int c; 6199 char *p=templates_lines[i]; 6200 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); 6201 ed_ws=AllocWS(ec.pWS->wsbody[0]+strlen(p)); 6202 wstrcpy(ed_ws,ec.pWS); 6203 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) 6204 { 6205 int pos=EDIT_GetCursorPos(ed_struct->ed_chatgui); 6206 while(c=*p++) 6207 { 6208 wsInsertChar(ed_ws,char8to16(c),pos++); 6209 } 6210 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); 6211 EDIT_SetCursorPos(ed_struct->ed_chatgui,pos); 6212 } 6213 else 6214 { 6215 while(c=*p++) 6216 { 6217 wsAppendChar(ed_ws,char8to16(c)); 6218 } 6219 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); 6220 } 6221 FreeWS(ed_ws); 6222 } 6223 break; 6224 #endif 6225 } 6226 } 6227 } \ ??ed_options_handler_8: \ 00000348 58D08DE2 ADD SP,SP,#+88 ;; stack cleaning \ 0000034C F081BDE8 POP {R4-R8,PC} ;; return \ ??ed_options_handler_1: \ 00000350 ........ DC32 `?` 6228 \ In segment CODE, align 4, keep-with-next 6229 unsigned short * wstrstr(unsigned short *ws, char *str, int *wslen, int len) 6230 { \ 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 6231 char *s; 6232 unsigned short *w; 6233 int l; 6234 6235 while(*wslen >= len) 6236 { 6237 s = str; 6238 w = ws; 6239 l = len; 6240 for(; (char16to8(*w) == *s) && l; w++, s++, l--); 6241 if(!l) return ws; 6242 ws++; 6243 (*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} 6244 } 6245 return 0; \ ??wstrstr_2: \ 00000074 0000A0E3 MOV R0,#+0 \ 00000078 F087BDE8 POP {R4-R10,PC} ;; return 6246 6247 } 6248 \ In segment CODE, align 4, keep-with-next 6249 int IsUrl(WSHDR *ws, int pos, char *link) 6250 { \ IsUrl: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0150A0E1 MOV R5,R1 6251 const char *valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%;:@&=/?абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; 6252 6253 int len = wstrlen(ws); 6254 unsigned short *str = ws->wsbody+1, *tmp, *begin; 6255 tmp = str; 6256 6257 begin = str = wstrstr(str, "http://", &len, 7); \ 0000000C ........ LDR R7,??DataTable251 ;; `?` \ 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 6258 6259 while(str && (begin-tmp <= pos)) 6260 { 6261 while(len && strchr(valid, char16to8(*str))) {str++; len--;} 6262 if(str-tmp >= pos-2) 6263 { 6264 for(;begin < str; begin++, link++) 6265 *link = char16to8(*begin); 6266 link[str-begin] = 0; 6267 return 1; 6268 } 6269 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 6270 } 6271 6272 len = wstrlen(ws); \ ??IsUrl_2: \ 00000080 04009DE5 LDR R0,[SP, #+4] \ 00000084 230100EF SWI +291 \ 00000088 00008DE5 STR R0,[SP, #+0] 6273 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} 6274 while(str && (begin-tmp <= pos)) 6275 { 6276 while(len && strchr(valid, char16to8(*str))) {str++; len--;} 6277 if(str-tmp >= pos-2) 6278 { 6279 for(;begin < str; begin++, link++) 6280 *link = char16to8(*begin); 6281 link[str-begin] = 0; 6282 return 1; 6283 } 6284 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 6285 } 6286 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 6287 } 6288 6289 #define UTF16_DIS_UNDERLINE (0xE002) 6290 #define UTF16_ENA_UNDERLINE (0xE001) 6291 \ In segment CODE, align 4, keep-with-next 6292 void ParseAnswer(WSHDR *ws, const char *s) 6293 { \ ParseAnswer: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 0040A0E1 MOV R4,R0 6294 const char *valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%;:@&=/?абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; 6295 S_SMILES *t; 6296 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 6297 STXT_SMILES *st; 6298 unsigned int wchar; 6299 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 6300 CutWSTR(ws,0); \ 00000034 0010A0E3 MOV R1,#+0 \ 00000038 0400A0E1 MOV R0,R4 \ 0000003C 260100EF SWI +294 \ 00000040 160000EA B ??ParseAnswer_1 6301 int i; 6302 while(wchar=*s) 6303 { 6304 if(s==strstr(s, "http://") || s == strstr(s, "www.")) 6305 { 6306 wsAppendChar(ws,UTF16_ENA_UNDERLINE); 6307 while(*s && strchr(valid, *s)) 6308 { 6309 wchar=char8to16(*s); \ ??ParseAnswer_2: \ 00000044 ........ LDRB R0,[R5], #+1 \ 00000048 ........ _BLF char8to16,??char8to16??rA 6310 wsAppendChar(ws,wchar); \ 0000004C 0010A0E1 MOV R1,R0 \ ??ParseAnswer_3: \ 00000050 0400A0E1 MOV R0,R4 \ 00000054 1C0000EF SWI +28 6311 s++; 6312 } \ 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 6313 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 6314 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 6315 continue; \ ??ParseAnswer_1: \ 000000A0 0070D5E5 LDRB R7,[R5, #+0] \ 000000A4 000057E3 CMP R7,#+0 \ 000000A8 4F00000A BEQ ??ParseAnswer_5 \ 000000AC ........ LDR R9,??DataTable251 ;; `?` \ 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 6316 } 6317 t=t_root; \ ??ParseAnswer_7: \ 000000E4 0690A0E1 MOV R9,R6 \ 000000E8 230000EA B ??ParseAnswer_8 6318 while(t) 6319 { 6320 st=t->lines; 6321 while(st) 6322 { 6323 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 6324 { 6325 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 6326 } 6327 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] 6328 } \ ??ParseAnswer_13: \ 00000170 00005AE3 CMP R10,#+0 \ 00000174 DCFFFF1A BNE ??ParseAnswer_9 6329 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 6330 } 6331 L1: 6332 if (t) 6333 { 6334 wchar=t->uni_smile; 6335 s+=strlen(st->text); 6336 ulb=s[0]+(s[1]<<8)+(s[2]<<16)+(s[3]<<24); 6337 } 6338 else 6339 { 6340 wchar=char8to16(wchar); \ 00000188 0700A0E1 MOV R0,R7 \ 0000018C ........ _BLF char8to16,??char8to16??rA \ 00000190 0070A0E1 MOV R7,R0 6341 s++; 6342 ulb>>=8; 6343 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 6344 } \ ??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 6345 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 6346 } 6347 i=ws->wsbody[0]; \ ??ParseAnswer_5: \ 000001EC 000094E5 LDR R0,[R4, #+0] \ 000001F0 B010D0E1 LDRH R1,[R0, #+0] \ 000001F4 000000EA B ??ParseAnswer_15 6348 while(i>1) 6349 { 6350 if (ws->wsbody[i--]!=13) break; 6351 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 6352 } 6353 } \ 0000021C F187BDE8 POP {R0,R4-R10,PC} ;; return \ ??ParseAnswer_0: \ 00000220 ........ DC32 s_top 6354 \ In segment CODE, align 4, keep-with-next 6355 void SaveAnswer(CLIST *cl, WSHDR *ws) 6356 { \ SaveAnswer: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0100A0E1 MOV R0,R1 6357 char *p=ExtractAnswer(ws); \ 0000000C ........ BL ExtractAnswer \ 00000010 0050A0E1 MOV R5,R0 6358 mfree(cl->answer); \ 00000014 940094E5 LDR R0,[R4, #+148] \ 00000018 150000EF SWI +21 6359 cl->answer=p; \ 0000001C 945084E5 STR R5,[R4, #+148] 6360 } \ 00000020 3080BDE8 POP {R4,R5,PC} ;; return 6361 6362 //links applicator 6363 6364 \ In segment CODE, align 4, keep-with-next 6365 int GetTempName(void) 6366 { \ GetTempName: \ 00000000 00402DE9 PUSH {LR} \ 00000004 10D04DE2 SUB SP,SP,#+16 6367 static const int DMonth[]={0,31,59,90,120,151,181,212,243,273,304,334,365}; 6368 unsigned long iday; 6369 TTime tt; 6370 TDate dd; 6371 GetDateTime(&dd,&tt); \ 00000008 08108DE2 ADD R1,SP,#+8 \ 0000000C 0D00A0E1 MOV R0,SP \ 00000010 B40000EF SWI +180 6372 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 6373 iday=365*dd.year+DMonth[dd.month-1]+(dd.day - 1); 6374 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] 6375 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 6376 iday++; \ ??GetTempName_1: \ 00000078 011081E2 ADD R1,R1,#+1 6377 iday=(tt.sec+60*(tt.min+60*(tt.hour+24* iday))); 6378 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 6379 } \ 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 6380 6381 \ In segment CODE, align 4, keep-with-next 6382 void recon() 6383 { 6384 SUBPROC((void*)end_socket); \ recon: \ 00000000 ........ LDR R0,??DataTable252 ;; end_socket \ 00000004 10402DE9 PUSH {R4,LR} 6385 GBS_DelTimer(&reconnect_tmr); \ 00000008 ........ LDR R4,??DataTable253 ;; S_ICONS \ 0000000C 710100EF SWI +369 \ 00000010 5C00A0E3 MOV R0,#+92 \ 00000014 680D80E3 ORR R0,R0,#0x1A00 \ 00000018 040080E0 ADD R0,R0,R4 \ 0000001C 8C0100EF SWI +396 6386 DNR_TRIES=3; \ 00000020 0300A0E3 MOV R0,#+3 \ 00000024 9C0384E5 STR R0,[R4, #+924] 6387 SUBPROC((void *)create_connect); \ 00000028 ........ LDR R0,??DataTable254 ;; create_connect \ 0000002C 710100EF SWI +369 6388 } \ 00000030 1080BDE8 POP {R4,PC} ;; return 6389 \ In segment CODE, align 4, keep-with-next 6390 int edchat_onkey(GUI *data, GUI_MSG *msg) 6391 { \ edchat_onkey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 6392 //-1 - do redraw 6393 GBS_DelTimer(&tmr_illumination); \ 00000004 ........ LDR R5,??DataTable262 ;; S_ICONS \ 00000008 4CDF4DE2 SUB SP,SP,#+304 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 0170A0E1 MOV R7,R1 \ 00000014 3C00A0E3 MOV R0,#+60 \ 00000018 680D80E3 ORR R0,R0,#0x1A00 \ 0000001C 050080E0 ADD R0,R0,R5 \ 00000020 8C0100EF SWI +396 6394 CLIST *t; 6395 TPKT *p; 6396 EDITCONTROL ec; 6397 int len, f;//2026rev 6398 unsigned err;//2026rev 6399 char *s; 6400 int l=msg->gbsmsg->submess; \ 00000024 040097E5 LDR R0,[R7, #+4] \ 00000028 088090E5 LDR R8,[R0, #+8] 6401 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 DF0100EF SWI +479 \ 00000034 0060A0E1 MOV R6,R0 6402 char fn[256]; 6403 6404 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 6405 { 6406 void ec_menu(EDCHAT_STRUCT *); 6407 ec_menu(ed_struct); \ 0000004C 0600A0E1 MOV R0,R6 \ 00000050 ........ BL ec_menu 6408 return(-1); \ ??edchat_onkey_1: \ 00000054 540100EA B ??edchat_onkey_2 6409 } 6410 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 510100EA B ??edchat_onkey_4 \ ??edchat_onkey_3: \ 00000068 040097E5 LDR R0,[R7, #+4] \ 0000006C 9510A0E3 MOV R1,#+149 \ 00000070 040090E5 LDR R0,[R0, #+4] \ 00000074 401F81E3 ORR R1,R1,#0x100 \ 00000078 010050E1 CMP R0,R1 \ 0000007C 0C00001A BNE ??edchat_onkey_5 6411 6412 void AddSmile(GUI *data); 6413 if (msg->gbsmsg->msg==LONG_PRESS) 6414 { 6415 if (l==RIGHT_BUTTON) \ 00000080 3E0058E3 CMP R8,#+62 \ 00000084 3B00001A BNE ??edchat_onkey_6 6416 { 6417 if(LongRightAction==2 && EDIT_GetFocus(data)==ed_struct->ed_answer) \ 00000088 3C959FE5 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 081096E5 LDR R1,[R6, #+8] \ 000000A4 010050E1 CMP R0,R1 \ 000000A8 1500001A BNE ??edchat_onkey_8 6418 CreateSmileSelectGUI(ed_struct); \ 000000AC 0600A0E1 MOV R0,R6 \ 000000B0 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA 6419 else 6420 if(LongRightAction==1) 6421 { 6422 if (EDIT_GetFocus(data)==ed_struct->ed_answer) 6423 { 6424 ExtractEditControl(data,ed_struct->ed_answer,&ec); 6425 if (ec.pWS->wsbody[0]==(EDIT_GetCursorPos(data)-1)) 6426 { 6427 t=FindNextActiveContact(ed_struct->ed_contact); 6428 if (t && t!=ed_struct->ed_contact) 6429 { 6430 CreateEditChat(t); 6431 return(1); 6432 } 6433 } 6434 } 6435 } 6436 } 6437 if (l==LEFT_BUTTON && LongLeftAction) 6438 { 6439 if (EDIT_GetFocus(data)==ed_struct->ed_answer) 6440 { 6441 ExtractEditControl(data,ed_struct->ed_answer,&ec); 6442 if (ec.pWS->wsbody[0]==(EDIT_GetCursorPos(data)-1)) 6443 { 6444 t=FindPrevActiveContact(ed_struct->ed_contact); 6445 if (t && t!=ed_struct->ed_contact) 6446 { 6447 CreateEditChat(t); 6448 return(1); 6449 } 6450 } 6451 } 6452 } 6453 //#ifdef ELKA 6454 if (l==VOL_DOWN_BUTTON) 6455 { 6456 #ifdef kluchnik 6457 if((EDIT_GetFocus(data)==ed_struct->ed_answer)) 6458 #else 6459 if(LongVolDownAction) 6460 #endif 6461 { 6462 WSHDR *ws; 6463 ExtractEditControl(data,ed_struct->ed_answer,&ec); 6464 if(wstrlen(ec.pWS)>0) 6465 { 6466 ws=AllocWS(1); 6467 CutWSTR(ws,0); 6468 6469 EDIT_SetFocus(data,ed_struct->ed_answer); 6470 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); 6471 6472 FreeWS(ws); 6473 RefreshGUI(); 6474 } 6475 } 6476 else 6477 { 6478 int pos; 6479 if ((pos=EDIT_GetFocus(data)+2)<=ed_struct->ed_answer) 6480 { 6481 EDIT_SetFocus(data, pos); 6482 EDIT_SetCursorPos(data, 1); 6483 } 6484 return (-1); 6485 } 6486 6487 } 6488 6489 if (l==VOL_UP_BUTTON) 6490 { 6491 if(LongVolUpAction) 6492 { 6493 WSHDR *ws=AllocWS(strlen(last_msg_buffer)+1); 6494 ascii2ws(ws,last_msg_buffer); 6495 EDIT_SetFocus(ed_struct->ed_chatgui,ed_struct->ed_answer); 6496 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); 6497 FreeWS(ws); 6498 RefreshGUI(); 6499 } 6500 else 6501 { 6502 int pos; 6503 if ((pos=EDIT_GetFocus(data)-2)>=2) 6504 { 6505 EDIT_SetFocus(data, pos); 6506 EDIT_SetCursorPos(data, 1); 6507 } 6508 return (-1); 6509 } 6510 } 6511 //#endif 6512 #ifdef kluchnik 6513 if(l==LEFT_BUTTON && EDIT_GetFocus(ed_struct->ed_chatgui)!=ed_struct->ed_answer && EDIT_GetCursorPos(data)==1) 6514 { 6515 int ed; 6516 EDITCONTROL ec; 6517 ed=EDIT_GetFocus(ed_struct->ed_chatgui); 6518 ExtractEditControl(ed_struct->ed_chatgui,ed,&ec); 6519 6520 wsInsertChar(wsBuffer,'>',wstrlen(wsBuffer)+1); 6521 wsInsertChar(wsBuffer,' ',wstrlen(wsBuffer)+1); 6522 wstrcat(wsBuffer,ec.pWS); 6523 wsInsertChar(wsBuffer,'\n',wstrlen(wsBuffer)+1); 6524 6525 ShowMSG(1,(int)"Message add to buffer"); 6526 } 6527 #endif 6528 } 6529 6530 if (msg->gbsmsg->msg==KEY_DOWN) \ ??edchat_onkey_5: \ 000000B4 040097E5 LDR R0,[R7, #+4] \ 000000B8 9310A0E3 MOV R1,#+147 \ 000000BC 040090E5 LDR R0,[R0, #+4] \ 000000C0 401F81E3 ORR R1,R1,#0x100 \ 000000C4 010050E1 CMP R0,R1 \ 000000C8 0A00001A BNE ??edchat_onkey_9 6531 { 6532 if ((l>='0')&&(l<='9')) \ 000000CC 300058E3 CMP R8,#+48 \ 000000D0 880000BA BLT ??edchat_onkey_10 \ 000000D4 3A0058E3 CMP R8,#+58 \ 000000D8 060000AA BGE ??edchat_onkey_9 6533 { 6534 if (EDIT_GetFocus(data)!=ed_struct->ed_answer) \ 000000DC 0400A0E1 MOV R0,R4 \ 000000E0 820100EF SWI +386 \ 000000E4 081096E5 LDR R1,[R6, #+8] \ 000000E8 010050E1 CMP R0,R1 \ 000000EC 0100000A BEQ ??edchat_onkey_9 6535 EDIT_SetFocus(data,ed_struct->ed_answer); \ 000000F0 0400A0E1 MOV R0,R4 \ 000000F4 9B0100EF SWI +411 6536 } 6537 6538 if (l==GREEN_BUTTON) 6539 { 6540 if (connect_state==3) 6541 { 6542 if ((t=ed_struct->ed_contact)) 6543 { 6544 ExtractEditControl(data,ed_struct->ed_answer,&ec); 6545 SaveAnswer(t,ec.pWS); 6546 if ((s=t->answer)) 6547 { 6548 if ((len=strlen(s))) 6549 { 6550 msg_away_timer=0; 6551 away_m=0; 6552 t->automsgcount=0; 6553 if(change_back_status) 6554 { 6555 CurrentStatus=status_rem; 6556 set_my_status(); 6557 change_back_status=0; 6558 } 6559 if(SHOW_ACTIVE) 6560 t->isactive=ACTIVE_TIME; 6561 p=malloc(sizeof(PKT)+len+1); 6562 p->pkt.uin=t->uin; 6563 p->pkt.type=T_SENDMSG; 6564 p->pkt.data_len=len; 6565 strcpy(p->data,s); 6566 //#ifdef ELKA 6567 strcpy(last_msg_buffer, s); 6568 //#endif 6569 AddStringToLog(t,0x01,p->data,I_str,(++SENDMSGCOUNT)&0x7FFF,1); //Номер сообщения 6570 SUBPROC((void *)SendAnswer,0,p); 6571 main2_count++; 6572 mfree(t->answer); 6573 t->answer=NULL; 6574 // request_remake_edchat=1; 6575 EDIT_SetFocus(data,ed_struct->ed_answer); 6576 CutWSTR(ews,0); 6577 EDIT_SetTextToFocused(data,ews); 6578 AddMsgToChat(data); 6579 RecountMenu(t,1); 6580 return(-1); 6581 } 6582 } 6583 } 6584 } 6585 } 6586 //================2026rev-begin 6587 if (l==ENTER_BUTTON) 6588 { 6589 if (!EDIT_IsMarkModeActive(data)) // ?????? ???? ?? ????????? 6590 { 6591 int pos, len; 6592 char *link; 6593 ExtractEditControl(ed_struct->ed_chatgui,EDIT_GetFocus(ed_struct->ed_chatgui),&ec); 6594 wstrcpy(ews,ec.pWS); 6595 pos = EDIT_GetCursorPos(data); 6596 len = wstrlen(ews); 6597 link = malloc(len+1); 6598 6599 if(IsUrl(ews, pos, link)) 6600 { 6601 snprintf(fn, 255, "%s\\tmp%u.url", TEMPLATES_PATH, GetTempName); 6602 if ((f=fopen(fn,A_WriteOnly+A_BIN+A_Create+A_Truncate,P_WRITE,&err))!=-1) 6603 { 6604 fwrite(f,link,strlen(link),&err); 6605 fclose(f,&err); 6606 str_2ws(ews,fn,256); 6607 ExecuteFile(ews,0,0); 6608 unlink(fn, &err); 6609 } 6610 mfree(link); 6611 return (-1); 6612 } 6613 else 6614 { 6615 int i=ed_struct->loaded_templates=LoadTemplates(ed_struct->ed_contact->uin); 6616 #ifdef ole64 6617 EDIT_OpenOptionMenuWithUserItems(data,ed_options_handler,ed_struct,i+4); 6618 #else 6619 EDIT_OpenOptionMenuWithUserItems(data,ed_options_handler,ed_struct,i+3); 6620 #endif 6621 mfree(link); 6622 return (-1); 6623 } 6624 } 6625 } 6626 6627 //================ 2026rev-end =================// 6628 6629 if (l==VOL_UP_BUTTON) 6630 { 6631 int pos; 6632 6633 if ((pos=EDIT_GetFocus(data)-2)>=2) 6634 { 6635 EDIT_SetFocus(data, pos); 6636 EDIT_SetCursorPos(data, 1); 6637 } 6638 return (-1); 6639 } 6640 if (l==VOL_DOWN_BUTTON) 6641 { 6642 int pos; 6643 6644 if ((pos=EDIT_GetFocus(data)+2)<=ed_struct->ed_answer) 6645 { 6646 EDIT_SetFocus(data, pos); 6647 EDIT_SetCursorPos(data, 1); 6648 } 6649 return (-1); 6650 } 6651 } 6652 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 081096E5 LDR R1,[R6, #+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 00A096E5 LDR R10,[R6, #+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 0D0100EA B ??edchat_onkey_4 \ ??edchat_onkey_6: \ 00000178 3D0058E3 CMP R8,#+61 \ 0000017C 1A00001A BNE ??edchat_onkey_12 \ 00000180 48049FE5 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 081096E5 LDR R1,[R6, #+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 00A096E5 LDR R10,[R6, #+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 0E0058E3 CMP R8,#+14 \ 000001F0 2600001A BNE ??edchat_onkey_13 \ 000001F4 D8039FE5 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 081096E5 LDR R1,[R6, #+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 081096E5 LDR R1,[R6, #+8] \ 0000023C 0400A0E1 MOV R0,R4 \ ??edchat_onkey_15: \ 00000240 9B0100EF SWI +411 \ 00000244 040096E5 LDR R0,[R6, #+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 080096E5 LDR R0,[R6, #+8] \ 00000270 010050E1 CMP R0,R1 \ ??edchat_onkey_16: \ 00000274 CC0000BA 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 \ 0000028C C60000EA B ??edchat_onkey_2 \ ??edchat_onkey_13: \ 00000290 0D0058E3 CMP R8,#+13 \ 00000294 86FFFF1A BNE ??edchat_onkey_5 \ 00000298 38039FE5 LDR R0,??edchat_onkey_7+0xC ;; LongVolUpAction \ 0000029C 000090E5 LDR R0,[R0, #+0] \ 000002A0 000050E3 CMP R0,#+0 \ 000002A4 0E00000A BEQ ??edchat_onkey_17 \ 000002A8 E400A0E3 MOV R0,#+228 \ 000002AC 500E80E3 ORR R0,R0,#0x500 \ 000002B0 050080E0 ADD R0,R0,R5 \ 000002B4 1B0000EF SWI +27 \ 000002B8 010080E2 ADD R0,R0,#+1 \ 000002BC 250100EF SWI +293 \ 000002C0 0090A0E1 MOV R9,R0 \ 000002C4 E400A0E3 MOV R0,#+228 \ 000002C8 500E80E3 ORR R0,R0,#0x500 \ 000002CC 051080E0 ADD R1,R0,R5 \ 000002D0 0900A0E1 MOV R0,R9 \ 000002D4 ........ _BLF ascii2ws,??ascii2ws??rA \ 000002D8 081096E5 LDR R1,[R6, #+8] \ 000002DC 040096E5 LDR R0,[R6, #+4] \ 000002E0 D6FFFFEA B ??edchat_onkey_15 \ ??edchat_onkey_17: \ 000002E4 0400A0E1 MOV R0,R4 \ 000002E8 820100EF SWI +386 \ 000002EC 021040E2 SUB R1,R0,#+2 \ 000002F0 020051E3 CMP R1,#+2 \ 000002F4 DEFFFFEA B ??edchat_onkey_16 \ ??edchat_onkey_10: \ 000002F8 0B0058E3 CMP R8,#+11 \ 000002FC 5B00001A BNE ??edchat_onkey_18 \ 00000300 E40295E5 LDR R0,[R5, #+740] \ 00000304 030050E3 CMP R0,#+3 \ 00000308 7AFFFF1A BNE ??edchat_onkey_9 \ 0000030C 009096E5 LDR R9,[R6, #+0] \ 00000310 000059E3 CMP R9,#+0 \ 00000314 77FFFF0A BEQ ??edchat_onkey_9 \ 00000318 081096E5 LDR R1,[R6, #+8] \ 0000031C 04208DE2 ADD R2,SP,#+4 \ 00000320 0400A0E1 MOV R0,R4 \ 00000324 690100EF SWI +361 \ 00000328 2C109DE5 LDR R1,[SP, #+44] \ 0000032C 0900A0E1 MOV R0,R9 \ 00000330 ........ BL SaveAnswer \ 00000334 94A099E5 LDR R10,[R9, #+148] \ 00000338 00005AE3 CMP R10,#+0 \ 0000033C 6DFFFF0A BEQ ??edchat_onkey_9 \ 00000340 0A00A0E1 MOV R0,R10 \ 00000344 1B0000EF SWI +27 \ 00000348 00B0B0E1 MOVS R11,R0 \ 0000034C 69FFFF0A BEQ ??edchat_onkey_9 \ 00000350 0070A0E3 MOV R7,#+0 \ 00000354 907285E5 STR R7,[R5, #+656] \ 00000358 947285E5 STR R7,[R5, #+660] \ 0000035C 787089E5 STR R7,[R9, #+120] \ 00000360 9C0295E5 LDR R0,[R5, #+668] \ 00000364 000050E3 CMP R0,#+0 \ 00000368 0300000A BEQ ??edchat_onkey_19 \ 0000036C 980295E5 LDR R0,[R5, #+664] \ 00000370 800285E5 STR R0,[R5, #+640] \ 00000374 ........ BL set_my_status \ 00000378 9C7285E5 STR R7,[R5, #+668] \ ??edchat_onkey_19: \ 0000037C ........ LDR R0,??DataTable256 ;; SHOW_ACTIVE \ 00000380 000090E5 LDR R0,[R0, #+0] \ 00000384 000050E3 CMP R0,#+0 \ 00000388 5A0FA013 MOVNE R0,#+360 \ 0000038C 9C008915 STRNE R0,[R9, #+156] \ 00000390 09008BE2 ADD R0,R11,#+9 \ 00000394 140000EF SWI +20 \ 00000398 0080A0E1 MOV R8,R0 \ 0000039C 0C0099E5 LDR R0,[R9, #+12] \ 000003A0 0A10A0E1 MOV R1,R10 \ 000003A4 000088E5 STR R0,[R8, #+0] \ 000003A8 0200A0E3 MOV R0,#+2 \ 000003AC B400C8E1 STRH R0,[R8, #+4] \ 000003B0 B6B0C8E1 STRH R11,[R8, #+6] \ 000003B4 080088E2 ADD R0,R8,#+8 \ 000003B8 1A0000EF SWI +26 \ 000003BC 0A10A0E1 MOV R1,R10 \ 000003C0 E400A0E3 MOV R0,#+228 \ 000003C4 500E80E3 ORR R0,R0,#0x500 \ 000003C8 050080E0 ADD R0,R0,R5 \ 000003CC 1A0000EF SWI +26 \ 000003D0 700295E5 LDR R0,[R5, #+624] \ 000003D4 ........ LDR R3,??DataTable291 ;; I_str \ 000003D8 010080E2 ADD R0,R0,#+1 \ 000003DC 700285E5 STR R0,[R5, #+624] \ 000003E0 0110A0E3 MOV R1,#+1 \ 000003E4 02002DE9 PUSH {R1} \ 000003E8 8008A0E1 LSL R0,R0,#+17 \ 000003EC A008A0E1 LSR R0,R0,#+17 \ 000003F0 01002DE9 PUSH {R0} \ 000003F4 082088E2 ADD R2,R8,#+8 \ 000003F8 0900A0E1 MOV R0,R9 \ 000003FC ........ BL AddStringToLog \ 00000400 ........ LDR R0,??DataTable295 ;; SendAnswer \ 00000404 0820A0E1 MOV R2,R8 \ 00000408 0010A0E3 MOV R1,#+0 \ 0000040C 710100EF SWI +369 \ 00000410 ........ LDR R0,??DataTable259 ;; main2_count \ 00000414 001090E5 LDR R1,[R0, #+0] \ 00000418 011081E2 ADD R1,R1,#+1 \ 0000041C 001080E5 STR R1,[R0, #+0] \ 00000420 940099E5 LDR R0,[R9, #+148] \ 00000424 150000EF SWI +21 \ 00000428 947089E5 STR R7,[R9, #+148] \ 0000042C 081096E5 LDR R1,[R6, #+8] \ 00000430 0400A0E1 MOV R0,R4 \ 00000434 9B0100EF SWI +411 \ 00000438 880295E5 LDR R0,[R5, #+648] \ 0000043C 0710A0E1 MOV R1,R7 \ 00000440 260100EF SWI +294 \ 00000444 881295E5 LDR R1,[R5, #+648] \ 00000448 0400A0E1 MOV R0,R4 \ 0000044C 810100EF SWI +385 \ 00000450 0400A0E1 MOV R0,R4 \ 00000454 ........ BL AddMsgToChat \ 00000458 0110A0E3 MOV R1,#+1 \ 0000045C 0900A0E1 MOV R0,R9 \ 00000460 ........ BL RecountMenu \ 00000464 0700E0E1 MVN R0,R7 \ 00000468 08D08DE2 ADD SP,SP,#+8 \ 0000046C 4F0000EA B ??edchat_onkey_4 \ ??edchat_onkey_18: \ 00000470 1A0058E3 CMP R8,#+26 \ 00000474 4F00001A BNE ??edchat_onkey_20 \ 00000478 0400A0E1 MOV R0,R4 \ 0000047C D80100EF SWI +472 \ 00000480 000050E3 CMP R0,#+0 \ 00000484 1BFFFF1A BNE ??edchat_onkey_9 \ 00000488 040096E5 LDR R0,[R6, #+4] \ 0000048C 820100EF SWI +386 \ 00000490 04208DE2 ADD R2,SP,#+4 \ 00000494 0010A0E1 MOV R1,R0 \ 00000498 040096E5 LDR R0,[R6, #+4] \ 0000049C 690100EF SWI +361 \ 000004A0 880295E5 LDR R0,[R5, #+648] \ 000004A4 2C109DE5 LDR R1,[SP, #+44] \ 000004A8 1F0100EF SWI +287 \ 000004AC 0400A0E1 MOV R0,R4 \ 000004B0 D30100EF SWI +467 \ 000004B4 0080A0E1 MOV R8,R0 \ 000004B8 880295E5 LDR R0,[R5, #+648] \ 000004BC 230100EF SWI +291 \ 000004C0 010080E2 ADD R0,R0,#+1 \ 000004C4 140000EF SWI +20 \ 000004C8 0070A0E1 MOV R7,R0 \ 000004CC 880295E5 LDR R0,[R5, #+648] \ 000004D0 0720A0E1 MOV R2,R7 \ 000004D4 0810A0E1 MOV R1,R8 \ 000004D8 ........ BL IsUrl \ 000004DC 000050E3 CMP R0,#+0 \ 000004E0 2600000A BEQ ??edchat_onkey_21 \ 000004E4 F0009FE5 LDR R0,??edchat_onkey_7+0x10 ;; GetTempName \ 000004E8 ........ LDR R3,??DataTable260 ;; TEMPLATES_PATH \ 000004EC EC209FE5 LDR R2,??edchat_onkey_7+0x14 ;; `?` \ 000004F0 01002DE9 PUSH {R0} \ 000004F4 FF10A0E3 MOV R1,#+255 \ 000004F8 34008DE2 ADD R0,SP,#+52 \ 000004FC 1B0100EF SWI +283 \ 00000500 04308DE2 ADD R3,SP,#+4 \ 00000504 402FA0E3 MOV R2,#+256 \ 00000508 0110A0E3 MOV R1,#+1 \ 0000050C 831C81E3 ORR R1,R1,#0x8300 \ 00000510 34008DE2 ADD R0,SP,#+52 \ 00000514 0A0000EF SWI +10 \ 00000518 0040A0E1 MOV R4,R0 \ 0000051C 010074E3 CMN R4,#+1 \ 00000520 04D08DE2 ADD SP,SP,#+4 \ 00000524 1E00000A BEQ ??edchat_onkey_22 \ 00000528 0700A0E1 MOV R0,R7 \ 0000052C 1B0000EF SWI +27 \ 00000530 0020A0E1 MOV R2,R0 \ 00000534 0D30A0E1 MOV R3,SP \ 00000538 0710A0E1 MOV R1,R7 \ 0000053C 0400A0E1 MOV R0,R4 \ 00000540 0C0000EF SWI +12 \ 00000544 0D10A0E1 MOV R1,SP \ 00000548 0400A0E1 MOV R0,R4 \ 0000054C 0D0000EF SWI +13 \ 00000550 880295E5 LDR R0,[R5, #+648] \ 00000554 402FA0E3 MOV R2,#+256 \ 00000558 30108DE2 ADD R1,SP,#+48 \ 0000055C 6C0100EF SWI +364 \ 00000560 880295E5 LDR R0,[R5, #+648] \ 00000564 0020A0E3 MOV R2,#+0 \ 00000568 0010A0E3 MOV R1,#+0 \ 0000056C 940000EF SWI +148 \ 00000570 0D10A0E1 MOV R1,SP \ 00000574 30008DE2 ADD R0,SP,#+48 \ 00000578 6B0100EF SWI +363 \ ??edchat_onkey_23: \ 0000057C 080000EA B ??edchat_onkey_22 \ ??edchat_onkey_21: \ 00000580 000096E5 LDR R0,[R6, #+0] \ 00000584 0C0090E5 LDR R0,[R0, #+12] \ 00000588 ........ BL LoadTemplates \ 0000058C 50109FE5 LDR R1,??edchat_onkey_7+0x18 ;; ed_options_handler \ 00000590 100086E5 STR R0,[R6, #+16] \ 00000594 043080E2 ADD R3,R0,#+4 \ 00000598 0620A0E1 MOV R2,R6 \ 0000059C 0400A0E1 MOV R0,R4 \ 000005A0 E50100EF SWI +485 \ ??edchat_onkey_22: \ 000005A4 0700A0E1 MOV R0,R7 \ 000005A8 150000EF SWI +21 \ ??edchat_onkey_2: \ 000005AC 0000E0E3 MVN R0,#+0 \ ??edchat_onkey_4: \ 000005B0 4CDF8DE2 ADD SP,SP,#+304 \ 000005B4 F08FBDE8 POP {R4-R11,PC} \ ??edchat_onkey_20: \ 000005B8 0D0058E3 CMP R8,#+13 \ 000005BC 48FFFF0A BEQ ??edchat_onkey_17 \ ??edchat_onkey_24: \ 000005C0 0E0058E3 CMP R8,#+14 \ 000005C4 CBFEFF1A BNE ??edchat_onkey_9 \ 000005C8 24FFFFEA B ??edchat_onkey_14 \ ??edchat_onkey_7: \ 000005CC ........ DC32 LongRightAction \ 000005D0 ........ DC32 LongLeftAction \ 000005D4 ........ DC32 LongVolDownAction \ 000005D8 ........ DC32 LongVolUpAction \ 000005DC ........ DC32 GetTempName \ 000005E0 ........ DC32 `?` \ 000005E4 ........ DC32 ed_options_handler 6653 //1: close 6654 } 6655 6656 static const HEADER_DESC edchat_hdr={0,0,NULL,NULL,NULL,0,LGP_NULL}; 6657 6658 void (*old_ed_redraw)(void *data); \ In segment CODE, align 4, keep-with-next 6659 void my_ed_redraw(void *data) 6660 { \ my_ed_redraw: \ 00000000 30402DE9 PUSH {R4,R5,LR} 6661 void *edchat_gui; 6662 EDCHAT_STRUCT *ed_struct; 6663 if (old_ed_redraw) old_ed_redraw(data); \ 00000004 ........ LDR R4,??DataTable263 ;; S_ICONS \ 00000008 C01394E5 LDR R1,[R4, #+960] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0100000A BEQ ??my_ed_redraw_0 \ 00000014 31FF2FE1 BLX R1 6664 edchat_gui=FindGUIbyId(edchat_id,NULL); \ 00000018 0010A0E3 MOV R1,#+0 \ ??my_ed_redraw_0: \ 0000001C 180394E5 LDR R0,[R4, #+792] \ 00000020 090200EF SWI +521 6665 if (edchat_gui) \ 00000024 000050E3 CMP R0,#+0 \ 00000028 3080BD08 POPEQ {R4,R5,PC} 6666 { 6667 ed_struct=EDIT_GetUserPointer(edchat_gui); \ 0000002C DF0100EF SWI +479 6668 if (ed_struct) \ 00000030 000050E3 CMP R0,#+0 \ 00000034 3080BD08 POPEQ {R4,R5,PC} 6669 { 6670 int icon, width; 6671 #ifndef NEWSGOLD 6672 icon=*(S_ICONS+GetIconIndex(ed_struct->ed_contact)); 6673 ((HEADER_DESC *)&edchat_hdr)->rc.x2=ScreenW()-1-(width=GetImgWidth(icon)); 6674 DrawImg(ScreenW()-1-width,1,icon); 6675 #else 6676 icon=*(S_ICONS+GetIconIndex(ed_struct->ed_contact)); \ 00000038 000090E5 LDR R0,[R0, #+0] \ 0000003C ........ BL GetIconIndex \ 00000040 004194E7 LDR R4,[R4, +R0, LSL #+2] 6677 width=GetImgWidth(icon); \ 00000044 0400A0E1 MOV R0,R4 \ 00000048 220000EF SWI +34 \ 0000004C 0050A0E1 MOV R5,R0 6678 DrawImg(2,((HeaderH()-width)>>1)+YDISP,icon); \ 00000050 8A8100EF SWI +33162 \ 00000054 0420A0E1 MOV R2,R4 \ 00000058 050040E0 SUB R0,R0,R5 \ 0000005C C010A0E1 ASR R1,R0,#+1 \ 00000060 0200A0E3 MOV R0,#+2 \ 00000064 230000EF SWI +35 6679 /* DrawRoundedFrame(ScreenW()-8,YDISP,ScreenW()-1,YDISP+7,0,0,0, 6680 GetPaletteAdrByColorIndex(0), 6681 GetPaletteAdrByColorIndex(EDIT_IsBusy(edchat_gui)?3:4));*/ 6682 #endif 6683 } 6684 } 6685 } \ 00000068 3080BDE8 POP {R4,R5,PC} ;; return 6686 \ In segment CODE, align 4, keep-with-next 6687 void edchat_ghook(GUI *data, int cmd) 6688 { \ edchat_ghook: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 6689 6690 static const SOFTKEY_DESC sk={0x0FFF,0x0000,(int)LG_MENU}; 6691 static const SOFTKEY_DESC sk_cancel={0x0FF0,0x0000,(int)LG_CLOSE}; 6692 // static SOFTKEY_DESC sk={0x0018,0x0000,(int)"Menu"}; 6693 int j; 6694 EDITCONTROL ec; 6695 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); 6696 PNGTOP_DESC *pltop=PNG_TOP(); 6697 if (cmd==9) \ 00000004 ........ LDR R4,??DataTable262 ;; 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 6698 { 6699 GBS_DelTimer(&tmr_illumination); //by BoBa 25.06.07 \ 00000030 3C00A0E3 MOV R0,#+60 \ 00000034 680D80E3 ORR R0,R0,#0x1A00 \ 00000038 040080E0 ADD R0,R0,R4 \ 0000003C 8C0100EF SWI +396 6700 pltop->dyn_pltop=NULL; \ 00000040 086088E5 STR R6,[R8, #+8] \ 00000044 170000EA B ??edchat_ghook_1 6701 } 6702 if (cmd==2) \ ??edchat_ghook_0: \ 00000048 081097E5 LDR R1,[R7, #+8] \ 0000004C 020059E3 CMP R9,#+2 \ 00000050 1600001A BNE ??edchat_ghook_2 6703 { 6704 ed_struct->ed_chatgui=data; \ 00000054 045087E5 STR R5,[R7, #+4] 6705 // edgui_data=data; 6706 EDIT_SetFocus(data,ed_struct->ed_answer); \ 00000058 0500A0E1 MOV R0,R5 \ 0000005C 9B0100EF SWI +411 6707 6708 static void *methods[16]; 6709 void **m=GetDataOfItemByID(data,2); \ 00000060 0210A0E3 MOV R1,#+2 \ 00000064 0500A0E1 MOV R0,R5 \ 00000068 4F0100EF SWI +335 \ 0000006C 0050B0E1 MOVS R5,R0 6710 if (m) 6711 { 6712 if (m[1]) \ 00000070 04009515 LDRNE R0,[R5, #+4] \ 00000074 00005013 CMPNE R0,#+0 \ 00000078 6300000A BEQ ??edchat_ghook_3 6713 { 6714 memcpy(methods,m[1],sizeof(methods)); \ 0000007C F16FA0E3 MOV R6,#+964 \ 00000080 4020A0E3 MOV R2,#+64 \ 00000084 0010A0E1 MOV R1,R0 \ 00000088 040086E0 ADD R0,R6,R4 \ 0000008C 1E0100EF SWI +286 6715 old_ed_redraw=(void (*)(void *))(methods[0]); \ 00000090 040096E7 LDR R0,[R6, +R4] \ 00000094 C00384E5 STR R0,[R4, #+960] 6716 methods[0]=(void *)my_ed_redraw; \ 00000098 74019FE5 LDR R0,??edchat_ghook_4 ;; my_ed_redraw \ 0000009C 040086E7 STR R0,[R6, +R4] 6717 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} 6718 } 6719 } 6720 } 6721 if (cmd==3) \ ??edchat_ghook_2: \ 000000B0 030059E3 CMP R9,#+3 \ 000000B4 0E00001A BNE ??edchat_ghook_5 6722 { 6723 // if (edgui_data==data) edgui_data=NULL; 6724 if (ed_struct->ed_contact) \ 000000B8 000097E5 LDR R0,[R7, #+0] \ 000000BC 000050E3 CMP R0,#+0 \ 000000C0 0500000A BEQ ??edchat_ghook_6 6725 { 6726 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 000000C4 0D20A0E1 MOV R2,SP \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 690100EF SWI +361 6727 SaveAnswer(ed_struct->ed_contact,ec.pWS); \ 000000D0 28109DE5 LDR R1,[SP, #+40] \ 000000D4 000097E5 LDR R0,[R7, #+0] \ 000000D8 ........ BL SaveAnswer 6728 } 6729 RecountMenu(ed_struct->ed_contact,1); \ ??edchat_ghook_6: \ 000000DC 000097E5 LDR R0,[R7, #+0] \ 000000E0 0110A0E3 MOV R1,#+1 \ 000000E4 ........ BL RecountMenu 6730 mfree(ed_struct); \ 000000E8 0700A0E1 MOV R0,R7 \ 000000EC 150000EF SWI +21 \ 000000F0 ECFFFFEA B ??edchat_ghook_1 6731 } 6732 if (cmd==0x0A) \ ??edchat_ghook_5: \ 000000F4 0A0059E3 CMP R9,#+10 \ 000000F8 0900001A BNE ??edchat_ghook_7 6733 { 6734 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] 6735 DisableIDLETMR(); \ 00000108 7F0100EF SWI +383 6736 total_unread-=ed_struct->requested_decrement_total_unread; \ 0000010C 080394E5 LDR R0,[R4, #+776] \ 00000110 0C1097E5 LDR R1,[R7, #+12] \ 00000114 010040E0 SUB R0,R0,R1 \ 00000118 080384E5 STR R0,[R4, #+776] 6737 ed_struct->requested_decrement_total_unread=0; \ 0000011C 0C6087E5 STR R6,[R7, #+12] \ 00000120 E0FFFFEA B ??edchat_ghook_1 6738 #ifdef ELKA 6739 if (!total_unread) 6740 { 6741 SLI_Off(); 6742 } 6743 #endif 6744 /* if (request_close_edchat) 6745 { 6746 request_close_edchat=0; 6747 GeneralFunc_flag1(edchat_id,1); 6748 return; 6749 }*/ 6750 } 6751 if (cmd==7) \ ??edchat_ghook_7: \ 00000124 070059E3 CMP R9,#+7 \ 00000128 2800001A BNE ??edchat_ghook_8 6752 { 6753 SetSoftKey(data,&sk,SET_SOFT_KEY_N); \ 0000012C E8809FE5 LDR R8,??edchat_ghook_4+0x8 ;; ??sk_1 \ 00000130 0020A0E3 MOV R2,#+0 \ 00000134 0810A0E1 MOV R1,R8 \ 00000138 0500A0E1 MOV R0,R5 \ 0000013C 680100EF SWI +360 6754 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 6755 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 6756 SetSoftKey(data,&sk_cancel,SET_SOFT_KEY_N==0?1:0); \ 00000164 0120A0E3 MOV R2,#+1 \ 00000168 081088E2 ADD R1,R8,#+8 \ 0000016C 0500A0E1 MOV R0,R5 \ 00000170 680100EF SWI +360 6757 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 6758 { 6759 time_to_stop_t9=0; \ 00000184 B06384E5 STR R6,[R4, #+944] 6760 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 6761 { 6762 ed_struct->ed_contact->req_add=0; \ 00000198 886080E5 STR R6,[R0, #+136] 6763 AddMsgToChat(data); \ 0000019C 0500A0E1 MOV R0,R5 \ 000001A0 ........ BL AddMsgToChat 6764 RecountMenu(ed_struct->ed_contact,1); \ 000001A4 000097E5 LDR R0,[R7, #+0] \ 000001A8 0110A0E3 MOV R1,#+1 \ 000001AC ........ BL RecountMenu 6765 } 6766 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 6767 { 6768 ed_struct->ed_contact->req_drawack=0; \ 000001C0 8C6080E5 STR R6,[R0, #+140] 6769 DrawAck(data); \ 000001C4 0500A0E1 MOV R0,R5 \ 000001C8 ........ BL DrawAck \ 000001CC B5FFFFEA B ??edchat_ghook_1 6770 } 6771 } 6772 } 6773 if (cmd==0x0C) \ ??edchat_ghook_8: \ 000001D0 0C0059E3 CMP R9,#+12 \ 000001D4 0C00001A BNE ??edchat_ghook_3 6774 { 6775 j=EDIT_GetFocus(data); \ 000001D8 0500A0E1 MOV R0,R5 \ 000001DC 820100EF SWI +386 \ 000001E0 0040A0E1 MOV R4,R0 6776 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 6777 EDIT_SetCursorPos(data,1); \ 00000200 0110A0E3 MOV R1,#+1 \ 00000204 0500A0E1 MOV R0,R5 \ 00000208 D40100EF SWI +468 6778 } 6779 } \ ??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 6780 6781 6782 6783 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 0B0000006400 DC32 11, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ 00000038 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000040 000000000000 DC32 0H, 0, 2147483647 \ 0000FFFFFF7F \ 0000004C 2D2D2D2D2D2D DC8 "-------" \ 2D00 \ In segment DATA_C, align 4, align-sorted \ ??sk_1: \ 00000000 FF0F0000 DC16 4095, 0 \ 00000004 ........ DC32 `?` \ 00000008 F00F0000 DC16 4080, 0 \ 0000000C ........ DC32 `?` 6784 { 6785 1, 6786 edchat_onkey, 6787 edchat_ghook, 6788 (void *)edchat_locret, 6789 0, 6790 &menu_skt, 6791 {0,NULL,NULL,NULL}, 6792 FONT_SMALL, 6793 100, 6794 101, 6795 0, 6796 // 0x00000001 - Выровнять по правому краю 6797 // 0x00000002 - Выровнять по центру 6798 // 0x00000004 - Инверсия знакомест 6799 // 0x00000008 - UnderLine 6800 // 0x00000020 - Не переносить слова 6801 // 0x00000200 - bold 6802 0, 6803 // 0x00000002 - ReadOnly 6804 // 0x00000004 - Не двигается курсор 6805 // 0x40000000 - Поменять местами софт-кнопки 6806 0x40000000 6807 }; 6808 \ In segment CODE, align 4, keep-with-next 6809 void CreateEditChat(CLIST *t) 6810 { \ CreateEditChat: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 6811 6812 void *ma=malloc_adr(); 6813 void *eq; 6814 EDITCONTROL ec; 6815 EDITC_OPTIONS ec_options; 6816 int color, font, type; 6817 int zc; 6818 6819 LOGQ *lp; 6820 int edchat_toitem; 6821 // edcontact=t; 6822 6823 *((int *)(&edchat_hdr.lgp_id))=(int)t->name; \ 00000004 58649FE5 LDR R6,??CreateEditChat_0 ;; edchat_desc 6824 // *((int **)(&edchat_hdr.icon))=(int *)S_ICONS+GetIconIndex(t); 6825 *((int **)(&edchat_hdr.icon))=(int *)S_ICONS+IS_NULLICON; \ 00000008 ........ LDR R7,??DataTable263 ;; 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] 6826 6827 eq=AllocEQueue(ma,mfree_adr()); \ 0000002C 158000EF SWI +32789 \ 00000030 0010A0E1 MOV R1,R0 \ 00000034 0500A0E1 MOV R0,R5 \ 00000038 630100EF SWI +355 6828 6829 /* hist = malloc(256); 6830 if(!GetHistory(hist, 256, t->uin)) 6831 { 6832 ascii2ws(ews,hist); 6833 PrepareEditControl(&ec); 6834 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL|ECF_DISABLE_T9,ews,ews->wsbody[0]); 6835 } 6836 mfree(hist); 6837 6838 AddEditControlToEditQend(eq,&ec,ma); */ 6839 lp=t->log; \ 0000003C 909094E5 LDR R9,[R4, #+144] \ 00000040 0080A0E1 MOV R8,R0 \ 00000044 000059E3 CMP R9,#+0 \ 00000048 8F00000A BEQ ??CreateEditChat_1 6840 6841 while(lp) 6842 { 6843 font = ED_H_FONT_SIZE; \ ??CreateEditChat_2: \ 0000004C ........ LDR R0,??DataTable264 ;; ED_H_FONT_SIZE 6844 if ((zc=lp->acked&3)) \ 00000050 ........ LDR R1,??DataTable265 ;; 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 6845 { 6846 if (zc==1) \ 00000068 010050E3 CMP R0,#+1 \ 0000006C 2200001A BNE ??CreateEditChat_4 6847 color=ACK_COLOR; //Зеленый \ 00000070 ........ LDR R0,??DataTable266 ;; ACK_COLOR \ 00000074 1F0000EA B ??CreateEditChat_5 6848 else 6849 color=I_COLOR; 6850 } 6851 else 6852 { 6853 if (lp->ID==0xFFFFFFFF) \ ??CreateEditChat_3: \ 00000078 080099E5 LDR R0,[R9, #+8] \ 0000007C 010070E3 CMN R0,#+1 \ 00000080 1B00001A BNE ??CreateEditChat_6 6854 { 6855 type = lp->type&0x0F; \ 00000084 0C0099E5 LDR R0,[R9, #+12] \ 00000088 0F1000E2 AND R1,R0,#0xF 6856 if(lp->type&0x10) \ 0000008C 100010E3 TST R0,#0x10 \ 00000090 0D00000A BEQ ??CreateEditChat_7 6857 { 6858 color = (type==1)?O_I_COLOR:((type==3)?O_X_COLOR:O_TO_COLOR); \ 00000094 010051E3 CMP R1,#+1 \ 00000098 ........ LDREQ R0,??DataTable267 ;; O_I_COLOR \ 0000009C 0700000A BEQ ??CreateEditChat_8 \ 000000A0 030051E3 CMP R1,#+3 \ 000000A4 0400001A BNE ??CreateEditChat_9 \ 000000A8 ........ LDR R0,??DataTable280 ;; O_X_COLOR \ 000000AC 00B090E5 LDR R11,[R0, #+0] \ 000000B0 ........ LDR R0,??DataTable282 ;; O_ED_X_FONT_SIZE \ ??CreateEditChat_10: \ 000000B4 00A090E5 LDR R10,[R0, #+0] \ 000000B8 0F0000EA B ??CreateEditChat_4 \ ??CreateEditChat_9: \ 000000BC ........ LDR R0,??DataTable270 ;; O_TO_COLOR \ ??CreateEditChat_8: \ 000000C0 00B090E5 LDR R11,[R0, #+0] \ 000000C4 ........ LDR R0,??DataTable271 ;; O_ED_H_FONT_SIZE \ 000000C8 F9FFFFEA B ??CreateEditChat_10 6859 font = (type==3)?O_ED_X_FONT_SIZE:O_ED_H_FONT_SIZE; 6860 } 6861 else 6862 { 6863 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,??DataTable281 ;; X_COLOR \ 000000E0 00B090E5 LDR R11,[R0, #+0] \ 000000E4 ........ LDR R0,??DataTable283 ;; ED_X_FONT_SIZE \ 000000E8 F1FFFFEA B ??CreateEditChat_10 \ ??CreateEditChat_11: \ 000000EC ........ LDR R0,??DataTable274 ;; TO_COLOR \ 000000F0 000000EA B ??CreateEditChat_5 6864 font = (type==3)?ED_X_FONT_SIZE:ED_H_FONT_SIZE; 6865 } 6866 } 6867 else 6868 color=UNACK_COLOR; //????? \ ??CreateEditChat_6: \ 000000F4 ........ LDR R0,??DataTable275 ;; UNACK_COLOR \ ??CreateEditChat_5: \ 000000F8 00B090E5 LDR R11,[R0, #+0] 6869 } 6870 PrepareEditControl(&ec); \ ??CreateEditChat_4: \ 000000FC 10008DE2 ADD R0,SP,#+16 \ 00000100 640100EF SWI +356 6871 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 6872 { 6873 ascii2ws(ews,lp->hdr); \ 00000114 880297E5 LDR R0,[R7, #+648] \ 00000118 101089E2 ADD R1,R9,#+16 \ 0000011C ........ _BLF ascii2ws,??ascii2ws??rA 6874 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 00000120 883297E5 LDR R3,[R7, #+648] \ 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 6875 } 6876 else 6877 { 6878 ConstructEditControl(&ec,ECT_HEADER,ECF_DELSTR,ews,0); \ ??CreateEditChat_12: \ 00000138 0000A0E3 MOV R0,#+0 \ 0000013C 01002DE9 PUSH {R0} \ 00000140 883297E5 LDR R3,[R7, #+648] \ 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 6879 } 6880 PrepareEditCOptions(&ec_options); \ 00000158 0D00A0E1 MOV R0,SP \ 0000015C C80100EF SWI +456 6881 SetPenColorToEditCOptions(&ec_options,color); \ 00000160 0B10A0E1 MOV R1,R11 \ 00000164 0D00A0E1 MOV R0,SP \ 00000168 CC0100EF SWI +460 6882 SetFontToEditCOptions(&ec_options,font); \ 0000016C 0A10A0E1 MOV R1,R10 \ 00000170 0D00A0E1 MOV R0,SP \ 00000174 CA0100EF SWI +458 6883 CopyOptionsToEditControl(&ec,&ec_options); \ 00000178 0D10A0E1 MOV R1,SP \ 0000017C 10008DE2 ADD R0,SP,#+16 \ 00000180 CE0100EF SWI +462 6884 AddEditControlToEditQend(eq,&ec,ma); \ 00000184 0520A0E1 MOV R2,R5 \ 00000188 10108DE2 ADD R1,SP,#+16 \ 0000018C 0800A0E1 MOV R0,R8 \ 00000190 660100EF SWI +358 6885 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 6886 { 6887 ParseAnswer(ews,lp->text); \ 000001A4 880297E5 LDR R0,[R7, #+648] \ 000001A8 601089E2 ADD R1,R9,#+96 \ 000001AC ........ BL ParseAnswer \ 000001B0 060000EA B ??CreateEditChat_15 6888 } 6889 else 6890 { 6891 ParseXStatusText(ews,lp->text,(lp->type&0x10)?O_X_COLOR:X_COLOR); \ ??CreateEditChat_14: \ 000001B4 100010E3 TST R0,#0x10 \ 000001B8 ........ LDRNE R0,??DataTable280 ;; O_X_COLOR \ 000001BC 601089E2 ADD R1,R9,#+96 \ 000001C0 ........ LDREQ R0,??DataTable281 ;; X_COLOR \ 000001C4 002090E5 LDR R2,[R0, #+0] \ 000001C8 880297E5 LDR R0,[R7, #+648] \ 000001CC ........ BL ParseXStatusText 6892 } 6893 PrepareEditControl(&ec); \ ??CreateEditChat_15: \ 000001D0 10008DE2 ADD R0,SP,#+16 \ 000001D4 640100EF SWI +356 6894 ConstructEditControl(&ec, 6895 ECT_NORMAL_TEXT, 6896 ews->wsbody[0] ? ECF_APPEND_EOL|ECF_DISABLE_T9 : ECF_DELSTR, 6897 ews,ews->wsbody[0]); \ 000001D8 883297E5 LDR R3,[R7, #+648] \ 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 6898 PrepareEditCOptions(&ec_options); \ 00000204 04008DE2 ADD R0,SP,#+4 \ 00000208 C80100EF SWI +456 6899 //#ifdef M75 6900 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 6901 { 6902 SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); \ 00000220 100010E3 TST R0,#0x10 \ 00000224 ........ LDRNE R0,??DataTable278 ;; O_ED_FONT_SIZE \ 00000228 ........ LDREQ R0,??DataTable285 ;; ED_FONT_SIZE \ 0000022C 090000EA B ??CreateEditChat_17 6903 } 6904 else 6905 { 6906 SetPenColorToEditCOptions(&ec_options,(lp->type&0x10)?O_X_COLOR:X_COLOR); \ ??CreateEditChat_16: \ 00000230 100010E3 TST R0,#0x10 \ 00000234 ........ LDRNE R0,??DataTable280 ;; O_X_COLOR \ 00000238 ........ LDREQ R0,??DataTable281 ;; X_COLOR \ 0000023C 001090E5 LDR R1,[R0, #+0] \ 00000240 0D00A0E1 MOV R0,SP \ 00000244 CC0100EF SWI +460 6907 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,??DataTable282 ;; O_ED_X_FONT_SIZE \ 00000254 ........ LDREQ R0,??DataTable283 ;; ED_X_FONT_SIZE \ ??CreateEditChat_17: \ 00000258 001090E5 LDR R1,[R0, #+0] \ 0000025C 0D00A0E1 MOV R0,SP \ 00000260 CA0100EF SWI +458 6908 } 6909 //#else 6910 // SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); 6911 //#endif 6912 CopyOptionsToEditControl(&ec,&ec_options); \ 00000264 0D10A0E1 MOV R1,SP \ 00000268 10008DE2 ADD R0,SP,#+16 \ 0000026C CE0100EF SWI +462 6913 AddEditControlToEditQend(eq,&ec,ma); \ 00000270 0520A0E1 MOV R2,R5 \ 00000274 10108DE2 ADD R1,SP,#+16 \ 00000278 0800A0E1 MOV R0,R8 \ 0000027C 660100EF SWI +358 6914 lp=lp->next; \ 00000280 009099E5 LDR R9,[R9, #+0] 6915 } \ 00000284 000059E3 CMP R9,#+0 \ 00000288 6FFFFF1A BNE ??CreateEditChat_2 6916 if (t->isunread) total_unread--; \ ??CreateEditChat_1: \ 0000028C 800094E5 LDR R0,[R4, #+128] 6917 total_unread2=total_unread2-t->unread_msg; 6918 t->unread_msg=0; \ 00000290 0090A0E3 MOV R9,#+0 \ 00000294 000050E3 CMP R0,#+0 \ 00000298 08039715 LDRNE R0,[R7, #+776] \ 0000029C 01004012 SUBNE R0,R0,#+1 \ 000002A0 08038715 STRNE R0,[R7, #+776] \ 000002A4 640297E5 LDR R0,[R7, #+612] \ 000002A8 841094E5 LDR R1,[R4, #+132] \ 000002AC 010040E0 SUB R0,R0,R1 \ 000002B0 640287E5 STR R0,[R7, #+612] \ 000002B4 849084E5 STR R9,[R4, #+132] 6919 t->isunread=0; \ 000002B8 809084E5 STR R9,[R4, #+128] 6920 ChangeContactPos(t); \ 000002BC 0400A0E1 MOV R0,R4 \ 000002C0 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 6921 wsprintf(ews, "-------"); \ 000002C4 880297E5 LDR R0,[R7, #+648] \ 000002C8 4C1086E2 ADD R1,R6,#+76 \ 000002CC 240100EF SWI +292 6922 PrepareEditControl(&ec); \ 000002D0 10008DE2 ADD R0,SP,#+16 \ 000002D4 640100EF SWI +356 6923 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 000002D8 883297E5 LDR R3,[R7, #+648] \ 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 6924 PrepareEditCOptions(&ec_options); \ 000002F8 04008DE2 ADD R0,SP,#+4 \ 000002FC C80100EF SWI +456 6925 SetFontToEditCOptions(&ec_options,ED_FONT_SIZE); \ 00000300 ........ LDR R0,??DataTable285 ;; ED_FONT_SIZE \ 00000304 001090E5 LDR R1,[R0, #+0] \ 00000308 04008DE2 ADD R0,SP,#+4 \ 0000030C CA0100EF SWI +458 6926 CopyOptionsToEditControl(&ec,&ec_options); \ 00000310 04108DE2 ADD R1,SP,#+4 \ 00000314 14008DE2 ADD R0,SP,#+20 \ 00000318 CE0100EF SWI +462 6927 AddEditControlToEditQend(eq,&ec,ma); \ 0000031C 0520A0E1 MOV R2,R5 \ 00000320 14108DE2 ADD R1,SP,#+20 \ 00000324 0800A0E1 MOV R0,R8 \ 00000328 660100EF SWI +358 6928 6929 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 880297E5 LDR R0,[R7, #+648] \ 00000340 ........ BL ParseAnswer \ 00000344 020000EA B ??CreateEditChat_19 6930 else CutWSTR(ews,0); \ ??CreateEditChat_18: \ 00000348 880297E5 LDR R0,[R7, #+648] \ 0000034C 0010A0E3 MOV R1,#+0 \ 00000350 260100EF SWI +294 6931 PrepareEditControl(&ec); \ ??CreateEditChat_19: \ 00000354 10008DE2 ADD R0,SP,#+16 \ 00000358 640100EF SWI +356 6932 // ConstructEditControl(&ec,3,(FIRST_LETTER)?ECF_DEFAULT_BIG_LETTER:0,ews,1024); 6933 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 883297E5 LDR R3,[R7, #+648] \ 00000378 402DA013 MOVNE R2,#+4096 \ 0000037C 0020A003 MOVEQ R2,#+0 \ 00000380 14008DE2 ADD R0,SP,#+20 \ 00000384 650100EF SWI +357 6934 6935 PrepareEditCOptions(&ec_options); \ 00000388 04008DE2 ADD R0,SP,#+4 \ 0000038C C80100EF SWI +456 6936 SetFontToEditCOptions(&ec_options,ED_FONT_SIZE); \ 00000390 ........ LDR R0,??DataTable285 ;; ED_FONT_SIZE \ 00000394 001090E5 LDR R1,[R0, #+0] \ 00000398 04008DE2 ADD R0,SP,#+4 \ 0000039C CA0100EF SWI +458 6937 CopyOptionsToEditControl(&ec,&ec_options); \ 000003A0 04108DE2 ADD R1,SP,#+4 \ 000003A4 14008DE2 ADD R0,SP,#+20 \ 000003A8 CE0100EF SWI +462 6938 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 6939 6940 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 6941 { 6942 FreeXText(t); \ 000003D0 0400A0E1 MOV R0,R4 \ 000003D4 ........ _BLF FreeXText,??FreeXText??rA 6943 t->req_xtext=0; \ 000003D8 AC9084E5 STR R9,[R4, #+172] 6944 RequestXText(t->uin); \ 000003DC 0C0094E5 LDR R0,[R4, #+12] \ 000003E0 ........ BL RequestXText 6945 } 6946 6947 EDCHAT_STRUCT *ed_struct=malloc(sizeof(EDCHAT_STRUCT)); \ ??CreateEditChat_20: \ 000003E4 1400A0E3 MOV R0,#+20 \ 000003E8 140000EF SWI +20 \ 000003EC 0050A0E1 MOV R5,R0 6948 ed_struct->ed_contact=t; \ 000003F0 004085E5 STR R4,[R5, #+0] 6949 ed_struct->ed_answer=edchat_toitem; \ 000003F4 08A085E5 STR R10,[R5, #+8] 6950 ed_struct->requested_decrement_total_unread=0; \ 000003F8 0C9085E5 STR R9,[R5, #+12] 6951 t->req_add=0; \ 000003FC 889084E5 STR R9,[R4, #+136] 6952 t->last_log=NULL; \ 00000400 989084E5 STR R9,[R4, #+152] 6953 6954 // int scr_w=ScreenW(); 6955 // int scr_h=ScreenH(); 6956 // int head_h=HeaderH(); 6957 6958 patch_header(&edchat_hdr); \ 00000404 380086E2 ADD R0,R6,#+56 \ 00000408 ........ _BLF patch_header,??patch_header??rA 6959 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] 6960 // edchat_desc.font=ED_FONT_SIZE; 6961 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 180387E5 STR R0,[R7, #+792] 6962 } \ 0000045C 40D08DE2 ADD SP,SP,#+64 \ 00000460 F08FBDE8 POP {R4-R11,PC} ;; return \ ??CreateEditChat_0: \ 00000464 ........ DC32 edchat_desc \ 00000468 ........ DC32 FIRST_LETTER 6963 6964 //----------------------------------------------------------------------------- 6965 6966 #define EC_MNU_MAX 9 6967 \ In segment CODE, align 4, keep-with-next 6968 void Quote(GUI *data) 6969 { \ Quote: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 84D04DE2 SUB SP,SP,#+132 6970 int q_n; 6971 EDITCONTROL ec, ec_hdr; 6972 EDITCONTROL ec_ed; 6973 WSHDR *ed_ws; 6974 WSHDR *ws; 6975 6976 EDCHAT_STRUCT *ed_struct; 6977 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 6978 6979 q_n=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 820100EF SWI +386 \ 00000018 0050A0E1 MOV R5,R0 6980 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 6981 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 6982 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 6983 6984 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 6985 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 6986 { 6987 wstrcpy(ed_ws,ec_hdr.pWS); \ 00000070 80109DE5 LDR R1,[SP, #+128] \ 00000074 0500A0E1 MOV R0,R5 \ 00000078 1F0100EF SWI +287 6988 wsAppendChar(ed_ws,'\r'); \ 0000007C 0D10A0E3 MOV R1,#+13 \ 00000080 0500A0E1 MOV R0,R5 \ 00000084 1C0000EF SWI +28 \ 00000088 020000EA B ??Quote_1 6989 } 6990 else 6991 CutWSTR(ed_ws,0); \ ??Quote_0: \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 260100EF SWI +294 6992 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 6993 { 6994 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 6995 } 6996 else 6997 { 6998 wstrcat(ed_ws,ec.pWS); \ ??Quote_2: \ 000000B8 54109DE5 LDR R1,[SP, #+84] \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 210100EF SWI +289 6999 } 7000 int ed_pos=0; \ ??Quote_3: \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 FF60A0E3 MOV R6,#+255 \ 000000CC FF6C86E3 ORR R6,R6,#0xFF00 7001 do 7002 { 7003 ed_pos++; \ ??Quote_4: \ 000000D0 017080E2 ADD R7,R0,#+1 7004 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 7005 wsInsertChar(ed_ws,' ',ed_pos); \ 000000E8 0720A0E1 MOV R2,R7 \ 000000EC 2010A0E3 MOV R1,#+32 \ 000000F0 0500A0E1 MOV R0,R5 \ 000000F4 1D0000EF SWI +29 7006 } 7007 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 7008 wsAppendChar(ed_ws,'\r'); \ 00000110 0D10A0E3 MOV R1,#+13 \ 00000114 0500A0E1 MOV R0,R5 \ 00000118 1C0000EF SWI +28 7009 wsAppendChar(ed_ws,'\r'); \ 0000011C 0D10A0E3 MOV R1,#+13 \ 00000120 0500A0E1 MOV R0,R5 \ 00000124 1C0000EF SWI +28 7010 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 7011 wstrcpy(ws,ec_ed.pWS); \ 00000144 28109DE5 LDR R1,[SP, #+40] \ 00000148 0060A0E1 MOV R6,R0 \ 0000014C 1F0100EF SWI +287 7012 wstrcat(ws,ed_ws); \ 00000150 0510A0E1 MOV R1,R5 \ 00000154 0600A0E1 MOV R0,R6 \ 00000158 210100EF SWI +289 7013 FreeWS(ed_ws); \ 0000015C 0500A0E1 MOV R0,R5 \ 00000160 290100EF SWI +297 7014 CutWSTR(ws,ec_ed.maxlen); \ 00000164 F811DDE1 LDRSH R1,[SP, #+24] \ 00000168 0600A0E1 MOV R0,R6 \ 0000016C 260100EF SWI +294 7015 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 7016 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 0000017C 040094E5 LDR R0,[R4, #+4] \ 00000180 0610A0E1 MOV R1,R6 \ 00000184 810100EF SWI +385 7017 FreeWS(ws); \ 00000188 0600A0E1 MOV R0,R6 \ 0000018C 290100EF SWI +297 7018 GeneralFuncF1(1); \ 00000190 0100A0E3 MOV R0,#+1 \ 00000194 3B0100EF SWI +315 7019 } \ 00000198 84D08DE2 ADD SP,SP,#+132 \ 0000019C F080BDE8 POP {R4-R7,PC} ;; return 7020 \ In segment CODE, align 4, keep-with-next 7021 void Quote2(GUI *data)//цитирование без фокуса на ответ 7022 { \ Quote2: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 84D04DE2 SUB SP,SP,#+132 7023 int q_n; 7024 EDITCONTROL ec, ec_hdr; 7025 EDITCONTROL ec_ed; 7026 WSHDR *ed_ws; 7027 WSHDR *ws; 7028 7029 EDCHAT_STRUCT *ed_struct; 7030 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 7031 7032 q_n=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 820100EF SWI +386 \ 00000018 0050A0E1 MOV R5,R0 7033 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 7034 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 7035 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 7036 7037 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 7038 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 7039 { 7040 wstrcpy(ed_ws,ec_hdr.pWS); \ 00000070 80109DE5 LDR R1,[SP, #+128] \ 00000074 0500A0E1 MOV R0,R5 \ 00000078 1F0100EF SWI +287 7041 wsAppendChar(ed_ws,'\r'); \ 0000007C 0D10A0E3 MOV R1,#+13 \ 00000080 0500A0E1 MOV R0,R5 \ 00000084 1C0000EF SWI +28 \ 00000088 020000EA B ??Quote2_1 7042 } 7043 else 7044 CutWSTR(ed_ws,0); \ ??Quote2_0: \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 260100EF SWI +294 7045 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 7046 { 7047 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 7048 } 7049 else 7050 { 7051 wstrcat(ed_ws,ec.pWS); \ ??Quote2_2: \ 000000B8 54109DE5 LDR R1,[SP, #+84] \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 210100EF SWI +289 7052 } 7053 int ed_pos=0; \ ??Quote2_3: \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 FF60A0E3 MOV R6,#+255 \ 000000CC FF6C86E3 ORR R6,R6,#0xFF00 7054 do 7055 { 7056 ed_pos++; \ ??Quote2_4: \ 000000D0 017080E2 ADD R7,R0,#+1 7057 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 7058 wsInsertChar(ed_ws,' ',ed_pos); \ 000000E8 0720A0E1 MOV R2,R7 \ 000000EC 2010A0E3 MOV R1,#+32 \ 000000F0 0500A0E1 MOV R0,R5 \ 000000F4 1D0000EF SWI +29 7059 } 7060 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 7061 wsAppendChar(ed_ws,'\r'); \ 00000110 0D10A0E3 MOV R1,#+13 \ 00000114 0500A0E1 MOV R0,R5 \ 00000118 1C0000EF SWI +28 7062 wsAppendChar(ed_ws,'\r'); \ 0000011C 0D10A0E3 MOV R1,#+13 \ 00000120 0500A0E1 MOV R0,R5 \ 00000124 1C0000EF SWI +28 7063 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 7064 wstrcpy(ws,ec_ed.pWS); \ 00000144 28109DE5 LDR R1,[SP, #+40] \ 00000148 0060A0E1 MOV R6,R0 \ 0000014C 1F0100EF SWI +287 7065 wstrcat(ws,ed_ws); \ 00000150 0510A0E1 MOV R1,R5 \ 00000154 0600A0E1 MOV R0,R6 \ 00000158 210100EF SWI +289 7066 FreeWS(ed_ws); \ 0000015C 0500A0E1 MOV R0,R5 \ 00000160 290100EF SWI +297 7067 CutWSTR(ws,ec_ed.maxlen); \ 00000164 F811DDE1 LDRSH R1,[SP, #+24] \ 00000168 0600A0E1 MOV R0,R6 \ 0000016C 260100EF SWI +294 7068 int ii=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000170 040094E5 LDR R0,[R4, #+4] \ 00000174 820100EF SWI +386 7069 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 7070 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 00000188 040094E5 LDR R0,[R4, #+4] \ 0000018C 0610A0E1 MOV R1,R6 \ 00000190 810100EF SWI +385 7071 EDIT_SetFocus(ed_struct->ed_chatgui,ii); \ 00000194 040094E5 LDR R0,[R4, #+4] \ 00000198 0510A0E1 MOV R1,R5 \ 0000019C 9B0100EF SWI +411 7072 FreeWS(ws); \ 000001A0 0600A0E1 MOV R0,R6 \ 000001A4 290100EF SWI +297 7073 GeneralFuncF1(1); \ 000001A8 0100A0E3 MOV R0,#+1 \ 000001AC 3B0100EF SWI +315 7074 } \ 000001B0 84D08DE2 ADD SP,SP,#+132 \ 000001B4 F080BDE8 POP {R4-R7,PC} ;; return 7075 7076 \ In segment CODE, align 4, keep-with-next 7077 void GetShortInfo(GUI *data) 7078 { \ GetShortInfo: \ 00000000 70402DE9 PUSH {R4-R6,LR} 7079 EDCHAT_STRUCT *ed_struct; 7080 ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 \ 00000008 0040A0E1 MOV R4,R0 7081 7082 TPKT *p; 7083 CLIST *t; 7084 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,??DataTable293 ;; S_ICONS + 740 \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 030050E3 CMP R0,#+3 \ 00000024 1B00001A BNE ??GetShortInfo_0 7085 { 7086 p=malloc(sizeof(PKT)); \ 00000028 0800A0E3 MOV R0,#+8 \ 0000002C 140000EF SWI +20 7087 p->pkt.uin=t->uin; 7088 p->pkt.type=T_REQINFOSHORT; 7089 p->pkt.data_len=0; 7090 AddStringToLog(t, 0x01, "Request info...", I_str,0xFFFFFFFF,1); \ 00000030 ........ LDR R3,??DataTable291 ;; 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 7091 AddMsgToChat(ed_struct->ed_chatgui); \ 00000070 040094E5 LDR R0,[R4, #+4] \ 00000074 ........ BL AddMsgToChat 7092 RecountMenu(t,1); \ 00000078 0110A0E3 MOV R1,#+1 \ 0000007C 0500A0E1 MOV R0,R5 \ 00000080 ........ BL RecountMenu 7093 SUBPROC((void *)SendAnswer,0,p); \ 00000084 ........ LDR R0,??DataTable295 ;; SendAnswer \ 00000088 0620A0E1 MOV R2,R6 \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 710100EF SWI +369 \ 00000094 08D08DE2 ADD SP,SP,#+8 7094 } 7095 GeneralFuncF1(1); \ ??GetShortInfo_0: \ 00000098 0100A0E3 MOV R0,#+1 \ 0000009C 3B0100EF SWI +315 7096 } \ 000000A0 7080BDE8 POP {R4-R6,PC} ;; return \ ??GetShortInfo_1: \ 000000A4 ........ DC32 `?` 7097 7098 void AskNickAndAddContact(EDCHAT_STRUCT *); \ In segment CODE, align 4, keep-with-next 7099 void AddCurContact(GUI *data) 7100 { \ AddCurContact: \ 00000000 00402DE9 PUSH {LR} 7101 EDCHAT_STRUCT *ed_struct; 7102 ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 7103 7104 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,??DataTable293 ;; S_ICONS + 740 \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 030051E3 CMP R1,#+3 \ 00000020 0000001A BNE ??AddCurContact_0 \ 00000024 ........ _BLF CreateAddContactGrpDialog,??CreateAddContactGrpDialog??rA 7105 GeneralFuncF1(1); \ ??AddCurContact_0: \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 3B0100EF SWI +315 7106 } \ 00000030 0080BDE8 POP {PC} ;; return 7107 \ In segment CODE, align 4, keep-with-next 7108 void SendAuthReq(GUI *data) 7109 { \ SendAuthReq: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 14D04DE2 SUB SP,SP,#+20 7110 EDCHAT_STRUCT *ed_struct; 7111 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 7112 7113 TPKT *p; 7114 CLIST *t; 7115 int l; 7116 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,??DataTable293 ;; S_ICONS + 740 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 030050E3 CMP R0,#+3 \ 00000038 2000001A BNE ??SendAuthReq_1 7118 { 7119 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 7120 p->pkt.uin=t->uin; \ 00000054 0C0095E5 LDR R0,[R5, #+12] 7121 p->pkt.type=T_AUTHREQ; 7122 p->pkt.data_len=l; 7123 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 7124 AddStringToLog(t,0x01,p->data,I_str,0xFFFFFFFF,1); \ 00000074 ........ LDR R3,??DataTable291 ;; 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 7125 AddMsgToChat(ed_struct->ed_chatgui); \ 00000098 040094E5 LDR R0,[R4, #+4] \ 0000009C ........ BL AddMsgToChat 7126 RecountMenu(t,1); \ 000000A0 0110A0E3 MOV R1,#+1 \ 000000A4 0500A0E1 MOV R0,R5 \ 000000A8 ........ BL RecountMenu 7127 SUBPROC((void *)SendAnswer,0,p); \ 000000AC ........ LDR R0,??DataTable295 ;; SendAnswer \ 000000B0 0720A0E1 MOV R2,R7 \ 000000B4 0010A0E3 MOV R1,#+0 \ 000000B8 710100EF SWI +369 \ 000000BC 08D08DE2 ADD SP,SP,#+8 7128 } 7129 GeneralFuncF1(1); \ ??SendAuthReq_1: \ 000000C0 0100A0E3 MOV R0,#+1 \ 000000C4 3B0100EF SWI +315 7130 } \ 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,??DataTable293 ;; S_ICONS + 740 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 030050E3 CMP R0,#+3 \ 00000038 2000001A BNE ??SendAuthGrant_1 7142 { 7143 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 7144 p->pkt.uin=t->uin; \ 00000054 0C0095E5 LDR R0,[R5, #+12] 7145 p->pkt.type=T_AUTHGRANT; 7146 p->pkt.data_len=l; 7147 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 7148 AddStringToLog(t,0x01,p->data,I_str,0xFFFFFFFF,1); \ 00000074 ........ LDR R3,??DataTable294 ;; 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 7149 AddMsgToChat(ed_struct->ed_chatgui); \ 00000098 040094E5 LDR R0,[R4, #+4] \ 0000009C ........ BL AddMsgToChat 7150 RecountMenu(t,1); \ 000000A0 0110A0E3 MOV R1,#+1 \ 000000A4 0500A0E1 MOV R0,R5 \ 000000A8 ........ BL RecountMenu 7151 SUBPROC((void *)SendAnswer,0,p); \ 000000AC ........ LDR R0,??DataTable295 ;; SendAnswer \ 000000B0 0720A0E1 MOV R2,R7 \ 000000B4 0010A0E3 MOV R1,#+0 \ 000000B8 710100EF SWI +369 \ 000000BC 08D08DE2 ADD SP,SP,#+8 7152 } 7153 GeneralFuncF1(1); \ ??SendAuthGrant_1: \ 000000C0 0100A0E3 MOV R0,#+1 \ 000000C4 3B0100EF SWI +315 7154 } \ 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 7164 { 7165 if(HISTORY_SAVE_TYPE) \ 00000024 ........ LDR R1,??DataTable296 ;; 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 7166 { 7167 if(HISTORY_TYPE) \ 00000050 01002DE9 PUSH {R0} \ 00000054 00005CE3 CMP R12,#+0 \ 00000058 0500000A BEQ ??OpenLogfile_3 7168 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 7169 else 7170 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 7171 } 7172 else 7173 { 7174 if(HISTORY_TYPE) \ ??OpenLogfile_2: \ 0000008C 00005CE3 CMP R12,#+0 \ 00000090 0200000A BEQ ??OpenLogfile_6 7175 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 7176 else 7177 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 7178 } 7179 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 7180 } 7181 FreeWS(ws); \ ??OpenLogfile_0: \ 000000C0 0400A0E1 MOV R0,R4 \ 000000C4 290100EF SWI +297 7182 GeneralFuncF1(1); \ 000000C8 0100A0E3 MOV R0,#+1 \ 000000CC 3B0100EF SWI +315 7183 } \ 000000D0 3080BDE8 POP {R4,R5,PC} ;; return \ ??OpenLogfile_1: \ 000000D4 ........ DC32 HISTORY_SAVE_TYPE \ 000000D8 ........ DC32 HISTORY_TYPE \ 000000DC ........ DC32 `?` \ 000000E0 ........ DC32 HIST_PATH 7184 \ In segment CODE, align 4, keep-with-next 7185 void ClearLog(GUI *data/*,void *dummy*/) 7186 { \ ClearLog: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 7187 EDITCONTROL ec; 7188 EDCHAT_STRUCT *ed_struct; 7189 WSHDR *ws; 7190 CLIST *t; 7191 7192 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 7193 7194 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 7195 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 7196 { 7197 ws=AllocWS(1); \ 00000030 0100A0E3 MOV R0,#+1 \ 00000034 250100EF SWI +293 \ 00000038 0050A0E1 MOV R5,R0 7198 CutWSTR(ws,0); \ 0000003C 0010A0E3 MOV R1,#+0 \ 00000040 260100EF SWI +294 7199 7200 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 7201 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 00000050 040094E5 LDR R0,[R4, #+4] \ 00000054 0510A0E1 MOV R1,R5 \ 00000058 810100EF SWI +385 7202 7203 FreeWS(ws); \ 0000005C 0500A0E1 MOV R0,R5 \ 00000060 290100EF SWI +297 7204 GeneralFuncF1(1); \ 00000064 1D0000EA B ??ClearLog_1 7205 } 7206 else 7207 { 7208 7209 if ((t=ed_struct->ed_contact)) \ ??ClearLog_0: \ 00000068 005094E5 LDR R5,[R4, #+0] \ 0000006C 000055E3 CMP R5,#+0 \ 00000070 1C00000A BEQ ??ClearLog_2 7210 { 7211 if (t->log) \ 00000074 900095E5 LDR R0,[R5, #+144] \ 00000078 0060A0E3 MOV R6,#+0 \ 0000007C 000050E3 CMP R0,#+0 \ 00000080 1200000A BEQ ??ClearLog_3 7212 { 7213 FreeLOGQ(&t->log); \ 00000084 900085E2 ADD R0,R5,#+144 \ 00000088 ........ BL FreeLOGQ 7214 t->msg_count=0; \ 0000008C A06085E5 STR R6,[R5, #+160] 7215 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 7216 { 7217 while(ed_struct->ed_answer!=2) 7218 { 7219 EDIT_RemoveEditControl(ed_struct->ed_chatgui,1); \ ??ClearLog_5: \ 000000AC 040094E5 LDR R0,[R4, #+4] \ 000000B0 0110A0E3 MOV R1,#+1 \ 000000B4 D10100EF SWI +465 7220 ed_struct->ed_answer--; \ 000000B8 080094E5 LDR R0,[R4, #+8] \ 000000BC 010040E2 SUB R0,R0,#+1 \ 000000C0 080084E5 STR R0,[R4, #+8] 7221 } \ ??ClearLog_4: \ 000000C4 080094E5 LDR R0,[R4, #+8] \ 000000C8 020050E3 CMP R0,#+2 \ 000000CC F6FFFF1A BNE ??ClearLog_5 7222 } 7223 } 7224 t->isactive=0; //by BoBa 18.06.07 \ ??ClearLog_3: \ 000000D0 9C6085E5 STR R6,[R5, #+156] 7225 RecountMenu(t,1); \ 000000D4 0110A0E3 MOV R1,#+1 \ 000000D8 0500A0E1 MOV R0,R5 \ 000000DC ........ BL RecountMenu 7226 GeneralFuncF1(1); \ ??ClearLog_1: \ 000000E0 0100A0E3 MOV R0,#+1 \ 000000E4 3B0100EF SWI +315 7227 } 7228 } 7229 } \ ??ClearLog_2: \ 000000E8 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 000000EC 7080BDE8 POP {R4-R6,PC} ;; return 7230 \ In segment CODE, align 4, keep-with-next 7231 void ecmenu_ghook(void *data, int cmd) 7232 { \ ecmenu_ghook: \ 00000000 00402DE9 PUSH {LR} 7233 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 7234 { 7235 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 7236 } 7237 } \ 00000010 0080BDE8 POP {PC} ;; return 7238 \ In segment DATA_C, align 4, align-sorted 7239 static const MENUITEM_DESC ecmenu_ITEMS[EC_MNU_MAX]= \ ecmenu_ITEMS: \ 00000000 00000000.... DC32 0H, `?` \ MAINCSM: \ 00000074 DS8 72 \ 000000BC REQUIRE `?` \ gipc: \ 000000BC DS8 12 \ 000000C8 REQUIRE `?` \ tmr_gipc: \ 000000C8 DS8 12 \ 000000D4 REQUIRE `?` \ def_set: \ 000000D4 DS8 352 \ 00000234 REQUIRE `?` \ main_d: \ 00000234 DS8 4 \ 00000238 REQUIRE `?` \ align: \ 00000238 DS8 4 \ 0000023C REQUIRE `?` \ canvasdata: \ 0000023C DS8 4 \ 00000240 REQUIRE `?` \ paused_height: \ 00000240 DS8 4 \ 00000244 REQUIRE `?` \ wsBuffer: \ 00000244 DS8 4 \ 00000248 REQUIRE `?` \ uins: \ 00000248 DS8 4 \ 0000024C REQUIRE `?` \ saver_on: \ 0000024C DS8 4 \ 00000250 REQUIRE `?` \ Is_PING_On: \ 00000250 DS8 4 \ 00000254 REQUIRE `?` \ Is_SMARTCPU_On: \ 00000254 DS8 4 \ 00000258 REQUIRE `?` \ Is_INC_On: \ 00000258 DS8 4 \ 0000025C REQUIRE `?` \ Is_ILU_On: \ 0000025C DS8 4 \ 00000260 REQUIRE `?` \ Is_Double_Vibra_On: \ 00000260 DS8 4 \ 00000264 REQUIRE `?` \ total_unread2: \ 00000264 DS8 4 \ 00000268 REQUIRE `?` \ maincsm_id: \ 00000268 DS8 4 \ 0000026C REQUIRE `?` \ maingui_id: \ 0000026C DS8 4 \ 00000270 REQUIRE `?` \ SENDMSGCOUNT: \ 00000270 DS8 4 \ 00000274 REQUIRE `?` \ IsActiveUp: \ 00000274 DS8 4 \ 00000278 REQUIRE `?` \ Is_Vibra_Enabled: \ 00000278 DS8 4 \ 0000027C REQUIRE `?` \ Is_Id3tag_Enabled: \ 0000027C DS8 4 \ 00000280 REQUIRE `?` \ CurrentStatus: \ 00000280 DS8 4 \ 00000284 REQUIRE `?` \ CurrentXStatus: \ 00000284 DS8 4 \ 00000288 REQUIRE `?` \ ews: \ 00000288 DS8 4 \ 0000028C REQUIRE `?` \ scrsTime: \ 0000028C DS8 4 \ 00000290 REQUIRE `?` \ msg_away_timer: \ 00000290 DS8 4 \ 00000294 REQUIRE `?` \ away_m: \ 00000294 DS8 4 \ 00000298 REQUIRE `?` \ status_rem: \ 00000298 DS8 4 \ 0000029C REQUIRE `?` \ change_back_status: \ 0000029C DS8 4 \ 000002A0 REQUIRE `?` \ Show_XTX: \ 000002A0 DS8 4 \ 000002A4 REQUIRE `?` \ Is_UPTIME_On: \ 000002A4 DS8 4 \ 000002A8 REQUIRE `?` \ uptimeHour: \ 000002A8 DS8 4 \ 000002AC REQUIRE `?` \ uptimeMin: \ 000002AC DS8 4 \ 000002B0 REQUIRE `?` \ uptimeSec: \ 000002B0 DS8 4 \ 000002B4 REQUIRE `?` \ tracktimer: \ 000002B4 DS8 4 \ 000002B8 REQUIRE `?` \ input_awaymsg_id: \ 000002B8 DS8 4 \ 000002BC REQUIRE `?` \ silenthide: \ 000002BC DS8 4 \ 000002C0 REQUIRE `?` \ disautorecconect: \ 000002C0 DS8 4 \ 000002C4 REQUIRE `?` \ Is_Sounds_Enabled: \ 000002C4 DS8 4 \ 000002C8 REQUIRE `?` \ Is_Show_Offline: \ 000002C8 DS8 4 \ 000002CC REQUIRE `?` \ Is_Show_Groups: \ 000002CC DS8 4 \ 000002D0 REQUIRE `?` \ CurrentPrivateStatus: \ 000002D0 DS8 4 \ 000002D4 REQUIRE `?` \ vibra_count: \ 000002D4 DS8 4 \ 000002D8 REQUIRE `?` \ templates_chars: \ 000002D8 DS8 4 \ 000002DC REQUIRE `?` \ templates_lines: \ 000002DC DS8 4 \ 000002E0 REQUIRE `?` \ RXstate: \ 000002E0 DS8 4 \ 000002E4 REQUIRE `?` \ connect_state: \ 000002E4 DS8 4 \ 000002E8 REQUIRE `?` \ sock: \ 000002E8 DS8 4 \ 000002EC REQUIRE `?` \ TOTALRECEIVED: \ 000002EC DS8 4 \ 000002F0 REQUIRE `?` \ TOTALSENDED: \ 000002F0 DS8 4 \ 000002F4 REQUIRE `?` \ ALLTOTALRECEIVED: \ 000002F4 DS8 4 \ 000002F8 REQUIRE `?` \ ALLTOTALSENDED: \ 000002F8 DS8 4 \ 000002FC REQUIRE `?` \ sendq_l: \ 000002FC DS8 4 \ 00000300 REQUIRE `?` \ sendq_p: \ 00000300 DS8 4 \ 00000304 REQUIRE `?` \ is_gprs_online: \ 00000304 DS8 4 \ 00000308 REQUIRE `?` \ total_unread: \ 00000308 DS8 4 \ 0000030C REQUIRE `?` \ cltop: \ 0000030C DS8 4 \ 00000310 REQUIRE `?` \ GROUP_CACHE: \ 00000310 DS8 4 \ 00000314 REQUIRE `?` \ contactlist_menu_id: \ 00000314 DS8 4 \ 00000318 REQUIRE `?` \ edchat_id: \ 00000318 DS8 4 \ 0000031C REQUIRE `?` \ 0000031C DS8 4 \ 00000320 REQUIRE `?` \ tenseconds_to_ping: \ 00000320 DS8 4 \ 00000324 REQUIRE `?` \ kopa_online: \ 00000324 DS8 4 \ 00000328 REQUIRE `?` \ kopa_kontaktu: \ 00000328 DS8 4 \ 0000032C REQUIRE `?` \ gui_methods2: \ 0000032C DS8 96 \ 0000038C REQUIRE `?` \ old_redraw: \ 0000038C DS8 4 \ 00000390 REQUIRE `?` \ 00000390 DS8 4 \ 00000394 REQUIRE `?` \ 00000394 DS8 4 \ 00000398 REQUIRE `?` \ DNR_ID: \ 00000398 DS8 4 \ 0000039C REQUIRE `?` \ DNR_TRIES: \ 0000039C DS8 4 \ 000003A0 REQUIRE `?` \ host_counter: \ 000003A0 DS8 4 \ 000003A4 REQUIRE `?` \ ping_time: \ 000003A4 DS8 4 \ 000003A8 REQUIRE `?` \ main_msg_timer2: \ 000003A8 DS8 4 \ 000003AC REQUIRE `?` \ NEW_MSG: \ 000003AC DS8 4 \ 000003B0 REQUIRE `?` \ time_to_stop_t9: \ 000003B0 DS8 4 \ 000003B4 REQUIRE `?` \ comanda: \ 000003B4 DS8 4 \ 000003B8 REQUIRE `?` \ INC_show: \ 000003B8 DS8 4 \ 000003BC REQUIRE `?` \ INC_show2: \ 000003BC DS8 4 \ 000003C0 REQUIRE `?` \ old_ed_redraw: \ 000003C0 DS8 4 \ 000003C4 REQUIRE `?` \ 000003C4 DS8 64 \ 00000404 REQUIRE `?` \ elf_path: \ 00000404 DS8 256 \ 00000504 REQUIRE `?` \ ContactT9Key: \ 00000504 DS8 32 \ 00000524 REQUIRE `?` \ talk_sound: \ 00000524 DS8 128 \ 000005A4 REQUIRE `?` \ unread_msg_info: \ 000005A4 DS8 64 \ 000005E4 REQUIRE `?` \ last_msg_buffer: \ 000005E4 DS8 4096 \ 000015E4 REQUIRE `?` \ ping_tmr: \ 000015E4 DS8 16 \ 000015F4 REQUIRE `?` \ PINGO: \ 000015F4 DS8 256 \ 000016F4 REQUIRE `?` \ scrsTmr: \ 000016F4 DS8 16 \ 00001704 REQUIRE `?` \ away_msg: \ 00001704 DS8 264 \ 0000180C REQUIRE `?` \ away_msg_time: \ 0000180C DS8 64 \ 0000184C REQUIRE `?` \ away_msg_time_dace: \ 0000184C DS8 16 \ 0000185C REQUIRE `?` \ tim_zone: \ 0000185C DS8 16 \ 0000186C REQUIRE `?` \ away_tmr: \ 0000186C DS8 16 \ 0000187C REQUIRE `?` \ autoChangeStatus: \ 0000187C DS8 16 \ 0000188C REQUIRE `?` \ remind_tmr: \ 0000188C DS8 16 \ 0000189C REQUIRE `?` \ uptime_tmr: \ 0000189C DS8 16 \ 000018AC REQUIRE `?` \ tracktmr: \ 000018AC DS8 16 \ 000018BC REQUIRE `?` \ onlineTime: \ 000018BC DS8 128 \ 0000193C REQUIRE `?` \ logmsg: \ 0000193C DS8 256 \ 00001A3C REQUIRE `?` \ tmr_illumination: \ 00001A3C DS8 16 \ 00001A4C REQUIRE `?` \ tmr_vibra: \ 00001A4C DS8 16 \ 00001A5C REQUIRE `?` \ reconnect_tmr: \ 00001A5C DS8 16 \ 00001A6C REQUIRE `?` \ tmr_active: \ 00001A6C DS8 16 \ 00001A7C REQUIRE `?` \ clm_hdr_text: \ 00001A7C DS8 64 \ 00001ABC REQUIRE `?` \ clmenu_sk_r: \ 00001ABC DS8 16 \ 00001ACC REQUIRE `?` \ status: \ 00001ACC DS8 64 \ 00001B0C REQUIRE `?` \ prozr: \ 00001B0C DS8 4 \ 00001B10 REQUIRE `?` \ hostbuf2: \ 00001B10 DS8 128 \ 00001B90 REQUIRE `?` \ hostname: \ 00001B90 DS8 128 \ 00001C10 REQUIRE `?` \ I_UIN: \ 00001C10 DS8 12 \ 00001C1C REQUIRE `?` \ a_txt: \ 00001C1C DS8 48 \ 00001C4C REQUIRE `?` \ s_txt: \ 00001C4C DS8 48 \ 00001C7C REQUIRE `?` \ d_txt: \ 00001C7C DS8 48 \ 00001CAC REQUIRE `?` \ f_txt: \ 00001CAC DS8 48 \ 00001CDC REQUIRE `?` \ g_txt: \ 00001CDC DS8 48 \ 00001D0C REQUIRE `?` \ develop: \ 00001D0C DS8 16 \ 00001D1C REQUIRE `?` \ requests1: \ 00001D1C DS8 24 \ 00001D34 REQUIRE `?` \ requests2: \ 00001D34 DS8 20 \ 00001D48 REQUIRE `?` \ requests3: \ 00001D48 DS8 24 \ 00001D60 REQUIRE `?` \ requests4: \ 00001D60 DS8 20 \ 00001D74 REQUIRE `?` \ requests6: \ 00001D74 DS8 24 \ 00001D8C REQUIRE `?` \ mod_info: \ 00001D8C DS8 264 \ 00001E94 REQUIRE `?` \ show_nick: \ 00001E94 DS8 32 \ 00001EB4 REQUIRE `?` \ onContact: \ 00001EB4 DS8 64 \ 00001EF4 REQUIRE `?` \ incs2: \ 00001EF4 DS8 16 \ 00001F04 REQUIRE `?` 7254 { 7255 Quote, 7256 Quote2, 7257 AddSmile, 7258 GetShortInfo, 7259 AddCurContact, 7260 SendAuthReq, 7261 SendAuthGrant, 7262 OpenLogfile, 7263 ClearLog, 7264 }; 7265 7266 char ecm_contactname[64]; \ ecm_contactname: \ 00001F04 DS8 64 \ 00001F44 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 \ 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 `?` 7267 \ In segment DATA_C, align 4, align-sorted 7268 static const HEADER_DESC ecmenu_HDR={0,0,NULL,NULL,NULL,(int)ecm_contactname,LGP_NULL}; \ ecmenu_HDR: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 00000000.... DC32 0H, ecm_contactname, 2147483647 \ ....FFFFFF7F \ 00000014 080000000000 DC32 8, 0H, ecmenu_ghook, 0H, menusoftkeys, menu_skt, 0, 0H \ 0000........ \ 00000000.... \ ............ \ 000000000000 \ 0000 \ 00000034 ............ DC32 ecmenu_ITEMS, ecmenu_HNDLS, 9 \ ....09000000 7269 7270 static const MENU_DESC ecmenu_STRUCT= 7271 { 7272 8,NULL,ecmenu_ghook,NULL, 7273 menusoftkeys, 7274 &menu_skt, 7275 0, 7276 NULL, 7277 ecmenu_ITEMS, 7278 ecmenu_HNDLS, 7279 EC_MNU_MAX 7280 }; 7281 \ In segment CODE, align 4, keep-with-next 7282 void ec_menu(EDCHAT_STRUCT *ed_struct) 7283 { \ ec_menu: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 28D04DE2 SUB SP,SP,#+40 \ 00000008 0040A0E1 MOV R4,R0 7284 CLIST *t; 7285 int to_remove[EC_MNU_MAX+1]; 7286 int remove=0; 7287 if ((t=ed_struct->ed_contact)) \ 0000000C 001094E5 LDR R1,[R4, #+0] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 4800000A BEQ ??ec_menu_0 7288 { 7289 if (t->name) \ 00000018 ........ LDR R5,??DataTable297 ;; S_ICONS \ 0000001C 0400A0E3 MOV R0,#+4 \ 00000020 7C0D80E3 ORR R0,R0,#0x1F00 \ 00000024 050080E0 ADD R0,R0,R5 \ 00000028 142091E2 ADDS R2,R1,#+20 \ 0000002C 0300000A BEQ ??ec_menu_1 7290 { 7291 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 7292 } 7293 else 7294 { 7295 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 7296 } 7297 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 7298 { 7299 to_remove[++remove]=0; \ 00000064 0020A0E3 MOV R2,#+0 \ 00000068 04208DE5 STR R2,[SP, #+4] 7300 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 7301 } 7302 else 7303 { 7304 // to_remove[++remove]=1; 7305 to_remove[++remove]=2; \ ??ec_menu_4: \ 0000007C 0160A0E3 MOV R6,#+1 \ 00000080 04108DE5 STR R1,[SP, #+4] 7306 } 7307 7308 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 7309 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] 7310 7311 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 E40295E5 LDR R0,[R5, #+740] \ 000000B0 030050E3 CMP R0,#+3 \ 000000B4 1000000A BEQ ??ec_menu_8 7312 { 7313 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] 7314 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] 7315 to_remove[++remove]=4; \ 000000D4 010080E2 ADD R0,R0,#+1 \ 000000D8 0420A0E3 MOV R2,#+4 \ 000000DC 002181E7 STR R2,[R1, +R0, LSL #+2] 7316 to_remove[++remove]=5; \ 000000E0 010080E2 ADD R0,R0,#+1 \ 000000E4 0520A0E3 MOV R2,#+5 \ 000000E8 002181E7 STR R2,[R1, +R0, LSL #+2] 7317 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] 7318 } 7319 7320 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 7321 to_remove[0]=remove; \ 00000108 00608DE5 STR R6,[SP, #+0] 7322 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 7323 } 7324 } \ ??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 7325 7326 \ In segment CODE, align 4, keep-with-next 7327 void AskNickAndAddContact(EDCHAT_STRUCT *ed_struct) 7328 { 7329 CreateAddContactGrpDialog(ed_struct->ed_contact); \ AskNickAndAddContact: \ 00000000 000090E5 LDR R0,[R0, #+0] \ 00000004 ........ _BF CreateAddContactGrpDialog,??CreateAddContactGrpDialog??rA ;; tailcall 7330 } 7331 \ In segment CODE, align 4, keep-with-next 7332 void AddSmile(GUI *data) 7333 { \ AddSmile: \ 00000000 00402DE9 PUSH {LR} 7334 EDCHAT_STRUCT *ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 7335 CreateSmileSelectGUI(ed_struct); \ 00000008 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA 7336 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 7337 } \ 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 \ ??DataTable6: \ 00000000 ........ DC32 addIconBar \ In segment CODE, align 4, keep-with-next \ ??DataTable7: \ 00000000 ........ DC32 Auto_Status \ In segment CODE, align 4, keep-with-next \ ??DataTable14: \ 00000000 ........ DC32 Remind_Timer2 \ In segment CODE, align 4, keep-with-next \ ??DataTable17: \ 00000000 ........ DC32 GetTags \ In segment CODE, align 4, keep-with-next \ ??DataTable18: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable23: \ 00000000 ........ DC32 showAwayIdle \ In segment CODE, align 4, keep-with-next \ ??DataTable24: \ 00000000 ........ DC32 spaco1 \ In segment CODE, align 4, keep-with-next \ ??DataTable25: \ 00000000 ........ DC32 fonto \ In segment CODE, align 4, keep-with-next \ ??DataTable26: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable28: \ 00000000 ........ DC32 AUTO_ENGADE \ In segment CODE, align 4, keep-with-next \ ??DataTable29: \ 00000000 ........ DC32 awayMsg \ In segment CODE, align 4, keep-with-next \ ??DataTable31: \ 00000000 ........ DC32 ICON_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable32: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable37: \ 00000000 ........ DC32 def_setting \ In segment CODE, align 4, keep-with-next \ ??DataTable38: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable40: \ 00000000 ........ DC32 ind_set_xstatus \ In segment CODE, align 4, keep-with-next \ ??DataTable46: \ 00000000 ........ DC32 vibraPower \ In segment CODE, align 4, keep-with-next \ ??DataTable49: \ 00000000 ........ DC32 VIBR_TYPE \ In segment CODE, align 4, keep-with-next \ ??DataTable55: \ 00000000 ........ DC32 S_ICONS + 780 \ In segment CODE, align 4, keep-with-next \ ??DataTable56: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable57: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable58: \ 00000000 ........ DC32 ICON_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable59: \ 00000000 ........ DC32 fonto \ In segment CODE, align 4, keep-with-next \ ??DataTable61: \ 00000000 ........ DC32 percent_s \ In segment CODE, align 4, keep-with-next \ ??DataTable67: \ 00000000 ........ DC32 TIME_OR_MSG \ In segment CODE, align 4, keep-with-next \ ??DataTable68: \ 00000000 ........ DC32 XStatusesImgList \ In segment CODE, align 4, keep-with-next \ ??DataTable69: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable73: \ 00000000 ........ DC32 icon_array + 8 \ In segment CODE, align 4, keep-with-next \ ??DataTable76: \ 00000000 ........ DC32 icon_array \ In segment CODE, align 4, keep-with-next \ ??DataTable77: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable78: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable81: \ 00000000 ........ DC32 WriteDefSettings \ In segment CODE, align 4, keep-with-next \ ??DataTable82: \ 00000000 ........ DC32 suc_config_name \ In segment CODE, align 4, keep-with-next \ ??DataTable83: \ 00000000 ........ DC32 suc_config_name_mod \ In segment CODE, align 4, keep-with-next \ ??DataTable84: \ 00000000 ........ DC32 janis \ In segment CODE, align 4, keep-with-next \ ??DataTable86: \ 00000000 ........ DC32 S_ICONS + 780 \ In segment CODE, align 4, keep-with-next \ ??DataTable87: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable88: \ 00000000 ........ DC32 isLogStatusChange \ In segment CODE, align 4, keep-with-next \ ??DataTable89: \ 00000000 ........ DC32 total_xstatuses \ In segment CODE, align 4, keep-with-next \ ??DataTable90: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable92: \ 00000000 ........ DC32 percent_s \ In segment CODE, align 4, keep-with-next \ ??DataTable93: \ 00000000 ........ DC32 do_reconnect \ In segment CODE, align 4, keep-with-next \ ??DataTable94: \ 00000000 ........ DC32 RECONNECT_TIME \ In segment CODE, align 4, keep-with-next \ ??DataTable99: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable100: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable101: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable103: \ 00000000 ........ DC32 addIconBar \ In segment CODE, align 4, keep-with-next \ ??DataTable104: \ 00000000 ........ DC32 ignor_list \ In segment CODE, align 4, keep-with-next \ ??DataTable105: \ 00000000 ........ DC32 extended_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable106: \ 00000000 ........ DC32 automsgcount \ In segment CODE, align 4, keep-with-next \ ??DataTable107: \ 00000000 ........ DC32 janis \ In segment CODE, align 4, keep-with-next \ ??DataTable108: \ 00000000 ........ DC32 main_count \ In segment CODE, align 4, keep-with-next \ ??DataTable109: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable110: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable113: \ 00000000 ........ DC32 O_ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable114: \ 00000000 ........ DC32 X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable115: \ 00000000 ........ DC32 O_X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable125: \ 00000000 ........ DC32 O_ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable126: \ 00000000 ........ DC32 ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable127: \ 00000000 ........ DC32 ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable129: \ 00000000 ........ DC32 ACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable130: \ 00000000 ........ DC32 O_TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable131: \ 00000000 ........ DC32 O_I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable132: \ 00000000 ........ DC32 TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable133: \ 00000000 ........ DC32 I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable134: \ 00000000 ........ DC32 UNACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable135: \ 00000000 ........ DC32 O_ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable136: \ 00000000 ........ DC32 ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable142: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable145: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable147: \ 00000000 ........ DC32 CmdMenuHeader \ In segment CODE, align 4, keep-with-next \ ??DataTable148: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable149: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable150: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable152: \ 00000000 ........ DC32 I_str \ In segment CODE, align 4, keep-with-next \ ??DataTable155: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable156: \ 00000000 ........ DC32 main_count \ In segment CODE, align 4, keep-with-next \ ??DataTable157: \ 00000000 ........ DC32 main2_count \ In segment CODE, align 4, keep-with-next \ ??DataTable158: \ 00000000 ........ DC32 ignor_list \ In segment CODE, align 4, keep-with-next \ ??DataTable159: \ 00000000 ........ DC32 automsgcount \ In segment CODE, align 4, keep-with-next \ ??DataTable160: \ 00000000 ........ DC32 awayMsg \ In segment CODE, align 4, keep-with-next \ ??DataTable165: \ 00000000 ........ DC32 PopupFont \ In segment CODE, align 4, keep-with-next \ ??DataTable166: \ 00000000 ........ DC32 NumStatusToIconBar \ In segment CODE, align 4, keep-with-next \ ??DataTable167: \ 00000000 ........ DC32 PopupBGCl \ In segment CODE, align 4, keep-with-next \ ??DataTable169: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable172: \ 00000000 ........ DC32 VIBR_ON_CONNECT \ In segment CODE, align 4, keep-with-next \ ??DataTable173: \ 00000000 ........ DC32 isLogStatusChange \ In segment CODE, align 4, keep-with-next \ ??DataTable174: \ 00000000 ........ DC32 extended_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable175: \ 00000000 ........ DC32 TIME_OR_MSG \ In segment CODE, align 4, keep-with-next \ ??DataTable176: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable177: \ 00000000 ........ DC32 automsgcount \ In segment CODE, align 4, keep-with-next \ ??DataTable178: \ 00000000 ........ DC32 VIBR_TYPE \ In segment CODE, align 4, keep-with-next \ ??DataTable181: \ 00000000 ........ DC32 SHOW_ACTIVE \ In segment CODE, align 4, keep-with-next \ ??DataTable182: \ 00000000 ........ DC32 main_count \ In segment CODE, align 4, keep-with-next \ ??DataTable183: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable186: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable187: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable188: \ 00000000 ........ DC32 total_xstatuses \ In segment CODE, align 4, keep-with-next \ ??DataTable191: \ 00000000 ........ DC32 WriteDefSettings \ In segment CODE, align 4, keep-with-next \ ??DataTable195: \ 00000000 ........ DC32 process_active_timer \ In segment CODE, align 4, keep-with-next \ ??DataTable198: \ 00000000 ........ DC32 my_keyhook \ In segment CODE, align 4, keep-with-next \ ??DataTable199: \ 00000000 ........ DC32 end_socket \ In segment CODE, align 4, keep-with-next \ ??DataTable201: \ 00000000 ........ DC32 ElfKiller \ In segment CODE, align 4, keep-with-next \ ??DataTable203: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable204: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable206: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable212: \ 00000000 ........ DC32 XStatusesImgList \ In segment CODE, align 4, keep-with-next \ ??DataTable213: \ 00000000 ........ DC32 Auto_Status \ In segment CODE, align 4, keep-with-next \ ??DataTable214: \ 00000000 ........ DC32 showAwayIdle \ In segment CODE, align 4, keep-with-next \ ??DataTable215: \ 00000000 ........ DC32 spaco1 \ In segment CODE, align 4, keep-with-next \ ??DataTable217: \ 00000000 ........ DC32 suc_config_name_mod \ In segment CODE, align 4, keep-with-next \ ??DataTable221: \ 00000000 ........ DC32 RECONNECT_TIME \ In segment CODE, align 4, keep-with-next \ ??DataTable222: \ 00000000 ........ DC32 do_reconnect \ In segment CODE, align 4, keep-with-next \ ??DataTable223: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable224: \ 00000000 ........ DC32 VIBR_ON_CONNECT \ In segment CODE, align 4, keep-with-next \ ??DataTable225: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable226: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable228: \ 00000000 ........ DC32 ClearSendQ \ In segment CODE, align 4, keep-with-next \ ??DataTable229: \ 00000000 ........ DC32 NumStatusToIconBar \ In segment CODE, align 4, keep-with-next \ ??DataTable231: \ 00000000 ........ DC32 ShowStatusIcon \ In segment CODE, align 4, keep-with-next \ ??DataTable232: \ 00000000 ........ DC32 show_xstatus \ In segment CODE, align 4, keep-with-next \ ??DataTable236: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable237: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable238: \ 00000000 ........ DC32 suc_config_name \ In segment CODE, align 4, keep-with-next \ ??DataTable239: \ 00000000 ........ DC32 ElfKiller \ In segment CODE, align 4, keep-with-next \ ??DataTable240: \ 00000000 ........ DC32 fontpath \ In segment CODE, align 4, keep-with-next \ ??DataTable241: \ 00000000 ........ DC32 bgrColor \ In segment CODE, align 4, keep-with-next \ ??DataTable242: \ 00000000 ........ DC32 fontColor \ In segment CODE, align 4, keep-with-next \ ??DataTable243: \ 00000000 ........ DC32 addIconBar \ In segment CODE, align 4, keep-with-next \ ??DataTable244: \ 00000000 ........ DC32 fonto \ In segment CODE, align 4, keep-with-next \ ??DataTable245: \ 00000000 ........ DC32 Pinger2 \ In segment CODE, align 4, keep-with-next \ ??DataTable246: \ 00000000 ........ DC32 my_keyhook \ In segment CODE, align 4, keep-with-next \ ??DataTable248: \ 00000000 ........ DC32 S_ICONS + 780 \ In segment CODE, align 4, keep-with-next \ ??DataTable251: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable252: \ 00000000 ........ DC32 end_socket \ In segment CODE, align 4, keep-with-next \ ??DataTable253: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable254: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable256: \ 00000000 ........ DC32 SHOW_ACTIVE \ In segment CODE, align 4, keep-with-next \ ??DataTable259: \ 00000000 ........ DC32 main2_count \ In segment CODE, align 4, keep-with-next \ ??DataTable260: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable262: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable263: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable264: \ 00000000 ........ DC32 ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable265: \ 00000000 ........ DC32 I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable266: \ 00000000 ........ DC32 ACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable267: \ 00000000 ........ DC32 O_I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable270: \ 00000000 ........ DC32 O_TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable271: \ 00000000 ........ DC32 O_ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable274: \ 00000000 ........ DC32 TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable275: \ 00000000 ........ DC32 UNACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable278: \ 00000000 ........ DC32 O_ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable280: \ 00000000 ........ DC32 O_X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable281: \ 00000000 ........ DC32 X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable282: \ 00000000 ........ DC32 O_ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable283: \ 00000000 ........ DC32 ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable285: \ 00000000 ........ DC32 ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable291: \ 00000000 ........ DC32 I_str \ In segment CODE, align 4, keep-with-next \ ??DataTable293: \ 00000000 ........ DC32 S_ICONS + 740 \ In segment CODE, align 4, keep-with-next \ ??DataTable294: \ 00000000 ........ DC32 I_str \ In segment CODE, align 4, keep-with-next \ ??DataTable295: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable296: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable297: \ 00000000 ........ DC32 S_ICONS \ In segment CODE, align 4, keep-with-next \ ??DataTable298: \ 00000000 ........ DC32 GetTags \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000010 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000020 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000030 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000040 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000050 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000060 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 000000000000 \ 0000 \ `?`: \ 00000074 ............ DC32 maincsm_onmessage, maincsm_oncreate, 0, 0, 0, 0, maincsm_onclose \ ....00000000 \ 000000000000 \ 000000000000 \ ........ \ 00000090 2C0000000100 DC32 44, 1, minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ 0000........ \ ........CCCC \ AA5555AA3333 \ 00000000 \ 000000AC 8B00 DC16 139 \ 000000AE 0000 DC8 0, 0 \ 000000B0 49636F6E4261 DC8 "IconBar" \ 7200 \ 000000B8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000BC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 000000C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 000000D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000000F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000104 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000114 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000124 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000134 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000144 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000154 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000164 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000174 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000184 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000194 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000204 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000214 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000224 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000234 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000238 00000000 DC32 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 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000026C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000270 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000274 00000000 DC32 0 \ `?`: \ 00000278 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000027C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000280 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000284 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000288 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000028C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000290 00000000 DC32 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 DC8 0, 0, 0, 0 \ `?`: \ 000002B0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002B4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002B8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002BC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002C0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002C4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002C8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002CC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002D0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002D4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002D8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002DC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002E0 F6FFFFFF DC32 -10 \ `?`: \ 000002E4 00000000 DC32 0 \ `?`: \ 000002E8 FFFFFFFF DC32 -1 \ `?`: \ 000002EC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002F0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002F4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002F8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002FC 00000000 DC32 0 \ `?`: \ 00000300 00000000 DC32 0H \ `?`: \ 00000304 01000000 DC32 1 \ `?`: \ 00000308 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000030C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000310 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000314 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000318 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000031C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000320 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000324 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000328 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000032C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000033C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000034C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000035C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000036C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000037C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 0000038C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000390 01000000 DC32 1 \ `?`: \ 00000394 01000000 DC32 1 \ `?`: \ 00000398 00000000 DC32 0 \ `?`: \ 0000039C 03000000 DC32 3 \ `?`: \ 000003A0 00000000 DC32 0 \ `?`: \ 000003A4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003A8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003AC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003B0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003B4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003B8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003BC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003C0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 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, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017A4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017B4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017C4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017D4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017E4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017F4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001804 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 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 00000064 DC8 0, 0, 0, 100 \ `?`: \ 00001B10 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B20 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B30 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B40 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B50 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B60 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B70 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B80 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001B90 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BA0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BB0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BC0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BD0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BE0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001BF0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C00 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001C10 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 00001C1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001C4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001C7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001CAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CBC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CCC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001CDC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001D0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001D1C 53656E64696E DC8 "Sending online time..." \ 67206F6E6C69 \ 6E652074696D \ 652E2E2E00 \ 00001D33 00 DC8 0 \ `?`: \ 00001D34 53656E64696E DC8 "Sending msg info..." \ 67206D736720 \ 696E666F2E2E \ 2E00 \ `?`: \ 00001D48 53656E64696E DC8 "Sending battery info..." \ 672062617474 \ 65727920696E \ 666F2E2E2E00 \ `?`: \ 00001D60 53656E64696E DC8 "Sending mod info..." \ 67206D6F6420 \ 696E666F2E2E \ 2E00 \ `?`: \ 00001D74 53656E64696E DC8 "Sending offline info..." \ 67206F66666C \ 696E6520696E \ 666F2E2E2E00 \ `?`: \ 00001D8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D9C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DAC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DBC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DCC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DDC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DEC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DFC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E0C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E1C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E2C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E3C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E4C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E5C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E6C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E7C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E8C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 00001E94 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EA4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001EB4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EC4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001ED4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EE4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001EF4 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001F04 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F14 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F24 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F34 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 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, 2147483647 \ 0000FFFFFF7F \ `?`: \ 00000014 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000018 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000001C 00000000 DC32 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 474D54202B30 DC8 "GMT +03:00" \ 333A303000 \ 0000000B 00 DC8 0 \ 0000000C 474D54202B30 DC8 "GMT +03:30" \ 333A333000 \ 00000017 00 DC8 0 \ 00000018 474D54202B30 DC8 "GMT +04:00" \ 343A303000 \ 00000023 00 DC8 0 \ 00000024 474D54202B30 DC8 "GMT +04:30" \ 343A333000 \ 0000002F 00 DC8 0 \ 00000030 474D54202B30 DC8 "GMT +05:00" \ 353A303000 \ 0000003B 00 DC8 0 \ 0000003C 474D54202B30 DC8 "GMT +05:30" \ 353A333000 \ 00000047 00 DC8 0 \ 00000048 474D54202B30 DC8 "GMT +05:45" \ 353A343500 \ 00000053 00 DC8 0 \ 00000054 474D54202B30 DC8 "GMT +06:00" \ 363A303000 \ 0000005F 00 DC8 0 \ 00000060 474D54202B30 DC8 "GMT +06:30" \ 363A333000 \ 0000006B 00 DC8 0 \ 0000006C 474D54202B30 DC8 "GMT +07:00" \ 373A303000 \ 00000077 00 DC8 0 \ 00000078 474D54202B30 DC8 "GMT +08:00" \ 383A303000 \ 00000083 00 DC8 0 \ 00000084 474D54202B30 DC8 "GMT +09:00" \ 393A303000 \ 0000008F 00 DC8 0 \ 00000090 474D54202B30 DC8 "GMT +09:30" \ 393A333000 \ 0000009B 00 DC8 0 \ 0000009C 474D54202B31 DC8 "GMT +10:00" \ 303A303000 \ 000000A7 00 DC8 0 \ 000000A8 474D54202B31 DC8 "GMT +11:00" \ 313A303000 \ 000000B3 00 DC8 0 \ 000000B4 474D54202B31 DC8 "GMT +12:00" \ 323A303000 \ 000000BF 00 DC8 0 \ 000000C0 474D54202B31 DC8 "GMT +13:00" \ 333A303000 \ 000000CB 00 DC8 0 \ 000000CC 474D54202D31 DC8 "GMT -12:00" \ 323A303000 \ 000000D7 00 DC8 0 \ 000000D8 474D54202D31 DC8 "GMT -11:00" \ 313A303000 \ 000000E3 00 DC8 0 \ 000000E4 474D54202D31 DC8 "GMT -10:00" \ 303A303000 \ 000000EF 00 DC8 0 \ 000000F0 474D54202D30 DC8 "GMT -09:00" \ 393A303000 \ 000000FB 00 DC8 0 \ 000000FC 474D54202D30 DC8 "GMT -08:00" \ 383A303000 \ 00000107 00 DC8 0 \ 00000108 474D54202D30 DC8 "GMT -07:00" \ 373A303000 \ 00000113 00 DC8 0 \ 00000114 474D54202D30 DC8 "GMT -06:00" \ 363A303000 \ 0000011F 00 DC8 0 \ 00000120 474D54202D30 DC8 "GMT -05:00" \ 353A303000 \ 0000012B 00 DC8 0 \ 0000012C 474D54202D30 DC8 "GMT -04:00" \ 343A303000 \ 00000137 00 DC8 0 \ 00000138 474D54202D30 DC8 "GMT -03:30" \ 333A333000 \ 00000143 00 DC8 0 \ 00000144 474D54202D30 DC8 "GMT -03:00" \ 333A303000 \ 0000014F 00 DC8 0 \ 00000150 474D54202D30 DC8 "GMT -02:00" \ 323A303000 \ 0000015B 00 DC8 0 \ 0000015C 474D54202D30 DC8 "GMT -01:00" \ 313A303000 \ 00000167 00 DC8 0 \ 00000168 474D54203030 DC8 "GMT 00:00" \ 3A303000 \ 00000172 0000 DC8 0, 0 \ 00000174 474D54202B30 DC8 "GMT +01:00" \ 313A303000 \ 0000017F 00 DC8 0 \ 00000180 474D54202B30 DC8 "GMT +02:00" \ 323A303000 \ 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 \ 00000020 496E76697361 DC8 "Invisable" \ 626C6500 \ 0000002A 0000 DC8 0, 0 \ 0000002C 4177617900 DC8 "Away" \ 00000031 000000 DC8 0, 0, 0 \ 00000034 4F6363757069 DC8 "Occupied" \ 656400 \ 0000003D 000000 DC8 0, 0, 0 \ 00000040 446570726573 DC8 "Depression" \ 73696F6E00 \ 0000004B 00 DC8 0 \ 0000004C 4576696C00 DC8 "Evil" \ 00000051 000000 DC8 0, 0, 0 \ 00000054 486F6D6500 DC8 "Home" \ 00000059 000000 DC8 0, 0, 0 \ 0000005C 4C756E636800 DC8 "Lunch" \ 00000062 0000 DC8 0, 0 \ 00000064 576F726B00 DC8 "Work" \ 00000069 000000 DC8 0, 0, 0 \ 0000006C 4F6E6C696E65 DC8 "Online" \ 00 \ 00000073 00 DC8 0 \ 00000074 4572726F7220 DC8 "Error status" \ 737461747573 \ 00 \ 00000081 000000 DC8 0, 0, 0 \ 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 1, align-sorted \ 00000000 0A00 DC8 "\012" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 73656E642072 DC8 "send res %d" \ 657320256400 \ 0000000C 53656E642064 DC8 "Send delayed..." \ 656C61796564 \ 2E2E2E00 \ 0000001C 53656E642065 DC8 "Send error!" \ 72726F722100 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5369655F2530 DC8 "Sie_%04d" \ 346400 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 257300 DC8 "%s" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 25733A202573 DC8 "%s: %s" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 253032643A25 DC8 "%02d:%02d:%02d %02d.%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 4E2F4100 DC8 "N/A" \ In segment DATA_C, align 4, align-sorted \ 00000000 444E4400 DC8 "DND" \ In segment DATA_C, align 4, align-sorted \ 00000000 46464300 DC8 "FFC" \ 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 203230353820 DC8 20H, 32H, 30H, 35H, 38H, 20H, 66H, 72H \ 6672 \ 00000038 6F6D20CEEBE5 DC8 6FH, 6DH, 20H, 0CEH, 0EBH, 0E5H, 0E6H, 0EAH \ E6EA \ 00000040 CE36342C206D DC8 0CEH, 36H, 34H, 2CH, 20H, 6DH, 6FH, 64H \ 6F64 \ 00000048 20646174653A DC8 20H, 64H, 61H, 74H, 65H, 3AH, 20H, 25H \ 2025 \ 00000050 732061742025 DC8 73H, 20H, 61H, 74H, 20H, 25H, 73H, 20H \ 7320 \ 00000058 00 DC8 0 \ 00000059 000000 DC8 0, 0, 0 \ 0000005C 4A756E203239 DC8 "Jun 29 2008" \ 203230303800 \ 00000068 31373A30383A DC8 "17:08:02" \ 303200 \ 00000071 000000 DC8 0, 0, 0 \ 00000074 2573206D6F64 DC8 "%s model: %s sw: %s\015\012" \ 656C3A202573 \ 2073773A2025 \ 730D0A00 \ 0000008A 0000 DC8 0, 0 \ 0000008C 506C6174666F DC8 "Platform: NEW\333GOLD" \ 726D3A204E45 \ 57DB474F4C44 \ 00 \ 0000009F 00 DC8 0 \ 000000A0 C2F0E5ECFF20 DC8 0C2H, 0F0H, 0E5H, 0ECH, 0FFH, 20H, 0E2H, 20H \ E220 \ 000000A8 EEEDEBE0E9ED DC8 0EEH, 0EDH, 0EBH, 0E0H, 0E9H, 0EDH, 3AH, 20H \ 3A20 \ 000000B0 253032643A25 DC8 25H, 30H, 32H, 64H, 3AH, 25H, 30H, 32H \ 3032 \ 000000B8 643A25303264 DC8 64H, 3AH, 25H, 30H, 32H, 64H, 20H, 0DH \ 200D \ 000000C0 0AD1E5F0E2E5 DC8 0AH, 0D1H, 0E5H, 0F0H, 0E2H, 0E5H, 0F0H, 3AH \ F03A \ 000000C8 202573200D0A DC8 20H, 25H, 73H, 20H, 0DH, 0AH, 25H, 73H \ 2573 \ 000000D0 200D0A00 DC8 20H, 0DH, 0AH, 0 \ 000000D4 CEF2EFF0E0E2 DC8 0CEH, 0F2H, 0EFH, 0F0H, 0E0H, 0E2H, 0EBH, 0E5H \ EBE5 \ 000000DC EDEE20F1EEEE DC8 0EDH, 0EEH, 20H, 0F1H, 0EEH, 0EEH, 0E1H, 0F9H \ E1F9 \ 000000E4 E5EDE8E93A20 DC8 0E5H, 0EDH, 0E8H, 0E9H, 3AH, 20H, 25H, 64H \ 2564 \ 000000EC 200D0ACFF0E8 DC8 20H, 0DH, 0AH, 0CFH, 0F0H, 0E8H, 0EDH, 0FFH \ EDFF \ 000000F4 F2EE20F1EEEE DC8 0F2H, 0EEH, 20H, 0F1H, 0EEH, 0EEH, 0E1H, 0F9H \ E1F9 \ 000000FC E5EDE8E93A20 DC8 0E5H, 0EDH, 0E8H, 0E9H, 3AH, 20H, 25H, 64H \ 2564 \ 00000104 200D0A00 DC8 20H, 0DH, 0AH, 0 \ 00000108 CEEFE5F0E0F2 DC8 "\316\357\345\360\340\362\356\360: %s \015\012" \ EEF03A202573 \ 200D0A00 \ 00000118 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 \ 00000137 00 DC8 0 \ 00000138 547261666669 DC8 54H, 72H, 61H, 66H, 66H, 69H, 63H, 3AH \ 633A \ 00000140 205278203A20 DC8 20H, 52H, 78H, 20H, 3AH, 20H, 25H, 64H \ 2564 \ 00000148 62205478203A DC8 62H, 20H, 54H, 78H, 20H, 3AH, 20H, 25H \ 2025 \ 00000150 646220517565 DC8 64H, 62H, 20H, 51H, 75H, 65H, 75H, 65H \ 7565 \ 00000158 3A2025646220 DC8 3AH, 20H, 25H, 64H, 62H, 20H, 0DH, 0AH \ 0D0A \ 00000160 54696D653A20 DC8 54H, 69H, 6DH, 65H, 3AH, 20H, 25H, 30H \ 2530 \ 00000168 32643A253032 DC8 32H, 64H, 3AH, 25H, 30H, 32H, 64H, 0DH \ 640D \ 00000170 0A4F6E6C696E DC8 0AH, 4FH, 6EH, 6CH, 69H, 6EH, 65H, 20H \ 6520 \ 00000178 636F6E746163 DC8 63H, 6FH, 6EH, 74H, 61H, 63H, 74H, 3AH \ 743A \ 00000180 202564205B74 DC8 20H, 25H, 64H, 20H, 5BH, 74H, 6FH, 74H \ 6F74 \ 00000188 616C3A202564 DC8 61H, 6CH, 3AH, 20H, 25H, 64H, 5DH, 20H \ 5D20 \ 00000190 0D0A556E7265 DC8 0DH, 0AH, 55H, 6EH, 72H, 65H, 61H, 64H \ 6164 \ 00000198 206D65737361 DC8 20H, 6DH, 65H, 73H, 73H, 61H, 67H, 65H \ 6765 \ 000001A0 3A2025642F25 DC8 3AH, 20H, 25H, 64H, 2FH, 25H, 64H, 20H \ 6420 \ 000001A8 00 DC8 0 \ 000001A9 000000 DC8 0, 0, 0 \ 000001AC 53656E64696E DC8 "Sending textinfo..." \ 672074657874 \ 696E666F2E2E \ 2E00 \ 000001C0 5F5F54455854 DC8 "__TEXTINFO" \ 494E464F00 \ 000001CB 00 DC8 0 \ 000001CC 5F5F544900 DC8 "__TI" \ 000001D1 000000 DC8 0, 0, 0 \ 000001D4 54696D653A20 DC8 "Time: %02d:%02d" \ 253032643A25 \ 30326400 \ 000001E4 53656E64696E DC8 "Sending time..." \ 672074696D65 \ 2E2E2E00 \ 000001F4 5F5F54494D45 DC8 "__TIME" \ 00 \ 000001FB 00 DC8 0 \ 000001FC 4745545F5449 DC8 "GET_TIME" \ 4D4500 \ 00000205 000000 DC8 0, 0, 0 \ 00000208 2573206D6F64 DC8 "%s model: %s sw: %s" \ 656C3A202573 \ 2073773A2025 \ 7300 \ 0000021C 53656E64696E DC8 "Sending platform info..." \ 6720706C6174 \ 666F726D2069 \ 6E666F2E2E2E \ 00 \ 00000235 000000 DC8 0, 0, 0 \ 00000238 4745545F504C DC8 "GET_PLATFORM_INFO" \ 4154464F524D \ 5F494E464F00 \ 0000024A 0000 DC8 0, 0 \ 0000024C 5F5F504C4154 DC8 "__PLATFORM" \ 464F524D00 \ 00000257 00 DC8 0 \ 00000258 5F5F485700 DC8 "__HW" \ 0000025D 000000 DC8 0, 0, 0 \ 00000260 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 \ 0000028B 00 DC8 0 \ 0000028C 4745545F4F4E DC8 "GET_ONLINE_TIME" \ 4C494E455F54 \ 494D4500 \ 0000029C 5F5F4F4E4C49 DC8 "__ONLINE" \ 4E4500 \ 000002A5 000000 DC8 0, 0, 0 \ 000002A8 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 \ 000002D8 4745545F4D53 DC8 "GET_MSG_INFO" \ 475F494E464F \ 00 \ 000002E5 000000 DC8 0, 0, 0 \ 000002E8 5F5F4D534700 DC8 "__MSG" \ 000002EE 0000 DC8 0, 0 \ 000002F0 CEEFE5F0E0F2 DC8 "\316\357\345\360\340\362\356\360: %s" \ EEF03A202573 \ 00 \ 000002FD 000000 DC8 0, 0, 0 \ 00000300 53656E64696E DC8 "Sending provider name..." \ 672070726F76 \ 69646572206E \ 616D652E2E2E \ 00 \ 00000319 000000 DC8 0, 0, 0 \ 0000031C 4745545F5052 DC8 "GET_PROVIDER" \ 4F5649444552 \ 00 \ 00000329 000000 DC8 0, 0, 0 \ 0000032C 5F5F50524F56 DC8 "__PROVIDER" \ 4944455200 \ 00000337 00 DC8 0 \ 00000338 2A2A2A416363 DC8 "***Access denied***" \ 657373206465 \ 6E6965642A2A \ 2A00 \ 0000034C 4745545F4D4F DC8 "GET_MOD_INFO" \ 445F494E464F \ 00 \ 00000359 000000 DC8 0, 0, 0 \ 0000035C 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 \ 00000378 4745545F4241 DC8 "GET_BAT_INFO" \ 545F494E464F \ 00 \ 00000385 000000 DC8 0, 0, 0 \ 00000388 5F5F42415400 DC8 "__BAT" \ 0000038E 0000 DC8 0, 0 \ 00000390 C0E2F2EEEEF2 DC8 "\300\342\362\356\356\362\342\345\362\367\350\352: %s %s! %s %s" \ E2E5F2F7E8EA \ 3A2025732025 \ 732120257320 \ 257300 \ 000003AB 00 DC8 0 \ 000003AC 726576697369 DC8 "revision 2058, mod date: %s at %s " \ 6F6E20323035 \ 382C206D6F64 \ 20646174653A \ 202573206174 \ 2025732000 \ 000003CF 00 DC8 0 \ 000003D0 687474703A2F DC8 "http://kluchnik.jino-net.ru/naticqmod/" \ 2F6B6C756368 \ 6E696B2E6A69 \ 6E6F2D6E6574 \ 2E72752F6E61 \ 746963716D6F \ 642F00 \ 000003F7 00 DC8 0 \ 000003F8 53656E64696E DC8 "Sending url info..." \ 672075726C20 \ 696E666F2E2E \ 2E00 \ 0000040C 4745545F5552 DC8 "GET_URL_INFO" \ 4C5F494E464F \ 00 \ 00000419 000000 DC8 0, 0, 0 \ 0000041C 5F5F55524C00 DC8 "__URL" \ 00000422 0000 DC8 0, 0 \ 00000424 5F5F4D4F4400 DC8 "__MOD" \ 0000042A 0000 DC8 0, 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 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 \ 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 C2E8E1F0E000 DC8 "\302\350\341\360\340" \ 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 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 DrawOnlineTime 20 DrawPing 12 ElfKiller 4 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 76 IsUrl 44 LastLOGQ 0 LoadCmd 332 LoadTemplates 332 NewLOGQ 12 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 ScreenSaverTimer 16 SendAnswer 28 SendAuthGrant 44 SendAuthReq 48 SendData 16 SendMSGACK 8 SetIconBarHandler 0 SetIndividStatus 0 UpdateCLheader 184 UpdateCSMname 4 UptimeMinHour 0 WriteDefSettings 176 addIconBar 16 ask_my_info 0 atoi 4 away_timer 24 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 112 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 72 main 64 maincsm_onclose 8 maincsm_oncreate 20 maincsm_onmessage 108 method0 96 method1 8 method2 8 method3 8 method4 0 method5 32 method8 0 method9 0 my_ed_redraw 12 my_keyhook 12 new_redraw 116 patch_header 8 process_active_timer 12 recon 8 send_login 36 set_my_status 4 set_my_xstatus 44 set_my_xstatus2 36 setup_ICONS 12 show_on_contact 64 show_pp_sender 76 start_vibra 8 start_vibra2 4 stop_vibra 4 stop_vibra2 4 to_develop 4 upTime 20 wstrstr 32 Segment part sizes: Function/Label Bytes -------------- ----- patch_header 48 Pinger2 144 SMART_REDRAW 48 ScreenSaverTimer 132 timeh 4 timemin 4 FreeXText2 36 away_timer 256 init_time_zone 356 AutoChangeStatus_timer 1072 DrawPing 80 Remind_Timer2 68 Reminder_timer 32 UptimeMinHour 64 upTime 156 DrawOnlineTime 144 DrawAutoMSG 140 input_awaymsg_onkey 248 input_awaymsg_ghook 68 input_awaymsg_locret 4 InputAwayMsg 316 setup_ICONS 68 free_ICONS 44 IlluminationOff 56 IlluminationOn 120 ReadDefSettings 616 WriteDefSettings 612 Play 304 start_vibra 100 stop_vibra 88 start_vibra2 60 stop_vibra2 88 ChangeVibra 56 ChangeSound 56 FreeTemplates 56 LoadTemplates 396 RXbuf 16392 TXbuf 16392 ElfKiller 28 NewLOGQ 52 LastLOGQ 36 FreeLOGQ 48 RemoveLOGQ 52 AddLOGQ 44 GetLastXTextLOGQ 72 GetIconIndex 228 FindContactLOGQByAck 88 CreateCLFile 236 new_redraw 200 UpdateCLheader 1380 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 contactlist_menu_onkey 1912 GetOnTotalContact 92 contactlist_menu_iconhndl 688 GetHost 192 atoi 84 GetPort 276 GetHostsCount 120 create_connect 760 ClearSendQ 32 end_socket 40 SendAnswer 388 send_login 148 do_ping 52 SendMSGACK 52 RequestXText 52 get_answer 1544 AddToMain 572 AddStringToLog 588 ParseXStatusText 152 AddMsgToChat 812 DrawAck 340 ask_my_info 4 set_my_status 72 set_my_xstatus 528 set_my_xstatus2 244 to_develop 80 ReqAddMsgToChat 120 begin_to_develop 52 cmdFree 56 LoadCmd 280 CmdMenuItemHandler 92 CmdMenuGHook 36 CmdMenuKeyHook 152 DispCmdMenu 124 GetStatusByIconIndex 196 SendData 120 errornumber 4 CheckComand 2892 INC_Nick 32 show_on_contact 360 show_pp_sender 432 Get_Online_total 92 SetIndividStatus 76 ProcessPacket 2844 process_active_timer 144 method0 852 method1 44 method2 36 method3 24 method4 20 method5 340 method8 8 method9 8 my_keyhook 92 Canvas 924 ipc_test_name 8 S_OFFLINE 8 S_INVISIBLE 12 S_AWAY 8 S_NA 4 S_OCCUPIED 12 S_DND 4 S_ONLINE 8 S_FFC 4 icons_names 112 input_awaymsg_desc 88 percent_s 336 def_setting 48 contactlist_menuhdr 68 menusoftkeys 12 menu_sk 24 clmenu_sk 24 menu_skt 8 clmenu_skt 8 ? 76 maincsm_oncreate 264 maincsm_onclose 328 do_reconnect 40 CheckDoubleRun 104 checkGui 76 maincsm_onmessage 2928 addIconBar 224 minus11 4 maincsm_name_body 280 UpdateCSMname 36 SetIconBarHandler 20 main 440 edchat_locret 4 ExtractAnswer 280 ??FindNextActiveContact_0 64 FindPrevActiveContact 88 ed_options_handler 852 wstrstr 124 IsUrl 424 ParseAnswer 548 SaveAnswer 36 GetTempName 172 DMonth 52 recon 52 edchat_onkey 1512 my_ed_redraw 108 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 8004 sk 8 input_awaymsg_sk 24 input_awaymsg_skt 8 icon_array 92 CmdMenuHeader 32 ecmenu_HDR 64 ec_menu 332 AskNickAndAddContact 8 AddSmile 24 ??DataTable1 4 ??DataTable2 4 ??DataTable6 4 ??DataTable7 4 ??DataTable14 4 ??DataTable17 4 ??DataTable18 4 ??DataTable23 4 ??DataTable24 4 ??DataTable25 4 ??DataTable26 4 ??DataTable28 4 ??DataTable29 4 ??DataTable31 4 ??DataTable32 4 ??DataTable37 4 ??DataTable38 4 ??DataTable40 4 ??DataTable46 4 ??DataTable49 4 ??DataTable55 4 ??DataTable56 4 ??DataTable57 4 ??DataTable58 4 ??DataTable59 4 ??DataTable61 4 ??DataTable67 4 ??DataTable68 4 ??DataTable69 4 ??DataTable73 4 ??DataTable76 4 ??DataTable77 4 ??DataTable78 4 ??DataTable81 4 ??DataTable82 4 ??DataTable83 4 ??DataTable84 4 ??DataTable86 4 ??DataTable87 4 ??DataTable88 4 ??DataTable89 4 ??DataTable90 4 ??DataTable92 4 ??DataTable93 4 ??DataTable94 4 ??DataTable99 4 ??DataTable100 4 ??DataTable101 4 ??DataTable103 4 ??DataTable104 4 ??DataTable105 4 ??DataTable106 4 ??DataTable107 4 ??DataTable108 4 ??DataTable109 4 ??DataTable110 4 ??DataTable113 4 ??DataTable114 4 ??DataTable115 4 ??DataTable125 4 ??DataTable126 4 ??DataTable127 4 ??DataTable129 4 ??DataTable130 4 ??DataTable131 4 ??DataTable132 4 ??DataTable133 4 ??DataTable134 4 ??DataTable135 4 ??DataTable136 4 ??DataTable142 4 ??DataTable145 4 ??DataTable147 4 ??DataTable148 4 ??DataTable149 4 ??DataTable150 4 ??DataTable152 4 ??DataTable155 4 ??DataTable156 4 ??DataTable157 4 ??DataTable158 4 ??DataTable159 4 ??DataTable160 4 ??DataTable165 4 ??DataTable166 4 ??DataTable167 4 ??DataTable169 4 ??DataTable172 4 ??DataTable173 4 ??DataTable174 4 ??DataTable175 4 ??DataTable176 4 ??DataTable177 4 ??DataTable178 4 ??DataTable181 4 ??DataTable182 4 ??DataTable183 4 ??DataTable186 4 ??DataTable187 4 ??DataTable188 4 ??DataTable191 4 ??DataTable195 4 ??DataTable198 4 ??DataTable199 4 ??DataTable201 4 ??DataTable203 4 ??DataTable204 4 ??DataTable206 4 ??DataTable212 4 ??DataTable213 4 ??DataTable214 4 ??DataTable215 4 ??DataTable217 4 ??DataTable221 4 ??DataTable222 4 ??DataTable223 4 ??DataTable224 4 ??DataTable225 4 ??DataTable226 4 ??DataTable228 4 ??DataTable229 4 ??DataTable231 4 ??DataTable232 4 ??DataTable236 4 ??DataTable237 4 ??DataTable238 4 ??DataTable239 4 ??DataTable240 4 ??DataTable241 4 ??DataTable242 4 ??DataTable243 4 ??DataTable244 4 ??DataTable245 4 ??DataTable246 4 ??DataTable248 4 ??DataTable251 4 ??DataTable252 4 ??DataTable253 4 ??DataTable254 4 ??DataTable256 4 ??DataTable259 4 ??DataTable260 4 ??DataTable262 4 ??DataTable263 4 ??DataTable264 4 ??DataTable265 4 ??DataTable266 4 ??DataTable267 4 ??DataTable270 4 ??DataTable271 4 ??DataTable274 4 ??DataTable275 4 ??DataTable278 4 ??DataTable280 4 ??DataTable281 4 ??DataTable282 4 ??DataTable283 4 ??DataTable285 4 ??DataTable291 4 ??DataTable293 4 ??DataTable294 4 ??DataTable295 4 ??DataTable296 4 ??DataTable297 4 ??DataTable298 4 ? 8004 ? 8 ? 24 ? 8 ? 92 ? 32 ? 396 ? 132 ? 16 ? 3 ? 16 ? 60 ? 12 ? 4 ? 4 ? 4 ? 4 ? 4 ? 2 ? 40 ? 12 ? 3 ? 8 ? 64 ? 12 ? 4 ? 4 ? 4 ? 1068 ? 4 ? 8 ?_1 8 ? 3 ? 12 ? 52 ? 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 ? 8 ? 1 ? 56 Others 1140 43 572 bytes in segment CODE 5 487 bytes in segment DATA_C 8 168 bytes in segment DATA_I 8 168 bytes in segment DATA_ID 33 108 bytes in segment DATA_Z 24 bytes in segment INITTAB 42 408 bytes of CODE memory (+ 1 188 bytes shared) 13 655 bytes of CONST memory 41 276 bytes of DATA memory Errors: none Warnings: none