############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 20/Sep/2008 20:14:25 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\main.c # # Command line = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\main.c -D # # NEWSGOLD -D ELKA -D kluchnik -D BCFG -D ICONBAR -D # # DEBUG --preprocess D:\Pasha\elf\_MY_PROJECT_\naticq_ # # mod2\kluchnik_debug\List\ -lC # # D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\kluchnik_debug # # \List\ -o D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\kluc # # hnik_debug\Obj\ -s9 --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_mod2\kluchnik_debug # # \List\main.lst # # Object file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\kluchnik_debug # # \Obj\main.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\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" 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 char prmsg[256];//вывод попап 66 int PrintTimer=0;//время попап 67 int curping=0; //тукущий пинг 68 69 volatile int sendq_l=0; //Длинна очереди для send 70 volatile void *sendq_p=NULL; //указатель очереди 71 72 extern const char *suc_config_name_mod; 73 74 75 int main_count; 76 int main2_count; 77 78 //-------------------- AUTOPING -------------------// 79 80 GBSTMR ping_tmr; 81 static void PingToServer2(void) 82 { 83 TPKT *p; 84 p=malloc(sizeof(PKT)+sizeof(TTime)); 85 GetDateTime(NULL,(TTime *)p->data); 86 p->pkt.uin=0; 87 p->pkt.type=T_ECHO; 88 p->pkt.data_len=sizeof(TTime); 89 SUBPROC((void *)SendAnswer,0,p); 90 } 91 92 int Is_PING_On; 93 \ In segment CODE, align 4, keep-with-next 94 void Pinger2() 95 { 96 if(Is_PING_On) \ Pinger2: \ 00000000 ........ LDR R0,??DataTable37 ;; i_rc \ 00000004 70402DE9 PUSH {R4-R6,LR} \ 00000008 ........ LDR R5,??DataTable1 ;; Pinger2 \ 0000000C F810A0E3 MOV R1,#+248 \ 00000010 601D81E3 ORR R1,R1,#0x1800 \ 00000014 004081E0 ADD R4,R1,R0 \ 00000018 DC1290E5 LDR R1,[R0, #+732] \ 0000001C 000051E3 CMP R1,#+0 \ 00000020 1800000A BEQ ??Pinger2_0 97 { 98 if(sendq_l<32)//если буфер для отправки меньше 32 байт то пингуем,чтобы не забивать очередь, тест... \ 00000024 CC0290E5 LDR R0,[R0, #+716] \ 00000028 200050E3 CMP R0,#+32 \ 0000002C 0F0000AA BGE ??Pinger2_1 99 PingToServer2(); \ 00000030 1000A0E3 MOV R0,#+16 \ 00000034 140000EF SWI +20 \ 00000038 0060A0E1 MOV R6,R0 \ 0000003C 081086E2 ADD R1,R6,#+8 \ 00000040 0000A0E3 MOV R0,#+0 \ 00000044 B40000EF SWI +180 \ 00000048 0000A0E3 MOV R0,#+0 \ 0000004C 000086E5 STR R0,[R6, #+0] \ 00000050 1200A0E3 MOV R0,#+18 \ 00000054 B400C6E1 STRH R0,[R6, #+4] \ 00000058 0800A0E3 MOV R0,#+8 \ 0000005C B600C6E1 STRH R0,[R6, #+6] \ 00000060 ........ LDR R0,??DataTable2 ;; SendAnswer \ 00000064 0620A0E1 MOV R2,R6 \ 00000068 0010A0E3 MOV R1,#+0 \ 0000006C 710100EF SWI +369 100 GBS_StartTimerProc(&ping_tmr, 60*216, Pinger2); \ ??Pinger2_1: \ 00000070 0520A0E1 MOV R2,R5 \ 00000074 A010A0E3 MOV R1,#+160 \ 00000078 C81D81E3 ORR R1,R1,#0x3200 \ 0000007C 0400A0E1 MOV R0,R4 \ 00000080 4D0000EF SWI +77 \ 00000084 7080BDE8 POP {R4-R6,PC} 101 } 102 else 103 GBS_StartTimerProc(&ping_tmr, 216*10, Pinger2); \ ??Pinger2_0: \ 00000088 0520A0E1 MOV R2,R5 \ 0000008C 871EA0E3 MOV R1,#+2160 \ 00000090 0400A0E1 MOV R0,R4 \ 00000094 4D0000EF SWI +77 104 } \ 00000098 7080BDE8 POP {R4-R6,PC} ;; return 105 106 //-------------------------------------------------// 107 108 109 110 extern volatile int total_smiles; 111 extern volatile int total_xstatuses; 112 extern volatile int xstatuses_load; 113 extern volatile int pictures_max; //2026rev 114 extern volatile int pictures_loaded; //2026rev 115 116 #ifdef ELKA 117 int Is_SLI_On;//мигаем светодиодом 118 #endif 119 120 //int Is_SMARTCPU_On;//Вывод сообщений на гэ 121 int Is_INC_On;//Popup message 122 int Is_ILU_On;//Режим подсветки 123 int Is_Double_Vibra_On;//Режим напоминания 124 int total_unread; 125 int total_unread2; 126 127 #ifdef ELKA \ In segment DATA_C, align 4, align-sorted 128 const int SLI_TYPE=1; \ SLI_TYPE: \ 00000000 01000000 DC32 1 129 #endif 130 131 char PINGO[256]; 132 133 #ifdef ELKA 134 extern const unsigned int SLI_time; 135 extern const unsigned int SLI_time2; 136 #endif 137 //#define USE_MLMENU 138 #define USE_GUI //графический интерфейс 139 140 #define TMR_SECOND 216 141 142 //IPC 143 const char ipc_my_name[32]=IPC_NATICQ_NAME; 144 const char ipc_xtask_name[]=IPC_XTASK_NAME; 145 const char ipc_test_name[]="test"; 146 IPC_REQ gipc; 147 148 149 char elf_path[256]; 150 int maincsm_id; 151 int maingui_id; 152 volatile int contactlist_menu_id; \ In segment CODE, align 4, keep-with-next 153 void SMART_REDRAW(void) 154 { \ SMART_REDRAW: \ 00000000 30402DE9 PUSH {R4,R5,LR} 155 #ifdef DEBUG 156 int f; 157 int t; 158 LockSched(); 159 f=IsGuiOnTop(maingui_id); \ 00000004 ........ LDR R4,??DataTable37 ;; i_rc \ 00000008 460100EF SWI +326 \ 0000000C F80294E5 LDR R0,[R4, #+760] \ 00000010 350100EF SWI +309 \ 00000014 0050A0E1 MOV R5,R0 160 t=IsGuiOnTop(contactlist_menu_id); \ 00000018 FC0294E5 LDR R0,[R4, #+764] \ 0000001C 350100EF SWI +309 \ 00000020 0040A0E1 MOV R4,R0 161 UnlockSched(); \ 00000024 470100EF SWI +327 162 if (f || t) REDRAW(); \ 00000028 000055E3 CMP R5,#+0 \ 0000002C 00005403 CMPEQ R4,#+0 \ 00000030 3080BD08 POPEQ {R4,R5,PC} \ 00000034 720100EF SWI +370 163 #else 164 int f; 165 LockSched(); 166 f=IsGuiOnTop(maingui_id); 167 UnlockSched(); 168 if (f) REDRAW(); 169 #endif 170 171 } \ 00000038 3080BDE8 POP {R4,R5,PC} ;; return 172 173 //По 10 секунд 174 #define ACTIVE_TIME 360 175 176 //Максимальное количество сообщений в логе 177 //#define MAXLOGMSG (20) 178 179 // Строковые описания статусов 180 181 const char S_OFFLINE[]="Offline"; 182 const char S_INVISIBLE[]="Invisible"; 183 const char S_AWAY[]="Away"; 184 const char S_NA[]="N/A"; 185 const char S_OCCUPIED[]="Occupied"; 186 const char S_DND[]="DND"; 187 const char S_ONLINE[]="Online"; 188 const char S_FFC[]="FFC"; 189 190 volatile int SENDMSGCOUNT; 191 #ifdef kluchnik1 192 int IsActiveUp=1; 193 #else 194 int IsActiveUp=0; 195 #endif 196 int Is_Vibra_Enabled; 197 int Is_Id3tag_Enabled; 198 unsigned int Is_Sounds_Enabled; 199 int Is_Show_Offline; 200 int Is_Show_Groups; 201 202 int S_ICONS[TOTAL_ICONS+1]; 203 204 #define EOP -10 205 int CurrentStatus; 206 int CurrentXStatus; 207 208 WSHDR *ews; 209 210 static const char * const icons_names[TOTAL_ICONS]= 211 { 212 "offline.png", 213 "invisible.png", 214 "away.png", 215 "na.png", 216 "occupied.png", 217 "dnd.png", 218 "depression.png", 219 "evil.png", 220 "home.png", 221 "lunch.png", 222 "work.png", 223 "online.png", 224 "ffc.png", 225 "message.png", 226 "unknown.png", 227 "groupon.png", 228 "groupoff.png", 229 "null.png", 230 "addcont.png", 231 "head.png", 232 "logo.png", 233 "ping.png", 234 "settings.png", 235 "vis1.png", 236 "vis2.png", 237 "vis3.png", 238 "vis4.png", 239 "vis5.png", 240 "ping1.png", 241 "ping2.png", 242 "ping3.png", 243 "ping4.png", 244 "bg.png" 245 }; 246 247 248 249 250 //------------------------ SCREEN SAVER TIMER ---------------------------// 251 /* 252 #ifdef NEWSGOLD 253 GBSTMR scrsTmr; 254 int scrsTime; 255 void ScreenSaverTimer() 256 { 257 if(scrsTime==screenSaverTime) 258 { 259 scrsTime=screenSaverTime;//на всякий случай 260 CloseScreensaver(); 261 DrawScreenSaver(); 262 GBS_StartTimerProc(&scrsTmr, 216*10, ScreenSaverTimer); 263 } 264 if(isScreenSaverEna) 265 scrsTime++; 266 GBS_StartTimerProc(&scrsTmr, 216*5, ScreenSaverTimer); 267 } 268 #endif 269 */ 270 271 //-----------------------------------------------------------------------// 272 273 274 int msg_away_timer=0;//Счетчик для автостатуса 275 char away_msg[264];//Само сообщение для ответа 276 char away_msg_time[64];//Время когда сработал таймер 277 char away_msg_time_dace[16];//время отсутвтвия для вывода на идле 278 //char *inp_away_msg2;//Текст сообщения,если будем писать сами(на долгую 6 или VOL_DOWN_BUTTON),а не брать из конфига 279 char tim_zone[16]; \ In segment DATA_Z, align 4, align-sorted 280 int timeh; \ timeh: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 281 int timemin; \ timemin: \ 00000000 DS8 4 282 int away_m;//состояние автоответчика 283 int status_rem;//Для сохранения текущего статуса 284 int change_back_status;//вернуть предыдущий статус или нет 285 GBSTMR away_tmr; 286 287 288 int Show_XTX;//Показывать хстатус или время он лайн \ In segment CODE, align 4, keep-with-next 289 void FreeXText2(CLIST *t) 290 { \ FreeXText2: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 291 if (t->xtext2) { mfree(t->xtext2); t->xtext2=NULL; } \ 00000008 B80094E5 LDR R0,[R4, #+184] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD08 POPEQ {R4,PC} \ 00000014 150000EF SWI +21 \ 00000018 0000A0E3 MOV R0,#+0 \ 0000001C B80084E5 STR R0,[R4, #+184] 292 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 293 \ In segment CODE, align 4, keep-with-next 294 void away_timer()//Таймер автостатуса 295 { \ away_timer: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 296 TTime tt; 297 if(msg_away_timer==(AUTO_ENGADE*12)) \ 00000004 ........ LDR R4,??DataTable37 ;; i_rc \ 00000008 ........ LDR R9,??DataTable26 ;; AUTO_ENGADE \ 0000000C ........ LDR R8,??DataTable6 ;; menutext \ 00000010 08D04DE2 SUB SP,SP,#+8 \ 00000014 001099E5 LDR R1,[R9, #+0] \ 00000018 1000A0E3 MOV R0,#+16 \ 0000001C 6C0D80E3 ORR R0,R0,#0x1B00 \ 00000020 045080E0 ADD R5,R0,R4 \ 00000024 500080E2 ADD R0,R0,#+80 \ 00000028 046080E0 ADD R6,R0,R4 \ 0000002C 100040E2 SUB R0,R0,#+16 \ 00000030 047080E0 ADD R7,R0,R4 \ 00000034 A40394E5 LDR R0,[R4, #+932] \ 00000038 0C20A0E3 MOV R2,#+12 \ 0000003C 920101E0 MUL R1,R2,R1 \ 00000040 010050E1 CMP R0,R1 \ 00000044 1D00001A BNE ??away_timer_0 298 { 299 GetDateTime(NULL,&tt); \ 00000048 0D10A0E1 MOV R1,SP \ 0000004C 0000A0E3 MOV R0,#+0 \ 00000050 B40000EF SWI +180 300 sprintf(away_msg_time_dace, "%02d:%02d", tt.hour, tt.min); \ 00000054 0130DDE5 LDRB R3,[SP, #+1] \ 00000058 0020DDE5 LDRB R2,[SP, #+0] \ 0000005C 801088E2 ADD R1,R8,#+128 \ 00000060 0700A0E1 MOV R0,R7 \ 00000064 160000EF SWI +22 301 sprintf(away_msg_time, "( Отсутствую примерно с %02d:%02d [%s] )", tt.hour, tt.min, tim_zone); \ 00000068 0600A0E1 MOV R0,R6 \ 0000006C 01002DE9 PUSH {R0} \ 00000070 0530DDE5 LDRB R3,[SP, #+5] \ 00000074 0420DDE5 LDRB R2,[SP, #+4] \ 00000078 541088E2 ADD R1,R8,#+84 \ 0000007C 0500A0E1 MOV R0,R5 \ 00000080 160000EF SWI +22 302 away_m=1; 303 304 if(CurrentStatus!=2 && CurrentStatus!=isAutoStatusOn) \ 00000084 980394E5 LDR R0,[R4, #+920] \ 00000088 01A0A0E3 MOV R10,#+1 \ 0000008C A8A384E5 STR R10,[R4, #+936] \ 00000090 020050E3 CMP R0,#+2 \ 00000094 04D08DE2 ADD SP,SP,#+4 \ 00000098 0800000A BEQ ??away_timer_0 \ 0000009C DC109FE5 LDR R1,??away_timer_1 ;; isAutoStatusOn \ 000000A0 001091E5 LDR R1,[R1, #+0] \ 000000A4 010050E1 CMP R0,R1 \ 000000A8 0400000A BEQ ??away_timer_0 305 { 306 status_rem=CurrentStatus; \ 000000AC AC0384E5 STR R0,[R4, #+940] 307 CurrentStatus=2; \ 000000B0 0200A0E3 MOV R0,#+2 \ 000000B4 980384E5 STR R0,[R4, #+920] 308 set_my_status(); \ 000000B8 ........ BL set_my_status 309 change_back_status=1; \ 000000BC B0A384E5 STR R10,[R4, #+944] 310 } 311 } 312 313 if( (IsOnNAStatus) && (msg_away_timer==((AUTO_ENGADE*12)+(NAStatusTime*12))) )//Включить переключение на недоступен,в минутах \ ??away_timer_0: \ 000000C0 BC009FE5 LDR R0,??away_timer_1+0x4 ;; IsOnNAStatus \ 000000C4 000090E5 LDR R0,[R0, #+0] \ 000000C8 000050E3 CMP R0,#+0 \ 000000CC 1D00000A BEQ ??away_timer_2 \ 000000D0 B0209FE5 LDR R2,??away_timer_1+0x8 ;; NAStatusTime \ 000000D4 001099E5 LDR R1,[R9, #+0] \ 000000D8 002092E5 LDR R2,[R2, #+0] \ 000000DC A40394E5 LDR R0,[R4, #+932] \ 000000E0 011082E0 ADD R1,R2,R1 \ 000000E4 0C20A0E3 MOV R2,#+12 \ 000000E8 920101E0 MUL R1,R2,R1 \ 000000EC 010050E1 CMP R0,R1 \ 000000F0 1400001A BNE ??away_timer_2 314 { 315 GetDateTime(NULL,&tt); \ 000000F4 0D10A0E1 MOV R1,SP \ 000000F8 0000A0E3 MOV R0,#+0 \ 000000FC B40000EF SWI +180 316 sprintf(away_msg_time_dace, "%02d:%02d", tt.hour, tt.min); \ 00000100 0130DDE5 LDRB R3,[SP, #+1] \ 00000104 0020DDE5 LDRB R2,[SP, #+0] \ 00000108 801088E2 ADD R1,R8,#+128 \ 0000010C 0700A0E1 MOV R0,R7 \ 00000110 160000EF SWI +22 317 sprintf(away_msg_time, "( Недоступен примерно с %02d:%02d [%s] )", tt.hour, tt.min, tim_zone); \ 00000114 40002DE9 PUSH {R6} \ 00000118 0530DDE5 LDRB R3,[SP, #+5] \ 0000011C 0420DDE5 LDRB R2,[SP, #+4] \ 00000120 281088E2 ADD R1,R8,#+40 \ 00000124 0500A0E1 MOV R0,R5 \ 00000128 160000EF SWI +22 318 if(CurrentStatus!=3) \ 0000012C 980394E5 LDR R0,[R4, #+920] \ 00000130 04D08DE2 ADD SP,SP,#+4 \ 00000134 030050E3 CMP R0,#+3 \ 00000138 0200000A BEQ ??away_timer_2 319 { 320 CurrentStatus=3; \ 0000013C 0300A0E3 MOV R0,#+3 \ 00000140 980384E5 STR R0,[R4, #+920] 321 set_my_status(); \ 00000144 ........ BL set_my_status 322 } 323 } 324 325 if(Auto_Status) \ ??away_timer_2: \ 00000148 ........ LDR R0,??DataTable7 ;; Auto_Status 326 msg_away_timer++; 327 GBS_StartTimerProc(&away_tmr, 216*5, away_timer); \ 0000014C 38209FE5 LDR R2,??away_timer_1+0xC ;; away_timer \ 00000150 000090E5 LDR R0,[R0, #+0] \ 00000154 3810A0E3 MOV R1,#+56 \ 00000158 000050E3 CMP R0,#+0 \ 0000015C A4039415 LDRNE R0,[R4, #+932] \ 00000160 401E81E3 ORR R1,R1,#0x400 \ 00000164 01008012 ADDNE R0,R0,#+1 \ 00000168 A4038415 STRNE R0,[R4, #+932] \ 0000016C 7000A0E3 MOV R0,#+112 \ 00000170 6C0D80E3 ORR R0,R0,#0x1B00 \ 00000174 040080E0 ADD R0,R0,R4 \ 00000178 4D0000EF SWI +77 328 } \ 0000017C F387BDE8 POP {R0,R1,R4-R10,PC} ;; return \ ??away_timer_1: \ 00000180 ........ DC32 isAutoStatusOn \ 00000184 ........ DC32 IsOnNAStatus \ 00000188 ........ DC32 NAStatusTime \ 0000018C ........ DC32 away_timer 329 330 \ In segment CODE, align 4, keep-with-next 331 void init_time_zone() 332 { 333 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 ;; i_rc + 7008 \ 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 2A2C2E30 DC8 +42,+44,+46,+48 \ 0000003C 32343638 DC8 +50,+52,+54,+56 \ 00000040 3A3C3E40 DC8 +58,+60,+62,+64 \ 00000044 420E4446 DC8 +66,+14,+68,+70 \ 00000048 48000000 DC8 +72,+0,+0,+0 334 { 335 case 0: 336 sprintf(tim_zone, "GMT -12:00"); \ ??init_time_zone_2: \ 0000004C 601F81E2 ADD R1,R1,#+384 \ 00000050 030000EA B ??init_time_zone_3 337 break; 338 case 1: 339 sprintf(tim_zone, "GMT -11:00"); \ ??init_time_zone_4: \ 00000054 5D1F81E2 ADD R1,R1,#+372 \ 00000058 160000EF SWI +22 \ 0000005C 0080BDE8 POP {PC} 340 break; 341 case 2: 342 sprintf(tim_zone, "GMT -10:00"); \ ??init_time_zone_5: \ 00000060 5A1F81E2 ADD R1,R1,#+360 \ ??init_time_zone_3: \ 00000064 160000EF SWI +22 \ 00000068 0080BDE8 POP {PC} 343 break; 344 case 3: 345 sprintf(tim_zone, "GMT -09:00"); \ ??init_time_zone_6: \ 0000006C 571F81E2 ADD R1,R1,#+348 \ 00000070 FBFFFFEA B ??init_time_zone_3 346 break; 347 case 4: 348 sprintf(tim_zone, "GMT -08:00"); \ ??init_time_zone_7: \ 00000074 541F81E2 ADD R1,R1,#+336 \ 00000078 F9FFFFEA B ??init_time_zone_3 349 break; 350 case 5: 351 sprintf(tim_zone, "GMT -07:00"); \ ??init_time_zone_8: \ 0000007C 511F81E2 ADD R1,R1,#+324 \ 00000080 F7FFFFEA B ??init_time_zone_3 352 break; 353 case 6: 354 sprintf(tim_zone, "GMT -06:00"); \ ??init_time_zone_9: \ 00000084 4E1F81E2 ADD R1,R1,#+312 \ 00000088 F5FFFFEA B ??init_time_zone_3 355 break; 356 case 7: 357 sprintf(tim_zone, "GMT -05:00"); \ ??init_time_zone_10: \ 0000008C 4B1F81E2 ADD R1,R1,#+300 \ 00000090 F3FFFFEA B ??init_time_zone_3 358 break; 359 case 8: 360 sprintf(tim_zone, "GMT -04:00"); \ ??init_time_zone_11: \ 00000094 481F81E2 ADD R1,R1,#+288 \ 00000098 F1FFFFEA B ??init_time_zone_3 361 break; 362 case 9: 363 sprintf(tim_zone, "GMT -03:30"); \ ??init_time_zone_12: \ 0000009C 451F81E2 ADD R1,R1,#+276 \ 000000A0 EFFFFFEA B ??init_time_zone_3 364 break; 365 case 10: 366 sprintf(tim_zone, "GMT -03:00"); \ ??init_time_zone_13: \ 000000A4 421F81E2 ADD R1,R1,#+264 \ 000000A8 EDFFFFEA B ??init_time_zone_3 367 break; 368 case 11: 369 sprintf(tim_zone, "GMT -02:00"); \ ??init_time_zone_14: \ 000000AC FC1081E2 ADD R1,R1,#+252 \ 000000B0 EBFFFFEA B ??init_time_zone_3 370 break; 371 case 12: 372 sprintf(tim_zone, "GMT -01:00"); \ ??init_time_zone_15: \ 000000B4 F01081E2 ADD R1,R1,#+240 \ 000000B8 E9FFFFEA B ??init_time_zone_3 373 break; 374 case 13: 375 sprintf(tim_zone, "GMT 00:00"); \ ??init_time_zone_16: \ 000000BC E41081E2 ADD R1,R1,#+228 \ 000000C0 E7FFFFEA B ??init_time_zone_3 376 break; 377 case 14: 378 sprintf(tim_zone, "GMT +01:00"); \ ??init_time_zone_17: \ 000000C4 D81081E2 ADD R1,R1,#+216 \ 000000C8 E5FFFFEA B ??init_time_zone_3 379 break; 380 case 15: 381 sprintf(tim_zone, "GMT +02:00"); \ ??init_time_zone_18: \ 000000CC CC1081E2 ADD R1,R1,#+204 \ 000000D0 E3FFFFEA B ??init_time_zone_3 382 break; 383 case 16: 384 sprintf(tim_zone, "GMT +03:00"); \ ??init_time_zone_19: \ 000000D4 C01081E2 ADD R1,R1,#+192 \ 000000D8 E1FFFFEA B ??init_time_zone_3 385 break; 386 case 17: 387 sprintf(tim_zone, "GMT +03:30"); \ ??init_time_zone_20: \ 000000DC B41081E2 ADD R1,R1,#+180 \ 000000E0 DFFFFFEA B ??init_time_zone_3 388 break; 389 case 18: 390 sprintf(tim_zone, "GMT +04:00"); \ ??init_time_zone_21: \ 000000E4 A81081E2 ADD R1,R1,#+168 \ 000000E8 DDFFFFEA B ??init_time_zone_3 391 break; 392 case 19: 393 sprintf(tim_zone, "GMT +04:30"); \ ??init_time_zone_22: \ 000000EC 9C1081E2 ADD R1,R1,#+156 \ 000000F0 DBFFFFEA B ??init_time_zone_3 394 break; 395 case 20: 396 sprintf(tim_zone, "GMT +05:00"); \ ??init_time_zone_23: \ 000000F4 901081E2 ADD R1,R1,#+144 \ 000000F8 D9FFFFEA B ??init_time_zone_3 397 break; 398 case 21: 399 sprintf(tim_zone, "GMT +05:30"); \ ??init_time_zone_24: \ 000000FC 841081E2 ADD R1,R1,#+132 \ 00000100 D7FFFFEA B ??init_time_zone_3 400 break; 401 case 22: 402 sprintf(tim_zone, "GMT +05:45"); \ ??init_time_zone_25: \ 00000104 781081E2 ADD R1,R1,#+120 \ 00000108 D5FFFFEA B ??init_time_zone_3 403 break; 404 case 23: 405 sprintf(tim_zone, "GMT +06:00"); \ ??init_time_zone_26: \ 0000010C 6C1081E2 ADD R1,R1,#+108 \ 00000110 D3FFFFEA B ??init_time_zone_3 406 break; 407 case 24: 408 sprintf(tim_zone, "GMT +06:30"); \ ??init_time_zone_27: \ 00000114 601081E2 ADD R1,R1,#+96 \ 00000118 D1FFFFEA B ??init_time_zone_3 409 break; 410 case 25: 411 sprintf(tim_zone, "GMT +07:00"); \ ??init_time_zone_28: \ 0000011C 541081E2 ADD R1,R1,#+84 \ 00000120 CFFFFFEA B ??init_time_zone_3 412 break; 413 case 26: 414 sprintf(tim_zone, "GMT +08:00"); \ ??init_time_zone_29: \ 00000124 481081E2 ADD R1,R1,#+72 \ 00000128 CDFFFFEA B ??init_time_zone_3 415 break; 416 case 27: 417 sprintf(tim_zone, "GMT +09:00"); \ ??init_time_zone_30: \ 0000012C 3C1081E2 ADD R1,R1,#+60 \ 00000130 CBFFFFEA B ??init_time_zone_3 418 break; 419 case 28: 420 sprintf(tim_zone, "GMT +09:30"); \ ??init_time_zone_31: \ 00000134 301081E2 ADD R1,R1,#+48 \ 00000138 C9FFFFEA B ??init_time_zone_3 421 break; 422 case 29: 423 sprintf(tim_zone, "GMT +10:00"); 424 break; 425 case 30: 426 sprintf(tim_zone, "GMT +11:00"); \ ??init_time_zone_32: \ 0000013C 241081E2 ADD R1,R1,#+36 \ 00000140 C7FFFFEA B ??init_time_zone_3 427 break; 428 case 31: 429 sprintf(tim_zone, "GMT +12:00"); \ ??init_time_zone_33: \ 00000144 181081E2 ADD R1,R1,#+24 \ 00000148 C5FFFFEA B ??init_time_zone_3 430 break; 431 case 32: 432 sprintf(tim_zone, "GMT +13:00"); \ ??init_time_zone_34: \ 0000014C 0C1081E2 ADD R1,R1,#+12 \ 00000150 160000EF SWI +22 433 break; 434 } 435 } \ ??init_time_zone_35: \ 00000154 0080BDE8 POP {PC} ;; return \ ??init_time_zone_1: \ 00000158 ........ DC32 time_zone \ 0000015C ........ DC32 i_rc + 7008 \ 00000160 ........ DC32 `?` 436 437 438 //------------------------ AUTO CHANGE STATUS ------------------------------// 439 440 void SetIconBarHandler(); 441 GBSTMR autoChangeStatus; 442 #pragma inline 443 static unsigned int GetStatusByIndex(int pos) 444 { 445 switch(pos) 446 { 447 case 1: 448 return IS_ONLINE; 449 case 2: 450 return IS_AWAY; 451 case 3: 452 return IS_NA; 453 case 4: 454 return IS_DND; 455 case 5: 456 return IS_OCCUPIED; 457 case 6: 458 return IS_FFC; 459 case 7: 460 return IS_INVISIBLE; 461 case 8: 462 return IS_DEPRESSION; 463 case 9: 464 return IS_EVIL; 465 case 10: 466 return IS_HOME; 467 case 11: 468 return IS_LUNCH; 469 case 12: 470 return IS_WORK; 471 } 472 return IS_UNKNOWN; 473 } 474 475 #ifndef DEBUG 476 void AutoChangeStatus_timer()//Таймер автосмены статуса 477 { 478 TTime tt; 479 GetDateTime(NULL,&tt); 480 481 if(status_1!=0 && tt.hour==tm_status_1.hour && tt.min==tm_status_1.min) 482 { 483 CurrentStatus=GetStatusByIndex(status_1); 484 set_my_status(); 485 } 486 487 if(status_2!=0 && tt.hour==tm_status_2.hour && tt.min==tm_status_2.min) 488 { 489 CurrentStatus=GetStatusByIndex(status_2); 490 set_my_status(); 491 } 492 493 if(status_3!=0 && tt.hour==tm_status_3.hour && tt.min==tm_status_3.min) 494 { 495 CurrentStatus=GetStatusByIndex(status_3); 496 set_my_status(); 497 } 498 499 if(status_4!=0 && tt.hour==tm_status_4.hour && tt.min==tm_status_4.min) 500 { 501 CurrentStatus=GetStatusByIndex(status_4); 502 set_my_status(); 503 } 504 505 if(status_5!=0 && tt.hour==tm_status_5.hour && tt.min==tm_status_5.min) 506 { 507 CurrentStatus=GetStatusByIndex(status_5); 508 set_my_status(); 509 } 510 511 GBS_StartTimerProc(&autoChangeStatus, 216*30, AutoChangeStatus_timer); 512 } 513 #endif 514 //=================================away_msg=============== 515 //////////////////////////////////////////tozhe dlja auto ping/////////////// 516 \ In segment CODE, align 4, keep-with-next 517 void DrawPing(void *canv) 518 { 519 PrintField(Ping_X,Ping_Y, PINGO, align, fonto, spaco1); \ DrawPing: \ 00000000 ........ LDR R1,??DataTable22 ;; spaco1 \ 00000004 ........ LDR R0,??DataTable37 ;; i_rc \ 00000008 00402DE9 PUSH {LR} \ 0000000C 001091E5 LDR R1,[R1, #+0] \ 00000010 02002DE9 PUSH {R1} \ 00000014 ........ LDR R1,??DataTable23 ;; fonto \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 02002DE9 PUSH {R1} \ 00000020 AC3290E5 LDR R3,[R0, #+684] \ 00000024 0810A0E3 MOV R1,#+8 \ 00000028 641D81E3 ORR R1,R1,#0x1900 \ 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 520 } \ 00000044 0380BDE8 POP {R0,R1,PC} ;; return \ ??DrawPing_0: \ 00000048 ........ DC32 Ping_Y \ 0000004C ........ DC32 Ping_X 521 522 //////////////////////////////////////////tozhe dlja auto ping/////////////// 523 524 GBSTMR remind_tmr; 525 volatile int vibra_count; 526 #ifdef ELKA 527 void SLI_Off(void); 528 #endif 529 void start_vibra2(void); 530 531 //////////////////////////reminder timer///////////////////////// 532 \ In segment CODE, align 4, keep-with-next 533 void Remind_Timer2() 534 { \ Remind_Timer2: \ 00000000 10402DE9 PUSH {R4,LR} 535 if (total_unread) \ 00000004 ........ LDR R4,??DataTable37 ;; i_rc \ 00000008 180494E5 LDR R0,[R4, #+1048] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 1080BD08 POPEQ {R4,PC} 536 { 537 vibra_count=Vibra_cc; \ 00000014 24009FE5 LDR R0,??Remind_Timer2_0 ;; Vibra_cc \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C E40384E5 STR R0,[R4, #+996] 538 start_vibra2(); \ 00000020 ........ BL start_vibra2 539 GBS_StartTimerProc(&remind_tmr, 216*30, Remind_Timer2); \ 00000024 ........ LDR R2,??DataTable13 ;; Remind_Timer2 \ 00000028 5010A0E3 MOV R1,#+80 \ 0000002C 641D81E3 ORR R1,R1,#0x1900 \ 00000030 900F81E2 ADD R0,R1,#+576 \ 00000034 040080E0 ADD R0,R0,R4 \ 00000038 4D0000EF SWI +77 540 } 541 } \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??Remind_Timer2_0: \ 00000040 ........ DC32 Vibra_cc 542 \ In segment CODE, align 4, keep-with-next 543 void Reminder_timer() 544 { 545 GBS_StartTimerProc(&remind_tmr, 216*30, Remind_Timer2); \ Reminder_timer: \ 00000000 ........ LDR R2,??DataTable13 ;; Remind_Timer2 \ 00000004 10009FE5 LDR R0,??Reminder_timer_0 ;; i_rc + 7056 \ 00000008 00402DE9 PUSH {LR} \ 0000000C 5010A0E3 MOV R1,#+80 \ 00000010 641D81E3 ORR R1,R1,#0x1900 \ 00000014 4D0000EF SWI +77 546 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??Reminder_timer_0: \ 0000001C ........ DC32 i_rc + 7056 547 //////////////////////////reminder timer///////////////////////// 548 549 //////////////////////////uptime////////////////////////// 550 //int Is_UPTIME_On; 551 int uptimeHour; 552 int uptimeMin; 553 int uptimeSec; 554 \ In segment CODE, align 4, keep-with-next 555 void UptimeMinHour() 556 { 557 uptimeSec++; \ UptimeMinHour: \ 00000000 ........ LDR R0,??DataTable37 ;; i_rc \ 00000004 C01390E5 LDR R1,[R0, #+960] 558 if(uptimeSec==60) \ 00000008 BC2390E5 LDR R2,[R0, #+956] \ 0000000C 011081E2 ADD R1,R1,#+1 \ 00000010 3C0051E3 CMP R1,#+60 559 { 560 uptimeSec=0; \ 00000014 0010A003 MOVEQ R1,#+0 561 uptimeMin++; \ 00000018 01208202 ADDEQ R2,R2,#+1 \ 0000001C C01380E5 STR R1,[R0, #+960] 562 } 563 if(uptimeMin==60) \ 00000020 3C0052E3 CMP R2,#+60 \ 00000024 0300001A BNE ??UptimeMinHour_0 564 { 565 uptimeMin=0; 566 uptimeHour++; \ 00000028 B81390E5 LDR R1,[R0, #+952] \ 0000002C 0020A0E3 MOV R2,#+0 \ 00000030 011081E2 ADD R1,R1,#+1 \ 00000034 B81380E5 STR R1,[R0, #+952] \ ??UptimeMinHour_0: \ 00000038 BC2380E5 STR R2,[R0, #+956] 567 } 568 } \ 0000003C 1EFF2FE1 BX LR ;; return 569 570 GBSTMR uptime_tmr; 571 #ifdef NEWSGOLD 572 GBSTMR tracktmr; 573 int tracktimer; 574 #endif 575 \ In segment CODE, align 4, keep-with-next 576 void upTime() 577 { \ upTime: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 578 if(connect_state==3) \ 00000004 ........ LDR R4,??DataTable37 ;; i_rc \ 00000008 84609FE5 LDR R6,??upTime_0 ;; upTime \ 0000000C A000A0E3 MOV R0,#+160 \ 00000010 6C0D80E3 ORR R0,R0,#0x1B00 \ 00000014 045080E0 ADD R5,R0,R4 \ 00000018 FC0394E5 LDR R0,[R4, #+1020] \ 0000001C 0070A0E3 MOV R7,#+0 \ 00000020 030050E3 CMP R0,#+3 \ 00000024 0F00001A BNE ??upTime_1 579 { 580 UptimeMinHour(); \ 00000028 ........ BL UptimeMinHour 581 #ifdef NEWSGOLD 582 if (tracktimer>=10)/*&&(_GetPlayStatus()!=1))*/ \ 0000002C C40394E5 LDR R0,[R4, #+964] \ 00000030 0A0050E3 CMP R0,#+10 \ 00000034 070000BA BLT ??upTime_2 583 { 584 GBS_StartTimerProc(&tracktmr, 216*5, GetTags); \ 00000038 ........ LDR R2,??DataTable16 ;; GetTags \ 0000003C 3810A0E3 MOV R1,#+56 \ 00000040 401E81E3 ORR R1,R1,#0x400 \ 00000044 B000A0E3 MOV R0,#+176 \ 00000048 6C0D80E3 ORR R0,R0,#0x1B00 \ 0000004C 040080E0 ADD R0,R0,R4 \ 00000050 4D0000EF SWI +77 585 tracktimer=0; \ 00000054 C47384E5 STR R7,[R4, #+964] 586 } 587 tracktimer++; \ ??upTime_2: \ 00000058 C40394E5 LDR R0,[R4, #+964] \ 0000005C 010080E2 ADD R0,R0,#+1 \ 00000060 C40384E5 STR R0,[R4, #+964] 588 #endif 589 GBS_StartTimerProc(&uptime_tmr, 216, upTime); \ 00000064 050000EA B ??upTime_3 590 } 591 else 592 { 593 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 594 { 595 uptimeHour=0; \ 00000074 B8738405 STREQ R7,[R4, #+952] 596 uptimeMin=0; \ 00000078 BC738405 STREQ R7,[R4, #+956] 597 uptimeSec=0; \ 0000007C C0738405 STREQ R7,[R4, #+960] 598 } 599 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 600 } 601 } \ 00000090 F080BDE8 POP {R4-R7,PC} ;; return \ ??upTime_0: \ 00000094 ........ DC32 upTime \ 00000098 ........ DC32 Pause_Time 602 603 char onlineTime[128]; \ In segment CODE, align 4, keep-with-next 604 void DrawOnlineTime(void *canv) 605 { 606 if(connect_state==3) \ DrawOnlineTime: \ 00000000 78109FE5 LDR R1,??DrawOnlineTime_0 ;; `?` \ 00000004 30402DE9 PUSH {R4,R5,LR} \ 00000008 ........ LDR R4,??DataTable37 ;; i_rc \ 0000000C 6F5D84E2 ADD R5,R4,#+7104 \ 00000010 FC0394E5 LDR R0,[R4, #+1020] \ 00000014 030050E3 CMP R0,#+3 \ 00000018 0800001A BNE ??DrawOnlineTime_1 607 { 608 sprintf(onlineTime,"Online: %02d:%02d:%02d", uptimeHour, uptimeMin, uptimeSec); \ 0000001C C00394E5 LDR R0,[R4, #+960] \ 00000020 081081E2 ADD R1,R1,#+8 \ 00000024 01002DE9 PUSH {R0} \ 00000028 BC3394E5 LDR R3,[R4, #+956] \ 0000002C B82394E5 LDR R2,[R4, #+952] \ 00000030 0500A0E1 MOV R0,R5 \ 00000034 160000EF SWI +22 \ 00000038 04D08DE2 ADD SP,SP,#+4 \ 0000003C 010000EA B ??DrawOnlineTime_2 609 } 610 else 611 sprintf(onlineTime,"Offline"); \ ??DrawOnlineTime_1: \ 00000040 0500A0E1 MOV R0,R5 \ 00000044 160000EF SWI +22 612 PrintField(onlineTime_x,onlineTime_y, onlineTime, align, fonto, spaco1); \ ??DrawOnlineTime_2: \ 00000048 ........ LDR R0,??DataTable22 ;; spaco1 \ 0000004C 0520A0E1 MOV R2,R5 \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 01002DE9 PUSH {R0} \ 00000058 ........ LDR R0,??DataTable23 ;; fonto \ 0000005C 000090E5 LDR R0,[R0, #+0] \ 00000060 01002DE9 PUSH {R0} \ 00000064 AC3294E5 LDR R3,[R4, #+684] \ 00000068 14009FE5 LDR R0,??DrawOnlineTime_0+0x4 ;; onlineTime_y \ 0000006C 001090E5 LDR R1,[R0, #+0] \ 00000070 10009FE5 LDR R0,??DrawOnlineTime_0+0x8 ;; onlineTime_x \ 00000074 000090E5 LDR R0,[R0, #+0] \ 00000078 ........ _BLF PrintField,??PrintField??rA 613 } \ 0000007C 3380BDE8 POP {R0,R1,R4,R5,PC} ;; return \ ??DrawOnlineTime_0: \ 00000080 ........ DC32 `?` \ 00000084 ........ DC32 onlineTime_y \ 00000088 ........ DC32 onlineTime_x 614 615 616 //---------------------- Вывод времени на идле ---------------------// 617 618 \ In segment CODE, align 4, keep-with-next 619 void DrawAutoMSG(void *canv) 620 { \ DrawAutoMSG: \ 00000000 10402DE9 PUSH {R4,LR} 621 char awayTime[64]; 622 if(away_m && showAwayIdle) \ 00000004 ........ LDR R4,??DataTable37 ;; i_rc \ 00000008 40D04DE2 SUB SP,SP,#+64 \ 0000000C A80394E5 LDR R0,[R4, #+936] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 1700000A BEQ ??DrawAutoMSG_0 \ 00000018 ........ LDR R0,??DataTable21 ;; showAwayIdle \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 000050E3 CMP R0,#+0 \ 00000024 1300000A BEQ ??DrawAutoMSG_0 623 { 624 sprintf(awayTime,"Away from [%s]",away_msg_time_dace); \ 00000028 50109FE5 LDR R1,??DrawAutoMSG_1 ;; `?` \ 0000002C 5000A0E3 MOV R0,#+80 \ 00000030 6C0D80E3 ORR R0,R0,#0x1B00 \ 00000034 042080E0 ADD R2,R0,R4 \ 00000038 0D00A0E1 MOV R0,SP \ 0000003C 160000EF SWI +22 625 PrintField(auto_x,auto_y, awayTime, align, fonto, spaco1); \ 00000040 ........ LDR R0,??DataTable22 ;; spaco1 \ 00000044 000090E5 LDR R0,[R0, #+0] \ 00000048 01002DE9 PUSH {R0} \ 0000004C ........ LDR R0,??DataTable23 ;; fonto \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 01002DE9 PUSH {R0} \ 00000058 AC3294E5 LDR R3,[R4, #+684] \ 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 626 } 627 } \ ??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 628 629 630 //---------------------------- Input away msg ---------------------------// 631 632 //Вводим сообщение какое хотим,а не то что прописали в конфиге 633 int input_awaymsg_id; 634 635 const HEADER_DESC input_awaymsg_hdr={0,0,131,21,NULL,(int)"Ввод автосообщения",LGP_NULL}; 636 //void UpdateCLheader(void); \ In segment CODE, align 4, keep-with-next 637 int input_awaymsg_onkey(GUI *data, GUI_MSG *msg) 638 { \ input_awaymsg_onkey: \ 00000000 F0432DE9 PUSH {R4-R9,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 639 WSHDR *ws; 640 if (msg->keys==0x0FFF || msg->keys==VOL_DOWN_BUTTON) \ 00000008 ........ LDR R4,??DataTable37 ;; i_rc \ 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 2200001A BNE ??input_awaymsg_onkey_0 641 { 642 EDITCONTROL ec; 643 ExtractEditControl(data,2,&ec); 644 ws=ec.pWS; 645 zeromem(awayMsg,256); \ 0000002C ........ LDR R8,??DataTable27 ;; 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 646 int i=0; 647 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 648 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 649 awayMsg[i]=0; 650 651 #ifdef kluchnik2 652 char *s; 653 ExtractEditControl(data,4,&ec); 654 ws=ec.pWS; 655 s=malloc(ws->wsbody[0]); 656 *s=0; 657 for(i=0;iwsbody[0];i++) 658 *(s+i)=char16to8(ws->wsbody[i+1]); 659 *(s+i)=0; 660 strcat(awayMsg,s); 661 mfree(s); 662 #endif 663 msg_away_timer=(AUTO_ENGADE*12); \ ??input_awaymsg_onkey_2: \ 00000088 ........ LDR R0,??DataTable26 ;; AUTO_ENGADE \ 0000008C 0850C9E7 STRB R5,[R9, +R8] \ 00000090 000090E5 LDR R0,[R0, #+0] \ 00000094 0C10A0E3 MOV R1,#+12 \ 00000098 910000E0 MUL R0,R1,R0 \ 0000009C A40384E5 STR R0,[R4, #+932] 664 away_m=1; \ 000000A0 0100A0E3 MOV R0,#+1 \ 000000A4 A80384E5 STR R0,[R4, #+936] 665 away_timer(); \ 000000A8 ........ BL away_timer 666 // UpdateCLheader(); 667 GeneralFunc_flag1(input_awaymsg_id,1); \ 000000AC C80394E5 LDR R0,[R4, #+968] \ 000000B0 0110A0E3 MOV R1,#+1 \ 000000B4 3D0100EF SWI +317 668 // GeneralFuncF1(1); 669 } 670 671 if(msg->keys==LEFT_SOFT || msg->keys==RED_BUTTON) \ ??input_awaymsg_onkey_0: \ 000000B8 F200D6E1 LDRSH R0,[R6, #+2] \ 000000BC 010050E3 CMP R0,#+1 \ 000000C0 0C005013 CMPNE R0,#+12 \ 000000C4 0800001A BNE ??input_awaymsg_onkey_4 672 { 673 msg_away_timer=0; 674 away_m=0; 675 if(change_back_status) \ 000000C8 B00394E5 LDR R0,[R4, #+944] \ 000000CC A45384E5 STR R5,[R4, #+932] \ 000000D0 A85384E5 STR R5,[R4, #+936] \ 000000D4 000050E3 CMP R0,#+0 \ 000000D8 0400000A BEQ ??input_awaymsg_onkey_5 676 { 677 CurrentStatus=status_rem; \ 000000DC AC0394E5 LDR R0,[R4, #+940] \ 000000E0 980384E5 STR R0,[R4, #+920] 678 set_my_status(); \ 000000E4 ........ BL set_my_status 679 change_back_status=0; \ 000000E8 B05384E5 STR R5,[R4, #+944] 680 } 681 // UpdateCLheader(); 682 } 683 return(0); \ ??input_awaymsg_onkey_4: \ 000000EC 0000A0E3 MOV R0,#+0 \ ??input_awaymsg_onkey_5: \ 000000F0 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 000000F4 F083BDE8 POP {R4-R9,PC} ;; return 684 } 685 \ In segment CODE, align 4, keep-with-next 686 void input_awaymsg_ghook(GUI *gui, int cmd) 687 { \ input_awaymsg_ghook: \ 00000000 00402DE9 PUSH {LR} 688 static SOFTKEY_DESC sk={0x0FFF,0x0000,(int)"Сохранить"}; 689 if (cmd==7) \ 00000004 070051E3 CMP R1,#+7 \ 00000008 0300001A BNE ??input_awaymsg_ghook_0 690 { 691 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} 692 } 693 if(cmd==0xA) \ ??input_awaymsg_ghook_0: \ 0000001C 0A0051E3 CMP R1,#+10 \ 00000020 0100001A BNE ??input_awaymsg_ghook_2 694 { 695 DisableIDLETMR(); // Отключаем таймер выхода по таймауту \ 00000024 7F0100EF SWI +383 \ 00000028 0080BDE8 POP {PC} 696 } 697 if (cmd==0x0C) \ ??input_awaymsg_ghook_2: \ 0000002C 0C0051E3 CMP R1,#+12 \ 00000030 0080BD18 POPNE {PC} 698 { 699 EDIT_SetCursorPos(gui,1); \ 00000034 0110A0E3 MOV R1,#+1 \ 00000038 D40100EF SWI +468 700 } 701 if(cmd==0x03){} 702 } \ 0000003C 0080BDE8 POP {PC} ;; return \ ??input_awaymsg_ghook_1: \ 00000040 ........ DC32 ??sk 703 \ In segment CODE, align 4, keep-with-next 704 void input_awaymsg_locret(void){} \ input_awaymsg_locret: \ 00000000 1EFF2FE1 BX LR ;; return 705 706 SOFTKEY_DESC input_awaymsg_sk[]= 707 { 708 {0x0018,0x0000,(int)"Лев"}, 709 {0x0001,0x0000,(int)"Прав"}, 710 {0x003D,0x0000,(int)LGP_DOIT_PIC} 711 }; 712 713 SOFTKEYSTAB input_awaymsg_skt= 714 { 715 input_awaymsg_sk,0 716 }; 717 718 const INPUTDIA_DESC input_awaymsg_desc= 719 { 720 1, 721 input_awaymsg_onkey, 722 input_awaymsg_ghook, 723 (void *)input_awaymsg_locret, 724 0, 725 &input_awaymsg_skt, 726 {0,NULL,NULL,NULL}, 727 FONT_SMALL, 728 100, 729 101, 730 0, 731 0x00000000, 732 0x40000000 733 }; 734 \ In segment CODE, align 4, keep-with-next 735 void InputAwayMsg() 736 { \ InputAwayMsg: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 737 WSHDR *wss=AllocWS(256); 738 void *ma=malloc_adr(); 739 void *eq=AllocEQueue(ma, mfree_adr()); 740 EDITCONTROL ec; 741 PrepareEditControl(&ec); 742 wsprintf(wss,"%t","Сообщение:\n"); \ 00000004 44519FE5 LDR R5,??InputAwayMsg_0+0x4 ;; input_awaymsg_desc \ 00000008 2CD04DE2 SUB SP,SP,#+44 \ 0000000C 400FA0E3 MOV R0,#+256 \ 00000010 250100EF SWI +293 \ 00000014 0060A0E1 MOV R6,R0 \ 00000018 148000EF SWI +32788 \ 0000001C 0070A0E1 MOV R7,R0 \ 00000020 158000EF SWI +32789 \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0700A0E1 MOV R0,R7 \ 0000002C 630100EF SWI +355 \ 00000030 0040A0E1 MOV R4,R0 \ 00000034 0D00A0E1 MOV R0,SP \ 00000038 640100EF SWI +356 \ 0000003C 4C2085E2 ADD R2,R5,#+76 \ 00000040 411F8FE2 ADR R1,??InputAwayMsg_0 ;; "%t" \ 00000044 0600A0E1 MOV R0,R6 \ 00000048 240100EF SWI +292 743 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 744 AddEditControlToEditQend(eq,&ec,ma); \ 00000068 0720A0E1 MOV R2,R7 \ 0000006C 04108DE2 ADD R1,SP,#+4 \ 00000070 0400A0E1 MOV R0,R4 \ 00000074 660100EF SWI +358 745 746 PrepareEditControl(&ec); \ 00000078 04008DE2 ADD R0,SP,#+4 \ 0000007C 640100EF SWI +356 747 CutWSTR(wss,0); \ 00000080 0010A0E3 MOV R1,#+0 \ 00000084 0600A0E1 MOV R0,R6 \ 00000088 260100EF SWI +294 748 ascii2ws(wss,awayMsg); \ 0000008C ........ LDR R1,??DataTable27 ;; awayMsg \ 00000090 0600A0E1 MOV R0,R6 \ 00000094 ........ _BLF ascii2ws,??ascii2ws??rA 749 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 750 AddEditControlToEditQend(eq,&ec,ma); \ 000000B4 0720A0E1 MOV R2,R7 \ 000000B8 08108DE2 ADD R1,SP,#+8 \ 000000BC 0400A0E1 MOV R0,R4 \ 000000C0 660100EF SWI +358 751 #ifdef kluchnik2 752 PrepareEditControl(&ec); 753 wsprintf(wss,"%t","Сообщение 2:\n"); 754 ConstructEditControl(&ec,ECT_HEADER,ECF_NORMAL_STR,wss,32); 755 AddEditControlToEditQend(eq,&ec,ma); 756 757 ascii2ws(wss,"когда смогу отвечу:)"); 758 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL,wss,255); 759 AddEditControlToEditQend(eq,&ec,ma); 760 #endif 761 patch_header(&input_awaymsg_hdr); \ 000000C4 0060A0E3 MOV R6,#+0 \ 000000C8 B863C5E1 STRH R6,[R5, #+56] \ 000000CC 1800A0E3 MOV R0,#+24 \ 000000D0 BA03C5E1 STRH R0,[R5, #+58] \ 000000D4 888100EF SWI +33160 \ 000000D8 010040E2 SUB R0,R0,#+1 \ 000000DC BC03C5E1 STRH R0,[R5, #+60] \ 000000E0 8A8100EF SWI +33162 \ 000000E4 170080E2 ADD R0,R0,#+23 \ 000000E8 BE03C5E1 STRH R0,[R5, #+62] 762 patch_input(&input_awaymsg_desc); \ 000000EC B861C5E1 STRH R6,[R5, #+24] \ 000000F0 8A8100EF SWI +33162 \ 000000F4 190080E2 ADD R0,R0,#+25 \ 000000F8 BA01C5E1 STRH R0,[R5, #+26] \ 000000FC 888100EF SWI +33160 \ 00000100 010040E2 SUB R0,R0,#+1 \ 00000104 BC01C5E1 STRH R0,[R5, #+28] \ 00000108 898100EF SWI +33161 \ 0000010C 0060A0E1 MOV R6,R0 \ 00000110 8B8100EF SWI +33163 \ 00000114 000046E0 SUB R0,R6,R0 \ 00000118 010040E2 SUB R0,R0,#+1 \ 0000011C BE01C5E1 STRH R0,[R5, #+30] 763 764 input_awaymsg_id=CreateInputTextDialog(&input_awaymsg_desc,&input_awaymsg_hdr,eq,1,0);//создаем диалоговое окно \ 00000120 0000A0E3 MOV R0,#+0 \ 00000124 01002DE9 PUSH {R0} \ 00000128 0130A0E3 MOV R3,#+1 \ 0000012C 0420A0E1 MOV R2,R4 \ 00000130 381085E2 ADD R1,R5,#+56 \ 00000134 0500A0E1 MOV R0,R5 \ 00000138 670100EF SWI +359 \ 0000013C 10109FE5 LDR R1,??InputAwayMsg_0+0x8 ;; i_rc + 968 \ 00000140 000081E5 STR R0,[R1, #+0] 765 } \ 00000144 38D08DE2 ADD SP,SP,#+56 \ 00000148 F080BDE8 POP {R4-R7,PC} ;; return \ ??InputAwayMsg_0: \ 0000014C 25740000 DC8 "%t",+0 \ 00000150 ........ DC32 input_awaymsg_desc \ 00000154 ........ DC32 i_rc + 968 766 767 768 //////////////////////////uptime////////////////////////// 769 #ifdef ELKA 770 GBSTMR sli_tmr; \ In segment CODE, align 4, keep-with-next 771 void SLI_On() 772 { \ SLI_On: \ 00000000 10402DE9 PUSH {R4,LR} 773 if(Is_SLI_On) \ 00000004 ........ LDR R4,??DataTable37 ;; i_rc \ 00000008 E00294E5 LDR R0,[R4, #+736] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0100000A BEQ ??SLI_On_0 774 SLI_SetState(1); \ 00000014 0100A0E3 MOV R0,#+1 \ 00000018 360000EF SWI +54 775 GBS_StartTimerProc(&sli_tmr, IN_TICKS(2) / 20, SLI_Off); \ ??SLI_On_0: \ 0000001C 0C209FE5 LDR R2,??SLI_On_1 ;; SLI_Off \ 00000020 1510A0E3 MOV R1,#+21 \ 00000024 710D84E2 ADD R0,R4,#+7232 \ 00000028 4D0000EF SWI +77 776 } \ 0000002C 1080BDE8 POP {R4,PC} ;; return \ ??SLI_On_1: \ 00000030 ........ DC32 SLI_Off 777 \ In segment CODE, align 4, keep-with-next 778 void SLI_Off() 779 { \ SLI_Off: \ 00000000 00402DE9 PUSH {LR} 780 SLI_SetState(2); \ 00000004 0200A0E3 MOV R0,#+2 \ 00000008 360000EF SWI +54 781 if(total_unread) \ 0000000C ........ LDR R0,??DataTable37 ;; i_rc \ 00000010 181490E5 LDR R1,[R0, #+1048] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0400000A BEQ ??SLI_Off_0 782 GBS_StartTimerProc(&sli_tmr, IN_TICKS(2) / 20, SLI_On); //26*SLI_time2 \ 0000001C 18209FE5 LDR R2,??SLI_Off_1 ;; SLI_On \ 00000020 1510A0E3 MOV R1,#+21 \ 00000024 710D80E2 ADD R0,R0,#+7232 \ 00000028 4D0000EF SWI +77 \ 0000002C 0080BDE8 POP {PC} 783 else 784 SLI_SetState(0); \ ??SLI_Off_0: \ 00000030 0000A0E3 MOV R0,#+0 \ 00000034 360000EF SWI +54 785 } \ 00000038 0080BDE8 POP {PC} ;; return \ ??SLI_Off_1: \ 0000003C ........ DC32 SLI_On 786 \ In segment CODE, align 4, keep-with-next 787 void SLI_check() 788 { 789 if (total_unread) \ SLI_check: \ 00000000 14009FE5 LDR R0,??SLI_check_0 ;; i_rc + 1048 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0080BD08 POPEQ {PC} 790 SLI_On(); \ 00000014 ........ BL SLI_On 791 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??SLI_check_0: \ 0000001C ........ DC32 i_rc + 1048 792 \ In segment CODE, align 4, keep-with-next 793 void SLI_Timer() 794 { 795 GBS_StartTimerProc(&sli_tmr, 262, SLI_check); //262*SLI_time \ SLI_Timer: \ 00000000 14209FE5 LDR R2,??SLI_Timer_0 ;; SLI_check \ 00000004 14009FE5 LDR R0,??SLI_Timer_0+0x4 ;; i_rc + 7232 \ 00000008 00402DE9 PUSH {LR} \ 0000000C 0610A0E3 MOV R1,#+6 \ 00000010 401F81E3 ORR R1,R1,#0x100 \ 00000014 4D0000EF SWI +77 796 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??SLI_Timer_0: \ 0000001C ........ DC32 SLI_check \ 00000020 ........ DC32 i_rc + 7232 797 #endif 798 \ In segment CODE, align 4, keep-with-next 799 void setup_ICONS(void) 800 { \ setup_ICONS: \ 00000000 30402DE9 PUSH {R4,R5,LR} 801 int i=0; \ 00000004 0040A0E3 MOV R4,#+0 802 do 803 { 804 if (!S_ICONS[i]) S_ICONS[i]=(int)MakeGlobalString(ICON_PATH,'\\',icons_names[i]); \ ??setup_ICONS_0: \ 00000008 ........ LDR R0,??DataTable37 ;; i_rc \ 0000000C 045180E0 ADD R5,R0,R4, LSL #+2 \ 00000010 100395E5 LDR R0,[R5, #+784] \ 00000014 000050E3 CMP R0,#+0 \ 00000018 0500001A BNE ??setup_ICONS_1 \ 0000001C ........ LDR R0,??DataTable32 ;; icons_names \ 00000020 5C10A0E3 MOV R1,#+92 \ 00000024 042190E7 LDR R2,[R0, +R4, LSL #+2] \ 00000028 14009FE5 LDR R0,??setup_ICONS_2 ;; ICON_PATH \ 0000002C ........ _BLF MakeGlobalString,??MakeGlobalString??rA \ 00000030 100385E5 STR R0,[R5, #+784] 805 i++; \ ??setup_ICONS_1: \ 00000034 014084E2 ADD R4,R4,#+1 806 } 807 while(ibitmap); \ 0000001C 080090E5 LDR R0,[R0, #+8] \ 00000020 150000EF SWI +21 830 i++; \ ??FreeStatusToIMGHDR_1: \ 00000024 014084E2 ADD R4,R4,#+1 831 } 832 while(i>2,stop_vibra); \ 0000004C 3610A0E3 MOV R1,#+54 \ 00000050 000000EA B ??start_vibra_2 1115 else 1116 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,stop_vibra); \ ??start_vibra_1: \ 00000054 6C10A0E3 MOV R1,#+108 \ ??start_vibra_2: \ 00000058 4D0000EF SWI +77 1117 } 1118 } \ 0000005C 1080BDE8 POP {R4,PC} ;; return \ ??start_vibra_0: \ 00000060 ........ DC32 stop_vibra 1119 \ In segment CODE, align 4, keep-with-next 1120 void stop_vibra(void) 1121 { \ stop_vibra: \ 00000000 00402DE9 PUSH {LR} 1122 SetVibration(0); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 7C0000EF SWI +124 1123 if (--vibra_count) \ 0000000C ........ LDR R0,??DataTable65 ;; i_rc \ 00000010 E41390E5 LDR R1,[R0, #+996] \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 E41380E5 STR R1,[R0, #+996] \ 0000001C 0080BD08 POPEQ {PC} 1124 { 1125 if(VIBR_TYPE) \ 00000020 2C209FE5 LDR R2,??stop_vibra_0 ;; start_vibra \ 00000024 6010A0E3 MOV R1,#+96 \ 00000028 781D81E3 ORR R1,R1,#0x1E00 \ 0000002C 000081E0 ADD R0,R1,R0 \ 00000030 ........ LDR R1,??DataTable52 ;; VIBR_TYPE \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 0100000A BEQ ??stop_vibra_1 1126 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>5,start_vibra); \ 00000040 0610A0E3 MOV R1,#+6 \ 00000044 000000EA B ??stop_vibra_2 1127 else 1128 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,start_vibra); \ ??stop_vibra_1: \ 00000048 6C10A0E3 MOV R1,#+108 \ ??stop_vibra_2: \ 0000004C 4D0000EF SWI +77 1129 } 1130 } \ 00000050 0080BDE8 POP {PC} ;; return \ ??stop_vibra_0: \ 00000054 ........ DC32 start_vibra 1131 \ In segment CODE, align 4, keep-with-next 1132 void start_vibra2(void) 1133 { 1134 void stop_vibra2(void); 1135 1136 SetVibration(vibraPower); \ start_vibra2: \ 00000000 ........ LDR R0,??DataTable49 ;; vibraPower \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C 7C0000EF SWI +124 1137 if(VIBR_TYPE) \ 00000010 ........ LDR R1,??DataTable52 ;; VIBR_TYPE \ 00000014 18009FE5 LDR R0,??start_vibra2_0 ;; i_rc + 7776 \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 14209FE5 LDR R2,??start_vibra2_0+0x4 ;; stop_vibra2 \ 00000020 000051E3 CMP R1,#+0 1138 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>2,stop_vibra2); \ 00000024 3610A013 MOVNE R1,#+54 1139 else 1140 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,stop_vibra2); \ 00000028 6C10A003 MOVEQ R1,#+108 \ 0000002C 4D0000EF SWI +77 1141 } \ 00000030 0080BDE8 POP {PC} ;; return \ ??start_vibra2_0: \ 00000034 ........ DC32 i_rc + 7776 \ 00000038 ........ DC32 stop_vibra2 1142 \ In segment CODE, align 4, keep-with-next 1143 void stop_vibra2(void) 1144 { \ stop_vibra2: \ 00000000 00402DE9 PUSH {LR} 1145 SetVibration(0); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 7C0000EF SWI +124 1146 if (--vibra_count) \ 0000000C ........ LDR R0,??DataTable65 ;; i_rc \ 00000010 E41390E5 LDR R1,[R0, #+996] \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 E41380E5 STR R1,[R0, #+996] \ 0000001C 0080BD08 POPEQ {PC} 1147 { 1148 if(VIBR_TYPE) \ 00000020 2C209FE5 LDR R2,??stop_vibra2_0 ;; start_vibra2 \ 00000024 6010A0E3 MOV R1,#+96 \ 00000028 781D81E3 ORR R1,R1,#0x1E00 \ 0000002C 000081E0 ADD R0,R1,R0 \ 00000030 ........ LDR R1,??DataTable52 ;; VIBR_TYPE \ 00000034 001091E5 LDR R1,[R1, #+0] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 0100000A BEQ ??stop_vibra2_1 1149 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>5,start_vibra2); \ 00000040 0610A0E3 MOV R1,#+6 \ 00000044 000000EA B ??stop_vibra2_2 1150 else 1151 GBS_StartTimerProc(&tmr_vibra,TMR_SECOND>>1,start_vibra2); \ ??stop_vibra2_1: \ 00000048 6C10A0E3 MOV R1,#+108 \ ??stop_vibra2_2: \ 0000004C 4D0000EF SWI +77 1152 } 1153 } \ 00000050 0080BDE8 POP {PC} ;; return \ ??stop_vibra2_0: \ 00000054 ........ DC32 start_vibra2 1154 \ In segment CODE, align 4, keep-with-next 1155 void ChangeVibra(void) 1156 { 1157 if (!(Is_Vibra_Enabled=!(Is_Vibra_Enabled))) \ ChangeVibra: \ 00000000 ........ LDR R0,??DataTable65 ;; i_rc \ 00000004 00402DE9 PUSH {LR} \ 00000008 081390E5 LDR R1,[R0, #+776] \ 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,??DataTable62 ;; 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 081086E2 ADD R1,R6,#+8 \ 0000003C 0500A0E1 MOV R0,R5 \ 00000040 160000EF SWI +22 1199 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 1200 if ((fsize=stat.size)<=0) goto L1; \ 00000060 08709DE5 LDR R7,[SP, #+8] \ 00000064 010057E3 CMP R7,#+1 \ 00000068 070000BA BLT ??LoadTemplates_1 1201 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 1202 { 1203 L1: 1204 strcpy(fn+i,"\\0.txt"); \ ??LoadTemplates_1: \ 0000008C 0610A0E1 MOV R1,R6 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 1A0000EF SWI +26 1205 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 1206 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 1207 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 1208 } 1209 if (f==-1) return 0; \ ??LoadTemplates_2: \ 000000E0 040058E1 CMP R8,R4 \ 000000E4 F1FFFF0A BEQ ??LoadTemplates_4 1210 p=templates_chars=malloc(fsize+1); \ 000000E8 ........ LDR R4,??DataTable65 ;; i_rc \ 000000EC 010087E2 ADD R0,R7,#+1 \ 000000F0 140000EF SWI +20 \ 000000F4 E80384E5 STR R0,[R4, #+1000] \ 000000F8 0060A0E1 MOV R6,R0 1211 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] 1212 fclose(f,&ul); \ 00000118 0D10A0E1 MOV R1,SP \ 0000011C 0800A0E1 MOV R0,R8 \ 00000120 0D0000EF SWI +13 1213 i=0; \ 00000124 0070A0E3 MOV R7,#+0 1214 pp=p; \ 00000128 0680A0E1 MOV R8,R6 \ 0000012C 020000EA B ??LoadTemplates_6 1215 for(;;) 1216 { 1217 c=*p; 1218 if (c<32) 1219 { 1220 if (pp&&(pp!=p)) 1221 { 1222 templates_lines=realloc(templates_lines,(i+1)*sizeof(char *)); 1223 templates_lines[i++]=pp; 1224 } 1225 pp=NULL; 1226 if (!c) break; 1227 *p=0; 1228 } 1229 else 1230 { 1231 if (pp==NULL) pp=p; \ ??LoadTemplates_7: \ 00000130 000058E3 CMP R8,#+0 \ 00000134 0680A001 MOVEQ R8,R6 1232 } 1233 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 EC0394E5 LDR R0,[R4, #+1004] \ 00000158 01A087E2 ADD R10,R7,#+1 \ 0000015C 0A11A0E1 LSL R1,R10,#+2 \ 00000160 BA0000EF SWI +186 \ 00000164 EC0384E5 STR R0,[R4, #+1004] \ 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 1234 } 1235 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 `?` 1236 } 1237 1238 1239 1240 //---------------------- AUTOBOT MESSAGE -------------------------// 1241 1242 1243 #ifdef kluchnik 1244 char *bot_chars; //Собственно файл 1245 char **bot_lines; //Массив указателей на строки 1246 \ In segment CODE, align 4, keep-with-next 1247 void FreeBotMessage(void) 1248 { \ FreeBotMessage: \ 00000000 10402DE9 PUSH {R4,LR} 1249 if (bot_lines) mfree(bot_lines); \ 00000004 ........ LDR R4,??DataTable65 ;; i_rc \ 00000008 F40394E5 LDR R0,[R4, #+1012] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0000000A BEQ ??FreeBotMessage_0 \ 00000014 150000EF SWI +21 1250 if (bot_chars) mfree(bot_chars); \ ??FreeBotMessage_0: \ 00000018 F00394E5 LDR R0,[R4, #+1008] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 0100000A BEQ ??FreeBotMessage_1 \ 00000024 150000EF SWI +21 1251 bot_lines=NULL; \ 00000028 0000A0E3 MOV R0,#+0 \ ??FreeBotMessage_1: \ 0000002C F40384E5 STR R0,[R4, #+1012] 1252 bot_chars=NULL; \ 00000030 F00384E5 STR R0,[R4, #+1008] 1253 } \ 00000034 1080BDE8 POP {R4,PC} ;; return 1254 \ In segment CODE, align 4, keep-with-next 1255 int LoadBotMessage(unsigned int uin) 1256 { \ LoadBotMessage: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 1257 FSTATS stat; 1258 char fn[256]; 1259 int f; 1260 unsigned int ul; 1261 int i; 1262 int fsize; 1263 char *p; 1264 char *pp; 1265 int c; 1266 FreeBotMessage(); 1267 strcpy(fn,TEMPLATES_PATH); 1268 i=strlen(fn); 1269 sprintf(fn+i,"\\bot_%d.txt",uin); \ 00000004 7C619FE5 LDR R6,??LoadBotMessage_0 ;; `?` \ 00000008 4BDF4DE2 SUB SP,SP,#+300 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 ........ BL FreeBotMessage \ 00000014 ........ LDR R1,??DataTable62 ;; 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 0C1086E2 ADD R1,R6,#+12 \ 0000003C 0500A0E1 MOV R0,R5 \ 00000040 160000EF SWI +22 1270 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 ??LoadBotMessage_1 1271 if ((fsize=stat.size)<=0) goto L1; \ 00000060 08709DE5 LDR R7,[SP, #+8] \ 00000064 010057E3 CMP R7,#+1 \ 00000068 070000BA BLT ??LoadBotMessage_1 1272 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 ??LoadBotMessage_2 1273 { 1274 L1: 1275 strcpy(fn+i,"\\bot.txt"); \ ??LoadBotMessage_1: \ 0000008C 0610A0E1 MOV R1,R6 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 1A0000EF SWI +26 1276 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 ??LoadBotMessage_3 \ ??LoadBotMessage_4: \ 000000B0 0000A0E3 MOV R0,#+0 \ ??LoadBotMessage_5: \ 000000B4 4BDF8DE2 ADD SP,SP,#+300 ;; stack cleaning \ 000000B8 F087BDE8 POP {R4-R10,PC} ;; return 1277 if ((fsize=stat.size)<=0) return 0; \ ??LoadBotMessage_3: \ 000000BC 08709DE5 LDR R7,[SP, #+8] \ 000000C0 010057E3 CMP R7,#+1 \ 000000C4 F9FFFFBA BLT ??LoadBotMessage_4 1278 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 1279 } 1280 if (f==-1) return 0; \ ??LoadBotMessage_2: \ 000000E0 040058E1 CMP R8,R4 \ 000000E4 F1FFFF0A BEQ ??LoadBotMessage_4 1281 p=bot_chars=malloc(fsize+1); \ 000000E8 ........ LDR R4,??DataTable65 ;; i_rc \ 000000EC 010087E2 ADD R0,R7,#+1 \ 000000F0 140000EF SWI +20 \ 000000F4 F00384E5 STR R0,[R4, #+1008] \ 000000F8 0060A0E1 MOV R6,R0 1282 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] 1283 fclose(f,&ul); \ 00000118 0D10A0E1 MOV R1,SP \ 0000011C 0800A0E1 MOV R0,R8 \ 00000120 0D0000EF SWI +13 1284 i=0; \ 00000124 0070A0E3 MOV R7,#+0 1285 pp=p; \ 00000128 0680A0E1 MOV R8,R6 \ 0000012C 020000EA B ??LoadBotMessage_6 1286 for(;;) 1287 { 1288 c=*p; 1289 if (c<32) 1290 { 1291 if (pp&&(pp!=p)) 1292 { 1293 bot_lines=realloc(bot_lines,(i+1)*sizeof(char *)); 1294 bot_lines[i++]=pp; 1295 } 1296 pp=NULL; 1297 if (!c) break; 1298 *p=0; 1299 } 1300 else 1301 { 1302 if (pp==NULL) pp=p; \ ??LoadBotMessage_7: \ 00000130 000058E3 CMP R8,#+0 \ 00000134 0680A001 MOVEQ R8,R6 1303 } 1304 p++; \ ??LoadBotMessage_8: \ 00000138 016086E2 ADD R6,R6,#+1 \ ??LoadBotMessage_6: \ 0000013C 0090D6E5 LDRB R9,[R6, #+0] \ 00000140 200059E3 CMP R9,#+32 \ 00000144 F9FFFFAA BGE ??LoadBotMessage_7 \ 00000148 000058E3 CMP R8,#+0 \ 0000014C 06005811 CMPNE R8,R6 \ 00000150 0600000A BEQ ??LoadBotMessage_9 \ 00000154 F40394E5 LDR R0,[R4, #+1012] \ 00000158 01A087E2 ADD R10,R7,#+1 \ 0000015C 0A11A0E1 LSL R1,R10,#+2 \ 00000160 BA0000EF SWI +186 \ 00000164 F40384E5 STR R0,[R4, #+1012] \ 00000168 078180E7 STR R8,[R0, +R7, LSL #+2] \ 0000016C 0A70A0E1 MOV R7,R10 \ ??LoadBotMessage_9: \ 00000170 0080A0E3 MOV R8,#+0 \ 00000174 000059E3 CMP R9,#+0 1305 } 1306 return i; \ 00000178 0700A001 MOVEQ R0,R7 \ 0000017C CCFFFF0A BEQ ??LoadBotMessage_5 \ 00000180 0050C6E5 STRB R5,[R6, #+0] \ 00000184 EBFFFFEA B ??LoadBotMessage_8 \ ??LoadBotMessage_0: \ 00000188 ........ DC32 `?` 1307 } 1308 #endif 1309 1310 //=================================================================== 1311 1312 int RXstate=EOP; //-sizeof(RXpkt)..-1 - receive header, 0..RXpkt.data_len - receive data 1313 \ In segment DATA_Z, align 4, align-sorted 1314 TPKT RXbuf; \ RXbuf: \ 00000000 DS8 16392 \ In segment DATA_Z, align 4, align-sorted 1315 TPKT TXbuf; \ TXbuf: \ 00000000 DS8 16392 1316 1317 int connect_state=0; 1318 1319 int sock=-1; 1320 1321 volatile unsigned long TOTALRECEIVED; 1322 volatile unsigned long TOTALSENDED; 1323 volatile unsigned long ALLTOTALRECEIVED; //by BoBa 10.07 1324 volatile unsigned long ALLTOTALSENDED; 1325 1326 //volatile int sendq_l=0; //Длинна очереди для send 1327 //volatile void *sendq_p=NULL; //указатель очереди 1328 1329 volatile int is_gprs_online=1; 1330 1331 GBSTMR reconnect_tmr; 1332 1333 extern void kill_data(void *p,void (*func_p)(void *)); 1334 \ In segment CODE, align 4, keep-with-next 1335 void ElfKiller(void) 1336 { \ ElfKiller: \ 00000000 00402DE9 PUSH {LR} 1337 extern void *ELF_BEGIN; 1338 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 1339 } 1340 1341 int total_unread; 1342 1343 volatile CLIST *cltop; 1344 1345 volatile unsigned int GROUP_CACHE; //Текущая группа для добавления 1346 1347 //volatile int contactlist_menu_id; 1348 1349 GBSTMR tmr_active; 1350 1351 volatile int edchat_id; 1352 1353 //Применяется для добавления сообщений 1354 //CLIST *edcontact; 1355 //void *edgui_data; 1356 1357 //static int prev_clmenu_itemcount; 1358 \ In segment DATA_Z, align 4, align-sorted 1359 char clm_hdr_text[64]; \ clm_hdr_text: \ 00000000 DS8 64 1360 1361 static const char key_clm_hdr_text[] = LG_CLT9INP; 1362 1363 static const int menusoftkeys[] = {0,1,2}; 1364 static const SOFTKEY_DESC menu_sk[] = 1365 { 1366 {0x0018, 0x0000, (int)LG_SELECT}, 1367 {0x0001, 0x0000, (int)LG_CLOSE}, 1368 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 1369 }; 1370 1371 char clmenu_sk_r[16]; 1372 static const char def_clmenu_sk_r[] = LG_CLOSE; 1373 static const char key_clmenu_sk_r[] = LG_CLEAR; 1374 1375 const SOFTKEYSTAB menu_skt = 1376 { 1377 menu_sk, 0 1378 }; 1379 1380 int tenseconds_to_ping; 1381 \ In segment CODE, align 4, keep-with-next 1382 LOGQ *NewLOGQ(const char *s) 1383 { \ NewLOGQ: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 1384 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 1385 zeromem(p,sizeof(LOGQ)); \ 00000018 6010A0E3 MOV R1,#+96 \ 0000001C 1D0100EF SWI +285 1386 strcpy(p->text,s); \ 00000020 0410A0E1 MOV R1,R4 \ 00000024 600085E2 ADD R0,R5,#+96 \ 00000028 1A0000EF SWI +26 1387 return p; \ 0000002C 0500A0E1 MOV R0,R5 \ 00000030 3080BDE8 POP {R4,R5,PC} ;; return 1388 } 1389 \ In segment CODE, align 4, keep-with-next 1390 LOGQ *LastLOGQ(LOGQ **pp) 1391 { 1392 LOGQ *q=*pp; \ LastLOGQ: \ 00000000 000090E5 LDR R0,[R0, #+0] 1393 if (q) \ 00000004 000050E3 CMP R0,#+0 \ 00000008 1EFF2F01 BXEQ LR \ 0000000C 000000EA B ??LastLOGQ_0 1394 { 1395 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 1396 } 1397 return(q); \ 00000020 1EFF2FE1 BX LR ;; return 1398 } 1399 1400 //Уничтожить лог \ In segment CODE, align 4, keep-with-next 1401 void FreeLOGQ(LOGQ **pp) 1402 { \ FreeLOGQ: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0010A0E1 MOV R1,R0 1403 LOGQ *p=*pp; \ 00000008 000091E5 LDR R0,[R1, #+0] 1404 *pp=NULL; //Сразу обрежем \ 0000000C 0020A0E3 MOV R2,#+0 \ 00000010 002081E5 STR R2,[R1, #+0] \ 00000014 000050E3 CMP R0,#+0 \ 00000018 1080BD08 POPEQ {R4,PC} 1405 while(p) 1406 { 1407 LOGQ *np=p->next; \ ??FreeLOGQ_0: \ 0000001C 004090E5 LDR R4,[R0, #+0] 1408 mfree(p); \ 00000020 150000EF SWI +21 1409 p=np; \ 00000024 0400B0E1 MOVS R0,R4 1410 } \ 00000028 FBFFFF1A BNE ??FreeLOGQ_0 1411 } \ 0000002C 1080BDE8 POP {R4,PC} ;; return 1412 1413 //Удалить элемент из лога \ In segment CODE, align 4, keep-with-next 1414 void RemoveLOGQ(LOGQ **queue, LOGQ *p) 1415 { \ RemoveLOGQ: \ 00000000 00402DE9 PUSH {LR} 1416 LOGQ *q=(LOGQ *)queue; \ 00000004 000000EA B ??RemoveLOGQ_0 1417 LOGQ *qp; 1418 while(qp=q->next) 1419 { 1420 if (qp==p) 1421 { 1422 q->next=p->next; 1423 break; 1424 } 1425 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] 1426 } 1427 mfree(p); //Если элемент вообще не в логе \ ??RemoveLOGQ_2: \ 00000028 0100A0E1 MOV R0,R1 \ 0000002C 150000EF SWI +21 1428 } \ 00000030 0080BDE8 POP {PC} ;; return 1429 1430 //Добавить элемент в лог \ In segment CODE, align 4, keep-with-next 1431 int AddLOGQ(LOGQ **queue, LOGQ *p) 1432 { 1433 LOGQ *q=(LOGQ *)queue; 1434 LOGQ *qp; 1435 int i=0; \ AddLOGQ: \ 00000000 0020A0E3 MOV R2,#+0 \ 00000004 000000EA B ??AddLOGQ_0 1436 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 1437 p->next=NULL; \ 0000001C 003081E5 STR R3,[R1, #+0] 1438 q->next=p; \ 00000020 001080E5 STR R1,[R0, #+0] 1439 return(i+1); //Теперь всего в логе элементов \ 00000024 0200A0E1 MOV R0,R2 \ 00000028 1EFF2FE1 BX LR ;; return 1440 } 1441 \ In segment CODE, align 4, keep-with-next 1442 char *GetLastXTextLOGQ(CLIST *t) 1443 { 1444 LOGQ *p = t->log; \ GetLastXTextLOGQ: \ 00000000 A01090E5 LDR R1,[R0, #+160] 1445 char *s = 0; \ 00000004 0000A0E3 MOV R0,#+0 1446 if(!p) return 0; \ 00000008 000051E3 CMP R1,#+0 \ 0000000C 0500001A BNE ??GetLastXTextLOGQ_0 \ 00000010 1EFF2FE1 BX LR 1447 while(p->next) 1448 { 1449 if((p->type&0x0F)==3) \ ??GetLastXTextLOGQ_1: \ 00000014 0C3091E5 LDR R3,[R1, #+12] \ 00000018 0F3003E2 AND R3,R3,#0xF \ 0000001C 030053E3 CMP R3,#+3 1450 s = p->text; \ 00000020 60008102 ADDEQ R0,R1,#+96 1451 p = p->next; \ 00000024 0210A0E1 MOV R1,R2 1452 } \ ??GetLastXTextLOGQ_0: \ 00000028 002091E5 LDR R2,[R1, #+0] \ 0000002C 000052E3 CMP R2,#+0 \ 00000030 F7FFFF1A BNE ??GetLastXTextLOGQ_1 1453 if((p->type&0x0F)==3) \ 00000034 0C2091E5 LDR R2,[R1, #+12] \ 00000038 0F2002E2 AND R2,R2,#0xF \ 0000003C 030052E3 CMP R2,#+3 1454 s = p->text; \ 00000040 60008102 ADDEQ R0,R1,#+96 1455 return s; \ 00000044 1EFF2FE1 BX LR ;; return 1456 } 1457 \ In segment CODE, align 4, keep-with-next 1458 int GetIconIndex(CLIST *t) 1459 { 1460 unsigned short s; 1461 if (t) \ GetIconIndex: \ 00000000 000050E3 CMP R0,#+0 \ 00000004 3400000A BEQ ??GetIconIndex_0 1462 { 1463 s=t->state; 1464 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 1465 if (t->isunread) \ 0000001C 900090E5 LDR R0,[R0, #+144] \ 00000020 000050E3 CMP R0,#+0 1466 return(IS_MSG); \ 00000024 0D00A013 MOVNE R0,#+13 \ 00000028 1EFF2F11 BXNE LR 1467 else 1468 { 1469 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 1470 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 1471 if ((s&0xF000)==0x3000) return (IS_EVIL); \ 0000004C C00D52E3 CMP R2,#+12288 \ 00000050 0700A003 MOVEQ R0,#+7 \ 00000054 1EFF2F01 BXEQ LR 1472 if ((s&0xF000)==0x4000) return (IS_DEPRESSION); \ 00000058 400C52E3 CMP R2,#+16384 \ 0000005C 0600A003 MOVEQ R0,#+6 \ 00000060 1EFF2F01 BXEQ LR 1473 if ((s&0xF000)==0x5000) return (IS_HOME); \ 00000064 500C52E3 CMP R2,#+20480 \ 00000068 0800A003 MOVEQ R0,#+8 \ 0000006C 1EFF2F01 BXEQ LR 1474 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 1475 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 1476 if (s & 0x0001) return(IS_AWAY); \ ??GetIconIndex_1: \ 00000090 010011E3 TST R1,#0x1 \ 00000094 0200A013 MOVNE R0,#+2 \ 00000098 1EFF2F11 BXNE LR 1477 if (s & 0x0005) return(IS_NA); \ 0000009C 050011E3 TST R1,#0x5 \ 000000A0 0300A013 MOVNE R0,#+3 \ 000000A4 1EFF2F11 BXNE LR 1478 if (s & 0x0011) return(IS_OCCUPIED); \ 000000A8 110011E3 TST R1,#0x11 \ 000000AC 0400A013 MOVNE R0,#+4 \ 000000B0 1EFF2F11 BXNE LR 1479 if (s & 0x0013) return(IS_DND); \ 000000B4 130011E3 TST R1,#0x13 \ 000000B8 0500A013 MOVNE R0,#+5 \ 000000BC 1EFF2F11 BXNE LR 1480 if (s & 0x0002) return(IS_FFC); \ 000000C0 020011E3 TST R1,#0x2 \ 000000C4 EFFFFF1A BNE ??GetIconIndex_2 1481 if (s & 0x0100) return(IS_INVISIBLE); \ 000000C8 400F11E3 TST R1,#0x100 \ 000000CC 0100A013 MOVNE R0,#+1 \ 000000D0 1EFF2F11 BXNE LR 1482 } 1483 } 1484 else 1485 { 1486 return(IS_UNKNOWN); 1487 } 1488 return(IS_ONLINE); \ 000000D4 0B00A0E3 MOV R0,#+11 \ 000000D8 1EFF2FE1 BX LR \ ??GetIconIndex_0: \ 000000DC 0E00A0E3 MOV R0,#+14 \ 000000E0 1EFF2FE1 BX LR ;; return 1489 } 1490 \ In segment CODE, align 4, keep-with-next 1491 LOGQ *FindContactLOGQByAck(TPKT *p) 1492 { \ FindContactLOGQByAck: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 1493 CLIST *t; 1494 LockSched(); \ 00000008 460100EF SWI +326 1495 t=FindContactByUin(p->pkt.uin); \ 0000000C 000094E5 LDR R0,[R4, #+0] \ 00000010 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000014 0050A0E1 MOV R5,R0 1496 UnlockSched(); \ 00000018 470100EF SWI +327 1497 unsigned int id=*((unsigned short*)(p->data)); \ 0000001C B840D4E1 LDRH R4,[R4, #+8] 1498 LOGQ *q; 1499 if (!t) return NULL; \ 00000020 000055E3 CMP R5,#+0 \ 00000024 0000A003 MOVEQ R0,#+0 \ 00000028 3080BD08 POPEQ {R4,R5,PC} 1500 LockSched(); \ 0000002C 460100EF SWI +326 1501 q=t->log; \ 00000030 A05095E5 LDR R5,[R5, #+160] \ 00000034 000000EA B ??FindContactLOGQByAck_0 1502 while(q) 1503 { 1504 if (q->ID==id) break; 1505 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 1506 } 1507 UnlockSched(); \ 0000004C 470100EF SWI +327 1508 return q; \ 00000050 0500A0E1 MOV R0,R5 \ 00000054 3080BDE8 POP {R4,R5,PC} ;; return 1509 } 1510 1511 1512 1513 1514 /*----------------------------- SAVE CONTACT LIST TO FILE --------------------------------*/ 1515 \ In segment CODE, align 4, keep-with-next 1516 void CreateCLFile(void) 1517 { \ CreateCLFile: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 42DF4DE2 SUB SP,SP,#+264 1518 CLIST *t; 1519 t=(CLIST *)(&cltop); \ 00000008 ........ LDR R5,??DataTable74 ;; i_rc + 1052 1520 char *s=malloc(128); 1521 volatile int hFile_cl; 1522 unsigned int io_error_cl = 0; 1523 char fn[256]; 1524 strcpy(fn,TEMPLATES_PATH); 1525 strcat(fn,"\\local.cl"); \ 0000000C E4609FE5 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,??DataTable62 ;; TEMPLATES_PATH \ 00000024 0040A0E1 MOV R4,R0 \ 00000028 08008DE2 ADD R0,SP,#+8 \ 0000002C 1A0000EF SWI +26 \ 00000030 301086E2 ADD R1,R6,#+48 \ 00000034 08008DE2 ADD R0,SP,#+8 \ 00000038 170000EF SWI +23 1526 unlink(fn,&io_error_cl); \ 0000003C 0D10A0E1 MOV R1,SP \ 00000040 08008DE2 ADD R0,SP,#+8 \ 00000044 6B0100EF SWI +363 1527 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] 1528 if(hFile_cl!=-1) \ 00000064 04009DE5 LDR R0,[SP, #+4] \ 00000068 010070E3 CMN R0,#+1 \ 0000006C 1C00001A BNE ??CreateCLFile_1 1529 { 1530 while(t=(CLIST *)(t->next)) 1531 { 1532 if(!t->isgroup && t->uin!=UIN) 1533 { 1534 sprintf(s, ";%d;%s;;;\r\n", t->uin, t->name); 1535 fwrite(hFile_cl, s, strlen(s), &io_error_cl); 1536 } 1537 } 1538 ShowMSG(2,(int)"Saved local.cl"); 1539 } 1540 else ShowMSG(2,(int)"Can't save local.cl"); \ 00000070 0610A0E1 MOV R1,R6 \ ??CreateCLFile_2: \ 00000074 0200A0E3 MOV R0,#+2 \ 00000078 480100EF SWI +328 1541 fclose(hFile_cl, &io_error_cl); \ 0000007C 04009DE5 LDR R0,[SP, #+4] \ 00000080 0D10A0E1 MOV R1,SP \ 00000084 0D0000EF SWI +13 1542 mfree(s); \ 00000088 0400A0E1 MOV R0,R4 \ 0000008C 150000EF SWI +21 1543 } \ 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 0F00001A BNE ??CreateCLFile_1 \ 000000A4 ........ LDR R0,??DataTable85 ;; UIN \ 000000A8 0C2095E5 LDR R2,[R5, #+12] \ 000000AC 000090E5 LDR R0,[R0, #+0] \ 000000B0 000052E1 CMP R2,R0 \ 000000B4 0A00000A BEQ ??CreateCLFile_1 \ 000000B8 143085E2 ADD R3,R5,#+20 \ 000000BC 241086E2 ADD R1,R6,#+36 \ 000000C0 0400A0E1 MOV R0,R4 \ 000000C4 160000EF SWI +22 \ 000000C8 0400A0E1 MOV R0,R4 \ 000000CC 1B0000EF SWI +27 \ 000000D0 0D30A0E1 MOV R3,SP \ 000000D4 0020A0E1 MOV R2,R0 \ 000000D8 04009DE5 LDR R0,[SP, #+4] \ 000000DC 0410A0E1 MOV R1,R4 \ 000000E0 0C0000EF SWI +12 \ ??CreateCLFile_1: \ 000000E4 005095E5 LDR R5,[R5, #+0] \ 000000E8 000055E3 CMP R5,#+0 \ 000000EC E9FFFF1A BNE ??CreateCLFile_3 \ 000000F0 141086E2 ADD R1,R6,#+20 \ 000000F4 DEFFFFEA B ??CreateCLFile_2 \ ??CreateCLFile_0: \ 000000F8 ........ DC32 `?` 1544 1545 /*-----------------------------------------------------------------------------------------*/ 1546 1547 char on_off_buf[128]; 1548 int on_off_timer=0; 1549 char ContactT9Key[32]; 1550 int kopa_online; 1551 int kopa_kontaktu; \ In segment DATA_Z, align 4, align-sorted 1552 char status[64]; \ status: \ 00000000 DS8 64 1553 //void UpdateCLheader(void){}; 1554 1555 \ In segment CODE, align 4, keep-with-next 1556 void ClearContactT9Key(void) 1557 { 1558 zeromem(ContactT9Key,sizeof(ContactT9Key)); \ ClearContactT9Key: \ 00000000 0C009FE5 LDR R0,??ClearContactT9Key_0 ;; i_rc + 1520 \ 00000004 00402DE9 PUSH {LR} \ 00000008 2010A0E3 MOV R1,#+32 \ 0000000C 1D0100EF SWI +285 1559 } \ 00000010 0080BDE8 POP {PC} ;; return \ ??ClearContactT9Key_0: \ 00000014 ........ DC32 i_rc + 1520 1560 \ In segment CODE, align 4, keep-with-next 1561 void AddContactT9Key(int chr) 1562 { \ AddContactT9Key: \ 00000000 30402DE9 PUSH {R4,R5,LR} 1563 int l=strlen(ContactT9Key); \ 00000004 ........ LDR R5,??DataTable65 ;; i_rc \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 5F0E85E2 ADD R0,R5,#+1520 \ 00000010 1B0000EF SWI +27 1564 if (l<(sizeof(ContactT9Key)-1)) \ 00000014 1F0050E3 CMP R0,#+31 1565 { 1566 ContactT9Key[l]=chr; \ 00000018 05008030 ADDCC R0,R0,R5 \ 0000001C F045C035 STRBCC R4,[R0, #+1520] 1567 } 1568 } \ 00000020 3080BDE8 POP {R4,R5,PC} ;; return 1569 \ In segment CODE, align 4, keep-with-next 1570 void BackSpaceContactT9(void) 1571 { \ BackSpaceContactT9: \ 00000000 10402DE9 PUSH {R4,LR} 1572 int l=strlen(ContactT9Key); \ 00000004 ........ LDR R4,??DataTable65 ;; i_rc \ 00000008 5F0E84E2 ADD R0,R4,#+1520 \ 0000000C 1B0000EF SWI +27 1573 if (l) \ 00000010 000050E3 CMP R0,#+0 1574 { 1575 l--; 1576 ContactT9Key[l]=0; \ 00000014 04008010 ADDNE R0,R0,R4 \ 00000018 0010A013 MOVNE R1,#+0 \ 0000001C EF15C015 STRBNE R1,[R0, #+1519] 1577 } 1578 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 1579 1580 1581 void RecountMenu(CLIST *req, int needfocus); 1582 1583 //--------------------------------------------------------------------// 1584 1585 \ In segment CODE, align 4, keep-with-next 1586 void LongPressActionOnChat(CLIST *t,int i) 1587 { \ LongPressActionOnChat: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 1588 switch(i) \ 00000004 ........ LDR R4,??DataTable83 ;; i_rc \ 00000008 ........ LDR R9,??DataTable67 ;; WriteDefSettings \ 0000000C ........ LDR R7,??DataTable76 ;; Canvas \ 00000010 04D04DE2 SUB SP,SP,#+4 \ 00000014 F820A0E3 MOV R2,#+248 \ 00000018 5C2D82E3 ORR R2,R2,#0x1700 \ 0000001C 045082E0 ADD R5,R2,R4 \ 00000020 02A0A0E3 MOV R10,#+2 \ 00000024 0060A0E3 MOV R6,#+0 \ 00000028 01B0A0E3 MOV R11,#+1 \ 0000002C 5F8EA0E3 MOV R8,#+1520 \ 00000030 011041E2 SUB R1,R1,#+1 \ 00000034 0C0051E3 CMP R1,#+12 \ 00000038 F18FBD88 POPHI {R0,R4-R11,PC} \ 0000003C 012F8FE2 ADR R2,??LongPressActionOnChat_0 \ 00000040 0120D2E7 LDRB R2,[R2, R1] \ 00000044 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??LongPressActionOnChat_0: \ 00000048 03101E29 DC8 +3,+16,+30,+41 \ 0000004C 34516971 DC8 +52,+81,+105,+113 \ 00000050 778698AC DC8 +119,+134,+152,+172 \ 00000054 C3000000 DC8 +195,+0,+0,+0 1589 { 1590 case 1: 1591 Is_Sounds_Enabled=!(Is_Sounds_Enabled); \ ??LongPressActionOnChat_1: \ 00000058 D40394E5 LDR R0,[R4, #+980] \ 0000005C 000050E3 CMP R0,#+0 \ 00000060 00B0A013 MOVNE R11,#+0 \ 00000064 D4B384E5 STR R11,[R4, #+980] 1592 if(Is_Sounds_Enabled) \ 00000068 00005BE3 CMP R11,#+0 1593 { 1594 // ShowMSG(1,(int)"Sound 0n"); 1595 strcpy(prmsg,"Sound 0n"); \ 0000006C C71F8712 ADDNE R1,R7,#+796 1596 PrintTimer=2; 1597 } 1598 else 1599 { 1600 // ShowMSG(1,(int)"Sound Off"); 1601 strcpy(prmsg,"Sound Off"); \ 00000070 C41F8702 ADDEQ R1,R7,#+784 \ 00000074 0500A0E1 MOV R0,R5 \ 00000078 1A0000EF SWI +26 1602 PrintTimer=2; \ 0000007C C4A284E5 STR R10,[R4, #+708] 1603 } 1604 SUBPROC((void*)WriteDefSettings); \ 00000080 0900A0E1 MOV R0,R9 \ 00000084 710100EF SWI +369 \ 00000088 F18FBDE8 POP {R0,R4-R11,PC} 1605 break; 1606 case 2: 1607 Is_Vibra_Enabled=!(Is_Vibra_Enabled); \ ??LongPressActionOnChat_2: \ 0000008C 080394E5 LDR R0,[R4, #+776] \ 00000090 000050E3 CMP R0,#+0 \ 00000094 00B0A013 MOVNE R11,#+0 \ 00000098 08B384E5 STR R11,[R4, #+776] 1608 SUBPROC((void*)WriteDefSettings); \ 0000009C 0900A0E1 MOV R0,R9 \ 000000A0 710100EF SWI +369 1609 if(Is_Vibra_Enabled) \ 000000A4 080394E5 LDR R0,[R4, #+776] \ 000000A8 000050E3 CMP R0,#+0 1610 { 1611 // ShowMSG(1,(int)"Vibra On"); 1612 strcpy(prmsg,"Vibra On"); \ 000000AC C11F8712 ADDNE R1,R7,#+772 1613 PrintTimer=2; 1614 } 1615 else 1616 { 1617 // ShowMSG(1,(int)"Vibra Off"); 1618 strcpy(prmsg,"Vibra Off"); \ 000000B0 BE1F8702 ADDEQ R1,R7,#+760 \ ??LongPressActionOnChat_3: \ 000000B4 0500A0E1 MOV R0,R5 \ 000000B8 1A0000EF SWI +26 1619 PrintTimer=2; \ 000000BC C4A284E5 STR R10,[R4, #+708] \ 000000C0 F18FBDE8 POP {R0,R4-R11,PC} 1620 } 1621 break; 1622 case 3: 1623 if(CurrentPrivateStatus!=1) \ ??LongPressActionOnChat_4: \ 000000C4 E00394E5 LDR R0,[R4, #+992] \ 000000C8 010050E3 CMP R0,#+1 \ 000000CC 0300000A BEQ ??LongPressActionOnChat_5 1624 { 1625 SetPrivateStatus(1);//Инвиз \ 000000D0 0100A0E3 MOV R0,#+1 \ 000000D4 ........ _BLF SetPrivateStatus,??SetPrivateStatus??rA 1626 // ShowMSG(1,(int)"Инвиз включен"); 1627 strcpy(prmsg,"Инвиз включен"); \ 000000D8 BA1F87E2 ADD R1,R7,#+744 \ 000000DC F4FFFFEA B ??LongPressActionOnChat_3 1628 PrintTimer=2; 1629 } 1630 else 1631 { 1632 SetPrivateStatus(3); \ ??LongPressActionOnChat_5: \ 000000E0 0300A0E3 MOV R0,#+3 \ 000000E4 ........ _BLF SetPrivateStatus,??SetPrivateStatus??rA 1633 // ShowMSG(1,(int)"Инвиз выключен"); 1634 strcpy(prmsg,"Инвиз выключен"); \ 000000E8 B61F87E2 ADD R1,R7,#+728 \ 000000EC F0FFFFEA B ??LongPressActionOnChat_3 1635 PrintTimer=2; 1636 } 1637 break; 1638 case 4: 1639 Is_Double_Vibra_On=!(Is_Double_Vibra_On); \ ??LongPressActionOnChat_6: \ 000000F0 EC0294E5 LDR R0,[R4, #+748] \ 000000F4 000050E3 CMP R0,#+0 \ 000000F8 00B0A013 MOVNE R11,#+0 \ 000000FC ECB284E5 STR R11,[R4, #+748] 1640 SUBPROC((void*)WriteDefSettings); \ 00000100 0900A0E1 MOV R0,R9 \ 00000104 710100EF SWI +369 1641 if(Is_Double_Vibra_On) \ 00000108 EC0294E5 LDR R0,[R4, #+748] \ 0000010C 000050E3 CMP R0,#+0 \ 00000110 AE1F8702 ADDEQ R1,R7,#+696 1642 { 1643 // ShowMSG(1,(int)"Vibra rem On"); 1644 strcpy(prmsg,"Vibra rem On"); \ 00000114 B21F8712 ADDNE R1,R7,#+712 \ 00000118 E5FFFFEA B ??LongPressActionOnChat_3 1645 PrintTimer=2; 1646 } 1647 else 1648 { 1649 // ShowMSG(1,(int)"Vibra rem Off"); 1650 strcpy(prmsg,"Vibra rem Off"); 1651 PrintTimer=2; 1652 } 1653 break; 1654 case 5: 1655 { 1656 CLIST *cl; 1657 cl=(CLIST *)(&cltop); \ ??LongPressActionOnChat_7: \ 0000011C 750F48E2 SUB R0,R8,#+468 \ 00000120 049080E0 ADD R9,R0,R4 \ 00000124 060000EA B ??LongPressActionOnChat_8 1658 while(cl=(CLIST *)(cl->next)) 1659 { 1660 if(cl->log) \ ??LongPressActionOnChat_9: \ 00000128 A00099E5 LDR R0,[R9, #+160] \ 0000012C 000050E3 CMP R0,#+0 \ 00000130 0300000A BEQ ??LongPressActionOnChat_8 1661 { 1662 FreeLOGQ(&cl->log); \ 00000134 A00089E2 ADD R0,R9,#+160 \ 00000138 ........ BL FreeLOGQ 1663 cl->msg_count=0; \ 0000013C B06089E5 STR R6,[R9, #+176] 1664 cl->isactive=0; \ 00000140 AC6089E5 STR R6,[R9, #+172] 1665 } 1666 } \ ??LongPressActionOnChat_8: \ 00000144 009099E5 LDR R9,[R9, #+0] \ 00000148 000059E3 CMP R9,#+0 \ 0000014C F5FFFF1A BNE ??LongPressActionOnChat_9 1667 if(strlen(ContactT9Key)) ClearContactT9Key(); \ 00000150 040088E0 ADD R0,R8,R4 \ 00000154 1B0000EF SWI +27 \ 00000158 000050E3 CMP R0,#+0 \ 0000015C 0200000A BEQ ??LongPressActionOnChat_10 \ 00000160 2010A0E3 MOV R1,#+32 \ 00000164 040088E0 ADD R0,R8,R4 \ 00000168 1D0100EF SWI +285 1668 RecountMenu(NULL,1); \ ??LongPressActionOnChat_10: \ 0000016C 0110A0E3 MOV R1,#+1 \ 00000170 0600A0E1 MOV R0,R6 \ 00000174 ........ BL RecountMenu 1669 // ShowMSG(1,(int)"All chat clear!"); 1670 strcpy(prmsg,"All chat clear!"); \ 00000178 AA1F87E2 ADD R1,R7,#+680 \ 0000017C 0500A0E1 MOV R0,R5 \ 00000180 1A0000EF SWI +26 1671 PrintTimer=3; \ 00000184 0300A0E3 MOV R0,#+3 \ 00000188 C40284E5 STR R0,[R4, #+708] 1672 break; \ 0000018C F18FBDE8 POP {R0,R4-R11,PC} 1673 } 1674 case 6: 1675 if(!away_m) \ ??LongPressActionOnChat_11: \ 00000190 A80394E5 LDR R0,[R4, #+936] \ 00000194 000050E3 CMP R0,#+0 \ 00000198 0A00001A BNE ??LongPressActionOnChat_12 1676 { 1677 away_m=!away_m; \ 0000019C A8B384E5 STR R11,[R4, #+936] 1678 GBS_StopTimer(&away_tmr); \ 000001A0 560D88E2 ADD R0,R8,#+5504 \ 000001A4 040080E0 ADD R0,R0,R4 \ 000001A8 440100EF SWI +324 1679 msg_away_timer=AUTO_ENGADE*12; \ 000001AC ........ LDR R0,??DataTable69 ;; AUTO_ENGADE \ 000001B0 0C10A0E3 MOV R1,#+12 \ 000001B4 000090E5 LDR R0,[R0, #+0] \ 000001B8 910000E0 MUL R0,R1,R0 \ 000001BC A40384E5 STR R0,[R4, #+932] 1680 InputAwayMsg(); \ 000001C0 ........ BL InputAwayMsg \ 000001C4 F18FBDE8 POP {R0,R4-R11,PC} 1681 1682 } 1683 else 1684 { 1685 msg_away_timer=0; 1686 away_m=!away_m; 1687 if(change_back_status) \ ??LongPressActionOnChat_12: \ 000001C8 B00394E5 LDR R0,[R4, #+944] \ 000001CC A46384E5 STR R6,[R4, #+932] \ 000001D0 A86384E5 STR R6,[R4, #+936] \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 F18FBD08 POPEQ {R0,R4-R11,PC} 1688 { 1689 CurrentStatus=status_rem; \ 000001DC AC0394E5 LDR R0,[R4, #+940] \ 000001E0 980384E5 STR R0,[R4, #+920] 1690 set_my_status(); \ 000001E4 ........ BL set_my_status 1691 change_back_status=0; \ 000001E8 B06384E5 STR R6,[R4, #+944] \ 000001EC F18FBDE8 POP {R0,R4-R11,PC} 1692 } 1693 } 1694 // UpdateCLheader(); 1695 break; 1696 case 7: 1697 { 1698 Show_XTX=!(Show_XTX); \ ??LongPressActionOnChat_13: \ 000001F0 B40394E5 LDR R0,[R4, #+948] \ 000001F4 000050E3 CMP R0,#+0 \ 000001F8 00B0A013 MOVNE R11,#+0 \ 000001FC B4B384E5 STR R11,[R4, #+948] 1699 if(Show_XTX) \ 00000200 00005BE3 CMP R11,#+0 \ 00000204 9F1F8702 ADDEQ R1,R7,#+636 1700 { 1701 // ShowMSG(1,(int)"Default show x-status"); 1702 strcpy(prmsg,"Default show x-status"); \ 00000208 A41F8712 ADDNE R1,R7,#+656 \ 0000020C A8FFFFEA B ??LongPressActionOnChat_3 1703 PrintTimer=2; 1704 } 1705 else 1706 { 1707 // ShowMSG(1,(int)"Default show time"); 1708 strcpy(prmsg,"Default show time"); 1709 PrintTimer=2; 1710 } 1711 } 1712 break; 1713 case 8: 1714 { 1715 WSHDR *ws; 1716 ws=AllocWS(150); \ ??LongPressActionOnChat_14: \ 00000210 9600A0E3 MOV R0,#+150 \ 00000214 250100EF SWI +293 1717 str_2ws(ws,suc_config_name,128); \ 00000218 ........ LDR R1,??DataTable70 ;; suc_config_name \ 0000021C 0040A0E1 MOV R4,R0 \ 00000220 8020A0E3 MOV R2,#+128 \ 00000224 060000EA B ??LongPressActionOnChat_15 1718 ExecuteFile(ws,0,0); 1719 FreeWS(ws); 1720 } 1721 break; 1722 case 9: 1723 { 1724 WSHDR *ws; 1725 ws=AllocWS(150); \ ??LongPressActionOnChat_16: \ 00000228 9600A0E3 MOV R0,#+150 \ 0000022C 250100EF SWI +293 \ 00000230 0040A0E1 MOV R4,R0 1726 str_2ws(ws,suc_config_name_mod,128); \ 00000234 ........ LDR R0,??DataTable71 ;; suc_config_name_mod \ 00000238 8020A0E3 MOV R2,#+128 \ 0000023C 001090E5 LDR R1,[R0, #+0] \ 00000240 0400A0E1 MOV R0,R4 \ ??LongPressActionOnChat_15: \ 00000244 6C0100EF SWI +364 1727 ExecuteFile(ws,0,0); \ 00000248 0020A0E3 MOV R2,#+0 \ 0000024C 0210A0E1 MOV R1,R2 \ 00000250 0400A0E1 MOV R0,R4 \ 00000254 940000EF SWI +148 1728 FreeWS(ws); \ 00000258 0400A0E1 MOV R0,R4 \ 0000025C 290100EF SWI +297 \ 00000260 F18FBDE8 POP {R0,R4-R11,PC} 1729 } 1730 break; 1731 case 10://ping 1732 { 1733 janis=1; \ ??LongPressActionOnChat_17: \ 00000264 ........ LDR R0,??DataTable72 ;; janis \ 00000268 00B080E5 STR R11,[R0, #+0] 1734 TPKT *p; 1735 p=malloc(sizeof(PKT)+sizeof(TTime)); \ 0000026C 1000A0E3 MOV R0,#+16 \ 00000270 140000EF SWI +20 \ 00000274 0040A0E1 MOV R4,R0 1736 GetDateTime(NULL,(TTime *)p->data); \ 00000278 081084E2 ADD R1,R4,#+8 \ 0000027C 0000A0E3 MOV R0,#+0 \ 00000280 B40000EF SWI +180 1737 p->pkt.uin=0; \ 00000284 006084E5 STR R6,[R4, #+0] 1738 p->pkt.type=T_ECHO; \ 00000288 1200A0E3 MOV R0,#+18 \ 0000028C B400C4E1 STRH R0,[R4, #+4] 1739 p->pkt.data_len=sizeof(TTime); \ 00000290 0800A0E3 MOV R0,#+8 \ 00000294 B600C4E1 STRH R0,[R4, #+6] 1740 SUBPROC((void *)SendAnswer,0,p); \ 00000298 ........ LDR R0,??DataTable86 ;; SendAnswer \ 0000029C 0420A0E1 MOV R2,R4 \ 000002A0 0610A0E1 MOV R1,R6 \ 000002A4 710100EF SWI +369 \ 000002A8 F18FBDE8 POP {R0,R4-R11,PC} 1741 } 1742 break; 1743 case 11://go to idle 1744 { 1745 ClearContactT9Key(); \ ??LongPressActionOnChat_18: \ 000002AC 2010A0E3 MOV R1,#+32 \ 000002B0 040088E0 ADD R0,R8,R4 \ 000002B4 1D0100EF SWI +285 1746 RecountMenu(NULL,1); \ 000002B8 0110A0E3 MOV R1,#+1 \ 000002BC 0600A0E1 MOV R0,R6 \ 000002C0 ........ BL RecountMenu 1747 silenthide=1; \ 000002C4 CCB384E5 STR R11,[R4, #+972] 1748 gipc.name_to=ipc_xtask_name; \ 000002C8 DE0F87E2 ADD R0,R7,#+888 \ 000002CC EC0084E5 STR R0,[R4, #+236] 1749 gipc.name_from=ipc_my_name; \ 000002D0 D60F87E2 ADD R0,R7,#+856 \ 000002D4 F00084E5 STR R0,[R4, #+240] 1750 gipc.data=0; \ 000002D8 F46084E5 STR R6,[R4, #+244] 1751 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); \ 000002DC EC3084E2 ADD R3,R4,#+236 \ 000002E0 0B20A0E1 MOV R2,R11 \ 000002E4 B010A0E3 MOV R1,#+176 \ 000002E8 DE1C81E3 ORR R1,R1,#0xDE00 \ 000002EC 0900A0E3 MOV R0,#+9 \ 000002F0 420C80E3 ORR R0,R0,#0x4200 \ 000002F4 000100EF SWI +256 \ 000002F8 F18FBDE8 POP {R0,R4-R11,PC} 1752 } 1753 break; 1754 case 12://hide & lock 1755 { 1756 ClearContactT9Key(); \ ??LongPressActionOnChat_19: \ 000002FC 2010A0E3 MOV R1,#+32 \ 00000300 040088E0 ADD R0,R8,R4 \ 00000304 1D0100EF SWI +285 1757 RecountMenu(NULL,1); \ 00000308 0110A0E3 MOV R1,#+1 \ 0000030C 0600A0E1 MOV R0,R6 \ 00000310 ........ BL RecountMenu 1758 gipc.name_to=ipc_xtask_name; \ 00000314 DE0F87E2 ADD R0,R7,#+888 \ 00000318 EC0084E5 STR R0,[R4, #+236] 1759 gipc.name_from=ipc_my_name; \ 0000031C D60F87E2 ADD R0,R7,#+856 \ 00000320 F00084E5 STR R0,[R4, #+240] 1760 gipc.data=0; \ 00000324 F46084E5 STR R6,[R4, #+244] 1761 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); \ 00000328 EC3084E2 ADD R3,R4,#+236 \ 0000032C 0B20A0E1 MOV R2,R11 \ 00000330 B010A0E3 MOV R1,#+176 \ 00000334 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000338 0900A0E3 MOV R0,#+9 \ 0000033C 420C80E3 ORR R0,R0,#0x4200 \ 00000340 000100EF SWI +256 1762 if (IsUnlocked()) \ 00000344 430000EF SWI +67 \ 00000348 000050E3 CMP R0,#+0 \ 0000034C F18FBD08 POPEQ {R0,R4-R11,PC} 1763 { 1764 KbdLock(); \ 00000350 A90000EF SWI +169 \ 00000354 F18FBDE8 POP {R0,R4-R11,PC} 1765 } 1766 // return(-1); 1767 } 1768 break; 1769 case 13://users menu 1770 { 1771 int CreateContactMenu(CLIST *t); 1772 if(!t->isgroup) \ ??LongPressActionOnChat_20: \ 00000358 081090E5 LDR R1,[R0, #+8] \ 0000035C 000051E3 CMP R1,#+0 \ 00000360 F18FBD18 POPNE {R0,R4-R11,PC} 1773 CreateContactMenu(t); \ 00000364 ........ BL CreateContactMenu 1774 } 1775 break; 1776 }//switch() 1777 } \ ??LongPressActionOnChat_21: \ 00000368 F18FBDE8 POP {R0,R4-R11,PC} ;; return 1778 1779 //{"Без действия","Звук","Вибра","Инвиз","Реж.напоминания","Очистить чаты","Автоответчик","Показ.хстат/время","Конфиг","Конфиг мода","Пинг","Заблокировать","На гэ","Меню юзера"} 1780 \ In segment CODE, align 4, keep-with-next 1781 void LongPressAction(CLIST *t,int key) 1782 { \ LongPressAction: \ 00000000 00402DE9 PUSH {LR} 1783 switch(key) \ 00000004 041041E2 SUB R1,R1,#+4 \ 00000008 350051E3 CMP R1,#+53 \ 0000000C 0080BD88 POPHI {PC} \ 00000010 012F8FE2 ADR R2,??LongPressAction_0 \ 00000014 0120D2E7 LDRB R2,[R2, R1] \ 00000018 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??LongPressAction_0: \ 0000001C 292C2C2C DC8 +41,+44,+44,+44 \ 00000020 2C2C2C2C DC8 +44,+44,+44,+44 \ 00000024 2C2C2C2C DC8 +44,+44,+44,+44 \ 00000028 2C2C2C2C DC8 +44,+44,+44,+44 \ 0000002C 2C2C2C2C DC8 +44,+44,+44,+44 \ 00000030 2C2C2C2C DC8 +44,+44,+44,+44 \ 00000034 2C2C2C2C DC8 +44,+44,+44,+44 \ 00000038 2C2C2C27 DC8 +44,+44,+44,+39 \ 0000003C 2C2C2C2C DC8 +44,+44,+44,+44 \ 00000040 2C2C252C DC8 +44,+44,+37,+44 \ 00000044 2C2C2C2C DC8 +44,+44,+44,+44 \ 00000048 0D0F1317 DC8 +13,+15,+19,+23 \ 0000004C 191B1D1F DC8 +25,+27,+29,+31 \ 00000050 21230000 DC8 +33,+35,+0,+0 1784 { 1785 case '0': LongPressActionOnChat(t,longAct_0); break; \ ??LongPressAction_1: \ 00000054 78109FE5 LDR R1,??LongPressAction_2 ;; longAct_0 \ 00000058 040000EA B ??LongPressAction_3 1786 case '1': LongPressActionOnChat(t,longAct_1); break; \ ??LongPressAction_4: \ 0000005C 74109FE5 LDR R1,??LongPressAction_2+0x4 ;; longAct_1 \ 00000060 001091E5 LDR R1,[R1, #+0] \ 00000064 ........ BL LongPressActionOnChat \ 00000068 0080BDE8 POP {PC} 1787 case '2': LongPressActionOnChat(t,longAct_2); break; \ ??LongPressAction_5: \ 0000006C 68109FE5 LDR R1,??LongPressAction_2+0x8 ;; longAct_2 \ ??LongPressAction_3: \ 00000070 001091E5 LDR R1,[R1, #+0] \ 00000074 ........ BL LongPressActionOnChat \ 00000078 0080BDE8 POP {PC} 1788 case '3': LongPressActionOnChat(t,longAct_3); break; \ ??LongPressAction_6: \ 0000007C 5C109FE5 LDR R1,??LongPressAction_2+0xC ;; longAct_3 \ 00000080 FAFFFFEA B ??LongPressAction_3 1789 case '4': LongPressActionOnChat(t,longAct_4); break; \ ??LongPressAction_7: \ 00000084 58109FE5 LDR R1,??LongPressAction_2+0x10 ;; longAct_4 \ 00000088 F8FFFFEA B ??LongPressAction_3 1790 case '5': LongPressActionOnChat(t,longAct_5); break; \ ??LongPressAction_8: \ 0000008C 54109FE5 LDR R1,??LongPressAction_2+0x14 ;; longAct_5 \ 00000090 F6FFFFEA B ??LongPressAction_3 1791 case '6': LongPressActionOnChat(t,longAct_6); break; \ ??LongPressAction_9: \ 00000094 50109FE5 LDR R1,??LongPressAction_2+0x18 ;; longAct_6 \ 00000098 F4FFFFEA B ??LongPressAction_3 1792 case '7': LongPressActionOnChat(t,longAct_7); break; \ ??LongPressAction_10: \ 0000009C 4C109FE5 LDR R1,??LongPressAction_2+0x1C ;; longAct_7 \ 000000A0 F2FFFFEA B ??LongPressAction_3 1793 case '8': LongPressActionOnChat(t,longAct_8); break; \ ??LongPressAction_11: \ 000000A4 48109FE5 LDR R1,??LongPressAction_2+0x20 ;; longAct_8 \ 000000A8 F0FFFFEA B ??LongPressAction_3 1794 case '9': LongPressActionOnChat(t,longAct_9); break; \ ??LongPressAction_12: \ 000000AC 44109FE5 LDR R1,??LongPressAction_2+0x24 ;; longAct_9 \ 000000B0 EEFFFFEA B ??LongPressAction_3 1795 case '*': LongPressActionOnChat(t,longAct_10); break; \ ??LongPressAction_13: \ 000000B4 40109FE5 LDR R1,??LongPressAction_2+0x28 ;; longAct_10 \ 000000B8 ECFFFFEA B ??LongPressAction_3 1796 case '#': LongPressActionOnChat(t,longAct_11); break; \ ??LongPressAction_14: \ 000000BC 3C109FE5 LDR R1,??LongPressAction_2+0x2C ;; longAct_11 \ 000000C0 EAFFFFEA B ??LongPressAction_3 1797 case RIGHT_SOFT: LongPressActionOnChat(t,longAct_RB); break; \ ??LongPressAction_15: \ 000000C4 38109FE5 LDR R1,??LongPressAction_2+0x30 ;; longAct_RB \ 000000C8 001091E5 LDR R1,[R1, #+0] \ 000000CC ........ BL LongPressActionOnChat 1798 } 1799 } \ ??LongPressAction_16: \ 000000D0 0080BDE8 POP {PC} ;; return \ ??LongPressAction_2: \ 000000D4 ........ DC32 longAct_0 \ 000000D8 ........ DC32 longAct_1 \ 000000DC ........ DC32 longAct_2 \ 000000E0 ........ DC32 longAct_3 \ 000000E4 ........ DC32 longAct_4 \ 000000E8 ........ DC32 longAct_5 \ 000000EC ........ DC32 longAct_6 \ 000000F0 ........ DC32 longAct_7 \ 000000F4 ........ DC32 longAct_8 \ 000000F8 ........ DC32 longAct_9 \ 000000FC ........ DC32 longAct_10 \ 00000100 ........ DC32 longAct_11 \ 00000104 ........ DC32 longAct_RB 1800 1801 char hostbuf2[128]; 1802 1803 \ In segment CODE, align 4, keep-with-next 1804 void GetOnTotalContact(int group_id,int *_onlinetotal) 1805 { 1806 CLIST *t; 1807 t=(CLIST *)&cltop; \ GetOnTotalContact: \ 00000000 ........ LDR R2,??DataTable74 ;; i_rc + 1052 \ 00000004 30002DE9 PUSH {R4,R5} 1808 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 1809 while((t=t->next)) 1810 { 1811 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 1812 { 1813 total++; 1814 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 1815 } 1816 } \ ??GetOnTotalContact_0: \ 00000040 002092E5 LDR R2,[R2, #+0] \ 00000044 000052E3 CMP R2,#+0 \ 00000048 F3FFFF1A BNE ??GetOnTotalContact_1 1817 _onlinetotal[0]=online; \ 0000004C 003081E5 STR R3,[R1, #+0] 1818 _onlinetotal[1]=total; \ 00000050 04C081E5 STR R12,[R1, #+4] 1819 } \ 00000054 3000BDE8 POP {R4,R5} \ 00000058 1EFF2FE1 BX LR ;; return 1820 1821 //=============================================================================================== 1822 1823 int DNR_ID=0; 1824 int DNR_TRIES=3; 1825 1826 char hostname[128]; //2058 che toka 128? :) 1827 1828 int host_counter = 0; 1829 1830 //--------------------------------------------------------------------------- 1831 \ In segment CODE, align 4, keep-with-next 1832 const char *GetHost(int cnt, const char *str, char *buf) 1833 { 1834 const char *tmp = str, *begin, *end; \ GetHost: \ 00000000 0130A0E1 MOV R3,R1 1835 if(cnt) \ 00000004 000050E3 CMP R0,#+0 \ 00000008 0100001A BNE ??GetHost_0 \ 0000000C 180000EA B ??GetHost_1 1836 { 1837 for(;cnt;cnt--) 1838 { 1839 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 1840 if(!*str) str = tmp; \ 00000030 00005CE3 CMP R12,#+0 \ 00000034 0200001A BNE ??GetHost_3 \ 00000038 0310A0E1 MOV R1,R3 \ 0000003C 000000EA B ??GetHost_3 1841 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 1842 if(!*str) str = tmp; \ ??GetHost_5: \ 00000064 00005CE3 CMP R12,#+0 \ 00000068 0310A001 MOVEQ R1,R3 1843 } \ 0000006C 010050E2 SUBS R0,R0,#+1 \ 00000070 E7FFFF1A BNE ??GetHost_0 1844 } 1845 tmp = buf; \ ??GetHost_1: \ 00000074 0200A0E1 MOV R0,R2 1846 begin = str; \ 00000078 0130A0E1 MOV R3,R1 \ 0000007C 000000EA B ??GetHost_6 1847 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 1848 end = str; 1849 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 1861 } 1862 } 1863 //--------------------------------------------------------------------------- \ In segment CODE, align 4, keep-with-next 1864 int GetPort(int cnt, const char *str) 1865 { \ GetPort: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 1866 const char *tmp = str; \ 00000008 01C0A0E1 MOV R12,R1 1867 char numbuf[6], numcnt = 0; \ 0000000C 0020A0E3 MOV R2,#+0 \ 00000010 0030A0E3 MOV R3,#+0 1868 if(cnt) \ 00000014 000050E3 CMP R0,#+0 \ 00000018 0100001A BNE ??GetPort_0 \ 0000001C 180000EA B ??GetPort_1 1869 { 1870 for(;cnt;cnt--) 1871 { 1872 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 1873 if(!*str) str = tmp; \ 00000040 000054E3 CMP R4,#+0 \ 00000044 0200001A BNE ??GetPort_3 \ 00000048 0C10A0E1 MOV R1,R12 \ 0000004C 000000EA B ??GetPort_3 1874 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 1875 if(!*str) str = tmp; \ ??GetPort_5: \ 00000074 000054E3 CMP R4,#+0 \ 00000078 0C10A001 MOVEQ R1,R12 1876 } \ 0000007C 010050E2 SUBS R0,R0,#+1 \ 00000080 E7FFFF1A BNE ??GetPort_0 1877 } 1878 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 1879 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} 1880 str++; 1881 numbuf[5] = 0; \ 000000BC 0520CDE5 STRB R2,[SP, #+5] \ 000000C0 030000EA B ??GetPort_7 1882 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 1883 numbuf[numcnt] = 0; //2058 \ ??GetPort_9: \ 00000100 0020C0E5 STRB R2,[R0, #+0] 1884 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 1885 1886 } 1887 // 1888 //--------------------------------------------------------------------------- \ In segment CODE, align 4, keep-with-next 1889 int GetHostsCount(const char *str) 1890 { 1891 char cnt = 1; \ GetHostsCount: \ 00000000 0110A0E3 MOV R1,#+1 \ 00000004 000000EA B ??GetHostsCount_0 1892 for(;cnt;cnt++) 1893 { 1894 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 1895 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 1896 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 1897 if(!*str) return cnt; \ ??GetHostsCount_5: \ 0000005C 000052E3 CMP R2,#+0 \ 00000060 F2FFFF0A BEQ ??GetHostsCount_3 1898 } \ 00000064 011081E2 ADD R1,R1,#+1 \ 00000068 FF1011E2 ANDS R1,R1,#0xFF \ 0000006C E6FFFF1A BNE ??GetHostsCount_0 1899 return 0; \ 00000070 0000A0E3 MOV R0,#+0 \ 00000074 1EFF2FE1 BX LR ;; return 1900 } 1901 //--------------------------------------------------------------------------- 1902 \ In segment CODE, align 4, keep-with-next 1903 void create_connect(void) 1904 { \ create_connect: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 1905 // static int host_counter = 0; 1906 char hostbuf[128], buf[128]; 1907 int hostport; 1908 int ***p_res=NULL; 1909 void do_reconnect(void); 1910 SOCK_ADDR sa; 1911 //Устанавливаем соединение 1912 connect_state = 0; \ 00000004 ........ LDR R5,??DataTable83 ;; i_rc 1913 int err; 1914 unsigned int ip; 1915 GBS_DelTimer(&reconnect_tmr); 1916 if (!IsGPRSEnabled()) \ 00000008 ........ LDR R8,??DataTable76 ;; Canvas \ 0000000C 45DF4DE2 SUB SP,SP,#+276 \ 00000010 0040A0E3 MOV R4,#+0 \ 00000014 00408DE5 STR R4,[SP, #+0] \ 00000018 FC4385E5 STR R4,[R5, #+1020] \ 0000001C 7000A0E3 MOV R0,#+112 \ 00000020 780D80E3 ORR R0,R0,#0x1E00 \ 00000024 056080E0 ADD R6,R0,R5 \ 00000028 0600A0E1 MOV R0,R6 \ 0000002C 8C0100EF SWI +396 \ 00000030 5000A0E3 MOV R0,#+80 \ 00000034 700D80E3 ORR R0,R0,#0x1C00 \ 00000038 057080E0 ADD R7,R0,R5 \ 0000003C A70000EF SWI +167 \ 00000040 000050E3 CMP R0,#+0 \ 00000044 0400001A BNE ??create_connect_0 1917 { 1918 is_gprs_online=0; \ 00000048 144485E5 STR R4,[R5, #+1044] 1919 strcpy(logmsg,LG_GRWAITFORGPRS); \ 0000004C 991F88E2 ADD R1,R8,#+612 \ 00000050 0700A0E1 MOV R0,R7 \ 00000054 1A0000EF SWI +26 1920 SMART_REDRAW(); \ 00000058 870000EA B ??create_connect_1 1921 return; 1922 } 1923 DNR_ID=0; 1924 *socklasterr()=0; 1925 if(host_counter > GetHostsCount(NATICQ_HOST)-1) host_counter = 0; //2058 \ ??create_connect_0: \ 0000005C 98929FE5 LDR R9,??create_connect_2+0x4 ;; NATICQ_HOST \ 00000060 384485E5 STR R4,[R5, #+1080] \ 00000064 7C8100EF SWI +33148 \ 00000068 004080E5 STR R4,[R0, #+0] \ 0000006C 0900A0E1 MOV R0,R9 \ 00000070 ........ BL GetHostsCount \ 00000074 401495E5 LDR R1,[R5, #+1088] \ 00000078 010040E2 SUB R0,R0,#+1 \ 0000007C 010050E1 CMP R0,R1 \ 00000080 404485B5 STRLT R4,[R5, #+1088] 1926 GetHost(host_counter, NATICQ_HOST, hostbuf); \ 00000084 400495E5 LDR R0,[R5, #+1088] \ 00000088 14208DE2 ADD R2,SP,#+20 \ 0000008C 0910A0E1 MOV R1,R9 \ 00000090 ........ BL GetHost 1927 hostport = GetPort(host_counter, NATICQ_HOST); \ 00000094 400495E5 LDR R0,[R5, #+1088] \ 00000098 0910A0E1 MOV R1,R9 \ 0000009C ........ BL GetPort \ 000000A0 0090A0E1 MOV R9,R0 1928 host_counter++; \ 000000A4 400495E5 LDR R0,[R5, #+1088] 1929 1930 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 400485E5 STR R0,[R5, #+1088] \ 000000B4 14208DE2 ADD R2,SP,#+20 \ 000000B8 941F88E2 ADD R1,R8,#+592 \ 000000BC A000A0E3 MOV R0,#+160 \ 000000C0 7C0D80E3 ORR R0,R0,#0x1F00 \ 000000C4 050080E0 ADD R0,R0,R5 \ 000000C8 160000EF SWI +22 1931 //strcpy(hostbuf2, hostbuf); //vyvod host v get_online_time 1932 zeromem(hostbuf2,128); \ 000000CC 2000A0E3 MOV R0,#+32 \ 000000D0 7C0D80E3 ORR R0,R0,#0x1F00 \ 000000D4 05A080E0 ADD R10,R0,R5 \ 000000D8 8010A0E3 MOV R1,#+128 \ 000000DC 0A00A0E1 MOV R0,R10 \ 000000E0 1D0100EF SWI +285 1933 sprintf(hostbuf2, percent_s,hostbuf); \ 000000E4 14208DE2 ADD R2,SP,#+20 \ 000000E8 081088E2 ADD R1,R8,#+8 \ 000000EC 0A00A0E1 MOV R0,R10 1934 strcpy(logmsg,buf); 1935 SMART_REDRAW(); 1936 1937 ip=str2ip(hostbuf); \ 000000F0 ........ LDR R10,??DataTable77 ;; 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 1938 if (ip!=0xFFFFFFFF) 1939 { 1940 sa.ip=ip; \ 0000011C 08008DE5 STR R0,[SP, #+8] 1941 strcpy(logmsg,"\nConnect by IP!"); //strcat->strcpy \ 00000120 901F88E2 ADD R1,R8,#+576 \ 00000124 0700A0E1 MOV R0,R7 \ 00000128 1A0000EF SWI +26 1942 SMART_REDRAW(); \ 0000012C ........ BL SMART_REDRAW 1943 goto L_CONNECT; \ 00000130 3B0000EA B ??create_connect_4 1944 } \ ??create_connect_3: \ 00000134 6F1F8FE2 ADR R1,??create_connect_2 ;; "\n" \ 00000138 0700A0E1 MOV R0,R7 1945 strcat(logmsg,"\n"); \ 0000013C 170000EF SWI +23 1946 strcpy(logmsg,LG_GRSENDDNR); //strcat->strcpy \ 00000140 8D1F88E2 ADD R1,R8,#+564 \ 00000144 0700A0E1 MOV R0,R7 \ 00000148 1A0000EF SWI +26 1947 SMART_REDRAW(); \ 0000014C ........ BL SMART_REDRAW 1948 err=async_gethostbyname(hostbuf,&p_res,&DNR_ID); //03461351 3<70<19<81 \ 00000150 3800A0E3 MOV R0,#+56 \ 00000154 400E80E3 ORR R0,R0,#0x400 \ 00000158 052080E0 ADD R2,R0,R5 \ 0000015C 0D10A0E1 MOV R1,SP \ 00000160 14008DE2 ADD R0,SP,#+20 \ 00000164 B60100EF SWI +438 \ 00000168 0030B0E1 MOVS R3,R0 1949 if (err) \ 0000016C 1600000A BEQ ??create_connect_5 1950 { 1951 if ((err==0xC9)||(err==0xD6)) \ 00000170 C90053E3 CMP R3,#+201 \ 00000174 D6005313 CMPNE R3,#+214 \ 00000178 0600001A BNE ??create_connect_6 1952 { 1953 if (DNR_ID) \ 0000017C 380495E5 LDR R0,[R5, #+1080] \ 00000180 000050E3 CMP R0,#+0 \ 00000184 1000000A BEQ ??create_connect_5 1954 { 1955 host_counter--; \ 00000188 400495E5 LDR R0,[R5, #+1088] \ 0000018C 010040E2 SUB R0,R0,#+1 \ 00000190 400485E5 STR R0,[R5, #+1088] 1956 return; //Ждем готовности DNR \ 00000194 390000EA B ??create_connect_7 1957 } 1958 } 1959 else 1960 { 1961 snprintf(logmsg,255,LG_GRDNRERROR,err); \ ??create_connect_6: \ 00000198 892F88E2 ADD R2,R8,#+548 \ 0000019C FF10A0E3 MOV R1,#+255 \ 000001A0 0700A0E1 MOV R0,R7 \ 000001A4 1B0100EF SWI +283 1962 SMART_REDRAW(); \ 000001A8 ........ BL SMART_REDRAW 1963 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ ??create_connect_8: \ 000001AC ........ LDR R0,??DataTable78 ;; RECONNECT_TIME \ 000001B0 0A20A0E1 MOV R2,R10 \ 000001B4 000090E5 LDR R0,[R0, #+0] \ 000001B8 D830A0E3 MOV R3,#+216 \ 000001BC 930001E0 MUL R1,R3,R0 \ 000001C0 0600A0E1 MOV R0,R6 \ 000001C4 4D0000EF SWI +77 1964 return; \ 000001C8 2C0000EA B ??create_connect_7 1965 } 1966 } 1967 if (p_res) \ ??create_connect_5: \ 000001CC 00009DE5 LDR R0,[SP, #+0] \ 000001D0 000050E3 CMP R0,#+0 \ 000001D4 3D00000A BEQ ??create_connect_9 1968 { 1969 if (p_res[3]) \ 000001D8 0C0090E5 LDR R0,[R0, #+12] \ 000001DC 000050E3 CMP R0,#+0 \ 000001E0 4200000A BEQ ??create_connect_10 1970 { 1971 strcpy(logmsg,buf); \ 000001E4 94108DE2 ADD R1,SP,#+148 \ 000001E8 0700A0E1 MOV R0,R7 \ 000001EC 1A0000EF SWI +26 1972 strcat(logmsg,"\n"); \ 000001F0 401F8FE2 ADR R1,??create_connect_2 ;; "\n" \ 000001F4 0700A0E1 MOV R0,R7 \ 000001F8 170000EF SWI +23 1973 strcpy(logmsg,LG_GRDNROK); \ 000001FC 831F88E2 ADD R1,R8,#+524 \ 00000200 0700A0E1 MOV R0,R7 \ 00000204 1A0000EF SWI +26 1974 SMART_REDRAW(); \ 00000208 ........ BL SMART_REDRAW 1975 DNR_TRIES=0; \ 0000020C 3C4485E5 STR R4,[R5, #+1084] 1976 sa.ip=p_res[3][0][0]; \ 00000210 00109DE5 LDR R1,[SP, #+0] \ 00000214 0C1091E5 LDR R1,[R1, #+12] \ 00000218 001091E5 LDR R1,[R1, #+0] \ 0000021C 001091E5 LDR R1,[R1, #+0] \ 00000220 08108DE5 STR R1,[SP, #+8] 1977 L_CONNECT: 1978 sock=socket(1,1,0); \ ??create_connect_4: \ 00000224 0020A0E3 MOV R2,#+0 \ 00000228 0110A0E3 MOV R1,#+1 \ 0000022C 0100A0E1 MOV R0,R1 \ 00000230 730100EF SWI +371 \ 00000234 000485E5 STR R0,[R5, #+1024] 1979 if (sock!=-1) \ 00000238 0B0050E1 CMP R0,R11 \ 0000023C 1A00000A BEQ ??create_connect_11 1980 { 1981 sa.family=1; \ 00000240 0170A0E3 MOV R7,#+1 \ 00000244 B470CDE1 STRH R7,[SP, #+4] 1982 sa.port=htons(hostport); \ 00000248 0908A0E1 MOV R0,R9, LSL #+16 \ 0000024C 2008A0E1 MOV R0,R0, LSR #+16 \ 00000250 7A0100EF SWI +378 \ 00000254 B600CDE1 STRH R0,[SP, #+6] 1983 // sa.ip=htonl(IP_ADDR(82,207,89,182)); 1984 if (connect(sock,&sa,sizeof(sa))!=-1) \ 00000258 000495E5 LDR R0,[R5, #+1024] \ 0000025C 1020A0E3 MOV R2,#+16 \ 00000260 04108DE2 ADD R1,SP,#+4 \ 00000264 740100EF SWI +372 \ 00000268 0B0050E1 CMP R0,R11 \ 0000026C 0500000A BEQ ??create_connect_12 1985 { 1986 connect_state=1; \ 00000270 FC7385E5 STR R7,[R5, #+1020] 1987 TOTALRECEIVED=0; \ 00000274 044485E5 STR R4,[R5, #+1028] 1988 TOTALSENDED=0; \ 00000278 084485E5 STR R4,[R5, #+1032] 1989 SMART_REDRAW(); \ ??create_connect_1: \ 0000027C ........ BL SMART_REDRAW \ ??create_connect_7: \ 00000280 45DF8DE2 ADD SP,SP,#+276 \ 00000284 F08FBDE8 POP {R4-R11,PC} 1990 } 1991 else 1992 { 1993 closesocket(sock); \ ??create_connect_12: \ 00000288 000495E5 LDR R0,[R5, #+1024] \ 0000028C 760100EF SWI +374 1994 sock=-1; \ 00000290 00B485E5 STR R11,[R5, #+1024] 1995 LockSched(); \ 00000294 460100EF SWI +326 1996 ShowMSG(1,(int)LG_MSGCANTCONN); \ 00000298 7C1F88E2 ADD R1,R8,#+496 \ 0000029C 0100A0E3 MOV R0,#+1 \ 000002A0 480100EF SWI +328 1997 UnlockSched(); \ 000002A4 470100EF SWI +327 1998 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 000002A8 BFFFFFEA B ??create_connect_8 1999 2000 } 2001 } 2002 else 2003 { 2004 LockSched(); \ ??create_connect_11: \ 000002AC 460100EF SWI +326 2005 ShowMSG(1,(int)LG_MSGCANTCRSC); \ 000002B0 711F88E2 ADD R1,R8,#+452 \ 000002B4 0100A0E3 MOV R0,#+1 \ 000002B8 480100EF SWI +328 2006 UnlockSched(); \ 000002BC 470100EF SWI +327 2007 //Не осилили создания сокета, закрываем GPRS-сессию 2008 GPRS_OnOff(0,1); \ 000002C0 0110A0E3 MOV R1,#+1 \ 000002C4 0000A0E3 MOV R0,#+0 \ 000002C8 8E0100EF SWI +398 \ 000002CC EBFFFFEA B ??create_connect_7 2009 } 2010 } 2011 } 2012 else 2013 { 2014 DNR_TRIES--; \ ??create_connect_9: \ 000002D0 3C0495E5 LDR R0,[R5, #+1084] \ 000002D4 010040E2 SUB R0,R0,#+1 \ 000002D8 3C0485E5 STR R0,[R5, #+1084] 2015 LockSched(); \ 000002DC 460100EF SWI +326 2016 ShowMSG(1,(int)LG_MSGHOSTNFND); \ 000002E0 6C1F88E2 ADD R1,R8,#+432 \ 000002E4 0100A0E3 MOV R0,#+1 \ 000002E8 480100EF SWI +328 2017 UnlockSched(); \ 000002EC 470100EF SWI +327 \ ??create_connect_10: \ 000002F0 45DF8DE2 ADD SP,SP,#+276 ;; stack cleaning \ 000002F4 F08FBDE8 POP {R4-R11,PC} ;; return \ ??create_connect_2: \ 000002F8 0A000000 DC8 "\n",+0,+0 \ 000002FC ........ DC32 NATICQ_HOST 2018 } 2019 } 2020 2021 #ifdef SEND_TIMER 2022 GBSTMR send_tmr; 2023 #endif 2024 \ In segment CODE, align 4, keep-with-next 2025 void ClearSendQ(void) 2026 { \ ClearSendQ: \ 00000000 10402DE9 PUSH {R4,LR} 2027 mfree((void *)sendq_p); \ 00000004 ........ LDR R4,??DataTable83 ;; i_rc \ 00000008 D00294E5 LDR R0,[R4, #+720] \ 0000000C 150000EF SWI +21 2028 sendq_p=NULL; \ 00000010 0000A0E3 MOV R0,#+0 \ 00000014 D00284E5 STR R0,[R4, #+720] 2029 sendq_l=NULL; \ 00000018 CC0284E5 STR R0,[R4, #+716] 2030 #ifdef SEND_TIMER 2031 GBS_DelTimer(&send_tmr); 2032 #endif 2033 } \ 0000001C 1080BDE8 POP {R4,PC} ;; return 2034 \ In segment CODE, align 4, keep-with-next 2035 void end_socket(void) 2036 { \ end_socket: \ 00000000 10402DE9 PUSH {R4,LR} 2037 if (sock>=0) \ 00000004 ........ LDR R4,??DataTable83 ;; i_rc \ 00000008 000494E5 LDR R0,[R4, #+1024] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0300004A BMI ??end_socket_0 2038 { 2039 shutdown(sock,2); \ 00000014 0210A0E3 MOV R1,#+2 \ 00000018 770100EF SWI +375 2040 closesocket(sock); \ 0000001C 000494E5 LDR R0,[R4, #+1024] \ 00000020 760100EF SWI +374 2041 } 2042 #ifdef SEND_TIMER 2043 GBS_DelTimer(&send_tmr); 2044 #endif 2045 2046 Play(sndLostConn); \ ??end_socket_0: \ 00000024 ........ LDR R0,??DataTable81 ;; sndLostConn \ 00000028 1040BDE8 POP {R4,LR} ;; Pop \ 0000002C ........ B Play ;; tailcall 2047 } 2048 2049 #ifdef SEND_TIMER 2050 static void resend(void) 2051 { 2052 void SendAnswer(int dummy, TPKT *p); 2053 SUBPROC((void*)SendAnswer,0,0); 2054 } 2055 #endif 2056 \ In segment CODE, align 4, keep-with-next 2057 void SendAnswer(int dummy, TPKT *p) 2058 { \ SendAnswer: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 2059 int i; 2060 int j; 2061 if (connect_state<2) \ 00000004 ........ LDR R4,??DataTable83 ;; i_rc \ 00000008 0160A0E1 MOV R6,R1 \ 0000000C FC0394E5 LDR R0,[R4, #+1020] \ 00000010 020050E3 CMP R0,#+2 \ 00000014 020000AA BGE ??SendAnswer_0 2062 { 2063 mfree(p); \ 00000018 0600A0E1 MOV R0,R6 \ 0000001C 150000EF SWI +21 2064 return; \ 00000020 F083BDE8 POP {R4-R9,PC} 2065 } 2066 if (p) \ ??SendAnswer_0: \ 00000024 000056E3 CMP R6,#+0 \ 00000028 2600000A BEQ ??SendAnswer_1 2067 { 2068 j=sizeof(PKT)+p->pkt.data_len; //Размер пакета \ 0000002C B600D6E1 LDRH R0,[R6, #+6] \ 00000030 085080E2 ADD R5,R0,#+8 2069 TOTALSENDED+=j; \ 00000034 080494E5 LDR R0,[R4, #+1032] \ 00000038 000085E0 ADD R0,R5,R0 \ 0000003C 080484E5 STR R0,[R4, #+1032] 2070 ALLTOTALSENDED+=j; //by BoBa 10.07 \ 00000040 100494E5 LDR R0,[R4, #+1040] \ 00000044 000085E0 ADD R0,R5,R0 \ 00000048 100484E5 STR R0,[R4, #+1040] 2071 //Проверяем, не надо ли добавить в очередь 2072 if (sendq_p) \ 0000004C D00294E5 LDR R0,[R4, #+720] \ 00000050 000050E3 CMP R0,#+0 \ 00000054 0F00000A BEQ ??SendAnswer_2 2073 { 2074 //Есть очередь, добавляем в нее 2075 sendq_p=realloc((void *)sendq_p,sendq_l+j); \ 00000058 CC1294E5 LDR R1,[R4, #+716] \ 0000005C 011085E0 ADD R1,R5,R1 \ 00000060 BA0000EF SWI +186 \ 00000064 D00284E5 STR R0,[R4, #+720] 2076 memcpy((char *)sendq_p+sendq_l,p,j); \ 00000068 CC0294E5 LDR R0,[R4, #+716] \ 0000006C D03294E5 LDR R3,[R4, #+720] \ 00000070 0520A0E1 MOV R2,R5 \ 00000074 0610A0E1 MOV R1,R6 \ 00000078 030080E0 ADD R0,R0,R3 \ 0000007C 1E0100EF SWI +286 2077 mfree(p); \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 150000EF SWI +21 2078 sendq_l+=j; \ 00000088 CC0294E5 LDR R0,[R4, #+716] \ 0000008C 000085E0 ADD R0,R5,R0 \ 00000090 CC0284E5 STR R0,[R4, #+716] 2079 return; \ 00000094 F083BDE8 POP {R4-R9,PC} 2080 } 2081 sendq_p=p; \ ??SendAnswer_2: \ 00000098 D06284E5 STR R6,[R4, #+720] 2082 sendq_l=j; \ 0000009C CC5284E5 STR R5,[R4, #+716] \ 000000A0 080000EA B ??SendAnswer_1 2083 } 2084 //Отправляем уже существующее в очереди 2085 while((i=sendq_l)!=0) 2086 { 2087 if (i>0x400) i=0x400; 2088 j=send(sock,(void *)sendq_p,i,0); 2089 snprintf(logmsg,255,"send res %d",j); 2090 SMART_REDRAW(); 2091 if (j<0) 2092 { 2093 j=*socklasterr(); 2094 if ((j==0xC9)||(j==0xD6)) 2095 { 2096 //Передали что хотели 2097 strcpy(logmsg,"Send delayed..."); 2098 return; //Видимо, надо ждать сообщения ENIP_BUFFER_FREE 2099 } 2100 else 2101 { 2102 //Ошибка 2103 LockSched(); 2104 ShowMSG(1,(int)"Send error!"); 2105 UnlockSched(); 2106 end_socket(); 2107 return; 2108 } 2109 } 2110 memcpy((void *)sendq_p,(char *)sendq_p+j,sendq_l-=j); //Удалили переданное \ ??SendAnswer_3: \ 000000A4 CC0294E5 LDR R0,[R4, #+716] \ 000000A8 052040E0 SUB R2,R0,R5 \ 000000AC CC2284E5 STR R2,[R4, #+716] \ 000000B0 D00294E5 LDR R0,[R4, #+720] \ 000000B4 001085E0 ADD R1,R5,R0 \ 000000B8 1E0100EF SWI +286 2111 if (j` \ 000000E0 0100A0E3 MOV R0,#+1 \ 000000E4 400E80E3 ORR R0,R0,#0x400 \ 000000E8 000057E1 CMP R7,R0 \ 000000EC 000494E5 LDR R0,[R4, #+1024] \ 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 5000A0E3 MOV R0,#+80 \ 00000108 700D80E3 ORR R0,R0,#0x1C00 \ 0000010C 048080E0 ADD R8,R0,R4 \ 00000110 0530A0E1 MOV R3,R5 \ 00000114 1C2089E2 ADD R2,R9,#+28 \ 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 0910A0E1 MOV R1,R9 \ 0000015C 0100A0E3 MOV R0,#+1 \ 00000160 480100EF SWI +328 \ 00000164 470100EF SWI +327 \ 00000168 ........ BL end_socket \ 0000016C F083BDE8 POP {R4-R9,PC} 2120 } 2121 mfree((void *)sendq_p); \ ??SendAnswer_4: \ 00000170 0100A0E1 MOV R0,R1 \ 00000174 150000EF SWI +21 2122 sendq_p=NULL; \ 00000178 D06284E5 STR R6,[R4, #+720] 2123 } \ 0000017C F083BDE8 POP {R4-R9,PC} ;; return \ ??SendAnswer_5: \ 00000180 ........ DC32 `?` 2124 2125 \ In segment CODE, align 4, keep-with-next 2126 void send_login(int dummy, TPKT *p) 2127 { 2128 connect_state=2; 2129 char rev[16]; 2130 //Кто будет менять в этом месте идентификатор клиента, буду банить на уровне сервера!!! 2131 //А Вова будет банить на форуме! 2132 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,??DataTable83 ;; i_rc \ 0000000C 10D04DE2 SUB SP,SP,#+16 \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 0150A0E1 MOV R5,R1 \ 00000018 0200A0E3 MOV R0,#+2 \ 0000001C FC0386E5 STR R0,[R6, #+1020] \ 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 2133 2134 TPKT *p2=malloc(sizeof(PKT)+8); \ 00000034 1000A0E3 MOV R0,#+16 \ 00000038 140000EF SWI +20 \ 0000003C 0070A0E1 MOV R7,R0 2135 p2->pkt.uin=UIN; \ 00000040 ........ LDR R0,??DataTable85 ;; UIN 2136 p2->pkt.type=T_SETCLIENT_ID; 2137 p2->pkt.data_len=8; 2138 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 2139 SendAnswer(0,p2); \ 0000006C 0710A0E1 MOV R1,R7 \ 00000070 0000A0E3 MOV R0,#+0 \ 00000074 ........ BL SendAnswer 2140 SendAnswer(dummy,p); \ 00000078 0510A0E1 MOV R1,R5 \ 0000007C 0400A0E1 MOV R0,R4 \ 00000080 ........ BL SendAnswer 2141 RXstate=-(int)sizeof(PKT); \ 00000084 0700E0E3 MVN R0,#+7 \ 00000088 F80386E5 STR R0,[R6, #+1016] 2142 } \ 0000008C FF80BDE8 POP {R0-R7,PC} ;; return \ ??send_login_0: \ 00000090 ........ DC32 `?` 2143 \ In segment CODE, align 4, keep-with-next 2144 void do_ping(void) 2145 { \ do_ping: \ 00000000 00402DE9 PUSH {LR} 2146 TPKT *pingp=malloc(sizeof(PKT)); \ 00000004 0800A0E3 MOV R0,#+8 \ 00000008 140000EF SWI +20 2147 pingp->pkt.uin=UIN; \ 0000000C ........ LDR R1,??DataTable85 ;; UIN \ 00000010 001091E5 LDR R1,[R1, #+0] \ 00000014 001080E5 STR R1,[R0, #+0] 2148 pingp->pkt.type=0; \ 00000018 0010A0E3 MOV R1,#+0 \ 0000001C B410C0E1 STRH R1,[R0, #+4] 2149 pingp->pkt.data_len=0; \ 00000020 B610C0E1 STRH R1,[R0, #+6] 2150 SendAnswer(0,pingp); \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 0040BDE8 POP {LR} ;; Pop \ 00000030 ........ B SendAnswer ;; tailcall 2151 } 2152 \ In segment CODE, align 4, keep-with-next 2153 void SendMSGACK(int i) 2154 { \ SendMSGACK: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 2155 TPKT *ackp=malloc(sizeof(PKT)); \ 00000008 0800A0E3 MOV R0,#+8 \ 0000000C 140000EF SWI +20 2156 ackp->pkt.uin=i; \ 00000010 004080E5 STR R4,[R0, #+0] 2157 ackp->pkt.type=T_MSGACK; \ 00000014 1710A0E3 MOV R1,#+23 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 2158 ackp->pkt.data_len=0; \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 2159 SendAnswer(0,ackp); \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C 1040BDE8 POP {R4,LR} ;; Pop \ 00000030 ........ B SendAnswer ;; tailcall 2160 } 2161 \ In segment CODE, align 4, keep-with-next 2162 void RequestXText(unsigned int uin) 2163 { \ RequestXText: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 2164 TPKT *p=malloc(sizeof(PKT)); \ 00000008 0800A0E3 MOV R0,#+8 \ 0000000C 140000EF SWI +20 2165 p->pkt.uin=uin; \ 00000010 004080E5 STR R4,[R0, #+0] 2166 p->pkt.type=T_XTEXT_REQ; \ 00000014 1810A0E3 MOV R1,#+24 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 2167 p->pkt.data_len=0; \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 2168 SUBPROC((void *)SendAnswer,0,p); \ 00000024 0020A0E1 MOV R2,R0 \ 00000028 ........ LDR R0,??DataTable86 ;; SendAnswer \ 0000002C 710100EF SWI +369 2169 } \ 00000030 1080BDE8 POP {R4,PC} ;; return 2170 2171 int ping_time; 2172 char I_UIN[9]; 2173 char sds[]="%s%d.%s"; 2174 char mp3[]="mp3"; 2175 char wav[]="wav"; 2176 char amr[]="amr"; 2177 int ShowLoadScreen=1; 2178 \ In segment CODE, align 4, keep-with-next 2179 void get_answer(void) 2180 { \ get_answer: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 2181 void *p; 2182 int i=RXstate; \ 00000004 ........ LDR R5,??DataTable97 ;; i_rc \ 00000008 42DE4DE2 SUB SP,SP,#+1056 2183 int j; 2184 int n; 2185 char rb[1024]; 2186 char *rp=rb; 2187 if (connect_state<2) return; \ 0000000C FC0395E5 LDR R0,[R5, #+1020] \ 00000010 F88395E5 LDR R8,[R5, #+1016] \ 00000014 20108DE2 ADD R1,SP,#+32 \ 00000018 00108DE5 STR R1,[SP, #+0] \ 0000001C 020050E3 CMP R0,#+2 \ 00000020 7E0100BA BLT ??get_answer_1 \ 00000024 0A0078E3 CMN R8,#+10 \ 00000028 7C01000A BEQ ??get_answer_1 2188 if (i==EOP) return; 2189 j=recv(sock,rb,sizeof(rb),0); \ 0000002C 000495E5 LDR R0,[R5, #+1024] \ 00000030 0030A0E3 MOV R3,#+0 \ 00000034 402EA0E3 MOV R2,#+1024 \ 00000038 780100EF SWI +376 \ 0000003C 0060A0E1 MOV R6,R0 \ 00000040 0990A0E3 MOV R9,#+9 \ 00000044 429C89E3 ORR R9,R9,#0x4200 \ 00000048 0E0000EA B ??get_answer_2 2190 while(j>0) 2191 { 2192 if (i<0) 2193 { 2194 //Принимаем заголовок 2195 n=-i; //Требуемое количество байт 2196 if (j=0) 2203 { 2204 //Принимаем тельце ;) 2205 n=RXbuf.pkt.data_len; //Всего в тельце 2206 if (n>16383) 2207 { 2208 //Слишком много 2209 strcpy(logmsg,LG_GRBADPACKET); 2210 end_socket(); 2211 RXstate=EOP; 2212 return; 2213 } 2214 n-=i; //Количество требуемых байт (общая длинна тельца-текущая позиция) 2215 if (n>0) 2216 { 2217 if (jisIndividSet)//Если индивидуальные натсройки(меню на долгое вправо) 2297 { 2298 if(t->issound) Play(sndMsg);//если звук включен то играем 2299 break; 2300 } 2301 else 2302 if(t->automsgcount < automsgcount && away_m)//если сигналы автоответчика 2303 { 2304 Play(sndMsg); 2305 break; 2306 } 2307 else 2308 if(t->isaccess)//если удаленный доступ ;) 2309 { 2310 if(t->signals) Play(sndMsg); 2311 break; 2312 } 2313 else//в остальный случаях 2314 Play(sndMsg); 2315 } 2316 else 2317 { 2318 uins=RXbuf.pkt.uin; 2319 volatile int hFile_ex; 2320 unsigned int io_error_ex = 0; 2321 char ext[4]; 2322 // __root const CFG_CBOX_ITEM cfgcbox18_3_2[2]={"Mp3","Wav","Amr"}; 2323 switch(ext_type_sounds) 2324 { 2325 case 0: sprintf(ext,percent_s,mp3); break; 2326 case 1: sprintf(ext,percent_s,wav); break; 2327 case 2: sprintf(ext,percent_s,amr); break; 2328 default : sprintf(ext,percent_s,mp3); break; 2329 } 2330 2331 sprintf(talk_sound, sds, sndMsg2, uins, ext); 2332 hFile_ex = fopen(talk_sound,A_ReadOnly + A_BIN,P_READ, &io_error_ex); 2333 if(hFile_ex!=-1) 2334 { 2335 fclose(hFile_ex, &io_error_ex); 2336 Play(talk_sound); 2337 } 2338 else 2339 Play(sndMsg); 2340 } 2341 } 2342 break; 2343 case T_SSLRESP: 2344 LockSched(); 2345 ShowMSG(1,(int)RXbuf.data); 2346 UnlockSched(); 2347 break; 2348 case T_SRV_ACK: 2349 if (FindContactLOGQByAck(&RXbuf)) 2350 { 2351 Play(sndMsgSent); 2352 if(!ShowLoadScreen) SMART_REDRAW(); 2353 } 2354 case T_CLIENT_ACK: 2355 p=malloc(sizeof(PKT)+2); 2356 memcpy(p,&RXbuf,sizeof(PKT)+2); 2357 GBS_SendMessage(MMI_CEPID,MSG_HELPER_TRANSLATOR,0,p,sock); 2358 break; 2359 case T_ECHORET: 2360 { 2361 TDate d; 2362 TTime t; 2363 TTime *pt=(TTime *)(RXbuf.data); 2364 int s1; 2365 int s2; 2366 GetDateTime(&d,&t); 2367 s1=t.hour*3600+t.min*60+t.sec; 2368 s2=pt->hour*3600+pt->min*60+pt->sec; 2369 s1-=s2; 2370 if (s1<0) s1+=86400; 2371 curping=s1; 2372 snprintf(logmsg,255,"Ping %d-%d seconds!",s1,s1+1); 2373 sprintf(PINGO, "Ping: %d sec",s1); 2374 LockSched(); 2375 if(janis==1) 2376 { 2377 // ShowMSG(1,(int)logmsg); 2378 PrintTimer=5; 2379 strcpy(prmsg,logmsg); 2380 Play(pingsnd); 2381 janis=0; 2382 } 2383 else 2384 { 2385 if(ping_time==0) 2386 { 2387 ping_time=ping_time_config; 2388 Play(pingsnd); 2389 } 2390 else 2391 ping_time--; 2392 } 2393 UnlockSched(); 2394 } 2395 break; 2396 case T_LASTPRIVACY: 2397 n=i+sizeof(PKT); \ ??get_answer_3: \ 0000004C 0040A0E1 MOV R4,R0 2398 p=malloc(n); \ ??get_answer_4: \ 00000050 140000EF SWI +20 \ 00000054 00B0A0E1 MOV R11,R0 2399 memcpy(p,&RXbuf,n); \ 00000058 0420A0E1 MOV R2,R4 \ ??get_answer_5: \ 0000005C 0710A0E1 MOV R1,R7 \ 00000060 1E0100EF SWI +286 2400 GBS_SendMessage(MMI_CEPID,MSG_HELPER_TRANSLATOR,0,p,sock); \ 00000064 000495E5 LDR R0,[R5, #+1024] \ 00000068 0B30A0E1 MOV R3,R11 \ 0000006C 01002DE9 PUSH {R0} \ 00000070 0020A0E3 MOV R2,#+0 \ 00000074 0810A0E1 MOV R1,R8 \ 00000078 0900A0E1 MOV R0,R9 \ 0000007C 000100EF SWI +256 \ ??get_answer_6: \ 00000080 04D08DE2 ADD SP,SP,#+4 ;; stack cleaning 2401 break; 2402 } 2403 i=-(int)sizeof(PKT); //А может еще есть данные \ ??get_answer_7: \ 00000084 0780E0E3 MVN R8,#+7 \ ??get_answer_2: \ 00000088 010056E3 CMP R6,#+1 \ 0000008C 620100BA BLT ??get_answer_8 \ 00000090 90759FE5 LDR R7,??get_answer_9 ;; RXbuf \ 00000094 000058E3 CMP R8,#+0 \ 00000098 0C00005A BPL ??get_answer_10 \ 0000009C 00109DE5 LDR R1,[SP, #+0] \ 000000A0 004068E2 RSB R4,R8,#+0 \ 000000A4 040056E1 CMP R6,R4 \ 000000A8 0640A0B1 MOVLT R4,R6 \ 000000AC 0420A0E1 MOV R2,R4 \ 000000B0 070088E0 ADD R0,R8,R7 \ 000000B4 080080E2 ADD R0,R0,#+8 \ 000000B8 1E0100EF SWI +286 \ 000000BC 00109DE5 LDR R1,[SP, #+0] \ 000000C0 088084E0 ADD R8,R4,R8 \ 000000C4 046046E0 SUB R6,R6,R4 \ 000000C8 011084E0 ADD R1,R4,R1 \ 000000CC 00108DE5 STR R1,[SP, #+0] \ ??get_answer_10: \ 000000D0 000058E3 CMP R8,#+0 \ 000000D4 EBFFFF4A BMI ??get_answer_2 \ 000000D8 B640D7E1 LDRH R4,[R7, #+6] \ 000000DC 5000A0E3 MOV R0,#+80 \ 000000E0 700D80E3 ORR R0,R0,#0x1C00 \ 000000E4 05A080E0 ADD R10,R0,R5 \ 000000E8 400C54E3 CMP R4,#+16384 \ 000000EC 070000BA BLT ??get_answer_11 \ 000000F0 34159FE5 LDR R1,??get_answer_9+0x4 ;; Canvas + 420 \ 000000F4 0A00A0E1 MOV R0,R10 \ 000000F8 1A0000EF SWI +26 \ 000000FC ........ BL end_socket \ 00000100 0900E0E3 MVN R0,#+9 \ 00000104 F80385E5 STR R0,[R5, #+1016] \ 00000108 42DE8DE2 ADD SP,SP,#+1056 \ 0000010C F08FBDE8 POP {R4-R11,PC} \ ??get_answer_11: \ 00000110 084044E0 SUB R4,R4,R8 \ 00000114 010054E3 CMP R4,#+1 \ 00000118 0B0000BA BLT ??get_answer_12 \ 0000011C 00109DE5 LDR R1,[SP, #+0] \ 00000120 040056E1 CMP R6,R4 \ 00000124 0640A0B1 MOVLT R4,R6 \ 00000128 0420A0E1 MOV R2,R4 \ 0000012C 070088E0 ADD R0,R8,R7 \ 00000130 080080E2 ADD R0,R0,#+8 \ 00000134 1E0100EF SWI +286 \ 00000138 00109DE5 LDR R1,[SP, #+0] \ 0000013C 088084E0 ADD R8,R4,R8 \ 00000140 046046E0 SUB R6,R6,R4 \ 00000144 011084E0 ADD R1,R4,R1 \ 00000148 00108DE5 STR R1,[SP, #+0] \ ??get_answer_12: \ 0000014C B600D7E1 LDRH R0,[R7, #+6] \ 00000150 080050E1 CMP R0,R8 \ 00000154 CBFFFF1A BNE ??get_answer_2 \ 00000158 041495E5 LDR R1,[R5, #+1028] \ 0000015C 080088E2 ADD R0,R8,#+8 \ 00000160 011080E0 ADD R1,R0,R1 \ 00000164 041485E5 STR R1,[R5, #+1028] \ 00000168 0C1495E5 LDR R1,[R5, #+1036] \ 0000016C 0020A0E3 MOV R2,#+0 \ 00000170 011080E0 ADD R1,R0,R1 \ 00000174 0C1485E5 STR R1,[R5, #+1036] \ 00000178 071088E0 ADD R1,R8,R7 \ 0000017C 0820C1E5 STRB R2,[R1, #+8] \ 00000180 B410D7E1 LDRH R1,[R7, #+4] \ 00000184 094088E2 ADD R4,R8,#+9 \ 00000188 AE80A0E3 MOV R8,#+174 \ 0000018C DE8C88E3 ORR R8,R8,#0xDE00 \ 00000190 031041E2 SUB R1,R1,#+3 \ 00000194 1C0051E3 CMP R1,#+28 \ 00000198 B9FFFF8A BHI ??get_answer_7 \ 0000019C 022F8FE2 ADR R2,??get_answer_0 \ 000001A0 8110A0E1 MOV R1,R1, LSL #+1 \ 000001A4 F12092E1 LDRSH R2,[R2, R1] \ 000001A8 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??get_answer_0: \ 000001AC 48000E00B5FF DC16 +72,+14,+65461,+65 \ 4100 \ 000001B4 2900B5FF2B00 DC16 +41,+65461,+43,+65461 \ B5FF \ 000001BC B5FFB5FFC100 DC16 +65461,+65461,+193,+65461 \ B5FF \ 000001C4 B5FFC700D100 DC16 +65461,+199,+209,+65461 \ B5FF \ 000001CC D60029002900 DC16 +214,+41,+41,+65461 \ B5FF \ 000001D4 B5FFB5FF2900 DC16 +65461,+65461,+41,+65461 \ B5FF \ 000001DC B5FFB5FFB5FF DC16 +65461,+65461,+65461,+65461 \ B5FF \ 000001E4 A7FF0000 DC16 +65447,+0 \ ??get_answer_13: \ 000001E8 0400A0E1 MOV R0,R4 \ 000001EC 140000EF SWI +20 \ 000001F0 00B0A0E1 MOV R11,R0 \ 000001F4 0420A0E1 MOV R2,R4 \ 000001F8 0710A0E1 MOV R1,R7 \ 000001FC 1E0100EF SWI +286 \ 00000200 000495E5 LDR R0,[R5, #+1024] \ 00000204 0B30A0E1 MOV R3,R11 \ 00000208 01002DE9 PUSH {R0} \ 0000020C 0020A0E3 MOV R2,#+0 \ 00000210 0810A0E1 MOV R1,R8 \ 00000214 0900A0E1 MOV R0,R9 \ 00000218 000100EF SWI +256 \ 0000021C 0C049FE5 LDR R0,??get_answer_9+0x8 ;; sndStartup \ 00000220 ........ BL Play \ 00000224 083087E2 ADD R3,R7,#+8 \ 00000228 EE2F8FE2 ADR R2,??get_answer_14 ;; "%s" \ 0000022C FF10A0E3 MOV R1,#+255 \ 00000230 0A00A0E1 MOV R0,R10 \ 00000234 1B0100EF SWI +283 \ 00000238 0300A0E3 MOV R0,#+3 \ 0000023C FC0385E5 STR R0,[R5, #+1020] \ 00000240 400495E5 LDR R0,[R5, #+1088] \ 00000244 010040E2 SUB R0,R0,#+1 \ 00000248 400485E5 STR R0,[R5, #+1088] \ 0000024C ........ BL SMART_REDRAW \ 00000250 8AFFFFEA B ??get_answer_6 \ ??get_answer_15: \ 00000254 0400A0E1 MOV R0,R4 \ 00000258 7CFFFFEA B ??get_answer_4 \ ??get_answer_16: \ 0000025C 0040A0E1 MOV R4,R0 \ 00000260 140000EF SWI +20 \ 00000264 00B0A0E1 MOV R11,R0 \ 00000268 0420A0E1 MOV R2,R4 \ 0000026C 0710A0E1 MOV R1,R7 \ 00000270 1E0100EF SWI +286 \ 00000274 B800D7E1 LDRH R0,[R7, #+8] \ 00000278 B4239FE5 LDR R2,??get_answer_9+0xC ;; Canvas + 408 \ 0000027C FF10A0E3 MOV R1,#+255 \ 00000280 01002DE9 PUSH {R0} \ 00000284 003097E5 LDR R3,[R7, #+0] \ 00000288 0A00A0E1 MOV R0,R10 \ 0000028C 1B0100EF SWI +283 \ 00000290 000495E5 LDR R0,[R5, #+1024] \ 00000294 0B30A0E1 MOV R3,R11 \ 00000298 01002DE9 PUSH {R0} \ 0000029C 0020A0E3 MOV R2,#+0 \ 000002A0 0810A0E1 MOV R1,R8 \ 000002A4 0900A0E1 MOV R0,R9 \ 000002A8 000100EF SWI +256 \ 000002AC 08D08DE2 ADD SP,SP,#+8 \ 000002B0 73FFFFEA B ??get_answer_7 \ ??get_answer_17: \ 000002B4 7C239FE5 LDR R2,??get_answer_9+0x10 ;; Canvas + 400 \ 000002B8 083087E2 ADD R3,R7,#+8 \ 000002BC FF10A0E3 MOV R1,#+255 \ 000002C0 0A00A0E1 MOV R0,R10 \ 000002C4 1B0100EF SWI +283 \ 000002C8 ........ BL SMART_REDRAW \ 000002CC 6CFFFFEA B ??get_answer_7 \ ??get_answer_18: \ 000002D0 0400A0E1 MOV R0,R4 \ 000002D4 140000EF SWI +20 \ 000002D8 00B0A0E1 MOV R11,R0 \ 000002DC 0420A0E1 MOV R2,R4 \ 000002E0 0710A0E1 MOV R1,R7 \ 000002E4 1E0100EF SWI +286 \ 000002E8 08008BE2 ADD R0,R11,#+8 \ 000002EC 030000EA B ??get_answer_19 \ ??get_answer_20: \ 000002F0 030051E3 CMP R1,#+3 \ 000002F4 2010A0B3 MOVLT R1,#+32 \ 000002F8 0010C0B5 STRBLT R1,[R0, #+0] \ 000002FC 010080E2 ADD R0,R0,#+1 \ ??get_answer_19: \ 00000300 0010D0E5 LDRB R1,[R0, #+0] \ 00000304 000051E3 CMP R1,#+0 \ 00000308 F8FFFF1A BNE ??get_answer_20 \ 0000030C 002097E5 LDR R2,[R7, #+0] \ 00000310 24139FE5 LDR R1,??get_answer_9+0x14 ;; Canvas + 392 \ 00000314 2000A0E3 MOV R0,#+32 \ 00000318 800D80E3 ORR R0,R0,#0x2000 \ 0000031C 054080E0 ADD R4,R0,R5 \ 00000320 0400A0E1 MOV R0,R4 \ 00000324 160000EF SWI +22 \ 00000328 ........ LDR R0,??DataTable88 ;; ignor_list \ 0000032C 0410A0E1 MOV R1,R4 \ 00000330 180100EF SWI +280 \ 00000334 000050E3 CMP R0,#+0 \ 00000338 51FFFF1A BNE ??get_answer_7 \ 0000033C FC229FE5 LDR R2,??get_answer_9+0x18 ;; Canvas + 380 \ 00000340 FC429FE5 LDR R4,??get_answer_9+0x1C ;; sndMsg \ 00000344 080087E2 ADD R0,R7,#+8 \ 00000348 01002DE9 PUSH {R0} \ 0000034C 003097E5 LDR R3,[R7, #+0] \ 00000350 FF10A0E3 MOV R1,#+255 \ 00000354 0A00A0E1 MOV R0,R10 \ 00000358 1B0100EF SWI +283 \ 0000035C 040495E5 LDR R0,[R5, #+1028] \ 00000360 ........ BL SendMSGACK \ 00000364 000495E5 LDR R0,[R5, #+1024] \ 00000368 0B30A0E1 MOV R3,R11 \ 0000036C 01002DE9 PUSH {R0} \ 00000370 0020A0E3 MOV R2,#+0 \ 00000374 0810A0E1 MOV R1,R8 \ 00000378 0900A0E1 MOV R0,R9 \ 0000037C 000100EF SWI +256 \ 00000380 ........ BL SMART_REDRAW \ 00000384 ........ LDR R0,??DataTable89 ;; extended_sounds \ 00000388 000090E5 LDR R0,[R0, #+0] \ 0000038C 08D08DE2 ADD SP,SP,#+8 \ 00000390 000050E3 CMP R0,#+0 \ 00000394 000097E5 LDR R0,[R7, #+0] \ 00000398 1A00001A BNE ??get_answer_21 \ 0000039C ........ _BLF FindContactByUin,??FindContactByUin??rA \ 000003A0 641090E5 LDR R1,[R0, #+100] \ 000003A4 000051E3 CMP R1,#+0 \ 000003A8 0500000A BEQ ??get_answer_22 \ 000003AC 6C0090E5 LDR R0,[R0, #+108] \ 000003B0 000050E3 CMP R0,#+0 \ 000003B4 32FFFF0A BEQ ??get_answer_7 \ ??get_answer_23: \ 000003B8 0400A0E1 MOV R0,R4 \ ??get_answer_24: \ 000003BC ........ BL Play \ 000003C0 2FFFFFEA B ??get_answer_7 \ ??get_answer_22: \ 000003C4 ........ LDR R2,??DataTable90 ;; automsgcount \ 000003C8 881090E5 LDR R1,[R0, #+136] \ 000003CC 002092E5 LDR R2,[R2, #+0] \ 000003D0 020051E1 CMP R1,R2 \ 000003D4 0200002A BCS ??get_answer_25 \ 000003D8 A81395E5 LDR R1,[R5, #+936] \ 000003DC 000051E3 CMP R1,#+0 \ 000003E0 F4FFFF1A BNE ??get_answer_23 \ ??get_answer_25: \ 000003E4 841090E5 LDR R1,[R0, #+132] \ 000003E8 000051E3 CMP R1,#+0 \ 000003EC 0300000A BEQ ??get_answer_26 \ 000003F0 800090E5 LDR R0,[R0, #+128] \ 000003F4 000050E3 CMP R0,#+0 \ 000003F8 21FFFF0A BEQ ??get_answer_7 \ 000003FC EDFFFFEA B ??get_answer_23 \ ??get_answer_26: \ 00000400 0400A0E1 MOV R0,R4 \ 00000404 ECFFFFEA B ??get_answer_24 \ ??get_answer_21: \ 00000408 BC0285E5 STR R0,[R5, #+700] \ 0000040C ........ LDR R0,??DataTable91 ;; ext_type_sounds \ 00000410 0010A0E3 MOV R1,#+0 \ 00000414 0C108DE5 STR R1,[SP, #+12] \ 00000418 000090E5 LDR R0,[R0, #+0] \ 0000041C 010050E2 SUBS R0,R0,#+1 \ 00000420 0300000A BEQ ??get_answer_27 \ 00000424 010050E2 SUBS R0,R0,#+1 \ 00000428 3C00A003 MOVEQ R0,#+60 \ 0000042C 3400A013 MOVNE R0,#+52 \ 00000430 000000EA B ??get_answer_28 \ ??get_answer_27: \ 00000434 3800A0E3 MOV R0,#+56 \ ??get_answer_28: \ 00000438 ........ LDR R1,??DataTable92 ;; Canvas + 8 \ 0000043C 800D80E3 ORR R0,R0,#0x2000 \ 00000440 052080E0 ADD R2,R0,R5 \ 00000444 04008DE2 ADD R0,SP,#+4 \ 00000448 160000EF SWI +22 \ 0000044C F4219FE5 LDR R2,??get_answer_9+0x20 ;; sndMsg2 \ 00000450 04008DE2 ADD R0,SP,#+4 \ 00000454 01002DE9 PUSH {R0} \ 00000458 BC3295E5 LDR R3,[R5, #+700] \ 0000045C 3870A0E3 MOV R7,#+56 \ 00000460 707E87E3 ORR R7,R7,#0x700 \ 00000464 2C00A0E3 MOV R0,#+44 \ 00000468 800D80E3 ORR R0,R0,#0x2000 \ 0000046C 051080E0 ADD R1,R0,R5 \ 00000470 050087E0 ADD R0,R7,R5 \ 00000474 160000EF SWI +22 \ 00000478 10308DE2 ADD R3,SP,#+16 \ 0000047C 8020A0E3 MOV R2,#+128 \ 00000480 801CA0E3 MOV R1,#+32768 \ 00000484 050087E0 ADD R0,R7,R5 \ 00000488 0A0000EF SWI +10 \ 0000048C 0C008DE5 STR R0,[SP, #+12] \ 00000490 0C009DE5 LDR R0,[SP, #+12] \ 00000494 04D08DE2 ADD SP,SP,#+4 \ 00000498 010070E3 CMN R0,#+1 \ 0000049C D7FFFF0A BEQ ??get_answer_26 \ 000004A0 08009DE5 LDR R0,[SP, #+8] \ 000004A4 0C108DE2 ADD R1,SP,#+12 \ 000004A8 0D0000EF SWI +13 \ 000004AC 050087E0 ADD R0,R7,R5 \ 000004B0 C1FFFFEA B ??get_answer_24 \ ??get_answer_29: \ 000004B4 460100EF SWI +326 \ 000004B8 081087E2 ADD R1,R7,#+8 \ 000004BC 0100A0E3 MOV R0,#+1 \ 000004C0 480100EF SWI +328 \ ??get_answer_30: \ 000004C4 470100EF SWI +327 \ 000004C8 EDFEFFEA B ??get_answer_7 \ ??get_answer_31: \ 000004CC 0700A0E1 MOV R0,R7 \ 000004D0 ........ BL FindContactLOGQByAck \ 000004D4 000050E3 CMP R0,#+0 \ 000004D8 0500000A BEQ ??get_answer_32 \ 000004DC 68019FE5 LDR R0,??get_answer_9+0x24 ;; sndMsgSent \ 000004E0 ........ BL Play \ 000004E4 480495E5 LDR R0,[R5, #+1096] \ 000004E8 000050E3 CMP R0,#+0 \ 000004EC 0000001A BNE ??get_answer_32 \ 000004F0 ........ BL SMART_REDRAW \ ??get_answer_32: \ 000004F4 0A00A0E3 MOV R0,#+10 \ 000004F8 140000EF SWI +20 \ 000004FC 00B0A0E1 MOV R11,R0 \ 00000500 0A20A0E3 MOV R2,#+10 \ 00000504 D4FEFFEA B ??get_answer_5 \ ??get_answer_33: \ 00000508 10108DE2 ADD R1,SP,#+16 \ 0000050C 18008DE2 ADD R0,SP,#+24 \ 00000510 B40000EF SWI +180 \ 00000514 1000DDE5 LDRB R0,[SP, #+16] \ 00000518 1120DDE5 LDRB R2,[SP, #+17] \ 0000051C E11EA0E3 MOV R1,#+3600 \ 00000520 3C30A0E3 MOV R3,#+60 \ 00000524 930202E0 MUL R2,R3,R2 \ 00000528 912020E0 MLA R0,R1,R0,R2 \ 0000052C 1210DDE5 LDRB R1,[SP, #+18] \ 00000530 E12EA0E3 MOV R2,#+3600 \ 00000534 000081E0 ADD R0,R1,R0 \ 00000538 0810D7E5 LDRB R1,[R7, #+8] \ 0000053C 920101E0 MUL R1,R2,R1 \ 00000540 08219FE5 LDR R2,??get_answer_9+0x28 ;; Canvas + 360 \ 00000544 010040E0 SUB R0,R0,R1 \ 00000548 0910D7E5 LDRB R1,[R7, #+9] \ 0000054C 930101E0 MUL R1,R3,R1 \ 00000550 010040E0 SUB R0,R0,R1 \ 00000554 0A10D7E5 LDRB R1,[R7, #+10] \ 00000558 ........ LDR R7,??DataTable93 ;; janis \ 0000055C 014050E0 SUBS R4,R0,R1 \ 00000560 500BA043 MOVMI R0,#+81920 \ 00000564 460D8043 ORRMI R0,R0,#0x1180 \ 00000568 04408040 ADDMI R4,R0,R4 \ 0000056C C84285E5 STR R4,[R5, #+712] \ 00000570 010084E2 ADD R0,R4,#+1 \ 00000574 01002DE9 PUSH {R0} \ 00000578 0430A0E1 MOV R3,R4 \ 0000057C FF10A0E3 MOV R1,#+255 \ 00000580 0A00A0E1 MOV R0,R10 \ 00000584 1B0100EF SWI +283 \ 00000588 C4109FE5 LDR R1,??get_answer_9+0x2C ;; Canvas + 344 \ 0000058C 0420A0E1 MOV R2,R4 \ 00000590 C0409FE5 LDR R4,??get_answer_9+0x30 ;; pingsnd \ 00000594 0800A0E3 MOV R0,#+8 \ 00000598 640D80E3 ORR R0,R0,#0x1900 \ 0000059C 050080E0 ADD R0,R0,R5 \ 000005A0 160000EF SWI +22 \ 000005A4 460100EF SWI +326 \ 000005A8 000097E5 LDR R0,[R7, #+0] \ 000005AC 04D08DE2 ADD SP,SP,#+4 \ 000005B0 010050E3 CMP R0,#+1 \ 000005B4 0C00001A BNE ??get_answer_34 \ 000005B8 0500A0E3 MOV R0,#+5 \ 000005BC C40285E5 STR R0,[R5, #+708] \ 000005C0 0A10A0E1 MOV R1,R10 \ 000005C4 F800A0E3 MOV R0,#+248 \ 000005C8 5C0D80E3 ORR R0,R0,#0x1700 \ 000005CC 050080E0 ADD R0,R0,R5 \ 000005D0 1A0000EF SWI +26 \ 000005D4 0400A0E1 MOV R0,R4 \ 000005D8 ........ BL Play \ 000005DC 0000A0E3 MOV R0,#+0 \ 000005E0 000087E5 STR R0,[R7, #+0] \ 000005E4 B6FFFFEA B ??get_answer_30 \ ??get_answer_14: \ 000005E8 25730000 DC8 "%s",+0 \ ??get_answer_34: \ 000005EC 440495E5 LDR R0,[R5, #+1092] \ 000005F0 000050E3 CMP R0,#+0 \ 000005F4 0500001A BNE ??get_answer_35 \ 000005F8 5C009FE5 LDR R0,??get_answer_9+0x34 ;; ping_time_config \ 000005FC 000090E5 LDR R0,[R0, #+0] \ 00000600 440485E5 STR R0,[R5, #+1092] \ 00000604 0400A0E1 MOV R0,R4 \ 00000608 ........ BL Play \ 0000060C ACFFFFEA B ??get_answer_30 \ ??get_answer_35: \ 00000610 010040E2 SUB R0,R0,#+1 \ 00000614 440485E5 STR R0,[R5, #+1092] \ 00000618 A9FFFFEA B ??get_answer_30 2404 } 2405 } 2406 } 2407 RXstate=i; \ ??get_answer_8: \ 0000061C F88385E5 STR R8,[R5, #+1016] 2408 // GBS_StartTimerProc(&tmr_dorecv,3000,dorecv); 2409 // SMART_REDRAW(); 2410 } \ ??get_answer_1: \ 00000620 42DE8DE2 ADD SP,SP,#+1056 ;; stack cleaning \ 00000624 F08FBDE8 POP {R4-R11,PC} ;; return \ ??get_answer_9: \ 00000628 ........ DC32 RXbuf \ 0000062C ........ DC32 Canvas + 420 \ 00000630 ........ DC32 sndStartup \ 00000634 ........ DC32 Canvas + 408 \ 00000638 ........ DC32 Canvas + 400 \ 0000063C ........ DC32 Canvas + 392 \ 00000640 ........ DC32 Canvas + 380 \ 00000644 ........ DC32 sndMsg \ 00000648 ........ DC32 sndMsg2 \ 0000064C ........ DC32 sndMsgSent \ 00000650 ........ DC32 Canvas + 360 \ 00000654 ........ DC32 Canvas + 344 \ 00000658 ........ DC32 pingsnd \ 0000065C ........ DC32 ping_time_config 2411 2412 2413 //=====================add to main info==================== 2414 2415 //Сюда я не лез...и че та желания нет...kluchnik ;) 2416 2417 char a_txt[45]; 2418 char s_txt[45]; 2419 char d_txt[45]; 2420 char f_txt[45]; 2421 char g_txt[45]; 2422 unsigned int main_msg_timer2; \ In segment CODE, align 4, keep-with-next 2423 void AddToMain(const char *nameu,char *si) 2424 { \ AddToMain: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0180A0E1 MOV R8,R1 2425 char *de=malloc(64); \ 00000010 4000A0E3 MOV R0,#+64 \ 00000014 140000EF SWI +20 \ 00000018 0050A0E1 MOV R5,R0 2426 int text_l; 2427 int iz; 2428 int name_l; 2429 name_l=0; 2430 text_l=0; 2431 name_l=strlen(nameu); \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 1B0000EF SWI +27 2432 iz=0; 2433 #ifdef ELKA 2434 text_l=main_lenght-name_l; \ 00000024 EC119FE5 LDR R1,??AddToMain_0 ;; main_lenght \ 00000028 0070A0E3 MOV R7,#+0 \ 0000002C 001091E5 LDR R1,[R1, #+0] 2435 #else 2436 text_l=main_lenght-name_l; 2437 #endif 2438 2439 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 2440 { 2441 while(text_l!=0) 2442 { 2443 de[iz]=si[iz]; 2444 iz++; 2445 text_l--; 2446 } 2447 if(use_cutter) 2448 { 2449 de[iz]='.'; 2450 iz++; 2451 de[iz]='.'; 2452 iz++; 2453 de[iz]='.'; 2454 iz++; 2455 } 2456 de[iz]='\0'; 2457 } 2458 else 2459 strcpy(de, si); \ 00000048 0810A0E1 MOV R1,R8 \ 0000004C 0500A0E1 MOV R0,R5 \ 00000050 1A0000EF SWI +26 2460 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 9C119FE5 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 2461 while(strlen(de)!=iz) 2462 { 2463 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] 2464 if(de[iz]==0x0A) de[iz]=0x20; \ 000000B8 0510D7E7 LDRB R1,[R7, +R5] \ 000000BC 0A0051E3 CMP R1,#+10 \ 000000C0 0500C707 STRBEQ R0,[R7, +R5] 2465 iz++; \ 000000C4 017087E2 ADD R7,R7,#+1 2466 } \ ??AddToMain_3: \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 1B0000EF SWI +27 \ 000000D0 070050E1 CMP R0,R7 \ 000000D4 F3FFFF1A BNE ??AddToMain_6 2467 de[iz]='\0'; \ 000000D8 0560C7E7 STRB R6,[R7, +R5] 2468 if(main_count==0) sprintf(a_txt, "%s: %s", nameu,de); \ 000000DC ........ LDR R6,??DataTable97 ;; i_rc \ 000000E0 38719FE5 LDR R7,??AddToMain_0+0x8 ;; `?` \ 000000E4 811D86E2 ADD R1,R6,#+8256 \ 000000E8 00108DE5 STR R1,[SP, #+0] \ 000000EC D40296E5 LDR R0,[R6, #+724] \ 000000F0 000050E3 CMP R0,#+0 \ 000000F4 0400001A BNE ??AddToMain_7 \ 000000F8 00009DE5 LDR R0,[SP, #+0] \ 000000FC 0530A0E1 MOV R3,R5 \ 00000100 0420A0E1 MOV R2,R4 \ 00000104 0710A0E1 MOV R1,R7 \ 00000108 160000EF SWI +22 2469 if(main_count==1) sprintf(s_txt, "%s: %s", nameu,de); \ ??AddToMain_7: \ 0000010C 7000A0E3 MOV R0,#+112 \ 00000110 800D80E3 ORR R0,R0,#0x2000 \ 00000114 068080E0 ADD R8,R0,R6 \ 00000118 D40296E5 LDR R0,[R6, #+724] \ 0000011C 010050E3 CMP R0,#+1 \ 00000120 0400001A BNE ??AddToMain_8 \ 00000124 0530A0E1 MOV R3,R5 \ 00000128 0420A0E1 MOV R2,R4 \ 0000012C 0710A0E1 MOV R1,R7 \ 00000130 0800A0E1 MOV R0,R8 \ 00000134 160000EF SWI +22 2470 if(main_count==2) sprintf(d_txt, "%s: %s", nameu,de); \ ??AddToMain_8: \ 00000138 A000A0E3 MOV R0,#+160 \ 0000013C 800D80E3 ORR R0,R0,#0x2000 \ 00000140 069080E0 ADD R9,R0,R6 \ 00000144 D40296E5 LDR R0,[R6, #+724] \ 00000148 020050E3 CMP R0,#+2 \ 0000014C 0400001A BNE ??AddToMain_9 \ 00000150 0530A0E1 MOV R3,R5 \ 00000154 0420A0E1 MOV R2,R4 \ 00000158 0710A0E1 MOV R1,R7 \ 0000015C 0900A0E1 MOV R0,R9 \ 00000160 160000EF SWI +22 2471 if(main_count==3) sprintf(f_txt, "%s: %s", nameu,de); \ ??AddToMain_9: \ 00000164 D000A0E3 MOV R0,#+208 \ 00000168 800D80E3 ORR R0,R0,#0x2000 \ 0000016C 06A080E0 ADD R10,R0,R6 \ 00000170 D40296E5 LDR R0,[R6, #+724] \ 00000174 030050E3 CMP R0,#+3 \ 00000178 0400001A BNE ??AddToMain_10 \ 0000017C 0530A0E1 MOV R3,R5 \ 00000180 0420A0E1 MOV R2,R4 \ 00000184 0710A0E1 MOV R1,R7 \ 00000188 0A00A0E1 MOV R0,R10 \ 0000018C 160000EF SWI +22 2472 if(main_count==4) sprintf(g_txt, "%s: %s", nameu,de); \ ??AddToMain_10: \ 00000190 D40296E5 LDR R0,[R6, #+724] \ 00000194 84BD86E2 ADD R11,R6,#+8448 \ 00000198 040050E3 CMP R0,#+4 \ 0000019C 0400001A BNE ??AddToMain_11 \ 000001A0 0530A0E1 MOV R3,R5 \ 000001A4 0420A0E1 MOV R2,R4 \ 000001A8 0710A0E1 MOV R1,R7 \ 000001AC 0B00A0E1 MOV R0,R11 \ 000001B0 160000EF SWI +22 2473 if(main_count>4) \ ??AddToMain_11: \ 000001B4 D40296E5 LDR R0,[R6, #+724] \ 000001B8 050050E3 CMP R0,#+5 \ 000001BC 100000BA BLT ??AddToMain_12 2474 { 2475 strcpy(a_txt, s_txt); \ 000001C0 00009DE5 LDR R0,[SP, #+0] \ 000001C4 0810A0E1 MOV R1,R8 \ 000001C8 1A0000EF SWI +26 2476 strcpy(s_txt, d_txt); \ 000001CC 0910A0E1 MOV R1,R9 \ 000001D0 0800A0E1 MOV R0,R8 \ 000001D4 1A0000EF SWI +26 2477 strcpy(d_txt, f_txt); \ 000001D8 0A10A0E1 MOV R1,R10 \ 000001DC 0900A0E1 MOV R0,R9 \ 000001E0 1A0000EF SWI +26 2478 strcpy(f_txt, g_txt); \ 000001E4 0B10A0E1 MOV R1,R11 \ 000001E8 0A00A0E1 MOV R0,R10 \ 000001EC 1A0000EF SWI +26 2479 sprintf(g_txt, "%s: %s", nameu,de); \ 000001F0 0530A0E1 MOV R3,R5 \ 000001F4 0420A0E1 MOV R2,R4 \ 000001F8 0710A0E1 MOV R1,R7 \ 000001FC 0B00A0E1 MOV R0,R11 \ 00000200 160000EF SWI +22 2480 } 2481 mfree(de); \ ??AddToMain_12: \ 00000204 0500A0E1 MOV R0,R5 \ 00000208 150000EF SWI +21 2482 main_d=1; \ 0000020C 0100A0E3 MOV R0,#+1 \ 00000210 A80286E5 STR R0,[R6, #+680] 2483 } \ 00000214 F18FBDE8 POP {R0,R4-R11,PC} ;; return \ ??AddToMain_0: \ 00000218 ........ DC32 main_lenght \ 0000021C ........ DC32 use_cutter \ 00000220 ........ DC32 `?` 2484 2485 //======================add to main info================ 2486 2487 int NEW_MSG; 2488 \ In segment CODE, align 4, keep-with-next 2489 void AddStringToLog(CLIST *t, int code, char *s, const char *name, unsigned int IDforACK,int flag) 2490 { \ 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 2491 char hs[128], *lastX; 2492 TTime tt; 2493 TDate d; 2494 GetDateTime(&d,&tt); \ 00000020 0D10A0E1 MOV R1,SP \ 00000024 08008DE2 ADD R0,SP,#+8 \ 00000028 B40000EF SWI +180 2495 int i; 2496 2497 // if(code == 3 && !LOG_XTXT) return; //Нl нуcно nоodrн?nь cennnrnуn 2498 if ( code==3 && NOT_LOG_SAME_XTXT ) \ 0000002C 030055E3 CMP R5,#+3 \ 00000030 1600001A BNE ??AddStringToLog_0 \ 00000034 10029FE5 LDR R0,??AddStringToLog_1 ;; NOT_LOG_SAME_XTXT \ 00000038 000090E5 LDR R0,[R0, #+0] \ 0000003C 000050E3 CMP R0,#+0 \ 00000040 1200000A BEQ ??AddStringToLog_0 2499 { 2500 #ifdef kluchnik 2501 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 20208AE2 ADD R2,R10,#+32 \ 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 2512 if(code != 3 || ((LOG_XTXT) && (flag)))//Нужно сохранять иксстатус \ 000000D0 030055E3 CMP R5,#+3 \ 000000D4 14D08DE2 ADD SP,SP,#+20 \ 000000D8 0400001A BNE ??AddStringToLog_4 \ 000000DC 70019FE5 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 2513 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 2514 2515 LOGQ *p=NewLOGQ(s); \ ??AddStringToLog_5: \ 00000104 0800A0E1 MOV R0,R8 \ 00000108 ........ BL NewLOGQ \ 0000010C 0080A0E1 MOV R8,R0 2516 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] 2517 p->type=code; 2518 p->ID=IDforACK; //0-32767 2519 i=AddLOGQ(&t->log,p); \ 00000118 38619FE5 LDR R6,??AddStringToLog_1+0xC ;; MAXLOGMSG \ 0000011C 0A20A0E1 MOV R2,R10 \ 00000120 01002DE9 PUSH {R0} \ 00000124 1500DDE5 LDRB R0,[SP, #+21] \ 00000128 4F10A0E3 MOV R1,#+79 \ 0000012C 01002DE9 PUSH {R0} \ 00000130 0E00DDE5 LDRB R0,[SP, #+14] \ 00000134 01002DE9 PUSH {R0} \ 00000138 1100DDE5 LDRB R0,[SP, #+17] \ 0000013C 01002DE9 PUSH {R0} \ 00000140 1430DDE5 LDRB R3,[SP, #+20] \ 00000144 100088E2 ADD R0,R8,#+16 \ 00000148 1B0100EF SWI +283 \ 0000014C 0C5088E5 STR R5,[R8, #+12] \ 00000150 087088E5 STR R7,[R8, #+8] \ 00000154 0810A0E1 MOV R1,R8 \ 00000158 A00084E2 ADD R0,R4,#+160 \ 0000015C ........ BL AddLOGQ \ 00000160 0070A0E1 MOV R7,R0 \ 00000164 000096E5 LDR R0,[R6, #+0] \ 00000168 14D08DE2 ADD SP,SP,#+20 \ 0000016C 070050E1 CMP R0,R7 \ 00000170 0A00002A BCS ??AddStringToLog_6 2520 while(i>MAXLOGMSG) 2521 { 2522 if (t->log==t->last_log) t->last_log=t->last_log->next; \ ??AddStringToLog_7: \ 00000174 A80094E5 LDR R0,[R4, #+168] \ 00000178 A01094E5 LDR R1,[R4, #+160] 2523 RemoveLOGQ(&t->log,t->log); 2524 i--; \ 0000017C 017047E2 SUB R7,R7,#+1 \ 00000180 000051E1 CMP R1,R0 \ 00000184 00009005 LDREQ R0,[R0, #+0] \ 00000188 A8008405 STREQ R0,[R4, #+168] \ 0000018C A00084E2 ADD R0,R4,#+160 \ 00000190 ........ BL RemoveLOGQ 2525 } \ 00000194 000096E5 LDR R0,[R6, #+0] \ 00000198 070050E1 CMP R0,R7 \ 0000019C F4FFFF3A BCC ??AddStringToLog_7 2526 t->msg_count=i; 2527 if (!t->last_log) t->last_log=p; 2528 if (code==3) \ ??AddStringToLog_6: \ 000001A0 ........ LDR R6,??DataTable97 ;; i_rc \ 000001A4 B07084E5 STR R7,[R4, #+176] \ 000001A8 A80094E5 LDR R0,[R4, #+168] \ 000001AC 000050E3 CMP R0,#+0 \ 000001B0 A8808405 STREQ R8,[R4, #+168] \ 000001B4 030055E3 CMP R5,#+3 \ 000001B8 0D00001A BNE ??AddStringToLog_8 2529 { 2530 if (edchat_id) \ 000001BC 240496E5 LDR R0,[R6, #+1060] \ 000001C0 000050E3 CMP R0,#+0 \ 000001C4 1C00000A BEQ ??AddStringToLog_9 2531 { 2532 void *data=FindGUIbyId(edchat_id,NULL); \ 000001C8 240496E5 LDR R0,[R6, #+1060] \ 000001CC 0010A0E3 MOV R1,#+0 \ 000001D0 090200EF SWI +521 2533 if (data) \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 1700000A BEQ ??AddStringToLog_9 2534 { 2535 EDCHAT_STRUCT *ed_struct; 2536 ed_struct=EDIT_GetUserPointer(data); \ 000001DC DF0100EF SWI +479 2537 if (ed_struct) \ 000001E0 000050E3 CMP R0,#+0 \ 000001E4 1400000A BEQ ??AddStringToLog_9 2538 { 2539 if (ed_struct->ed_contact==t) \ 000001E8 000090E5 LDR R0,[R0, #+0] \ 000001EC 040050E1 CMP R0,R4 \ 000001F0 1100001A BNE ??AddStringToLog_9 2540 { 2541 goto L_INC; 2542 } 2543 } 2544 } 2545 } 2546 goto L_NOINC; 2547 } 2548 L_INC: 2549 if (!t->isunread) total_unread++; \ ??AddStringToLog_8: \ 000001F4 900094E5 LDR R0,[R4, #+144] \ 000001F8 000050E3 CMP R0,#+0 \ 000001FC 18049605 LDREQ R0,[R6, #+1048] \ 00000200 01008002 ADDEQ R0,R0,#+1 \ 00000204 18048605 STREQ R0,[R6, #+1048] 2550 if(NEW_MSG==1) \ 00000208 500496E5 LDR R0,[R6, #+1104] \ 0000020C 010050E3 CMP R0,#+1 \ 00000210 0700001A BNE ??AddStringToLog_10 2551 { 2552 t->unread_msg++; \ 00000214 940094E5 LDR R0,[R4, #+148] \ 00000218 010080E2 ADD R0,R0,#+1 \ 0000021C 940084E5 STR R0,[R4, #+148] 2553 total_unread2++; \ 00000220 F00296E5 LDR R0,[R6, #+752] \ 00000224 010080E2 ADD R0,R0,#+1 \ 00000228 F00286E5 STR R0,[R6, #+752] 2554 NEW_MSG=0; \ 0000022C 0000A0E3 MOV R0,#+0 \ 00000230 500486E5 STR R0,[R6, #+1104] 2555 } 2556 t->isunread=1; \ ??AddStringToLog_10: \ 00000234 0100A0E3 MOV R0,#+1 \ 00000238 900084E5 STR R0,[R4, #+144] 2557 L_NOINC: 2558 ChangeContactPos(t); \ ??AddStringToLog_9: \ 0000023C 0400A0E1 MOV R0,R4 \ 00000240 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 2559 } \ ??AddStringToLog_3: \ 00000244 90D08DE2 ADD SP,SP,#+144 ;; stack cleaning \ 00000248 F087BDE8 POP {R4-R10,PC} ;; return \ ??AddStringToLog_1: \ 0000024C ........ DC32 NOT_LOG_SAME_XTXT \ 00000250 ........ DC32 `?` \ 00000254 ........ DC32 LOG_XTXT \ 00000258 ........ DC32 MAXLOGMSG 2560 2561 void ParseAnswer(WSHDR *ws, const char *s); 2562 2563 int time_to_stop_t9; 2564 \ In segment CODE, align 4, keep-with-next 2565 void ParseXStatusText(WSHDR *ws, const char *s, int color) 2566 { \ ParseXStatusText: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 \ 0000000C 0260A0E1 MOV R6,R2 2567 int c; 2568 int flag=0; \ 00000010 0070A0E3 MOV R7,#+0 2569 CutWSTR(ws,0); \ 00000014 0010A0E3 MOV R1,#+0 \ 00000018 260100EF SWI +294 2570 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} 2571 wsAppendChar(ws,0xE008); \ 0000002C 0810A0E3 MOV R1,#+8 \ 00000030 E01C81E3 ORR R1,R1,#0xE000 \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 1C0000EF SWI +28 2572 wsAppendChar(ws,color); \ 0000003C 0610A0E1 MOV R1,R6 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 1C0000EF SWI +28 2573 wsAppendChar(ws,0xE013); \ 00000048 1310A0E3 MOV R1,#+19 \ 0000004C E01C81E3 ORR R1,R1,#0xE000 \ 00000050 0A0000EA B ??ParseXStatusText_0 2574 while((c=*s++)) 2575 { 2576 if (c==13) \ ??ParseXStatusText_1: \ 00000054 0D0050E3 CMP R0,#+13 2577 { 2578 if (!flag) \ 00000058 00005703 CMPEQ R7,#+0 \ 0000005C 0500001A BNE ??ParseXStatusText_2 2579 { 2580 flag=1; \ 00000060 0170A0E3 MOV R7,#+1 2581 wsAppendChar(ws,0xE012); \ 00000064 1210A0E3 MOV R1,#+18 \ 00000068 E01C81E3 ORR R1,R1,#0xE000 \ 0000006C 0400A0E1 MOV R0,R4 \ 00000070 1C0000EF SWI +28 2582 c=' '; \ 00000074 2000A0E3 MOV R0,#+32 2583 } 2584 } 2585 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 2586 } \ 00000088 ........ LDRB R0,[R5], #+1 \ 0000008C 000050E3 CMP R0,#+0 \ 00000090 EFFFFF1A BNE ??ParseXStatusText_1 \ 00000094 F080BDE8 POP {R4-R7,PC} ;; return 2587 } 2588 2589 //Добавление итемов в чат при получении нового сообщения \ In segment CODE, align 4, keep-with-next 2590 void AddMsgToChat(void *data) 2591 { \ AddMsgToChat: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 3CD04DE2 SUB SP,SP,#+60 2592 LOGQ *p; 2593 EDITCONTROL ec; 2594 EDITC_OPTIONS ec_options; 2595 EDCHAT_STRUCT *ed_struct; 2596 int j; 2597 int color, font, type; 2598 int zc; 2599 if (!data) return; \ 00000008 000050E3 CMP R0,#+0 \ 0000000C C400000A BEQ ??AddMsgToChat_0 2600 ed_struct=EDIT_GetUserPointer(data); \ 00000010 DF0100EF SWI +479 \ 00000014 0040B0E1 MOVS R4,R0 2601 if (!ed_struct) return; \ 00000018 C100000A BEQ ??AddMsgToChat_0 2602 if (!ed_struct->ed_contact->isunread) return; \ 0000001C 000094E5 LDR R0,[R4, #+0] \ 00000020 901090E5 LDR R1,[R0, #+144] \ 00000024 000051E3 CMP R1,#+0 \ 00000028 BD00000A BEQ ??AddMsgToChat_0 2603 2604 p=ed_struct->ed_contact->last_log; \ 0000002C A85090E5 LDR R5,[R0, #+168] 2605 if (p) \ 00000030 ........ LDR R6,??DataTable97 ;; i_rc \ 00000034 ........ LDR R7,??DataTable98 ;; O_ED_X_FONT_SIZE \ 00000038 ........ LDR R8,??DataTable99 ;; X_COLOR \ 0000003C ........ LDR R9,??DataTable100 ;; O_X_COLOR \ 00000040 000055E3 CMP R5,#+0 \ 00000044 A100000A BEQ ??AddMsgToChat_1 2606 { 2607 while(p) 2608 { 2609 font = ED_H_FONT_SIZE; \ ??AddMsgToChat_2: \ 00000048 ........ LDR R0,??DataTable121 ;; ED_H_FONT_SIZE 2610 if ((zc=p->acked&3)) \ 0000004C ........ LDR R1,??DataTable118 ;; 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 2611 { 2612 if (zc==1) \ 00000064 010050E3 CMP R0,#+1 \ 00000068 1E00001A BNE ??AddMsgToChat_4 2613 color=ACK_COLOR; //Зеленый \ 0000006C ........ LDR R0,??DataTable114 ;; ACK_COLOR \ 00000070 1B0000EA B ??AddMsgToChat_5 2614 else 2615 color=I_COLOR; 2616 } 2617 else 2618 { 2619 if (p->ID==0xFFFFFFFF) \ ??AddMsgToChat_3: \ 00000074 080095E5 LDR R0,[R5, #+8] \ 00000078 010070E3 CMN R0,#+1 \ 0000007C 1700001A BNE ??AddMsgToChat_6 2620 { 2621 type = p->type&0x0F; \ 00000080 0C0095E5 LDR R0,[R5, #+12] \ 00000084 0F1000E2 AND R1,R0,#0xF 2622 if(p->type&0x10) \ 00000088 100010E3 TST R0,#0x10 \ 0000008C 0B00000A BEQ ??AddMsgToChat_7 2623 { 2624 color = (type==1)?O_I_COLOR:((type==3)?O_X_COLOR:O_TO_COLOR); \ 00000090 010051E3 CMP R1,#+1 \ 00000094 ........ LDREQ R0,??DataTable116 ;; 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,??DataTable115 ;; O_TO_COLOR \ ??AddMsgToChat_8: \ 000000B0 00B090E5 LDR R11,[R0, #+0] \ 000000B4 ........ LDR R0,??DataTable120 ;; O_ED_H_FONT_SIZE \ ??AddMsgToChat_9: \ 000000B8 00A090E5 LDR R10,[R0, #+0] \ 000000BC 090000EA B ??AddMsgToChat_4 2625 font = (type==3)?O_ED_X_FONT_SIZE:O_ED_H_FONT_SIZE; 2626 } 2627 else 2628 { 2629 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,??DataTable112 ;; ED_X_FONT_SIZE \ 000000D4 F7FFFF0A BEQ ??AddMsgToChat_9 \ 000000D8 ........ LDR R0,??DataTable117 ;; TO_COLOR \ 000000DC 000000EA B ??AddMsgToChat_5 2630 font = (type==3)?ED_X_FONT_SIZE:ED_H_FONT_SIZE; 2631 } 2632 } 2633 else 2634 color=UNACK_COLOR; //????? \ ??AddMsgToChat_6: \ 000000E0 ........ LDR R0,??DataTable119 ;; UNACK_COLOR \ ??AddMsgToChat_5: \ 000000E4 00B090E5 LDR R11,[R0, #+0] 2635 } 2636 PrepareEditControl(&ec); \ ??AddMsgToChat_4: \ 000000E8 10008DE2 ADD R0,SP,#+16 \ 000000EC 640100EF SWI +356 2637 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 2638 { 2639 ascii2ws(ews,p->hdr); \ 00000100 A00396E5 LDR R0,[R6, #+928] \ 00000104 101085E2 ADD R1,R5,#+16 \ 00000108 ........ _BLF ascii2ws,??ascii2ws??rA 2640 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 0000010C A03396E5 LDR R3,[R6, #+928] \ 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 2641 } 2642 else 2643 ConstructEditControl(&ec,ECT_HEADER,ECF_DELSTR,ews,0); \ ??AddMsgToChat_10: \ 00000124 0000A0E3 MOV R0,#+0 \ 00000128 01002DE9 PUSH {R0} \ 0000012C A03396E5 LDR R3,[R6, #+928] \ 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 2644 PrepareEditCOptions(&ec_options); \ 00000144 0D00A0E1 MOV R0,SP \ 00000148 C80100EF SWI +456 2645 SetPenColorToEditCOptions(&ec_options,color); \ 0000014C 0B10A0E1 MOV R1,R11 \ 00000150 0D00A0E1 MOV R0,SP \ 00000154 CC0100EF SWI +460 2646 SetFontToEditCOptions(&ec_options,font); \ 00000158 0A10A0E1 MOV R1,R10 \ 0000015C 0D00A0E1 MOV R0,SP \ 00000160 CA0100EF SWI +458 2647 CopyOptionsToEditControl(&ec,&ec_options); \ 00000164 0D10A0E1 MOV R1,SP \ 00000168 10008DE2 ADD R0,SP,#+16 \ 0000016C CE0100EF SWI +462 2648 //AddEditControlToEditQend(eq,&ec,ma); 2649 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 2650 ed_struct->ed_answer++; \ 00000184 080094E5 LDR R0,[R4, #+8] \ 00000188 010080E2 ADD R0,R0,#+1 \ 0000018C 080084E5 STR R0,[R4, #+8] 2651 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 2652 { 2653 ParseAnswer(ews,p->text); \ 000001A0 A00396E5 LDR R0,[R6, #+928] \ 000001A4 601085E2 ADD R1,R5,#+96 \ 000001A8 ........ BL ParseAnswer \ 000001AC 050000EA B ??AddMsgToChat_13 2654 } 2655 else 2656 { 2657 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 A00396E5 LDR R0,[R6, #+928] \ 000001BC 00209805 LDREQ R2,[R8, #+0] \ 000001C0 601085E2 ADD R1,R5,#+96 \ 000001C4 ........ BL ParseXStatusText 2658 } 2659 PrepareEditControl(&ec); \ ??AddMsgToChat_13: \ 000001C8 10008DE2 ADD R0,SP,#+16 \ 000001CC 640100EF SWI +356 2660 ConstructEditControl(&ec, 2661 ECT_NORMAL_TEXT, 2662 ews->wsbody[0] ? ECF_APPEND_EOL|ECF_DISABLE_T9 : ECF_DELSTR, 2663 ews,ews->wsbody[0]); \ 000001D0 A03396E5 LDR R3,[R6, #+928] \ 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 2664 PrepareEditCOptions(&ec_options); \ 000001FC 04008DE2 ADD R0,SP,#+4 \ 00000200 C80100EF SWI +456 2665 //#ifdef M75 2666 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 2667 { 2668 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); \ 00000218 100010E3 TST R0,#0x10 \ 0000021C ........ LDRNE R0,??DataTable110 ;; O_ED_FONT_SIZE \ 00000220 ........ LDREQ R0,??DataTable111 ;; ED_FONT_SIZE \ 00000224 001090E5 LDR R1,[R0, #+0] \ 00000228 090000EA B ??AddMsgToChat_15 2669 } 2670 else 2671 { 2672 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 2673 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,??DataTable112 ;; 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 2674 } 2675 //#else 2676 // SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); 2677 //#endif 2678 CopyOptionsToEditControl(&ec,&ec_options); \ 0000025C 0D10A0E1 MOV R1,SP \ 00000260 10008DE2 ADD R0,SP,#+16 \ 00000264 CE0100EF SWI +462 2679 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 2680 ed_struct->ed_answer++; \ 0000027C 080094E5 LDR R0,[R4, #+8] \ 00000280 010080E2 ADD R0,R0,#+1 \ 00000284 080084E5 STR R0,[R4, #+8] 2681 p=p->next; \ 00000288 005095E5 LDR R5,[R5, #+0] 2682 } \ 0000028C 000055E3 CMP R5,#+0 \ 00000290 6CFFFF1A BNE ??AddMsgToChat_2 2683 j=((ed_struct->ed_contact->msg_count+1)*2); //Ожидаемый ed_answer \ 00000294 001094E5 LDR R1,[R4, #+0] \ 00000298 B01091E5 LDR R1,[R1, #+176] \ 0000029C 011081E2 ADD R1,R1,#+1 \ 000002A0 8150A0E1 LSL R5,R1,#+1 \ 000002A4 000055E1 CMP R5,R0 \ 000002A8 070000AA BGE ??AddMsgToChat_16 2684 while(jed_answer) 2685 { 2686 EDIT_RemoveEditControl(ed_struct->ed_chatgui,1); \ ??AddMsgToChat_17: \ 000002AC 040094E5 LDR R0,[R4, #+4] \ 000002B0 0110A0E3 MOV R1,#+1 \ 000002B4 D10100EF SWI +465 2687 ed_struct->ed_answer--; \ 000002B8 080094E5 LDR R0,[R4, #+8] \ 000002BC 010040E2 SUB R0,R0,#+1 \ 000002C0 080084E5 STR R0,[R4, #+8] 2688 } \ 000002C4 000055E1 CMP R5,R0 \ 000002C8 F7FFFFBA BLT ??AddMsgToChat_17 2689 } 2690 ed_struct->ed_contact->last_log=NULL; \ ??AddMsgToChat_16: \ 000002CC 0050A0E3 MOV R5,#+0 \ ??AddMsgToChat_1: \ 000002D0 000094E5 LDR R0,[R4, #+0] \ 000002D4 A85080E5 STR R5,[R0, #+168] 2691 if (IsGuiOnTop(edchat_id)) \ 000002D8 240496E5 LDR R0,[R6, #+1060] \ 000002DC 350100EF SWI +309 \ 000002E0 000050E3 CMP R0,#+0 \ 000002E4 0300000A BEQ ??AddMsgToChat_18 2692 { 2693 total_unread--; \ 000002E8 180496E5 LDR R0,[R6, #+1048] \ 000002EC 010040E2 SUB R0,R0,#+1 \ 000002F0 180486E5 STR R0,[R6, #+1048] \ 000002F4 020000EA B ??AddMsgToChat_19 2694 } 2695 else 2696 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] 2697 ed_struct->ed_contact->isunread=0; \ ??AddMsgToChat_19: \ 00000304 000094E5 LDR R0,[R4, #+0] \ 00000308 905080E5 STR R5,[R0, #+144] 2698 total_unread2=total_unread2-ed_struct->ed_contact->unread_msg; \ 0000030C F01296E5 LDR R1,[R6, #+752] \ 00000310 942090E5 LDR R2,[R0, #+148] \ 00000314 021041E0 SUB R1,R1,R2 \ 00000318 F01286E5 STR R1,[R6, #+752] 2699 ed_struct->ed_contact->unread_msg=0; \ 0000031C 945080E5 STR R5,[R0, #+148] 2700 ChangeContactPos(ed_struct->ed_contact); \ 00000320 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 2701 // EDIT_SetFocus(data,ed_struct->ed_answer); 2702 } \ ??AddMsgToChat_0: \ 00000324 40D08DE2 ADD SP,SP,#+64 ;; stack cleaning \ 00000328 F08FBDE8 POP {R4-R11,PC} ;; return 2703 2704 //Рисуем подтверждения непосредственно \ In segment CODE, align 4, keep-with-next 2705 void DrawAck(void *data) 2706 { \ DrawAck: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 3CD04DE2 SUB SP,SP,#+60 \ 00000008 0040B0E1 MOVS R4,R0 2707 LOGQ *p; 2708 EDITCONTROL ec; 2709 EDITC_OPTIONS ec_options; 2710 EDCHAT_STRUCT *ed_struct; 2711 int j; 2712 int color; 2713 int dorefresh=0; \ 0000000C 0060A0E3 MOV R6,#+0 2714 if (!data) return; \ 00000010 4C00000A BEQ ??DrawAck_0 2715 ed_struct=EDIT_GetUserPointer(data); \ 00000014 DF0100EF SWI +479 2716 if (!ed_struct) return; \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 4900000A BEQ ??DrawAck_0 2717 p=ed_struct->ed_contact->log; \ 00000020 001090E5 LDR R1,[R0, #+0] 2718 j=ed_struct->ed_answer; 2719 j-=(ed_struct->ed_contact->msg_count*2)+1; //Номер собственно хедера верхнего итема \ 00000024 080090E5 LDR R0,[R0, #+8] \ 00000028 A05091E5 LDR R5,[R1, #+160] \ 0000002C B01091E5 LDR R1,[R1, #+176] \ 00000030 000055E3 CMP R5,#+0 \ 00000034 810040E0 SUB R0,R0,R1, LSL #+1 \ 00000038 017040E2 SUB R7,R0,#+1 \ 0000003C 3A00000A BEQ ??DrawAck_1 2720 while(p) 2721 { 2722 if (j>=1) //Пока возможно лишнее \ ??DrawAck_2: \ 00000040 010057E3 CMP R7,#+1 \ 00000044 340000BA BLT ??DrawAck_3 2723 { 2724 if (!(p->acked&4)) \ 00000048 040095E5 LDR R0,[R5, #+4] \ 0000004C 040010E3 TST R0,#0x4 \ 00000050 3100001A BNE ??DrawAck_3 2725 { 2726 ExtractEditControl(data,j,&ec); \ 00000054 10208DE2 ADD R2,SP,#+16 \ 00000058 0710A0E1 MOV R1,R7 \ 0000005C 0400A0E1 MOV R0,R4 \ 00000060 690100EF SWI +361 2727 PrepareEditCOptions(&ec_options); \ 00000064 0D00A0E1 MOV R0,SP \ 00000068 C80100EF SWI +456 2728 if (p->acked) \ 0000006C 040095E5 LDR R0,[R5, #+4] \ 00000070 000050E3 CMP R0,#+0 \ 00000074 0300000A BEQ ??DrawAck_4 2729 { 2730 if (p->acked==1) \ 00000078 010050E3 CMP R0,#+1 \ 0000007C ........ LDRNE R0,??DataTable118 ;; I_COLOR 2731 color=ACK_COLOR; //Зеленый \ 00000080 ........ LDREQ R0,??DataTable114 ;; ACK_COLOR \ 00000084 0F0000EA B ??DrawAck_5 2732 else 2733 color=I_COLOR; 2734 } 2735 else 2736 { 2737 if (p->ID==0xFFFFFFFF) \ ??DrawAck_4: \ 00000088 080095E5 LDR R0,[R5, #+8] \ 0000008C 010070E3 CMN R0,#+1 \ 00000090 0B00001A BNE ??DrawAck_6 2738 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,??DataTable115 ;; O_TO_COLOR \ 000000AC ........ LDREQ R0,??DataTable116 ;; O_I_COLOR \ 000000B0 040000EA B ??DrawAck_5 \ ??DrawAck_7: \ 000000B4 010050E3 CMP R0,#+1 \ 000000B8 ........ LDRNE R0,??DataTable117 ;; TO_COLOR \ 000000BC ........ LDREQ R0,??DataTable118 ;; I_COLOR \ 000000C0 000000EA B ??DrawAck_5 2739 else 2740 color=UNACK_COLOR; //Серый \ ??DrawAck_6: \ 000000C4 ........ LDR R0,??DataTable119 ;; UNACK_COLOR 2741 } 2742 SetPenColorToEditCOptions(&ec_options,color/*p->type==1?I_COLOR:TO_COLOR*/); 2743 SetFontToEditCOptions(&ec_options,(p->type&0x10)?O_ED_H_FONT_SIZE:ED_H_FONT_SIZE); 2744 CopyOptionsToEditControl(&ec,&ec_options); 2745 StoreEditControl(data,j,&ec); 2746 p->acked|=4; //Обработали 2747 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,??DataTable120 ;; O_ED_H_FONT_SIZE \ 000000E4 ........ LDREQ R0,??DataTable121 ;; 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] 2748 } 2749 } 2750 j+=2; 2751 p=p->next; \ ??DrawAck_3: \ 0000011C 005095E5 LDR R5,[R5, #+0] \ 00000120 027087E2 ADD R7,R7,#+2 2752 } \ 00000124 000055E3 CMP R5,#+0 \ 00000128 C4FFFF1A BNE ??DrawAck_2 2753 if (IsGuiOnTop(edchat_id)&&dorefresh) RefreshGUI(); \ ??DrawAck_1: \ 0000012C 1C009FE5 LDR R0,??DrawAck_8 ;; i_rc + 1060 \ 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 i_rc + 1060 2754 } 2755 \ In segment CODE, align 4, keep-with-next 2756 void ask_my_info(void) 2757 { 2758 /* TPKT *p; 2759 CLIST *t; 2760 p=malloc(sizeof(PKT)); 2761 p->pkt.uin=UIN; 2762 p->pkt.type=T_REQINFOSHORT; 2763 p->pkt.data_len=0; 2764 // AddStringToLog(t,0x01,"Request info...",I_str); 2765 SUBPROC((void *)SendAnswer,0,p);*/ 2766 } \ ask_my_info: \ 00000000 1EFF2FE1 BX LR ;; return 2767 \ In segment CODE, align 4, keep-with-next 2768 void set_my_status(void) 2769 { \ set_my_status: \ 00000000 00402DE9 PUSH {LR} 2770 TPKT *p; 2771 p=malloc(sizeof(PKT)+1); \ 00000004 0900A0E3 MOV R0,#+9 \ 00000008 140000EF SWI +20 2772 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 001080E5 STR R1,[R0, #+0] 2773 p->pkt.type=T_MY_STATUS_CH; // Тип пакета: изменение статуса \ 00000014 0F10A0E3 MOV R1,#+15 \ 00000018 B410C0E1 STRH R1,[R0, #+4] 2774 p->pkt.data_len=1; // Длина пакета: 1 байт \ 0000001C 0110A0E3 MOV R1,#+1 \ 00000020 B610C0E1 STRH R1,[R0, #+6] 2775 p->data[0]=CurrentStatus; \ 00000024 18109FE5 LDR R1,??set_my_status_0 ;; i_rc + 920 2776 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,??DataTable134 ;; SendAnswer \ 00000038 0010A0E3 MOV R1,#+0 \ 0000003C 710100EF SWI +369 2777 } \ 00000040 0080BDE8 POP {PC} ;; return \ ??set_my_status_0: \ 00000044 ........ DC32 i_rc + 920 2778 2779 extern int Send0; 2780 \ In segment CODE, align 4, keep-with-next 2781 void set_my_xstatus(void) 2782 { \ set_my_xstatus: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 2783 #ifdef NEWSGOLD 2784 if(Is_Id3tag_Enabled) \ 00000004 ........ LDR R7,??DataTable133 ;; i_rc \ 00000008 ........ LDR R4,??DataTable134 ;; SendAnswer \ 0000000C 0CD04DE2 SUB SP,SP,#+12 \ 00000010 0C0397E5 LDR R0,[R7, #+780] \ 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 4000000A BEQ ??set_my_xstatus_0 2785 { 2786 if(CurrentXStatus!=11 || !Is_ID3_ANY_STATUS) \ 0000002C 9C0397E5 LDR R0,[R7, #+924] \ 00000030 0B0050E3 CMP R0,#+11 \ 00000034 0300001A BNE ??set_my_xstatus_1 \ 00000038 E0019FE5 LDR R0,??set_my_xstatus_2 ;; Is_ID3_ANY_STATUS \ 0000003C 000090E5 LDR R0,[R0, #+0] \ 00000040 000050E3 CMP R0,#+0 \ 00000044 7200001A BNE ??set_my_xstatus_3 2787 { 2788 #endif 2789 TPKT *p; 2790 char *s1; 2791 char *s2; 2792 int l1; 2793 int l2; 2794 p=malloc(sizeof(PKT)+1); \ ??set_my_xstatus_1: \ 00000048 0900A0E3 MOV R0,#+9 \ 0000004C 140000EF SWI +20 \ 00000050 0080A0E1 MOV R8,R0 2795 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 00000054 006088E5 STR R6,[R8, #+0] 2796 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса \ 00000058 B4A0C8E1 STRH R10,[R8, #+4] 2797 p->pkt.data_len=1; // Длина пакета: 1 байт \ 0000005C B690C8E1 STRH R9,[R8, #+6] 2798 p->data[0]=CurrentXStatus; \ 00000060 9C0397E5 LDR R0,[R7, #+924] 2799 SUBPROC((void *)SendAnswer,0,p); \ 00000064 0820A0E1 MOV R2,R8 \ 00000068 0800C8E5 STRB R0,[R8, #+8] \ 0000006C 0010A0E3 MOV R1,#+0 \ 00000070 0400A0E1 MOV R0,R4 \ 00000074 710100EF SWI +369 2800 s1=GetXStatusStr(CurrentXStatus*3+1,&l1); \ 00000078 9C0397E5 LDR R0,[R7, #+924] \ 0000007C 0D10A0E1 MOV R1,SP \ 00000080 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000084 010080E2 ADD R0,R0,#+1 \ 00000088 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 0000008C 0090A0E1 MOV R9,R0 2801 s2=GetXStatusStr(CurrentXStatus*3+2,&l2); \ 00000090 9C0397E5 LDR R0,[R7, #+924] \ 00000094 04108DE2 ADD R1,SP,#+4 \ 00000098 800080E0 ADD R0,R0,R0, LSL #+1 \ 0000009C 020080E2 ADD R0,R0,#+2 \ 000000A0 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 000000A4 0070A0E1 MOV R7,R0 2802 if ((!s1)||(!s2)) return; \ 000000A8 000059E3 CMP R9,#+0 \ 000000AC 00005713 CMPNE R7,#+0 \ 000000B0 F787BD08 POPEQ {R0-R2,R4-R10,PC} 2803 p=malloc(sizeof(PKT)+l1+l2+1); \ 000000B4 00009DE5 LDR R0,[SP, #+0] \ 000000B8 04109DE5 LDR R1,[SP, #+4] \ 000000BC 000081E0 ADD R0,R1,R0 \ 000000C0 090080E2 ADD R0,R0,#+9 \ 000000C4 140000EF SWI +20 \ 000000C8 0080A0E1 MOV R8,R0 2804 p->pkt.uin=0; \ 000000CC 006088E5 STR R6,[R8, #+0] 2805 p->pkt.type=T_XTEXT_SET; \ 000000D0 B450C8E1 STRH R5,[R8, #+4] 2806 p->pkt.data_len=l1+l2+1; \ 000000D4 00009DE5 LDR R0,[SP, #+0] \ 000000D8 04109DE5 LDR R1,[SP, #+4] \ 000000DC 000081E0 ADD R0,R1,R0 \ 000000E0 010080E2 ADD R0,R0,#+1 \ 000000E4 B600C8E1 STRH R0,[R8, #+6] 2807 strncpy(p->data+0,s1,l1); \ 000000E8 00209DE5 LDR R2,[SP, #+0] \ 000000EC 0910A0E1 MOV R1,R9 \ 000000F0 080088E2 ADD R0,R8,#+8 \ 000000F4 160100EF SWI +278 2808 p->data[l1]=0; \ 000000F8 00009DE5 LDR R0,[SP, #+0] 2809 strncpy(p->data+l1+1,s2,l2); \ 000000FC 0710A0E1 MOV R1,R7 \ 00000100 080080E0 ADD R0,R0,R8 \ 00000104 0860C0E5 STRB R6,[R0, #+8] \ 00000108 00009DE5 LDR R0,[SP, #+0] \ 0000010C 04209DE5 LDR R2,[SP, #+4] \ 00000110 080080E0 ADD R0,R0,R8 \ 00000114 090080E2 ADD R0,R0,#+9 \ 00000118 160100EF SWI +278 2810 SUBPROC((void *)SendAnswer,0,p); \ 0000011C 0820A0E1 MOV R2,R8 \ 00000120 0010A0E3 MOV R1,#+0 \ 00000124 0400A0E1 MOV R0,R4 \ 00000128 710100EF SWI +369 \ 0000012C F787BDE8 POP {R0-R2,R4-R10,PC} 2811 #ifdef NEWSGOLD 2812 } 2813 else 2814 { 2815 tracktimer=0; 2816 GetTags(); 2817 } 2818 } 2819 else 2820 { 2821 TPKT *p; 2822 char *s1; 2823 char *s2; 2824 int l1; 2825 int l2; 2826 p=malloc(sizeof(PKT)+1); \ ??set_my_xstatus_0: \ 00000130 0900A0E3 MOV R0,#+9 \ 00000134 140000EF SWI +20 \ 00000138 0080A0E1 MOV R8,R0 2827 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере \ 0000013C 006088E5 STR R6,[R8, #+0] 2828 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса \ 00000140 B4A0C8E1 STRH R10,[R8, #+4] 2829 p->pkt.data_len=1; // Длина пакета: 1 байт \ 00000144 B690C8E1 STRH R9,[R8, #+6] 2830 p->data[0]=CurrentXStatus; \ 00000148 9C0397E5 LDR R0,[R7, #+924] 2831 SUBPROC((void *)SendAnswer,0,p); \ 0000014C 0820A0E1 MOV R2,R8 \ 00000150 0800C8E5 STRB R0,[R8, #+8] \ 00000154 0010A0E3 MOV R1,#+0 \ 00000158 0400A0E1 MOV R0,R4 \ 0000015C 710100EF SWI +369 2832 s1=GetXStatusStr(CurrentXStatus*3+1,&l1); \ 00000160 9C0397E5 LDR R0,[R7, #+924] \ 00000164 0D10A0E1 MOV R1,SP \ 00000168 800080E0 ADD R0,R0,R0, LSL #+1 \ 0000016C 010080E2 ADD R0,R0,#+1 \ 00000170 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 00000174 0090A0E1 MOV R9,R0 2833 s2=GetXStatusStr(CurrentXStatus*3+2,&l2); \ 00000178 9C0397E5 LDR R0,[R7, #+924] \ 0000017C 04108DE2 ADD R1,SP,#+4 \ 00000180 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000184 020080E2 ADD R0,R0,#+2 \ 00000188 ........ _BLF GetXStatusStr,??GetXStatusStr??rA \ 0000018C 00A0A0E1 MOV R10,R0 2834 if ((!s1)||(!s2)) return; \ 00000190 000059E3 CMP R9,#+0 \ 00000194 00005A13 CMPNE R10,#+0 \ 00000198 F787BD08 POPEQ {R0-R2,R4-R10,PC} 2835 p=malloc(sizeof(PKT)+l1+l2+1); \ 0000019C 00009DE5 LDR R0,[SP, #+0] \ 000001A0 04109DE5 LDR R1,[SP, #+4] \ 000001A4 000081E0 ADD R0,R1,R0 \ 000001A8 090080E2 ADD R0,R0,#+9 \ 000001AC 140000EF SWI +20 \ 000001B0 0080A0E1 MOV R8,R0 2836 p->pkt.uin=0; \ 000001B4 006088E5 STR R6,[R8, #+0] 2837 p->pkt.type=T_XTEXT_SET; \ 000001B8 B450C8E1 STRH R5,[R8, #+4] 2838 p->pkt.data_len=l1+l2+1; \ 000001BC 00009DE5 LDR R0,[SP, #+0] \ 000001C0 04109DE5 LDR R1,[SP, #+4] \ 000001C4 000081E0 ADD R0,R1,R0 \ 000001C8 010080E2 ADD R0,R0,#+1 \ 000001CC B600C8E1 STRH R0,[R8, #+6] 2839 strncpy(p->data+0,s1,l1); \ 000001D0 00209DE5 LDR R2,[SP, #+0] \ 000001D4 0910A0E1 MOV R1,R9 \ 000001D8 080088E2 ADD R0,R8,#+8 \ 000001DC 160100EF SWI +278 2840 p->data[l1]=0; \ 000001E0 00009DE5 LDR R0,[SP, #+0] 2841 strncpy(p->data+l1+1,s2,l2); \ 000001E4 0A10A0E1 MOV R1,R10 \ 000001E8 080080E0 ADD R0,R0,R8 \ 000001EC 0860C0E5 STRB R6,[R0, #+8] \ 000001F0 00009DE5 LDR R0,[SP, #+0] \ 000001F4 04209DE5 LDR R2,[SP, #+4] \ 000001F8 080080E0 ADD R0,R0,R8 \ 000001FC 090080E2 ADD R0,R0,#+9 \ 00000200 160100EF SWI +278 2842 SUBPROC((void *)SendAnswer,0,p); \ 00000204 0820A0E1 MOV R2,R8 \ 00000208 0010A0E3 MOV R1,#+0 \ 0000020C 0400A0E1 MOV R0,R4 \ 00000210 710100EF SWI +369 2843 tracktimer=0; \ ??set_my_xstatus_3: \ 00000214 C46387E5 STR R6,[R7, #+964] 2844 GetTags(); \ 00000218 ........ _BLF GetTags,??GetTags??rA \ 0000021C F787BDE8 POP {R0-R2,R4-R10,PC} ;; return \ ??set_my_xstatus_2: \ 00000220 ........ DC32 Is_ID3_ANY_STATUS 2845 } 2846 #endif 2847 } 2848 2849 #ifdef NEWSGOLD 2850 \ In segment CODE, align 4, keep-with-next 2851 void set_my_xstatus2(void) 2852 { \ set_my_xstatus2: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 2853 TPKT *p; 2854 // char *s1; 2855 // char *s2; 2856 int l1; 2857 int l2; 2858 p=malloc(sizeof(PKT)+1); 2859 p->pkt.uin=0; // Никому; поле нужно проигнорировать на сервере 2860 p->pkt.type=T_MY_XSTATUS_CH; // Тип пакета: изменение статуса 2861 p->pkt.data_len=1; // Длина пакета: 1 байт 2862 p->data[0]=11; 2863 SUBPROC((void *)SendAnswer,0,p); \ 00000004 ........ LDR R6,??DataTable134 ;; SendAnswer 2864 // char *s1; 2865 char *sk2=malloc(256); 2866 // strcpy(s1, playing); 2867 // s1="Now playing:"; 2868 strcpy(sk2,teast2); 2869 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 2870 l2=strlen(sk2); \ 0000006C 0700A0E1 MOV R0,R7 \ 00000070 1B0000EF SWI +27 \ 00000074 00A0A0E1 MOV R10,R0 2871 if ((!playing)||(!sk2)) return; \ 00000078 000057E3 CMP R7,#+0 \ 0000007C F187BD08 POPEQ {R0,R4-R10,PC} 2872 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 2873 p->pkt.uin=0; \ 00000090 005084E5 STR R5,[R4, #+0] 2874 p->pkt.type=T_XTEXT_SET; \ 00000094 1A00A0E3 MOV R0,#+26 \ 00000098 B400C4E1 STRH R0,[R4, #+4] 2875 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] 2876 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 2877 p->data[l1]=0; \ 000000B8 040089E0 ADD R0,R9,R4 \ 000000BC 0850C0E5 STRB R5,[R0, #+8] 2878 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 2879 mfree(sk2); \ 000000D0 0700A0E1 MOV R0,R7 \ 000000D4 150000EF SWI +21 2880 SUBPROC((void *)SendAnswer,0,p); \ 000000D8 0420A0E1 MOV R2,R4 \ 000000DC 0010A0E3 MOV R1,#+0 \ 000000E0 0600A0E1 MOV R0,R6 \ 000000E4 710100EF SWI +369 2881 // mfree(s1); 2882 // mfree(s2); 2883 } \ 000000E8 F187BDE8 POP {R0,R4-R10,PC} ;; return \ ??set_my_xstatus2_0: \ 000000EC ........ DC32 playing \ 000000F0 ........ DC32 teast2 2884 #endif \ In segment CODE, align 4, keep-with-next 2885 void to_develop(void) 2886 { 2887 if (silenthide) return; \ to_develop: \ 00000000 ........ LDR R0,??DataTable133 ;; i_rc \ 00000004 00402DE9 PUSH {LR} \ 00000008 CC1390E5 LDR R1,[R0, #+972] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0080BD18 POPNE {PC} 2888 gipc.name_to=ipc_xtask_name; \ 00000014 ........ LDR R1,??DataTable127 ;; Canvas 2889 gipc.name_from=ipc_my_name; 2890 gipc.data=(void *)maincsm_id; 2891 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc); \ 00000018 EC3080E2 ADD R3,R0,#+236 \ 0000001C DE2F81E2 ADD R2,R1,#+888 \ 00000020 D61F81E2 ADD R1,R1,#+856 \ 00000024 F01080E5 STR R1,[R0, #+240] \ 00000028 F41290E5 LDR R1,[R0, #+756] \ 0000002C EC2080E5 STR R2,[R0, #+236] \ 00000030 F41080E5 STR R1,[R0, #+244] \ 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 2892 } \ 0000004C 0080BDE8 POP {PC} ;; return 2893 \ In segment CODE, align 4, keep-with-next 2894 void ReqAddMsgToChat(CLIST *t) 2895 { \ ReqAddMsgToChat: \ 00000000 70402DE9 PUSH {R4-R6,LR} 2896 if (edchat_id) \ 00000004 ........ LDR R5,??DataTable133 ;; i_rc \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 240495E5 LDR R0,[R5, #+1060] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 7080BD08 POPEQ {R4-R6,PC} 2897 { 2898 void *data=FindGUIbyId(edchat_id,NULL); \ 00000018 240495E5 LDR R0,[R5, #+1060] \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 090200EF SWI +521 \ 00000024 0060A0E1 MOV R6,R0 2899 { 2900 EDCHAT_STRUCT *ed_struct; 2901 ed_struct=EDIT_GetUserPointer(data); \ 00000028 DF0100EF SWI +479 2902 if (ed_struct) \ 0000002C 000050E3 CMP R0,#+0 \ 00000030 7080BD08 POPEQ {R4-R6,PC} 2903 { 2904 if (ed_struct->ed_contact==t) \ 00000034 000090E5 LDR R0,[R0, #+0] \ 00000038 040050E1 CMP R0,R4 \ 0000003C 7080BD18 POPNE {R4-R6,PC} 2905 { 2906 if (EDIT_IsBusy(data)) \ 00000040 0600A0E1 MOV R0,R6 \ 00000044 1C0200EF SWI +540 \ 00000048 000050E3 CMP R0,#+0 \ 0000004C 0400000A BEQ ??ReqAddMsgToChat_0 2907 { 2908 t->req_add=1; \ 00000050 0100A0E3 MOV R0,#+1 \ 00000054 980084E5 STR R0,[R4, #+152] 2909 #ifdef EVILFOX 2910 time_to_stop_t9=2; 2911 #else 2912 time_to_stop_t9=3; \ 00000058 0300A0E3 MOV R0,#+3 \ 0000005C 540485E5 STR R0,[R5, #+1108] \ 00000060 7080BDE8 POP {R4-R6,PC} 2913 #endif 2914 } 2915 else 2916 { 2917 AddMsgToChat(data); \ ??ReqAddMsgToChat_0: \ 00000064 0600A0E1 MOV R0,R6 \ 00000068 ........ BL AddMsgToChat 2918 DirectRedrawGUI_ID(edchat_id); \ 0000006C 240495E5 LDR R0,[R5, #+1060] \ 00000070 400100EF SWI +320 2919 } 2920 } 2921 } 2922 } 2923 } 2924 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return 2925 2926 GBSTMR develop; 2927 \ In segment CODE, align 4, keep-with-next 2928 void begin_to_develop() 2929 { \ begin_to_develop: \ 00000000 00402DE9 PUSH {LR} 2930 if(IsUnlocked()) \ 00000004 430000EF SWI +67 \ 00000008 000050E3 CMP R0,#+0 \ 0000000C 0100000A BEQ ??begin_to_develop_0 2931 to_develop(); \ 00000010 0040BDE8 POP {LR} ;; Pop \ 00000014 ........ B to_develop ;; tailcall 2932 else 2933 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 ;; i_rc + 8496 \ 00000020 6410A0E3 MOV R1,#+100 \ 00000024 4D0000EF SWI +77 2934 } \ 00000028 0080BDE8 POP {PC} ;; return \ ??begin_to_develop_1: \ 0000002C ........ DC32 begin_to_develop \ 00000030 ........ DC32 i_rc + 8496 2935 2936 2937 2938 //----------------------------- LOAD COMMANDS -----------------------------// 2939 //Templates 2940 char *cmd_chars; //Собственно файл 2941 char **cmd_lines; //Массив указателей на строки 2942 \ In segment CODE, align 4, keep-with-next 2943 void cmdFree(void) 2944 { \ cmdFree: \ 00000000 10402DE9 PUSH {R4,LR} 2945 if (cmd_lines) mfree(cmd_lines); \ 00000004 ........ LDR R4,??DataTable132 ;; CmdMenuHeader \ 00000008 180094E5 LDR R0,[R4, #+24] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0000000A BEQ ??cmdFree_0 \ 00000014 150000EF SWI +21 2946 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 2947 cmd_lines=NULL; \ 00000028 0000A0E3 MOV R0,#+0 \ ??cmdFree_1: \ 0000002C 180084E5 STR R0,[R4, #+24] 2948 cmd_chars=NULL; \ 00000030 140084E5 STR R0,[R4, #+20] 2949 } \ 00000034 1080BDE8 POP {R4,PC} ;; return 2950 \ In segment CODE, align 4, keep-with-next 2951 int LoadCmd() 2952 { \ LoadCmd: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 4BDF4DE2 SUB SP,SP,#+300 2953 FSTATS stat; 2954 char fn[256]; 2955 int f; 2956 unsigned int ul; 2957 int i; 2958 int fsize; 2959 char *p; 2960 char *pp; 2961 int c; 2962 cmdFree(); \ 00000008 ........ BL cmdFree 2963 strcpy(fn,TEMPLATES_PATH); \ 0000000C ........ LDR R1,??DataTable130 ;; TEMPLATES_PATH \ 00000010 04008DE2 ADD R0,SP,#+4 \ 00000014 1A0000EF SWI +26 2964 i=strlen(fn); \ 00000018 04008DE2 ADD R0,SP,#+4 \ 0000001C 1B0000EF SWI +27 2965 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 2966 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 2967 fsize=stat.size; \ 00000044 08719DE5 LDR R7,[SP, #+264] 2968 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 2969 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 2970 p=cmd_chars=malloc(fsize+1); \ ??LoadCmd_1: \ 00000074 ........ LDR R4,??DataTable132 ;; CmdMenuHeader \ 00000078 010087E2 ADD R0,R7,#+1 \ 0000007C 140000EF SWI +20 \ 00000080 140084E5 STR R0,[R4, #+20] \ 00000084 0060A0E1 MOV R6,R0 2971 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] 2972 fclose(f,&ul); \ 000000A4 0D10A0E1 MOV R1,SP \ 000000A8 0800A0E1 MOV R0,R8 \ 000000AC 0D0000EF SWI +13 2973 i=0; \ 000000B0 0070A0E3 MOV R7,#+0 2974 pp=p; \ 000000B4 0680A0E1 MOV R8,R6 \ 000000B8 020000EA B ??LoadCmd_3 2975 for(;;) 2976 { 2977 c=*p; 2978 if (c<32) 2979 { 2980 if (pp&&(pp!=p)) 2981 { 2982 cmd_lines=realloc(cmd_lines,(i+1)*sizeof(char *)); 2983 cmd_lines[i++]=pp; 2984 } 2985 pp=NULL; 2986 if (!c) break; 2987 *p=0; 2988 } 2989 else 2990 { 2991 if (pp==NULL) pp=p; \ ??LoadCmd_4: \ 000000BC 000058E3 CMP R8,#+0 \ 000000C0 0680A001 MOVEQ R8,R6 2992 } 2993 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 2994 } 2995 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 `?` 2996 } 2997 2998 int NumOfItems=0; 2999 HEADER_DESC CmdMenuHeader={NULL,NULL,NULL,NULL,NULL,NULL,LGP_NULL}; 3000 \ In segment CODE, align 4, keep-with-next 3001 void CmdMenuItemHandler(void *data, int curitem, void *unk) 3002 { \ CmdMenuItemHandler: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 3003 void *item=AllocMenuItem(data); \ 0000000C 970100EF SWI +407 \ 00000010 0060A0E1 MOV R6,R0 3004 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] 3005 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 3006 ascii2ws(ws,p); \ 00000038 0710A0E1 MOV R1,R7 \ 0000003C ........ _BLF ascii2ws,??ascii2ws??rA 3007 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 3008 } \ 00000054 F081BDE8 POP {R4-R8,PC} ;; return \ ??CmdMenuItemHandler_0: \ 00000058 ........ DC32 CmdMenuHeader + 24 3009 \ In segment CODE, align 4, keep-with-next 3010 void CmdMenuGHook(void *data, int cmd) 3011 { \ CmdMenuGHook: \ 00000000 00402DE9 PUSH {LR} 3012 if (cmd==TI_CMD_FOCUS) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0100001A BNE ??CmdMenuGHook_0 3013 { 3014 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 \ 00000010 0080BDE8 POP {PC} 3015 } 3016 if (cmd==TI_CMD_DESTROY) \ ??CmdMenuGHook_0: \ 00000014 030051E3 CMP R1,#+3 \ 00000018 0080BD18 POPNE {PC} 3017 { 3018 cmdFree(); \ 0000001C 0040BDE8 POP {LR} ;; Pop \ 00000020 ........ B cmdFree ;; tailcall 3019 } 3020 } 3021 \ In segment CODE, align 4, keep-with-next 3022 static int CmdMenuKeyHook(void *data, GUI_MSG *msg) 3023 { \ CmdMenuKeyHook: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 3024 int Selected=GetCurMenuItem(data); \ 0000000C 8F0100EF SWI +399 \ 00000010 0060A0E1 MOV R6,R0 3025 EDCHAT_STRUCT *ed_struct=MenuGetUserPointer(data); \ 00000014 0400A0E1 MOV R0,R4 \ 00000018 E00100EF SWI +480 \ 0000001C 0040A0E1 MOV R4,R0 3026 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 3027 { 3028 if (NumOfItems) \ 00000030 ........ LDR R0,??DataTable132 ;; CmdMenuHeader \ 00000034 1C1090E5 LDR R1,[R0, #+28] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 1300000A BEQ ??CmdMenuKeyHook_0 3029 { 3030 const char *p=cmd_lines[Selected]; \ 00000040 180090E5 LDR R0,[R0, #+24] \ 00000044 065190E7 LDR R5,[R0, +R6, LSL #+2] 3031 WSHDR *ws; 3032 ws=AllocWS(256); \ 00000048 400FA0E3 MOV R0,#+256 \ 0000004C 250100EF SWI +293 \ 00000050 0060A0E1 MOV R6,R0 3033 // wsprintf(ws,percent_t,p); 3034 ascii2ws(ws,p); \ 00000054 0510A0E1 MOV R1,R5 \ 00000058 ........ _BLF ascii2ws,??ascii2ws??rA 3035 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 3036 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 3037 FreeWS(ws); \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 290100EF SWI +297 3038 return(1); \ 00000088 0100A0E3 MOV R0,#+1 \ 0000008C 7080BDE8 POP {R4-R6,PC} 3039 } 3040 } 3041 return(0); \ ??CmdMenuKeyHook_0: \ 00000090 0000A0E3 MOV R0,#+0 \ 00000094 7080BDE8 POP {R4-R6,PC} ;; return 3042 } 3043 3044 const int CmdSoftkeys[]={0,1,2}; 3045 3046 const SOFTKEY_DESC cmd_sk[]= 3047 { 3048 {0x0004,0x0000,(int)""}, 3049 {0x0001,0x0000,(int)LG_CLOSE}, 3050 {0x003D,0x0000,(int)LGP_DOIT_PIC} 3051 }; 3052 const SOFTKEYSTAB cmd_Back_skt= 3053 { 3054 cmd_sk,0 3055 }; 3056 static const MENU_DESC CmdMenuStruct= 3057 { 3058 8,CmdMenuKeyHook,CmdMenuGHook,NULL, 3059 CmdSoftkeys, 3060 &cmd_Back_skt, 3061 0x10, 3062 CmdMenuItemHandler, 3063 NULL, //menuitems, 3064 NULL, //menuprocs, 3065 NULL 3066 }; 3067 \ In segment CODE, align 4, keep-with-next 3068 int DispCmdMenu(void *ed_gui) 3069 { \ DispCmdMenu: \ 00000000 70402DE9 PUSH {R4-R6,LR} 3070 NumOfItems=LoadCmd(); \ 00000004 8C509FE5 LDR R5,??DispCmdMenu_0 ;; CmdMenuHeader 3071 if(NumOfItems) \ 00000008 8C609FE5 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 1800000A BEQ ??DispCmdMenu_1 3072 { 3073 *((int *)(&CmdMenuHeader.lgp_id))=(int)"Select command"; \ 00000020 100086E2 ADD R0,R6,#+16 \ 00000024 0C0085E5 STR R0,[R5, #+12] 3074 patch_header(&CmdMenuHeader); \ 00000028 0000A0E3 MOV R0,#+0 \ 0000002C B000C5E1 STRH R0,[R5, #+0] \ 00000030 1800A0E3 MOV R0,#+24 \ 00000034 B200C5E1 STRH R0,[R5, #+2] \ 00000038 888100EF SWI +33160 \ 0000003C 010040E2 SUB R0,R0,#+1 \ 00000040 B400C5E1 STRH R0,[R5, #+4] \ 00000044 8A8100EF SWI +33162 \ 00000048 170080E2 ADD R0,R0,#+23 \ 0000004C B600C5E1 STRH R0,[R5, #+6] 3075 return CreateMenu(0,0,&CmdMenuStruct,&CmdMenuHeader,0,NumOfItems,ed_gui,0); \ 00000050 0000A0E3 MOV R0,#+0 \ 00000054 01002DE9 PUSH {R0} \ 00000058 10002DE9 PUSH {R4} \ 0000005C 1C0095E5 LDR R0,[R5, #+28] \ 00000060 0530A0E1 MOV R3,R5 \ 00000064 01002DE9 PUSH {R0} \ 00000068 202086E2 ADD R2,R6,#+32 \ 0000006C 0010A0E3 MOV R1,#+0 \ 00000070 0000A0E3 MOV R0,#+0 \ 00000074 01002DE9 PUSH {R0} \ 00000078 520100EF SWI +338 \ 0000007C 10D08DE2 ADD SP,SP,#+16 \ 00000080 7080BDE8 POP {R4-R6,PC} 3076 } 3077 MsgBoxError(1, (int)"FILE NOT FOUND!"); \ ??DispCmdMenu_1: \ 00000084 0610A0E1 MOV R1,R6 \ 00000088 0100A0E3 MOV R0,#+1 \ 0000008C 4E0000EF SWI +78 3078 return(0); \ 00000090 0000A0E3 MOV R0,#+0 \ 00000094 7080BDE8 POP {R4-R6,PC} ;; return \ ??DispCmdMenu_0: \ 00000098 ........ DC32 CmdMenuHeader \ 0000009C ........ DC32 `?` 3079 } 3080 /* 3081 char *GetStatusByIconIndex(int icon) 3082 { 3083 char *stat=malloc(32); 3084 switch(icon) 3085 { 3086 case IS_OFFLINE : sprintf(stat,"Offline"); break; 3087 case IS_INVISIBLE : sprintf(stat,"Invisable"); break; 3088 case IS_AWAY : sprintf(stat,"Away"); break; 3089 case IS_NA : sprintf(stat,"N/A"); break; 3090 case IS_OCCUPIED: sprintf(stat,"Occupied"); break; 3091 case IS_DND : sprintf(stat,"DND"); break; 3092 case IS_DEPRESSION : sprintf(stat,"Depression"); break; 3093 case IS_EVIL : sprintf(stat,"Evil"); break; 3094 case IS_HOME : sprintf(stat,"Home"); break; 3095 case IS_LUNCH : sprintf(stat,"Lunch"); break; 3096 case IS_WORK : sprintf(stat,"Work"); break; 3097 case IS_ONLINE : sprintf(stat,"Online"); break; 3098 case IS_FFC : sprintf(stat,"FFC"); break; 3099 default : sprintf(stat,"Error status"); break; 3100 } 3101 return stat; 3102 } 3103 */ 3104 \ In segment CODE, align 4, keep-with-next 3105 char *GetStatusByIconIndex(int icon) 3106 { \ GetStatusByIconIndex: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 3107 char *stat=malloc(32); \ 00000008 2000A0E3 MOV R0,#+32 \ 0000000C 140000EF SWI +20 3108 switch(icon) \ 00000010 94109FE5 LDR R1,??GetStatusByIconIndex_1+0x4 ;; `?signals=signal; \ 00000018 802085E5 STR R2,[R5, #+128] 3161 TPKT *p; 3162 SENDMSGCOUNT+=count; \ 0000001C 001390E5 LDR R1,[R0, #+768] \ 00000020 011083E0 ADD R1,R3,R1 \ 00000024 001380E5 STR R1,[R0, #+768] 3163 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 3164 p->pkt.uin=t->uin; \ 0000003C 0C0095E5 LDR R0,[R5, #+12] \ 00000040 000086E5 STR R0,[R6, #+0] 3165 p->pkt.type=T_SENDMSG; \ 00000044 0200A0E3 MOV R0,#+2 \ 00000048 B400C6E1 STRH R0,[R6, #+4] 3166 p->pkt.data_len=strlen(s); \ 0000004C 0400A0E1 MOV R0,R4 \ 00000050 1B0000EF SWI +27 \ 00000054 B600C6E1 STRH R0,[R6, #+6] 3167 strcpy(p->data,s); \ 00000058 0410A0E1 MOV R1,R4 \ 0000005C 080086E2 ADD R0,R6,#+8 \ 00000060 1A0000EF SWI +26 3168 SUBPROC((void *)SendAnswer,0,p); \ 00000064 ........ LDR R0,??DataTable134 ;; SendAnswer \ 00000068 0620A0E1 MOV R2,R6 \ 0000006C 0010A0E3 MOV R1,#+0 \ 00000070 710100EF SWI +369 3169 } \ 00000074 7080BDE8 POP {R4-R6,PC} ;; return 3170 3171 unsigned int *errornumber; 3172 \ In segment CODE, align 4, keep-with-next 3173 void CheckComand(char *txt, CLIST *t) 3174 { \ CheckComand: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 3175 if(CurrentPrivateStatus==2) return; \ 00000004 ........ LDR R5,??DataTable141 ;; i_rc \ 00000008 89DF4DE2 SUB SP,SP,#+548 \ 0000000C 00B0A0E1 MOV R11,R0 \ 00000010 E00395E5 LDR R0,[R5, #+992] \ 00000014 0140A0E1 MOV R4,R1 \ 00000018 020050E3 CMP R0,#+2 \ 0000001C E802000A BEQ ??CheckComand_0 3176 comanda=1; 3177 #ifdef kluchnik 3178 sprintf(mod_info,"mod by Evilfox,kluchnik,windes based on revision 2058, mod date: Jule 13 2008 at 14:03:59"); \ 00000020 A46B9FE5 LDR R6,??CheckComand_1 ;; `?` \ 00000024 0100A0E3 MOV R0,#+1 \ 00000028 580485E5 STR R0,[R5, #+1112] 3179 #else 3180 sprintf(mod_info,"mod by Evilfox,kluchnik,windes based on revision 2058, mod date: %s at %s ",__DATE__,__TIME__); 3181 #endif 3182 // sprintf(mod_info,"mod by %s based on revision 2058, mod date: Apr 21 2008 ",devel); 3183 t->signals=1; 3184 if(!strcmp(txt, "__TEXTINFO") || !strcmp(txt, "__TI")) \ 0000002C ........ LDR R7,??DataTable136 ;; I_str \ 00000030 9810A0E3 MOV R1,#+152 \ 00000034 841D81E3 ORR R1,R1,#0x2100 \ 00000038 051081E0 ADD R1,R1,R5 \ 0000003C 0C108DE5 STR R1,[SP, #+12] \ 00000040 0C009DE5 LDR R0,[SP, #+12] \ 00000044 E21F86E2 ADD R1,R6,#+904 \ 00000048 160000EF SWI +22 \ 0000004C 0100A0E3 MOV R0,#+1 \ 00000050 800084E5 STR R0,[R4, #+128] \ 00000054 2010A0E3 MOV R1,#+32 \ 00000058 7C1D81E3 ORR R1,R1,#0x1F00 \ 0000005C 051081E0 ADD R1,R1,R5 \ 00000060 10108DE5 STR R1,[SP, #+16] \ 00000064 0080A0E3 MOV R8,#+0 \ 00000068 8D1F86E2 ADD R1,R6,#+564 \ 0000006C 0B00A0E1 MOV R0,R11 \ 00000070 190000EF SWI +25 \ 00000074 000050E3 CMP R0,#+0 \ 00000078 0400000A BEQ ??CheckComand_2 \ 0000007C 8B1F86E2 ADD R1,R6,#+556 \ 00000080 0B00A0E1 MOV R0,R11 \ 00000084 190000EF SWI +25 \ 00000088 000050E3 CMP R0,#+0 \ 0000008C 8300001A BNE ??CheckComand_3 3185 { 3186 char *s=malloc(16384); \ ??CheckComand_2: \ 00000090 400CA0E3 MOV R0,#+16384 \ 00000094 140000EF SWI +20 \ 00000098 0090A0E1 MOV R9,R0 3187 char pl[256]; 3188 *s=0; \ 0000009C 0080C9E5 STRB R8,[R9, #+0] 3189 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 00A0A0E1 MOV R10,R0 \ 000000AC 0900A0E3 MOV R0,#+9 \ 000000B0 D50100EF SWI +469 \ 000000B4 00042DE9 PUSH {R10} \ 000000B8 01002DE9 PUSH {R0} \ 000000BC D83F86E2 ADD R3,R6,#+864 \ 000000C0 DC2F86E2 ADD R2,R6,#+880 \ 000000C4 401FA0E3 MOV R1,#+256 \ 000000C8 2C008DE2 ADD R0,SP,#+44 \ 000000CC 1B0100EF SWI +283 3190 strcat(s,pl); \ 000000D0 2C108DE2 ADD R1,SP,#+44 \ 000000D4 0900A0E1 MOV R0,R9 \ 000000D8 170000EF SWI +23 3191 char online[256]; 3192 sprintf(online,"Время в онлайн: %02d:%02d:%02d \r\n" 3193 "Сервер: %s \r\n%s \r\n", uptimeHour, uptimeMin, uptimeSec, hostbuf2,PINGO); \ 000000DC 0800A0E3 MOV R0,#+8 \ 000000E0 640D80E3 ORR R0,R0,#0x1900 \ 000000E4 050080E0 ADD R0,R0,R5 \ 000000E8 01002DE9 PUSH {R0} \ 000000EC 1C009DE5 LDR R0,[SP, #+28] \ 000000F0 CB1F86E2 ADD R1,R6,#+812 \ 000000F4 01002DE9 PUSH {R0} \ 000000F8 C00395E5 LDR R0,[R5, #+960] \ 000000FC 01002DE9 PUSH {R0} \ 00000100 BC3395E5 LDR R3,[R5, #+956] \ 00000104 B82395E5 LDR R2,[R5, #+952] \ 00000108 4E0F8DE2 ADD R0,SP,#+312 \ 0000010C 160000EF SWI +22 3194 strcat(s,online); \ 00000110 4E1F8DE2 ADD R1,SP,#+312 \ 00000114 0900A0E1 MOV R0,R9 \ 00000118 170000EF SWI +23 3195 char *send_txt=malloc(64); \ 0000011C 4000A0E3 MOV R0,#+64 \ 00000120 140000EF SWI +20 3196 sprintf(send_txt, "Отправлено сообщений: %d \r\n" 3197 "Принято сообщений: %d \r\n", main2_count, main_count); \ 00000124 D43295E5 LDR R3,[R5, #+724] \ 00000128 D82295E5 LDR R2,[R5, #+728] \ 0000012C 00A0A0E1 MOV R10,R0 \ 00000130 BE1F86E2 ADD R1,R6,#+760 \ 00000134 160000EF SWI +22 3198 strcat(s,send_txt); \ 00000138 0A10A0E1 MOV R1,R10 \ 0000013C 0900A0E1 MOV R0,R9 \ 00000140 170000EF SWI +23 3199 3200 WSHDR *ws=AllocWS(64); \ 00000144 4000A0E3 MOV R0,#+64 \ 00000148 250100EF SWI +293 \ 0000014C 00B0A0E1 MOV R11,R0 3201 GetProvider(ws,0); \ 00000150 0010A0E3 MOV R1,#+0 \ 00000154 410000EF SWI +65 3202 char prov[16]; 3203 ws_2str(ws,prov,wstrlen(ws)); \ 00000158 0B00A0E1 MOV R0,R11 \ 0000015C 230100EF SWI +291 \ 00000160 0020A0E1 MOV R2,R0 \ 00000164 28108DE2 ADD R1,SP,#+40 \ 00000168 0B00A0E1 MOV R0,R11 \ 0000016C A30000EF SWI +163 3204 sprintf(send_txt, "Оператор: %s \r\n", prov); \ 00000170 28208DE2 ADD R2,SP,#+40 \ 00000174 BA1F86E2 ADD R1,R6,#+744 \ 00000178 0A00A0E1 MOV R0,R10 \ 0000017C 160000EF SWI +22 3205 FreeWS(ws); \ 00000180 0B00A0E1 MOV R0,R11 \ 00000184 290100EF SWI +297 3206 strcat(s,send_txt); \ 00000188 0A10A0E1 MOV R1,R10 \ 0000018C 0900A0E1 MOV R0,R9 \ 00000190 170000EF SWI +23 3207 3208 int bat; 3209 bat=*RamCap(); \ 00000194 C88000EF SWI +32968 \ 00000198 B020D0E1 LDRH R2,[R0, #+0] 3210 sprintf(send_txt, "Заряд батареи: %d процентов \r\n", bat); \ 0000019C B21F86E2 ADD R1,R6,#+712 \ 000001A0 0A00A0E1 MOV R0,R10 \ 000001A4 160000EF SWI +22 3211 strcat(s,send_txt); \ 000001A8 0A10A0E1 MOV R1,R10 \ 000001AC 0900A0E1 MOV R0,R9 \ 000001B0 170000EF SWI +23 3212 3213 char *status=malloc(256); \ 000001B4 400FA0E3 MOV R0,#+256 \ 000001B8 140000EF SWI +20 \ 000001BC 00B0A0E1 MOV R11,R0 3214 TTime the; 3215 GetDateTime(NULL,&the); \ 000001C0 18108DE2 ADD R1,SP,#+24 \ 000001C4 0800A0E1 MOV R0,R8 \ 000001C8 B40000EF SWI +180 3216 void Get_Online_total(); 3217 Get_Online_total(); \ 000001CC ........ BL Get_Online_total 3218 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //sendq_l \ 000001D0 0C2495E5 LDR R2,[R5, #+1036] \ 000001D4 103495E5 LDR R3,[R5, #+1040] 3219 sprintf(status, "Traffic: Rx : %db Tx : %db Queue: %db \r\nTime: %02d:%02d\r\n" 3220 "Online contact: %d [total: %d] \r\nUnread message: %d/%d ", 3221 RX,TX,sendq_l, 3222 the.hour, the.min, 3223 kopa_kontaktu, kopa_online, 3224 total_unread,total_unread2); \ 000001D8 F00295E5 LDR R0,[R5, #+752] \ 000001DC 951F86E2 ADD R1,R6,#+596 \ 000001E0 01002DE9 PUSH {R0} \ 000001E4 180495E5 LDR R0,[R5, #+1048] \ 000001E8 01002DE9 PUSH {R0} \ 000001EC 300495E5 LDR R0,[R5, #+1072] \ 000001F0 01002DE9 PUSH {R0} \ 000001F4 340495E5 LDR R0,[R5, #+1076] \ 000001F8 01002DE9 PUSH {R0} \ 000001FC 2900DDE5 LDRB R0,[SP, #+41] \ 00000200 01002DE9 PUSH {R0} \ 00000204 2C00DDE5 LDRB R0,[SP, #+44] \ 00000208 01002DE9 PUSH {R0} \ 0000020C CC0295E5 LDR R0,[R5, #+716] \ 00000210 01002DE9 PUSH {R0} \ 00000214 0B00A0E1 MOV R0,R11 \ 00000218 160000EF SWI +22 \ 0000021C 30D08DE2 ADD SP,SP,#+48 3225 strcat(s,status); \ 00000220 0B10A0E1 MOV R1,R11 \ 00000224 0900A0E1 MOV R0,R9 \ 00000228 170000EF SWI +23 3226 comanda=0; 3227 if(show_send_info) \ 0000022C 9C099FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 00000230 588485E5 STR R8,[R5, #+1112] \ 00000234 000090E5 LDR R0,[R0, #+0] \ 00000238 000050E3 CMP R0,#+0 \ 0000023C 000395E5 LDR R0,[R5, #+768] \ 00000240 010080E2 ADD R0,R0,#+1 \ 00000244 000385E5 STR R0,[R5, #+768] \ 00000248 0900000A BEQ ??CheckComand_4 3228 AddStringToLog(t,0x01,"Sending textinfo...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 0000024C 0110A0E3 MOV R1,#+1 \ 00000250 02002DE9 PUSH {R1} \ 00000254 8008A0E1 LSL R0,R0,#+17 \ 00000258 A008A0E1 LSR R0,R0,#+17 \ 0000025C 01002DE9 PUSH {R0} \ 00000260 0730A0E1 MOV R3,R7 \ 00000264 902F86E2 ADD R2,R6,#+576 \ 00000268 0400A0E1 MOV R0,R4 \ 0000026C ........ BL AddStringToLog \ 00000270 08D08DE2 ADD SP,SP,#+8 3229 else 3230 SENDMSGCOUNT++; 3231 SendData(t,s,ENA_SIGNAL,0); \ ??CheckComand_4: \ 00000274 0030A0E3 MOV R3,#+0 \ 00000278 0120A0E3 MOV R2,#+1 \ 0000027C 0910A0E1 MOV R1,R9 \ 00000280 0400A0E1 MOV R0,R4 \ 00000284 ........ BL SendData 3232 mfree(s); \ 00000288 0900A0E1 MOV R0,R9 \ 0000028C 150000EF SWI +21 3233 mfree(send_txt); \ 00000290 0A00A0E1 MOV R0,R10 \ 00000294 150000EF SWI +21 3234 mfree(status); \ 00000298 0B00A0E1 MOV R0,R11 \ 0000029C 660100EA B ??CheckComand_5 3235 return; 3236 } 3237 3238 if(!strcmp(txt, "__TIME") || !strcmp(txt, "__T") || !strcmp(txt, "GET_TIME")) \ ??CheckComand_3: \ 000002A0 811F86E2 ADD R1,R6,#+516 \ 000002A4 0B00A0E1 MOV R0,R11 \ 000002A8 190000EF SWI +25 \ 000002AC 000050E3 CMP R0,#+0 \ 000002B0 0900000A BEQ ??CheckComand_6 \ 000002B4 D91F8FE2 ADR R1,??CheckComand_7 ;; "__T" \ 000002B8 0B00A0E1 MOV R0,R11 \ 000002BC 190000EF SWI +25 \ 000002C0 000050E3 CMP R0,#+0 \ 000002C4 0400000A BEQ ??CheckComand_6 \ 000002C8 7E1F86E2 ADD R1,R6,#+504 \ 000002CC 0B00A0E1 MOV R0,R11 \ 000002D0 190000EF SWI +25 \ 000002D4 000050E3 CMP R0,#+0 \ 000002D8 2300001A BNE ??CheckComand_8 3239 { 3240 char *status=malloc(256); \ ??CheckComand_6: \ 000002DC 400FA0E3 MOV R0,#+256 \ 000002E0 140000EF SWI +20 \ 000002E4 0090A0E1 MOV R9,R0 3241 TTime the; 3242 GetDateTime(NULL,&the); \ 000002E8 04108DE2 ADD R1,SP,#+4 \ 000002EC 0000A0E3 MOV R0,#+0 \ 000002F0 B40000EF SWI +180 3243 sprintf(status, "Time: %02d:%02d",the.hour, the.min); \ 000002F4 0530DDE5 LDRB R3,[SP, #+5] \ 000002F8 0420DDE5 LDRB R2,[SP, #+4] \ 000002FC 871F86E2 ADD R1,R6,#+540 \ 00000300 0900A0E1 MOV R0,R9 \ 00000304 160000EF SWI +22 3244 comanda=0; 3245 if(show_send_info) \ 00000308 C0089FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 0000030C 588485E5 STR R8,[R5, #+1112] \ 00000310 000090E5 LDR R0,[R0, #+0] \ 00000314 000050E3 CMP R0,#+0 \ 00000318 000395E5 LDR R0,[R5, #+768] \ 0000031C 010080E2 ADD R0,R0,#+1 \ 00000320 000385E5 STR R0,[R5, #+768] \ 00000324 0900000A BEQ ??CheckComand_9 3246 AddStringToLog(t,0x01,"Sending time...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000328 0110A0E3 MOV R1,#+1 \ 0000032C 02002DE9 PUSH {R1} \ 00000330 8008A0E1 LSL R0,R0,#+17 \ 00000334 A008A0E1 LSR R0,R0,#+17 \ 00000338 01002DE9 PUSH {R0} \ 0000033C 0730A0E1 MOV R3,R7 \ 00000340 832F86E2 ADD R2,R6,#+524 \ 00000344 0400A0E1 MOV R0,R4 \ 00000348 ........ BL AddStringToLog \ 0000034C 08D08DE2 ADD SP,SP,#+8 3247 else 3248 SENDMSGCOUNT++; 3249 SendData(t,status,ENA_SIGNAL,0); \ ??CheckComand_9: \ 00000350 0030A0E3 MOV R3,#+0 \ 00000354 0120A0E3 MOV R2,#+1 \ 00000358 0910A0E1 MOV R1,R9 \ 0000035C 0400A0E1 MOV R0,R4 \ 00000360 ........ BL SendData 3250 mfree(status); \ 00000364 0900A0E1 MOV R0,R9 \ 00000368 330100EA B ??CheckComand_5 3251 return; 3252 } 3253 3254 if(!strcmp(txt, "GET_PLATFORM_INFO") || !strcmp(txt, "__PLATFORM") || !strcmp(txt,"__HW")) \ ??CheckComand_8: \ 0000036C ........ LDR R9,??DataTable137 ;; SendAnswer \ 00000370 02A0A0E3 MOV R10,#+2 \ 00000374 6D1F86E2 ADD R1,R6,#+436 \ 00000378 0B00A0E1 MOV R0,R11 \ 0000037C 190000EF SWI +25 \ 00000380 000050E3 CMP R0,#+0 \ 00000384 0900000A BEQ ??CheckComand_10 \ 00000388 6A1F86E2 ADD R1,R6,#+424 \ 0000038C 0B00A0E1 MOV R0,R11 \ 00000390 190000EF SWI +25 \ 00000394 000050E3 CMP R0,#+0 \ 00000398 0400000A BEQ ??CheckComand_10 \ 0000039C 681F86E2 ADD R1,R6,#+416 \ 000003A0 0B00A0E1 MOV R0,R11 \ 000003A4 190000EF SWI +25 \ 000003A8 000050E3 CMP R0,#+0 \ 000003AC 3100001A BNE ??CheckComand_11 3255 { 3256 comanda=0; \ ??CheckComand_10: \ 000003B0 588485E5 STR R8,[R5, #+1112] 3257 TPKT *p; 3258 char pl[256]; 3259 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 0080A0E1 MOV R8,R0 \ 000003C0 0900A0E3 MOV R0,#+9 \ 000003C4 D50100EF SWI +469 \ 000003C8 00012DE9 PUSH {R8} \ 000003CC 01002DE9 PUSH {R0} \ 000003D0 D83F86E2 ADD R3,R6,#+864 \ 000003D4 792F86E2 ADD R2,R6,#+484 \ 000003D8 401FA0E3 MOV R1,#+256 \ 000003DC 4B0F8DE2 ADD R0,SP,#+300 \ 000003E0 1B0100EF SWI +283 3260 p=malloc(sizeof(PKT)+strlen(pl)+1); \ 000003E4 4B0F8DE2 ADD R0,SP,#+300 \ 000003E8 1B0000EF SWI +27 \ 000003EC 090080E2 ADD R0,R0,#+9 \ 000003F0 140000EF SWI +20 \ 000003F4 0080A0E1 MOV R8,R0 3261 p->pkt.uin=t->uin; \ 000003F8 0C0094E5 LDR R0,[R4, #+12] \ 000003FC 000088E5 STR R0,[R8, #+0] 3262 p->pkt.type=T_SENDMSG; \ 00000400 B4A0C8E1 STRH R10,[R8, #+4] 3263 p->pkt.data_len=strlen(pl); \ 00000404 4B0F8DE2 ADD R0,SP,#+300 \ 00000408 1B0000EF SWI +27 \ 0000040C B600C8E1 STRH R0,[R8, #+6] 3264 strcpy(p->data,pl); \ 00000410 4B1F8DE2 ADD R1,SP,#+300 \ 00000414 080088E2 ADD R0,R8,#+8 \ 00000418 1A0000EF SWI +26 3265 if(show_send_info) \ 0000041C AC079FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 00000420 000090E5 LDR R0,[R0, #+0] \ 00000424 08D08DE2 ADD SP,SP,#+8 \ 00000428 000050E3 CMP R0,#+0 \ 0000042C 000395E5 LDR R0,[R5, #+768] \ 00000430 010080E2 ADD R0,R0,#+1 \ 00000434 000385E5 STR R0,[R5, #+768] \ 00000438 0900000A BEQ ??CheckComand_12 3266 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 722F86E2 ADD R2,R6,#+456 \ 00000458 0400A0E1 MOV R0,R4 \ 0000045C ........ BL AddStringToLog \ 00000460 08D08DE2 ADD SP,SP,#+8 3267 else 3268 SENDMSGCOUNT++; 3269 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_12: \ 00000464 0820A0E1 MOV R2,R8 \ ??CheckComand_13: \ 00000468 0010A0E3 MOV R1,#+0 \ 0000046C 0900A0E1 MOV R0,R9 \ 00000470 710100EF SWI +369 3270 return; \ 00000474 F10000EA B ??CheckComand_14 3271 } 3272 3273 if(!strcmp(txt, "GET_ONLINE_TIME") || !strcmp(txt, "__ONLINE")) \ ??CheckComand_11: \ 00000478 591F86E2 ADD R1,R6,#+356 \ 0000047C 0B00A0E1 MOV R0,R11 \ 00000480 190000EF SWI +25 \ 00000484 000050E3 CMP R0,#+0 \ 00000488 0400000A BEQ ??CheckComand_15 \ 0000048C 561F86E2 ADD R1,R6,#+344 \ 00000490 0B00A0E1 MOV R0,R11 \ 00000494 190000EF SWI +25 \ 00000498 000050E3 CMP R0,#+0 \ 0000049C 2B00001A BNE ??CheckComand_16 3274 { 3275 comanda=0; \ ??CheckComand_15: \ 000004A0 588485E5 STR R8,[R5, #+1112] 3276 TPKT *p; 3277 char online[256]; 3278 sprintf(online,"Время в онлайн: %02d:%02d:%02d \n" 3279 "Сервер: %s", uptimeHour, uptimeMin, uptimeSec, hostbuf2); \ 000004A4 10009DE5 LDR R0,[SP, #+16] \ 000004A8 5D1F86E2 ADD R1,R6,#+372 \ 000004AC 01002DE9 PUSH {R0} \ 000004B0 C00395E5 LDR R0,[R5, #+960] \ 000004B4 01002DE9 PUSH {R0} \ 000004B8 BC3395E5 LDR R3,[R5, #+956] \ 000004BC B82395E5 LDR R2,[R5, #+952] \ 000004C0 4B0F8DE2 ADD R0,SP,#+300 \ 000004C4 160000EF SWI +22 3280 p=malloc(sizeof(PKT)+strlen(online)+1); \ 000004C8 4B0F8DE2 ADD R0,SP,#+300 \ 000004CC 1B0000EF SWI +27 \ 000004D0 090080E2 ADD R0,R0,#+9 \ 000004D4 140000EF SWI +20 \ 000004D8 0060A0E1 MOV R6,R0 3281 p->pkt.uin=t->uin; \ 000004DC 0C0094E5 LDR R0,[R4, #+12] \ 000004E0 000086E5 STR R0,[R6, #+0] 3282 p->pkt.type=T_SENDMSG; \ 000004E4 B4A0C6E1 STRH R10,[R6, #+4] 3283 p->pkt.data_len=strlen(online); \ 000004E8 4B0F8DE2 ADD R0,SP,#+300 \ 000004EC 1B0000EF SWI +27 \ 000004F0 B600C6E1 STRH R0,[R6, #+6] 3284 strcpy(p->data,online); \ 000004F4 4B1F8DE2 ADD R1,SP,#+300 \ 000004F8 080086E2 ADD R0,R6,#+8 \ 000004FC 1A0000EF SWI +26 3285 if(show_send_info) \ 00000500 C8069FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 00000504 000090E5 LDR R0,[R0, #+0] \ 00000508 08D08DE2 ADD SP,SP,#+8 \ 0000050C 000050E3 CMP R0,#+0 \ 00000510 000395E5 LDR R0,[R5, #+768] \ 00000514 010080E2 ADD R0,R0,#+1 \ 00000518 000385E5 STR R0,[R5, #+768] \ 0000051C 0900000A BEQ ??CheckComand_17 3286 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 852D85E2 ADD R2,R5,#+8512 \ 0000053C 0400A0E1 MOV R0,R4 \ 00000540 ........ BL AddStringToLog \ 00000544 08D08DE2 ADD SP,SP,#+8 3287 else 3288 SENDMSGCOUNT++; 3289 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_17: \ 00000548 0620A0E1 MOV R2,R6 \ 0000054C C5FFFFEA B ??CheckComand_13 3290 return; 3291 } 3292 3293 if(!strcmp(txt, "GET_MSG_INFO") || !strcmp(txt, "__MSG")) \ ??CheckComand_16: \ 00000550 461F86E2 ADD R1,R6,#+280 \ 00000554 0B00A0E1 MOV R0,R11 \ 00000558 190000EF SWI +25 \ 0000055C 000050E3 CMP R0,#+0 \ 00000560 0400000A BEQ ??CheckComand_18 \ 00000564 441F86E2 ADD R1,R6,#+272 \ 00000568 0B00A0E1 MOV R0,R11 \ 0000056C 190000EF SWI +25 \ 00000570 000050E3 CMP R0,#+0 \ 00000574 2A00001A BNE ??CheckComand_19 3294 { 3295 comanda=0; \ ??CheckComand_18: \ 00000578 588485E5 STR R8,[R5, #+1112] 3296 TPKT *p; 3297 char *send_txt=malloc(64); \ 0000057C 4000A0E3 MOV R0,#+64 \ 00000580 140000EF SWI +20 3298 sprintf(send_txt, "Отправлено сообщений: %d \n" 3299 "Принято сообщений: %d" 3300 , main2_count, main_count); \ 00000584 D43295E5 LDR R3,[R5, #+724] \ 00000588 D82295E5 LDR R2,[R5, #+728] \ 0000058C 0080A0E1 MOV R8,R0 \ 00000590 4A1F86E2 ADD R1,R6,#+296 \ 00000594 160000EF SWI +22 3301 p=malloc(sizeof(PKT)+strlen(send_txt)+1); \ 00000598 0800A0E1 MOV R0,R8 \ 0000059C 1B0000EF SWI +27 \ 000005A0 090080E2 ADD R0,R0,#+9 \ 000005A4 140000EF SWI +20 \ 000005A8 0060A0E1 MOV R6,R0 3302 p->pkt.uin=t->uin; \ 000005AC 0C0094E5 LDR R0,[R4, #+12] \ 000005B0 000086E5 STR R0,[R6, #+0] 3303 p->pkt.type=T_SENDMSG; \ 000005B4 B4A0C6E1 STRH R10,[R6, #+4] 3304 p->pkt.data_len=strlen(send_txt); \ 000005B8 0800A0E1 MOV R0,R8 \ 000005BC 1B0000EF SWI +27 \ 000005C0 B600C6E1 STRH R0,[R6, #+6] 3305 strcpy(p->data,send_txt); \ 000005C4 0810A0E1 MOV R1,R8 \ 000005C8 080086E2 ADD R0,R6,#+8 \ 000005CC 1A0000EF SWI +26 3306 if(show_send_info) \ 000005D0 F8059FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 000005D4 000090E5 LDR R0,[R0, #+0] \ 000005D8 000050E3 CMP R0,#+0 \ 000005DC 000395E5 LDR R0,[R5, #+768] \ 000005E0 010080E2 ADD R0,R0,#+1 \ 000005E4 000385E5 STR R0,[R5, #+768] \ 000005E8 8E00000A BEQ ??CheckComand_20 3307 AddStringToLog(t,0x01,requests2,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000005EC 0110A0E3 MOV R1,#+1 \ 000005F0 02002DE9 PUSH {R1} \ 000005F4 8008A0E1 LSL R0,R0,#+17 \ 000005F8 A008A0E1 LSR R0,R0,#+17 \ 000005FC 01002DE9 PUSH {R0} \ 00000600 0730A0E1 MOV R3,R7 \ 00000604 5800A0E3 MOV R0,#+88 \ 00000608 840D80E3 ORR R0,R0,#0x2100 \ 0000060C 052080E0 ADD R2,R0,R5 \ 00000610 0400A0E1 MOV R0,R4 \ 00000614 ........ BL AddStringToLog \ 00000618 08D08DE2 ADD SP,SP,#+8 3308 else 3309 SENDMSGCOUNT++; 3310 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_21: \ 0000061C 810000EA B ??CheckComand_20 \ ??CheckComand_7: \ 00000620 5F5F5400 DC8 "__T" 3311 mfree(send_txt); 3312 return; 3313 } 3314 3315 //==========================windes commands begin ===================== 3316 3317 if(!strcmp(txt, "GET_PROVIDER") || !strcmp(txt, "__PROVIDER")) \ ??CheckComand_19: \ 00000624 D41086E2 ADD R1,R6,#+212 \ 00000628 0B00A0E1 MOV R0,R11 \ 0000062C 190000EF SWI +25 \ 00000630 000050E3 CMP R0,#+0 \ 00000634 0400000A BEQ ??CheckComand_22 \ 00000638 C81086E2 ADD R1,R6,#+200 \ 0000063C 0B00A0E1 MOV R0,R11 \ 00000640 190000EF SWI +25 \ 00000644 000050E3 CMP R0,#+0 \ 00000648 3600001A BNE ??CheckComand_23 3318 { 3319 comanda=0; \ ??CheckComand_22: \ 0000064C 588485E5 STR R8,[R5, #+1112] 3320 TPKT *p; 3321 3322 WSHDR *ws=AllocWS(32); \ 00000650 2000A0E3 MOV R0,#+32 \ 00000654 250100EF SWI +293 \ 00000658 0080A0E1 MOV R8,R0 3323 GetProvider(ws,0); \ 0000065C 0010A0E3 MOV R1,#+0 \ 00000660 410000EF SWI +65 3324 char prov[16]; 3325 ws_2str(ws,prov,wstrlen(ws)); \ 00000664 0800A0E1 MOV R0,R8 \ 00000668 230100EF SWI +291 \ 0000066C 0020A0E1 MOV R2,R0 \ 00000670 14108DE2 ADD R1,SP,#+20 \ 00000674 0800A0E1 MOV R0,R8 \ 00000678 A30000EF SWI +163 3326 char *send_txt=malloc(32); \ 0000067C 2000A0E3 MOV R0,#+32 \ 00000680 140000EF SWI +20 \ 00000684 00B0A0E1 MOV R11,R0 3327 sprintf(send_txt, "Оператор: %s", prov); \ 00000688 14208DE2 ADD R2,SP,#+20 \ 0000068C 401F86E2 ADD R1,R6,#+256 \ 00000690 160000EF SWI +22 3328 FreeWS(ws); \ 00000694 0800A0E1 MOV R0,R8 \ 00000698 290100EF SWI +297 3329 3330 p=malloc(sizeof(PKT)+28+1); \ 0000069C 2500A0E3 MOV R0,#+37 \ 000006A0 140000EF SWI +20 \ 000006A4 0080A0E1 MOV R8,R0 3331 p->pkt.uin=t->uin; \ 000006A8 0C0094E5 LDR R0,[R4, #+12] \ 000006AC 000088E5 STR R0,[R8, #+0] 3332 p->pkt.type=T_SENDMSG; \ 000006B0 B4A0C8E1 STRH R10,[R8, #+4] 3333 p->pkt.data_len=strlen(send_txt); \ 000006B4 0B00A0E1 MOV R0,R11 \ 000006B8 1B0000EF SWI +27 \ 000006BC B600C8E1 STRH R0,[R8, #+6] 3334 strcpy(p->data,send_txt); \ 000006C0 0B10A0E1 MOV R1,R11 \ 000006C4 080088E2 ADD R0,R8,#+8 \ 000006C8 1A0000EF SWI +26 3335 if(show_send_info) \ 000006CC FC049FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 000006D0 000090E5 LDR R0,[R0, #+0] \ 000006D4 000050E3 CMP R0,#+0 \ 000006D8 000395E5 LDR R0,[R5, #+768] \ 000006DC 010080E2 ADD R0,R0,#+1 \ 000006E0 000385E5 STR R0,[R5, #+768] \ 000006E4 0900000A BEQ ??CheckComand_24 3336 AddStringToLog(t,0x01,"Sending provider name...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000006E8 0110A0E3 MOV R1,#+1 \ 000006EC 02002DE9 PUSH {R1} \ 000006F0 8008A0E1 LSL R0,R0,#+17 \ 000006F4 A008A0E1 LSR R0,R0,#+17 \ 000006F8 01002DE9 PUSH {R0} \ 000006FC 0730A0E1 MOV R3,R7 \ 00000700 E42086E2 ADD R2,R6,#+228 \ 00000704 0400A0E1 MOV R0,R4 \ 00000708 ........ BL AddStringToLog \ 0000070C 08D08DE2 ADD SP,SP,#+8 3337 else 3338 SENDMSGCOUNT++; 3339 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_24: \ 00000710 0820A0E1 MOV R2,R8 \ 00000714 0010A0E3 MOV R1,#+0 \ 00000718 0900A0E1 MOV R0,R9 \ 0000071C 710100EF SWI +369 3340 mfree(send_txt); \ 00000720 0B00A0E1 MOV R0,R11 \ 00000724 440000EA B ??CheckComand_5 3341 return; 3342 } 3343 3344 3345 //----------------------------------------------------------------------- 3346 3347 3348 if(!strcmp(txt, "GET_MOD_INFO") || !strcmp(txt, "__MOD")) \ ??CheckComand_23: \ 00000728 A41086E2 ADD R1,R6,#+164 \ 0000072C 0B00A0E1 MOV R0,R11 \ 00000730 190000EF SWI +25 \ 00000734 000050E3 CMP R0,#+0 \ 00000738 0400000A BEQ ??CheckComand_25 \ 0000073C 9C1086E2 ADD R1,R6,#+156 \ 00000740 0B00A0E1 MOV R0,R11 \ 00000744 190000EF SWI +25 \ 00000748 000050E3 CMP R0,#+0 \ 0000074C 3D00001A BNE ??CheckComand_26 3349 { 3350 comanda=0; \ ??CheckComand_25: \ 00000750 588485E5 STR R8,[R5, #+1112] 3351 TPKT *p; 3352 char *send_txt=malloc(256); \ 00000754 400FA0E3 MOV R0,#+256 \ 00000758 140000EF SWI +20 \ 0000075C 0080A0E1 MOV R8,R0 3353 // sprintf(I_UIN, "uin%d", t->uin); 3354 strcpy(I_UIN, t->name); \ 00000760 2000A0E3 MOV R0,#+32 \ 00000764 800D80E3 ORR R0,R0,#0x2000 \ 00000768 05B080E0 ADD R11,R0,R5 \ 0000076C 141084E2 ADD R1,R4,#+20 \ 00000770 0B00A0E1 MOV R0,R11 \ 00000774 1A0000EF SWI +26 3355 if(strstr(ignor_list,I_UIN)==0) \ 00000778 ........ LDR R0,??DataTable138 ;; ignor_list \ 0000077C 0B10A0E1 MOV R1,R11 \ 00000780 180100EF SWI +280 \ 00000784 000050E3 CMP R0,#+0 3356 { 3357 strcpy(send_txt, mod_info); \ 00000788 0C109D05 LDREQ R1,[SP, #+12] 3358 } 3359 else 3360 strcpy(send_txt, "***Access denied***"); \ 0000078C 0800A0E1 MOV R0,R8 \ 00000790 B4108612 ADDNE R1,R6,#+180 \ 00000794 1A0000EF SWI +26 3361 3362 strcpy(send_txt, mod_info); \ 00000798 0C109DE5 LDR R1,[SP, #+12] \ 0000079C 0800A0E1 MOV R0,R8 \ 000007A0 1A0000EF SWI +26 3363 3364 p=malloc(sizeof(PKT)+strlen(send_txt)+1); \ 000007A4 0800A0E1 MOV R0,R8 \ 000007A8 1B0000EF SWI +27 \ 000007AC 090080E2 ADD R0,R0,#+9 \ 000007B0 140000EF SWI +20 \ 000007B4 0060A0E1 MOV R6,R0 3365 p->pkt.uin=t->uin; \ 000007B8 0C0094E5 LDR R0,[R4, #+12] \ 000007BC 000086E5 STR R0,[R6, #+0] 3366 p->pkt.type=T_SENDMSG; \ 000007C0 B4A0C6E1 STRH R10,[R6, #+4] 3367 p->pkt.data_len=strlen(send_txt); \ 000007C4 0800A0E1 MOV R0,R8 \ 000007C8 1B0000EF SWI +27 \ 000007CC B600C6E1 STRH R0,[R6, #+6] 3368 strcpy(p->data,send_txt); \ 000007D0 0810A0E1 MOV R1,R8 \ 000007D4 080086E2 ADD R0,R6,#+8 \ 000007D8 1A0000EF SWI +26 3369 #ifdef EVILFOX 3370 SENDMSGCOUNT++; 3371 #else 3372 if(show_send_info) \ 000007DC EC039FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 000007E0 000090E5 LDR R0,[R0, #+0] \ 000007E4 000050E3 CMP R0,#+0 \ 000007E8 000395E5 LDR R0,[R5, #+768] \ 000007EC 010080E2 ADD R0,R0,#+1 \ 000007F0 000385E5 STR R0,[R5, #+768] \ 000007F4 0B00000A BEQ ??CheckComand_20 3373 AddStringToLog(t,0x01,requests4,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000007F8 0110A0E3 MOV R1,#+1 \ 000007FC 02002DE9 PUSH {R1} \ 00000800 8008A0E1 LSL R0,R0,#+17 \ 00000804 A008A0E1 LSR R0,R0,#+17 \ 00000808 01002DE9 PUSH {R0} \ 0000080C 0730A0E1 MOV R3,R7 \ 00000810 8400A0E3 MOV R0,#+132 \ 00000814 840D80E3 ORR R0,R0,#0x2100 \ 00000818 052080E0 ADD R2,R0,R5 \ 0000081C 0400A0E1 MOV R0,R4 \ 00000820 ........ BL AddStringToLog \ 00000824 08D08DE2 ADD SP,SP,#+8 3374 else 3375 SENDMSGCOUNT++; 3376 #endif 3377 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_20: \ 00000828 0620A0E1 MOV R2,R6 \ ??CheckComand_27: \ 0000082C 0010A0E3 MOV R1,#+0 \ 00000830 0900A0E1 MOV R0,R9 \ 00000834 710100EF SWI +369 3378 mfree(send_txt); \ 00000838 0800A0E1 MOV R0,R8 \ ??CheckComand_5: \ 0000083C 150000EF SWI +21 \ ??CheckComand_14: \ 00000840 89DF8DE2 ADD SP,SP,#+548 \ 00000844 F08FBDE8 POP {R4-R11,PC} 3379 return; 3380 } 3381 3382 if(!strcmp(txt, "GET_BAT_INFO") || !strcmp(txt, "__BAT")) \ ??CheckComand_26: \ 00000848 701086E2 ADD R1,R6,#+112 \ 0000084C 0B00A0E1 MOV R0,R11 \ 00000850 190000EF SWI +25 \ 00000854 000050E3 CMP R0,#+0 \ 00000858 0400000A BEQ ??CheckComand_28 \ 0000085C 681086E2 ADD R1,R6,#+104 \ 00000860 0B00A0E1 MOV R0,R11 \ 00000864 190000EF SWI +25 \ 00000868 000050E3 CMP R0,#+0 \ 0000086C 2800001A BNE ??CheckComand_29 3383 { 3384 comanda=0; \ ??CheckComand_28: \ 00000870 588485E5 STR R8,[R5, #+1112] 3385 TPKT *p; 3386 int bat; 3387 bat=*RamCap(); \ 00000874 C88000EF SWI +32968 \ 00000878 B0B0D0E1 LDRH R11,[R0, #+0] 3388 char *send_txt=malloc(64); \ 0000087C 4000A0E3 MOV R0,#+64 \ 00000880 140000EF SWI +20 \ 00000884 0080A0E1 MOV R8,R0 3389 sprintf(send_txt, "Заряд батареи: %d процентов", bat); \ 00000888 0B20A0E1 MOV R2,R11 \ 0000088C 801086E2 ADD R1,R6,#+128 \ 00000890 160000EF SWI +22 3390 p=malloc(sizeof(PKT)+28+1); \ 00000894 2500A0E3 MOV R0,#+37 \ 00000898 140000EF SWI +20 \ 0000089C 0060A0E1 MOV R6,R0 3391 p->pkt.uin=t->uin; \ 000008A0 0C0094E5 LDR R0,[R4, #+12] \ 000008A4 000086E5 STR R0,[R6, #+0] 3392 p->pkt.type=T_SENDMSG; \ 000008A8 B4A0C6E1 STRH R10,[R6, #+4] 3393 p->pkt.data_len=strlen(send_txt); \ 000008AC 0800A0E1 MOV R0,R8 \ 000008B0 1B0000EF SWI +27 \ 000008B4 B600C6E1 STRH R0,[R6, #+6] 3394 strcpy(p->data,send_txt); \ 000008B8 0810A0E1 MOV R1,R8 \ 000008BC 080086E2 ADD R0,R6,#+8 \ 000008C0 1A0000EF SWI +26 3395 #ifdef EVILFOX 3396 SENDMSGCOUNT++; 3397 #else 3398 if(show_send_info) \ 000008C4 04039FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 000008C8 000090E5 LDR R0,[R0, #+0] \ 000008CC 000050E3 CMP R0,#+0 \ 000008D0 000395E5 LDR R0,[R5, #+768] \ 000008D4 010080E2 ADD R0,R0,#+1 \ 000008D8 000385E5 STR R0,[R5, #+768] \ 000008DC D1FFFF0A BEQ ??CheckComand_20 3399 AddStringToLog(t,0x01,requests3,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000008E0 0110A0E3 MOV R1,#+1 \ 000008E4 02002DE9 PUSH {R1} \ 000008E8 8008A0E1 LSL R0,R0,#+17 \ 000008EC A008A0E1 LSR R0,R0,#+17 \ 000008F0 01002DE9 PUSH {R0} \ 000008F4 0730A0E1 MOV R3,R7 \ 000008F8 6C00A0E3 MOV R0,#+108 \ 000008FC 840D80E3 ORR R0,R0,#0x2100 \ 00000900 052080E0 ADD R2,R0,R5 \ 00000904 0400A0E1 MOV R0,R4 \ 00000908 ........ BL AddStringToLog \ 0000090C 08D08DE2 ADD SP,SP,#+8 3400 else 3401 SENDMSGCOUNT++; 3402 #endif 3403 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_30: \ 00000910 C4FFFFEA B ??CheckComand_20 3404 mfree(send_txt); 3405 return; 3406 } 3407 3408 if((away_m==1 || t->isautomsg) && (t->automsgcount < automsgcount)) \ ??CheckComand_29: \ 00000914 A81395E5 LDR R1,[R5, #+936] \ 00000918 ........ LDR R2,??DataTable139 ;; automsgcount \ 0000091C 700094E5 LDR R0,[R4, #+112] \ 00000920 002092E5 LDR R2,[R2, #+0] \ 00000924 010051E3 CMP R1,#+1 \ 00000928 0100000A BEQ ??CheckComand_31 \ 0000092C 000050E3 CMP R0,#+0 \ 00000930 3700000A BEQ ??CheckComand_32 \ ??CheckComand_31: \ 00000934 883094E5 LDR R3,[R4, #+136] \ 00000938 020053E1 CMP R3,R2 \ 0000093C 3200002A BCS ??CheckComand_33 3409 { 3410 t->automsgcount++; 3411 comanda=1; 3412 TPKT *p; 3413 // sprintf(hah,"online: %02d:%02d:%02d", uptimeHour, uptimeMin, uptimeSec); 3414 sprintf(away_msg, "Автоответчик: %s %s! %s %s", awayHelloMsg, t->name, awayMsg, away_msg_time); \ 00000940 8C229FE5 LDR R2,??CheckComand_1+0x8 ;; awayHelloMsg \ 00000944 010083E2 ADD R0,R3,#+1 \ 00000948 880084E5 STR R0,[R4, #+136] \ 0000094C 0100A0E3 MOV R0,#+1 \ 00000950 580485E5 STR R0,[R5, #+1112] \ 00000954 0800A0E3 MOV R0,#+8 \ 00000958 680D80E3 ORR R0,R0,#0x1A00 \ 0000095C 058080E0 ADD R8,R0,R5 \ 00000960 420F80E2 ADD R0,R0,#+264 \ 00000964 050080E0 ADD R0,R0,R5 \ 00000968 01002DE9 PUSH {R0} \ 0000096C ........ LDR R0,??DataTable140 ;; awayMsg \ 00000970 143084E2 ADD R3,R4,#+20 \ 00000974 01002DE9 PUSH {R0} \ 00000978 4C1086E2 ADD R1,R6,#+76 \ 0000097C 0800A0E1 MOV R0,R8 \ 00000980 160000EF SWI +22 3415 p=malloc(sizeof(PKT)+strlen(away_msg)+1); \ 00000984 0800A0E1 MOV R0,R8 \ 00000988 1B0000EF SWI +27 \ 0000098C 090080E2 ADD R0,R0,#+9 \ 00000990 140000EF SWI +20 \ 00000994 0060A0E1 MOV R6,R0 3416 p->pkt.uin=t->uin; \ 00000998 0C0094E5 LDR R0,[R4, #+12] \ 0000099C 000086E5 STR R0,[R6, #+0] 3417 p->pkt.type=T_SENDMSG; \ 000009A0 B4A0C6E1 STRH R10,[R6, #+4] 3418 p->pkt.data_len=strlen(away_msg); \ 000009A4 0800A0E1 MOV R0,R8 \ 000009A8 1B0000EF SWI +27 \ 000009AC B600C6E1 STRH R0,[R6, #+6] 3419 strcpy(p->data,away_msg); \ 000009B0 0810A0E1 MOV R1,R8 \ 000009B4 080086E2 ADD R0,R6,#+8 \ 000009B8 1A0000EF SWI +26 3420 if(show_send_info) \ 000009BC 0C029FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 000009C0 000090E5 LDR R0,[R0, #+0] \ 000009C4 08D08DE2 ADD SP,SP,#+8 \ 000009C8 000050E3 CMP R0,#+0 \ 000009CC 000395E5 LDR R0,[R5, #+768] \ 000009D0 010080E2 ADD R0,R0,#+1 \ 000009D4 000385E5 STR R0,[R5, #+768] \ 000009D8 0900000A BEQ ??CheckComand_34 3421 { 3422 #ifdef kluchnik 3423 AddStringToLog(t,0x01,away_msg,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000009DC 0110A0E3 MOV R1,#+1 \ 000009E0 02002DE9 PUSH {R1} \ 000009E4 8008A0E1 LSL R0,R0,#+17 \ 000009E8 A008A0E1 LSR R0,R0,#+17 \ 000009EC 01002DE9 PUSH {R0} \ 000009F0 0730A0E1 MOV R3,R7 \ 000009F4 0820A0E1 MOV R2,R8 \ 000009F8 0400A0E1 MOV R0,R4 \ 000009FC ........ BL AddStringToLog \ 00000A00 08D08DE2 ADD SP,SP,#+8 3424 #else 3425 AddStringToLog(t,0x01,requests6,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 3426 #endif 3427 } 3428 else 3429 SENDMSGCOUNT++; 3430 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_34: \ 00000A04 0620A0E1 MOV R2,R6 \ 00000A08 96FEFFEA B ??CheckComand_13 3431 return; 3432 } 3433 /* else 3434 if((away_m==1 || t->isautomsg) && (t->automsgcount<=(automsgcount+3)) ) 3435 { 3436 t->awaysignal=0; 3437 t->automsgcount++; 3438 sprintf(away_msg,"Бля,ну русским ж языком написали,НЕТУ МЕНЯ!!!че по сто сообщений слать?тем более если тебе делать нех..."); 3439 if(show_send_info) 3440 AddStringToLog(t,0x01,away_msg,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 3441 else 3442 SENDMSGCOUNT++; 3443 SendData(t,away_msg,ENA_SIGNAL,0); 3444 return; 3445 }*/ 3446 else 3447 if(away_m==1 || t->isautomsg) \ ??CheckComand_33: \ 00000A0C 010051E3 CMP R1,#+1 \ 00000A10 0100000A BEQ ??CheckComand_35 \ ??CheckComand_32: \ 00000A14 000050E3 CMP R0,#+0 \ 00000A18 0100000A BEQ ??CheckComand_36 3448 { 3449 t->automsgcount=automsgcount; \ ??CheckComand_35: \ 00000A1C 882084E5 STR R2,[R4, #+136] 3450 return; \ 00000A20 86FFFFEA B ??CheckComand_14 3451 } 3452 3453 3454 //---------------------------------------------------------------------------// 3455 3456 3457 if(!strcmp(txt, "GET_URL_INFO") || !strcmp(txt, "__URL"))// by kluchnik 26.03.08 \ ??CheckComand_36: \ 00000A24 411E86E2 ADD R1,R6,#+1040 \ 00000A28 0B00A0E1 MOV R0,R11 \ 00000A2C 190000EF SWI +25 \ 00000A30 000050E3 CMP R0,#+0 \ 00000A34 0400000A BEQ ??CheckComand_37 \ 00000A38 421E86E2 ADD R1,R6,#+1056 \ 00000A3C 0B00A0E1 MOV R0,R11 \ 00000A40 190000EF SWI +25 \ 00000A44 000050E3 CMP R0,#+0 \ 00000A48 2A00001A BNE ??CheckComand_38 3458 { 3459 comanda=0; \ ??CheckComand_37: \ 00000A4C 588485E5 STR R8,[R5, #+1112] 3460 TPKT *p; 3461 3462 char *send_txt=malloc(256); \ 00000A50 400FA0E3 MOV R0,#+256 \ 00000A54 140000EF SWI +20 \ 00000A58 0080A0E1 MOV R8,R0 3463 sprintf(send_txt,"revision 2058, mod date: %s at %s ", 3464 "http://kluchnik.jino-net.ru/naticqmod/",__DATE__,__TIME__); \ 00000A5C FC0F86E2 ADD R0,R6,#+1008 \ 00000A60 01002DE9 PUSH {R0} \ 00000A64 F93F86E2 ADD R3,R6,#+996 \ 00000A68 0620A0E1 MOV R2,R6 \ 00000A6C 281086E2 ADD R1,R6,#+40 \ 00000A70 0800A0E1 MOV R0,R8 \ 00000A74 160000EF SWI +22 3465 3466 p=malloc(sizeof(PKT)+256); \ 00000A78 420FA0E3 MOV R0,#+264 \ 00000A7C 140000EF SWI +20 \ 00000A80 00B0A0E1 MOV R11,R0 3467 p->pkt.uin=t->uin; \ 00000A84 0C0094E5 LDR R0,[R4, #+12] \ 00000A88 00008BE5 STR R0,[R11, #+0] 3468 p->pkt.type=T_SENDMSG; \ 00000A8C B4A0CBE1 STRH R10,[R11, #+4] 3469 p->pkt.data_len=strlen(send_txt); \ 00000A90 0800A0E1 MOV R0,R8 \ 00000A94 1B0000EF SWI +27 \ 00000A98 B600CBE1 STRH R0,[R11, #+6] 3470 strcpy(p->data,send_txt); \ 00000A9C 0810A0E1 MOV R1,R8 \ 00000AA0 08008BE2 ADD R0,R11,#+8 \ 00000AA4 1A0000EF SWI +26 3471 if(show_send_info) \ 00000AA8 20019FE5 LDR R0,??CheckComand_1+0x4 ;; show_send_info \ 00000AAC 000090E5 LDR R0,[R0, #+0] \ 00000AB0 04D08DE2 ADD SP,SP,#+4 \ 00000AB4 000050E3 CMP R0,#+0 \ 00000AB8 000395E5 LDR R0,[R5, #+768] \ 00000ABC 010080E2 ADD R0,R0,#+1 \ 00000AC0 000385E5 STR R0,[R5, #+768] \ 00000AC4 0900000A BEQ ??CheckComand_39 3472 AddStringToLog(t,0x01,"Sending url info...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000AC8 0110A0E3 MOV R1,#+1 \ 00000ACC 02002DE9 PUSH {R1} \ 00000AD0 8008A0E1 LSL R0,R0,#+17 \ 00000AD4 A008A0E1 LSR R0,R0,#+17 \ 00000AD8 01002DE9 PUSH {R0} \ 00000ADC 0730A0E1 MOV R3,R7 \ 00000AE0 FF2F86E2 ADD R2,R6,#+1020 \ 00000AE4 0400A0E1 MOV R0,R4 \ 00000AE8 ........ BL AddStringToLog \ 00000AEC 08D08DE2 ADD SP,SP,#+8 3473 else 3474 SENDMSGCOUNT++; 3475 SUBPROC((void *)SendAnswer,0,p); \ ??CheckComand_39: \ 00000AF0 0B20A0E1 MOV R2,R11 \ 00000AF4 4CFFFFEA B ??CheckComand_27 3476 mfree(send_txt); 3477 return; 3478 } 3479 3480 #ifdef kluchnik // не доступно для всех,потому что имхо,будет еще большая перегрузка серверов!!!а оно нам надо? 3481 if(t->isautobot) \ ??CheckComand_38: \ 00000AF8 5C0094E5 LDR R0,[R4, #+92] \ 00000AFC 000050E3 CMP R0,#+0 \ 00000B00 2C00000A BEQ ??CheckComand_40 3482 { 3483 TPKT *p; 3484 int i=LoadBotMessage(t->uin); \ 00000B04 0C0094E5 LDR R0,[R4, #+12] \ 00000B08 ........ BL LoadBotMessage 3485 if(i==0) return;//если нет никаких файлов то просто возвращаемся \ 00000B0C 000050E3 CMP R0,#+0 \ 00000B10 2B00000A BEQ ??CheckComand_0 3486 char *pp=bot_lines[t->bot_msg]; \ 00000B14 581094E5 LDR R1,[R4, #+88] \ 00000B18 F42395E5 LDR R2,[R5, #+1012] \ 00000B1C 017192E7 LDR R7,[R2, +R1, LSL #+2] 3487 t->bot_msg++; \ 00000B20 011081E2 ADD R1,R1,#+1 \ 00000B24 581084E5 STR R1,[R4, #+88] 3488 if(t->bot_msg==i) \ 00000B28 000051E1 CMP R1,R0 3489 t->bot_msg=0; \ 00000B2C 58808405 STREQ R8,[R4, #+88] 3490 p=malloc(sizeof(PKT)+strlen(pp)+1); \ 00000B30 0700A0E1 MOV R0,R7 \ 00000B34 1B0000EF SWI +27 \ 00000B38 090080E2 ADD R0,R0,#+9 \ 00000B3C 140000EF SWI +20 \ 00000B40 0080A0E1 MOV R8,R0 3491 p->pkt.uin=t->uin; \ 00000B44 0C0094E5 LDR R0,[R4, #+12] \ 00000B48 000088E5 STR R0,[R8, #+0] 3492 p->pkt.type=T_SENDMSG; \ 00000B4C B4A0C8E1 STRH R10,[R8, #+4] 3493 p->pkt.data_len=strlen(pp); \ 00000B50 0700A0E1 MOV R0,R7 \ 00000B54 1B0000EF SWI +27 \ 00000B58 B600C8E1 STRH R0,[R8, #+6] 3494 strcpy(p->data,pp); \ 00000B5C 0710A0E1 MOV R1,R7 \ 00000B60 080088E2 ADD R0,R8,#+8 \ 00000B64 1A0000EF SWI +26 3495 AddStringToLog(t,0x01,pp,"Autobot",(++SENDMSGCOUNT)&0x7FFF,1); \ 00000B68 000395E5 LDR R0,[R5, #+768] \ 00000B6C 0110A0E3 MOV R1,#+1 \ 00000B70 010080E2 ADD R0,R0,#+1 \ 00000B74 000385E5 STR R0,[R5, #+768] \ 00000B78 02002DE9 PUSH {R1} \ 00000B7C 8008A0E1 LSL R0,R0,#+17 \ 00000B80 A008A0E1 LSR R0,R0,#+17 \ 00000B84 01002DE9 PUSH {R0} \ 00000B88 0720A0E1 MOV R2,R7 \ 00000B8C 2800A0E3 MOV R0,#+40 \ 00000B90 400E80E3 ORR R0,R0,#0x400 \ 00000B94 063080E0 ADD R3,R0,R6 \ 00000B98 0400A0E1 MOV R0,R4 \ 00000B9C ........ BL AddStringToLog 3496 SUBPROC((void *)SendAnswer,0,p); \ 00000BA0 0820A0E1 MOV R2,R8 \ 00000BA4 0010A0E3 MOV R1,#+0 \ 00000BA8 0900A0E1 MOV R0,R9 \ 00000BAC 710100EF SWI +369 3497 return; \ 00000BB0 08D08DE2 ADD SP,SP,#+8 \ 00000BB4 21FFFFEA B ??CheckComand_14 3498 } 3499 #endif 3500 3501 CheckComand2(txt,t); \ ??CheckComand_40: \ 00000BB8 0410A0E1 MOV R1,R4 \ 00000BBC 0B00A0E1 MOV R0,R11 \ 00000BC0 ........ _BLF CheckComand2,??CheckComand2??rA 3502 } \ ??CheckComand_0: \ 00000BC4 89DF8DE2 ADD SP,SP,#+548 ;; stack cleaning \ 00000BC8 F08FBDE8 POP {R4-R11,PC} ;; return \ ??CheckComand_1: \ 00000BCC ........ DC32 `?` \ 00000BD0 ........ DC32 show_send_info \ 00000BD4 ........ DC32 awayHelloMsg 3503 3504 //------------- Попап месаже для подключившегося контакта -----------// 3505 extern DYNPNGICONLIST *GetXSByItem(int curitem); \ In segment DATA_Z, align 4, align-sorted 3506 char INC_Nick[32]; \ INC_Nick: \ 00000000 DS8 32 3507 char show_nick[32]; 3508 int INC_show; 3509 3510 char onContact[64]; 3511 int INC_show2; 3512 GBSTMR incs2; 3513 extern void DrawScreenShot(); 3514 int pp_icon; 3515 int pp_xicon; \ In segment CODE, align 4, keep-with-next 3516 void show_on_contact() 3517 { \ show_on_contact: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 3518 if(INC_show2>0/* && !(IsGuiOnTop(maingui_id))*/) \ 00000004 ........ LDR R4,??DataTable141 ;; i_rc \ 00000008 08D04DE2 SUB SP,SP,#+8 \ 0000000C 600494E5 LDR R0,[R4, #+1120] \ 00000010 010050E3 CMP R0,#+1 \ 00000014 F387BDB8 POPLT {R0,R1,R4-R10,PC} 3519 { 3520 WSHDR *ws=AllocWS(64); \ 00000018 4000A0E3 MOV R0,#+64 \ 0000001C 250100EF SWI +293 \ 00000020 0050A0E1 MOV R5,R0 3521 ascii2ws(ws,onContact); \ 00000024 8B1D84E2 ADD R1,R4,#+8896 \ 00000028 ........ _BLF ascii2ws,??ascii2ws??rA 3522 int csm_oncreate_addr = ((int*)(((CSM_RAM*)(CSM_root()->csm_q->csm.last))->constr))[1] - 1; \ 0000002C 068100EF SWI +33030 \ 00000030 080090E5 LDR R0,[R0, #+8] 3523 char java_oncreate_pattern[8] = {0xB0, 0xB5, 0x04, 0x1C, 0x00, 0x25, 0x05, 0x61}; \ 00000034 C4219FE5 LDR R2,??show_on_contact_0 ;; `?` \ 00000038 0C0090E5 LDR R0,[R0, #+12] \ 0000003C 480092E8 LDM R2,{R3,R6} \ 00000040 080090E5 LDR R0,[R0, #+8] \ 00000044 0D10A0E1 MOV R1,SP \ 00000048 040090E5 LDR R0,[R0, #+4] \ 0000004C 480081E8 STM R1,{R3,R6} \ 00000050 010040E2 SUB R0,R0,#+1 3524 if(!(memcmp((void*)csm_oncreate_addr, java_oncreate_pattern, 8))) \ 00000054 0820A0E3 MOV R2,#+8 \ 00000058 1C0100EF SWI +284 \ 0000005C 000050E3 CMP R0,#+0 \ 00000060 0300001A BNE ??show_on_contact_1 3525 { 3526 DrawScreenShot(); \ 00000064 ........ _BLF DrawScreenShot,??DrawScreenShot??rA 3527 INC_show2-=2; \ 00000068 600494E5 LDR R0,[R4, #+1120] \ 0000006C 020040E2 SUB R0,R0,#+2 \ 00000070 010000EA B ??show_on_contact_2 3528 } 3529 else 3530 INC_show2--; \ ??show_on_contact_1: \ 00000074 600494E5 LDR R0,[R4, #+1120] \ 00000078 010040E2 SUB R0,R0,#+1 3531 3532 int x=0; \ ??show_on_contact_2: \ 0000007C 641494E5 LDR R1,[R4, #+1124] \ 00000080 600484E5 STR R0,[R4, #+1120] \ 00000084 78019FE5 LDR R0,??show_on_contact_0+0x4 ;; XStatusImg \ 00000088 0060A0E3 MOV R6,#+0 \ 0000008C 011190E7 LDR R1,[R0, +R1, LSL #+2] \ 00000090 000051E3 CMP R1,#+0 \ 00000094 0600000A BEQ ??show_on_contact_3 3533 /* if(icons[pp_icon]) 3534 { 3535 x=icons[pp_icon]->w; 3536 if(pp_xicon!=0 && GetXSByItem(pp_xicon)) 3537 x+=GetXSByItem(pp_xicon)->img->w; 3538 } 3539 */ 3540 3541 if(XStatusImg[pp_icon]) 3542 { 3543 x=XStatusImg[pp_icon]->w; \ 00000098 B060D1E1 LDRH R6,[R1, #+0] 3544 if(pp_xicon!=0 && XStatusImg[pp_xicon]) \ 0000009C 681494E5 LDR R1,[R4, #+1128] \ 000000A0 000051E3 CMP R1,#+0 \ 000000A4 01019017 LDRNE R0,[R0, +R1, LSL #+2] \ 000000A8 00005013 CMPNE R0,#+0 3545 x+=XStatusImg[pp_xicon]->w; \ 000000AC B000D011 LDRHNE R0,[R0, #+0] \ 000000B0 06608010 ADDNE R6,R0,R6 3546 } 3547 3548 DrawRectangle(0,0,Get_WS_width(ws,PopupFont)+x+5,GetFontYSIZE(PopupFont)+5,0,PopupOnlineCl,PopupBGCl); \ ??show_on_contact_3: \ 000000B4 ........ LDR R7,??DataTable147 ;; PopupFont \ 000000B8 48819FE5 LDR R8,??show_on_contact_0+0x8 ;; PopupOnlineCl \ 000000BC 000097E5 LDR R0,[R7, #+0] \ 000000C0 C50100EF SWI +453 \ 000000C4 001097E5 LDR R1,[R7, #+0] \ 000000C8 0090A0E1 MOV R9,R0 \ 000000CC 0500A0E1 MOV R0,R5 \ 000000D0 080200EF SWI +520 \ 000000D4 ........ LDR R1,??DataTable149 ;; PopupBGCl \ 000000D8 053089E2 ADD R3,R9,#+5 \ 000000DC 02002DE9 PUSH {R1} \ 000000E0 000086E0 ADD R0,R6,R0 \ 000000E4 052080E2 ADD R2,R0,#+5 \ 000000E8 0000A0E3 MOV R0,#+0 \ 000000EC 0810A0E1 MOV R1,R8 \ 000000F0 02002DE9 PUSH {R1} \ 000000F4 0010A0E3 MOV R1,#+0 \ 000000F8 02002DE9 PUSH {R1} \ 000000FC B40100EF SWI +436 \ 00000100 640494E5 LDR R0,[R4, #+1124] \ 00000104 000184E0 ADD R0,R4,R0, LSL #+2 \ 00000108 200090E5 LDR R0,[R0, #+32] \ 0000010C 0CD08DE2 ADD SP,SP,#+12 \ 00000110 000050E3 CMP R0,#+0 \ 00000114 1A00000A BEQ ??show_on_contact_4 3549 3550 if(icons[pp_icon]) 3551 { 3552 DrwImage(icons[pp_icon],2,3,0,0); \ 00000118 0010A0E3 MOV R1,#+0 \ 0000011C 02002DE9 PUSH {R1} \ 00000120 0030A0E3 MOV R3,#+0 \ 00000124 0320A0E3 MOV R2,#+3 \ 00000128 0210A0E3 MOV R1,#+2 \ 0000012C ........ BL DrwImage 3553 if(pp_xicon!=0 && GetXSByItem(pp_xicon)) \ 00000130 680494E5 LDR R0,[R4, #+1128] \ 00000134 04D08DE2 ADD SP,SP,#+4 \ 00000138 000050E3 CMP R0,#+0 \ 0000013C 1000000A BEQ ??show_on_contact_4 \ 00000140 ........ _BLF GetXSByItem,??GetXSByItem??rA \ 00000144 000050E3 CMP R0,#+0 \ 00000148 0D00000A BEQ ??show_on_contact_4 3554 DrwImage(GetXSByItem(pp_xicon)->img,4+icons[pp_icon]->w,3,0,0); \ 0000014C 680494E5 LDR R0,[R4, #+1128] \ 00000150 ........ _BLF GetXSByItem,??GetXSByItem??rA \ 00000154 0010A0E3 MOV R1,#+0 \ 00000158 02002DE9 PUSH {R1} \ 0000015C 641494E5 LDR R1,[R4, #+1124] \ 00000160 080090E5 LDR R0,[R0, #+8] \ 00000164 0030A0E3 MOV R3,#+0 \ 00000168 011184E0 ADD R1,R4,R1, LSL #+2 \ 0000016C 201091E5 LDR R1,[R1, #+32] \ 00000170 0320A0E3 MOV R2,#+3 \ 00000174 B010D1E1 LDRH R1,[R1, #+0] \ 00000178 041081E2 ADD R1,R1,#+4 \ 0000017C ........ BL DrwImage \ 00000180 04D08DE2 ADD SP,SP,#+4 3555 } 3556 3557 DrawString(ws,x+3,2, 3+Get_WS_width(ws,PopupFont)+x ,1+GetFontYSIZE(PopupFont),PopupFont,0,PopupOnlineCl,GetPaletteAdrByColorIndex(23)); \ ??show_on_contact_4: \ 00000184 1700A0E3 MOV R0,#+23 \ 00000188 2E0100EF SWI +302 \ 0000018C 00A0A0E1 MOV R10,R0 \ 00000190 000097E5 LDR R0,[R7, #+0] \ 00000194 C50100EF SWI +453 \ 00000198 001097E5 LDR R1,[R7, #+0] \ 0000019C 0090A0E1 MOV R9,R0 \ 000001A0 0500A0E1 MOV R0,R5 \ 000001A4 080200EF SWI +520 \ 000001A8 00042DE9 PUSH {R10} \ 000001AC 00012DE9 PUSH {R8} \ 000001B0 0010A0E3 MOV R1,#+0 \ 000001B4 02002DE9 PUSH {R1} \ 000001B8 001097E5 LDR R1,[R7, #+0] \ 000001BC 000086E0 ADD R0,R6,R0 \ 000001C0 02002DE9 PUSH {R1} \ 000001C4 033080E2 ADD R3,R0,#+3 \ 000001C8 0220A0E3 MOV R2,#+2 \ 000001CC 0500A0E1 MOV R0,R5 \ 000001D0 011089E2 ADD R1,R9,#+1 \ 000001D4 02002DE9 PUSH {R1} \ 000001D8 031086E2 ADD R1,R6,#+3 \ 000001DC 4C0100EF SWI +332 3558 FreeWS(ws); \ 000001E0 0500A0E1 MOV R0,R5 \ 000001E4 290100EF SWI +297 3559 GBS_StartTimerProc(&incs2, 15, show_on_contact); \ 000001E8 1C209FE5 LDR R2,??show_on_contact_0+0xC ;; show_on_contact \ 000001EC 0F10A0E3 MOV R1,#+15 \ 000001F0 8C0D84E2 ADD R0,R4,#+8960 \ 000001F4 4D0000EF SWI +77 \ 000001F8 14D08DE2 ADD SP,SP,#+20 3560 } 3561 // else 3562 // RefreshGUI(); 3563 } \ 000001FC F387BDE8 POP {R0,R1,R4-R10,PC} ;; return \ ??show_on_contact_0: \ 00000200 ........ DC32 `?` \ 00000204 ........ DC32 XStatusImg \ 00000208 ........ DC32 PopupOnlineCl \ 0000020C ........ DC32 show_on_contact 3564 3565 char OffContact[64]; 3566 int INC_show3; 3567 GBSTMR incs3; 3568 3569 \ In segment CODE, align 4, keep-with-next 3570 void show_off_contact() 3571 { 3572 if(!isPopupOff) return; \ show_off_contact: \ 00000000 D0019FE5 LDR R0,??show_off_contact_0 ;; isPopupOff \ 00000004 F04F2DE9 PUSH {R4-R11,LR} \ 00000008 08D04DE2 SUB SP,SP,#+8 \ 0000000C 000090E5 LDR R0,[R0, #+0] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 F38FBD08 POPEQ {R0,R1,R4-R11,PC} 3573 if(INC_show3>0) \ 00000018 ........ LDR R4,??DataTable151 ;; i_rc \ 0000001C 6C0494E5 LDR R0,[R4, #+1132] \ 00000020 010050E3 CMP R0,#+1 \ 00000024 F38FBDB8 POPLT {R0,R1,R4-R11,PC} 3574 { 3575 WSHDR *ws=AllocWS(64); \ 00000028 4000A0E3 MOV R0,#+64 \ 0000002C 250100EF SWI +293 \ 00000030 0050A0E1 MOV R5,R0 3576 ascii2ws(ws,OffContact); \ 00000034 1000A0E3 MOV R0,#+16 \ 00000038 8C0D80E3 ORR R0,R0,#0x2300 \ 0000003C 041080E0 ADD R1,R0,R4 \ 00000040 0500A0E1 MOV R0,R5 \ 00000044 ........ _BLF ascii2ws,??ascii2ws??rA 3577 int csm_oncreate_addr = ((int*)(((CSM_RAM*)(CSM_root()->csm_q->csm.last))->constr))[1] - 1; \ 00000048 068100EF SWI +33030 \ 0000004C 080090E5 LDR R0,[R0, #+8] 3578 char java_oncreate_pattern[8] = {0xB0, 0xB5, 0x04, 0x1C, 0x00, 0x25, 0x05, 0x61}; \ 00000050 84219FE5 LDR R2,??show_off_contact_0+0x4 ;; `?_1` \ 00000054 0C0090E5 LDR R0,[R0, #+12] \ 00000058 480092E8 LDM R2,{R3,R6} \ 0000005C 080090E5 LDR R0,[R0, #+8] \ 00000060 0D10A0E1 MOV R1,SP \ 00000064 040090E5 LDR R0,[R0, #+4] \ 00000068 480081E8 STM R1,{R3,R6} \ 0000006C 010040E2 SUB R0,R0,#+1 3579 if(!(memcmp((void*)csm_oncreate_addr, java_oncreate_pattern, 8))) \ 00000070 0820A0E3 MOV R2,#+8 \ 00000074 1C0100EF SWI +284 \ 00000078 000050E3 CMP R0,#+0 \ 0000007C 0300001A BNE ??show_off_contact_1 3580 { 3581 DrawScreenShot(); \ 00000080 ........ _BLF DrawScreenShot,??DrawScreenShot??rA 3582 INC_show3-=2; \ 00000084 6C0494E5 LDR R0,[R4, #+1132] \ 00000088 020040E2 SUB R0,R0,#+2 \ 0000008C 010000EA B ??show_off_contact_2 3583 } 3584 else 3585 INC_show3--; \ ??show_off_contact_1: \ 00000090 6C0494E5 LDR R0,[R4, #+1132] \ 00000094 010040E2 SUB R0,R0,#+1 3586 3587 DrawRectangle(ScreenW()-Get_WS_width(ws,PopupFont)-4-icons[IS_OFFLINE]->w,0,ScreenW()-1,GetFontYSIZE(PopupFont)+4,0,PopupOffCl,PopupOffBGCl); \ ??show_off_contact_2: \ 00000098 ........ LDR R6,??DataTable147 ;; PopupFont \ 0000009C 3C719FE5 LDR R7,??show_off_contact_0+0x8 ;; PopupOffCl \ 000000A0 6C0484E5 STR R0,[R4, #+1132] \ 000000A4 000096E5 LDR R0,[R6, #+0] \ 000000A8 C50100EF SWI +453 \ 000000AC 0090A0E1 MOV R9,R0 \ 000000B0 888100EF SWI +33160 \ 000000B4 00A0A0E1 MOV R10,R0 \ 000000B8 888100EF SWI +33160 \ 000000BC 001096E5 LDR R1,[R6, #+0] \ 000000C0 0080A0E1 MOV R8,R0 \ 000000C4 0500A0E1 MOV R0,R5 \ 000000C8 080200EF SWI +520 \ 000000CC 10119FE5 LDR R1,??show_off_contact_0+0xC ;; PopupOffBGCl \ 000000D0 043089E2 ADD R3,R9,#+4 \ 000000D4 02002DE9 PUSH {R1} \ 000000D8 000048E0 SUB R0,R8,R0 \ 000000DC 01204AE2 SUB R2,R10,#+1 \ 000000E0 040040E2 SUB R0,R0,#+4 \ 000000E4 0710A0E1 MOV R1,R7 \ 000000E8 02002DE9 PUSH {R1} \ 000000EC 0010A0E3 MOV R1,#+0 \ 000000F0 02002DE9 PUSH {R1} \ 000000F4 208094E5 LDR R8,[R4, #+32] \ 000000F8 B080D8E1 LDRH R8,[R8, #+0] \ 000000FC 080040E0 SUB R0,R0,R8 \ 00000100 B40100EF SWI +436 3588 3589 DrwImage(icons[IS_OFFLINE],ScreenW()-Get_WS_width(ws,PopupFont)-2-icons[IS_OFFLINE]->w,3,0,0); \ 00000104 888100EF SWI +33160 \ 00000108 001096E5 LDR R1,[R6, #+0] \ 0000010C 0080A0E1 MOV R8,R0 \ 00000110 0500A0E1 MOV R0,R5 \ 00000114 080200EF SWI +520 \ 00000118 0010A0E1 MOV R1,R0 \ 0000011C 200094E5 LDR R0,[R4, #+32] \ 00000120 0020A0E3 MOV R2,#+0 \ 00000124 04002DE9 PUSH {R2} \ 00000128 011048E0 SUB R1,R8,R1 \ 0000012C B080D0E1 LDRH R8,[R0, #+0] \ 00000130 0030A0E3 MOV R3,#+0 \ 00000134 0320A0E3 MOV R2,#+3 \ 00000138 021041E2 SUB R1,R1,#+2 \ 0000013C 081041E0 SUB R1,R1,R8 \ 00000140 ........ BL DrwImage 3590 3591 DrawString(ws,ScreenW()-Get_WS_width(ws,PopupFont)-3,2,ScreenW()-1,GetFontYSIZE(PopupFont)+2,PopupFont,TEXT_ALIGNRIGHT,PopupOffCl,GetPaletteAdrByColorIndex(23)); \ 00000144 1700A0E3 MOV R0,#+23 \ 00000148 2E0100EF SWI +302 \ 0000014C 0080A0E1 MOV R8,R0 \ 00000150 000096E5 LDR R0,[R6, #+0] \ 00000154 C50100EF SWI +453 \ 00000158 0090A0E1 MOV R9,R0 \ 0000015C 888100EF SWI +33160 \ 00000160 00A0A0E1 MOV R10,R0 \ 00000164 888100EF SWI +33160 \ 00000168 001096E5 LDR R1,[R6, #+0] \ 0000016C 00B0A0E1 MOV R11,R0 \ 00000170 0500A0E1 MOV R0,R5 \ 00000174 080200EF SWI +520 \ 00000178 00012DE9 PUSH {R8} \ 0000017C 80002DE9 PUSH {R7} \ 00000180 0410A0E3 MOV R1,#+4 \ 00000184 02002DE9 PUSH {R1} \ 00000188 001096E5 LDR R1,[R6, #+0] \ 0000018C 01304AE2 SUB R3,R10,#+1 \ 00000190 02002DE9 PUSH {R1} \ 00000194 0220A0E3 MOV R2,#+2 \ 00000198 00004BE0 SUB R0,R11,R0 \ 0000019C 021089E2 ADD R1,R9,#+2 \ 000001A0 02002DE9 PUSH {R1} \ 000001A4 031040E2 SUB R1,R0,#+3 \ 000001A8 0500A0E1 MOV R0,R5 \ 000001AC 4C0100EF SWI +332 \ 000001B0 24D08DE2 ADD SP,SP,#+36 3592 FreeWS(ws); \ 000001B4 0500A0E1 MOV R0,R5 \ 000001B8 290100EF SWI +297 3593 GBS_StartTimerProc(&incs3, 15, show_off_contact); \ 000001BC 24209FE5 LDR R2,??show_off_contact_0+0x10 ;; show_off_contact \ 000001C0 0F10A0E3 MOV R1,#+15 \ 000001C4 5000A0E3 MOV R0,#+80 \ 000001C8 8C0D80E3 ORR R0,R0,#0x2300 \ 000001CC 040080E0 ADD R0,R0,R4 \ 000001D0 4D0000EF SWI +77 \ 000001D4 F38FBDE8 POP {R0,R1,R4-R11,PC} ;; return \ ??show_off_contact_0: \ 000001D8 ........ DC32 isPopupOff \ 000001DC ........ DC32 `?_1` \ 000001E0 ........ DC32 PopupOffCl \ 000001E4 ........ DC32 PopupOffBGCl \ 000001E8 ........ DC32 show_off_contact 3594 } 3595 } 3596 3597 //---------------------------- popup message ---------------------------// 3598 3599 \ In segment CODE, align 4, keep-with-next 3600 void show_pp_sender() 3601 { \ show_pp_sender: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 3602 if(INC_show>0/* && !(IsGuiOnTop(maingui_id))*/) \ 00000004 ........ LDR R4,??DataTable151 ;; i_rc \ 00000008 08D04DE2 SUB SP,SP,#+8 \ 0000000C 5C0494E5 LDR R0,[R4, #+1116] \ 00000010 010050E3 CMP R0,#+1 \ 00000014 F38FBDB8 POPLT {R0,R1,R4-R11,PC} 3603 { 3604 WSHDR *ws=AllocWS(256); \ 00000018 400FA0E3 MOV R0,#+256 \ 0000001C 250100EF SWI +293 \ 00000020 0050A0E1 MOV R5,R0 3605 ascii2ws(ws,show_nick); \ 00000024 A000A0E3 MOV R0,#+160 \ 00000028 880D80E3 ORR R0,R0,#0x2200 \ 0000002C 041080E0 ADD R1,R0,R4 \ 00000030 0500A0E1 MOV R0,R5 \ 00000034 ........ _BLF ascii2ws,??ascii2ws??rA 3606 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] 3607 char java_oncreate_pattern[8] = {0xB0, 0xB5, 0x04, 0x1C, 0x00, 0x25, 0x05, 0x61}; \ 00000040 5C219FE5 LDR R2,??show_pp_sender_0 ;; `?_2` \ 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 3608 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 3609 { 3610 DrawScreenShot(); \ 00000070 ........ _BLF DrawScreenShot,??DrawScreenShot??rA 3611 INC_show-=2; \ 00000074 5C0494E5 LDR R0,[R4, #+1116] \ 00000078 020040E2 SUB R0,R0,#+2 \ 0000007C 010000EA B ??show_pp_sender_2 3612 } 3613 else 3614 INC_show--; \ ??show_pp_sender_1: \ 00000080 5C0494E5 LDR R0,[R4, #+1116] \ 00000084 010040E2 SUB R0,R0,#+1 3615 #ifdef NEWSGOLD 3616 DrawRectangle(0,0,Get_WS_width(ws,PopupFont)+6+GetImgWidth(NumStatusToIconBar + IS_MSG),GetFontYSIZE(PopupFont)+4,0,PopupMsgCl,PopupBGCl); \ ??show_pp_sender_2: \ 00000088 ........ LDR R6,??DataTable147 ;; PopupFont \ 0000008C ........ LDR R11,??DataTable148 ;; NumStatusToIconBar \ 00000090 5C0484E5 STR R0,[R4, #+1116] \ 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,??DataTable149 ;; PopupBGCl \ 000000C0 043087E2 ADD R3,R7,#+4 \ 000000C4 02002DE9 PUSH {R1} \ 000000C8 D8109FE5 LDR R1,??show_pp_sender_0+0x4 ;; PopupMsgCl \ 000000CC 080080E0 ADD R0,R0,R8 \ 000000D0 02002DE9 PUSH {R1} \ 000000D4 062080E2 ADD R2,R0,#+6 \ 000000D8 0000A0E3 MOV R0,#+0 \ 000000DC 0010A0E3 MOV R1,#+0 \ 000000E0 02002DE9 PUSH {R1} \ 000000E4 B40100EF SWI +436 3617 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 3618 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 3619 #else 3620 DrawRectangle(0,0,Get_WS_width(ws,PopupFont)+2,GetFontYSIZE(PopupFont)+2,0,PopupBGCl,PopupBGCl); 3621 DrawString(ws,1,1,1+Get_WS_width(ws,PopupFont)+2,1+GetFontYSIZE(PopupFont),PopupFont,0,PopupMsgCl,GetPaletteAdrByColorIndex(23)); 3622 #endif 3623 FreeWS(ws); \ 0000017C 0500A0E1 MOV R0,R5 \ 00000180 290100EF SWI +297 3624 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 3000A0E3 MOV R0,#+48 \ 00000190 840D80E3 ORR R0,R0,#0x2100 \ 00000194 040080E0 ADD R0,R0,R4 \ 00000198 4D0000EF SWI +77 \ 0000019C 20D08DE2 ADD SP,SP,#+32 3625 } 3626 } \ 000001A0 F38FBDE8 POP {R0,R1,R4-R11,PC} ;; return \ ??show_pp_sender_0: \ 000001A4 ........ DC32 `?_2` \ 000001A8 ........ DC32 PopupMsgCl \ 000001AC ........ DC32 show_pp_sender 3627 3628 3629 //----------------------------------------------------------------------------------------// 3630 3631 \ In segment CODE, align 4, keep-with-next 3632 void Get_Online_total() 3633 { 3634 CLIST *t; 3635 kopa_online=0; \ Get_Online_total: \ 00000000 ........ LDR R0,??DataTable151 ;; i_rc \ 00000004 0010A0E3 MOV R1,#+0 \ 00000008 301480E5 STR R1,[R0, #+1072] 3636 kopa_kontaktu=0; \ 0000000C 341480E5 STR R1,[R0, #+1076] 3637 t=(CLIST *)(&cltop); \ 00000010 1C10A0E3 MOV R1,#+28 \ 00000014 401E81E3 ORR R1,R1,#0x400 \ 00000018 001081E0 ADD R1,R1,R0 \ 0000001C FF30A0E3 MOV R3,#+255 \ 00000020 FF3C83E3 ORR R3,R3,#0xFF00 \ 00000024 0A0000EA B ??Get_Online_total_0 3638 while(t=(CLIST *)(t->next)) 3639 { 3640 if (!t->isgroup) \ ??Get_Online_total_1: \ 00000028 082091E5 LDR R2,[R1, #+8] \ 0000002C 000052E3 CMP R2,#+0 \ 00000030 0700001A BNE ??Get_Online_total_0 3641 { 3642 kopa_online++; \ 00000034 302490E5 LDR R2,[R0, #+1072] \ 00000038 012082E2 ADD R2,R2,#+1 \ 0000003C 302480E5 STR R2,[R0, #+1072] 3643 if (t->state!=65535) kopa_kontaktu++; \ 00000040 B425D1E1 LDRH R2,[R1, #+84] \ 00000044 030052E1 CMP R2,R3 \ 00000048 34249015 LDRNE R2,[R0, #+1076] \ 0000004C 01208212 ADDNE R2,R2,#+1 \ 00000050 34248015 STRNE R2,[R0, #+1076] 3644 } 3645 } \ ??Get_Online_total_0: \ 00000054 001091E5 LDR R1,[R1, #+0] \ 00000058 000051E3 CMP R1,#+0 \ 0000005C F1FFFF1A BNE ??Get_Online_total_1 3646 } \ 00000060 1EFF2FE1 BX LR ;; return 3647 3648 3649 //-------------------------------------------------------------------------------------------// 3650 3651 \ In segment CODE, align 4, keep-with-next 3652 void SetIndividStatus()//set to all contact to default vibra, sound and other by kluchnik 04.04.08 3653 { 3654 CLIST *t; 3655 t=(CLIST *)(&cltop); \ SetIndividStatus: \ 00000000 ........ LDR R0,??DataTable151 ;; i_rc \ 00000004 1C10A0E3 MOV R1,#+28 \ 00000008 401E81E3 ORR R1,R1,#0x400 \ 0000000C 001081E0 ADD R1,R1,R0 \ 00000010 0C0000EA B ??SetIndividStatus_0 3656 while(t=(CLIST *)(t->next)) 3657 { 3658 if (!t->isgroup) \ ??SetIndividStatus_1: \ 00000014 082091E5 LDR R2,[R1, #+8] \ 00000018 000052E3 CMP R2,#+0 \ 0000001C 0900001A BNE ??SetIndividStatus_0 3659 { 3660 t->isvibra=1; \ 00000020 0120A0E3 MOV R2,#+1 \ 00000024 682081E5 STR R2,[R1, #+104] 3661 t->issound=1; \ 00000028 6C2081E5 STR R2,[R1, #+108] 3662 t->isShowXst=Show_XTX; \ 0000002C B43390E5 LDR R3,[R0, #+948] \ 00000030 7C3081E5 STR R3,[R1, #+124] 3663 #ifdef kluchnik 3664 t->isLoadHistory=1; \ 00000034 602081E5 STR R2,[R1, #+96] 3665 #endif 3666 t->signals=1; \ 00000038 802081E5 STR R2,[R1, #+128] 3667 t->isaccess=1; \ 0000003C 842081E5 STR R2,[R1, #+132] 3668 3669 t->automsgcount=0; \ 00000040 0020A0E3 MOV R2,#+0 \ 00000044 882081E5 STR R2,[R1, #+136] 3670 } 3671 } \ ??SetIndividStatus_0: \ 00000048 001091E5 LDR R1,[R1, #+0] \ 0000004C 000051E3 CMP R1,#+0 \ 00000050 EFFFFF1A BNE ??SetIndividStatus_1 3672 } \ 00000054 1EFF2FE1 BX LR ;; return 3673 3674 //-------------------------------------------------------------------------------------------// 3675 //int ShowLoadScreen=1; 3676 int curpos; 3677 \ In segment CODE, align 4, keep-with-next 3678 ProcessPacket(TPKT *p) 3679 { \ ProcessPacket: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 50DF4DE2 SUB SP,SP,#+320 3680 CLIST *t; 3681 LOGQ *q; 3682 char s[256]; 3683 switch(p->pkt.type) \ 00000008 20AB9FE5 LDR R10,??ProcessPacket_1+0x4 ;; ILL_RECV_FADE \ 0000000C ........ LDR R5,??DataTable166 ;; Canvas \ 00000010 ........ LDR R7,??DataTable168 ;; i_rc \ 00000014 0040A0E1 MOV R4,R0 \ 00000018 B410D4E1 LDRH R1,[R4, #+4] \ 0000001C 000094E5 LDR R0,[R4, #+0] \ 00000020 02B0A0E3 MOV R11,#+2 \ 00000024 0160A0E3 MOV R6,#+1 \ 00000028 0080A0E3 MOV R8,#+0 \ 0000002C 031041E2 SUB R1,R1,#+3 \ 00000030 1C0051E3 CMP R1,#+28 \ 00000034 B802008A BHI ??ProcessPacket_2 \ 00000038 022F8FE2 ADR R2,??ProcessPacket_0 \ 0000003C 8110A0E1 MOV R1,R1, LSL #+1 \ 00000040 B12092E1 LDRH R2,[R2, R1] \ 00000044 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??ProcessPacket_0: \ 00000048 40010E00B402 DC16 +320,+14,+692,+692 \ B402 \ 00000050 1100B4024C00 DC16 +17,+692,+76,+692 \ B402 \ 00000058 B402B402B402 DC16 +692,+692,+692,+692 \ B402 \ 00000060 B4021C021C02 DC16 +692,+540,+540,+692 \ B402 \ 00000068 B4023C004A00 DC16 +692,+60,+74,+692 \ B402 \ 00000070 B402B4024C02 DC16 +692,+692,+588,+692 \ B402 \ 00000078 B402B402B402 DC16 +692,+692,+692,+692 \ B402 \ 00000080 B2020000 DC16 +690,+0 3684 { 3685 case T_LOGIN: 3686 set_my_status(); \ ??ProcessPacket_3: \ 00000084 ........ BL set_my_status 3687 set_my_xstatus(); \ 00000088 ........ BL set_my_xstatus \ 0000008C A20200EA B ??ProcessPacket_2 3688 break; 3689 case T_CLENTRY: 3690 if (p->pkt.uin) \ ??ProcessPacket_4: \ 00000090 000050E3 CMP R0,#+0 \ 00000094 1800000A BEQ ??ProcessPacket_5 3691 { 3692 if ((t=FindContactByUin(p->pkt.uin))) \ 00000098 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 0000009C 0090B0E1 MOVS R9,R0 \ 000000A0 0E00000A BEQ ??ProcessPacket_6 3693 { 3694 // t->state=0xFFFF; 3695 if (!t->local) strncpy(t->name,p->data,63); \ 000000A4 C00099E5 LDR R0,[R9, #+192] \ 000000A8 000050E3 CMP R0,#+0 \ 000000AC 0300001A BNE ??ProcessPacket_7 \ 000000B0 3F20A0E3 MOV R2,#+63 \ 000000B4 081084E2 ADD R1,R4,#+8 \ 000000B8 140089E2 ADD R0,R9,#+20 \ 000000BC 160100EF SWI +278 3696 t->group=GROUP_CACHE; \ ??ProcessPacket_7: \ 000000C0 200497E5 LDR R0,[R7, #+1056] \ 000000C4 100089E5 STR R0,[R9, #+16] 3697 ChangeContactPos(t); \ ??ProcessPacket_8: \ 000000C8 0900A0E1 MOV R0,R9 \ 000000CC ........ _BLF ChangeContactPos,??ChangeContactPos??rA 3698 RecountMenu(t,1); \ 000000D0 0110A0E3 MOV R1,#+1 \ 000000D4 0900A0E1 MOV R0,R9 \ ??ProcessPacket_9: \ 000000D8 ........ BL RecountMenu \ 000000DC 8E0200EA B ??ProcessPacket_2 3699 } 3700 else 3701 { 3702 RecountMenu(AddContact(p->pkt.uin,p->data, GROUP_CACHE, 0),1); \ ??ProcessPacket_6: \ 000000E0 202497E5 LDR R2,[R7, #+1056] \ 000000E4 000094E5 LDR R0,[R4, #+0] \ 000000E8 0030A0E3 MOV R3,#+0 \ 000000EC 081084E2 ADD R1,R4,#+8 \ 000000F0 ........ _BLF AddContact,??AddContact??rA \ 000000F4 0610A0E1 MOV R1,R6 \ 000000F8 F6FFFFEA B ??ProcessPacket_9 3703 } 3704 } 3705 else 3706 { 3707 if(VIBR_ON_CONNECT) \ ??ProcessPacket_5: \ 000000FC ........ LDR R0,??DataTable154 ;; VIBR_ON_CONNECT \ 00000100 000090E5 LDR R0,[R0, #+0] \ 00000104 000050E3 CMP R0,#+0 \ 00000108 0100000A BEQ ??ProcessPacket_10 3708 { 3709 vibra_count=1; \ 0000010C E46387E5 STR R6,[R7, #+996] 3710 start_vibra(); \ 00000110 ........ BL start_vibra 3711 } 3712 GROUP_CACHE=0; \ ??ProcessPacket_10: \ 00000114 208487E5 STR R8,[R7, #+1056] 3713 ask_my_info(); 3714 if (/*ShowLoadScreen==0 && *//*maingui_id*/contactlist_menu_id) \ 00000118 FC0297E5 LDR R0,[R7, #+764] \ 0000011C 000050E3 CMP R0,#+0 \ 00000120 0200000A BEQ ??ProcessPacket_11 3715 { 3716 RecountMenu(NULL,1); \ 00000124 0110A0E3 MOV R1,#+1 \ 00000128 0800A0E1 MOV R0,R8 \ ??ProcessPacket_12: \ 0000012C E9FFFFEA B ??ProcessPacket_9 3717 } 3718 else 3719 { 3720 SetIndividStatus(); \ ??ProcessPacket_11: \ 00000130 ........ BL SetIndividStatus 3721 // if(ShowLoadScreen) ShowLoadScreen=0; 3722 SMART_REDRAW(); \ 00000134 ........ BL SMART_REDRAW \ 00000138 770200EA B ??ProcessPacket_2 3723 } 3724 } 3725 break; 3726 case T_GROUPID: 3727 if (t=FindGroupByID(GROUP_CACHE=p->pkt.uin)) \ ??ProcessPacket_13: \ 0000013C 200487E5 STR R0,[R7, #+1056] \ 00000140 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 00000144 0090B0E1 MOVS R9,R0 \ 00000148 0400000A BEQ ??ProcessPacket_14 3728 { 3729 strncpy(t->name,p->data,63); \ 0000014C 3F20A0E3 MOV R2,#+63 \ 00000150 081084E2 ADD R1,R4,#+8 \ 00000154 140089E2 ADD R0,R9,#+20 \ 00000158 160100EF SWI +278 3730 ChangeContactPos(t); \ 0000015C D9FFFFEA B ??ProcessPacket_8 3731 RecountMenu(t,1); 3732 } 3733 else 3734 { 3735 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 D8FFFFEA B ??ProcessPacket_9 3736 } 3737 break; 3738 case T_GROUPFOLLOW: 3739 GROUP_CACHE=p->pkt.uin; \ ??ProcessPacket_15: \ 00000174 200487E5 STR R0,[R7, #+1056] \ 00000178 670200EA B ??ProcessPacket_2 3740 break; 3741 case T_STATUSCHANGE: 3742 t=FindContactByUin(p->pkt.uin); \ ??ProcessPacket_16: \ 0000017C ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000180 0090B0E1 MOVS R9,R0 3743 if (t) \ 00000184 6402000A BEQ ??ProcessPacket_2 3744 { 3745 int i=t->state; \ 00000188 B415D9E1 LDRH R1,[R9, #+84] \ 0000018C 04108DE5 STR R1,[SP, #+4] \ 00000190 0A00D4E5 LDRB R0,[R4, #+10] \ 00000194 B615D9E1 LDRH R1,[R9, #+86] \ 00000198 000051E1 CMP R1,R0 \ 0000019C 1D00000A BEQ ??ProcessPacket_17 3746 // CLIST *oldt=NULL; 3747 if (t->xstate!=p->data[2]) // Если картинка икс статуса сменилась 3748 { 3749 t->xstate=p->data[2]; \ 000001A0 B605C9E1 STRH R0,[R9, #+86] 3750 FreeXText(t); \ 000001A4 0900A0E1 MOV R0,R9 \ 000001A8 ........ _BLF FreeXText,??FreeXText??rA 3751 if (t->xstate && ENA_AUTO_XTXT) // Если установлен икс статус и можно запрашивать по смене икс статуса :) \ 000001AC B605D9E1 LDRH R0,[R9, #+86] \ 000001B0 000050E3 CMP R0,#+0 \ 000001B4 1600000A BEQ ??ProcessPacket_18 \ 000001B8 74099FE5 LDR R0,??ProcessPacket_1+0x8 ;; ENA_AUTO_XTXT \ 000001BC 000090E5 LDR R0,[R0, #+0] \ 000001C0 000050E3 CMP R0,#+0 \ 000001C4 1200000A BEQ ??ProcessPacket_18 3752 { 3753 t->req_xtext=1; \ 000001C8 BC6089E5 STR R6,[R9, #+188] 3754 if (edchat_id) // Если открыт чат \ 000001CC 240497E5 LDR R0,[R7, #+1060] \ 000001D0 000050E3 CMP R0,#+0 \ 000001D4 0F00000A BEQ ??ProcessPacket_17 3755 { 3756 void *data=FindGUIbyId(edchat_id,NULL); \ 000001D8 240497E5 LDR R0,[R7, #+1060] \ 000001DC 0010A0E3 MOV R1,#+0 \ 000001E0 090200EF SWI +521 3757 if (data) \ 000001E4 000050E3 CMP R0,#+0 \ 000001E8 0A00000A BEQ ??ProcessPacket_17 3758 { 3759 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); \ 000001EC DF0100EF SWI +479 3760 if (ed_struct) \ 000001F0 000050E3 CMP R0,#+0 \ 000001F4 0700000A BEQ ??ProcessPacket_17 3761 { 3762 if (ed_struct->ed_contact==t) // Если наш чат то запрашиваем текст статуса \ 000001F8 000090E5 LDR R0,[R0, #+0] \ 000001FC 090050E1 CMP R0,R9 \ 00000200 0400001A BNE ??ProcessPacket_17 3763 { 3764 t->req_xtext=0; \ 00000204 BC8089E5 STR R8,[R9, #+188] 3765 RequestXText(t->uin); \ 00000208 0C0099E5 LDR R0,[R9, #+12] \ 0000020C ........ BL RequestXText \ 00000210 000000EA B ??ProcessPacket_17 3766 } 3767 } 3768 } 3769 } 3770 } 3771 else // Если икс статус не установлен то на всякий случай снимаем флаг получения текста 3772 { 3773 t->req_xtext=0; \ ??ProcessPacket_18: \ 00000214 BC8089E5 STR R8,[R9, #+188] 3774 } 3775 }/* 3776 if (contactlist_menu_id) 3777 { 3778 // oldt=FindContactByN(GetCurMenuItem(FindGUIbyId(contactlist_menu_id,NULL))); 3779 oldt=FindContactByN(curpos); 3780 }*/ 3781 if(t->state==65535) t->change=1; \ ??ProcessPacket_17: \ 00000218 B405D9E1 LDRH R0,[R9, #+84] \ 0000021C FFA0A0E3 MOV R10,#+255 \ 00000220 FFAC8AE3 ORR R10,R10,#0xFF00 \ 00000224 0A0050E1 CMP R0,R10 \ 00000228 8C608905 STREQ R6,[R9, #+140] 3782 t->state=*((unsigned short *)(p->data)); \ 0000022C B800D4E1 LDRH R0,[R4, #+8] \ 00000230 B405C9E1 STRH R0,[R9, #+84] 3783 if((t->state!=65535)&&(t->change==1)) \ 00000234 0A0050E1 CMP R0,R10 \ 00000238 0300000A BEQ ??ProcessPacket_19 \ 0000023C 8C0099E5 LDR R0,[R9, #+140] \ 00000240 010050E3 CMP R0,#+1 3784 { 3785 t->just_now=2; \ 00000244 74B08905 STREQ R11,[R9, #+116] 3786 t->change=0; \ 00000248 8C808905 STREQ R8,[R9, #+140] 3787 } 3788 3789 LogStatusChange(t); \ ??ProcessPacket_19: \ 0000024C 0900A0E1 MOV R0,R9 \ 00000250 ........ _BLF LogStatusChange,??LogStatusChange??rA 3790 LogStatusChange2(t);//пишем лог templates\\logs.txt \ 00000254 0900A0E1 MOV R0,R9 \ 00000258 ........ _BLF LogStatusChange2,??LogStatusChange2??rA 3791 3792 ChangeContactPos(t); \ 0000025C 0900A0E1 MOV R0,R9 \ 00000260 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 3793 // RecountMenu(oldt,1); 3794 3795 if(isLogStatusChange)//isLogStatusChange // by kluchnik 05.04.08 \ 00000264 ........ LDR R0,??DataTable155 ;; isLogStatusChange \ 00000268 000090E5 LDR R0,[R0, #+0] \ 0000026C 000050E3 CMP R0,#+0 \ 00000270 2B00000A BEQ ??ProcessPacket_20 3796 { 3797 char *s=GetStatusByIconIndex(GetIconIndex(t)); \ 00000274 0900A0E1 MOV R0,R9 \ 00000278 ........ BL GetIconIndex \ 0000027C ........ BL GetStatusByIconIndex \ 00000280 00008DE5 STR R0,[SP, #+0] 3798 FreeXText2(t); \ 00000284 0900A0E1 MOV R0,R9 \ 00000288 ........ BL FreeXText2 3799 TTime time; 3800 GetDateTime(NULL,&time); \ 0000028C 0C108DE2 ADD R1,SP,#+12 \ 00000290 0000A0E3 MOV R0,#+0 \ 00000294 B40000EF SWI +180 3801 char *txt=malloc(64); \ 00000298 4000A0E3 MOV R0,#+64 \ 0000029C 140000EF SWI +20 \ 000002A0 00B0A0E1 MOV R11,R0 3802 sprintf(txt," %s: %02d:%02d:%02d",s,time.hour,time.min,time.sec); \ 000002A4 0E00DDE5 LDRB R0,[SP, #+14] \ 000002A8 CA1F85E2 ADD R1,R5,#+808 \ 000002AC 01002DE9 PUSH {R0} \ 000002B0 1100DDE5 LDRB R0,[SP, #+17] \ 000002B4 01002DE9 PUSH {R0} \ 000002B8 1430DDE5 LDRB R3,[SP, #+20] \ 000002BC 08209DE5 LDR R2,[SP, #+8] \ 000002C0 0B00A0E1 MOV R0,R11 \ 000002C4 160000EF SWI +22 3803 t->xtext2=malloc(64); \ 000002C8 4000A0E3 MOV R0,#+64 \ 000002CC 140000EF SWI +20 \ 000002D0 B80089E5 STR R0,[R9, #+184] 3804 snprintf(t->xtext2,64,txt); \ 000002D4 0B20A0E1 MOV R2,R11 \ 000002D8 4010A0E3 MOV R1,#+64 \ 000002DC 1B0100EF SWI +283 3805 AddStringToLog(t,0x03,txt,"Status change",0xFFFFFFFF, 0); \ 000002E0 0800A0E1 MOV R0,R8 \ 000002E4 01002DE9 PUSH {R0} \ 000002E8 CF3F85E2 ADD R3,R5,#+828 \ 000002EC 0B20A0E1 MOV R2,R11 \ 000002F0 0310A0E3 MOV R1,#+3 \ 000002F4 0000E0E1 MVN R0,R0 \ 000002F8 01002DE9 PUSH {R0} \ 000002FC 0900A0E1 MOV R0,R9 \ 00000300 ........ BL AddStringToLog 3806 ReqAddMsgToChat(t); \ 00000304 0900A0E1 MOV R0,R9 \ 00000308 ........ BL ReqAddMsgToChat 3807 RecountMenu(NULL, 0); \ 0000030C 0810A0E1 MOV R1,R8 \ 00000310 0100A0E1 MOV R0,R1 \ 00000314 ........ BL RecountMenu 3808 mfree(txt); \ 00000318 0B00A0E1 MOV R0,R11 \ 0000031C 150000EF SWI +21 \ 00000320 10D08DE2 ADD SP,SP,#+16 3809 } 3810 3811 if ((t->state!=0xFFFF)&&(i==0xFFFF))//Звук \ ??ProcessPacket_20: \ 00000324 B405D9E1 LDRH R0,[R9, #+84] \ 00000328 08B89FE5 LDR R11,??ProcessPacket_1+0xC ;; PopupOnlineString \ 0000032C A020A0E3 MOV R2,#+160 \ 00000330 782D82E3 ORR R2,R2,#0x1E00 \ 00000334 072082E0 ADD R2,R2,R7 \ 00000338 08208DE5 STR R2,[SP, #+8] \ 0000033C 0A0050E1 CMP R0,R10 \ 00000340 5800000A BEQ ??ProcessPacket_21 \ 00000344 04109DE5 LDR R1,[SP, #+4] \ 00000348 0A0051E1 CMP R1,R10 \ 0000034C 5500001A BNE ??ProcessPacket_21 3812 { 3813 if(Is_INC_On && (PopupShow==2 || PopupShow==3)) \ 00000350 E40297E5 LDR R0,[R7, #+740] \ 00000354 000050E3 CMP R0,#+0 \ 00000358 1B00000A BEQ ??ProcessPacket_22 \ 0000035C D8079FE5 LDR R0,??ProcessPacket_1+0x10 ;; PopupShow \ 00000360 000090E5 LDR R0,[R0, #+0] \ 00000364 020050E3 CMP R0,#+2 \ 00000368 03005013 CMPNE R0,#+3 \ 0000036C 1600001A BNE ??ProcessPacket_22 3814 { 3815 INC_show2=20; \ 00000370 1400A0E3 MOV R0,#+20 \ 00000374 600487E5 STR R0,[R7, #+1120] 3816 INC_show3=0; \ 00000378 6C8487E5 STR R8,[R7, #+1132] 3817 3818 pp_icon=GetIconIndex(t); \ 0000037C 0900A0E1 MOV R0,R9 \ 00000380 ........ BL GetIconIndex \ 00000384 640487E5 STR R0,[R7, #+1124] 3819 pp_xicon=t->xstate; \ 00000388 B605D9E1 LDRH R0,[R9, #+86] 3820 3821 sprintf(onContact,PopupOnlineString,t->name); \ 0000038C 142089E2 ADD R2,R9,#+20 \ 00000390 0B10A0E1 MOV R1,R11 \ 00000394 680487E5 STR R0,[R7, #+1128] \ 00000398 8B0D87E2 ADD R0,R7,#+8896 \ 0000039C 160000EF SWI +22 3822 sprintf(on_off_buf,"[%s: %s]\n",t->xtext2+1,t->name); \ 000003A0 B80099E5 LDR R0,[R9, #+184] \ 000003A4 143089E2 ADD R3,R9,#+20 \ 000003A8 012080E2 ADD R2,R0,#+1 \ 000003AC 08009DE5 LDR R0,[SP, #+8] \ 000003B0 D31F85E2 ADD R1,R5,#+844 \ 000003B4 160000EF SWI +22 3823 on_off_timer=ON_OFF_TIME; \ 000003B8 80079FE5 LDR R0,??ProcessPacket_1+0x14 ;; ON_OFF_TIME \ 000003BC 000090E5 LDR R0,[R0, #+0] \ 000003C0 2C0487E5 STR R0,[R7, #+1068] 3824 // UpdateCLheader(); 3825 show_on_contact(); \ 000003C4 ........ BL show_on_contact \ 000003C8 010000EA B ??ProcessPacket_23 3826 } 3827 else 3828 GBS_DelTimer(&incs2);//на всяк \ ??ProcessPacket_22: \ 000003CC 8C0D87E2 ADD R0,R7,#+8960 \ 000003D0 8C0100EF SWI +396 3829 if(!extended_sounds) \ ??ProcessPacket_23: \ 000003D4 ........ LDR R0,??DataTable156 ;; extended_sounds \ 000003D8 64A79FE5 LDR R10,??ProcessPacket_1+0x18 ;; sndGlobal \ 000003DC 000090E5 LDR R0,[R0, #+0] \ 000003E0 000050E3 CMP R0,#+0 \ 000003E4 0200001A BNE ??ProcessPacket_24 3830 { 3831 Play(sndGlobal); \ 000003E8 0A00A0E1 MOV R0,R10 \ 000003EC ........ BL Play \ 000003F0 460000EA B ??ProcessPacket_25 3832 } 3833 else 3834 { 3835 FSTATS stat; 3836 int fsize; 3837 unsigned int ul = 0; \ ??ProcessPacket_24: \ 000003F4 14808DE5 STR R8,[SP, #+20] 3838 uins=t->uin; \ 000003F8 0C0099E5 LDR R0,[R9, #+12] \ 000003FC BC0287E5 STR R0,[R7, #+700] 3839 char ext[4]; 3840 // __root const CFG_CBOX_ITEM cfgcbox18_3_2[2]={"Mp3","Wav","Amr"}; 3841 switch(ext_type_sounds) \ 00000400 ........ LDR R0,??DataTable157 ;; ext_type_sounds \ 00000404 000090E5 LDR R0,[R0, #+0] \ 00000408 010050E2 SUBS R0,R0,#+1 \ 0000040C 0300000A BEQ ??ProcessPacket_26 \ 00000410 010050E2 SUBS R0,R0,#+1 \ 00000414 3C00A003 MOVEQ R0,#+60 3842 { 3843 case 0: sprintf(ext,percent_s,mp3); break; \ 00000418 3400A013 MOVNE R0,#+52 \ 0000041C 000000EA B ??ProcessPacket_27 3844 case 1: sprintf(ext,percent_s,wav); break; \ ??ProcessPacket_26: \ 00000420 3800A0E3 MOV R0,#+56 \ ??ProcessPacket_27: \ 00000424 800D80E3 ORR R0,R0,#0x2000 \ 00000428 072080E0 ADD R2,R0,R7 \ 0000042C 081085E2 ADD R1,R5,#+8 \ 00000430 0D00A0E1 MOV R0,SP \ 00000434 160000EF SWI +22 3845 case 2: sprintf(ext,percent_s,amr); break; 3846 default : sprintf(ext,percent_s,mp3); break; 3847 } 3848 sprintf(talk_sound, sds, sndGlobal2, uins,ext); \ 00000438 08279FE5 LDR R2,??ProcessPacket_1+0x1C ;; sndGlobal2 \ 0000043C 0D00A0E1 MOV R0,SP \ 00000440 01002DE9 PUSH {R0} \ 00000444 BC3297E5 LDR R3,[R7, #+700] \ 00000448 3850A0E3 MOV R5,#+56 \ 0000044C 705E85E3 ORR R5,R5,#0x700 \ 00000450 2C00A0E3 MOV R0,#+44 \ 00000454 800D80E3 ORR R0,R0,#0x2000 \ 00000458 071080E0 ADD R1,R0,R7 \ 0000045C 070085E0 ADD R0,R5,R7 \ 00000460 160000EF SWI +22 3849 GetFileStats(talk_sound,&stat,&ul); \ 00000464 18208DE2 ADD R2,SP,#+24 \ 00000468 471F8DE2 ADD R1,SP,#+284 \ 0000046C 070085E0 ADD R0,R5,R7 \ 00000470 840000EF SWI +132 3850 fsize=stat.size; 3851 if(fsize>0) \ 00000474 20019DE5 LDR R0,[SP, #+288] \ 00000478 04D08DE2 ADD SP,SP,#+4 \ 0000047C 010050E3 CMP R0,#+1 3852 Play(talk_sound); \ 00000480 070085A0 ADDGE R0,R5,R7 3853 else 3854 Play(sndGlobal); \ 00000484 0A00A0B1 MOVLT R0,R10 \ 00000488 ........ BL Play 3855 t->isvibra=1; \ 0000048C 686089E5 STR R6,[R9, #+104] 3856 t->issound=1; \ 00000490 6C6089E5 STR R6,[R9, #+108] 3857 t->isShowXst=Show_XTX; \ 00000494 B40397E5 LDR R0,[R7, #+948] \ 00000498 7C0089E5 STR R0,[R9, #+124] 3858 #ifdef kluchnik 3859 t->isLoadHistory=1; \ 0000049C 606089E5 STR R6,[R9, #+96] 3860 #endif 3861 t->signals=1; \ 000004A0 806089E5 STR R6,[R9, #+128] \ 000004A4 190000EA B ??ProcessPacket_25 3862 } 3863 } 3864 3865 if ((i!=0xFFFF)&&(t->state==0xFFFF))//Звук \ ??ProcessPacket_21: \ 000004A8 04109DE5 LDR R1,[SP, #+4] \ 000004AC 0A0051E1 CMP R1,R10 \ 000004B0 1600000A BEQ ??ProcessPacket_25 \ 000004B4 0A0050E1 CMP R0,R10 \ 000004B8 1400001A BNE ??ProcessPacket_25 3866 { 3867 Play(sndSrvMsg); \ 000004BC 88069FE5 LDR R0,??ProcessPacket_1+0x20 ;; sndSrvMsg \ 000004C0 ........ BL Play 3868 3869 INC_show3=20; \ 000004C4 1400A0E3 MOV R0,#+20 \ 000004C8 6C0487E5 STR R0,[R7, #+1132] 3870 sprintf(OffContact,PopupOnlineString,t->name); \ 000004CC 142089E2 ADD R2,R9,#+20 \ 000004D0 0B10A0E1 MOV R1,R11 \ 000004D4 1000A0E3 MOV R0,#+16 \ 000004D8 8C0D80E3 ORR R0,R0,#0x2300 \ 000004DC 070080E0 ADD R0,R0,R7 \ 000004E0 160000EF SWI +22 3871 show_off_contact(); \ 000004E4 ........ BL show_off_contact 3872 3873 //if(TIME_OR_MSG==2 || TIME_OR_MSG==3 | TIME_OR_MSG==4) 3874 Get_Online_total(); \ 000004E8 ........ BL Get_Online_total 3875 3876 sprintf(on_off_buf,"[%s: %s]\n",t->xtext2+1,t->name); \ 000004EC B80099E5 LDR R0,[R9, #+184] \ 000004F0 143089E2 ADD R3,R9,#+20 \ 000004F4 012080E2 ADD R2,R0,#+1 \ 000004F8 08009DE5 LDR R0,[SP, #+8] \ 000004FC D31F85E2 ADD R1,R5,#+844 \ 00000500 160000EF SWI +22 3877 on_off_timer=ON_OFF_TIME; \ 00000504 34069FE5 LDR R0,??ProcessPacket_1+0x14 ;; ON_OFF_TIME \ 00000508 000090E5 LDR R0,[R0, #+0] \ 0000050C 2C0487E5 STR R0,[R7, #+1068] 3878 // UpdateCLheader(); 3879 } 3880 3881 if (edchat_id) \ ??ProcessPacket_25: \ 00000510 240497E5 LDR R0,[R7, #+1060] \ 00000514 000050E3 CMP R0,#+0 \ 00000518 7F01000A BEQ ??ProcessPacket_2 3882 { 3883 void *data=FindGUIbyId(edchat_id,NULL); \ 0000051C 240497E5 LDR R0,[R7, #+1060] \ 00000520 0010A0E3 MOV R1,#+0 \ 00000524 090200EF SWI +521 3884 { 3885 EDCHAT_STRUCT *ed_struct; 3886 ed_struct=EDIT_GetUserPointer(data); \ 00000528 DF0100EF SWI +479 3887 if (ed_struct) \ 0000052C 000050E3 CMP R0,#+0 \ 00000530 7901000A BEQ ??ProcessPacket_2 3888 { 3889 if (ed_struct->ed_contact==t) \ 00000534 000090E5 LDR R0,[R0, #+0] \ 00000538 090050E1 CMP R0,R9 \ 0000053C 7601001A BNE ??ProcessPacket_2 3890 { 3891 DirectRedrawGUI_ID(edchat_id); \ 00000540 240497E5 LDR R0,[R7, #+1060] \ 00000544 400100EF SWI +320 \ 00000548 730100EA B ??ProcessPacket_2 3892 } 3893 } 3894 } 3895 } 3896 } 3897 break; 3898 case T_RECVMSG: 3899 NEW_MSG=1; \ ??ProcessPacket_28: \ 0000054C 506487E5 STR R6,[R7, #+1104] 3900 t=FindContactByUin(p->pkt.uin); \ 00000550 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000554 0090B0E1 MOVS R9,R0 3901 if (!t)//если не в списке \ 00000558 0A00001A BNE ??ProcessPacket_29 3902 { 3903 sprintf(s,percent_d,p->pkt.uin); \ 0000055C 002094E5 LDR R2,[R4, #+0] \ 00000560 0B1085E2 ADD R1,R5,#+11 \ 00000564 18008DE2 ADD R0,SP,#+24 \ 00000568 160000EF SWI +22 3904 t=AddContact(p->pkt.uin,s,GROUP_CACHE,0); \ 0000056C 202497E5 LDR R2,[R7, #+1056] \ 00000570 000094E5 LDR R0,[R4, #+0] \ 00000574 0030A0E3 MOV R3,#+0 \ 00000578 18108DE2 ADD R1,SP,#+24 \ 0000057C ........ _BLF AddContact,??AddContact??rA \ 00000580 0090A0E1 MOV R9,R0 3905 CreateCLFile(); \ 00000584 ........ BL CreateCLFile 3906 } 3907 #ifdef kluchnik 3908 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_30: \ 000005B4 3010A0E3 MOV R1,#+48 \ 000005B8 841D81E3 ORR R1,R1,#0x2100 \ 000005BC 071081E0 ADD R1,R1,R7 \ 000005C0 00108DE5 STR R1,[SP, #+0] \ 000005C4 1400D9E5 LDRB R0,[R9, #+20] \ 000005C8 230050E3 CMP R0,#+35 \ 000005CC 1700001A BNE ??ProcessPacket_31 3915 { 3916 //Если это конференция, патчим имя 3917 char *s=strchr(p->data,'>'); \ 000005D0 3E10A0E3 MOV R1,#+62 \ 000005D4 080084E2 ADD R0,R4,#+8 \ 000005D8 180000EF SWI +24 3918 //Если нашли символ > и после него пробел и ник короче 16 символов 3919 if (s) \ 000005DC 000050E3 CMP R0,#+0 \ 000005E0 1200000A BEQ ??ProcessPacket_31 3920 { 3921 if ((s[1]==' ')&&((s-p->data)<16)) \ 000005E4 0110D0E5 LDRB R1,[R0, #+1] \ 000005E8 200051E3 CMP R1,#+32 \ 000005EC 0F00001A BNE ??ProcessPacket_31 \ 000005F0 081084E2 ADD R1,R4,#+8 \ 000005F4 011040E0 SUB R1,R0,R1 \ 000005F8 100051E3 CMP R1,#+16 \ 000005FC 0B0000AA BGE ??ProcessPacket_31 3922 { 3923 *s=0; //Режем строку \ 00000600 0080C0E5 STRB R8,[R0, #+0] 3924 AddStringToLog(t,0x02,s+2,p->data,0xFFFFFFFF,1); //Добавляем имя из текста сообщения \ 00000604 0110A0E3 MOV R1,#+1 \ 00000608 02002DE9 PUSH {R1} \ 0000060C 083084E2 ADD R3,R4,#+8 \ 00000610 022080E2 ADD R2,R0,#+2 \ 00000614 0900A0E1 MOV R0,R9 \ 00000618 001061E2 RSB R1,R1,#+0 \ 0000061C 02002DE9 PUSH {R1} \ 00000620 0B10A0E1 MOV R1,R11 \ 00000624 ........ BL AddStringToLog 3925 goto L1; \ 00000628 08D08DE2 ADD SP,SP,#+8 \ 0000062C 6D0000EA B ??ProcessPacket_32 3926 } 3927 } 3928 } 3929 3930 //=================== tas bus jautri ===================// 3931 3932 comanda=1; \ ??ProcessPacket_31: \ 00000630 586487E5 STR R6,[R7, #+1112] 3933 #ifdef DEBUG1 3934 comanda=1; 3935 3936 if(SHOW_ACTIVE) 3937 t->isactive=ACTIVE_TIME; 3938 if(VIBR_TYPE) 3939 vibra_count=2; 3940 else 3941 vibra_count=1; 3942 3943 start_vibra(); 3944 3945 #ifdef ELKA 3946 if(SLI_TYPE) SLI_Timer(); 3947 #endif 3948 if(Is_Double_Vibra_On) 3949 { 3950 Reminder_timer(); 3951 } 3952 3953 if (Is_ILU_On) 3954 IlluminationOn(ILL_DISP_RECV,ILL_KEYS_RECV,ILL_RECV_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 3955 #else//DEBUG 3956 CheckComand(p->data, t); \ 00000634 0910A0E1 MOV R1,R9 \ 00000638 10559FE5 LDR R5,??ProcessPacket_1+0x24 ;; ILL_RECV_TMR \ 0000063C 080084E2 ADD R0,R4,#+8 \ 00000640 ........ BL CheckComand \ 00000644 803099E5 LDR R3,[R9, #+128] \ 00000648 ........ LDR R0,??DataTable175 ;; automsgcount \ 0000064C ........ LDR R1,??DataTable160 ;; VIBR_TYPE \ 00000650 000053E3 CMP R3,#+0 \ 00000654 84309915 LDRNE R3,[R9, #+132] \ 00000658 5A2FA0E3 MOV R2,#+360 \ 0000065C 00005313 CMPNE R3,#+0 \ 00000660 0F00000A BEQ ??ProcessPacket_33 3957 if(t->signals && t->isaccess) 3958 { 3959 #ifdef NEWSGOLD1 3960 scrsTime=0; 3961 #endif 3962 if(SHOW_ACTIVE) \ 00000664 ........ LDR R3,??DataTable162 ;; SHOW_ACTIVE \ 00000668 003093E5 LDR R3,[R3, #+0] \ 0000066C 000053E3 CMP R3,#+0 3963 t->isactive=ACTIVE_TIME; \ 00000670 AC208915 STRNE R2,[R9, #+172] 3964 if(t->isvibra) \ 00000674 682099E5 LDR R2,[R9, #+104] \ 00000678 000052E3 CMP R2,#+0 \ 0000067C 2200000A BEQ ??ProcessPacket_34 3965 { 3966 if(VIBR_TYPE) \ 00000680 001091E5 LDR R1,[R1, #+0] \ 00000684 000051E3 CMP R1,#+0 3967 vibra_count=2; \ 00000688 E4B38715 STRNE R11,[R7, #+996] 3968 else 3969 vibra_count=1; \ 0000068C E4638705 STREQ R6,[R7, #+996] 3970 if(t->automsgcountisIndividSet) \ ??ProcessPacket_33: \ 000006A4 ........ LDR R3,??DataTable162 ;; SHOW_ACTIVE \ 000006A8 64C099E5 LDR R12,[R9, #+100] \ 000006AC 003093E5 LDR R3,[R3, #+0] \ 000006B0 00005CE3 CMP R12,#+0 \ 000006B4 0900000A BEQ ??ProcessPacket_36 3987 { 3988 #ifdef NEWSGOLD1 3989 scrsTime=0; 3990 #endif 3991 if(SHOW_ACTIVE) \ 000006B8 000053E3 CMP R3,#+0 3992 t->isactive=ACTIVE_TIME; \ 000006BC AC208915 STRNE R2,[R9, #+172] 3993 if(t->isvibra) \ 000006C0 680099E5 LDR R0,[R9, #+104] \ 000006C4 000050E3 CMP R0,#+0 \ 000006C8 0F00000A BEQ ??ProcessPacket_34 3994 { 3995 if(VIBR_TYPE) \ 000006CC 000091E5 LDR R0,[R1, #+0] \ 000006D0 000050E3 CMP R0,#+0 3996 vibra_count=2; \ 000006D4 E4B38715 STRNE R11,[R7, #+996] 3997 else 3998 vibra_count=1; \ 000006D8 E4638705 STREQ R6,[R7, #+996] 3999 if(t->automsgcount < automsgcount && away_m) 4000 start_vibra(); \ 000006DC 090000EA B ??ProcessPacket_35 4001 else 4002 start_vibra(); 4003 } 4004 #ifdef ELKA 4005 if(SLI_TYPE) 4006 SLI_Timer(); 4007 #endif 4008 if(Is_Double_Vibra_On) 4009 { 4010 Reminder_timer(); 4011 } 4012 4013 if (Is_ILU_On) 4014 IlluminationOn(ILL_DISP_RECV,ILL_KEYS_RECV,ILL_RECV_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 4015 } 4016 else 4017 { 4018 #ifdef NEWSGOLD1 4019 scrsTime=0; 4020 #endif 4021 if(SHOW_ACTIVE) \ ??ProcessPacket_36: \ 000006E0 000053E3 CMP R3,#+0 4022 t->isactive=ACTIVE_TIME; \ 000006E4 AC208915 STRNE R2,[R9, #+172] 4023 if(VIBR_TYPE) \ 000006E8 001091E5 LDR R1,[R1, #+0] \ 000006EC 000051E3 CMP R1,#+0 4024 vibra_count=2; \ 000006F0 E4B38715 STRNE R11,[R7, #+996] 4025 else 4026 vibra_count=1; \ 000006F4 E4638705 STREQ R6,[R7, #+996] 4027 if(t->automsgcount >= automsgcount) vibra_count=0; \ 000006F8 881099E5 LDR R1,[R9, #+136] \ 000006FC 000090E5 LDR R0,[R0, #+0] \ 00000700 000051E1 CMP R1,R0 \ 00000704 E4838725 STRCS R8,[R7, #+996] 4028 start_vibra(); \ ??ProcessPacket_35: \ 00000708 ........ BL start_vibra 4029 #ifdef ELKA 4030 if(SLI_TYPE) 4031 SLI_Timer(); \ ??ProcessPacket_34: \ 0000070C ........ BL SLI_Timer 4032 #endif 4033 if(Is_Double_Vibra_On) \ 00000710 EC0297E5 LDR R0,[R7, #+748] \ 00000714 000050E3 CMP R0,#+0 \ 00000718 0000000A BEQ ??ProcessPacket_37 4034 { 4035 Reminder_timer(); \ 0000071C ........ BL Reminder_timer 4036 } 4037 4038 if (Is_ILU_On) \ ??ProcessPacket_37: \ 00000720 E80297E5 LDR R0,[R7, #+744] \ 00000724 000050E3 CMP R0,#+0 \ 00000728 0600000A BEQ ??ProcessPacket_38 4039 IlluminationOn(ILL_DISP_RECV,ILL_KEYS_RECV,ILL_RECV_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 \ 0000072C 20049FE5 LDR R0,??ProcessPacket_1+0x28 ;; ILL_KEYS_RECV \ 00000730 00309AE5 LDR R3,[R10, #+0] \ 00000734 001090E5 LDR R1,[R0, #+0] \ 00000738 18049FE5 LDR R0,??ProcessPacket_1+0x2C ;; ILL_DISP_RECV \ 0000073C 002095E5 LDR R2,[R5, #+0] \ 00000740 000090E5 LDR R0,[R0, #+0] \ 00000744 ........ BL IlluminationOn 4040 } 4041 4042 #endif//DEBUG 4043 if(comanda==1) \ ??ProcessPacket_38: \ 00000748 580497E5 LDR R0,[R7, #+1112] \ 0000074C 010050E3 CMP R0,#+1 \ 00000750 2400001A BNE ??ProcessPacket_32 4044 { 4045 AddStringToLog(t,0x02,p->data,t->name,0xFFFFFFFF,1); \ 00000754 01002DE9 PUSH {R0} \ 00000758 143089E2 ADD R3,R9,#+20 \ 0000075C 082084E2 ADD R2,R4,#+8 \ 00000760 0210A0E3 MOV R1,#+2 \ 00000764 000066E2 RSB R0,R6,#+0 \ 00000768 01002DE9 PUSH {R0} \ 0000076C 0900A0E1 MOV R0,R9 \ 00000770 ........ BL AddStringToLog 4046 main_count++; \ 00000774 D40297E5 LDR R0,[R7, #+724] \ 00000778 010080E2 ADD R0,R0,#+1 \ 0000077C D40287E5 STR R0,[R7, #+724] 4047 if(Is_INC_On && (PopupShow==1 || PopupShow==3)) \ 00000780 E40297E5 LDR R0,[R7, #+740] \ 00000784 08D08DE2 ADD SP,SP,#+8 \ 00000788 000050E3 CMP R0,#+0 \ 0000078C 1300000A BEQ ??ProcessPacket_39 \ 00000790 A4039FE5 LDR R0,??ProcessPacket_1+0x10 ;; PopupShow \ 00000794 000090E5 LDR R0,[R0, #+0] \ 00000798 010050E3 CMP R0,#+1 \ 0000079C 03005013 CMPNE R0,#+3 \ 000007A0 0E00001A BNE ??ProcessPacket_39 4048 { 4049 sprintf(show_nick,PopupMsgString,t->name); \ 000007A4 B0139FE5 LDR R1,??ProcessPacket_1+0x30 ;; PopupMsgString \ 000007A8 142089E2 ADD R2,R9,#+20 \ 000007AC A000A0E3 MOV R0,#+160 \ 000007B0 880D80E3 ORR R0,R0,#0x2200 \ 000007B4 070080E0 ADD R0,R0,R7 \ 000007B8 160000EF SWI +22 4050 if(!IsIdleUiOnTop()&&(!saver_on)) \ 000007BC C50000EF SWI +197 \ 000007C0 000050E3 CMP R0,#+0 \ 000007C4 C0029705 LDREQ R0,[R7, #+704] \ 000007C8 00005003 CMPEQ R0,#+0 \ 000007CC 0500001A BNE ??ProcessPacket_32 4051 { 4052 INC_show=20; \ 000007D0 1400A0E3 MOV R0,#+20 \ 000007D4 5C0487E5 STR R0,[R7, #+1116] 4053 show_pp_sender(); \ 000007D8 ........ BL show_pp_sender \ 000007DC 010000EA B ??ProcessPacket_32 4054 } 4055 } 4056 else 4057 GBS_DelTimer(&develop); \ ??ProcessPacket_39: \ 000007E0 00009DE5 LDR R0,[SP, #+0] \ 000007E4 8C0100EF SWI +396 4058 #ifndef DEBUG 4059 main_msg_timer2=main_msg_timer;//при получении сообщения восстанавливаем таймер 4060 if(Is_SMARTCPU_On) 4061 AddToMain(t->name,p->data); 4062 #endif 4063 } 4064 L1: 4065 //Разворачиваем группу, в которой пришло сообщение 4066 { 4067 CLIST *g=FindGroupByID(t->group); \ ??ProcessPacket_32: \ 000007E8 100099E5 LDR R0,[R9, #+16] \ 000007EC ........ _BLF FindGroupByID,??FindGroupByID??rA 4068 if (g) \ 000007F0 000050E3 CMP R0,#+0 4069 { 4070 if (g->state) \ 000007F4 B415D011 LDRHNE R1,[R0, #+84] \ 000007F8 00005113 CMPNE R1,#+0 4071 { 4072 g->state=0; \ 000007FC B485C011 STRHNE R8,[R0, #+84] 4073 } 4074 } 4075 } 4076 4077 ReqAddMsgToChat(t); \ 00000800 0900A0E1 MOV R0,R9 \ 00000804 ........ BL ReqAddMsgToChat 4078 RecountMenu(t,1); \ 00000808 0110A0E3 MOV R1,#+1 \ 0000080C 0900A0E1 MOV R0,R9 \ 00000810 ........ BL RecountMenu 4079 4080 switch (DEVELOP_IF) \ 00000814 44039FE5 LDR R0,??ProcessPacket_1+0x34 ;; DEVELOP_IF \ 00000818 000090E5 LDR R0,[R0, #+0] \ 0000081C 000050E3 CMP R0,#+0 \ 00000820 0400000A BEQ ??ProcessPacket_40 \ 00000824 010050E2 SUBS R0,R0,#+1 \ 00000828 0B00000A BEQ ??ProcessPacket_41 \ 0000082C 020050E2 SUBS R0,R0,#+2 \ 00000830 1300000A BEQ ??ProcessPacket_42 \ 00000834 B80000EA B ??ProcessPacket_2 4081 { 4082 case 0: 4083 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)) to_develop(); \ ??ProcessPacket_40: \ 00000838 068100EF SWI +33030 \ 0000083C 080090E5 LDR R0,[R0, #+8] \ 00000840 F41297E5 LDR R1,[R7, #+756] \ 00000844 0C0090E5 LDR R0,[R0, #+12] \ 00000848 0C0090E5 LDR R0,[R0, #+12] \ 0000084C 010050E1 CMP R0,R1 \ ??ProcessPacket_43: \ 00000850 B100000A BEQ ??ProcessPacket_2 \ 00000854 ........ BL to_develop \ 00000858 AF0000EA B ??ProcessPacket_2 4084 break; 4085 case 1: 4086 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)&&(IsUnlocked())) to_develop(); \ ??ProcessPacket_41: \ 0000085C 068100EF SWI +33030 \ 00000860 080090E5 LDR R0,[R0, #+8] \ 00000864 F41297E5 LDR R1,[R7, #+756] \ 00000868 0C0090E5 LDR R0,[R0, #+12] \ 0000086C 0C0090E5 LDR R0,[R0, #+12] \ 00000870 010050E1 CMP R0,R1 \ 00000874 A800000A BEQ ??ProcessPacket_2 \ 00000878 430000EF SWI +67 \ 0000087C 000050E3 CMP R0,#+0 \ 00000880 F2FFFFEA B ??ProcessPacket_43 4087 break; 4088 case 2: 4089 break; 4090 case 3: 4091 GBS_DelTimer(&develop); \ ??ProcessPacket_42: \ 00000884 00009DE5 LDR R0,[SP, #+0] \ 00000888 8C0100EF SWI +396 4092 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id)&&(!IsUnlocked())) begin_to_develop(); \ 0000088C 068100EF SWI +33030 \ 00000890 080090E5 LDR R0,[R0, #+8] \ 00000894 F41297E5 LDR R1,[R7, #+756] \ 00000898 0C0090E5 LDR R0,[R0, #+12] \ 0000089C 0C0090E5 LDR R0,[R0, #+12] \ 000008A0 010050E1 CMP R0,R1 \ 000008A4 9C00000A BEQ ??ProcessPacket_2 \ 000008A8 430000EF SWI +67 \ 000008AC 000050E3 CMP R0,#+0 \ 000008B0 9900001A BNE ??ProcessPacket_2 \ 000008B4 ........ BL begin_to_develop \ 000008B8 970000EA B ??ProcessPacket_2 4093 break; 4094 } 4095 break; 4096 case T_SRV_ACK: 4097 case T_CLIENT_ACK: 4098 q=FindContactLOGQByAck(p); \ ??ProcessPacket_44: \ 000008BC 0400A0E1 MOV R0,R4 \ 000008C0 ........ BL FindContactLOGQByAck 4099 if (q) \ 000008C4 000050E3 CMP R0,#+0 \ 000008C8 9300000A BEQ ??ProcessPacket_2 4100 { 4101 q->acked=p->pkt.type==T_SRV_ACK?1:2; \ 000008CC B410D4E1 LDRH R1,[R4, #+4] \ 000008D0 100051E3 CMP R1,#+16 \ 000008D4 0110A003 MOVEQ R1,#+1 \ 000008D8 0210A013 MOVNE R1,#+2 \ 000008DC 041080E5 STR R1,[R0, #+4] 4102 t=FindContactByUin(p->pkt.uin); \ 000008E0 000094E5 LDR R0,[R4, #+0] \ 000008E4 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 000008E8 0090A0E1 MOV R9,R0 4103 if (edchat_id) \ 000008EC 240497E5 LDR R0,[R7, #+1060] \ 000008F0 000050E3 CMP R0,#+0 \ 000008F4 8800000A BEQ ??ProcessPacket_2 4104 { 4105 void *data=FindGUIbyId(edchat_id,NULL); \ 000008F8 240497E5 LDR R0,[R7, #+1060] \ 000008FC 0010A0E3 MOV R1,#+0 \ 00000900 090200EF SWI +521 \ 00000904 0050B0E1 MOVS R5,R0 4106 if (data) \ 00000908 8300000A BEQ ??ProcessPacket_2 4107 { 4108 EDCHAT_STRUCT *ed_struct; 4109 ed_struct=EDIT_GetUserPointer(data); \ 0000090C DF0100EF SWI +479 4110 if (ed_struct) \ 00000910 000050E3 CMP R0,#+0 \ 00000914 8000000A BEQ ??ProcessPacket_2 4111 { 4112 if (ed_struct->ed_contact==t) \ 00000918 000090E5 LDR R0,[R0, #+0] \ 0000091C 090050E1 CMP R0,R9 \ 00000920 7D00001A BNE ??ProcessPacket_2 4113 { 4114 if (EDIT_IsBusy(data)) \ 00000924 0500A0E1 MOV R0,R5 \ 00000928 1C0200EF SWI +540 \ 0000092C 000050E3 CMP R0,#+0 \ 00000930 0300000A BEQ ??ProcessPacket_45 4115 { 4116 t->req_drawack=1; \ 00000934 9C6089E5 STR R6,[R9, #+156] 4117 time_to_stop_t9=3; \ 00000938 0300A0E3 MOV R0,#+3 \ 0000093C 540487E5 STR R0,[R7, #+1108] \ 00000940 750000EA B ??ProcessPacket_2 4118 } 4119 else { 4120 DrawAck(data); \ ??ProcessPacket_45: \ 00000944 0500A0E1 MOV R0,R5 \ 00000948 ........ BL DrawAck 4121 if (p->pkt.type==T_SRV_ACK) \ 0000094C B400D4E1 LDRH R0,[R4, #+4] \ 00000950 100050E3 CMP R0,#+16 \ 00000954 7000001A BNE ??ProcessPacket_2 4122 IlluminationOn(ILL_DISP_SEND,ILL_KEYS_SEND,ILL_SEND_TMR,ILL_RECV_FADE); //Illumination by BoBa 19.04.2007 \ 00000958 04029FE5 LDR R0,??ProcessPacket_1+0x38 ;; ILL_SEND_TMR \ 0000095C 00309AE5 LDR R3,[R10, #+0] \ 00000960 002090E5 LDR R2,[R0, #+0] \ 00000964 FC019FE5 LDR R0,??ProcessPacket_1+0x3C ;; ILL_KEYS_SEND \ 00000968 001090E5 LDR R1,[R0, #+0] \ 0000096C F8019FE5 LDR R0,??ProcessPacket_1+0x40 ;; ILL_DISP_SEND \ 00000970 000090E5 LDR R0,[R0, #+0] \ 00000974 ........ BL IlluminationOn \ 00000978 670000EA B ??ProcessPacket_2 4123 } 4124 } 4125 } 4126 } 4127 } 4128 } 4129 break; 4130 case T_XTEXT_ACK: 4131 t=FindContactByUin(p->pkt.uin); \ ??ProcessPacket_46: \ 0000097C ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000980 0090B0E1 MOVS R9,R0 4132 if (t) \ 00000984 6400000A BEQ ??ProcessPacket_2 4133 { 4134 int i; 4135 int j; 4136 // char ss[256]; 4137 // TTime tm; 4138 FreeXText(t); \ 00000988 ........ _BLF FreeXText,??FreeXText??rA 4139 i=p->pkt.data_len; \ 0000098C B660D4E1 LDRH R6,[R4, #+6] 4140 memcpy(t->xtext=malloc(i),p->data,i); \ 00000990 0600A0E1 MOV R0,R6 \ 00000994 140000EF SWI +20 \ 00000998 B40089E5 STR R0,[R9, #+180] \ 0000099C 0620A0E1 MOV R2,R6 \ 000009A0 081084E2 ADD R1,R4,#+8 \ 000009A4 1E0100EF SWI +286 4141 // GetDateTime(0,&tm); 4142 // snprintf(ss,i+4,"%02d:%02d:%02d %s",tm.hour,tm.min,tm.sec,p->data); 4143 // memcpy(t->xtext=malloc(strlen(ss)),ss,strlen(ss)); 4144 4145 zeromem(s,256); \ 000009A8 401FA0E3 MOV R1,#+256 \ 000009AC 18008DE2 ADD R0,SP,#+24 \ 000009B0 1D0100EF SWI +285 4146 strcpy(s,t->name); \ 000009B4 141089E2 ADD R1,R9,#+20 \ 000009B8 18008DE2 ADD R0,SP,#+24 \ 000009BC 1A0000EF SWI +26 4147 strcat(s,":\n"); \ 000009C0 591F8FE2 ADR R1,??ProcessPacket_1 ;; ":\n" \ 000009C4 18008DE2 ADD R0,SP,#+24 \ 000009C8 170000EF SWI +23 4148 i=strlen(s); \ 000009CC 18008DE2 ADD R0,SP,#+24 \ 000009D0 1B0000EF SWI +27 4149 j=p->data[0]; \ 000009D4 0860D4E5 LDRB R6,[R4, #+8] \ 000009D8 0070A0E1 MOV R7,R0 4150 if (j>(255-i)) j=255-i; \ 000009DC FF0067E2 RSB R0,R7,#+255 \ 000009E0 060050E1 CMP R0,R6 \ 000009E4 0060A0B1 MOVLT R6,R0 4151 strncpy(s+i,p->data+1,j); \ 000009E8 0620A0E1 MOV R2,R6 \ 000009EC 091084E2 ADD R1,R4,#+9 \ 000009F0 18008DE2 ADD R0,SP,#+24 \ 000009F4 000087E0 ADD R0,R7,R0 \ 000009F8 160100EF SWI +278 4152 i+=j; \ 000009FC 070086E0 ADD R0,R6,R7 4153 if (i<255) \ 00000A00 FF0050E3 CMP R0,#+255 \ 00000A04 100000AA BGE ??ProcessPacket_47 4154 { 4155 s[i]='\n'; \ 00000A08 18108DE2 ADD R1,SP,#+24 \ 00000A0C 0A20A0E3 MOV R2,#+10 \ 00000A10 0120C0E7 STRB R2,[R0, +R1] 4156 i++; \ 00000A14 0810D4E5 LDRB R1,[R4, #+8] \ 00000A18 B620D4E1 LDRH R2,[R4, #+6] \ 00000A1C 010080E2 ADD R0,R0,#+1 4157 j=p->pkt.data_len-p->data[0]-1; 4158 if (j>(255-i)) j=255-i; 4159 strncpy(s+i,p->data+p->data[0]+1,j); \ 00000A20 18308DE2 ADD R3,SP,#+24 \ 00000A24 012042E0 SUB R2,R2,R1 \ 00000A28 016042E2 SUB R6,R2,#+1 \ 00000A2C FF2060E2 RSB R2,R0,#+255 \ 00000A30 060052E1 CMP R2,R6 \ 00000A34 0260A0B1 MOVLT R6,R2 \ 00000A38 0620A0E1 MOV R2,R6 \ 00000A3C 041081E0 ADD R1,R1,R4 \ 00000A40 091081E2 ADD R1,R1,#+9 \ 00000A44 030080E0 ADD R0,R0,R3 \ 00000A48 160100EF SWI +278 4160 } 4161 4162 zeromem(s,256); \ ??ProcessPacket_47: \ 00000A4C 401FA0E3 MOV R1,#+256 \ 00000A50 18008DE2 ADD R0,SP,#+24 \ 00000A54 1D0100EF SWI +285 4163 i=0; 4164 j=p->data[0]; \ 00000A58 0860D4E5 LDRB R6,[R4, #+8] 4165 if (j>(255-i)) j=255-i; 4166 strncpy(s,p->data+1,j); \ 00000A5C 091084E2 ADD R1,R4,#+9 \ 00000A60 18008DE2 ADD R0,SP,#+24 \ 00000A64 400F56E3 CMP R6,#+256 \ 00000A68 FF60A0A3 MOVGE R6,#+255 \ 00000A6C 0620A0E1 MOV R2,R6 \ 00000A70 160100EF SWI +278 4167 i+=j; 4168 if (i<255) \ 00000A74 FF0056E3 CMP R6,#+255 \ 00000A78 100000AA BGE ??ProcessPacket_48 4169 { 4170 s[i++]=13; \ 00000A7C 18108DE2 ADD R1,SP,#+24 \ 00000A80 0D20A0E3 MOV R2,#+13 \ 00000A84 0120C6E7 STRB R2,[R6, +R1] \ 00000A88 0810D4E5 LDRB R1,[R4, #+8] \ 00000A8C B620D4E1 LDRH R2,[R4, #+6] \ 00000A90 010086E2 ADD R0,R6,#+1 4171 j=p->pkt.data_len-p->data[0]-1; 4172 if (j>(255-i)) j=255-i; 4173 strncpy(s+i,p->data+p->data[0]+1,j); \ 00000A94 18308DE2 ADD R3,SP,#+24 \ 00000A98 012042E0 SUB R2,R2,R1 \ 00000A9C 016042E2 SUB R6,R2,#+1 \ 00000AA0 FF2060E2 RSB R2,R0,#+255 \ 00000AA4 060052E1 CMP R2,R6 \ 00000AA8 0260A0B1 MOVLT R6,R2 \ 00000AAC 0620A0E1 MOV R2,R6 \ 00000AB0 041081E0 ADD R1,R1,R4 \ 00000AB4 091081E2 ADD R1,R1,#+9 \ 00000AB8 030080E0 ADD R0,R0,R3 \ 00000ABC 160100EF SWI +278 4174 } 4175 4176 // GetDateTime(0,&tm); 4177 // sprintf(ss,"%02d:%02d:%02d %s",tm.hour,tm.min,tm.sec,s); 4178 AddStringToLog(t,0x03,s,x_status_change,0xFFFFFFFF,1); \ ??ProcessPacket_48: \ 00000AC0 0100A0E3 MOV R0,#+1 \ 00000AC4 01002DE9 PUSH {R0} \ 00000AC8 E03F85E2 ADD R3,R5,#+896 \ 00000ACC 0310A0E3 MOV R1,#+3 \ 00000AD0 000060E2 RSB R0,R0,#+0 \ 00000AD4 01002DE9 PUSH {R0} \ 00000AD8 20208DE2 ADD R2,SP,#+32 \ 00000ADC 0900A0E1 MOV R0,R9 \ 00000AE0 ........ BL AddStringToLog 4179 ReqAddMsgToChat(t); \ 00000AE4 0900A0E1 MOV R0,R9 \ 00000AE8 ........ BL ReqAddMsgToChat 4180 if (strlen(p->data)) // Если x-status не пустой \ 00000AEC 080084E2 ADD R0,R4,#+8 \ 00000AF0 1B0000EF SWI +27 \ 00000AF4 000050E3 CMP R0,#+0 \ 00000AF8 08D08DE2 ADD SP,SP,#+8 4181 RecountMenu(t, 1); \ 00000AFC 0110A013 MOVNE R1,#+1 \ 00000B00 0900A011 MOVNE R0,R9 \ 00000B04 73FDFF1A BNE ??ProcessPacket_9 4182 else 4183 RecountMenu(NULL, 0); \ 00000B08 0010A0E3 MOV R1,#+0 \ 00000B0C 0100A0E1 MOV R0,R1 \ 00000B10 70FDFFEA B ??ProcessPacket_9 4184 } 4185 break; 4186 case T_LASTPRIVACY: 4187 CurrentPrivateStatus=p->data[0]; \ ??ProcessPacket_49: \ 00000B14 0800D4E5 LDRB R0,[R4, #+8] \ 00000B18 E00387E5 STR R0,[R7, #+992] 4188 break; 4189 } 4190 mfree(p); \ ??ProcessPacket_2: \ 00000B1C 0400A0E1 MOV R0,R4 \ 00000B20 150000EF SWI +21 4191 } \ 00000B24 50DF8DE2 ADD SP,SP,#+320 \ 00000B28 F08FBDE8 POP {R4-R11,PC} ;; return \ ??ProcessPacket_1: \ 00000B2C 3A0A0000 DC8 ":\n",+0 \ 00000B30 ........ DC32 ILL_RECV_FADE \ 00000B34 ........ DC32 ENA_AUTO_XTXT \ 00000B38 ........ DC32 PopupOnlineString \ 00000B3C ........ DC32 PopupShow \ 00000B40 ........ DC32 ON_OFF_TIME \ 00000B44 ........ DC32 sndGlobal \ 00000B48 ........ DC32 sndGlobal2 \ 00000B4C ........ DC32 sndSrvMsg \ 00000B50 ........ DC32 ILL_RECV_TMR \ 00000B54 ........ DC32 ILL_KEYS_RECV \ 00000B58 ........ DC32 ILL_DISP_RECV \ 00000B5C ........ DC32 PopupMsgString \ 00000B60 ........ DC32 DEVELOP_IF \ 00000B64 ........ DC32 ILL_SEND_TMR \ 00000B68 ........ DC32 ILL_KEYS_SEND \ 00000B6C ........ DC32 ILL_DISP_SEND 4192 4193 4194 IPC_REQ tmr_gipc; \ In segment CODE, align 4, keep-with-next 4195 void process_active_timer(void) 4196 { \ process_active_timer: \ 00000000 30402DE9 PUSH {R4,R5,LR} 4197 if (connect_state>2) \ 00000004 ........ LDR R5,??DataTable168 ;; i_rc \ 00000008 0040A0E3 MOV R4,#+0 \ 0000000C FC0395E5 LDR R0,[R5, #+1020] \ 00000010 030050E3 CMP R0,#+3 \ 00000014 070000BA BLT ??process_active_timer_0 4198 { 4199 if (++tenseconds_to_ping>12) \ 00000018 280495E5 LDR R0,[R5, #+1064] \ 0000001C 010080E2 ADD R0,R0,#+1 \ 00000020 280485E5 STR R0,[R5, #+1064] \ 00000024 0D0050E3 CMP R0,#+13 \ 00000028 020000BA BLT ??process_active_timer_0 4200 { 4201 tenseconds_to_ping=0; 4202 SUBPROC((void *)do_ping); \ 0000002C 54009FE5 LDR R0,??process_active_timer_1 ;; do_ping \ 00000030 284485E5 STR R4,[R5, #+1064] \ 00000034 710100EF SWI +369 4203 } 4204 } 4205 tmr_gipc.name_to=ipc_my_name; \ ??process_active_timer_0: \ 00000038 ........ LDR R2,??DataTable166 ;; Canvas \ 0000003C A70FA0E3 MOV R0,#+668 \ 00000040 D61FA0E3 MOV R1,#+856 \ 00000044 023081E0 ADD R3,R1,R2 \ 00000048 053080E7 STR R3,[R0, +R5] 4206 tmr_gipc.name_from=ipc_my_name; \ 0000004C 021081E0 ADD R1,R1,R2 \ 00000050 A01285E5 STR R1,[R5, #+672] 4207 tmr_gipc.data=NULL; \ 00000054 A44285E5 STR R4,[R5, #+676] 4208 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_TENSECONDS,&tmr_gipc); \ 00000058 053080E0 ADD R3,R0,R5 \ 0000005C 0420A0E3 MOV R2,#+4 \ 00000060 B010A0E3 MOV R1,#+176 \ 00000064 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000068 0900A0E3 MOV R0,#+9 \ 0000006C 420C80E3 ORR R0,R0,#0x4200 \ 00000070 000100EF SWI +256 4209 GBS_StartTimerProc(&tmr_active,TMR_SECOND*10,process_active_timer); \ 00000074 ........ LDR R2,??DataTable165 ;; process_active_timer \ 00000078 871EA0E3 MOV R1,#+2160 \ 0000007C 7A0D85E2 ADD R0,R5,#+7808 \ 00000080 4D0000EF SWI +77 4210 } \ 00000084 3080BDE8 POP {R4,R5,PC} ;; return \ ??process_active_timer_1: \ 00000088 ........ DC32 do_ping 4211 4212 GBSTMR tm22; \ In segment CODE, align 4, keep-with-next 4213 void OneSecTmr() 4214 { 4215 tmr_gipc.name_to=ipc_my_name; \ OneSecTmr: \ 00000000 ........ LDR R2,??DataTable166 ;; Canvas \ 00000004 10402DE9 PUSH {R4,LR} \ 00000008 ........ LDR R4,??DataTable168 ;; i_rc \ 0000000C A70FA0E3 MOV R0,#+668 \ 00000010 D61FA0E3 MOV R1,#+856 \ 00000014 023081E0 ADD R3,R1,R2 \ 00000018 043080E7 STR R3,[R0, +R4] 4216 tmr_gipc.name_from=ipc_my_name; \ 0000001C 021081E0 ADD R1,R1,R2 \ 00000020 A01284E5 STR R1,[R4, #+672] 4217 tmr_gipc.data=NULL; \ 00000024 0010A0E3 MOV R1,#+0 \ 00000028 A41284E5 STR R1,[R4, #+676] 4218 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_ONESECOND,&tmr_gipc); \ 0000002C 043080E0 ADD R3,R0,R4 \ 00000030 0620A0E3 MOV R2,#+6 \ 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 4219 GBS_StartTimerProc(&tm22,TMR_SECOND,OneSecTmr); \ 00000048 14209FE5 LDR R2,??OneSecTmr_0 ;; OneSecTmr \ 0000004C D810A0E3 MOV R1,#+216 \ 00000050 6000A0E3 MOV R0,#+96 \ 00000054 8C0D80E3 ORR R0,R0,#0x2300 \ 00000058 040080E0 ADD R0,R0,R4 \ 0000005C 4D0000EF SWI +77 4220 } \ 00000060 1080BDE8 POP {R4,PC} ;; return \ ??OneSecTmr_0: \ 00000064 ........ DC32 OneSecTmr 4221 4222 4223 //=============================================================================================== 4224 /* 4225 extern ADDUIN addonuin[]; 4226 4227 int itemFromDisp;//кол-во на экране 4228 int totalItems;//общее количество итемов 4229 int curpos=0;//позичия курсора 4230 int curpage=1;//текущая страница 4231 4232 const char clrSelect[4]={0xFF,0x00,0x00,0x60}; 4233 const char fntSelect[4]={0xFF,0xFF,0x00,0x60}; 4234 const char bordSelect[4]={0x00,0x00,0x00,0x60}; 4235 4236 const char clrNotSelect[4]={0x00,0x00,0x00,0x60}; 4237 const char bordNotSelect[4]={0x00,0x00,0x00,0x60}; 4238 const char fntNotSelect[4]={0xFF,0xFF,0xFF,0x60}; 4239 4240 char clrBlack[]={0x00,0x00,0x00,0x64}; 4241 char clrWhite[]={0xFF,0xFF,0xFF,0x64}; 4242 //char prozr[]={0x00,0x00,0x00,0x00}; 4243 const int font=FONT_SMALL; 4244 const char _t[]="%t"; 4245 4246 extern int ParseUINS(); 4247 int USE_ADD_UIN=0; 4248 #define CLIST_Y1 (YDISP+GetFontYSIZE(font)+8) 4249 4250 static void DrawList() 4251 { 4252 int font_y = GetFontYSIZE(font)+2;//16+2 4253 int scr_w=ScreenW(); 4254 int scr_h=ScreenH()-1; 4255 // int y2=scr_w-(GetFontYSIZE(font)+2); 4256 #ifdef ELKA 4257 itemFromDisp = sdiv(font_y,ScreenH()-CLIST_Y1-GetFontYSIZE(font)-2)-1; 4258 #else 4259 itemFromDisp = sdiv(font_y,ScreenH()-CLIST_Y1-GetFontYSIZE(font)-2); 4260 #endif 4261 4262 LockSched(); 4263 totalItems = ParseUINS(); 4264 // Определяем количество страниц списка контактов 4265 int pageNum = sdiv(itemFromDisp, totalItems); 4266 if( itemFromDisp*pageNum < totalItems) pageNum++; //На всяк,вдруг еще страница нужна 4267 WSHDR* out_ws = AllocWS(256); 4268 int i=0; 4269 int start_y; 4270 int x=1; 4271 while(i<=totalItems) 4272 { 4273 if((i>=(curpage-1)*itemFromDisp) && (i<=itemFromDisp*curpage))//если те итемы который нужно выводить на экран со страници curpage 4274 { 4275 wsprintf(out_ws,"%d. %d",i+1,addonuin[i].uin);//имя закладки 4276 start_y = (CLIST_Y1 + (i - (curpage-1)*itemFromDisp)*font_y); //определяем начальное смещение по у 4277 4278 if(i==curpos) 4279 { 4280 DrawRoundedFrame(x-4,start_y,scr_w-1,start_y+font_y,5,5,0,bordSelect,clrSelect); 4281 DrawString(out_ws,x,start_y+2,scr_w-1,start_y+font_y,font,0,fntSelect,0); 4282 } 4283 else 4284 { 4285 DrawRoundedFrame(x,start_y+1,scr_w-1,start_y+font_y,0,0,0,bordNotSelect,clrNotSelect);//clrBlack 4286 DrawString(out_ws,x,start_y+2,scr_w-1,start_y+font_y,font,0,fntNotSelect,0); 4287 } 4288 } 4289 i++; 4290 if(i>(pageNum*itemFromDisp)) break; 4291 } 4292 UnlockSched(); 4293 FreeWS(out_ws); 4294 } 4295 4296 // Управление курсором 4297 void MoveUp() 4298 { 4299 if(!itemFromDisp)return; 4300 if(curpos<1) 4301 { 4302 curpos=totalItems; 4303 if(itemFromDisp!=totalItems) 4304 { 4305 curpage = sdiv(itemFromDisp,totalItems)+1; 4306 } 4307 else 4308 curpage = 1; 4309 } 4310 else 4311 { 4312 curpos--; 4313 if(curpos<(curpage-1)*itemFromDisp){ curpos++; curpage--; } 4314 } 4315 // REDRAW(); 4316 } 4317 4318 4319 void MoveDown() 4320 { 4321 if(!totalItems)return; 4322 curpos++; 4323 if(curpos>totalItems) { curpos=0; curpage=1; } 4324 if(curpage*itemFromDispisIndividSet=0; \ 00000010 740494E5 LDR R0,[R4, #+1140] \ 00000014 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000018 0010A0E3 MOV R1,#+0 \ 0000001C 641080E5 STR R1,[R0, #+100] 4372 REDRAW(); \ 00000020 720100EF SWI +370 4373 } \ 00000024 1080BDE8 POP {R4,PC} ;; return 4374 \ In segment CODE, align 4, keep-with-next 4375 void ChangeVibraContact(GUI *data) 4376 { 4377 CLIST *t; 4378 t=FindContactByUin(uinContact); \ ChangeVibraContact: \ 00000000 ........ LDR R0,??DataTable187 ;; i_rc + 1140 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 4379 t->isvibra=!(t->isvibra); \ 00000010 681090E5 LDR R1,[R0, #+104] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0110A003 MOVEQ R1,#+1 \ 0000001C 0010A013 MOVNE R1,#+0 \ 00000020 681080E5 STR R1,[R0, #+104] 4380 // RefreshGUI(); 4381 REDRAW(); \ 00000024 720100EF SWI +370 4382 } \ 00000028 0080BDE8 POP {PC} ;; return 4383 \ In segment CODE, align 4, keep-with-next 4384 void ChangeSoundContact(GUI *data) 4385 { 4386 CLIST *t; 4387 t=FindContactByUin(uinContact); \ ChangeSoundContact: \ 00000000 ........ LDR R0,??DataTable187 ;; i_rc + 1140 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 4388 t->issound=!(t->issound); \ 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] 4389 // RefreshGUI(); 4390 REDRAW(); \ 00000024 720100EF SWI +370 4391 } \ 00000028 0080BDE8 POP {PC} ;; return 4392 \ In segment CODE, align 4, keep-with-next 4393 void ChangeAutoMsg(GUI *data) 4394 { 4395 CLIST *t; 4396 t=FindContactByUin(uinContact); \ ChangeAutoMsg: \ 00000000 ........ LDR R0,??DataTable187 ;; i_rc + 1140 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 4397 t->isautomsg=!(t->isautomsg); \ 00000010 701090E5 LDR R1,[R0, #+112] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0110A003 MOVEQ R1,#+1 \ 0000001C 0010A013 MOVNE R1,#+0 \ 00000020 701080E5 STR R1,[R0, #+112] 4398 // RefreshGUI(); 4399 REDRAW(); \ 00000024 720100EF SWI +370 4400 } \ 00000028 0080BDE8 POP {PC} ;; return 4401 \ In segment CODE, align 4, keep-with-next 4402 void ChangeShowXstatus(GUI *data) 4403 { 4404 CLIST *t; 4405 t=FindContactByUin(uinContact); \ ChangeShowXstatus: \ 00000000 ........ LDR R0,??DataTable187 ;; i_rc + 1140 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 4406 t->isShowXst=!(t->isShowXst); \ 00000010 7C1090E5 LDR R1,[R0, #+124] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0110A003 MOVEQ R1,#+1 \ 0000001C 0010A013 MOVNE R1,#+0 \ 00000020 7C1080E5 STR R1,[R0, #+124] 4407 // RefreshGUI(); 4408 REDRAW(); \ 00000024 720100EF SWI +370 4409 } \ 00000028 0080BDE8 POP {PC} ;; return 4410 4411 #ifdef kluchnik 4412 \ In segment CODE, align 4, keep-with-next 4413 void ChangeAccess(GUI *data) 4414 { 4415 CLIST *t; 4416 t=FindContactByUin(uinContact); \ ChangeAccess: \ 00000000 ........ LDR R0,??DataTable187 ;; i_rc + 1140 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 4417 t->isaccess=!(t->isaccess); \ 00000010 841090E5 LDR R1,[R0, #+132] \ 00000014 000051E3 CMP R1,#+0 \ 00000018 0110A003 MOVEQ R1,#+1 \ 0000001C 0010A013 MOVNE R1,#+0 \ 00000020 841080E5 STR R1,[R0, #+132] 4418 /// RefreshGUI(); 4419 REDRAW(); \ 00000024 720100EF SWI +370 4420 } \ 00000028 0080BDE8 POP {PC} ;; return 4421 4422 \ In segment CODE, align 4, keep-with-next 4423 void ChangeAwaySignal(GUI *data) 4424 { 4425 CLIST *t; 4426 t=FindContactByUin(uinContact); \ ChangeAwaySignal: \ 00000000 ........ LDR R0,??DataTable187 ;; i_rc + 1140 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 4427 t->automsgcount=automsgcount; \ 00000010 ........ LDR R1,??DataTable175 ;; automsgcount \ 00000014 001091E5 LDR R1,[R1, #+0] \ 00000018 881080E5 STR R1,[R0, #+136] 4428 // RefreshGUI(); 4429 REDRAW(); \ 0000001C 720100EF SWI +370 4430 } \ 00000020 0080BDE8 POP {PC} ;; return 4431 \ In segment CODE, align 4, keep-with-next 4432 void ChangeAutobot(GUI *data) 4433 { 4434 CLIST *t; 4435 t=FindContactByUin(uinContact); \ ChangeAutobot: \ 00000000 ........ LDR R0,??DataTable187 ;; i_rc + 1140 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 4436 t->isautobot=!(t->isautobot); \ 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] 4437 // RefreshGUI(); 4438 REDRAW(); \ 00000024 720100EF SWI +370 4439 } \ 00000028 0080BDE8 POP {PC} ;; return 4440 \ In segment CODE, align 4, keep-with-next 4441 void ChangeLoadHistory(GUI *data) 4442 { 4443 CLIST *t; 4444 t=FindContactByUin(uinContact); \ ChangeLoadHistory: \ 00000000 ........ LDR R0,??DataTable187 ;; i_rc + 1140 \ 00000004 00402DE9 PUSH {LR} \ 00000008 000090E5 LDR R0,[R0, #+0] \ 0000000C ........ _BLF FindContactByUin,??FindContactByUin??rA 4445 t->isLoadHistory=!(t->isLoadHistory); \ 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] 4446 // RefreshGUI(); 4447 REDRAW(); \ 00000024 720100EF SWI +370 4448 } \ 00000028 0080BDE8 POP {PC} ;; return 4449 #endif //kluchnik 4450 4451 const void *menuproc[_MAX]= 4452 { 4453 (void *)RqtXText, 4454 (void *)ChangeVibraContact, 4455 (void *)ChangeSoundContact, 4456 (void *)ChangeAutoMsg, 4457 (void *)ChangeShowXstatus, 4458 #ifdef kluchnik 4459 (void *)ChangeAccess, 4460 (void *)ChangeAwaySignal, 4461 (void *)ChangeLoadHistory, 4462 (void *)ChangeAutobot, 4463 #endif 4464 }; 4465 4466 const char * const menutext[_MAX]= 4467 { 4468 "Запрос хстатуса", 4469 "Вибра", 4470 "Звук", 4471 "Автоответчик", 4472 "Показ.хстатус", 4473 #ifdef kluchnik 4474 "Удаленное управление", 4475 "Синалы автоответчика", 4476 "Загруж.историю", 4477 "Aвтобот" 4478 #endif 4479 }; 4480 4481 int hy; 4482 const char clrSelect[4]={0xFF,0x00,0x00,0x20}; 4483 const char fntSelect[4]={0xFF,0xFF,0x00,0x60}; 4484 const char bordSelect[4]={0x00,0x00,0x00,0x60}; 4485 4486 const char clrNotSelect[4]={0x00,0x00,0x00,0x00}; 4487 const char bordNotSelect[4]={0x00,0x00,0x00,0x00}; 4488 const char fntNotSelect[4]={0xFF,0xFF,0xFF,0x60}; 4489 4490 char clrBlack[]={0x00,0x00,0x00,0x64}; 4491 char clrWhite[]={0xFF,0xFF,0xFF,0x64}; 4492 char clrRed[]={0xFF,0x00,0x00,0x64}; 4493 char transparent[]={0x00,0x00,0x00,0x00}; 4494 char blue[]="\x00\x00\xFF\x64"; 4495 4496 //const int clfont=(FONT_SMALL+100);//ибо библа пнг 4497 int clfont; 4498 4499 //char clrRed2[]={0xFF,0x00,0x00,0x15}; \ In segment DATA_Z, align 4, align-sorted 4500 int i_itemFromDisp;//кол-во на экране \ i_itemFromDisp: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 4501 int i_totalItems;//общее количество итемов \ i_totalItems: \ 00000000 DS8 4 4502 int i_curpos=1;//позичия курсора 4503 4504 GBSTMR i_tmr; 4505 4506 extern IMGHDR screen; 4507 void DrawCheckBox(int x,int y,int flag,int type); 4508 extern char *menutexts2[]; 4509 4510 RECT i_rc; 4511 \ In segment CODE, align 4, keep-with-next 4512 int DrawIconInfo(int x, int y, int curitem) 4513 { \ DrawIconInfo: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 0040A0E1 MOV R4,R0 4514 CLIST *t; 4515 t=FindContactByUin(uinContact); \ 00000008 ........ LDR R0,??DataTable187 ;; i_rc + 1140 \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 000090E5 LDR R0,[R0, #+0] \ 00000014 0260A0E1 MOV R6,R2 \ 00000018 ........ _BLF FindContactByUin,??FindContactByUin??rA 4516 4517 switch(curitem) \ 0000001C 016046E2 SUB R6,R6,#+1 \ 00000020 080056E3 CMP R6,#+8 \ 00000024 2A00008A BHI ??DrawIconInfo_1 \ 00000028 011F8FE2 ADR R1,??DrawIconInfo_0 \ 0000002C 0610D1E7 LDRB R1,[R1, R6] \ 00000030 01F18FE0 ADD PC,PC,R1, LSL #+2 \ ??DrawIconInfo_0: \ 00000034 02050B0D DC8 +2,+5,+11,+13 \ 00000038 13151719 DC8 +19,+21,+23,+25 \ 0000003C 1F000000 DC8 +31,+0,+0,+0 4518 { 4519 case 1: DrawCheckBox(x,y,1,1);/*DrwImage(icons[ICON_PING],x,y,0,0);*/ break;// return icons[ICON_PING]->w; \ ??DrawIconInfo_2: \ 00000040 0130A0E3 MOV R3,#+1 \ 00000044 0120A0E3 MOV R2,#+1 \ 00000048 1E0000EA B ??DrawIconInfo_3 4520 case 2: DrawCheckBox(x,y,t->isvibra?1:0,0); break; \ ??DrawIconInfo_4: \ 0000004C 680090E5 LDR R0,[R0, #+104] \ ??DrawIconInfo_5: \ 00000050 0030A0E3 MOV R3,#+0 \ 00000054 000050E3 CMP R0,#+0 \ 00000058 0120A013 MOVNE R2,#+1 \ 0000005C 0020A003 MOVEQ R2,#+0 \ 00000060 180000EA B ??DrawIconInfo_3 4521 case 3: DrawCheckBox(x,y,t->issound?1:0,0); break; \ ??DrawIconInfo_6: \ 00000064 6C0090E5 LDR R0,[R0, #+108] \ 00000068 F8FFFFEA B ??DrawIconInfo_5 4522 case 4: DrawCheckBox(x,y,t->isautomsg?1:0,0); break; \ ??DrawIconInfo_7: \ 0000006C 700090E5 LDR R0,[R0, #+112] \ ??DrawIconInfo_8: \ 00000070 0030A0E3 MOV R3,#+0 \ 00000074 000050E3 CMP R0,#+0 \ 00000078 0120A013 MOVNE R2,#+1 \ 0000007C 0020A003 MOVEQ R2,#+0 \ 00000080 100000EA B ??DrawIconInfo_3 4523 case 5: DrawCheckBox(x,y,t->isShowXst?1:0,0); break; \ ??DrawIconInfo_9: \ 00000084 7C0090E5 LDR R0,[R0, #+124] \ 00000088 F0FFFFEA B ??DrawIconInfo_5 4524 #ifdef kluchnik 4525 case 6: DrawCheckBox(x,y,t->isaccess?1:0,0); break; \ ??DrawIconInfo_10: \ 0000008C 840090E5 LDR R0,[R0, #+132] \ 00000090 F6FFFFEA B ??DrawIconInfo_8 4526 case 7: DrawCheckBox(x,y,t->automsgcount?1:0,0); break; \ ??DrawIconInfo_11: \ 00000094 880090E5 LDR R0,[R0, #+136] \ 00000098 ECFFFFEA B ??DrawIconInfo_5 4527 case 8: DrawCheckBox(x,y,t->isLoadHistory?1:0,0); break; \ ??DrawIconInfo_12: \ 0000009C 600090E5 LDR R0,[R0, #+96] \ 000000A0 0030A0E3 MOV R3,#+0 \ 000000A4 000050E3 CMP R0,#+0 \ 000000A8 0120A013 MOVNE R2,#+1 \ 000000AC 0020A003 MOVEQ R2,#+0 \ 000000B0 040000EA B ??DrawIconInfo_3 4528 case 9: DrawCheckBox(x,y,t->isautobot?0:1,0); break; \ ??DrawIconInfo_13: \ 000000B4 5C0090E5 LDR R0,[R0, #+92] \ 000000B8 0030A0E3 MOV R3,#+0 \ 000000BC 000050E3 CMP R0,#+0 \ 000000C0 0020A013 MOVNE R2,#+0 \ 000000C4 0120A003 MOVEQ R2,#+1 \ ??DrawIconInfo_3: \ 000000C8 0510A0E1 MOV R1,R5 \ 000000CC 0400A0E1 MOV R0,R4 \ 000000D0 ........ _BLF DrawCheckBox,??DrawCheckBox??rA 4529 #endif 4530 } 4531 return 12; \ ??DrawIconInfo_1: \ 000000D4 0C00A0E3 MOV R0,#+12 \ 000000D8 7080BDE8 POP {R4-R6,PC} ;; return 4532 } 4533 4534 extern DYNPNGICONLIST *GetXSByItem(int curitem); 4535 char *GetStatusByIconIndex(int icon); 4536 4537 char ixtext[256]; \ In segment CODE, align 4, keep-with-next 4538 void I_DrawList() 4539 { \ I_DrawList: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 4540 int font_y = FontH(clfont)+1; \ 00000004 ........ LDR R4,??DataTable194 ;; i_rc 4541 int scr_h=ScreenH()-1; 4542 int scr_w=ScreenW()-1; 4543 4544 LockSched(); 4545 int i=1; 4546 int start_y=0; 4547 int start_x=i_rc.x+4; 4548 4549 RECT rc; 4550 CLIST *t; 4551 t=FindContactByUin(uinContact); 4552 SetFontColor(clrWhite,transparent,0); 4553 char *s=malloc(128); 4554 sprintf(s,"Меню контакта \"%s\"",t->name); \ 00000008 88939FE5 LDR R9,??I_DrawList_0 ;; menutext \ 0000000C 10D04DE2 SUB SP,SP,#+16 \ 00000010 7C0494E5 LDR R0,[R4, #+1148] \ 00000014 0160A0E3 MOV R6,#+1 \ 00000018 ........ _BLF FontH,??FontH??rA \ 0000001C 015080E2 ADD R5,R0,#+1 \ 00000020 898100EF SWI +33161 \ 00000024 888100EF SWI +33160 \ 00000028 460100EF SWI +326 \ 0000002C F010D4E1 LDRSH R1,[R4, #+0] \ 00000030 041081E2 ADD R1,R1,#+4 \ 00000034 08108DE5 STR R1,[SP, #+8] \ 00000038 740494E5 LDR R0,[R4, #+1140] \ 0000003C ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000040 0070A0E1 MOV R7,R0 \ 00000044 7400A0E3 MOV R0,#+116 \ 00000048 8C0D80E3 ORR R0,R0,#0x2300 \ 0000004C 04A080E0 ADD R10,R0,R4 \ 00000050 0020A0E3 MOV R2,#+0 \ 00000054 080080E3 ORR R0,R0,#0x8 \ 00000058 041080E0 ADD R1,R0,R4 \ 0000005C 0A00A0E1 MOV R0,R10 \ 00000060 ........ _BLF SetFontColor,??SetFontColor??rA \ 00000064 8000A0E3 MOV R0,#+128 \ 00000068 140000EF SWI +20 \ 0000006C 0080A0E1 MOV R8,R0 \ 00000070 142087E2 ADD R2,R7,#+20 \ 00000074 8C1089E2 ADD R1,R9,#+140 \ 00000078 160000EF SWI +22 \ 0000007C F000D4E1 LDRSH R0,[R4, #+0] \ 00000080 F410D4E1 LDRSH R1,[R4, #+4] \ 00000084 0030A0E3 MOV R3,#+0 \ 00000088 0820A0E1 MOV R2,R8 \ 0000008C 001041E0 SUB R1,R1,R0 \ 00000090 02002DE9 PUSH {R1} \ 00000094 030080E2 ADD R0,R0,#+3 \ 00000098 0010A0E3 MOV R1,#+0 \ 0000009C 02002DE9 PUSH {R1} \ 000000A0 02002DE9 PUSH {R1} \ 000000A4 02002DE9 PUSH {R1} \ 000000A8 0110A0E3 MOV R1,#+1 \ 000000AC 02002DE9 PUSH {R1} \ 000000B0 7C1494E5 LDR R1,[R4, #+1148] \ 000000B4 02002DE9 PUSH {R1} \ 000000B8 F210D4E1 LDRSH R1,[R4, #+2] \ 000000BC 011081E2 ADD R1,R1,#+1 4555 PrintText(i_rc.x+3,i_rc.y+1,s,0,clfont,1,0,0,0,i_rc.x2-i_rc.x);//item name \ 000000C0 ........ _BLF PrintText,??PrintText??rA 4556 4557 DrawLine(i_rc.x,i_rc.y+font_y,i_rc.x2,i_rc.y+font_y,0,clrWhite); \ 000000C4 F200D4E1 LDRSH R0,[R4, #+2] \ 000000C8 00042DE9 PUSH {R10} \ 000000CC 001085E0 ADD R1,R5,R0 \ 000000D0 0000A0E3 MOV R0,#+0 \ 000000D4 01002DE9 PUSH {R0} \ 000000D8 F420D4E1 LDRSH R2,[R4, #+4] \ 000000DC F000D4E1 LDRSH R0,[R4, #+0] \ 000000E0 0130A0E1 MOV R3,R1 \ 000000E4 B30100EF SWI +435 4558 int back=i_rc.y; \ 000000E8 F200D4E1 LDRSH R0,[R4, #+2] \ 000000EC 0020A0E1 MOV R2,R0 \ 000000F0 2C208DE5 STR R2,[SP, #+44] 4559 i_rc.y+=4; \ 000000F4 04A080E2 ADD R10,R0,#+4 \ 000000F8 B2A0C4E1 STRH R10,[R4, #+2] 4560 4561 DrwImage(icons[GetIconIndex(t)],i_rc.x+2,i_rc.y+font_y,0,0); \ 000000FC 0700A0E1 MOV R0,R7 \ 00000100 ........ BL GetIconIndex \ 00000104 0010A0E3 MOV R1,#+0 \ 00000108 02002DE9 PUSH {R1} \ 0000010C 0130A0E1 MOV R3,R1 \ 00000110 F010D4E1 LDRSH R1,[R4, #+0] \ 00000114 0AA8A0E1 MOV R10,R10, LSL #+16 \ 00000118 4AA8A0E1 MOV R10,R10, ASR #+16 \ 0000011C 0A2085E0 ADD R2,R5,R10 \ 00000120 021081E2 ADD R1,R1,#+2 \ 00000124 000184E0 ADD R0,R4,R0, LSL #+2 \ 00000128 200090E5 LDR R0,[R0, #+32] \ 0000012C ........ BL DrwImage \ 00000130 24D08DE2 ADD SP,SP,#+36 4562 PrintText(i_rc.x+icons[GetIconIndex(t)+1]->w+6,i_rc.y+font_y,((t->xtext2)?(t->xtext2):("Оффлайн")),0,clfont,1,0,0,0,i_rc.x2-i_rc.x);//item name \ 00000134 B8A097E5 LDR R10,[R7, #+184] \ 00000138 0700A0E1 MOV R0,R7 \ 0000013C 00005AE3 CMP R10,#+0 \ 00000140 A0A08902 ADDEQ R10,R9,#+160 \ 00000144 ........ BL GetIconIndex \ 00000148 F0B0D4E1 LDRSH R11,[R4, #+0] \ 0000014C F410D4E1 LDRSH R1,[R4, #+4] \ 00000150 000184E0 ADD R0,R4,R0, LSL #+2 \ 00000154 0030A0E3 MOV R3,#+0 \ 00000158 0B1041E0 SUB R1,R1,R11 \ 0000015C 02002DE9 PUSH {R1} \ 00000160 0A20A0E1 MOV R2,R10 4563 4564 // if(t->xstate!=0) 4565 //{ 4566 DYNPNGICONLIST *xs=GetXSByItem(t->xstate); 4567 DrwImage(xs->img,i_rc.x+2,i_rc.y+(font_y*2),0,0); \ 00000164 85A0A0E1 LSL R10,R5,#+1 \ 00000168 0010A0E3 MOV R1,#+0 \ 0000016C 02002DE9 PUSH {R1} \ 00000170 02002DE9 PUSH {R1} \ 00000174 02002DE9 PUSH {R1} \ 00000178 0110A0E3 MOV R1,#+1 \ 0000017C 02002DE9 PUSH {R1} \ 00000180 7C1494E5 LDR R1,[R4, #+1148] \ 00000184 02002DE9 PUSH {R1} \ 00000188 240090E5 LDR R0,[R0, #+36] \ 0000018C F210D4E1 LDRSH R1,[R4, #+2] \ 00000190 B000D0E1 LDRH R0,[R0, #+0] \ 00000194 011085E0 ADD R1,R5,R1 \ 00000198 0B0080E0 ADD R0,R0,R11 \ 0000019C 060080E2 ADD R0,R0,#+6 \ 000001A0 ........ _BLF PrintText,??PrintText??rA \ 000001A4 B605D7E1 LDRH R0,[R7, #+86] \ 000001A8 ........ _BLF GetXSByItem,??GetXSByItem??rA \ 000001AC 00B0A0E1 MOV R11,R0 \ 000001B0 0000A0E3 MOV R0,#+0 \ 000001B4 01002DE9 PUSH {R0} \ 000001B8 0030A0E1 MOV R3,R0 \ 000001BC F200D4E1 LDRSH R0,[R4, #+2] \ 000001C0 00208AE0 ADD R2,R10,R0 \ 000001C4 F000D4E1 LDRSH R0,[R4, #+0] \ 000001C8 021080E2 ADD R1,R0,#+2 \ 000001CC 08009BE5 LDR R0,[R11, #+8] \ 000001D0 ........ BL DrwImage 4568 4569 sprintf(ixtext,(t->xtext)?(t->xtext+1):("Нет хстатуса")); \ 000001D4 B40097E5 LDR R0,[R7, #+180] \ 000001D8 1CD08DE2 ADD SP,SP,#+28 \ 000001DC 000050E3 CMP R0,#+0 \ 000001E0 01108012 ADDNE R1,R0,#+1 \ 000001E4 A8108902 ADDEQ R1,R9,#+168 \ 000001E8 3800A0E3 MOV R0,#+56 \ 000001EC 600E80E3 ORR R0,R0,#0x600 \ 000001F0 040080E0 ADD R0,R0,R4 \ 000001F4 160000EF SWI +22 4570 ixtext[strlen(t->xtext)-1]=0; \ 000001F8 B40097E5 LDR R0,[R7, #+180] \ 000001FC 1B0000EF SWI +27 \ 00000200 040080E0 ADD R0,R0,R4 \ 00000204 0010A0E3 MOV R1,#+0 \ 00000208 3716C0E5 STRB R1,[R0, #+1591] 4571 PrintText(i_rc.x+xs->img->w+4,i_rc.y+(font_y*2)-1,ixtext,0,clfont,1,0,1,0,i_rc.x2-i_rc.x-xs->img->w-4);//item name \ 0000020C 08009BE5 LDR R0,[R11, #+8] \ 00000210 F070D4E1 LDRSH R7,[R4, #+0] \ 00000214 F410D4E1 LDRSH R1,[R4, #+4] \ 00000218 B020D0E1 LDRH R2,[R0, #+0] \ 0000021C 0030A0E3 MOV R3,#+0 \ 00000220 071041E0 SUB R1,R1,R7 \ 00000224 021041E0 SUB R1,R1,R2 \ 00000228 041041E2 SUB R1,R1,#+4 \ 0000022C 02002DE9 PUSH {R1} \ 00000230 0010A0E3 MOV R1,#+0 \ 00000234 02002DE9 PUSH {R1} \ 00000238 0110A0E3 MOV R1,#+1 \ 0000023C 02002DE9 PUSH {R1} \ 00000240 0010A0E3 MOV R1,#+0 \ 00000244 02002DE9 PUSH {R1} \ 00000248 0610A0E1 MOV R1,R6 \ 0000024C 02002DE9 PUSH {R1} \ 00000250 7C1494E5 LDR R1,[R4, #+1148] \ 00000254 02002DE9 PUSH {R1} \ 00000258 B000D0E1 LDRH R0,[R0, #+0] \ 0000025C 3810A0E3 MOV R1,#+56 \ 00000260 601E81E3 ORR R1,R1,#0x600 \ 00000264 042081E0 ADD R2,R1,R4 \ 00000268 F210D4E1 LDRSH R1,[R4, #+2] \ 0000026C 070080E0 ADD R0,R0,R7 \ 00000270 040080E2 ADD R0,R0,#+4 \ 00000274 01108AE0 ADD R1,R10,R1 \ 00000278 011041E2 SUB R1,R1,#+1 \ 0000027C ........ _BLF PrintText,??PrintText??rA \ 00000280 18D08DE2 ADD SP,SP,#+24 4572 // } 4573 /* 4574 DrwImage(icons[IS_UNKNOWN],i_rc.x+2,i_rc.y+(font_y*3)-1,0,0); 4575 PrintText(i_rc.x+icons[IS_UNKNOWN]->w+1,i_rc.y+(font_y*3)-1,t->xtext2,0,clfont,1,0,0,0,i_rc.x2-i_rc.x-icons[IS_UNKNOWN]->w-3); 4576 */ 4577 while(i<_MAX) 4578 { 4579 start_y = (i_rc.y + (font_y*2) + (i/* - (_curpage-1)*_itemFromDisp*/)*font_y); //определяем начальное смещение по у \ ??I_DrawList_1: \ 00000284 F200D4E1 LDRSH R0,[R4, #+2] \ 00000288 00008AE0 ADD R0,R10,R0 \ 0000028C 950627E0 MLA R7,R5,R6,R0 4580 StoreXYXYtoRECT(&rc,start_x,start_y,i_rc.x2,start_y+font_y); \ 00000290 070085E0 ADD R0,R5,R7 \ 00000294 01002DE9 PUSH {R0} \ 00000298 F430D4E1 LDRSH R3,[R4, #+4] \ 0000029C 0C109DE5 LDR R1,[SP, #+12] \ 000002A0 0720A0E1 MOV R2,R7 \ 000002A4 04008DE2 ADD R0,SP,#+4 \ 000002A8 340100EF SWI +308 4581 if(i==i_curpos)//Если наш итем то выделяем \ 000002AC 800494E5 LDR R0,[R4, #+1152] \ 000002B0 04D08DE2 ADD SP,SP,#+4 \ 000002B4 000056E1 CMP R6,R0 \ 000002B8 1100001A BNE ??I_DrawList_2 4582 DrawRoundedFrame(rc.x-2,rc.y-2,rc.x2-5,rc.y2-4,0,0,0,MMCursorClr,MMCursorBGClr);//cursor \ 000002BC D8009FE5 LDR R0,??I_DrawList_0+0x4 ;; MMCursorBGClr \ 000002C0 01002DE9 PUSH {R0} \ 000002C4 D4009FE5 LDR R0,??I_DrawList_0+0x8 ;; MMCursorClr \ 000002C8 01002DE9 PUSH {R0} \ 000002CC 0000A0E3 MOV R0,#+0 \ 000002D0 01002DE9 PUSH {R0} \ 000002D4 01002DE9 PUSH {R0} \ 000002D8 01002DE9 PUSH {R0} \ 000002DC FA01DDE1 LDRSH R0,[SP, #+26] \ 000002E0 043040E2 SUB R3,R0,#+4 \ 000002E4 F801DDE1 LDRSH R0,[SP, #+24] \ 000002E8 052040E2 SUB R2,R0,#+5 \ 000002EC F601DDE1 LDRSH R0,[SP, #+22] \ 000002F0 021040E2 SUB R1,R0,#+2 \ 000002F4 F401DDE1 LDRSH R0,[SP, #+20] \ 000002F8 020040E2 SUB R0,R0,#+2 \ 000002FC 500100EF SWI +336 \ 00000300 14D08DE2 ADD SP,SP,#+20 4583 4584 PrintText(i_rc.x+DrawIconInfo(i_rc.x+2,start_y,i)+6,rc.y-3,(char*)menutext[i-1],0,clfont,1,0,0,0,rc.x2-rc.x-19);//item name \ ??I_DrawList_2: \ 00000304 F000D4E1 LDRSH R0,[R4, #+0] \ 00000308 0620A0E1 MOV R2,R6 \ 0000030C 0710A0E1 MOV R1,R7 \ 00000310 020080E2 ADD R0,R0,#+2 \ 00000314 ........ BL DrawIconInfo \ 00000318 F410DDE1 LDRSH R1,[SP, #+4] \ 0000031C F020DDE1 LDRSH R2,[SP, #+0] \ 00000320 0030A0E3 MOV R3,#+0 \ 00000324 021041E0 SUB R1,R1,R2 \ 00000328 131041E2 SUB R1,R1,#+19 \ 0000032C 02002DE9 PUSH {R1} \ 00000330 0010A0E3 MOV R1,#+0 \ 00000334 02002DE9 PUSH {R1} \ 00000338 02002DE9 PUSH {R1} \ 0000033C 02002DE9 PUSH {R1} \ 00000340 0110A0E3 MOV R1,#+1 \ 00000344 02002DE9 PUSH {R1} \ 00000348 7C1494E5 LDR R1,[R4, #+1148] \ 0000034C 02002DE9 PUSH {R1} \ 00000350 F070D4E1 LDRSH R7,[R4, #+0] \ 00000354 061189E0 ADD R1,R9,R6, LSL #+2 \ 00000358 042011E5 LDR R2,[R1, #-4] \ 0000035C FA11DDE1 LDRSH R1,[SP, #+26] \ 00000360 000087E0 ADD R0,R7,R0 \ 00000364 060080E2 ADD R0,R0,#+6 \ 00000368 031041E2 SUB R1,R1,#+3 \ 0000036C ........ _BLF PrintText,??PrintText??rA 4585 i++; \ 00000370 016086E2 ADD R6,R6,#+1 4586 } \ 00000374 0A0056E3 CMP R6,#+10 \ 00000378 18D08DE2 ADD SP,SP,#+24 \ 0000037C C0FFFFBA BLT ??I_DrawList_1 4587 UnlockSched(); \ 00000380 470100EF SWI +327 4588 i_rc.y=back; \ 00000384 0C009DE5 LDR R0,[SP, #+12] \ 00000388 B200C4E1 STRH R0,[R4, #+2] 4589 mfree(s); \ 0000038C 0800A0E1 MOV R0,R8 \ 00000390 150000EF SWI +21 4590 } \ 00000394 FF8FBDE8 POP {R0-R11,PC} ;; return \ ??I_DrawList_0: \ 00000398 ........ DC32 menutext \ 0000039C ........ DC32 MMCursorBGClr \ 000003A0 ........ DC32 MMCursorClr 4591 4592 // Управление курсором \ In segment CODE, align 4, keep-with-next 4593 void I_MoveUp() 4594 { 4595 if(i_curpos > 0) i_curpos--; \ I_MoveUp: \ 00000000 ........ LDR R0,??DataTable194 ;; i_rc \ 00000004 801490E5 LDR R1,[R0, #+1152] \ 00000008 010051E3 CMP R1,#+1 \ 0000000C 011041A2 SUBGE R1,R1,#+1 4596 else 4597 i_curpos=_MAX-1; \ 00000010 0910A0B3 MOVLT R1,#+9 \ 00000014 801480E5 STR R1,[R0, #+1152] 4598 } \ 00000018 1EFF2FE1 BX LR ;; return 4599 4600 \ In segment CODE, align 4, keep-with-next 4601 void I_MoveDown() 4602 { 4603 if(i_curpos < _MAX - 1 ) i_curpos++; \ I_MoveDown: \ 00000000 ........ LDR R0,??DataTable194 ;; i_rc \ 00000004 801490E5 LDR R1,[R0, #+1152] \ 00000008 090051E3 CMP R1,#+9 \ 0000000C 011081B2 ADDLT R1,R1,#+1 4604 else i_curpos=1; \ 00000010 0110A0A3 MOVGE R1,#+1 \ 00000014 801480E5 STR R1,[R0, #+1152] 4605 } \ 00000018 1EFF2FE1 BX LR ;; return 4606 \ In segment CODE, align 4, keep-with-next 4607 void I_Redraw() 4608 { \ I_Redraw: \ 00000000 00402DE9 PUSH {LR} 4609 DirectRedrawGUI(); \ 00000004 3F0100EF SWI +319 4610 } \ 00000008 0080BDE8 POP {PC} ;; return 4611 4612 4613 void DrawHeader(); 4614 \ In segment CODE, align 4, keep-with-next 4615 void I_OnRedraw(MAIN_GUI *data) 4616 { \ I_OnRedraw: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 4617 DrawHeader(); 4618 DrwImage(&screen,0,hy+2,0,0); \ 00000004 ........ LDR R4,??DataTable185 ;; i_rc 4619 DrawRoundedFrame(0,YDISP,ScreenW()-1,ScreenH()-1,0,0,0,"\x00\x00\x00\x30","\x00\x00\x00\x30"); 4620 DrawRoundedFrame(i_rc.x,i_rc.y,i_rc.x2,i_rc.y2,0,0,0,/*"\x00\x00\x00\x45"*/MMBackgrBordClr,MMBackgrClr); \ 00000008 7C619FE5 LDR R6,??I_OnRedraw_0 ;; MMBackgrClr \ 0000000C ........ BL DrawHeader \ 00000010 0000A0E3 MOV R0,#+0 \ 00000014 01002DE9 PUSH {R0} \ 00000018 780494E5 LDR R0,[R4, #+1144] \ 0000001C 0030A0E3 MOV R3,#+0 \ 00000020 022080E2 ADD R2,R0,#+2 \ 00000024 64019FE5 LDR R0,??I_OnRedraw_0+0x4 ;; screen \ 00000028 0310A0E1 MOV R1,R3 \ 0000002C ........ BL DrwImage \ 00000030 898100EF SWI +33161 \ 00000034 0050A0E1 MOV R5,R0 \ 00000038 888100EF SWI +33160 \ 0000003C 50119FE5 LDR R1,??I_OnRedraw_0+0x8 ;; `?` \ 00000040 013045E2 SUB R3,R5,#+1 \ 00000044 4C519FE5 LDR R5,??I_OnRedraw_0+0xC ;; MMBackgrBordClr \ 00000048 0120A0E1 MOV R2,R1 \ 0000004C 04002DE9 PUSH {R2} \ 00000050 02002DE9 PUSH {R1} \ 00000054 0010A0E3 MOV R1,#+0 \ 00000058 02002DE9 PUSH {R1} \ 0000005C 02002DE9 PUSH {R1} \ 00000060 02002DE9 PUSH {R1} \ 00000064 012040E2 SUB R2,R0,#+1 \ 00000068 0000A0E3 MOV R0,#+0 \ 0000006C 1810A0E3 MOV R1,#+24 \ 00000070 500100EF SWI +336 \ 00000074 0600A0E1 MOV R0,R6 \ 00000078 01002DE9 PUSH {R0} \ 0000007C 0500A0E1 MOV R0,R5 \ 00000080 01002DE9 PUSH {R0} \ 00000084 0000A0E3 MOV R0,#+0 \ 00000088 01002DE9 PUSH {R0} \ 0000008C 01002DE9 PUSH {R0} \ 00000090 01002DE9 PUSH {R0} \ 00000094 F630D4E1 LDRSH R3,[R4, #+6] \ 00000098 F420D4E1 LDRSH R2,[R4, #+4] \ 0000009C F210D4E1 LDRSH R1,[R4, #+2] \ 000000A0 F000D4E1 LDRSH R0,[R4, #+0] \ 000000A4 500100EF SWI +336 \ 000000A8 2CD08DE2 ADD SP,SP,#+44 4621 I_DrawList(); \ 000000AC ........ BL I_DrawList 4622 SetScrollEdgeDelay(0); \ 000000B0 0000A0E3 MOV R0,#+0 \ 000000B4 ........ _BLF SetScrollEdgeDelay,??SetScrollEdgeDelay??rA 4623 if(i_curpos==0) \ 000000B8 800494E5 LDR R0,[R4, #+1152] \ 000000BC 000050E3 CMP R0,#+0 \ 000000C0 2A00001A BNE ??I_OnRedraw_1 4624 { 4625 DrawRoundedFrame(i_rc.x-5,i_rc.y+FontH(clfont),i_rc.x2+5,i_rc.y+(FontH(clfont)*(_MAX+2)),0,0,0,MMBackgrBordClr,MMBackgrClr); \ 000000C4 7C0494E5 LDR R0,[R4, #+1148] \ 000000C8 ........ _BLF FontH,??FontH??rA \ 000000CC 0070A0E1 MOV R7,R0 \ 000000D0 7C0494E5 LDR R0,[R4, #+1148] \ 000000D4 ........ _BLF FontH,??FontH??rA \ 000000D8 F210D4E1 LDRSH R1,[R4, #+2] \ 000000DC 40002DE9 PUSH {R6} \ 000000E0 20002DE9 PUSH {R5} \ 000000E4 0020A0E3 MOV R2,#+0 \ 000000E8 04002DE9 PUSH {R2} \ 000000EC 04002DE9 PUSH {R2} \ 000000F0 04002DE9 PUSH {R2} \ 000000F4 0C20A0E3 MOV R2,#+12 \ 000000F8 921723E0 MLA R3,R2,R7,R1 \ 000000FC F420D4E1 LDRSH R2,[R4, #+4] \ 00000100 011080E0 ADD R1,R0,R1 \ 00000104 F000D4E1 LDRSH R0,[R4, #+0] \ 00000108 052082E2 ADD R2,R2,#+5 \ 0000010C 050040E2 SUB R0,R0,#+5 \ 00000110 500100EF SWI +336 4626 PrintText(i_rc.x,i_rc.y+(FontH(clfont)*2),ixtext,0,clfont,1,1,0,0,i_rc.x2-i_rc.x);//item name \ 00000114 7C0494E5 LDR R0,[R4, #+1148] \ 00000118 ........ _BLF FontH,??FontH??rA \ 0000011C F420D4E1 LDRSH R2,[R4, #+4] \ 00000120 0010A0E1 MOV R1,R0 \ 00000124 F000D4E1 LDRSH R0,[R4, #+0] \ 00000128 0030A0E3 MOV R3,#+0 \ 0000012C 002042E0 SUB R2,R2,R0 \ 00000130 04002DE9 PUSH {R2} \ 00000134 0020A0E3 MOV R2,#+0 \ 00000138 04002DE9 PUSH {R2} \ 0000013C 04002DE9 PUSH {R2} \ 00000140 0120A0E3 MOV R2,#+1 \ 00000144 04002DE9 PUSH {R2} \ 00000148 04002DE9 PUSH {R2} \ 0000014C 7C2494E5 LDR R2,[R4, #+1148] \ 00000150 04002DE9 PUSH {R2} \ 00000154 F250D4E1 LDRSH R5,[R4, #+2] \ 00000158 3820A0E3 MOV R2,#+56 \ 0000015C 602E82E3 ORR R2,R2,#0x600 \ 00000160 042082E0 ADD R2,R2,R4 \ 00000164 811085E0 ADD R1,R5,R1, LSL #+1 \ 00000168 ........ _BLF PrintText,??PrintText??rA \ 0000016C 2CD08DE2 ADD SP,SP,#+44 4627 } 4628 GBS_StartTimerProc(&i_tmr, 100, I_Redraw); \ ??I_OnRedraw_1: \ 00000170 24209FE5 LDR R2,??I_OnRedraw_0+0x10 ;; I_Redraw \ 00000174 6410A0E3 MOV R1,#+100 \ 00000178 8800A0E3 MOV R0,#+136 \ 0000017C 8C0D80E3 ORR R0,R0,#0x2300 \ 00000180 040080E0 ADD R0,R0,R4 \ 00000184 4D0000EF SWI +77 4629 } \ 00000188 F080BDE8 POP {R4-R7,PC} ;; return \ ??I_OnRedraw_0: \ 0000018C ........ DC32 MMBackgrClr \ 00000190 ........ DC32 screen \ 00000194 ........ DC32 `?` \ 00000198 ........ DC32 MMBackgrBordClr \ 0000019C ........ DC32 I_Redraw 4630 \ In segment CODE, align 4, keep-with-next 4631 void I_onCreate(MAIN_GUI *data, void *(*malloc_adr)(int)) 4632 { \ I_onCreate: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 4633 if(isSystemFont) clfont=100+pngFont; \ 00000008 ........ LDR R0,??DataTable183 ;; isSystemFont \ 0000000C 000090E5 LDR R0,[R0, #+0] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 0300000A BEQ ??I_onCreate_0 \ 00000018 ........ LDR R0,??DataTable184 ;; pngFont \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 640080E2 ADD R0,R0,#+100 \ 00000024 000000EA B ??I_onCreate_1 4634 else clfont=2; \ ??I_onCreate_0: \ 00000028 0200A0E3 MOV R0,#+2 \ ??I_onCreate_1: \ 0000002C ........ LDR R5,??DataTable185 ;; i_rc \ 00000030 7C0485E5 STR R0,[R5, #+1148] 4635 DoScreen(); \ 00000034 ........ _BLF DoScreen,??DoScreen??rA 4636 #ifdef ELKA 4637 i_rc.x=30; \ 00000038 1E00A0E3 MOV R0,#+30 \ 0000003C B000C5E1 STRH R0,[R5, #+0] 4638 i_rc.x2=ScreenW()-25; \ 00000040 888100EF SWI +33160 \ 00000044 190040E2 SUB R0,R0,#+25 \ 00000048 B400C5E1 STRH R0,[R5, #+4] 4639 #else 4640 i_rc.x=5; 4641 i_rc.x2=ScreenW()-5; 4642 #endif 4643 i_rc.y=hy+5; \ 0000004C 780495E5 LDR R0,[R5, #+1144] \ 00000050 050080E2 ADD R0,R0,#+5 \ 00000054 B200C5E1 STRH R0,[R5, #+2] 4644 i_rc.y2=i_rc.y+(FontH(clfont)*(_MAX+3)); \ 00000058 7C0495E5 LDR R0,[R5, #+1148] \ 0000005C ........ _BLF FontH,??FontH??rA \ 00000060 F210D5E1 LDRSH R1,[R5, #+2] \ 00000064 0D20A0E3 MOV R2,#+13 \ 00000068 921020E0 MLA R0,R2,R0,R1 \ 0000006C B600C5E1 STRH R0,[R5, #+6] 4645 // StoreXYXYToRECT(&i_rc,30,hy+5,ScreenW()-25,i_rc.y+(FontH(clfont)*(_MAX+4))); 4646 SetCanvasFlag(1); \ 00000070 0100A0E3 MOV R0,#+1 \ 00000074 ........ _BLF SetCanvasFlag,??SetCanvasFlag??rA 4647 i_curpos=1; \ 00000078 0100A0E3 MOV R0,#+1 \ 0000007C 800485E5 STR R0,[R5, #+1152] 4648 data->gui.state=1; \ 00000080 0C00C4E5 STRB R0,[R4, #+12] 4649 } \ 00000084 3080BDE8 POP {R4,R5,PC} ;; return 4650 \ In segment CODE, align 4, keep-with-next 4651 void I_onClose(MAIN_GUI *data, void (*mfree_adr)(void *)) 4652 { \ I_onClose: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 4653 mfree(screen.bitmap); \ 00000008 18009FE5 LDR R0,??I_onClose_0 ;; screen + 8 \ 0000000C 000090E5 LDR R0,[R0, #+0] \ 00000010 150000EF SWI +21 4654 GBS_DelTimer(&i_tmr); \ 00000014 10009FE5 LDR R0,??I_onClose_0+0x4 ;; i_rc + 9096 \ 00000018 8C0100EF SWI +396 4655 data->gui.state=0; \ 0000001C 0000A0E3 MOV R0,#+0 \ 00000020 0C00C4E5 STRB R0,[R4, #+12] 4656 } \ 00000024 1080BDE8 POP {R4,PC} ;; return \ ??I_onClose_0: \ 00000028 ........ DC32 screen + 8 \ 0000002C ........ DC32 i_rc + 9096 4657 \ In segment CODE, align 4, keep-with-next 4658 void I_onFocus(MAIN_GUI *data, void *(*malloc_adr)(int), void (*mfree_adr)(void *)) 4659 { \ I_onFocus: \ 00000000 00402DE9 PUSH {LR} 4660 data->gui.state=2; \ 00000004 0210A0E3 MOV R1,#+2 \ 00000008 0C10C0E5 STRB R1,[R0, #+12] 4661 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 4662 } \ 00000010 0080BDE8 POP {PC} ;; return 4663 \ In segment CODE, align 4, keep-with-next 4664 void I_onUnfocus(MAIN_GUI *data, void (*mfree_adr)(void *)) 4665 { 4666 if (data->gui.state!=2) return; \ I_onUnfocus: \ 00000000 0C10D0E5 LDRB R1,[R0, #+12] \ 00000004 020051E3 CMP R1,#+2 4667 data->gui.state=1; \ 00000008 0110A003 MOVEQ R1,#+1 \ 0000000C 0C10C005 STRBEQ R1,[R0, #+12] 4668 } \ 00000010 1EFF2FE1 BX LR ;; return 4669 \ In segment CODE, align 4, keep-with-next 4670 int I_OnKey(MAIN_GUI *data, GUI_MSG *msg) 4671 { \ I_OnKey: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 0140A0E1 MOV R4,R1 4672 DirectRedrawGUI(); 4673 if (msg->gbsmsg->msg==KEY_DOWN || msg->gbsmsg->msg==LONG_PRESS) \ 00000008 9550A0E3 MOV R5,#+149 \ 0000000C 405F85E3 ORR R5,R5,#0x100 \ 00000010 3F0100EF SWI +319 \ 00000014 044094E5 LDR R4,[R4, #+4] \ 00000018 026045E2 SUB R6,R5,#+2 \ 0000001C 040094E5 LDR R0,[R4, #+4] \ 00000020 060050E1 CMP R0,R6 \ 00000024 05005011 CMPNE R0,R5 \ 00000028 0B00001A BNE ??I_OnKey_0 4674 { 4675 switch(msg->gbsmsg->submess) \ 0000002C 080094E5 LDR R0,[R4, #+8] \ 00000030 040050E2 SUBS R0,R0,#+4 \ 00000034 08005012 SUBSNE R0,R0,#+8 \ 00000038 1E00000A BEQ ??I_OnKey_1 \ 0000003C 2F0050E2 SUBS R0,R0,#+47 \ 00000040 0400000A BEQ ??I_OnKey_2 \ 00000044 010050E2 SUBS R0,R0,#+1 \ 00000048 1800000A BEQ ??I_OnKey_3 \ 0000004C 010050E2 SUBS R0,R0,#+1 \ 00000050 1800000A BEQ ??I_OnKey_1 \ 00000054 000000EA B ??I_OnKey_0 4676 { 4677 case UP_BUTTON: I_MoveUp(); break; \ ??I_OnKey_2: \ 00000058 ........ BL I_MoveUp 4678 case DOWN_BUTTON: I_MoveDown(); break; 4679 case LEFT_BUTTON: case RIGHT_SOFT:case RED_BUTTON: return (1); 4680 } 4681 } 4682 if (msg->gbsmsg->msg==KEY_DOWN || msg->gbsmsg->msg==LONG_PRESS) \ ??I_OnKey_0: \ 0000005C 040094E5 LDR R0,[R4, #+4] \ 00000060 060050E1 CMP R0,R6 \ 00000064 05005011 CMPNE R0,R5 \ 00000068 0E00001A BNE ??I_OnKey_4 4683 { 4684 switch(msg->gbsmsg->submess) \ 0000006C 080094E5 LDR R0,[R4, #+8] \ 00000070 010050E2 SUBS R0,R0,#+1 \ 00000074 19005012 SUBSNE R0,R0,#+25 \ 00000078 24005012 SUBSNE R0,R0,#+36 \ 0000007C 0900001A BNE ??I_OnKey_4 4685 { 4686 case ENTER_BUTTON: case LEFT_SOFT: case RIGHT_BUTTON: 4687 { 4688 CLIST *t; 4689 t=FindContactByUin(uinContact); 4690 t->isIndividSet=1; \ 00000080 ........ LDR R4,??DataTable194 ;; i_rc \ 00000084 740494E5 LDR R0,[R4, #+1140] \ 00000088 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 0000008C 0110A0E3 MOV R1,#+1 \ 00000090 641080E5 STR R1,[R0, #+100] 4691 ((void (*)(void))(menuproc[i_curpos-1]))(); \ 00000094 800494E5 LDR R0,[R4, #+1152] \ 00000098 000184E0 ADD R0,R4,R0, LSL #+2 \ 0000009C 0C0690E5 LDR R0,[R0, #+1548] \ 000000A0 30FF2FE1 BLX R0 4692 REDRAW(); \ 000000A4 720100EF SWI +370 4693 } 4694 break; 4695 } 4696 } 4697 4698 return(0); \ ??I_OnKey_4: \ 000000A8 0000A0E3 MOV R0,#+0 \ 000000AC 7080BDE8 POP {R4-R6,PC} ;; return \ ??I_OnKey_3: \ 000000B0 ........ BL I_MoveDown \ 000000B4 E8FFFFEA B ??I_OnKey_0 \ ??I_OnKey_1: \ 000000B8 0100A0E3 MOV R0,#+1 \ 000000BC 7080BDE8 POP {R4-R6,PC} 4699 } 4700 4701 extern void kill_data(void *p, void (*func_p)(void *)); 4702 \ In segment CODE, align 4, keep-with-next 4703 int I_method8(void){return(0);} \ I_method8: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return \ In segment CODE, align 4, keep-with-next 4704 int I_method9(void){return(0);} \ I_method9: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 4705 4706 const void * const I_gui_methods[11]={ 4707 (void *)I_OnRedraw, 4708 (void *)I_onCreate, 4709 (void *)I_onClose, 4710 (void *)I_onFocus, 4711 (void *)I_onUnfocus, 4712 (void *)I_OnKey, 4713 0, 4714 (void *)kill_data, 4715 (void *)I_method8, 4716 (void *)I_method9, 4717 0 4718 }; 4719 \ In segment CODE, align 4, keep-with-next 4720 int CreateContactMenu(CLIST *t) 4721 { 4722 uinContact=t->uin; \ CreateContactMenu: \ 00000000 ........ LDR R1,??DataTable187 ;; i_rc + 1140 \ 00000004 10402DE9 PUSH {R4,LR} \ 00000008 0C0090E5 LDR R0,[R0, #+12] \ 0000000C 000081E5 STR R0,[R1, #+0] 4723 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); \ 00000010 4000A0E3 MOV R0,#+64 \ 00000014 140000EF SWI +20 \ 00000018 0040A0E1 MOV R4,R0 4724 zeromem(main_gui,sizeof(MAIN_GUI)); \ 0000001C 4010A0E3 MOV R1,#+64 \ 00000020 1D0100EF SWI +285 4725 // main_gui->gui.canvas=(void *)(&Canvas); 4726 main_gui->gui.methods=(void *)I_gui_methods; \ 00000024 14009FE5 LDR R0,??CreateContactMenu_0 ;; I_gui_methods \ 00000028 040084E5 STR R0,[R4, #+4] 4727 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); \ 0000002C 158000EF SWI +32789 \ 00000030 200084E5 STR R0,[R4, #+32] 4728 //patch_rect((RECT*)&Canvas,0,YDISP,ScreenW()-1,ScreenH()-1); 4729 return CreateGUI(main_gui); \ 00000034 0400A0E1 MOV R0,R4 \ 00000038 370100EF SWI +311 \ 0000003C 1080BDE8 POP {R4,PC} ;; return \ ??CreateContactMenu_0: \ 00000040 ........ DC32 I_gui_methods 4730 } 4731 4732 /*********************************************************************/ 4733 4734 int itemFromDisp;//кол-во на экране 4735 int totalItems;//общее количество итемов 4736 //int curpos=0;//позичия курсора 4737 int curpage=1;//текущая страница 4738 int collum=0;//столбцы))) 0 - первый, 1- второй 4739 const char _t[]="%t"; 4740 const char _d[]="%d"; 4741 //int clfont; 4742 4743 #ifdef ELKA 4744 #ifndef ICONBAR 4745 #undef YDISP 4746 #define YDISP 0 4747 #endif 4748 #endif 4749 4750 #define CLIST_Y1 (YDISP+FontH(clfont)+4) 4751 4752 \ In segment CODE, align 4, keep-with-next 4753 void RecountMenu(CLIST *req, int needfocus) 4754 { \ RecountMenu: \ 00000000 70402DE9 PUSH {R4-R6,LR} 4755 int i; 4756 int j; 4757 if (!maingui_id) return; //Нечего считать \ 00000004 ........ LDR R5,??DataTable194 ;; i_rc \ 00000008 0140A0E1 MOV R4,R1 \ 0000000C F81295E5 LDR R1,[R5, #+760] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 7080BD08 POPEQ {R4-R6,PC} 4758 if (req==NULL) \ 00000018 000050E3 CMP R0,#+0 4759 { 4760 j=0; \ 0000001C 0060A003 MOVEQ R6,#+0 \ 00000020 0100000A BEQ ??RecountMenu_0 4761 } 4762 else 4763 { 4764 j=FindContactByContact(req); \ 00000024 ........ _BLF FindContactByContact,??FindContactByContact??rA \ 00000028 0060A0E1 MOV R6,R0 4765 } 4766 i=CountContacts(); \ ??RecountMenu_0: \ 0000002C ........ _BLF CountContacts,??CountContacts??rA 4767 if (j>=i) j=i-1; \ 00000030 000056E1 CMP R6,R0 \ 00000034 016040A2 SUBGE R6,R0,#+1 4768 if (j<0) j=0; \ 00000038 000056E3 CMP R6,#+0 \ 0000003C 0060A043 MOVMI R6,#+0 4769 if(needfocus) curpos=j; \ 00000040 000054E3 CMP R4,#+0 \ 00000044 70648515 STRNE R6,[R5, #+1136] 4770 // if (IsGuiOnTop(contactlist_menu_id)) 4771 SMART_REDRAW();//DirectRedrawGUI_ID(contactlist_menu_id);//contactlist_menu_id \ 00000048 ........ BL SMART_REDRAW 4772 } \ 0000004C 7080BDE8 POP {R4-R6,PC} ;; return 4773 4774 \ In segment CODE, align 4, keep-with-next 4775 void DrawStr(int x,int y,char*s,char *color,int font,int align) 4776 { \ DrawStr: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 18709DE5 LDR R7,[SP, #+24] \ 0000000C 1C809DE5 LDR R8,[SP, #+28] \ 00000010 0150A0E1 MOV R5,R1 4777 SetFontColor(color,transparent,0); \ 00000014 ........ LDR R1,??DataTable190 ;; i_rc + 9084 \ 00000018 0260A0E1 MOV R6,R2 \ 0000001C 0300A0E1 MOV R0,R3 \ 00000020 0020A0E3 MOV R2,#+0 \ 00000024 ........ _BLF SetFontColor,??SetFontColor??rA 4778 PrintField(x,y,s,align,font,1);//capacity in header \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 01002DE9 PUSH {R0} \ 00000030 80002DE9 PUSH {R7} \ 00000034 0830A0E1 MOV R3,R8 \ 00000038 0620A0E1 MOV R2,R6 \ 0000003C 0510A0E1 MOV R1,R5 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 ........ _BLF PrintField,??PrintField??rA 4779 //void PrintText( int x, int y, char *str, int align, int font, int space, int lineSpace, int isScroll, short fixSize, int maxLen); 4780 } \ 00000048 F381BDE8 POP {R0,R1,R4-R8,PC} ;; return 4781 \ In segment CODE, align 4, keep-with-next 4782 void DrawText(int x,int y,int x2,char*s,char *color,int font,int align,int isScroll) 4783 { \ DrawText: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 24809DE5 LDR R8,[SP, #+36] \ 00000008 28909DE5 LDR R9,[SP, #+40] \ 0000000C 2CA09DE5 LDR R10,[SP, #+44] \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 20009DE5 LDR R0,[SP, #+32] \ 00000018 0150A0E1 MOV R5,R1 4784 SetFontColor(color,transparent,0); \ 0000001C ........ LDR R1,??DataTable190 ;; i_rc + 9084 \ 00000020 0260A0E1 MOV R6,R2 \ 00000024 0370A0E1 MOV R7,R3 \ 00000028 0020A0E3 MOV R2,#+0 \ 0000002C ........ _BLF SetFontColor,??SetFontColor??rA 4785 // SetScrollEdgeDelay(0); 4786 PrintText(x,y,s,align,font,1,350,isScroll,0,x2-x); \ 00000030 040046E0 SUB R0,R6,R4 \ 00000034 01002DE9 PUSH {R0} \ 00000038 0930A0E1 MOV R3,R9 \ 0000003C 0720A0E1 MOV R2,R7 \ 00000040 0510A0E1 MOV R1,R5 \ 00000044 0000A0E3 MOV R0,#+0 \ 00000048 01002DE9 PUSH {R0} \ 0000004C 00042DE9 PUSH {R10} \ 00000050 5E00A0E3 MOV R0,#+94 \ 00000054 400F80E3 ORR R0,R0,#0x100 \ 00000058 01002DE9 PUSH {R0} \ 0000005C 0100A0E3 MOV R0,#+1 \ 00000060 01002DE9 PUSH {R0} \ 00000064 00012DE9 PUSH {R8} \ 00000068 0400A0E1 MOV R0,R4 \ 0000006C ........ _BLF PrintText,??PrintText??rA 4787 //int x, int y, char *str, int align, int font, int space, int lineSpace, int isScroll, short fixSize, int maxLen); 4788 } \ 00000070 18D08DE2 ADD SP,SP,#+24 \ 00000074 F087BDE8 POP {R4-R10,PC} ;; return 4789 4790 4791 IMGHDR screen3={0,0,8,""}; 4792 int shot_soft=0; 4793 \ In segment CODE, align 4, keep-with-next 4794 void DoScreen3(int h) 4795 { \ DoScreen3: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 4796 //int SCREENSIZE = ScreenH()*ScreenW(); 4797 int HSIZE = (ScreenH()-h)*ScreenW(); 4798 int ScrH=h+2; 4799 int ScrW=ScreenW(); 4800 char *ms=RamScreenBuffer(); 4801 screen3.w=ScrW; \ 00000004 ........ LDR R8,??DataTable194 ;; i_rc \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 898100EF SWI +33161 \ 00000010 045040E0 SUB R5,R0,R4 \ 00000014 888100EF SWI +33160 \ 00000018 900505E0 MUL R5,R0,R5 \ 0000001C 024084E2 ADD R4,R4,#+2 \ 00000020 888100EF SWI +33160 \ 00000024 0060A0E1 MOV R6,R0 \ 00000028 E08000EF SWI +32992 \ 0000002C 0070A0E1 MOV R7,R0 4802 screen3.h=ScrH; 4803 screen3.bitmap=malloc(ScrW*ScrH*2); \ 00000030 940600E0 MUL R0,R4,R6 \ 00000034 B860C8E1 STRH R6,[R8, #+8] \ 00000038 BA40C8E1 STRH R4,[R8, #+10] \ 0000003C 8040A0E1 LSL R4,R0,#+1 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 140000EF SWI +20 \ 00000048 100088E5 STR R0,[R8, #+16] 4804 ms+=(HSIZE*2); 4805 memcpy(screen3.bitmap, ms, ScrW*ScrH*2); \ 0000004C 0420A0E1 MOV R2,R4 \ 00000050 851087E0 ADD R1,R7,R5, LSL #+1 \ 00000054 1E0100EF SWI +286 4806 } \ 00000058 F081BDE8 POP {R4-R8,PC} ;; return 4807 \ In segment CODE, align 4, keep-with-next 4808 void DrawSoftKeys(char *left,char *right) 4809 { \ DrawSoftKeys: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 \ 00000008 0180A0E1 MOV R8,R1 4810 TTime t; 4811 char *s=malloc(32); \ 0000000C 2000A0E3 MOV R0,#+32 \ 00000010 140000EF SWI +20 \ 00000014 0090A0E1 MOV R9,R0 4812 if(!PNG_SOFTKEY) clfont=100+HeadFont; \ 00000018 ........ LDR R0,??DataTable198 ;; PNG_SOFTKEY \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 000050E3 CMP R0,#+0 \ 00000024 0300001A BNE ??DrawSoftKeys_0 \ 00000028 ........ LDR R0,??DataTable205 ;; HeadFont \ 0000002C 000090E5 LDR R0,[R0, #+0] \ 00000030 640080E2 ADD R0,R0,#+100 \ 00000034 000000EA B ??DrawSoftKeys_1 4813 else clfont=4; \ ??DrawSoftKeys_0: \ 00000038 0400A0E3 MOV R0,#+4 \ ??DrawSoftKeys_1: \ 0000003C ........ LDR R4,??DataTable194 ;; i_rc \ 00000040 7C0484E5 STR R0,[R4, #+1148] 4814 4815 int FntH=FontH(clfont); \ 00000044 ........ _BLF FontH,??FontH??rA \ 00000048 0050A0E1 MOV R5,R0 4816 int scr_w=ScreenW()-1; \ 0000004C 888100EF SWI +33160 \ 00000050 016040E2 SUB R6,R0,#+1 4817 int scr_h=ScreenH()-1; \ 00000054 898100EF SWI +33161 \ 00000058 017040E2 SUB R7,R0,#+1 4818 4819 LockSched(); \ 0000005C 460100EF SWI +326 4820 #ifdef ELKA 4821 if(shot_soft!=2) \ 00000060 940494E5 LDR R0,[R4, #+1172] \ 00000064 020050E3 CMP R0,#+2 \ 00000068 3400000A BEQ ??DrawSoftKeys_2 4822 { 4823 DrawRoundedFrame(0,ScreenH()-1-FntH-2,ScreenW()-1,ScreenH()-1,0,0,0,clrBlack,clrBlack); \ 0000006C 898100EF SWI +33161 \ 00000070 0080A0E1 MOV R8,R0 \ 00000074 888100EF SWI +33160 \ 00000078 0090A0E1 MOV R9,R0 \ 0000007C 898100EF SWI +33161 \ 00000080 7010A0E3 MOV R1,#+112 \ 00000084 8C1D81E3 ORR R1,R1,#0x2300 \ 00000088 041081E0 ADD R1,R1,R4 \ 0000008C 0120A0E1 MOV R2,R1 \ 00000090 04002DE9 PUSH {R2} \ 00000094 02002DE9 PUSH {R1} \ 00000098 013048E2 SUB R3,R8,#+1 \ 0000009C 012049E2 SUB R2,R9,#+1 \ 000000A0 010040E2 SUB R0,R0,#+1 \ 000000A4 0010A0E3 MOV R1,#+0 \ 000000A8 02002DE9 PUSH {R1} \ 000000AC 02002DE9 PUSH {R1} \ 000000B0 02002DE9 PUSH {R1} \ 000000B4 050040E0 SUB R0,R0,R5 \ 000000B8 021040E2 SUB R1,R0,#+2 \ 000000BC 0000A0E3 MOV R0,#+0 \ 000000C0 500100EF SWI +336 4824 for(int i=FontH(clfont);i>0;i-=2) \ 000000C4 7C0494E5 LDR R0,[R4, #+1148] \ 000000C8 ........ _BLF FontH,??FontH??rA \ 000000CC 0080A0E1 MOV R8,R0 \ 000000D0 010058E3 CMP R8,#+1 \ 000000D4 14D08DE2 ADD SP,SP,#+20 \ 000000D8 110000BA BLT ??DrawSoftKeys_3 \ 000000DC ........ LDR R10,??DataTable201 ;; SoftBackgrClr \ 000000E0 057047E0 SUB R7,R7,R5 \ 000000E4 029047E2 SUB R9,R7,#+2 4825 DrawRoundedFrame(0,scr_h-FntH-2,scr_w,scr_h-FntH+i,0,0,0,SoftBackgrClr,SoftBackgrClr); \ ??DrawSoftKeys_4: \ 000000E8 073088E0 ADD R3,R8,R7 \ 000000EC 0A00A0E1 MOV R0,R10 \ 000000F0 01002DE9 PUSH {R0} \ 000000F4 01002DE9 PUSH {R0} \ 000000F8 0620A0E1 MOV R2,R6 \ 000000FC 0910A0E1 MOV R1,R9 \ 00000100 028048E2 SUB R8,R8,#+2 \ 00000104 0000A0E3 MOV R0,#+0 \ 00000108 01002DE9 PUSH {R0} \ 0000010C 01002DE9 PUSH {R0} \ 00000110 01002DE9 PUSH {R0} \ 00000114 500100EF SWI +336 \ 00000118 010058E3 CMP R8,#+1 \ 0000011C 14D08DE2 ADD SP,SP,#+20 \ 00000120 F0FFFFAA BGE ??DrawSoftKeys_4 4826 4827 DoScreen3(FntH); \ ??DrawSoftKeys_3: \ 00000124 0500A0E1 MOV R0,R5 \ 00000128 ........ BL DoScreen3 4828 shot_soft++; \ 0000012C 940494E5 LDR R0,[R4, #+1172] \ 00000130 010080E2 ADD R0,R0,#+1 \ 00000134 940484E5 STR R0,[R4, #+1172] 4829 SMART_REDRAW(); \ 00000138 ........ BL SMART_REDRAW 4830 return; \ 0000013C F78FBDE8 POP {R0-R2,R4-R11,PC} 4831 } 4832 else 4833 DrwImage(&screen3,0,scr_h-FntH,0,0); 4834 #else 4835 DrawRoundedFrame(0,ScreenH()-1-FntH-2,ScreenW()-1,ScreenH()-1,0,0,0,clrBlack,clrBlack); 4836 for(int i=FontH(clfont);i>0;i-=2) 4837 DrawRoundedFrame(0,scr_h-FntH-2,scr_w,scr_h-FntH+i,0,0,0,SoftBackgrClr,SoftBackgrClr); 4838 #endif 4839 4840 SetFontColor(SoftFontClr,transparent,0); \ ??DrawSoftKeys_2: \ 00000140 ........ LDR R11,??DataTable202 ;; SoftFontClr \ 00000144 0000A0E3 MOV R0,#+0 \ 00000148 01002DE9 PUSH {R0} \ 0000014C 0030A0E3 MOV R3,#+0 \ 00000150 052047E0 SUB R2,R7,R5 \ 00000154 0010A0E1 MOV R1,R0 \ 00000158 080084E2 ADD R0,R4,#+8 \ 0000015C ........ BL DrwImage \ 00000160 7C00A0E3 MOV R0,#+124 \ 00000164 8C0D80E3 ORR R0,R0,#0x2300 \ 00000168 04A080E0 ADD R10,R0,R4 \ 0000016C 0020A0E3 MOV R2,#+0 \ 00000170 0A10A0E1 MOV R1,R10 \ 00000174 0B00A0E1 MOV R0,R11 \ 00000178 ........ _BLF SetFontColor,??SetFontColor??rA 4841 4842 if(sendq_l) \ 0000017C 010047E2 SUB R0,R7,#+1 \ 00000180 ........ LDR R7,??DataTable197 ;; menutext \ 00000184 055040E0 SUB R5,R0,R5 \ 00000188 CC0294E5 LDR R0,[R4, #+716] \ 0000018C 04D08DE2 ADD SP,SP,#+4 \ 00000190 000050E3 CMP R0,#+0 \ 00000194 0A00000A BEQ ??DrawSoftKeys_5 4843 { 4844 sprintf(s,"Q: %d b",sendq_l); \ 00000198 CC2294E5 LDR R2,[R4, #+716] \ 0000019C B81087E2 ADD R1,R7,#+184 \ 000001A0 0900A0E1 MOV R0,R9 \ 000001A4 160000EF SWI +22 4845 PrintField(scr_w,scr_h-1-FntH,s,2,clfont,1); \ 000001A8 0100A0E3 MOV R0,#+1 \ 000001AC 01002DE9 PUSH {R0} \ 000001B0 7C0494E5 LDR R0,[R4, #+1148] \ 000001B4 0230A0E3 MOV R3,#+2 \ 000001B8 01002DE9 PUSH {R0} \ 000001BC 0920A0E1 MOV R2,R9 \ 000001C0 050000EA B ??DrawSoftKeys_6 4846 // DrawStr(2,scr_h-1-FntH,s,SoftFontClr,clfont,2); 4847 } 4848 else 4849 PrintField(scr_w,scr_h-1-FntH,right,2,clfont,1); \ ??DrawSoftKeys_5: \ 000001C4 0100A0E3 MOV R0,#+1 \ 000001C8 01002DE9 PUSH {R0} \ 000001CC 7C0494E5 LDR R0,[R4, #+1148] \ 000001D0 0230A0E3 MOV R3,#+2 \ 000001D4 01002DE9 PUSH {R0} \ 000001D8 0820A0E1 MOV R2,R8 \ ??DrawSoftKeys_6: \ 000001DC 0510A0E1 MOV R1,R5 \ 000001E0 0600A0E1 MOV R0,R6 \ 000001E4 ........ _BLF PrintField,??PrintField??rA \ 000001E8 08D08DE2 ADD SP,SP,#+8 4850 4851 DrawStr(2,scr_h-1-FntH,left,SoftFontClr,clfont,0); \ 000001EC 7C8494E5 LDR R8,[R4, #+1148] \ 000001F0 0020A0E3 MOV R2,#+0 \ 000001F4 0A10A0E1 MOV R1,R10 \ 000001F8 0B00A0E1 MOV R0,R11 \ 000001FC ........ _BLF SetFontColor,??SetFontColor??rA \ 00000200 0100A0E3 MOV R0,#+1 \ 00000204 01002DE9 PUSH {R0} \ 00000208 00012DE9 PUSH {R8} \ 0000020C 10209DE5 LDR R2,[SP, #+16] \ 00000210 0030A0E3 MOV R3,#+0 \ 00000214 0510A0E1 MOV R1,R5 \ 00000218 0200A0E3 MOV R0,#+2 \ 0000021C ........ _BLF PrintField,??PrintField??rA 4852 4853 GetDateTime(0,&t); \ 00000220 08108DE2 ADD R1,SP,#+8 \ 00000224 0000A0E3 MOV R0,#+0 \ 00000228 B40000EF SWI +180 4854 sprintf(s,"%02d:%02d",t.hour,t.min); \ 0000022C 0930DDE5 LDRB R3,[SP, #+9] \ 00000230 0820DDE5 LDRB R2,[SP, #+8] \ 00000234 801087E2 ADD R1,R7,#+128 \ 00000238 0900A0E1 MOV R0,R9 \ 0000023C 160000EF SWI +22 4855 PrintField(scr_w/2,scr_h-1-FntH,s,1,clfont,1); \ 00000240 0100A0E3 MOV R0,#+1 \ 00000244 01002DE9 PUSH {R0} \ 00000248 7C0494E5 LDR R0,[R4, #+1148] \ 0000024C 0130A0E3 MOV R3,#+1 \ 00000250 01002DE9 PUSH {R0} \ 00000254 0920A0E1 MOV R2,R9 \ 00000258 0510A0E1 MOV R1,R5 \ 0000025C A60F86E0 ADD R0,R6,R6, LSR #+31 \ 00000260 C000A0E1 ASR R0,R0,#+1 \ 00000264 ........ _BLF PrintField,??PrintField??rA 4856 UnlockSched(); \ 00000268 470100EF SWI +327 4857 4858 mfree(s); \ 0000026C 0900A0E1 MOV R0,R9 \ 00000270 150000EF SWI +21 4859 } \ 00000274 10D08DE2 ADD SP,SP,#+16 \ 00000278 F78FBDE8 POP {R0-R2,R4-R11,PC} ;; return 4860 \ In segment CODE, align 4, keep-with-next 4861 void DrawSoftInfo(CLIST *t) 4862 { \ DrawSoftInfo: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 14D04DE2 SUB SP,SP,#+20 4863 TTime tm; 4864 char *s=malloc(32); \ 00000008 2000A0E3 MOV R0,#+32 \ 0000000C 140000EF SWI +20 \ 00000010 0040A0E1 MOV R4,R0 4865 if(!PNG_SOFTKEY) clfont=100+HeadFont; \ 00000014 ........ LDR R0,??DataTable198 ;; PNG_SOFTKEY \ 00000018 000090E5 LDR R0,[R0, #+0] \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 0300001A BNE ??DrawSoftInfo_0 \ 00000024 ........ LDR R0,??DataTable205 ;; HeadFont \ 00000028 000090E5 LDR R0,[R0, #+0] \ 0000002C 640080E2 ADD R0,R0,#+100 \ 00000030 000000EA B ??DrawSoftInfo_1 4866 else clfont=4; \ ??DrawSoftInfo_0: \ 00000034 0400A0E3 MOV R0,#+4 \ ??DrawSoftInfo_1: \ 00000038 ........ LDR R5,??DataTable208 ;; i_rc \ 0000003C 7C0485E5 STR R0,[R5, #+1148] 4867 4868 int FntH=FontH(clfont)*2; \ 00000040 ........ _BLF FontH,??FontH??rA \ 00000044 80A0A0E1 LSL R10,R0,#+1 4869 int scr_w=ScreenW()-1; \ 00000048 888100EF SWI +33160 \ 0000004C 016040E2 SUB R6,R0,#+1 4870 int scr_h=ScreenH()-1; \ 00000050 898100EF SWI +33161 \ 00000054 010040E2 SUB R0,R0,#+1 \ 00000058 04008DE5 STR R0,[SP, #+4] 4871 4872 4873 LockSched(); \ 0000005C 460100EF SWI +326 4874 DrawRoundedFrame(0,ScreenH()-5-FntH,ScreenW()-1,ScreenH()-1,0,0,0,clrRed,0);//Рамка \ 00000060 898100EF SWI +33161 \ 00000064 0070A0E1 MOV R7,R0 \ 00000068 888100EF SWI +33160 \ 0000006C 0080A0E1 MOV R8,R0 \ 00000070 898100EF SWI +33161 \ 00000074 0010A0E3 MOV R1,#+0 \ 00000078 02002DE9 PUSH {R1} \ 0000007C 013047E2 SUB R3,R7,#+1 \ 00000080 012048E2 SUB R2,R8,#+1 \ 00000084 050040E2 SUB R0,R0,#+5 \ 00000088 7810A0E3 MOV R1,#+120 \ 0000008C 8C1D81E3 ORR R1,R1,#0x2300 \ 00000090 051081E0 ADD R1,R1,R5 \ 00000094 02002DE9 PUSH {R1} \ 00000098 0010A0E3 MOV R1,#+0 \ 0000009C 02002DE9 PUSH {R1} \ 000000A0 02002DE9 PUSH {R1} \ 000000A4 02002DE9 PUSH {R1} \ 000000A8 0A1040E0 SUB R1,R0,R10 \ 000000AC 0000A0E3 MOV R0,#+0 \ 000000B0 500100EF SWI +336 4875 DrawRoundedFrame(1,ScreenH()-5-FntH,ScreenW()-2,ScreenH()-2,0,0,0,0,AddInfoClr);//Фон \ 000000B4 898100EF SWI +33161 \ 000000B8 0070A0E1 MOV R7,R0 \ 000000BC 888100EF SWI +33160 \ 000000C0 0080A0E1 MOV R8,R0 \ 000000C4 898100EF SWI +33161 \ 000000C8 6C139FE5 LDR R1,??DrawSoftInfo_2 ;; AddInfoClr \ 000000CC 023047E2 SUB R3,R7,#+2 \ 000000D0 02002DE9 PUSH {R1} \ 000000D4 022048E2 SUB R2,R8,#+2 \ 000000D8 050040E2 SUB R0,R0,#+5 \ 000000DC 0010A0E3 MOV R1,#+0 \ 000000E0 02002DE9 PUSH {R1} \ 000000E4 02002DE9 PUSH {R1} \ 000000E8 02002DE9 PUSH {R1} \ 000000EC 02002DE9 PUSH {R1} \ 000000F0 0A1040E0 SUB R1,R0,R10 \ 000000F4 0100A0E3 MOV R0,#+1 \ 000000F8 500100EF SWI +336 \ 000000FC 28D08DE2 ADD SP,SP,#+40 4876 4877 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //sendq_l \ 00000100 0C0495E5 LDR R0,[R5, #+1036] \ 00000104 101495E5 LDR R1,[R5, #+1040] \ 00000108 CC2295E5 LDR R2,[R5, #+716] \ 0000010C 000052E3 CMP R2,#+0 \ 00000110 0500000A BEQ ??DrawSoftInfo_3 4878 if(sendq_l) 4879 sprintf(s, "[T:%db/Q:%db]\n",RX+TX,sendq_l); \ 00000114 CC3295E5 LDR R3,[R5, #+716] \ 00000118 002081E0 ADD R2,R1,R0 \ 0000011C 1C139FE5 LDR R1,??DrawSoftInfo_2+0x4 ;; menutext + 192 \ 00000120 0400A0E1 MOV R0,R4 \ 00000124 160000EF SWI +22 \ 00000128 030000EA B ??DrawSoftInfo_4 4880 else 4881 sprintf(s, "[T:%db]\n",RX+TX); \ ??DrawSoftInfo_3: \ 0000012C 002081E0 ADD R2,R1,R0 \ 00000130 0C139FE5 LDR R1,??DrawSoftInfo_2+0x8 ;; menutext + 208 \ 00000134 0400A0E1 MOV R0,R4 \ 00000138 160000EF SWI +22 4882 PrintField(scr_w-5,scr_h-1-FntH,s,2,clfont,1); \ ??DrawSoftInfo_4: \ 0000013C 04109DE5 LDR R1,[SP, #+4] \ 00000140 0100A0E3 MOV R0,#+1 \ 00000144 011041E2 SUB R1,R1,#+1 \ 00000148 00108DE5 STR R1,[SP, #+0] \ 0000014C 01002DE9 PUSH {R0} \ 00000150 7C0495E5 LDR R0,[R5, #+1148] \ 00000154 0AB041E0 SUB R11,R1,R10 \ 00000158 01002DE9 PUSH {R0} \ 0000015C 057046E2 SUB R7,R6,#+5 \ 00000160 0230A0E3 MOV R3,#+2 \ 00000164 0420A0E1 MOV R2,R4 \ 00000168 0B10A0E1 MOV R1,R11 \ 0000016C 0700A0E1 MOV R0,R7 \ 00000170 ........ _BLF PrintField,??PrintField??rA 4883 4884 int w=GetWidth(scr_w-5,scr_h-1-FntH); \ 00000174 0B10A0E1 MOV R1,R11 \ 00000178 0700A0E1 MOV R0,R7 \ 0000017C ........ _BLF GetWidth,??GetWidth??rA \ 00000180 0070A0E1 MOV R7,R0 \ 00000184 7000A0E3 MOV R0,#+112 \ 00000188 8C0D80E3 ORR R0,R0,#0x2300 \ 0000018C 050080E0 ADD R0,R0,R5 \ 00000190 0010A0E1 MOV R1,R0 \ 00000194 02002DE9 PUSH {R1} \ 00000198 01002DE9 PUSH {R0} \ 0000019C 012046E2 SUB R2,R6,#+1 \ 000001A0 02104BE2 SUB R1,R11,#+2 \ 000001A4 0000A0E3 MOV R0,#+0 \ 000001A8 01002DE9 PUSH {R0} \ 000001AC 01002DE9 PUSH {R0} \ 000001B0 01002DE9 PUSH {R0} \ 000001B4 1C309DE5 LDR R3,[SP, #+28] \ 000001B8 070046E0 SUB R0,R6,R7 \ 000001BC 050040E2 SUB R0,R0,#+5 4885 DrawRoundedFrame(scr_w-w-5,scr_h-1-FntH-2,scr_w-1,scr_h-1,0,0,0,clrBlack,clrBlack); \ 000001C0 500100EF SWI +336 4886 4887 for(int i=FontH(clfont)*2;i>=0;i-=2) \ 000001C4 7C0495E5 LDR R0,[R5, #+1148] \ 000001C8 ........ _BLF FontH,??FontH??rA \ 000001CC 8080A0E1 LSL R8,R0,#+1 \ 000001D0 20009DE5 LDR R0,[SP, #+32] \ 000001D4 000058E3 CMP R8,#+0 \ 000001D8 0A9040E0 SUB R9,R0,R10 \ 000001DC 1CD08DE2 ADD SP,SP,#+28 \ 000001E0 1000004A BMI ??DrawSoftInfo_5 4888 DrawRoundedFrame(scr_w-w-5,scr_h-FntH-2,scr_w,scr_h-FntH+i+2,0,0,0,SoftBackgrClr,SoftBackgrClr); \ ??DrawSoftInfo_6: \ 000001E4 ........ LDR R0,??DataTable201 ;; SoftBackgrClr \ 000001E8 0620A0E1 MOV R2,R6 \ 000001EC 01002DE9 PUSH {R0} \ 000001F0 01002DE9 PUSH {R0} \ 000001F4 021049E2 SUB R1,R9,#+2 \ 000001F8 0000A0E3 MOV R0,#+0 \ 000001FC 01002DE9 PUSH {R0} \ 00000200 01002DE9 PUSH {R0} \ 00000204 01002DE9 PUSH {R0} \ 00000208 090088E0 ADD R0,R8,R9 \ 0000020C 023080E2 ADD R3,R0,#+2 \ 00000210 070046E0 SUB R0,R6,R7 \ 00000214 050040E2 SUB R0,R0,#+5 \ 00000218 500100EF SWI +336 \ 0000021C 028058E2 SUBS R8,R8,#+2 \ 00000220 14D08DE2 ADD SP,SP,#+20 \ 00000224 EEFFFF5A BPL ??DrawSoftInfo_6 4889 4890 SetFontColor(SoftFontClr,transparent,0); \ ??DrawSoftInfo_5: \ 00000228 7C00A0E3 MOV R0,#+124 \ 0000022C 8C0D80E3 ORR R0,R0,#0x2300 \ 00000230 058080E0 ADD R8,R0,R5 \ 00000234 ........ LDR R0,??DataTable202 ;; SoftFontClr \ 00000238 0020A0E3 MOV R2,#+0 \ 0000023C 0810A0E1 MOV R1,R8 \ 00000240 ........ _BLF SetFontColor,??SetFontColor??rA \ 00000244 0100A0E3 MOV R0,#+1 \ 00000248 01002DE9 PUSH {R0} \ 0000024C 7C0495E5 LDR R0,[R5, #+1148] \ 00000250 0230A0E3 MOV R3,#+2 \ 00000254 01002DE9 PUSH {R0} \ 00000258 0420A0E1 MOV R2,R4 \ 0000025C 0B10A0E1 MOV R1,R11 \ 00000260 030046E2 SUB R0,R6,#+3 4891 // DrawStr(2,scr_h-1-FntH,s,SoftFontClr,clfont,0); 4892 PrintField(scr_w-3,scr_h-1-FntH,s,2,clfont,1);//left align \ 00000264 ........ _BLF PrintField,??PrintField??rA 4893 4894 GetDateTime(0,&tm); \ 00000268 14108DE2 ADD R1,SP,#+20 \ 0000026C 0000A0E3 MOV R0,#+0 \ 00000270 B40000EF SWI +180 4895 sprintf(s,"%02d:%02d",tm.hour,tm.min); \ 00000274 CC119FE5 LDR R1,??DrawSoftInfo_2+0xC ;; menutext + 128 \ 00000278 1530DDE5 LDRB R3,[SP, #+21] \ 0000027C 1420DDE5 LDRB R2,[SP, #+20] \ 00000280 0400A0E1 MOV R0,R4 \ 00000284 160000EF SWI +22 4896 PrintField(scr_w-3,scr_h-1-(FntH/2),s,2,clfont,1);//left align \ 00000288 AA1F8AE0 ADD R1,R10,R10, LSR #+31 \ 0000028C C110A0E1 ASR R1,R1,#+1 \ 00000290 10108DE5 STR R1,[SP, #+16] \ 00000294 0100A0E3 MOV R0,#+1 \ 00000298 01002DE9 PUSH {R0} \ 0000029C 7C0495E5 LDR R0,[R5, #+1148] \ 000002A0 0230A0E3 MOV R3,#+2 \ 000002A4 01002DE9 PUSH {R0} \ 000002A8 10009DE5 LDR R0,[SP, #+16] \ 000002AC 0420A0E1 MOV R2,R4 \ 000002B0 011040E0 SUB R1,R0,R1 \ 000002B4 030046E2 SUB R0,R6,#+3 \ 000002B8 ........ _BLF PrintField,??PrintField??rA 4897 // PrintField(scr_w/2,scr_h-1-FntH,s,1,clfont,1); 4898 4899 //void DrawText(int x,int y,int x2,char*s,char *color,int font,int align,int isScroll) 4900 DrwImage(icons[GetIconIndex(t)],2,scr_h-FntH,0,0); \ 000002BC 24009DE5 LDR R0,[SP, #+36] \ 000002C0 ........ BL GetIconIndex \ 000002C4 0010A0E3 MOV R1,#+0 \ 000002C8 02002DE9 PUSH {R1} \ 000002CC 0030A0E3 MOV R3,#+0 \ 000002D0 0920A0E1 MOV R2,R9 \ 000002D4 000185E0 ADD R0,R5,R0, LSL #+2 \ 000002D8 200090E5 LDR R0,[R0, #+32] \ 000002DC 0210A0E3 MOV R1,#+2 \ 000002E0 ........ BL DrwImage 4901 DrawText(4+icons[GetIconIndex(t)]->w,scr_h-FntH,scr_w-w,(t->xtext2?t->xtext2+1:"Ошибка"),(char*)FontInfoClr,clfont,0,0); \ 000002E4 28009DE5 LDR R0,[SP, #+40] \ 000002E8 B80090E5 LDR R0,[R0, #+184] \ 000002EC 14D08DE2 ADD SP,SP,#+20 \ 000002F0 000050E3 CMP R0,#+0 \ 000002F4 50A19F05 LDREQ R10,??DrawSoftInfo_2+0x10 ;; menutext + 220 \ 000002F8 01A08012 ADDNE R10,R0,#+1 \ 000002FC 14009DE5 LDR R0,[SP, #+20] \ 00000300 ........ BL GetIconIndex \ 00000304 7C2495E5 LDR R2,[R5, #+1148] \ 00000308 000185E0 ADD R0,R5,R0, LSL #+2 \ 0000030C 00208DE5 STR R2,[SP, #+0] \ 00000310 200090E5 LDR R0,[R0, #+32] \ 00000314 0020A0E3 MOV R2,#+0 \ 00000318 B000D0E1 LDRH R0,[R0, #+0] \ 0000031C 0810A0E1 MOV R1,R8 \ 00000320 04B080E2 ADD R11,R0,#+4 \ 00000324 24019FE5 LDR R0,??DrawSoftInfo_2+0x14 ;; FontInfoClr \ 00000328 ........ _BLF SetFontColor,??SetFontColor??rA \ 0000032C 070046E0 SUB R0,R6,R7 \ 00000330 0B0040E0 SUB R0,R0,R11 \ 00000334 01002DE9 PUSH {R0} \ 00000338 0030A0E3 MOV R3,#+0 \ 0000033C 0A20A0E1 MOV R2,R10 \ 00000340 0910A0E1 MOV R1,R9 \ 00000344 0000A0E3 MOV R0,#+0 \ 00000348 01002DE9 PUSH {R0} \ 0000034C 01002DE9 PUSH {R0} \ 00000350 5E00A0E3 MOV R0,#+94 \ 00000354 400F80E3 ORR R0,R0,#0x100 \ 00000358 01002DE9 PUSH {R0} \ 0000035C 0100A0E3 MOV R0,#+1 \ 00000360 01002DE9 PUSH {R0} \ 00000364 14009DE5 LDR R0,[SP, #+20] \ 00000368 01002DE9 PUSH {R0} \ 0000036C 0B00A0E1 MOV R0,R11 \ 00000370 ........ _BLF PrintText,??PrintText??rA 4902 4903 DrwImage(GetXSByItem(t->xstate)->img,2,scr_h-(FntH/2),0,0); \ 00000374 2C009DE5 LDR R0,[SP, #+44] \ 00000378 B605D0E1 LDRH R0,[R0, #+86] \ 0000037C ........ _BLF GetXSByItem,??GetXSByItem??rA \ 00000380 1C109DE5 LDR R1,[SP, #+28] \ 00000384 20209DE5 LDR R2,[SP, #+32] \ 00000388 0030A0E3 MOV R3,#+0 \ 0000038C 029041E0 SUB R9,R1,R2 \ 00000390 0010A0E3 MOV R1,#+0 \ 00000394 02002DE9 PUSH {R1} \ 00000398 080090E5 LDR R0,[R0, #+8] \ 0000039C 0920A0E1 MOV R2,R9 \ 000003A0 0210A0E3 MOV R1,#+2 \ 000003A4 ........ BL DrwImage 4904 DrawText(4+GetXSByItem(t->xstate)->img->w,scr_h-(FntH/2),scr_w-w,t->xtext?t->xtext:"Нет хстатуса",(char*)FontInfoClr,clfont,0,0); \ 000003A8 30009DE5 LDR R0,[SP, #+48] \ 000003AC B4A090E5 LDR R10,[R0, #+180] \ 000003B0 1CD08DE2 ADD SP,SP,#+28 \ 000003B4 B605D0E1 LDRH R0,[R0, #+86] \ 000003B8 00005AE3 CMP R10,#+0 \ 000003BC 90A09F05 LDREQ R10,??DrawSoftInfo_2+0x18 ;; menutext + 168 \ 000003C0 ........ _BLF GetXSByItem,??GetXSByItem??rA \ 000003C4 080090E5 LDR R0,[R0, #+8] \ 000003C8 7C5495E5 LDR R5,[R5, #+1148] \ 000003CC B000D0E1 LDRH R0,[R0, #+0] \ 000003D0 0020A0E3 MOV R2,#+0 \ 000003D4 0810A0E1 MOV R1,R8 \ 000003D8 04B080E2 ADD R11,R0,#+4 \ 000003DC 6C009FE5 LDR R0,??DrawSoftInfo_2+0x14 ;; FontInfoClr \ 000003E0 ........ _BLF SetFontColor,??SetFontColor??rA \ 000003E4 070046E0 SUB R0,R6,R7 \ 000003E8 0B0040E0 SUB R0,R0,R11 \ 000003EC 01002DE9 PUSH {R0} \ 000003F0 0030A0E3 MOV R3,#+0 \ 000003F4 0A20A0E1 MOV R2,R10 \ 000003F8 0910A0E1 MOV R1,R9 \ 000003FC 0000A0E3 MOV R0,#+0 \ 00000400 01002DE9 PUSH {R0} \ 00000404 01002DE9 PUSH {R0} \ 00000408 5E00A0E3 MOV R0,#+94 \ 0000040C 400F80E3 ORR R0,R0,#0x100 \ 00000410 01002DE9 PUSH {R0} \ 00000414 0100A0E3 MOV R0,#+1 \ 00000418 01002DE9 PUSH {R0} \ 0000041C 20002DE9 PUSH {R5} \ 00000420 0B00A0E1 MOV R0,R11 \ 00000424 ........ _BLF PrintText,??PrintText??rA 4905 // DrawStr(2,scr_h-1-(FntH/2),t->xtext2,SoftFontClr,clfont,0); 4906 //DrawStr(2,scr_h-1-FntH,t->xtext,SoftFontClr,clfont,0); 4907 4908 UnlockSched(); \ 00000428 470100EF SWI +327 4909 4910 mfree(s); \ 0000042C 0400A0E1 MOV R0,R4 \ 00000430 150000EF SWI +21 4911 } \ 00000434 30D08DE2 ADD SP,SP,#+48 \ 00000438 F08FBDE8 POP {R4-R11,PC} ;; return \ ??DrawSoftInfo_2: \ 0000043C ........ DC32 AddInfoClr \ 00000440 ........ DC32 menutext + 192 \ 00000444 ........ DC32 menutext + 208 \ 00000448 ........ DC32 menutext + 128 \ 0000044C ........ DC32 menutext + 220 \ 00000450 ........ DC32 FontInfoClr \ 00000454 ........ DC32 menutext + 168 4912 4913 int shot_header=0; 4914 IMGHDR screen4={0,0,8,""}; \ In segment CODE, align 4, keep-with-next 4915 void DoScreen4(int h) 4916 { \ DoScreen4: \ 00000000 F0412DE9 PUSH {R4-R8,LR} 4917 //int SCREENSIZE = ScreenH()*ScreenW(); 4918 int HSIZE = (h+8)*ScreenW(); 4919 int ScrH=h+2; 4920 int ScrW=ScreenW(); 4921 char *ms=RamScreenBuffer(); 4922 screen4.w=ScrW; \ 00000004 ........ LDR R8,??DataTable208 ;; i_rc \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 085084E2 ADD R5,R4,#+8 \ 00000010 888100EF SWI +33160 \ 00000014 900505E0 MUL R5,R0,R5 \ 00000018 024084E2 ADD R4,R4,#+2 \ 0000001C 888100EF SWI +33160 \ 00000020 0060A0E1 MOV R6,R0 \ 00000024 E08000EF SWI +32992 \ 00000028 0070A0E1 MOV R7,R0 4923 screen4.h=ScrH; 4924 screen4.bitmap=malloc(ScrW*ScrH*2); \ 0000002C 940600E0 MUL R0,R4,R6 \ 00000030 B461C8E1 STRH R6,[R8, #+20] \ 00000034 B641C8E1 STRH R4,[R8, #+22] \ 00000038 8040A0E1 LSL R4,R0,#+1 \ 0000003C 0400A0E1 MOV R0,R4 \ 00000040 140000EF SWI +20 \ 00000044 1C0088E5 STR R0,[R8, #+28] 4925 ms+=(HSIZE*2); 4926 memcpy(screen4.bitmap, ms, ScrW*ScrH*2); \ 00000048 0420A0E1 MOV R2,R4 \ 0000004C 851087E0 ADD R1,R7,R5, LSL #+1 \ 00000050 1E0100EF SWI +286 4927 } \ 00000054 F081BDE8 POP {R4-R8,PC} ;; return 4928 \ In segment CODE, align 4, keep-with-next 4929 void DrawHeader() 4930 { \ DrawHeader: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 28D04DE2 SUB SP,SP,#+40 4931 SetCanvasFlag(1); \ 00000008 0100A0E3 MOV R0,#+1 \ 0000000C ........ _BLF SetCanvasFlag,??SetCanvasFlag??rA 4932 int scr_w=ScreenW()-1; \ 00000010 888100EF SWI +33160 \ 00000014 014040E2 SUB R4,R0,#+1 4933 int scr_h=ScreenH()-1; \ 00000018 898100EF SWI +33161 4934 char *s=malloc(128); \ 0000001C 8000A0E3 MOV R0,#+128 \ 00000020 140000EF SWI +20 \ 00000024 0050A0E1 MOV R5,R0 4935 char *ss=malloc(128); \ 00000028 8000A0E3 MOV R0,#+128 \ 0000002C 140000EF SWI +20 \ 00000030 0060A0E1 MOV R6,R0 4936 4937 if(!PNG_HEADER)clfont=100+HeadFont; \ 00000034 ........ LDR R0,??DataTable204 ;; PNG_HEADER \ 00000038 000090E5 LDR R0,[R0, #+0] \ 0000003C 000050E3 CMP R0,#+0 \ 00000040 0300001A BNE ??DrawHeader_1 \ 00000044 ........ LDR R0,??DataTable205 ;; HeadFont \ 00000048 000090E5 LDR R0,[R0, #+0] \ 0000004C 640080E2 ADD R0,R0,#+100 \ 00000050 000000EA B ??DrawHeader_2 4938 else clfont=4; \ ??DrawHeader_1: \ 00000054 0400A0E3 MOV R0,#+4 \ ??DrawHeader_2: \ 00000058 ........ LDR R7,??DataTable208 ;; i_rc \ 0000005C 7C0487E5 STR R0,[R7, #+1148] 4939 // char clrRed[]={0xFF,0x00,0x00,0x15}; 4940 if(icons[IS_ONLINE]) \ 00000060 4C0097E5 LDR R0,[R7, #+76] \ 00000064 000050E3 CMP R0,#+0 \ 00000068 7C0497E5 LDR R0,[R7, #+1148] \ 0000006C 0600000A BEQ ??DrawHeader_3 4941 hy=(icons[IS_ONLINE]->h > FontH(clfont)) ? (icons[IS_ONLINE]->h) : (FontH(clfont)); \ 00000070 ........ _BLF FontH,??FontH??rA \ 00000074 4C1097E5 LDR R1,[R7, #+76] \ 00000078 B220D1E1 LDRH R2,[R1, #+2] \ 0000007C 020050E1 CMP R0,R2 \ 00000080 0200A0B1 MOVLT R0,R2 \ 00000084 010000BA BLT ??DrawHeader_4 \ 00000088 7C0497E5 LDR R0,[R7, #+1148] 4942 else 4943 hy=FontH(clfont); \ ??DrawHeader_3: \ 0000008C ........ _BLF FontH,??FontH??rA 4944 4945 hy+=YDISP; \ ??DrawHeader_4: \ 00000090 180080E2 ADD R0,R0,#+24 \ 00000094 780487E5 STR R0,[R7, #+1144] 4946 LockSched(); \ 00000098 460100EF SWI +326 4947 4948 SetFontColor(HeadFontClr,transparent,0); \ 0000009C 7C00A0E3 MOV R0,#+124 \ 000000A0 8C0D80E3 ORR R0,R0,#0x2300 \ 000000A4 07A080E0 ADD R10,R0,R7 \ 000000A8 A4059FE5 LDR R0,??DrawHeader_5+0xC ;; HeadFontClr \ 000000AC 0020A0E3 MOV R2,#+0 \ 000000B0 0A10A0E1 MOV R1,R10 \ 000000B4 ........ _BLF SetFontColor,??SetFontColor??rA 4949 4950 #ifdef ELKA 4951 if(shot_header!=2) \ 000000B8 980497E5 LDR R0,[R7, #+1176] \ 000000BC 020050E3 CMP R0,#+2 \ 000000C0 3000000A BEQ ??DrawHeader_6 4952 { 4953 DrawRoundedFrame(0,YDISP,scr_w,hy+2,0,0,0,clrBlack,clrBlack); \ 000000C4 7000A0E3 MOV R0,#+112 \ 000000C8 8C0D80E3 ORR R0,R0,#0x2300 \ 000000CC 070080E0 ADD R0,R0,R7 \ 000000D0 0010A0E1 MOV R1,R0 \ 000000D4 02002DE9 PUSH {R1} \ 000000D8 01002DE9 PUSH {R0} \ 000000DC 0420A0E1 MOV R2,R4 \ 000000E0 1810A0E3 MOV R1,#+24 \ 000000E4 0000A0E3 MOV R0,#+0 \ 000000E8 01002DE9 PUSH {R0} \ 000000EC 01002DE9 PUSH {R0} \ 000000F0 01002DE9 PUSH {R0} \ 000000F4 780497E5 LDR R0,[R7, #+1144] \ 000000F8 023080E2 ADD R3,R0,#+2 \ 000000FC 0000A0E3 MOV R0,#+0 \ 00000100 500100EF SWI +336 4954 for(int i=hy-YDISP;i>0;i-=2) \ 00000104 780497E5 LDR R0,[R7, #+1144] \ 00000108 14D08DE2 ADD SP,SP,#+20 \ 0000010C 185040E2 SUB R5,R0,#+24 \ 00000110 010055E3 CMP R5,#+1 \ 00000114 120000BA BLT ??DrawHeader_7 \ 00000118 38659FE5 LDR R6,??DrawHeader_5+0x10 ;; HeadBackgrClr 4955 DrawRoundedFrame(0,YDISP,scr_w,hy-i+2,0,0,0,HeadBackgrClr,HeadBackgrClr); \ ??DrawHeader_8: \ 0000011C 0600A0E1 MOV R0,R6 \ 00000120 01002DE9 PUSH {R0} \ 00000124 01002DE9 PUSH {R0} \ 00000128 0420A0E1 MOV R2,R4 \ 0000012C 1810A0E3 MOV R1,#+24 \ 00000130 0000A0E3 MOV R0,#+0 \ 00000134 01002DE9 PUSH {R0} \ 00000138 01002DE9 PUSH {R0} \ 0000013C 01002DE9 PUSH {R0} \ 00000140 780497E5 LDR R0,[R7, #+1144] \ 00000144 050040E0 SUB R0,R0,R5 \ 00000148 023080E2 ADD R3,R0,#+2 \ 0000014C 0000A0E3 MOV R0,#+0 \ 00000150 500100EF SWI +336 \ 00000154 025045E2 SUB R5,R5,#+2 \ 00000158 010055E3 CMP R5,#+1 \ 0000015C 14D08DE2 ADD SP,SP,#+20 \ 00000160 EDFFFFAA BGE ??DrawHeader_8 4956 DoScreen4(hy-YDISP); \ ??DrawHeader_7: \ 00000164 780497E5 LDR R0,[R7, #+1144] \ 00000168 180040E2 SUB R0,R0,#+24 \ 0000016C ........ BL DoScreen4 4957 shot_header++; \ 00000170 980497E5 LDR R0,[R7, #+1176] \ 00000174 010080E2 ADD R0,R0,#+1 \ 00000178 980487E5 STR R0,[R7, #+1176] 4958 SMART_REDRAW(); \ 0000017C ........ BL SMART_REDRAW 4959 return; \ 00000180 28D08DE2 ADD SP,SP,#+40 \ 00000184 F08FBDE8 POP {R4-R11,PC} 4960 } 4961 else 4962 DrwImage(&screen4,0,YDISP,0,0); \ ??DrawHeader_6: \ 00000188 0000A0E3 MOV R0,#+0 \ 0000018C 01002DE9 PUSH {R0} \ 00000190 0030A0E3 MOV R3,#+0 \ 00000194 1820A0E3 MOV R2,#+24 \ 00000198 0010A0E1 MOV R1,R0 \ 0000019C 140087E2 ADD R0,R7,#+20 \ 000001A0 ........ BL DrwImage 4963 #else 4964 DrawRoundedFrame(0,YDISP,scr_w,hy+2,0,0,0,clrBlack,clrBlack); 4965 for(int i=hy-YDISP;i>0;i-=2) 4966 DrawRoundedFrame(0,YDISP,scr_w,hy-i+2,0,0,0,HeadBackgrClr,HeadBackgrClr); 4967 #endif 4968 4969 #ifdef DEBUG1 4970 return; 4971 #else 4972 int x=1; 4973 int icon; 4974 if(total_unread) icon = IS_MSG; \ 000001A4 180497E5 LDR R0,[R7, #+1048] \ 000001A8 0180A0E3 MOV R8,#+1 \ 000001AC 000050E3 CMP R0,#+0 \ 000001B0 04D08DE2 ADD SP,SP,#+4 \ 000001B4 0D00A013 MOVNE R0,#+13 \ 000001B8 0500001A BNE ??DrawHeader_9 4975 else 4976 { 4977 switch(connect_state) \ 000001BC FC0397E5 LDR R0,[R7, #+1020] \ 000001C0 000050E3 CMP R0,#+0 \ 000001C4 0200000A BEQ ??DrawHeader_9 \ 000001C8 030050E2 SUBS R0,R0,#+3 4978 { 4979 case 0: icon=IS_OFFLINE; break; 4980 case 3: icon=CurrentStatus; break; \ 000001CC 98039705 LDREQ R0,[R7, #+920] 4981 default: icon=IS_UNKNOWN; break; \ 000001D0 0E00A013 MOVNE R0,#+14 4982 } 4983 } 4984 4985 if(icons[icon] && HEAD_STATUS) \ ??DrawHeader_9: \ 000001D4 009187E0 ADD R9,R7,R0, LSL #+2 \ 000001D8 200099E5 LDR R0,[R9, #+32] \ 000001DC 000050E3 CMP R0,#+0 \ 000001E0 0D00000A BEQ ??DrawHeader_10 \ 000001E4 70149FE5 LDR R1,??DrawHeader_5+0x14 ;; HEAD_STATUS \ 000001E8 001091E5 LDR R1,[R1, #+0] \ 000001EC 000051E3 CMP R1,#+0 \ 000001F0 0900000A BEQ ??DrawHeader_10 4986 { 4987 DrwImage(icons[icon],x,YDISP+1,0,0); \ 000001F4 0010A0E3 MOV R1,#+0 \ 000001F8 02002DE9 PUSH {R1} \ 000001FC 0030A0E3 MOV R3,#+0 \ 00000200 1920A0E3 MOV R2,#+25 \ 00000204 0810A0E1 MOV R1,R8 \ 00000208 ........ BL DrwImage 4988 x+=icons[icon]->w+2;//GetImgWidth(NumStatusToIconBar+icon)+2;// + смещение по х \ 0000020C 200099E5 LDR R0,[R9, #+32] \ 00000210 B000D0E1 LDRH R0,[R0, #+0] \ 00000214 04D08DE2 ADD SP,SP,#+4 \ 00000218 038080E2 ADD R8,R0,#+3 4989 } 4990 4991 if(total_unread && isShowUnread) \ ??DrawHeader_10: \ 0000021C 182497E5 LDR R2,[R7, #+1048] \ 00000220 38949FE5 LDR R9,??DrawHeader_5+0x18 ;; `?` \ 00000224 000052E3 CMP R2,#+0 \ 00000228 1C00000A BEQ ??DrawHeader_11 \ 0000022C 30049FE5 LDR R0,??DrawHeader_5+0x1C ;; isShowUnread \ 00000230 000090E5 LDR R0,[R0, #+0] \ 00000234 000050E3 CMP R0,#+0 \ 00000238 1800000A BEQ ??DrawHeader_11 4992 { 4993 sprintf(s,"%d/%d",total_unread,total_unread2); \ 0000023C F03297E5 LDR R3,[R7, #+752] \ 00000240 141089E2 ADD R1,R9,#+20 \ 00000244 0500A0E1 MOV R0,R5 \ 00000248 160000EF SWI +22 4994 DrawStr(x,YDISP+1,s,clrWhite,clfont,0); \ 0000024C 7CB497E5 LDR R11,[R7, #+1148] \ 00000250 0020A0E3 MOV R2,#+0 \ 00000254 0A10A0E1 MOV R1,R10 \ 00000258 7400A0E3 MOV R0,#+116 \ 0000025C 8C0D80E3 ORR R0,R0,#0x2300 \ 00000260 070080E0 ADD R0,R0,R7 \ 00000264 ........ _BLF SetFontColor,??SetFontColor??rA \ 00000268 0100A0E3 MOV R0,#+1 \ 0000026C 01002DE9 PUSH {R0} \ 00000270 00082DE9 PUSH {R11} \ 00000274 0030A0E3 MOV R3,#+0 \ 00000278 0520A0E1 MOV R2,R5 \ 0000027C 1910A0E3 MOV R1,#+25 \ 00000280 0800A0E1 MOV R0,R8 \ 00000284 ........ _BLF PrintField,??PrintField??rA 4995 x+=GetWidth(x,YDISP+1)+1; \ 00000288 1910A0E3 MOV R1,#+25 \ 0000028C 0800A0E1 MOV R0,R8 \ 00000290 ........ _BLF GetWidth,??GetWidth??rA \ 00000294 010080E2 ADD R0,R0,#+1 \ 00000298 088080E0 ADD R8,R0,R8 \ 0000029C 08D08DE2 ADD SP,SP,#+8 4996 } 4997 4998 if(CurrentXStatus!=0 && HEAD_XSTATUS)//если есть хстатус \ ??DrawHeader_11: \ 000002A0 9C0397E5 LDR R0,[R7, #+924] \ 000002A4 000050E3 CMP R0,#+0 \ 000002A8 1200000A BEQ ??DrawHeader_12 \ 000002AC B4139FE5 LDR R1,??DrawHeader_5+0x20 ;; HEAD_XSTATUS \ 000002B0 001091E5 LDR R1,[R1, #+0] \ 000002B4 000051E3 CMP R1,#+0 \ 000002B8 0D00000A BEQ ??DrawHeader_13 4999 { 5000 DYNPNGICONLIST *xs=GetXSByItem(CurrentXStatus); \ 000002BC ........ _BLF GetXSByItem,??GetXSByItem??rA \ 000002C0 00A0A0E1 MOV R10,R0 5001 DrwImage(xs->img,x,YDISP+1,0,0); \ 000002C4 0000A0E3 MOV R0,#+0 \ 000002C8 01002DE9 PUSH {R0} \ 000002CC 0030A0E3 MOV R3,#+0 \ 000002D0 1920A0E3 MOV R2,#+25 \ 000002D4 08009AE5 LDR R0,[R10, #+8] \ 000002D8 0810A0E1 MOV R1,R8 \ 000002DC ........ BL DrwImage 5002 x+=xs->img->w+1; \ 000002E0 08009AE5 LDR R0,[R10, #+8] \ 000002E4 B000D0E1 LDRH R0,[R0, #+0] \ 000002E8 04D08DE2 ADD SP,SP,#+4 \ 000002EC 010080E2 ADD R0,R0,#+1 \ 000002F0 088080E0 ADD R8,R0,R8 5003 } 5004 5005 int priv=0; \ ??DrawHeader_13: \ 000002F4 0000A0E3 MOV R0,#+0 5006 char A_s[]="[A:%s]"; \ ??DrawHeader_12: \ 000002F8 080499E8 LDM R9,{R3,R10} \ 000002FC 0D10A0E1 MOV R1,SP \ 00000300 080481E8 STM R1,{R3,R10} 5007 // char t[32]; 5008 5009 switch(CurrentPrivateStatus) \ 00000304 E01397E5 LDR R1,[R7, #+992] \ 00000308 040051E3 CMP R1,#+4 \ 0000030C 0D00008A BHI ??DrawHeader_14 \ 00000310 012F8FE2 ADR R2,??DrawHeader_0 \ 00000314 0120D2E7 LDRB R2,[R2, R1] \ 00000318 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??DrawHeader_0: \ 0000031C 01030507 DC8 +1,+3,+5,+7 \ 00000320 09000000 DC8 +9,+0,+0,+0 5010 { 5011 case 0: priv=ICON_ALL_CAN_SEE; break; \ ??DrawHeader_15: \ 00000324 1700A0E3 MOV R0,#+23 \ 00000328 060000EA B ??DrawHeader_14 5012 case 1: priv=ICON_NOBODY_CAN_SEE;break; \ ??DrawHeader_16: \ 0000032C 1B00A0E3 MOV R0,#+27 \ 00000330 040000EA B ??DrawHeader_14 5013 case 2: priv=ICON_VISLIST_CAN_SEE; break; \ ??DrawHeader_17: \ 00000334 1800A0E3 MOV R0,#+24 \ 00000338 020000EA B ??DrawHeader_14 5014 case 3: priv=ICON_INVISLIST_CANNOT_SEE; break; \ ??DrawHeader_18: \ 0000033C 1900A0E3 MOV R0,#+25 \ 00000340 000000EA B ??DrawHeader_14 5015 case 4: priv=ICON_CONTACTLIST_CAN_SEE; break; \ ??DrawHeader_19: \ 00000344 1A00A0E3 MOV R0,#+26 5016 } 5017 5018 if(icons[priv] && HEAD_PRIVATE) \ ??DrawHeader_14: \ 00000348 00A187E0 ADD R10,R7,R0, LSL #+2 \ 0000034C 20009AE5 LDR R0,[R10, #+32] \ 00000350 000050E3 CMP R0,#+0 \ 00000354 0E00000A BEQ ??DrawHeader_20 \ 00000358 0C139FE5 LDR R1,??DrawHeader_5+0x24 ;; HEAD_PRIVATE \ 0000035C 001091E5 LDR R1,[R1, #+0] \ 00000360 000051E3 CMP R1,#+0 \ 00000364 0A00000A BEQ ??DrawHeader_20 5019 { 5020 DrwImage(icons[priv],x,YDISP+1,0,0); \ 00000368 0010A0E3 MOV R1,#+0 \ 0000036C 02002DE9 PUSH {R1} \ 00000370 0030A0E3 MOV R3,#+0 \ 00000374 1920A0E3 MOV R2,#+25 \ 00000378 0810A0E1 MOV R1,R8 \ 0000037C ........ BL DrwImage 5021 x+=icons[priv]->w+2; \ 00000380 20009AE5 LDR R0,[R10, #+32] \ 00000384 B000D0E1 LDRH R0,[R0, #+0] \ 00000388 04D08DE2 ADD SP,SP,#+4 \ 0000038C 020080E2 ADD R0,R0,#+2 \ 00000390 088080E0 ADD R8,R0,R8 5022 } 5023 5024 5025 if(!HEAD_PING) 5026 { 5027 int ping=0; 5028 if(curping < 3) ping=1; 5029 if(curping > 3 && curping < 10) ping=2; 5030 if(curping > 10 && curping < 30) ping=3; 5031 if(curping > 30) ping=4; 5032 5033 switch(ping) 5034 { 5035 case 1: ping=ICON_PING1; break; 5036 case 2: ping=ICON_PING2; break; 5037 case 3: ping=ICON_PING3; break; 5038 case 4: ping=ICON_PING4; break; 5039 default: ping=ICON_PING1; break; 5040 } 5041 5042 if(icons[ping] && HEAD_PING) 5043 { 5044 DrwImage(icons[ping],x,YDISP+1,0,0); 5045 x+=icons[ping]->w+1; 5046 } 5047 } 5048 5049 int cap; 5050 int x2=scr_w; 5051 #ifdef ELKA 5052 int y = YDISP-1; 5053 #else 5054 int y = YDISP+1; 5055 #endif 5056 //x2=scr_w-GetWidth(scr_w,YDISP+1); 5057 if(strlen(ContactT9Key)) \ ??DrawHeader_20: \ 00000394 9000A0E3 MOV R0,#+144 \ 00000398 780D80E3 ORR R0,R0,#0x1E00 \ 0000039C 07A080E0 ADD R10,R0,R7 \ 000003A0 5FBEA0E3 MOV R11,#+1520 \ 000003A4 07008BE0 ADD R0,R11,R7 \ 000003A8 1B0000EF SWI +27 \ 000003AC 000050E3 CMP R0,#+0 \ 000003B0 1300000A BEQ ??DrawHeader_21 5058 { 5059 sprintf(s,key_clm_hdr_text); \ 000003B4 2C1089E2 ADD R1,R9,#+44 \ 000003B8 0500A0E1 MOV R0,R5 \ 000003BC 160000EF SWI +22 5060 strcat(s,ContactT9Key); \ 000003C0 07108BE0 ADD R1,R11,R7 \ 000003C4 0500A0E1 MOV R0,R5 \ 000003C8 170000EF SWI +23 5061 strcpy(clmenu_sk_r,key_clmenu_sk_r); \ 000003CC 081089E2 ADD R1,R9,#+8 \ 000003D0 0A00A0E1 MOV R0,R10 \ 000003D4 1A0000EF SWI +26 5062 PrintField(scr_w,y,s,2,clfont,1); \ 000003D8 0100A0E3 MOV R0,#+1 \ 000003DC 01002DE9 PUSH {R0} \ 000003E0 7C0497E5 LDR R0,[R7, #+1148] \ 000003E4 0230A0E3 MOV R3,#+2 \ 000003E8 01002DE9 PUSH {R0} \ 000003EC 0520A0E1 MOV R2,R5 \ 000003F0 1710A0E3 MOV R1,#+23 \ 000003F4 0400A0E1 MOV R0,R4 \ 000003F8 ........ _BLF PrintField,??PrintField??rA \ 000003FC 08D08DE2 ADD SP,SP,#+8 \ 00000400 890000EA B ??DrawHeader_22 5063 } 5064 else 5065 if(on_off_timer > 0 && strlen(on_off_buf)!=0)//если кто то подключился/отключился \ ??DrawHeader_21: \ 00000404 2C0497E5 LDR R0,[R7, #+1068] \ 00000408 010050E3 CMP R0,#+1 \ 0000040C 190000BA BLT ??DrawHeader_23 \ 00000410 A000A0E3 MOV R0,#+160 \ 00000414 780D80E3 ORR R0,R0,#0x1E00 \ 00000418 07B080E0 ADD R11,R0,R7 \ 0000041C 0B00A0E1 MOV R0,R11 \ 00000420 1B0000EF SWI +27 \ 00000424 000050E3 CMP R0,#+0 \ 00000428 1200000A BEQ ??DrawHeader_23 5066 { 5067 SetScrollEdgeDelay(1); \ 0000042C 0100A0E3 MOV R0,#+1 \ 00000430 ........ _BLF SetScrollEdgeDelay,??SetScrollEdgeDelay??rA 5068 PrintText(scr_w,y,on_off_buf,2,clfont,1,350,1,0,scr_w-x-2); \ 00000434 080044E0 SUB R0,R4,R8 \ 00000438 020040E2 SUB R0,R0,#+2 \ 0000043C 01002DE9 PUSH {R0} \ 00000440 0230A0E3 MOV R3,#+2 \ 00000444 0B20A0E1 MOV R2,R11 \ 00000448 0000A0E3 MOV R0,#+0 \ 0000044C 01002DE9 PUSH {R0} \ 00000450 0100A0E3 MOV R0,#+1 \ 00000454 01002DE9 PUSH {R0} \ 00000458 5E00A0E3 MOV R0,#+94 \ 0000045C 400F80E3 ORR R0,R0,#0x100 \ 00000460 01002DE9 PUSH {R0} \ 00000464 0100A0E3 MOV R0,#+1 \ 00000468 01002DE9 PUSH {R0} \ 0000046C 7C0497E5 LDR R0,[R7, #+1148] \ 00000470 01002DE9 PUSH {R0} \ 00000474 680000EA B ??DrawHeader_24 5069 } 5070 else 5071 { 5072 x2=scr_w; 5073 cap=*RamCap(); \ ??DrawHeader_23: \ 00000478 C88000EF SWI +32968 \ 0000047C B020D0E1 LDRH R2,[R0, #+0] 5074 sprintf(s,"[%d%%]",cap); \ 00000480 1C1089E2 ADD R1,R9,#+28 \ 00000484 0500A0E1 MOV R0,R5 \ 00000488 160000EF SWI +22 5075 PrintField(scr_w,y,s,2,clfont,1);//capacity in header \ 0000048C 0100A0E3 MOV R0,#+1 \ 00000490 01002DE9 PUSH {R0} \ 00000494 7C0497E5 LDR R0,[R7, #+1148] \ 00000498 0230A0E3 MOV R3,#+2 \ 0000049C 01002DE9 PUSH {R0} \ 000004A0 0520A0E1 MOV R2,R5 \ 000004A4 1710A0E3 MOV R1,#+23 \ 000004A8 0400A0E1 MOV R0,R4 \ 000004AC ........ _BLF PrintField,??PrintField??rA 5076 5077 x2=scr_w-GetWidth(scr_w,y); \ 000004B0 1710A0E3 MOV R1,#+23 \ 000004B4 0400A0E1 MOV R0,R4 \ 000004B8 ........ _BLF GetWidth,??GetWidth??rA \ 000004BC 004044E0 SUB R4,R4,R0 5078 strcpy(clmenu_sk_r,def_clmenu_sk_r); \ 000004C0 381089E2 ADD R1,R9,#+56 \ 000004C4 0A00A0E1 MOV R0,R10 \ 000004C8 1A0000EF SWI +26 5079 Get_Online_total(); \ 000004CC ........ BL Get_Online_total 5080 5081 strcpy(s,""); \ 000004D0 5C1F8FE2 ADR R1,??DrawHeader_5 ;; "" \ 000004D4 0500A0E1 MOV R0,R5 \ 000004D8 1A0000EF SWI +26 5082 char s[32]; 5083 if(HEAD_PING) sprintf(s,"[%d с.]",curping); \ 000004DC 8C019FE5 LDR R0,??DrawHeader_5+0x28 ;; HEAD_PING \ 000004E0 000090E5 LDR R0,[R0, #+0] \ 000004E4 08D08DE2 ADD SP,SP,#+8 \ 000004E8 000050E3 CMP R0,#+0 \ 000004EC 0300000A BEQ ??DrawHeader_25 \ 000004F0 C82297E5 LDR R2,[R7, #+712] \ 000004F4 241089E2 ADD R1,R9,#+36 \ 000004F8 08008DE2 ADD R0,SP,#+8 \ 000004FC 160000EF SWI +22 5084 if(away_m && isShowA) \ ??DrawHeader_25: \ 00000500 A80397E5 LDR R0,[R7, #+936] \ 00000504 000050E3 CMP R0,#+0 \ 00000508 0C00000A BEQ ??DrawHeader_26 \ 0000050C 60019FE5 LDR R0,??DrawHeader_5+0x2C ;; isShowA \ 00000510 000090E5 LDR R0,[R0, #+0] \ 00000514 000050E3 CMP R0,#+0 \ 00000518 0800000A BEQ ??DrawHeader_26 5085 { 5086 sprintf(ss,A_s,away_msg_time_dace); \ 0000051C 5000A0E3 MOV R0,#+80 \ 00000520 6C0D80E3 ORR R0,R0,#0x1B00 \ 00000524 072080E0 ADD R2,R0,R7 \ 00000528 0D10A0E1 MOV R1,SP \ 0000052C 0600A0E1 MOV R0,R6 \ 00000530 160000EF SWI +22 5087 strcat(s,ss); \ 00000534 0610A0E1 MOV R1,R6 \ 00000538 08008DE2 ADD R0,SP,#+8 \ 0000053C 170000EF SWI +23 5088 } 5089 if(Is_Vibra_Enabled && isShowV) strcat(s,"[V]") ; \ ??DrawHeader_26: \ 00000540 080397E5 LDR R0,[R7, #+776] \ 00000544 000050E3 CMP R0,#+0 \ 00000548 0600000A BEQ ??DrawHeader_27 \ 0000054C 24019FE5 LDR R0,??DrawHeader_5+0x30 ;; isShowV \ 00000550 000090E5 LDR R0,[R0, #+0] \ 00000554 000050E3 CMP R0,#+0 \ 00000558 0200000A BEQ ??DrawHeader_27 \ 0000055C 3A1F8FE2 ADR R1,??DrawHeader_5+0x4 ;; "[V]" \ 00000560 08008DE2 ADD R0,SP,#+8 \ 00000564 170000EF SWI +23 5090 if(Is_Sounds_Enabled && isShowS) strcat(s,"[S]") ; \ ??DrawHeader_27: \ 00000568 D40397E5 LDR R0,[R7, #+980] \ 0000056C 000050E3 CMP R0,#+0 \ 00000570 0600000A BEQ ??DrawHeader_28 \ 00000574 00019FE5 LDR R0,??DrawHeader_5+0x34 ;; isShowS \ 00000578 000090E5 LDR R0,[R0, #+0] \ 0000057C 000050E3 CMP R0,#+0 \ 00000580 0200000A BEQ ??DrawHeader_28 \ 00000584 311F8FE2 ADR R1,??DrawHeader_5+0x8 ;; "[S]" \ 00000588 08008DE2 ADD R0,SP,#+8 \ 0000058C 170000EF SWI +23 5091 if(Is_Double_Vibra_On && isShowR) strcat(s,"[Vr]") ; \ ??DrawHeader_28: \ 00000590 EC0297E5 LDR R0,[R7, #+748] \ 00000594 000050E3 CMP R0,#+0 \ 00000598 0600000A BEQ ??DrawHeader_29 \ 0000059C DC009FE5 LDR R0,??DrawHeader_5+0x38 ;; isShowR \ 000005A0 000090E5 LDR R0,[R0, #+0] \ 000005A4 000050E3 CMP R0,#+0 \ 000005A8 0200000A BEQ ??DrawHeader_29 \ 000005AC D0109FE5 LDR R1,??DrawHeader_5+0x3C ;; `?` + 8 \ 000005B0 08008DE2 ADD R0,SP,#+8 \ 000005B4 170000EF SWI +23 5092 5093 if(isShowCont) \ ??DrawHeader_29: \ 000005B8 C8009FE5 LDR R0,??DrawHeader_5+0x40 ;; isShowCont \ 000005BC 000090E5 LDR R0,[R0, #+0] \ 000005C0 000050E3 CMP R0,#+0 \ 000005C4 0700000A BEQ ??DrawHeader_30 5094 { 5095 sprintf(ss,"[%d/%d]",kopa_kontaktu,kopa_online); \ 000005C8 303497E5 LDR R3,[R7, #+1072] \ 000005CC 342497E5 LDR R2,[R7, #+1076] \ 000005D0 0C1089E2 ADD R1,R9,#+12 \ 000005D4 0600A0E1 MOV R0,R6 \ 000005D8 160000EF SWI +22 5096 // PrintField(x2-2,YDISP+1,s,2,clfont,1); 5097 strcat(s,ss); \ 000005DC 0610A0E1 MOV R1,R6 \ 000005E0 08008DE2 ADD R0,SP,#+8 \ 000005E4 170000EF SWI +23 5098 } 5099 //PrintField(x2-2,YDISP+1,s,2,clfont,1); 5100 PrintText(x2,y,s,2,clfont,1,1,1,0, x2-x-2 ); \ ??DrawHeader_30: \ 000005E8 080044E0 SUB R0,R4,R8 \ 000005EC 020040E2 SUB R0,R0,#+2 \ 000005F0 01002DE9 PUSH {R0} \ 000005F4 0230A0E3 MOV R3,#+2 \ 000005F8 0000A0E3 MOV R0,#+0 \ 000005FC 01002DE9 PUSH {R0} \ 00000600 0100A0E3 MOV R0,#+1 \ 00000604 01002DE9 PUSH {R0} \ 00000608 01002DE9 PUSH {R0} \ 0000060C 01002DE9 PUSH {R0} \ 00000610 7C0497E5 LDR R0,[R7, #+1148] \ 00000614 01002DE9 PUSH {R0} \ 00000618 20208DE2 ADD R2,SP,#+32 \ ??DrawHeader_24: \ 0000061C 1710A0E3 MOV R1,#+23 \ 00000620 0400A0E1 MOV R0,R4 \ 00000624 ........ _BLF PrintText,??PrintText??rA \ 00000628 18D08DE2 ADD SP,SP,#+24 5101 } 5102 UnlockSched(); \ ??DrawHeader_22: \ 0000062C 470100EF SWI +327 5103 mfree(s); \ 00000630 0500A0E1 MOV R0,R5 \ 00000634 150000EF SWI +21 5104 mfree(ss); \ 00000638 0600A0E1 MOV R0,R6 \ 0000063C 150000EF SWI +21 5105 #endif 5106 } \ 00000640 28D08DE2 ADD SP,SP,#+40 \ 00000644 F08FBDE8 POP {R4-R11,PC} ;; return \ ??DrawHeader_5: \ 00000648 00000000 DC8 "",+0,+0,+0 \ 0000064C 5B565D00 DC8 "[V]" \ 00000650 5B535D00 DC8 "[S]" \ 00000654 ........ DC32 HeadFontClr \ 00000658 ........ DC32 HeadBackgrClr \ 0000065C ........ DC32 HEAD_STATUS \ 00000660 ........ DC32 `?` \ 00000664 ........ DC32 isShowUnread \ 00000668 ........ DC32 HEAD_XSTATUS \ 0000066C ........ DC32 HEAD_PRIVATE \ 00000670 ........ DC32 HEAD_PING \ 00000674 ........ DC32 isShowA \ 00000678 ........ DC32 isShowV \ 0000067C ........ DC32 isShowS \ 00000680 ........ DC32 isShowR \ 00000684 ........ DC32 `?` + 8 \ 00000688 ........ DC32 isShowCont 5107 \ In segment CODE, align 4, keep-with-next 5108 void DrawScrollBar(int cur,int total) 5109 { \ DrawScrollBar: \ 00000000 F0472DE9 PUSH {R4-R10,LR} 5110 int scr_h=ScreenH()-1; 5111 int scr_w=ScreenW()-1; 5112 int y=scr_h-CLIST_Y1-FontH(clfont)-2; \ 00000004 ........ LDR R6,??DataTable208 ;; i_rc \ 00000008 0070A0E1 MOV R7,R0 \ 0000000C 0180A0E1 MOV R8,R1 \ 00000010 898100EF SWI +33161 \ 00000014 014040E2 SUB R4,R0,#+1 \ 00000018 888100EF SWI +33160 \ 0000001C 015040E2 SUB R5,R0,#+1 \ 00000020 7C0496E5 LDR R0,[R6, #+1148] \ 00000024 ........ _BLF FontH,??FontH??rA \ 00000028 000044E0 SUB R0,R4,R0 \ 0000002C 1C9040E2 SUB R9,R0,#+28 \ 00000030 7C0496E5 LDR R0,[R6, #+1148] \ 00000034 ........ _BLF FontH,??FontH??rA \ 00000038 000049E0 SUB R0,R9,R0 \ 0000003C 022040E2 SUB R2,R0,#+2 5113 int pos=y*cur/total; \ 00000040 970200E0 MUL R0,R7,R2 \ 00000044 0810A0E1 MOV R1,R8 \ 00000048 ........ _BLF ??div32_a,??rA??div32_a \ 0000004C 0170A0E1 MOV R7,R1 5114 int y2=y/total; \ 00000050 0200A0E1 MOV R0,R2 \ 00000054 0810A0E1 MOV R1,R8 \ 00000058 ........ _BLF ??div32_a,??rA??div32_a 5115 int i=0; 5116 5117 DrawLine(scr_w-2,CLIST_Y1,scr_w-2,scr_h-FontH(clfont)-2,1,clrBlack); \ 0000005C 7C0496E5 LDR R0,[R6, #+1148] \ 00000060 0180A0E1 MOV R8,R1 \ 00000064 ........ _BLF FontH,??FontH??rA \ 00000068 0090A0E1 MOV R9,R0 \ 0000006C 7C0496E5 LDR R0,[R6, #+1148] \ 00000070 ........ _BLF FontH,??FontH??rA \ 00000074 7020A0E3 MOV R2,#+112 \ 00000078 8C2D82E3 ORR R2,R2,#0x2300 \ 0000007C 06A082E0 ADD R10,R2,R6 \ 00000080 0A20A0E1 MOV R2,R10 \ 00000084 04002DE9 PUSH {R2} \ 00000088 0010A0E1 MOV R1,R0 \ 0000008C 020045E2 SUB R0,R5,#+2 \ 00000090 1C1081E2 ADD R1,R1,#+28 \ 00000094 0120A0E3 MOV R2,#+1 \ 00000098 04002DE9 PUSH {R2} \ 0000009C 092044E0 SUB R2,R4,R9 \ 000000A0 023042E2 SUB R3,R2,#+2 5118 DrawRoundedFrame(scr_w-4,CLIST_Y1+pos+1,scr_w,CLIST_Y1+pos+y2,0,0,0,clrBlack,clrBlack); \ 000000A4 044045E2 SUB R4,R5,#+4 \ 000000A8 0020A0E1 MOV R2,R0 \ 000000AC B30100EF SWI +435 \ 000000B0 7C0496E5 LDR R0,[R6, #+1148] \ 000000B4 ........ _BLF FontH,??FontH??rA \ 000000B8 0090A0E1 MOV R9,R0 \ 000000BC 7C0496E5 LDR R0,[R6, #+1148] \ 000000C0 ........ _BLF FontH,??FontH??rA \ 000000C4 0A10A0E1 MOV R1,R10 \ 000000C8 02002DE9 PUSH {R1} \ 000000CC 00042DE9 PUSH {R10} \ 000000D0 0520A0E1 MOV R2,R5 \ 000000D4 0010A0E3 MOV R1,#+0 \ 000000D8 02002DE9 PUSH {R1} \ 000000DC 02002DE9 PUSH {R1} \ 000000E0 02002DE9 PUSH {R1} \ 000000E4 000087E0 ADD R0,R7,R0 \ 000000E8 091087E0 ADD R1,R7,R9 5119 5120 for(i=0;iw,img->h); \ 0000001C B200D4E1 LDRH R0,[R4, #+2] \ 00000020 01002DE9 PUSH {R0} \ 00000024 B030D4E1 LDRH R3,[R4, #+0] \ 00000028 04008DE2 ADD R0,SP,#+4 \ 0000002C 330100EF SWI +307 5131 SetPropTo_Obj5(&drwobj,&rc,0,img); \ 00000030 0430A0E1 MOV R3,R4 \ 00000034 0020A0E3 MOV R2,#+0 \ 00000038 04108DE2 ADD R1,SP,#+4 \ 0000003C 0C008DE2 ADD R0,SP,#+12 \ 00000040 510100EF SWI +337 5132 SetColor(&drwobj,pen,brush); \ 00000044 0620A0E1 MOV R2,R6 \ 00000048 0510A0E1 MOV R1,R5 \ 0000004C 0C008DE2 ADD R0,SP,#+12 \ 00000050 4B0100EF SWI +331 5133 DrawObject(&drwobj); \ 00000054 0C008DE2 ADD R0,SP,#+12 \ 00000058 2A0100EF SWI +298 5134 } \ 0000005C 04D08DE2 ADD SP,SP,#+4 \ ??DrwImage_0: \ 00000060 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 00000064 7080BDE8 POP {R4-R6,PC} ;; return 5135 /* 5136 #ifdef ELKA 5137 int LINE_MODE=0; 5138 int VIEW_MODE=1; 5139 #else 5140 int LINE_MODE=1; 5141 int VIEW_MODE=0; 5142 #endif 5143 */ 5144 \ In segment CODE, align 4, keep-with-next 5145 void MyRedraw() 5146 { 5147 //DirectRedrawGUI_ID(contactlist_menu_id); 5148 SMART_REDRAW(); \ MyRedraw: \ 00000000 ........ B SMART_REDRAW ;; tailcall 5149 } 5150 \ In segment CODE, align 4, keep-with-next 5151 void DrawJustNow(RECT *rc,CLIST *cl,char *name) 5152 { \ DrawJustNow: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 F290D0E1 LDRSH R9,[R0, #+2] \ 00000008 F480D0E1 LDRSH R8,[R0, #+4] \ 0000000C 0140A0E1 MOV R4,R1 \ 00000010 F010D0E1 LDRSH R1,[R0, #+0] \ 00000014 ........ LDR R0,??DataTable208 ;; i_rc \ 00000018 0250A0E1 MOV R5,R2 \ 0000001C 782094E5 LDR R2,[R4, #+120] \ 00000020 01A081E2 ADD R10,R1,#+1 \ 00000024 7C1490E5 LDR R1,[R0, #+1148] \ 00000028 000052E3 CMP R2,#+0 \ 0000002C 017081E2 ADD R7,R1,#+1 \ 00000030 7C10A0E3 MOV R1,#+124 \ 00000034 8C1D81E3 ORR R1,R1,#0x2300 \ 00000038 001081E0 ADD R1,R1,R0 \ 0000003C 0020A0E3 MOV R2,#+0 5153 if(!cl->just_i) 5154 DrawText(rc->x+1,rc->y,rc->x2,name,blue,clfont+1,0,0); \ 00000040 8E0D8002 ADDEQ R0,R0,#+9088 5155 else 5156 DrawText(rc->x+1,rc->y,rc->x2,name,clrRed,clfont+1,0,0); \ 00000044 7830A013 MOVNE R3,#+120 \ 00000048 8C3D8313 ORRNE R3,R3,#0x2300 \ 0000004C 00008310 ADDNE R0,R3,R0 \ 00000050 ........ _BLF SetFontColor,??SetFontColor??rA \ 00000054 0A0048E0 SUB R0,R8,R10 \ 00000058 01002DE9 PUSH {R0} \ 0000005C 5E60A0E3 MOV R6,#+94 \ 00000060 406F86E3 ORR R6,R6,#0x100 \ 00000064 0030A0E3 MOV R3,#+0 \ 00000068 0000A0E3 MOV R0,#+0 \ 0000006C 01002DE9 PUSH {R0} \ 00000070 01002DE9 PUSH {R0} \ 00000074 40002DE9 PUSH {R6} \ 00000078 0520A0E1 MOV R2,R5 \ 0000007C 0100A0E3 MOV R0,#+1 \ 00000080 01002DE9 PUSH {R0} \ 00000084 80002DE9 PUSH {R7} \ 00000088 0910A0E1 MOV R1,R9 \ 0000008C 0A00A0E1 MOV R0,R10 \ 00000090 ........ _BLF PrintText,??PrintText??rA \ 00000094 18D08DE2 ADD SP,SP,#+24 5157 5158 cl->just_i=!cl->just_i; \ 00000098 780094E5 LDR R0,[R4, #+120] \ 0000009C 000050E3 CMP R0,#+0 \ 000000A0 0100A003 MOVEQ R0,#+1 \ 000000A4 0000A013 MOVNE R0,#+0 \ 000000A8 780084E5 STR R0,[R4, #+120] 5159 } \ 000000AC F087BDE8 POP {R4-R10,PC} ;; return 5160 5161 \ In segment CODE, align 4, keep-with-next 5162 void log(char *name,int i,int j) 5163 { \ log: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 41DF4DE2 SUB SP,SP,#+260 5164 int hFile; 5165 unsigned int io_error = 0; \ 00000008 0040A0E3 MOV R4,#+0 \ 0000000C 00408DE5 STR R4,[SP, #+0] 5166 char text[255]; 5167 sprintf(text,"%s - %d(%d)",name,i,j); \ 00000010 94409FE5 LDR R4,??log_0+0x4 ;; `?` \ 00000014 04002DE9 PUSH {R2} \ 00000018 0130A0E1 MOV R3,R1 \ 0000001C 0410A0E1 MOV R1,R4 \ 00000020 0020A0E1 MOV R2,R0 \ 00000024 08008DE2 ADD R0,SP,#+8 \ 00000028 160000EF SWI +22 5168 hFile = fopen("4:\\nata.txt",A_ReadWrite + A_Create + A_Append,P_READ+P_WRITE, &io_error); \ 0000002C 04308DE2 ADD R3,SP,#+4 \ 00000030 602FA0E3 MOV R2,#+384 \ 00000034 761042E2 SUB R1,R2,#+118 \ 00000038 0C0084E2 ADD R0,R4,#+12 \ 0000003C 0A0000EF SWI +10 \ 00000040 0050A0E1 MOV R5,R0 5169 if(hFile!=-1) \ 00000044 010075E3 CMN R5,#+1 \ 00000048 04D08DE2 ADD SP,SP,#+4 \ 0000004C 1000000A BEQ ??log_1 5170 { 5171 fwrite(hFile, text, strlen(text), &io_error); \ 00000050 04008DE2 ADD R0,SP,#+4 \ 00000054 1B0000EF SWI +27 \ 00000058 0D30A0E1 MOV R3,SP \ 0000005C 0020A0E1 MOV R2,R0 \ 00000060 04108DE2 ADD R1,SP,#+4 \ 00000064 0500A0E1 MOV R0,R5 \ 00000068 0C0000EF SWI +12 5172 fwrite(hFile, "\r\n", 2, &io_error); \ 0000006C 0D30A0E1 MOV R3,SP \ 00000070 0220A0E3 MOV R2,#+2 \ 00000074 0B1F8FE2 ADR R1,??log_0 ;; "\r\n" \ 00000078 0500A0E1 MOV R0,R5 \ 0000007C 0C0000EF SWI +12 5173 fclose(hFile, &io_error); \ 00000080 0D10A0E1 MOV R1,SP \ 00000084 0500A0E1 MOV R0,R5 \ 00000088 0D0000EF SWI +13 \ 0000008C 41DF8DE2 ADD SP,SP,#+260 \ 00000090 3080BDE8 POP {R4,R5,PC} 5174 } 5175 else 5176 ShowMSG(1,(int)"Error!"); \ ??log_1: \ 00000094 181084E2 ADD R1,R4,#+24 \ 00000098 0100A0E3 MOV R0,#+1 \ 0000009C 480100EF SWI +328 5177 // mfree(text); 5178 } \ 000000A0 41DF8DE2 ADD SP,SP,#+260 \ 000000A4 3080BDE8 POP {R4,R5,PC} ;; return \ ??log_0: \ 000000A8 0D0A0000 DC8 "\r\n",+0 \ 000000AC ........ DC32 `?` 5179 5180 /* 5181 typedef struct 5182 { 5183 int type; //0-доставлен, 1-отправлен, 2-не отправлено 5184 int count;//кол-во не доставленных 5185 }ACKED; 5186 */ 5187 #define SENDED 0 5188 #define SEND 1 5189 #define NOTSEND 2 \ In segment CODE, align 4, keep-with-next 5190 ACKED *GetAck(CLIST *t) 5191 { \ GetAck: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5192 ACKED *ack=malloc(sizeof(ACKED)); \ 00000008 0800A0E3 MOV R0,#+8 \ 0000000C 140000EF SWI +20 5193 ack->type=0; 5194 ack->count=0; 5195 5196 if(!ShowProcessSend) return ack; \ 00000010 90209FE5 LDR R2,??GetAck_0 ;; ShowProcessSend \ 00000014 0010A0E3 MOV R1,#+0 \ 00000018 001080E5 STR R1,[R0, #+0] \ 0000001C 041080E5 STR R1,[R0, #+4] \ 00000020 002092E5 LDR R2,[R2, #+0] \ 00000024 000052E3 CMP R2,#+0 \ 00000028 1080BD08 POPEQ {R4,PC} 5197 if(!t) return ack; \ 0000002C 000054E3 CMP R4,#+0 5198 if(!t->isactive) return ack; \ 00000030 AC209415 LDRNE R2,[R4, #+172] \ 00000034 00005213 CMPNE R2,#+0 \ 00000038 1080BD08 POPEQ {R4,PC} 5199 if(t->state==0xFFFF) return ack; \ 0000003C B425D4E1 LDRH R2,[R4, #+84] \ 00000040 FF30A0E3 MOV R3,#+255 \ 00000044 FF3C83E3 ORR R3,R3,#0xFF00 \ 00000048 030052E1 CMP R2,R3 \ 0000004C 1080BD08 POPEQ {R4,PC} 5200 5201 LOGQ *lp; 5202 lp=t->log; \ 00000050 A02094E5 LDR R2,[R4, #+160] \ 00000054 000052E3 CMP R2,#+0 \ 00000058 0B00001A BNE ??GetAck_1 \ 0000005C 1080BDE8 POP {R4,PC} 5203 5204 while(lp) 5205 { 5206 if(lp->acked)//Если отправлен или доставлен 5207 { 5208 if (lp->acked==1)//отправлен,но не доставлен 5209 { 5210 ack->type = SEND; 5211 ack->count++; 5212 } 5213 else 5214 ack->type = SENDED;//доставлен(прозрачный) 5215 } 5216 else 5217 if (lp->ID!=0xFFFFFFFF)//не доставлено \ ??GetAck_2: \ 00000060 083092E5 LDR R3,[R2, #+8] \ 00000064 010073E3 CMN R3,#+1 \ 00000068 0400000A BEQ ??GetAck_3 5218 { 5219 ack->type = NOTSEND; \ 0000006C 0230A0E3 MOV R3,#+2 \ ??GetAck_4: \ 00000070 003080E5 STR R3,[R0, #+0] 5220 ack->count++; \ 00000074 043090E5 LDR R3,[R0, #+4] \ 00000078 013083E2 ADD R3,R3,#+1 \ 0000007C 043080E5 STR R3,[R0, #+4] 5221 } 5222 lp=lp->next; \ ??GetAck_3: \ 00000080 002092E5 LDR R2,[R2, #+0] \ 00000084 000052E3 CMP R2,#+0 \ 00000088 1080BD08 POPEQ {R4,PC} \ ??GetAck_1: \ 0000008C 043092E5 LDR R3,[R2, #+4] \ 00000090 000053E3 CMP R3,#+0 \ 00000094 F1FFFF0A BEQ ??GetAck_2 \ 00000098 010053E3 CMP R3,#+1 \ 0000009C F3FFFF0A BEQ ??GetAck_4 \ 000000A0 001080E5 STR R1,[R0, #+0] \ 000000A4 F5FFFFEA B ??GetAck_3 \ ??GetAck_0: \ 000000A8 ........ DC32 ShowProcessSend 5223 } 5224 //if(ack->type==0) return 0; 5225 //if(ack->count==0) return 0; 5226 // log(t->name,ack->type,ack->count); 5227 return ack; 5228 } 5229 5230 int clstartItem=0; \ In segment CODE, align 4, keep-with-next 5231 void DrawList() 5232 { \ DrawList: \ 00000000 ........ LDR R0,??DataTable225 ;; isSystemFont \ 00000004 F04F2DE9 PUSH {R4-R11,LR} \ 00000008 70D04DE2 SUB SP,SP,#+112 \ 0000000C 000090E5 LDR R0,[R0, #+0] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 0300000A BEQ ??DrawList_0 5233 //Тут пиздец,и мне по хуй,я разбираюсь в этом и знаю что оно работает как нужно. 5234 5235 if(isSystemFont) clfont=100+pngFont; \ 00000018 ........ LDR R0,??DataTable210 ;; pngFont \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 640080E2 ADD R0,R0,#+100 \ 00000024 000000EA B ??DrawList_1 5236 else clfont=2; \ ??DrawList_0: \ 00000028 0200A0E3 MOV R0,#+2 \ ??DrawList_1: \ 0000002C ........ LDR R4,??DataTable232 ;; i_rc \ 00000030 7C0484E5 STR R0,[R4, #+1148] 5237 if(!cltop) return; \ 00000034 1C0494E5 LDR R0,[R4, #+1052] \ 00000038 000050E3 CMP R0,#+0 \ 0000003C 0A02000A BEQ ??DrawList_2 5238 int font_y = FontH(clfont)+2;//16+2 \ 00000040 7C0494E5 LDR R0,[R4, #+1148] 5239 int scr_w=ScreenW()-1; 5240 int scr_h=ScreenH()-1; 5241 int y2; 5242 5243 //__root const unsigned int SOFT_MODE = 0; 5244 // __root const CFG_CBOX_ITEM cfgcboxI_8[3]={"Ничего,""Софты","Инфу"}; 5245 int SoftH=0; \ 00000044 0050A0E3 MOV R5,#+0 \ 00000048 ........ _BLF FontH,??FontH??rA \ 0000004C 020080E2 ADD R0,R0,#+2 \ 00000050 08008DE5 STR R0,[SP, #+8] \ 00000054 888100EF SWI +33160 \ 00000058 010040E2 SUB R0,R0,#+1 \ 0000005C 10008DE5 STR R0,[SP, #+16] \ 00000060 898100EF SWI +33161 5246 5247 if(SOFT_MODE==1) SoftH=FontH(clfont);//если показывать софты \ 00000064 ........ LDR R1,??DataTable233 ;; SOFT_MODE \ 00000068 001091E5 LDR R1,[R1, #+0] \ 0000006C 14108DE5 STR R1,[SP, #+20] \ 00000070 010051E3 CMP R1,#+1 \ 00000074 0300001A BNE ??DrawList_3 \ 00000078 7C0494E5 LDR R0,[R4, #+1148] \ 0000007C ........ _BLF FontH,??FontH??rA \ 00000080 0050A0E1 MOV R5,R0 \ 00000084 040000EA B ??DrawList_4 5248 else if(SOFT_MODE==2) SoftH=FontH(clfont)*2;//если показывать инфу \ ??DrawList_3: \ 00000088 020051E3 CMP R1,#+2 \ 0000008C 0200001A BNE ??DrawList_4 \ 00000090 7C0494E5 LDR R0,[R4, #+1148] \ 00000094 ........ _BLF FontH,??FontH??rA \ 00000098 8050A0E1 LSL R5,R0,#+1 \ ??DrawList_4: \ 0000009C ........ LDR R0,??DataTable226 ;; VIEW_MODE \ 000000A0 000090E5 LDR R0,[R0, #+0] \ 000000A4 000050E3 CMP R0,#+0 \ 000000A8 0C00000A BEQ ??DrawList_5 5249 5250 if(VIEW_MODE) 5251 itemFromDisp = (sdiv(font_y,ScreenH()-CLIST_Y1-SoftH-2)*2)-1;//((font_y/(ScreenH()-CLIST_Y1-FontH(clfont)-2))*2)-1; \ 000000AC 898100EF SWI +33161 \ 000000B0 0060A0E1 MOV R6,R0 \ 000000B4 7C0494E5 LDR R0,[R4, #+1148] \ 000000B8 ........ _BLF FontH,??FontH??rA \ 000000BC 000046E0 SUB R0,R6,R0 \ 000000C0 1C0040E2 SUB R0,R0,#+28 \ 000000C4 050040E0 SUB R0,R0,R5 \ 000000C8 021040E2 SUB R1,R0,#+2 \ 000000CC 08009DE5 LDR R0,[SP, #+8] \ 000000D0 B80000EF SWI +184 \ 000000D4 8000A0E1 LSL R0,R0,#+1 \ 000000D8 010040E2 SUB R0,R0,#+1 \ 000000DC 090000EA B ??DrawList_6 5252 else 5253 itemFromDisp = sdiv(font_y,ScreenH()-CLIST_Y1-SoftH-2); \ ??DrawList_5: \ 000000E0 898100EF SWI +33161 \ 000000E4 0060A0E1 MOV R6,R0 \ 000000E8 7C0494E5 LDR R0,[R4, #+1148] \ 000000EC ........ _BLF FontH,??FontH??rA \ 000000F0 000046E0 SUB R0,R6,R0 \ 000000F4 1C0040E2 SUB R0,R0,#+28 \ 000000F8 050040E0 SUB R0,R0,R5 \ 000000FC 021040E2 SUB R1,R0,#+2 \ 00000100 08009DE5 LDR R0,[SP, #+8] \ 00000104 B80000EF SWI +184 \ ??DrawList_6: \ 00000108 840484E5 STR R0,[R4, #+1156] 5254 5255 CLIST *cl; 5256 int i=0; \ 0000010C 0050A0E3 MOV R5,#+0 \ 00000110 0000A0E3 MOV R0,#+0 \ 00000114 900484E5 STR R0,[R4, #+1168] 5257 int start_y; 5258 int x=0; 5259 RECT rc; 5260 int icon; 5261 collum=0; 5262 // int clfont=108; 5263 char *name=malloc(128); \ 00000118 8000A0E3 MOV R0,#+128 \ 0000011C 140000EF SWI +20 \ 00000120 0060A0E1 MOV R6,R0 5264 int yy=0; \ 00000124 0510A0E1 MOV R1,R5 \ 00000128 18108DE5 STR R1,[SP, #+24] 5265 5266 ACKED *ack; ^ Warning[Pe550]: variable "ack" was set but never used static unsigned int GetStatusByIndex(int pos) ^ "D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\main.c",443 Warning[Pe177]: function "GetStatusByIndex" was declared but never referenced 5267 DYNPNGICONLIST *xs; 5268 5269 LockSched(); \ 0000012C 460100EF SWI +326 5270 totalItems = CountContacts(); //TotalBmk(); \ 00000130 ........ _BLF CountContacts,??CountContacts??rA \ 00000134 880484E5 STR R0,[R4, #+1160] \ 00000138 ........ LDR R0,??DataTable223 ;; LINE_MODE \ 0000013C 000090E5 LDR R0,[R0, #+0] \ 00000140 000050E3 CMP R0,#+0 5271 5272 if(LINE_MODE) itemFromDisp--; \ 00000144 84049415 LDRNE R0,[R4, #+1156] \ 00000148 01004012 SUBNE R0,R0,#+1 \ 0000014C 84048415 STRNE R0,[R4, #+1156] 5273 5274 while( i < ((VIEW_MODE!=0)?(totalItems):(itemFromDisp)) ) \ ??DrawList_7: \ 00000150 ........ LDR R1,??DataTable226 ;; VIEW_MODE \ 00000154 840494E5 LDR R0,[R4, #+1156] \ 00000158 001091E5 LDR R1,[R1, #+0] \ 0000015C 000051E3 CMP R1,#+0 \ 00000160 88249415 LDRNE R2,[R4, #+1160] \ 00000164 0020A001 MOVEQ R2,R0 \ 00000168 020055E1 CMP R5,R2 \ 0000016C BB0100AA BGE ??DrawList_8 5275 { 5276 if(!VIEW_MODE) goto next;//если не два столбика то пропускаем условие \ 00000170 000051E3 CMP R1,#+0 \ 00000174 1600000A BEQ ??DrawList_9 5277 if( (i>=(curpage-1)*itemFromDisp) && (i<=itemFromDisp*curpage) )//если те итемы который нужно выводить на экран со страници curpage \ 00000178 8C1494E5 LDR R1,[R4, #+1164] \ 0000017C 012041E2 SUB R2,R1,#+1 \ 00000180 900202E0 MUL R2,R0,R2 \ 00000184 020055E1 CMP R5,R2 \ 00000188 910000A0 MULGE R0,R1,R0 \ 0000018C 050050A1 CMPGE R0,R5 \ 00000190 A20100BA BLT ??DrawList_10 \ 00000194 0000A0E3 MOV R0,#+0 \ ??DrawList_11: \ 00000198 050080E0 ADD R0,R0,R5 \ 0000019C ........ _BLF FindContactByN,??FindContactByN??rA \ 000001A0 0070B0E1 MOVS R7,R0 5278 { 5279 next: 5280 cl=FindContactByN( i + ((VIEW_MODE==0)?(clstartItem):(0)) ); 5281 if(!cl) return; \ 000001A4 B001000A BEQ ??DrawList_2 5282 if(cl)//если такой есть то рисуем его 5283 { 5284 start_y=0; 5285 if(LINE_MODE)//если в две линии \ 000001A8 ........ LDR R0,??DataTable226 ;; VIEW_MODE \ 000001AC 0080A0E3 MOV R8,#+0 \ 000001B0 001090E5 LDR R1,[R0, #+0] \ 000001B4 ........ LDR R0,??DataTable223 ;; LINE_MODE \ 000001B8 000090E5 LDR R0,[R0, #+0] \ 000001BC 000050E3 CMP R0,#+0 \ 000001C0 0C00000A BEQ ??DrawList_12 5286 { 5287 if(i + ((VIEW_MODE==0)?(clstartItem):(0)) > curpos ) start_y+=font_y+3; \ 000001C4 000051E3 CMP R1,#+0 \ 000001C8 9C049405 LDREQ R0,[R4, #+1180] \ 000001CC 0000A013 MOVNE R0,#+0 \ 000001D0 010000EA B ??DrawList_13 \ ??DrawList_9: \ 000001D4 9C0494E5 LDR R0,[R4, #+1180] \ 000001D8 EEFFFFEA B ??DrawList_11 \ ??DrawList_13: \ 000001DC 702494E5 LDR R2,[R4, #+1136] \ 000001E0 050080E0 ADD R0,R0,R5 \ 000001E4 000052E1 CMP R2,R0 \ 000001E8 08009DB5 LDRLT R0,[SP, #+8] 5288 y2=2; \ 000001EC 0220A0E3 MOV R2,#+2 \ 000001F0 038080B2 ADDLT R8,R0,#+3 \ 000001F4 000000EA B ??DrawList_14 5289 } 5290 else y2=1; \ ??DrawList_12: \ 000001F8 0120A0E3 MOV R2,#+1 5291 5292 if(VIEW_MODE)//если в две колонки \ ??DrawList_14: \ 000001FC 10309DE5 LDR R3,[SP, #+16] \ 00000200 7C0494E5 LDR R0,[R4, #+1148] \ 00000204 059043E2 SUB R9,R3,#+5 \ 00000208 08309DE5 LDR R3,[SP, #+8] \ 0000020C 000051E3 CMP R1,#+0 \ 00000210 92030AE0 MUL R10,R2,R3 \ 00000214 2700000A BEQ ??DrawList_15 5293 { 5294 if(!collum)//если первая колонка \ 00000218 10109DE5 LDR R1,[SP, #+16] \ 0000021C A11F81E0 ADD R1,R1,R1, LSR #+31 \ 00000220 C1B0A0E1 ASR R11,R1,#+1 \ 00000224 901494E5 LDR R1,[R4, #+1168] \ 00000228 000051E3 CMP R1,#+0 \ 0000022C 1200001A BNE ??DrawList_16 5295 { 5296 start_y += (CLIST_Y1 + (((i - (curpage-1)*itemFromDisp)*font_y)/2) ); //определяем начальное смещение по у \ 00000230 ........ _BLF FontH,??FontH??rA \ 00000234 8C1494E5 LDR R1,[R4, #+1164] \ 00000238 842494E5 LDR R2,[R4, #+1156] \ 0000023C 011041E2 SUB R1,R1,#+1 \ 00000240 920101E0 MUL R1,R2,R1 \ 00000244 08209DE5 LDR R2,[SP, #+8] \ 00000248 011045E0 SUB R1,R5,R1 \ 0000024C 920101E0 MUL R1,R2,R1 5297 yy=start_y; 5298 StoreXYXYtoRECT(&rc, 1, start_y, (scr_w/2)-5, start_y+(font_y*y2)); \ 00000250 05304BE2 SUB R3,R11,#+5 \ 00000254 A11F81E0 ADD R1,R1,R1, LSR #+31 \ 00000258 C10080E0 ADD R0,R0,R1, ASR #+1 \ 0000025C 1C0080E2 ADD R0,R0,#+28 \ 00000260 088080E0 ADD R8,R0,R8 \ 00000264 18808DE5 STR R8,[SP, #+24] \ 00000268 08008AE0 ADD R0,R10,R8 \ 0000026C 01002DE9 PUSH {R0} \ 00000270 0820A0E1 MOV R2,R8 \ 00000274 0110A0E3 MOV R1,#+1 \ 00000278 050000EA B ??DrawList_17 5299 } 5300 else//если вторая 5301 { 5302 StoreXYXYtoRECT(&rc, (scr_w/2)-4, yy, scr_w-5, yy+(font_y*y2)); \ ??DrawList_16: \ 0000027C 18009DE5 LDR R0,[SP, #+24] \ 00000280 0930A0E1 MOV R3,R9 \ 00000284 00008AE0 ADD R0,R10,R0 \ 00000288 01002DE9 PUSH {R0} \ 0000028C 1C209DE5 LDR R2,[SP, #+28] \ 00000290 04104BE2 SUB R1,R11,#+4 \ ??DrawList_17: \ 00000294 04008DE2 ADD R0,SP,#+4 \ 00000298 340100EF SWI +308 \ 0000029C 04D08DE2 ADD SP,SP,#+4 5303 } 5304 collum=!collum; \ 000002A0 900494E5 LDR R0,[R4, #+1168] \ 000002A4 000050E3 CMP R0,#+0 \ 000002A8 0100A003 MOVEQ R0,#+1 \ 000002AC 0000A013 MOVNE R0,#+0 \ 000002B0 900484E5 STR R0,[R4, #+1168] \ 000002B4 0C0000EA B ??DrawList_18 5305 } 5306 else 5307 { 5308 start_y += (CLIST_Y1 + 2 + (i/* - (curpage-1)*itemFromDisp*/)*font_y); //?????????? ????????? ???????? ?? ? \ ??DrawList_15: \ 000002B8 03B0A0E1 MOV R11,R3 \ 000002BC ........ _BLF FontH,??FontH??rA \ 000002C0 9B0520E0 MLA R0,R11,R5,R0 5309 StoreXYXYtoRECT(&rc,2,start_y,scr_w-5,start_y+(font_y*y2)); \ 000002C4 0930A0E1 MOV R3,R9 \ 000002C8 1E0080E2 ADD R0,R0,#+30 \ 000002CC 088080E0 ADD R8,R0,R8 \ 000002D0 08008AE0 ADD R0,R10,R8 \ 000002D4 01002DE9 PUSH {R0} \ 000002D8 0820A0E1 MOV R2,R8 \ 000002DC 0210A0E3 MOV R1,#+2 \ 000002E0 04008DE2 ADD R0,SP,#+4 \ 000002E4 340100EF SWI +308 \ 000002E8 04D08DE2 ADD SP,SP,#+4 5310 } 5311 5312 icon=GetIconIndex(cl); \ ??DrawList_18: \ 000002EC 0700A0E1 MOV R0,R7 \ 000002F0 ........ BL GetIconIndex \ 000002F4 00A0A0E1 MOV R10,R0 5313 if (icon!=IS_GROUP)//если не иконка группы \ 000002F8 7C00A0E3 MOV R0,#+124 \ 000002FC 8C0D80E3 ORR R0,R0,#0x2300 \ 00000300 049080E0 ADD R9,R0,R4 \ 00000304 0F005AE3 CMP R10,#+15 \ 00000308 0600000A BEQ ??DrawList_19 5314 { 5315 ack=GetAck(cl);//Обработка процесса отправки \ 0000030C 0700A0E1 MOV R0,R7 \ 00000310 ........ BL GetAck 5316 // log(cl->name,ack->type,ack->count); 5317 sprintf(name,percent_s,cl->name); \ 00000314 ........ LDR R1,??DataTable220 ;; Canvas + 8 \ 00000318 142087E2 ADD R2,R7,#+20 \ 0000031C 0600A0E1 MOV R0,R6 \ 00000320 160000EF SWI +22 \ 00000324 340000EA B ??DrawList_20 5318 } 5319 else 5320 { 5321 int onlinetotal[2]; 5322 GetOnTotalContact(cl->group,onlinetotal); \ ??DrawList_19: \ 00000328 100097E5 LDR R0,[R7, #+16] \ 0000032C 20108DE2 ADD R1,SP,#+32 \ 00000330 ........ BL GetOnTotalContact 5323 if(!VIEW_MODE)//если не в два столбца \ 00000334 ........ LDR R0,??DataTable226 ;; VIEW_MODE \ 00000338 000090E5 LDR R0,[R0, #+0] \ 0000033C 000050E3 CMP R0,#+0 \ 00000340 1D00001A BNE ??DrawList_21 5324 { 5325 char *s=malloc(32); \ 00000344 2000A0E3 MOV R0,#+32 \ 00000348 140000EF SWI +20 5326 sprintf(name,percent_s,cl->name); \ 0000034C ........ LDR R1,??DataTable220 ;; Canvas + 8 \ 00000350 00B0A0E1 MOV R11,R0 \ 00000354 142087E2 ADD R2,R7,#+20 \ 00000358 0600A0E1 MOV R0,R6 \ 0000035C 160000EF SWI +22 5327 sprintf(s,"(%d/%d)",onlinetotal[0],onlinetotal[1]); \ 00000360 24309DE5 LDR R3,[SP, #+36] \ 00000364 20209DE5 LDR R2,[SP, #+32] \ 00000368 04159FE5 LDR R1,??DrawList_22 ;; Canvas + 20 \ 0000036C 0B00A0E1 MOV R0,R11 \ 00000370 160000EF SWI +22 5328 SetFontColor((char*)GroupClr,transparent,0); \ 00000374 FC049FE5 LDR R0,??DrawList_22+0x4 ;; GroupClr \ 00000378 0020A0E3 MOV R2,#+0 \ 0000037C 0910A0E1 MOV R1,R9 \ 00000380 ........ _BLF SetFontColor,??SetFontColor??rA 5329 PrintField(scr_w-7,start_y,s,2,clfont,1);//capacity in header \ 00000384 0100A0E3 MOV R0,#+1 \ 00000388 01002DE9 PUSH {R0} \ 0000038C 7C0494E5 LDR R0,[R4, #+1148] \ 00000390 0230A0E3 MOV R3,#+2 \ 00000394 01002DE9 PUSH {R0} \ 00000398 18009DE5 LDR R0,[SP, #+24] \ 0000039C 0B20A0E1 MOV R2,R11 \ 000003A0 0810A0E1 MOV R1,R8 \ 000003A4 070040E2 SUB R0,R0,#+7 \ 000003A8 ........ _BLF PrintField,??PrintField??rA 5330 mfree(s); \ 000003AC 0B00A0E1 MOV R0,R11 \ 000003B0 150000EF SWI +21 \ 000003B4 08D08DE2 ADD SP,SP,#+8 \ 000003B8 0C0000EA B ??DrawList_23 5331 } 5332 else 5333 sprintf(name,"%s%c%c(%d/%d)",cl->name,0xE01D,0xE012,onlinetotal[0],onlinetotal[1]); \ ??DrawList_21: \ 000003BC 24009DE5 LDR R0,[SP, #+36] \ 000003C0 B4149FE5 LDR R1,??DrawList_22+0x8 ;; Canvas + 28 \ 000003C4 01002DE9 PUSH {R0} \ 000003C8 24009DE5 LDR R0,[SP, #+36] \ 000003CC 142087E2 ADD R2,R7,#+20 \ 000003D0 01002DE9 PUSH {R0} \ 000003D4 1200A0E3 MOV R0,#+18 \ 000003D8 E00C80E3 ORR R0,R0,#0xE000 \ 000003DC 01002DE9 PUSH {R0} \ 000003E0 0B3080E2 ADD R3,R0,#+11 \ 000003E4 0600A0E1 MOV R0,R6 \ 000003E8 160000EF SWI +22 \ 000003EC 0CD08DE2 ADD SP,SP,#+12 5334 if (cl->state) icon++; //Модификация иконки группы \ ??DrawList_23: \ 000003F0 B405D7E1 LDRH R0,[R7, #+84] \ 000003F4 000050E3 CMP R0,#+0 \ 000003F8 01A08A12 ADDNE R10,R10,#+1 5335 } 5336 5337 // DrawImg(rc.x,rc.y,NumStatusToIconBar+icon);//status 5338 if(icons[icon])//вдруг иконки нет \ ??DrawList_20: \ 000003FC 0A8184E0 ADD R8,R4,R10, LSL #+2 \ 00000400 200098E5 LDR R0,[R8, #+32] \ 00000404 000050E3 CMP R0,#+0 \ 00000408 1200000A BEQ ??DrawList_24 5339 { 5340 DrwImage(icons[((cl->just_i)?(IS_OFFLINE):(icon))],rc.x,rc.y,0,0);//draw imghdr! \ 0000040C 780097E5 LDR R0,[R7, #+120] \ 00000410 0010A0E3 MOV R1,#+0 \ 00000414 02002DE9 PUSH {R1} \ 00000418 F620DDE1 LDRSH R2,[SP, #+6] \ 0000041C 000050E3 CMP R0,#+0 \ 00000420 0000A013 MOVNE R0,#+0 \ 00000424 F410DDE1 LDRSH R1,[SP, #+4] \ 00000428 0A00A001 MOVEQ R0,R10 \ 0000042C 0030A0E3 MOV R3,#+0 \ 00000430 000184E0 ADD R0,R4,R0, LSL #+2 \ 00000434 200090E5 LDR R0,[R0, #+32] \ 00000438 ........ BL DrwImage 5341 rc.x+=icons[icon]->w+2;//GetImgWidth(NumStatusToIconBar+icon)+2;// + смещение по х \ 0000043C 202098E5 LDR R2,[R8, #+32] \ 00000440 F410DDE1 LDRSH R1,[SP, #+4] \ 00000444 F020D2E1 LDRSH R2,[R2, #+0] \ 00000448 022082E2 ADD R2,R2,#+2 \ 0000044C 011082E0 ADD R1,R2,R1 \ 00000450 B410CDE1 STRH R1,[SP, #+4] \ 00000454 04D08DE2 ADD SP,SP,#+4 5342 } 5343 5344 if(cl->unread_msg!=0) \ ??DrawList_24: \ 00000458 942097E5 LDR R2,[R7, #+148] \ 0000045C 5E80A0E3 MOV R8,#+94 \ 00000460 408F88E3 ORR R8,R8,#0x100 \ 00000464 000052E3 CMP R2,#+0 \ 00000468 2F00000A BEQ ??DrawList_25 5345 { 5346 char p[3]; 5347 sprintf(p,_d,cl->unread_msg); \ 0000046C 0C149FE5 LDR R1,??DrawList_22+0xC ;; Canvas + 14 \ 00000470 1C008DE2 ADD R0,SP,#+28 \ 00000474 160000EF SWI +22 5348 DrawText(rc.x,rc.y,rc.x2,p,(cl->isactive!=0)?(clrRed):(clrBlack),(isSystemFont)?clfont:((cl->isactive!=0)?(clfont+1):(clfont)),0,0); \ 00000478 ........ LDR R0,??DataTable225 ;; isSystemFont \ 0000047C 7C1494E5 LDR R1,[R4, #+1148] \ 00000480 000090E5 LDR R0,[R0, #+0] \ 00000484 000050E3 CMP R0,#+0 \ 00000488 AC0097E5 LDR R0,[R7, #+172] \ 0000048C 2C00000A BEQ ??DrawList_26 \ 00000490 000050E3 CMP R0,#+0 \ 00000494 2D00001A BNE ??DrawList_27 \ ??DrawList_28: \ 00000498 7000A0E3 MOV R0,#+112 \ ??DrawList_29: \ 0000049C 28108DE5 STR R1,[SP, #+40] \ 000004A0 F420DDE1 LDRSH R2,[SP, #+4] \ 000004A4 8C0D80E3 ORR R0,R0,#0x2300 \ 000004A8 040080E0 ADD R0,R0,R4 \ 000004AC 2C208DE5 STR R2,[SP, #+44] \ 000004B0 F220DDE1 LDRSH R2,[SP, #+2] \ 000004B4 0910A0E1 MOV R1,R9 \ 000004B8 0C208DE5 STR R2,[SP, #+12] \ 000004BC F0B0DDE1 LDRSH R11,[SP, #+0] \ 000004C0 0020A0E3 MOV R2,#+0 \ 000004C4 ........ _BLF SetFontColor,??SetFontColor??rA \ 000004C8 2C009DE5 LDR R0,[SP, #+44] \ 000004CC 0030A0E3 MOV R3,#+0 \ 000004D0 0B0040E0 SUB R0,R0,R11 \ 000004D4 01002DE9 PUSH {R0} \ 000004D8 0000A0E3 MOV R0,#+0 \ 000004DC 01002DE9 PUSH {R0} \ 000004E0 01002DE9 PUSH {R0} \ 000004E4 0800A0E1 MOV R0,R8 \ 000004E8 01002DE9 PUSH {R0} \ 000004EC 0100A0E3 MOV R0,#+1 \ 000004F0 01002DE9 PUSH {R0} \ 000004F4 3C009DE5 LDR R0,[SP, #+60] \ 000004F8 01002DE9 PUSH {R0} \ 000004FC 24109DE5 LDR R1,[SP, #+36] \ 00000500 34208DE2 ADD R2,SP,#+52 \ 00000504 0B00A0E1 MOV R0,R11 \ 00000508 ........ _BLF PrintText,??PrintText??rA 5349 rc.x+=GetWidth(rc.x,rc.y)+2; \ 0000050C FA11DDE1 LDRSH R1,[SP, #+26] \ 00000510 F801DDE1 LDRSH R0,[SP, #+24] \ 00000514 ........ _BLF GetWidth,??GetWidth??rA \ 00000518 F821DDE1 LDRSH R2,[SP, #+24] \ 0000051C 020080E2 ADD R0,R0,#+2 \ 00000520 020080E0 ADD R0,R0,R2 \ 00000524 B801CDE1 STRH R0,[SP, #+24] \ 00000528 18D08DE2 ADD SP,SP,#+24 5350 } 5351 /* 5352 if(ack && ack->count) 5353 { 5354 char p[3]; 5355 if(cl->unread_msg) 5356 sprintf(p," %d",ack->count); 5357 else 5358 sprintf(p,_d,ack->count); 5359 DrawText(rc.x,rc.y,rc.x2,p,clrRed,clfont+1,0,0);//(cl->ack->type==1)?((char*)UnAckedClr):((char*)SendClr) 5360 rc.x+=GetWidth(rc.x,rc.y)+2; 5361 }*/ 5362 5363 if(i + ((VIEW_MODE==0)?(clstartItem):(0)) == curpos )//Если наш итем то выделяем \ ??DrawList_25: \ 0000052C ........ LDR R0,??DataTable226 ;; VIEW_MODE \ 00000530 000090E5 LDR R0,[R0, #+0] \ 00000534 000050E3 CMP R0,#+0 \ 00000538 9C049405 LDREQ R0,[R4, #+1180] \ 0000053C 0000A013 MOVNE R0,#+0 \ 00000540 040000EA B ??DrawList_30 \ ??DrawList_26: \ 00000544 000050E3 CMP R0,#+0 \ 00000548 D2FFFF0A BEQ ??DrawList_28 \ 0000054C 011081E2 ADD R1,R1,#+1 \ ??DrawList_27: \ 00000550 7800A0E3 MOV R0,#+120 \ 00000554 D0FFFFEA B ??DrawList_29 \ ??DrawList_30: \ 00000558 701494E5 LDR R1,[R4, #+1136] \ 0000055C 050080E0 ADD R0,R0,R5 \ 00000560 010050E1 CMP R0,R1 \ 00000564 6400001A BNE ??DrawList_31 5364 { 5365 DrawRoundedFrame(rc.x-1,rc.y-1,rc.x2-1,rc.y2-1,0,0,0,ClCursorBordClr,ClCursorClr); \ 00000568 14039FE5 LDR R0,??DrawList_22+0x10 ;; ClCursorClr \ 0000056C 01002DE9 PUSH {R0} \ 00000570 10039FE5 LDR R0,??DrawList_22+0x14 ;; ClCursorBordClr \ 00000574 01002DE9 PUSH {R0} \ 00000578 0000A0E3 MOV R0,#+0 \ 0000057C 01002DE9 PUSH {R0} \ 00000580 01002DE9 PUSH {R0} \ 00000584 01002DE9 PUSH {R0} \ 00000588 FA01DDE1 LDRSH R0,[SP, #+26] \ 0000058C 013040E2 SUB R3,R0,#+1 \ 00000590 F801DDE1 LDRSH R0,[SP, #+24] \ 00000594 012040E2 SUB R2,R0,#+1 \ 00000598 F601DDE1 LDRSH R0,[SP, #+22] \ 0000059C 011040E2 SUB R1,R0,#+1 \ 000005A0 F401DDE1 LDRSH R0,[SP, #+20] \ 000005A4 010040E2 SUB R0,R0,#+1 \ 000005A8 500100EF SWI +336 5366 if(LINE_MODE && icon!=IS_GROUP) \ 000005AC ........ LDR R0,??DataTable223 ;; LINE_MODE \ 000005B0 000090E5 LDR R0,[R0, #+0] \ 000005B4 14D08DE2 ADD SP,SP,#+20 \ 000005B8 000050E3 CMP R0,#+0 \ 000005BC 0F005A13 CMPNE R10,#+15 \ 000005C0 4200000A BEQ ??DrawList_32 5367 { 5368 char s[64]; 5369 if ((cl->xtext && cl->xtext[0]!=0) && (cl->isShowXst) && (cl->state!=0xFFFF))//Если контакт онлайн и показывать хстату \ 000005C4 B40097E5 LDR R0,[R7, #+180] \ 000005C8 000050E3 CMP R0,#+0 \ 000005CC 0000D015 LDRBNE R0,[R0, #+0] \ 000005D0 00005013 CMPNE R0,#+0 \ 000005D4 7C009715 LDRNE R0,[R7, #+124] \ 000005D8 00005013 CMPNE R0,#+0 \ 000005DC 0F00000A BEQ ??DrawList_33 \ 000005E0 B405D7E1 LDRH R0,[R7, #+84] \ 000005E4 FF10A0E3 MOV R1,#+255 \ 000005E8 FF1C81E3 ORR R1,R1,#0xFF00 \ 000005EC 010050E1 CMP R0,R1 \ 000005F0 0A00000A BEQ ??DrawList_33 5370 { 5371 int i; 5372 zeromem(s,64); \ 000005F4 4010A0E3 MOV R1,#+64 \ 000005F8 30008DE2 ADD R0,SP,#+48 \ 000005FC 1D0100EF SWI +285 5373 i=cl->xtext[0]; \ 00000600 B40097E5 LDR R0,[R7, #+180] \ ??DrawList_34: \ 00000604 0020D0E5 LDRB R2,[R0, #+0] 5374 if (i>63) i=63; 5375 strncpy(s,cl->xtext+1,i); \ 00000608 011080E2 ADD R1,R0,#+1 \ 0000060C 30008DE2 ADD R0,SP,#+48 \ 00000610 400052E3 CMP R2,#+64 \ 00000614 3F20A0A3 MOVGE R2,#+63 \ 00000618 160100EF SWI +278 \ 0000061C 110000EA B ??DrawList_35 5376 } 5377 else 5378 if(cl->xtext2 && cl->xtext2[0]!=0 && isLogStatusChange) \ ??DrawList_33: \ 00000620 B80097E5 LDR R0,[R7, #+184] \ 00000624 000050E3 CMP R0,#+0 \ 00000628 0000D015 LDRBNE R0,[R0, #+0] \ 0000062C 00005013 CMPNE R0,#+0 \ 00000630 0800000A BEQ ??DrawList_36 \ 00000634 ........ LDR R0,??DataTable224 ;; isLogStatusChange \ 00000638 000090E5 LDR R0,[R0, #+0] \ 0000063C 000050E3 CMP R0,#+0 \ 00000640 0400000A BEQ ??DrawList_36 5379 { 5380 int i; 5381 zeromem(s,64); \ 00000644 4010A0E3 MOV R1,#+64 \ 00000648 30008DE2 ADD R0,SP,#+48 \ 0000064C 1D0100EF SWI +285 5382 i=cl->xtext2[0]; \ 00000650 B80097E5 LDR R0,[R7, #+184] \ 00000654 EAFFFFEA B ??DrawList_34 5383 if (i>63) i=63; 5384 strncpy(s,cl->xtext2+1,i); 5385 } 5386 else 5387 sprintf(s,percent_d,cl->uin); \ ??DrawList_36: \ 00000658 0C2097E5 LDR R2,[R7, #+12] \ 0000065C 28129FE5 LDR R1,??DrawList_22+0x18 ;; Canvas + 11 \ 00000660 30008DE2 ADD R0,SP,#+48 \ 00000664 160000EF SWI +22 5388 SetFontColor((char*)CLDescricpClr,transparent,0); \ ??DrawList_35: \ 00000668 20029FE5 LDR R0,??DrawList_22+0x1C ;; CLDescricpClr \ 0000066C 0020A0E3 MOV R2,#+0 \ 00000670 0910A0E1 MOV R1,R9 \ 00000674 ........ _BLF SetFontColor,??SetFontColor??rA 5389 PrintText(rc.x+x+1,rc.y+font_y,s,0,clfont,1,350,0,0,rc.x2-rc.x-3);//description under item name \ 00000678 F000DDE1 LDRSH R0,[SP, #+0] \ 0000067C F410DDE1 LDRSH R1,[SP, #+4] \ 00000680 0030A0E3 MOV R3,#+0 \ 00000684 001041E0 SUB R1,R1,R0 \ 00000688 031041E2 SUB R1,R1,#+3 \ 0000068C 02002DE9 PUSH {R1} \ 00000690 010080E2 ADD R0,R0,#+1 \ 00000694 0010A0E3 MOV R1,#+0 \ 00000698 02002DE9 PUSH {R1} \ 0000069C 02002DE9 PUSH {R1} \ 000006A0 0810A0E1 MOV R1,R8 \ 000006A4 02002DE9 PUSH {R1} \ 000006A8 0110A0E3 MOV R1,#+1 \ 000006AC 02002DE9 PUSH {R1} \ 000006B0 7C1494E5 LDR R1,[R4, #+1148] \ 000006B4 02002DE9 PUSH {R1} \ 000006B8 20B09DE5 LDR R11,[SP, #+32] \ 000006BC FA11DDE1 LDRSH R1,[SP, #+26] \ 000006C0 48208DE2 ADD R2,SP,#+72 \ 000006C4 01108BE0 ADD R1,R11,R1 \ 000006C8 ........ _BLF PrintText,??PrintText??rA \ 000006CC 18D08DE2 ADD SP,SP,#+24 5390 } 5391 5392 if(totalItems>1) \ ??DrawList_32: \ 000006D0 881494E5 LDR R1,[R4, #+1160] \ 000006D4 020051E3 CMP R1,#+2 \ 000006D8 020000BA BLT ??DrawList_37 5393 DrawScrollBar(i+clstartItem,totalItems); \ 000006DC 9C0494E5 LDR R0,[R4, #+1180] \ 000006E0 050080E0 ADD R0,R0,R5 \ 000006E4 ........ BL DrawScrollBar 5394 5395 if(SOFT_MODE==2) DrawSoftInfo(cl); \ ??DrawList_37: \ 000006E8 14009DE5 LDR R0,[SP, #+20] \ 000006EC 020050E3 CMP R0,#+2 \ 000006F0 0100001A BNE ??DrawList_31 \ 000006F4 0700A0E1 MOV R0,R7 \ 000006F8 ........ BL DrawSoftInfo 5396 } 5397 5398 if(cl->xstate!=0)//если есть хстатус \ ??DrawList_31: \ 000006FC B605D7E1 LDRH R0,[R7, #+86] \ 00000700 000050E3 CMP R0,#+0 \ 00000704 0F00000A BEQ ??DrawList_38 5399 { 5400 xs=GetXSByItem(cl->xstate); \ 00000708 ........ _BLF GetXSByItem,??GetXSByItem??rA \ 0000070C 00B0B0E1 MOVS R11,R0 5401 if(xs) \ 00000710 0C00000A BEQ ??DrawList_38 5402 { 5403 DrwImage(xs->img,rc.x-x,rc.y,0,0); \ 00000714 0000A0E3 MOV R0,#+0 \ 00000718 01002DE9 PUSH {R0} \ 0000071C F620DDE1 LDRSH R2,[SP, #+6] \ 00000720 F410DDE1 LDRSH R1,[SP, #+4] \ 00000724 08009BE5 LDR R0,[R11, #+8] \ 00000728 0030A0E3 MOV R3,#+0 \ 0000072C ........ BL DrwImage 5404 rc.x+=xs->img->w; \ 00000730 08209BE5 LDR R2,[R11, #+8] \ 00000734 F410DDE1 LDRSH R1,[SP, #+4] \ 00000738 F020D2E1 LDRSH R2,[R2, #+0] \ 0000073C 011082E0 ADD R1,R2,R1 \ 00000740 B410CDE1 STRH R1,[SP, #+4] \ 00000744 04D08DE2 ADD SP,SP,#+4 5405 } 5406 } 5407 /* 5408 if(ack->type!=SENDED && ack->type <= 2)//если есть не отправленные 5409 { 5410 if(!VIEW_MODE)//в один столбец, рисуем длинну по имени 5411 { 5412 PrintText(rc.x+3,rc.y,name,0,clfont,1,350,0,0,rc.x2); 5413 DrawRoundedFrame(rc.x-1,rc.y,rc.x+GetWidth(rc.x+3,rc.y)+3,rc.y2-2,0,0,0,0, (ack->type==SEND)?(SendClr):(UnAckedClr)); 5414 } 5415 else 5416 DrawRoundedFrame(rc.x-1,rc.y-1,rc.x2-1,rc.y2-1,0,0,0,0, (ack->type==1)?(SendClr):(UnAckedClr)); 5417 }*/ 5418 5419 if(cl->just_now) \ ??DrawList_38: \ 00000748 740097E5 LDR R0,[R7, #+116] \ 0000074C 000050E3 CMP R0,#+0 \ 00000750 0400000A BEQ ??DrawList_39 5420 DrawJustNow(&rc,cl,name); \ 00000754 0620A0E1 MOV R2,R6 \ 00000758 0710A0E1 MOV R1,R7 \ 0000075C 0D00A0E1 MOV R0,SP \ 00000760 ........ BL DrawJustNow \ 00000764 2D0000EA B ??DrawList_10 \ ??DrawList_39: \ 00000768 F000DDE1 LDRSH R0,[SP, #+0] \ 0000076C 7C1494E5 LDR R1,[R4, #+1148] \ 00000770 F420DDE1 LDRSH R2,[SP, #+4] \ 00000774 03B080E2 ADD R11,R0,#+3 \ 00000778 F200DDE1 LDRSH R0,[SP, #+2] \ 0000077C 013081E2 ADD R3,R1,#+1 \ 00000780 0F005AE3 CMP R10,#+15 \ 00000784 0600001A BNE ??DrawList_40 5421 else 5422 { 5423 if(icon==IS_GROUP) 5424 DrawText(rc.x+3,rc.y,rc.x2,name,(char*)GroupClr,clfont+1,0,0); \ 00000788 03A0A0E1 MOV R10,R3 \ 0000078C 0C208DE5 STR R2,[SP, #+12] \ 00000790 0070A0E1 MOV R7,R0 \ 00000794 DC009FE5 LDR R0,??DrawList_22+0x4 ;; GroupClr \ 00000798 0020A0E3 MOV R2,#+0 \ 0000079C 0910A0E1 MOV R1,R9 \ 000007A0 0D0000EA B ??DrawList_41 5425 else 5426 DrawText(rc.x+3,rc.y,rc.x2,name,(cl->isactive!=0)?(ActiveClr):(NotActiveClr),(isSystemFont)?clfont:((cl->isactive!=0)?(clfont+1):(clfont)),0,0); \ ??DrawList_40: \ 000007A4 ........ LDR R10,??DataTable225 ;; isSystemFont \ 000007A8 AC7097E5 LDR R7,[R7, #+172] \ 000007AC 00A09AE5 LDR R10,[R10, #+0] \ 000007B0 00005AE3 CMP R10,#+0 \ 000007B4 2000000A BEQ ??DrawList_42 \ 000007B8 000057E3 CMP R7,#+0 \ 000007BC 2100001A BNE ??DrawList_43 \ ??DrawList_44: \ 000007C0 CC309FE5 LDR R3,??DrawList_22+0x20 ;; NotActiveClr \ ??DrawList_45: \ 000007C4 01A0A0E1 MOV R10,R1 \ 000007C8 0C208DE5 STR R2,[SP, #+12] \ 000007CC 0070A0E1 MOV R7,R0 \ 000007D0 0020A0E3 MOV R2,#+0 \ 000007D4 0910A0E1 MOV R1,R9 \ 000007D8 0300A0E1 MOV R0,R3 \ ??DrawList_41: \ 000007DC ........ _BLF SetFontColor,??SetFontColor??rA \ 000007E0 0C009DE5 LDR R0,[SP, #+12] \ 000007E4 0030A0E3 MOV R3,#+0 \ 000007E8 0B0040E0 SUB R0,R0,R11 \ 000007EC 01002DE9 PUSH {R0} \ 000007F0 0620A0E1 MOV R2,R6 \ 000007F4 0710A0E1 MOV R1,R7 \ 000007F8 0000A0E3 MOV R0,#+0 \ 000007FC 01002DE9 PUSH {R0} \ 00000800 01002DE9 PUSH {R0} \ 00000804 00012DE9 PUSH {R8} \ 00000808 0100A0E3 MOV R0,#+1 \ 0000080C 01002DE9 PUSH {R0} \ 00000810 00042DE9 PUSH {R10} \ 00000814 0B00A0E1 MOV R0,R11 \ 00000818 ........ _BLF PrintText,??PrintText??rA \ 0000081C 18D08DE2 ADD SP,SP,#+24 5427 } 5428 }//if(cl) 5429 } 5430 i++; 5431 // cl=cl->next; 5432 if(i > (itemFromDisp*((VIEW_MODE!=0)?(curpage):(1))) ) break; \ ??DrawList_10: \ 00000820 ........ LDR R0,??DataTable226 ;; VIEW_MODE \ 00000824 015085E2 ADD R5,R5,#+1 \ 00000828 000090E5 LDR R0,[R0, #+0] \ 0000082C 000050E3 CMP R0,#+0 \ 00000830 8C049415 LDRNE R0,[R4, #+1164] \ 00000834 0100A003 MOVEQ R0,#+1 \ 00000838 040000EA B ??DrawList_46 \ ??DrawList_42: \ 0000083C 000057E3 CMP R7,#+0 \ 00000840 DEFFFF0A BEQ ??DrawList_44 \ 00000844 0310A0E1 MOV R1,R3 \ ??DrawList_43: \ 00000848 48309FE5 LDR R3,??DrawList_22+0x24 ;; ActiveClr \ 0000084C DCFFFFEA B ??DrawList_45 \ ??DrawList_46: \ 00000850 841494E5 LDR R1,[R4, #+1156] \ 00000854 900101E0 MUL R1,R0,R1 \ 00000858 050051E1 CMP R1,R5 \ 0000085C 3BFEFFAA BGE ??DrawList_7 5433 } 5434 UnlockSched(); \ ??DrawList_8: \ 00000860 470100EF SWI +327 5435 mfree(name); \ 00000864 0600A0E1 MOV R0,R6 \ 00000868 150000EF SWI +21 5436 // mfree(ack); 5437 } \ ??DrawList_2: \ 0000086C 70D08DE2 ADD SP,SP,#+112 ;; stack cleaning \ 00000870 F08FBDE8 POP {R4-R11,PC} ;; return \ ??DrawList_22: \ 00000874 ........ DC32 Canvas + 20 \ 00000878 ........ DC32 GroupClr \ 0000087C ........ DC32 Canvas + 28 \ 00000880 ........ DC32 Canvas + 14 \ 00000884 ........ DC32 ClCursorClr \ 00000888 ........ DC32 ClCursorBordClr \ 0000088C ........ DC32 Canvas + 11 \ 00000890 ........ DC32 CLDescricpClr \ 00000894 ........ DC32 NotActiveClr \ 00000898 ........ DC32 ActiveClr 5438 5439 // Управление курсором \ In segment CODE, align 4, keep-with-next 5440 void MoveUp2(int i) 5441 { 5442 if( curpos > itemFromDisp + 2 && totalItems!=itemFromDisp ) \ MoveUp2: \ 00000000 ........ LDR R1,??DataTable232 ;; i_rc \ 00000004 70002DE9 PUSH {R4-R6} \ 00000008 70C491E5 LDR R12,[R1, #+1136] \ 0000000C 843491E5 LDR R3,[R1, #+1156] \ 00000010 9C2491E5 LDR R2,[R1, #+1180] \ 00000014 884491E5 LDR R4,[R1, #+1160] \ 00000018 025083E2 ADD R5,R3,#+2 \ 0000001C 0C0055E1 CMP R5,R12 \ 00000020 0F0000AA BGE ??MoveUp2_0 \ 00000024 030054E1 CMP R4,R3 \ 00000028 0D00000A BEQ ??MoveUp2_0 5443 { 5444 curpos-=i; \ 0000002C 00C04CE0 SUB R12,R12,R0 5445 if(clstartItem > 0 && curpos > ((itemFromDisp/2)+1) && curpos < totalItems-((itemFromDisp/2)+1)) \ 00000030 010052E3 CMP R2,#+1 \ 00000034 1F0000BA BLT ??MoveUp2_1 \ 00000038 A35F83E0 ADD R5,R3,R3, LSR #+31 \ 0000003C C550A0E1 ASR R5,R5,#+1 \ 00000040 016085E2 ADD R6,R5,#+1 \ 00000044 0C0056E1 CMP R6,R12 \ 00000048 1A0000AA BGE ??MoveUp2_1 \ 0000004C 054044E0 SUB R4,R4,R5 \ 00000050 014044E2 SUB R4,R4,#+1 \ 00000054 04005CE1 CMP R12,R4 \ 00000058 160000AA BGE ??MoveUp2_1 5446 clstartItem-=i; \ ??MoveUp2_2: \ 0000005C 002042E0 SUB R2,R2,R0 \ 00000060 140000EA B ??MoveUp2_1 5447 } 5448 else 5449 if(curpos > 0) \ ??MoveUp2_0: \ 00000064 01005CE3 CMP R12,#+1 \ 00000068 0E0000BA BLT ??MoveUp2_3 5450 { 5451 curpos-=i; \ 0000006C 00C04CE0 SUB R12,R12,R0 5452 if(clstartItem > 0 && curpos > ((itemFromDisp/2)+1)) \ 00000070 010052E3 CMP R2,#+1 \ 00000074 040000BA BLT ??MoveUp2_4 \ 00000078 A34F83E0 ADD R4,R3,R3, LSR #+31 \ 0000007C 0150A0E3 MOV R5,#+1 \ 00000080 C44085E0 ADD R4,R5,R4, ASR #+1 \ 00000084 0C0054E1 CMP R4,R12 \ 00000088 F3FFFFBA BLT ??MoveUp2_2 5453 clstartItem-=i; 5454 else 5455 if(curpos < ((itemFromDisp/2)+1)) \ ??MoveUp2_4: \ 0000008C A30F83E0 ADD R0,R3,R3, LSR #+31 \ 00000090 0130A0E3 MOV R3,#+1 \ 00000094 C00083E0 ADD R0,R3,R0, ASR #+1 \ 00000098 00005CE1 CMP R12,R0 \ 0000009C 050000AA BGE ??MoveUp2_1 5456 clstartItem=0; \ ??MoveUp2_5: \ 000000A0 0020A0E3 MOV R2,#+0 \ 000000A4 030000EA B ??MoveUp2_1 5457 } 5458 else 5459 { 5460 curpos=totalItems; \ ??MoveUp2_3: \ 000000A8 04C0A0E1 MOV R12,R4 5461 if(totalItems==itemFromDisp) \ 000000AC 030054E1 CMP R4,R3 \ 000000B0 FAFFFF0A BEQ ??MoveUp2_5 5462 clstartItem=0; 5463 else 5464 clstartItem=totalItems-itemFromDisp; \ 000000B4 032044E0 SUB R2,R4,R3 \ ??MoveUp2_1: \ 000000B8 9C2481E5 STR R2,[R1, #+1180] \ 000000BC 70C481E5 STR R12,[R1, #+1136] 5465 } 5466 } \ 000000C0 7000BDE8 POP {R4-R6} \ 000000C4 1EFF2FE1 BX LR ;; return 5467 5468 \ In segment CODE, align 4, keep-with-next 5469 void MoveDown2(int i) 5470 { 5471 if( curpos < itemFromDisp/2+1 && totalItems!=itemFromDisp ) curpos+=i; \ MoveDown2: \ 00000000 ........ LDR R1,??DataTable232 ;; i_rc \ 00000004 70002DE9 PUSH {R4-R6} \ 00000008 702491E5 LDR R2,[R1, #+1136] \ 0000000C 84C491E5 LDR R12,[R1, #+1156] \ 00000010 9C3491E5 LDR R3,[R1, #+1180] \ 00000014 884491E5 LDR R4,[R1, #+1160] \ 00000018 AC5F8CE0 ADD R5,R12,R12, LSR #+31 \ 0000001C 0160A0E3 MOV R6,#+1 \ 00000020 C55086E0 ADD R5,R6,R5, ASR #+1 \ 00000024 050052E1 CMP R2,R5 \ 00000028 030000AA BGE ??MoveDown2_0 \ 0000002C 0C0054E1 CMP R4,R12 \ 00000030 0100000A BEQ ??MoveDown2_0 \ ??MoveDown2_1: \ 00000034 020080E0 ADD R0,R0,R2 \ 00000038 0B0000EA B ??MoveDown2_2 5472 else 5473 if(curpos < totalItems - 1) \ ??MoveDown2_0: \ 0000003C 015044E2 SUB R5,R4,#+1 \ 00000040 050052E1 CMP R2,R5 \ 00000044 060000AA BGE ??MoveDown2_3 5474 { 5475 if(itemFromDisp != totalItems) \ 00000048 04005CE1 CMP R12,R4 \ 0000004C F8FFFF0A BEQ ??MoveDown2_1 5476 { 5477 if(clstartItem < totalItems-itemFromDisp) \ 00000050 0C4044E0 SUB R4,R4,R12 \ 00000054 040053E1 CMP R3,R4 \ 00000058 F5FFFFAA BGE ??MoveDown2_1 5478 clstartItem+=i; \ 0000005C 033080E0 ADD R3,R0,R3 \ 00000060 F3FFFFEA B ??MoveDown2_1 5479 } 5480 /* else 5481 { 5482 if(clstartItem < itemFromDisp) 5483 clstartItem+=i; 5484 }*/ 5485 5486 curpos+=i; 5487 } 5488 else 5489 { 5490 curpos=0; \ ??MoveDown2_3: \ 00000064 0000A0E3 MOV R0,#+0 5491 clstartItem=0; \ 00000068 0030A0E3 MOV R3,#+0 \ ??MoveDown2_2: \ 0000006C 9C3481E5 STR R3,[R1, #+1180] \ 00000070 700481E5 STR R0,[R1, #+1136] 5492 } 5493 } \ 00000074 7000BDE8 POP {R4-R6} \ 00000078 1EFF2FE1 BX LR ;; return 5494 5495 /* 5496 // Управление курсором 5497 void MoveUp(int i) 5498 { 5499 if(!itemFromDisp)return; 5500 5501 if(i) curpos-=2; 5502 else curpos--; 5503 5504 if(i && curpos+2==2) 5505 { 5506 curpos=0; 5507 curpage=1; 5508 } 5509 else 5510 if(curpos<0) 5511 { 5512 curpos=totalItems; 5513 5514 if(itemFromDisp!=totalItems) 5515 { 5516 curpage = sdiv(itemFromDisp,totalItems)+1; 5517 } 5518 else 5519 curpage = 1; 5520 } 5521 else 5522 { 5523 // if(i) curpos-=2; 5524 // else curpos--; 5525 if(curpos<(curpage-1)*itemFromDisp){ curpos++; curpage--; } 5526 } 5527 } 5528 5529 void MoveDown(int i) 5530 { 5531 if(!totalItems)return; 5532 if(i) curpos+=2; 5533 else curpos++; 5534 5535 if(curpos>totalItems) { curpos=0; curpage=1; } 5536 if(curpage*itemFromDispcurpos){ curpos++; curpage--; } */ 5548 5549 if(i) curpos-=2; \ 00000018 702494E5 LDR R2,[R4, #+1136] \ 0000001C 000051E3 CMP R1,#+0 \ 00000020 02204212 SUBNE R2,R2,#+2 5550 else curpos--; \ 00000024 01204202 SUBEQ R2,R2,#+1 \ 00000028 702484E5 STR R2,[R4, #+1136] 5551 5552 if(i && curpos+2==2) \ 0000002C 0120A0E3 MOV R2,#+1 \ 00000030 0200000A BEQ ??MoveUp_0 \ 00000034 701494E5 LDR R1,[R4, #+1136] \ 00000038 000051E3 CMP R1,#+0 \ 0000003C 0B00000A BEQ ??MoveUp_1 5553 { 5554 curpos=0; 5555 curpage=1; 5556 } 5557 else 5558 if(curpos<0) \ ??MoveUp_0: \ 00000040 701494E5 LDR R1,[R4, #+1136] \ 00000044 000051E3 CMP R1,#+0 \ 00000048 0A00005A BPL ??MoveUp_2 5559 { 5560 curpos=totalItems-1; \ 0000004C 881494E5 LDR R1,[R4, #+1160] \ 00000050 013041E2 SUB R3,R1,#+1 \ 00000054 703484E5 STR R3,[R4, #+1136] 5561 5562 if(itemFromDisp!=totalItems) \ 00000058 010050E1 CMP R0,R1 \ 0000005C 0300000A BEQ ??MoveUp_1 5563 { 5564 curpage = /*(itemFromDisp/totalItems)+1;*/sdiv(itemFromDisp,totalItems)+1; \ 00000060 B80000EF SWI +184 \ 00000064 010080E2 ADD R0,R0,#+1 \ 00000068 8C0484E5 STR R0,[R4, #+1164] \ 0000006C 1080BDE8 POP {R4,PC} 5565 } 5566 else 5567 curpage = 1; \ ??MoveUp_1: \ 00000070 8C2484E5 STR R2,[R4, #+1164] \ 00000074 1080BDE8 POP {R4,PC} 5568 } \ ??MoveUp_2: \ 00000078 8C2494E5 LDR R2,[R4, #+1164] \ 0000007C 012042E2 SUB R2,R2,#+1 \ 00000080 900203E0 MUL R3,R0,R2 \ 00000084 030051E1 CMP R1,R3 5569 else 5570 { 5571 // if(i) curpos-=2; 5572 // else curpos--; 5573 if(curpos<(curpage-1)*itemFromDisp){ curpos++; curpage--; } \ 00000088 010081B2 ADDLT R0,R1,#+1 \ 0000008C 700484B5 STRLT R0,[R4, #+1136] \ 00000090 8C2484B5 STRLT R2,[R4, #+1164] \ 00000094 1080BDE8 POP {R4,PC} ;; return 5574 } 5575 } 5576 \ In segment CODE, align 4, keep-with-next 5577 void MoveDown(int i) 5578 { 5579 if(!totalItems)return; \ MoveDown: \ 00000000 ........ LDR R1,??DataTable232 ;; i_rc \ 00000004 882491E5 LDR R2,[R1, #+1160] \ 00000008 000052E3 CMP R2,#+0 \ 0000000C 1EFF2F01 BXEQ LR 5580 if(i) curpos+=2; \ 00000010 703491E5 LDR R3,[R1, #+1136] \ 00000014 000050E3 CMP R0,#+0 \ 00000018 02008312 ADDNE R0,R3,#+2 5581 else curpos++; \ 0000001C 01008302 ADDEQ R0,R3,#+1 5582 if(curpos>=totalItems) { curpos=0; curpage=1; } 5583 if(curpage*itemFromDisp` \ 00000044 8620A0E1 LSL R2,R6,#+1 \ 00000048 02002DE9 PUSH {R1} \ 0000004C 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000050 0910A0E1 MOV R1,R9 \ 00000054 02002DE9 PUSH {R1} \ 00000058 0010A0E3 MOV R1,#+0 \ 0000005C 02002DE9 PUSH {R1} \ 00000060 02002DE9 PUSH {R1} \ 00000064 02002DE9 PUSH {R1} \ 00000068 A51F85E0 ADD R1,R5,R5, LSR #+31 \ 0000006C C13082E0 ADD R3,R2,R1, ASR #+1 \ 00000070 012047E2 SUB R2,R7,#+1 \ 00000074 A81F88E0 ADD R1,R8,R8, LSR #+31 \ 00000078 C11060E0 RSB R1,R0,R1, ASR #+1 \ 0000007C 0000A0E3 MOV R0,#+0 \ 00000080 500100EF SWI +336 5590 SetFontColor(clrWhite,transparent,0); \ 00000084 0020A0E3 MOV R2,#+0 \ 00000088 7C00A0E3 MOV R0,#+124 \ 0000008C 8C0D80E3 ORR R0,R0,#0x2300 \ 00000090 041080E0 ADD R1,R0,R4 \ 00000094 0900A0E1 MOV R0,R9 \ 00000098 ........ _BLF SetFontColor,??SetFontColor??rA 5591 PrintText(ScreenW()/2+5,ScreenH()/2-FontH(FONT_MEDIUM+100)-5,prmsg,1,FONT_MEDIUM+100,1,1,0,0,ScreenW()-5); \ 0000009C 888100EF SWI +33160 \ 000000A0 0070A0E1 MOV R7,R0 \ 000000A4 898100EF SWI +33161 \ 000000A8 0050A0E1 MOV R5,R0 \ 000000AC 6800A0E3 MOV R0,#+104 \ 000000B0 ........ _BLF FontH,??FontH??rA \ 000000B4 0060A0E1 MOV R6,R0 \ 000000B8 888100EF SWI +33160 \ 000000BC 051047E2 SUB R1,R7,#+5 \ 000000C0 02002DE9 PUSH {R1} \ 000000C4 0130A0E3 MOV R3,#+1 \ 000000C8 A00F80E0 ADD R0,R0,R0, LSR #+31 \ 000000CC 0010A0E3 MOV R1,#+0 \ 000000D0 02002DE9 PUSH {R1} \ 000000D4 02002DE9 PUSH {R1} \ 000000D8 0110A0E3 MOV R1,#+1 \ 000000DC 02002DE9 PUSH {R1} \ 000000E0 02002DE9 PUSH {R1} \ 000000E4 6810A0E3 MOV R1,#+104 \ 000000E8 02002DE9 PUSH {R1} \ 000000EC F810A0E3 MOV R1,#+248 \ 000000F0 5C1D81E3 ORR R1,R1,#0x1700 \ 000000F4 042081E0 ADD R2,R1,R4 \ 000000F8 A51F85E0 ADD R1,R5,R5, LSR #+31 \ 000000FC C11066E0 RSB R1,R6,R1, ASR #+1 \ 00000100 051041E2 SUB R1,R1,#+5 \ 00000104 0540A0E3 MOV R4,#+5 \ 00000108 C00084E0 ADD R0,R4,R0, ASR #+1 \ 0000010C ........ _BLF PrintText,??PrintText??rA \ 00000110 2CD08DE2 ADD SP,SP,#+44 5592 } \ 00000114 F083BDE8 POP {R4-R9,PC} ;; return \ ??PrintMessage_0: \ 00000118 ........ DC32 `?` 5593 5594 \ In segment CODE, align 4, keep-with-next 5595 void DrawContactList() 5596 { \ DrawContactList: \ 00000000 30402DE9 PUSH {R4,R5,LR} 5597 if(!IsGuiOnTop(contactlist_menu_id)) return; \ 00000004 ........ LDR R4,??DataTable232 ;; i_rc \ 00000008 FC0294E5 LDR R0,[R4, #+764] \ 0000000C 350100EF SWI +309 \ 00000010 000050E3 CMP R0,#+0 \ 00000014 3080BD08 POPEQ {R4,R5,PC} 5598 DrawRoundedFrame(0,hy,ScreenW()-1,ScreenH()-1,0,0,0,CLBackgrClr,CLBackgrClr); \ 00000018 898100EF SWI +33161 \ 0000001C 0050A0E1 MOV R5,R0 \ 00000020 888100EF SWI +33160 \ 00000024 A8109FE5 LDR R1,??DrawContactList_0 ;; CLBackgrClr \ 00000028 013045E2 SUB R3,R5,#+1 \ 0000002C 0120A0E1 MOV R2,R1 \ 00000030 04002DE9 PUSH {R2} \ 00000034 02002DE9 PUSH {R1} \ 00000038 0010A0E3 MOV R1,#+0 \ 0000003C 02002DE9 PUSH {R1} \ 00000040 02002DE9 PUSH {R1} \ 00000044 02002DE9 PUSH {R1} \ 00000048 781494E5 LDR R1,[R4, #+1144] \ 0000004C 012040E2 SUB R2,R0,#+1 \ 00000050 0000A0E3 MOV R0,#+0 \ 00000054 500100EF SWI +336 5599 // DrawRoundedFrame(0,hy,ScreenW()-1,ScreenH()-1,0,0,0,clrWhite,clrWhite); 5600 if(icons[ICON_BG]) DrwImage(icons[ICON_BG],0,0,0,0); \ 00000058 A00094E5 LDR R0,[R4, #+160] \ 0000005C 14D08DE2 ADD SP,SP,#+20 \ 00000060 000050E3 CMP R0,#+0 \ 00000064 0500000A BEQ ??DrawContactList_1 \ 00000068 0010A0E3 MOV R1,#+0 \ 0000006C 02002DE9 PUSH {R1} \ 00000070 0030A0E3 MOV R3,#+0 \ 00000074 0120A0E1 MOV R2,R1 \ 00000078 ........ BL DrwImage \ 0000007C 04D08DE2 ADD SP,SP,#+4 5601 DrawHeader(); \ ??DrawContactList_1: \ 00000080 ........ BL DrawHeader 5602 DrawList(); \ 00000084 ........ BL DrawList 5603 if(SOFT_MODE==1) DrawSoftKeys(LG_MENU,clmenu_sk_r); \ 00000088 ........ LDR R0,??DataTable233 ;; SOFT_MODE \ 0000008C 000090E5 LDR R0,[R0, #+0] \ 00000090 010050E3 CMP R0,#+1 \ 00000094 0400001A BNE ??DrawContactList_2 \ 00000098 9000A0E3 MOV R0,#+144 \ 0000009C 780D80E3 ORR R0,R0,#0x1E00 \ 000000A0 041080E0 ADD R1,R0,R4 \ 000000A4 2C009FE5 LDR R0,??DrawContactList_0+0x4 ;; `?` \ 000000A8 ........ BL DrawSoftKeys 5604 if(strlen(prmsg)!=0 && PrintTimer!=0) PrintMessage(); \ ??DrawContactList_2: \ 000000AC F800A0E3 MOV R0,#+248 \ 000000B0 5C0D80E3 ORR R0,R0,#0x1700 \ 000000B4 040080E0 ADD R0,R0,R4 \ 000000B8 1B0000EF SWI +27 \ 000000BC 000050E3 CMP R0,#+0 \ 000000C0 C4029415 LDRNE R0,[R4, #+708] \ 000000C4 00005013 CMPNE R0,#+0 \ 000000C8 3080BD08 POPEQ {R4,R5,PC} \ 000000CC ........ BL PrintMessage \ 000000D0 3080BDE8 POP {R4,R5,PC} ;; return \ ??DrawContactList_0: \ 000000D4 ........ DC32 CLBackgrClr \ 000000D8 ........ DC32 `?` 5605 } 5606 5607 #ifdef DEBUG \ In segment CODE, align 4, keep-with-next 5608 static void OnRedraw(MAIN_GUI *data) 5609 { 5610 DrawContactList(); \ OnRedraw: \ 00000000 ........ B DrawContactList ;; tailcall 5611 } 5612 \ In segment CODE, align 4, keep-with-next 5613 static void onCreate(MAIN_GUI *data, void *(*malloc_adr)(int)) 5614 { \ onCreate: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5615 #ifdef ELKA 5616 #ifdef ICONBAR 5617 DisableIconBar(0); \ 00000008 0000A0E3 MOV R0,#+0 \ 0000000C 3B0200EF SWI +571 5618 #else 5619 DisableIconBar(1); 5620 #endif 5621 #endif 5622 5623 // StatusToIMGHDR(); 5624 data->gui.state=1; \ 00000010 0100A0E3 MOV R0,#+1 \ 00000014 0C00C4E5 STRB R0,[R4, #+12] 5625 } \ 00000018 1080BDE8 POP {R4,PC} ;; return 5626 \ In segment CODE, align 4, keep-with-next 5627 static void onClose(MAIN_GUI *data, void (*mfree_adr)(void *)) 5628 { 5629 data->gui.state=0; \ onClose: \ 00000000 0010A0E3 MOV R1,#+0 \ 00000004 0C10C0E5 STRB R1,[R0, #+12] 5630 } \ 00000008 1EFF2FE1 BX LR ;; return 5631 \ In segment CODE, align 4, keep-with-next 5632 static void onFocus(MAIN_GUI *data, void *(*malloc_adr)(int), void (*mfree_adr)(void *)) 5633 { \ onFocus: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5634 #ifdef ELKA 5635 #ifdef ICONBAR 5636 DisableIconBar(0); \ 00000008 0000A0E3 MOV R0,#+0 \ 0000000C 3B0200EF SWI +571 5637 #else 5638 DisableIconBar(1); 5639 #endif 5640 #endif 5641 SetCanvasFlag(1); \ 00000010 0100A0E3 MOV R0,#+1 \ 00000014 ........ _BLF SetCanvasFlag,??SetCanvasFlag??rA 5642 data->gui.state=2; \ 00000018 0200A0E3 MOV R0,#+2 \ 0000001C 0C00C4E5 STRB R0,[R4, #+12] 5643 DisableIDLETMR(); \ 00000020 7F0100EF SWI +383 5644 } \ 00000024 1080BDE8 POP {R4,PC} ;; return 5645 \ In segment CODE, align 4, keep-with-next 5646 static void onUnfocus(MAIN_GUI *data, void (*mfree_adr)(void *)) 5647 { \ onUnfocus: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 5648 #ifdef ELKA 5649 DisableIconBar(0); \ 00000008 0000A0E3 MOV R0,#+0 \ 0000000C 3B0200EF SWI +571 5650 #endif 5651 if (data->gui.state!=2) return; \ 00000010 0C00D4E5 LDRB R0,[R4, #+12] \ 00000014 020050E3 CMP R0,#+2 5652 data->gui.state=1; \ 00000018 0100A003 MOVEQ R0,#+1 \ 0000001C 0C00C405 STRBEQ R0,[R4, #+12] 5653 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 5654 #endif 5655 5656 //int ShowLoadScreen=1; 5657 int lastKey = -1; \ In segment DATA_Z, align 4, align-sorted 5658 int lastIsLongPress = 0; \ lastIsLongPress: \ 00000000 DS8 4 5659 \ In segment CODE, align 4, keep-with-next 5660 int ClOnKey(GUI_MSG *msg) 5661 { \ ClOnKey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 5662 int key=msg->gbsmsg->submess; 5663 /* int isLongPress = 0; 5664 int ignore = 1; 5665 */ 5666 CLIST *t; 5667 // t=FindContactByN(curpos); 5668 5669 if (msg->gbsmsg->msg==LONG_PRESS) \ 00000004 ........ LDR R9,??DataTable234 ;; VIEW_MODE \ 00000008 ........ LDR R8,??DataTable238 ;; i_rc \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 5F7EA0E3 MOV R7,#+1520 \ 00000018 086090E5 LDR R6,[R0, #+8] \ 0000001C 040090E5 LDR R0,[R0, #+4] \ 00000020 9510A0E3 MOV R1,#+149 \ 00000024 401F81E3 ORR R1,R1,#0x100 \ 00000028 010050E1 CMP R0,R1 \ 0000002C 3500001A BNE ??ClOnKey_1 5670 { 5671 //isLongPress = (msg->gbsmsg->msg == LONG_PRESS); 5672 // Игнорим KEY_UP если уже обработали долгое нажатие этой же кнопки 5673 // Обрабатываем только KEY_UP и LONG_PRESS 5674 //ignore = (lastKey == key && lastIsLongPress && msg->gbsmsg->msg == KEY_UP) 5675 // || (msg->gbsmsg->msg != KEY_UP && msg->gbsmsg->msg != LONG_PRESS); 5676 // if (!ignore) 5677 LongPressAction(FindContactByN(curpos),msg->gbsmsg->submess); \ 00000030 700498E5 LDR R0,[R8, #+1136] \ 00000034 ........ _BLF FindContactByN,??FindContactByN??rA \ 00000038 041094E5 LDR R1,[R4, #+4] \ 0000003C 081091E5 LDR R1,[R1, #+8] \ 00000040 ........ BL LongPressAction 5678 5679 // lastKey = key; 5680 // lastIsLongPress = isLongPress; 5681 5682 switch(msg->gbsmsg->submess) \ 00000044 040094E5 LDR R0,[R4, #+4] \ 00000048 080090E5 LDR R0,[R0, #+8] \ 0000004C 3B0050E2 SUBS R0,R0,#+59 \ 00000050 0600000A BEQ ??ClOnKey_2 \ 00000054 010050E2 SUBS R0,R0,#+1 \ 00000058 0A00000A BEQ ??ClOnKey_3 \ 0000005C 010050E2 SUBS R0,R0,#+1 \ 00000060 1600000A BEQ ??ClOnKey_4 \ 00000064 010050E2 SUBS R0,R0,#+1 \ 00000068 0E00000A BEQ ??ClOnKey_5 \ 0000006C 190000EA B ??ClOnKey_6 5683 { 5684 case UP_BUTTON: if(VIEW_MODE) MoveUp(1); else MoveUp2(1)/*MoveUp(0)*/; break; \ ??ClOnKey_2: \ 00000070 000099E5 LDR R0,[R9, #+0] \ 00000074 000050E3 CMP R0,#+0 \ 00000078 0100A0E3 MOV R0,#+1 \ 0000007C 1400000A BEQ ??ClOnKey_7 \ ??ClOnKey_8: \ 00000080 ........ BL MoveUp \ 00000084 130000EA B ??ClOnKey_6 5685 case DOWN_BUTTON: if(VIEW_MODE) MoveDown(1); else MoveDown2(1)/*MoveDown(0)*/; break; \ ??ClOnKey_3: \ 00000088 000099E5 LDR R0,[R9, #+0] \ 0000008C 000050E3 CMP R0,#+0 \ 00000090 0100A0E3 MOV R0,#+1 \ 00000094 0100000A BEQ ??ClOnKey_9 \ ??ClOnKey_10: \ 00000098 ........ BL MoveDown \ 0000009C 0D0000EA B ??ClOnKey_6 \ ??ClOnKey_9: \ 000000A0 ........ BL MoveDown2 \ 000000A4 0B0000EA B ??ClOnKey_6 5686 case RIGHT_BUTTON: if(VIEW_MODE) MoveDown(0); else MoveDown2(2)/*MoveDown(1)*/; break; \ ??ClOnKey_5: \ 000000A8 000099E5 LDR R0,[R9, #+0] \ 000000AC 000050E3 CMP R0,#+0 \ 000000B0 0000A013 MOVNE R0,#+0 \ 000000B4 F7FFFF1A BNE ??ClOnKey_10 \ 000000B8 0200A0E3 MOV R0,#+2 \ 000000BC F7FFFFEA B ??ClOnKey_9 5687 case LEFT_BUTTON: if(VIEW_MODE) MoveUp(0); else MoveUp2(2)/*MoveUp(1)*/; break; \ ??ClOnKey_4: \ 000000C0 000099E5 LDR R0,[R9, #+0] \ 000000C4 000050E3 CMP R0,#+0 \ 000000C8 0000A013 MOVNE R0,#+0 \ 000000CC EBFFFF1A BNE ??ClOnKey_8 \ 000000D0 0200A0E3 MOV R0,#+2 \ ??ClOnKey_7: \ 000000D4 ........ BL MoveUp2 5688 } 5689 5690 int key=msg->gbsmsg->submess; \ ??ClOnKey_6: \ 000000D8 040094E5 LDR R0,[R4, #+4] \ 000000DC 080090E5 LDR R0,[R0, #+8] 5691 if ((key>='0')&&(key<='9')) \ 000000E0 300050E3 CMP R0,#+48 \ 000000E4 070000BA BLT ??ClOnKey_1 \ 000000E8 3A0050E3 CMP R0,#+58 \ 000000EC 050000AA BGE ??ClOnKey_1 5692 { 5693 ClearContactT9Key(); \ 000000F0 2010A0E3 MOV R1,#+32 \ 000000F4 080087E0 ADD R0,R7,R8 \ 000000F8 1D0100EF SWI +285 5694 RecountMenu(NULL,1); \ 000000FC 0110A0E3 MOV R1,#+1 \ 00000100 0000A0E3 MOV R0,#+0 \ 00000104 ........ BL RecountMenu 5695 } 5696 } 5697 5698 5699 if (msg->gbsmsg->msg==KEY_DOWN) \ ??ClOnKey_1: \ 00000108 041094E5 LDR R1,[R4, #+4] \ 0000010C 9320A0E3 MOV R2,#+147 \ 00000110 040091E5 LDR R0,[R1, #+4] \ 00000114 402F82E3 ORR R2,R2,#0x100 \ 00000118 020050E1 CMP R0,R2 \ 0000011C 1301001A BNE ??ClOnKey_11 5700 { 5701 switch(msg->gbsmsg->submess) \ 00000120 081091E5 LDR R1,[R1, #+8] \ 00000124 C42298E5 LDR R2,[R8, #+708] \ 00000128 700498E5 LDR R0,[R8, #+1136] \ 0000012C 003099E5 LDR R3,[R9, #+0] \ 00000130 F890A0E3 MOV R9,#+248 \ 00000134 5C9D89E3 ORR R9,R9,#0x1700 \ 00000138 089089E0 ADD R9,R9,R8 \ 0000013C 01A0A0E3 MOV R10,#+1 \ 00000140 00B0A0E3 MOV R11,#+0 \ 00000144 011041E2 SUB R1,R1,#+1 \ 00000148 3D0051E3 CMP R1,#+61 \ 0000014C B600008A BHI ??ClOnKey_12 \ 00000150 01CF8FE2 ADR R12,??ClOnKey_0 \ 00000154 01C0DCE7 LDRB R12,[R12, R1] \ 00000158 0CF18FE0 ADD PC,PC,R12, LSL #+2 \ ??ClOnKey_0: \ 0000015C 27B3B330 DC8 +39,+179,+179,+48 \ 00000160 B3B3B3B3 DC8 +179,+179,+179,+179 \ 00000164 B3B39130 DC8 +179,+179,+145,+48 \ 00000168 999FB3B3 DC8 +153,+159,+179,+179 \ 0000016C B3B3B3B3 DC8 +179,+179,+179,+179 \ 00000170 B3B3B3B3 DC8 +179,+179,+179,+179 \ 00000174 B33DB3B3 DC8 +179,+61,+179,+179 \ 00000178 B3B3B3B3 DC8 +179,+179,+179,+179 \ 0000017C B3B3B3B3 DC8 +179,+179,+179,+179 \ 00000180 B3B3B3B3 DC8 +179,+179,+179,+179 \ 00000184 B36BB3B3 DC8 +179,+107,+179,+179 \ 00000188 B3B3B3B3 DC8 +179,+179,+179,+179 \ 0000018C B3B3B3B3 DC8 +179,+179,+179,+179 \ 00000190 B3B3B3B3 DC8 +179,+179,+179,+179 \ 00000194 B3B30F16 DC8 +179,+179,+15,+22 \ 00000198 221D0000 DC8 +34,+29,+0,+0 5702 { 5703 case UP_BUTTON: if(VIEW_MODE) MoveUp(1); else /*MoveUp(0)*/MoveUp2(1); break; \ ??ClOnKey_13: \ 0000019C 000053E3 CMP R3,#+0 \ 000001A0 0100A0E3 MOV R0,#+1 \ 000001A4 0100000A BEQ ??ClOnKey_14 \ ??ClOnKey_15: \ 000001A8 ........ BL MoveUp \ 000001AC 9E0000EA B ??ClOnKey_12 \ ??ClOnKey_14: \ 000001B0 ........ BL MoveUp2 \ 000001B4 9C0000EA B ??ClOnKey_12 5704 case DOWN_BUTTON: if(VIEW_MODE) MoveDown(1); else /*MoveDown(0)*/MoveDown2(1); break; \ ??ClOnKey_16: \ 000001B8 000053E3 CMP R3,#+0 \ 000001BC 0100A0E3 MOV R0,#+1 \ 000001C0 0100000A BEQ ??ClOnKey_17 \ ??ClOnKey_18: \ 000001C4 ........ BL MoveDown \ 000001C8 970000EA B ??ClOnKey_12 \ ??ClOnKey_17: \ 000001CC ........ BL MoveDown2 \ 000001D0 950000EA B ??ClOnKey_12 5705 case RIGHT_BUTTON: if(VIEW_MODE) MoveDown(0); else MoveDown2(2)/*MoveDown(1)*/; break; \ ??ClOnKey_19: \ 000001D4 000053E3 CMP R3,#+0 \ 000001D8 0000A013 MOVNE R0,#+0 \ 000001DC F8FFFF1A BNE ??ClOnKey_18 \ 000001E0 0200A0E3 MOV R0,#+2 \ 000001E4 F8FFFFEA B ??ClOnKey_17 5706 case LEFT_BUTTON: if(VIEW_MODE) MoveUp(0); else MoveUp2(2)/*MoveUp(1)*/; break; \ ??ClOnKey_20: \ 000001E8 000053E3 CMP R3,#+0 \ 000001EC 0000A013 MOVNE R0,#+0 \ 000001F0 ECFFFF1A BNE ??ClOnKey_15 \ 000001F4 0200A0E3 MOV R0,#+2 \ 000001F8 ECFFFFEA B ??ClOnKey_14 5707 case LEFT_SOFT: 5708 { 5709 extern void CreateMainMenu(); 5710 // DoScreen(); 5711 if(PrintTimer) \ ??ClOnKey_21: \ 000001FC 000052E3 CMP R2,#+0 \ 00000200 0400000A BEQ ??ClOnKey_22 5712 { 5713 PrintTimer=0; \ ??ClOnKey_23: \ 00000204 C4B288E5 STR R11,[R8, #+708] 5714 zeromem(prmsg,256); \ 00000208 401FA0E3 MOV R1,#+256 \ 0000020C 0900A0E1 MOV R0,R9 \ 00000210 1D0100EF SWI +285 \ 00000214 840000EA B ??ClOnKey_12 5715 } 5716 else 5717 CreateMainMenu(); \ ??ClOnKey_22: \ 00000218 ........ _BLF CreateMainMenu,??CreateMainMenu??rA \ 0000021C 820000EA B ??ClOnKey_12 5718 // ShowMainMenu(); 5719 }break; 5720 case RIGHT_SOFT: 5721 case RED_BUTTON: 5722 if(PrintTimer) \ ??ClOnKey_24: \ 00000220 000052E3 CMP R2,#+0 \ 00000224 F6FFFF1A BNE ??ClOnKey_23 5723 { 5724 PrintTimer=0; 5725 zeromem(prmsg,256); 5726 } 5727 else if (strlen(ContactT9Key)) \ 00000228 080087E0 ADD R0,R7,R8 \ 0000022C 1B0000EF SWI +27 \ 00000230 000050E3 CMP R0,#+0 \ 00000234 0300000A BEQ ??ClOnKey_25 5728 { 5729 BackSpaceContactT9(); \ 00000238 ........ BL BackSpaceContactT9 5730 RecountMenu(NULL,1); \ 0000023C 0110A0E3 MOV R1,#+1 \ 00000240 0B00A0E1 MOV R0,R11 \ 00000244 530000EA B ??ClOnKey_26 5731 return(-1); 5732 } 5733 5734 else 5735 { 5736 #ifdef DEBUG 5737 ShowLoadScreen=1; \ ??ClOnKey_25: \ 00000248 48A488E5 STR R10,[R8, #+1096] 5738 return 1; \ 0000024C 0100A0E3 MOV R0,#+1 \ 00000250 F08FBDE8 POP {R4-R11,PC} 5739 #else 5740 ShowLoadScreen=1;//return 1; 5741 #endif 5742 } 5743 break; 5744 case ENTER_BUTTON: 5745 { 5746 t=FindContactByN(curpos); \ ??ClOnKey_27: \ 00000254 ........ _BLF FindContactByN,??FindContactByN??rA \ 00000258 0050A0E1 MOV R5,R0 5747 if(PrintTimer) \ 0000025C C40298E5 LDR R0,[R8, #+708] \ 00000260 000050E3 CMP R0,#+0 \ 00000264 0400000A BEQ ??ClOnKey_28 5748 { 5749 PrintTimer=0; \ 00000268 C4B288E5 STR R11,[R8, #+708] 5750 zeromem(prmsg,256); \ 0000026C 401FA0E3 MOV R1,#+256 \ 00000270 0900A0E1 MOV R0,R9 \ 00000274 1D0100EF SWI +285 \ 00000278 210000EA B ??ClOnKey_29 5751 } 5752 else 5753 if(t) \ ??ClOnKey_28: \ 0000027C 000055E3 CMP R5,#+0 \ 00000280 4500000A BEQ ??ClOnKey_30 5754 { 5755 if (t->isgroup) \ 00000284 080095E5 LDR R0,[R5, #+8] \ 00000288 000050E3 CMP R0,#+0 \ 0000028C 0500000A BEQ ??ClOnKey_31 5756 { 5757 t->state^=0xFFFF; \ 00000290 B405D5E1 LDRH R0,[R5, #+84] \ 00000294 FF10A0E3 MOV R1,#+255 \ 00000298 FF1C81E3 ORR R1,R1,#0xFF00 \ 0000029C 000021E0 EOR R0,R1,R0 \ 000002A0 B405C5E1 STRH R0,[R5, #+84] 5758 RecountMenu(t,1); \ 000002A4 390000EA B ??ClOnKey_32 5759 return(-1); 5760 } 5761 if (strlen(ContactT9Key)) \ ??ClOnKey_31: \ 000002A8 080087E0 ADD R0,R7,R8 \ 000002AC 1B0000EF SWI +27 \ 000002B0 000050E3 CMP R0,#+0 \ 000002B4 0500000A BEQ ??ClOnKey_33 5762 { 5763 ClearContactT9Key(); \ 000002B8 2010A0E3 MOV R1,#+32 \ 000002BC 080087E0 ADD R0,R7,R8 \ 000002C0 1D0100EF SWI +285 5764 RecountMenu(NULL,1); \ 000002C4 0110A0E3 MOV R1,#+1 \ 000002C8 0B00A0E1 MOV R0,R11 \ 000002CC ........ BL RecountMenu 5765 } 5766 if(!t->isactive && HISTORY_BUFFER) GetHistory(t, 64<0 && t) \ ??ClOnKey_35: \ 0000030C ........ _BLF CountContacts,??CountContacts??rA \ 00000310 010050E3 CMP R0,#+1 \ 00000314 440000BA BLT ??ClOnKey_12 \ 00000318 000055E3 CMP R5,#+0 \ 0000031C 4200000A BEQ ??ClOnKey_12 5773 { 5774 t=FindContactByN(curpos); \ 00000320 700498E5 LDR R0,[R8, #+1136] \ 00000324 ........ _BLF FindContactByN,??FindContactByN??rA \ 00000328 0050A0E1 MOV R5,R0 \ 0000032C 020000EA B ??ClOnKey_36 5775 while(t=(CLIST *)(t->next)) 5776 { 5777 if (t->isunread) goto doit; \ ??ClOnKey_37: \ 00000330 900095E5 LDR R0,[R5, #+144] \ 00000334 000050E3 CMP R0,#+0 \ 00000338 0E00001A BNE ??ClOnKey_38 5778 } \ ??ClOnKey_36: \ 0000033C 005095E5 LDR R5,[R5, #+0] \ 00000340 000055E3 CMP R5,#+0 \ 00000344 F9FFFF1A BNE ??ClOnKey_37 5779 t=(CLIST *)(&cltop); \ 00000348 750F47E2 SUB R0,R7,#+468 \ 0000034C 085080E0 ADD R5,R0,R8 \ 00000350 020000EA B ??ClOnKey_39 5780 while(t=(CLIST *)(t->next)) 5781 { 5782 if (t->isunread) goto doit; \ ??ClOnKey_40: \ 00000354 900095E5 LDR R0,[R5, #+144] \ 00000358 000050E3 CMP R0,#+0 \ 0000035C 0500001A BNE ??ClOnKey_38 5783 } \ ??ClOnKey_39: \ 00000360 005095E5 LDR R5,[R5, #+0] \ 00000364 000055E3 CMP R5,#+0 \ 00000368 F9FFFF1A BNE ??ClOnKey_40 5784 if (t && Is_Show_Groups) 5785 { 5786 if (!t->isgroup) t=FindGroupByID(t->group); 5787 if (t && !t->state) 5788 { 5789 t->state^=0xFFFF; 5790 goto does; 5791 } 5792 } 5793 5794 curpage=1; \ 0000036C 8CA488E5 STR R10,[R8, #+1164] 5795 curpos=0; \ 00000370 70B488E5 STR R11,[R8, #+1136] 5796 clstartItem=0; \ 00000374 9CB488E5 STR R11,[R8, #+1180] 5797 /* while(t=(CLIST *)(t->next)) 5798 { 5799 if (t->isactive) goto doit; 5800 } 5801 t=(CLIST *)(&cltop); 5802 5803 while(t=(CLIST *)(t->next)) 5804 { 5805 if (t->isactive) goto doit; 5806 } 5807 return(-1);*/ 5808 doit: 5809 { 5810 CLIST *g=FindGroupByID(t->group); \ ??ClOnKey_38: \ 00000378 100095E5 LDR R0,[R5, #+16] \ 0000037C ........ _BLF FindGroupByID,??FindGroupByID??rA 5811 if (g) \ 00000380 000050E3 CMP R0,#+0 5812 { 5813 if (g->state) \ 00000384 B415D011 LDRHNE R1,[R0, #+84] \ 00000388 00005113 CMPNE R1,#+0 5814 { 5815 g->state=0; \ 0000038C B4B5C011 STRHNE R11,[R0, #+84] 5816 } 5817 } 5818 } 5819 does: 5820 RecountMenu(t,1); \ ??ClOnKey_32: \ 00000390 0110A0E3 MOV R1,#+1 \ 00000394 0500A0E1 MOV R0,R5 \ ??ClOnKey_26: \ 00000398 ........ BL RecountMenu 5821 return(-1); \ ??ClOnKey_30: \ 0000039C 00006AE2 RSB R0,R10,#+0 \ 000003A0 F08FBDE8 POP {R4-R11,PC} 5822 } 5823 break; 5824 case GREEN_BUTTON: 5825 { 5826 // IsActiveUp=!IsActiveUp; 5827 // RecountMenu(NULL,1); 5828 t=FindContactByN(curpos); \ ??ClOnKey_41: \ 000003A4 ........ _BLF FindContactByN,??FindContactByN??rA \ 000003A8 0050A0E1 MOV R5,R0 5829 if(!t->isgroup) \ 000003AC 080095E5 LDR R0,[R5, #+8] \ 000003B0 000050E3 CMP R0,#+0 \ 000003B4 1C00001A BNE ??ClOnKey_12 5830 CreateContactMenu(t); \ 000003B8 0500A0E1 MOV R0,R5 \ 000003BC ........ BL CreateContactMenu \ 000003C0 190000EA B ??ClOnKey_12 5831 } 5832 break; 5833 // case RED_BUTTON: return (1); 5834 case VOL_UP_BUTTON: 5835 #ifdef NEWSGOLD 5836 if(isVolUpButton) \ ??ClOnKey_42: \ 000003C4 E8019FE5 LDR R0,??ClOnKey_43 ;; isVolUpButton \ 000003C8 000090E5 LDR R0,[R0, #+0] \ 000003CC 000050E3 CMP R0,#+0 \ 000003D0 1500000A BEQ ??ClOnKey_12 5837 CreateScreenSelectGUI(); \ 000003D4 ........ _BLF CreateScreenSelectGUI,??CreateScreenSelectGUI??rA \ 000003D8 130000EA B ??ClOnKey_12 5838 #endif 5839 break; 5840 case VOL_DOWN_BUTTON: 5841 { 5842 if(isVolDownButton) \ ??ClOnKey_44: \ 000003DC D4019FE5 LDR R0,??ClOnKey_43+0x4 ;; isVolDownButton \ 000003E0 000090E5 LDR R0,[R0, #+0] \ 000003E4 000050E3 CMP R0,#+0 \ 000003E8 0F00000A BEQ ??ClOnKey_12 5843 { 5844 if(!away_m) \ 000003EC A80398E5 LDR R0,[R8, #+936] \ 000003F0 000050E3 CMP R0,#+0 \ 000003F4 0300001A BNE ??ClOnKey_45 5845 { 5846 away_m=!away_m; \ 000003F8 A8A388E5 STR R10,[R8, #+936] 5847 main_d=1; \ 000003FC A8A288E5 STR R10,[R8, #+680] 5848 InputAwayMsg(); \ 00000400 ........ BL InputAwayMsg \ 00000404 080000EA B ??ClOnKey_12 5849 } 5850 else 5851 { 5852 msg_away_timer=0; 5853 away_m=!away_m; 5854 if(change_back_status) \ ??ClOnKey_45: \ 00000408 B00398E5 LDR R0,[R8, #+944] \ 0000040C A4B388E5 STR R11,[R8, #+932] \ 00000410 A8B388E5 STR R11,[R8, #+936] \ 00000414 000050E3 CMP R0,#+0 \ 00000418 0300000A BEQ ??ClOnKey_12 5855 { 5856 CurrentStatus=status_rem; \ 0000041C AC0398E5 LDR R0,[R8, #+940] \ 00000420 980388E5 STR R0,[R8, #+920] 5857 set_my_status(); \ 00000424 ........ BL set_my_status 5858 change_back_status=0; \ 00000428 B0B388E5 STR R11,[R8, #+944] 5859 } 5860 } 5861 } 5862 } 5863 break; 5864 } 5865 5866 if (key=='#' && (CountContacts()>0))//Если есть хоть один контакт то выполнять,иначе возможен пикофф \ ??ClOnKey_12: \ 0000042C 230056E3 CMP R6,#+35 \ 00000430 4E00001A BNE ??ClOnKey_11 \ 00000434 ........ _BLF CountContacts,??CountContacts??rA \ 00000438 010050E3 CMP R0,#+1 \ 0000043C 380000BA BLT ??ClOnKey_46 5867 { 5868 t=FindContactByN(curpos); \ 00000440 700498E5 LDR R0,[R8, #+1136] \ 00000444 ........ _BLF FindContactByN,??FindContactByN??rA \ 00000448 0050A0E1 MOV R5,R0 5869 if(ActionResh) \ 0000044C 68019FE5 LDR R0,??ClOnKey_43+0x8 ;; ActionResh \ 00000450 000090E5 LDR R0,[R0, #+0] \ 00000454 000050E3 CMP R0,#+0 \ 00000458 1B00001A BNE ??ClOnKey_47 5870 { 5871 while(t=(CLIST *)(t->next)) 5872 { 5873 if (t->isactive) goto doit4; 5874 } 5875 t=(CLIST *)(&cltop); 5876 while(t=(CLIST *)(t->next)) 5877 { 5878 if (t->isactive) goto doit4; 5879 } 5880 return(-1); 5881 doit4: 5882 { 5883 CLIST *g=FindGroupByID(t->group); 5884 if (g) 5885 { 5886 if (g->state) 5887 { 5888 g->state=0; 5889 } 5890 } 5891 } 5892 RecountMenu(t,1); 5893 } 5894 else 5895 { 5896 if(t->log && !(t->just_now))//очистить лог \ 0000045C A00095E5 LDR R0,[R5, #+160] \ 00000460 000050E3 CMP R0,#+0 \ 00000464 0600000A BEQ ??ClOnKey_48 \ 00000468 740095E5 LDR R0,[R5, #+116] \ 0000046C 000050E3 CMP R0,#+0 \ 00000470 0300001A BNE ??ClOnKey_48 5897 { 5898 FreeLOGQ(&t->log); \ 00000474 A00085E2 ADD R0,R5,#+160 \ 00000478 ........ BL FreeLOGQ 5899 t->msg_count=0; \ 0000047C B0B085E5 STR R11,[R5, #+176] 5900 t->isactive=0; \ 00000480 ACB085E5 STR R11,[R5, #+172] 5901 } 5902 5903 if(t->just_now)//если контакт тока зашел,то обнуляем \ ??ClOnKey_48: \ 00000484 740095E5 LDR R0,[R5, #+116] \ 00000488 000050E3 CMP R0,#+0 \ 0000048C 0300000A BEQ ??ClOnKey_49 5904 { 5905 CLIST *tt; 5906 tt=FindContactByUin(t->uin); \ 00000490 0C0095E5 LDR R0,[R5, #+12] \ 00000494 ........ _BLF FindContactByUin,??FindContactByUin??rA 5907 tt->just_now=0; \ 00000498 74B080E5 STR R11,[R0, #+116] 5908 tt->just_i=0; \ 0000049C 78B080E5 STR R11,[R0, #+120] 5909 } 5910 5911 if(t->uin==UIN)//если нажали на Loopback, то обнуляем все just_now'ы \ ??ClOnKey_49: \ 000004A0 ........ LDR R1,??DataTable239 ;; UIN \ 000004A4 0C0095E5 LDR R0,[R5, #+12] \ 000004A8 001091E5 LDR R1,[R1, #+0] \ 000004AC 010050E1 CMP R0,R1 \ 000004B0 2400001A BNE ??ClOnKey_50 5912 { 5913 CLIST *tt; 5914 tt=(CLIST *)(&cltop); \ 000004B4 750F47E2 SUB R0,R7,#+468 \ 000004B8 080080E0 ADD R0,R0,R8 \ 000004BC 1E0000EA B ??ClOnKey_51 \ ??ClOnKey_52: \ 000004C0 AC0095E5 LDR R0,[R5, #+172] \ 000004C4 000050E3 CMP R0,#+0 \ 000004C8 0C00001A BNE ??ClOnKey_53 \ ??ClOnKey_47: \ 000004CC 005095E5 LDR R5,[R5, #+0] \ 000004D0 000055E3 CMP R5,#+0 \ 000004D4 F9FFFF1A BNE ??ClOnKey_52 \ 000004D8 750F47E2 SUB R0,R7,#+468 \ 000004DC 085080E0 ADD R5,R0,R8 \ 000004E0 020000EA B ??ClOnKey_54 \ ??ClOnKey_55: \ 000004E4 AC0095E5 LDR R0,[R5, #+172] \ 000004E8 000050E3 CMP R0,#+0 \ 000004EC 0300001A BNE ??ClOnKey_53 \ ??ClOnKey_54: \ 000004F0 005095E5 LDR R5,[R5, #+0] \ 000004F4 000055E3 CMP R5,#+0 \ 000004F8 F9FFFF1A BNE ??ClOnKey_55 \ 000004FC 80FFFFEA B ??ClOnKey_29 \ ??ClOnKey_53: \ 00000500 100095E5 LDR R0,[R5, #+16] \ 00000504 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 00000508 000050E3 CMP R0,#+0 \ 0000050C B415D011 LDRHNE R1,[R0, #+84] \ 00000510 00005113 CMPNE R1,#+0 \ 00000514 B4B5C011 STRHNE R11,[R0, #+84] \ 00000518 0110A0E3 MOV R1,#+1 \ 0000051C 0500A0E1 MOV R0,R5 \ ??ClOnKey_56: \ 00000520 ........ BL RecountMenu 5915 while(tt=(CLIST *)(tt->next)) 5916 { 5917 if(tt->just_now){ tt->just_now=0; tt->just_i=0; } 5918 } 5919 } 5920 if(strlen(ContactT9Key)) ClearContactT9Key(); 5921 RecountMenu(NULL,0); 5922 } 5923 } 5924 } 5925 5926 if ((key>='0')&&(key<='9') && msg->gbsmsg->msg==KEY_DOWN) 5927 { 5928 AddContactT9Key(key); 5929 RecountMenu(NULL,1); 5930 return(-1); 5931 } 5932 return 0; \ ??ClOnKey_46: \ 00000524 0000A0E3 MOV R0,#+0 \ 00000528 F08FBDE8 POP {R4-R11,PC} ;; return \ ??ClOnKey_57: \ 0000052C 741090E5 LDR R1,[R0, #+116] \ 00000530 000051E3 CMP R1,#+0 \ 00000534 74B08015 STRNE R11,[R0, #+116] \ 00000538 78B08015 STRNE R11,[R0, #+120] \ ??ClOnKey_51: \ 0000053C 000090E5 LDR R0,[R0, #+0] \ 00000540 000050E3 CMP R0,#+0 \ 00000544 F8FFFF1A BNE ??ClOnKey_57 \ ??ClOnKey_50: \ 00000548 080087E0 ADD R0,R7,R8 \ 0000054C 1B0000EF SWI +27 \ 00000550 000050E3 CMP R0,#+0 \ 00000554 0200000A BEQ ??ClOnKey_58 \ 00000558 2010A0E3 MOV R1,#+32 \ 0000055C 080087E0 ADD R0,R7,R8 \ 00000560 1D0100EF SWI +285 \ ??ClOnKey_58: \ 00000564 0010A0E3 MOV R1,#+0 \ 00000568 0100A0E1 MOV R0,R1 \ 0000056C EBFFFFEA B ??ClOnKey_56 \ ??ClOnKey_11: \ 00000570 300056E3 CMP R6,#+48 \ 00000574 EAFFFFBA BLT ??ClOnKey_46 \ 00000578 3A0056E3 CMP R6,#+58 \ 0000057C E8FFFFAA BGE ??ClOnKey_46 \ 00000580 040094E5 LDR R0,[R4, #+4] \ 00000584 9310A0E3 MOV R1,#+147 \ 00000588 040090E5 LDR R0,[R0, #+4] \ 0000058C 401F81E3 ORR R1,R1,#0x100 \ 00000590 010050E1 CMP R0,R1 \ 00000594 E2FFFF1A BNE ??ClOnKey_46 \ 00000598 0600A0E1 MOV R0,R6 \ 0000059C ........ BL AddContactT9Key \ 000005A0 0110A0E3 MOV R1,#+1 \ 000005A4 0000A0E3 MOV R0,#+0 \ 000005A8 ........ BL RecountMenu \ 000005AC 0000E0E3 MVN R0,#+0 \ 000005B0 F08FBDE8 POP {R4-R11,PC} \ ??ClOnKey_43: \ 000005B4 ........ DC32 isVolUpButton \ 000005B8 ........ DC32 isVolDownButton \ 000005BC ........ DC32 ActionResh 5933 } 5934 5935 #ifdef DEBUG \ In segment CODE, align 4, keep-with-next 5936 static int OnKey(MAIN_GUI *data, GUI_MSG *msg) 5937 { \ OnKey: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0140A0E1 MOV R4,R1 5938 DirectRedrawGUI(); \ 00000008 3F0100EF SWI +319 5939 // int k=msg->gbsmsg->submess; 5940 return ClOnKey(msg); \ 0000000C 0400A0E1 MOV R0,R4 \ 00000010 1040BDE8 POP {R4,LR} ;; Pop \ 00000014 ........ B ClOnKey ;; tailcall 5941 // return(0); 5942 } 5943 5944 extern void kill_data(void *p, void (*func_p)(void *)); 5945 \ In segment CODE, align 4, keep-with-next 5946 int method28(void){return(0);} \ method28: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return \ In segment CODE, align 4, keep-with-next 5947 int method29(void){return(0);} \ method29: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 5948 5949 const void * const gui_methods2[11]={ 5950 (void *)OnRedraw, 5951 (void *)onCreate, 5952 (void *)onClose, 5953 (void *)onFocus, 5954 (void *)onUnfocus, 5955 (void *)OnKey, 5956 0, 5957 (void *)kill_data, 5958 (void *)method28, 5959 (void *)method29, 5960 0 5961 }; 5962 5963 5964 5965 static void CreateCL() 5966 { 5967 const RECT Canvas={0,0,0,0}; 5968 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); 5969 zeromem(main_gui,sizeof(MAIN_GUI)); 5970 main_gui->gui.canvas=(void *)(&Canvas); 5971 main_gui->gui.methods=(void *)gui_methods2; 5972 // main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); 5973 //patch_rect((RECT*)&Canvas,0,YDISP,ScreenW()-1,ScreenH()-1); 5974 contactlist_menu_id=CreateGUI(main_gui); 5975 SMART_REDRAW(); 5976 } 5977 5978 #endif 5979 #ifdef ICONBAR 5980 #else 5981 #ifdef ELKA 5982 #undef YDISP 5983 #define YDISP 24 5984 #endif 5985 #endif 5986 5987 5988 /************************************************************************************************/ 5989 5990 \ In segment CODE, align 4, keep-with-next 5991 void DrawLoadScreen(MAIN_GUI *data) 5992 { \ DrawLoadScreen: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 24D04DE2 SUB SP,SP,#+36 5993 int scr_w=ScreenW(); 5994 int scr_h=ScreenH(); 5995 int pos_status;//2026rev 5996 int pm = pictures_max, pl = pictures_loaded;//2026rev 5997 RECT rc=PBRECT; 5998 DrawRectangle(0,YDISP,scr_w-1,scr_h-1,0, GetPaletteAdrByColorIndex(1), GetPaletteAdrByColorIndex(1)); 5999 6000 // if(!USE_ADD_UIN)//Если не используем доп.уины 6001 //{ 6002 // DrawImg(0,0,S_ICONS[ICON_LOGO]); 6003 DrwImage(icons[ICON_LOGO],0,0,0,0); 6004 unsigned long RX=ALLTOTALRECEIVED; unsigned long TX=ALLTOTALSENDED; //by BoBa 10.07 6005 if(IsShowInfo) \ 00000008 8C989FE5 LDR R9,??DrawLoadScreen_0 ;; `?` \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 888100EF SWI +33160 \ 00000014 08008DE5 STR R0,[SP, #+8] \ 00000018 898100EF SWI +33161 \ 0000001C 7C189FE5 LDR R1,??DrawLoadScreen_0+0x4 ;; pictures_loaded \ 00000020 04008DE5 STR R0,[SP, #+4] \ 00000024 78089FE5 LDR R0,??DrawLoadScreen_0+0x8 ;; pictures_max \ 00000028 005090E5 LDR R5,[R0, #+0] \ 0000002C 001091E5 LDR R1,[R1, #+0] \ 00000030 70089FE5 LDR R0,??DrawLoadScreen_0+0xC ;; PBRECT \ 00000034 00108DE5 STR R1,[SP, #+0] \ 00000038 F0A0D0E1 LDRSH R10,[R0, #+0] \ 0000003C F2B0D0E1 LDRSH R11,[R0, #+2] \ 00000040 F460D0E1 LDRSH R6,[R0, #+4] \ 00000044 F670D0E1 LDRSH R7,[R0, #+6] \ 00000048 0100A0E3 MOV R0,#+1 \ 0000004C 2E0100EF SWI +302 \ 00000050 0080A0E1 MOV R8,R0 \ 00000054 0100A0E3 MOV R0,#+1 \ 00000058 2E0100EF SWI +302 \ 0000005C 00012DE9 PUSH {R8} \ 00000060 ........ LDR R8,??DataTable238 ;; i_rc \ 00000064 01002DE9 PUSH {R0} \ 00000068 1810A0E3 MOV R1,#+24 \ 0000006C 0000A0E3 MOV R0,#+0 \ 00000070 01002DE9 PUSH {R0} \ 00000074 10009DE5 LDR R0,[SP, #+16] \ 00000078 013040E2 SUB R3,R0,#+1 \ 0000007C 14009DE5 LDR R0,[SP, #+20] \ 00000080 012040E2 SUB R2,R0,#+1 \ 00000084 0000A0E3 MOV R0,#+0 \ 00000088 B40100EF SWI +436 \ 0000008C 0000A0E3 MOV R0,#+0 \ 00000090 01002DE9 PUSH {R0} \ 00000094 0030A0E3 MOV R3,#+0 \ 00000098 0020A0E1 MOV R2,R0 \ 0000009C 0010A0E1 MOV R1,R0 \ 000000A0 700098E5 LDR R0,[R8, #+112] \ 000000A4 ........ BL DrwImage \ 000000A8 FC279FE5 LDR R2,??DrawLoadScreen_0+0x10 ;; IsShowInfo \ 000000AC 0C0498E5 LDR R0,[R8, #+1036] \ 000000B0 101498E5 LDR R1,[R8, #+1040] \ 000000B4 002092E5 LDR R2,[R2, #+0] \ 000000B8 10D08DE2 ADD SP,SP,#+16 \ 000000BC 000052E3 CMP R2,#+0 \ 000000C0 1A00000A BEQ ??DrawLoadScreen_1 6006 { 6007 wsprintf(data->ws1,LG_GRSTATESTRING,connect_state,RXstate,RX,TX,sendq_l,hostname,logmsg); \ 000000C4 5020A0E3 MOV R2,#+80 \ 000000C8 702D82E3 ORR R2,R2,#0x1C00 \ 000000CC 082082E0 ADD R2,R2,R8 \ 000000D0 04002DE9 PUSH {R2} \ 000000D4 A020A0E3 MOV R2,#+160 \ 000000D8 7C2D82E3 ORR R2,R2,#0x1F00 \ 000000DC 082082E0 ADD R2,R2,R8 \ 000000E0 04002DE9 PUSH {R2} \ 000000E4 CC2298E5 LDR R2,[R8, #+716] \ 000000E8 04002DE9 PUSH {R2} \ 000000EC 02002DE9 PUSH {R1} \ 000000F0 01002DE9 PUSH {R0} \ 000000F4 F83398E5 LDR R3,[R8, #+1016] \ 000000F8 FC2398E5 LDR R2,[R8, #+1020] \ 000000FC 340094E5 LDR R0,[R4, #+52] \ 00000100 101089E2 ADD R1,R9,#+16 \ 00000104 240100EF SWI +292 6008 wsprintf(data->ws2,logmsg2); \ 00000108 5000A0E3 MOV R0,#+80 \ 0000010C 740D80E3 ORR R0,R0,#0x1D00 \ 00000110 081080E0 ADD R1,R0,R8 \ 00000114 380094E5 LDR R0,[R4, #+56] \ 00000118 240100EF SWI +292 6009 wstrcat(data->ws1,data->ws2); \ 0000011C 381094E5 LDR R1,[R4, #+56] \ 00000120 340094E5 LDR R0,[R4, #+52] \ 00000124 210100EF SWI +289 \ 00000128 14D08DE2 ADD SP,SP,#+20 \ 0000012C 040000EA B ??DrawLoadScreen_2 6010 } 6011 else 6012 { 6013 wsprintf(data->ws1,"State: %d, RXstate: %d",connect_state,RXstate); \ ??DrawLoadScreen_1: \ 00000130 F83398E5 LDR R3,[R8, #+1016] \ 00000134 FC2398E5 LDR R2,[R8, #+1020] \ 00000138 340094E5 LDR R0,[R4, #+52] \ 0000013C 481089E2 ADD R1,R9,#+72 \ 00000140 240100EF SWI +292 6014 } 6015 6016 if(pm != pl) \ ??DrawLoadScreen_2: \ 00000144 00009DE5 LDR R0,[SP, #+0] \ 00000148 000055E1 CMP R5,R0 \ 0000014C 2E00000A BEQ ??DrawLoadScreen_3 6017 { 6018 /* DrawRectangle(0,scr_h-4-2*GetFontYSIZE(FONT_SMALL_BOLD),scr_w-1,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD)-2,0, 6019 GetPaletteAdrByColorIndex(0), 6020 GetPaletteAdrByColorIndex(0));*/ 6021 // pos_status = ((scr_w-1) * pl) / pm; 6022 /* DrawRectangle(1,scr_h-4-2*GetFontYSIZE(FONT_SMALL_BOLD)+1,pos_status,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD)-3,0, 6023 GetPaletteAdrByColorIndex(14), 6024 GetPaletteAdrByColorIndex(14)); */ 6025 // wstrcatprintf(data->ws1,"\nLoading images..."); 6026 6027 DrawRectangle(rc.x,rc.y,rc.x2,rc.y2,0,BGPBcolor,BGPBcolor); \ 00000150 58079FE5 LDR R0,??DrawLoadScreen_0+0x14 ;; BGPBcolor \ 00000154 0730A0E1 MOV R3,R7 \ 00000158 0010A0E1 MOV R1,R0 \ 0000015C 02002DE9 PUSH {R1} \ 00000160 01002DE9 PUSH {R0} \ 00000164 0620A0E1 MOV R2,R6 \ 00000168 0B10A0E1 MOV R1,R11 \ 0000016C 0000A0E3 MOV R0,#+0 \ 00000170 01002DE9 PUSH {R0} \ 00000174 0A00A0E1 MOV R0,R10 \ 00000178 B40100EF SWI +436 6028 pos_status = (((rc.x2-rc.x)-1) * pl) / pm; \ 0000017C 0C109DE5 LDR R1,[SP, #+12] \ 00000180 0A0046E0 SUB R0,R6,R10 \ 00000184 010040E2 SUB R0,R0,#+1 \ 00000188 910000E0 MUL R0,R1,R0 \ 0000018C 0510A0E1 MOV R1,R5 \ 00000190 ........ _BLF ??div32_a,??rA??div32_a 6029 DrawRectangle(rc.x+2,rc.y+2,rc.x+pos_status+2,rc.y2-2,0,PBcolor,PBcolor); \ 00000194 18079FE5 LDR R0,??DrawLoadScreen_0+0x18 ;; PBcolor \ 00000198 023047E2 SUB R3,R7,#+2 \ 0000019C 0020A0E1 MOV R2,R0 \ 000001A0 04002DE9 PUSH {R2} \ 000001A4 01002DE9 PUSH {R0} \ 000001A8 0000A0E3 MOV R0,#+0 \ 000001AC 01002DE9 PUSH {R0} \ 000001B0 0A0081E0 ADD R0,R1,R10 \ 000001B4 022080E2 ADD R2,R0,#+2 \ 000001B8 02108BE2 ADD R1,R11,#+2 \ 000001BC 02008AE2 ADD R0,R10,#+2 \ 000001C0 B40100EF SWI +436 6030 6031 if(total_smiles) \ 000001C4 EC069FE5 LDR R0,??DrawLoadScreen_0+0x1C ;; total_smiles \ 000001C8 001090E5 LDR R1,[R0, #+0] \ 000001CC 18D08DE2 ADD SP,SP,#+24 \ 000001D0 000051E3 CMP R1,#+0 \ 000001D4 0300000A BEQ ??DrawLoadScreen_4 6032 { 6033 wstrcatprintf(data->ws1,"\nLoaded %d smiles",total_smiles); \ 000001D8 002090E5 LDR R2,[R0, #+0] \ 000001DC 340094E5 LDR R0,[R4, #+52] \ 000001E0 601089E2 ADD R1,R9,#+96 \ 000001E4 160200EF SWI +534 6034 } 6035 if (xstatuses_load) \ ??DrawLoadScreen_4: \ 000001E8 CC069FE5 LDR R0,??DrawLoadScreen_0+0x20 ;; xstatuses_load \ 000001EC 000090E5 LDR R0,[R0, #+0] \ 000001F0 000050E3 CMP R0,#+0 \ 000001F4 0400000A BEQ ??DrawLoadScreen_3 6036 { 6037 wstrcatprintf(data->ws1,"\nLoaded %d xstatus",total_xstatuses); \ 000001F8 C0069FE5 LDR R0,??DrawLoadScreen_0+0x24 ;; total_xstatuses \ 000001FC 741089E2 ADD R1,R9,#+116 \ 00000200 002090E5 LDR R2,[R0, #+0] \ 00000204 340094E5 LDR R0,[R4, #+52] \ 00000208 160200EF SWI +534 6038 } 6039 } 6040 6041 DrawString(data->ws1,3,3+YDISP,scr_w-4,scr_h-4-GetFontYSIZE(FONT_MEDIUM_BOLD),FONT_SMALL,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ ??DrawLoadScreen_3: \ 0000020C 1700A0E3 MOV R0,#+23 \ 00000210 2E0100EF SWI +302 \ 00000214 0060A0E1 MOV R6,R0 \ 00000218 0000A0E3 MOV R0,#+0 \ 0000021C 2E0100EF SWI +302 \ 00000220 0070A0E1 MOV R7,R0 \ 00000224 0500A0E3 MOV R0,#+5 \ 00000228 C50100EF SWI +453 \ 0000022C 08209DE5 LDR R2,[SP, #+8] \ 00000230 042042E2 SUB R2,R2,#+4 \ 00000234 0C208DE5 STR R2,[SP, #+12] \ 00000238 04109DE5 LDR R1,[SP, #+4] \ 0000023C 40002DE9 PUSH {R6} \ 00000240 045041E2 SUB R5,R1,#+4 \ 00000244 80002DE9 PUSH {R7} \ 00000248 0010A0E3 MOV R1,#+0 \ 0000024C 02002DE9 PUSH {R1} \ 00000250 000045E0 SUB R0,R5,R0 \ 00000254 0230A0E1 MOV R3,R2 \ 00000258 1B20A0E3 MOV R2,#+27 \ 0000025C 0810A0E3 MOV R1,#+8 \ 00000260 02002DE9 PUSH {R1} \ 00000264 01002DE9 PUSH {R0} \ 00000268 340094E5 LDR R0,[R4, #+52] \ 0000026C 0310A0E3 MOV R1,#+3 6042 /*} 6043 else 6044 { 6045 wsprintf(data->ws1,"%t UIN!","Выберите"); 6046 DrawLine(0,CLIST_Y1-3,ScreenW()-1,CLIST_Y1-3,0,clrWhite); 6047 DrawString(data->ws1,2,YDISP+2,scr_w-1,YDISP+GetFontYSIZE(FONT_SMALL),FONT_SMALL,0,fntSelect,0); 6048 // DrawList(); 6049 } 6050 */ 6051 6052 #ifdef kluchnik 6053 int y=160; \ 00000270 A060A0E3 MOV R6,#+160 \ 00000274 4C0100EF SWI +332 6054 char A[]="[A] %s"; \ 00000278 44169FE5 LDR R1,??DrawLoadScreen_0+0x28 ;; `?` \ 0000027C 30008DE2 ADD R0,SP,#+48 \ 00000280 0C0091E8 LDM R1,{R2,R3} 6055 char I[]="[I]"; \ 00000284 3C169FE5 LDR R1,??DrawLoadScreen_0+0x2C ;; `?` \ 00000288 0C0080E8 STM R0,{R2,R3} \ 0000028C 002091E5 LDR R2,[R1, #0] \ 00000290 24008DE2 ADD R0,SP,#+36 \ 00000294 002080E5 STR R2,[R0, #+0] 6056 char V[]="[V]"; \ 00000298 001099E5 LDR R1,[R9, #0] \ 0000029C 28008DE2 ADD R0,SP,#+40 \ 000002A0 001080E5 STR R1,[R0, #+0] 6057 char S[]="[S]"; \ 000002A4 20169FE5 LDR R1,??DrawLoadScreen_0+0x30 ;; `?_1` \ 000002A8 2C008DE2 ADD R0,SP,#+44 \ 000002AC 002091E5 LDR R2,[R1, #0] \ 000002B0 002080E5 STR R2,[R0, #+0] 6058 6059 if(CurrentPrivateStatus==1) \ 000002B4 E00398E5 LDR R0,[R8, #+992] \ 000002B8 14D08DE2 ADD SP,SP,#+20 \ 000002BC 010050E3 CMP R0,#+1 \ 000002C0 1D00001A BNE ??DrawLoadScreen_5 6060 { 6061 wsprintf(data->ws2,I); \ 000002C4 380094E5 LDR R0,[R4, #+56] \ 000002C8 10108DE2 ADD R1,SP,#+16 \ 000002CC 240100EF SWI +292 6062 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); \ 000002D0 1700A0E3 MOV R0,#+23 \ 000002D4 2E0100EF SWI +302 \ 000002D8 0070A0E1 MOV R7,R0 \ 000002DC 0200A0E3 MOV R0,#+2 \ 000002E0 2E0100EF SWI +302 \ 000002E4 00A0A0E1 MOV R10,R0 \ 000002E8 0B00A0E3 MOV R0,#+11 \ 000002EC C50100EF SWI +453 \ 000002F0 0060A0E1 MOV R6,R0 \ 000002F4 888100EF SWI +33160 \ 000002F8 80002DE9 PUSH {R7} \ 000002FC 00042DE9 PUSH {R10} \ 00000300 0010A0E3 MOV R1,#+0 \ 00000304 02002DE9 PUSH {R1} \ 00000308 013040E2 SUB R3,R0,#+1 \ 0000030C A020A0E3 MOV R2,#+160 \ 00000310 0B10A0E3 MOV R1,#+11 \ 00000314 02002DE9 PUSH {R1} \ 00000318 A01086E2 ADD R1,R6,#+160 \ 0000031C 02002DE9 PUSH {R1} \ 00000320 380094E5 LDR R0,[R4, #+56] \ 00000324 0210A0E3 MOV R1,#+2 \ 00000328 4C0100EF SWI +332 6063 y+=GetFontYSIZE(11)+5; \ 0000032C 0B00A0E3 MOV R0,#+11 \ 00000330 C50100EF SWI +453 \ 00000334 A56080E2 ADD R6,R0,#+165 \ 00000338 14D08DE2 ADD SP,SP,#+20 6064 } 6065 6066 if(Is_Vibra_Enabled) \ ??DrawLoadScreen_5: \ 0000033C 080398E5 LDR R0,[R8, #+776] \ 00000340 000050E3 CMP R0,#+0 \ 00000344 1E00000A BEQ ??DrawLoadScreen_6 6067 { 6068 wsprintf(data->ws2,V); \ 00000348 380094E5 LDR R0,[R4, #+56] \ 0000034C 14108DE2 ADD R1,SP,#+20 \ 00000350 240100EF SWI +292 6069 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); \ 00000354 1700A0E3 MOV R0,#+23 \ 00000358 2E0100EF SWI +302 \ 0000035C 0070A0E1 MOV R7,R0 \ 00000360 0200A0E3 MOV R0,#+2 \ 00000364 2E0100EF SWI +302 \ 00000368 00A0A0E1 MOV R10,R0 \ 0000036C 0B00A0E3 MOV R0,#+11 \ 00000370 C50100EF SWI +453 \ 00000374 00B0A0E1 MOV R11,R0 \ 00000378 888100EF SWI +33160 \ 0000037C 80002DE9 PUSH {R7} \ 00000380 00042DE9 PUSH {R10} \ 00000384 0010A0E3 MOV R1,#+0 \ 00000388 02002DE9 PUSH {R1} \ 0000038C 013040E2 SUB R3,R0,#+1 \ 00000390 0620A0E1 MOV R2,R6 \ 00000394 0B10A0E3 MOV R1,#+11 \ 00000398 02002DE9 PUSH {R1} \ 0000039C 06108BE0 ADD R1,R11,R6 \ 000003A0 02002DE9 PUSH {R1} \ 000003A4 380094E5 LDR R0,[R4, #+56] \ 000003A8 0210A0E3 MOV R1,#+2 \ 000003AC 4C0100EF SWI +332 6070 y+=GetFontYSIZE(11)+5; \ 000003B0 0B00A0E3 MOV R0,#+11 \ 000003B4 C50100EF SWI +453 \ 000003B8 050080E2 ADD R0,R0,#+5 \ 000003BC 066080E0 ADD R6,R0,R6 \ 000003C0 14D08DE2 ADD SP,SP,#+20 6071 } 6072 6073 if(Is_Sounds_Enabled) \ ??DrawLoadScreen_6: \ 000003C4 D40398E5 LDR R0,[R8, #+980] \ 000003C8 000050E3 CMP R0,#+0 \ 000003CC 1E00000A BEQ ??DrawLoadScreen_7 6074 { 6075 wsprintf(data->ws2,S); \ 000003D0 380094E5 LDR R0,[R4, #+56] \ 000003D4 18108DE2 ADD R1,SP,#+24 \ 000003D8 240100EF SWI +292 6076 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); \ 000003DC 1700A0E3 MOV R0,#+23 \ 000003E0 2E0100EF SWI +302 \ 000003E4 0070A0E1 MOV R7,R0 \ 000003E8 0200A0E3 MOV R0,#+2 \ 000003EC 2E0100EF SWI +302 \ 000003F0 00A0A0E1 MOV R10,R0 \ 000003F4 0B00A0E3 MOV R0,#+11 \ 000003F8 C50100EF SWI +453 \ 000003FC 00B0A0E1 MOV R11,R0 \ 00000400 888100EF SWI +33160 \ 00000404 80002DE9 PUSH {R7} \ 00000408 00042DE9 PUSH {R10} \ 0000040C 0010A0E3 MOV R1,#+0 \ 00000410 02002DE9 PUSH {R1} \ 00000414 013040E2 SUB R3,R0,#+1 \ 00000418 0620A0E1 MOV R2,R6 \ 0000041C 0B10A0E3 MOV R1,#+11 \ 00000420 02002DE9 PUSH {R1} \ 00000424 06108BE0 ADD R1,R11,R6 \ 00000428 02002DE9 PUSH {R1} \ 0000042C 380094E5 LDR R0,[R4, #+56] \ 00000430 0210A0E3 MOV R1,#+2 \ 00000434 4C0100EF SWI +332 6077 y+=GetFontYSIZE(11)+5; \ 00000438 0B00A0E3 MOV R0,#+11 \ 0000043C C50100EF SWI +453 \ 00000440 050080E2 ADD R0,R0,#+5 \ 00000444 066080E0 ADD R6,R0,R6 \ 00000448 14D08DE2 ADD SP,SP,#+20 6078 } 6079 6080 if(Is_Double_Vibra_On) \ ??DrawLoadScreen_7: \ 0000044C EC0298E5 LDR R0,[R8, #+748] \ 00000450 000050E3 CMP R0,#+0 \ 00000454 1A00000A BEQ ??DrawLoadScreen_8 6081 { 6082 wsprintf(data->ws2,"[Vr]"); \ 00000458 380094E5 LDR R0,[R4, #+56] \ 0000045C 081089E2 ADD R1,R9,#+8 \ 00000460 240100EF SWI +292 6083 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); \ 00000464 1700A0E3 MOV R0,#+23 \ 00000468 2E0100EF SWI +302 \ 0000046C 0070A0E1 MOV R7,R0 \ 00000470 0200A0E3 MOV R0,#+2 \ 00000474 2E0100EF SWI +302 \ 00000478 00A0A0E1 MOV R10,R0 \ 0000047C 0B00A0E3 MOV R0,#+11 \ 00000480 C50100EF SWI +453 \ 00000484 00B0A0E1 MOV R11,R0 \ 00000488 888100EF SWI +33160 \ 0000048C 80002DE9 PUSH {R7} \ 00000490 00042DE9 PUSH {R10} \ 00000494 0010A0E3 MOV R1,#+0 \ 00000498 02002DE9 PUSH {R1} \ 0000049C 013040E2 SUB R3,R0,#+1 \ 000004A0 0620A0E1 MOV R2,R6 \ 000004A4 0B10A0E3 MOV R1,#+11 \ 000004A8 02002DE9 PUSH {R1} \ 000004AC 06108BE0 ADD R1,R11,R6 \ 000004B0 02002DE9 PUSH {R1} \ 000004B4 380094E5 LDR R0,[R4, #+56] \ 000004B8 0210A0E3 MOV R1,#+2 \ 000004BC 4C0100EF SWI +332 \ 000004C0 14D08DE2 ADD SP,SP,#+20 6084 } 6085 6086 if(away_m) \ ??DrawLoadScreen_8: \ 000004C4 A80398E5 LDR R0,[R8, #+936] \ 000004C8 000050E3 CMP R0,#+0 \ 000004CC 1F00000A BEQ ??DrawLoadScreen_9 6087 { 6088 wsprintf(data->ws2,A,away_msg_time_dace); \ 000004D0 5000A0E3 MOV R0,#+80 \ 000004D4 6C0D80E3 ORR R0,R0,#0x1B00 \ 000004D8 082080E0 ADD R2,R0,R8 \ 000004DC 380094E5 LDR R0,[R4, #+56] \ 000004E0 1C108DE2 ADD R1,SP,#+28 \ 000004E4 240100EF SWI +292 6089 DrawString(data->ws2,2,y,ScreenW()-1,y+GetFontYSIZE(11),11,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); \ 000004E8 1700A0E3 MOV R0,#+23 \ 000004EC 2E0100EF SWI +302 \ 000004F0 0070A0E1 MOV R7,R0 \ 000004F4 0200A0E3 MOV R0,#+2 \ 000004F8 2E0100EF SWI +302 \ 000004FC 00A0A0E1 MOV R10,R0 \ 00000500 0B00A0E3 MOV R0,#+11 \ 00000504 C50100EF SWI +453 \ 00000508 00B0A0E1 MOV R11,R0 \ 0000050C 888100EF SWI +33160 \ 00000510 80002DE9 PUSH {R7} \ 00000514 00042DE9 PUSH {R10} \ 00000518 0010A0E3 MOV R1,#+0 \ 0000051C 02002DE9 PUSH {R1} \ 00000520 013040E2 SUB R3,R0,#+1 \ 00000524 0620A0E1 MOV R2,R6 \ 00000528 0B10A0E3 MOV R1,#+11 \ 0000052C 02002DE9 PUSH {R1} \ 00000530 06108BE0 ADD R1,R11,R6 \ 00000534 02002DE9 PUSH {R1} \ 00000538 380094E5 LDR R0,[R4, #+56] \ 0000053C 0210A0E3 MOV R1,#+2 \ 00000540 4C0100EF SWI +332 6090 y+=GetFontYSIZE(11)+5; \ 00000544 0B00A0E3 MOV R0,#+11 \ 00000548 C50100EF SWI +453 \ 0000054C 14D08DE2 ADD SP,SP,#+20 6091 } 6092 6093 6094 wsprintf(data->ws2,"Uin: %d",UIN); \ ??DrawLoadScreen_9: \ 00000550 ........ LDR R0,??DataTable239 ;; UIN \ 00000554 881089E2 ADD R1,R9,#+136 \ 00000558 002090E5 LDR R2,[R0, #+0] \ 0000055C 380094E5 LDR R0,[R4, #+56] \ 00000560 240100EF SWI +292 6095 DrawString(data->ws2,1,scr_h-10-4*GetFontYSIZE(FONT_SMALL_BOLD)+1,ScreenW()-1,scr_h-10-GetFontYSIZE(FONT_MEDIUM_BOLD)-3 6096 ,FONT_SMALL,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ 00000564 1700A0E3 MOV R0,#+23 \ 00000568 2E0100EF SWI +302 \ 0000056C 0060A0E1 MOV R6,R0 \ 00000570 0000A0E3 MOV R0,#+0 \ 00000574 2E0100EF SWI +302 \ 00000578 0070A0E1 MOV R7,R0 \ 0000057C 0500A0E3 MOV R0,#+5 \ 00000580 C50100EF SWI +453 \ 00000584 00A0A0E1 MOV R10,R0 \ 00000588 888100EF SWI +33160 \ 0000058C 00B0A0E1 MOV R11,R0 \ 00000590 0900A0E3 MOV R0,#+9 \ 00000594 C50100EF SWI +453 \ 00000598 04209DE5 LDR R2,[SP, #+4] \ 0000059C 0010A0E3 MOV R1,#+0 \ 000005A0 0A2042E2 SUB R2,R2,#+10 \ 000005A4 00208DE5 STR R2,[SP, #+0] \ 000005A8 40002DE9 PUSH {R6} \ 000005AC 80002DE9 PUSH {R7} \ 000005B0 02002DE9 PUSH {R1} \ 000005B4 01304BE2 SUB R3,R11,#+1 \ 000005B8 000142E0 SUB R0,R2,R0, LSL #+2 \ 000005BC 0810A0E3 MOV R1,#+8 \ 000005C0 02002DE9 PUSH {R1} \ 000005C4 0A1042E0 SUB R1,R2,R10 \ 000005C8 012080E2 ADD R2,R0,#+1 \ 000005CC 031041E2 SUB R1,R1,#+3 \ 000005D0 02002DE9 PUSH {R1} \ 000005D4 380094E5 LDR R0,[R4, #+56] \ 000005D8 0110A0E3 MOV R1,#+1 \ 000005DC 4C0100EF SWI +332 6097 6098 if(connect_state==3) \ 000005E0 FC0398E5 LDR R0,[R8, #+1020] \ 000005E4 14D08DE2 ADD SP,SP,#+20 \ 000005E8 030050E3 CMP R0,#+3 \ 000005EC 0B00001A BNE ??DrawLoadScreen_10 6099 { 6100 wsprintf(data->ws2,"Online: %02d:%02d:%02d not action %d sec", uptimeHour, uptimeMin, uptimeSec,msg_away_timer*5); \ 000005F0 A40398E5 LDR R0,[R8, #+932] \ 000005F4 901089E2 ADD R1,R9,#+144 \ 000005F8 000180E0 ADD R0,R0,R0, LSL #+2 \ 000005FC 01002DE9 PUSH {R0} \ 00000600 C00398E5 LDR R0,[R8, #+960] \ 00000604 01002DE9 PUSH {R0} \ 00000608 BC3398E5 LDR R3,[R8, #+956] \ 0000060C B82398E5 LDR R2,[R8, #+952] \ 00000610 380094E5 LDR R0,[R4, #+56] \ 00000614 240100EF SWI +292 \ 00000618 08D08DE2 ADD SP,SP,#+8 \ 0000061C 070000EA B ??DrawLoadScreen_11 6101 } 6102 else 6103 wsprintf(data->ws2,"Offline [%02d:%02d:%02d]",uptimeHour, uptimeMin, uptimeSec); \ ??DrawLoadScreen_10: \ 00000620 C00398E5 LDR R0,[R8, #+960] \ 00000624 BC1089E2 ADD R1,R9,#+188 \ 00000628 01002DE9 PUSH {R0} \ 0000062C BC3398E5 LDR R3,[R8, #+956] \ 00000630 B82398E5 LDR R2,[R8, #+952] \ 00000634 380094E5 LDR R0,[R4, #+56] \ 00000638 240100EF SWI +292 \ 0000063C 04D08DE2 ADD SP,SP,#+4 6104 DrawString(data->ws2,1,scr_h-10-3*GetFontYSIZE(FONT_SMALL_BOLD)+1,ScreenW()-1,scr_h-10-GetFontYSIZE(FONT_MEDIUM_BOLD)-3 6105 ,FONT_SMALL,0,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); \ ??DrawLoadScreen_11: \ 00000640 1700A0E3 MOV R0,#+23 \ 00000644 2E0100EF SWI +302 \ 00000648 0060A0E1 MOV R6,R0 \ 0000064C 0000A0E3 MOV R0,#+0 \ 00000650 2E0100EF SWI +302 \ 00000654 0070A0E1 MOV R7,R0 \ 00000658 0500A0E3 MOV R0,#+5 \ 0000065C C50100EF SWI +453 \ 00000660 00A0A0E1 MOV R10,R0 \ 00000664 888100EF SWI +33160 \ 00000668 00B0A0E1 MOV R11,R0 \ 0000066C 0900A0E3 MOV R0,#+9 \ 00000670 C50100EF SWI +453 \ 00000674 40002DE9 PUSH {R6} \ 00000678 80002DE9 PUSH {R7} \ 0000067C 0010A0E3 MOV R1,#+0 \ 00000680 02002DE9 PUSH {R1} \ 00000684 01304BE2 SUB R3,R11,#+1 \ 00000688 800080E0 ADD R0,R0,R0, LSL #+1 \ 0000068C 0810A0E3 MOV R1,#+8 \ 00000690 02002DE9 PUSH {R1} \ 00000694 10109DE5 LDR R1,[SP, #+16] \ 00000698 0A1041E0 SUB R1,R1,R10 \ 0000069C 031041E2 SUB R1,R1,#+3 \ 000006A0 02002DE9 PUSH {R1} \ 000006A4 14109DE5 LDR R1,[SP, #+20] \ 000006A8 000041E0 SUB R0,R1,R0 \ 000006AC 012080E2 ADD R2,R0,#+1 \ 000006B0 380094E5 LDR R0,[R4, #+56] \ 000006B4 0110A0E3 MOV R1,#+1 \ 000006B8 4C0100EF SWI +332 6106 #endif 6107 6108 if(IsInvertSoftKey) \ 000006BC 1C009DE5 LDR R0,[SP, #+28] \ 000006C0 C060A0E1 ASR R6,R0,#+1 \ 000006C4 ........ LDR R0,??DataTable245 ;; IsInvertSoftKey \ 000006C8 000090E5 LDR R0,[R0, #+0] \ 000006CC 14D08DE2 ADD SP,SP,#+20 \ 000006D0 000050E3 CMP R0,#+0 \ 000006D4 3800000A BEQ ??DrawLoadScreen_12 6109 { 6110 wsprintf(data->ws2,percent_t,LG_GRSKEYEXIT); \ 000006D8 380094E5 LDR R0,[R4, #+56] \ 000006DC D82089E2 ADD R2,R9,#+216 \ 000006E0 041089E2 ADD R1,R9,#+4 \ 000006E4 240100EF SWI +292 6111 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)); \ 000006E8 1700A0E3 MOV R0,#+23 \ 000006EC 2E0100EF SWI +302 \ 000006F0 0070A0E1 MOV R7,R0 \ 000006F4 0000A0E3 MOV R0,#+0 \ 000006F8 2E0100EF SWI +302 \ 000006FC 00A0A0E1 MOV R10,R0 \ 00000700 0500A0E3 MOV R0,#+5 \ 00000704 C50100EF SWI +453 \ 00000708 80002DE9 PUSH {R7} \ 0000070C 00042DE9 PUSH {R10} \ 00000710 0410A0E3 MOV R1,#+4 \ 00000714 02002DE9 PUSH {R1} \ 00000718 002045E0 SUB R2,R5,R0 \ 0000071C 0510A0E3 MOV R1,#+5 \ 00000720 02002DE9 PUSH {R1} \ 00000724 0510A0E1 MOV R1,R5 \ 00000728 02002DE9 PUSH {R1} \ 0000072C 20309DE5 LDR R3,[SP, #+32] \ 00000730 380094E5 LDR R0,[R4, #+56] \ 00000734 0610A0E1 MOV R1,R6 \ 00000738 4C0100EF SWI +332 6112 6113 wsprintf(data->ws2,percent_t,cltop?LG_GRSKEYCLIST:empty_str); \ 0000073C 1C0498E5 LDR R0,[R8, #+1052] \ 00000740 14D08DE2 ADD SP,SP,#+20 \ 00000744 000050E3 CMP R0,#+0 \ 00000748 380094E5 LDR R0,[R4, #+56] \ 0000074C E0208912 ADDNE R2,R9,#+224 \ 00000750 07208902 ADDEQ R2,R9,#+7 \ 00000754 041089E2 ADD R1,R9,#+4 \ 00000758 240100EF SWI +292 6114 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)); \ 0000075C 1700A0E3 MOV R0,#+23 \ 00000760 2E0100EF SWI +302 \ 00000764 0070A0E1 MOV R7,R0 \ 00000768 0000A0E3 MOV R0,#+0 \ 0000076C 2E0100EF SWI +302 \ 00000770 0080A0E1 MOV R8,R0 \ 00000774 0500A0E3 MOV R0,#+5 \ 00000778 C50100EF SWI +453 \ 0000077C 80002DE9 PUSH {R7} \ 00000780 00012DE9 PUSH {R8} \ 00000784 0110A0E3 MOV R1,#+1 \ 00000788 02002DE9 PUSH {R1} \ 0000078C 0630A0E1 MOV R3,R6 \ 00000790 002045E0 SUB R2,R5,R0 \ 00000794 0510A0E3 MOV R1,#+5 \ 00000798 02002DE9 PUSH {R1} \ 0000079C 0510A0E1 MOV R1,R5 \ 000007A0 02002DE9 PUSH {R1} \ 000007A4 380094E5 LDR R0,[R4, #+56] \ 000007A8 0310A0E3 MOV R1,#+3 \ 000007AC 4C0100EF SWI +332 \ 000007B0 14D08DE2 ADD SP,SP,#+20 \ 000007B4 24D08DE2 ADD SP,SP,#+36 \ 000007B8 F08FBDE8 POP {R4-R11,PC} 6115 } 6116 else 6117 { 6118 wsprintf(data->ws2,percent_t,cltop?LG_GRSKEYCLIST:empty_str); \ ??DrawLoadScreen_12: \ 000007BC 1C0498E5 LDR R0,[R8, #+1052] \ 000007C0 041089E2 ADD R1,R9,#+4 \ 000007C4 000050E3 CMP R0,#+0 \ 000007C8 380094E5 LDR R0,[R4, #+56] \ 000007CC E0208912 ADDNE R2,R9,#+224 \ 000007D0 07208902 ADDEQ R2,R9,#+7 \ 000007D4 240100EF SWI +292 6119 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)); \ 000007D8 1700A0E3 MOV R0,#+23 \ 000007DC 2E0100EF SWI +302 \ 000007E0 0070A0E1 MOV R7,R0 \ 000007E4 0000A0E3 MOV R0,#+0 \ 000007E8 2E0100EF SWI +302 \ 000007EC 0080A0E1 MOV R8,R0 \ 000007F0 0500A0E3 MOV R0,#+5 \ 000007F4 C50100EF SWI +453 \ 000007F8 80002DE9 PUSH {R7} \ 000007FC 00012DE9 PUSH {R8} \ 00000800 0410A0E3 MOV R1,#+4 \ 00000804 02002DE9 PUSH {R1} \ 00000808 002045E0 SUB R2,R5,R0 \ 0000080C 0510A0E3 MOV R1,#+5 \ 00000810 02002DE9 PUSH {R1} \ 00000814 0510A0E1 MOV R1,R5 \ 00000818 02002DE9 PUSH {R1} \ 0000081C 20309DE5 LDR R3,[SP, #+32] \ 00000820 380094E5 LDR R0,[R4, #+56] \ 00000824 0610A0E1 MOV R1,R6 \ 00000828 4C0100EF SWI +332 6120 6121 wsprintf(data->ws2,percent_t,LG_GRSKEYEXIT); \ 0000082C 380094E5 LDR R0,[R4, #+56] \ 00000830 D82089E2 ADD R2,R9,#+216 \ 00000834 041089E2 ADD R1,R9,#+4 \ 00000838 240100EF SWI +292 6122 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)); \ 0000083C 1700A0E3 MOV R0,#+23 \ 00000840 2E0100EF SWI +302 \ 00000844 0070A0E1 MOV R7,R0 \ 00000848 0000A0E3 MOV R0,#+0 \ 0000084C 2E0100EF SWI +302 \ 00000850 0080A0E1 MOV R8,R0 \ 00000854 0500A0E3 MOV R0,#+5 \ 00000858 C50100EF SWI +453 \ 0000085C 80002DE9 PUSH {R7} \ 00000860 00012DE9 PUSH {R8} \ 00000864 0110A0E3 MOV R1,#+1 \ 00000868 02002DE9 PUSH {R1} \ 0000086C 0630A0E1 MOV R3,R6 \ 00000870 002045E0 SUB R2,R5,R0 \ 00000874 0510A0E3 MOV R1,#+5 \ 00000878 02002DE9 PUSH {R1} \ 0000087C 0510A0E1 MOV R1,R5 \ 00000880 02002DE9 PUSH {R1} \ 00000884 380094E5 LDR R0,[R4, #+56] \ 00000888 0310A0E3 MOV R1,#+3 \ 0000088C 4C0100EF SWI +332 \ 00000890 28D08DE2 ADD SP,SP,#+40 6123 } 6124 /* 6125 wsprintf(data->ws2,"%d %s",addonuin[0].uin,addonuin[0].pass); 6126 DrawString(data->ws2,3,scr_h-4-(GetFontYSIZE(FONT_MEDIUM_BOLD)*3), scr_w>>1,scr_h-4,FONT_MEDIUM_BOLD,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(0),GetPaletteAdrByColorIndex(23)); 6127 */ 6128 } \ 00000894 24D08DE2 ADD SP,SP,#+36 \ 00000898 F08FBDE8 POP {R4-R11,PC} ;; return \ ??DrawLoadScreen_0: \ 0000089C ........ DC32 `?` \ 000008A0 ........ DC32 pictures_loaded \ 000008A4 ........ DC32 pictures_max \ 000008A8 ........ DC32 PBRECT \ 000008AC ........ DC32 IsShowInfo \ 000008B0 ........ DC32 BGPBcolor \ 000008B4 ........ DC32 PBcolor \ 000008B8 ........ DC32 total_smiles \ 000008BC ........ DC32 xstatuses_load \ 000008C0 ........ DC32 total_xstatuses \ 000008C4 ........ DC32 `?` \ 000008C8 ........ DC32 `?` \ 000008CC ........ DC32 `?_1` 6129 6130 //int ShowLoadScreen=1; \ In segment CODE, align 4, keep-with-next 6131 void method0(MAIN_GUI *data) 6132 { \ method0: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 6133 if(!IsGuiOnTop(maingui_id)) return; \ 00000008 18009FE5 LDR R0,??method0_0 ;; i_rc + 760 \ 0000000C 000090E5 LDR R0,[R0, #+0] \ 00000010 350100EF SWI +309 \ 00000014 000050E3 CMP R0,#+0 \ 00000018 1080BD08 POPEQ {R4,PC} 6134 #ifndef DEBUG 6135 if(IsGuiOnTop(maingui_id)) 6136 { 6137 if(ShowLoadScreen) 6138 { 6139 #ifdef ELKA 6140 DisableIconBar(0); 6141 #endif 6142 DrawLoadScreen(data); 6143 } 6144 else 6145 { 6146 #ifdef ELKA 6147 #ifdef ICONBAR 6148 DisableIconBar(0); 6149 #else 6150 DisableIconBar(1); 6151 #endif 6152 #endif 6153 SetCanvasFlag(1); 6154 DrawContactList(); 6155 } 6156 } 6157 #else 6158 DrawLoadScreen(data); \ 0000001C 0400A0E1 MOV R0,R4 \ 00000020 ........ BL DrawLoadScreen 6159 #endif 6160 } \ 00000024 1080BDE8 POP {R4,PC} ;; return \ ??method0_0: \ 00000028 ........ DC32 i_rc + 760 6161 \ In segment CODE, align 4, keep-with-next 6162 void method1(MAIN_GUI *data,void *(*malloc_adr)(int)) 6163 { \ method1: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 6164 data->ws1=AllocWS(256); \ 00000008 400FA0E3 MOV R0,#+256 \ 0000000C 250100EF SWI +293 \ 00000010 340084E5 STR R0,[R4, #+52] 6165 data->ws2=AllocWS(256); \ 00000014 400FA0E3 MOV R0,#+256 \ 00000018 250100EF SWI +293 \ 0000001C 380084E5 STR R0,[R4, #+56] 6166 6167 if(isSystemFont) clfont=100+pngFont; \ 00000020 ........ LDR R0,??DataTable241 ;; isSystemFont \ 00000024 000090E5 LDR R0,[R0, #+0] \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 0300000A BEQ ??method1_0 \ 00000030 ........ LDR R0,??DataTable242 ;; pngFont \ 00000034 000090E5 LDR R0,[R0, #+0] \ 00000038 640080E2 ADD R0,R0,#+100 \ 0000003C 000000EA B ??method1_1 6168 else clfont=2; \ ??method1_0: \ 00000040 0200A0E3 MOV R0,#+2 \ ??method1_1: \ 00000044 ........ LDR R5,??DataTable264 ;; i_rc \ 00000048 7C0485E5 STR R0,[R5, #+1148] 6169 6170 if(icons[IS_ONLINE]) \ 0000004C 4C0095E5 LDR R0,[R5, #+76] \ 00000050 000050E3 CMP R0,#+0 \ 00000054 7C0495E5 LDR R0,[R5, #+1148] \ 00000058 0600000A BEQ ??method1_2 6171 hy=(icons[IS_ONLINE]->h > FontH(clfont)) ? (icons[IS_ONLINE]->h) : (FontH(clfont)); \ 0000005C ........ _BLF FontH,??FontH??rA \ 00000060 4C1095E5 LDR R1,[R5, #+76] \ 00000064 B220D1E1 LDRH R2,[R1, #+2] \ 00000068 020050E1 CMP R0,R2 \ 0000006C 0200A0B1 MOVLT R0,R2 \ 00000070 010000BA BLT ??method1_3 \ 00000074 7C0495E5 LDR R0,[R5, #+1148] 6172 else 6173 hy=FontH(clfont); \ ??method1_2: \ 00000078 ........ _BLF FontH,??FontH??rA 6174 6175 hy+=YDISP; \ ??method1_3: \ 0000007C 180080E2 ADD R0,R0,#+24 \ 00000080 780485E5 STR R0,[R5, #+1144] 6176 data->gui.state=1; \ 00000084 0100A0E3 MOV R0,#+1 \ 00000088 0C00C4E5 STRB R0,[R4, #+12] 6177 } \ 0000008C 3080BDE8 POP {R4,R5,PC} ;; return 6178 \ In segment CODE, align 4, keep-with-next 6179 void method2(MAIN_GUI *data,void (*mfree_adr)(void *)) 6180 { \ method2: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 6181 FreeWS(data->ws1); \ 00000008 340094E5 LDR R0,[R4, #+52] \ 0000000C 290100EF SWI +297 6182 FreeWS(data->ws2); \ 00000010 380094E5 LDR R0,[R4, #+56] \ 00000014 290100EF SWI +297 6183 #ifndef DEBUG 6184 mfree(screen3.bitmap); 6185 mfree(screen4.bitmap); 6186 #endif 6187 data->gui.state=0; \ 00000018 0000A0E3 MOV R0,#+0 \ 0000001C 0C00C4E5 STRB R0,[R4, #+12] 6188 } \ 00000020 1080BDE8 POP {R4,PC} ;; return 6189 \ In segment CODE, align 4, keep-with-next 6190 void method3(MAIN_GUI *data,void *(*malloc_adr)(int),void (*mfree_adr)(void *)) 6191 { \ method3: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 6192 DisableIDLETMR(); \ 00000008 7F0100EF SWI +383 6193 data->gui.state=2; \ 0000000C 0200A0E3 MOV R0,#+2 \ 00000010 0C00C4E5 STRB R0,[R4, #+12] 6194 } \ 00000014 1080BDE8 POP {R4,PC} ;; return 6195 \ In segment CODE, align 4, keep-with-next 6196 void method4(MAIN_GUI *data,void (*mfree_adr)(void *)) 6197 { 6198 if (data->gui.state!=2) \ method4: \ 00000000 0C10D0E5 LDRB R1,[R0, #+12] \ 00000004 020051E3 CMP R1,#+2 6199 return; 6200 data->gui.state=1; \ 00000008 0110A003 MOVEQ R1,#+1 \ 0000000C 0C10C005 STRBEQ R1,[R0, #+12] 6201 } \ 00000010 1EFF2FE1 BX LR ;; return 6202 6203 \ In segment CODE, align 4, keep-with-next 6204 int LoadOnKey(GUI_MSG *msg) 6205 { \ LoadOnKey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 14D04DE2 SUB SP,SP,#+20 6206 if (msg->gbsmsg->msg==KEY_DOWN) \ 00000008 043090E5 LDR R3,[R0, #+4] \ 0000000C 9310A0E3 MOV R1,#+147 \ 00000010 040093E5 LDR R0,[R3, #+4] \ 00000014 401F81E3 ORR R1,R1,#0x100 \ 00000018 010050E1 CMP R0,R1 \ 0000001C 7700001A BNE ??LoadOnKey_1 6207 { 6208 switch(msg->gbsmsg->submess) \ 00000020 ........ LDR R4,??DataTable264 ;; i_rc \ 00000024 ........ LDR R0,??DataTable245 ;; IsInvertSoftKey \ 00000028 083093E5 LDR R3,[R3, #+8] \ 0000002C 1CC494E5 LDR R12,[R4, #+1052] \ 00000030 00E494E5 LDR LR,[R4, #+1024] \ 00000034 009090E5 LDR R9,[R0, #+0] \ 00000038 ........ LDR R5,??DataTable263 ;; create_connect \ 0000003C ........ LDR R1,??DataTable259 ;; end_socket \ 00000040 C4719FE5 LDR R7,??LoadOnKey_2 ;; `?` \ 00000044 7000A0E3 MOV R0,#+112 \ 00000048 780D80E3 ORR R0,R0,#0x1E00 \ 0000004C 046080E0 ADD R6,R0,R4 \ 00000050 ........ LDR R0,??DataTable248 ;; WriteDefSettings \ 00000054 00A0E0E3 MVN R10,#+0 \ 00000058 0120A0E3 MOV R2,#+1 \ 0000005C 0080A0E3 MOV R8,#+0 \ 00000060 013043E2 SUB R3,R3,#+1 \ 00000064 350053E3 CMP R3,#+53 \ 00000068 6400008A BHI ??LoadOnKey_1 \ 0000006C 01BF8FE2 ADR R11,??LoadOnKey_0 \ 00000070 03B0DBE7 LDRB R11,[R11, R3] \ 00000074 0BF18FE0 ADD PC,PC,R11, LSL #+2 \ ??LoadOnKey_0: \ 00000078 0D61612B DC8 +13,+97,+97,+43 \ 0000007C 61616161 DC8 +97,+97,+97,+97 \ 00000080 61612E3A DC8 +97,+97,+46,+58 \ 00000084 61616161 DC8 +97,+97,+97,+97 \ 00000088 61616161 DC8 +97,+97,+97,+97 \ 0000008C 61616161 DC8 +97,+97,+97,+97 \ 00000090 61616161 DC8 +97,+97,+97,+97 \ 00000094 61616161 DC8 +97,+97,+97,+97 \ 00000098 61616161 DC8 +97,+97,+97,+97 \ 0000009C 61616161 DC8 +97,+97,+97,+97 \ 000000A0 61616161 DC8 +97,+97,+97,+97 \ 000000A4 6161613D DC8 +97,+97,+97,+61 \ 000000A8 454A4F55 DC8 +69,+74,+79,+85 \ 000000AC 5A5C0000 DC8 +90,+92,+0,+0 6209 { 6210 // case ENTER_BUTTON: Enter(); break; 6211 case LEFT_SOFT: 6212 if(IsInvertSoftKey) \ ??LoadOnKey_3: \ 000000B0 000059E3 CMP R9,#+0 \ 000000B4 1500000A BEQ ??LoadOnKey_4 6213 { 6214 #ifdef DEBUG 6215 if (cltop || sock==-1) CreateCL();//create_contactlist_menu(); \ ??LoadOnKey_5: \ 000000B8 00005CE3 CMP R12,#+0 \ 000000BC 0100001A BNE ??LoadOnKey_6 \ 000000C0 0A005EE1 CMP LR,R10 \ 000000C4 0F00001A BNE ??LoadOnKey_7 \ ??LoadOnKey_6: \ 000000C8 0C0097E8 LDM R7,{R2,R3} \ 000000CC 04008DE2 ADD R0,SP,#+4 \ 000000D0 0C0080E8 STM R0,{R2,R3} \ 000000D4 4000A0E3 MOV R0,#+64 \ 000000D8 140000EF SWI +20 \ 000000DC 0050A0E1 MOV R5,R0 \ 000000E0 4010A0E3 MOV R1,#+64 \ 000000E4 1D0100EF SWI +285 \ 000000E8 04008DE2 ADD R0,SP,#+4 \ 000000EC 000085E5 STR R0,[R5, #+0] \ 000000F0 080087E2 ADD R0,R7,#+8 \ 000000F4 040085E5 STR R0,[R5, #+4] \ 000000F8 0500A0E1 MOV R0,R5 \ 000000FC 370100EF SWI +311 \ 00000100 FC0284E5 STR R0,[R4, #+764] \ 00000104 ........ BL SMART_REDRAW 6216 #else 6217 if(ShowLoadScreen && (cltop || sock==-1)) ShowLoadScreen=0;//показывть контакт лист 6218 #endif 6219 6220 ShowLoadScreen=0; \ ??LoadOnKey_7: \ 00000108 488484E5 STR R8,[R4, #+1096] \ 0000010C 3B0000EA B ??LoadOnKey_1 6221 //unhooked2=1; 6222 } 6223 else// return 1; 6224 { 6225 if(ShowLoadScreen) \ ??LoadOnKey_4: \ 00000110 480494E5 LDR R0,[R4, #+1096] \ 00000114 000050E3 CMP R0,#+0 6226 return(1); //Происходит вызов GeneralFunc для тек. GUI -> закрытие GUI \ 00000118 0100A013 MOVNE R0,#+1 \ 0000011C 3800001A BNE ??LoadOnKey_8 6227 else 6228 ShowLoadScreen=1; \ 00000120 482484E5 STR R2,[R4, #+1096] \ 00000124 350000EA B ??LoadOnKey_1 6229 } 6230 // if (cltop) remake_clmenu(); 6231 break; 6232 case RIGHT_SOFT: 6233 if(IsInvertSoftKey) \ ??LoadOnKey_9: \ 00000128 000059E3 CMP R9,#+0 \ 0000012C F7FFFF1A BNE ??LoadOnKey_4 6234 { 6235 if(ShowLoadScreen) 6236 return(1); //Происходит вызов GeneralFunc для тек. GUI -> закрытие GUI 6237 else 6238 ShowLoadScreen=1; 6239 } 6240 else 6241 { 6242 #ifdef DEBUG 6243 if (cltop || sock==-1)CreateCL(); //create_contactlist_menu(); \ 00000130 E0FFFFEA B ??LoadOnKey_5 6244 #else 6245 if(ShowLoadScreen && (cltop || sock==-1)) ShowLoadScreen=0;//показывть контакт лист 6246 #endif 6247 ShowLoadScreen=0; 6248 // unhooked2=1; 6249 } 6250 break; 6251 case GREEN_BUTTON: 6252 disautorecconect=0; \ ??LoadOnKey_10: \ 00000134 D08384E5 STR R8,[R4, #+976] 6253 if ((connect_state==0)&&(sock==-1)) \ 00000138 FC0394E5 LDR R0,[R4, #+1020] \ 0000013C 000050E3 CMP R0,#+0 \ 00000140 0A005E01 CMPEQ LR,R10 \ 00000144 2D00001A BNE ??LoadOnKey_1 6254 { 6255 GBS_DelTimer(&reconnect_tmr); \ 00000148 0600A0E1 MOV R0,R6 \ 0000014C 8C0100EF SWI +396 6256 DNR_TRIES=3; \ 00000150 0300A0E3 MOV R0,#+3 \ 00000154 3C0484E5 STR R0,[R4, #+1084] 6257 SUBPROC((void *)create_connect); \ 00000158 0500A0E1 MOV R0,R5 \ ??LoadOnKey_11: \ 0000015C 710100EF SWI +369 \ 00000160 260000EA B ??LoadOnKey_1 6258 } 6259 break; 6260 case RED_BUTTON: 6261 // extern volatile int disautorecconect; 6262 disautorecconect=1; \ ??LoadOnKey_12: \ 00000164 D02384E5 STR R2,[R4, #+976] 6263 // extern void end_socket(void); 6264 SUBPROC((void*)end_socket); \ 00000168 0100A0E1 MOV R0,R1 \ 0000016C FAFFFFEA B ??LoadOnKey_11 6265 break; 6266 case '0': 6267 SUBPROC((void*)end_socket); \ ??LoadOnKey_13: \ 00000170 0100A0E1 MOV R0,R1 \ 00000174 710100EF SWI +369 6268 GBS_DelTimer(&reconnect_tmr); \ 00000178 0600A0E1 MOV R0,R6 \ 0000017C 8C0100EF SWI +396 6269 DNR_TRIES=3; \ 00000180 0300A0E3 MOV R0,#+3 \ 00000184 3C0484E5 STR R0,[R4, #+1084] 6270 SUBPROC((void *)create_connect); \ 00000188 0500A0E1 MOV R0,R5 \ ??LoadOnKey_14: \ 0000018C F2FFFFEA B ??LoadOnKey_11 6271 break; 6272 6273 //------------------------------------------------------// 6274 6275 case '1': 6276 Is_Sounds_Enabled=!(Is_Sounds_Enabled); \ ??LoadOnKey_15: \ 00000190 D41394E5 LDR R1,[R4, #+980] \ 00000194 000051E3 CMP R1,#+0 \ 00000198 0020A013 MOVNE R2,#+0 \ 0000019C D42384E5 STR R2,[R4, #+980] 6277 SUBPROC((void*)WriteDefSettings); \ 000001A0 EDFFFFEA B ??LoadOnKey_11 6278 break; 6279 case '2': 6280 Is_Vibra_Enabled=!(Is_Vibra_Enabled); \ ??LoadOnKey_16: \ 000001A4 081394E5 LDR R1,[R4, #+776] \ 000001A8 000051E3 CMP R1,#+0 \ 000001AC 0020A013 MOVNE R2,#+0 \ 000001B0 082384E5 STR R2,[R4, #+776] 6281 SUBPROC((void*)WriteDefSettings); \ 000001B4 E8FFFFEA B ??LoadOnKey_11 6282 break; 6283 case '3': 6284 if(CurrentPrivateStatus!=1) \ ??LoadOnKey_17: \ 000001B8 E00394E5 LDR R0,[R4, #+992] \ 000001BC 010050E3 CMP R0,#+1 \ 000001C0 0300A003 MOVEQ R0,#+3 6285 SetPrivateStatus(1);//Инвиз \ 000001C4 0100A013 MOVNE R0,#+1 \ 000001C8 ........ _BLF SetPrivateStatus,??SetPrivateStatus??rA \ 000001CC 0B0000EA B ??LoadOnKey_1 6286 else 6287 SetPrivateStatus(3); 6288 break; 6289 case '4': 6290 Is_Double_Vibra_On=!(Is_Double_Vibra_On); \ ??LoadOnKey_18: \ 000001D0 EC1294E5 LDR R1,[R4, #+748] \ 000001D4 000051E3 CMP R1,#+0 \ 000001D8 0020A013 MOVNE R2,#+0 \ 000001DC EC2284E5 STR R2,[R4, #+748] 6291 SUBPROC((void*)WriteDefSettings); \ 000001E0 DDFFFFEA B ??LoadOnKey_11 6292 break; 6293 case '5': LINE_MODE=!LINE_MODE; break; \ ??LoadOnKey_19: \ 000001E4 ........ LDR R0,??DataTable249 ;; LINE_MODE \ 000001E8 000000EA B ??LoadOnKey_20 6294 case '6': VIEW_MODE=!VIEW_MODE; break; \ ??LoadOnKey_21: \ 000001EC ........ LDR R0,??DataTable250 ;; VIEW_MODE \ ??LoadOnKey_20: \ 000001F0 001090E5 LDR R1,[R0, #+0] \ 000001F4 000051E3 CMP R1,#+0 \ 000001F8 0020A013 MOVNE R2,#+0 \ 000001FC 002080E5 STR R2,[R0, #+0] 6295 } 6296 } 6297 return 0; \ ??LoadOnKey_1: \ 00000200 0000A0E3 MOV R0,#+0 \ ??LoadOnKey_8: \ 00000204 14D08DE2 ADD SP,SP,#+20 ;; stack cleaning \ 00000208 F08FBDE8 POP {R4-R11,PC} ;; return \ ??LoadOnKey_2: \ 0000020C ........ DC32 `?` 6298 } 6299 6300 \ In segment CODE, align 4, keep-with-next 6301 int method5(MAIN_GUI *data,GUI_MSG *msg) 6302 { \ method5: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0140A0E1 MOV R4,R1 6303 DirectRedrawGUI(); \ 00000008 3F0100EF SWI +319 6304 #ifndef DEBUG 6305 if(ShowLoadScreen) 6306 return LoadOnKey(msg); 6307 else 6308 ClOnKey(msg); 6309 6310 return(0); 6311 #else 6312 return LoadOnKey(msg); \ 0000000C 0400A0E1 MOV R0,R4 \ 00000010 1040BDE8 POP {R4,LR} ;; Pop \ 00000014 ........ B LoadOnKey ;; tailcall 6313 #endif 6314 /* 6315 if(msg->gbsmsg->msg==LONG_PRESS || msg->gbsmsg->msg==KEY_DOWN) 6316 { 6317 switch(msg->gbsmsg->submess) 6318 { 6319 case UP_BUTTON: MoveUp(); break; 6320 case DOWN_BUTTON: MoveDown(); break; 6321 } 6322 }*/ 6323 6324 } 6325 \ In segment CODE, align 4, keep-with-next 6326 int method8(void){return(0);} \ method8: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return \ In segment CODE, align 4, keep-with-next 6327 int method9(void){return(0);} \ method9: \ 00000000 0000A0E3 MOV R0,#+0 \ 00000004 1EFF2FE1 BX LR ;; return 6328 6329 6330 6331 const void * const gui_methods[11]={ 6332 (void *)method0, //Redraw 6333 (void *)method1, //Create 6334 (void *)method2, //Close 6335 (void *)method3, //Focus 6336 (void *)method4, //Unfocus 6337 (void *)method5, //OnKey 6338 0, 6339 (void *)kill_data, //method7, //Destroy 6340 (void *)method8, 6341 (void *)method9, 6342 0 6343 }; 6344 6345 6346 6347 int checkGui(int id); 6348 #define idlegui_id(icsm) (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) 6349 6350 int _to_develop=0; \ In segment CODE, align 4, keep-with-next 6351 int my_keyhook(int key, int m) 6352 { \ my_keyhook: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 6353 if(m==KEY_DOWN) \ 00000004 ........ LDR R4,??DataTable264 ;; i_rc \ 00000008 0060A0E1 MOV R6,R0 \ 0000000C 0150A0E3 MOV R5,#+1 \ 00000010 9300A0E3 MOV R0,#+147 \ 00000014 400F80E3 ORR R0,R0,#0x100 \ 00000018 000051E1 CMP R1,R0 \ 0000001C 2000001A BNE ??my_keyhook_0 6354 { 6355 #ifdef ELKA 6356 if ((key==CAMERA_BUTTON)&&(!IsUnlocked())) \ 00000020 140056E3 CMP R6,#+20 \ 00000024 0E00001A BNE ??my_keyhook_1 \ 00000028 430000EF SWI +67 \ 0000002C 000050E3 CMP R0,#+0 \ 00000030 0B00001A BNE ??my_keyhook_1 6357 { 6358 GBS_StopTimer(&away_tmr); \ 00000034 7000A0E3 MOV R0,#+112 \ 00000038 6C0D80E3 ORR R0,R0,#0x1B00 \ 0000003C 040080E0 ADD R0,R0,R4 \ 00000040 440100EF SWI +324 6359 msg_away_timer=AUTO_ENGADE*12; \ 00000044 ........ LDR R0,??DataTable252 ;; AUTO_ENGADE \ 00000048 0C10A0E3 MOV R1,#+12 \ 0000004C 000090E5 LDR R0,[R0, #+0] \ 00000050 910000E0 MUL R0,R1,R0 \ 00000054 A40384E5 STR R0,[R4, #+932] 6360 away_timer(); \ 00000058 ........ BL away_timer 6361 main_d=1; \ 0000005C A85284E5 STR R5,[R4, #+680] \ 00000060 0D0000EA B ??my_keyhook_2 6362 } 6363 else 6364 { 6365 #endif 6366 if(Reset_timer) \ ??my_keyhook_1: \ 00000064 80009FE5 LDR R0,??my_keyhook_3 ;; Reset_timer \ 00000068 000090E5 LDR R0,[R0, #+0] \ 0000006C 000050E3 CMP R0,#+0 \ 00000070 F080BD08 POPEQ {R4-R7,PC} 6367 { 6368 msg_away_timer=0; 6369 away_m=0; 6370 if(change_back_status) \ 00000074 B00394E5 LDR R0,[R4, #+944] \ 00000078 0050A0E3 MOV R5,#+0 \ 0000007C A45384E5 STR R5,[R4, #+932] \ 00000080 A85384E5 STR R5,[R4, #+936] \ 00000084 000050E3 CMP R0,#+0 \ 00000088 F080BD08 POPEQ {R4-R7,PC} 6371 { 6372 CurrentStatus=status_rem; \ 0000008C AC0394E5 LDR R0,[R4, #+940] \ 00000090 980384E5 STR R0,[R4, #+920] 6373 set_my_status(); \ 00000094 ........ BL set_my_status 6374 change_back_status=0; \ 00000098 B05384E5 STR R5,[R4, #+944] \ ??my_keyhook_2: \ 0000009C 0000A0E3 MOV R0,#+0 \ 000000A0 F080BDE8 POP {R4-R7,PC} 6375 } 6376 } 6377 #ifdef ELKA 6378 } 6379 #endif 6380 } 6381 6382 if(m==LONG_PRESS) \ ??my_keyhook_0: \ 000000A4 020080E2 ADD R0,R0,#+2 \ 000000A8 000051E1 CMP R1,R0 \ 000000AC 0C00001A BNE ??my_keyhook_4 6383 { 6384 void *icsm=FindCSMbyID(CSM_root()->idle_id); \ 000000B0 068100EF SWI +33030 \ 000000B4 040090E5 LDR R0,[R0, #+4] \ 000000B8 080100EF SWI +264 \ 000000BC 0070A0E1 MOV R7,R0 6385 if( key==VOL_DOWN_BUTTON && IsUnlocked() && !(checkGui(idlegui_id(icsm))) ) \ 000000C0 0E0056E3 CMP R6,#+14 \ 000000C4 0600001A BNE ??my_keyhook_4 \ 000000C8 430000EF SWI +67 \ 000000CC 000050E3 CMP R0,#+0 \ 000000D0 F080BD08 POPEQ {R4-R7,PC} \ 000000D4 2C0097E5 LDR R0,[R7, #+44] \ 000000D8 ........ BL checkGui \ 000000DC 000050E3 CMP R0,#+0 6386 { 6387 _to_develop=1; \ 000000E0 A0548405 STREQ R5,[R4, #+1184] 6388 //to_develop(); 6389 } 6390 } 6391 return 0; \ ??my_keyhook_4: \ 000000E4 0000A0E3 MOV R0,#+0 \ 000000E8 F080BDE8 POP {R4-R7,PC} ;; return \ ??my_keyhook_3: \ 000000EC ........ DC32 Reset_timer 6392 } \ In segment DATA_C, align 4, align-sorted 6393 /* 6394 int mode_enter; 6395 int mode; 6396 6397 int my_keyhook(int submsg, int msg) 6398 { 6399 if(Reset_timer) 6400 { 6401 msg_away_timer=0; 6402 away_m=0; 6403 if(change_back_status) 6404 { 6405 CurrentStatus=status_rem; 6406 set_my_status(); 6407 change_back_status=0; 6408 } 6409 } 6410 if (submsg!=VOL_DOWN_BUTTON) return(0); 6411 switch(msg) 6412 { 6413 case KEY_DOWN: 6414 if (mode_enter==2) 6415 { 6416 GBS_SendMessage(MMI_CEPID,KEY_UP,VOL_DOWN_BUTTON); 6417 return (0); 6418 } 6419 mode_enter=0; 6420 return (2); 6421 case KEY_UP: 6422 if (mode==1)mode=0; 6423 if (mode_enter==0) 6424 { 6425 mode_enter=2; 6426 GBS_SendMessage(MMI_CEPID,KEY_DOWN,VOL_DOWN_BUTTON); 6427 return (2); 6428 } 6429 if (mode_enter==2) 6430 { 6431 mode_enter=0; 6432 return (0); 6433 } 6434 mode_enter=0; 6435 return (2); 6436 case LONG_PRESS: 6437 mode_enter=1; 6438 if(mode==0) 6439 { 6440 void *icsm; 6441 icsm=FindCSMbyID(CSM_root()->idle_id); 6442 if(!(checkGui(idlegui_id(icsm))) && IsUnlocked()) 6443 { 6444 to_develop(); 6445 } 6446 } 6447 mode=1; 6448 break; 6449 } 6450 return(2); 6451 }*/ 6452 const RECT Canvas={0,0,0,0}; \ Canvas: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ percent_s: \ 00000008 257300 DC8 "%s" \ percent_d: \ 0000000B 256400 DC8 "%d" \ _d: \ 0000000E 256400 DC8 "%d" \ 00000011 000000 DC8 0, 0, 0 \ 00000014 2825642F2564 DC8 "(%d/%d)" \ 2900 \ 0000001C 257325632563 DC8 "%s%c%c(%d/%d)" \ 2825642F2564 \ 2900 \ 0000002A 0000 DC8 0, 0 \ 0000002C 25735C6C6F67 DC8 "%s\\logs.txt" \ 732E74787400 \ 00000038 556E72656164 DC8 "Unread: %d" \ 3A20256400 \ 00000043 00 DC8 0 \ 00000044 4E6174494351 DC8 "NatICQ config updated!" \ 20636F6E6669 \ 672075706461 \ 7465642100 \ 0000005B 00 DC8 0 \ 0000005C 257332323430 DC8 "%s2240.png" \ 2E706E6700 \ 00000067 00 DC8 0 \ 00000068 475052532075 DC8 "GPRS up, wait 10 sec..." \ 702C20776169 \ 742031302073 \ 65632E2E2E00 \ 00000080 54727920746F DC8 "Try to login..." \ 206C6F67696E \ 2E2E2E00 \ 00000090 CDE520E220F1 DC8 "\315\345 \342 \361\357\350\361\352\345" \ EFE8F1EAE500 \ 0000009C 4C6F6F706261 DC8 "Loopback" \ 636B00 \ 000000A5 000000 DC8 0, 0, 0 \ 000000A8 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 \ 000000D0 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 \ 000000F2 0000 DC8 0, 0 \ 000000F4 446973636F6E DC8 "Disconnected, %d bytes not sended!" \ 6E6563746564 \ 2C2025642062 \ 79746573206E \ 6F742073656E \ 6465642100 \ 00000117 00 DC8 0 \ 00000118 25730A526563 DC8 "%s\012Reconect after %d second..." \ 6F6E65637420 \ 616674657220 \ 256420736563 \ 6F6E642E2E2E \ 00 \ 00000137 00 DC8 0 \ 00000138 50696E67204E DC8 "Ping None" \ 6F6E6500 \ 00000142 0000 DC8 0, 0 \ 00000144 C2E2E5E4E8F2 DC8 "\302\342\345\344\350\362\345 UIN/\357\340\360\356\353\374!" \ E52055494E2F \ EFE0F0EEEBFC \ 2100 \ 00000158 50696E673A20 DC8 "Ping: %d sec" \ 256420736563 \ 00 \ 00000165 000000 DC8 0, 0, 0 \ 00000168 50696E672025 DC8 "Ping %d-%d seconds!" \ 642D25642073 \ 65636F6E6473 \ 2100 \ 0000017C 4D534725643A DC8 "MSG%d: %s" \ 20257300 \ 00000186 0000 DC8 0, 0 \ 00000188 75696E256400 DC8 "uin%d" \ 0000018E 0000 DC8 0, 0 \ 00000190 4552523A2025 DC8 "ERR: %s" \ 7300 \ 00000198 534325643A20 DC8 "SC%d: %04X" \ 2530345800 \ 000001A3 00 DC8 0 \ 000001A4 426164207061 DC8 "Bad packet" \ 636B657400 \ 000001AF 00 DC8 0 \ 000001B0 D1E5F0E2E5F0 DC8 "\321\345\360\342\345\360 \355\345 \355\340\351\344\345\355!" \ 20EDE520EDE0 \ E9E4E5ED2100 \ 000001C2 0000 DC8 0, 0 \ 000001C4 CDE5E2EEE7EC DC8 "\315\345\342\356\347\354\356\346\355\356 \361\356\347\344\340\362\374 \361\356\352\345\362, \357\345\360\345\347\340\357\363\361\352 GPRS!" \ EEE6EDEE20F1 \ EEE7E4E0F2FC \ 20F1EEEAE5F2 \ 2C20EFE5F0E5 \ E7E0EFF3F1EA \ 204750525321 \ 00 \ 000001EF 00 DC8 0 \ 000001F0 CDE5E2EEE7EC DC8 "\315\345\342\356\347\354\356\346\355\356 \357\356\344\352\353\376\367\350\362\374\361\377!" \ EEE6EDEE20EF \ EEE4EAEBFEF7 \ E8F2FCF1FF21 \ 00 \ 00000209 000000 DC8 0, 0, 0 \ 0000020C 444E52204F6B DC8 "DNR Ok, connecting..." \ 2C20636F6E6E \ 656374696E67 \ 2E2E2E00 \ 00000222 0000 DC8 0, 0 \ 00000224 444E52204552 DC8 "DNR ERROR %d!" \ 524F52202564 \ 2100 \ 00000232 0000 DC8 0, 0 \ 00000234 53656E642044 DC8 "Send DNR..." \ 4E522E2E2E00 \ 00000240 0A436F6E6E65 DC8 "\012Connect by IP!" \ 637420627920 \ 49502100 \ 00000250 436F6E6E6563 DC8 "Connect to %s:%d" \ 7420746F2025 \ 733A256400 \ 00000261 000000 DC8 0, 0, 0 \ 00000264 57616974696E DC8 "Waiting for GPRS up..." \ 6720666F7220 \ 475052532075 \ 702E2E2E00 \ 0000027B 00 DC8 0 \ 0000027C 44656661756C DC8 "Default show time" \ 742073686F77 \ 2074696D6500 \ 0000028E 0000 DC8 0, 0 \ 00000290 44656661756C DC8 "Default show x-status" \ 742073686F77 \ 20782D737461 \ 74757300 \ 000002A6 0000 DC8 0, 0 \ 000002A8 416C6C206368 DC8 "All chat clear!" \ 617420636C65 \ 61722100 \ 000002B8 566962726120 DC8 "Vibra rem Off" \ 72656D204F66 \ 6600 \ 000002C6 0000 DC8 0, 0 \ 000002C8 566962726120 DC8 "Vibra rem On" \ 72656D204F6E \ 00 \ 000002D5 000000 DC8 0, 0, 0 \ 000002D8 C8EDE2E8E720 DC8 "\310\355\342\350\347 \342\373\352\353\376\367\345\355" \ E2FBEAEBFEF7 \ E5ED00 \ 000002E7 00 DC8 0 \ 000002E8 C8EDE2E8E720 DC8 "\310\355\342\350\347 \342\352\353\376\367\345\355" \ E2EAEBFEF7E5 \ ED00 \ 000002F6 0000 DC8 0, 0 \ 000002F8 566962726120 DC8 "Vibra Off" \ 4F666600 \ 00000302 0000 DC8 0, 0 \ 00000304 566962726120 DC8 "Vibra On" \ 4F6E00 \ 0000030D 000000 DC8 0, 0, 0 \ 00000310 536F756E6420 DC8 "Sound Off" \ 4F666600 \ 0000031A 0000 DC8 0, 0 \ 0000031C 536F756E6420 DC8 "Sound 0n" \ 306E00 \ 00000325 000000 DC8 0, 0, 0 \ 00000328 2025733A2025 DC8 " %s: %02d:%02d:%02d" \ 3032643A2530 \ 32643A253032 \ 6400 \ 0000033C 537461747573 DC8 "Status change" \ 206368616E67 \ 6500 \ 0000034A 0000 DC8 0, 0 \ 0000034C 5B25733A2025 DC8 "[%s: %s]\012" \ 735D0A00 \ 00000356 0000 DC8 0, 0 \ ipc_my_name: \ 00000358 4E6174494351 DC8 "NatICQ" \ 00 \ 0000035F 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 0000036F 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000 \ ipc_xtask_name: \ 00000378 585461736B00 DC8 "XTask" \ 0000037E 0000 DC8 0, 0 \ x_status_change: \ 00000380 582D53746174 DC8 "X-Status change" \ 757320636861 \ 6E676500 \ gui_methods: \ 00000390 ............ DC32 method0, method1, method2, method3, method4, method5, 0H \ ............ \ ............ \ ............ \ 00000000 \ 000003AC ............ 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 `?`, `?` \ .... \ 00000070 ............ DC32 `?`, `?` \ .... \ 00000078 ............ DC32 `?`, `?` \ .... \ 00000080 ........ DC32 `?` \ In segment DATA_C, align 4, align-sorted \ input_awaymsg_desc: \ 00000000 01000000.... DC32 1, input_awaymsg_onkey, input_awaymsg_ghook, input_awaymsg_locret \ ............ \ ........ \ 00000010 00000000.... DC32 0, input_awaymsg_skt \ .... \ 00000018 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000020 080000006400 DC32 8, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ input_awaymsg_hdr: \ 00000038 000000008300 DC16 0, 0, 131, 21 \ 1500 \ 00000040 00000000.... DC32 0H, `?`: \ 00000000 5B565D00 DC8 "[V]" \ percent_t: \ 00000004 257400 DC8 "%t" \ empty_str: \ 00000007 00 DC8 "" \ 00000008 5B56725D00 DC8 "[Vr]" \ 0000000D 000000 DC8 0, 0, 0 \ 00000010 53746174653A DC8 53H, 74H, 61H, 74H, 65H, 3AH, 20H, 25H \ 2025 \ 00000018 642C20525873 DC8 64H, 2CH, 20H, 52H, 58H, 73H, 74H, 61H \ 7461 \ 00000020 74653A202564 DC8 74H, 65H, 3AH, 20H, 25H, 64H, 0AH, 52H \ 0A52 \ 00000028 783A2564622C DC8 78H, 3AH, 25H, 64H, 62H, 2CH, 54H, 78H \ 5478 \ 00000030 3A2564620A51 DC8 3AH, 25H, 64H, 62H, 0AH, 51H, 75H, 65H \ 7565 \ 00000038 75653A202564 DC8 75H, 65H, 3AH, 20H, 25H, 64H, 62H, 0AH \ 620A \ 00000040 25730A257300 DC8 25H, 73H, 0AH, 25H, 73H, 0 \ 00000046 0000 DC8 0, 0 \ 00000048 53746174653A DC8 "State: %d, RXstate: %d" \ 2025642C2052 \ 587374617465 \ 3A20256400 \ 0000005F 00 DC8 0 \ 00000060 0A4C6F616465 DC8 "\012Loaded %d smiles" \ 642025642073 \ 6D696C657300 \ 00000072 0000 DC8 0, 0 \ 00000074 0A4C6F616465 DC8 "\012Loaded %d xstatus" \ 642025642078 \ 737461747573 \ 00 \ 00000087 00 DC8 0 \ 00000088 55696E3A2025 DC8 "Uin: %d" \ 6400 \ 00000090 4F6E6C696E65 DC8 "Online: %02d:%02d:%02d not action %d sec" \ 3A2025303264 \ 3A253032643A \ 253032642020 \ 206E6F742061 \ 6374696F6E20 \ 256420736563 \ 00 \ 000000BB 00 DC8 0 \ 000000BC 4F66666C696E DC8 "Offline [%02d:%02d:%02d]" \ 65205B253032 \ 643A25303264 \ 3A253032645D \ 00 \ 000000D5 000000 DC8 0, 0, 0 \ 000000D8 4578697400 DC8 "Exit" \ 000000DD 000000 DC8 0, 0, 0 \ 000000E0 434C69737400 DC8 "CList" \ 000000E6 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ def_setting: \ 00000000 25736465665F DC8 "%sdef_settings_mod_%d" \ 73657474696E \ 67735F6D6F64 \ 5F256400 \ 00000016 0000 DC8 0, 0 \ def_sett: \ 00000018 25736465665F DC8 "%sdef_statusset_mod_%d" \ 737461747573 \ 7365745F6D6F \ 645F256400 \ 0000002F 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5B413A25735D DC8 "[A:%s]" \ 00 \ 00000007 00 DC8 0 \ 00000008 3C4300 DC8 "` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 \ In segment DATA_C, align 4, align-sorted \ menu_skt: \ 00000000 ........0000 DC32 menu_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 46494C45204E DC8 "FILE NOT FOUND!" \ 4F5420464F55 \ 4E442100 \ 00000010 53656C656374 DC8 "Select command" \ 20636F6D6D61 \ 6E6400 \ 0000001F 00 DC8 0 \ 00000020 08000000.... DC32 8, CmdMenuKeyHook, CmdMenuGHook, 0H, CmdSoftkeys, cmd_Back_skt, 16 \ ............ \ 00000000.... \ ............ \ 10000000 \ 0000003C ........0000 DC32 CmdMenuItemHandler, 0H, 0H, 0 \ 000000000000 \ 00000000 \ In segment DATA_C, align 4, align-sorted \ menutext: \ 00000000 ........ DC32 `?` \ 00000008 ........ DC32 `?` \ 0000000C ........ DC32 `?` \ 00000024 00000000 DC8 0, 0, 0, 0 \ 00000028 2820CDE5E4EE DC8 "( \315\345\344\356\361\362\363\357\345\355 \357\360\350\354\345\360\355\356 \361 %02d:%02d [%s] )" \ F1F2F3EFE5ED \ 20EFF0E8ECE5 \ F0EDEE20F120 \ 253032643A25 \ 303264205B25 \ 735D202900 \ 00000051 000000 DC8 0, 0, 0 \ 00000054 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 \ 0000007D 000000 DC8 0, 0, 0 \ 00000080 253032643A25 DC8 "%02d:%02d" \ 30326400 \ 0000008A 0000 DC8 0, 0 \ 0000008C CCE5EDFE20EA DC8 "\314\345\355\376 \352\356\355\362\340\352\362\340 \"%s\"" \ EEEDF2E0EAF2 \ E02022257322 \ 00 \ 0000009F 00 DC8 0 \ 000000A0 CEF4F4EBE0E9 DC8 "\316\364\364\353\340\351\355" \ ED00 \ 000000A8 CDE5F220F5F1 DC8 "\315\345\362 \365\361\362\340\362\363\361\340" \ F2E0F2F3F1E0 \ 00 \ 000000B5 000000 DC8 0, 0, 0 \ 000000B8 513A20256420 DC8 "Q: %d b" \ 6200 \ 000000C0 5B543A256462 DC8 "[T:%db/Q:%db]\012" \ 2F513A256462 \ 5D0A00 \ 000000CF 00 DC8 0 \ 000000D0 5B543A256462 DC8 "[T:%db]\012" \ 5D0A00 \ 000000D9 000000 DC8 0, 0, 0 \ 000000DC CEF8E8E1EAE0 DC8 "\316\370\350\341\352\340" \ 00 \ 000000E3 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ clrSelect: \ 00000000 FF000020 DC8 255, 0, 0, 32 \ In segment DATA_C, align 4, align-sorted \ fntSelect: \ 00000000 FFFF0060 DC8 255, 255, 0, 96 \ In segment DATA_C, align 4, align-sorted \ bordSelect: \ 00000000 00000060 DC8 0, 0, 0, 96 \ In segment DATA_C, align 4, align-sorted \ clrNotSelect: \ 00000000 00000000 DC8 0, 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ bordNotSelect: \ 00000000 00000000 DC8 0, 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ fntNotSelect: \ 00000000 FFFFFF60 DC8 255, 255, 255, 96 \ In segment DATA_C, align 4, align-sorted \ I_gui_methods: \ 00000000 ............ DC32 I_OnRedraw, I_onCreate, I_onClose, I_onFocus, I_onUnfocus, I_OnKey \ ............ \ ............ \ ............ \ 00000018 00000000.... DC32 0H, kill_data, I_method8, I_method9, 0H \ ............ \ ........0000 \ 0000 \ In segment DATA_C, align 1, align-sorted \ _t: \ 00000000 257400 DC8 "%t" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ gui_methods2: \ 00000008 ............ DC32 OnRedraw, onCreate, onClose, onFocus, onUnfocus, OnKey, 0H \ ............ \ ............ \ ............ \ 00000000 \ 00000024 ............ DC32 kill_data, method28, method29, 0H \ ............ \ 00000000 6453 unsigned int *errornumber; \ In segment CODE, align 4, keep-with-next 6454 void maincsm_oncreate(CSM_RAM *data) 6455 { \ maincsm_oncreate: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 40DF4DE2 SUB SP,SP,#+256 \ 00000008 0050A0E1 MOV R5,R0 6456 MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI)); \ 0000000C 4000A0E3 MOV R0,#+64 \ 00000010 140000EF SWI +20 \ 00000014 0060A0E1 MOV R6,R0 6457 MAIN_CSM*csm=(MAIN_CSM*)data; 6458 zeromem(main_gui,sizeof(MAIN_GUI)); \ 00000018 4010A0E3 MOV R1,#+64 \ 0000001C 1D0100EF SWI +285 6459 patch_rect((RECT*)&Canvas,0,0,ScreenW()-1,ScreenH()-1); \ 00000020 898100EF SWI +33161 \ 00000024 0040A0E1 MOV R4,R0 \ 00000028 888100EF SWI +33160 \ 0000002C 011044E2 SUB R1,R4,#+1 \ 00000030 F4409FE5 LDR R4,??maincsm_oncreate_0 ;; Canvas \ 00000034 010040E2 SUB R0,R0,#+1 \ 00000038 0070A0E3 MOV R7,#+0 \ 0000003C 007084E5 STR R7,[R4, #+0] \ 00000040 B400C4E1 STRH R0,[R4, #+4] \ 00000044 B610C4E1 STRH R1,[R4, #+6] 6460 main_gui->gui.canvas=(void *)(&Canvas); \ 00000048 004086E5 STR R4,[R6, #+0] 6461 // main_gui->gui.flag30=2; 6462 main_gui->gui.methods=(void *)gui_methods; \ 0000004C E40F84E2 ADD R0,R4,#+912 \ 00000050 040086E5 STR R0,[R6, #+4] 6463 main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr(); \ 00000054 158000EF SWI +32789 \ 00000058 200086E5 STR R0,[R6, #+32] 6464 csm->csm.state=0; \ 0000005C 107085E5 STR R7,[R5, #+16] 6465 csm->csm.unk1=0; \ 00000060 147085E5 STR R7,[R5, #+20] 6466 maingui_id=csm->gui_id=CreateGUI(main_gui); \ 00000064 0600A0E1 MOV R0,R6 \ 00000068 370100EF SWI +311 \ 0000006C 280085E5 STR R0,[R5, #+40] \ 00000070 ........ LDR R5,??DataTable264 ;; i_rc \ 00000074 F80285E5 STR R0,[R5, #+760] 6467 ews=AllocWS(16384); \ 00000078 400CA0E3 MOV R0,#+16384 \ 0000007C 250100EF SWI +293 \ 00000080 A00385E5 STR R0,[R5, #+928] 6468 // MutexCreate(&contactlist_mtx); 6469 DNR_TRIES=3; \ 00000084 0300A0E3 MOV R0,#+3 \ 00000088 3C0485E5 STR R0,[R5, #+1084] 6470 // SUBPROC((void *)InitSmiles); 6471 // SUBPROC((void *)create_connect); 6472 wsBuffer=AllocWS(4096); \ 0000008C 400DA0E3 MOV R0,#+4096 \ 00000090 250100EF SWI +293 6473 char fullname[256]; 6474 snprintf(fullname,127,"%s\\logs.txt",TEMPLATES_PATH); \ 00000094 ........ LDR R3,??DataTable254 ;; TEMPLATES_PATH \ 00000098 B80285E5 STR R0,[R5, #+696] \ 0000009C 2C2084E2 ADD R2,R4,#+44 \ 000000A0 7F10A0E3 MOV R1,#+127 \ 000000A4 0D00A0E1 MOV R0,SP \ 000000A8 1B0100EF SWI +283 6475 unlink(fullname,errornumber); \ 000000AC A41495E5 LDR R1,[R5, #+1188] \ 000000B0 0D00A0E1 MOV R0,SP \ 000000B4 6B0100EF SWI +363 6476 OneSecTmr(); \ 000000B8 ........ BL OneSecTmr 6477 StatusToIMGHDR(); \ 000000BC ........ BL StatusToIMGHDR 6478 /* 6479 if(ParseUINS()!=0) 6480 { 6481 USE_ADD_UIN=1; 6482 InitXStatusesImg(); 6483 }*/ 6484 6485 GBS_StartTimerProc(&tmr_active,TMR_SECOND*10,process_active_timer); \ 000000C0 ........ LDR R2,??DataTable255 ;; process_active_timer \ 000000C4 871EA0E3 MOV R1,#+2160 \ 000000C8 7A0D85E2 ADD R0,R5,#+7808 \ 000000CC 4D0000EF SWI +77 6486 6487 // if(!USE_ADD_UIN) 6488 // { 6489 sprintf((char *)ipc_my_name+6,percent_d,UIN); \ 000000D0 ........ LDR R0,??DataTable288 ;; UIN \ 000000D4 0B1084E2 ADD R1,R4,#+11 \ 000000D8 002090E5 LDR R2,[R0, #+0] \ 000000DC 5E00A0E3 MOV R0,#+94 \ 000000E0 C00F80E3 ORR R0,R0,#0x300 \ 000000E4 040080E0 ADD R0,R0,R4 \ 000000E8 160000EF SWI +22 6490 gipc.name_to=ipc_my_name; \ 000000EC D60FA0E3 MOV R0,#+856 \ 000000F0 041080E0 ADD R1,R0,R4 \ 000000F4 EC1085E5 STR R1,[R5, #+236] 6491 gipc.name_from=ipc_my_name; \ 000000F8 040080E0 ADD R0,R0,R4 \ 000000FC F00085E5 STR R0,[R5, #+240] 6492 gipc.data=(void *)-1; \ 00000100 0700E0E1 MVN R0,R7 \ 00000104 F40085E5 STR R0,[R5, #+244] 6493 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_CHECK_DOUBLERUN,&gipc); \ 00000108 EC3085E2 ADD R3,R5,#+236 \ 0000010C 0120A0E3 MOV R2,#+1 \ 00000110 B010A0E3 MOV R1,#+176 \ 00000114 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000118 0900A0E3 MOV R0,#+9 \ 0000011C 420C80E3 ORR R0,R0,#0x4200 \ 00000120 000100EF SWI +256 6494 //} 6495 /* 6496 InitXStatusesImg(); 6497 //InitSmiles(); Это вызовется из InitXStatusesImg 6498 create_connect(); 6499 silenthide=1; 6500 gipc.name_to=ipc_xtask_name; 6501 gipc.name_from=ipc_my_name; 6502 gipc.data=0; 6503 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); 6504 */ 6505 } \ 00000124 40DF8DE2 ADD SP,SP,#+256 \ 00000128 F080BDE8 POP {R4-R7,PC} ;; return \ ??maincsm_oncreate_0: \ 0000012C ........ DC32 Canvas 6506 6507 /* 6508 void FreeTimers() 6509 { 6510 6511 } 6512 */ \ In segment CODE, align 4, keep-with-next 6513 void maincsm_onclose(CSM_RAM *csm) 6514 { \ maincsm_onclose: \ 00000000 10402DE9 PUSH {R4,LR} 6515 WriteDefSettings(); 6516 // FreeTimers(); 6517 GBS_DelTimer(&tmr_active); \ 00000004 ........ LDR R4,??DataTable264 ;; i_rc \ 00000008 ........ BL WriteDefSettings \ 0000000C 7A0D84E2 ADD R0,R4,#+7808 \ 00000010 8C0100EF SWI +396 6518 GBS_DelTimer(&tmr_vibra); \ 00000014 6000A0E3 MOV R0,#+96 \ 00000018 780D80E3 ORR R0,R0,#0x1E00 \ 0000001C 040080E0 ADD R0,R0,R4 \ 00000020 8C0100EF SWI +396 6519 GBS_DelTimer(&reconnect_tmr); \ 00000024 7000A0E3 MOV R0,#+112 \ 00000028 780D80E3 ORR R0,R0,#0x1E00 \ 0000002C 040080E0 ADD R0,R0,R4 \ 00000030 8C0100EF SWI +396 6520 GBS_DelTimer(&tmr_illumination); \ 00000034 5000A0E3 MOV R0,#+80 \ 00000038 780D80E3 ORR R0,R0,#0x1E00 \ 0000003C 040080E0 ADD R0,R0,R4 \ 00000040 8C0100EF SWI +396 6521 GBS_DelTimer(&tm22); \ 00000044 6000A0E3 MOV R0,#+96 \ 00000048 8C0D80E3 ORR R0,R0,#0x2300 \ 0000004C 040080E0 ADD R0,R0,R4 \ 00000050 8C0100EF SWI +396 6522 #ifdef ELKA 6523 GBS_DelTimer(&sli_tmr); \ 00000054 710D84E2 ADD R0,R4,#+7232 \ 00000058 8C0100EF SWI +396 6524 #endif 6525 GBS_DelTimer(&remind_tmr); \ 0000005C 9000A0E3 MOV R0,#+144 \ 00000060 6C0D80E3 ORR R0,R0,#0x1B00 \ 00000064 040080E0 ADD R0,R0,R4 \ 00000068 8C0100EF SWI +396 6526 GBS_DelTimer(&ping_tmr); \ 0000006C F800A0E3 MOV R0,#+248 \ 00000070 600D80E3 ORR R0,R0,#0x1800 \ 00000074 040080E0 ADD R0,R0,R4 \ 00000078 8C0100EF SWI +396 6527 GBS_DelTimer(&uptime_tmr); \ 0000007C A000A0E3 MOV R0,#+160 \ 00000080 6C0D80E3 ORR R0,R0,#0x1B00 \ 00000084 040080E0 ADD R0,R0,R4 \ 00000088 8C0100EF SWI +396 6528 GBS_DelTimer(&autoChangeStatus); \ 0000008C 6E0D84E2 ADD R0,R4,#+7040 \ 00000090 8C0100EF SWI +396 6529 #ifdef NEWSGOLD 6530 GBS_DelTimer(&tracktmr); \ 00000094 B000A0E3 MOV R0,#+176 \ 00000098 6C0D80E3 ORR R0,R0,#0x1B00 \ 0000009C 040080E0 ADD R0,R0,R4 \ 000000A0 8C0100EF SWI +396 6531 // GBS_DelTimer(&scrsTmr); 6532 #endif 6533 GBS_DelTimer(&incs2); \ 000000A4 8C0D84E2 ADD R0,R4,#+8960 \ 000000A8 8C0100EF SWI +396 6534 GBS_DelTimer(&develop); \ 000000AC 3000A0E3 MOV R0,#+48 \ 000000B0 840D80E3 ORR R0,R0,#0x2100 \ 000000B4 040080E0 ADD R0,R0,R4 \ 000000B8 8C0100EF SWI +396 6535 GBS_DelTimer(&away_tmr); \ 000000BC 7000A0E3 MOV R0,#+112 \ 000000C0 6C0D80E3 ORR R0,R0,#0x1B00 \ 000000C4 040080E0 ADD R0,R0,R4 \ 000000C8 8C0100EF SWI +396 6536 FreeWS(wsBuffer); \ 000000CC B80294E5 LDR R0,[R4, #+696] \ 000000D0 290100EF SWI +297 6537 6538 SetVibration(0); \ 000000D4 0000A0E3 MOV R0,#+0 \ 000000D8 7C0000EF SWI +124 6539 FreeTemplates(); \ 000000DC ........ BL FreeTemplates 6540 cmdFree(); \ 000000E0 ........ BL cmdFree 6541 #ifdef kluchnik 6542 FreeBotMessage(); \ 000000E4 ........ BL FreeBotMessage 6543 #endif 6544 FreeCLIST(); \ 000000E8 ........ _BLF FreeCLIST,??FreeCLIST??rA 6545 free_ICONS(); \ 000000EC ........ BL free_ICONS 6546 FreeStatusToIMGHDR(); \ 000000F0 ........ BL FreeStatusToIMGHDR 6547 FreeXStatusText(); \ 000000F4 ........ _BLF FreeXStatusText,??FreeXStatusText??rA 6548 FreeWS(ews); \ 000000F8 A00394E5 LDR R0,[R4, #+928] \ 000000FC 290100EF SWI +297 6549 SUBPROC((void *)PrintLibFree); \ 00000100 34009FE5 LDR R0,??maincsm_onclose_0 ;; PrintLibFree \ 00000104 710100EF SWI +369 6550 SUBPROC((void *)FreeSmiles); \ 00000108 30009FE5 LDR R0,??maincsm_onclose_0+0x4 ;; FreeSmiles \ 0000010C 710100EF SWI +369 6551 SUBPROC((void *)FreeXStatusesImg); \ 00000110 2C009FE5 LDR R0,??maincsm_onclose_0+0x8 ;; FreeXStatusesImg \ 00000114 710100EF SWI +369 6552 // FreeXStatusesImg(); 6553 RemoveKeybMsgHook((void *)my_keyhook); \ 00000118 ........ LDR R0,??DataTable258 ;; my_keyhook \ 0000011C 2D0100EF SWI +301 6554 SUBPROC((void *)end_socket); \ 00000120 ........ LDR R0,??DataTable259 ;; end_socket \ 00000124 710100EF SWI +369 6555 SUBPROC((void *)ClearSendQ); \ 00000128 ........ LDR R0,??DataTable293 ;; ClearSendQ \ 0000012C 710100EF SWI +369 6556 SUBPROC((void *)ElfKiller); \ 00000130 ........ LDR R0,??DataTable261 ;; ElfKiller \ 00000134 710100EF SWI +369 6557 } \ 00000138 1080BDE8 POP {R4,PC} ;; return \ ??maincsm_onclose_0: \ 0000013C ........ DC32 PrintLibFree \ 00000140 ........ DC32 FreeSmiles \ 00000144 ........ DC32 FreeXStatusesImg 6558 \ In segment CODE, align 4, keep-with-next 6559 void do_reconnect(void) 6560 { 6561 if (is_gprs_online) \ do_reconnect: \ 00000000 ........ LDR R0,??DataTable264 ;; i_rc \ 00000004 00402DE9 PUSH {LR} \ 00000008 141490E5 LDR R1,[R0, #+1044] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0080BD08 POPEQ {PC} 6562 { 6563 DNR_TRIES=3; \ 00000014 0310A0E3 MOV R1,#+3 \ 00000018 3C1480E5 STR R1,[R0, #+1084] 6564 SUBPROC((void*)create_connect); \ 0000001C ........ LDR R0,??DataTable263 ;; create_connect \ 00000020 710100EF SWI +369 6565 } 6566 } \ 00000024 0080BDE8 POP {PC} ;; return 6567 \ In segment CODE, align 4, keep-with-next 6568 void CheckDoubleRun(void) 6569 { \ CheckDoubleRun: \ 00000000 10402DE9 PUSH {R4,LR} 6570 int csm_id; 6571 if ((csm_id=(int)(gipc.data))!=-1) \ 00000004 ........ LDR R4,??DataTable264 ;; i_rc \ 00000008 F40094E5 LDR R0,[R4, #+244] \ 0000000C 010070E3 CMN R0,#+1 \ 00000010 1100000A BEQ ??CheckDoubleRun_0 6572 { 6573 gipc.name_to=ipc_xtask_name; \ 00000014 ........ LDR R1,??DataTable267 ;; Canvas 6574 gipc.name_from=ipc_my_name; 6575 gipc.data=(void *)csm_id; \ 00000018 F40084E5 STR R0,[R4, #+244] \ 0000001C DE2F81E2 ADD R2,R1,#+888 \ 00000020 EC2084E5 STR R2,[R4, #+236] \ 00000024 D61F81E2 ADD R1,R1,#+856 \ 00000028 F01084E5 STR R1,[R4, #+240] 6576 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc); \ 0000002C EC3084E2 ADD R3,R4,#+236 \ 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 6577 LockSched(); \ 00000048 460100EF SWI +326 6578 CloseCSM(maincsm_id); \ 0000004C F40294E5 LDR R0,[R4, #+756] \ 00000050 FC0100EF SWI +508 6579 //ShowMSG(1,(int)LG_ALREADY_STARTED); 6580 UnlockSched(); \ 00000054 470100EF SWI +327 \ 00000058 1080BDE8 POP {R4,PC} 6581 } 6582 else 6583 // if(!USE_ADD_UIN) 6584 { 6585 InitXStatusesImg(); \ ??CheckDoubleRun_0: \ 0000005C ........ _BLF InitXStatusesImg,??InitXStatusesImg??rA 6586 //InitSmiles(); Это вызовется из InitXStatusesImg 6587 create_connect(); \ 00000060 ........ BL create_connect 6588 } 6589 /*else 6590 { 6591 InitXStatusesImg(); 6592 USE_ADD_UIN=1; 6593 }*/ 6594 6595 } \ 00000064 1080BDE8 POP {R4,PC} ;; return 6596 6597 6598 6599 //------------------------------------------------------------// 6600 \ In segment CODE, align 4, keep-with-next 6601 int checkGui(int id) 6602 { \ checkGui: \ 00000000 10402DE9 PUSH {R4,LR} 6603 int retval = 0; \ 00000004 0040A0E3 MOV R4,#+0 6604 if (IsGuiOnTop(id)) \ 00000008 350100EF SWI +309 \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0600000A BEQ ??checkGui_0 6605 { 6606 GUI* igui = GetTopGUI(); 6607 if (igui) \ 00000014 4D0100EF SWI +333 \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0300000A BEQ ??checkGui_0 6608 { 6609 #ifdef ELKA 6610 canvasdata = BuildCanvas(); \ 00000020 F18000EF SWI +33009 \ 00000024 0C109FE5 LDR R1,??checkGui_1 ;; i_rc + 688 6611 retval = 1; \ 00000028 0140A0E3 MOV R4,#+1 \ 0000002C 000081E5 STR R0,[R1, #+0] 6612 #else 6613 void *idata = GetDataOfItemByID(igui, 2); 6614 if (idata) 6615 { 6616 canvasdata = ((void **)idata)[DISPLACE_OF_IDLECANVAS / 4]; 6617 retval = 1; 6618 } 6619 #endif 6620 } 6621 } 6622 return retval; \ ??checkGui_0: \ 00000030 0400A0E1 MOV R0,R4 \ 00000034 1080BDE8 POP {R4,PC} ;; return \ ??checkGui_1: \ 00000038 ........ DC32 i_rc + 688 6623 } 6624 6625 6626 //-------------------------------------------------------------// 6627 #define IPC_GAME 7 6628 6629 typedef struct{ 6630 unsigned long uin; 6631 char *msg; 6632 }IPCmsg; 6633 \ In segment CODE, align 4, keep-with-next 6634 int maincsm_onmessage(CSM_RAM *data,GBS_MSG *msg) 6635 { \ maincsm_onmessage: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} 6636 6637 #ifdef ELKA 6638 if (total_unread) SLI_On(); \ 00000004 ........ LDR R5,??DataTable294 ;; i_rc \ 00000008 1CD04DE2 SUB SP,SP,#+28 \ 0000000C 180495E5 LDR R0,[R5, #+1048] \ 00000010 0140A0E1 MOV R4,R1 \ 00000014 000050E3 CMP R0,#+0 \ 00000018 0000000A BEQ ??maincsm_onmessage_2 \ 0000001C ........ BL SLI_On 6639 #endif 6640 // char ss[100]; 6641 MAIN_CSM *csm=(MAIN_CSM*)data; 6642 { 6643 //IPC 6644 if (msg->msg==MSG_IPC) \ ??maincsm_onmessage_2: \ 00000020 ........ LDR R6,??DataTable267 ;; Canvas \ 00000024 A010A0E3 MOV R1,#+160 \ 00000028 781D81E3 ORR R1,R1,#0x1E00 \ 0000002C 051081E0 ADD R1,R1,R5 \ 00000030 00108DE5 STR R1,[SP, #+0] \ 00000034 040094E5 LDR R0,[R4, #+4] \ 00000038 0070A0E3 MOV R7,#+0 \ 0000003C B010A0E3 MOV R1,#+176 \ 00000040 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000044 010050E1 CMP R0,R1 \ 00000048 9600001A BNE ??maincsm_onmessage_3 6645 { 6646 IPC_REQ *ipc; 6647 if ((ipc=(IPC_REQ*)msg->data0)) \ 0000004C 0C8094E5 LDR R8,[R4, #+12] \ 00000050 000058E3 CMP R8,#+0 \ 00000054 9300000A BEQ ??maincsm_onmessage_3 6648 { 6649 if (strcmp_nocase(ipc->name_to,ipc_my_name)==0) \ 00000058 000098E5 LDR R0,[R8, #+0] \ 0000005C D69FA0E3 MOV R9,#+856 \ 00000060 061089E0 ADD R1,R9,R6 \ 00000064 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 00000068 000050E3 CMP R0,#+0 \ 0000006C 8D00001A BNE ??maincsm_onmessage_3 6650 { 6651 switch (msg->submess) \ 00000070 081094E5 LDR R1,[R4, #+8] \ 00000074 040098E5 LDR R0,[R8, #+4] \ 00000078 011041E2 SUB R1,R1,#+1 \ 0000007C 050051E3 CMP R1,#+5 \ 00000080 8800008A BHI ??maincsm_onmessage_3 \ 00000084 012F8FE2 ADR R2,??maincsm_onmessage_0 \ 00000088 0120D2E7 LDRB R2,[R2, R1] \ 0000008C 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??maincsm_onmessage_0: \ 00000090 010A1447 DC8 +1,+10,+20,+71 \ 00000094 85190000 DC8 +133,+25,+0,+0 6652 { 6653 case IPC_CHECK_DOUBLERUN: 6654 //Если приняли свое собственное сообщение, значит запускаем чекер 6655 if (ipc->name_from==ipc_my_name) SUBPROC((void *)CheckDoubleRun); \ ??maincsm_onmessage_4: \ 00000098 061089E0 ADD R1,R9,R6 \ 0000009C 010050E1 CMP R0,R1 \ 000000A0 0200001A BNE ??maincsm_onmessage_5 \ 000000A4 0C0B9FE5 LDR R0,??maincsm_onmessage_6 ;; CheckDoubleRun \ 000000A8 710100EF SWI +369 \ 000000AC 7D0000EA B ??maincsm_onmessage_3 6656 else ipc->data=(void *)maincsm_id; \ ??maincsm_onmessage_5: \ 000000B0 F40295E5 LDR R0,[R5, #+756] \ 000000B4 080088E5 STR R0,[R8, #+8] \ 000000B8 7A0000EA B ??maincsm_onmessage_3 6657 break; 6658 case IPC_SMILE_PROCESSED: 6659 //Только собственные смайлы ;) 6660 if (ipc->name_from==ipc_my_name) SUBPROC((void *)ProcessNextSmile); \ ??maincsm_onmessage_7: \ 000000BC 061089E0 ADD R1,R9,R6 \ 000000C0 010050E1 CMP R0,R1 \ 000000C4 0100001A BNE ??maincsm_onmessage_8 \ 000000C8 EC0A9FE5 LDR R0,??maincsm_onmessage_6+0x4 ;; ProcessNextSmile \ ??maincsm_onmessage_9: \ 000000CC 710100EF SWI +369 6661 if(ShowLoadScreen) SMART_REDRAW(); \ ??maincsm_onmessage_8: \ 000000D0 480495E5 LDR R0,[R5, #+1096] \ ??maincsm_onmessage_10: \ 000000D4 000050E3 CMP R0,#+0 \ 000000D8 7200000A BEQ ??maincsm_onmessage_3 \ ??maincsm_onmessage_11: \ 000000DC ........ BL SMART_REDRAW \ 000000E0 700000EA B ??maincsm_onmessage_3 6662 // zeromem(logmsg2,256); 6663 break; 6664 case IPC_XSTATUSIMG_PROCESSED: 6665 //Только собственные иксстатусы ;) 6666 if (ipc->name_from==ipc_my_name) SUBPROC((void *)ProcessNextXStatImg); \ ??maincsm_onmessage_12: \ 000000E4 061089E0 ADD R1,R9,R6 \ 000000E8 010050E1 CMP R0,R1 \ 000000EC F7FFFF1A BNE ??maincsm_onmessage_8 \ 000000F0 C80A9FE5 LDR R0,??maincsm_onmessage_6+0x8 ;; ProcessNextXStatImg \ 000000F4 F4FFFFEA B ??maincsm_onmessage_9 6667 if(ShowLoadScreen) SMART_REDRAW(); 6668 break; 6669 case IPC_ONESECOND: 6670 if (ipc->name_from==ipc_my_name) \ ??maincsm_onmessage_13: \ 000000F8 061089E0 ADD R1,R9,R6 \ 000000FC 010050E1 CMP R0,R1 \ 00000100 6800001A BNE ??maincsm_onmessage_3 6671 { 6672 if ((((CSM_RAM *)(CSM_root()->csm_q->csm.last))->id!=maincsm_id) && _to_develop) \ 00000104 068100EF SWI +33030 \ 00000108 080090E5 LDR R0,[R0, #+8] \ 0000010C F41295E5 LDR R1,[R5, #+756] \ 00000110 0C0090E5 LDR R0,[R0, #+12] \ 00000114 0C0090E5 LDR R0,[R0, #+12] \ 00000118 010050E1 CMP R0,R1 \ 0000011C A0049515 LDRNE R0,[R5, #+1184] \ 00000120 00005013 CMPNE R0,#+0 \ 00000124 0000000A BEQ ??maincsm_onmessage_14 6673 to_develop(); \ 00000128 ........ BL to_develop 6674 _to_develop=0; 6675 //if(!(--on_off_timer)) on_off_timer=0;//таймер показа подключившихся/отключившихся 6676 if(on_off_timer>0) \ ??maincsm_onmessage_14: \ 0000012C 2C0495E5 LDR R0,[R5, #+1068] \ 00000130 A07485E5 STR R7,[R5, #+1184] \ 00000134 010050E3 CMP R0,#+1 \ 00000138 020000BA BLT ??maincsm_onmessage_15 6677 { 6678 on_off_timer--; \ 0000013C 010040E2 SUB R0,R0,#+1 \ 00000140 2C0485E5 STR R0,[R5, #+1068] 6679 SMART_REDRAW(); \ 00000144 E4FFFFEA B ??maincsm_onmessage_11 6680 break; 6681 } 6682 else 6683 if(on_off_timer!=-1) \ ??maincsm_onmessage_15: \ 00000148 010070E3 CMN R0,#+1 \ 0000014C 0500000A BEQ ??maincsm_onmessage_16 6684 { 6685 on_off_timer=-1; \ 00000150 0700E0E1 MVN R0,R7 \ 00000154 2C0485E5 STR R0,[R5, #+1068] 6686 zeromem(on_off_buf,128); \ 00000158 00009DE5 LDR R0,[SP, #+0] \ 0000015C 8010A0E3 MOV R1,#+128 \ 00000160 1D0100EF SWI +285 6687 SMART_REDRAW(); \ 00000164 ........ BL SMART_REDRAW 6688 // UpdateCLheader(); 6689 } 6690 6691 if(PrintTimer>0) \ ??maincsm_onmessage_16: \ 00000168 C40295E5 LDR R0,[R5, #+708] \ 0000016C 010050E3 CMP R0,#+1 \ 00000170 020000BA BLT ??maincsm_onmessage_17 6692 { 6693 PrintTimer--; \ 00000174 010040E2 SUB R0,R0,#+1 \ 00000178 C40285E5 STR R0,[R5, #+708] 6694 SMART_REDRAW(); \ 0000017C ........ BL SMART_REDRAW 6695 } 6696 6697 int f=0; 6698 CLIST *t=(CLIST*)cltop; \ ??maincsm_onmessage_17: \ 00000180 1C1495E5 LDR R1,[R5, #+1052] \ 00000184 0000A0E3 MOV R0,#+0 \ 00000188 030000EA B ??maincsm_onmessage_18 6699 while(t && !f) 6700 { 6701 if(t->just_now) f=1; \ ??maincsm_onmessage_19: \ 0000018C 742091E5 LDR R2,[R1, #+116] 6702 t=t->next; \ 00000190 001091E5 LDR R1,[R1, #+0] \ 00000194 000052E3 CMP R2,#+0 \ 00000198 0100A013 MOVNE R0,#+1 6703 } \ ??maincsm_onmessage_18: \ 0000019C 000051E3 CMP R1,#+0 \ 000001A0 CBFFFF0A BEQ ??maincsm_onmessage_10 \ 000001A4 000050E3 CMP R0,#+0 \ 000001A8 F7FFFF0A BEQ ??maincsm_onmessage_19 6704 6705 if(f) MyRedraw(); \ 000001AC C8FFFFEA B ??maincsm_onmessage_10 6706 } 6707 break; 6708 case IPC_TENSECONDS: 6709 //Только свое сообщение 6710 if (ipc->name_from==ipc_my_name) \ ??maincsm_onmessage_20: \ 000001B0 061089E0 ADD R1,R9,R6 \ 000001B4 010050E1 CMP R0,R1 \ 000001B8 3A00001A BNE ??maincsm_onmessage_3 6711 { 6712 CLIST *t=(CLIST *)cltop; 6713 int f=0; 6714 if(main_msg_timer2!=0) main_msg_timer2--; else main_msg_timer2=0; \ 000001BC 4C0495E5 LDR R0,[R5, #+1100] \ 000001C0 1C8495E5 LDR R8,[R5, #+1052] \ 000001C4 0090A0E3 MOV R9,#+0 \ 000001C8 000050E3 CMP R0,#+0 \ 000001CC 1B00000A BEQ ??maincsm_onmessage_21 \ 000001D0 010040E2 SUB R0,R0,#+1 \ 000001D4 4C0485E5 STR R0,[R5, #+1100] \ 000001D8 180000EA B ??maincsm_onmessage_21 6715 while(t) 6716 { 6717 if(t->just_now) \ ??maincsm_onmessage_22: \ 000001DC 740098E5 LDR R0,[R8, #+116] \ 000001E0 000050E3 CMP R0,#+0 \ 000001E4 0400000A BEQ ??maincsm_onmessage_23 6718 { 6719 if (!(--(t->just_now))){ f=1; t->just_i=0; } \ 000001E8 010050E2 SUBS R0,R0,#+1 \ 000001EC 740088E5 STR R0,[R8, #+116] \ 000001F0 0190A003 MOVEQ R9,#+1 \ 000001F4 78708805 STREQ R7,[R8, #+120] 6720 MyRedraw(); \ 000001F8 ........ BL SMART_REDRAW 6721 } 6722 if (t->isactive) \ ??maincsm_onmessage_23: \ 000001FC AC0098E5 LDR R0,[R8, #+172] \ 00000200 000050E3 CMP R0,#+0 \ 00000204 0C00000A BEQ ??maincsm_onmessage_24 6723 { 6724 if (!(--(t->isactive))) \ 00000208 010050E2 SUBS R0,R0,#+1 \ 0000020C AC0088E5 STR R0,[R8, #+172] \ 00000210 0900001A BNE ??maincsm_onmessage_24 6725 { 6726 f=1; //Если дошли до 0 хотя бы один раз - надо перерисовать меню 6727 if ((t->log)&&(!t->isunread)) \ 00000214 A00098E5 LDR R0,[R8, #+160] \ 00000218 0190A0E3 MOV R9,#+1 \ 0000021C 000050E3 CMP R0,#+0 \ 00000220 0500000A BEQ ??maincsm_onmessage_24 \ 00000224 900098E5 LDR R0,[R8, #+144] \ 00000228 000050E3 CMP R0,#+0 \ 0000022C 0200001A BNE ??maincsm_onmessage_24 6728 { 6729 FreeLOGQ(&t->log); \ 00000230 A00088E2 ADD R0,R8,#+160 \ 00000234 ........ BL FreeLOGQ 6730 t->msg_count=0; \ 00000238 B07088E5 STR R7,[R8, #+176] 6731 } 6732 } 6733 } 6734 t=(CLIST *)(t->next); \ ??maincsm_onmessage_24: \ 0000023C 008098E5 LDR R8,[R8, #+0] 6735 } \ ??maincsm_onmessage_21: \ 00000240 000058E3 CMP R8,#+0 \ 00000244 E4FFFF1A BNE ??maincsm_onmessage_22 6736 6737 if (f) \ 00000248 000059E3 CMP R9,#+0 \ 0000024C 0A00000A BEQ ??maincsm_onmessage_25 6738 { 6739 CLIST *oldt=NULL; 6740 if (contactlist_menu_id) \ 00000250 FC1295E5 LDR R1,[R5, #+764] \ 00000254 0000A0E3 MOV R0,#+0 \ 00000258 000051E3 CMP R1,#+0 \ 0000025C 0400000A BEQ ??maincsm_onmessage_26 6741 { 6742 oldt=FindContactByN(GetCurMenuItem(FindGUIbyId(contactlist_menu_id,NULL))); \ 00000260 FC0295E5 LDR R0,[R5, #+764] \ 00000264 0010A0E3 MOV R1,#+0 \ 00000268 090200EF SWI +521 \ 0000026C 8F0100EF SWI +399 \ 00000270 ........ _BLF FindContactByN,??FindContactByN??rA 6743 } 6744 RecountMenu(oldt,1); \ ??maincsm_onmessage_26: \ 00000274 0110A0E3 MOV R1,#+1 \ 00000278 ........ BL RecountMenu 6745 } 6746 if (time_to_stop_t9) \ ??maincsm_onmessage_25: \ 0000027C 540495E5 LDR R0,[R5, #+1108] \ 00000280 000050E3 CMP R0,#+0 \ 00000284 0700000A BEQ ??maincsm_onmessage_3 6747 { 6748 if (!(--time_to_stop_t9)) \ 00000288 010050E2 SUBS R0,R0,#+1 \ 0000028C 540485E5 STR R0,[R5, #+1108] \ 00000290 0400001A BNE ??maincsm_onmessage_3 6749 { 6750 if (IsGuiOnTop(edchat_id)) RefreshGUI(); \ 00000294 240495E5 LDR R0,[R5, #+1060] \ 00000298 350100EF SWI +309 \ 0000029C 000050E3 CMP R0,#+0 \ 000002A0 0000000A BEQ ??maincsm_onmessage_3 \ 000002A4 960100EF SWI +406 6751 } 6752 } 6753 } 6754 break; 6755 /* case IPC_SENDMSG: ; //IPC_SENDMSG by BoBa 26.06.07 6756 int l=strlen(((IPCMsg *)(ipc->data))->msg); 6757 TPKT *msg=malloc(sizeof(PKT)+l+30); 6758 msg->pkt.uin=((IPCMsg *)(ipc->data))->uin; 6759 msg->pkt.type=T_SENDMSG; 6760 msg->pkt.data_len=l; 6761 memcpy(msg->data,((IPCMsg *)(ipc->data))->msg,l); 6762 //slientsend=1; 6763 if(strstr(msg->data,PASS)==0) 6764 { 6765 SENDMSGCOUNT++; //Номер сообщения 6766 SUBPROC((void *)SendAnswer,0,msg); 6767 } 6768 else 6769 { 6770 msg->pkt.data_len=40; 6771 strcpy(msg->data, "Fuck you hacker! my password sux ur ass"); 6772 SENDMSGCOUNT++; //Номер сообщения 6773 SUBPROC((void *)SendAnswer,0,msg); 6774 } 6775 break;*/ 6776 } 6777 } 6778 } 6779 } 6780 6781 /* void *icsm; 6782 icsm=FindCSMbyID(CSM_root()->idle_id); 6783 if (icsm && checkGui(idlegui_id(icsm))) 6784 { 6785 INC_show=0; 6786 canvasdata=BuildCanvas(); //void * - belyj fon! 6787 } 6788 else 6789 { 6790 main_d=1; 6791 }*/ 6792 } 6793 6794 //---------------------------------------------------// 6795 void *icsm; 6796 icsm=FindCSMbyID(CSM_root()->idle_id); 6797 if (icsm && checkGui(idlegui_id(icsm))) \ ??maincsm_onmessage_3: \ 000002A8 ........ LDR R8,??DataTable313 ;; fonto \ 000002AC 068100EF SWI +33030 \ 000002B0 040090E5 LDR R0,[R0, #+4] \ 000002B4 080100EF SWI +264 \ 000002B8 000050E3 CMP R0,#+0 \ 000002BC 1C01000A BEQ ??maincsm_onmessage_27 \ 000002C0 2C0090E5 LDR R0,[R0, #+44] \ 000002C4 ........ BL checkGui \ 000002C8 000050E3 CMP R0,#+0 \ 000002CC 1801000A BEQ ??maincsm_onmessage_27 6798 { 6799 int icn; 6800 if(total_unread) \ 000002D0 180495E5 LDR R0,[R5, #+1048] \ 000002D4 000050E3 CMP R0,#+0 6801 icn=IS_MSG; \ 000002D8 0D90A013 MOVNE R9,#+13 \ 000002DC 0A00001A BNE ??maincsm_onmessage_28 6802 else 6803 { 6804 switch(connect_state) \ 000002E0 FC0395E5 LDR R0,[R5, #+1020] \ 000002E4 000050E3 CMP R0,#+0 \ 000002E8 0200000A BEQ ??maincsm_onmessage_29 \ 000002EC 030050E2 SUBS R0,R0,#+3 \ 000002F0 0200000A BEQ ??maincsm_onmessage_30 \ 000002F4 030000EA B ??maincsm_onmessage_31 6805 { 6806 case 0: 6807 icn=IS_OFFLINE; break; \ ??maincsm_onmessage_29: \ 000002F8 0090A0E3 MOV R9,#+0 \ 000002FC 020000EA B ??maincsm_onmessage_28 6808 case 3: 6809 icn=CurrentStatus; //IS_ONLINE; \ ??maincsm_onmessage_30: \ 00000300 989395E5 LDR R9,[R5, #+920] \ 00000304 000000EA B ??maincsm_onmessage_28 6810 break; 6811 default: 6812 icn=IS_UNKNOWN; break; \ ??maincsm_onmessage_31: \ 00000308 0E90A0E3 MOV R9,#+14 6813 } 6814 } 6815 6816 #ifdef NEWSGOLD 6817 if(ShowStatusIcon==0 || ShowStatusIcon==2 || ShowStatusIcon==3) //kluchnik 26.03.08 \ ??maincsm_onmessage_28: \ 0000030C ........ LDR R0,??DataTable296 ;; ShowStatusIcon \ 00000310 000090E5 LDR R0,[R0, #+0] \ 00000314 000050E3 CMP R0,#+0 \ 00000318 02005013 CMPNE R0,#+2 \ 0000031C 03005013 CMPNE R0,#+3 \ 00000320 2100001A BNE ??maincsm_onmessage_32 6818 { 6819 #endif 6820 if((IsUnlocked()) || (!IsUnlocked()) || (IsScreenSaver())) \ 00000324 430000EF SWI +67 \ 00000328 000050E3 CMP R0,#+0 \ 0000032C 0500001A BNE ??maincsm_onmessage_33 \ 00000330 430000EF SWI +67 \ 00000334 000050E3 CMP R0,#+0 \ 00000338 0200000A BEQ ??maincsm_onmessage_33 \ 0000033C 420000EF SWI +66 \ 00000340 000050E3 CMP R0,#+0 \ 00000344 1800000A BEQ ??maincsm_onmessage_32 6821 { 6822 DrawCanvas(canvasdata,IDLEICON_X,IDLEICON_Y,IDLEICON_X+GetImgWidth((int)S_ICONS[icn])-1, 6823 IDLEICON_Y+GetImgHeight((int)S_ICONS[icn])-1,1); \ ??maincsm_onmessage_33: \ 00000348 74B89FE5 LDR R11,??maincsm_onmessage_6+0xC ;; IDLEICON_Y \ 0000034C 099185E0 ADD R9,R5,R9, LSL #+2 \ 00000350 100399E5 LDR R0,[R9, #+784] \ 00000354 210000EF SWI +33 \ 00000358 00A0A0E1 MOV R10,R0 \ 0000035C 100399E5 LDR R0,[R9, #+784] \ 00000360 220000EF SWI +34 \ 00000364 5C189FE5 LDR R1,??maincsm_onmessage_6+0x10 ;; IDLEICON_X \ 00000368 00209BE5 LDR R2,[R11, #+0] \ 0000036C 001091E5 LDR R1,[R1, #+0] \ 00000370 0130A0E3 MOV R3,#+1 \ 00000374 08002DE9 PUSH {R3} \ 00000378 010080E0 ADD R0,R0,R1 \ 0000037C 02308AE0 ADD R3,R10,R2 \ 00000380 013043E2 SUB R3,R3,#+1 \ 00000384 08002DE9 PUSH {R3} \ 00000388 013040E2 SUB R3,R0,#+1 \ 0000038C B00295E5 LDR R0,[R5, #+688] \ 00000390 250000EF SWI +37 6824 DrawImg(IDLEICON_X,IDLEICON_Y,S_ICONS[icn]); \ 00000394 2C089FE5 LDR R0,??maincsm_onmessage_6+0x10 ;; IDLEICON_X \ 00000398 102399E5 LDR R2,[R9, #+784] \ 0000039C 00109BE5 LDR R1,[R11, #+0] \ 000003A0 000090E5 LDR R0,[R0, #+0] \ 000003A4 230000EF SWI +35 \ 000003A8 08D08DE2 ADD SP,SP,#+8 6825 } 6826 #ifdef NEWSGOLD 6827 } 6828 #endif 6829 /* 6830 #ifdef kluchnik 6831 if(show_xstatus==1) 6832 #else 6833 if(show_xstatus==1 || show_xstatus==3) //kluchnik 26.03.08 6834 #endif 6835 #else 6836 if(show_xstatus==1) //kluchnik 26.03.08 6837 #endif 6838 { 6839 PNGTOP_DESC *pltop=PNG_TOP(); 6840 pltop->dyn_pltop=XStatusesImgList; 6841 DisableIDLETMR(); 6842 DrawCanvas(canvasdata,IDLEICON_XX,IDLEICON_YX,IDLEICON_XX+GetImgWidth((int)XStatusesIconArray[CurrentXStatus])-1, 6843 IDLEICON_YX+GetImgHeight((int)XStatusesIconArray[CurrentXStatus])-1,1); 6844 DrawImg(IDLEICON_XX,IDLEICON_YX,XStatusesIconArray[CurrentXStatus]); 6845 }*/ 6846 6847 6848 if(IsUnlocked()) \ ??maincsm_onmessage_32: \ 000003AC 430000EF SWI +67 \ 000003B0 000050E3 CMP R0,#+0 \ 000003B4 DE00000A BEQ ??maincsm_onmessage_27 6849 { 6850 SetCanvasFlag(0); \ 000003B8 0000A0E3 MOV R0,#+0 \ 000003BC ........ _BLF SetCanvasFlag,??SetCanvasFlag??rA \ 000003C0 A80295E5 LDR R0,[R5, #+680] \ 000003C4 010050E3 CMP R0,#+1 \ 000003C8 8800001A BNE ??maincsm_onmessage_34 6851 if (main_d==1) 6852 { 6853 int spaco2=spaco1; \ 000003CC ........ LDR R0,??DataTable274 ;; spaco1 \ 000003D0 009090E5 LDR R9,[R0, #+0] 6854 if(Is_SMARTCPU_On && main_msg_timer2) \ 000003D4 F0079FE5 LDR R0,??maincsm_onmessage_6+0x14 ;; Is_SMARTCPU_On \ 000003D8 000090E5 LDR R0,[R0, #+0] \ 000003DC 000050E3 CMP R0,#+0 \ 000003E0 4C049515 LDRNE R0,[R5, #+1100] \ 000003E4 00005013 CMPNE R0,#+0 \ 000003E8 7F00000A BEQ ??maincsm_onmessage_35 6855 { 6856 if(fonto==1) \ 000003EC AC3295E5 LDR R3,[R5, #+684] \ 000003F0 D8A79FE5 LDR R10,??maincsm_onmessage_6+0x18 ;; msg_d_x \ 000003F4 D8B79FE5 LDR R11,??maincsm_onmessage_6+0x1C ;; msg_d_y \ 000003F8 841D85E2 ADD R1,R5,#+8448 \ 000003FC 14108DE5 STR R1,[SP, #+20] \ 00000400 D010A0E3 MOV R1,#+208 \ 00000404 801D81E3 ORR R1,R1,#0x2000 \ 00000408 051081E0 ADD R1,R1,R5 \ 0000040C 10108DE5 STR R1,[SP, #+16] \ 00000410 A010A0E3 MOV R1,#+160 \ 00000414 801D81E3 ORR R1,R1,#0x2000 \ 00000418 051081E0 ADD R1,R1,R5 \ 0000041C 0C108DE5 STR R1,[SP, #+12] \ 00000420 7010A0E3 MOV R1,#+112 \ 00000424 801D81E3 ORR R1,R1,#0x2000 \ 00000428 051081E0 ADD R1,R1,R5 \ 0000042C 08108DE5 STR R1,[SP, #+8] \ 00000430 00C098E5 LDR R12,[R8, #+0] \ 00000434 00009AE5 LDR R0,[R10, #+0] \ 00000438 00109BE5 LDR R1,[R11, #+0] \ 0000043C 812D85E2 ADD R2,R5,#+8256 \ 00000440 01005CE3 CMP R12,#+1 \ 00000444 2F00001A BNE ??maincsm_onmessage_36 6857 { 6858 PrintField(msg_d_x,msg_d_y, a_txt, align, fonto, spaco2); \ 00000448 09C0A0E1 MOV R12,R9 \ 0000044C 00102DE9 PUSH {R12} \ 00000450 01C0A0E3 MOV R12,#+1 \ 00000454 00102DE9 PUSH {R12} \ 00000458 ........ _BLF PrintField,??PrintField??rA 6859 PrintField(msg_d_x,msg_d_y+paused_height, s_txt, align, fonto, spaco2); \ 0000045C 0900A0E1 MOV R0,R9 \ 00000460 01002DE9 PUSH {R0} \ 00000464 000098E5 LDR R0,[R8, #+0] \ 00000468 01002DE9 PUSH {R0} \ 0000046C B41295E5 LDR R1,[R5, #+692] \ 00000470 AC3295E5 LDR R3,[R5, #+684] \ 00000474 18209DE5 LDR R2,[SP, #+24] \ 00000478 00009BE5 LDR R0,[R11, #+0] \ 0000047C 001081E0 ADD R1,R1,R0 \ 00000480 00009AE5 LDR R0,[R10, #+0] \ 00000484 ........ _BLF PrintField,??PrintField??rA 6860 PrintField(msg_d_x,msg_d_y+(2*paused_height), d_txt, align, fonto, spaco2); \ 00000488 0900A0E1 MOV R0,R9 \ 0000048C 01002DE9 PUSH {R0} \ 00000490 000098E5 LDR R0,[R8, #+0] \ 00000494 01002DE9 PUSH {R0} \ 00000498 B41295E5 LDR R1,[R5, #+692] \ 0000049C AC3295E5 LDR R3,[R5, #+684] \ 000004A0 24209DE5 LDR R2,[SP, #+36] \ 000004A4 00009BE5 LDR R0,[R11, #+0] \ 000004A8 811080E0 ADD R1,R0,R1, LSL #+1 \ 000004AC 00009AE5 LDR R0,[R10, #+0] \ 000004B0 ........ _BLF PrintField,??PrintField??rA 6861 PrintField(msg_d_x,msg_d_y+(3*paused_height), f_txt, align, fonto, spaco2); \ 000004B4 0900A0E1 MOV R0,R9 \ 000004B8 01002DE9 PUSH {R0} \ 000004BC 000098E5 LDR R0,[R8, #+0] \ 000004C0 01002DE9 PUSH {R0} \ 000004C4 B41295E5 LDR R1,[R5, #+692] \ 000004C8 AC3295E5 LDR R3,[R5, #+684] \ 000004CC 30209DE5 LDR R2,[SP, #+48] \ 000004D0 00009BE5 LDR R0,[R11, #+0] \ 000004D4 811081E0 ADD R1,R1,R1, LSL #+1 \ 000004D8 001081E0 ADD R1,R1,R0 \ 000004DC 00009AE5 LDR R0,[R10, #+0] \ 000004E0 ........ _BLF PrintField,??PrintField??rA 6862 PrintField(msg_d_x,msg_d_y+(4*paused_height), g_txt, align, fonto, spaco2); \ 000004E4 00022DE9 PUSH {R9} \ 000004E8 000098E5 LDR R0,[R8, #+0] \ 000004EC 01002DE9 PUSH {R0} \ 000004F0 B41295E5 LDR R1,[R5, #+692] \ 000004F4 AC3295E5 LDR R3,[R5, #+684] \ 000004F8 3C209DE5 LDR R2,[SP, #+60] \ 000004FC 00009BE5 LDR R0,[R11, #+0] \ 00000500 011180E0 ADD R1,R0,R1, LSL #+2 \ 00000504 350000EA B ??maincsm_onmessage_37 6863 } 6864 else 6865 { 6866 PrintField(msg_d_x,msg_d_y, a_txt, align, fonto, spaco2); \ ??maincsm_onmessage_36: \ 00000508 09E0A0E1 MOV LR,R9 \ 0000050C 00402DE9 PUSH {LR} \ 00000510 00102DE9 PUSH {R12} \ 00000514 ........ _BLF PrintField,??PrintField??rA 6867 PrintField(msg_d_x,msg_d_y+GetFontYSIZE(paused_height)+1, s_txt, align, fonto, spaco2); \ 00000518 B40295E5 LDR R0,[R5, #+692] \ 0000051C C50100EF SWI +453 \ 00000520 0910A0E1 MOV R1,R9 \ 00000524 02002DE9 PUSH {R1} \ 00000528 001098E5 LDR R1,[R8, #+0] \ 0000052C 02002DE9 PUSH {R1} \ 00000530 AC3295E5 LDR R3,[R5, #+684] \ 00000534 18209DE5 LDR R2,[SP, #+24] \ 00000538 00109BE5 LDR R1,[R11, #+0] \ 0000053C 010080E0 ADD R0,R0,R1 \ 00000540 011080E2 ADD R1,R0,#+1 \ 00000544 00009AE5 LDR R0,[R10, #+0] \ 00000548 ........ _BLF PrintField,??PrintField??rA 6868 PrintField(msg_d_x,msg_d_y+(2*GetFontYSIZE(paused_height))+2, d_txt, align, fonto, spaco2); \ 0000054C B40295E5 LDR R0,[R5, #+692] \ 00000550 C50100EF SWI +453 \ 00000554 0910A0E1 MOV R1,R9 \ 00000558 02002DE9 PUSH {R1} \ 0000055C 001098E5 LDR R1,[R8, #+0] \ 00000560 02002DE9 PUSH {R1} \ 00000564 AC3295E5 LDR R3,[R5, #+684] \ 00000568 24209DE5 LDR R2,[SP, #+36] \ 0000056C 00109BE5 LDR R1,[R11, #+0] \ 00000570 800081E0 ADD R0,R1,R0, LSL #+1 \ 00000574 021080E2 ADD R1,R0,#+2 \ 00000578 00009AE5 LDR R0,[R10, #+0] \ 0000057C ........ _BLF PrintField,??PrintField??rA 6869 PrintField(msg_d_x,msg_d_y+(3*GetFontYSIZE(paused_height))+3, f_txt, align, fonto, spaco2); \ 00000580 B40295E5 LDR R0,[R5, #+692] \ 00000584 C50100EF SWI +453 \ 00000588 0910A0E1 MOV R1,R9 \ 0000058C 02002DE9 PUSH {R1} \ 00000590 001098E5 LDR R1,[R8, #+0] \ 00000594 800080E0 ADD R0,R0,R0, LSL #+1 \ 00000598 02002DE9 PUSH {R1} \ 0000059C AC3295E5 LDR R3,[R5, #+684] \ 000005A0 30209DE5 LDR R2,[SP, #+48] \ 000005A4 00109BE5 LDR R1,[R11, #+0] \ 000005A8 010080E0 ADD R0,R0,R1 \ 000005AC 031080E2 ADD R1,R0,#+3 \ 000005B0 00009AE5 LDR R0,[R10, #+0] \ 000005B4 ........ _BLF PrintField,??PrintField??rA 6870 PrintField(msg_d_x,msg_d_y+(4*GetFontYSIZE(paused_height))+4, g_txt, align, fonto, spaco2); \ 000005B8 B40295E5 LDR R0,[R5, #+692] \ 000005BC C50100EF SWI +453 \ 000005C0 00022DE9 PUSH {R9} \ 000005C4 001098E5 LDR R1,[R8, #+0] \ 000005C8 02002DE9 PUSH {R1} \ 000005CC AC3295E5 LDR R3,[R5, #+684] \ 000005D0 3C209DE5 LDR R2,[SP, #+60] \ 000005D4 00109BE5 LDR R1,[R11, #+0] \ 000005D8 000181E0 ADD R0,R1,R0, LSL #+2 \ 000005DC 041080E2 ADD R1,R0,#+4 \ ??maincsm_onmessage_37: \ 000005E0 00009AE5 LDR R0,[R10, #+0] \ 000005E4 ........ _BLF PrintField,??PrintField??rA \ 000005E8 28D08DE2 ADD SP,SP,#+40 6871 } 6872 } 6873 main_d=0; \ ??maincsm_onmessage_35: \ 000005EC A87285E5 STR R7,[R5, #+680] 6874 } 6875 6876 if(Is_UPTIME_On) DrawOnlineTime(canvasdata); \ ??maincsm_onmessage_34: \ 000005F0 E0059FE5 LDR R0,??maincsm_onmessage_6+0x20 ;; Is_UPTIME_On \ 000005F4 000090E5 LDR R0,[R0, #+0] \ 000005F8 000050E3 CMP R0,#+0 \ 000005FC 0100000A BEQ ??maincsm_onmessage_38 \ 00000600 B00295E5 LDR R0,[R5, #+688] \ 00000604 ........ BL DrawOnlineTime 6877 if(Is_PING_On && isPingIdle) DrawPing(canvasdata); \ ??maincsm_onmessage_38: \ 00000608 DC0295E5 LDR R0,[R5, #+732] \ 0000060C 000050E3 CMP R0,#+0 \ 00000610 0500000A BEQ ??maincsm_onmessage_39 \ 00000614 C0059FE5 LDR R0,??maincsm_onmessage_6+0x24 ;; isPingIdle \ 00000618 000090E5 LDR R0,[R0, #+0] \ 0000061C 000050E3 CMP R0,#+0 \ 00000620 0100000A BEQ ??maincsm_onmessage_39 \ 00000624 B00295E5 LDR R0,[R5, #+688] \ 00000628 ........ BL DrawPing 6878 if(Auto_Status && showAwayIdle) DrawAutoMSG(canvasdata); \ ??maincsm_onmessage_39: \ 0000062C ........ LDR R0,??DataTable271 ;; Auto_Status \ 00000630 000090E5 LDR R0,[R0, #+0] \ 00000634 000050E3 CMP R0,#+0 \ 00000638 0500000A BEQ ??maincsm_onmessage_40 \ 0000063C ........ LDR R0,??DataTable272 ;; showAwayIdle \ 00000640 000090E5 LDR R0,[R0, #+0] \ 00000644 000050E3 CMP R0,#+0 \ 00000648 0100000A BEQ ??maincsm_onmessage_40 \ 0000064C B00295E5 LDR R0,[R5, #+688] \ 00000650 ........ BL DrawAutoMSG 6879 if(Is_Unread_On) \ ??maincsm_onmessage_40: \ 00000654 84059FE5 LDR R0,??maincsm_onmessage_6+0x28 ;; Is_Unread_On \ 00000658 000090E5 LDR R0,[R0, #+0] \ 0000065C 000050E3 CMP R0,#+0 \ 00000660 1200000A BEQ ??maincsm_onmessage_41 6880 { 6881 sprintf(unread_msg_info, "Unread: %d", total_unread2); \ 00000664 F02295E5 LDR R2,[R5, #+752] \ 00000668 B890A0E3 MOV R9,#+184 \ 0000066C 709E89E3 ORR R9,R9,#0x700 \ 00000670 381086E2 ADD R1,R6,#+56 \ 00000674 050089E0 ADD R0,R9,R5 \ 00000678 160000EF SWI +22 6882 PrintField(unread_X,unread_Y, unread_msg_info, align, fonto, spaco1); \ 0000067C ........ LDR R0,??DataTable274 ;; spaco1 \ 00000680 052089E0 ADD R2,R9,R5 \ 00000684 000090E5 LDR R0,[R0, #+0] \ 00000688 01002DE9 PUSH {R0} \ 0000068C 000098E5 LDR R0,[R8, #+0] \ 00000690 01002DE9 PUSH {R0} \ 00000694 AC3295E5 LDR R3,[R5, #+684] \ 00000698 44059FE5 LDR R0,??maincsm_onmessage_6+0x2C ;; unread_Y \ 0000069C 001090E5 LDR R1,[R0, #+0] \ 000006A0 40059FE5 LDR R0,??maincsm_onmessage_6+0x30 ;; unread_X \ 000006A4 000090E5 LDR R0,[R0, #+0] \ 000006A8 ........ _BLF PrintField,??PrintField??rA \ 000006AC 08D08DE2 ADD SP,SP,#+8 6883 } 6884 6885 if(Is_Online_On && strlen(on_off_buf)!=0) \ ??maincsm_onmessage_41: \ 000006B0 34059FE5 LDR R0,??maincsm_onmessage_6+0x34 ;; Is_Online_On \ 000006B4 000090E5 LDR R0,[R0, #+0] \ 000006B8 000050E3 CMP R0,#+0 \ 000006BC 1C00000A BEQ ??maincsm_onmessage_27 \ 000006C0 00009DE5 LDR R0,[SP, #+0] \ 000006C4 1B0000EF SWI +27 \ 000006C8 000050E3 CMP R0,#+0 \ 000006CC 1800000A BEQ ??maincsm_onmessage_27 6886 { 6887 char *s=malloc(128); \ 000006D0 8000A0E3 MOV R0,#+128 \ 000006D4 140000EF SWI +20 6888 sprintf(s,percent_s,on_off_buf); \ 000006D8 00209DE5 LDR R2,[SP, #+0] \ 000006DC 0090A0E1 MOV R9,R0 \ 000006E0 081086E2 ADD R1,R6,#+8 \ 000006E4 160000EF SWI +22 6889 s[strlen(s)-1]=0; \ 000006E8 0900A0E1 MOV R0,R9 \ 000006EC 1B0000EF SWI +27 \ 000006F0 090080E0 ADD R0,R0,R9 \ 000006F4 017040E5 STRB R7,[R0, #-1] 6890 PrintField(online_x,online_y,s, align, fonto, spaco1); \ 000006F8 ........ LDR R0,??DataTable274 ;; spaco1 \ 000006FC 0920A0E1 MOV R2,R9 \ 00000700 000090E5 LDR R0,[R0, #+0] \ 00000704 01002DE9 PUSH {R0} \ 00000708 000098E5 LDR R0,[R8, #+0] \ 0000070C 01002DE9 PUSH {R0} \ 00000710 AC3295E5 LDR R3,[R5, #+684] \ 00000714 D4049FE5 LDR R0,??maincsm_onmessage_6+0x38 ;; online_y \ 00000718 001090E5 LDR R1,[R0, #+0] \ 0000071C D0049FE5 LDR R0,??maincsm_onmessage_6+0x3C ;; online_x \ 00000720 000090E5 LDR R0,[R0, #+0] \ 00000724 ........ _BLF PrintField,??PrintField??rA 6891 mfree(s); \ 00000728 0900A0E1 MOV R0,R9 \ 0000072C 150000EF SWI +21 \ 00000730 08D08DE2 ADD SP,SP,#+8 6892 } 6893 }//if(IsUnlocked()) 6894 } 6895 6896 6897 //-----------------------------------------------------------// 6898 6899 6900 if (msg->msg==MSG_RECONFIGURE_REQ) \ ??maincsm_onmessage_27: \ 00000734 040094E5 LDR R0,[R4, #+4] \ 00000738 AF10A0E3 MOV R1,#+175 \ 0000073C DE1C81E3 ORR R1,R1,#0xDE00 \ 00000740 010050E1 CMP R0,R1 \ 00000744 4C00001A BNE ??maincsm_onmessage_42 6901 { 6902 //if (strcmp_nocase(successed_config_filename,(char *)msg->data0)==0) 6903 if( (strcmp_nocase(suc_config_name,(char *)msg->data0)==0) 6904 || (strcmp_nocase(suc_config_name_mod,(char *)msg->data0)==0)) \ 00000748 ........ LDR R0,??DataTable302 ;; suc_config_name \ 0000074C 0C1094E5 LDR R1,[R4, #+12] \ 00000750 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 00000754 000050E3 CMP R0,#+0 \ 00000758 0500000A BEQ ??maincsm_onmessage_43 \ 0000075C ........ LDR R0,??DataTable276 ;; suc_config_name_mod \ 00000760 0C1094E5 LDR R1,[R4, #+12] \ 00000764 000090E5 LDR R0,[R0, #+0] \ 00000768 ........ _BLF strcmp_nocase,??strcmp_nocase??rA \ 0000076C 000050E3 CMP R0,#+0 \ 00000770 4100001A BNE ??maincsm_onmessage_42 6905 { 6906 ShowMSG(1,(int)"NatICQ config updated!"); 6907 // InitConfig(); 6908 UpdateConfig(); 6909 #ifdef NEWSGOLD 6910 initTags(); 6911 #endif 6912 shot_soft=0; 6913 shot_header=0; 6914 PrintLibInit(4); 6915 FontPathInit((char *)fontpath, 1); 6916 FontPathInit((char *)fontpath2, 1); \ ??maincsm_onmessage_43: \ 00000774 ........ LDR R10,??DataTable305 ;; fontpath2 6917 FontPathInit((char *)fontpath3, 1);//#ifdef ELKA \ 00000778 ........ LDR R11,??DataTable306 ;; fontpath3 6918 FontPathInit((char *)fontpath4, 1); \ 0000077C ........ LDR R9,??DataTable307 ;; fontpath4 \ 00000780 441086E2 ADD R1,R6,#+68 \ 00000784 0100A0E3 MOV R0,#+1 \ 00000788 480100EF SWI +328 \ 0000078C ........ _BLF UpdateConfig,??UpdateConfig??rA \ 00000790 ........ _BLF initTags,??initTags??rA \ 00000794 947485E5 STR R7,[R5, #+1172] \ 00000798 987485E5 STR R7,[R5, #+1176] \ 0000079C 0400A0E3 MOV R0,#+4 \ 000007A0 ........ _BLF PrintLibInit,??PrintLibInit??rA \ 000007A4 ........ LDR R0,??DataTable304 ;; fontpath \ 000007A8 0110A0E3 MOV R1,#+1 \ 000007AC ........ _BLF FontPathInit,??FontPathInit??rA \ 000007B0 0110A0E3 MOV R1,#+1 \ 000007B4 0A00A0E1 MOV R0,R10 \ 000007B8 ........ _BLF FontPathInit,??FontPathInit??rA \ 000007BC 0110A0E3 MOV R1,#+1 \ 000007C0 0B00A0E1 MOV R0,R11 \ 000007C4 ........ _BLF FontPathInit,??FontPathInit??rA \ 000007C8 0110A0E3 MOV R1,#+1 \ 000007CC 0900A0E1 MOV R0,R9 \ 000007D0 ........ _BLF FontPathInit,??FontPathInit??rA 6919 6920 if(!strlen(fontpath2) || !strlen(fontpath3)) clfont=100+FONT_SMALL; \ 000007D4 0A00A0E1 MOV R0,R10 \ 000007D8 1B0000EF SWI +27 \ 000007DC 000050E3 CMP R0,#+0 \ 000007E0 0300000A BEQ ??maincsm_onmessage_44 \ 000007E4 0B00A0E1 MOV R0,R11 \ 000007E8 1B0000EF SWI +27 \ 000007EC 000050E3 CMP R0,#+0 \ 000007F0 0100001A BNE ??maincsm_onmessage_45 \ ??maincsm_onmessage_44: \ 000007F4 6C00A0E3 MOV R0,#+108 \ 000007F8 7C0485E5 STR R0,[R5, #+1148] 6921 if(!strlen(fontpath4)) { PNG_SOFTKEY=0; PNG_HEADER=0; } \ ??maincsm_onmessage_45: \ 000007FC 0900A0E1 MOV R0,R9 \ 00000800 1B0000EF SWI +27 \ 00000804 000050E3 CMP R0,#+0 \ 00000808 0300001A BNE ??maincsm_onmessage_46 \ 0000080C ........ LDR R0,??DataTable310 ;; PNG_SOFTKEY \ 00000810 007080E5 STR R7,[R0, #+0] \ 00000814 ........ LDR R0,??DataTable311 ;; PNG_HEADER \ 00000818 007080E5 STR R7,[R0, #+0] 6922 if(fonto==1) \ ??maincsm_onmessage_46: \ 0000081C 000098E5 LDR R0,[R8, #+0] \ 00000820 010050E3 CMP R0,#+1 \ 00000824 0B00001A BNE ??maincsm_onmessage_47 6923 { 6924 char *heght=malloc(64); \ 00000828 4000A0E3 MOV R0,#+64 \ 0000082C 140000EF SWI +20 6925 sprintf(heght, "%s2240.png", fontpath); \ 00000830 ........ LDR R2,??DataTable304 ;; fontpath \ 00000834 0080A0E1 MOV R8,R0 \ 00000838 5C1086E2 ADD R1,R6,#+92 \ 0000083C 160000EF SWI +22 6926 paused_height=GetImgHeight((int)heght); \ 00000840 0800A0E1 MOV R0,R8 \ 00000844 210000EF SWI +33 \ 00000848 B40285E5 STR R0,[R5, #+692] 6927 mfree(heght); \ 0000084C 0800A0E1 MOV R0,R8 \ 00000850 150000EF SWI +21 \ 00000854 010000EA B ??maincsm_onmessage_48 6928 } 6929 else 6930 paused_height=fonto-100; \ ??maincsm_onmessage_47: \ 00000858 640040E2 SUB R0,R0,#+100 \ 0000085C B40285E5 STR R0,[R5, #+692] 6931 //#endif 6932 free_ICONS(); \ ??maincsm_onmessage_48: \ 00000860 ........ BL free_ICONS 6933 setup_ICONS(); \ 00000864 ........ BL setup_ICONS 6934 ResortCL(); \ 00000868 ........ _BLF ResortCL,??ResortCL??rA 6935 RecountMenu(NULL,1); \ 0000086C 0110A0E3 MOV R1,#+1 \ 00000870 0000A0E3 MOV R0,#+0 \ 00000874 ........ BL RecountMenu 6936 init_time_zone(); \ 00000878 ........ BL init_time_zone 6937 // InitSmiles(); 6938 } 6939 } 6940 6941 if (msg->msg==MSG_GUI_DESTROYED) \ ??maincsm_onmessage_42: \ 0000087C 040094E5 LDR R0,[R4, #+4] \ 00000880 0E10A0E3 MOV R1,#+14 \ 00000884 641C81E3 ORR R1,R1,#0x6400 \ 00000888 010050E1 CMP R0,R1 \ 0000088C 0D00001A BNE ??maincsm_onmessage_49 6942 { 6943 if ((int)msg->data0==csm->gui_id) \ 00000890 1C109DE5 LDR R1,[SP, #+28] \ 00000894 0C0094E5 LDR R0,[R4, #+12] \ 00000898 281091E5 LDR R1,[R1, #+40] \ 0000089C 010050E1 CMP R0,R1 6944 { 6945 csm->csm.state=-3; \ 000008A0 1C009D05 LDREQ R0,[SP, #+28] \ 000008A4 0210E003 MVNEQ R1,#+2 \ 000008A8 10108005 STREQ R1,[R0, #+16] 6946 } 6947 if ((int)msg->data0==contactlist_menu_id) \ 000008AC 0C0094E5 LDR R0,[R4, #+12] \ 000008B0 FC1295E5 LDR R1,[R5, #+764] \ 000008B4 010050E1 CMP R0,R1 6948 { 6949 contactlist_menu_id=0; \ 000008B8 FC728505 STREQ R7,[R5, #+764] 6950 //prev_clmenu_itemcount=0; 6951 } 6952 if ((int)msg->data0==edchat_id) \ 000008BC 241495E5 LDR R1,[R5, #+1060] \ 000008C0 010050E1 CMP R0,R1 6953 { 6954 edchat_id=0; \ 000008C4 24748505 STREQ R7,[R5, #+1060] 6955 } 6956 } 6957 6958 if (msg->msg==MSG_HELPER_TRANSLATOR) \ ??maincsm_onmessage_49: \ 000008C8 040094E5 LDR R0,[R4, #+4] \ 000008CC AE10A0E3 MOV R1,#+174 \ 000008D0 DE1C81E3 ORR R1,R1,#0xDE00 \ 000008D4 010050E1 CMP R0,R1 \ 000008D8 2900001A BNE ??maincsm_onmessage_50 6959 { 6960 switch((int)msg->data0) \ 000008DC 0C0094E5 LDR R0,[R4, #+12] \ 000008E0 101094E5 LDR R1,[R4, #+16] \ 000008E4 ........ LDR R9,??DataTable284 ;; RECONNECT_TIME \ 000008E8 ........ LDR R10,??DataTable285 ;; do_reconnect \ 000008EC 7020A0E3 MOV R2,#+112 \ 000008F0 782D82E3 ORR R2,R2,#0x1E00 \ 000008F4 054082E0 ADD R4,R2,R5 \ 000008F8 882FC2E3 BIC R2,R2,#0x220 \ 000008FC 058082E0 ADD R8,R2,R5 \ 00000900 01B0A0E3 MOV R11,#+1 \ 00000904 802050E2 SUBS R2,R0,#+128 \ 00000908 0800000A BEQ ??maincsm_onmessage_51 \ 0000090C 022052E2 SUBS R2,R2,#+2 \ 00000910 0200000A BEQ ??maincsm_onmessage_52 \ 00000914 122052E2 SUBS R2,R2,#+18 \ 00000918 1100000A BEQ ??maincsm_onmessage_53 \ 0000091C 1B0000EA B ??maincsm_onmessage_54 6961 { 6962 case LMAN_DISCONNECT_IND: 6963 is_gprs_online=0; \ ??maincsm_onmessage_52: \ 00000920 147485E5 STR R7,[R5, #+1044] 6964 return(1); \ 00000924 0100A0E3 MOV R0,#+1 \ 00000928 20D08DE2 ADD SP,SP,#+32 \ 0000092C F08FBDE8 POP {R4-R11,PC} ;; return 6965 case LMAN_CONNECT_CNF: 6966 vibra_count=1; \ ??maincsm_onmessage_51: \ 00000930 E4B385E5 STR R11,[R5, #+996] 6967 start_vibra(); \ 00000934 ........ BL start_vibra 6968 is_gprs_online=1; \ 00000938 14B485E5 STR R11,[R5, #+1044] 6969 strcpy(logmsg,LG_GRGPRSUP); \ 0000093C 681086E2 ADD R1,R6,#+104 \ 00000940 0800A0E1 MOV R0,R8 \ 00000944 1A0000EF SWI +26 6970 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 00000948 000099E5 LDR R0,[R9, #+0] \ 0000094C 0A20A0E1 MOV R2,R10 \ 00000950 D830A0E3 MOV R3,#+216 \ 00000954 930001E0 MUL R1,R3,R0 \ 00000958 0400A0E1 MOV R0,R4 \ 0000095C 4D0000EF SWI +77 6971 return(1); \ 00000960 070000EA B ??maincsm_onmessage_50 6972 case ENIP_DNR_HOST_BY_NAME: 6973 if ((int)msg->data1==DNR_ID) \ ??maincsm_onmessage_53: \ 00000964 380495E5 LDR R0,[R5, #+1080] \ 00000968 000051E1 CMP R1,R0 \ 0000096C 0400001A BNE ??maincsm_onmessage_50 6974 { 6975 if (DNR_TRIES) SUBPROC((void *)create_connect); \ 00000970 3C0495E5 LDR R0,[R5, #+1084] \ 00000974 000050E3 CMP R0,#+0 \ 00000978 0100000A BEQ ??maincsm_onmessage_50 \ 0000097C ........ LDR R0,??DataTable286 ;; create_connect \ ??maincsm_onmessage_55: \ 00000980 710100EF SWI +369 6976 } 6977 return(1); \ ??maincsm_onmessage_50: \ 00000984 0100A0E3 MOV R0,#+1 \ ??maincsm_onmessage_56: \ 00000988 20D08DE2 ADD SP,SP,#+32 \ 0000098C F08FBDE8 POP {R4-R11,PC} 6978 } 6979 if ((int)msg->data1==sock) \ ??maincsm_onmessage_54: \ 00000990 002495E5 LDR R2,[R5, #+1024] \ 00000994 020051E1 CMP R1,R2 \ 00000998 F9FFFF1A BNE ??maincsm_onmessage_50 6980 { 6981 //Если наш сокет 6982 if ((((unsigned int)msg->data0)>>28)==0xA) \ 0000099C 201EA0E1 LSR R1,R0,#+28 \ 000009A0 0A0051E3 CMP R1,#+10 \ 000009A4 0200001A BNE ??maincsm_onmessage_57 6983 { 6984 //Принят пакет 6985 ProcessPacket((TPKT *)msg->data0); \ 000009A8 ........ BL ProcessPacket 6986 return(0); \ 000009AC 0000A0E3 MOV R0,#+0 \ 000009B0 F4FFFFEA B ??maincsm_onmessage_56 6987 } 6988 switch((int)msg->data0) \ ??maincsm_onmessage_57: \ 000009B4 FC1395E5 LDR R1,[R5, #+1020] \ 000009B8 8A0040E2 SUB R0,R0,#+138 \ 000009BC 050050E3 CMP R0,#+5 \ 000009C0 EFFFFF8A BHI ??maincsm_onmessage_50 \ 000009C4 012F8FE2 ADR R2,??maincsm_onmessage_1 \ 000009C8 D02092E1 LDRSB R2,[R2, R0] \ 000009CC 02F18FE0 ADD PC,PC,R2, LSL #+2 \ ??maincsm_onmessage_1: \ 000009D0 43433E01 DC8 +67,+67,+62,+1 \ 000009D4 4C480000 DC8 +76,+72,+0,+0 6989 { 6990 case ENIP_SOCK_CONNECTED: 6991 if (connect_state==1) \ ??maincsm_onmessage_58: \ 000009D8 010051E3 CMP R1,#+1 \ 000009DC 3600001A BNE ??maincsm_onmessage_59 6992 { 6993 if(VIBR_ON_CONNECT) \ 000009E0 ........ LDR R0,??DataTable291 ;; VIBR_ON_CONNECT 6994 vibra_count=2; 6995 else 6996 vibra_count=1; 6997 start_vibra(); 6998 //Соединение установленно, посылаем пакет login 6999 strcpy(logmsg, LG_GRTRYLOGIN); 7000 { 7001 int i=strlen(PASS); \ 000009E4 0C429FE5 LDR R4,??maincsm_onmessage_6+0x40 ;; PASS \ 000009E8 000090E5 LDR R0,[R0, #+0] 7002 TPKT *p=malloc(sizeof(PKT)+i); 7003 p->pkt.uin=UIN; \ 000009EC ........ LDR R10,??DataTable288 ;; UIN \ 000009F0 000050E3 CMP R0,#+0 \ 000009F4 0200A013 MOVNE R0,#+2 \ 000009F8 E4038515 STRNE R0,[R5, #+996] \ 000009FC E4B38505 STREQ R11,[R5, #+996] \ 00000A00 ........ BL start_vibra \ 00000A04 801086E2 ADD R1,R6,#+128 \ 00000A08 0800A0E1 MOV R0,R8 \ 00000A0C 1A0000EF SWI +26 \ 00000A10 0400A0E1 MOV R0,R4 \ 00000A14 1B0000EF SWI +27 \ 00000A18 0080A0E1 MOV R8,R0 \ 00000A1C 080088E2 ADD R0,R8,#+8 \ 00000A20 140000EF SWI +20 \ 00000A24 0090A0E1 MOV R9,R0 \ 00000A28 00009AE5 LDR R0,[R10, #+0] 7004 p->pkt.type=T_REQLOGIN; 7005 p->pkt.data_len=i; 7006 memcpy(p->data,PASS,i); \ 00000A2C 0820A0E1 MOV R2,R8 \ 00000A30 000089E5 STR R0,[R9, #+0] \ 00000A34 B4B0C9E1 STRH R11,[R9, #+4] \ 00000A38 B680C9E1 STRH R8,[R9, #+6] \ 00000A3C 0410A0E1 MOV R1,R4 \ 00000A40 080089E2 ADD R0,R9,#+8 \ 00000A44 1E0100EF SWI +286 7007 SUBPROC((void *)send_login,0,p); \ 00000A48 AC019FE5 LDR R0,??maincsm_onmessage_6+0x44 ;; send_login \ 00000A4C 0920A0E1 MOV R2,R9 \ 00000A50 0010A0E3 MOV R1,#+0 \ 00000A54 710100EF SWI +369 7008 } 7009 GROUP_CACHE=0; \ 00000A58 207485E5 STR R7,[R5, #+1056] 7010 SENDMSGCOUNT=0; //Начинаем отсчет \ 00000A5C 007385E5 STR R7,[R5, #+768] 7011 if (!FindGroupByID(0)) AddGroup(0,LG_GROUPNOTINLIST); \ 00000A60 0700A0E1 MOV R0,R7 \ 00000A64 ........ _BLF FindGroupByID,??FindGroupByID??rA \ 00000A68 000050E3 CMP R0,#+0 \ 00000A6C 0100001A BNE ??maincsm_onmessage_60 \ 00000A70 901086E2 ADD R1,R6,#+144 \ 00000A74 ........ _BLF AddGroup,??AddGroup??rA 7012 if (!FindContactByUin(UIN) && (IsShowLoopback)) AddContact(UIN, LG_CLLOOPBACK,0,1); \ ??maincsm_onmessage_60: \ 00000A78 00009AE5 LDR R0,[R10, #+0] \ 00000A7C ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000A80 000050E3 CMP R0,#+0 \ 00000A84 0800001A BNE ??maincsm_onmessage_61 \ 00000A88 70019FE5 LDR R0,??maincsm_onmessage_6+0x48 ;; IsShowLoopback \ 00000A8C 000090E5 LDR R0,[R0, #+0] \ 00000A90 000050E3 CMP R0,#+0 \ 00000A94 0400000A BEQ ??maincsm_onmessage_61 \ 00000A98 00009AE5 LDR R0,[R10, #+0] \ 00000A9C 0130A0E3 MOV R3,#+1 \ 00000AA0 0720A0E1 MOV R2,R7 \ 00000AA4 9C1086E2 ADD R1,R6,#+156 \ 00000AA8 ........ _BLF AddContact,??AddContact??rA 7013 SUBPROC((void *)LoadLocalCL); \ ??maincsm_onmessage_61: \ 00000AAC 50019FE5 LDR R0,??maincsm_onmessage_6+0x4C ;; LoadLocalCL \ 00000AB0 710100EF SWI +369 7014 SMART_REDRAW(); \ 00000AB4 ........ BL SMART_REDRAW \ 00000AB8 B1FFFFEA B ??maincsm_onmessage_50 7015 } 7016 else 7017 { 7018 ShowMSG(1,(int)LG_MSGILLEGMSGCON); \ ??maincsm_onmessage_59: \ 00000ABC A81086E2 ADD R1,R6,#+168 \ ??maincsm_onmessage_62: \ 00000AC0 0100A0E3 MOV R0,#+1 \ 00000AC4 480100EF SWI +328 \ 00000AC8 ADFFFFEA B ??maincsm_onmessage_50 7019 } 7020 break; 7021 case ENIP_SOCK_DATA_READ: 7022 if (connect_state>=2) \ ??maincsm_onmessage_63: \ 00000ACC 020051E3 CMP R1,#+2 7023 { 7024 //Если посылали send 7025 SUBPROC((void *)get_answer); \ 00000AD0 30019FA5 LDRGE R0,??maincsm_onmessage_6+0x50 ;; get_answer \ 00000AD4 A9FFFFAA BGE ??maincsm_onmessage_55 7026 //SMART_REDRAW(); 7027 } 7028 else 7029 { 7030 ShowMSG(1,(int)LG_MSGILLEGMSGREA); \ 00000AD8 D01086E2 ADD R1,R6,#+208 \ 00000ADC F7FFFFEA B ??maincsm_onmessage_62 7031 } 7032 break; 7033 case ENIP_BUFFER_FREE: 7034 case ENIP_BUFFER_FREE1: 7035 SUBPROC((void *)SendAnswer,0,0); \ ??maincsm_onmessage_64: \ 00000AE0 ........ LDR R0,??DataTable289 ;; SendAnswer \ 00000AE4 0020A0E3 MOV R2,#+0 \ 00000AE8 0210A0E1 MOV R1,R2 \ 00000AEC 710100EF SWI +369 \ 00000AF0 A3FFFFEA B ??maincsm_onmessage_50 7036 break; 7037 case ENIP_SOCK_REMOTE_CLOSED: 7038 //Закрыт со стороны сервера 7039 if (connect_state) \ ??maincsm_onmessage_65: \ 00000AF4 000051E3 CMP R1,#+0 \ 00000AF8 A1FFFF0A BEQ ??maincsm_onmessage_50 7040 SUBPROC((void *)end_socket); \ 00000AFC ........ LDR R0,??DataTable290 ;; end_socket \ 00000B00 9EFFFFEA B ??maincsm_onmessage_55 7041 break; 7042 case ENIP_SOCK_CLOSED: 7043 //strcpy(logmsg, "No connection"); 7044 //Dump not received 7045 /* if (RXstate>(-(int)sizeof(PKT))) 7046 { 7047 unsigned int err; 7048 int f=fopen("4:\\NATICQ.dump",A_ReadWrite+A_Create+A_Truncate+A_BIN,P_READ+P_WRITE,&err); 7049 if (f!=-1) 7050 { 7051 fwrite(f,&RXbuf,RXstate+sizeof(PKT),&err); 7052 fclose(f,&err); 7053 } 7054 }*/ 7055 FillAllOffline(); \ ??maincsm_onmessage_66: \ 00000B04 ........ _BLF FillAllOffline,??FillAllOffline??rA 7056 RecountMenu(NULL,1); \ 00000B08 0110A0E3 MOV R1,#+1 \ 00000B0C 0700A0E1 MOV R0,R7 \ 00000B10 ........ BL RecountMenu 7057 connect_state=0; 7058 sock=-1; \ 00000B14 0700E0E1 MVN R0,R7 \ 00000B18 000485E5 STR R0,[R5, #+1024] 7059 if(VIBR_ON_CONNECT) \ 00000B1C ........ LDR R0,??DataTable291 ;; VIBR_ON_CONNECT \ 00000B20 FC7385E5 STR R7,[R5, #+1020] \ 00000B24 000090E5 LDR R0,[R0, #+0] \ 00000B28 000050E3 CMP R0,#+0 7060 vibra_count=4; \ 00000B2C 0400A013 MOVNE R0,#+4 \ 00000B30 E4038515 STRNE R0,[R5, #+996] 7061 else 7062 vibra_count=1; \ 00000B34 E4B38505 STREQ R11,[R5, #+996] 7063 7064 start_vibra(); \ 00000B38 ........ BL start_vibra 7065 if (sendq_p) \ 00000B3C D00295E5 LDR R0,[R5, #+720] \ 00000B40 000050E3 CMP R0,#+0 \ 00000B44 0400000A BEQ ??maincsm_onmessage_67 7066 { 7067 snprintf(logmsg,255,"Disconnected, %d bytes not sended!",sendq_l); \ 00000B48 CC3295E5 LDR R3,[R5, #+716] \ 00000B4C F42086E2 ADD R2,R6,#+244 \ 00000B50 FF10A0E3 MOV R1,#+255 \ 00000B54 0800A0E1 MOV R0,R8 \ 00000B58 1B0100EF SWI +283 7068 } 7069 Play(sndLostConn); \ ??maincsm_onmessage_67: \ 00000B5C ........ LDR R0,??DataTable292 ;; sndLostConn \ 00000B60 ........ BL Play 7070 SMART_REDRAW(); \ 00000B64 ........ BL SMART_REDRAW 7071 SUBPROC((void *)ClearSendQ); \ 00000B68 ........ LDR R0,??DataTable293 ;; ClearSendQ \ 00000B6C 710100EF SWI +369 7072 #ifdef EVILFOX 7073 if (!disautorecconect) GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*12,do_reconnect); 7074 #else 7075 if (!disautorecconect) \ 00000B70 D00395E5 LDR R0,[R5, #+976] \ 00000B74 000050E3 CMP R0,#+0 \ 00000B78 81FFFF1A BNE ??maincsm_onmessage_50 7076 { 7077 GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*RECONNECT_TIME,do_reconnect); \ 00000B7C 000099E5 LDR R0,[R9, #+0] \ 00000B80 0A20A0E1 MOV R2,R10 \ 00000B84 D830A0E3 MOV R3,#+216 \ 00000B88 930001E0 MUL R1,R3,R0 \ 00000B8C 0400A0E1 MOV R0,R4 \ 00000B90 4D0000EF SWI +77 7078 snprintf(logmsg,255,"%s\nReconect after %d second...",logmsg, RECONNECT_TIME); //2058 \ 00000B94 000099E5 LDR R0,[R9, #+0] \ 00000B98 0830A0E1 MOV R3,R8 \ 00000B9C 01002DE9 PUSH {R0} \ 00000BA0 462F86E2 ADD R2,R6,#+280 \ 00000BA4 FF10A0E3 MOV R1,#+255 \ 00000BA8 0800A0E1 MOV R0,R8 \ 00000BAC 1B0100EF SWI +283 \ 00000BB0 04D08DE2 ADD SP,SP,#+4 \ 00000BB4 72FFFFEA B ??maincsm_onmessage_50 \ ??maincsm_onmessage_6: \ 00000BB8 ........ DC32 CheckDoubleRun \ 00000BBC ........ DC32 ProcessNextSmile \ 00000BC0 ........ DC32 ProcessNextXStatImg \ 00000BC4 ........ DC32 IDLEICON_Y \ 00000BC8 ........ DC32 IDLEICON_X \ 00000BCC ........ DC32 Is_SMARTCPU_On \ 00000BD0 ........ DC32 msg_d_x \ 00000BD4 ........ DC32 msg_d_y \ 00000BD8 ........ DC32 Is_UPTIME_On \ 00000BDC ........ DC32 isPingIdle \ 00000BE0 ........ DC32 Is_Unread_On \ 00000BE4 ........ DC32 unread_Y \ 00000BE8 ........ DC32 unread_X \ 00000BEC ........ DC32 Is_Online_On \ 00000BF0 ........ DC32 online_y \ 00000BF4 ........ DC32 online_x \ 00000BF8 ........ DC32 PASS \ 00000BFC ........ DC32 send_login \ 00000C00 ........ DC32 IsShowLoopback \ 00000C04 ........ DC32 LoadLocalCL \ 00000C08 ........ DC32 get_answer 7079 } 7080 7081 #endif 7082 break; 7083 } 7084 } 7085 } 7086 return(1); 7087 } 7088 7089 7090 //-------------------- ICON IN ICONBAR --------------------// 7091 7092 //kluchnik 26.03.08 7093 #ifdef NEWSGOLD 7094 #pragma swi_number=0x27 7095 __swi __arm void AddIconToIconBar(int pic, short *num); 7096 7097 int iconmsg=1; \ In segment CODE, align 4, keep-with-next 7098 void addIconBar(short* num) 7099 { \ addIconBar: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 7100 if(IsGuiOnTop(maingui_id) && !ShowStatusToIconBar) goto next;// return; \ 00000004 A4529FE5 LDR R5,??addIconBar_0 ;; NumXStatusToIconBar \ 00000008 ........ LDR R8,??DataTable294 ;; i_rc \ 0000000C ........ LDR R7,??DataTable295 ;; NumStatusToIconBar \ 00000010 0040A0E1 MOV R4,R0 \ 00000014 F80298E5 LDR R0,[R8, #+760] \ 00000018 0860A0E3 MOV R6,#+8 \ 0000001C 806D86E3 ORR R6,R6,#0x2000 \ 00000020 350100EF SWI +309 \ 00000024 000050E3 CMP R0,#+0 \ 00000028 0300000A BEQ ??addIconBar_1 \ 0000002C 80029FE5 LDR R0,??addIconBar_0+0x4 ;; ShowStatusToIconBar \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 000050E3 CMP R0,#+0 \ 00000038 4E00000A BEQ ??addIconBar_2 7101 7102 int icn; 7103 if(ShowStatusIcon==1 || ShowStatusIcon==3) \ ??addIconBar_1: \ 0000003C ........ LDR R0,??DataTable296 ;; ShowStatusIcon \ 00000040 000090E5 LDR R0,[R0, #+0] \ 00000044 010050E3 CMP R0,#+1 \ 00000048 03005013 CMPNE R0,#+3 \ 0000004C 2B00001A BNE ??addIconBar_3 7104 { 7105 if(total_unread) \ 00000050 180498E5 LDR R0,[R8, #+1048] \ 00000054 000050E3 CMP R0,#+0 \ 00000058 2100000A BEQ ??addIconBar_4 7106 { 7107 if(blink_mess) iconmsg=1; \ 0000005C 54029FE5 LDR R0,??addIconBar_0+0x8 ;; blink_mess \ 00000060 0190A0E3 MOV R9,#+1 \ 00000064 000090E5 LDR R0,[R0, #+0] \ 00000068 000050E3 CMP R0,#+0 \ 0000006C A8948815 STRNE R9,[R8, #+1192] \ 00000070 0200001A BNE ??addIconBar_5 7108 AddIconToIconBar(NumStatusToIconBar +(iconmsg==1?IS_MSG:7777), num); \ 00000074 A80498E5 LDR R0,[R8, #+1192] \ 00000078 010050E3 CMP R0,#+1 \ 0000007C 0100001A BNE ??addIconBar_6 \ ??addIconBar_5: \ 00000080 0D00A0E3 MOV R0,#+13 \ 00000084 010000EA B ??addIconBar_7 \ ??addIconBar_6: \ 00000088 6100A0E3 MOV R0,#+97 \ 0000008C 780D80E3 ORR R0,R0,#0x1E00 \ ??addIconBar_7: \ 00000090 002097E5 LDR R2,[R7, #+0] \ 00000094 0410A0E1 MOV R1,R4 \ 00000098 020080E0 ADD R0,R0,R2 \ 0000009C 270000EF SWI +39 7109 iconmsg=!iconmsg; \ 000000A0 A80498E5 LDR R0,[R8, #+1192] \ 000000A4 000050E3 CMP R0,#+0 \ 000000A8 0090A013 MOVNE R9,#+0 \ 000000AC A89488E5 STR R9,[R8, #+1192] 7110 } 7111 else 7112 { 7113 switch(connect_state) 7114 { 7115 case 0: 7116 icn=IS_OFFLINE; 7117 break; 7118 case 3: 7119 icn=CurrentStatus; //IS_ONLINE; 7120 break; 7121 default: 7122 icn=IS_UNKNOWN; break; 7123 } 7124 AddIconToIconBar(NumStatusToIconBar + icn, num); 7125 } 7126 } 7127 else 7128 { 7129 if(ShowStatusIcon==2)//Если показывать и иконбаре везде,кроме идле 7130 { 7131 if(!(IsIdleUiOnTop())) 7132 { 7133 if(total_unread) 7134 AddIconToIconBar(NumStatusToIconBar + IS_MSG, num); 7135 else 7136 { 7137 switch(connect_state) 7138 { 7139 case 0: 7140 icn=IS_OFFLINE; break; 7141 case 3: 7142 icn=CurrentStatus; //IS_ONLINE; 7143 break; 7144 default: 7145 icn=IS_UNKNOWN; break; 7146 } 7147 AddIconToIconBar(NumStatusToIconBar + icn, num); 7148 } 7149 } 7150 } 7151 } 7152 7153 if(show_xstatus==2 || show_xstatus==3) \ ??addIconBar_8: \ 000000B0 04029FE5 LDR R0,??addIconBar_0+0xC ;; show_xstatus \ 000000B4 000090E5 LDR R0,[R0, #+0] \ 000000B8 020050E3 CMP R0,#+2 \ 000000BC 03005013 CMPNE R0,#+3 \ 000000C0 2C00001A BNE ??addIconBar_2 7154 { 7155 if(total_unread2 && total_unread2<10) \ 000000C4 F00298E5 LDR R0,[R8, #+752] \ 000000C8 000050E3 CMP R0,#+0 \ 000000CC 2200000A BEQ ??addIconBar_9 \ 000000D0 0A0050E3 CMP R0,#+10 \ 000000D4 200000AA BGE ??addIconBar_9 7156 AddIconToIconBar(8200 + total_unread2, num); \ 000000D8 0410A0E1 MOV R1,R4 \ 000000DC 000086E0 ADD R0,R6,R0 \ 000000E0 230000EA B ??addIconBar_10 \ ??addIconBar_4: \ 000000E4 FC0398E5 LDR R0,[R8, #+1020] \ 000000E8 000050E3 CMP R0,#+0 \ 000000EC 1600000A BEQ ??addIconBar_11 \ 000000F0 030050E2 SUBS R0,R0,#+3 \ 000000F4 1300001A BNE ??addIconBar_12 \ ??addIconBar_13: \ 000000F8 980398E5 LDR R0,[R8, #+920] \ 000000FC 120000EA B ??addIconBar_11 \ ??addIconBar_3: \ 00000100 020050E3 CMP R0,#+2 \ 00000104 E9FFFF1A BNE ??addIconBar_8 \ 00000108 C50000EF SWI +197 \ 0000010C 000050E3 CMP R0,#+0 \ 00000110 E6FFFF1A BNE ??addIconBar_8 \ 00000114 180498E5 LDR R0,[R8, #+1048] \ 00000118 000050E3 CMP R0,#+0 \ 0000011C 0400000A BEQ ??addIconBar_14 \ 00000120 000097E5 LDR R0,[R7, #+0] \ 00000124 0410A0E1 MOV R1,R4 \ 00000128 0D0080E2 ADD R0,R0,#+13 \ ??addIconBar_15: \ 0000012C 270000EF SWI +39 \ 00000130 DEFFFFEA B ??addIconBar_8 \ ??addIconBar_14: \ 00000134 FC0398E5 LDR R0,[R8, #+1020] \ 00000138 000050E3 CMP R0,#+0 \ 0000013C 0200000A BEQ ??addIconBar_11 \ 00000140 030050E2 SUBS R0,R0,#+3 \ 00000144 EBFFFF0A BEQ ??addIconBar_13 \ ??addIconBar_12: \ 00000148 0E00A0E3 MOV R0,#+14 \ ??addIconBar_11: \ 0000014C 002097E5 LDR R2,[R7, #+0] \ 00000150 0410A0E1 MOV R1,R4 \ 00000154 020080E0 ADD R0,R0,R2 \ 00000158 F3FFFFEA B ??addIconBar_15 7157 else 7158 if(CurrentXStatus!=0) \ ??addIconBar_9: \ 0000015C 9C0398E5 LDR R0,[R8, #+924] \ 00000160 000050E3 CMP R0,#+0 \ 00000164 0300000A BEQ ??addIconBar_2 7159 AddIconToIconBar(NumXStatusToIconBar+CurrentXStatus,num); \ 00000168 002095E5 LDR R2,[R5, #+0] \ 0000016C 0410A0E1 MOV R1,R4 \ 00000170 020080E0 ADD R0,R0,R2 \ ??addIconBar_10: \ 00000174 270000EF SWI +39 7160 } 7161 7162 7163 next: 7164 if(PingToIconBar) \ ??addIconBar_2: \ 00000178 40019FE5 LDR R0,??addIconBar_0+0x10 ;; PingToIconBar \ 0000017C 000090E5 LDR R0,[R0, #+0] \ 00000180 000050E3 CMP R0,#+0 \ 00000184 1400000A BEQ ??addIconBar_16 7165 { 7166 int ping=0; 7167 if(curping < 3) ping=0; \ 00000188 C80298E5 LDR R0,[R8, #+712] \ 0000018C 030050E3 CMP R0,#+3 \ 00000190 0C0000BA BLT ??addIconBar_17 7168 else if(curping > 3 && curping < 10) ping=1; \ 00000194 040050E3 CMP R0,#+4 \ 00000198 020000BA BLT ??addIconBar_18 \ 0000019C 0A0050E3 CMP R0,#+10 \ 000001A0 0100A0B3 MOVLT R0,#+1 \ 000001A4 080000BA BLT ??addIconBar_19 7169 else if(curping > 10 && curping < 30) ping=2; \ ??addIconBar_18: \ 000001A8 0B0050E3 CMP R0,#+11 \ 000001AC 020000BA BLT ??addIconBar_20 \ 000001B0 1E0050E3 CMP R0,#+30 \ 000001B4 0200A0B3 MOVLT R0,#+2 \ 000001B8 030000BA BLT ??addIconBar_19 7170 else if(curping > 30) ping=3; \ ??addIconBar_20: \ 000001BC 1F0050E3 CMP R0,#+31 \ 000001C0 0300A0A3 MOVGE R0,#+3 \ 000001C4 000000AA BGE ??addIconBar_19 7171 else ping=0; \ ??addIconBar_17: \ 000001C8 0000A0E3 MOV R0,#+0 7172 7173 AddIconToIconBar(8210 + ping ,num); \ ??addIconBar_19: \ 000001CC 0410A0E1 MOV R1,R4 \ 000001D0 0A2086E2 ADD R2,R6,#+10 \ 000001D4 000082E0 ADD R0,R2,R0 \ 000001D8 270000EF SWI +39 7174 } 7175 7176 7177 if(ADDITION_UIN!=0) \ ??addIconBar_16: \ 000001DC E0909FE5 LDR R9,??addIconBar_0+0x14 ;; ADDITION_UIN \ 000001E0 000099E5 LDR R0,[R9, #+0] \ 000001E4 000050E3 CMP R0,#+0 \ 000001E8 F083BD08 POPEQ {R4-R9,PC} 7178 { 7179 if(IsGuiOnTop(maingui_id) && !ShowAddStatusToIconBar) return;//Если не показывать когда гуй вверху,выходим нах \ 000001EC F80298E5 LDR R0,[R8, #+760] \ 000001F0 350100EF SWI +309 \ 000001F4 000050E3 CMP R0,#+0 \ 000001F8 0300000A BEQ ??addIconBar_21 \ 000001FC C4009FE5 LDR R0,??addIconBar_0+0x18 ;; ShowAddStatusToIconBar \ 00000200 000090E5 LDR R0,[R0, #+0] \ 00000204 000050E3 CMP R0,#+0 \ 00000208 F083BD08 POPEQ {R4-R9,PC} 7180 7181 CLIST *t; 7182 t=FindContactByUin(ADDITION_UIN); \ ??addIconBar_21: \ 0000020C 000099E5 LDR R0,[R9, #+0] \ 00000210 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 00000214 0080B0E1 MOVS R8,R0 7183 if(t) \ 00000218 F083BD08 POPEQ {R4-R9,PC} 7184 { 7185 if(t->state!=0xFFFF && (GetIconIndex(t)!=IS_UNKNOWN)) \ 0000021C B405D8E1 LDRH R0,[R8, #+84] \ 00000220 FF10A0E3 MOV R1,#+255 \ 00000224 FF1C81E3 ORR R1,R1,#0xFF00 \ 00000228 010050E1 CMP R0,R1 \ 0000022C F083BD08 POPEQ {R4-R9,PC} \ 00000230 0800A0E1 MOV R0,R8 \ 00000234 ........ BL GetIconIndex \ 00000238 0E0050E3 CMP R0,#+14 \ 0000023C F083BD08 POPEQ {R4-R9,PC} 7186 { 7187 if(show_add_state) \ 00000240 84009FE5 LDR R0,??addIconBar_0+0x1C ;; show_add_state \ 00000244 000090E5 LDR R0,[R0, #+0] \ 00000248 000050E3 CMP R0,#+0 \ 0000024C 0500000A BEQ ??addIconBar_22 7188 AddIconToIconBar(NumStatusToIconBar + GetIconIndex(t), num); \ 00000250 0800A0E1 MOV R0,R8 \ 00000254 ........ BL GetIconIndex \ 00000258 002097E5 LDR R2,[R7, #+0] \ 0000025C 0410A0E1 MOV R1,R4 \ 00000260 020080E0 ADD R0,R0,R2 \ 00000264 270000EF SWI +39 7189 7190 if(t->isunread) \ ??addIconBar_22: \ 00000268 900098E5 LDR R0,[R8, #+144] \ 0000026C 000050E3 CMP R0,#+0 \ 00000270 0300000A BEQ ??addIconBar_23 7191 AddIconToIconBar(8200 + t->unread_msg, num); \ 00000274 940098E5 LDR R0,[R8, #+148] \ 00000278 0410A0E1 MOV R1,R4 \ 0000027C 000086E0 ADD R0,R6,R0 \ 00000280 080000EA B ??addIconBar_24 7192 else 7193 if(show_add_xstate && t->xstate!=0) \ ??addIconBar_23: \ 00000284 44009FE5 LDR R0,??addIconBar_0+0x20 ;; show_add_xstate \ 00000288 000090E5 LDR R0,[R0, #+0] \ 0000028C 000050E3 CMP R0,#+0 \ 00000290 B605D811 LDRHNE R0,[R8, #+86] \ 00000294 00005013 CMPNE R0,#+0 \ 00000298 F083BD08 POPEQ {R4-R9,PC} 7194 AddIconToIconBar(NumXStatusToIconBar + t->xstate, num); \ 0000029C 002095E5 LDR R2,[R5, #+0] \ 000002A0 0410A0E1 MOV R1,R4 \ 000002A4 020080E0 ADD R0,R0,R2 \ ??addIconBar_24: \ 000002A8 270000EF SWI +39 \ 000002AC F083BDE8 POP {R4-R9,PC} ;; return \ ??addIconBar_0: \ 000002B0 ........ DC32 NumXStatusToIconBar \ 000002B4 ........ DC32 ShowStatusToIconBar \ 000002B8 ........ DC32 blink_mess \ 000002BC ........ DC32 show_xstatus \ 000002C0 ........ DC32 PingToIconBar \ 000002C4 ........ DC32 ADDITION_UIN \ 000002C8 ........ DC32 ShowAddStatusToIconBar \ 000002CC ........ DC32 show_add_state \ 000002D0 ........ DC32 show_add_xstate 7195 } 7196 } 7197 } 7198 } 7199 7200 typedef struct 7201 { 7202 char check_name[8]; 7203 int addr; 7204 }ICONBAR_H; 7205 7206 #endif 7207 \ In segment DATA_C, align 4, align-sorted 7208 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 7209 \ In segment DATA_Z, align 4, align-sorted 7210 unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 7211 7212 struct 7213 { 7214 CSM_DESC maincsm; 7215 WSHDR maincsm_name; 7216 #ifdef NEWSGOLD 7217 ICONBAR_H iconbar_handler; 7218 #endif 7219 }MAINCSM = 7220 { 7221 { 7222 maincsm_onmessage, 7223 maincsm_oncreate, 7224 #ifdef NEWSGOLD 7225 0, 7226 0, 7227 0, 7228 0, 7229 #endif 7230 maincsm_onclose, 7231 sizeof(MAIN_CSM), 7232 1, 7233 &minus11 7234 }, 7235 { 7236 maincsm_name_body, 7237 NAMECSM_MAGIC1, 7238 NAMECSM_MAGIC2, 7239 0x0, 7240 139 7241 } 7242 #ifdef NEWSGOLD 7243 , 7244 { 7245 "IconBar" 7246 } 7247 #endif 7248 }; 7249 \ In segment CODE, align 4, keep-with-next 7250 void UpdateCSMname(void) 7251 { 7252 wsprintf((WSHDR *)(&MAINCSM.maincsm_name), "NATICQ: %d",UIN); \ UpdateCSMname: \ 00000000 ........ LDR R0,??DataTable301 ;; UIN \ 00000004 10109FE5 LDR R1,??UpdateCSMname_0 ;; `?` \ 00000008 00402DE9 PUSH {LR} \ 0000000C 002090E5 LDR R2,[R0, #+0] \ 00000010 08009FE5 LDR R0,??UpdateCSMname_0+0x4 ;; i_rc + 204 \ 00000014 240100EF SWI +292 7253 } \ 00000018 0080BDE8 POP {PC} ;; return \ ??UpdateCSMname_0: \ 0000001C ........ DC32 `?` \ 00000020 ........ DC32 i_rc + 204 7254 7255 #ifdef NEWSGOLD \ In segment CODE, align 4, keep-with-next 7256 void SetIconBarHandler() 7257 { 7258 MAINCSM.iconbar_handler.addr = (int)addIconBar; \ SetIconBarHandler: \ 00000000 08009FE5 LDR R0,??SetIconBarHandler_0 ;; i_rc + 232 \ 00000004 ........ LDR R1,??DataTable312 ;; addIconBar \ 00000008 001080E5 STR R1,[R0, #+0] 7259 } \ 0000000C 1EFF2FE1 BX LR ;; return \ ??SetIconBarHandler_0: \ 00000010 ........ DC32 i_rc + 232 7260 #endif 7261 \ In segment CODE, align 4, keep-with-next 7262 int main(char *filename) 7263 { \ main: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 \ 00000008 0060A0E1 MOV R6,R0 7264 MAIN_CSM main_csm; 7265 char *s; 7266 int len; 7267 WSHDR *ws; 7268 if(UpdateConfig() == -1) return 0; \ 0000000C ........ _BLF UpdateConfig,??UpdateConfig??rA \ 00000010 010070E3 CMN R0,#+1 \ 00000014 8800000A BEQ ??main_0 7269 // InitConfig2(); 7270 7271 sprintf(PINGO, "Ping None"); \ 00000018 ........ LDR R4,??DataTable323 ;; i_rc \ 0000001C ........ LDR R5,??DataTable300 ;; Canvas \ 00000020 0800A0E3 MOV R0,#+8 \ 00000024 4E1F85E2 ADD R1,R5,#+312 \ 00000028 640D80E3 ORR R0,R0,#0x1900 \ 0000002C 040080E0 ADD R0,R0,R4 \ 00000030 160000EF SWI +22 7272 7273 s=strrchr(filename,'\\'); 7274 len=(s-filename)+1; \ 00000034 5C10A0E3 MOV R1,#+92 \ 00000038 0600A0E1 MOV R0,R6 \ 0000003C 170100EF SWI +279 \ 00000040 060040E0 SUB R0,R0,R6 \ 00000044 017080E2 ADD R7,R0,#+1 7275 strncpy(elf_path,filename,len); \ 00000048 0720A0E1 MOV R2,R7 \ 0000004C 0610A0E1 MOV R1,R6 \ 00000050 4F0E84E2 ADD R0,R4,#+1264 \ 00000054 160100EF SWI +278 7276 elf_path[len]=0; \ 00000058 0060A0E3 MOV R6,#+0 \ 0000005C 040087E0 ADD R0,R7,R4 \ 00000060 F064C0E5 STRB R6,[R0, #+1264] 7277 if (!UIN) \ 00000064 ........ LDR R0,??DataTable301 ;; UIN \ 00000068 000090E5 LDR R0,[R0, #+0] \ 0000006C 000050E3 CMP R0,#+0 \ 00000070 1500001A BNE ??main_1 7278 { 7279 LockSched(); \ 00000074 460100EF SWI +326 7280 ShowMSG(1,(int)LG_MSGNOUINPASS); \ 00000078 511F85E2 ADD R1,R5,#+324 \ 0000007C 0100A0E3 MOV R0,#+1 \ 00000080 480100EF SWI +328 7281 ws=AllocWS(150); \ 00000084 9600A0E3 MOV R0,#+150 \ 00000088 250100EF SWI +293 7282 str_2ws(ws,suc_config_name,128); \ 0000008C ........ LDR R1,??DataTable302 ;; suc_config_name \ 00000090 0040A0E1 MOV R4,R0 \ 00000094 8020A0E3 MOV R2,#+128 \ 00000098 6C0100EF SWI +364 7283 ExecuteFile(ws,0,0); \ 0000009C 0020A0E3 MOV R2,#+0 \ 000000A0 0210A0E1 MOV R1,R2 \ 000000A4 0400A0E1 MOV R0,R4 \ 000000A8 940000EF SWI +148 7284 FreeWS(ws); \ 000000AC 0400A0E1 MOV R0,R4 \ 000000B0 290100EF SWI +297 7285 UnlockSched(); \ 000000B4 470100EF SWI +327 7286 SUBPROC((void *)ElfKiller); \ 000000B8 ........ LDR R0,??DataTable303 ;; ElfKiller \ 000000BC 710100EF SWI +369 7287 return 0; \ 000000C0 0600A0E1 MOV R0,R6 \ 000000C4 2CD08DE2 ADD SP,SP,#+44 \ 000000C8 F087BDE8 POP {R4-R10,PC} 7288 } 7289 7290 ReadDefSettings(); 7291 setup_ICONS(); 7292 LoadXStatusText(); 7293 UpdateCSMname(); 7294 LockSched(); 7295 maincsm_id=CreateCSM(&MAINCSM.maincsm,&main_csm,0); 7296 UnlockSched(); 7297 7298 PrintLibInit(4); 7299 FontPathInit((char *)fontpath, 1); \ ??main_1: \ 000000CC ........ LDR R7,??DataTable304 ;; fontpath 7300 FontPathInit((char *)fontpath2, 1); \ 000000D0 ........ LDR R8,??DataTable305 ;; fontpath2 7301 FontPathInit((char *)fontpath3, 1); \ 000000D4 ........ LDR R9,??DataTable306 ;; fontpath3 7302 FontPathInit((char *)fontpath4, 1); \ 000000D8 ........ LDR R10,??DataTable307 ;; fontpath4 \ 000000DC ........ BL ReadDefSettings \ 000000E0 ........ BL setup_ICONS \ 000000E4 ........ _BLF LoadXStatusText,??LoadXStatusText??rA \ 000000E8 ........ BL UpdateCSMname \ 000000EC 460100EF SWI +326 \ 000000F0 0020A0E3 MOV R2,#+0 \ 000000F4 0D10A0E1 MOV R1,SP \ 000000F8 A40084E2 ADD R0,R4,#+164 \ 000000FC 070100EF SWI +263 \ 00000100 F40284E5 STR R0,[R4, #+756] \ 00000104 470100EF SWI +327 \ 00000108 0400A0E3 MOV R0,#+4 \ 0000010C ........ _BLF PrintLibInit,??PrintLibInit??rA \ 00000110 0110A0E3 MOV R1,#+1 \ 00000114 0700A0E1 MOV R0,R7 \ 00000118 ........ _BLF FontPathInit,??FontPathInit??rA \ 0000011C 0110A0E3 MOV R1,#+1 \ 00000120 0800A0E1 MOV R0,R8 \ 00000124 ........ _BLF FontPathInit,??FontPathInit??rA \ 00000128 0110A0E3 MOV R1,#+1 \ 0000012C 0900A0E1 MOV R0,R9 \ 00000130 ........ _BLF FontPathInit,??FontPathInit??rA \ 00000134 0110A0E3 MOV R1,#+1 \ 00000138 0A00A0E1 MOV R0,R10 \ 0000013C ........ _BLF FontPathInit,??FontPathInit??rA 7303 SetCanvasFlag(1); \ 00000140 0100A0E3 MOV R0,#+1 \ 00000144 ........ _BLF SetCanvasFlag,??SetCanvasFlag??rA 7304 7305 if(isSystemFont) clfont=100+pngFont; \ 00000148 ........ LDR R0,??DataTable308 ;; isSystemFont \ 0000014C 000090E5 LDR R0,[R0, #+0] \ 00000150 000050E3 CMP R0,#+0 \ 00000154 0300000A BEQ ??main_2 \ 00000158 ........ LDR R0,??DataTable309 ;; pngFont \ 0000015C 000090E5 LDR R0,[R0, #+0] \ 00000160 640080E2 ADD R0,R0,#+100 \ 00000164 000000EA B ??main_3 7306 else clfont=2; \ ??main_2: \ 00000168 0200A0E3 MOV R0,#+2 \ ??main_3: \ 0000016C 7C0484E5 STR R0,[R4, #+1148] 7307 7308 if(!strlen(fontpath2) || !strlen(fontpath3)) clfont=100+FONT_SMALL; \ 00000170 0800A0E1 MOV R0,R8 \ 00000174 1B0000EF SWI +27 \ 00000178 000050E3 CMP R0,#+0 \ 0000017C 0300000A BEQ ??main_4 \ 00000180 0900A0E1 MOV R0,R9 \ 00000184 1B0000EF SWI +27 \ 00000188 000050E3 CMP R0,#+0 \ 0000018C 0100001A BNE ??main_5 \ ??main_4: \ 00000190 6C00A0E3 MOV R0,#+108 \ 00000194 7C0484E5 STR R0,[R4, #+1148] 7309 if(!strlen(fontpath4)) { PNG_SOFTKEY=0; PNG_HEADER=0; } \ ??main_5: \ 00000198 0A00A0E1 MOV R0,R10 \ 0000019C 1B0000EF SWI +27 \ 000001A0 000050E3 CMP R0,#+0 \ 000001A4 0300001A BNE ??main_6 \ 000001A8 ........ LDR R0,??DataTable310 ;; PNG_SOFTKEY \ 000001AC 006080E5 STR R6,[R0, #+0] \ 000001B0 ........ LDR R0,??DataTable311 ;; PNG_HEADER \ 000001B4 006080E5 STR R6,[R0, #+0] 7310 7311 away_timer(); \ ??main_6: \ 000001B8 ........ BL away_timer 7312 #ifdef NEWSGOLD 7313 SetIconBarHandler(); \ 000001BC ........ LDR R0,??DataTable312 ;; addIconBar \ 000001C0 E80084E5 STR R0,[R4, #+232] 7314 #endif 7315 if(fonto==1) \ 000001C4 ........ LDR R0,??DataTable313 ;; fonto \ 000001C8 000090E5 LDR R0,[R0, #+0] \ 000001CC 010050E3 CMP R0,#+1 \ 000001D0 0B00001A BNE ??main_7 7316 { 7317 char *heght=malloc(64); \ 000001D4 4000A0E3 MOV R0,#+64 \ 000001D8 140000EF SWI +20 \ 000001DC 0060A0E1 MOV R6,R0 7318 sprintf(heght, "%s2240.png", fontpath); \ 000001E0 0720A0E1 MOV R2,R7 \ 000001E4 5C1085E2 ADD R1,R5,#+92 \ 000001E8 160000EF SWI +22 7319 paused_height=GetImgHeight((int)heght); \ 000001EC 0600A0E1 MOV R0,R6 \ 000001F0 210000EF SWI +33 \ 000001F4 B40284E5 STR R0,[R4, #+692] 7320 mfree(heght); \ 000001F8 0600A0E1 MOV R0,R6 \ 000001FC 150000EF SWI +21 \ 00000200 010000EA B ??main_8 7321 } 7322 else 7323 paused_height=fonto-100; \ ??main_7: \ 00000204 640040E2 SUB R0,R0,#+100 \ 00000208 B40284E5 STR R0,[R4, #+692] 7324 7325 GBS_StartTimerProc(&ping_tmr, 12000, Pinger2); \ ??main_8: \ 0000020C ........ LDR R2,??DataTable314 ;; Pinger2 \ 00000210 E010A0E3 MOV R1,#+224 \ 00000214 B81D81E3 ORR R1,R1,#0x2E00 \ 00000218 F800A0E3 MOV R0,#+248 \ 0000021C 600D80E3 ORR R0,R0,#0x1800 \ 00000220 040080E0 ADD R0,R0,R4 \ 00000224 4D0000EF SWI +77 7326 upTime(); \ 00000228 ........ BL upTime 7327 #ifdef NEWSGOLD 7328 //ScreenSaverTimer(); 7329 initTags(); \ 0000022C ........ _BLF initTags,??initTags??rA 7330 #endif 7331 7332 #ifndef DEBUG 7333 AutoChangeStatus_timer(); 7334 #endif 7335 init_time_zone(); \ 00000230 ........ BL init_time_zone 7336 AddKeybMsgHook((void *)my_keyhook); \ 00000234 ........ LDR R0,??DataTable315 ;; my_keyhook \ 00000238 2B0100EF SWI +299 7337 return 0; \ ??main_0: \ 0000023C 0000A0E3 MOV R0,#+0 \ 00000240 2CD08DE2 ADD SP,SP,#+44 \ 00000244 F087BDE8 POP {R4-R10,PC} ;; return 7338 } 7339 7340 //=========================================================== 7341 // Edit chat 7342 //=========================================================== 7343 \ In segment CODE, align 4, keep-with-next 7344 void edchat_locret(void){} \ edchat_locret: \ 00000000 1EFF2FE1 BX LR ;; return 7345 \ In segment CODE, align 4, keep-with-next 7346 char *ExtractAnswer(WSHDR *ws) 7347 { \ ExtractAnswer: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 7348 S_SMILES *t; 7349 int c; 7350 int len=0; 7351 int scur; 7352 char *msg=NULL; 7353 unsigned short *wsbody=ws->wsbody; \ 00000004 005090E5 LDR R5,[R0, #+0] \ 00000008 0040A0E3 MOV R4,#+0 7354 int wslen=wsbody[0]; \ 0000000C B060D5E1 LDRH R6,[R5, #+0] \ 00000010 0070A0E3 MOV R7,#+0 7355 if (wslen) \ 00000014 000056E3 CMP R6,#+0 \ 00000018 3C00000A BEQ ??ExtractAnswer_0 7356 { 7357 for (int i=0; i=0xE100) 7361 { 7362 t=FindSmileByUni(c); 7363 if (t) 7364 { 7365 if (t->lines) 7366 { 7367 len+=strlen(t->lines->text); 7368 } 7369 } 7370 else len++; 7371 } 7372 else len++; 7373 } 7374 7375 msg=malloc(len+1); \ ??ExtractAnswer_2: \ 00000024 010084E2 ADD R0,R4,#+1 \ 00000028 140000EF SWI +20 \ 0000002C 0070A0E1 MOV R7,R0 7376 scur=0; \ 00000030 0090A0E3 MOV R9,#+0 7377 for (int wcur=0; wcur=0xE100) 7382 { 7383 t=FindSmileByUni(c); 7384 if (t) 7385 { 7386 int w; 7387 char *s; 7388 if (t->lines) 7389 { 7390 s=t->lines->text; 7391 while ((w=*s++) && scurnext)) \ FindNextActiveContact: \ ??FindNextActiveContact_0: \ 00000000 000090E5 LDR R0,[R0, #+0] \ 00000004 000050E3 CMP R0,#+0 \ 00000008 0300000A BEQ ??FindNextActiveContact_1 7418 { 7419 if (t->isactive) return t; \ 0000000C AC1090E5 LDR R1,[R0, #+172] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 F9FFFF0A BEQ ??FindNextActiveContact_0 \ 00000018 1EFF2FE1 BX LR 7420 } 7421 t=(CLIST *)(&cltop); \ ??FindNextActiveContact_1: \ 0000001C ........ LDR R0,??DataTable317 ;; i_rc + 1052 \ 00000020 020000EA B ??FindNextActiveContact_2 7422 while(t=(CLIST *)(t->next)) 7423 { 7424 if (t->isactive) return t; \ ??FindNextActiveContact_3: \ 00000024 AC1090E5 LDR R1,[R0, #+172] \ 00000028 000051E3 CMP R1,#+0 \ 0000002C 1EFF2F11 BXNE LR 7425 } \ ??FindNextActiveContact_2: \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 000050E3 CMP R0,#+0 \ 00000038 F9FFFF1A BNE ??FindNextActiveContact_3 7426 return NULL; \ 0000003C 1EFF2FE1 BX LR ;; return 7427 } 7428 \ In segment CODE, align 4, keep-with-next 7429 CLIST *FindPrevActiveContact(CLIST *t) 7430 { 7431 CLIST *cl; 7432 CLIST *cl_active=NULL; 7433 cl=(CLIST *)(&cltop); \ FindPrevActiveContact: \ 00000000 ........ LDR R2,??DataTable317 ;; i_rc + 1052 \ 00000004 0010A0E3 MOV R1,#+0 \ 00000008 020000EA B ??FindPrevActiveContact_0 7434 7435 7436 while(cl=cl->next) 7437 { 7438 if (cl==t) 7439 { 7440 if (cl_active==NULL) break; 7441 else return (cl_active); 7442 } 7443 else 7444 { 7445 if (cl->isactive) cl_active=cl; \ ??FindPrevActiveContact_1: \ 0000000C AC3092E5 LDR R3,[R2, #+172] \ 00000010 000053E3 CMP R3,#+0 \ 00000014 0210A011 MOVNE R1,R2 7446 } \ ??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 7447 } 7448 while(t) \ ??FindPrevActiveContact_2: \ 0000003C 000050E3 CMP R0,#+0 \ 00000040 FBFFFF0A BEQ ??FindPrevActiveContact_3 7449 { 7450 if (t->isactive) cl_active=t; \ 00000044 AC2090E5 LDR R2,[R0, #+172] \ 00000048 000052E3 CMP R2,#+0 \ 0000004C 0010A011 MOVNE R1,R0 7451 t=t->next; \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 F8FFFFEA B ??FindPrevActiveContact_2 7452 } 7453 return cl_active; 7454 } 7455 7456 \ In segment CODE, align 4, keep-with-next 7457 void ed_options_handler(USR_MENU_ITEM *item) 7458 { \ ed_options_handler: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 7459 EDCHAT_STRUCT *ed_struct=item->user_pointer; 7460 CLIST *t; 7461 int i=item->cur_item; 7462 if (item->type==0) \ 00000004 ........ LDR R5,??DataTable323 ;; i_rc \ 00000008 58D04DE2 SUB SP,SP,#+88 \ 0000000C ........ LDR R7,??DataTable319 ;; IsMultiBuffer \ 00000010 0080A0E1 MOV R8,R0 \ 00000014 0000D8E5 LDRB R0,[R8, #+0] \ 00000018 044098E5 LDR R4,[R8, #+4] \ 0000001C B860D8E1 LDRH R6,[R8, #+8] \ 00000020 000050E3 CMP R0,#+0 \ 00000024 3200001A BNE ??ed_options_handler_0 7463 { 7464 if(IsMultiBuffer) \ 00000028 003097E5 LDR R3,[R7, #+0] \ 0000002C EC1395E5 LDR R1,[R5, #+1004] \ 00000030 102094E5 LDR R2,[R4, #+16] \ 00000034 0C0098E5 LDR R0,[R8, #+12] \ 00000038 70949FE5 LDR R9,??ed_options_handler_1 ;; `?` \ 0000003C 000053E3 CMP R3,#+0 \ 00000040 1900000A BEQ ??ed_options_handler_2 7465 { 7466 switch(i) \ 00000044 0630B0E1 MOVS R3,R6 \ 00000048 0600000A BEQ ??ed_options_handler_3 \ 0000004C 013056E2 SUBS R3,R6,#+1 \ 00000050 0D00000A BEQ ??ed_options_handler_4 \ 00000054 013053E2 SUBS R3,R3,#+1 \ 00000058 0D00000A BEQ ??ed_options_handler_5 \ 0000005C 013053E2 SUBS R3,R3,#+1 \ 00000060 0D00000A BEQ ??ed_options_handler_6 \ 00000064 0E0000EA B ??ed_options_handler_7 7467 { 7468 case 0: 7469 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ ??ed_options_handler_3: \ 00000068 040094E5 LDR R0,[R4, #+4] \ 0000006C 820100EF SWI +386 \ 00000070 081094E5 LDR R1,[R4, #+8] \ 00000074 010050E1 CMP R0,R1 \ 00000078 0C009815 LDRNE R0,[R8, #+12] \ 0000007C 08108912 ADDNE R1,R9,#+8 7470 ascii2ws(item->ws,"Cмайлы"); \ 00000080 0C009805 LDREQ R0,[R8, #+12] \ 00000084 0910A001 MOVEQ R1,R9 \ 00000088 180000EA B ??ed_options_handler_8 7471 else 7472 ascii2ws(item->ws,"В буфер"); 7473 break; 7474 case 1: 7475 ascii2ws(item->ws,"Из буфера"); \ ??ed_options_handler_4: \ 0000008C 101089E2 ADD R1,R9,#+16 \ 00000090 160000EA B ??ed_options_handler_8 7476 break; 7477 case 2: 7478 ascii2ws(item->ws,"Команда"); \ ??ed_options_handler_5: \ 00000094 1C1089E2 ADD R1,R9,#+28 \ 00000098 140000EA B ??ed_options_handler_8 7479 break; 7480 case 3: 7481 ascii2ws(item->ws,"Очистить буфер"); \ ??ed_options_handler_6: \ 0000009C 241089E2 ADD R1,R9,#+36 \ 000000A0 120000EA B ??ed_options_handler_8 7482 break; 7483 default: 7484 i-=4; \ ??ed_options_handler_7: \ 000000A4 046046E2 SUB R6,R6,#+4 7485 if (iloaded_templates) ascii2ws(item->ws,templates_lines[i]); \ 000000A8 0D0000EA B ??ed_options_handler_9 7486 break; 7487 } 7488 } 7489 else 7490 { 7491 switch(i) \ ??ed_options_handler_2: \ 000000AC 0630B0E1 MOVS R3,R6 \ 000000B0 0400000A BEQ ??ed_options_handler_10 \ 000000B4 013056E2 SUBS R3,R6,#+1 \ 000000B8 0400000A BEQ ??ed_options_handler_11 \ 000000BC 013053E2 SUBS R3,R3,#+1 \ 000000C0 0400000A BEQ ??ed_options_handler_12 \ 000000C4 050000EA B ??ed_options_handler_13 7492 { 7493 case 0: 7494 ascii2ws(item->ws,LG_MNUEDNEXTACT); \ ??ed_options_handler_10: \ 000000C8 341089E2 ADD R1,R9,#+52 \ 000000CC 070000EA B ??ed_options_handler_8 7495 break; 7496 case 1: 7497 ascii2ws(item->ws,LG_MNUEDPREVACT); \ ??ed_options_handler_11: \ 000000D0 441089E2 ADD R1,R9,#+68 \ 000000D4 050000EA B ??ed_options_handler_8 7498 break; 7499 case 2: 7500 ascii2ws(item->ws,"Команды"); \ ??ed_options_handler_12: \ 000000D8 541089E2 ADD R1,R9,#+84 \ 000000DC 030000EA B ??ed_options_handler_8 7501 break; 7502 default: 7503 i-=3; \ ??ed_options_handler_13: \ 000000E0 036046E2 SUB R6,R6,#+3 7504 if (iloaded_templates) ascii2ws(item->ws,templates_lines[i]); \ ??ed_options_handler_9: \ 000000E4 020056E1 CMP R6,R2 \ 000000E8 EE0000AA BGE ??ed_options_handler_14 \ 000000EC 061191E7 LDR R1,[R1, +R6, LSL #+2] \ ??ed_options_handler_8: \ 000000F0 ........ _BLF ascii2ws,??ascii2ws??rA 7505 break; 7506 } 7507 } 7508 } 7509 7510 if (item->type==1) \ ??ed_options_handler_0: \ 000000F4 0000D8E5 LDRB R0,[R8, #+0] \ 000000F8 010050E3 CMP R0,#+1 \ 000000FC E900001A BNE ??ed_options_handler_14 7511 { 7512 if(IsMultiBuffer) \ 00000100 003097E5 LDR R3,[R7, #+0] \ 00000104 EC1395E5 LDR R1,[R5, #+1004] \ 00000108 102094E5 LDR R2,[R4, #+16] \ 0000010C 040094E5 LDR R0,[R4, #+4] \ 00000110 000053E3 CMP R3,#+0 \ 00000114 9C00000A BEQ ??ed_options_handler_15 7513 { 7514 switch(i) \ 00000118 0630B0E1 MOVS R3,R6 \ 0000011C 0600000A BEQ ??ed_options_handler_16 \ 00000120 013056E2 SUBS R3,R6,#+1 \ 00000124 4200000A BEQ ??ed_options_handler_17 \ 00000128 013053E2 SUBS R3,R3,#+1 \ 0000012C 5C00000A BEQ ??ed_options_handler_18 \ 00000130 013053E2 SUBS R3,R3,#+1 \ 00000134 5D00000A BEQ ??ed_options_handler_19 \ 00000138 600000EA B ??ed_options_handler_20 7515 { 7516 case 0: 7517 { 7518 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ ??ed_options_handler_16: \ 0000013C 820100EF SWI +386 \ 00000140 081094E5 LDR R1,[R4, #+8] \ 00000144 010050E1 CMP R0,R1 \ 00000148 0200001A BNE ??ed_options_handler_21 7519 CreateSmileSelectGUI(ed_struct); \ 0000014C 0400A0E1 MOV R0,R4 \ 00000150 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA \ 00000154 340000EA B ??ed_options_handler_22 7520 else 7521 { 7522 int ed; 7523 EDITCONTROL ec; 7524 EDITCONTROL ec_hdr; 7525 7526 ed=EDIT_GetFocus(ed_struct->ed_chatgui); \ ??ed_options_handler_21: \ 00000158 040094E5 LDR R0,[R4, #+4] \ 0000015C 820100EF SWI +386 \ 00000160 0060A0E1 MOV R6,R0 7527 ExtractEditControl(ed_struct->ed_chatgui,ed,&ec); \ 00000164 040094E5 LDR R0,[R4, #+4] \ 00000168 2C208DE2 ADD R2,SP,#+44 \ 0000016C 0610A0E1 MOV R1,R6 \ 00000170 690100EF SWI +361 7528 ExtractEditControl(ed_struct->ed_chatgui,ed-1,&ec_hdr); \ 00000174 040094E5 LDR R0,[R4, #+4] \ 00000178 0D20A0E1 MOV R2,SP \ 0000017C 011046E2 SUB R1,R6,#+1 \ 00000180 690100EF SWI +361 7529 7530 wsInsertChar(wsBuffer,'>',wstrlen(wsBuffer)+1); \ 00000184 B80295E5 LDR R0,[R5, #+696] \ 00000188 230100EF SWI +291 \ 0000018C 012080E2 ADD R2,R0,#+1 \ 00000190 B80295E5 LDR R0,[R5, #+696] \ 00000194 3E10A0E3 MOV R1,#+62 \ 00000198 1D0000EF SWI +29 7531 wsInsertChar(wsBuffer,' ',wstrlen(wsBuffer)+1); \ 0000019C B80295E5 LDR R0,[R5, #+696] \ 000001A0 230100EF SWI +291 \ 000001A4 012080E2 ADD R2,R0,#+1 \ 000001A8 B80295E5 LDR R0,[R5, #+696] \ 000001AC 2010A0E3 MOV R1,#+32 \ 000001B0 1D0000EF SWI +29 7532 wstrcat(wsBuffer,ec_hdr.pWS); \ 000001B4 28109DE5 LDR R1,[SP, #+40] \ 000001B8 B80295E5 LDR R0,[R5, #+696] \ 000001BC 210100EF SWI +289 7533 wsInsertChar(wsBuffer,'\n',wstrlen(wsBuffer)+1); \ 000001C0 B80295E5 LDR R0,[R5, #+696] \ 000001C4 230100EF SWI +291 \ 000001C8 012080E2 ADD R2,R0,#+1 \ 000001CC B80295E5 LDR R0,[R5, #+696] \ 000001D0 0A10A0E3 MOV R1,#+10 \ 000001D4 1D0000EF SWI +29 7534 7535 wsInsertChar(wsBuffer,'>',wstrlen(wsBuffer)+1); \ 000001D8 B80295E5 LDR R0,[R5, #+696] \ 000001DC 230100EF SWI +291 \ 000001E0 012080E2 ADD R2,R0,#+1 \ 000001E4 B80295E5 LDR R0,[R5, #+696] \ 000001E8 3E10A0E3 MOV R1,#+62 \ 000001EC 1D0000EF SWI +29 7536 wsInsertChar(wsBuffer,' ',wstrlen(wsBuffer)+1); \ 000001F0 B80295E5 LDR R0,[R5, #+696] \ 000001F4 230100EF SWI +291 \ 000001F8 012080E2 ADD R2,R0,#+1 \ 000001FC B80295E5 LDR R0,[R5, #+696] \ 00000200 2010A0E3 MOV R1,#+32 \ 00000204 1D0000EF SWI +29 7537 wstrcat(wsBuffer,ec.pWS); \ 00000208 54109DE5 LDR R1,[SP, #+84] \ 0000020C B80295E5 LDR R0,[R5, #+696] \ 00000210 210100EF SWI +289 7538 wsInsertChar(wsBuffer,'\n',wstrlen(wsBuffer)+1); \ 00000214 B80295E5 LDR R0,[R5, #+696] \ 00000218 230100EF SWI +291 \ 0000021C 012080E2 ADD R2,R0,#+1 \ 00000220 B80295E5 LDR R0,[R5, #+696] \ 00000224 0A10A0E3 MOV R1,#+10 \ 00000228 1D0000EF SWI +29 \ ??ed_options_handler_22: \ 0000022C 58D08DE2 ADD SP,SP,#+88 \ 00000230 F083BDE8 POP {R4-R9,PC} 7539 } 7540 } 7541 break; 7542 case 1: 7543 { 7544 EDITCONTROL ec; 7545 WSHDR *ws; 7546 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ ??ed_options_handler_17: \ 00000234 081094E5 LDR R1,[R4, #+8] \ 00000238 0D20A0E1 MOV R2,SP \ 0000023C 690100EF SWI +361 7547 ws=AllocWS(ec.pWS->wsbody[0]+wsBuffer->wsbody[0]+1); \ 00000240 28009DE5 LDR R0,[SP, #+40] \ 00000244 B81295E5 LDR R1,[R5, #+696] \ 00000248 000090E5 LDR R0,[R0, #+0] \ 0000024C 001091E5 LDR R1,[R1, #+0] \ 00000250 B000D0E1 LDRH R0,[R0, #+0] \ 00000254 B010D1E1 LDRH R1,[R1, #+0] \ 00000258 000081E0 ADD R0,R1,R0 \ 0000025C 010080E2 ADD R0,R0,#+1 \ 00000260 250100EF SWI +293 7548 wstrcpy(ws,ec.pWS); \ 00000264 28109DE5 LDR R1,[SP, #+40] \ 00000268 0060A0E1 MOV R6,R0 \ 0000026C 1F0100EF SWI +287 7549 wstrcat(ws,wsBuffer); \ 00000270 B81295E5 LDR R1,[R5, #+696] \ 00000274 0600A0E1 MOV R0,R6 \ 00000278 210100EF SWI +289 7550 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ws); \ 0000027C 040094E5 LDR R0,[R4, #+4] \ 00000280 081094E5 LDR R1,[R4, #+8] \ 00000284 0620A0E1 MOV R2,R6 \ 00000288 DE0100EF SWI +478 7551 EDIT_SetCursorPos(ed_struct->ed_chatgui,wstrlen(ws)); \ 0000028C 0600A0E1 MOV R0,R6 \ 00000290 230100EF SWI +291 \ 00000294 0010A0E1 MOV R1,R0 \ 00000298 040094E5 LDR R0,[R4, #+4] \ 0000029C D40100EF SWI +468 \ 000002A0 E1FFFFEA B ??ed_options_handler_22 7552 } 7553 break; 7554 case 2: 7555 DispCmdMenu(ed_struct); \ ??ed_options_handler_18: \ 000002A4 0400A0E1 MOV R0,R4 \ 000002A8 ........ BL DispCmdMenu \ 000002AC DEFFFFEA B ??ed_options_handler_22 7556 break; 7557 case 3: 7558 CutWSTR(wsBuffer,0); \ ??ed_options_handler_19: \ 000002B0 B80295E5 LDR R0,[R5, #+696] \ 000002B4 0010A0E3 MOV R1,#+0 \ 000002B8 260100EF SWI +294 \ 000002BC DAFFFFEA B ??ed_options_handler_22 7559 break; 7560 default: 7561 i-=4; \ ??ed_options_handler_20: \ 000002C0 046046E2 SUB R6,R6,#+4 7562 if (iloaded_templates) \ 000002C4 020056E1 CMP R6,R2 \ 000002C8 760000AA BGE ??ed_options_handler_14 7563 { 7564 EDITCONTROL ec; 7565 WSHDR *ed_ws; 7566 int c; 7567 char *p=templates_lines[i]; \ 000002CC 065191E7 LDR R5,[R1, +R6, LSL #+2] 7568 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ 000002D0 081094E5 LDR R1,[R4, #+8] \ 000002D4 0D20A0E1 MOV R2,SP \ 000002D8 690100EF SWI +361 7569 ed_ws=AllocWS(ec.pWS->wsbody[0]+strlen(p)); \ 000002DC 0500A0E1 MOV R0,R5 \ 000002E0 1B0000EF SWI +27 \ 000002E4 28109DE5 LDR R1,[SP, #+40] \ 000002E8 001091E5 LDR R1,[R1, #+0] \ 000002EC B010D1E1 LDRH R1,[R1, #+0] \ 000002F0 010080E0 ADD R0,R0,R1 \ 000002F4 250100EF SWI +293 7570 wstrcpy(ed_ws,ec.pWS); \ 000002F8 28109DE5 LDR R1,[SP, #+40] \ 000002FC 0060A0E1 MOV R6,R0 \ 00000300 1F0100EF SWI +287 7571 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ 00000304 040094E5 LDR R0,[R4, #+4] \ 00000308 820100EF SWI +386 \ 0000030C 081094E5 LDR R1,[R4, #+8] \ 00000310 010050E1 CMP R0,R1 \ 00000314 1800001A BNE ??ed_options_handler_23 7572 { 7573 int pos=EDIT_GetCursorPos(ed_struct->ed_chatgui); \ 00000318 040094E5 LDR R0,[R4, #+4] \ 0000031C D30100EF SWI +467 \ 00000320 0070A0E1 MOV R7,R0 \ 00000324 050000EA B ??ed_options_handler_24 7574 while(c=*p++) 7575 { 7576 wsInsertChar(ed_ws,char8to16(c),pos++); \ ??ed_options_handler_25: \ 00000328 ........ _BLF char8to16,??char8to16??rA \ 0000032C 0720A0E1 MOV R2,R7 \ 00000330 0010A0E1 MOV R1,R0 \ 00000334 0600A0E1 MOV R0,R6 \ 00000338 1D0000EF SWI +29 \ 0000033C 017087E2 ADD R7,R7,#+1 7577 } \ ??ed_options_handler_24: \ 00000340 ........ LDRB R0,[R5], #+1 \ 00000344 000050E3 CMP R0,#+0 \ 00000348 F6FFFF1A BNE ??ed_options_handler_25 7578 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ ??ed_options_handler_26: \ 0000034C 081094E5 LDR R1,[R4, #+8] \ 00000350 040094E5 LDR R0,[R4, #+4] \ 00000354 0620A0E1 MOV R2,R6 \ 00000358 DE0100EF SWI +478 7579 EDIT_SetCursorPos(ed_struct->ed_chatgui,pos); \ 0000035C 040094E5 LDR R0,[R4, #+4] \ 00000360 0710A0E1 MOV R1,R7 \ 00000364 D40100EF SWI +468 \ 00000368 4C0000EA B ??ed_options_handler_27 7580 } 7581 else 7582 { 7583 while(c=*p++) 7584 { 7585 wsAppendChar(ed_ws,char8to16(c)); \ ??ed_options_handler_28: \ 0000036C ........ _BLF char8to16,??char8to16??rA \ 00000370 0010A0E1 MOV R1,R0 \ 00000374 0600A0E1 MOV R0,R6 \ 00000378 1C0000EF SWI +28 7586 } \ ??ed_options_handler_23: \ 0000037C ........ LDRB R0,[R5], #+1 \ 00000380 000050E3 CMP R0,#+0 \ 00000384 F8FFFF1A BNE ??ed_options_handler_28 7587 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ 00000388 400000EA B ??ed_options_handler_29 7588 } 7589 FreeWS(ed_ws); 7590 } 7591 break; 7592 } 7593 } 7594 else 7595 { 7596 switch(i) \ ??ed_options_handler_15: \ 0000038C 007094E5 LDR R7,[R4, #+0] \ 00000390 0630B0E1 MOVS R3,R6 \ 00000394 0400000A BEQ ??ed_options_handler_30 \ 00000398 013056E2 SUBS R3,R6,#+1 \ 0000039C 0D00000A BEQ ??ed_options_handler_31 \ 000003A0 013053E2 SUBS R3,R3,#+1 \ 000003A4 BEFFFF0A BEQ ??ed_options_handler_18 \ 000003A8 0D0000EA B ??ed_options_handler_32 7597 { 7598 case 0: 7599 t=FindNextActiveContact(ed_struct->ed_contact); \ ??ed_options_handler_30: \ 000003AC 0700A0E1 MOV R0,R7 \ 000003B0 ........ BL FindNextActiveContact \ ??ed_options_handler_33: \ 000003B4 0040B0E1 MOVS R4,R0 7600 if (t && t!=ed_struct->ed_contact) \ 000003B8 07005411 CMPNE R4,R7 \ 000003BC 3900000A BEQ ??ed_options_handler_14 7601 { 7602 GeneralFunc_flag1(edchat_id,1); \ 000003C0 240495E5 LDR R0,[R5, #+1060] \ 000003C4 0110A0E3 MOV R1,#+1 \ 000003C8 3D0100EF SWI +317 7603 CreateEditChat(t); \ 000003CC 0400A0E1 MOV R0,R4 \ 000003D0 ........ BL CreateEditChat \ 000003D4 94FFFFEA B ??ed_options_handler_22 7604 } 7605 break; 7606 case 1: 7607 t=FindPrevActiveContact(ed_struct->ed_contact); \ ??ed_options_handler_31: \ 000003D8 0700A0E1 MOV R0,R7 \ 000003DC ........ BL FindPrevActiveContact \ 000003E0 F3FFFFEA B ??ed_options_handler_33 7608 if (t && t!=ed_struct->ed_contact) 7609 { 7610 GeneralFunc_flag1(edchat_id,1); 7611 CreateEditChat(t); 7612 } 7613 break; 7614 case 2: 7615 DispCmdMenu(ed_struct); 7616 break; 7617 default: 7618 i-=3; \ ??ed_options_handler_32: \ 000003E4 036046E2 SUB R6,R6,#+3 7619 if (iloaded_templates) \ 000003E8 020056E1 CMP R6,R2 \ 000003EC 2D0000AA BGE ??ed_options_handler_14 7620 { 7621 EDITCONTROL ec; 7622 WSHDR *ed_ws; 7623 int c; 7624 char *p=templates_lines[i]; \ 000003F0 065191E7 LDR R5,[R1, +R6, LSL #+2] 7625 ExtractEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,&ec); \ 000003F4 081094E5 LDR R1,[R4, #+8] \ 000003F8 0D20A0E1 MOV R2,SP \ 000003FC 690100EF SWI +361 7626 ed_ws=AllocWS(ec.pWS->wsbody[0]+strlen(p)); \ 00000400 0500A0E1 MOV R0,R5 \ 00000404 1B0000EF SWI +27 \ 00000408 28109DE5 LDR R1,[SP, #+40] \ 0000040C 001091E5 LDR R1,[R1, #+0] \ 00000410 B010D1E1 LDRH R1,[R1, #+0] \ 00000414 010080E0 ADD R0,R0,R1 \ 00000418 250100EF SWI +293 7627 wstrcpy(ed_ws,ec.pWS); \ 0000041C 28109DE5 LDR R1,[SP, #+40] \ 00000420 0060A0E1 MOV R6,R0 \ 00000424 1F0100EF SWI +287 7628 if (EDIT_GetFocus(ed_struct->ed_chatgui)==ed_struct->ed_answer) \ 00000428 040094E5 LDR R0,[R4, #+4] \ 0000042C 820100EF SWI +386 \ 00000430 081094E5 LDR R1,[R4, #+8] \ 00000434 010050E1 CMP R0,R1 \ 00000438 1100001A BNE ??ed_options_handler_34 7629 { 7630 int pos=EDIT_GetCursorPos(ed_struct->ed_chatgui); \ 0000043C 040094E5 LDR R0,[R4, #+4] \ 00000440 D30100EF SWI +467 \ 00000444 0070A0E1 MOV R7,R0 \ 00000448 050000EA B ??ed_options_handler_35 7631 while(c=*p++) 7632 { 7633 wsInsertChar(ed_ws,char8to16(c),pos++); \ ??ed_options_handler_36: \ 0000044C ........ _BLF char8to16,??char8to16??rA \ 00000450 0010A0E1 MOV R1,R0 \ 00000454 0720A0E1 MOV R2,R7 \ 00000458 0600A0E1 MOV R0,R6 \ 0000045C 1D0000EF SWI +29 \ 00000460 017087E2 ADD R7,R7,#+1 7634 } \ ??ed_options_handler_35: \ 00000464 ........ LDRB R0,[R5], #+1 \ 00000468 000050E3 CMP R0,#+0 \ 0000046C F6FFFF1A BNE ??ed_options_handler_36 7635 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ 00000470 B5FFFFEA B ??ed_options_handler_26 7636 EDIT_SetCursorPos(ed_struct->ed_chatgui,pos); 7637 } 7638 else 7639 { 7640 while(c=*p++) 7641 { 7642 wsAppendChar(ed_ws,char8to16(c)); \ ??ed_options_handler_37: \ 00000474 ........ _BLF char8to16,??char8to16??rA \ 00000478 0010A0E1 MOV R1,R0 \ 0000047C 0600A0E1 MOV R0,R6 \ 00000480 1C0000EF SWI +28 7643 } \ ??ed_options_handler_34: \ 00000484 ........ LDRB R0,[R5], #+1 \ 00000488 000050E3 CMP R0,#+0 \ 0000048C F8FFFF1A BNE ??ed_options_handler_37 7644 EDIT_SetTextToEditControl(ed_struct->ed_chatgui,ed_struct->ed_answer,ed_ws); \ ??ed_options_handler_29: \ 00000490 081094E5 LDR R1,[R4, #+8] \ 00000494 040094E5 LDR R0,[R4, #+4] \ 00000498 0620A0E1 MOV R2,R6 \ 0000049C DE0100EF SWI +478 7645 } 7646 FreeWS(ed_ws); \ ??ed_options_handler_27: \ 000004A0 0600A0E1 MOV R0,R6 \ 000004A4 290100EF SWI +297 7647 } 7648 break; 7649 } 7650 } 7651 } 7652 } \ ??ed_options_handler_14: \ 000004A8 58D08DE2 ADD SP,SP,#+88 ;; stack cleaning \ 000004AC F083BDE8 POP {R4-R9,PC} ;; return \ ??ed_options_handler_1: \ 000004B0 ........ DC32 `?` 7653 \ In segment CODE, align 4, keep-with-next 7654 unsigned short * wstrstr(unsigned short *ws, char *str, int *wslen, int len) 7655 { \ 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 7656 char *s; 7657 unsigned short *w; 7658 int l; 7659 7660 while(*wslen >= len) 7661 { 7662 s = str; 7663 w = ws; 7664 l = len; 7665 for(; (char16to8(*w) == *s) && l; w++, s++, l--); 7666 if(!l) return ws; 7667 ws++; 7668 (*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} 7669 } 7670 return 0; \ ??wstrstr_2: \ 00000074 0000A0E3 MOV R0,#+0 \ 00000078 F087BDE8 POP {R4-R10,PC} ;; return 7671 7672 } 7673 \ In segment CODE, align 4, keep-with-next 7674 int IsUrl(WSHDR *ws, int pos, char *link) 7675 { \ IsUrl: \ 00000000 F14F2DE9 PUSH {R0,R4-R11,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0150A0E1 MOV R5,R1 7676 const char *valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%;:@&=/?абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; 7677 7678 int len = wstrlen(ws); 7679 unsigned short *str = ws->wsbody+1, *tmp, *begin; 7680 tmp = str; 7681 7682 begin = str = wstrstr(str, "http://", &len, 7); \ 0000000C ........ LDR R7,??DataTable321 ;; `?` \ 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 7683 7684 while(str && (begin-tmp <= pos)) 7685 { 7686 while(len && strchr(valid, char16to8(*str))) {str++; len--;} 7687 if(str-tmp >= pos-2) 7688 { 7689 for(;begin < str; begin++, link++) 7690 *link = char16to8(*begin); 7691 link[str-begin] = 0; 7692 return 1; 7693 } 7694 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 7695 } 7696 7697 len = wstrlen(ws); \ ??IsUrl_2: \ 00000080 04009DE5 LDR R0,[SP, #+4] \ 00000084 230100EF SWI +291 \ 00000088 00008DE5 STR R0,[SP, #+0] 7698 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} 7699 while(str && (begin-tmp <= pos)) 7700 { 7701 while(len && strchr(valid, char16to8(*str))) {str++; len--;} 7702 if(str-tmp >= pos-2) 7703 { 7704 for(;begin < str; begin++, link++) 7705 *link = char16to8(*begin); 7706 link[str-begin] = 0; 7707 return 1; 7708 } 7709 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 7710 } 7711 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 7712 } 7713 7714 #define UTF16_DIS_UNDERLINE (0xE002) 7715 #define UTF16_ENA_UNDERLINE (0xE001) 7716 \ In segment CODE, align 4, keep-with-next 7717 void ParseAnswer(WSHDR *ws, const char *s) 7718 { \ ParseAnswer: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 0040A0E1 MOV R4,R0 7719 const char *valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%;:@&=/?абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; 7720 S_SMILES *t; 7721 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 7722 STXT_SMILES *st; 7723 unsigned int wchar; 7724 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 7725 CutWSTR(ws,0); \ 00000034 0010A0E3 MOV R1,#+0 \ 00000038 0400A0E1 MOV R0,R4 \ 0000003C 260100EF SWI +294 \ 00000040 160000EA B ??ParseAnswer_1 7726 int i; 7727 while(wchar=*s) 7728 { 7729 if(s==strstr(s, "http://") || s == strstr(s, "www.")) 7730 { 7731 wsAppendChar(ws,UTF16_ENA_UNDERLINE); 7732 while(*s && strchr(valid, *s)) 7733 { 7734 wchar=char8to16(*s); \ ??ParseAnswer_2: \ 00000044 ........ LDRB R0,[R5], #+1 \ 00000048 ........ _BLF char8to16,??char8to16??rA 7735 wsAppendChar(ws,wchar); \ 0000004C 0010A0E1 MOV R1,R0 \ ??ParseAnswer_3: \ 00000050 0400A0E1 MOV R0,R4 \ 00000054 1C0000EF SWI +28 7736 s++; 7737 } \ 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 7738 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 7739 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 7740 continue; \ ??ParseAnswer_1: \ 000000A0 0070D5E5 LDRB R7,[R5, #+0] \ 000000A4 000057E3 CMP R7,#+0 \ 000000A8 4F00000A BEQ ??ParseAnswer_5 \ 000000AC ........ LDR R9,??DataTable321 ;; `?` \ 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 7741 } 7742 t=t_root; \ ??ParseAnswer_7: \ 000000E4 0690A0E1 MOV R9,R6 \ 000000E8 230000EA B ??ParseAnswer_8 7743 while(t) 7744 { 7745 st=t->lines; 7746 while(st) 7747 { 7748 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 7749 { 7750 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 7751 } 7752 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] 7753 } \ ??ParseAnswer_13: \ 00000170 00005AE3 CMP R10,#+0 \ 00000174 DCFFFF1A BNE ??ParseAnswer_9 7754 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 7755 } 7756 L1: 7757 if (t) 7758 { 7759 wchar=t->uni_smile; 7760 s+=strlen(st->text); 7761 ulb=s[0]+(s[1]<<8)+(s[2]<<16)+(s[3]<<24); 7762 } 7763 else 7764 { 7765 wchar=char8to16(wchar); \ 00000188 0700A0E1 MOV R0,R7 \ 0000018C ........ _BLF char8to16,??char8to16??rA \ 00000190 0070A0E1 MOV R7,R0 7766 s++; 7767 ulb>>=8; 7768 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 7769 } \ ??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 7770 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 7771 } 7772 i=ws->wsbody[0]; \ ??ParseAnswer_5: \ 000001EC 000094E5 LDR R0,[R4, #+0] \ 000001F0 B010D0E1 LDRH R1,[R0, #+0] \ 000001F4 000000EA B ??ParseAnswer_15 7773 while(i>1) 7774 { 7775 if (ws->wsbody[i--]!=13) break; 7776 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 7777 } 7778 } \ 0000021C F187BDE8 POP {R0,R4-R10,PC} ;; return \ ??ParseAnswer_0: \ 00000220 ........ DC32 s_top 7779 \ In segment CODE, align 4, keep-with-next 7780 void SaveAnswer(CLIST *cl, WSHDR *ws) 7781 { \ SaveAnswer: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0100A0E1 MOV R0,R1 7782 char *p=ExtractAnswer(ws); \ 0000000C ........ BL ExtractAnswer \ 00000010 0050A0E1 MOV R5,R0 7783 mfree(cl->answer); \ 00000014 A40094E5 LDR R0,[R4, #+164] \ 00000018 150000EF SWI +21 7784 cl->answer=p; \ 0000001C A45084E5 STR R5,[R4, #+164] 7785 } \ 00000020 3080BDE8 POP {R4,R5,PC} ;; return 7786 7787 //links applicator 7788 7789 \ In segment CODE, align 4, keep-with-next 7790 int GetTempName(void) 7791 { \ GetTempName: \ 00000000 00402DE9 PUSH {LR} \ 00000004 10D04DE2 SUB SP,SP,#+16 7792 static const int DMonth[]={0,31,59,90,120,151,181,212,243,273,304,334,365}; 7793 unsigned long iday; 7794 TTime tt; 7795 TDate dd; 7796 GetDateTime(&dd,&tt); \ 00000008 08108DE2 ADD R1,SP,#+8 \ 0000000C 0D00A0E1 MOV R0,SP \ 00000010 B40000EF SWI +180 7797 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 7798 iday=365*dd.year+DMonth[dd.month-1]+(dd.day - 1); 7799 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] 7800 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 7801 iday++; \ ??GetTempName_1: \ 00000078 011081E2 ADD R1,R1,#+1 7802 iday=(tt.sec+60*(tt.min+60*(tt.hour+24* iday))); 7803 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 7804 } \ 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 7805 7806 \ In segment CODE, align 4, keep-with-next 7807 void recon() 7808 { 7809 SUBPROC((void*)end_socket); \ recon: \ 00000000 ........ LDR R0,??DataTable322 ;; end_socket \ 00000004 10402DE9 PUSH {R4,LR} 7810 GBS_DelTimer(&reconnect_tmr); \ 00000008 ........ LDR R4,??DataTable323 ;; i_rc \ 0000000C 710100EF SWI +369 \ 00000010 7000A0E3 MOV R0,#+112 \ 00000014 780D80E3 ORR R0,R0,#0x1E00 \ 00000018 040080E0 ADD R0,R0,R4 \ 0000001C 8C0100EF SWI +396 7811 DNR_TRIES=3; \ 00000020 0300A0E3 MOV R0,#+3 \ 00000024 3C0484E5 STR R0,[R4, #+1084] 7812 SUBPROC((void *)create_connect); \ 00000028 ........ LDR R0,??DataTable324 ;; create_connect \ 0000002C 710100EF SWI +369 7813 } \ 00000030 1080BDE8 POP {R4,PC} ;; return 7814 \ In segment CODE, align 4, keep-with-next 7815 int edchat_onkey(GUI *data, GUI_MSG *msg) 7816 { \ edchat_onkey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 7817 //-1 - do redraw 7818 GBS_DelTimer(&tmr_illumination); \ 00000004 ........ LDR R6,??DataTable333 ;; i_rc \ 00000008 57DF4DE2 SUB SP,SP,#+348 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 0180A0E1 MOV R8,R1 \ 00000014 5000A0E3 MOV R0,#+80 \ 00000018 780D80E3 ORR R0,R0,#0x1E00 \ 0000001C 060080E0 ADD R0,R0,R6 \ 00000020 8C0100EF SWI +396 7819 CLIST *t; 7820 TPKT *p; 7821 EDITCONTROL ec; 7822 int len, f;//2026rev 7823 unsigned err;//2026rev 7824 char *s; 7825 int l=msg->gbsmsg->submess; \ 00000024 040098E5 LDR R0,[R8, #+4] \ 00000028 089090E5 LDR R9,[R0, #+8] 7826 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 DF0100EF SWI +479 \ 00000034 0050A0E1 MOV R5,R0 7827 char fn[256]; 7828 7829 if (msg->keys==0xFFF) \ 00000038 F200D8E1 LDRSH R0,[R8, #+2] \ 0000003C FF10A0E3 MOV R1,#+255 \ 00000040 F01E81E3 ORR R1,R1,#0xF00 \ 00000044 010050E1 CMP R0,R1 \ 00000048 0200001A BNE ??edchat_onkey_0 7830 { 7831 void ec_menu(EDCHAT_STRUCT *); 7832 ec_menu(ed_struct); \ 0000004C 0500A0E1 MOV R0,R5 \ 00000050 ........ BL ec_menu 7833 return(-1); \ ??edchat_onkey_1: \ 00000054 B40000EA B ??edchat_onkey_2 7834 } 7835 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 B10000EA B ??edchat_onkey_4 7836 7837 void AddSmile(GUI *data); 7838 if (msg->gbsmsg->msg==LONG_PRESS) \ ??edchat_onkey_3: \ 00000068 040098E5 LDR R0,[R8, #+4] \ 0000006C 14769FE5 LDR R7,??edchat_onkey_5 ;; `?` \ 00000070 040090E5 LDR R0,[R0, #+4] \ 00000074 9510A0E3 MOV R1,#+149 \ 00000078 401F81E3 ORR R1,R1,#0x100 \ 0000007C 010050E1 CMP R0,R1 \ 00000080 6D00001A BNE ??edchat_onkey_6 7839 { 7840 if (l==RIGHT_BUTTON) \ 00000084 3E0059E3 CMP R9,#+62 \ 00000088 2800001A BNE ??edchat_onkey_7 7841 { 7842 if(LongRightAction==2 && EDIT_GetFocus(data)==ed_struct->ed_answer) \ 0000008C F8A59FE5 LDR R10,??edchat_onkey_5+0x4 ;; LongRightAction \ 00000090 00009AE5 LDR R0,[R10, #+0] \ 00000094 020050E3 CMP R0,#+2 \ 00000098 0700001A BNE ??edchat_onkey_8 \ 0000009C 0400A0E1 MOV R0,R4 \ 000000A0 820100EF SWI +386 \ 000000A4 081095E5 LDR R1,[R5, #+8] \ 000000A8 010050E1 CMP R0,R1 \ 000000AC 0200001A BNE ??edchat_onkey_8 7843 CreateSmileSelectGUI(ed_struct); \ 000000B0 0500A0E1 MOV R0,R5 \ 000000B4 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA \ 000000B8 5F0000EA B ??edchat_onkey_6 7844 else 7845 if(LongRightAction==1) \ ??edchat_onkey_8: \ 000000BC 00009AE5 LDR R0,[R10, #+0] \ 000000C0 010050E3 CMP R0,#+1 \ 000000C4 5C00001A BNE ??edchat_onkey_6 7846 { 7847 if (EDIT_GetFocus(data)==ed_struct->ed_answer) \ 000000C8 0400A0E1 MOV R0,R4 \ 000000CC 820100EF SWI +386 \ 000000D0 081095E5 LDR R1,[R5, #+8] \ 000000D4 010050E1 CMP R0,R1 \ 000000D8 5700001A BNE ??edchat_onkey_6 7848 { 7849 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 000000DC 04208DE2 ADD R2,SP,#+4 \ 000000E0 0400A0E1 MOV R0,R4 \ 000000E4 690100EF SWI +361 7850 if (ec.pWS->wsbody[0]==(EDIT_GetCursorPos(data)-1)) \ 000000E8 0400A0E1 MOV R0,R4 \ 000000EC D30100EF SWI +467 \ 000000F0 2C109DE5 LDR R1,[SP, #+44] \ 000000F4 010040E2 SUB R0,R0,#+1 \ 000000F8 001091E5 LDR R1,[R1, #+0] \ 000000FC B010D1E1 LDRH R1,[R1, #+0] \ 00000100 000051E1 CMP R1,R0 \ 00000104 4C00001A BNE ??edchat_onkey_6 7851 { 7852 t=FindNextActiveContact(ed_struct->ed_contact); \ 00000108 00B095E5 LDR R11,[R5, #+0] \ 0000010C 0B00A0E1 MOV R0,R11 \ 00000110 ........ BL FindNextActiveContact \ 00000114 00A0B0E1 MOVS R10,R0 7853 if (t && t!=ed_struct->ed_contact) \ 00000118 0B005A11 CMPNE R10,R11 \ 0000011C 4600000A BEQ ??edchat_onkey_6 7854 { 7855 CreateEditChat(t); \ ??edchat_onkey_9: \ 00000120 0A00A0E1 MOV R0,R10 \ 00000124 ........ BL CreateEditChat 7856 return(1); \ 00000128 0100A0E3 MOV R0,#+1 \ 0000012C 7F0000EA B ??edchat_onkey_4 7857 } 7858 } 7859 } 7860 } 7861 } 7862 if (l==LEFT_BUTTON && LongLeftAction) \ ??edchat_onkey_7: \ 00000130 3D0059E3 CMP R9,#+61 \ 00000134 5400001A BNE ??edchat_onkey_10 \ 00000138 50059FE5 LDR R0,??edchat_onkey_5+0x8 ;; LongLeftAction \ 0000013C 000090E5 LDR R0,[R0, #+0] \ 00000140 000050E3 CMP R0,#+0 \ 00000144 1500000A BEQ ??edchat_onkey_11 7863 { 7864 if (EDIT_GetFocus(data)==ed_struct->ed_answer) \ 00000148 0400A0E1 MOV R0,R4 \ 0000014C 820100EF SWI +386 \ 00000150 081095E5 LDR R1,[R5, #+8] \ 00000154 010050E1 CMP R0,R1 \ 00000158 1000001A BNE ??edchat_onkey_11 7865 { 7866 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 0000015C 04208DE2 ADD R2,SP,#+4 \ 00000160 0400A0E1 MOV R0,R4 \ 00000164 690100EF SWI +361 7867 if (ec.pWS->wsbody[0]==(EDIT_GetCursorPos(data)-1)) \ 00000168 0400A0E1 MOV R0,R4 \ 0000016C D30100EF SWI +467 \ 00000170 2C109DE5 LDR R1,[SP, #+44] \ 00000174 010040E2 SUB R0,R0,#+1 \ 00000178 001091E5 LDR R1,[R1, #+0] \ 0000017C B010D1E1 LDRH R1,[R1, #+0] \ 00000180 000051E1 CMP R1,R0 \ 00000184 0500001A BNE ??edchat_onkey_11 7868 { 7869 t=FindPrevActiveContact(ed_struct->ed_contact); \ 00000188 00B095E5 LDR R11,[R5, #+0] \ 0000018C 0B00A0E1 MOV R0,R11 \ 00000190 ........ BL FindPrevActiveContact \ 00000194 00A0B0E1 MOVS R10,R0 7870 if (t && t!=ed_struct->ed_contact) \ 00000198 0B005A11 CMPNE R10,R11 \ 0000019C DFFFFF1A BNE ??edchat_onkey_9 \ ??edchat_onkey_11: \ 000001A0 040095E5 LDR R0,[R5, #+4] \ 000001A4 820100EF SWI +386 \ 000001A8 081095E5 LDR R1,[R5, #+8] \ 000001AC 010050E1 CMP R0,R1 \ 000001B0 2100000A BEQ ??edchat_onkey_6 \ 000001B4 0400A0E1 MOV R0,R4 \ 000001B8 D30100EF SWI +467 \ 000001BC 010050E3 CMP R0,#+1 \ 000001C0 1D00001A BNE ??edchat_onkey_6 7871 { 7872 CreateEditChat(t); 7873 return(1); 7874 } 7875 } 7876 } 7877 } 7878 //#ifdef ELKA 7879 if (l==VOL_DOWN_BUTTON) 7880 { 7881 #ifdef kluchnik 7882 if((EDIT_GetFocus(data)==ed_struct->ed_answer)) 7883 #else 7884 if(LongVolDownAction) 7885 #endif 7886 { 7887 WSHDR *ws; 7888 ExtractEditControl(data,ed_struct->ed_answer,&ec); 7889 if(wstrlen(ec.pWS)>0) 7890 { 7891 ws=AllocWS(1); 7892 CutWSTR(ws,0); 7893 7894 EDIT_SetFocus(data,ed_struct->ed_answer); 7895 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); 7896 7897 FreeWS(ws); 7898 RefreshGUI(); 7899 } 7900 } 7901 else 7902 { 7903 int pos; 7904 if ((pos=EDIT_GetFocus(data)+2)<=ed_struct->ed_answer) 7905 { 7906 EDIT_SetFocus(data, pos); 7907 EDIT_SetCursorPos(data, 1); 7908 } 7909 return (-1); 7910 } 7911 7912 } 7913 7914 if (l==VOL_UP_BUTTON) 7915 { 7916 if(LongVolUpAction) 7917 { 7918 WSHDR *ws=AllocWS(strlen(last_msg_buffer)+1); 7919 ascii2ws(ws,last_msg_buffer); 7920 EDIT_SetFocus(ed_struct->ed_chatgui,ed_struct->ed_answer); 7921 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); 7922 FreeWS(ws); 7923 RefreshGUI(); 7924 } 7925 else 7926 { 7927 int pos; 7928 if ((pos=EDIT_GetFocus(data)-2)>=2) 7929 { 7930 EDIT_SetFocus(data, pos); 7931 EDIT_SetCursorPos(data, 1); 7932 } 7933 return (-1); 7934 } 7935 } 7936 //#endif 7937 #ifdef kluchnik 7938 if(l==LEFT_BUTTON && EDIT_GetFocus(ed_struct->ed_chatgui)!=ed_struct->ed_answer && EDIT_GetCursorPos(data)==1) 7939 { 7940 int ed; 7941 EDITCONTROL ec; 7942 ed=EDIT_GetFocus(ed_struct->ed_chatgui); \ 000001C4 040095E5 LDR R0,[R5, #+4] \ 000001C8 820100EF SWI +386 7943 ExtractEditControl(ed_struct->ed_chatgui,ed,&ec); \ 000001CC 4C2F8DE2 ADD R2,SP,#+304 \ 000001D0 0010A0E1 MOV R1,R0 \ 000001D4 040095E5 LDR R0,[R5, #+4] \ 000001D8 690100EF SWI +361 7944 7945 wsInsertChar(wsBuffer,'>',wstrlen(wsBuffer)+1); \ 000001DC B80296E5 LDR R0,[R6, #+696] \ 000001E0 230100EF SWI +291 \ 000001E4 012080E2 ADD R2,R0,#+1 \ 000001E8 B80296E5 LDR R0,[R6, #+696] \ 000001EC 3E10A0E3 MOV R1,#+62 \ 000001F0 1D0000EF SWI +29 7946 wsInsertChar(wsBuffer,' ',wstrlen(wsBuffer)+1); \ 000001F4 B80296E5 LDR R0,[R6, #+696] \ 000001F8 230100EF SWI +291 \ 000001FC 012080E2 ADD R2,R0,#+1 \ 00000200 B80296E5 LDR R0,[R6, #+696] \ 00000204 2010A0E3 MOV R1,#+32 \ 00000208 1D0000EF SWI +29 7947 wstrcat(wsBuffer,ec.pWS); \ 0000020C 58119DE5 LDR R1,[SP, #+344] \ 00000210 B80296E5 LDR R0,[R6, #+696] \ 00000214 210100EF SWI +289 7948 wsInsertChar(wsBuffer,'\n',wstrlen(wsBuffer)+1); \ 00000218 B80296E5 LDR R0,[R6, #+696] \ 0000021C 230100EF SWI +291 \ 00000220 012080E2 ADD R2,R0,#+1 \ 00000224 B80296E5 LDR R0,[R6, #+696] \ 00000228 0A10A0E3 MOV R1,#+10 \ 0000022C 1D0000EF SWI +29 7949 7950 ShowMSG(1,(int)"Message add to buffer"); \ 00000230 0710A0E1 MOV R1,R7 \ 00000234 0100A0E3 MOV R0,#+1 \ 00000238 480100EF SWI +328 7951 } 7952 #endif 7953 } 7954 7955 if (msg->gbsmsg->msg==KEY_DOWN) \ ??edchat_onkey_6: \ 0000023C 040098E5 LDR R0,[R8, #+4] \ 00000240 9310A0E3 MOV R1,#+147 \ 00000244 040090E5 LDR R0,[R0, #+4] \ 00000248 401F81E3 ORR R1,R1,#0x100 \ 0000024C 010050E1 CMP R0,R1 \ 00000250 0A00001A BNE ??edchat_onkey_12 7956 { 7957 if ((l>='0')&&(l<='9')) \ 00000254 300059E3 CMP R9,#+48 \ 00000258 500000BA BLT ??edchat_onkey_13 \ 0000025C 3A0059E3 CMP R9,#+58 \ 00000260 060000AA BGE ??edchat_onkey_12 7958 { 7959 if (EDIT_GetFocus(data)!=ed_struct->ed_answer) \ 00000264 0400A0E1 MOV R0,R4 \ 00000268 820100EF SWI +386 \ 0000026C 081095E5 LDR R1,[R5, #+8] \ 00000270 010050E1 CMP R0,R1 \ 00000274 0100000A BEQ ??edchat_onkey_12 7960 EDIT_SetFocus(data,ed_struct->ed_answer); \ 00000278 0400A0E1 MOV R0,R4 \ 0000027C 9B0100EF SWI +411 7961 } 7962 7963 if (l==GREEN_BUTTON) 7964 { 7965 if (connect_state==3) 7966 { 7967 if ((t=ed_struct->ed_contact)) 7968 { 7969 ExtractEditControl(data,ed_struct->ed_answer,&ec); 7970 SaveAnswer(t,ec.pWS); 7971 if ((s=t->answer)) 7972 { 7973 if ((len=strlen(s))) 7974 { 7975 msg_away_timer=0; 7976 away_m=0; 7977 t->automsgcount=0; 7978 if(change_back_status) 7979 { 7980 CurrentStatus=status_rem; 7981 set_my_status(); 7982 change_back_status=0; 7983 } 7984 if(SHOW_ACTIVE) 7985 t->isactive=ACTIVE_TIME; 7986 p=malloc(sizeof(PKT)+len+1); 7987 p->pkt.uin=t->uin; 7988 p->pkt.type=T_SENDMSG; 7989 p->pkt.data_len=len; 7990 strcpy(p->data,s); 7991 //#ifdef ELKA 7992 strcpy(last_msg_buffer, s); 7993 //#endif 7994 AddStringToLog(t,0x01,p->data,I_str,(++SENDMSGCOUNT)&0x7FFF,1); //Номер сообщения 7995 SUBPROC((void *)SendAnswer,0,p); 7996 main2_count++; 7997 mfree(t->answer); 7998 t->answer=NULL; 7999 // request_remake_edchat=1; 8000 EDIT_SetFocus(data,ed_struct->ed_answer); 8001 CutWSTR(ews,0); 8002 EDIT_SetTextToFocused(data,ews); 8003 AddMsgToChat(data); 8004 RecountMenu(t,1); 8005 return(-1); 8006 } 8007 } 8008 } 8009 } 8010 } 8011 //================2026rev-begin 8012 if (l==ENTER_BUTTON) 8013 { 8014 if (!EDIT_IsMarkModeActive(data)) // ?????? ???? ?? ????????? 8015 { 8016 int pos, len; 8017 char *link; 8018 ExtractEditControl(ed_struct->ed_chatgui,EDIT_GetFocus(ed_struct->ed_chatgui),&ec); 8019 wstrcpy(ews,ec.pWS); 8020 pos = EDIT_GetCursorPos(data); 8021 len = wstrlen(ews); 8022 link = malloc(len+1); 8023 8024 if(IsUrl(ews, pos, link) && IsOpenBrowser) 8025 { 8026 snprintf(fn, 255, "%s\\tmp%u.url", TEMPLATES_PATH, GetTempName); 8027 if ((f=fopen(fn,A_WriteOnly+A_BIN+A_Create+A_Truncate,P_WRITE,&err))!=-1) 8028 { 8029 fwrite(f,link,strlen(link),&err); 8030 fclose(f,&err); 8031 str_2ws(ews,fn,256); 8032 ExecuteFile(ews,0,0); 8033 unlink(fn, &err); 8034 } 8035 mfree(link); 8036 return (-1); 8037 } 8038 else 8039 { 8040 int i=ed_struct->loaded_templates=LoadTemplates(ed_struct->ed_contact->uin); 8041 8042 if(IsMultiBuffer) 8043 EDIT_OpenOptionMenuWithUserItems(data,ed_options_handler,ed_struct,i+4); 8044 else 8045 EDIT_OpenOptionMenuWithUserItems(data,ed_options_handler,ed_struct,i+3); 8046 8047 mfree(link); 8048 return (-1); 8049 } 8050 } 8051 } 8052 8053 //================ 2026rev-end =================// 8054 8055 if (l==VOL_UP_BUTTON) 8056 { 8057 int pos; 8058 8059 if ((pos=EDIT_GetFocus(data)-2)>=2) 8060 { 8061 EDIT_SetFocus(data, pos); 8062 EDIT_SetCursorPos(data, 1); 8063 } 8064 return (-1); 8065 } 8066 if (l==VOL_DOWN_BUTTON) 8067 { 8068 int pos; 8069 8070 if ((pos=EDIT_GetFocus(data)+2)<=ed_struct->ed_answer) 8071 { 8072 EDIT_SetFocus(data, pos); 8073 EDIT_SetCursorPos(data, 1); 8074 } 8075 return (-1); 8076 } 8077 } 8078 return(0); //Do standart keys \ ??edchat_onkey_12: \ 00000280 0000A0E3 MOV R0,#+0 \ 00000284 57DF8DE2 ADD SP,SP,#+348 \ 00000288 F08FBDE8 POP {R4-R11,PC} ;; return \ ??edchat_onkey_10: \ 0000028C 0E0059E3 CMP R9,#+14 \ 00000290 2800001A BNE ??edchat_onkey_14 \ 00000294 0400A0E1 MOV R0,R4 \ 00000298 820100EF SWI +386 \ 0000029C 081095E5 LDR R1,[R5, #+8] \ 000002A0 010050E1 CMP R0,R1 \ 000002A4 1500001A BNE ??edchat_onkey_15 \ 000002A8 04208DE2 ADD R2,SP,#+4 \ 000002AC 0400A0E1 MOV R0,R4 \ 000002B0 690100EF SWI +361 \ 000002B4 2C009DE5 LDR R0,[SP, #+44] \ 000002B8 230100EF SWI +291 \ 000002BC 010050E3 CMP R0,#+1 \ 000002C0 DDFFFFBA BLT ??edchat_onkey_6 \ 000002C4 0100A0E3 MOV R0,#+1 \ 000002C8 250100EF SWI +293 \ 000002CC 00A0A0E1 MOV R10,R0 \ 000002D0 0010A0E3 MOV R1,#+0 \ 000002D4 260100EF SWI +294 \ 000002D8 081095E5 LDR R1,[R5, #+8] \ 000002DC 0400A0E1 MOV R0,R4 \ ??edchat_onkey_16: \ 000002E0 9B0100EF SWI +411 \ 000002E4 040095E5 LDR R0,[R5, #+4] \ 000002E8 0A10A0E1 MOV R1,R10 \ 000002EC 810100EF SWI +385 \ 000002F0 0A00A0E1 MOV R0,R10 \ 000002F4 290100EF SWI +297 \ 000002F8 960100EF SWI +406 \ 000002FC CEFFFFEA B ??edchat_onkey_6 \ ??edchat_onkey_15: \ 00000300 0400A0E1 MOV R0,R4 \ 00000304 820100EF SWI +386 \ 00000308 021080E2 ADD R1,R0,#+2 \ 0000030C 080095E5 LDR R0,[R5, #+8] \ 00000310 010050E1 CMP R0,R1 \ ??edchat_onkey_17: \ 00000314 040000BA BLT ??edchat_onkey_2 \ 00000318 0400A0E1 MOV R0,R4 \ 0000031C 9B0100EF SWI +411 \ 00000320 0110A0E3 MOV R1,#+1 \ 00000324 0400A0E1 MOV R0,R4 \ 00000328 D40100EF SWI +468 \ ??edchat_onkey_2: \ 0000032C 0000E0E3 MVN R0,#+0 \ ??edchat_onkey_4: \ 00000330 57DF8DE2 ADD SP,SP,#+348 \ 00000334 F08FBDE8 POP {R4-R11,PC} \ ??edchat_onkey_14: \ 00000338 0D0059E3 CMP R9,#+13 \ 0000033C BEFFFF1A BNE ??edchat_onkey_6 \ 00000340 4C039FE5 LDR R0,??edchat_onkey_5+0xC ;; LongVolUpAction \ 00000344 000090E5 LDR R0,[R0, #+0] \ 00000348 000050E3 CMP R0,#+0 \ 0000034C 0E00000A BEQ ??edchat_onkey_18 \ 00000350 F800A0E3 MOV R0,#+248 \ 00000354 700E80E3 ORR R0,R0,#0x700 \ 00000358 060080E0 ADD R0,R0,R6 \ 0000035C 1B0000EF SWI +27 \ 00000360 010080E2 ADD R0,R0,#+1 \ 00000364 250100EF SWI +293 \ 00000368 00A0A0E1 MOV R10,R0 \ 0000036C F800A0E3 MOV R0,#+248 \ 00000370 700E80E3 ORR R0,R0,#0x700 \ 00000374 061080E0 ADD R1,R0,R6 \ 00000378 0A00A0E1 MOV R0,R10 \ 0000037C ........ _BLF ascii2ws,??ascii2ws??rA \ 00000380 081095E5 LDR R1,[R5, #+8] \ 00000384 040095E5 LDR R0,[R5, #+4] \ 00000388 D4FFFFEA B ??edchat_onkey_16 \ ??edchat_onkey_18: \ 0000038C 0400A0E1 MOV R0,R4 \ 00000390 820100EF SWI +386 \ 00000394 021040E2 SUB R1,R0,#+2 \ 00000398 020051E3 CMP R1,#+2 \ 0000039C DCFFFFEA B ??edchat_onkey_17 \ ??edchat_onkey_13: \ 000003A0 0B0059E3 CMP R9,#+11 \ 000003A4 5A00001A BNE ??edchat_onkey_19 \ 000003A8 FC0396E5 LDR R0,[R6, #+1020] \ 000003AC 030050E3 CMP R0,#+3 \ 000003B0 B2FFFF1A BNE ??edchat_onkey_12 \ 000003B4 00A095E5 LDR R10,[R5, #+0] \ 000003B8 00005AE3 CMP R10,#+0 \ 000003BC AFFFFF0A BEQ ??edchat_onkey_12 \ 000003C0 081095E5 LDR R1,[R5, #+8] \ 000003C4 04208DE2 ADD R2,SP,#+4 \ 000003C8 0400A0E1 MOV R0,R4 \ 000003CC 690100EF SWI +361 \ 000003D0 2C109DE5 LDR R1,[SP, #+44] \ 000003D4 0A00A0E1 MOV R0,R10 \ 000003D8 ........ BL SaveAnswer \ 000003DC A4909AE5 LDR R9,[R10, #+164] \ 000003E0 000059E3 CMP R9,#+0 \ 000003E4 A5FFFF0A BEQ ??edchat_onkey_12 \ 000003E8 0900A0E1 MOV R0,R9 \ 000003EC 1B0000EF SWI +27 \ 000003F0 00B0B0E1 MOVS R11,R0 \ 000003F4 A1FFFF0A BEQ ??edchat_onkey_12 \ 000003F8 0070A0E3 MOV R7,#+0 \ 000003FC A47386E5 STR R7,[R6, #+932] \ 00000400 A87386E5 STR R7,[R6, #+936] \ 00000404 88708AE5 STR R7,[R10, #+136] \ 00000408 B00396E5 LDR R0,[R6, #+944] \ 0000040C 000050E3 CMP R0,#+0 \ 00000410 0300000A BEQ ??edchat_onkey_20 \ 00000414 AC0396E5 LDR R0,[R6, #+940] \ 00000418 980386E5 STR R0,[R6, #+920] \ 0000041C ........ BL set_my_status \ 00000420 B07386E5 STR R7,[R6, #+944] \ ??edchat_onkey_20: \ 00000424 ........ LDR R0,??DataTable326 ;; SHOW_ACTIVE \ 00000428 000090E5 LDR R0,[R0, #+0] \ 0000042C 000050E3 CMP R0,#+0 \ 00000430 5A0FA013 MOVNE R0,#+360 \ 00000434 AC008A15 STRNE R0,[R10, #+172] \ 00000438 09008BE2 ADD R0,R11,#+9 \ 0000043C 140000EF SWI +20 \ 00000440 0080A0E1 MOV R8,R0 \ 00000444 0C009AE5 LDR R0,[R10, #+12] \ 00000448 0910A0E1 MOV R1,R9 \ 0000044C 000088E5 STR R0,[R8, #+0] \ 00000450 0200A0E3 MOV R0,#+2 \ 00000454 B400C8E1 STRH R0,[R8, #+4] \ 00000458 B6B0C8E1 STRH R11,[R8, #+6] \ 0000045C 080088E2 ADD R0,R8,#+8 \ 00000460 1A0000EF SWI +26 \ 00000464 0910A0E1 MOV R1,R9 \ 00000468 F800A0E3 MOV R0,#+248 \ 0000046C 700E80E3 ORR R0,R0,#0x700 \ 00000470 060080E0 ADD R0,R0,R6 \ 00000474 1A0000EF SWI +26 \ 00000478 000396E5 LDR R0,[R6, #+768] \ 0000047C ........ LDR R3,??DataTable361 ;; I_str \ 00000480 010080E2 ADD R0,R0,#+1 \ 00000484 000386E5 STR R0,[R6, #+768] \ 00000488 0110A0E3 MOV R1,#+1 \ 0000048C 02002DE9 PUSH {R1} \ 00000490 8008A0E1 LSL R0,R0,#+17 \ 00000494 A008A0E1 LSR R0,R0,#+17 \ 00000498 01002DE9 PUSH {R0} \ 0000049C 082088E2 ADD R2,R8,#+8 \ 000004A0 0A00A0E1 MOV R0,R10 \ 000004A4 ........ BL AddStringToLog \ 000004A8 ........ LDR R0,??DataTable362 ;; SendAnswer \ 000004AC 0820A0E1 MOV R2,R8 \ 000004B0 0010A0E3 MOV R1,#+0 \ 000004B4 710100EF SWI +369 \ 000004B8 D80296E5 LDR R0,[R6, #+728] \ 000004BC 010080E2 ADD R0,R0,#+1 \ 000004C0 D80286E5 STR R0,[R6, #+728] \ 000004C4 A4009AE5 LDR R0,[R10, #+164] \ 000004C8 150000EF SWI +21 \ 000004CC A4708AE5 STR R7,[R10, #+164] \ 000004D0 081095E5 LDR R1,[R5, #+8] \ 000004D4 0400A0E1 MOV R0,R4 \ 000004D8 9B0100EF SWI +411 \ 000004DC A00396E5 LDR R0,[R6, #+928] \ 000004E0 0710A0E1 MOV R1,R7 \ 000004E4 260100EF SWI +294 \ 000004E8 A01396E5 LDR R1,[R6, #+928] \ 000004EC 0400A0E1 MOV R0,R4 \ 000004F0 810100EF SWI +385 \ 000004F4 0400A0E1 MOV R0,R4 \ 000004F8 ........ BL AddMsgToChat \ 000004FC 0110A0E3 MOV R1,#+1 \ 00000500 0A00A0E1 MOV R0,R10 \ 00000504 ........ BL RecountMenu \ 00000508 0700E0E1 MVN R0,R7 \ 0000050C 08D08DE2 ADD SP,SP,#+8 \ 00000510 86FFFFEA B ??edchat_onkey_4 \ ??edchat_onkey_19: \ 00000514 1A0059E3 CMP R9,#+26 \ 00000518 5500001A BNE ??edchat_onkey_21 \ 0000051C 0400A0E1 MOV R0,R4 \ 00000520 D80100EF SWI +472 \ 00000524 000050E3 CMP R0,#+0 \ 00000528 54FFFF1A BNE ??edchat_onkey_12 \ 0000052C 040095E5 LDR R0,[R5, #+4] \ 00000530 820100EF SWI +386 \ 00000534 04208DE2 ADD R2,SP,#+4 \ 00000538 0010A0E1 MOV R1,R0 \ 0000053C 040095E5 LDR R0,[R5, #+4] \ 00000540 690100EF SWI +361 \ 00000544 A00396E5 LDR R0,[R6, #+928] \ 00000548 2C109DE5 LDR R1,[SP, #+44] \ 0000054C 1F0100EF SWI +287 \ 00000550 0400A0E1 MOV R0,R4 \ 00000554 D30100EF SWI +467 \ 00000558 0090A0E1 MOV R9,R0 \ 0000055C A00396E5 LDR R0,[R6, #+928] \ 00000560 230100EF SWI +291 \ 00000564 010080E2 ADD R0,R0,#+1 \ 00000568 140000EF SWI +20 \ 0000056C 0080A0E1 MOV R8,R0 \ 00000570 A00396E5 LDR R0,[R6, #+928] \ 00000574 0820A0E1 MOV R2,R8 \ 00000578 0910A0E1 MOV R1,R9 \ 0000057C ........ BL IsUrl \ 00000580 000050E3 CMP R0,#+0 \ 00000584 2C00000A BEQ ??edchat_onkey_22 \ 00000588 08019FE5 LDR R0,??edchat_onkey_5+0x10 ;; IsOpenBrowser \ 0000058C 000090E5 LDR R0,[R0, #+0] \ 00000590 000050E3 CMP R0,#+0 \ 00000594 2800000A BEQ ??edchat_onkey_22 \ 00000598 FC009FE5 LDR R0,??edchat_onkey_5+0x14 ;; GetTempName \ 0000059C ........ LDR R3,??DataTable329 ;; TEMPLATES_PATH \ 000005A0 01002DE9 PUSH {R0} \ 000005A4 182087E2 ADD R2,R7,#+24 \ 000005A8 FF10A0E3 MOV R1,#+255 \ 000005AC 34008DE2 ADD R0,SP,#+52 \ 000005B0 1B0100EF SWI +283 \ 000005B4 04308DE2 ADD R3,SP,#+4 \ 000005B8 402FA0E3 MOV R2,#+256 \ 000005BC 0110A0E3 MOV R1,#+1 \ 000005C0 831C81E3 ORR R1,R1,#0x8300 \ 000005C4 34008DE2 ADD R0,SP,#+52 \ 000005C8 0A0000EF SWI +10 \ 000005CC 0040A0E1 MOV R4,R0 \ 000005D0 010074E3 CMN R4,#+1 \ 000005D4 04D08DE2 ADD SP,SP,#+4 \ 000005D8 1400000A BEQ ??edchat_onkey_23 \ 000005DC 0800A0E1 MOV R0,R8 \ 000005E0 1B0000EF SWI +27 \ 000005E4 0020A0E1 MOV R2,R0 \ 000005E8 0D30A0E1 MOV R3,SP \ 000005EC 0810A0E1 MOV R1,R8 \ 000005F0 0400A0E1 MOV R0,R4 \ 000005F4 0C0000EF SWI +12 \ 000005F8 0D10A0E1 MOV R1,SP \ 000005FC 0400A0E1 MOV R0,R4 \ 00000600 0D0000EF SWI +13 \ 00000604 A00396E5 LDR R0,[R6, #+928] \ 00000608 402FA0E3 MOV R2,#+256 \ 0000060C 30108DE2 ADD R1,SP,#+48 \ 00000610 6C0100EF SWI +364 \ 00000614 A00396E5 LDR R0,[R6, #+928] \ 00000618 0020A0E3 MOV R2,#+0 \ 0000061C 0010A0E3 MOV R1,#+0 \ 00000620 940000EF SWI +148 \ 00000624 0D10A0E1 MOV R1,SP \ 00000628 30008DE2 ADD R0,SP,#+48 \ 0000062C 6B0100EF SWI +363 \ ??edchat_onkey_23: \ 00000630 0800A0E1 MOV R0,R8 \ 00000634 150000EF SWI +21 \ 00000638 3BFFFFEA B ??edchat_onkey_2 \ ??edchat_onkey_22: \ 0000063C 000095E5 LDR R0,[R5, #+0] \ 00000640 0C0090E5 LDR R0,[R0, #+12] \ 00000644 ........ BL LoadTemplates \ 00000648 ........ LDR R2,??DataTable330 ;; IsMultiBuffer \ 0000064C 4C109FE5 LDR R1,??edchat_onkey_5+0x18 ;; ed_options_handler \ 00000650 100085E5 STR R0,[R5, #+16] \ 00000654 002092E5 LDR R2,[R2, #+0] \ 00000658 000052E3 CMP R2,#+0 \ 0000065C 03308002 ADDEQ R3,R0,#+3 \ 00000660 04308012 ADDNE R3,R0,#+4 \ 00000664 0520A0E1 MOV R2,R5 \ 00000668 0400A0E1 MOV R0,R4 \ 0000066C E50100EF SWI +485 \ 00000670 EEFFFFEA B ??edchat_onkey_23 \ ??edchat_onkey_21: \ 00000674 0D0059E3 CMP R9,#+13 \ 00000678 43FFFF0A BEQ ??edchat_onkey_18 \ ??edchat_onkey_24: \ 0000067C 0E0059E3 CMP R9,#+14 \ 00000680 FEFEFF1A BNE ??edchat_onkey_12 \ 00000684 1DFFFFEA B ??edchat_onkey_15 \ ??edchat_onkey_5: \ 00000688 ........ DC32 `?` \ 0000068C ........ DC32 LongRightAction \ 00000690 ........ DC32 LongLeftAction \ 00000694 ........ DC32 LongVolUpAction \ 00000698 ........ DC32 IsOpenBrowser \ 0000069C ........ DC32 GetTempName \ 000006A0 ........ DC32 ed_options_handler 8079 //1: close 8080 } 8081 8082 static const HEADER_DESC edchat_hdr={0,0,NULL,NULL,NULL,0,LGP_NULL}; 8083 8084 void (*old_ed_redraw)(void *data); \ In segment CODE, align 4, keep-with-next 8085 void my_ed_redraw(void *data) 8086 { \ my_ed_redraw: \ 00000000 30402DE9 PUSH {R4,R5,LR} 8087 void *edchat_gui; 8088 EDCHAT_STRUCT *ed_struct; 8089 if (old_ed_redraw) old_ed_redraw(data); \ 00000004 ........ LDR R4,??DataTable333 ;; i_rc \ 00000008 AC1494E5 LDR R1,[R4, #+1196] \ 0000000C 000051E3 CMP R1,#+0 \ 00000010 0100000A BEQ ??my_ed_redraw_0 \ 00000014 31FF2FE1 BLX R1 8090 edchat_gui=FindGUIbyId(edchat_id,NULL); \ 00000018 0010A0E3 MOV R1,#+0 \ ??my_ed_redraw_0: \ 0000001C 240494E5 LDR R0,[R4, #+1060] \ 00000020 090200EF SWI +521 8091 if (edchat_gui) \ 00000024 000050E3 CMP R0,#+0 \ 00000028 3080BD08 POPEQ {R4,R5,PC} 8092 { 8093 ed_struct=EDIT_GetUserPointer(edchat_gui); \ 0000002C DF0100EF SWI +479 8094 if (ed_struct) \ 00000030 000050E3 CMP R0,#+0 \ 00000034 3080BD08 POPEQ {R4,R5,PC} 8095 { 8096 int icon, width; 8097 #ifndef NEWSGOLD 8098 icon=*(S_ICONS+GetIconIndex(ed_struct->ed_contact)); 8099 ((HEADER_DESC *)&edchat_hdr)->rc.x2=ScreenW()-1-(width=GetImgWidth(icon)); 8100 DrawImg(ScreenW()-1-width,1,icon); 8101 #else 8102 icon=*(S_ICONS+GetIconIndex(ed_struct->ed_contact)); \ 00000038 000090E5 LDR R0,[R0, #+0] \ 0000003C ........ BL GetIconIndex \ 00000040 000184E0 ADD R0,R4,R0, LSL #+2 \ 00000044 104390E5 LDR R4,[R0, #+784] 8103 width=GetImgWidth(icon); \ 00000048 0400A0E1 MOV R0,R4 \ 0000004C 220000EF SWI +34 \ 00000050 0050A0E1 MOV R5,R0 8104 DrawImg(2,((HeaderH()-width)>>1)+YDISP,icon); \ 00000054 8A8100EF SWI +33162 \ 00000058 0420A0E1 MOV R2,R4 \ 0000005C 050040E0 SUB R0,R0,R5 \ 00000060 1810A0E3 MOV R1,#+24 \ 00000064 C01081E0 ADD R1,R1,R0, ASR #+1 \ 00000068 0200A0E3 MOV R0,#+2 \ 0000006C 230000EF SWI +35 8105 /* DrawRoundedFrame(ScreenW()-8,YDISP,ScreenW()-1,YDISP+7,0,0,0, 8106 GetPaletteAdrByColorIndex(0), 8107 GetPaletteAdrByColorIndex(EDIT_IsBusy(edchat_gui)?3:4));*/ 8108 #endif 8109 } 8110 } 8111 } \ 00000070 3080BDE8 POP {R4,R5,PC} ;; return 8112 \ In segment CODE, align 4, keep-with-next 8113 void edchat_ghook(GUI *data, int cmd) 8114 { \ edchat_ghook: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 8115 8116 static const SOFTKEY_DESC sk={0x0FFF,0x0000,(int)LG_MENU}; 8117 static const SOFTKEY_DESC sk_cancel={0x0FF0,0x0000,(int)LG_CLOSE}; 8118 // static SOFTKEY_DESC sk={0x0018,0x0000,(int)"Menu"}; 8119 int j; 8120 EDITCONTROL ec; 8121 EDCHAT_STRUCT *ed_struct=EDIT_GetUserPointer(data); 8122 PNGTOP_DESC *pltop=PNG_TOP(); 8123 if (cmd==9) \ 00000004 ........ LDR R4,??DataTable333 ;; i_rc \ 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 8124 { 8125 GBS_DelTimer(&tmr_illumination); //by BoBa 25.06.07 \ 00000030 5000A0E3 MOV R0,#+80 \ 00000034 780D80E3 ORR R0,R0,#0x1E00 \ 00000038 040080E0 ADD R0,R0,R4 \ 0000003C 8C0100EF SWI +396 8126 pltop->dyn_pltop=NULL; \ 00000040 086088E5 STR R6,[R8, #+8] \ 00000044 170000EA B ??edchat_ghook_1 8127 } 8128 if (cmd==2) \ ??edchat_ghook_0: \ 00000048 081097E5 LDR R1,[R7, #+8] \ 0000004C 020059E3 CMP R9,#+2 \ 00000050 1600001A BNE ??edchat_ghook_2 8129 { 8130 ed_struct->ed_chatgui=data; \ 00000054 045087E5 STR R5,[R7, #+4] 8131 // edgui_data=data; 8132 EDIT_SetFocus(data,ed_struct->ed_answer); \ 00000058 0500A0E1 MOV R0,R5 \ 0000005C 9B0100EF SWI +411 8133 8134 static void *methods[16]; 8135 void **m=GetDataOfItemByID(data,2); \ 00000060 0210A0E3 MOV R1,#+2 \ 00000064 0500A0E1 MOV R0,R5 \ 00000068 4F0100EF SWI +335 \ 0000006C 0050B0E1 MOVS R5,R0 8136 if (m) 8137 { 8138 if (m[1]) \ 00000070 04009515 LDRNE R0,[R5, #+4] \ 00000074 00005013 CMPNE R0,#+0 \ 00000078 6700000A BEQ ??edchat_ghook_3 8139 { 8140 memcpy(methods,m[1],sizeof(methods)); \ 0000007C 4B6EA0E3 MOV R6,#+1200 \ 00000080 4020A0E3 MOV R2,#+64 \ 00000084 0010A0E1 MOV R1,R0 \ 00000088 040086E0 ADD R0,R6,R4 \ 0000008C 1E0100EF SWI +286 8141 old_ed_redraw=(void (*)(void *))(methods[0]); \ 00000090 040096E7 LDR R0,[R6, +R4] \ 00000094 AC0484E5 STR R0,[R4, #+1196] 8142 methods[0]=(void *)my_ed_redraw; \ 00000098 84019FE5 LDR R0,??edchat_ghook_4 ;; my_ed_redraw \ 0000009C 040086E7 STR R0,[R6, +R4] 8143 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} 8144 } 8145 } 8146 } 8147 if (cmd==3) \ ??edchat_ghook_2: \ 000000B0 030059E3 CMP R9,#+3 \ 000000B4 0E00001A BNE ??edchat_ghook_5 8148 { 8149 // if (edgui_data==data) edgui_data=NULL; 8150 if (ed_struct->ed_contact) \ 000000B8 000097E5 LDR R0,[R7, #+0] \ 000000BC 000050E3 CMP R0,#+0 \ 000000C0 0500000A BEQ ??edchat_ghook_6 8151 { 8152 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 000000C4 0D20A0E1 MOV R2,SP \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 690100EF SWI +361 8153 SaveAnswer(ed_struct->ed_contact,ec.pWS); \ 000000D0 28109DE5 LDR R1,[SP, #+40] \ 000000D4 000097E5 LDR R0,[R7, #+0] \ 000000D8 ........ BL SaveAnswer 8154 } 8155 RecountMenu(ed_struct->ed_contact,1); \ ??edchat_ghook_6: \ 000000DC 000097E5 LDR R0,[R7, #+0] \ 000000E0 0110A0E3 MOV R1,#+1 \ 000000E4 ........ BL RecountMenu 8156 mfree(ed_struct); \ 000000E8 0700A0E1 MOV R0,R7 \ 000000EC 150000EF SWI +21 \ 000000F0 ECFFFFEA B ??edchat_ghook_1 8157 } 8158 if (cmd==0x0A) \ ??edchat_ghook_5: \ 000000F4 0A0059E3 CMP R9,#+10 \ 000000F8 0D00001A BNE ??edchat_ghook_7 8159 { 8160 pltop->dyn_pltop=SmilesImgList; \ 000000FC 24019FE5 LDR R0,??edchat_ghook_4+0x4 ;; SmilesImgList \ 00000100 000090E5 LDR R0,[R0, #+0] \ 00000104 080088E5 STR R0,[R8, #+8] 8161 DisableIDLETMR(); \ 00000108 7F0100EF SWI +383 8162 total_unread-=ed_struct->requested_decrement_total_unread; \ 0000010C 180494E5 LDR R0,[R4, #+1048] \ 00000110 0C1097E5 LDR R1,[R7, #+12] \ 00000114 010040E0 SUB R0,R0,R1 \ 00000118 180484E5 STR R0,[R4, #+1048] 8163 ed_struct->requested_decrement_total_unread=0; \ 0000011C 0C6087E5 STR R6,[R7, #+12] 8164 #ifdef ELKA 8165 if (!total_unread) \ 00000120 180494E5 LDR R0,[R4, #+1048] \ 00000124 000050E3 CMP R0,#+0 \ 00000128 3B00001A BNE ??edchat_ghook_3 8166 { 8167 SLI_Off(); \ 0000012C ........ BL SLI_Off \ 00000130 DCFFFFEA B ??edchat_ghook_1 8168 } 8169 #endif 8170 /* if (request_close_edchat) 8171 { 8172 request_close_edchat=0; 8173 GeneralFunc_flag1(edchat_id,1); 8174 return; 8175 }*/ 8176 } 8177 if (cmd==7) \ ??edchat_ghook_7: \ 00000134 070059E3 CMP R9,#+7 \ 00000138 2800001A BNE ??edchat_ghook_8 8178 { 8179 SetSoftKey(data,&sk,SET_SOFT_KEY_N); \ 0000013C E8809FE5 LDR R8,??edchat_ghook_4+0x8 ;; ??sk_1 \ 00000140 0020A0E3 MOV R2,#+0 \ 00000144 0810A0E1 MOV R1,R8 \ 00000148 0500A0E1 MOV R0,R5 \ 0000014C 680100EF SWI +360 8180 ExtractEditControl(data,ed_struct->ed_answer,&ec); \ 00000150 081097E5 LDR R1,[R7, #+8] \ 00000154 0D20A0E1 MOV R2,SP \ 00000158 0500A0E1 MOV R0,R5 \ 0000015C 690100EF SWI +361 8181 if (ec.pWS->wsbody[0]==0) \ 00000160 28009DE5 LDR R0,[SP, #+40] \ 00000164 000090E5 LDR R0,[R0, #+0] \ 00000168 B000D0E1 LDRH R0,[R0, #+0] \ 0000016C 000050E3 CMP R0,#+0 \ 00000170 0300001A BNE ??edchat_ghook_9 8182 SetSoftKey(data,&sk_cancel,SET_SOFT_KEY_N==0?1:0); \ 00000174 0120A0E3 MOV R2,#+1 \ 00000178 081088E2 ADD R1,R8,#+8 \ 0000017C 0500A0E1 MOV R0,R5 \ 00000180 680100EF SWI +360 8183 if (!EDIT_IsBusy(data)) \ ??edchat_ghook_9: \ 00000184 0500A0E1 MOV R0,R5 \ 00000188 1C0200EF SWI +540 \ 0000018C 000050E3 CMP R0,#+0 \ 00000190 2100001A BNE ??edchat_ghook_3 8184 { 8185 time_to_stop_t9=0; \ 00000194 546484E5 STR R6,[R4, #+1108] 8186 if (ed_struct->ed_contact->req_add) \ 00000198 000097E5 LDR R0,[R7, #+0] \ 0000019C 981090E5 LDR R1,[R0, #+152] \ 000001A0 000051E3 CMP R1,#+0 \ 000001A4 0500000A BEQ ??edchat_ghook_10 8187 { 8188 ed_struct->ed_contact->req_add=0; \ 000001A8 986080E5 STR R6,[R0, #+152] 8189 AddMsgToChat(data); \ 000001AC 0500A0E1 MOV R0,R5 \ 000001B0 ........ BL AddMsgToChat 8190 RecountMenu(ed_struct->ed_contact,1); \ 000001B4 000097E5 LDR R0,[R7, #+0] \ 000001B8 0110A0E3 MOV R1,#+1 \ 000001BC ........ BL RecountMenu 8191 } 8192 if (ed_struct->ed_contact->req_drawack) \ ??edchat_ghook_10: \ 000001C0 000097E5 LDR R0,[R7, #+0] \ 000001C4 9C1090E5 LDR R1,[R0, #+156] \ 000001C8 000051E3 CMP R1,#+0 \ 000001CC 1200000A BEQ ??edchat_ghook_3 8193 { 8194 ed_struct->ed_contact->req_drawack=0; \ 000001D0 9C6080E5 STR R6,[R0, #+156] 8195 DrawAck(data); \ 000001D4 0500A0E1 MOV R0,R5 \ 000001D8 ........ BL DrawAck \ 000001DC B1FFFFEA B ??edchat_ghook_1 8196 } 8197 } 8198 } 8199 if (cmd==0x0C) \ ??edchat_ghook_8: \ 000001E0 0C0059E3 CMP R9,#+12 \ 000001E4 0C00001A BNE ??edchat_ghook_3 8200 { 8201 j=EDIT_GetFocus(data); \ 000001E8 0500A0E1 MOV R0,R5 \ 000001EC 820100EF SWI +386 \ 000001F0 0040A0E1 MOV R4,R0 8202 if ((EDIT_GetUnFocus(data)ed_answer)) \ 000001F4 0500A0E1 MOV R0,R5 \ 000001F8 830100EF SWI +387 \ 000001FC 040050E1 CMP R0,R4 \ 00000200 050000AA BGE ??edchat_ghook_3 \ 00000204 080097E5 LDR R0,[R7, #+8] \ 00000208 000054E1 CMP R4,R0 \ 0000020C 0200000A BEQ ??edchat_ghook_3 8203 EDIT_SetCursorPos(data,1); \ 00000210 0110A0E3 MOV R1,#+1 \ 00000214 0500A0E1 MOV R0,R5 \ 00000218 D40100EF SWI +468 8204 } 8205 } \ ??edchat_ghook_3: \ 0000021C 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 00000220 F083BDE8 POP {R4-R9,PC} ;; return \ ??edchat_ghook_4: \ 00000224 ........ DC32 my_ed_redraw \ 00000228 ........ DC32 SmilesImgList \ 0000022C ........ DC32 ??sk_1 \ In segment DATA_C, align 4, align-sorted 8206 8207 8208 8209 static const INPUTDIA_DESC edchat_desc = \ edchat_desc: \ 00000000 01000000.... DC32 1, edchat_onkey, edchat_ghook, edchat_locret, 0, menu_skt \ ............ \ ........0000 \ 0000........ \ 00000018 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000020 080000006400 DC32 8, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ 00000038 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000040 000000000000 DC32 0H, 0, 2147483647 \ 0000FFFFFF7F \ 0000004C 2D2D2D2D2D2D DC8 "-------" \ 2D00 \ In segment DATA_C, align 4, align-sorted \ ??sk_1: \ 00000000 FF0F0000 DC16 4095, 0 \ 00000004 ........ DC32 `?` \ 00000008 F00F0000 DC16 4080, 0 \ 0000000C ........ DC32 `?` 8210 { 8211 1, 8212 edchat_onkey, 8213 edchat_ghook, 8214 (void *)edchat_locret, 8215 0, 8216 &menu_skt, 8217 {0,NULL,NULL,NULL}, 8218 FONT_SMALL, 8219 100, 8220 101, 8221 0, 8222 // 0x00000001 - Выровнять по правому краю 8223 // 0x00000002 - Выровнять по центру 8224 // 0x00000004 - Инверсия знакомест 8225 // 0x00000008 - UnderLine 8226 // 0x00000020 - Не переносить слова 8227 // 0x00000200 - bold 8228 0, 8229 // 0x00000002 - ReadOnly 8230 // 0x00000004 - Не двигается курсор 8231 // 0x40000000 - Поменять местами софт-кнопки 8232 0x40000000 8233 }; 8234 \ In segment CODE, align 4, keep-with-next 8235 void CreateEditChat(CLIST *t) 8236 { \ CreateEditChat: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} 8237 8238 void *ma=malloc_adr(); 8239 void *eq; 8240 EDITCONTROL ec; 8241 EDITC_OPTIONS ec_options; 8242 int color, font, type; 8243 int zc; 8244 8245 LOGQ *lp; 8246 int edchat_toitem; 8247 // edcontact=t; 8248 8249 *((int *)(&edchat_hdr.lgp_id))=(int)t->name; \ 00000004 74649FE5 LDR R6,??CreateEditChat_0 ;; edchat_desc 8250 // *((int **)(&edchat_hdr.icon))=(int *)S_ICONS+GetIconIndex(t); 8251 *((int **)(&edchat_hdr.icon))=(int *)S_ICONS+IS_NULLICON; \ 00000008 ........ LDR R7,??DataTable333 ;; i_rc \ 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 D50F87E2 ADD R0,R7,#+852 \ 00000028 400086E5 STR R0,[R6, #+64] 8252 8253 eq=AllocEQueue(ma,mfree_adr()); \ 0000002C 158000EF SWI +32789 \ 00000030 0010A0E1 MOV R1,R0 \ 00000034 0500A0E1 MOV R0,R5 \ 00000038 630100EF SWI +355 8254 8255 /* hist = malloc(256); 8256 if(!GetHistory(hist, 256, t->uin)) 8257 { 8258 ascii2ws(ews,hist); 8259 PrepareEditControl(&ec); 8260 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL|ECF_DISABLE_T9,ews,ews->wsbody[0]); 8261 } 8262 mfree(hist); 8263 8264 AddEditControlToEditQend(eq,&ec,ma); */ 8265 lp=t->log; \ 0000003C A09094E5 LDR R9,[R4, #+160] \ 00000040 0080A0E1 MOV R8,R0 \ 00000044 000059E3 CMP R9,#+0 \ 00000048 8F00000A BEQ ??CreateEditChat_1 8266 8267 while(lp) 8268 { 8269 font = ED_H_FONT_SIZE; \ ??CreateEditChat_2: \ 0000004C ........ LDR R0,??DataTable334 ;; ED_H_FONT_SIZE 8270 if ((zc=lp->acked&3))//Если отправлен или доставлен \ 00000050 ........ LDR R1,??DataTable335 ;; 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 8271 { 8272 if (zc==1) \ 00000068 010050E3 CMP R0,#+1 \ 0000006C 2200001A BNE ??CreateEditChat_4 8273 color=ACK_COLOR; //Зеленый, отправлен,но не доставлен \ 00000070 ........ LDR R0,??DataTable336 ;; ACK_COLOR \ 00000074 1F0000EA B ??CreateEditChat_5 8274 else 8275 color=I_COLOR;//доставлен 8276 } 8277 else//иначе входящее сообщение 8278 { 8279 if (lp->ID==0xFFFFFFFF) \ ??CreateEditChat_3: \ 00000078 080099E5 LDR R0,[R9, #+8] \ 0000007C 010070E3 CMN R0,#+1 \ 00000080 1B00001A BNE ??CreateEditChat_6 8280 { 8281 type = lp->type&0x0F; \ 00000084 0C0099E5 LDR R0,[R9, #+12] \ 00000088 0F1000E2 AND R1,R0,#0xF 8282 if(lp->type&0x10)//история \ 0000008C 100010E3 TST R0,#0x10 \ 00000090 0D00000A BEQ ??CreateEditChat_7 8283 { 8284 color = (type==1)?O_I_COLOR:((type==3)?O_X_COLOR:O_TO_COLOR); \ 00000094 010051E3 CMP R1,#+1 \ 00000098 ........ LDREQ R0,??DataTable337 ;; O_I_COLOR \ 0000009C 0700000A BEQ ??CreateEditChat_8 \ 000000A0 030051E3 CMP R1,#+3 \ 000000A4 0400001A BNE ??CreateEditChat_9 \ 000000A8 ........ LDR R0,??DataTable350 ;; O_X_COLOR \ 000000AC 00B090E5 LDR R11,[R0, #+0] \ 000000B0 ........ LDR R0,??DataTable352 ;; O_ED_X_FONT_SIZE \ ??CreateEditChat_10: \ 000000B4 00A090E5 LDR R10,[R0, #+0] \ 000000B8 0F0000EA B ??CreateEditChat_4 \ ??CreateEditChat_9: \ 000000BC ........ LDR R0,??DataTable340 ;; O_TO_COLOR \ ??CreateEditChat_8: \ 000000C0 00B090E5 LDR R11,[R0, #+0] \ 000000C4 ........ LDR R0,??DataTable341 ;; O_ED_H_FONT_SIZE \ 000000C8 F9FFFFEA B ??CreateEditChat_10 8285 font = (type==3)?O_ED_X_FONT_SIZE:O_ED_H_FONT_SIZE; 8286 } 8287 else//текущий чат 8288 { 8289 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,??DataTable351 ;; X_COLOR \ 000000E0 00B090E5 LDR R11,[R0, #+0] \ 000000E4 ........ LDR R0,??DataTable353 ;; ED_X_FONT_SIZE \ 000000E8 F1FFFFEA B ??CreateEditChat_10 \ ??CreateEditChat_11: \ 000000EC ........ LDR R0,??DataTable344 ;; TO_COLOR \ 000000F0 000000EA B ??CreateEditChat_5 8290 font = (type==3)?ED_X_FONT_SIZE:ED_H_FONT_SIZE; 8291 } 8292 } 8293 else//если не входящее 8294 color=UNACK_COLOR; //то знач не доставлено \ ??CreateEditChat_6: \ 000000F4 ........ LDR R0,??DataTable345 ;; UNACK_COLOR \ ??CreateEditChat_5: \ 000000F8 00B090E5 LDR R11,[R0, #+0] 8295 } 8296 8297 PrepareEditControl(&ec); \ ??CreateEditChat_4: \ 000000FC 10008DE2 ADD R0,SP,#+16 \ 00000100 640100EF SWI +356 8298 8299 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 8300 { 8301 ascii2ws(ews,lp->hdr); \ 00000114 A00397E5 LDR R0,[R7, #+928] \ 00000118 101089E2 ADD R1,R9,#+16 \ 0000011C ........ _BLF ascii2ws,??ascii2ws??rA 8302 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 00000120 A03397E5 LDR R3,[R7, #+928] \ 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 8303 } 8304 else 8305 { 8306 ConstructEditControl(&ec,ECT_HEADER,ECF_DELSTR,ews,0); \ ??CreateEditChat_12: \ 00000138 0000A0E3 MOV R0,#+0 \ 0000013C 01002DE9 PUSH {R0} \ 00000140 A03397E5 LDR R3,[R7, #+928] \ 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 8307 } 8308 8309 PrepareEditCOptions(&ec_options); \ 00000158 0D00A0E1 MOV R0,SP \ 0000015C C80100EF SWI +456 8310 SetPenColorToEditCOptions(&ec_options,color); \ 00000160 0B10A0E1 MOV R1,R11 \ 00000164 0D00A0E1 MOV R0,SP \ 00000168 CC0100EF SWI +460 8311 SetFontToEditCOptions(&ec_options,font); \ 0000016C 0A10A0E1 MOV R1,R10 \ 00000170 0D00A0E1 MOV R0,SP \ 00000174 CA0100EF SWI +458 8312 CopyOptionsToEditControl(&ec,&ec_options); \ 00000178 0D10A0E1 MOV R1,SP \ 0000017C 10008DE2 ADD R0,SP,#+16 \ 00000180 CE0100EF SWI +462 8313 AddEditControlToEditQend(eq,&ec,ma); \ 00000184 0520A0E1 MOV R2,R5 \ 00000188 10108DE2 ADD R1,SP,#+16 \ 0000018C 0800A0E1 MOV R0,R8 \ 00000190 660100EF SWI +358 8314 8315 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 8316 { 8317 ParseAnswer(ews,lp->text); \ 000001A4 A00397E5 LDR R0,[R7, #+928] \ 000001A8 601089E2 ADD R1,R9,#+96 \ 000001AC ........ BL ParseAnswer \ 000001B0 060000EA B ??CreateEditChat_15 8318 } 8319 else 8320 { 8321 ParseXStatusText(ews,lp->text,(lp->type&0x10)?O_X_COLOR:X_COLOR); \ ??CreateEditChat_14: \ 000001B4 100010E3 TST R0,#0x10 \ 000001B8 ........ LDRNE R0,??DataTable350 ;; O_X_COLOR \ 000001BC 601089E2 ADD R1,R9,#+96 \ 000001C0 ........ LDREQ R0,??DataTable351 ;; X_COLOR \ 000001C4 002090E5 LDR R2,[R0, #+0] \ 000001C8 A00397E5 LDR R0,[R7, #+928] \ 000001CC ........ BL ParseXStatusText 8322 } 8323 8324 PrepareEditControl(&ec); \ ??CreateEditChat_15: \ 000001D0 10008DE2 ADD R0,SP,#+16 \ 000001D4 640100EF SWI +356 8325 ConstructEditControl(&ec, 8326 ECT_NORMAL_TEXT, 8327 ews->wsbody[0] ? ECF_APPEND_EOL|ECF_DISABLE_T9 : ECF_DELSTR, 8328 ews,ews->wsbody[0]); \ 000001D8 A03397E5 LDR R3,[R7, #+928] \ 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 8329 PrepareEditCOptions(&ec_options); \ 00000204 04008DE2 ADD R0,SP,#+4 \ 00000208 C80100EF SWI +456 8330 //#ifdef M75 8331 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 8332 { 8333 SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); \ 00000220 100010E3 TST R0,#0x10 \ 00000224 ........ LDRNE R0,??DataTable348 ;; O_ED_FONT_SIZE \ 00000228 ........ LDREQ R0,??DataTable355 ;; ED_FONT_SIZE \ 0000022C 090000EA B ??CreateEditChat_17 8334 } 8335 else 8336 { 8337 SetPenColorToEditCOptions(&ec_options,(lp->type&0x10)?O_X_COLOR:X_COLOR); \ ??CreateEditChat_16: \ 00000230 100010E3 TST R0,#0x10 \ 00000234 ........ LDRNE R0,??DataTable350 ;; O_X_COLOR \ 00000238 ........ LDREQ R0,??DataTable351 ;; X_COLOR \ 0000023C 001090E5 LDR R1,[R0, #+0] \ 00000240 0D00A0E1 MOV R0,SP \ 00000244 CC0100EF SWI +460 8338 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,??DataTable352 ;; O_ED_X_FONT_SIZE \ 00000254 ........ LDREQ R0,??DataTable353 ;; ED_X_FONT_SIZE \ ??CreateEditChat_17: \ 00000258 001090E5 LDR R1,[R0, #+0] \ 0000025C 0D00A0E1 MOV R0,SP \ 00000260 CA0100EF SWI +458 8339 } 8340 //#else 8341 // SetFontToEditCOptions(&ec_options,(lp->type&0x10)?O_ED_FONT_SIZE:ED_FONT_SIZE); 8342 //#endif 8343 CopyOptionsToEditControl(&ec,&ec_options); \ 00000264 0D10A0E1 MOV R1,SP \ 00000268 10008DE2 ADD R0,SP,#+16 \ 0000026C CE0100EF SWI +462 8344 AddEditControlToEditQend(eq,&ec,ma); \ 00000270 0520A0E1 MOV R2,R5 \ 00000274 10108DE2 ADD R1,SP,#+16 \ 00000278 0800A0E1 MOV R0,R8 \ 0000027C 660100EF SWI +358 8345 lp=lp->next; \ 00000280 009099E5 LDR R9,[R9, #+0] 8346 } \ 00000284 000059E3 CMP R9,#+0 \ 00000288 6FFFFF1A BNE ??CreateEditChat_2 8347 if (t->isunread) total_unread--; \ ??CreateEditChat_1: \ 0000028C 900094E5 LDR R0,[R4, #+144] 8348 total_unread2=total_unread2-t->unread_msg; 8349 t->unread_msg=0; \ 00000290 0090A0E3 MOV R9,#+0 \ 00000294 000050E3 CMP R0,#+0 \ 00000298 18049715 LDRNE R0,[R7, #+1048] \ 0000029C 01004012 SUBNE R0,R0,#+1 \ 000002A0 18048715 STRNE R0,[R7, #+1048] \ 000002A4 F00297E5 LDR R0,[R7, #+752] \ 000002A8 941094E5 LDR R1,[R4, #+148] \ 000002AC 010040E0 SUB R0,R0,R1 \ 000002B0 F00287E5 STR R0,[R7, #+752] \ 000002B4 949084E5 STR R9,[R4, #+148] 8350 t->isunread=0; \ 000002B8 909084E5 STR R9,[R4, #+144] 8351 ChangeContactPos(t); \ 000002BC 0400A0E1 MOV R0,R4 \ 000002C0 ........ _BLF ChangeContactPos,??ChangeContactPos??rA 8352 wsprintf(ews, "-------"); \ 000002C4 A00397E5 LDR R0,[R7, #+928] \ 000002C8 4C1086E2 ADD R1,R6,#+76 \ 000002CC 240100EF SWI +292 8353 PrepareEditControl(&ec); \ 000002D0 10008DE2 ADD R0,SP,#+16 \ 000002D4 640100EF SWI +356 8354 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 000002D8 A03397E5 LDR R3,[R7, #+928] \ 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 8355 PrepareEditCOptions(&ec_options); \ 000002F8 04008DE2 ADD R0,SP,#+4 \ 000002FC C80100EF SWI +456 8356 SetFontToEditCOptions(&ec_options,ED_FONT_SIZE); \ 00000300 ........ LDR R0,??DataTable355 ;; ED_FONT_SIZE \ 00000304 001090E5 LDR R1,[R0, #+0] \ 00000308 04008DE2 ADD R0,SP,#+4 \ 0000030C CA0100EF SWI +458 8357 CopyOptionsToEditControl(&ec,&ec_options); \ 00000310 04108DE2 ADD R1,SP,#+4 \ 00000314 14008DE2 ADD R0,SP,#+20 \ 00000318 CE0100EF SWI +462 8358 AddEditControlToEditQend(eq,&ec,ma); \ 0000031C 0520A0E1 MOV R2,R5 \ 00000320 14108DE2 ADD R1,SP,#+20 \ 00000324 0800A0E1 MOV R0,R8 \ 00000328 660100EF SWI +358 8359 8360 if (t->answer) ParseAnswer(ews,t->answer); \ 0000032C A41094E5 LDR R1,[R4, #+164] \ 00000330 04D08DE2 ADD SP,SP,#+4 \ 00000334 000051E3 CMP R1,#+0 \ 00000338 0200000A BEQ ??CreateEditChat_18 \ 0000033C A00397E5 LDR R0,[R7, #+928] \ 00000340 ........ BL ParseAnswer \ 00000344 020000EA B ??CreateEditChat_19 8361 else CutWSTR(ews,0); \ ??CreateEditChat_18: \ 00000348 A00397E5 LDR R0,[R7, #+928] \ 0000034C 0010A0E3 MOV R1,#+0 \ 00000350 260100EF SWI +294 8362 PrepareEditControl(&ec); \ ??CreateEditChat_19: \ 00000354 10008DE2 ADD R0,SP,#+16 \ 00000358 640100EF SWI +356 8363 // ConstructEditControl(&ec,3,(FIRST_LETTER)?ECF_DEFAULT_BIG_LETTER:0,ews,1024); 8364 ConstructEditControl(&ec,3,(FIRST_LETTER)?ECF_DEFAULT_BIG_LETTER:0,ews,4096); \ 0000035C 20019FE5 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 A03397E5 LDR R3,[R7, #+928] \ 00000378 402DA013 MOVNE R2,#+4096 \ 0000037C 0020A003 MOVEQ R2,#+0 \ 00000380 14008DE2 ADD R0,SP,#+20 \ 00000384 650100EF SWI +357 8365 8366 PrepareEditCOptions(&ec_options); \ 00000388 04008DE2 ADD R0,SP,#+4 \ 0000038C C80100EF SWI +456 8367 SetFontToEditCOptions(&ec_options,ED_FONT_SIZE); \ 00000390 ........ LDR R0,??DataTable355 ;; ED_FONT_SIZE \ 00000394 001090E5 LDR R1,[R0, #+0] \ 00000398 04008DE2 ADD R0,SP,#+4 \ 0000039C CA0100EF SWI +458 8368 CopyOptionsToEditControl(&ec,&ec_options); \ 000003A0 04108DE2 ADD R1,SP,#+4 \ 000003A4 14008DE2 ADD R0,SP,#+20 \ 000003A8 CE0100EF SWI +462 8369 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 8370 8371 if (t->req_xtext) \ 000003C0 BC0094E5 LDR R0,[R4, #+188] \ 000003C4 04D08DE2 ADD SP,SP,#+4 \ 000003C8 000050E3 CMP R0,#+0 \ 000003CC 0400000A BEQ ??CreateEditChat_20 8372 { 8373 FreeXText(t); \ 000003D0 0400A0E1 MOV R0,R4 \ 000003D4 ........ _BLF FreeXText,??FreeXText??rA 8374 t->req_xtext=0; \ 000003D8 BC9084E5 STR R9,[R4, #+188] 8375 RequestXText(t->uin); \ 000003DC 0C0094E5 LDR R0,[R4, #+12] \ 000003E0 ........ BL RequestXText 8376 } 8377 8378 EDCHAT_STRUCT *ed_struct=malloc(sizeof(EDCHAT_STRUCT)); \ ??CreateEditChat_20: \ 000003E4 1400A0E3 MOV R0,#+20 \ 000003E8 140000EF SWI +20 \ 000003EC 0050A0E1 MOV R5,R0 8379 ed_struct->ed_contact=t; \ 000003F0 004085E5 STR R4,[R5, #+0] 8380 ed_struct->ed_answer=edchat_toitem; \ 000003F4 08A085E5 STR R10,[R5, #+8] 8381 ed_struct->requested_decrement_total_unread=0; \ 000003F8 0C9085E5 STR R9,[R5, #+12] 8382 t->req_add=0; \ 000003FC 989084E5 STR R9,[R4, #+152] 8383 t->last_log=NULL; \ 00000400 A89084E5 STR R9,[R4, #+168] 8384 8385 // int scr_w=ScreenW(); 8386 // int scr_h=ScreenH(); 8387 // int head_h=HeaderH(); 8388 8389 patch_header(&edchat_hdr); \ 00000404 B893C6E1 STRH R9,[R6, #+56] \ 00000408 1800A0E3 MOV R0,#+24 \ 0000040C BA03C6E1 STRH R0,[R6, #+58] \ 00000410 888100EF SWI +33160 \ 00000414 010040E2 SUB R0,R0,#+1 \ 00000418 BC03C6E1 STRH R0,[R6, #+60] \ 0000041C 8A8100EF SWI +33162 \ 00000420 170080E2 ADD R0,R0,#+23 \ 00000424 BE03C6E1 STRH R0,[R6, #+62] 8390 patch_input(&edchat_desc); \ 00000428 B891C6E1 STRH R9,[R6, #+24] \ 0000042C 8A8100EF SWI +33162 \ 00000430 190080E2 ADD R0,R0,#+25 \ 00000434 BA01C6E1 STRH R0,[R6, #+26] \ 00000438 888100EF SWI +33160 \ 0000043C 010040E2 SUB R0,R0,#+1 \ 00000440 BC01C6E1 STRH R0,[R6, #+28] \ 00000444 898100EF SWI +33161 \ 00000448 0040A0E1 MOV R4,R0 \ 0000044C 8B8100EF SWI +33163 \ 00000450 000044E0 SUB R0,R4,R0 \ 00000454 010040E2 SUB R0,R0,#+1 \ 00000458 BE01C6E1 STRH R0,[R6, #+30] 8391 // edchat_desc.font=ED_FONT_SIZE; 8392 edchat_id=CreateInputTextDialog(&edchat_desc,&edchat_hdr,eq,1,ed_struct); \ 0000045C 20002DE9 PUSH {R5} \ 00000460 0130A0E3 MOV R3,#+1 \ 00000464 0820A0E1 MOV R2,R8 \ 00000468 381086E2 ADD R1,R6,#+56 \ 0000046C 0600A0E1 MOV R0,R6 \ 00000470 670100EF SWI +359 \ 00000474 240487E5 STR R0,[R7, #+1060] 8393 } \ 00000478 40D08DE2 ADD SP,SP,#+64 \ 0000047C F08FBDE8 POP {R4-R11,PC} ;; return \ ??CreateEditChat_0: \ 00000480 ........ DC32 edchat_desc \ 00000484 ........ DC32 FIRST_LETTER 8394 8395 //----------------------------------------------------------------------------- 8396 8397 #define EC_MNU_MAX 9 8398 \ In segment CODE, align 4, keep-with-next 8399 void Quote(GUI *data) 8400 { \ Quote: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 84D04DE2 SUB SP,SP,#+132 8401 int q_n; 8402 EDITCONTROL ec, ec_hdr; 8403 EDITCONTROL ec_ed; 8404 WSHDR *ed_ws; 8405 WSHDR *ws; 8406 8407 EDCHAT_STRUCT *ed_struct; 8408 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 8409 8410 q_n=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 820100EF SWI +386 \ 00000018 0050A0E1 MOV R5,R0 8411 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 8412 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 8413 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 8414 8415 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 8416 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 8417 { 8418 wstrcpy(ed_ws,ec_hdr.pWS); \ 00000070 80109DE5 LDR R1,[SP, #+128] \ 00000074 0500A0E1 MOV R0,R5 \ 00000078 1F0100EF SWI +287 8419 wsAppendChar(ed_ws,'\r'); \ 0000007C 0D10A0E3 MOV R1,#+13 \ 00000080 0500A0E1 MOV R0,R5 \ 00000084 1C0000EF SWI +28 \ 00000088 020000EA B ??Quote_1 8420 } 8421 else 8422 CutWSTR(ed_ws,0); \ ??Quote_0: \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 260100EF SWI +294 8423 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 8424 { 8425 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 8426 } 8427 else 8428 { 8429 wstrcat(ed_ws,ec.pWS); \ ??Quote_2: \ 000000B8 54109DE5 LDR R1,[SP, #+84] \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 210100EF SWI +289 8430 } 8431 int ed_pos=0; \ ??Quote_3: \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 FF60A0E3 MOV R6,#+255 \ 000000CC FF6C86E3 ORR R6,R6,#0xFF00 8432 do 8433 { 8434 ed_pos++; \ ??Quote_4: \ 000000D0 017080E2 ADD R7,R0,#+1 8435 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 8436 wsInsertChar(ed_ws,' ',ed_pos); \ 000000E8 0720A0E1 MOV R2,R7 \ 000000EC 2010A0E3 MOV R1,#+32 \ 000000F0 0500A0E1 MOV R0,R5 \ 000000F4 1D0000EF SWI +29 8437 } 8438 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 8439 wsAppendChar(ed_ws,'\r'); \ 00000110 0D10A0E3 MOV R1,#+13 \ 00000114 0500A0E1 MOV R0,R5 \ 00000118 1C0000EF SWI +28 8440 wsAppendChar(ed_ws,'\r'); \ 0000011C 0D10A0E3 MOV R1,#+13 \ 00000120 0500A0E1 MOV R0,R5 \ 00000124 1C0000EF SWI +28 8441 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 8442 wstrcpy(ws,ec_ed.pWS); \ 00000144 28109DE5 LDR R1,[SP, #+40] \ 00000148 0060A0E1 MOV R6,R0 \ 0000014C 1F0100EF SWI +287 8443 wstrcat(ws,ed_ws); \ 00000150 0510A0E1 MOV R1,R5 \ 00000154 0600A0E1 MOV R0,R6 \ 00000158 210100EF SWI +289 8444 FreeWS(ed_ws); \ 0000015C 0500A0E1 MOV R0,R5 \ 00000160 290100EF SWI +297 8445 CutWSTR(ws,ec_ed.maxlen); \ 00000164 F811DDE1 LDRSH R1,[SP, #+24] \ 00000168 0600A0E1 MOV R0,R6 \ 0000016C 260100EF SWI +294 8446 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 8447 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 0000017C 040094E5 LDR R0,[R4, #+4] \ 00000180 0610A0E1 MOV R1,R6 \ 00000184 810100EF SWI +385 8448 FreeWS(ws); \ 00000188 0600A0E1 MOV R0,R6 \ 0000018C 290100EF SWI +297 8449 GeneralFuncF1(1); \ 00000190 0100A0E3 MOV R0,#+1 \ 00000194 3B0100EF SWI +315 8450 } \ 00000198 84D08DE2 ADD SP,SP,#+132 \ 0000019C F080BDE8 POP {R4-R7,PC} ;; return 8451 \ In segment CODE, align 4, keep-with-next 8452 void Quote2(GUI *data)//цитирование без фокуса на ответ 8453 { \ Quote2: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 84D04DE2 SUB SP,SP,#+132 8454 int q_n; 8455 EDITCONTROL ec, ec_hdr; 8456 EDITCONTROL ec_ed; 8457 WSHDR *ed_ws; 8458 WSHDR *ws; 8459 8460 EDCHAT_STRUCT *ed_struct; 8461 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 8462 8463 q_n=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000010 040094E5 LDR R0,[R4, #+4] \ 00000014 820100EF SWI +386 \ 00000018 0050A0E1 MOV R5,R0 8464 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 8465 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 8466 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 8467 8468 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 8469 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 8470 { 8471 wstrcpy(ed_ws,ec_hdr.pWS); \ 00000070 80109DE5 LDR R1,[SP, #+128] \ 00000074 0500A0E1 MOV R0,R5 \ 00000078 1F0100EF SWI +287 8472 wsAppendChar(ed_ws,'\r'); \ 0000007C 0D10A0E3 MOV R1,#+13 \ 00000080 0500A0E1 MOV R0,R5 \ 00000084 1C0000EF SWI +28 \ 00000088 020000EA B ??Quote2_1 8473 } 8474 else 8475 CutWSTR(ed_ws,0); \ ??Quote2_0: \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 260100EF SWI +294 8476 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 8477 { 8478 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 8479 } 8480 else 8481 { 8482 wstrcat(ed_ws,ec.pWS); \ ??Quote2_2: \ 000000B8 54109DE5 LDR R1,[SP, #+84] \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 210100EF SWI +289 8483 } 8484 int ed_pos=0; \ ??Quote2_3: \ 000000C4 0000A0E3 MOV R0,#+0 \ 000000C8 FF60A0E3 MOV R6,#+255 \ 000000CC FF6C86E3 ORR R6,R6,#0xFF00 8485 do 8486 { 8487 ed_pos++; \ ??Quote2_4: \ 000000D0 017080E2 ADD R7,R0,#+1 8488 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 8489 wsInsertChar(ed_ws,' ',ed_pos); \ 000000E8 0720A0E1 MOV R2,R7 \ 000000EC 2010A0E3 MOV R1,#+32 \ 000000F0 0500A0E1 MOV R0,R5 \ 000000F4 1D0000EF SWI +29 8490 } 8491 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 8492 wsAppendChar(ed_ws,'\r'); \ 00000110 0D10A0E3 MOV R1,#+13 \ 00000114 0500A0E1 MOV R0,R5 \ 00000118 1C0000EF SWI +28 8493 wsAppendChar(ed_ws,'\r'); \ 0000011C 0D10A0E3 MOV R1,#+13 \ 00000120 0500A0E1 MOV R0,R5 \ 00000124 1C0000EF SWI +28 8494 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 8495 wstrcpy(ws,ec_ed.pWS); \ 00000144 28109DE5 LDR R1,[SP, #+40] \ 00000148 0060A0E1 MOV R6,R0 \ 0000014C 1F0100EF SWI +287 8496 wstrcat(ws,ed_ws); \ 00000150 0510A0E1 MOV R1,R5 \ 00000154 0600A0E1 MOV R0,R6 \ 00000158 210100EF SWI +289 8497 FreeWS(ed_ws); \ 0000015C 0500A0E1 MOV R0,R5 \ 00000160 290100EF SWI +297 8498 CutWSTR(ws,ec_ed.maxlen); \ 00000164 F811DDE1 LDRSH R1,[SP, #+24] \ 00000168 0600A0E1 MOV R0,R6 \ 0000016C 260100EF SWI +294 8499 int ii=EDIT_GetFocus(ed_struct->ed_chatgui); \ 00000170 040094E5 LDR R0,[R4, #+4] \ 00000174 820100EF SWI +386 8500 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 8501 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 00000188 040094E5 LDR R0,[R4, #+4] \ 0000018C 0610A0E1 MOV R1,R6 \ 00000190 810100EF SWI +385 8502 EDIT_SetFocus(ed_struct->ed_chatgui,ii); \ 00000194 040094E5 LDR R0,[R4, #+4] \ 00000198 0510A0E1 MOV R1,R5 \ 0000019C 9B0100EF SWI +411 8503 FreeWS(ws); \ 000001A0 0600A0E1 MOV R0,R6 \ 000001A4 290100EF SWI +297 8504 GeneralFuncF1(1); \ 000001A8 0100A0E3 MOV R0,#+1 \ 000001AC 3B0100EF SWI +315 8505 } \ 000001B0 84D08DE2 ADD SP,SP,#+132 \ 000001B4 F080BDE8 POP {R4-R7,PC} ;; return 8506 8507 \ In segment CODE, align 4, keep-with-next 8508 void GetShortInfo(GUI *data) 8509 { \ GetShortInfo: \ 00000000 70402DE9 PUSH {R4-R6,LR} 8510 EDCHAT_STRUCT *ed_struct; 8511 ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 \ 00000008 0040A0E1 MOV R4,R0 8512 8513 TPKT *p; 8514 CLIST *t; 8515 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,??DataTable363 ;; i_rc + 1020 \ 0000001C 000090E5 LDR R0,[R0, #+0] \ 00000020 030050E3 CMP R0,#+3 \ 00000024 1B00001A BNE ??GetShortInfo_0 8516 { 8517 p=malloc(sizeof(PKT)); \ 00000028 0800A0E3 MOV R0,#+8 \ 0000002C 140000EF SWI +20 8518 p->pkt.uin=t->uin; 8519 p->pkt.type=T_REQINFOSHORT; 8520 p->pkt.data_len=0; 8521 AddStringToLog(t, 0x01, "Request info...", I_str,0xFFFFFFFF,1); \ 00000030 ........ LDR R3,??DataTable361 ;; 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 8522 AddMsgToChat(ed_struct->ed_chatgui); \ 00000070 040094E5 LDR R0,[R4, #+4] \ 00000074 ........ BL AddMsgToChat 8523 RecountMenu(t,1); \ 00000078 0110A0E3 MOV R1,#+1 \ 0000007C 0500A0E1 MOV R0,R5 \ 00000080 ........ BL RecountMenu 8524 SUBPROC((void *)SendAnswer,0,p); \ 00000084 ........ LDR R0,??DataTable362 ;; SendAnswer \ 00000088 0620A0E1 MOV R2,R6 \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 710100EF SWI +369 \ 00000094 08D08DE2 ADD SP,SP,#+8 8525 } 8526 GeneralFuncF1(1); \ ??GetShortInfo_0: \ 00000098 0100A0E3 MOV R0,#+1 \ 0000009C 3B0100EF SWI +315 8527 } \ 000000A0 7080BDE8 POP {R4-R6,PC} ;; return \ ??GetShortInfo_1: \ 000000A4 ........ DC32 `?` 8528 8529 void AskNickAndAddContact(EDCHAT_STRUCT *); \ In segment CODE, align 4, keep-with-next 8530 void AddCurContact(GUI *data) 8531 { \ AddCurContact: \ 00000000 00402DE9 PUSH {LR} 8532 EDCHAT_STRUCT *ed_struct; 8533 ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 8534 8535 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,??DataTable363 ;; i_rc + 1020 \ 00000018 001091E5 LDR R1,[R1, #+0] \ 0000001C 030051E3 CMP R1,#+3 \ 00000020 0000001A BNE ??AddCurContact_0 \ 00000024 ........ _BLF CreateAddContactGrpDialog,??CreateAddContactGrpDialog??rA 8536 GeneralFuncF1(1); \ ??AddCurContact_0: \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 3B0100EF SWI +315 8537 } \ 00000030 0080BDE8 POP {PC} ;; return 8538 \ In segment CODE, align 4, keep-with-next 8539 void SendAuthReq(GUI *data) 8540 { \ SendAuthReq: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 14D04DE2 SUB SP,SP,#+20 8541 EDCHAT_STRUCT *ed_struct; 8542 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 8543 8544 TPKT *p; 8545 CLIST *t; 8546 int l; 8547 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,??DataTable363 ;; i_rc + 1020 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 030050E3 CMP R0,#+3 \ 00000038 2000001A BNE ??SendAuthReq_1 8549 { 8550 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 8551 p->pkt.uin=t->uin; \ 00000054 0C0095E5 LDR R0,[R5, #+12] 8552 p->pkt.type=T_AUTHREQ; 8553 p->pkt.data_len=l; 8554 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 8555 AddStringToLog(t,0x01,p->data,I_str,0xFFFFFFFF,1); \ 00000074 ........ LDR R3,??DataTable361 ;; 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 8556 AddMsgToChat(ed_struct->ed_chatgui); \ 00000098 040094E5 LDR R0,[R4, #+4] \ 0000009C ........ BL AddMsgToChat 8557 RecountMenu(t,1); \ 000000A0 0110A0E3 MOV R1,#+1 \ 000000A4 0500A0E1 MOV R0,R5 \ 000000A8 ........ BL RecountMenu 8558 SUBPROC((void *)SendAnswer,0,p); \ 000000AC ........ LDR R0,??DataTable362 ;; SendAnswer \ 000000B0 0720A0E1 MOV R2,R7 \ 000000B4 0010A0E3 MOV R1,#+0 \ 000000B8 710100EF SWI +369 \ 000000BC 08D08DE2 ADD SP,SP,#+8 8559 } 8560 GeneralFuncF1(1); \ ??SendAuthReq_1: \ 000000C0 0100A0E3 MOV R0,#+1 \ 000000C4 3B0100EF SWI +315 8561 } \ 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,??DataTable363 ;; i_rc + 1020 \ 00000030 000090E5 LDR R0,[R0, #+0] \ 00000034 030050E3 CMP R0,#+3 \ 00000038 2000001A BNE ??SendAuthGrant_1 8573 { 8574 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 8575 p->pkt.uin=t->uin; \ 00000054 0C0095E5 LDR R0,[R5, #+12] 8576 p->pkt.type=T_AUTHGRANT; 8577 p->pkt.data_len=l; 8578 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 8579 AddStringToLog(t,0x01,p->data,I_str,0xFFFFFFFF,1); \ 00000074 ........ LDR R3,??DataTable364 ;; 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 8580 AddMsgToChat(ed_struct->ed_chatgui); \ 00000098 040094E5 LDR R0,[R4, #+4] \ 0000009C ........ BL AddMsgToChat 8581 RecountMenu(t,1); \ 000000A0 0110A0E3 MOV R1,#+1 \ 000000A4 0500A0E1 MOV R0,R5 \ 000000A8 ........ BL RecountMenu 8582 SUBPROC((void *)SendAnswer,0,p); \ 000000AC ........ LDR R0,??DataTable365 ;; SendAnswer \ 000000B0 0720A0E1 MOV R2,R7 \ 000000B4 0010A0E3 MOV R1,#+0 \ 000000B8 710100EF SWI +369 \ 000000BC 08D08DE2 ADD SP,SP,#+8 8583 } 8584 GeneralFuncF1(1); \ ??SendAuthGrant_1: \ 000000C0 0100A0E3 MOV R0,#+1 \ 000000C4 3B0100EF SWI +315 8585 } \ 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 8595 { 8596 if(HISTORY_SAVE_TYPE) \ 00000024 ........ LDR R1,??DataTable366 ;; 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 8597 { 8598 if(HISTORY_TYPE) \ 00000050 01002DE9 PUSH {R0} \ 00000054 00005CE3 CMP R12,#+0 \ 00000058 0500000A BEQ ??OpenLogfile_3 8599 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 8600 else 8601 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 8602 } 8603 else 8604 { 8605 if(HISTORY_TYPE) \ ??OpenLogfile_2: \ 0000008C 00005CE3 CMP R12,#+0 \ 00000090 0200000A BEQ ??OpenLogfile_6 8606 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 8607 else 8608 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 8609 } 8610 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 8611 } 8612 FreeWS(ws); \ ??OpenLogfile_0: \ 000000C0 0400A0E1 MOV R0,R4 \ 000000C4 290100EF SWI +297 8613 GeneralFuncF1(1); \ 000000C8 0100A0E3 MOV R0,#+1 \ 000000CC 3B0100EF SWI +315 8614 } \ 000000D0 3080BDE8 POP {R4,R5,PC} ;; return \ ??OpenLogfile_1: \ 000000D4 ........ DC32 HISTORY_SAVE_TYPE \ 000000D8 ........ DC32 HISTORY_TYPE \ 000000DC ........ DC32 `?` \ 000000E0 ........ DC32 HIST_PATH 8615 \ In segment CODE, align 4, keep-with-next 8616 void ClearLog(GUI *data/*,void *dummy*/) 8617 { \ ClearLog: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 8618 EDITCONTROL ec; 8619 EDCHAT_STRUCT *ed_struct; 8620 WSHDR *ws; 8621 CLIST *t; 8622 8623 ed_struct=MenuGetUserPointer(data); \ 00000008 E00100EF SWI +480 \ 0000000C 0040A0E1 MOV R4,R0 8624 8625 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 8626 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 8627 { 8628 ws=AllocWS(1); \ 00000030 0100A0E3 MOV R0,#+1 \ 00000034 250100EF SWI +293 \ 00000038 0050A0E1 MOV R5,R0 8629 CutWSTR(ws,0); \ 0000003C 0010A0E3 MOV R1,#+0 \ 00000040 260100EF SWI +294 8630 8631 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 8632 EDIT_SetTextToFocused(ed_struct->ed_chatgui,ws); \ 00000050 040094E5 LDR R0,[R4, #+4] \ 00000054 0510A0E1 MOV R1,R5 \ 00000058 810100EF SWI +385 8633 8634 FreeWS(ws); \ 0000005C 0500A0E1 MOV R0,R5 \ 00000060 290100EF SWI +297 8635 GeneralFuncF1(1); \ 00000064 1D0000EA B ??ClearLog_1 8636 } 8637 else 8638 { 8639 8640 if ((t=ed_struct->ed_contact)) \ ??ClearLog_0: \ 00000068 005094E5 LDR R5,[R4, #+0] \ 0000006C 000055E3 CMP R5,#+0 \ 00000070 1C00000A BEQ ??ClearLog_2 8641 { 8642 if (t->log) \ 00000074 A00095E5 LDR R0,[R5, #+160] \ 00000078 0060A0E3 MOV R6,#+0 \ 0000007C 000050E3 CMP R0,#+0 \ 00000080 1200000A BEQ ??ClearLog_3 8643 { 8644 FreeLOGQ(&t->log); \ 00000084 A00085E2 ADD R0,R5,#+160 \ 00000088 ........ BL FreeLOGQ 8645 t->msg_count=0; \ 0000008C B06085E5 STR R6,[R5, #+176] 8646 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 8647 { 8648 while(ed_struct->ed_answer!=2) 8649 { 8650 EDIT_RemoveEditControl(ed_struct->ed_chatgui,1); \ ??ClearLog_5: \ 000000AC 040094E5 LDR R0,[R4, #+4] \ 000000B0 0110A0E3 MOV R1,#+1 \ 000000B4 D10100EF SWI +465 8651 ed_struct->ed_answer--; \ 000000B8 080094E5 LDR R0,[R4, #+8] \ 000000BC 010040E2 SUB R0,R0,#+1 \ 000000C0 080084E5 STR R0,[R4, #+8] 8652 } \ ??ClearLog_4: \ 000000C4 080094E5 LDR R0,[R4, #+8] \ 000000C8 020050E3 CMP R0,#+2 \ 000000CC F6FFFF1A BNE ??ClearLog_5 8653 } 8654 } 8655 t->isactive=0; //by BoBa 18.06.07 \ ??ClearLog_3: \ 000000D0 AC6085E5 STR R6,[R5, #+172] 8656 RecountMenu(t,1); \ 000000D4 0110A0E3 MOV R1,#+1 \ 000000D8 0500A0E1 MOV R0,R5 \ 000000DC ........ BL RecountMenu 8657 GeneralFuncF1(1); \ ??ClearLog_1: \ 000000E0 0100A0E3 MOV R0,#+1 \ 000000E4 3B0100EF SWI +315 8658 } 8659 } 8660 } \ ??ClearLog_2: \ 000000E8 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 000000EC 7080BDE8 POP {R4-R6,PC} ;; return 8661 \ In segment CODE, align 4, keep-with-next 8662 void ecmenu_ghook(void *data, int cmd) 8663 { \ ecmenu_ghook: \ 00000000 00402DE9 PUSH {LR} 8664 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 8665 { 8666 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 8667 } 8668 } \ 00000010 0080BDE8 POP {PC} ;; return 8669 \ In segment DATA_C, align 4, align-sorted 8670 static const MENUITEM_DESC ecmenu_ITEMS[EC_MNU_MAX]= \ ecmenu_ITEMS: \ 00000000 00000000.... DC32 0H, `?` \ screen3: \ 00000008 DS8 12 \ 00000014 REQUIRE `?` \ screen4: \ 00000014 DS8 12 \ 00000020 REQUIRE `?` \ icons: \ 00000020 DS8 132 \ 000000A4 REQUIRE `?` \ MAINCSM: \ 000000A4 DS8 72 \ 000000EC REQUIRE `?` \ gipc: \ 000000EC DS8 12 \ 000000F8 REQUIRE `?` \ def_set: \ 000000F8 DS8 420 \ 0000029C REQUIRE `?` \ tmr_gipc: \ 0000029C DS8 12 \ 000002A8 REQUIRE `?` \ main_d: \ 000002A8 DS8 4 \ 000002AC REQUIRE `?` \ align: \ 000002AC DS8 4 \ 000002B0 REQUIRE `?` \ canvasdata: \ 000002B0 DS8 4 \ 000002B4 REQUIRE `?` \ paused_height: \ 000002B4 DS8 4 \ 000002B8 REQUIRE `?` \ wsBuffer: \ 000002B8 DS8 4 \ 000002BC REQUIRE `?` \ uins: \ 000002BC DS8 4 \ 000002C0 REQUIRE `?` \ saver_on: \ 000002C0 DS8 4 \ 000002C4 REQUIRE `?` \ PrintTimer: \ 000002C4 DS8 4 \ 000002C8 REQUIRE `?` \ curping: \ 000002C8 DS8 4 \ 000002CC REQUIRE `?` \ sendq_l: \ 000002CC DS8 4 \ 000002D0 REQUIRE `?` \ sendq_p: \ 000002D0 DS8 4 \ 000002D4 REQUIRE `?` \ main_count: \ 000002D4 DS8 4 \ 000002D8 REQUIRE `?` \ main2_count: \ 000002D8 DS8 4 \ 000002DC REQUIRE `?` \ Is_PING_On: \ 000002DC DS8 4 \ 000002E0 REQUIRE `?` \ Is_SLI_On: \ 000002E0 DS8 4 \ 000002E4 REQUIRE `?` \ Is_INC_On: \ 000002E4 DS8 4 \ 000002E8 REQUIRE `?` \ Is_ILU_On: \ 000002E8 DS8 4 \ 000002EC REQUIRE `?` \ Is_Double_Vibra_On: \ 000002EC DS8 4 \ 000002F0 REQUIRE `?` \ total_unread2: \ 000002F0 DS8 4 \ 000002F4 REQUIRE `?` \ maincsm_id: \ 000002F4 DS8 4 \ 000002F8 REQUIRE `?` \ maingui_id: \ 000002F8 DS8 4 \ 000002FC REQUIRE `?` \ contactlist_menu_id: \ 000002FC DS8 4 \ 00000300 REQUIRE `?` \ SENDMSGCOUNT: \ 00000300 DS8 4 \ 00000304 REQUIRE `?` \ IsActiveUp: \ 00000304 DS8 4 \ 00000308 REQUIRE `?` \ Is_Vibra_Enabled: \ 00000308 DS8 4 \ 0000030C REQUIRE `?` \ Is_Id3tag_Enabled: \ 0000030C DS8 4 \ 00000310 REQUIRE `?` \ S_ICONS: \ 00000310 DS8 136 \ 00000398 REQUIRE `?` \ CurrentStatus: \ 00000398 DS8 4 \ 0000039C REQUIRE `?` \ CurrentXStatus: \ 0000039C DS8 4 \ 000003A0 REQUIRE `?` \ ews: \ 000003A0 DS8 4 \ 000003A4 REQUIRE `?` \ msg_away_timer: \ 000003A4 DS8 4 \ 000003A8 REQUIRE `?` \ away_m: \ 000003A8 DS8 4 \ 000003AC REQUIRE `?` \ status_rem: \ 000003AC DS8 4 \ 000003B0 REQUIRE `?` \ change_back_status: \ 000003B0 DS8 4 \ 000003B4 REQUIRE `?` \ Show_XTX: \ 000003B4 DS8 4 \ 000003B8 REQUIRE `?` \ uptimeHour: \ 000003B8 DS8 4 \ 000003BC REQUIRE `?` \ uptimeMin: \ 000003BC DS8 4 \ 000003C0 REQUIRE `?` \ uptimeSec: \ 000003C0 DS8 4 \ 000003C4 REQUIRE `?` \ tracktimer: \ 000003C4 DS8 4 \ 000003C8 REQUIRE `?` \ input_awaymsg_id: \ 000003C8 DS8 4 \ 000003CC REQUIRE `?` \ silenthide: \ 000003CC DS8 4 \ 000003D0 REQUIRE `?` \ disautorecconect: \ 000003D0 DS8 4 \ 000003D4 REQUIRE `?` \ Is_Sounds_Enabled: \ 000003D4 DS8 4 \ 000003D8 REQUIRE `?` \ Is_Show_Offline: \ 000003D8 DS8 4 \ 000003DC REQUIRE `?` \ Is_Show_Groups: \ 000003DC DS8 4 \ 000003E0 REQUIRE `?` \ CurrentPrivateStatus: \ 000003E0 DS8 4 \ 000003E4 REQUIRE `?` \ vibra_count: \ 000003E4 DS8 4 \ 000003E8 REQUIRE `?` \ templates_chars: \ 000003E8 DS8 4 \ 000003EC REQUIRE `?` \ templates_lines: \ 000003EC DS8 4 \ 000003F0 REQUIRE `?` \ bot_chars: \ 000003F0 DS8 4 \ 000003F4 REQUIRE `?` \ bot_lines: \ 000003F4 DS8 4 \ 000003F8 REQUIRE `?` \ RXstate: \ 000003F8 DS8 4 \ 000003FC REQUIRE `?` \ connect_state: \ 000003FC DS8 4 \ 00000400 REQUIRE `?` \ sock: \ 00000400 DS8 4 \ 00000404 REQUIRE `?` \ TOTALRECEIVED: \ 00000404 DS8 4 \ 00000408 REQUIRE `?` \ TOTALSENDED: \ 00000408 DS8 4 \ 0000040C REQUIRE `?` \ ALLTOTALRECEIVED: \ 0000040C DS8 4 \ 00000410 REQUIRE `?` \ ALLTOTALSENDED: \ 00000410 DS8 4 \ 00000414 REQUIRE `?` \ is_gprs_online: \ 00000414 DS8 4 \ 00000418 REQUIRE `?` \ total_unread: \ 00000418 DS8 4 \ 0000041C REQUIRE `?` \ cltop: \ 0000041C DS8 4 \ 00000420 REQUIRE `?` \ GROUP_CACHE: \ 00000420 DS8 4 \ 00000424 REQUIRE `?` \ edchat_id: \ 00000424 DS8 4 \ 00000428 REQUIRE `?` \ tenseconds_to_ping: \ 00000428 DS8 4 \ 0000042C REQUIRE `?` \ on_off_timer: \ 0000042C DS8 4 \ 00000430 REQUIRE `?` \ kopa_online: \ 00000430 DS8 4 \ 00000434 REQUIRE `?` \ kopa_kontaktu: \ 00000434 DS8 4 \ 00000438 REQUIRE `?` \ DNR_ID: \ 00000438 DS8 4 \ 0000043C REQUIRE `?` \ DNR_TRIES: \ 0000043C DS8 4 \ 00000440 REQUIRE `?` \ host_counter: \ 00000440 DS8 4 \ 00000444 REQUIRE `?` \ ping_time: \ 00000444 DS8 4 \ 00000448 REQUIRE `?` \ ShowLoadScreen: \ 00000448 DS8 4 \ 0000044C REQUIRE `?` \ main_msg_timer2: \ 0000044C DS8 4 \ 00000450 REQUIRE `?` \ NEW_MSG: \ 00000450 DS8 4 \ 00000454 REQUIRE `?` \ time_to_stop_t9: \ 00000454 DS8 4 \ 00000458 REQUIRE `?` \ comanda: \ 00000458 DS8 4 \ 0000045C REQUIRE `?` \ INC_show: \ 0000045C DS8 4 \ 00000460 REQUIRE `?` \ INC_show2: \ 00000460 DS8 4 \ 00000464 REQUIRE `?` \ pp_icon: \ 00000464 DS8 4 \ 00000468 REQUIRE `?` \ pp_xicon: \ 00000468 DS8 4 \ 0000046C REQUIRE `?` \ INC_show3: \ 0000046C DS8 4 \ 00000470 REQUIRE `?` \ curpos: \ 00000470 DS8 4 \ 00000474 REQUIRE `?` \ uinContact: \ 00000474 DS8 4 \ 00000478 REQUIRE `?` \ hy: \ 00000478 DS8 4 \ 0000047C REQUIRE `?` \ clfont: \ 0000047C DS8 4 \ 00000480 REQUIRE `?` \ i_curpos: \ 00000480 DS8 4 \ 00000484 REQUIRE `?` \ itemFromDisp: \ 00000484 DS8 4 \ 00000488 REQUIRE `?` \ totalItems: \ 00000488 DS8 4 \ 0000048C REQUIRE `?` \ curpage: \ 0000048C DS8 4 \ 00000490 REQUIRE `?` \ collum: \ 00000490 DS8 4 \ 00000494 REQUIRE `?` \ shot_soft: \ 00000494 DS8 4 \ 00000498 REQUIRE `?` \ shot_header: \ 00000498 DS8 4 \ 0000049C REQUIRE `?` \ clstartItem: \ 0000049C DS8 4 \ 000004A0 REQUIRE `?` \ _to_develop: \ 000004A0 DS8 4 \ 000004A4 REQUIRE `?` \ errornumber: \ 000004A4 DS8 4 \ 000004A8 REQUIRE `?` \ iconmsg: \ 000004A8 DS8 4 \ 000004AC REQUIRE `?` \ old_ed_redraw: \ 000004AC DS8 4 \ 000004B0 REQUIRE `?` \ 000004B0 DS8 64 \ 000004F0 REQUIRE `?` \ elf_path: \ 000004F0 DS8 256 \ 000005F0 REQUIRE `?` \ ContactT9Key: \ 000005F0 DS8 32 \ 00000610 REQUIRE `?` \ menuproc: \ 00000610 DS8 40 \ 00000638 REQUIRE `?` \ ixtext: \ 00000638 DS8 256 \ 00000738 REQUIRE `?` \ talk_sound: \ 00000738 DS8 128 \ 000007B8 REQUIRE `?` \ unread_msg_info: \ 000007B8 DS8 64 \ 000007F8 REQUIRE `?` \ last_msg_buffer: \ 000007F8 DS8 4096 \ 000017F8 REQUIRE `?` \ prmsg: \ 000017F8 DS8 256 \ 000018F8 REQUIRE `?` \ ping_tmr: \ 000018F8 DS8 16 \ 00001908 REQUIRE `?` \ PINGO: \ 00001908 DS8 256 \ 00001A08 REQUIRE `?` \ away_msg: \ 00001A08 DS8 264 \ 00001B10 REQUIRE `?` \ away_msg_time: \ 00001B10 DS8 64 \ 00001B50 REQUIRE `?` \ away_msg_time_dace: \ 00001B50 DS8 16 \ 00001B60 REQUIRE `?` \ tim_zone: \ 00001B60 DS8 16 \ 00001B70 REQUIRE `?` \ away_tmr: \ 00001B70 DS8 16 \ 00001B80 REQUIRE `?` \ autoChangeStatus: \ 00001B80 DS8 16 \ 00001B90 REQUIRE `?` \ remind_tmr: \ 00001B90 DS8 16 \ 00001BA0 REQUIRE `?` \ uptime_tmr: \ 00001BA0 DS8 16 \ 00001BB0 REQUIRE `?` \ tracktmr: \ 00001BB0 DS8 16 \ 00001BC0 REQUIRE `?` \ onlineTime: \ 00001BC0 DS8 128 \ 00001C40 REQUIRE `?` \ sli_tmr: \ 00001C40 DS8 16 \ 00001C50 REQUIRE `?` \ logmsg: \ 00001C50 DS8 256 \ 00001D50 REQUIRE `?` \ logmsg2: \ 00001D50 DS8 256 \ 00001E50 REQUIRE `?` \ tmr_illumination: \ 00001E50 DS8 16 \ 00001E60 REQUIRE `?` \ tmr_vibra: \ 00001E60 DS8 16 \ 00001E70 REQUIRE `?` \ reconnect_tmr: \ 00001E70 DS8 16 \ 00001E80 REQUIRE `?` \ tmr_active: \ 00001E80 DS8 16 \ 00001E90 REQUIRE `?` \ clmenu_sk_r: \ 00001E90 DS8 16 \ 00001EA0 REQUIRE `?` \ on_off_buf: \ 00001EA0 DS8 128 \ 00001F20 REQUIRE `?` \ hostbuf2: \ 00001F20 DS8 128 \ 00001FA0 REQUIRE `?` \ hostname: \ 00001FA0 DS8 128 \ 00002020 REQUIRE `?` \ I_UIN: \ 00002020 DS8 12 \ 0000202C REQUIRE `?` \ sds: \ 0000202C DS8 8 \ 00002034 REQUIRE `?` \ mp3: \ 00002034 DS8 4 \ 00002038 REQUIRE `?` \ wav: \ 00002038 DS8 4 \ 0000203C REQUIRE `?` \ amr: \ 0000203C DS8 4 \ 00002040 REQUIRE `?` \ a_txt: \ 00002040 DS8 48 \ 00002070 REQUIRE `?` \ s_txt: \ 00002070 DS8 48 \ 000020A0 REQUIRE `?` \ d_txt: \ 000020A0 DS8 48 \ 000020D0 REQUIRE `?` \ f_txt: \ 000020D0 DS8 48 \ 00002100 REQUIRE `?` \ g_txt: \ 00002100 DS8 48 \ 00002130 REQUIRE `?` \ develop: \ 00002130 DS8 16 \ 00002140 REQUIRE `?` \ requests1: \ 00002140 DS8 24 \ 00002158 REQUIRE `?` \ requests2: \ 00002158 DS8 20 \ 0000216C REQUIRE `?` \ requests3: \ 0000216C DS8 24 \ 00002184 REQUIRE `?` \ requests4: \ 00002184 DS8 20 \ 00002198 REQUIRE `?` \ mod_info: \ 00002198 DS8 264 \ 000022A0 REQUIRE `?` \ show_nick: \ 000022A0 DS8 32 \ 000022C0 REQUIRE `?` \ onContact: \ 000022C0 DS8 64 \ 00002300 REQUIRE `?` \ incs2: \ 00002300 DS8 16 \ 00002310 REQUIRE `?` \ OffContact: \ 00002310 DS8 64 \ 00002350 REQUIRE `?` \ incs3: \ 00002350 DS8 16 \ 00002360 REQUIRE `?` \ tm22: \ 00002360 DS8 16 \ 00002370 REQUIRE `?` \ clrBlack: \ 00002370 DS8 4 \ 00002374 REQUIRE `?` \ clrWhite: \ 00002374 DS8 4 \ 00002378 REQUIRE `?` \ clrRed: \ 00002378 DS8 4 \ 0000237C REQUIRE `?` \ transparent: \ 0000237C DS8 4 \ 00002380 REQUIRE `?` \ blue: \ 00002380 DS8 8 \ 00002388 REQUIRE `?` \ i_tmr: \ 00002388 DS8 16 \ 00002398 REQUIRE `?` 8685 { 8686 Quote, 8687 Quote2, 8688 AddSmile, 8689 GetShortInfo, 8690 AddCurContact, 8691 SendAuthReq, 8692 SendAuthGrant, 8693 OpenLogfile, 8694 ClearLog, 8695 }; 8696 8697 char ecm_contactname[64]; \ ecm_contactname: \ 00002398 DS8 64 \ 000023D8 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 \ CmdMenuHeader: \ 00000000 DS8 20 \ 00000014 REQUIRE `?` \ cmd_chars: \ 00000014 DS8 4 \ 00000018 REQUIRE `?` \ cmd_lines: \ 00000018 DS8 4 \ 0000001C REQUIRE `?` \ NumOfItems: \ 0000001C DS8 4 \ 00000020 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ requests6: \ 00000000 DS8 24 \ 00000018 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ lastKey: \ 00000000 DS8 4 \ 00000004 REQUIRE `?` 8698 \ In segment DATA_C, align 4, align-sorted 8699 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 8700 8701 static const MENU_DESC ecmenu_STRUCT= 8702 { 8703 8,NULL,ecmenu_ghook,NULL, 8704 menusoftkeys, 8705 &menu_skt, 8706 0, 8707 NULL, 8708 ecmenu_ITEMS, 8709 ecmenu_HNDLS, 8710 EC_MNU_MAX 8711 }; 8712 \ In segment CODE, align 4, keep-with-next 8713 void ec_menu(EDCHAT_STRUCT *ed_struct) 8714 { \ ec_menu: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 28D04DE2 SUB SP,SP,#+40 \ 00000008 0040A0E1 MOV R4,R0 8715 CLIST *t; 8716 int to_remove[EC_MNU_MAX+1]; 8717 int remove=0; 8718 if ((t=ed_struct->ed_contact)) \ 0000000C 001094E5 LDR R1,[R4, #+0] \ 00000010 000051E3 CMP R1,#+0 \ 00000014 4F00000A BEQ ??ec_menu_0 8719 { 8720 if (t->name) \ 00000018 ........ LDR R5,??DataTable367 ;; i_rc \ 0000001C 9800A0E3 MOV R0,#+152 \ 00000020 8C0D80E3 ORR R0,R0,#0x2300 \ 00000024 050080E0 ADD R0,R0,R5 \ 00000028 142091E2 ADDS R2,R1,#+20 \ 0000002C 0300000A BEQ ??ec_menu_1 8721 { 8722 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 8723 } 8724 else 8725 { 8726 sprintf(ecm_contactname,"%u",t->uin); \ ??ec_menu_1: \ 00000040 0C2091E5 LDR R2,[R1, #+12] \ 00000044 451F8FE2 ADR R1,??ec_menu_3 ;; "%u" \ 00000048 160000EF SWI +22 8727 } 8728 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 083094E5 LDR R3,[R4, #+8] \ 00000058 0220A0E3 MOV R2,#+2 \ 0000005C 0010A0E3 MOV R1,#+0 \ 00000060 030050E1 CMP R0,R3 \ 00000064 0400001A BNE ??ec_menu_4 8729 { 8730 to_remove[++remove]=0; \ 00000068 04108DE5 STR R1,[SP, #+4] 8731 to_remove[++remove]=1; \ 0000006C 0260A0E3 MOV R6,#+2 \ 00000070 0130A0E3 MOV R3,#+1 \ 00000074 08308DE5 STR R3,[SP, #+8] \ 00000078 010000EA B ??ec_menu_5 8732 } 8733 else 8734 { 8735 // to_remove[++remove]=1; 8736 to_remove[++remove]=2; \ ??ec_menu_4: \ 0000007C 0160A0E3 MOV R6,#+1 \ 00000080 04208DE5 STR R2,[SP, #+4] 8737 } 8738 8739 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 8740 to_remove[++remove]=7; \ 00000090 016086E2 ADD R6,R6,#+1 \ 00000094 0D00A0E1 MOV R0,SP \ 00000098 0730A0E3 MOV R3,#+7 \ 0000009C 063180E7 STR R3,[R0, +R6, LSL #+2] 8741 8742 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 FC0395E5 LDR R0,[R5, #+1020] \ 000000B0 030050E3 CMP R0,#+3 \ 000000B4 1000000A BEQ ??ec_menu_8 8743 { 8744 to_remove[++remove]=2; \ ??ec_menu_7: \ 000000B8 010086E2 ADD R0,R6,#+1 \ 000000BC 0D30A0E1 MOV R3,SP \ 000000C0 002183E7 STR R2,[R3, +R0, LSL #+2] 8745 to_remove[++remove]=3; \ 000000C4 010080E2 ADD R0,R0,#+1 \ 000000C8 0D20A0E1 MOV R2,SP \ 000000CC 0330A0E3 MOV R3,#+3 \ 000000D0 003182E7 STR R3,[R2, +R0, LSL #+2] 8746 to_remove[++remove]=4; \ 000000D4 010080E2 ADD R0,R0,#+1 \ 000000D8 0430A0E3 MOV R3,#+4 \ 000000DC 003182E7 STR R3,[R2, +R0, LSL #+2] 8747 to_remove[++remove]=5; \ 000000E0 010080E2 ADD R0,R0,#+1 \ 000000E4 0530A0E3 MOV R3,#+5 \ 000000E8 003182E7 STR R3,[R2, +R0, LSL #+2] 8748 to_remove[++remove]=6; \ 000000EC 016080E2 ADD R6,R0,#+1 \ 000000F0 0D00A0E1 MOV R0,SP \ 000000F4 0620A0E3 MOV R2,#+6 \ 000000F8 062180E7 STR R2,[R0, +R6, LSL #+2] 8749 } 8750 8751 patch_header(&ecmenu_HDR); \ ??ec_menu_8: \ 000000FC 60509FE5 LDR R5,??ec_menu_3+0x4 ;; ecmenu_HDR \ 00000100 1800A0E3 MOV R0,#+24 \ 00000104 B010C5E1 STRH R1,[R5, #+0] \ 00000108 B200C5E1 STRH R0,[R5, #+2] \ 0000010C 888100EF SWI +33160 \ 00000110 010040E2 SUB R0,R0,#+1 \ 00000114 B400C5E1 STRH R0,[R5, #+4] \ 00000118 8A8100EF SWI +33162 \ 0000011C 170080E2 ADD R0,R0,#+23 \ 00000120 B600C5E1 STRH R0,[R5, #+6] 8752 to_remove[0]=remove; \ 00000124 00608DE5 STR R6,[SP, #+0] 8753 CreateMenu(0,0,&ecmenu_STRUCT,&ecmenu_HDR,0,EC_MNU_MAX,ed_struct,to_remove); \ 00000128 0D00A0E1 MOV R0,SP \ 0000012C 01002DE9 PUSH {R0} \ 00000130 10002DE9 PUSH {R4} \ 00000134 0530A0E1 MOV R3,R5 \ 00000138 0900A0E3 MOV R0,#+9 \ 0000013C 01002DE9 PUSH {R0} \ 00000140 142085E2 ADD R2,R5,#+20 \ 00000144 0010A0E3 MOV R1,#+0 \ 00000148 0000A0E3 MOV R0,#+0 \ 0000014C 01002DE9 PUSH {R0} \ 00000150 520100EF SWI +338 \ 00000154 10D08DE2 ADD SP,SP,#+16 8754 } 8755 } \ ??ec_menu_0: \ 00000158 28D08DE2 ADD SP,SP,#+40 ;; stack cleaning \ 0000015C 7080BDE8 POP {R4-R6,PC} ;; return \ ??ec_menu_3: \ 00000160 25750000 DC8 "%u",+0 \ 00000164 ........ DC32 ecmenu_HDR 8756 8757 \ In segment CODE, align 4, keep-with-next 8758 void AskNickAndAddContact(EDCHAT_STRUCT *ed_struct) 8759 { 8760 CreateAddContactGrpDialog(ed_struct->ed_contact); \ AskNickAndAddContact: \ 00000000 000090E5 LDR R0,[R0, #+0] \ 00000004 ........ _BF CreateAddContactGrpDialog,??CreateAddContactGrpDialog??rA ;; tailcall 8761 } 8762 \ In segment CODE, align 4, keep-with-next 8763 void AddSmile(GUI *data) 8764 { \ AddSmile: \ 00000000 00402DE9 PUSH {LR} 8765 EDCHAT_STRUCT *ed_struct=MenuGetUserPointer(data); \ 00000004 E00100EF SWI +480 8766 CreateSmileSelectGUI(ed_struct); \ 00000008 ........ _BLF CreateSmileSelectGUI,??CreateSmileSelectGUI??rA 8767 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 8768 } \ 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 menutext \ In segment CODE, align 4, keep-with-next \ ??DataTable7: \ 00000000 ........ DC32 Auto_Status \ In segment CODE, align 4, keep-with-next \ ??DataTable13: \ 00000000 ........ DC32 Remind_Timer2 \ In segment CODE, align 4, keep-with-next \ ??DataTable16: \ 00000000 ........ DC32 GetTags \ In segment CODE, align 4, keep-with-next \ ??DataTable21: \ 00000000 ........ DC32 showAwayIdle \ In segment CODE, align 4, keep-with-next \ ??DataTable22: \ 00000000 ........ DC32 spaco1 \ In segment CODE, align 4, keep-with-next \ ??DataTable23: \ 00000000 ........ DC32 fonto \ In segment CODE, align 4, keep-with-next \ ??DataTable26: \ 00000000 ........ DC32 AUTO_ENGADE \ In segment CODE, align 4, keep-with-next \ ??DataTable27: \ 00000000 ........ DC32 awayMsg \ In segment CODE, align 4, keep-with-next \ ??DataTable32: \ 00000000 ........ DC32 icons_names \ In segment CODE, align 4, keep-with-next \ ??DataTable37: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable40: \ 00000000 ........ DC32 def_setting \ In segment CODE, align 4, keep-with-next \ ??DataTable42: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable43: \ 00000000 ........ DC32 ind_set_xstatus \ In segment CODE, align 4, keep-with-next \ ??DataTable49: \ 00000000 ........ DC32 vibraPower \ In segment CODE, align 4, keep-with-next \ ??DataTable52: \ 00000000 ........ DC32 VIBR_TYPE \ In segment CODE, align 4, keep-with-next \ ??DataTable62: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable65: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable67: \ 00000000 ........ DC32 WriteDefSettings \ In segment CODE, align 4, keep-with-next \ ??DataTable69: \ 00000000 ........ DC32 AUTO_ENGADE \ In segment CODE, align 4, keep-with-next \ ??DataTable70: \ 00000000 ........ DC32 suc_config_name \ In segment CODE, align 4, keep-with-next \ ??DataTable71: \ 00000000 ........ DC32 suc_config_name_mod \ In segment CODE, align 4, keep-with-next \ ??DataTable72: \ 00000000 ........ DC32 janis \ In segment CODE, align 4, keep-with-next \ ??DataTable74: \ 00000000 ........ DC32 i_rc + 1052 \ In segment CODE, align 4, keep-with-next \ ??DataTable76: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable77: \ 00000000 ........ DC32 do_reconnect \ In segment CODE, align 4, keep-with-next \ ??DataTable78: \ 00000000 ........ DC32 RECONNECT_TIME \ In segment CODE, align 4, keep-with-next \ ??DataTable81: \ 00000000 ........ DC32 sndLostConn \ In segment CODE, align 4, keep-with-next \ ??DataTable83: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable85: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable86: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable88: \ 00000000 ........ DC32 ignor_list \ In segment CODE, align 4, keep-with-next \ ??DataTable89: \ 00000000 ........ DC32 extended_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable90: \ 00000000 ........ DC32 automsgcount \ In segment CODE, align 4, keep-with-next \ ??DataTable91: \ 00000000 ........ DC32 ext_type_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable92: \ 00000000 ........ DC32 Canvas + 8 \ In segment CODE, align 4, keep-with-next \ ??DataTable93: \ 00000000 ........ DC32 janis \ In segment CODE, align 4, keep-with-next \ ??DataTable95: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable97: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable98: \ 00000000 ........ DC32 O_ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable99: \ 00000000 ........ DC32 X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable100: \ 00000000 ........ DC32 O_X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable110: \ 00000000 ........ DC32 O_ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable111: \ 00000000 ........ DC32 ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable112: \ 00000000 ........ DC32 ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable114: \ 00000000 ........ DC32 ACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable115: \ 00000000 ........ DC32 O_TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable116: \ 00000000 ........ DC32 O_I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable117: \ 00000000 ........ DC32 TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable118: \ 00000000 ........ DC32 I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable119: \ 00000000 ........ DC32 UNACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable120: \ 00000000 ........ DC32 O_ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable121: \ 00000000 ........ DC32 ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable127: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable130: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable132: \ 00000000 ........ DC32 CmdMenuHeader \ In segment CODE, align 4, keep-with-next \ ??DataTable133: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable134: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable136: \ 00000000 ........ DC32 I_str \ In segment CODE, align 4, keep-with-next \ ??DataTable137: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable138: \ 00000000 ........ DC32 ignor_list \ In segment CODE, align 4, keep-with-next \ ??DataTable139: \ 00000000 ........ DC32 automsgcount \ In segment CODE, align 4, keep-with-next \ ??DataTable140: \ 00000000 ........ DC32 awayMsg \ In segment CODE, align 4, keep-with-next \ ??DataTable141: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable147: \ 00000000 ........ DC32 PopupFont \ In segment CODE, align 4, keep-with-next \ ??DataTable148: \ 00000000 ........ DC32 NumStatusToIconBar \ In segment CODE, align 4, keep-with-next \ ??DataTable149: \ 00000000 ........ DC32 PopupBGCl \ In segment CODE, align 4, keep-with-next \ ??DataTable151: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable154: \ 00000000 ........ DC32 VIBR_ON_CONNECT \ In segment CODE, align 4, keep-with-next \ ??DataTable155: \ 00000000 ........ DC32 isLogStatusChange \ In segment CODE, align 4, keep-with-next \ ??DataTable156: \ 00000000 ........ DC32 extended_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable157: \ 00000000 ........ DC32 ext_type_sounds \ In segment CODE, align 4, keep-with-next \ ??DataTable158: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable160: \ 00000000 ........ DC32 VIBR_TYPE \ In segment CODE, align 4, keep-with-next \ ??DataTable162: \ 00000000 ........ DC32 SHOW_ACTIVE \ In segment CODE, align 4, keep-with-next \ ??DataTable165: \ 00000000 ........ DC32 process_active_timer \ In segment CODE, align 4, keep-with-next \ ??DataTable166: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable168: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable175: \ 00000000 ........ DC32 automsgcount \ In segment CODE, align 4, keep-with-next \ ??DataTable183: \ 00000000 ........ DC32 isSystemFont \ In segment CODE, align 4, keep-with-next \ ??DataTable184: \ 00000000 ........ DC32 pngFont \ In segment CODE, align 4, keep-with-next \ ??DataTable185: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable187: \ 00000000 ........ DC32 i_rc + 1140 \ In segment CODE, align 4, keep-with-next \ ??DataTable190: \ 00000000 ........ DC32 i_rc + 9084 \ In segment CODE, align 4, keep-with-next \ ??DataTable194: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable197: \ 00000000 ........ DC32 menutext \ In segment CODE, align 4, keep-with-next \ ??DataTable198: \ 00000000 ........ DC32 PNG_SOFTKEY \ In segment CODE, align 4, keep-with-next \ ??DataTable201: \ 00000000 ........ DC32 SoftBackgrClr \ In segment CODE, align 4, keep-with-next \ ??DataTable202: \ 00000000 ........ DC32 SoftFontClr \ In segment CODE, align 4, keep-with-next \ ??DataTable204: \ 00000000 ........ DC32 PNG_HEADER \ In segment CODE, align 4, keep-with-next \ ??DataTable205: \ 00000000 ........ DC32 HeadFont \ In segment CODE, align 4, keep-with-next \ ??DataTable208: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable210: \ 00000000 ........ DC32 pngFont \ In segment CODE, align 4, keep-with-next \ ??DataTable220: \ 00000000 ........ DC32 Canvas + 8 \ In segment CODE, align 4, keep-with-next \ ??DataTable223: \ 00000000 ........ DC32 LINE_MODE \ In segment CODE, align 4, keep-with-next \ ??DataTable224: \ 00000000 ........ DC32 isLogStatusChange \ In segment CODE, align 4, keep-with-next \ ??DataTable225: \ 00000000 ........ DC32 isSystemFont \ In segment CODE, align 4, keep-with-next \ ??DataTable226: \ 00000000 ........ DC32 VIEW_MODE \ In segment CODE, align 4, keep-with-next \ ??DataTable232: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable233: \ 00000000 ........ DC32 SOFT_MODE \ In segment CODE, align 4, keep-with-next \ ??DataTable234: \ 00000000 ........ DC32 VIEW_MODE \ In segment CODE, align 4, keep-with-next \ ??DataTable236: \ 00000000 ........ DC32 HISTORY_BUFFER \ In segment CODE, align 4, keep-with-next \ ??DataTable238: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable239: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable241: \ 00000000 ........ DC32 isSystemFont \ In segment CODE, align 4, keep-with-next \ ??DataTable242: \ 00000000 ........ DC32 pngFont \ In segment CODE, align 4, keep-with-next \ ??DataTable245: \ 00000000 ........ DC32 IsInvertSoftKey \ In segment CODE, align 4, keep-with-next \ ??DataTable248: \ 00000000 ........ DC32 WriteDefSettings \ In segment CODE, align 4, keep-with-next \ ??DataTable249: \ 00000000 ........ DC32 LINE_MODE \ In segment CODE, align 4, keep-with-next \ ??DataTable250: \ 00000000 ........ DC32 VIEW_MODE \ In segment CODE, align 4, keep-with-next \ ??DataTable252: \ 00000000 ........ DC32 AUTO_ENGADE \ In segment CODE, align 4, keep-with-next \ ??DataTable254: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable255: \ 00000000 ........ DC32 process_active_timer \ In segment CODE, align 4, keep-with-next \ ??DataTable258: \ 00000000 ........ DC32 my_keyhook \ In segment CODE, align 4, keep-with-next \ ??DataTable259: \ 00000000 ........ DC32 end_socket \ In segment CODE, align 4, keep-with-next \ ??DataTable261: \ 00000000 ........ DC32 ElfKiller \ In segment CODE, align 4, keep-with-next \ ??DataTable263: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable264: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable267: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable271: \ 00000000 ........ DC32 Auto_Status \ In segment CODE, align 4, keep-with-next \ ??DataTable272: \ 00000000 ........ DC32 showAwayIdle \ In segment CODE, align 4, keep-with-next \ ??DataTable274: \ 00000000 ........ DC32 spaco1 \ In segment CODE, align 4, keep-with-next \ ??DataTable276: \ 00000000 ........ DC32 suc_config_name_mod \ In segment CODE, align 4, keep-with-next \ ??DataTable284: \ 00000000 ........ DC32 RECONNECT_TIME \ In segment CODE, align 4, keep-with-next \ ??DataTable285: \ 00000000 ........ DC32 do_reconnect \ In segment CODE, align 4, keep-with-next \ ??DataTable286: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable288: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable289: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable290: \ 00000000 ........ DC32 end_socket \ In segment CODE, align 4, keep-with-next \ ??DataTable291: \ 00000000 ........ DC32 VIBR_ON_CONNECT \ In segment CODE, align 4, keep-with-next \ ??DataTable292: \ 00000000 ........ DC32 sndLostConn \ In segment CODE, align 4, keep-with-next \ ??DataTable293: \ 00000000 ........ DC32 ClearSendQ \ In segment CODE, align 4, keep-with-next \ ??DataTable294: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable295: \ 00000000 ........ DC32 NumStatusToIconBar \ In segment CODE, align 4, keep-with-next \ ??DataTable296: \ 00000000 ........ DC32 ShowStatusIcon \ In segment CODE, align 4, keep-with-next \ ??DataTable300: \ 00000000 ........ DC32 Canvas \ In segment CODE, align 4, keep-with-next \ ??DataTable301: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable302: \ 00000000 ........ DC32 suc_config_name \ In segment CODE, align 4, keep-with-next \ ??DataTable303: \ 00000000 ........ DC32 ElfKiller \ In segment CODE, align 4, keep-with-next \ ??DataTable304: \ 00000000 ........ DC32 fontpath \ In segment CODE, align 4, keep-with-next \ ??DataTable305: \ 00000000 ........ DC32 fontpath2 \ In segment CODE, align 4, keep-with-next \ ??DataTable306: \ 00000000 ........ DC32 fontpath3 \ In segment CODE, align 4, keep-with-next \ ??DataTable307: \ 00000000 ........ DC32 fontpath4 \ In segment CODE, align 4, keep-with-next \ ??DataTable308: \ 00000000 ........ DC32 isSystemFont \ In segment CODE, align 4, keep-with-next \ ??DataTable309: \ 00000000 ........ DC32 pngFont \ In segment CODE, align 4, keep-with-next \ ??DataTable310: \ 00000000 ........ DC32 PNG_SOFTKEY \ In segment CODE, align 4, keep-with-next \ ??DataTable311: \ 00000000 ........ DC32 PNG_HEADER \ In segment CODE, align 4, keep-with-next \ ??DataTable312: \ 00000000 ........ DC32 addIconBar \ In segment CODE, align 4, keep-with-next \ ??DataTable313: \ 00000000 ........ DC32 fonto \ In segment CODE, align 4, keep-with-next \ ??DataTable314: \ 00000000 ........ DC32 Pinger2 \ In segment CODE, align 4, keep-with-next \ ??DataTable315: \ 00000000 ........ DC32 my_keyhook \ In segment CODE, align 4, keep-with-next \ ??DataTable317: \ 00000000 ........ DC32 i_rc + 1052 \ In segment CODE, align 4, keep-with-next \ ??DataTable319: \ 00000000 ........ DC32 IsMultiBuffer \ In segment CODE, align 4, keep-with-next \ ??DataTable321: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable322: \ 00000000 ........ DC32 end_socket \ In segment CODE, align 4, keep-with-next \ ??DataTable323: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable324: \ 00000000 ........ DC32 create_connect \ In segment CODE, align 4, keep-with-next \ ??DataTable326: \ 00000000 ........ DC32 SHOW_ACTIVE \ In segment CODE, align 4, keep-with-next \ ??DataTable329: \ 00000000 ........ DC32 TEMPLATES_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable330: \ 00000000 ........ DC32 IsMultiBuffer \ In segment CODE, align 4, keep-with-next \ ??DataTable333: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable334: \ 00000000 ........ DC32 ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable335: \ 00000000 ........ DC32 I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable336: \ 00000000 ........ DC32 ACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable337: \ 00000000 ........ DC32 O_I_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable340: \ 00000000 ........ DC32 O_TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable341: \ 00000000 ........ DC32 O_ED_H_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable344: \ 00000000 ........ DC32 TO_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable345: \ 00000000 ........ DC32 UNACK_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable348: \ 00000000 ........ DC32 O_ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable350: \ 00000000 ........ DC32 O_X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable351: \ 00000000 ........ DC32 X_COLOR \ In segment CODE, align 4, keep-with-next \ ??DataTable352: \ 00000000 ........ DC32 O_ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable353: \ 00000000 ........ DC32 ED_X_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable355: \ 00000000 ........ DC32 ED_FONT_SIZE \ In segment CODE, align 4, keep-with-next \ ??DataTable361: \ 00000000 ........ DC32 I_str \ In segment CODE, align 4, keep-with-next \ ??DataTable362: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable363: \ 00000000 ........ DC32 i_rc + 1020 \ In segment CODE, align 4, keep-with-next \ ??DataTable364: \ 00000000 ........ DC32 I_str \ In segment CODE, align 4, keep-with-next \ ??DataTable365: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable366: \ 00000000 ........ DC32 UIN \ In segment CODE, align 4, keep-with-next \ ??DataTable367: \ 00000000 ........ DC32 i_rc \ In segment CODE, align 4, keep-with-next \ ??DataTable368: \ 00000000 ........ DC32 GetTags \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 00000008 00000000 DC16 0, 0 \ 0000000C 08000000.... DC32 8, `?` \ .... \ `?`: \ 00000014 00000000 DC16 0, 0 \ 00000018 08000000.... DC32 8, `?` \ .... \ `?`: \ 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 \ 000000000000 \ 00000000 \ 00000070 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000080 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000090 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 \ `?`: \ 000000A4 ............ DC32 maincsm_onmessage, maincsm_oncreate, 0, 0, 0, 0, maincsm_onclose \ ....00000000 \ 000000000000 \ 000000000000 \ ........ \ 000000C0 2C0000000100 DC32 44, 1, minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ 0000........ \ ........CCCC \ AA5555AA3333 \ 00000000 \ 000000DC 8B00 DC16 139 \ 000000DE 0000 DC8 0, 0 \ 000000E0 49636F6E4261 DC8 "IconBar" \ 7200 \ 000000E8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000000EC 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 000000F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000108 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000118 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000128 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000138 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000148 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000158 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000168 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000178 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000188 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000198 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000001F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000208 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000218 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000228 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000238 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000248 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000258 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000268 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000278 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000288 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 \ `?`: \ 0000029C 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 000002A8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002AC 00000000 DC32 0 \ `?`: \ 000002B0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002B4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002B8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002BC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002C0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002C4 00000000 DC32 0 \ `?`: \ 000002C8 00000000 DC32 0 \ `?`: \ 000002CC 00000000 DC32 0 \ `?`: \ 000002D0 00000000 DC32 0H \ `?`: \ 000002D4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002D8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002DC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002E0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002E4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000002E8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 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 DC8 0, 0, 0, 0 \ `?`: \ 00000300 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000304 00000000 DC32 0 \ `?`: \ 00000308 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000030C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000310 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000320 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000330 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000340 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000350 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000360 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000370 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000380 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000390 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 00000398 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000039C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003A0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003A4 00000000 DC32 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 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003C8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003CC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003D0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003D4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003D8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003DC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003E0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003E4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003E8 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003EC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003F0 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003F4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000003F8 F6FFFFFF DC32 -10 \ `?`: \ 000003FC 00000000 DC32 0 \ `?`: \ 00000400 FFFFFFFF DC32 -1 \ `?`: \ 00000404 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000408 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000040C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000410 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000414 01000000 DC32 1 \ `?`: \ 00000418 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000041C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000420 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000424 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000428 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000042C 00000000 DC32 0 \ `?`: \ 00000430 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000434 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000438 00000000 DC32 0 \ `?`: \ 0000043C 03000000 DC32 3 \ `?`: \ 00000440 00000000 DC32 0 \ `?`: \ 00000444 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000448 01000000 DC32 1 \ `?`: \ 0000044C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000450 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000454 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000458 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000045C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000460 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000464 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000468 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000046C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000470 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000474 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000478 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000047C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000480 01000000 DC32 1 \ `?`: \ 00000484 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000488 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000048C 01000000 DC32 1 \ `?`: \ 00000490 00000000 DC32 0 \ `?`: \ 00000494 00000000 DC32 0 \ `?`: \ 00000498 00000000 DC32 0 \ `?`: \ 0000049C 00000000 DC32 0 \ `?`: \ 000004A0 00000000 DC32 0 \ `?`: \ 000004A4 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000004A8 01000000 DC32 1 \ `?`: \ 000004AC 00000000 DC8 0, 0, 0, 0 \ `?`: \ 000004B0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004C0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004D0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000004E0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000004F0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000500 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000510 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000520 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000530 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000540 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000550 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000560 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000570 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000580 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000590 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005A0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005B0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005C0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005D0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000005E0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000005F0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000600 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000610 ............ DC32 RqtXText, ChangeVibraContact, ChangeSoundContact, ChangeAutoMsg \ ............ \ ........ \ 00000620 ............ DC32 ChangeShowXstatus, ChangeAccess, ChangeAwaySignal \ ............ \ 0000062C ............ DC32 ChangeLoadHistory, ChangeAutobot \ .... \ 00000634 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000638 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000648 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000658 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000668 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000678 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000688 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000698 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000006F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000708 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000718 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000728 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00000738 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000748 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000758 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000768 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000778 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000788 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000798 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000007B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000007E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000007F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000808 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000818 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000828 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000838 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000848 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000858 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000868 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000878 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000888 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000898 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000008F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000908 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000918 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000928 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000938 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000948 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000958 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000968 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000978 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000988 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000998 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000009F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A18 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A28 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A38 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A48 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A58 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A68 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A78 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A88 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000A98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AA8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AB8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AC8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AD8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AE8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000AF8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B18 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B28 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B38 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B48 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B58 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B68 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B78 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B88 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000B98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BA8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BB8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BC8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BD8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BE8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000BF8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C18 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C28 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C38 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C48 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C58 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C68 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C78 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C88 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000C98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CA8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CB8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CC8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CD8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CE8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000CF8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D18 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D28 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D38 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D48 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D58 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D68 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D78 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D88 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000D98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DA8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DB8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DC8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DD8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DE8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000DF8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E18 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E28 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E38 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E48 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E58 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E68 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E78 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E88 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000E98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EA8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EB8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EC8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000ED8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EE8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000EF8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F18 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F28 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F38 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F48 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F58 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F68 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F78 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F88 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000F98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FA8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FB8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FC8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FD8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FE8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00000FF8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001008 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001018 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001028 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001038 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001048 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001058 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001068 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001078 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001088 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001098 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000010F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001108 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001118 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001128 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001138 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001148 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001158 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001168 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001178 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001188 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001198 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000011F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001208 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001218 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001228 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001238 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001248 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001258 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001268 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001278 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001288 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001298 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000012F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001308 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001318 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001328 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001338 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001348 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001358 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001368 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001378 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001388 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001398 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000013F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001408 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001418 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001428 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001438 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001448 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001458 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001468 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001478 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001488 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001498 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000014F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001508 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001518 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001528 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001538 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001548 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001558 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001568 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001578 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001588 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001598 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000015F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001608 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001618 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001628 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001638 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001648 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001658 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001668 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001678 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001688 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001698 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000016F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001708 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001718 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001728 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001738 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001748 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001758 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001768 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001778 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001788 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001798 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000017E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000017F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001808 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001818 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001828 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001838 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001848 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001858 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001868 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001878 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001888 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001898 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000018E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000018F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001908 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001918 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001928 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001938 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001948 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001958 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001968 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001978 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001988 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001998 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000019F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001A08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A18 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A28 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A38 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A48 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A58 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A68 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A78 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A88 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001A98 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AA8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AB8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AC8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AD8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AE8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001AF8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001B08 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 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, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C20 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C30 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001C40 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001C50 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C60 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C70 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C80 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001C90 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CA0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CB0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CC0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CD0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CE0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001CF0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D00 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D10 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D20 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D30 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D40 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001D50 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D60 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D70 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D80 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001D90 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DA0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DB0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DC0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DD0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DE0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001DF0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E00 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E10 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E20 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E30 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001E40 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001E50 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001E60 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001E70 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001E80 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001E90 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001EA0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EB0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EC0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001ED0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EE0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001EF0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F00 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F10 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001F20 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F30 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F40 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F50 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F60 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F70 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F80 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001F90 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00001FA0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001FB0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001FC0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001FD0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001FE0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00001FF0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002000 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002010 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002020 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ `?`: \ 0000202C 257325642E25 DC8 "%s%d.%s" \ 7300 \ `?`: \ 00002034 6D703300 DC8 "mp3" \ `?`: \ 00002038 77617600 DC8 "wav" \ `?`: \ 0000203C 616D7200 DC8 "amr" \ `?`: \ 00002040 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002050 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002060 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002070 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002080 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002090 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000020A0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000020B0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000020C0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000020D0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000020E0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000020F0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002100 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002110 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002120 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002130 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002140 53656E64696E DC8 "Sending online time..." \ 67206F6E6C69 \ 6E652074696D \ 652E2E2E00 \ 00002157 00 DC8 0 \ `?`: \ 00002158 53656E64696E DC8 "Sending msg info..." \ 67206D736720 \ 696E666F2E2E \ 2E00 \ `?`: \ 0000216C 53656E64696E DC8 "Sending battery info..." \ 672062617474 \ 65727920696E \ 666F2E2E2E00 \ `?`: \ 00002184 53656E64696E DC8 "Sending mod info..." \ 67206D6F6420 \ 696E666F2E2E \ 2E00 \ `?`: \ 00002198 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000021A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000021B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000021C8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000021D8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000021E8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000021F8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002208 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002218 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002228 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002238 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002248 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002258 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002268 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002278 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002288 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002298 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0 \ 0000 \ `?`: \ 000022A0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000022B0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 000022C0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000022D0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000022E0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000022F0 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002300 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002310 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002320 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002330 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 00002340 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002350 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002360 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002370 00000064 DC8 0, 0, 0, 100 \ `?`: \ 00002374 FFFFFF64 DC8 255, 255, 255, 100 \ `?`: \ 00002378 FF000064 DC8 255, 0, 0, 100 \ `?`: \ 0000237C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00002380 0000FF6400 DC8 0, 0, 0FFH, 64H, 0 \ 00002385 000000 DC8 0, 0, 0 \ `?`: \ 00002388 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ `?`: \ 00002398 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000023A8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000023B8 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ 000023C8 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 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_ID, align 4, align-sorted \ `?`: \ 00000000 53656E64696E DC8 "Sending offline info..." \ 67206F66666C \ 696E6520696E \ 666F2E2E2E00 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 FFFFFFFF DC32 -1 \ In segment DATA_C, align 4, align-sorted \ 00000000 5F5F5400 DC8 "__T" \ In segment DATA_C, align 4, align-sorted \ 00000000 5B535D00 DC8 "[S]" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 2573202D2025 DC8 "%s - %d(%d)" \ 642825642900 \ 0000000C 343A5C6E6174 DC8 "4:\\nata.txt" \ 612E74787400 \ 00000018 4572726F7221 DC8 "Error!" \ 00 \ 0000001F 00 DC8 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 0D0A00 DC8 "\015\012" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 0000004000 DC8 0, 0, 0, 40H, 0 \ 00000005 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 5B415D202573 DC8 "[A] %s" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?_1`: \ 00000000 5B535D00 DC8 "[S]" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 687474703A2F DC8 "http://kluchnik.jino-net.ru/naticqmod/" \ 2F6B6C756368 \ 6E696B2E6A69 \ 6E6F2D6E6574 \ 2E72752F6E61 \ 746963716D6F \ 642F00 \ 00000027 00 DC8 0 \ 00000028 726576697369 DC8 "revision 2058, mod date: %s at %s " \ 6F6E20323035 \ 382C206D6F64 \ 20646174653A \ 202573206174 \ 2025732000 \ 0000004B 00 DC8 0 \ 0000004C C0E2F2EEEEF2 DC8 "\300\342\362\356\356\362\342\345\362\367\350\352: %s %s! %s %s" \ E2E5F2F7E8EA \ 3A2025732025 \ 732120257320 \ 257300 \ 00000067 00 DC8 0 \ 00000068 5F5F42415400 DC8 "__BAT" \ 0000006E 0000 DC8 0, 0 \ 00000070 4745545F4241 DC8 "GET_BAT_INFO" \ 545F494E464F \ 00 \ 0000007D 000000 DC8 0, 0, 0 \ 00000080 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 \ 0000009C 5F5F4D4F4400 DC8 "__MOD" \ 000000A2 0000 DC8 0, 0 \ 000000A4 4745545F4D4F DC8 "GET_MOD_INFO" \ 445F494E464F \ 00 \ 000000B1 000000 DC8 0, 0, 0 \ 000000B4 2A2A2A416363 DC8 "***Access denied***" \ 657373206465 \ 6E6965642A2A \ 2A00 \ 000000C8 5F5F50524F56 DC8 "__PROVIDER" \ 4944455200 \ 000000D3 00 DC8 0 \ 000000D4 4745545F5052 DC8 "GET_PROVIDER" \ 4F5649444552 \ 00 \ 000000E1 000000 DC8 0, 0, 0 \ 000000E4 53656E64696E DC8 "Sending provider name..." \ 672070726F76 \ 69646572206E \ 616D652E2E2E \ 00 \ 000000FD 000000 DC8 0, 0, 0 \ 00000100 CEEFE5F0E0F2 DC8 "\316\357\345\360\340\362\356\360: %s" \ EEF03A202573 \ 00 \ 0000010D 000000 DC8 0, 0, 0 \ 00000110 5F5F4D534700 DC8 "__MSG" \ 00000116 0000 DC8 0, 0 \ 00000118 4745545F4D53 DC8 "GET_MSG_INFO" \ 475F494E464F \ 00 \ 00000125 000000 DC8 0, 0, 0 \ 00000128 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 \ 00000158 5F5F4F4E4C49 DC8 "__ONLINE" \ 4E4500 \ 00000161 000000 DC8 0, 0, 0 \ 00000164 4745545F4F4E DC8 "GET_ONLINE_TIME" \ 4C494E455F54 \ 494D4500 \ 00000174 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 \ 0000019F 00 DC8 0 \ 000001A0 5F5F485700 DC8 "__HW" \ 000001A5 000000 DC8 0, 0, 0 \ 000001A8 5F5F504C4154 DC8 "__PLATFORM" \ 464F524D00 \ 000001B3 00 DC8 0 \ 000001B4 4745545F504C DC8 "GET_PLATFORM_INFO" \ 4154464F524D \ 5F494E464F00 \ 000001C6 0000 DC8 0, 0 \ 000001C8 53656E64696E DC8 "Sending platform info..." \ 6720706C6174 \ 666F726D2069 \ 6E666F2E2E2E \ 00 \ 000001E1 000000 DC8 0, 0, 0 \ 000001E4 2573206D6F64 DC8 "%s model: %s sw: %s" \ 656C3A202573 \ 2073773A2025 \ 7300 \ 000001F8 4745545F5449 DC8 "GET_TIME" \ 4D4500 \ 00000201 000000 DC8 0, 0, 0 \ 00000204 5F5F54494D45 DC8 "__TIME" \ 00 \ 0000020B 00 DC8 0 \ 0000020C 53656E64696E DC8 "Sending time..." \ 672074696D65 \ 2E2E2E00 \ 0000021C 54696D653A20 DC8 "Time: %02d:%02d" \ 253032643A25 \ 30326400 \ 0000022C 5F5F544900 DC8 "__TI" \ 00000231 000000 DC8 0, 0, 0 \ 00000234 5F5F54455854 DC8 "__TEXTINFO" \ 494E464F00 \ 0000023F 00 DC8 0 \ 00000240 53656E64696E DC8 "Sending textinfo..." \ 672074657874 \ 696E666F2E2E \ 2E00 \ 00000254 547261666669 DC8 54H, 72H, 61H, 66H, 66H, 69H, 63H, 3AH \ 633A \ 0000025C 205278203A20 DC8 20H, 52H, 78H, 20H, 3AH, 20H, 25H, 64H \ 2564 \ 00000264 62205478203A DC8 62H, 20H, 54H, 78H, 20H, 3AH, 20H, 25H \ 2025 \ 0000026C 646220517565 DC8 64H, 62H, 20H, 51H, 75H, 65H, 75H, 65H \ 7565 \ 00000274 3A2025646220 DC8 3AH, 20H, 25H, 64H, 62H, 20H, 0DH, 0AH \ 0D0A \ 0000027C 54696D653A20 DC8 54H, 69H, 6DH, 65H, 3AH, 20H, 25H, 30H \ 2530 \ 00000284 32643A253032 DC8 32H, 64H, 3AH, 25H, 30H, 32H, 64H, 0DH \ 640D \ 0000028C 0A4F6E6C696E DC8 0AH, 4FH, 6EH, 6CH, 69H, 6EH, 65H, 20H \ 6520 \ 00000294 636F6E746163 DC8 63H, 6FH, 6EH, 74H, 61H, 63H, 74H, 3AH \ 743A \ 0000029C 202564205B74 DC8 20H, 25H, 64H, 20H, 5BH, 74H, 6FH, 74H \ 6F74 \ 000002A4 616C3A202564 DC8 61H, 6CH, 3AH, 20H, 25H, 64H, 5DH, 20H \ 5D20 \ 000002AC 0D0A556E7265 DC8 0DH, 0AH, 55H, 6EH, 72H, 65H, 61H, 64H \ 6164 \ 000002B4 206D65737361 DC8 20H, 6DH, 65H, 73H, 73H, 61H, 67H, 65H \ 6765 \ 000002BC 3A2025642F25 DC8 3AH, 20H, 25H, 64H, 2FH, 25H, 64H, 20H \ 6420 \ 000002C4 00 DC8 0 \ 000002C5 000000 DC8 0, 0, 0 \ 000002C8 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 \ 000002E7 00 DC8 0 \ 000002E8 CEEFE5F0E0F2 DC8 "\316\357\345\360\340\362\356\360: %s \015\012" \ EEF03A202573 \ 200D0A00 \ 000002F8 CEF2EFF0E0E2 DC8 0CEH, 0F2H, 0EFH, 0F0H, 0E0H, 0E2H, 0EBH, 0E5H \ EBE5 \ 00000300 EDEE20F1EEEE DC8 0EDH, 0EEH, 20H, 0F1H, 0EEH, 0EEH, 0E1H, 0F9H \ E1F9 \ 00000308 E5EDE8E93A20 DC8 0E5H, 0EDH, 0E8H, 0E9H, 3AH, 20H, 25H, 64H \ 2564 \ 00000310 200D0ACFF0E8 DC8 20H, 0DH, 0AH, 0CFH, 0F0H, 0E8H, 0EDH, 0FFH \ EDFF \ 00000318 F2EE20F1EEEE DC8 0F2H, 0EEH, 20H, 0F1H, 0EEH, 0EEH, 0E1H, 0F9H \ E1F9 \ 00000320 E5EDE8E93A20 DC8 0E5H, 0EDH, 0E8H, 0E9H, 3AH, 20H, 25H, 64H \ 2564 \ 00000328 200D0A00 DC8 20H, 0DH, 0AH, 0 \ 0000032C C2F0E5ECFF20 DC8 0C2H, 0F0H, 0E5H, 0ECH, 0FFH, 20H, 0E2H, 20H \ E220 \ 00000334 EEEDEBE0E9ED DC8 0EEH, 0EDH, 0EBH, 0E0H, 0E9H, 0EDH, 3AH, 20H \ 3A20 \ 0000033C 253032643A25 DC8 25H, 30H, 32H, 64H, 3AH, 25H, 30H, 32H \ 3032 \ 00000344 643A25303264 DC8 64H, 3AH, 25H, 30H, 32H, 64H, 20H, 0DH \ 200D \ 0000034C 0AD1E5F0E2E5 DC8 0AH, 0D1H, 0E5H, 0F0H, 0E2H, 0E5H, 0F0H, 3AH \ F03A \ 00000354 202573200D0A DC8 20H, 25H, 73H, 20H, 0DH, 0AH, 25H, 73H \ 2573 \ 0000035C 200D0A00 DC8 20H, 0DH, 0AH, 0 \ 00000360 506C6174666F DC8 "Platform: \250LKA" \ 726D3A20A84C \ 4B4100 \ 0000036F 00 DC8 0 \ 00000370 2573206D6F64 DC8 "%s model: %s sw: %s\015\012" \ 656C3A202573 \ 2073773A2025 \ 730D0A00 \ 00000386 0000 DC8 0, 0 \ 00000388 6D6F64206279 DC8 6DH, 6FH, 64H, 20H, 62H, 79H, 20H, 45H \ 2045 \ 00000390 76696C666F78 DC8 76H, 69H, 6CH, 66H, 6FH, 78H, 2CH, 6BH \ 2C6B \ 00000398 6C7563686E69 DC8 6CH, 75H, 63H, 68H, 6EH, 69H, 6BH, 2CH \ 6B2C \ 000003A0 77696E646573 DC8 77H, 69H, 6EH, 64H, 65H, 73H, 20H, 62H \ 2062 \ 000003A8 61736564206F DC8 61H, 73H, 65H, 64H, 20H, 6FH, 6EH, 20H \ 6E20 \ 000003B0 726576697369 DC8 72H, 65H, 76H, 69H, 73H, 69H, 6FH, 6EH \ 6F6E \ 000003B8 20323035382C DC8 20H, 32H, 30H, 35H, 38H, 2CH, 20H, 6DH \ 206D \ 000003C0 6F6420646174 DC8 6FH, 64H, 20H, 64H, 61H, 74H, 65H, 3AH \ 653A \ 000003C8 204A756C6520 DC8 20H, 4AH, 75H, 6CH, 65H, 20H, 31H, 33H \ 3133 \ 000003D0 203230303820 DC8 20H, 32H, 30H, 30H, 38H, 20H, 61H, 74H \ 6174 \ 000003D8 2031343A3033 DC8 20H, 31H, 34H, 3AH, 30H, 33H, 3AH, 35H \ 3A35 \ 000003E0 3900 DC8 39H, 0 \ 000003E2 0000 DC8 0, 0 \ 000003E4 536570203230 DC8 "Sep 20 2008" \ 203230303800 \ 000003F0 32303A31333A DC8 "20:13:42" \ 343200 \ 000003F9 000000 DC8 0, 0, 0 \ 000003FC 53656E64696E DC8 "Sending url info..." \ 672075726C20 \ 696E666F2E2E \ 2E00 \ 00000410 4745545F5552 DC8 "GET_URL_INFO" \ 4C5F494E464F \ 00 \ 0000041D 000000 DC8 0, 0, 0 \ 00000420 5F5F55524C00 DC8 "__URL" \ 00000426 0000 DC8 0, 0 \ 00000428 4175746F626F DC8 "Autobot" \ 7400 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E4154494351 DC8 "NATICQ: %d" \ 3A20256400 \ 0000000B 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 43ECE0E9EBFB DC8 "C\354\340\351\353\373" \ 00 \ 00000007 00 DC8 0 \ 00000008 C220E1F3F4E5 DC8 "\302 \341\363\364\345\360" \ F000 \ 00000010 C8E720E1F3F4 DC8 "\310\347 \341\363\364\345\360\340" \ E5F0E000 \ 0000001A 0000 DC8 0, 0 \ 0000001C CAEEECE0EDE4 DC8 "\312\356\354\340\355\344\340" \ E000 \ 00000024 CEF7E8F1F2E8 DC8 "\316\367\350\361\362\350\362\374 \341\363\364\345\360" \ F2FC20E1F3F4 \ E5F000 \ 00000033 00 DC8 0 \ 00000034 D1EBE5E4F3FE DC8 "\321\353\345\344\363\376\371\350\351 \367\340\362" \ F9E8E920F7E0 \ F200 \ 00000042 0000 DC8 0, 0 \ 00000044 CFF0E5E4FBE4 DC8 "\317\360\345\344\373\344\363\371\350\351 \367\340\362" \ F3F9E8E920F7 \ E0F200 \ 00000053 00 DC8 0 \ 00000054 CAEEECE0EDE4 DC8 "\312\356\354\340\355\344\373" \ FB00 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 474D54202B31 DC8 "GMT +10:00" \ 303A303000 \ 0000000B 00 DC8 0 \ 0000000C 474D54202B31 DC8 "GMT +13:00" \ 333A303000 \ 00000017 00 DC8 0 \ 00000018 474D54202B31 DC8 "GMT +12:00" \ 323A303000 \ 00000023 00 DC8 0 \ 00000024 474D54202B31 DC8 "GMT +11:00" \ 313A303000 \ 0000002F 00 DC8 0 \ 00000030 474D54202B30 DC8 "GMT +09:30" \ 393A333000 \ 0000003B 00 DC8 0 \ 0000003C 474D54202B30 DC8 "GMT +09:00" \ 393A303000 \ 00000047 00 DC8 0 \ 00000048 474D54202B30 DC8 "GMT +08:00" \ 383A303000 \ 00000053 00 DC8 0 \ 00000054 474D54202B30 DC8 "GMT +07:00" \ 373A303000 \ 0000005F 00 DC8 0 \ 00000060 474D54202B30 DC8 "GMT +06:30" \ 363A333000 \ 0000006B 00 DC8 0 \ 0000006C 474D54202B30 DC8 "GMT +06:00" \ 363A303000 \ 00000077 00 DC8 0 \ 00000078 474D54202B30 DC8 "GMT +05:45" \ 353A343500 \ 00000083 00 DC8 0 \ 00000084 474D54202B30 DC8 "GMT +05:30" \ 353A333000 \ 0000008F 00 DC8 0 \ 00000090 474D54202B30 DC8 "GMT +05:00" \ 353A303000 \ 0000009B 00 DC8 0 \ 0000009C 474D54202B30 DC8 "GMT +04:30" \ 343A333000 \ 000000A7 00 DC8 0 \ 000000A8 474D54202B30 DC8 "GMT +04:00" \ 343A303000 \ 000000B3 00 DC8 0 \ 000000B4 474D54202B30 DC8 "GMT +03:30" \ 333A333000 \ 000000BF 00 DC8 0 \ 000000C0 474D54202B30 DC8 "GMT +03:00" \ 333A303000 \ 000000CB 00 DC8 0 \ 000000CC 474D54202B30 DC8 "GMT +02:00" \ 323A303000 \ 000000D7 00 DC8 0 \ 000000D8 474D54202B30 DC8 "GMT +01:00" \ 313A303000 \ 000000E3 00 DC8 0 \ 000000E4 474D54203030 DC8 "GMT 00:00" \ 3A303000 \ 000000EE 0000 DC8 0, 0 \ 000000F0 474D54202D30 DC8 "GMT -01:00" \ 313A303000 \ 000000FB 00 DC8 0 \ 000000FC 474D54202D30 DC8 "GMT -02:00" \ 323A303000 \ 00000107 00 DC8 0 \ 00000108 474D54202D30 DC8 "GMT -03:00" \ 333A303000 \ 00000113 00 DC8 0 \ 00000114 474D54202D30 DC8 "GMT -03:30" \ 333A333000 \ 0000011F 00 DC8 0 \ 00000120 474D54202D30 DC8 "GMT -04:00" \ 343A303000 \ 0000012B 00 DC8 0 \ 0000012C 474D54202D30 DC8 "GMT -05:00" \ 353A303000 \ 00000137 00 DC8 0 \ 00000138 474D54202D30 DC8 "GMT -06:00" \ 363A303000 \ 00000143 00 DC8 0 \ 00000144 474D54202D30 DC8 "GMT -07:00" \ 373A303000 \ 0000014F 00 DC8 0 \ 00000150 474D54202D30 DC8 "GMT -08:00" \ 383A303000 \ 0000015B 00 DC8 0 \ 0000015C 474D54202D30 DC8 "GMT -09:00" \ 393A303000 \ 00000167 00 DC8 0 \ 00000168 474D54202D31 DC8 "GMT -10:00" \ 303A303000 \ 00000173 00 DC8 0 \ 00000174 474D54202D31 DC8 "GMT -11:00" \ 313A303000 \ 0000017F 00 DC8 0 \ 00000180 474D54202D31 DC8 "GMT -12:00" \ 323A303000 \ 0000018B 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 4D6573736167 DC8 "Message add to buffer" \ 652061646420 \ 746F20627566 \ 66657200 \ 00000016 0000 DC8 0, 0 \ 00000018 25735C746D70 DC8 "%s\\tmp%u.url" \ 25752E75726C \ 00 \ 00000025 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 4, align-sorted \ 00000000 5B565D00 DC8 "[V]" \ In segment DATA_C, align 1, align-sorted \ 00000000 257500 DC8 "%u" \ 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 253032643A25 DC8 "%02d:%02d:%02d %02d.%02d %s:" \ 3032643A2530 \ 326420253032 \ 642E25303264 \ 2025733A00 \ 0000001D 000000 DC8 0, 0, 0 \ 00000020 253032643A25 DC8 "%02d:%02d:%02d %02d.%02d %s:\015\012" \ 3032643A2530 \ 326420253032 \ 642E25303264 \ 2025733A0D0A \ 00 \ 0000003F 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 25733A202573 DC8 "%s: %s" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 257300 DC8 "%s" \ 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 4, align-sorted \ `?`: \ 00000000 53656E642065 DC8 "Send error!" \ 72726F722100 \ 0000000C 53656E642064 DC8 "Send delayed..." \ 656C61796564 \ 2E2E2E00 \ 0000001C 73656E642072 DC8 "send res %d" \ 657320256400 \ In segment DATA_C, align 1, align-sorted \ 00000000 0A00 DC8 "\012" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 43616E277420 DC8 "Can't save local.cl" \ 73617665206C \ 6F63616C2E63 \ 6C00 \ 00000014 536176656420 DC8 "Saved local.cl" \ 6C6F63616C2E \ 636C00 \ 00000023 00 DC8 0 \ 00000024 3B25643B2573 DC8 ";%d;%s;;;\015\012" \ 3B3B3B0D0A00 \ 00000030 5C6C6F63616C DC8 "\\local.cl" \ 2E636C00 \ 0000003A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5C626F742E74 DC8 "\\bot.txt" \ 787400 \ 00000009 000000 DC8 0, 0, 0 \ 0000000C 5C626F745F25 DC8 "\\bot_%d.txt" \ 642E74787400 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5C302E747874 DC8 "\\0.txt" \ 00 \ 00000007 00 DC8 0 \ 00000008 5C25642E7478 DC8 "\\%d.txt" \ 7400 \ 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 4F66666C696E DC8 "Offline" \ 6500 \ 00000008 4F6E6C696E65 DC8 "Online: %02d:%02d:%02d" \ 3A2025303264 \ 3A253032643A \ 2530326400 \ 0000001F 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 5B495D00 DC8 "[I]" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 70696E67332E DC8 "ping3.png" \ 706E6700 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 41E2F2EEE1EE DC8 "A\342\362\356\341\356\362" \ F200 \ 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 C2E8E1F0E000 DC8 "\302\350\341\360\340" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 00 DC8 "" \ 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 C2FBE1EEF000 DC8 "\302\373\341\356\360" \ 00000006 0000 DC8 0, 0 \ 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 CBE5E200 DC8 "\313\345\342" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 62672E706E67 DC8 "bg.png" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 70696E67342E DC8 "ping4.png" \ 706E6700 \ 0000000A 0000 DC8 0, 0 \ 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 70696E67312E DC8 "ping1.png" \ 706E6700 \ 0000000A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 70696E67322E DC8 "ping2.png" \ 706E6700 \ 0000000A 0000 DC8 0, 0 \ 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 4, align-sorted \ `?_2`: \ 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 0000003000 DC8 0, 0, 0, 30H, 0 \ 00000005 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 40 AskNickAndAddContact 4 BackSpaceContactT9 8 ChangeAccess 4 ChangeAutoMsg 4 ChangeAutobot 4 ChangeAwaySignal 4 ChangeLoadHistory 4 ChangeShowXstatus 4 ChangeSound 4 ChangeSoundContact 4 ChangeVibra 4 ChangeVibraContact 4 CheckComand 632 CheckDoubleRun 8 ClOnKey 36 ClearContactT9Key 4 ClearLog 60 ClearSendQ 8 CmdMenuGHook 4 CmdMenuItemHandler 24 CmdMenuKeyHook 16 CreateCLFile 280 CreateContactMenu 8 CreateEditChat 100 DispCmdMenu 32 DoScreen3 24 DoScreen4 24 DrawAck 80 DrawAutoMSG 80 DrawContactList 32 DrawHeader 100 DrawIconInfo 16 DrawJustNow 56 DrawList 172 DrawLoadScreen 112 DrawOnlineTime 20 DrawPing 12 DrawScrollBar 60 DrawSoftInfo 100 DrawSoftKeys 68 DrawStr 32 DrawText 56 DrwImage 64 ElfKiller 4 ExtractAnswer 36 FindContactLOGQByAck 12 FindNextActiveContact 0 FindPrevActiveContact 0 FreeBotMessage 8 FreeLOGQ 8 FreeStatusToIMGHDR 8 FreeTemplates 8 FreeXText2 8 GetAck 8 GetHost 0 GetHostsCount 0 GetIconIndex 0 GetLastXTextLOGQ 0 GetOnTotalContact 8 GetPort 16 GetShortInfo 24 GetStatusByIconIndex 12 GetTempName 20 Get_Online_total 0 I_DrawList 88 I_MoveDown 0 I_MoveUp 0 I_OnKey 16 I_OnRedraw 64 I_Redraw 4 I_method8 0 I_method9 0 I_onClose 8 I_onCreate 12 I_onFocus 4 I_onUnfocus 0 IlluminationOff 8 IlluminationOn 24 InputAwayMsg 76 IsUrl 44 LastLOGQ 0 LoadBotMessage 332 LoadCmd 332 LoadOnKey 56 LoadTemplates 332 LongPressAction 4 LongPressActionOnChat 40 MoveDown 0 MoveDown2 12 MoveUp 8 MoveUp2 12 MyRedraw 4 NewLOGQ 12 OnKey 8 OnRedraw 4 OneSecTmr 8 OpenLogfile 20 ParseAnswer 36 ParseXStatusText 20 Pinger2 16 Play 236 PrintMessage 72 ProcessPacket 372 Quote 152 Quote2 152 ReadDefSettings 180 RecountMenu 16 Remind_Timer2 8 Reminder_timer 4 RemoveLOGQ 4 ReqAddMsgToChat 16 RequestXText 8 RqtXText 8 SLI_Off 4 SLI_On 8 SLI_Timer 4 SLI_check 4 SMART_REDRAW 12 SaveAnswer 12 SendAnswer 28 SendAuthGrant 44 SendAuthReq 48 SendData 16 SendMSGACK 8 SetIconBarHandler 0 SetIndividStatus 0 StatusToIMGHDR 16 UpdateCSMname 4 UptimeMinHour 0 WriteDefSettings 176 addIconBar 28 ask_my_info 0 atoi 4 away_timer 44 begin_to_develop 4 checkGui 8 cmdFree 8 create_connect 312 do_ping 4 do_reconnect 4 ec_menu 72 ecmenu_ghook 4 ed_options_handler 116 edchat_ghook 72 edchat_locret 0 edchat_onkey 392 end_socket 8 free_ICONS 16 get_answer 1100 init_time_zone 4 input_awaymsg_ghook 4 input_awaymsg_locret 0 input_awaymsg_onkey 72 log 276 main 76 maincsm_onclose 8 maincsm_oncreate 276 maincsm_onmessage 108 method0 8 method1 12 method2 8 method28 0 method29 0 method3 8 method4 0 method5 8 method8 0 method9 0 my_ed_redraw 12 my_keyhook 20 onClose 0 onCreate 8 onFocus 8 onUnfocus 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_off_contact 80 show_on_contact 60 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 -------------- ----- Pinger2 156 SLI_TYPE 4 SMART_REDRAW 60 timeh 4 timemin 4 FreeXText2 36 away_timer 400 init_time_zone 356 DrawPing 80 Remind_Timer2 68 Reminder_timer 32 UptimeMinHour 64 upTime 156 DrawOnlineTime 140 DrawAutoMSG 140 input_awaymsg_onkey 248 input_awaymsg_ghook 68 input_awaymsg_locret 4 InputAwayMsg 344 SLI_On 52 SLI_Off 64 SLI_check 32 SLI_Timer 36 setup_ICONS 72 StatusToIMGHDR 72 FreeStatusToIMGHDR 52 free_ICONS 48 IlluminationOff 56 IlluminationOn 120 ReadDefSettings 632 WriteDefSettings 644 Play 304 start_vibra 100 stop_vibra 88 start_vibra2 60 stop_vibra2 88 ChangeVibra 56 ChangeSound 56 FreeTemplates 56 LoadTemplates 396 FreeBotMessage 56 LoadBotMessage 396 RXbuf 16392 TXbuf 16392 ElfKiller 28 clm_hdr_text 64 NewLOGQ 52 LastLOGQ 36 FreeLOGQ 48 RemoveLOGQ 52 AddLOGQ 44 GetLastXTextLOGQ 72 GetIconIndex 228 FindContactLOGQByAck 88 CreateCLFile 252 status 64 ClearContactT9Key 24 AddContactT9Key 36 BackSpaceContactT9 36 LongPressActionOnChat 876 LongPressAction 264 GetOnTotalContact 92 GetHost 192 atoi 84 GetPort 276 GetHostsCount 120 create_connect 768 ClearSendQ 32 end_socket 48 SendAnswer 388 send_login 148 do_ping 52 SendMSGACK 52 RequestXText 52 get_answer 1632 AddToMain 548 AddStringToLog 604 ParseXStatusText 152 AddMsgToChat 812 DrawAck 340 ask_my_info 4 set_my_status 72 set_my_xstatus 548 set_my_xstatus2 244 to_develop 80 ReqAddMsgToChat 120 begin_to_develop 52 cmdFree 56 LoadCmd 280 CmdMenuItemHandler 92 CmdMenuGHook 36 CmdMenuKeyHook 152 DispCmdMenu 160 GetStatusByIconIndex 176 SendData 120 CheckComand 3032 INC_Nick 32 show_on_contact 528 show_off_contact 492 show_pp_sender 432 Get_Online_total 100 SetIndividStatus 88 ProcessPacket 2928 process_active_timer 140 OneSecTmr 104 RqtXText 40 ChangeVibraContact 44 ChangeSoundContact 44 ChangeAutoMsg 44 ChangeShowXstatus 44 ChangeAccess 44 ChangeAwaySignal 36 ChangeAutobot 44 ChangeLoadHistory 44 i_itemFromDisp 4 i_totalItems 4 DrawIconInfo 220 I_DrawList 932 I_MoveUp 28 I_MoveDown 28 I_Redraw 12 I_OnRedraw 416 I_onCreate 136 I_onClose 48 I_onFocus 20 I_onUnfocus 20 I_OnKey 192 I_method8 8 I_method9 8 CreateContactMenu 68 RecountMenu 80 DrawStr 76 DrawText 120 DoScreen3 92 DrawSoftKeys 636 DrawSoftInfo 1112 DoScreen4 88 DrawHeader 1676 DrawScrollBar 384 DrwImage 104 MyRedraw 4 DrawJustNow 176 log 176 GetAck 172 DrawList 2204 MoveUp2 200 MoveDown2 124 MoveUp 152 MoveDown 92 PrintMessage 284 DrawContactList 220 OnRedraw 4 onCreate 28 onClose 12 onFocus 40 onUnfocus 36 lastIsLongPress 4 ClOnKey 1472 OnKey 24 method28 8 method29 8 DrawLoadScreen 2256 method0 44 method1 144 method2 36 method3 24 method4 20 LoadOnKey 528 method5 24 method8 8 method9 8 my_keyhook 240 Canvas 956 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 132 input_awaymsg_desc 88 ? 232 def_setting 48 ? 64 menusoftkeys 12 menu_sk 24 menu_skt 8 CmdSoftkeys 12 cmd_sk 24 cmd_Back_skt 8 ? 76 menutext 228 clrSelect 4 fntSelect 4 bordSelect 4 clrNotSelect 4 bordNotSelect 4 fntNotSelect 4 I_gui_methods 44 _t 3 ? 52 maincsm_oncreate 304 maincsm_onclose 328 do_reconnect 40 CheckDoubleRun 104 checkGui 60 maincsm_onmessage 3084 addIconBar 724 minus11 4 maincsm_name_body 280 UpdateCSMname 36 SetIconBarHandler 20 main 584 edchat_locret 4 ExtractAnswer 280 ??FindNextActiveContact_0 64 FindPrevActiveContact 88 ed_options_handler 1204 wstrstr 124 IsUrl 424 ParseAnswer 548 SaveAnswer 36 GetTempName 172 DMonth 52 recon 52 edchat_onkey 1700 my_ed_redraw 116 edchat_ghook 560 edchat_desc 84 sk 16 CreateEditChat 1160 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 i_rc 9176 sk 8 input_awaymsg_sk 24 input_awaymsg_skt 8 CmdMenuHeader 32 requests6 24 lastKey 4 ecmenu_HDR 64 ec_menu 360 AskNickAndAddContact 8 AddSmile 24 ??DataTable1 4 ??DataTable2 4 ??DataTable6 4 ??DataTable7 4 ??DataTable13 4 ??DataTable16 4 ??DataTable21 4 ??DataTable22 4 ??DataTable23 4 ??DataTable26 4 ??DataTable27 4 ??DataTable32 4 ??DataTable37 4 ??DataTable40 4 ??DataTable42 4 ??DataTable43 4 ??DataTable49 4 ??DataTable52 4 ??DataTable62 4 ??DataTable65 4 ??DataTable67 4 ??DataTable69 4 ??DataTable70 4 ??DataTable71 4 ??DataTable72 4 ??DataTable74 4 ??DataTable76 4 ??DataTable77 4 ??DataTable78 4 ??DataTable81 4 ??DataTable83 4 ??DataTable85 4 ??DataTable86 4 ??DataTable88 4 ??DataTable89 4 ??DataTable90 4 ??DataTable91 4 ??DataTable92 4 ??DataTable93 4 ??DataTable95 4 ??DataTable97 4 ??DataTable98 4 ??DataTable99 4 ??DataTable100 4 ??DataTable110 4 ??DataTable111 4 ??DataTable112 4 ??DataTable114 4 ??DataTable115 4 ??DataTable116 4 ??DataTable117 4 ??DataTable118 4 ??DataTable119 4 ??DataTable120 4 ??DataTable121 4 ??DataTable127 4 ??DataTable130 4 ??DataTable132 4 ??DataTable133 4 ??DataTable134 4 ??DataTable136 4 ??DataTable137 4 ??DataTable138 4 ??DataTable139 4 ??DataTable140 4 ??DataTable141 4 ??DataTable147 4 ??DataTable148 4 ??DataTable149 4 ??DataTable151 4 ??DataTable154 4 ??DataTable155 4 ??DataTable156 4 ??DataTable157 4 ??DataTable158 4 ??DataTable160 4 ??DataTable162 4 ??DataTable165 4 ??DataTable166 4 ??DataTable168 4 ??DataTable175 4 ??DataTable183 4 ??DataTable184 4 ??DataTable185 4 ??DataTable187 4 ??DataTable190 4 ??DataTable194 4 ??DataTable197 4 ??DataTable198 4 ??DataTable201 4 ??DataTable202 4 ??DataTable204 4 ??DataTable205 4 ??DataTable208 4 ??DataTable210 4 ??DataTable220 4 ??DataTable223 4 ??DataTable224 4 ??DataTable225 4 ??DataTable226 4 ??DataTable232 4 ??DataTable233 4 ??DataTable234 4 ??DataTable236 4 ??DataTable238 4 ??DataTable239 4 ??DataTable241 4 ??DataTable242 4 ??DataTable245 4 ??DataTable248 4 ??DataTable249 4 ??DataTable250 4 ??DataTable252 4 ??DataTable254 4 ??DataTable255 4 ??DataTable258 4 ??DataTable259 4 ??DataTable261 4 ??DataTable263 4 ??DataTable264 4 ??DataTable267 4 ??DataTable271 4 ??DataTable272 4 ??DataTable274 4 ??DataTable276 4 ??DataTable284 4 ??DataTable285 4 ??DataTable286 4 ??DataTable288 4 ??DataTable289 4 ??DataTable290 4 ??DataTable291 4 ??DataTable292 4 ??DataTable293 4 ??DataTable294 4 ??DataTable295 4 ??DataTable296 4 ??DataTable300 4 ??DataTable301 4 ??DataTable302 4 ??DataTable303 4 ??DataTable304 4 ??DataTable305 4 ??DataTable306 4 ??DataTable307 4 ??DataTable308 4 ??DataTable309 4 ??DataTable310 4 ??DataTable311 4 ??DataTable312 4 ??DataTable313 4 ??DataTable314 4 ??DataTable315 4 ??DataTable317 4 ??DataTable319 4 ??DataTable321 4 ??DataTable322 4 ??DataTable323 4 ??DataTable324 4 ??DataTable326 4 ??DataTable329 4 ??DataTable330 4 ??DataTable333 4 ??DataTable334 4 ??DataTable335 4 ??DataTable336 4 ??DataTable337 4 ??DataTable340 4 ??DataTable341 4 ??DataTable344 4 ??DataTable345 4 ??DataTable348 4 ??DataTable350 4 ??DataTable351 4 ??DataTable352 4 ??DataTable353 4 ??DataTable355 4 ??DataTable361 4 ??DataTable362 4 ??DataTable363 4 ??DataTable364 4 ??DataTable365 4 ??DataTable366 4 ??DataTable367 4 ??DataTable368 4 ? 9176 ? 8 ? 24 ? 8 ? 32 ? 24 ? 4 ? 4 ? 4 ? 32 ? 3 ? 8 ? 8 ? 8 ?_1 4 ? 1072 ? 12 ? 92 ? 396 ? 164 ? 40 ? 16 ? 64 ?_1 4 ? 3 ? 4 ? 12 ? 64 ? 8 ? 3 ? 12 ? 40 ? 2 ? 60 ? 24 ? 16 ? 3 ? 16 ? 32 ? 4 ? 12 ? 8 ? 8 ? 8 ? 1 ? 8 ? 8 ? 8 ? 4 ? 8 ? 12 ? 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 ? 12 ? 12 ? 8 ?_1 8 ?_2 8 ? 3 ? 8 Others 1412 56 428 bytes in segment CODE 5 869 bytes in segment DATA_C 9 276 bytes in segment DATA_I 9 276 bytes in segment DATA_ID 33 244 bytes in segment DATA_Z 24 bytes in segment INITTAB 55 040 bytes of CODE memory (+ 1 412 bytes shared) 15 145 bytes of CONST memory 42 520 bytes of DATA memory Errors: none Warnings: 2