############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 07/May/2008 11:09:49 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = C:\ARM\Vibralocker Eng\main.c # # Command line = "C:\ARM\Vibralocker Eng\main.c" -lC # # "C:\ARM\Vibralocker Eng\Release\List\" -o # # "C:\ARM\Vibralocker Eng\Release\Obj\" -s9 # # --no_unroll --no_clustering --cpu_mode arm --endian # # little --cpu ARM926EJ-S --stack_align 4 --interwork # # -e --fpu None -I "C:\Program Files\Embedded # # Workbench 4.0 Evaluation\ARM\INC\" # # --inline_threshold=2 # # List file = C:\ARM\Vibralocker Eng\Release\List\main.lst # # Object file = C:\ARM\Vibralocker Eng\Release\Obj\main.r79 # # # # # ############################################################################## C:\ARM\Vibralocker Eng\main.c 1 #include "c:\arm\inc\swilib.h" 2 #include "conf_loader.h" 3 #define MIN_UPTIME 1 4 #define MAX(a,b) (a)>(b)?(a):(b) 5 void StartWorkTimer(); 6 void InitSettings(); 7 \ In segment DATA_Z, align 4, align-sorted 8 GBSTMR timer; \ timer: \ 00000000 DS8 16 \ In segment DATA_Z, align 4, align-sorted 9 GBSTMR tmr_vibra; \ tmr_vibra: \ 00000000 DS8 16 10 extern const int ENA_WAV; 11 extern const int ENA_HELLO_MSG; \ In segment DATA_C, align 4, align-sorted 12 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 13 extern const unsigned int cfgUpTime; \ In segment DATA_Z, align 4, align-sorted 14 unsigned int uiUpdateTime; \ uiUpdateTime: \ 00000000 DS8 4 15 extern const char unlockfname[128]; 16 extern const char lockfname[128]; 17 extern const unsigned int MelVolume; 18 extern const unsigned int vibra_count; 19 extern const unsigned int vibra_power; \ In segment DATA_Z, align 4, align-sorted 20 unsigned int vibra_count1; \ vibra_count1: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 21 unsigned int volume; \ volume: \ 00000000 DS8 4 22 \ In segment DATA_Z, align 4, align-sorted 23 int m=0; \ m: \ 00000000 DS8 4 24 25 typedef struct 26 {CSM_RAM csm; 27 }MAIN_CSM; 28 \ In segment DATA_Z, align 4, align-sorted 29 CSM_RAM *under_idle; \ under_idle: \ 00000000 DS8 4 30 31 extern void kill_data(void *p, void (*func_p)(void *)); 32 33 #pragma inline=forced 34 35 int toupper(int c) 36 {if ((c>='a')&&(c<='z')) c+='A'-'a'; 37 return(c); 38 } 39 \ In segment CODE, align 4, keep-with-next 40 int strcmp_nocase(const char *s1,const char *s2) 41 {int i,c; 42 while(!(i=(c=toupper(*s1++))-toupper(*s2++))) if (!c) break; \ strcmp_nocase: \ ??strcmp_nocase_0: \ 00000000 0020D0E5 LDRB R2,[R0, #+0] \ 00000004 610052E3 CMP R2,#+97 \ 00000008 010000BA BLT ??strcmp_nocase_1 \ 0000000C 7B0052E3 CMP R2,#+123 \ 00000010 202042B2 SUBLT R2,R2,#+32 \ ??strcmp_nocase_1: \ 00000014 00C0D1E5 LDRB R12,[R1, #+0] \ 00000018 010080E2 ADD R0,R0,#+1 \ 0000001C 0230A0E1 MOV R3,R2 \ 00000020 61005CE3 CMP R12,#+97 \ 00000024 010000BA BLT ??strcmp_nocase_2 \ 00000028 7B005CE3 CMP R12,#+123 \ 0000002C 20C04CB2 SUBLT R12,R12,#+32 \ ??strcmp_nocase_2: \ 00000030 011081E2 ADD R1,R1,#+1 \ 00000034 0C2052E0 SUBS R2,R2,R12 \ 00000038 0100001A BNE ??strcmp_nocase_3 \ 0000003C 000053E3 CMP R3,#+0 \ 00000040 EEFFFF1A BNE ??strcmp_nocase_0 43 return(i); \ ??strcmp_nocase_3: \ 00000044 0200A0E1 MOV R0,R2 \ 00000048 1EFF2FE1 BX LR ;; return 44 } 45 \ In segment CODE, align 4, keep-with-next 46 int maincsm_onmessage(CSM_RAM* data,GBS_MSG* msg) 47 {if(msg->msg == MSG_RECONFIGURE_REQ) \ maincsm_onmessage: \ 00000000 00402DE9 PUSH {LR} \ 00000004 F200D1E1 LDRSH R0,[R1, #+2] \ 00000008 F120A0E3 MOV R2,#+241 \ 0000000C C02F82E3 ORR R2,R2,#0x300 \ 00000010 020050E1 CMP R0,R2 \ 00000014 0900001A BNE ??maincsm_onmessage_0 48 {extern const char *successed_config_filename; 49 if(strcmp_nocase(successed_config_filename,(char *)msg->data0)==0) \ 00000018 28009FE5 LDR R0,??maincsm_onmessage_1 ;; successed_config_filename \ 0000001C 081091E5 LDR R1,[R1, #+8] \ 00000020 000090E5 LDR R0,[R0, #+0] \ 00000024 ........ BL strcmp_nocase \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 0300001A BNE ??maincsm_onmessage_0 50 {ShowMSG(1,(int)"Vibralocker settings updated!"); \ 00000030 14109FE5 LDR R1,??maincsm_onmessage_1+0x4 ;; `?` \ 00000034 0100A0E3 MOV R0,#+1 \ 00000038 480100EF SWI +328 51 InitConfig(); \ 0000003C ........ _BLF InitConfig,??InitConfig??rA 52 } 53 } 54 return (1); \ ??maincsm_onmessage_0: \ 00000040 0100A0E3 MOV R0,#+1 \ 00000044 0080BDE8 POP {PC} ;; return \ ??maincsm_onmessage_1: \ 00000048 ........ DC32 successed_config_filename \ 0000004C ........ DC32 `?` 55 } 56 \ In segment CODE, align 4, keep-with-next 57 static void maincsm_oncreate(CSM_RAM *data) 58 { 59 } \ maincsm_oncreate: \ 00000000 1EFF2FE1 BX LR ;; return 60 \ In segment CODE, align 4, keep-with-next 61 static void Killer(void) 62 {extern void *ELF_BEGIN; 63 GBS_DelTimer(&timer); \ Killer: \ 00000000 ........ LDR R0,??DataTable9 ;; timer \ 00000004 00402DE9 PUSH {LR} \ 00000008 8C0100EF SWI +396 64 GBS_DelTimer(&tmr_vibra); \ 0000000C ........ LDR R0,??DataTable5 ;; tmr_vibra \ 00000010 8C0100EF SWI +396 65 kill_data(&ELF_BEGIN,(void (*)(void *))mfree_adr()); \ 00000014 158000EF SWI +32789 \ 00000018 0010A0E1 MOV R1,R0 \ 0000001C 04009FE5 LDR R0,??Killer_0 ;; ELF_BEGIN \ 00000020 0040BDE8 POP {LR} ;; Pop \ 00000024 ........ _BF kill_data,??kill_data??rA ;; tailcall \ ??Killer_0: \ 00000028 ........ DC32 ELF_BEGIN 66 } 67 \ In segment CODE, align 4, keep-with-next 68 static void maincsm_onclose(CSM_RAM *csm) 69 {SUBPROC((void *)Killer); \ maincsm_onclose: \ 00000000 08009FE5 LDR R0,??maincsm_onclose_0 ;; Killer \ 00000004 00402DE9 PUSH {LR} \ 00000008 710100EF SWI +369 70 } \ 0000000C 0080BDE8 POP {PC} ;; return \ ??maincsm_onclose_0: \ 00000010 ........ DC32 Killer 71 \ In segment DATA_Z, align 4, align-sorted 72 static unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 73 74 static const struct 75 {CSM_DESC maincsm; 76 WSHDR maincsm_name; \ In segment DATA_C, align 4, align-sorted 77 }MAINCSM = \ MAINCSM: \ 00000000 ............ DC32 maincsm_onmessage, maincsm_oncreate, maincsm_onclose, 40, 1 \ ............ \ 280000000100 \ 0000 \ 00000014 ............ DC32 minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ ....CCCCAA55 \ 55AA33330000 \ 0000 \ 00000028 8B00 DC16 139 \ 0000002A 0000 DC8 0, 0 78 { 79 { 80 maincsm_onmessage, 81 maincsm_oncreate, 82 #ifdef NEWSGOLD 83 0, 84 0, 85 0, 86 0, 87 #endif 88 maincsm_onclose, 89 sizeof(MAIN_CSM), 90 1, 91 &minus11 92 }, 93 { 94 maincsm_name_body, 95 NAMECSM_MAGIC1, 96 NAMECSM_MAGIC2, 97 0x0, 98 139 99 } 100 }; 101 102 static void UpdateCSMname(void) 103 {wsprintf((WSHDR *)(&MAINCSM.maincsm_name),"Vibralocker - (c)SimaFish"); 104 } 105 \ In segment CODE, align 4, keep-with-next 106 void Play(const char *fname) 107 { \ Play: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 C4D04DE2 SUB SP,SP,#+196 \ 00000008 0060A0E1 MOV R6,R0 108 if (!IsCalling()) \ 0000000C 6E0000EF SWI +110 \ 00000010 000050E3 CMP R0,#+0 \ 00000014 3A00001A BNE ??Play_0 109 { 110 FSTATS fstats; 111 unsigned int err; 112 if (GetFileStats(fname,&fstats,&err)!=-1) \ 00000018 0D20A0E1 MOV R2,SP \ 0000001C 9C108DE2 ADD R1,SP,#+156 \ 00000020 0600A0E1 MOV R0,R6 \ 00000024 840000EF SWI +132 \ 00000028 010070E3 CMN R0,#+1 \ 0000002C 3400000A BEQ ??Play_0 113 { 114 PLAYFILE_OPT _sfo1; 115 WSHDR* sndPath=AllocWS(128); \ 00000030 8000A0E3 MOV R0,#+128 \ 00000034 250100EF SWI +293 \ 00000038 0040A0E1 MOV R4,R0 116 WSHDR* sndFName=AllocWS(128); \ 0000003C 8000A0E3 MOV R0,#+128 \ 00000040 250100EF SWI +293 \ 00000044 0050A0E1 MOV R5,R0 117 char s[128]; 118 const char *p=strrchr(fname,'\\')+1; \ 00000048 5C10A0E3 MOV R1,#+92 \ 0000004C 0600A0E1 MOV R0,R6 \ 00000050 170100EF SWI +279 \ 00000054 017080E2 ADD R7,R0,#+1 119 str_2ws(sndFName,p,128); \ 00000058 8020A0E3 MOV R2,#+128 \ 0000005C 0710A0E1 MOV R1,R7 \ 00000060 0500A0E1 MOV R0,R5 \ 00000064 6C0100EF SWI +364 120 strncpy(s,fname,p-fname); \ 00000068 067047E0 SUB R7,R7,R6 \ 0000006C 0720A0E1 MOV R2,R7 \ 00000070 0610A0E1 MOV R1,R6 \ 00000074 1C008DE2 ADD R0,SP,#+28 \ 00000078 160100EF SWI +278 121 s[p-fname]='\0'; \ 0000007C 0060A0E3 MOV R6,#+0 \ 00000080 1C008DE2 ADD R0,SP,#+28 \ 00000084 0060C7E7 STRB R6,[R7, +R0] 122 str_2ws(sndPath,s,128); \ 00000088 8020A0E3 MOV R2,#+128 \ 0000008C 1C108DE2 ADD R1,SP,#+28 \ 00000090 0400A0E1 MOV R0,R4 \ 00000094 6C0100EF SWI +364 123 124 zeromem(&_sfo1,sizeof(PLAYFILE_OPT)); \ 00000098 1810A0E3 MOV R1,#+24 \ 0000009C 04008DE2 ADD R0,SP,#+4 \ 000000A0 1D0100EF SWI +285 125 _sfo1.repeat_num=1; 126 _sfo1.time_between_play=0; 127 _sfo1.play_first=0; 128 _sfo1.volume=volume; \ 000000A4 ........ LDR R2,??DataTable7 ;; volume \ 000000A8 0100A0E3 MOV R0,#+1 \ 000000AC B400CDE1 STRH R0,[SP, #+4] \ 000000B0 08608DE5 STR R6,[SP, #+8] \ 000000B4 0C608DE5 STR R6,[SP, #+12] \ 000000B8 002092E5 LDR R2,[R2, #+0] 129 #ifdef NEWSGOLD 130 _sfo1.unk6=1; 131 _sfo1.unk7=1; 132 _sfo1.unk9=2; 133 /*PLAY_ID=*/PlayFile(0x10, sndPath, sndFName, MMI_CEPID, MSG_PLAYFILE_REPORT, &_sfo1); 134 #else 135 #ifdef X75 136 _sfo1.unk4=0x80000000; 137 _sfo1.unk5=1; 138 /*PLAY_ID=*/PlayFile(0xC, sndPath, sndFName, 0,MMI_CEPID, MSG_PLAYFILE_REPORT, &_sfo1); 139 #else 140 _sfo1.unk5=1; 141 /*PLAY_ID=*/PlayFile(0xC, sndPath, sndFName, MMI_CEPID, MSG_PLAYFILE_REPORT, &_sfo1); \ 000000BC 0930A0E3 MOV R3,#+9 \ 000000C0 10208DE5 STR R2,[SP, #+16] \ 000000C4 14008DE5 STR R0,[SP, #+20] \ 000000C8 04008DE2 ADD R0,SP,#+4 \ 000000CC 01002DE9 PUSH {R0} \ 000000D0 423C83E3 ORR R3,R3,#0x4200 \ 000000D4 0520A0E1 MOV R2,R5 \ 000000D8 0410A0E1 MOV R1,R4 \ 000000DC 6700A0E3 MOV R0,#+103 \ 000000E0 400F80E3 ORR R0,R0,#0x100 \ 000000E4 01002DE9 PUSH {R0} \ 000000E8 0C00A0E3 MOV R0,#+12 \ 000000EC 4A0000EF SWI +74 142 #endif 143 #endif 144 FreeWS(sndPath); \ 000000F0 0400A0E1 MOV R0,R4 \ 000000F4 290100EF SWI +297 145 FreeWS(sndFName); \ 000000F8 0500A0E1 MOV R0,R5 \ 000000FC 290100EF SWI +297 \ 00000100 08D08DE2 ADD SP,SP,#+8 146 } 147 } 148 } \ ??Play_0: \ 00000104 C4D08DE2 ADD SP,SP,#+196 ;; stack cleaning \ 00000108 F080BDE8 POP {R4-R7,PC} ;; return 149 \ In segment CODE, align 4, keep-with-next 150 void start_vibra(void) 151 {void stop_vibra(void); \ start_vibra: \ 00000000 00402DE9 PUSH {LR} 152 if(!IsCalling()) \ 00000004 6E0000EF SWI +110 \ 00000008 000050E3 CMP R0,#+0 \ 0000000C 0080BD18 POPNE {PC} 153 {SetVibration(vibra_power); \ 00000010 18009FE5 LDR R0,??start_vibra_0 ;; vibra_power \ 00000014 000090E5 LDR R0,[R0, #+0] \ 00000018 7C0000EF SWI +124 154 GBS_StartTimerProc(&tmr_vibra,216>>1,stop_vibra); \ 0000001C 10209FE5 LDR R2,??start_vibra_0+0x4 ;; stop_vibra \ 00000020 ........ LDR R0,??DataTable5 ;; tmr_vibra \ 00000024 6C10A0E3 MOV R1,#+108 \ 00000028 4D0000EF SWI +77 155 } 156 } \ 0000002C 0080BDE8 POP {PC} ;; return \ ??start_vibra_0: \ 00000030 ........ DC32 vibra_power \ 00000034 ........ DC32 stop_vibra 157 \ In segment CODE, align 4, keep-with-next 158 void stop_vibra(void) 159 {SetVibration(0); \ stop_vibra: \ 00000000 00402DE9 PUSH {LR} \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 7C0000EF SWI +124 160 if (--vibra_count1) GBS_StartTimerProc(&tmr_vibra,216>>1,start_vibra); \ 0000000C ........ LDR R0,??DataTable6 ;; vibra_count1 \ 00000010 001090E5 LDR R1,[R0, #+0] \ 00000014 011051E2 SUBS R1,R1,#+1 \ 00000018 001080E5 STR R1,[R0, #+0] \ 0000001C 0080BD08 POPEQ {PC} \ 00000020 0C209FE5 LDR R2,??stop_vibra_0 ;; start_vibra \ 00000024 ........ LDR R0,??DataTable5 ;; tmr_vibra \ 00000028 6C10A0E3 MOV R1,#+108 \ 0000002C 4D0000EF SWI +77 161 } \ 00000030 0080BDE8 POP {PC} ;; return \ ??stop_vibra_0: \ 00000034 ........ DC32 start_vibra 162 \ In segment CODE, align 4, keep-with-next 163 void StartWorkTimer() 164 {if((!IsUnlocked())&&(m==0)) \ StartWorkTimer: \ 00000000 BC009FE5 LDR R0,??StartWorkTimer_0 ;; vibra_count \ 00000004 F0402DE9 PUSH {R4-R7,LR} \ 00000008 004090E5 LDR R4,[R0, #+0] \ 0000000C ........ LDR R5,??DataTable6 ;; vibra_count1 \ 00000010 B0709FE5 LDR R7,??StartWorkTimer_0+0x4 ;; m \ 00000014 ........ LDR R6,??DataTable7 ;; volume \ 00000018 430000EF SWI +67 \ 0000001C 000050E3 CMP R0,#+0 \ 00000020 00009705 LDREQ R0,[R7, #+0] \ 00000024 00005003 CMPEQ R0,#+0 \ 00000028 0C00001A BNE ??StartWorkTimer_1 165 {start_vibra(); \ 0000002C ........ BL start_vibra 166 volume=MelVolume; \ 00000030 94009FE5 LDR R0,??StartWorkTimer_0+0x8 ;; MelVolume \ 00000034 000090E5 LDR R0,[R0, #+0] \ 00000038 000086E5 STR R0,[R6, #+0] 167 if(ENA_WAV) Play(lockfname); \ 0000003C 8C009FE5 LDR R0,??StartWorkTimer_0+0xC ;; ENA_WAV \ 00000040 000090E5 LDR R0,[R0, #+0] \ 00000044 000050E3 CMP R0,#+0 \ 00000048 0100000A BEQ ??StartWorkTimer_2 \ 0000004C 80009FE5 LDR R0,??StartWorkTimer_0+0x10 ;; lockfname \ 00000050 ........ BL Play 168 vibra_count1=vibra_count; \ ??StartWorkTimer_2: \ 00000054 004085E5 STR R4,[R5, #+0] 169 m=1; \ 00000058 0100A0E3 MOV R0,#+1 \ 0000005C 000087E5 STR R0,[R7, #+0] 170 } 171 if((IsUnlocked())&&(m==1)) \ ??StartWorkTimer_1: \ 00000060 430000EF SWI +67 \ 00000064 000050E3 CMP R0,#+0 \ 00000068 0F00000A BEQ ??StartWorkTimer_3 \ 0000006C 000097E5 LDR R0,[R7, #+0] \ 00000070 010050E3 CMP R0,#+1 \ 00000074 0C00001A BNE ??StartWorkTimer_3 172 {start_vibra(); \ 00000078 ........ BL start_vibra 173 volume=MelVolume; \ 0000007C 48009FE5 LDR R0,??StartWorkTimer_0+0x8 ;; MelVolume \ 00000080 000090E5 LDR R0,[R0, #+0] \ 00000084 000086E5 STR R0,[R6, #+0] 174 if(ENA_WAV) Play(unlockfname); \ 00000088 40009FE5 LDR R0,??StartWorkTimer_0+0xC ;; ENA_WAV \ 0000008C 000090E5 LDR R0,[R0, #+0] \ 00000090 000050E3 CMP R0,#+0 \ 00000094 0100000A BEQ ??StartWorkTimer_4 \ 00000098 38009FE5 LDR R0,??StartWorkTimer_0+0x14 ;; unlockfname \ 0000009C ........ BL Play 175 vibra_count1=vibra_count; \ ??StartWorkTimer_4: \ 000000A0 004085E5 STR R4,[R5, #+0] 176 m=0; \ 000000A4 0000A0E3 MOV R0,#+0 \ 000000A8 000087E5 STR R0,[R7, #+0] 177 } 178 GBS_StartTimerProc(&timer, uiUpdateTime, StartWorkTimer); \ ??StartWorkTimer_3: \ 000000AC ........ LDR R0,??DataTable10 ;; uiUpdateTime \ 000000B0 24209FE5 LDR R2,??StartWorkTimer_0+0x18 ;; StartWorkTimer \ 000000B4 001090E5 LDR R1,[R0, #+0] \ 000000B8 ........ LDR R0,??DataTable9 ;; timer \ 000000BC 4D0000EF SWI +77 179 } \ 000000C0 F080BDE8 POP {R4-R7,PC} ;; return \ ??StartWorkTimer_0: \ 000000C4 ........ DC32 vibra_count \ 000000C8 ........ DC32 m \ 000000CC ........ DC32 MelVolume \ 000000D0 ........ DC32 ENA_WAV \ 000000D4 ........ DC32 lockfname \ 000000D8 ........ DC32 unlockfname \ 000000DC ........ DC32 StartWorkTimer 180 \ In segment CODE, align 4, keep-with-next 181 void InitSettings() 182 {InitConfig(); \ InitSettings: \ 00000000 00402DE9 PUSH {LR} \ 00000004 ........ _BLF InitConfig,??InitConfig??rA 183 if(ENA_HELLO_MSG) ShowMSG(1,(int)"Vibralocker installed! (c)SimaFish"); \ 00000008 48009FE5 LDR R0,??InitSettings_0 ;; ENA_HELLO_MSG \ 0000000C 000090E5 LDR R0,[R0, #+0] \ 00000010 000050E3 CMP R0,#+0 \ 00000014 0200000A BEQ ??InitSettings_1 \ 00000018 3C109FE5 LDR R1,??InitSettings_0+0x4 ;; `?` \ 0000001C 0100A0E3 MOV R0,#+1 \ 00000020 480100EF SWI +328 184 uiUpdateTime = MAX(((216*cfgUpTime)/10),MIN_UPTIME); \ ??InitSettings_1: \ 00000024 34009FE5 LDR R0,??InitSettings_0+0x8 ;; cfgUpTime \ 00000028 D810A0E3 MOV R1,#+216 \ 0000002C 000090E5 LDR R0,[R0, #+0] \ 00000030 910002E0 MUL R2,R1,R0 \ 00000034 28109FE5 LDR R1,??InitSettings_0+0xC ;; 0xffffffffcccccccd \ 00000038 913280E0 UMULL R3,R0,R1,R2 \ 0000003C ........ LDR R1,??DataTable10 ;; uiUpdateTime \ 00000040 A001A0E1 LSR R0,R0,#+3 \ 00000044 020050E3 CMP R0,#+2 \ 00000048 0100A033 MOVCC R0,#+1 \ 0000004C 000081E5 STR R0,[R1, #+0] 185 StartWorkTimer(); \ 00000050 0040BDE8 POP {LR} ;; Pop \ 00000054 ........ B StartWorkTimer ;; tailcall \ ??InitSettings_0: \ 00000058 ........ DC32 ENA_HELLO_MSG \ 0000005C ........ DC32 `?` \ 00000060 ........ DC32 cfgUpTime \ 00000064 CDCCCCCC DC32 0xffffffffcccccccd 186 } 187 \ In segment CODE, align 4, keep-with-next 188 void main() 189 { \ main: \ 00000000 70402DE9 PUSH {R4-R6,LR} 190 InitSettings(); 191 CSM_RAM *save_cmpc; 192 char dummy[sizeof(MAIN_CSM)]; 193 UpdateCSMname(); \ 00000004 64409FE5 LDR R4,??main_0 ;; MAINCSM \ 00000008 28D04DE2 SUB SP,SP,#+40 \ 0000000C ........ BL InitSettings \ 00000010 5C109FE5 LDR R1,??main_0+0x4 ;; `?` \ 00000014 180084E2 ADD R0,R4,#+24 \ 00000018 240100EF SWI +292 194 LockSched(); \ 0000001C 460100EF SWI +326 195 save_cmpc=CSM_root()->csm_q->current_msg_processing_csm; \ 00000020 068100EF SWI +33030 \ 00000024 080090E5 LDR R0,[R0, #+8] \ 00000028 045090E5 LDR R5,[R0, #+4] 196 CSM_root()->csm_q->current_msg_processing_csm=CSM_root()->csm_q->csm.first; \ 0000002C 068100EF SWI +33030 \ 00000030 0060A0E1 MOV R6,R0 \ 00000034 068100EF SWI +33030 \ 00000038 080090E5 LDR R0,[R0, #+8] \ 0000003C 081096E5 LDR R1,[R6, #+8] \ 00000040 080090E5 LDR R0,[R0, #+8] 197 CreateCSM(&MAINCSM.maincsm,dummy,0); \ 00000044 0020A0E3 MOV R2,#+0 \ 00000048 040081E5 STR R0,[R1, #+4] \ 0000004C 0D10A0E1 MOV R1,SP \ 00000050 0400A0E1 MOV R0,R4 \ 00000054 070100EF SWI +263 198 CSM_root()->csm_q->current_msg_processing_csm=save_cmpc; \ 00000058 068100EF SWI +33030 \ 0000005C 080090E5 LDR R0,[R0, #+8] \ 00000060 045080E5 STR R5,[R0, #+4] 199 UnlockSched(); \ 00000064 470100EF SWI +327 200 } \ 00000068 28D08DE2 ADD SP,SP,#+40 \ 0000006C 7080BDE8 POP {R4-R6,PC} ;; return \ ??main_0: \ 00000070 ........ DC32 MAINCSM \ 00000074 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable5: \ 00000000 ........ DC32 tmr_vibra \ In segment CODE, align 4, keep-with-next \ ??DataTable6: \ 00000000 ........ DC32 vibra_count1 \ In segment CODE, align 4, keep-with-next \ ??DataTable7: \ 00000000 ........ DC32 volume \ In segment CODE, align 4, keep-with-next \ ??DataTable9: \ 00000000 ........ DC32 timer \ In segment CODE, align 4, keep-with-next \ ??DataTable10: \ 00000000 ........ DC32 uiUpdateTime \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 56696272616C DC8 "Vibralocker settings updated!" \ 6F636B657220 \ 73657474696E \ 677320757064 \ 617465642100 \ 0000001E 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 56696272616C DC8 "Vibralocker - (c)SimaFish" \ 6F636B657220 \ 2D2028632953 \ 696D61466973 \ 6800 \ 0000001A 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 56696272616C DC8 "Vibralocker installed! (c)SimaFish" \ 6F636B657220 \ 696E7374616C \ 6C6564212020 \ 202020202020 \ 202020202020 \ 202028632953 \ 696D61466973 \ 6800 \ 00000032 0000 DC8 0, 0 Maximum stack usage in bytes: Function CSTACK -------- ------ InitSettings 4 Killer 4 Play 224 StartWorkTimer 20 main 56 maincsm_onclose 4 maincsm_oncreate 0 maincsm_onmessage 4 start_vibra 4 stop_vibra 4 strcmp_nocase 0 Segment part sizes: Function/Label Bytes -------------- ----- timer 16 tmr_vibra 16 minus11 4 uiUpdateTime 4 vibra_count1 4 volume 4 m 4 under_idle 4 ??strcmp_nocase_0 76 maincsm_onmessage 80 maincsm_oncreate 4 Killer 44 maincsm_onclose 20 maincsm_name_body 280 MAINCSM 44 Play 268 start_vibra 56 stop_vibra 56 StartWorkTimer 224 InitSettings 104 main 120 ??DataTable5 4 ??DataTable6 4 ??DataTable7 4 ??DataTable9 4 ??DataTable10 4 ? 32 ? 28 ? 52 Others 80 1 140 bytes in segment CODE 160 bytes in segment DATA_C 332 bytes in segment DATA_Z 12 bytes in segment INITTAB 1 072 bytes of CODE memory (+ 80 bytes shared) 160 bytes of CONST memory 332 bytes of DATA memory Errors: none Warnings: none