root/platform/ixus300_sd4000/sub/100d/capt_seq.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. capt_seq_task
  2. sub_FF970A8C_my
  3. sub_FF87D754_my
  4. exp_drv_task

   1 #include "lolevel.h"
   2 #include "platform.h"
   3 #include "core.h"
   4 
   5 static long *nrflag = (long*)0x6DB0;    // ROM:FF970AA0 at taskcreate_ShutterSoundTask(), above String "ShutterSoundTask"
   6 #define PAUSE_FOR_FILE_COUNTER 250          // Enable delay in capt_seq_hook_raw_here to ensure file counter is updated
   7 
   8 #include "../../../generic/capt_seq.c"
   9 
  10 
  11 
  12 // ROM:FF87D2D8 task_CaptSeqTask()
  13 void __attribute__((naked,noinline)) capt_seq_task() {
  14     asm volatile (
  15             "STMFD   SP!, {R3-R9,LR}\n"
  16             "LDR     R6, =0x2C7C\n"
  17             "LDR     R4, =0x396C4\n"
  18             "MOV     R9, #1\n"
  19             "MOV     R7, #0\n"
  20         "loc_FF87D2EC:\n"
  21             "LDR     R0, [R6,#4]\n"
  22             "MOV     R2, #0\n"
  23             "MOV     R1, SP\n"
  24             "BL      sub_FF83994C\n"             // LOCATION: KerQueue.c:0
  25             "TST     R0, #1\n"
  26             "BEQ     loc_FF87D318\n"
  27             "LDR     R1, =0x5BE\n"
  28             "LDR     R0, =0xFF87CE68\n"          // "SsShootTask.c"
  29             "BL      sub_FF81EB14\n"             // DebugAssert()
  30             "BL      sub_FF81EACC\n"             // eventproc_export_ExitTask()
  31             "LDMFD   SP!, {R3-R9,PC}\n"
  32         "loc_FF87D318:\n"
  33             "LDR     R0, [SP]\n"
  34             "LDR     R1, [R0]\n"
  35             "CMP     R1, #0x1D\n"
  36             "ADDLS   PC, PC, R1,LSL#2\n"
  37             "B       loc_FF87D62C\n"
  38         //"loc_FF87D32C:\n"
  39             "B       loc_FF87D3A4\n"
  40         //"loc_FF87D330:\n"
  41             "B       loc_FF87D408\n"
  42         //"loc_FF87D334:\n"
  43             "B       loc_FF87D4BC\n"
  44         //"loc_FF87D338:\n"
  45             "B       loc_FF87D4D0\n"
  46         //"loc_FF87D33C:\n"
  47             "B       loc_FF87D4C8\n"
  48         //"loc_FF87D340:\n"
  49             "B       loc_FF87D4D8\n"
  50         //"loc_FF87D344:\n"
  51             "B       loc_FF87D4E0\n"
  52         //"loc_FF87D348:\n"
  53             "B       loc_FF87D4E8\n"
  54         //"loc_FF87D34C:\n"
  55             "B       loc_FF87D540\n"
  56         //"loc_FF87D350:\n"
  57             "B       loc_FF87D568\n"
  58         //"loc_FF87D354:\n"
  59             "B       loc_FF87D54C\n"
  60         //"loc_FF87D358:\n"
  61             "B       loc_FF87D558\n"
  62         //"loc_FF87D35C:\n"
  63             "B       loc_FF87D560\n"
  64         //"loc_FF87D360:\n"
  65             "B       loc_FF87D570\n"
  66         //"loc_FF87D364:\n"
  67             "B       loc_FF87D578\n"
  68         //"loc_FF87D368:\n"
  69             "B       loc_FF87D580\n"
  70         //"loc_FF87D36C:\n"
  71             "B       loc_FF87D588\n"
  72         //"loc_FF87D370:\n"
  73             "B       loc_FF87D590\n"
  74         //"loc_FF87D374:\n"
  75             "B       loc_FF87D59C\n"
  76         //"loc_FF87D378:\n"
  77             "B       loc_FF87D5A4\n"
  78         //"loc_FF87D37C:\n"
  79             "B       loc_FF87D5AC\n"
  80         //"loc_FF87D380:\n"
  81             "B       loc_FF87D5B4\n"
  82         //"loc_FF87D384:\n"
  83             "B       loc_FF87D5BC\n"
  84         //"loc_FF87D388:\n"
  85             "B       loc_FF87D5C8\n"
  86         //"loc_FF87D38C:\n"
  87             "B       loc_FF87D5D0\n"
  88         //"loc_FF87D390:\n"
  89             "B       loc_FF87D5D8\n"
  90         //"loc_FF87D394:\n"
  91             "B       loc_FF87D5E0\n"
  92         //"loc_FF87D398:\n"
  93             "B       loc_FF87D5E8\n"
  94         //"loc_FF87D39C:\n"
  95             "B       loc_FF87D5F4\n"
  96         //"loc_FF87D3A0:\n"
  97             "B       loc_FF87D638\n"
  98         "loc_FF87D3A4:\n"                        // jumptable FF87D324 entry 0
  99             "BL      sub_FF87DC9C\n"             // SsPrepareSeq.c
 100             "BL      shooting_expo_param_override\n"  // +
 101             "BL      sub_FF87AD78\n"
 102 
 103             // this code can be added to avoid some incorrect behavior if overrides are used.
 104             // but it can cause some unexpected side effects. In this case, remove this code!
 105             //"MOV     R0, #0\n"
 106             //"STR     R0, [R4,#0x24]\n"  // fixes overrides behavior at short shutter press
 107 
 108             "LDR     R0, [R4,#0x24]\n"
 109             "CMP     R0, #0\n"
 110             "BEQ     loc_FF87D638\n"
 111             "BL      sub_FF87CB48\n"
 112             "MOV     R5, R0\n"
 113             "LDR     R0, [R4,#0x24]\n"
 114             "CMP     R0, #0\n"
 115             "BEQ     loc_FF87D3EC\n"
 116             "MOV     R0, #0xC\n"
 117             "BL      sub_FF882264\n"
 118             "TST     R0, #1\n"
 119             "STRNE   R9, [R6,#0x10]\n"
 120             "LDRNE   R0, [R5,#8]\n"
 121             "ORRNE   R0, R0, #0x40000000\n"
 122             "STRNE   R0, [R5,#8]\n"
 123             "BNE     loc_FF87D638\n"
 124         "loc_FF87D3EC:\n"
 125             "MOV     R0, R5\n"
 126             "BL      sub_FF87CDEC\n"
 127             "MOV     R0, R5\n"
 128 
 129             //"BL      sub_FF970A8C\n"           // taskcreate_ShutterSoundTask()
 130             "BL      sub_FF970A8C_my\n"          // +
 131             "BL      capt_seq_hook_raw_here\n"   // +
 132 
 133             "TST     R0, #1\n"
 134             "STRNE   R9, [R6,#0x10]\n"
 135             "B       loc_FF87D638\n"
 136         "loc_FF87D408:\n"                        // jumptable FF87D324 entry 1
 137             "LDR     R1, [R4,#0x24]\n"
 138             "CMP     R1, #0\n"
 139             "BNE     loc_FF87D4AC\n"
 140             "LDR     R1, [R4,#0xB0]\n"
 141             "CMP     R1, #1\n"
 142             "BNE     loc_FF87D488\n"
 143             "LDRH    R1, [R4]\n"
 144             "LDR     R12, =0x820C\n"
 145             "CMP     R1, R12\n"
 146             "LDRNEH  R1, [R4,#0x92]\n"
 147             "CMPNE   R1, #3\n"
 148             "LDRNE   R0, [R0,#0xC]\n"
 149             "LDRNE   R0, [R0,#0xC]\n"
 150             "CMPNE   R0, #1\n"
 151             "BLS     loc_FF87D458\n"
 152             "BL      sub_FF832E04\n"             // LOCATION: Battery.c:0
 153             "TST     R0, #1\n"
 154             "BEQ     loc_FF87D4AC\n"
 155             "BL      sub_FF8822CC\n"
 156             "B       loc_FF87D498\n"
 157         "loc_FF87D458:\n"
 158             "MOV     R0, #0xC\n"
 159             "BL      sub_FF882264\n"
 160             "TST     R0, #1\n"
 161             "BEQ     loc_FF87D4AC\n"
 162             "LDR     R0, [SP]\n"
 163             "MOV     R1, #1\n"
 164             "LDR     R2, [R0,#0xC]\n"
 165             "MOV     R0, #1\n"
 166             "BL      sub_FF87B788\n"             // LOCATION: SsShootCtrl.c:0
 167             "BL      sub_FF971700\n"
 168             "BL      sub_FF87B434\n"
 169             "B       loc_FF87D638\n"
 170         "loc_FF87D488:\n"
 171             "MOV     R0, #0xC\n"
 172             "BL      sub_FF882264\n"
 173             "TST     R0, #1\n"
 174             "BEQ     loc_FF87D4AC\n"
 175         "loc_FF87D498:\n"
 176             "LDR     R0, [SP]\n"
 177             "MOV     R1, #1\n"
 178             "LDR     R2, [R0,#0xC]\n"
 179             "MOV     R0, #1\n"
 180             "B       loc_FF87D538\n"
 181         "loc_FF87D4AC:\n"
 182             "LDR     R0, [SP]\n"
 183 
 184             //"BL      sub_FF87D754\n"
 185             "BL      sub_FF87D754_my\n"          // +
 186 
 187         "loc_FF87D4B4:\n"
 188             "STR     R7, [R4,#0x24]\n"
 189             "B       loc_FF87D638\n"
 190         "loc_FF87D4BC:\n"                        // jumptable FF87D324 entry 2
 191             "MOV     R0, #1\n"
 192             "BL      sub_FF87DF40\n"             // LOCATION: SsPrepareSeq.c:0
 193             "B       loc_FF87D638\n"
 194         "loc_FF87D4C8:\n"                        // jumptable FF87D324 entry 4
 195             "BL      sub_FF87D924\n"
 196             "B       loc_FF87D4B4\n"
 197         "loc_FF87D4D0:\n"                        // jumptable FF87D324 entry 3
 198             "BL      sub_FF87DC7C\n"
 199             "B       loc_FF87D4B4\n"
 200         "loc_FF87D4D8:\n"                        // jumptable FF87D324 entry 5
 201             "BL      sub_FF87DC84\n"
 202             "B       loc_FF87D638\n"
 203         "loc_FF87D4E0:\n"                        // jumptable FF87D324 entry 6
 204             "BL      sub_FF87DE50\n"             // SsPrepareSeq.c 0
 205             "B       loc_FF87D544\n"
 206         "loc_FF87D4E8:\n"                        // jumptable FF87D324 entry 7
 207             "LDR     R5, [R0,#0xC]\n"
 208             "BL      sub_FF87DC8C\n"
 209             "MOV     R0, R5\n"
 210             "BL      sub_FF96F8A4\n"             // LOCATION: SsPrePreSeq.c:1024
 211             "TST     R0, #1\n"
 212             "MOV     R8, R0\n"
 213             "BNE     loc_FF87D528\n"
 214             "BL      sub_FF88F7F0\n"             // LOCATION: PropertyCase.c:0
 215             "STR     R0, [R5,#0x18]\n"
 216             "MOV     R0, R5\n"
 217             "BL      sub_FF9709A4\n"             // LOCATION: SsCaptureSeq.c:1
 218             "MOV     R0, R5\n"
 219             "BL      sub_FF970D48\n"             // LOCATION: SsCaptureSeq.c:0
 220             "MOV     R8, R0\n"
 221             "LDR     R0, [R5,#0x18]\n"
 222             "BL      sub_FF88FA28\n"             // LOCATION: PropertyCase.c:0
 223         "loc_FF87D528:\n"
 224             "BL      sub_FF87DC7C\n"
 225             "MOV     R2, R5\n"
 226             "MOV     R1, #9\n"
 227             "MOV     R0, R8\n"
 228         "loc_FF87D538:\n"
 229             "BL      sub_FF87B788\n"             // SsShootCtrl.c 0
 230             "B       loc_FF87D638\n"
 231         "loc_FF87D540:\n"                        // jumptable FF87D324 entry 8
 232             "BL      sub_FF87DEB8\n"             // SsPrepareSeq.c 0
 233         "loc_FF87D544:\n"
 234             "BL      sub_FF87AD78\n"
 235             "B       loc_FF87D638\n"
 236         "loc_FF87D54C:\n"                        // jumptable FF87D324 entry 10
 237             "LDR     R0, [R4,#0x54]\n"
 238             "BL      sub_FF87E3B0\n"             // SsMovieRec.c 186
 239             "B       loc_FF87D638\n"
 240         "loc_FF87D558:\n"                        // jumptable FF87D324 entry 11
 241             "BL      sub_FF87E688\n"             // SsMovieRec.c 2
 242             "B       loc_FF87D638\n"
 243         "loc_FF87D560:\n"                        // jumptable FF87D324 entry 12
 244             "BL      sub_FF87E720\n"             // SsMovieRec.c 632
 245             "B       loc_FF87D638\n"
 246         "loc_FF87D568:\n"                        // jumptable FF87D324 entry 9
 247             "BL      sub_FF87DC7C\n"
 248             "B       loc_FF87D638\n"
 249         "loc_FF87D570:\n"                        // jumptable FF87D324 entry 13
 250             "BL      sub_FF96FAD0\n"
 251             "B       loc_FF87D638\n"
 252         "loc_FF87D578:\n"                        // jumptable FF87D324 entry 14
 253             "BL      sub_FF96FCE4\n"
 254             "B       loc_FF87D638\n"
 255         "loc_FF87D580:\n"                        // jumptable FF87D324 entry 15
 256             "BL      sub_FF96FD7C\n"             // SsExpCompSeq.c 115
 257             "B       loc_FF87D638\n"
 258         "loc_FF87D588:\n"                        // jumptable FF87D324 entry 16
 259             "BL      sub_FF96FE4C\n"
 260             "B       loc_FF87D638\n"
 261         "loc_FF87D590:\n"                        // jumptable FF87D324 entry 17
 262             "MOV     R0, #0\n"
 263             "BL      sub_FF9700B4\n"
 264             "B       loc_FF87D638\n"
 265         "loc_FF87D59C:\n"                        // jumptable FF87D324 entry 18
 266             "BL      sub_FF970214\n"
 267             "B       loc_FF87D638\n"
 268         "loc_FF87D5A4:\n"                        // jumptable FF87D324 entry 19
 269             "BL      sub_FF9702B0\n"             // SsMFSeq.c 110
 270             "B       loc_FF87D638\n"
 271         "loc_FF87D5AC:\n"                        // jumptable FF87D324 entry 20
 272             "BL      sub_FF970390\n"             // SsMFSeq.c 188
 273             "B       loc_FF87D638\n"
 274         "loc_FF87D5B4:\n"                        // jumptable FF87D324 entry 21
 275             "BL      sub_FF87E0C8\n"
 276             "B       loc_FF87D638\n"
 277         "loc_FF87D5BC:\n"                        // jumptable FF87D324 entry 22
 278             "BL      sub_FF87E170\n"
 279             "BL      sub_FF83794C\n"
 280             "B       loc_FF87D638\n"
 281         "loc_FF87D5C8:\n"                        // jumptable FF87D324 entry 23
 282             "BL      sub_FF96FF18\n"
 283             "B       loc_FF87D638\n"
 284         "loc_FF87D5D0:\n"                        // jumptable FF87D324 entry 24
 285             "BL      sub_FF96FF84\n"             // SsChgExpSeq.c 440
 286             "B       loc_FF87D638\n"
 287         "loc_FF87D5D8:\n"                        // jumptable FF87D324 entry 25
 288             "BL      sub_FF880858\n"
 289             "B       loc_FF87D638\n"
 290         "loc_FF87D5E0:\n"                        // jumptable FF87D324 entry 26
 291             "BL      sub_FF8808E0\n"
 292             "B       loc_FF87D638\n"
 293         "loc_FF87D5E8:\n"                        // jumptable FF87D324 entry 27
 294             "BL      sub_FF88093C\n"
 295             "BL      sub_FF8808FC\n"
 296             "B       loc_FF87D638\n"
 297         "loc_FF87D5F4:\n"                        // jumptable FF87D324 entry 28
 298             "MOV     R0, #1\n"
 299             "BL      sub_FF971874\n"
 300             "MOV     R0, #1\n"
 301             "BL      sub_FF9719A8\n"
 302             "LDRH    R0, [R4,#0x94]\n"
 303             "CMP     R0, #4\n"
 304             "LDRNEH  R0, [R4]\n"
 305             "SUBNE   R12, R0, #0x8200\n"
 306             "SUBNES  R12, R12, #0x2A\n"
 307             "BNE     loc_FF87D638\n"
 308             "BL      sub_FF8808E0\n"
 309             "BL      sub_FF880E50\n"
 310             "BL      sub_FF880D60\n"             // LOCATION: SsLiveFunc.c:0
 311             "B       loc_FF87D638\n"
 312         "loc_FF87D62C:\n"                        // jumptable FF87D324 default entry
 313             "LDR     R1, =0x72C\n"
 314             //"ADR     R0, 0xFF87CE68\n"         // "SsShootTask.c"
 315             "LDR     R0, =0xFF87CE68\n"          // compiler does not like ADR
 316             "BL      sub_FF81EB14\n"             // DebugAssert()
 317         "loc_FF87D638:\n"                    // jumptable FF87D324 entry 29
 318             "LDR     R0, [SP]\n"
 319             "LDR     R1, [R0,#4]\n"
 320             "LDR     R0, [R6]\n"
 321             "BL      sub_FF8873E4\n"
 322             "LDR     R5, [SP]\n"
 323             "LDR     R0, [R5,#8]\n"
 324             "CMP     R0, #0\n"
 325             "LDREQ   R1, =0x132\n"
 326             "LDREQ   R0, =0xFF87CE68\n"          // "SsShootTask.c"
 327             "BLEQ    sub_FF81EB14\n"             // DebugAssert()
 328             "STR     R7, [R5,#8]\n"
 329             "B       loc_FF87D2EC\n"
 330     );
 331 }
 332 
 333 // ROM:FF970A8C taskcreate_ShutterSoundTask(), LOCATION: SsCaptureSeq.c:0
 334 void __attribute__((naked,noinline)) sub_FF970A8C_my() {
 335     asm volatile (
 336             "STMFD   SP!, {R0-R8,LR}\n"
 337             "MOV     R4, R0\n"
 338             "BL      sub_FF971B78\n"             // LOCATION: SsShootEvent.c:76
 339             "MVN     R1, #0\n"                   // original ?!?
 340             //"MOV     R1, #0xFFFFFFFF\n"
 341             //"LDR    R1,=0xFFFFFFFF\n"          // like G11
 342             "BL      sub_FF887418\n"
 343             "LDR     R5, =0x6DB0\n"
 344             "LDR     R0, [R5,#0xC]\n"
 345             "CMP     R0, #0\n"
 346             "BNE     loc_FF970ADC\n"
 347             "MOV     R1, #1\n"
 348             "MOV     R0, #0\n"
 349             "BL      sub_FF83A194\n"             // LOCATION: KernelMisc.c:31
 350             "STR     R0, [R5,#0xC]\n"
 351             "MOV     R3, #0\n"
 352             "STR     R3, [SP]\n"
 353             "LDR     R3, =0xFF970488\n"          // task_ShutterSoundTask(), LOCATION: SsCaptureSeq.c:187
 354             //"ADR     R0, 0xFF970D18\n"         // "ShutterSoundTask"
 355             "LDR     R0, =0xFF970D18\n"          // compiler does not like ADR
 356             "MOV     R2, #0x400\n"
 357             "MOV     R1, #0x17\n"
 358             "BL      sub_FF83A160\n"             // KernelCreateTask(), LOCATION: KernelMisc.c:19
 359         "loc_FF970ADC:\n"
 360             "MOV     R2, #4\n"
 361             "ADD     R1, SP, #8\n"
 362             "MOV     R0, #0x8A\n"
 363             "BL      sub_FF88F660\n"             // PT_GetPropertyCaseString(), LOCATION: PropertyCase.c:0
 364             "TST     R0, #1\n"
 365             "LDRNE   R1, =0x3EA\n"
 366             "LDRNE   R0, =0xFF9706D4\n"          // "SsCaptureSeq.c"
 367             "BLNE    sub_FF81EB14\n"             // DebugAssert()
 368             "LDR     R6, =0x3978C\n"
 369             "LDR     R7, =0x396C4\n"
 370             "LDR     R3, [R6]\n"
 371             "LDRSH   R2, [R6,#0xC]\n"
 372             "LDRSH   R1, [R6,#0xE]\n"
 373             "LDR     R0, [R7,#0x88]\n"
 374             "BL      sub_FF936770\n"
 375             "BL      sub_FF86522C\n"             // GetCCDTemperature(), LOCATION: Thermometer.c:0
 376             "LDR     R3, =0x6DB8\n"
 377             "STRH    R0, [R4,#0xA4]\n"
 378             "SUB     R2, R3, #4\n"
 379             "STRD    R2, [SP]\n"
 380             "MOV     R1, R0\n"
 381             "LDRH    R0, [R7,#0x5C]\n"
 382             "LDRSH   R2, [R6,#0xC]\n"
 383             "SUB     R3, R3, #8\n"
 384             "BL      sub_FF973794\n"
 385 
 386             "BL      wait_until_remote_button_is_released\n"   // +
 387             "BL      capt_seq_hook_set_nr\n"     // +
 388 
 389             "B       sub_FF970B40\n"             // + continue in canon firmware
 390 
 391         /*
 392             "LDR     R0, [R4,#0x1C]\n"
 393             "CMP     R0, #0\n"
 394             "MOVNE   R0, #1\n"
 395             "STRNE   R0, [R5]\n"
 396             "LDR     R0, [R5]\n"
 397             "MOV     R1, R0,LSL#16\n"
 398             "LDRH    R0, [R7,#0x5C]\n"
 399             "MOV     R1, R1,LSR#16\n"
 400             "BL      sub_FF97390C\n"
 401             "STR     R0, [R4,#0xAC]\n"
 402             "LDR     R0, [R5,#4]\n"
 403             "BL      sub_FF93A77C\n"             // LOCATION: DefMarkMan.c:0
 404             "LDR     R0, [R5,#8]\n"
 405             "BL      sub_FF8B8C50\n"
 406             "MOV     R0, #1\n"
 407             "BL      sub_FF8B8C68\n"             // nullsub_234()
 408             "LDR     R0, =0xFF970518\n"          // LOCATION: SsCaptureSeq.c:252
 409             "MOV     R1, R4\n"
 410             "BL      sub_FF8B8C2C\n"
 411             "BL      sub_FF87FF9C\n"             // LOCATION: SsImgCtrl.c:0
 412             "LDR     R0, [R5]\n"
 413             "CMP     R0, #7\n"
 414             "ADDLS   PC, PC, R0,LSL#2\n"
 415             "B       loc_FF970C60\n"
 416                     "loc_FF970BA0:\n"
 417             "B       loc_FF970C60\n"
 418                     "loc_FF970BA4:\n"
 419             "B       loc_FF970BC0\n"
 420                     "loc_FF970BA8:\n"
 421             "B       loc_FF970BC8\n"
 422                     "loc_FF970BAC:\n"
 423             "B       loc_FF970BE8\n"
 424                     "loc_FF970BB0:\n"
 425             "B       loc_FF970C04\n"
 426                     "loc_FF970BB4:\n"
 427             "B       loc_FF970C20\n"
 428                     "loc_FF970BB8:\n"
 429             "B       loc_FF970C28\n"
 430                     "loc_FF970BBC:\n"
 431             "B       loc_FF970C44\n"
 432                     "loc_FF970BC0:\n"                        // jumptable FF970B98 entry 1
 433             "MOV     R0, #1\n"
 434             "B       loc_FF970C48\n"
 435                     "loc_FF970BC8:\n"                        // jumptable FF970B98 entry 2
 436             "MOV     R0, #1\n"
 437             "BL      sub_FF8B8C5C\n"
 438             "LDR     R2, [SP,#8]\n"
 439             "ADD     R1, SP, #0xC\n"
 440             "MOV     R0, R4\n"
 441             "BL      sub_FF970E0C\n"
 442                     "loc_FF970BE0:\n"
 443             "MOV     R8, R0\n"
 444             "B       loc_FF970C6C\n"
 445                     "loc_FF970BE8:\n"                        //jumptable FF970B98 entry 3
 446             "MOV     R0, #1\n"
 447             "BL      sub_FF8B8C5C\n"
 448             "LDR     R2, [SP,#8]\n"
 449             "ADD     R1, SP, #0xC\n"
 450             "MOV     R0, R4\n"
 451             "BL      sub_FF970EFC\n"             // LOCATION: SsCaptureSeq.c:7
 452             "B       loc_FF970BE0\n"
 453                     "loc_FF970C04:\n"                        // jumptable FF970B98 entry 4
 454             "MOV     R0, #1\n"
 455             "BL      sub_FF8B8C5C\n"
 456             "LDR     R2, [SP,#8]\n"
 457             "ADD     R1, SP, #0xC\n"
 458             "MOV     R0, R4\n"
 459             "BL      sub_FF97102C\n"
 460             "B       loc_FF970BE0\n"
 461                     "loc_FF970C20:\n"                        // jumptable FF970B98 entry 5
 462             "MOV     R0, #1\n"
 463             "B       loc_FF970C2C\n"
 464         "loc_FF970C28:\n"                    // jumptable FF970B98 entry 6
 465             "MOV     R0, #0\n"
 466                     "loc_FF970C2C:\n"
 467             "BL      sub_FF8B8C5C\n"
 468             "LDR     R2, [SP,#8]\n"
 469             "ADD     R1, SP, #0x1C\n"
 470             "MOV     R0, R4\n"
 471             "BL      sub_FF9708A8\n"
 472             "B       loc_FF970BE0\n"
 473                     "loc_FF970C44:\n"                        // jumptable FF970B98 entry 7
 474             "MOV     R0, #0\n"
 475                     "loc_FF970C48:\n"
 476             "BL      sub_FF8B8C5C\n"
 477             "LDR     R2, [SP,#8]\n"
 478             "ADD     R1, SP, #0xC\n"
 479             "MOV     R0, R4\n"
 480             "BL      sub_FF970814\n"
 481             "B       loc_FF970BE0\n"
 482                     "loc_FF970C60:\n"                        // jumptable FF970B98 default entry, jumptable FF970B98 entry 0
 483             "LDR     R1, =0x449\n"
 484             "LDR     R0, =0xFF9706D4\n"          // "SsCaptureSeq.c"
 485             "BL      sub_FF81EB14\n"             // DebugAssert()
 486                     "loc_FF970C6C:\n"
 487             "TST     R8, #1\n"
 488             "MOVNE   R0, R8\n"
 489             "BNE     loc_FF970CEC\n"
 490             "MOV     R1, #0\n"
 491             //"ADR     R0, 0xFF970554\n"         // nullsub_296()
 492             "LDR     R0, =0xFF970554\n"          // compiler does not like ADR
 493             "BL      sub_FF8B8C2C\n"
 494             "LDRH    R0, [R7]\n"
 495             "SUB     R12, R0, #0x8000\n"
 496             "SUBS    R12, R12, #0x20C\n"
 497             "BLEQ    sub_FF8A3DF8\n"
 498             "LDR     R2, =0x6DB4\n"
 499             "LDR     R0, [R4,#0x18]\n"
 500             "MOV     R3, #4\n"
 501             "MOV     R1, #0x45\n"
 502             "BL      sub_FF88FB44\n"             // LOCATION: PropertyCase.c:496
 503             "MOV     R0, #1\n"
 504             "BL      sub_FF9367DC\n"
 505             "STR     R0, [R4,#0xD8]\n"
 506             "BL      sub_FF971B78\n"             // LOCATION: SsShootEvent.c:76
 507             "LDR     R5, =0x469\n"
 508             //"ADR     R3, 0xFF9706D4\n"         // "SsCaptureSeq.c"
 509             "LDR     R3, =0xFF9706D4\n"          // compiler does not like ADR
 510             "STR     R5, [SP]\n"
 511             "LDR     R2, =0x3A98\n"
 512             "MOV     R1, #4\n"
 513             "BL      sub_FF8825E0\n"
 514             "CMP     R0, #0\n"
 515             "LDRNE   R0, =0xFF9706D4\n"          // "SsCaptureSeq.c"
 516             "MOVNE   R1, R5\n"
 517             "BLNE    sub_FF81EB14\n"             // DebugAssert()
 518             "LDRH    R0, [SP,#0xC]\n"
 519             "STRH    R0, [R4,#0x14]\n"
 520             "MOV     R0, #0\n"
 521                     "loc_FF970CEC:\n"
 522             "ADD     SP, SP, #0x10\n"
 523             "LDMFD   SP!, {R4-R8,PC}\n"
 524         */
 525     );
 526 }
 527 
 528 void __attribute__((naked,noinline)) sub_FF87D754_my() {
 529     asm volatile (
 530             "STMFD   SP!, {R4-R6,LR}\n"
 531             "LDR     R4, [R0,#0xC]\n"
 532             "LDR     R5, =0x396C4\n"
 533             "LDR     R0, [R4,#8]\n"
 534             "MOV     R6, #0\n"
 535             "ORR     R0, R0, #1\n"
 536             "STR     R0, [R4,#8]\n"
 537             "LDR     R0, [R5,#0x24]\n"
 538             "CMP     R0, #0\n"
 539             "BNE     loc_FF87D7B0\n"
 540             "LDR     R0, [R5,#0xB0]\n"
 541             "CMP     R0, #1\n"
 542             "BNE     loc_FF87D7A8\n"
 543             "LDRH    R0, [R5]\n"
 544             "LDR     R12, =0x820C\n"
 545             "CMP     R0, R12\n"
 546             "LDRNEH  R0, [R5,#0x92]\n"
 547             "CMPNE   R0, #3\n"
 548             "LDRNE   R0, [R4,#0xC]\n"
 549             "CMPNE   R0, #1\n"
 550             "BHI     loc_FF87D7B0\n"
 551         "loc_FF87D7A8:\n"
 552             "MOV     R0, #2\n"
 553             "BL      sub_FF87941C\n"
 554         "loc_FF87D7B0:\n"
 555             "BL      sub_FF87DC8C\n"
 556             "LDR     R0, [R5,#0x24]\n"
 557             "CMP     R0, #0\n"
 558             "BNE     loc_FF87D84C\n"
 559             "MOV     R0, #0\n"
 560             "BL      sub_FF971874\n"
 561             "MOV     R0, #0\n"
 562             "BL      sub_FF9719A8\n"
 563             "MOV     R0, R4\n"
 564             "BL      sub_FF87E070\n"
 565             "MOV     R0, R4\n"
 566             "BL      sub_FF96F4AC\n"
 567             "CMP     R0, #0\n"
 568             "BEQ     loc_FF87D814\n"
 569             "BL      sub_FF9718B4\n"
 570             "BL      sub_FF9719EC\n"
 571             "BL      sub_FF971A3C\n"
 572             "MOV     R0, R4\n"
 573             "BL      sub_FF96F590\n"             // LOCATION: SsPrePreSeq.c:0
 574             "TST     R0, #1\n"
 575             "MOVNE   R2, R4\n"
 576             "LDMNEFD SP!, {R4-R6,LR}\n"
 577             "MOVNE   R1, #1\n"
 578             "BNE     sub_FF87B788\n"             // LOCATION: SsShootCtrl.c:0
 579             "B       loc_FF87D828\n"
 580         "loc_FF87D814:\n"
 581             "MOV     R0, R4\n"
 582             "BL      sub_FF96F52C\n"
 583             "BL      sub_FF9718B4\n"
 584             "BL      sub_FF9719EC\n"
 585             "BL      sub_FF971A3C\n"
 586         "loc_FF87D828:\n"
 587             "MOV     R0, R4\n"
 588             "BL      sub_FF87CDEC\n"
 589             "MOV     R0, R4\n"
 590             "BL      sub_FF9709A4\n"             // LOCATION: SsCaptureSeq.c:1
 591             "BL      sub_FF971640\n"             // LOCATION: SsShootLib.c:4096
 592             "MOV     R0, R4\n"
 593 
 594             //"BL      sub_FF970A8C\n"           // taskcreate_ShutterSoundTask(), LOCATION: SsCaptureSeq.c:0
 595             "BL      sub_FF970A8C_my\n"          // +
 596 
 597             "MOV     R6, R0\n"
 598 
 599             //"BL      capt_seq_hook_raw_here\n"   // +
 600 
 601             "B       loc_FF87D85C\n"
 602         "loc_FF87D84C:\n"
 603             "LDR     R0, =0x2C7C\n"
 604             "LDR     R0, [R0,#0x10]\n"
 605             "CMP     R0, #0\n"
 606             "MOVNE   R6, #0x1D\n"
 607         "loc_FF87D85C:\n"
 608             "BL      capt_seq_hook_raw_here\n"   // + (like D10)
 609 
 610             "BL      sub_FF8808E0\n"
 611             "BL      sub_FF880928\n"
 612             "BL      sub_FF880968\n"
 613             "MOV     R2, R4\n"
 614             "MOV     R1, #1\n"
 615             "MOV     R0, R6\n"
 616             "BL      sub_FF87B788\n"             // LOCATION: SsShootCtrl.c:0
 617             "BL      sub_FF9707C8\n"
 618             "CMP     R0, #0\n"
 619             "LDRNE   R0, [R4,#8]\n"
 620             "ORRNE   R0, R0, #0x2000\n"
 621             "STRNE   R0, [R4,#8]\n"
 622             "LDMFD   SP!, {R4-R6,PC}\n"
 623     );
 624 }
 625 
 626 // ROM:FF8C25DC task_ExpDrvTask()
 627 void __attribute__((naked,noinline)) exp_drv_task() {
 628     asm volatile (
 629             "STMFD   SP!, {R4-R8,LR}\n"
 630             "SUB     SP, SP, #0x20\n"
 631             "LDR     R8, =0xBB8\n"
 632             "LDR     R7, =0x43E4\n"
 633             "LDR     R5, =0x42D18\n"
 634             "MOV     R0, #0\n"
 635             "ADD     R6, SP, #0x10\n"
 636             "STR     R0, [SP,#0xC]\n"
 637         "loc_FF8C25FC:\n"
 638             "LDR     R0, [R7,#0x20]\n"
 639             "MOV     R2, #0\n"
 640             "ADD     R1, SP, #0x1C\n"
 641             "BL      sub_FF83994C\n"        // LOCATION: KerQueue.c:0\n"
 642             "LDR     R0, [SP,#0xC]\n"
 643             "CMP     R0, #1\n"
 644             "BNE     loc_FF8C2648\n"
 645             "LDR     R0, [SP,#0x1C]\n"
 646             "LDR     R0, [R0]\n"
 647             "CMP     R0, #0x14\n"
 648             "CMPNE   R0, #0x15\n"
 649             "CMPNE   R0, #0x16\n"
 650             "CMPNE   R0, #0x17\n"
 651             "BEQ     loc_FF8C27AC\n"
 652             "CMP     R0, #0x29\n"
 653             "BEQ     loc_FF8C2734\n"
 654             "ADD     R1, SP, #0xC\n"
 655             "MOV     R0, #0\n"
 656             "BL      sub_FF8C258C\n"        // LOCATION: ExpDrv.c:512\n"
 657         "loc_FF8C2648:\n"
 658             "LDR     R0, [SP,#0x1C]\n"
 659             "LDR     R1, [R0]\n"
 660             "CMP     R1, #0x2F\n"
 661             "BNE     loc_FF8C2678\n"
 662             "LDR     R0, [SP,#0x1C]\n"
 663             "BL      sub_FF8C39C0\n"        // LOCATION: ExpDrv.c:0\n"
 664             "LDR     R0, [R7,#0x1C]\n"
 665             "MOV     R1, #1\n"
 666             "BL      sub_FF8873E4\n"
 667             "BL      sub_FF81EACC\n"        // eventproc_export_ExitTask(), LOCATION: KerTask.c:0
 668             "ADD     SP, SP, #0x20\n"
 669             "LDMFD   SP!, {R4-R8,PC}\n"
 670         "loc_FF8C2678:\n"
 671             "CMP     R1, #0x2E\n"
 672             "BNE     loc_FF8C2694\n"
 673             "LDR     R2, [R0,#0x8C]!\n"
 674             "LDR     R1, [R0,#4]\n"
 675             "MOV     R0, R1\n"
 676             "BLX     R2\n"
 677             "B       loc_FF8C2BE0\n"
 678         "loc_FF8C2694:\n"
 679             "CMP     R1, #0x27\n"
 680             "BNE     loc_FF8C26E4\n"
 681             "LDR     R0, [R7,#0x1C]\n"
 682             "MOV     R1, #0x80\n"
 683             "BL      sub_FF887418\n"
 684             "LDR     R0, =0xFF8BEA6C\n"
 685             "MOV     R1, #0x80\n"
 686             "BL      sub_FF963560\n"        // LOCATION: IrisController.c:98\n"
 687             "LDR     R0, [R7,#0x1C]\n"
 688             "MOV     R2, R8\n"
 689             "MOV     R1, #0x80\n"
 690             "BL      sub_FF887324\n"        // LOCATION: KerFlag.c:0\n"
 691             "TST     R0, #1\n"
 692             "LDRNE   R1, =0xEE7\n"
 693             "BNE     loc_FF8C27A0\n"
 694         "loc_FF8C26D0:\n"
 695             "LDR     R1, [SP,#0x1C]\n"
 696             "LDR     R0, [R1,#0x90]\n"
 697             "LDR     R1, [R1,#0x8C]\n"
 698             "BLX     R1\n"
 699             "B       loc_FF8C2BE0\n"
 700         "loc_FF8C26E4:\n"
 701             "CMP     R1, #0x28\n"
 702             "BNE     loc_FF8C272C\n"
 703             "ADD     R1, SP, #0xC\n"
 704             "BL      sub_FF8C258C\n"        // LOCATION: ExpDrv.c:512\n"
 705             "LDR     R0, [R7,#0x1C]\n"
 706             "MOV     R1, #0x100\n"
 707             "BL      sub_FF887418\n"
 708             "LDR     R0, =0xFF8BEA7C\n"
 709             "MOV     R1, #0x100\n"
 710             "BL      sub_FF963F90\n"        // LOCATION: IrisController.c:0\n"
 711             "LDR     R0, [R7,#0x1C]\n"
 712             "MOV     R2, R8\n"
 713             "MOV     R1, #0x100\n"
 714             "BL      sub_FF887324\n"        // LOCATION: KerFlag.c:0\n"
 715             "TST     R0, #1\n"
 716             "BEQ     loc_FF8C26D0\n"
 717             "LDR     R1, =0xEF1\n"
 718             "B       loc_FF8C27A0\n"
 719         "loc_FF8C272C:\n"
 720             "CMP     R1, #0x29\n"
 721             "BNE     loc_FF8C2744\n"
 722         "loc_FF8C2734:\n"
 723             "LDR     R0, [SP,#0x1C]\n"
 724             "ADD     R1, SP, #0xC\n"
 725             "BL      sub_FF8C258C\n"        // LOCATION: ExpDrv.c:512\n"
 726             "B       loc_FF8C26D0\n"
 727         "loc_FF8C2744:\n"
 728             "CMP     R1, #0x2C\n"
 729             "BNE     loc_FF8C275C\n"
 730             "BL      sub_FF8B12D4\n"        // LOCATION: Shutter.c:2\n"
 731             "BL      sub_FF8B1EF4\n"        // LOCATION: ImgPixel.c:272\n"
 732             "BL      sub_FF8B1A58\n"        // LOCATION: ImgGain.c:0\n"
 733             "B       loc_FF8C26D0\n"
 734         "loc_FF8C275C:\n"
 735             "CMP     R1, #0x2D\n"
 736             "BNE     loc_FF8C27AC\n"
 737             "LDR     R0, [R7,#0x1C]\n"
 738             "MOV     R1, #4\n"
 739             "BL      sub_FF887418\n"
 740             "LDR     R1, =0xFF8BEA9C\n"
 741             "LDR     R0, =0xFFFFF400\n"
 742             "MOV     R2, #4\n"
 743             "BL      sub_FF8B0D50\n"
 744             "BL      sub_FF8B0FD8\n"        // LOCATION: Shutter.c:0\n"
 745             "LDR     R0, [R7,#0x1C]\n"
 746             "MOV     R2, R8\n"
 747             "MOV     R1, #4\n"
 748             "BL      sub_FF887240\n"        // LOCATION: KerFlag.c:0\n"
 749             "TST     R0, #1\n"
 750             "BEQ     loc_FF8C26D0\n"
 751             "LDR     R1, =0xF19\n"
 752         "loc_FF8C27A0:\n"
 753             "LDR     R0, =0xFF8BF130\n"     // "ExpDrv.c"
 754             "BL      sub_FF81EB14\n"    // DebugAssert()
 755             "B       loc_FF8C26D0\n"
 756         "loc_FF8C27AC:\n"
 757             "LDR     R0, [SP,#0x1C]\n"
 758             "MOV     R4, #1\n"
 759             "LDR     R1, [R0]\n"
 760             "CMP     R1, #0x12\n"
 761             "CMPNE   R1, #0x13\n"
 762             "BNE     loc_FF8C281C\n"
 763             "LDR     R1, [R0,#0x7C]\n"
 764             "ADD     R1, R1, R1,LSL#1\n"
 765             "ADD     R1, R0, R1,LSL#2\n"
 766             "SUB     R1, R1, #8\n"
 767             "LDMIA   R1, {R2-R4}\n"
 768             "STMIA   R6, {R2-R4}\n"
 769             "BL      sub_FF8C0F58\n"        // LOCATION: ExpDrv.c:2\n"
 770             "LDR     R0, [SP,#0x1C]\n"
 771             "LDR     R1, [R0,#0x7C]\n"
 772             "LDR     R3, [R0,#0x8C]\n"
 773             "LDR     R2, [R0,#0x90]\n"
 774             "ADD     R0, R0, #4\n"
 775             "BLX     R3\n"
 776             "LDR     R0, [SP,#0x1C]\n"
 777             "BL      sub_FF8C3D7C\n"        // LOCATION: ExpDrv.c:0\n"
 778             "LDR     R0, [SP,#0x1C]\n"
 779             "LDR     R1, [R0,#0x7C]\n"
 780             "LDR     R3, [R0,#0x94]\n"
 781             "LDR     R2, [R0,#0x98]\n"
 782             "ADD     R0, R0, #4\n"
 783             "BLX     R3\n"
 784             "B       loc_FF8C2B20\n"
 785         "loc_FF8C281C:\n"
 786             "CMP     R1, #0x14\n"
 787             "CMPNE   R1, #0x15\n"
 788             "CMPNE   R1, #0x16\n"
 789             "CMPNE   R1, #0x17\n"
 790             "BNE     loc_FF8C28D4\n"
 791             "ADD     R3, SP, #0xC\n"
 792             "MOV     R2, SP\n"
 793             "ADD     R1, SP, #0x10\n"
 794             "BL      sub_FF8C11AC\n"        // LOCATION: ExpDrv.c:0\n"
 795             "CMP     R0, #1\n"
 796             "MOV     R4, R0\n"
 797             "CMPNE   R4, #5\n"
 798             "BNE     loc_FF8C2870\n"
 799             "LDR     R0, [SP,#0x1C]\n"
 800             "MOV     R2, R4\n"
 801             "LDR     R1, [R0,#0x7C]!\n"
 802             "LDR     R12, [R0,#0x10]!\n"
 803             "LDR     R3, [R0,#4]\n"
 804             "MOV     R0, SP\n"
 805             "BLX     R12\n"
 806             "B       loc_FF8C28A8\n"
 807         "loc_FF8C2870:\n"
 808             "LDR     R0, [SP,#0x1C]\n"
 809             "CMP     R4, #2\n"
 810             "LDR     R3, [R0,#0x90]\n"
 811             "CMPNE   R4, #6\n"
 812             "BNE     loc_FF8C28BC\n"
 813             "LDR     R12, [R0,#0x8C]\n"
 814             "MOV     R0, SP\n"
 815             "MOV     R2, R4\n"
 816             "MOV     R1, #1\n"
 817             "BLX     R12\n"
 818             "LDR     R0, [SP,#0x1C]\n"
 819             "MOV     R2, SP\n"
 820             "ADD     R1, SP, #0x10\n"
 821             "BL      sub_FF8C22D8\n"        // LOCATION: ExpDrv.c:0\n"
 822         "loc_FF8C28A8:\n"
 823             "LDR     R0, [SP,#0x1C]\n"
 824             "LDR     R2, [SP,#0xC]\n"
 825             "MOV     R1, R4\n"
 826             "BL      sub_FF8C252C\n"        // LOCATION: ExpDrv.c:2\n"
 827             "B       loc_FF8C2B20\n"
 828         "loc_FF8C28BC:\n"
 829             "LDR     R1, [R0,#0x7C]\n"
 830             "LDR     R12, [R0,#0x8C]\n"
 831             "ADD     R0, R0, #4\n"
 832             "MOV     R2, R4\n"
 833             "BLX     R12\n"
 834             "B       loc_FF8C2B20\n"
 835         "loc_FF8C28D4:\n"
 836             "CMP     R1, #0x23\n"
 837             "CMPNE   R1, #0x24\n"
 838             "BNE     loc_FF8C2920\n"
 839             "LDR     R1, [R0,#0x7C]\n"
 840             "ADD     R1, R1, R1,LSL#1\n"
 841             "ADD     R1, R0, R1,LSL#2\n"
 842             "SUB     R1, R1, #8\n"
 843             "LDMIA   R1, {R2-R4}\n"
 844             "STMIA   R6, {R2-R4}\n"
 845             "BL      sub_FF8C021C\n"        // LOCATION: ExpDrv.c:0\n"
 846             "LDR     R0, [SP,#0x1C]\n"
 847             "LDR     R1, [R0,#0x7C]\n"
 848             "LDR     R3, [R0,#0x8C]\n"
 849             "LDR     R2, [R0,#0x90]\n"
 850             "ADD     R0, R0, #4\n"
 851             "BLX     R3\n"
 852             "LDR     R0, [SP,#0x1C]\n"
 853             "BL      sub_FF8C051C\n"        // LOCATION: ExpDrv.c:0
 854             "B       loc_FF8C2B20\n"
 855         "loc_FF8C2920:\n"
 856             "ADD     R1, R0, #4\n"
 857             "LDMIA   R1, {R2,R3,R12}\n"
 858             "STMIA   R6, {R2,R3,R12}\n"
 859             "LDR     R1, [R0]\n"
 860             "CMP     R1, #0x26\n"
 861             "ADDLS   PC, PC, R1,LSL#2\n"
 862             "B       loc_FF8C2B00\n"
 863         "loc_FF8C293C:\n"
 864             "B       loc_FF8C29D8\n"
 865         "loc_FF8C2940:\n"
 866             "B       loc_FF8C29D8\n"
 867         "loc_FF8C2944:\n"
 868             "B       loc_FF8C29E0\n"
 869         "loc_FF8C2948:\n"
 870             "B       loc_FF8C29E8\n"
 871         "loc_FF8C294C:\n"
 872             "B       loc_FF8C29E8\n"
 873         "loc_FF8C2950:\n"
 874             "B       loc_FF8C29E8\n"
 875         "loc_FF8C2954:\n"
 876             "B       loc_FF8C29D8\n"
 877         "loc_FF8C2958:\n"
 878             "B       loc_FF8C29E0\n"
 879         "loc_FF8C295C:\n"
 880             "B       loc_FF8C29E8\n"
 881         "loc_FF8C2960:\n"
 882             "B       loc_FF8C29E8\n"
 883         "loc_FF8C2964:\n"
 884             "B       loc_FF8C2A00\n"
 885         "loc_FF8C2968:\n"
 886             "B       loc_FF8C2A00\n"
 887         "loc_FF8C296C:\n"
 888          "B       loc_FF8C2AEC\n"
 889         "loc_FF8C2970:\n"
 890             "B       loc_FF8C2AF4\n"
 891         "loc_FF8C2974:\n"
 892             "B       loc_FF8C2AF4\n"
 893         "loc_FF8C2978:\n"
 894             "B       loc_FF8C2AF4\n"
 895         "loc_FF8C297C:\n"
 896             "B       loc_FF8C2AF4\n"
 897         "loc_FF8C2980:\n"
 898             "B       loc_FF8C2AFC\n"
 899         "loc_FF8C2984:\n"
 900             "B       loc_FF8C2B00\n"
 901         "loc_FF8C2988:\n"
 902             "B       loc_FF8C2B00\n"
 903         "loc_FF8C298C:\n"
 904             "B       loc_FF8C2B00\n"
 905         "loc_FF8C2990:\n"
 906             "B       loc_FF8C2B00\n"
 907         "loc_FF8C2994:\n"
 908             "B       loc_FF8C2B00\n"
 909         "loc_FF8C2998:\n"
 910             "B       loc_FF8C2B00\n"
 911         "loc_FF8C299C:\n"
 912             "B       loc_FF8C29F0\n"
 913         "loc_FF8C29A0:\n"
 914             "B       loc_FF8C29F8\n"
 915         "loc_FF8C29A4:\n"
 916             "B       loc_FF8C29F8\n"
 917         "loc_FF8C29A8:\n"
 918             "B       loc_FF8C2A0C\n"
 919         "loc_FF8C29AC:\n"
 920             "B       loc_FF8C2A0C\n"
 921         "loc_FF8C29B0:\n"
 922             "B       loc_FF8C2A14\n"
 923         "loc_FF8C29B4:\n"
 924             "B       loc_FF8C2A44\n"
 925         "loc_FF8C29B8:\n"
 926             "B       loc_FF8C2A74\n"
 927         "loc_FF8C29BC:\n"
 928             "B       loc_FF8C2AA4\n"
 929         "loc_FF8C29C0:\n"
 930             "B       loc_FF8C2AD4\n"
 931         "loc_FF8C29C4:\n"
 932             "B       loc_FF8C2AD4\n"
 933         "loc_FF8C29C8:\n"
 934             "B       loc_FF8C2B00\n"
 935         "loc_FF8C29CC:\n"
 936             "B       loc_FF8C2B00\n"
 937         "loc_FF8C29D0:\n"
 938             "B       loc_FF8C2ADC\n"
 939         "loc_FF8C29D4:\n"
 940             "B       loc_FF8C2AE4\n"
 941         "loc_FF8C29D8:\n"                   // jumptable FF8C2934 entries 0,1,6
 942             "BL      sub_FF8BEF8C\n"        // ExpDrv.c 0
 943         "B       loc_FF8C2B00\n"
 944             "loc_FF8C29E0:\n"                   // jumptable FF8C2934 entries 2,7
 945         "BL      sub_FF8BF25C\n"        // ExpDrv.c 0
 946             "B       loc_FF8C2B00\n"
 947         "loc_FF8C29E8:\n"                   // jumptable FF8C2934 entries 3-5,8,9
 948             "BL      sub_FF8BF4A4\n"        // ExpDrv.c 0
 949             "B       loc_FF8C2B00\n"
 950         "loc_FF8C29F0:\n"                   // jumptable FF8C2934 entry 24
 951             "BL      sub_FF8BF6F4\n"        // ExpDrv.c 2
 952             "B       loc_FF8C2B00\n"
 953         "loc_FF8C29F8:\n"                   // jumptable FF8C2934 entries 25,26
 954             "BL      sub_FF8BF8EC\n"        // ExpDrv.c 0
 955             "B       loc_FF8C2B00\n"
 956         "loc_FF8C2A00:\n"                   // jumptable FF8C2934 entries 10,11
 957             "BL      sub_FF8BFBA8\n"        // ExpDrv.c 2
 958             "MOV     R4, #0\n"
 959             "B       loc_FF8C2B00\n"
 960         "loc_FF8C2A0C:\n"                   // jumptable FF8C2934 entries 27,28
 961             "BL      sub_FF8BFCE8\n"        // ExpDrv.c 0
 962             "B       loc_FF8C2B00\n"
 963         "loc_FF8C2A14:\n"                   // jumptable FF8C2934 entry 29
 964             "LDRH    R1, [R0,#4]\n"
 965             "STRH    R1, [SP,#0x10]\n"
 966             "LDRH    R1, [R5,#2]\n"
 967             "STRH    R1, [SP,#0x12]\n"
 968             "LDRH    R1, [R5,#4]\n"
 969             "STRH    R1, [SP,#0x14]\n"
 970             "LDRH    R1, [R5,#6]\n"
 971             "STRH    R1, [SP,#0x16]\n"
 972             "LDRH    R1, [R0,#0xC]\n"
 973             "STRH    R1, [SP,#0x18]\n"
 974             "BL      sub_FF8C3A34\n"         // LOCATION: ExpDrv.c:2
 975             "B       loc_FF8C2B00\n"
 976         "loc_FF8C2A44:\n"                   // jumptable FF8C2934 entry 30
 977             "LDRH    R1, [R0,#4]\n"
 978             "STRH    R1, [SP,#0x10]\n"
 979             "LDRH    R1, [R5,#2]\n"
 980             "STRH    R1, [SP,#0x12]\n"
 981             "LDRH    R1, [R5,#4]\n"
 982             "STRH    R1, [SP,#0x14]\n"
 983             "LDRH    R1, [R5,#6]\n"
 984             "STRH    R1, [SP,#0x16]\n"
 985             "LDRH    R1, [R5,#8]\n"
 986             "STRH    R1, [SP,#0x18]\n"
 987             "BL      sub_FF8C3B94\n"        // LOCATION: ExpDrv.c:2
 988             "B       loc_FF8C2B00\n"
 989         "loc_FF8C2A74:\n"                   // jumptable FF8C2934 entry 31
 990             "LDRH    R1, [R5]\n"
 991             "STRH    R1, [SP,#0x10]\n"
 992             "LDRH    R1, [R0,#6]\n"
 993             "STRH    R1, [SP,#0x12]\n"
 994             "LDRH    R1, [R5,#4]\n"
 995             "STRH    R1, [SP,#0x14]\n"
 996             "LDRH    R1, [R5,#6]\n"
 997             "STRH    R1, [SP,#0x16]\n"
 998             "LDRH    R1, [R5,#8]\n"
 999             "STRH    R1, [SP,#0x18]\n"
1000             "BL      sub_FF8C3C40\n"        // LOCATION: ExpDrv.c:0\n"
1001             "B       loc_FF8C2B00\n"
1002         "loc_FF8C2AA4:\n"                   // jumptable FF8C2934 entry 32
1003             "LDRH    R1, [R5]\n"
1004             "STRH    R1, [SP,#0x10]\n"
1005             "LDRH    R1, [R5,#2]\n"
1006             "STRH    R1, [SP,#0x12]\n"
1007             "LDRH    R1, [R5,#4]\n"
1008             "STRH    R1, [SP,#0x14]\n"
1009             "LDRH    R1, [R5,#6]\n"
1010             "STRH    R1, [SP,#0x16]\n"
1011             "LDRH    R1, [R0,#0xC]\n"
1012             "STRH    R1, [SP,#0x18]\n"
1013             "BL      sub_FF8C3CE0\n"        // LOCATION: ExpDrv.c:32
1014             "B       loc_FF8C2B00\n"
1015         "loc_FF8C2AD4:\n"                   // jumptable FF8C2934 entries 33,34
1016             "BL      sub_FF8C0058\n"        // ExpDrv.c 0
1017             "B       loc_FF8C2B00\n"
1018         "loc_FF8C2ADC:\n"                   // jumptable FF8C2934 entry 37
1019             "BL      sub_FF8C0620\n"        // ExpDrv.c 10
1020             "B       loc_FF8C2B00\n"
1021         "loc_FF8C2AE4:\n"                   // jumptable FF8C2934 entry 38
1022             "BL      sub_FF8C085C\n"        // ExpDrv.c 0
1023             "B       loc_FF8C2B00\n"
1024         "loc_FF8C2AEC:\n"                   // jumptable FF8C2934 entry 12
1025             "BL      sub_FF8C09D8\n"        // ExpDrv.c 2
1026             "B       loc_FF8C2B00\n"
1027         "loc_FF8C2AF4:\n"                   // jumptable FF8C2934 entries 13-16
1028             "BL      sub_FF8C0B74\n"        // ExpDrv.c 128
1029             "B       loc_FF8C2B00\n"
1030         "loc_FF8C2AFC:\n"                   // jumptable FF8C2934 entry 17
1031             "BL      sub_FF8C0CD8\n"        // ExpDrv.c 2
1032         "loc_FF8C2B00:\n"                   // jumptable FF8C2934 default entry, jumptable FF8C2934 entries 18-23,35,36
1033             "LDR     R0, [SP,#0x1C]\n"
1034             "LDR     R1, [R0,#0x7C]\n"
1035             "LDR     R3, [R0,#0x8C]\n"
1036             "LDR     R2, [R0,#0x90]\n"
1037             "ADD     R0, R0, #4\n"
1038             "BLX     R3\n"
1039             "CMP     R4, #1\n"
1040             "BNE     loc_FF8C2B68\n"
1041         "loc_FF8C2B20:\n"
1042             "LDR     R0, [SP,#0x1C]\n"
1043             "MOV     R2, #0xC\n"
1044             "LDR     R1, [R0,#0x7C]\n"
1045             "ADD     R1, R1, R1,LSL#1\n"
1046             "ADD     R0, R0, R1,LSL#2\n"
1047             "SUB     R4, R0, #8\n"
1048             "LDR     R0, =0x42D18\n"
1049             "ADD     R1, SP, #0x10\n"
1050             "BL      sub_FFB597C0\n"
1051             "LDR     R0, =0x42D24\n"
1052             "MOV     R2, #0xC\n"
1053             "ADD     R1, SP, #0x10\n"
1054             "BL      sub_FFB597C0\n"
1055             "LDR     R0, =0x42D30\n"
1056             "MOV     R2, #0xC\n"
1057             "MOV     R1, R4\n"
1058             "BL      sub_FFB597C0\n"
1059             "B       loc_FF8C2BE0\n"
1060         "loc_FF8C2B68:\n"
1061             "LDR     R0, [SP,#0x1C]\n"
1062             "LDR     R0, [R0]\n"
1063             "CMP     R0, #0xB\n"
1064             "BNE     loc_FF8C2BB0\n"
1065             "MOV     R3, #0\n"
1066             "STR     R3, [SP]\n"
1067             "MOV     R3, #1\n"
1068             "MOV     R2, #1\n"
1069             "MOV     R1, #1\n"
1070             "MOV     R0, #0\n"
1071             "BL      sub_FF8BED94\n"
1072             "MOV     R3, #0\n"
1073             "STR     R3, [SP]\n"
1074             "MOV     R3, #1\n"
1075             "MOV     R2, #1\n"
1076             "MOV     R1, #1\n"
1077             "MOV     R0, #0\n"
1078             "B       loc_FF8C2BDC\n"
1079         "loc_FF8C2BB0:\n"
1080             "MOV     R3, #1\n"
1081             "MOV     R2, #1\n"
1082             "MOV     R1, #1\n"
1083             "MOV     R0, #1\n"
1084             "STR     R3, [SP]\n"
1085             "BL      sub_FF8BED94\n"
1086             "MOV     R3, #1\n"
1087             "MOV     R2, #1\n"
1088             "MOV     R1, #1\n"
1089             "MOV     R0, #1\n"
1090             "STR     R3, [SP]\n"
1091         "loc_FF8C2BDC:\n"
1092             "BL      sub_FF8BEED4\n"
1093         "loc_FF8C2BE0:\n"
1094             "LDR     R0, [SP,#0x1C]\n"
1095             "BL      sub_FF8C39C0\n"        // LOCATION: ExpDrv.c:0
1096             "B       loc_FF8C25FC\n"
1097     );
1098 }

/* [<][>][^][v][top][bottom][index][help] */