############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 08/Jul/2011 16:25:42 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\pasha\elf\_MY_PROJECT_\_NATICQ2\manage_cl.c # # Command line = D:\pasha\elf\_MY_PROJECT_\_NATICQ2\manage_cl.c -D # # X75 -D GUI_INTERFACE -D START_OFFLINE --preprocess # # D:\pasha\elf\_MY_PROJECT_\_NATICQ2\X75_START_OFFLINE # # \List\ -lC D:\pasha\elf\_MY_PROJECT_\_NATICQ2\X75_ST # # ART_OFFLINE\List\ -o D:\pasha\elf\_MY_PROJECT_\_NATI # # CQ2\X75_START_OFFLINE\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_\_NATICQ2\X75_START_OFFLINE # # \List\manage_cl.lst # # Object file = D:\pasha\elf\_MY_PROJECT_\_NATICQ2\X75_START_OFFLINE # # \Obj\manage_cl.r79 # # # # # ############################################################################## D:\pasha\elf\_MY_PROJECT_\_NATICQ2\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 #include "lang.h" 9 10 extern int S_ICONS[]; 11 extern int CurrentPrivateStatus; 12 13 #ifndef GUI_INTERFACE 14 static const int mmanage_cl_softkeys[] = {0,1,2}; 15 16 static SOFTKEY_DESC mmanage_cl_sk[] = 17 { 18 {0x0018, 0x0000, (int)""}, 19 {0x0001, 0x0000, NULL}, 20 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 21 }; 22 23 const SOFTKEYSTAB mmanage_cl_skt = 24 { 25 mmanage_cl_sk, 0 26 }; 27 #endif 28 29 static SOFTKEY_DESC acgd_sk[] = 30 { 31 {0x0018, 0x0000, (int)""}, 32 {0x0001, 0x0000, NULL}, 33 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 34 }; 35 \ In segment DATA_C, align 4, align-sorted 36 const SOFTKEYSTAB acgd_skt = \ acgd_skt: \ 00000000 ........0000 DC32 acgd_sk, 0 \ 0000 37 { 38 acgd_sk, 0 39 }; 40 41 \ In segment DATA_C, align 4, align-sorted 42 static const int pl_softkeys[] = {0,1,2}; \ pl_softkeys: \ 00000000 000000000100 DC32 0, 1, 2 \ 000002000000 43 44 static SOFTKEY_DESC pl_sk[] = 45 { 46 {0x0018, 0x0000, (int)""}, 47 {0x0001, 0x0000, NULL}, 48 {0x003D, 0x0000, (int)LGP_DOIT_PIC} 49 }; 50 \ In segment DATA_C, align 4, align-sorted 51 const SOFTKEYSTAB pl_skt = \ pl_skt: \ 00000000 ........0000 DC32 pl_sk, 0 \ 0000 52 { 53 pl_sk, 0 54 }; 55 56 typedef struct{ 57 unsigned int grp_id; 58 char name[64]; 59 }GRP_ARRAY; 60 \ In segment CODE, align 4, keep-with-next 61 int acgd_onkey(GUI *data, GUI_MSG *msg) 62 { \ acgd_onkey: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 6CD04DE2 SUB SP,SP,#+108 \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C 0190A0E1 MOV R9,R1 63 TPKT *p; 64 EDITCONTROL ec; 65 unsigned int uin=0; 66 unsigned int group=0; 67 WSHDR *ws; 68 int j; 69 char name[64], *s; 70 int len; 71 GRP_ARRAY *grp=EDIT_GetUserPointer(data); \ 00000010 DF0100EF SWI +479 \ 00000014 0070A0E1 MOV R7,R0 72 73 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 74 { 75 ExtractEditControl(data,2,&ec); \ 00000038 40208DE2 ADD R2,SP,#+64 \ 0000003C 0210A0E3 MOV R1,#+2 \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 690100EF SWI +361 76 ws=ec.pWS; \ 00000048 68009DE5 LDR R0,[SP, #+104] 77 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 78 { 79 uin*=10; 80 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 81 } \ 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 82 83 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 84 ws=ec.pWS; \ 00000098 68A09DE5 LDR R10,[SP, #+104] 85 s=name; \ 0000009C 0D90A0E1 MOV R9,SP 86 for (int i=0; iwsbody[0] && i<64; i++) \ 000000A0 00B0A0E3 MOV R11,#+0 \ 000000A4 040000EA B ??acgd_onkey_4 87 { 88 *s++=char16to8(ws->wsbody[i+1]); \ ??acgd_onkey_5: \ 000000A8 8B0080E0 ADD R0,R0,R11, LSL #+1 \ 000000AC B200D0E1 LDRH R0,[R0, #+2] 89 } \ 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 90 len=s-name; \ 000000D0 0D00A0E1 MOV R0,SP \ 000000D4 00A049E0 SUB R10,R9,R0 91 *s=0; \ 000000D8 0050C9E5 STRB R5,[R9, #+0] 92 93 EDIT_SetFocus(data, 6); \ 000000DC 0610A0E3 MOV R1,#+6 \ 000000E0 0400A0E1 MOV R0,R4 \ 000000E4 9B0100EF SWI +411 94 j=EDIT_GetItemNumInFocusedComboBox(data); \ 000000E8 0400A0E1 MOV R0,R4 \ 000000EC 800100EF SWI +384 95 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] 96 97 p=malloc(sizeof(PKT)+4+len); \ 00000100 0C008AE2 ADD R0,R10,#+12 \ 00000104 140000EF SWI +20 \ 00000108 0040A0E1 MOV R4,R0 98 p->pkt.uin=uin; \ 0000010C 008084E5 STR R8,[R4, #+0] 99 p->pkt.type=T_ADDCONTACT_WITH_GRP; \ 00000110 1B00A0E3 MOV R0,#+27 \ 00000114 B400C4E1 STRH R0,[R4, #+4] 100 p->pkt.data_len=len+4; \ 00000118 04008AE2 ADD R0,R10,#+4 \ 0000011C B600C4E1 STRH R0,[R4, #+6] 101 *(unsigned int *)(p->data)=group; \ 00000120 086084E5 STR R6,[R4, #+8] 102 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 103 SUBPROC((void *)SendAnswer,0,p); \ 00000134 ........ LDR R0,??DataTable2 ;; SendAnswer \ 00000138 0420A0E1 MOV R2,R4 \ 0000013C 0010A0E3 MOV R1,#+0 \ 00000140 710100EF SWI +369 104 return (1); \ 00000144 0100A0E3 MOV R0,#+1 \ 00000148 6CD08DE2 ADD SP,SP,#+108 \ 0000014C F08FBDE8 POP {R4-R11,PC} 105 } 106 return (0); \ ??acgd_onkey_0: \ 00000150 0000A0E3 MOV R0,#+0 \ 00000154 6CD08DE2 ADD SP,SP,#+108 \ 00000158 F08FBDE8 POP {R4-R11,PC} ;; return 107 } 108 109 110 \ In segment CODE, align 4, keep-with-next 111 void acgd_ghook(GUI *data, int cmd) 112 { \ acgd_ghook: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 113 static SOFTKEY_DESC sk_add={0x0FFF,0x0000,NULL}; 114 sk_add.lgp_id=(int)lgpData[LGP_Add]; \ 00000004 F4609FE5 LDR R6,??acgd_ghook_0 ;; ??sk_add \ 00000008 0040A0E1 MOV R4,R0 \ 0000000C F0009FE5 LDR R0,??acgd_ghook_0+0x4 ;; lgpData + 60 \ 00000010 2CD04DE2 SUB SP,SP,#+44 \ 00000014 000090E5 LDR R0,[R0, #+0] \ 00000018 0150A0E1 MOV R5,R1 \ 0000001C 040086E5 STR R0,[R6, #+4] 115 116 GRP_ARRAY *grp=EDIT_GetUserPointer(data); \ 00000020 0400A0E1 MOV R0,R4 \ 00000024 DF0100EF SWI +479 \ 00000028 0070A0E1 MOV R7,R0 117 EDITCONTROL ec; 118 int i, j; 119 i=EDIT_GetFocus(data); \ 0000002C 0400A0E1 MOV R0,R4 \ 00000030 820100EF SWI +386 120 if (cmd==3) \ 00000034 030055E3 CMP R5,#+3 \ 00000038 0200001A BNE ??acgd_ghook_1 121 { 122 mfree(grp); \ 0000003C 0700A0E1 MOV R0,R7 \ 00000040 150000EF SWI +21 \ 00000044 050000EA B ??acgd_ghook_2 123 } 124 if (cmd==7) \ ??acgd_ghook_1: \ 00000048 070055E3 CMP R5,#+7 \ 0000004C 0500001A BNE ??acgd_ghook_3 125 { 126 SetSoftKey(data,&sk_add,SET_SOFT_KEY_N); \ 00000050 0120A0E3 MOV R2,#+1 \ 00000054 0610A0E1 MOV R1,R6 \ 00000058 0400A0E1 MOV R0,R4 \ 0000005C 680100EF SWI +360 \ ??acgd_ghook_2: \ 00000060 2CD08DE2 ADD SP,SP,#+44 \ 00000064 F080BDE8 POP {R4-R7,PC} 127 } 128 if (cmd==0x0A) \ ??acgd_ghook_3: \ 00000068 0A0055E3 CMP R5,#+10 \ 0000006C 0100001A BNE ??acgd_ghook_4 129 { 130 DisableIDLETMR(); \ 00000070 7F0100EF SWI +383 \ 00000074 F9FFFFEA B ??acgd_ghook_2 131 } 132 if (cmd==0x0D) \ ??acgd_ghook_4: \ 00000078 0D0055E3 CMP R5,#+13 133 { 134 if (i==6) \ 0000007C 06005003 CMPEQ R0,#+6 \ 00000080 1C00001A BNE ??acgd_ghook_5 135 { 136 WSHDR *ews=AllocWS(64); \ 00000084 4000A0E3 MOV R0,#+64 \ 00000088 250100EF SWI +293 \ 0000008C 0050A0E1 MOV R5,R0 137 ExtractEditControl(data,i,&ec); \ 00000090 0D20A0E1 MOV R2,SP \ 00000094 0610A0E3 MOV R1,#+6 \ 00000098 0400A0E1 MOV R0,R4 \ 0000009C 690100EF SWI +361 138 if ((j=EDIT_GetItemNumInFocusedComboBox(data))) \ 000000A0 0400A0E1 MOV R0,R4 \ 000000A4 800100EF SWI +384 \ 000000A8 000050E3 CMP R0,#+0 \ 000000AC 0500000A BEQ ??acgd_ghook_6 139 { 140 ascii2ws(ews,grp[j-1].name); \ 000000B0 4410A0E3 MOV R1,#+68 \ 000000B4 917020E0 MLA R0,R1,R0,R7 \ 000000B8 401040E2 SUB R1,R0,#+64 \ 000000BC 0500A0E1 MOV R0,R5 \ 000000C0 ........ _BLF ascii2ws,??ascii2ws??rA \ 000000C4 060000EA B ??acgd_ghook_7 141 } 142 else 143 { 144 ExtractEditControl(data,i-1,&ec); \ ??acgd_ghook_6: \ 000000C8 0D20A0E1 MOV R2,SP \ 000000CC 0510A0E3 MOV R1,#+5 \ 000000D0 0400A0E1 MOV R0,R4 \ 000000D4 690100EF SWI +361 145 wstrcpy(ews,ec.pWS); \ 000000D8 28109DE5 LDR R1,[SP, #+40] \ 000000DC 0500A0E1 MOV R0,R5 \ 000000E0 1F0100EF SWI +287 146 } 147 EDIT_SetTextToFocused(data,ews); \ ??acgd_ghook_7: \ 000000E4 0510A0E1 MOV R1,R5 \ 000000E8 0400A0E1 MOV R0,R4 \ 000000EC 810100EF SWI +385 148 FreeWS(ews); \ 000000F0 0500A0E1 MOV R0,R5 \ 000000F4 290100EF SWI +297 149 } 150 } 151 } \ ??acgd_ghook_5: \ 000000F8 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 000000FC F080BDE8 POP {R4-R7,PC} ;; return \ ??acgd_ghook_0: \ 00000100 ........ DC32 ??sk_add \ 00000104 ........ DC32 lgpData + 60 152 \ In segment CODE, align 4, keep-with-next 153 void acgd_locret(void){} \ acgd_locret: \ 00000000 1EFF2FE1 BX LR ;; return \ In segment DATA_I, align 4, align-sorted 154 155 HEADER_DESC acgd_hdr={0,0,0,0,NULL,(int)"Добавление контакта",LGP_NULL}; 156 157 INPUTDIA_DESC acgd_desc= \ acgd_desc: \ 00000000 DS8 56 \ 00000038 REQUIRE `?` \ acgd_hdr: \ 00000038 DS8 20 \ 0000004C REQUIRE `?` \ acgd_sk: \ 0000004C DS8 24 \ 00000064 REQUIRE `?` 158 { 159 1, 160 acgd_onkey, 161 acgd_ghook, 162 (void *)acgd_locret, 163 0, 164 &acgd_skt, 165 {0,0,0,0}, 166 4, 167 100, 168 101, 169 0, 170 171 // 0x00000001 - Выровнять по правому краю 172 // 0x00000002 - Выровнять по центру 173 // 0x00000004 - Инверсия знакомест 174 // 0x00000008 - UnderLine 175 // 0x00000020 - Не переносить слова 176 // 0x00000200 - bold 177 0, 178 179 // 0x00000002 - ReadOnly 180 // 0x00000004 - Не двигается курсор 181 // 0x40000000 - Поменять местами софт-кнопки 182 0x40000000 183 }; 184 185 extern volatile CLIST *cltop; \ In segment CODE, align 4, keep-with-next 186 int CreateAddContactGrpDialog(CLIST *cl_sel) 187 { \ CreateAddContactGrpDialog: \ 00000000 F04F2DE9 PUSH {R4-R11,LR} \ 00000004 30D04DE2 SUB SP,SP,#+48 \ 00000008 0040A0E1 MOV R4,R0 188 WSHDR *ews; 189 void *ma=malloc_adr(); 190 void *eq; 191 EDITCONTROL ec; 192 GRP_ARRAY *grp=NULL; 193 int grp_n=0; \ 0000000C 0060A0E3 MOV R6,#+0 \ 00000010 148000EF SWI +32788 \ 00000014 0050A0E1 MOV R5,R0 194 int to_combo=0; \ 00000018 0610A0E1 MOV R1,R6 \ 0000001C 00108DE5 STR R1,[SP, #+0] 195 196 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 197 ews=AllocWS(128); \ 00000034 8000A0E3 MOV R0,#+128 \ 00000038 250100EF SWI +293 \ 0000003C 0080A0E1 MOV R8,R0 \ 00000040 40039FE5 LDR R0,??CreateAddContactGrpDialog_0+0x4 ;; lgpData + 68 \ 00000044 0090A0E3 MOV R9,#+0 \ 00000048 001090E5 LDR R1,[R0, #+0] \ 0000004C 0800A0E1 MOV R0,R8 198 199 ascii2ws(ews,(char*)lgpData[LGP_EnterUin]); \ 00000050 ........ _BLF ascii2ws,??ascii2ws??rA 200 PrepareEditControl(&ec); \ 00000054 04008DE2 ADD R0,SP,#+4 \ 00000058 640100EF SWI +356 201 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 0000005C 000098E5 LDR R0,[R8, #+0] \ 00000060 0830A0E1 MOV R3,R8 \ 00000064 B000D0E1 LDRH R0,[R0, #+0] \ 00000068 4020A0E3 MOV R2,#+64 \ 0000006C 0110A0E3 MOV R1,#+1 \ 00000070 01002DE9 PUSH {R0} 202 AddEditControlToEditQend(eq,&ec,ma); //1 203 204 PrepareEditControl(&ec); 205 if (cl_sel) \ 00000074 C2AF8FE2 ADR R10,??CreateAddContactGrpDialog_0 ;; "%u" \ 00000078 08008DE2 ADD R0,SP,#+8 \ 0000007C 650100EF SWI +357 \ 00000080 0520A0E1 MOV R2,R5 \ 00000084 08108DE2 ADD R1,SP,#+8 \ 00000088 0700A0E1 MOV R0,R7 \ 0000008C 660100EF SWI +358 \ 00000090 08008DE2 ADD R0,SP,#+8 \ 00000094 640100EF SWI +356 \ 00000098 000054E3 CMP R4,#+0 \ 0000009C 04D08DE2 ADD SP,SP,#+4 \ 000000A0 0400000A BEQ ??CreateAddContactGrpDialog_1 206 { 207 wsprintf(ews,"%u",cl_sel->uin); \ 000000A4 0C2094E5 LDR R2,[R4, #+12] \ 000000A8 0A10A0E1 MOV R1,R10 \ 000000AC 0800A0E1 MOV R0,R8 \ 000000B0 240100EF SWI +292 \ 000000B4 020000EA B ??CreateAddContactGrpDialog_2 208 } 209 else 210 { 211 CutWSTR(ews,0); \ ??CreateAddContactGrpDialog_1: \ 000000B8 0010A0E3 MOV R1,#+0 \ 000000BC 0800A0E1 MOV R0,R8 \ 000000C0 260100EF SWI +294 212 } 213 ConstructEditControl(&ec,ECT_NORMAL_NUM,ECF_APPEND_EOL|ECF_DISABLE_MINUS|ECF_DISABLE_POINT,ews,9); \ ??CreateAddContactGrpDialog_2: \ 000000C4 0900A0E3 MOV R0,#+9 \ 000000C8 01002DE9 PUSH {R0} \ 000000CC 0830A0E1 MOV R3,R8 \ 000000D0 4020A0E3 MOV R2,#+64 \ 000000D4 602A82E3 ORR R2,R2,#0x60000 \ 000000D8 0610A0E3 MOV R1,#+6 \ 000000DC 08008DE2 ADD R0,SP,#+8 \ 000000E0 650100EF SWI +357 214 AddEditControlToEditQend(eq,&ec,ma); //2 \ 000000E4 0520A0E1 MOV R2,R5 \ 000000E8 08108DE2 ADD R1,SP,#+8 \ 000000EC 0700A0E1 MOV R0,R7 \ 000000F0 660100EF SWI +358 215 216 217 ascii2ws(ews,lgpData[LGP_EnterName]); \ 000000F4 90029FE5 LDR R0,??CreateAddContactGrpDialog_0+0x8 ;; lgpData + 296 \ 000000F8 001090E5 LDR R1,[R0, #+0] \ 000000FC 0800A0E1 MOV R0,R8 \ 00000100 ........ _BLF ascii2ws,??ascii2ws??rA 218 PrepareEditControl(&ec); \ 00000104 08008DE2 ADD R0,SP,#+8 \ 00000108 640100EF SWI +356 219 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 0000010C 000098E5 LDR R0,[R8, #+0] \ 00000110 0830A0E1 MOV R3,R8 \ 00000114 B000D0E1 LDRH R0,[R0, #+0] \ 00000118 4020A0E3 MOV R2,#+64 \ 0000011C 0110A0E3 MOV R1,#+1 \ 00000120 01002DE9 PUSH {R0} \ 00000124 0C008DE2 ADD R0,SP,#+12 \ 00000128 650100EF SWI +357 220 AddEditControlToEditQend(eq,&ec,ma); //3 \ 0000012C 0520A0E1 MOV R2,R5 \ 00000130 0C108DE2 ADD R1,SP,#+12 \ 00000134 0700A0E1 MOV R0,R7 \ 00000138 660100EF SWI +358 221 222 PrepareEditControl(&ec); \ 0000013C 0C008DE2 ADD R0,SP,#+12 \ 00000140 640100EF SWI +356 223 if (cl_sel) \ 00000144 000054E3 CMP R4,#+0 \ 00000148 08D08DE2 ADD SP,SP,#+8 \ 0000014C 0A00000A BEQ ??CreateAddContactGrpDialog_3 224 { 225 if (cl_sel->name) \ 00000150 140094E2 ADDS R0,R4,#+20 \ 00000154 0300000A BEQ ??CreateAddContactGrpDialog_4 226 { 227 ascii2ws(ews,cl_sel->name); \ 00000158 141084E2 ADD R1,R4,#+20 \ 0000015C 0800A0E1 MOV R0,R8 \ 00000160 ........ _BLF ascii2ws,??ascii2ws??rA \ 00000164 070000EA B ??CreateAddContactGrpDialog_5 228 } 229 else 230 { 231 wsprintf(ews,"%u",cl_sel->uin); \ ??CreateAddContactGrpDialog_4: \ 00000168 0C2094E5 LDR R2,[R4, #+12] \ 0000016C 0A10A0E1 MOV R1,R10 \ 00000170 0800A0E1 MOV R0,R8 \ 00000174 240100EF SWI +292 \ 00000178 020000EA B ??CreateAddContactGrpDialog_5 232 } 233 } 234 else 235 { 236 CutWSTR(ews,0); \ ??CreateAddContactGrpDialog_3: \ 0000017C 0010A0E3 MOV R1,#+0 \ 00000180 0800A0E1 MOV R0,R8 \ 00000184 260100EF SWI +294 237 } 238 ConstructEditControl(&ec,ECT_NORMAL_TEXT,ECF_APPEND_EOL,ews,64); \ ??CreateAddContactGrpDialog_5: \ 00000188 4000A0E3 MOV R0,#+64 \ 0000018C 01002DE9 PUSH {R0} \ 00000190 0830A0E1 MOV R3,R8 \ 00000194 4020A0E3 MOV R2,#+64 \ 00000198 0310A0E3 MOV R1,#+3 \ 0000019C 08008DE2 ADD R0,SP,#+8 \ 000001A0 650100EF SWI +357 239 AddEditControlToEditQend(eq,&ec,ma); //4 \ 000001A4 0520A0E1 MOV R2,R5 \ 000001A8 08108DE2 ADD R1,SP,#+8 \ 000001AC 0700A0E1 MOV R0,R7 \ 000001B0 660100EF SWI +358 240 241 for (CLIST *cl=(CLIST *)cltop; cl!=0; cl=cl->next) \ 000001B4 D4019FE5 LDR R0,??CreateAddContactGrpDialog_0+0xC ;; cltop \ 000001B8 00A090E5 LDR R10,[R0, #+0] \ 000001BC 04D08DE2 ADD SP,SP,#+4 \ 000001C0 00005AE3 CMP R10,#+0 \ 000001C4 1C00000A BEQ ??CreateAddContactGrpDialog_6 242 { 243 if (cl->isgroup) \ ??CreateAddContactGrpDialog_7: \ 000001C8 08009AE5 LDR R0,[R10, #+8] \ 000001CC 000050E3 CMP R0,#+0 \ 000001D0 1600000A BEQ ??CreateAddContactGrpDialog_8 \ 000001D4 010086E2 ADD R0,R6,#+1 \ 000001D8 4420A0E3 MOV R2,#+68 \ 000001DC 920001E0 MUL R1,R2,R0 \ 000001E0 0900A0E1 MOV R0,R9 244 { 245 GRP_ARRAY *cur_grp; 246 grp=realloc(grp,(grp_n+1)*sizeof(GRP_ARRAY)); \ 000001E4 BA0000EF SWI +186 \ 000001E8 0090A0E1 MOV R9,R0 247 cur_grp=grp+grp_n; \ 000001EC 4400A0E3 MOV R0,#+68 \ 000001F0 90962BE0 MLA R11,R0,R6,R9 248 cur_grp->grp_id=cl->group; \ 000001F4 10009AE5 LDR R0,[R10, #+16] 249 strncpy(cur_grp->name, cl->name,64); \ 000001F8 4020A0E3 MOV R2,#+64 \ 000001FC 00008BE5 STR R0,[R11, #+0] \ 00000200 14108AE2 ADD R1,R10,#+20 \ 00000204 04008BE2 ADD R0,R11,#+4 \ 00000208 160100EF SWI +278 250 cur_grp->name[63]=0; \ 0000020C 0000A0E3 MOV R0,#+0 \ 00000210 4300CBE5 STRB R0,[R11, #+67] 251 if (cl_sel) \ 00000214 000054E3 CMP R4,#+0 \ 00000218 0300000A BEQ ??CreateAddContactGrpDialog_9 252 { 253 if (cl_sel->group==cur_grp->grp_id) to_combo=grp_n; \ 0000021C 100094E5 LDR R0,[R4, #+16] \ 00000220 00109BE5 LDR R1,[R11, #+0] \ 00000224 010050E1 CMP R0,R1 \ 00000228 00608D05 STREQ R6,[SP, #+0] 254 } 255 grp_n++; \ ??CreateAddContactGrpDialog_9: \ 0000022C 016086E2 ADD R6,R6,#+1 256 } 257 } \ ??CreateAddContactGrpDialog_8: \ 00000230 00A09AE5 LDR R10,[R10, #+0] \ 00000234 00005AE3 CMP R10,#+0 \ 00000238 E2FFFF1A BNE ??CreateAddContactGrpDialog_7 258 ascii2ws(ews,(char*)lgpData[LGP_ChooseGroup]); \ ??CreateAddContactGrpDialog_6: \ 0000023C 50019FE5 LDR R0,??CreateAddContactGrpDialog_0+0x10 ;; lgpData + 300 \ 00000240 001090E5 LDR R1,[R0, #+0] \ 00000244 0800A0E1 MOV R0,R8 \ 00000248 ........ _BLF ascii2ws,??ascii2ws??rA 259 PrepareEditControl(&ec); \ 0000024C 04008DE2 ADD R0,SP,#+4 \ 00000250 640100EF SWI +356 260 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ews,ews->wsbody[0]); \ 00000254 000098E5 LDR R0,[R8, #+0] \ 00000258 0830A0E1 MOV R3,R8 \ 0000025C B000D0E1 LDRH R0,[R0, #+0] \ 00000260 4020A0E3 MOV R2,#+64 \ 00000264 0110A0E3 MOV R1,#+1 \ 00000268 01002DE9 PUSH {R0} \ 0000026C 08008DE2 ADD R0,SP,#+8 \ 00000270 650100EF SWI +357 261 AddEditControlToEditQend(eq,&ec,ma); //5 \ 00000274 0520A0E1 MOV R2,R5 \ 00000278 08108DE2 ADD R1,SP,#+8 \ 0000027C 0700A0E1 MOV R0,R7 \ 00000280 660100EF SWI +358 262 263 264 PrepareEditControl(&ec); \ 00000284 08008DE2 ADD R0,SP,#+8 \ 00000288 640100EF SWI +356 265 CutWSTR(ews,0); \ 0000028C 0010A0E3 MOV R1,#+0 \ 00000290 0800A0E1 MOV R0,R8 \ 00000294 260100EF SWI +294 266 if(grp_n) \ 00000298 000056E3 CMP R6,#+0 \ 0000029C 04D08DE2 ADD SP,SP,#+4 \ 000002A0 0200000A BEQ ??CreateAddContactGrpDialog_10 267 { 268 ascii2ws(ews,grp->name); \ 000002A4 041089E2 ADD R1,R9,#+4 \ 000002A8 0800A0E1 MOV R0,R8 \ 000002AC ........ _BLF ascii2ws,??ascii2ws??rA 269 } 270 ConstructComboBox(&ec,ECT_COMBO_BOX,ECF_APPEND_EOL,ews,64,0,grp_n,1+to_combo); \ ??CreateAddContactGrpDialog_10: \ 000002B0 00009DE5 LDR R0,[SP, #+0] 271 AddEditControlToEditQend(eq,&ec,ma); //6 272 273 patch_header(&acgd_hdr); \ 000002B4 DC409FE5 LDR R4,??CreateAddContactGrpDialog_0+0x14 ;; acgd_desc \ 000002B8 010080E2 ADD R0,R0,#+1 \ 000002BC 01002DE9 PUSH {R0} \ 000002C0 40002DE9 PUSH {R6} \ 000002C4 0830A0E1 MOV R3,R8 \ 000002C8 0000A0E3 MOV R0,#+0 \ 000002CC 01002DE9 PUSH {R0} \ 000002D0 4020A0E3 MOV R2,#+64 \ 000002D4 0710A0E3 MOV R1,#+7 \ 000002D8 4000A0E3 MOV R0,#+64 \ 000002DC 01002DE9 PUSH {R0} \ 000002E0 14008DE2 ADD R0,SP,#+20 \ 000002E4 840100EF SWI +388 \ 000002E8 0520A0E1 MOV R2,R5 \ 000002EC 14108DE2 ADD R1,SP,#+20 \ 000002F0 0700A0E1 MOV R0,R7 \ 000002F4 660100EF SWI +358 \ 000002F8 0000A0E3 MOV R0,#+0 \ 000002FC 380084E5 STR R0,[R4, #+56] \ 00000300 888100EF SWI +33160 \ 00000304 010040E2 SUB R0,R0,#+1 \ 00000308 BC03C4E1 STRH R0,[R4, #+60] \ 0000030C 8A8100EF SWI +33162 \ 00000310 010040E2 SUB R0,R0,#+1 \ 00000314 BE03C4E1 STRH R0,[R4, #+62] 274 patch_input(&acgd_desc); \ 00000318 0000A0E3 MOV R0,#+0 \ 0000031C B801C4E1 STRH R0,[R4, #+24] \ 00000320 8A8100EF SWI +33162 \ 00000324 010080E2 ADD R0,R0,#+1 \ 00000328 BA01C4E1 STRH R0,[R4, #+26] \ 0000032C 888100EF SWI +33160 \ 00000330 010040E2 SUB R0,R0,#+1 \ 00000334 BC01C4E1 STRH R0,[R4, #+28] \ 00000338 898100EF SWI +33161 \ 0000033C 0050A0E1 MOV R5,R0 \ 00000340 8B8100EF SWI +33163 \ 00000344 000045E0 SUB R0,R5,R0 \ 00000348 010040E2 SUB R0,R0,#+1 \ 0000034C BE01C4E1 STRH R0,[R4, #+30] 275 FreeWS(ews); \ 00000350 0800A0E1 MOV R0,R8 \ 00000354 290100EF SWI +297 276 277 acgd_sk[1].lgp_id=(int)lgpData[LGP_Close]; \ 00000358 3C009FE5 LDR R0,??CreateAddContactGrpDialog_0+0x18 ;; lgpData + 32 278 return CreateInputTextDialog(&acgd_desc,&acgd_hdr,eq,1,grp); \ 0000035C 0130A0E3 MOV R3,#+1 \ 00000360 000090E5 LDR R0,[R0, #+0] \ 00000364 0720A0E1 MOV R2,R7 \ 00000368 580084E5 STR R0,[R4, #+88] \ 0000036C 00022DE9 PUSH {R9} \ 00000370 381084E2 ADD R1,R4,#+56 \ 00000374 0400A0E1 MOV R0,R4 \ 00000378 670100EF SWI +359 \ 0000037C 44D08DE2 ADD SP,SP,#+68 \ 00000380 F08FBDE8 POP {R4-R11,PC} ;; return \ ??CreateAddContactGrpDialog_0: \ 00000384 25750000 DC8 "%u",+0 \ 00000388 ........ DC32 lgpData + 68 \ 0000038C ........ DC32 lgpData + 296 \ 00000390 ........ DC32 cltop \ 00000394 ........ DC32 lgpData + 300 \ 00000398 ........ DC32 acgd_desc \ 0000039C ........ DC32 lgpData + 32 279 } 280 \ In segment DATA_C, align 4, align-sorted 281 const int PR_LIST_ID[5]= \ PR_LIST_ID: \ 00000000 000000000200 DC32 0, 2, 3, 4, 1 \ 000003000000 \ 040000000100 \ 0000 282 { 283 PL_ALL_CAN_SEE, 284 PL_VISLIST_CAN_SEE, 285 PL_INVISLIST_CANNOT_SEE, 286 PL_CONTACTLIST_CAN_SEE, 287 PL_NOBODY_CAN_SEE 288 }; 289 290 \ In segment CODE, align 4, keep-with-next 291 void SetPrivateStatus(int status) 292 { \ SetPrivateStatus: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 293 TPKT *p; 294 p=malloc(sizeof(PKT)+1); \ 00000008 0900A0E3 MOV R0,#+9 \ 0000000C 140000EF SWI +20 \ 00000010 0050A0E1 MOV R5,R0 295 p->pkt.uin=0; \ 00000014 0000A0E3 MOV R0,#+0 \ 00000018 000085E5 STR R0,[R5, #+0] 296 p->pkt.type=T_SETPRIVACY; \ 0000001C 1E00A0E3 MOV R0,#+30 \ 00000020 B400C5E1 STRH R0,[R5, #+4] 297 p->pkt.data_len=1; \ 00000024 0100A0E3 MOV R0,#+1 \ 00000028 B600C5E1 STRH R0,[R5, #+6] 298 p->data[0]=status; 299 CurrentPrivateStatus=status; \ 0000002C ........ LDR R0,??DataTable3 ;; CurrentPrivateStatus \ 00000030 0840C5E5 STRB R4,[R5, #+8] \ 00000034 004080E5 STR R4,[R0, #+0] 300 extern void InitMMenu(); 301 InitMMenu(); \ 00000038 ........ _BLF InitMMenu,??InitMMenu??rA 302 SUBPROC((void *)SendAnswer,0,p); \ 0000003C ........ LDR R0,??DataTable2 ;; SendAnswer \ 00000040 0520A0E1 MOV R2,R5 \ 00000044 0010A0E3 MOV R1,#+0 \ 00000048 710100EF SWI +369 303 } \ 0000004C 3080BDE8 POP {R4,R5,PC} ;; return 304 \ In segment CODE, align 4, keep-with-next 305 int GetPrivatePosInMenu(void) 306 { 307 int i=0; \ GetPrivatePosInMenu: \ 00000000 0000A0E3 MOV R0,#+0 308 for (; i<5; i++) 309 { 310 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 311 } \ 0000001C 010080E2 ADD R0,R0,#+1 \ 00000020 050050E3 CMP R0,#+5 \ 00000024 F6FFFFBA BLT ??GetPrivatePosInMenu_0 312 return (i); \ 00000028 1EFF2FE1 BX LR ;; return \ ??GetPrivatePosInMenu_1: \ 0000002C ........ DC32 PR_LIST_ID 313 } 314 315 #define PRIVATE_LIST_MAX 5 316 \ In segment CODE, align 4, keep-with-next 317 static void PL_VisibleForAll(GUI *data) 318 { \ PL_VisibleForAll: \ 00000000 00402DE9 PUSH {LR} 319 SetPrivateStatus(PL_ALL_CAN_SEE); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 ........ BL SetPrivateStatus 320 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 321 } \ 00000014 0080BDE8 POP {PC} ;; return 322 \ In segment CODE, align 4, keep-with-next 323 static void PL_VisibleOnlyForVisList(GUI *data) 324 { \ PL_VisibleOnlyForVisList: \ 00000000 00402DE9 PUSH {LR} 325 SetPrivateStatus(PL_VISLIST_CAN_SEE); \ 00000004 0200A0E3 MOV R0,#+2 \ 00000008 ........ BL SetPrivateStatus 326 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 327 } \ 00000014 0080BDE8 POP {PC} ;; return 328 \ In segment CODE, align 4, keep-with-next 329 static void PL_VisibleForAllExceptInvisList(GUI *data) 330 { \ PL_VisibleForAllExceptInvisList: \ 00000000 00402DE9 PUSH {LR} 331 SetPrivateStatus(PL_INVISLIST_CANNOT_SEE); \ 00000004 0300A0E3 MOV R0,#+3 \ 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 PL_VisibleOnlyForContactList(GUI *data) 336 { \ PL_VisibleOnlyForContactList: \ 00000000 00402DE9 PUSH {LR} 337 SetPrivateStatus(PL_CONTACTLIST_CAN_SEE); \ 00000004 0400A0E3 MOV R0,#+4 \ 00000008 ........ BL SetPrivateStatus 338 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 339 } \ 00000014 0080BDE8 POP {PC} ;; return \ In segment CODE, align 4, keep-with-next 340 static void PL_InvisibleForAll(GUI *data) 341 { \ PL_InvisibleForAll: \ 00000000 00402DE9 PUSH {LR} 342 SetPrivateStatus(PL_NOBODY_CAN_SEE); \ 00000004 0100A0E3 MOV R0,#+1 \ 00000008 ........ BL SetPrivateStatus 343 GeneralFuncF1(1); \ 0000000C 0100A0E3 MOV R0,#+1 \ 00000010 3B0100EF SWI +315 344 } \ 00000014 0080BDE8 POP {PC} ;; return 345 \ In segment CODE, align 4, keep-with-next 346 static void private_list_ghook(void *data, int cmd) 347 { \ private_list_ghook: \ 00000000 00402DE9 PUSH {LR} 348 if (cmd==0x0A) \ 00000004 0A0051E3 CMP R1,#+10 \ 00000008 0080BD18 POPNE {PC} 349 { 350 DisableIDLETMR(); \ 0000000C 7F0100EF SWI +383 351 } 352 } \ 00000010 0080BDE8 POP {PC} ;; return 353 354 static MENUITEM_DESC private_list_ITEMS[PRIVATE_LIST_MAX]= 355 { 356 {S_ICONS+ICON_ALL_CAN_SEE, NULL, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 357 {S_ICONS+ICON_VISLIST_CAN_SEE, NULL, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 358 {S_ICONS+ICON_INVISLIST_CANNOT_SEE, NULL, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 359 {S_ICONS+ICON_CONTACTLIST_CAN_SEE, NULL, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 360 {S_ICONS+ICON_NOBODY_CAN_SEE, NULL, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2} 361 }; 362 \ In segment DATA_C, align 4, align-sorted 363 static const MENUPROCS_DESC private_list_HNDLS[PRIVATE_LIST_MAX]= \ private_list_HNDLS: \ 00000000 ............ DC32 PL_VisibleForAll, PL_VisibleOnlyForVisList \ .... \ 00000008 ............ DC32 PL_VisibleForAllExceptInvisList, PL_VisibleOnlyForContactList \ .... \ 00000010 ........ DC32 PL_InvisibleForAll \ In segment DATA_I, align 4, align-sorted 364 { 365 PL_VisibleForAll, 366 PL_VisibleOnlyForVisList, 367 PL_VisibleForAllExceptInvisList, 368 PL_VisibleOnlyForContactList, 369 PL_InvisibleForAll 370 }; 371 372 static HEADER_DESC private_list_HDR={0,0,NULL,NULL,NULL,NULL,LGP_NULL}; \ private_list_HDR: \ 00000000 DS8 20 \ 00000014 REQUIRE `?` \ private_list_ITEMS: \ 00000014 DS8 140 \ 000000A0 REQUIRE `?` \ pl_sk: \ 000000A0 DS8 24 \ 000000B8 REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ ??sk_add: \ 00000000 DS8 8 \ 00000008 REQUIRE `?` 373 \ In segment DATA_C, align 4, align-sorted 374 static const MENU_DESC private_list_MNU= \ private_list_MNU: \ 00000000 080000000000 DC32 8, 0H, private_list_ghook, 0H, pl_softkeys, pl_skt, 17, 0H \ 0000........ \ 00000000.... \ ............ \ 110000000000 \ 0000 \ 00000020 ............ DC32 private_list_ITEMS, private_list_HNDLS, 5 \ ....05000000 375 { 376 8,NULL,private_list_ghook,NULL, 377 pl_softkeys, 378 &pl_skt, 379 0x11, 380 NULL, 381 private_list_ITEMS, 382 private_list_HNDLS, 383 PRIVATE_LIST_MAX 384 }; 385 386 \ In segment CODE, align 4, keep-with-next 387 int CreatePrivateStatusMenu(void) 388 { \ CreatePrivateStatusMenu: \ 00000000 10402DE9 PUSH {R4,LR} 389 patch_header(&private_list_HDR); \ 00000004 90409FE5 LDR R4,??CreatePrivateStatusMenu_0 ;; private_list_HDR \ 00000008 0000A0E3 MOV R0,#+0 \ 0000000C 000084E5 STR R0,[R4, #+0] \ 00000010 888100EF SWI +33160 \ 00000014 010040E2 SUB R0,R0,#+1 \ 00000018 B400C4E1 STRH R0,[R4, #+4] \ 0000001C 8A8100EF SWI +33162 \ 00000020 010040E2 SUB R0,R0,#+1 \ 00000024 B600C4E1 STRH R0,[R4, #+6] 390 391 //Инициализация ленгпака 392 private_list_HDR.lgp_id=(int)lgpData[LGP_PrivStatus]; \ 00000028 70009FE5 LDR R0,??CreatePrivateStatusMenu_0+0x4 ;; lgpData \ 0000002C 301190E5 LDR R1,[R0, #+304] \ 00000030 0C1084E5 STR R1,[R4, #+12] 393 pl_sk[1].lgp_id=(int)lgpData[LGP_Close]; \ 00000034 201090E5 LDR R1,[R0, #+32] \ 00000038 AC1084E5 STR R1,[R4, #+172] 394 private_list_ITEMS[0].lgp_id_small=(int)lgpData[LGP_All_Can_See]; \ 0000003C 141190E5 LDR R1,[R0, #+276] \ 00000040 181084E5 STR R1,[R4, #+24] 395 private_list_ITEMS[1].lgp_id_small=(int)lgpData[LGP_Vislist_Can_See]; \ 00000044 181190E5 LDR R1,[R0, #+280] \ 00000048 341084E5 STR R1,[R4, #+52] 396 private_list_ITEMS[2].lgp_id_small=(int)lgpData[LGP_Invislist_Cannot_See]; \ 0000004C 1C1190E5 LDR R1,[R0, #+284] \ 00000050 501084E5 STR R1,[R4, #+80] 397 private_list_ITEMS[3].lgp_id_small=(int)lgpData[LGP_ContactList_Can_See]; \ 00000054 201190E5 LDR R1,[R0, #+288] 398 private_list_ITEMS[4].lgp_id_small=(int)lgpData[LGP_Nobody_Can_See]; \ 00000058 240190E5 LDR R0,[R0, #+292] \ 0000005C 6C1084E5 STR R1,[R4, #+108] \ 00000060 880084E5 STR R0,[R4, #+136] 399 400 401 return CreateMenu(0,0,&private_list_MNU,&private_list_HDR,GetPrivatePosInMenu(),PRIVATE_LIST_MAX,0,0); \ 00000064 ........ BL GetPrivatePosInMenu \ 00000068 34209FE5 LDR R2,??CreatePrivateStatusMenu_0+0x8 ;; private_list_MNU \ 0000006C 0010A0E3 MOV R1,#+0 \ 00000070 02002DE9 PUSH {R1} \ 00000074 02002DE9 PUSH {R1} \ 00000078 0430A0E1 MOV R3,R4 \ 0000007C 0510A0E3 MOV R1,#+5 \ 00000080 02002DE9 PUSH {R1} \ 00000084 01002DE9 PUSH {R0} \ 00000088 0010A0E3 MOV R1,#+0 \ 0000008C 0000A0E3 MOV R0,#+0 \ 00000090 520100EF SWI +338 \ 00000094 10D08DE2 ADD SP,SP,#+16 \ 00000098 1080BDE8 POP {R4,PC} ;; return \ ??CreatePrivateStatusMenu_0: \ 0000009C ........ DC32 private_list_HDR \ 000000A0 ........ DC32 lgpData \ 000000A4 ........ DC32 private_list_MNU 402 } \ In segment CODE, align 4, keep-with-next \ ??DataTable2: \ 00000000 ........ DC32 SendAnswer \ In segment CODE, align 4, keep-with-next \ ??DataTable3: \ 00000000 ........ DC32 CurrentPrivateStatus \ 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, `?`: \ 0000004C 18000000 DC16 24, 0 \ 00000050 ........ DC32 `?` \ 00000054 01000000 DC16 1, 0 \ 00000058 00000000 DC32 0 \ 0000005C 3D000000 DC16 61, 0 \ 00000060 FBC0FF7F DC32 2147467515 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 000000000000 DC32 0H, 0, 32767 \ 0000FF7F0000 \ `?`: \ 00000014 ........0000 DC32 S_ICONS + 5CH, 0, 32767, 0, 0H, 3, 1400, S_ICONS + 60H, 0, 32767 \ 0000FF7F0000 \ 000000000000 \ 000003000000 \ 78050000.... \ ....00000000 \ FF7F0000 \ 0000003C 000000000000 DC32 0, 0H, 3, 1400, S_ICONS + 64H, 0, 32767, 0, 0H, 3, 1400 \ 000003000000 \ 78050000.... \ ....00000000 \ FF7F00000000 \ 000000000000 \ 030000007805 \ 0000 \ 00000068 ........0000 DC32 S_ICONS + 68H, 0, 32767, 0, 0H, 3, 1400, S_ICONS + 6CH, 0, 32767 \ 0000FF7F0000 \ 000000000000 \ 000003000000 \ 78050000.... \ ....00000000 \ FF7F0000 \ 00000090 000000000000 DC32 0, 0H, 3, 1400 \ 000003000000 \ 78050000 \ `?`: \ 000000A0 18000000 DC16 24, 0 \ 000000A4 ........ DC32 `?` \ 000000A8 01000000 DC16 1, 0 \ 000000AC 00000000 DC32 0 \ 000000B0 3D000000 DC16 61, 0 \ 000000B4 FBC0FF7F DC32 2147467515 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 FF0F0000 DC16 4095, 0 \ 00000004 00000000 DC32 0 \ In segment DATA_C, align 1, align-sorted \ `?`: \ 00000000 00 DC8 "" \ In segment DATA_C, align 4, align-sorted \ `? 100 ? 184 ? 8 ? 1 ? 3 Others 100 2 076 bytes in segment CODE 136 bytes in segment DATA_C 292 bytes in segment DATA_I 292 bytes in segment DATA_ID 12 bytes in segment INITTAB 1 988 bytes of CODE memory (+ 100 bytes shared) 428 bytes of CONST memory 292 bytes of DATA memory Errors: none Warnings: none