############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 31/Mar/2008 11:29:16 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\manage_cl.c # # Command line = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\manage_cl.c -D # # NEWSGOLD -D ELKA -D UIN_WRITE -D kluchnik -D # # BCFGGEN --preprocess D:\Pasha\elf\_MY_PROJECT_\natic # # q_mod\kluch_BCFGGEN\List\ -lC # # D:\Pasha\elf\_MY_PROJECT_\naticq_mod\kluch_BCFGGEN\L # # ist\ -o D:\Pasha\elf\_MY_PROJECT_\naticq_mod\kluch_B # # CFGGEN\Obj\ -s9 --no_unroll --cpu_mode arm --endian # # little --cpu ARM926EJ-S --stack_align 4 --interwork # # -e --fpu None --dlib_config "D:\Pasha\Embedded # # Workbench 4.0 Evaluation2\ARM\LIB\dl5tpainl8n.h" -I # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\kluch_BCFGGEN\L # # ist\manage_cl.lst # # Object file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\kluch_BCFGGEN\O # # bj\manage_cl.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT_\naticq_mod\manage_cl.c 1 #include "../inc/swilib.h" 2 #include "rect_patcher.h" 3 #include "language.h" 4 #include "NatICQ.h" 5 #include "manage_cl.h" 6 #include "strings.h" 7 #include "main.h" 8 9 extern int S_ICONS[]; 10 extern int CurrentPrivateStatus; 11 \ In segment DATA_C, align 4, align-sorted 12 static const int mmanage_cl_softkeys[] = {0,1,2}; \ mmanage_cl_softkeys: \ 00000000 000000000100 DC32 0, 1, 2 \ 000002000000 13 \ In segment DATA_C, align 4, align-sorted 14 static const SOFTKEY_DESC mmanage_cl_sk[] = \ mmanage_cl_sk: \ 00000000 18000000 DC16 24, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 15 { 16 {0x0018, 0x0000, (int)""}, 17 {0x0001, 0x0000, (int)LG_CLOSE}, 18 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 19 }; 20 \ In segment DATA_C, align 4, align-sorted 21 const SOFTKEYSTAB mmanage_cl_skt = \ mmanage_cl_skt: \ 00000000 ........0000 DC32 mmanage_cl_sk, 0 \ 0000 22 { 23 mmanage_cl_sk, 0 24 }; 25 \ In segment DATA_C, align 4, align-sorted 26 static const SOFTKEY_DESC acgd_sk[] = \ acgd_sk: \ 00000000 18000000 DC16 24, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 27 { 28 {0x0018, 0x0000, (int)""}, 29 {0x0001, 0x0000, (int)LG_CLOSE}, 30 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 31 }; 32 \ In segment DATA_C, align 4, align-sorted 33 const SOFTKEYSTAB acgd_skt = \ acgd_skt: \ 00000000 ........0000 DC32 acgd_sk, 0 \ 0000 34 { 35 acgd_sk, 0 36 }; 37 38 \ In segment DATA_C, align 4, align-sorted 39 static const int pl_softkeys[] = {0,1,2}; \ pl_softkeys: \ 00000000 000000000100 DC32 0, 1, 2 \ 000002000000 40 \ In segment DATA_C, align 4, align-sorted 41 static const SOFTKEY_DESC pl_sk[] = \ pl_sk: \ 00000000 18000000 DC16 24, 0 \ 00000004 ........ DC32 `?` \ 00000008 01000000 DC16 1, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 42 { 43 {0x0018, 0x0000, (int)""}, 44 {0x0001, 0x0000, (int)LG_CLOSE}, 45 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 46 }; 47 \ In segment DATA_C, align 4, align-sorted 48 const SOFTKEYSTAB pl_skt = \ pl_skt: \ 00000000 ........0000 DC32 pl_sk, 0 \ 0000 49 { 50 pl_sk, 0 51 }; 52 53 typedef struct{ 54 unsigned int grp_id; 55 char name[64]; 56 }GRP_ARRAY; 57 \ In segment CODE, align 4, keep-with-next 58 int acgd_onkey(GUI *data, GUI_MSG *msg) 59 { \ acgd_onkey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 6CD04DE2 SUB SP,SP,#+108 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0190A0E1 MOV R9,R1 60 TPKT *p; 61 EDITCONTROL ec; 62 unsigned int uin=0; 63 unsigned int group=0; 64 WSHDR *ws; 65 int j; 66 char name[64], *s; 67 int len; 68 GRP_ARRAY *grp=EDIT_GetUserPointer(data); \ 00000010 DF0100EF SWI +479 \ 00000014 0070A0E1 MOV R7,R0 69 70 if (msg->keys==0xFFF) \ 00000018 F200D9E1 LDRSH R0,[R9, #+2] \ 0000001C 0050A0E3 MOV R5,#+0 \ 00000020 0080A0E3 MOV R8,#+0 \ 00000024 0560A0E1 MOV R6,R5 \ 00000028 FF10A0E3 MOV R1,#+255 \ 0000002C F01E81E3 ORR R1,R1,#0xF00 \ 00000030 010050E1 CMP R0,R1 \ 00000034 4500001A BNE ??acgd_onkey_0 71 { 72 ExtractEditControl(data,2,&ec); \ 00000038 40208DE2 ADD R2,SP,#+64 \ 0000003C 0210A0E3 MOV R1,#+2 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 690100EF SWI +361 73 ws=ec.pWS; \ 00000048 68009DE5 LDR R0,[SP, #+104] 74 for (int i=0; iwsbody[0]; i++) \ 0000004C 0010A0E3 MOV R1,#+0 \ 00000050 000090E5 LDR R0,[R0, #+0] \ 00000054 B020D0E1 LDRH R2,[R0, #+0] \ 00000058 000052E3 CMP R2,#+0 \ 0000005C 0600001A BNE ??acgd_onkey_1 \ 00000060 080000EA B ??acgd_onkey_2 75 { 76 uin*=10; 77 uin+=(ws->wsbody[i+1]-'0'); \ ??acgd_onkey_3: \ 00000064 813080E0 ADD R3,R0,R1, LSL #+1 \ 00000068 B230D3E1 LDRH R3,[R3, #+2] \ 0000006C 0A20A0E3 MOV R2,#+10 78 } \ 00000070 011081E2 ADD R1,R1,#+1 \ 00000074 303043E2 SUB R3,R3,#+48 \ 00000078 923828E0 MLA R8,R2,R8,R3 \ ??acgd_onkey_1: \ 0000007C B020D0E1 LDRH R2,[R0, #+0] \ 00000080 020051E1 CMP R1,R2 \ 00000084 F6FFFFBA BLT ??acgd_onkey_3 79 80 ExtractEditControl(data,4,&ec); \ ??acgd_onkey_2: \ 00000088 40208DE2 ADD R2,SP,#+64 \ 0000008C 0410A0E3 MOV R1,#+4 \ 00000090 0400A0E1 MOV R0,R4 \ 00000094 690100EF SWI +361 81 ws=ec.pWS; \ 00000098 68A09DE5 LDR R10,[SP, #+104] 82 s=name; \ 0000009C 0D90A0E1 MOV R9,SP 83 for (int i=0; iwsbody[0] && i<64; i++) \ 000000A0 00B0A0E3 MOV R11,#+0 \ 000000A4 040000EA B ??acgd_onkey_4 84 { 85 *s++=char16to8(ws->wsbody[i+1]); \ ??acgd_onkey_5: \ 000000A8 8B0080E0 ADD R0,R0,R11, LSL #+1 \ 000000AC B200D0E1 LDRH R0,[R0, #+2] 86 } \ 000000B0 01B08BE2 ADD R11,R11,#+1 \ 000000B4 ........ _BLF char16to8,??char16to8??rA \ 000000B8 ........ STRB R0,[R9], #+1 \ ??acgd_onkey_4: \ 000000BC 00009AE5 LDR R0,[R10, #+0] \ 000000C0 B010D0E1 LDRH R1,[R0, #+0] \ 000000C4 01005BE1 CMP R11,R1 \ 000000C8 40005BB3 CMPLT R11,#+64 \ 000000CC F5FFFFBA BLT ??acgd_onkey_5 87 len=s-name; \ 000000D0 0D00A0E1 MOV R0,SP \ 000000D4 00A049E0 SUB R10,R9,R0 88 *s=0; \ 000000D8 0050C9E5 STRB R5,[R9, #+0] 89 90 EDIT_SetFocus(data, 6); \ 000000DC 0610A0E3 MOV R1,#+6 \ 000000E0 0400A0E1 MOV R0,R4 \ 000000E4 9B0100EF SWI +411 91 j=EDIT_GetItemNumInFocusedComboBox(data); \ 000000E8 0400A0E1 MOV R0,R4 \ 000000EC 800100EF SWI +384 92 if (j) group=grp[j-1].grp_id; \ 000000F0 000050E3 CMP R0,#+0 \ 000000F4 4410A013 MOVNE R1,#+68 \ 000000F8 91702010 MLANE R0,R1,R0,R7 \ 000000FC 44601015 LDRNE R6,[R0, #-68] 93 94 p=malloc(sizeof(PKT)+4+len); \ 00000100 0C008AE2 ADD R0,R10,#+12 \ 00000104 140000EF SWI +20 \ 00000108 0040A0E1 MOV R4,R0 95 p->pkt.uin=uin; \ 0000010C 008084E5 STR R8,[R4, #+0] 96 p->pkt.type=T_ADDCONTACT_WITH_GRP; \ 00000110 1B00A0E3 MOV R0,#+27 \ 00000114 B400C4E1 STRH R0,[R4, #+4] 97 p->pkt.data_len=len+4; \ 00000118 04008AE2 ADD R0,R10,#+4 \ 0000011C B600C4E1 STRH R0,[R4, #+6] 98 *(unsigned int *)(p->data)=group; \ 00000120 086084E5 STR R6,[R4, #+8] 99 strncpy(p->data+4,name,len); \ 00000124 0A20A0E1 MOV R2,R10 \ 00000128 0D10A0E1 MOV R1,SP \ 0000012C 0C0084E2 ADD R0,R4,#+12 \ 00000130 160100EF SWI +278 100 SUBPROC((void *)SendAnswer,0,p); \ 00000134 ........ LDR R0,??DataTable2 ;; SendAnswer \ 00000138 0420A0E1 MOV R2,R4 \ 0000013C 0010A0E3 MOV R1,#+0 \ 00000140 710100EF SWI +369 101 return (1); \ 00000144 0100A0E3 MOV R0,#+1 \ 00000148 6CD08DE2 ADD SP,SP,#+108 \ 0000014C F08FBDE8 POP {R4-R11,PC} 102 } 103 return (0); \ ??acgd_onkey_0: \ 00000150 0000A0E3 MOV R0,#+0 \ 00000154 6CD08DE2 ADD SP,SP,#+108 \ 00000158 F08FBDE8 POP {R4-R11,PC} ;; return 104 } 105 \ In segment CODE, align 4, keep-with-next 106 void acgd_ghook(GUI *data, int cmd) 107 { \ acgd_ghook: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0150A0E1 MOV R5,R1 108 static SOFTKEY_DESC sk_add={0x0FFF,0x0000,(int)LG_ADD}; 109 GRP_ARRAY *grp=EDIT_GetUserPointer(data); \ 00000010 DF0100EF SWI +479 \ 00000014 0060A0E1 MOV R6,R0 110 EDITCONTROL ec; 111 int i, j; 112 i=EDIT_GetFocus(data); \ 00000018 0400A0E1 MOV R0,R4 \ 0000001C 820100EF SWI +386 113 if (cmd==3) \ 00000020 030055E3 CMP R5,#+3 \ 00000024 0200001A BNE ??acgd_ghook_0 114 { 115 mfree(grp); \ 00000028 0600A0E1 MOV R0,R6 \ 0000002C 150000EF SWI +21 \ 00000030 050000EA B ??acgd_ghook_1 116 } 117 if (cmd==7) \ ??acgd_ghook_0: \ 00000034 070055E3 CMP R5,#+7 \ 00000038 0500001A BNE ??acgd_ghook_2 118 { 119 SetSoftKey(data,&sk_add,SET_SOFT_KEY_N); \ 0000003C A8109FE5 LDR R1,??acgd_ghook_3 ;; ??sk_add \ 00000040 0020A0E3 MOV R2,#+0 \ 00000044 0400A0E1 MOV R0,R4 \ 00000048 680100EF SWI +360 \ ??acgd_ghook_1: \ 0000004C 2CD08DE2 ADD SP,SP,#+44 \ 00000050 7080BDE8 POP {R4-R6,PC} 120 } 121 if (cmd==0x0A) \ ??acgd_ghook_2: \ 00000054 0A0055E3 CMP R5,#+10 \ 00000058 0100001A BNE ??acgd_ghook_4 122 { 123 DisableIDLETMR(); \ 0000005C 7F0100EF SWI +383 \ 00000060 F9FFFFEA B ??acgd_ghook_1 124 } 125 if (cmd==0x0D) \ ??acgd_ghook_4: \ 00000064 0D0055E3 CMP R5,#+13 126 { 127 if (i==6) \ 00000068 06005003 CMPEQ R0,#+6 \ 0000006C 1C00001A BNE ??acgd_ghook_5 128 { 129 WSHDR *ews=AllocWS(64); \ 00000070 4000A0E3 MOV R0,#+64 \ 00000074 250100EF SWI +293 \ 00000078 0050A0E1 MOV R5,R0 130 ExtractEditControl(data,i,&ec); \ 0000007C 0D20A0E1 MOV R2,SP \ 00000080 0610A0E3 MOV R1,#+6 \ 00000084 0400A0E1 MOV R0,R4 \ 00000088 690100EF SWI +361 131 if ((j=EDIT_GetItemNumInFocusedComboBox(data))) \ 0000008C 0400A0E1 MOV R0,R4 \ 00000090 800100EF SWI +384 \ 00000094 000050E3 CMP R0,#+0 \ 00000098 0500000A BEQ ??acgd_ghook_6 132 { 133 ascii2ws(ews,grp[j-1].name); \ 0000009C 4410A0E3 MOV R1,#+68 \ 000000A0 916020E0 MLA R0,R1,R0,R6 \ 000000A4 401040E2 SUB R1,R0,#+64 \ 000000A8 0500A0E1 MOV R0,R5 \ 000000AC ........ _BLF ascii2ws,??ascii2ws??rA \ 000000B0 060000EA B ??acgd_ghook_7 134 } 135 else 136 { 137 ExtractEditControl(data,i-1,&ec); \ ??acgd_ghook_6: \ 000000B4 0D20A0E1 MOV R2,SP \ 000000B8 0510A0E3 MOV R1,#+5 \ 000000BC 0400A0E1 MOV R0,R4 \ 000000C0 690100EF SWI +361 138 wstrcpy(ews,ec.pWS); \ 000000C4 28109DE5 LDR R1,[SP, #+40] \ 000000C8 0500A0E1 MOV R0,R5 \ 000000CC 1F0100EF SWI +287 139 } 140 EDIT_SetTextToFocused(data,ews); \ ??acgd_ghook_7: \ 000000D0 0510A0E1 MOV R1,R5 \ 000000D4 0400A0E1 MOV R0,R4 \ 000000D8 810100EF SWI +385 141 FreeWS(ews); \ 000000DC 0500A0E1 MOV R0,R5 \ 000000E0 290100EF SWI +297 142 } 143 } 144 } \ ??acgd_ghook_5: \ 000000E4 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 000000E8 7080BDE8 POP {R4-R6,PC} ;; return \ ??acgd_ghook_3: \ 000000EC ........ DC32 ??sk_add \ In segment DATA_I, align 4, align-sorted \ ??sk_add: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` 145 \ In segment CODE, align 4, keep-with-next 146 void acgd_locret(void){} \ acgd_locret: \ 00000000 1EFF2FE1 BX LR ;; return 147 \ In segment DATA_I, align 4, align-sorted 148 HEADER_DESC acgd_hdr={0,0,0,0,NULL,(int)"Добавление контакта",LGP_NULL}; 149 150 INPUTDIA_DESC acgd_desc= \ acgd_desc: \ 00000000 DS8 56 \ 00000038 REQUIRE `?` \ acgd_hdr: \ 00000038 DS8 20 \ 0000004C REQUIRE `?` 151 { 152 1, 153 acgd_onkey, 154 acgd_ghook, 155 (void *)acgd_locret, 156 0, 157 &acgd_skt, 158 {0,0,0,0}, 159 4, 160 100, 161 101, 162 0, 163 164 // 0x00000001 - Выровнять по правому краю 165 // 0x00000002 - Выровнять по центру 166 // 0x00000004 - Инверсия знакомест 167 // 0x00000008 - UnderLine 168 // 0x00000020 - Не переносить слова 169 // 0x00000200 - bold 170 0, 171 172 // 0x00000002 - ReadOnly 173 // 0x00000004 - Не двигается курсор 174 // 0x40000000 - Поменять местами софт-кнопки 175 0x40000000 176 }; 177 178 extern volatile CLIST *cltop; \ In segment CODE, align 4, keep-with-next 179 int CreateAddContactGrpDialog(CLIST *cl_sel) 180 { \ CreateAddContactGrpDialog: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 30D04DE2 SUB SP,SP,#+48 \ 00000008 0040A0E1 MOV R4,R0 181 WSHDR *ews; 182 void *ma=malloc_adr(); 183 void *eq; 184 EDITCONTROL ec; 185 GRP_ARRAY *grp=NULL; 186 int grp_n=0; \ 0000000C 0060A0E3 MOV R6,#+0 \ 00000010 148000EF SWI +32788 \ 00000014 0050A0E1 MOV R5,R0 187 int to_combo=0; \ 00000018 0610A0E1 MOV R1,R6 \ 0000001C 00108DE5 STR R1,[SP, #+0] 188 189 eq=AllocEQueue(ma,mfree_adr()); \ 00000020 158000EF SWI +32789 \ 00000024 0010A0E1 MOV R1,R0 \ 00000028 0500A0E1 MOV R0,R5 \ 0000002C 630100EF SWI +355 \ 00000030 0070A0E1 MOV R7,R0 190 ews=AllocWS(128); \ 00000034 8000A0E3 MOV R0,#+128 \ 00000038 250100EF SWI +293 \ 0000003C 30139FE5 LDR R1,??CreateAddContactGrpDialog_0+0x4 ;; `?wsbody[0]); \ 00000050 000098E5 LDR R0,[R8, #+0] \ 00000054 0090A0E3 MOV R9,#+0 \ 00000058 B000D0E1 LDRH R0,[R0, #+0] \ 0000005C 0830A0E1 MOV R3,R8 \ 00000060 4020A0E3 MOV R2,#+64 \ 00000064 01002DE9 PUSH {R0} \ 00000068 0110A0E3 MOV R1,#+1 195 AddEditControlToEditQend(eq,&ec,ma); //1 196 197 PrepareEditControl(&ec); 198 if (cl_sel) \ 0000006C BFAF8FE2 ADR R10,??CreateAddContactGrpDialog_0 ;; "%u" \ 00000070 08008DE2 ADD R0,SP,#+8 \ 00000074 650100EF SWI +357 \ 00000078 0520A0E1 MOV R2,R5 \ 0000007C 08108DE2 ADD R1,SP,#+8 \ 00000080 0700A0E1 MOV R0,R7 \ 00000084 660100EF SWI +358 \ 00000088 08008DE2 ADD R0,SP,#+8 \ 0000008C 640100EF SWI +356 \ 00000090 000054E3 CMP R4,#+0 \ 00000094 04D08DE2 ADD SP,SP,#+4 \ 00000098 0400000A BEQ ??CreateAddContactGrpDialog_1 199 { 200 wsprintf(ews,"%u",cl_sel->uin); \ 0000009C 0C2094E5 LDR R2,[R4, #+12] \ 000000A0 0A10A0E1 MOV R1,R10 \ 000000A4 0800A0E1 MOV R0,R8 \ 000000A8 240100EF SWI +292 \ 000000AC 020000EA B ??CreateAddContactGrpDialog_2 201 } 202 else 203 { 204 CutWSTR(ews,0); \ ??CreateAddContactGrpDialog_1: \ 000000B0 0010A0E3 MOV R1,#+0 \ 000000B4 0800A0E1 MOV R0,R8 \ 000000B8 260100EF SWI +294 205 } 206 ConstructEditControl(&ec,ECT_NORMAL_NUM,ECF_APPEND_EOL|ECF_DISABLE_MINUS|ECF_DISABLE_POINT,ews,9); \ ??CreateAddContactGrpDialog_2: \ 000000BC 0900A0E3 MOV R0,#+9 \ 000000C0 01002DE9 PUSH {R0} \ 000000C4 0830A0E1 MOV R3,R8 \ 000000C8 4020A0E3 MOV R2,#+64 \ 000000CC 602A82E3 ORR R2,R2,#0x60000 \ 000000D0 0610A0E3 MOV R1,#+6 \ 000000D4 08008DE2 ADD R0,SP,#+8 \ 000000D8 650100EF SWI +357 207 AddEditControlToEditQend(eq,&ec,ma); //2 \ 000000DC 0520A0E1 MOV R2,R5 \ 000000E0 08108DE2 ADD R1,SP,#+8 \ 000000E4 0700A0E1 MOV R0,R7 \ 000000E8 660100EF SWI +358 208 209 210 ascii2ws(ews,LG_ENTERNAME); \ 000000EC 84129FE5 LDR R1,??CreateAddContactGrpDialog_0+0x8 ;; `?wsbody[0]); \ 00000100 000098E5 LDR R0,[R8, #+0] \ 00000104 0830A0E1 MOV R3,R8 \ 00000108 B000D0E1 LDRH R0,[R0, #+0] \ 0000010C 4020A0E3 MOV R2,#+64 \ 00000110 0110A0E3 MOV R1,#+1 \ 00000114 01002DE9 PUSH {R0} \ 00000118 0C008DE2 ADD R0,SP,#+12 \ 0000011C 650100EF SWI +357 213 AddEditControlToEditQend(eq,&ec,ma); //3 \ 00000120 0520A0E1 MOV R2,R5 \ 00000124 0C108DE2 ADD R1,SP,#+12 \ 00000128 0700A0E1 MOV R0,R7 \ 0000012C 660100EF SWI +358 214 215 PrepareEditControl(&ec); \ 00000130 0C008DE2 ADD R0,SP,#+12 \ 00000134 640100EF SWI +356 216 if (cl_sel) \ 00000138 000054E3 CMP R4,#+0 \ 0000013C 08D08DE2 ADD SP,SP,#+8 \ 00000140 0A00000A BEQ ??CreateAddContactGrpDialog_3 217 { 218 if (cl_sel->name) \ 00000144 140094E2 ADDS R0,R4,#+20 \ 00000148 0300000A BEQ ??CreateAddContactGrpDialog_4 219 { 220 ascii2ws(ews,cl_sel->name); \ 0000014C 141084E2 ADD R1,R4,#+20 \ 00000150 0800A0E1 MOV R0,R8 \ 00000154 ........ _BLF ascii2ws,??ascii2ws??rA \ 00000158 070000EA B ??CreateAddContactGrpDialog_5 221 } 222 else 223 { 224 wsprintf(ews,"%u",cl_sel->uin); \ ??CreateAddContactGrpDialog_4: \ 0000015C 0C2094E5 LDR R2,[R4, #+12] \ 00000160 0A10A0E1 MOV R1,R10 \ 00000164 0800A0E1 MOV R0,R8 \ 00000168 240100EF SWI +292 \ 0000016C 020000EA B ??CreateAddContactGrpDialog_5 225 } 226 } 227 else 228 { 229 CutWSTR(ews,0); \ ??CreateAddContactGrpDialog_3: \ 00000170 0010A0E3 MOV R1,#+0 \ 00000174 0800A0E1 MOV R0,R8 \ 00000178 260100EF SWI +294 230 } 231 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL,ews,64); \ ??CreateAddContactGrpDialog_5: \ 0000017C 4000A0E3 MOV R0,#+64 \ 00000180 01002DE9 PUSH {R0} \ 00000184 0830A0E1 MOV R3,R8 \ 00000188 4020A0E3 MOV R2,#+64 \ 0000018C 0310A0E3 MOV R1,#+3 \ 00000190 08008DE2 ADD R0,SP,#+8 \ 00000194 650100EF SWI +357 232 AddEditControlToEditQend(eq,&ec,ma); //4 \ 00000198 0520A0E1 MOV R2,R5 \ 0000019C 08108DE2 ADD R1,SP,#+8 \ 000001A0 0700A0E1 MOV R0,R7 \ 000001A4 660100EF SWI +358 233 234 for (CLIST *cl=(CLIST *)cltop; cl!=0; cl=cl->next) \ 000001A8 CC019FE5 LDR R0,??CreateAddContactGrpDialog_0+0xC ;; cltop \ 000001AC 00A090E5 LDR R10,[R0, #+0] \ 000001B0 04D08DE2 ADD SP,SP,#+4 \ 000001B4 00005AE3 CMP R10,#+0 \ 000001B8 1C00000A BEQ ??CreateAddContactGrpDialog_6 235 { 236 if (cl->isgroup) \ ??CreateAddContactGrpDialog_7: \ 000001BC 08009AE5 LDR R0,[R10, #+8] \ 000001C0 000050E3 CMP R0,#+0 \ 000001C4 1600000A BEQ ??CreateAddContactGrpDialog_8 \ 000001C8 010086E2 ADD R0,R6,#+1 \ 000001CC 4420A0E3 MOV R2,#+68 \ 000001D0 920001E0 MUL R1,R2,R0 \ 000001D4 0900A0E1 MOV R0,R9 237 { 238 GRP_ARRAY *cur_grp; 239 grp=realloc(grp,(grp_n+1)*sizeof(GRP_ARRAY)); \ 000001D8 BA0000EF SWI +186 \ 000001DC 0090A0E1 MOV R9,R0 240 cur_grp=grp+grp_n; \ 000001E0 4400A0E3 MOV R0,#+68 \ 000001E4 90962BE0 MLA R11,R0,R6,R9 241 cur_grp->grp_id=cl->group; \ 000001E8 10009AE5 LDR R0,[R10, #+16] 242 strncpy(cur_grp->name, cl->name,64); \ 000001EC 4020A0E3 MOV R2,#+64 \ 000001F0 00008BE5 STR R0,[R11, #+0] \ 000001F4 14108AE2 ADD R1,R10,#+20 \ 000001F8 04008BE2 ADD R0,R11,#+4 \ 000001FC 160100EF SWI +278 243 cur_grp->name[63]=0; \ 00000200 0000A0E3 MOV R0,#+0 \ 00000204 4300CBE5 STRB R0,[R11, #+67] 244 if (cl_sel) \ 00000208 000054E3 CMP R4,#+0 \ 0000020C 0300000A BEQ ??CreateAddContactGrpDialog_9 245 { 246 if (cl_sel->group==cur_grp->grp_id) to_combo=grp_n; \ 00000210 100094E5 LDR R0,[R4, #+16] \ 00000214 00109BE5 LDR R1,[R11, #+0] \ 00000218 010050E1 CMP R0,R1 \ 0000021C 00608D05 STREQ R6,[SP, #+0] 247 } 248 grp_n++; \ ??CreateAddContactGrpDialog_9: \ 00000220 016086E2 ADD R6,R6,#+1 249 } 250 } \ ??CreateAddContactGrpDialog_8: \ 00000224 00A09AE5 LDR R10,[R10, #+0] \ 00000228 00005AE3 CMP R10,#+0 \ 0000022C E2FFFF1A BNE ??CreateAddContactGrpDialog_7 251 ascii2ws(ews,LG_CHOOSEGROUP); \ ??CreateAddContactGrpDialog_6: \ 00000230 48119FE5 LDR R1,??CreateAddContactGrpDialog_0+0x10 ;; `?wsbody[0]); \ 00000244 000098E5 LDR R0,[R8, #+0] \ 00000248 0830A0E1 MOV R3,R8 \ 0000024C B000D0E1 LDRH R0,[R0, #+0] \ 00000250 4020A0E3 MOV R2,#+64 \ 00000254 0110A0E3 MOV R1,#+1 \ 00000258 01002DE9 PUSH {R0} \ 0000025C 08008DE2 ADD R0,SP,#+8 \ 00000260 650100EF SWI +357 254 AddEditControlToEditQend(eq,&ec,ma); //5 \ 00000264 0520A0E1 MOV R2,R5 \ 00000268 08108DE2 ADD R1,SP,#+8 \ 0000026C 0700A0E1 MOV R0,R7 \ 00000270 660100EF SWI +358 255 256 257 PrepareEditControl(&ec); \ 00000274 08008DE2 ADD R0,SP,#+8 \ 00000278 640100EF SWI +356 258 CutWSTR(ews,0); \ 0000027C 0010A0E3 MOV R1,#+0 \ 00000280 0800A0E1 MOV R0,R8 \ 00000284 260100EF SWI +294 259 if(grp_n) \ 00000288 000056E3 CMP R6,#+0 \ 0000028C 04D08DE2 ADD SP,SP,#+4 \ 00000290 0200000A BEQ ??CreateAddContactGrpDialog_10 260 { 261 ascii2ws(ews,grp->name); \ 00000294 041089E2 ADD R1,R9,#+4 \ 00000298 0800A0E1 MOV R0,R8 \ 0000029C ........ _BLF ascii2ws,??ascii2ws??rA 262 } 263 ConstructComboBox(&ec,ECT_COMBO_BOX,ECF_APPEND_EOL,ews,64,0,grp_n,1+to_combo); \ ??CreateAddContactGrpDialog_10: \ 000002A0 00009DE5 LDR R0,[SP, #+0] 264 AddEditControlToEditQend(eq,&ec,ma); //6 265 266 patch_header(&acgd_hdr); \ 000002A4 D8409FE5 LDR R4,??CreateAddContactGrpDialog_0+0x14 ;; acgd_desc \ 000002A8 010080E2 ADD R0,R0,#+1 \ 000002AC 01002DE9 PUSH {R0} \ 000002B0 40002DE9 PUSH {R6} \ 000002B4 0830A0E1 MOV R3,R8 \ 000002B8 0000A0E3 MOV R0,#+0 \ 000002BC 01002DE9 PUSH {R0} \ 000002C0 4020A0E3 MOV R2,#+64 \ 000002C4 0710A0E3 MOV R1,#+7 \ 000002C8 4000A0E3 MOV R0,#+64 \ 000002CC 01002DE9 PUSH {R0} \ 000002D0 14008DE2 ADD R0,SP,#+20 \ 000002D4 840100EF SWI +388 \ 000002D8 0520A0E1 MOV R2,R5 \ 000002DC 14108DE2 ADD R1,SP,#+20 \ 000002E0 0700A0E1 MOV R0,R7 \ 000002E4 660100EF SWI +358 \ 000002E8 0000A0E3 MOV R0,#+0 \ 000002EC B803C4E1 STRH R0,[R4, #+56] \ 000002F0 1800A0E3 MOV R0,#+24 \ 000002F4 BA03C4E1 STRH R0,[R4, #+58] \ 000002F8 888100EF SWI +33160 \ 000002FC 010040E2 SUB R0,R0,#+1 \ 00000300 BC03C4E1 STRH R0,[R4, #+60] \ 00000304 8A8100EF SWI +33162 \ 00000308 170080E2 ADD R0,R0,#+23 \ 0000030C BE03C4E1 STRH R0,[R4, #+62] 267 patch_input(&acgd_desc); \ 00000310 0000A0E3 MOV R0,#+0 \ 00000314 B801C4E1 STRH R0,[R4, #+24] \ 00000318 8A8100EF SWI +33162 \ 0000031C 190080E2 ADD R0,R0,#+25 \ 00000320 BA01C4E1 STRH R0,[R4, #+26] \ 00000324 888100EF SWI +33160 \ 00000328 010040E2 SUB R0,R0,#+1 \ 0000032C BC01C4E1 STRH R0,[R4, #+28] \ 00000330 898100EF SWI +33161 \ 00000334 0050A0E1 MOV R5,R0 \ 00000338 8B8100EF SWI +33163 \ 0000033C 000045E0 SUB R0,R5,R0 \ 00000340 010040E2 SUB R0,R0,#+1 \ 00000344 BE01C4E1 STRH R0,[R4, #+30] 268 FreeWS(ews); \ 00000348 0800A0E1 MOV R0,R8 \ 0000034C 290100EF SWI +297 269 return CreateInputTextDialog(&acgd_desc,&acgd_hdr,eq,1,grp); \ 00000350 00022DE9 PUSH {R9} \ 00000354 0130A0E3 MOV R3,#+1 \ 00000358 0720A0E1 MOV R2,R7 \ 0000035C 381084E2 ADD R1,R4,#+56 \ 00000360 0400A0E1 MOV R0,R4 \ 00000364 670100EF SWI +359 \ 00000368 44D08DE2 ADD SP,SP,#+68 \ 0000036C F08FBDE8 POP {R4-R11,PC} ;; return \ ??CreateAddContactGrpDialog_0: \ 00000370 25750000 DC8 "%u",+0 \ 00000374 ........ DC32 `?pkt.uin=0; \ 00000010 0010A0E3 MOV R1,#+0 \ 00000014 001080E5 STR R1,[R0, #+0] 287 p->pkt.type=T_SETPRIVACY; \ 00000018 1E10A0E3 MOV R1,#+30 \ 0000001C B410C0E1 STRH R1,[R0, #+4] 288 p->pkt.data_len=1; \ 00000020 0110A0E3 MOV R1,#+1 \ 00000024 B610C0E1 STRH R1,[R0, #+6] 289 p->data[0]=status; 290 CurrentPrivateStatus=status; \ 00000028 ........ LDR R1,??DataTable3 ;; CurrentPrivateStatus \ 0000002C 0840C0E5 STRB R4,[R0, #+8] \ 00000030 004081E5 STR R4,[R1, #+0] 291 SUBPROC((void *)SendAnswer,0,p); \ 00000034 0020A0E1 MOV R2,R0 \ 00000038 ........ LDR R0,??DataTable2 ;; SendAnswer \ 0000003C 0010A0E3 MOV R1,#+0 \ 00000040 710100EF SWI +369 292 } \ 00000044 1080BDE8 POP {R4,PC} ;; return 293 \ In segment CODE, align 4, keep-with-next 294 int GetPrivatePosInMenu(void) 295 { 296 int i=0; \ GetPrivatePosInMenu: \ 00000000 0000A0E3 MOV R0,#+0 297 for (; i<5; i++) 298 { 299 if (PR_LIST_ID[i]==CurrentPrivateStatus) break; \ ??GetPrivatePosInMenu_0: \ 00000004 20109FE5 LDR R1,??GetPrivatePosInMenu_1 ;; PR_LIST_ID \ 00000008 ........ LDR R2,??DataTable3 ;; CurrentPrivateStatus \ 0000000C 001191E7 LDR R1,[R1, +R0, LSL #+2] \ 00000010 002092E5 LDR R2,[R2, #+0] \ 00000014 020051E1 CMP R1,R2 \ 00000018 1EFF2F01 BXEQ LR 300 } \ 0000001C 010080E2 ADD R0,R0,#+1 \ 00000020 050050E3 CMP R0,#+5 \ 00000024 F6FFFFBA BLT ??GetPrivatePosInMenu_0 301 return (i); \ 00000028 1EFF2FE1 BX LR ;; return \ ??GetPrivatePosInMenu_1: \ 0000002C ........ DC32 PR_LIST_ID 302 } 303 304 #define PRIVATE_LIST_MAX 5 305 \ In segment CODE, align 4, keep-with-next 306 static void PL_VisibleForAll(GUI *data) 307 { \ PL_VisibleForAll: \ 00000000 00402DE9 PUSH {LR} 308 SetPrivateStatus(PL_ALL_CAN_SEE); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 ........ BL SetPrivateStatus 309 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 310 } \ 00000014 0080BDE8 POP {PC} ;; return 311 \ In segment CODE, align 4, keep-with-next 312 static void PL_VisibleOnlyForVisList(GUI *data) 313 { \ PL_VisibleOnlyForVisList: \ 00000000 00402DE9 PUSH {LR} 314 SetPrivateStatus(PL_VISLIST_CAN_SEE); \ 00000004 0200A0E3 MOV R0,#+2 \ 00000008 ........ BL SetPrivateStatus 315 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 316 } \ 00000014 0080BDE8 POP {PC} ;; return 317 \ In segment CODE, align 4, keep-with-next 318 static void PL_VisibleForAllExceptInvisList(GUI *data) 319 { \ PL_VisibleForAllExceptInvisList: \ 00000000 00402DE9 PUSH {LR} 320 SetPrivateStatus(PL_INVISLIST_CANNOT_SEE); \ 00000004 0300A0E3 MOV R0,#+3 \ 00000008 ........ BL SetPrivateStatus 321 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 322 } \ 00000014 0080BDE8 POP {PC} ;; return 323 \ In segment CODE, align 4, keep-with-next 324 static void PL_VisibleOnlyForContactList(GUI *data) 325 { \ PL_VisibleOnlyForContactList: \ 00000000 00402DE9 PUSH {LR} 326 SetPrivateStatus(PL_CONTACTLIST_CAN_SEE); \ 00000004 0400A0E3 MOV R0,#+4 \ 00000008 ........ BL SetPrivateStatus 327 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 328 } \ 00000014 0080BDE8 POP {PC} ;; return \ In segment CODE, align 4, keep-with-next 329 static void PL_InvisibleForAll(GUI *data) 330 { \ PL_InvisibleForAll: \ 00000000 00402DE9 PUSH {LR} 331 SetPrivateStatus(PL_NOBODY_CAN_SEE); \ 00000004 0100A0E3 MOV R0,#+1 \ 00000008 ........ BL SetPrivateStatus 332 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 333 } \ 00000014 0080BDE8 POP {PC} ;; return 334 \ In segment CODE, align 4, keep-with-next 335 static void private_list_ghook(void *data, int cmd) 336 { \ private_list_ghook: \ 00000000 00402DE9 PUSH {LR} 337 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 338 { 339 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 340 } 341 } \ 00000010 0080BDE8 POP {PC} ;; return 342 \ In segment DATA_C, align 4, align-sorted 343 static const MENUITEM_DESC private_list_ITEMS[PRIVATE_LIST_MAX]= \ private_list_ITEMS: \ 00000000 ........ DC32 S_ICONS + 5CH \ 00000004 ........ DC32 `?`: \ 00000000 FF0F0000 DC16 4095, 0 \ 00000004 ........ DC32 `?` \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 01000000.... DC32 1, acgd_onkey, acgd_ghook, acgd_locret, 0, acgd_skt \ ............ \ ........0000 \ 0000........ \ 00000018 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000020 040000006400 DC32 4, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ `?`: \ 00000038 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000040 00000000.... DC32 0H, `?`: \ 00000000 C7E0EAF0FBF2 DC8 "\307\340\352\360\373\362\374" \ FC00 \ In segment DATA_C, align 1, align-sorted \ `?`: \ 00000000 00 DC8 "" \ In segment DATA_C, align 1, align-sorted \ 00000000 257500 DC8 "%u" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C4EEE1E0E2E8 DC8 "\304\356\341\340\342\350\362\374" \ F2FC00 \ 00000009 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `? 8 ? 76 ? 8 ? 1 ? 3 ? 12 ?