root/platform/sx120is/sub/100b/capt_seq.c

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

DEFINITIONS

This source file includes following definitions.
  1. capt_seq_task
  2. sub_FFC4EFE8_my
  3. sub_FFD18E4C_my
  4. exp_drv_task
  5. sub_FFC84690_my
  6. sub_FFC76DA8_my

   1 #include "lolevel.h"
   2 #include "platform.h"
   3 #include "core.h"
   4 #include "conf.h"
   5 
   6 //found at ROM:FFD18E60
   7 static long *nrflag = (long*)0x6690;
   8 
   9 #include "../../../generic/capt_seq.c"
  10 
  11 void __attribute__((naked,noinline)) capt_seq_task() {
  12  asm volatile (
  13                  "STMFD   SP!, {R3-R7,LR}\n"
  14                  "LDR     R7, =0x13C94\n"
  15                  "LDR     R6, =0x2AD0\n"
  16  "loc_FFC4F64C:\n"
  17                  "LDR     R0, [R6,#4]\n"
  18                  "MOV     R2, #0\n"
  19                  "MOV     R1, SP\n"
  20                  "BL      sub_FFC1659C\n"
  21                  "TST     R0, #1\n"
  22                  "BEQ     loc_FFC4F678\n"
  23                  "LDR     R1, =0x5B4\n"
  24                  "LDR     R0, =0xFFC4EF30\n"    // aSsshoottask_c
  25                  "BL      sub_FFC0B048\n"       // DebugAssert
  26                  "BL      sub_FFC0B000\n"       // eventproc_export_ExitTask
  27                  "LDMFD   SP!, {R3-R7,PC}\n"
  28  "loc_FFC4F678:\n"
  29                  "LDR     R0, [SP]\n"
  30                  "LDR     R1, [R0]\n"
  31                  "CMP     R1, #0x21\n"
  32                  "ADDLS   PC, PC, R1,LSL#2\n"
  33                  "B       loc_FFC4F8AC\n"
  34  "loc_FFC4F68C:\n"
  35                  "B       loc_FFC4F714\n"
  36  "loc_FFC4F690:\n"
  37                  "B       loc_FFC4F71C\n"
  38  "loc_FFC4F694:\n"
  39                  "B       loc_FFC4F744\n"
  40  "loc_FFC4F698:\n"
  41                  "B       loc_FFC4F758\n"
  42  "loc_FFC4F69C:\n"
  43                  "B       loc_FFC4F750\n"
  44  "loc_FFC4F6A0:\n"
  45                  "B       loc_FFC4F760\n"
  46  "loc_FFC4F6A4:\n"
  47                  "B       loc_FFC4F768\n"
  48  "loc_FFC4F6A8:\n"
  49                  "B       loc_FFC4F774\n"
  50  "loc_FFC4F6AC:\n"
  51                  "B       loc_FFC4F7CC\n"
  52  "loc_FFC4F6B0:\n"
  53                  "B       loc_FFC4F758\n"
  54  "loc_FFC4F6B4:\n"
  55                  "B       loc_FFC4F7D4\n"
  56  "loc_FFC4F6B8:\n"
  57                  "B       loc_FFC4F7E0\n"
  58  "loc_FFC4F6BC:\n"
  59                  "B       loc_FFC4F7E8\n"
  60  "loc_FFC4F6C0:\n"
  61                  "B       loc_FFC4F7F0\n"
  62  "loc_FFC4F6C4:\n"
  63                  "B       loc_FFC4F7F8\n"
  64  "loc_FFC4F6C8:\n"
  65                  "B       loc_FFC4F800\n"
  66  "loc_FFC4F6CC:\n"
  67                  "B       loc_FFC4F808\n"
  68  "loc_FFC4F6D0:\n"
  69                  "B       loc_FFC4F810\n"
  70  "loc_FFC4F6D4:\n"
  71                  "B       loc_FFC4F818\n"
  72  "loc_FFC4F6D8:\n"
  73                  "B       loc_FFC4F820\n"
  74  "loc_FFC4F6DC:\n"
  75                  "B       loc_FFC4F828\n"
  76  "loc_FFC4F6E0:\n"
  77                  "B       loc_FFC4F830\n"
  78  "loc_FFC4F6E4:\n"
  79                  "B       loc_FFC4F838\n"
  80  "loc_FFC4F6E8:\n"
  81                  "B       loc_FFC4F844\n"
  82  "loc_FFC4F6EC:\n"
  83                  "B       loc_FFC4F84C\n"
  84  "loc_FFC4F6F0:\n"
  85                  "B       loc_FFC4F858\n"
  86  "loc_FFC4F6F4:\n"
  87                  "B       loc_FFC4F860\n"
  88  "loc_FFC4F6F8:\n"
  89                  "B       loc_FFC4F868\n"
  90  "loc_FFC4F6FC:\n"
  91                  "B       loc_FFC4F870\n"
  92  "loc_FFC4F700:\n"
  93                  "B       loc_FFC4F878\n"
  94  "loc_FFC4F704:\n"
  95                  "B       loc_FFC4F880\n"
  96  "loc_FFC4F708:\n"
  97                  "B       loc_FFC4F888\n"
  98  "loc_FFC4F70C:\n"
  99                  "B       loc_FFC4F894\n"
 100  "loc_FFC4F710:\n"
 101                  "B       loc_FFC4F8B8\n"
 102  "loc_FFC4F714:\n"
 103                  "BL      sub_FFC4FF14\n"
 104                  "BL      shooting_expo_param_override\n"       //------------>
 105                  "B       loc_FFC4F76C\n"
 106  "loc_FFC4F71C:\n"
 107                  "MOV     R0, #0xC\n"
 108                  "BL      sub_FFC541E4\n"
 109                  "TST     R0, #1\n"
 110                  "LDR     R0, [SP]\n"
 111                  "MOVNE   R1, #1\n"
 112                  "LDRNE   R2, [R0,#0xC]\n"
 113                  "MOVNE   R0, #1\n"
 114                  "BNE     loc_FFC4F7C4\n"
 115                  "BL      sub_FFC4EFE8_my\n"                    //------------>
 116                  "B       loc_FFC4F8B8\n"
 117  "loc_FFC4F744:\n"
 118                  "MOV     R0, #1\n"
 119                  "BL      sub_FFC50154\n"
 120                  "B       loc_FFC4F8B8\n"
 121  "loc_FFC4F750:\n"
 122                  "BL      sub_FFC4FBE0\n"
 123                  "B       loc_FFC4F8B8\n"
 124  "loc_FFC4F758:\n"
 125                  "BL      sub_FFC4FEF4\n"
 126                  "B       loc_FFC4F8B8\n"
 127  "loc_FFC4F760:\n"
 128                  "BL      sub_FFC4FEFC\n"
 129                  "B       loc_FFC4F8B8\n"
 130  "loc_FFC4F768:\n"
 131                  "BL      sub_FFC50074\n"
 132  "loc_FFC4F76C:\n"
 133                  "BL      sub_FFC4D318\n"
 134                  "B       loc_FFC4F8B8\n"
 135  "loc_FFC4F774:\n"
 136                  "LDR     R4, [R0,#0xC]\n"
 137                  "BL      sub_FFC4FF04\n"
 138                  "MOV     R0, R4\n"
 139                  "BL      sub_FFD17BE4\n"
 140                  "TST     R0, #1\n"
 141                  "MOV     R5, R0\n"
 142                  "BNE     loc_FFC4F7B4\n"
 143                  "BL      sub_FFC60E70\n"
 144                  "STR     R0, [R4,#0x18]\n"
 145                  "MOV     R0, R4\n"
 146                  "BL      sub_FFD18D84\n"
 147                  "MOV     R0, R4\n"
 148                  "BL      sub_FFD19150\n"
 149                  "MOV     R5, R0\n"
 150                  "LDR     R0, [R4,#0x18]\n"
 151                  "BL      sub_FFC61074\n"
 152  "loc_FFC4F7B4:\n"
 153                  "BL      sub_FFC4FEF4\n"
 154                  "MOV     R2, R4\n"
 155                  "MOV     R1, #9\n"
 156                  "MOV     R0, R5\n"
 157  "loc_FFC4F7C4:\n"
 158                  "BL      sub_FFC4D7DC\n"
 159                  "B       loc_FFC4F8B8\n"
 160  "loc_FFC4F7CC:\n"
 161                  "BL      sub_FFC500D4\n"
 162                  "B       loc_FFC4F76C\n"
 163  "loc_FFC4F7D4:\n"
 164                  "LDR     R0, [R7,#0x4C]\n"
 165                  "BL      sub_FFC50660\n"
 166                  "B       loc_FFC4F8B8\n"
 167  "loc_FFC4F7E0:\n"
 168                  "BL      sub_FFC50908\n"
 169                  "B       loc_FFC4F8B8\n"
 170  "loc_FFC4F7E8:\n"
 171                  "BL      sub_FFC5099C\n"
 172                  "B       loc_FFC4F8B8\n"
 173  "loc_FFC4F7F0:\n"
 174                  "BL      sub_FFD17E0C\n"
 175                  "B       loc_FFC4F8B8\n"
 176  "loc_FFC4F7F8:\n"
 177                  "BL      sub_FFD18004\n"
 178                  "B       loc_FFC4F8B8\n"
 179  "loc_FFC4F800:\n"
 180                  "BL      sub_FFD18088\n"
 181                  "B       loc_FFC4F8B8\n"
 182  "loc_FFC4F808:\n"
 183                  "BL      sub_FFD18168\n"
 184                  "B       loc_FFC4F8B8\n"
 185  "loc_FFC4F810:\n"
 186                  "BL      sub_FFD18228\n"
 187                  "B       loc_FFC4F8B8\n"
 188  "loc_FFC4F818:\n"
 189                  "MOV     R0, #0\n"
 190                  "B       loc_FFC4F83C\n"
 191  "loc_FFC4F820:\n"
 192                  "BL      sub_FFD185E8\n"
 193                  "B       loc_FFC4F8B8\n"
 194  "loc_FFC4F828:\n"
 195                  "BL      sub_FFD18678\n"
 196                  "B       loc_FFC4F8B8\n"
 197  "loc_FFC4F830:\n"
 198                  "BL      sub_FFD18738\n"
 199                  "B       loc_FFC4F8B8\n"
 200  "loc_FFC4F838:\n"
 201                  "MOV     R0, #1\n"
 202  "loc_FFC4F83C:\n"
 203                  "BL      sub_FFD18498\n"
 204                  "B       loc_FFC4F8B8\n"
 205  "loc_FFC4F844:\n"
 206                  "BL      sub_FFC502FC\n"
 207                  "B       loc_FFC4F8B8\n"
 208  "loc_FFC4F84C:\n"
 209                  "BL      sub_FFC50328\n"
 210                  "BL      sub_FFC4F9E4\n"
 211                  "B       loc_FFC4F8B8\n"
 212  "loc_FFC4F858:\n"
 213                  "BL      sub_FFD18370\n"
 214                  "B       loc_FFC4F8B8\n"
 215  "loc_FFC4F860:\n"
 216                  "BL      sub_FFD18408\n"
 217                  "B       loc_FFC4F8B8\n"
 218  "loc_FFC4F868:\n"
 219                  "BL      sub_FFC4EEC0\n"
 220                  "B       loc_FFC4F8B8\n"
 221  "loc_FFC4F870:\n"
 222                  "BL      sub_FFC14638\n"
 223                  "B       loc_FFC4F8B8\n"
 224  "loc_FFC4F878:\n"
 225                  "BL      sub_FFC528BC\n"
 226                  "B       loc_FFC4F8B8\n"
 227  "loc_FFC4F880:\n"
 228                  "BL      sub_FFC52918\n"
 229                  "B       loc_FFC4F8B8\n"
 230  "loc_FFC4F888:\n"
 231                  "BL      sub_FFC52974\n"
 232                  "BL      sub_FFC52934\n"
 233                  "B       loc_FFC4F8B8\n"
 234  "loc_FFC4F894:\n"
 235                  "LDRH    R0, [R7,#0x98]\n"
 236                  "CMP     R0, #4\n"
 237                  "BNE     loc_FFC4F8B8\n"
 238                  "BL      sub_FFC52918\n"
 239                  "BL      sub_FFC52D60\n"
 240                  "B       loc_FFC4F8B8\n"
 241  "loc_FFC4F8AC:\n"
 242                  "LDR     R1, =0x709\n"
 243                  "LDR     R0, =0xFFC4EF30\n"    // aSsshoottask_c
 244                  "BL      sub_FFC0B048\n"       // DebugAssert
 245  "loc_FFC4F8B8:\n"
 246                  "LDR     R0, [SP]\n"
 247                  "LDR     R1, [R0,#4]\n"
 248                  "LDR     R0, [R6]\n"
 249                  "BL      sub_FFC58E7C\n"
 250                  "LDR     R4, [SP]\n"
 251                  "LDR     R0, [R4,#8]\n"
 252                  "CMP     R0, #0\n"
 253                  "LDREQ   R1, =0x132\n"
 254                  "LDREQ   R0, =0xFFC4EF30\n"    // aSsshoottask_c
 255                  "BLEQ    sub_FFC0B048\n"       // DebugAssert
 256                  "MOV     R0, #0\n"
 257                  "STR     R0, [R4,#8]\n"
 258                  "B       loc_FFC4F64C\n"
 259     );
 260 } 
 261 
 262 
 263 void __attribute__((naked,noinline)) sub_FFC4EFE8_my(){
 264     asm volatile(
 265                  "STMFD   SP!, {R3-R7,LR}\n"
 266                  "LDR     R4, [R0,#0xC]\n"
 267                  "LDR     R5, =0x13C94\n"
 268                  "LDR     R0, [R4,#8]\n"
 269                  "ORR     R0, R0, #1\n"
 270                  "STR     R0, [R4,#8]\n"
 271                  "LDRH    R0, [R5,#0x96]\n"
 272                  "CMP     R0, #3\n"
 273                  "BEQ     loc_FFC4F0B8\n"
 274                  "LDR     R0, [R4,#0xC]\n"
 275                  "CMP     R0, #1\n"
 276                  "BLS     loc_FFC4F068\n"
 277                  "LDRH    R0, [R5,#0x94]\n"
 278                  "CMP     R0, #0\n"
 279                  "BNE     loc_FFC4F0B8\n"
 280                  "LDRH    R0, [R5,#0x90]\n"
 281                  "CMP     R0, #2\n"
 282                  "BNE     loc_FFC4F074\n"
 283                  "BL      sub_FFC503E4\n"
 284                  "LDRH    R0, [R5,#0x96]\n"
 285                  "CMP     R0, #3\n"
 286                  "BEQ     loc_FFC4F0B8\n"
 287                  "LDR     R0, [R4,#0xC]\n"
 288                  "CMP     R0, #1\n"
 289                  "BLS     loc_FFC4F068\n"
 290                  "LDRH    R0, [R5,#0x94]\n"
 291                  "CMP     R0, #0\n"
 292                  "BNE     loc_FFC4F0B8\n"
 293                  "LDRH    R0, [R5,#0x90]\n"
 294                  "CMP     R0, #2\n"
 295                  "BEQ     loc_FFC4F098\n"
 296                  "B       loc_FFC4F074\n"
 297  "loc_FFC4F068:\n"
 298                  "LDRH    R0, [R5,#0x94]\n"
 299                  "CMP     R0, #0\n"
 300                  "BNE     loc_FFC4F0B8\n"
 301  "loc_FFC4F074:\n"
 302                  "LDRH    R0, [R5,#0x90]\n"
 303                  "CMP     R0, #1\n"
 304                  "BNE     loc_FFC4F0B8\n"
 305                  "LDR     R0, [R4,#0xC]\n"
 306                  "CMP     R0, #1\n"
 307                  "BLS     loc_FFC4F0B8\n"
 308                  "LDR     R0, [R4,#0x10]\n"
 309                  "CMP     R0, #1\n"
 310                  "BNE     loc_FFC4F0B8\n"
 311  "loc_FFC4F098:\n"
 312                  "LDR     R3, =0x269\n"
 313                  "LDR     R0, =0x2AD0\n"
 314                  "STR     R3, [SP]\n"
 315                  "LDR     R0, [R0]\n"
 316                  "LDR     R2, =0xEA60\n"
 317                  "LDR     R3, =0xFFC4EF30\n"    // aSsshoottask_c
 318                  "MOV     R1, #0x40000000\n"
 319                  "BL      sub_FFC54530\n"
 320  "loc_FFC4F0B8:\n"
 321                  "BL      sub_FFC4EEC0\n"
 322                  "MOV     R0, #2\n"
 323                  "BL      sub_FFC4BB58\n"
 324                  "BL      sub_FFC4FF04\n"
 325                  "MOV     R0, R4\n"
 326                  "BL      sub_FFC50284\n"
 327                  "MOV     R0, R4\n"
 328                  "BL      sub_FFD17804\n"
 329                  "CMP     R0, #0\n"
 330                  "MOV     R0, R4\n"
 331                  "BEQ     loc_FFC4F100\n"
 332                  "BL      sub_FFD178E4\n"
 333                  "TST     R0, #1\n"
 334                  "MOVNE   R2, R4\n"
 335                  "LDMNEFD SP!, {R3-R7,LR}\n"
 336                  "MOVNE   R1, #1\n"
 337                  "BNE     sub_FFC4D7DC\n"
 338                  "B       loc_FFC4F104\n"
 339  "loc_FFC4F100:\n"
 340                  "BL      sub_FFD17878\n"
 341  "loc_FFC4F104:\n"
 342                  "MOV     R0, #0\n"
 343                  "STR     R0, [SP]\n"
 344                  "LDRH    R0, [R5,#0x96]\n"
 345                  "MOV     R2, #2\n"
 346                  "MOV     R1, SP\n"
 347                  "CMP     R0, #3\n"
 348                  "LDRNE   R0, [R4,#0xC]\n"
 349                  "CMPNE   R0, #1\n"
 350                  "MOVHI   R0, #1\n"
 351                  "STRHI   R0, [SP]\n"
 352                  "LDR     R0, =0x127\n"
 353                  "BL      sub_FFC60BE4\n"
 354                  "BL      sub_FFD39CAC\n"
 355                  "BL      sub_FFC60E70\n"
 356                  "STR     R0, [R4,#0x18]\n"
 357                  "MOV     R0, R4\n"
 358                  "BL      sub_FFD18D84\n"
 359                  "BL      sub_FFD197CC\n"
 360                  "MOV     R0, R4\n"
 361                  "BL      sub_FFD18E4C_my\n"            //-------------------->
 362                  "MOV     R6, R0\n"
 363                  "BL      capt_seq_hook_raw_here\n"     // added
 364                  "BL      sub_FFC52918\n"
 365                  "BL      sub_FFC52960\n"
 366                  "BL      sub_FFC529A0\n"
 367                  "MOV     R2, R4\n"
 368                  "MOV     R1, #1\n"
 369                  "MOV     R0, R6\n"
 370                  "BL      sub_FFC4D7DC\n"
 371                  "BL      sub_FFD190F4\n"
 372                  "CMP     R0, #0\n"
 373                  "LDRNE   R0, [R4,#8]\n"
 374                  "ORRNE   R0, R0, #0x2000\n"
 375                  "STRNE   R0, [R4,#8]\n"
 376                  "LDRH    R0, [R5,#0x96]\n"
 377                  "CMP     R0, #3\n"
 378                  "BEQ     locret_FFC4F1B0\n"
 379                  "LDRH    R0, [R5,#0x94]\n"
 380                  "CMP     R0, #0\n"
 381                  "LDREQH  R0, [R5,#0x90]\n"
 382                  "CMPEQ   R0, #2\n"
 383                  "MOVEQ   R0, R4\n"
 384                  "LDMEQFD SP!, {R3-R7,LR}\n"
 385                  "BEQ     sub_FFC50438\n"
 386  "locret_FFC4F1B0:\n"
 387                  "LDMFD   SP!, {R3-R7,PC}\n"
 388     );
 389 }
 390 
 391 
 392 void __attribute__((naked,noinline)) sub_FFD18E4C_my(){
 393  asm volatile(
 394                  "STMFD   SP!, {R0-R8,LR}\n"
 395                  "MOV     R4, R0\n"
 396                  "BL      sub_FFD1992C\n"
 397                  "MVN     R1, #0\n"
 398                  "BL      sub_FFC58EB0\n"
 399                  "LDR     R5, =0x6690\n"
 400                  "LDR     R0, [R5,#0xC]\n"
 401                  "CMP     R0, #0\n"
 402                  "BNE     loc_FFD18E9C\n"
 403                  "MOV     R1, #1\n"
 404                  "MOV     R0, #0\n"
 405                  "BL      sub_FFC16DE4\n"
 406                  "STR     R0, [R5,#0xC]\n"
 407                  "MOV     R3, #0\n"
 408                  "STR     R3, [SP]\n"
 409                  "LDR     R3, =0xFFD18828\n"
 410                  "LDR     R0, =0xFFD190B8\n"    // aShuttersoundtask
 411                  "MOV     R2, #0x400\n"
 412                  "MOV     R1, #0x17\n"
 413                  "BL      sub_FFC16DB0\n"       // KernelCreateTask
 414  "loc_FFD18E9C:\n"
 415                  "MOV     R2, #4\n"
 416                  "ADD     R1, SP, #0x8\n"
 417                  "MOV     R0, #0x8A\n"
 418                  "BL      sub_FFC60CE0\n"       // PT_GetPropertyCaseString_0
 419                  "TST     R0, #1\n"
 420                  "LDRNE   R1, =0x3C5\n"
 421                  "LDRNE   R0, =0xFFD18A94\n"    // aSscaptureseq_c
 422                  "BLNE    sub_FFC0B048\n"       // DebugAssert
 423                  "LDR     R6, =0x13D58\n"
 424                  "LDR     R8, =0x13C94\n"
 425                  "LDRSH   R2, [R6,#0xC]\n"
 426                  "LDRSH   R1, [R6,#0xE]\n"
 427                  "LDR     R0, [R8,#0x8C]\n"
 428                  "BL      sub_FFCDE6FC\n"
 429                  "BL      sub_FFC39464\n"       // GetCCDTemperature
 430                  "LDR     R3, =0x6698\n"
 431                  "STRH    R0, [R4,#0xA4]\n"
 432                  "SUB     R2, R3, #4\n"
 433                  "STRD    R2, [SP]\n"
 434                  "MOV     R1, R0\n"
 435                  "LDRH    R0, [R8,#0x54]\n"
 436                  "LDRSH   R2, [R6,#0xC]\n"
 437                  "SUB     R3, R3, #8\n"
 438                  "BL      sub_FFD1AF5C\n"
 439                  "BL      wait_until_remote_button_is_released\n"       //---------->
 440                  "BL      capt_seq_hook_set_nr\n"                       //---------->
 441                  "B       sub_FFD18EFC\n"               // continue function in firmware
 442     );
 443 }
 444 
 445 
 446 void __attribute__((naked,noinline)) exp_drv_task(){
 447     asm volatile(
 448                 "STMFD   SP!, {R4-R8,LR}\n"
 449                 "SUB     SP, SP, #0x20\n"
 450                 "LDR     R8, =0xBB8\n"
 451                 "LDR     R7, =0x3FF8\n"
 452                 "LDR     R5, =0x18964\n"
 453                 "MOV     R0, #0\n"
 454                 "ADD     R6, SP, #0x10\n"
 455                 "STR     R0, [SP,#0x0C]\n"              // var_0c = 0
 456  "loc_FFC86EA0:\n"
 457                 "LDR     R0, [R7,#0x20]\n"
 458                 "MOV     R2, #0\n"
 459                 "ADD     R1, SP, #0x1C\n"
 460                 "BL      sub_FFC1659C\n"
 461                 "LDR     R0, [SP,#0x0C]\n"
 462                 "CMP     R0, #1\n"
 463                 "BNE     loc_FFC86EEC\n"                // var_0 != 1 ->
 464                 "LDR     R0, [SP,#0x1C]\n"
 465                 "LDR     R0, [R0]\n"
 466                 "CMP     R0, #0x13\n"
 467                 "CMPNE   R0, #0x14\n"
 468                 "CMPNE   R0, #0x15\n"
 469                 "CMPNE   R0, #0x16\n"
 470                 "BEQ     loc_FFC87008\n"                // *var_1c = 0x13, 0x14, 0x15 or 0x16
 471                 "CMP     R0, #0x28\n"
 472                 "BEQ     loc_FFC86FE0\n"
 473                 "ADD     R1, SP, #0x0C\n"
 474                 "MOV     R0, #0\n"
 475                 "BL      sub_FFC86E30\n"
 476  "loc_FFC86EEC:\n"
 477                 "LDR     R0, [SP,#0x1C]\n"
 478                 "LDR     R1, [R0]\n"
 479                 "CMP     R1, #0x2D\n"
 480                 "BNE     loc_FFC86F1C\n"                // if *var_1c != 0x2D (45)
 481                 "LDR     R0, [SP,#0x1C]\n"
 482                 "BL      sub_FFC880E8\n"
 483                 "LDR     R0, [R7,#0x1C]\n"
 484                 "MOV     R1, #1\n"
 485                 "BL      sub_FFC58E7C\n"
 486                 "BL      sub_FFC0B000\n"                // eventproc_export_ExitTask
 487                 "ADD     SP, SP, #0x20\n"
 488                 "LDMFD   SP!, {R4-R8,PC}\n"
 489  "loc_FFC86F1C:\n"      // r1 = *var_1c != 0x2D
 490                 "CMP     R1, #0x2C\n"
 491                 "BNE     loc_FFC86F38\n"                // if *var_1c != 0x2C (44)
 492                 "LDR     R2, [R0,#0x8C]!\n"
 493                 "LDR     R1, [R0,#4]\n"
 494                 "MOV     R0, R1\n"
 495                 "BLX     R2\n"
 496                 "B       loc_FFC87430\n"
 497  "loc_FFC86F38:\n"      // r1 = *var_1c != 0x2C, 0x2D
 498                 "CMP     R1, #0x26\n"
 499                 "BNE     loc_FFC86F88\n"                // if *var_1c != 0x26 (38)
 500                 "LDR     R0, [R7,#0x1C]\n"
 501                 "MOV     R1, #0x80\n"
 502                 "BL      sub_FFC58EB0\n"
 503                 "LDR     R0, =0xFFC835BC\n"
 504                 "MOV     R1, #0x80\n"
 505                 "BL      sub_FFD0D1E0\n"
 506                 "LDR     R0, [R7,#0x1C]\n"
 507                 "MOV     R2, R8\n"
 508                 "MOV     R1, #0x80\n"
 509                 "BL      sub_FFC58DBC\n"
 510                 "TST     R0, #1\n"
 511                 "LDRNE   R1, =0xE54\n"                  // DebugAssert
 512                 "BNE     loc_FFC86FCC\n"                //      (ExpDrv.c:3668)
 513  "loc_FFC86F74:\n"
 514                 "LDR     R1, [SP,#0x1C]\n"
 515                 "LDR     R0, [R1,#0x90]\n"
 516                 "LDR     R1, [R1,#0x8C]\n"
 517                 "BLX     R1\n"                          // hook?
 518                 "B       loc_FFC87430\n"
 519  "loc_FFC86F88:\n"      // r1 = *var_1c != 0x26, 0x2C, 0x2D
 520                 "CMP     R1, #0x27\n"
 521                 "BNE     loc_FFC86FD8\n"                // if *var_1c != 0x27 (39)
 522                 "ADD     R1, SP, #0x0C\n"
 523                 "BL      sub_FFC86E30\n"
 524                 "LDR     R0, [R7,#0x1C]\n"
 525                 "MOV     R1, #0x100\n"
 526                 "BL      sub_FFC58EB0\n"
 527                 "LDR     R0, =0xFFC835CC\n"
 528                 "MOV     R1, #0x100\n"
 529                 "BL      sub_FFD0DB70\n"
 530                 "LDR     R0, [R7,#0x1C]\n"
 531                 "MOV     R2, R8\n"
 532                 "MOV     R1, #0x100\n"
 533                 "BL      sub_FFC58DBC\n"
 534                 "TST     R0, #1\n"
 535                 "BEQ     loc_FFC86F74\n"
 536                 "LDR     R1, =0xE5E\n"                  // DebugAssert(ExpDrv.c:3678)
 537  "loc_FFC86FCC:\n"
 538                 "LDR     R0, =0xFFC83C30\n"             // "ExpDrv.c"
 539                 "BL      sub_FFC0B048\n"                // call DebugAssert
 540                 "B       loc_FFC86F74\n"
 541  "loc_FFC86FD8:\n"      // r1 = *var_1c != 0x26, 0x27, 0x2C, 0x2D
 542                 "CMP     R1, #0x28\n"
 543                 "BNE     loc_FFC86FF0\n"                // if *var_1c != 0x28 (40)
 544  "loc_FFC86FE0:\n"
 545                 "LDR     R0, [SP,#0x1C]\n"
 546                 "ADD     R1, SP, #0x0C\n"
 547                 "BL      sub_FFC86E30\n"                // ExpDrv.c:512
 548                 "B       loc_FFC86F74\n"
 549  "loc_FFC86FF0:\n"      // r1 = *var_1c !=  0x26, 0x27, 0x28, 0x2C, 0x2D
 550                 "CMP     R1, #0x2B\n"
 551                 "BNE     loc_FFC87008\n"                // if *var_1c != 0x2B (43)
 552                 "BL      sub_FFC77038\n"                // Shutter.c:2
 553                 "BL      sub_FFC77C5C\n"                // ImgPixel.c:272
 554                 "BL      sub_FFC777B0\n"                // ImgGain.c:?
 555                 "B       loc_FFC86F74\n"
 556 // two entry points here
 557 // first if *var_1c == 0x13, 0x14, 0x15 or 0x16
 558 // second implies *var_1c != 0x26, 0x27, 0x28, 0x2B, 0x2C, 0x2D
 559  "loc_FFC87008:\n"
 560                 "LDR     R0, [SP,#0x1C]\n"              // need to reload *var_1c
 561                 "MOV     R4, #1\n"
 562                 "LDR     R1, [R0]\n"
 563                 "CMP     R1, #0x11\n"
 564                 "CMPNE   R1, #0x12\n"
 565                 "BNE     loc_FFC87078\n"                // if (r1 != 0x11) && (r1 != 0x12)
 566                 "LDR     R1, [R0,#0x7C]\n"
 567                 "ADD     R1, R1, R1,LSL#1\n"
 568                 "ADD     R1, R0, R1,LSL#2\n"
 569                 "SUB     R1, R1, #8\n"
 570                 "LDMIA   R1, {R2-R4}\n"
 571                 "STMIA   R6, {R2-R4}\n"
 572                 "BL      sub_FFC85798\n"                //2check (?)
 573                 "LDR     R0, [SP,#0x1C]\n"
 574                 "LDR     R1, [R0,#0x7C]\n"
 575                 "LDR     R3, [R0,#0x8C]\n"
 576                 "LDR     R2, [R0,#0x90]\n"
 577                 "ADD     R0, R0, #4\n"
 578                 "BLX     R3\n"
 579                 "LDR     R0, [SP,#0x1C]\n"
 580                 "BL      sub_FFC884AC\n"                // ExpDrv.c:?
 581                 "LDR     R0, [SP,#0x1C]\n"
 582                 "LDR     R1, [R0,#0x7C]\n"
 583                 "LDR     R3, [R0,#0x94]\n"
 584                 "LDR     R2, [R0,#0x98]\n"
 585                 "ADD     R0, R0, #4\n"
 586                 "BLX     R3\n"                          // Call some hooked whatever?
 587                 "B       loc_FFC87370\n"
 588  "loc_FFC87078:\n"      // *var_1c != 0x11, 0x12, 0x26, 0x27, 0x28, 0x2B, 0x2C, 0x2D
 589                 "CMP     R1, #0x13\n"
 590                 "CMPNE   R1, #0x14\n"
 591                 "CMPNE   R1, #0x15\n"
 592                 "CMPNE   R1, #0x16\n"
 593                 "BNE     loc_FFC87130\n"                // if r1 != 0x13, 0x14, 0x15, 0x16
 594                 "ADD     R3, SP, #0x0C\n"
 595                 "MOV     R2, SP\n"
 596                 "ADD     R1, SP, #0x10\n"
 597                 "BL      sub_FFC85A80\n"                // ExpDrv.c:?
 598                 "CMP     R0, #1\n"
 599                 "MOV     R4, R0\n"
 600                 "CMPNE   R4, #5\n"
 601                 "BNE     loc_FFC870CC\n"
 602                 "LDR     R0, [SP,#0x1C]\n"
 603                 "MOV     R2, R4\n"
 604                 "LDR     R1, [R0,#0x7C]!\n"
 605                 "LDR     R12, [R0,#0x10]!\n"
 606                 "LDR     R3, [R0,#4]\n"
 607                 "MOV     R0, SP\n"
 608                 "BLX     R12\n"                 // Another hook?
 609                 "B       loc_FFC87104\n"
 610  "loc_FFC870CC:\n"
 611                 "LDR     R0, [SP,#0x1C]\n"
 612                 "CMP     R4, #2\n"
 613                 "LDR     R3, [R0,#0x90]\n"
 614                 "CMPNE   R4, #6\n"
 615                 "BNE     loc_FFC87118\n"
 616                 "LDR     R12, [R0,#0x8C]\n"
 617                 "MOV     R0, SP\n"
 618                 "MOV     R2, R4\n"
 619                 "MOV     R1, #1\n"
 620                 "BLX     R12\n"
 621                 "LDR     R0, [SP,#0x1C]\n"
 622                 "MOV     R2, SP\n"
 623                 "ADD     R1, SP, #0x10\n"
 624                 "BL      sub_FFC86B38\n"                // ExpDrv.c:?
 625  "loc_FFC87104:\n"
 626                 "LDR     R0, [SP,#0x1C]\n"
 627                 "LDR     R2, [SP,#0x0C]\n"
 628                 "MOV     R1, R4\n"
 629                 "BL      sub_FFC86DD0\n"                // ExpDrv.c:2
 630                 "B       loc_FFC87370\n"
 631  "loc_FFC87118:\n"
 632                 "LDR     R1, [R0,#0x7C]\n"
 633                 "LDR     R12, [R0,#0x8C]\n"
 634                 "ADD     R0, R0, #4\n"
 635                 "MOV     R2, R4\n"
 636                 "BLX     R12\n"                 // Some hook
 637                 "B       loc_FFC87370\n"
 638  "loc_FFC87130:\n"      // *var_1c != 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x26, 0x27, 0x28, 0x2B, 0x2C, 0x2D
 639                 "CMP     R1, #0x22\n"
 640                 "CMPNE   R1, #0x23\n"
 641                 "BNE     loc_FFC8717C\n"                // jump table, if r1 != 0x22, 0x23
 642                 "LDR     R1, [R0,#0x7C]\n"
 643                 "ADD     R1, R1, R1,LSL#1\n"
 644                 "ADD     R1, R0, R1,LSL#2\n"
 645                 "SUB     R1, R1, #8\n"
 646                 "LDMIA   R1, {R2-R4}\n"
 647                 "STMIA   R6, {R2-R4}\n"
 648                 "BL      sub_FFC84CDC\n"                // ExpDrv.c:?
 649                 "LDR     R0, [SP,#0x1C]\n"
 650                 "LDR     R1, [R0,#0x7C]\n"
 651                 "LDR     R3, [R0,#0x8C]\n"
 652                 "LDR     R2, [R0,#0x90]\n"
 653                 "ADD     R0, R0, #4\n"
 654                 "BLX     R3\n"
 655                 "LDR     R0, [SP,#0x1C]\n"
 656                 "BL      sub_FFC84FDC\n"                // ExpDrv.c:?
 657                 "B       loc_FFC87370\n"
 658  "loc_FFC8717C:\n"      // *var_1c != 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x22, 0x23, 0x26, 0x27, 0x28, 0x2B, 0x2C, 0x2D
 659                 "ADD     R1, R0, #4\n"
 660                 "LDMIA   R1, {R2,R3,R12}\n"
 661                 "STMIA   R6, {R2,R3,R12}\n"
 662                 "LDR     R1, [R0]\n"                    // r1 is now var_1c from (loc_FFC87008)
 663                 "CMP     R1, #0x25\n"
 664                 "ADDLS   PC, PC, R1,LSL#2\n"            // Jump around in jump table, 38 entries (0-37)
 665 //------------------------ Start of jump table ------------------------
 666 // Do NOT modify this lines unless you really know what you are doing!
 667                 "B       loc_FFC87350\n"                // 0
 668  "loc_FFC87198:\n"
 669                 "B       loc_FFC87230\n"                // 1
 670  "loc_FFC8719C:\n"
 671                 "B       loc_FFC87230\n"                // 2
 672  "loc_FFC871A0:\n"
 673                 "B       loc_FFC87238\n"                // 3
 674  "loc_FFC871A4:\n"
 675                 "B       loc_FFC87240\n"                // 4
 676  "loc_FFC871A8:\n"
 677                 "B       loc_FFC87240\n"                // 5
 678  "loc_FFC871AC:\n"
 679                 "B       loc_FFC87240\n"                // 6
 680  "loc_FFC871B0:\n"
 681                 "B       loc_FFC87230\n"                // 7
 682  "loc_FFC871B4:\n"
 683                 "B       loc_FFC87238\n"                // 8
 684  "loc_FFC871B8:\n"
 685                 "B       loc_FFC87240\n"                // 9
 686  "loc_FFC871BC:\n"
 687                 "B       loc_FFC87240\n"                // 10
 688  "loc_FFC871C0:\n"
 689                 "B       loc_FFC87258\n"                // 11 
 690  "loc_FFC871C4:\n"
 691                 "B       loc_FFC87258\n"                // 12
 692  "loc_FFC871C8:\n"
 693                 "B       loc_FFC87344\n"                // 13
 694  "loc_FFC871CC:\n"
 695                 "B       loc_FFC8734C\n"                // 14
 696  "loc_FFC871D0:\n"
 697                 "B       loc_FFC8734C\n"                // 15
 698  "loc_FFC871D4:\n"
 699                 "B       loc_FFC8734C\n"                // 16
 700  "loc_FFC871D8:\n"
 701                 "B       loc_FFC8734C\n"                // 17 (never called?)
 702  "loc_FFC871DC:\n"
 703                 "B       loc_FFC87350\n"                // 18 (never called?)
 704  "loc_FFC871E0:\n"
 705                 "B       loc_FFC87350\n"                // 19 (never called?)
 706  "loc_FFC871E4:\n"
 707                 "B       loc_FFC87350\n"                // 20 (never called?)
 708  "loc_FFC871E8:\n"
 709                 "B       loc_FFC87350\n"                // 21 (never called?)
 710  "loc_FFC871EC:\n"
 711                 "B       loc_FFC87350\n"                // 22 (never called?)
 712  "loc_FFC871F0:\n"
 713                 "B       loc_FFC87350\n"                // 23
 714  "loc_FFC871F4:\n"
 715                 "B       loc_FFC87248\n"                // 24
 716  "loc_FFC871F8:\n"
 717                 "B       loc_FFC87250\n"                // 25
 718  "loc_FFC871FC:\n"
 719                 "B       loc_FFC87250\n"                // 26
 720  "loc_FFC87200:\n"
 721                 "B       loc_FFC87264\n"                // 27
 722  "loc_FFC87204:\n"
 723                 "B       loc_FFC87264\n"                // 28
 724  "loc_FFC87208:\n"
 725                 "B       loc_FFC8726C\n"                // 29
 726  "loc_FFC8720C:\n"
 727                 "B       loc_FFC8729C\n"                // 30
 728  "loc_FFC87210:\n"
 729                 "B       loc_FFC872CC\n"                // 31
 730  "loc_FFC87214:\n"
 731                 "B       loc_FFC872FC\n"                // 32
 732  "loc_FFC87218:\n"
 733                 "B       loc_FFC8732C\n"                // 33
 734  "loc_FFC8721C:\n"
 735                 "B       loc_FFC8732C\n"                // 34 (never called?)
 736  "loc_FFC87220:\n"
 737                 "B       loc_FFC87350\n"                // 35 (never called?)
 738  "loc_FFC87224:\n"
 739                 "B       loc_FFC87350\n"                // 36
 740  "loc_FFC87228:\n"
 741                 "B       loc_FFC87334\n"                // 37
 742  "loc_FFC8722C:\n"
 743                 "B       loc_FFC8733C\n"                // 38
 744 //------------------------- End of jump table -------------------------
 745  "loc_FFC87230:\n"      // 0, 1, 6
 746                 "BL      sub_FFC83AD4\n"                // ExpDrv.c:2
 747                 "B       loc_FFC87350\n"
 748  "loc_FFC87238:\n"      // 2, 7
 749                 "BL      sub_FFC83D5C\n"                // ExpDrv.c:?
 750                 "B       loc_FFC87350\n"
 751  "loc_FFC87240:\n"      // 3 - 5, 8, 9
 752                 "BL      sub_FFC83F64\n"                // ExpDrv.c:?
 753                 "B       loc_FFC87350\n"
 754  "loc_FFC87248:\n"      // 23
 755                 "BL      sub_FFC841DC\n"                // ExpDrv.c:2
 756                 "B       loc_FFC87350\n"
 757  "loc_FFC87250:\n"      // 24, 25
 758                 "BL      sub_FFC843D4\n"                // ExpDrv.c:?
 759                 "B       loc_FFC87350\n"
 760  "loc_FFC87258:\n"      // 10, 11
 761                 "BL      sub_FFC84690_my\n"             //----------------->
 762                 "MOV     R4, #0\n"                      // R4 = 0
 763                 "B       loc_FFC87350\n"
 764  "loc_FFC87264:\n"      // 26, 27
 765                 "BL      sub_FFC847D0\n"                // ExpDrv.c:0
 766                 "B       loc_FFC87350\n"
 767  "loc_FFC8726C:\n"      // 28
 768                 "LDRH    R1, [R0,#4]\n"
 769                 "STRH    R1, [SP,#0x10]\n"
 770                 "LDRH    R1, [R5,#2]\n"
 771                 "STRH    R1, [SP,#0x12]\n"
 772                 "LDRH    R1, [R5,#4]\n"
 773                 "STRH    R1, [SP,#0x14]\n"
 774                 "LDRH    R1, [R5,#6]\n"
 775                 "STRH    R1, [SP,#0x16]\n"
 776                 "LDRH    R1, [R0,#0xC]\n"
 777                 "STRH    R1, [SP,#0x18]\n"
 778                 "BL      sub_FFC8815C\n"                // ExpDrv.c:2
 779                 "B       loc_FFC87350\n"
 780  "loc_FFC8729C:\n"      // 29
 781                 "LDRH    R1, [R0,#4]\n"
 782                 "STRH    R1, [SP,#0x10]\n"
 783                 "LDRH    R1, [R5,#2]\n"
 784                 "STRH    R1, [SP,#0x12]\n"
 785                 "LDRH    R1, [R5,#4]\n"
 786                 "STRH    R1, [SP,#0x14]\n"
 787                 "LDRH    R1, [R5,#6]\n"
 788                 "STRH    R1, [SP,#0x16]\n"
 789                 "LDRH    R1, [R5,#8]\n"
 790                 "STRH    R1, [SP,#0x18]\n"
 791                 "BL      sub_FFC882C4\n"                // 
 792                 "B       loc_FFC87350\n"
 793  "loc_FFC872CC:\n"      // 30
 794                 "LDRH    R1, [R5]\n"
 795                 "STRH    R1, [SP,#0x10]\n"
 796                 "LDRH    R1, [R0,#6]\n"
 797                 "STRH    R1, [SP,#0x12]\n"
 798                 "LDRH    R1, [R5,#4]\n"
 799                 "STRH    R1, [SP,#0x14]\n"
 800                 "LDRH    R1, [R5,#6]\n"
 801                 "STRH    R1, [SP,#0x16]\n"
 802                 "LDRH    R1, [R5,#8]\n"
 803                 "STRH    R1, [SP,#0x18]\n"
 804                 "BL      sub_FFC88370\n"
 805                 "B       loc_FFC87350\n"
 806  "loc_FFC872FC:\n"      // 31
 807                 "LDRH    R1, [R5]\n"
 808                 "STRH    R1, [SP,#0x10]\n"
 809                 "LDRH    R1, [R5,#2]\n"
 810                 "STRH    R1, [SP,#0x12]\n"
 811                 "LDRH    R1, [R5,#4]\n"
 812                 "STRH    R1, [SP,#0x14]\n"
 813                 "LDRH    R1, [R5,#6]\n"
 814                 "STRH    R1, [SP,#0x16]\n"
 815                 "LDRH    R1, [R0,#0xC]\n"
 816                 "STRH    R1, [SP,#0x18]\n"
 817                 "BL      sub_FFC88410\n"
 818                 "B       loc_FFC87350\n"
 819  "loc_FFC8732C:\n"      // 32, 33
 820                 "BL      sub_FFC84B18\n"
 821                 "B       loc_FFC87350\n"
 822  "loc_FFC87334:\n"      // 36
 823                 "BL      sub_FFC850E0\n"
 824                 "B       loc_FFC87350\n"
 825  "loc_FFC8733C:\n"      // 37
 826                 "BL      sub_FFC8531C\n"
 827                 "B       loc_FFC87350\n"
 828  "loc_FFC87344:\n"      // 12
 829                 "BL      sub_FFC85498\n"
 830                 "B       loc_FFC87350\n"
 831  "loc_FFC8734C:\n"      // 13 - 16
 832                 "BL      sub_FFC85634\n"
 833  "loc_FFC87350:\n"      // (17 - 22), (34), (35). Entries continue here.
 834                 "LDR     R0, [SP,#0x1C]\n"
 835                 "LDR     R1, [R0,#0x7C]\n"
 836                 "LDR     R3, [R0,#0x8C]\n"
 837                 "LDR     R2, [R0,#0x90]\n"
 838                 "ADD     R0, R0, #4\n"
 839                 "BLX     R3\n"
 840                 "CMP     R4, #1\n"
 841                 "BNE     loc_FFC873B8\n"
 842  "loc_FFC87370:\n"
 843                 "LDR     R0, [SP,#0x1C]\n"
 844                 "MOV     R2, #0xC\n"
 845                 "LDR     R1, [R0,#0x7C]\n"
 846                 "ADD     R1, R1, R1,LSL#1\n"
 847                 "ADD     R0, R0, R1,LSL#2\n"
 848                 "SUB     R4, R0, #8\n"
 849                 "LDR     R0, =0x18964\n"
 850                 "ADD     R1, SP, #0x10\n"
 851                 "BL      sub_FFE90B58\n"
 852                 "LDR     R0, =0x18970\n"
 853                 "MOV     R2, #0xC\n"
 854                 "ADD     R1, SP, #0x10\n"
 855                 "BL      sub_FFE90B58\n"
 856                 "LDR     R0, =0x1897C\n"
 857                 "MOV     R2, #0xC\n"
 858                 "MOV     R1, R4\n"
 859                 "BL      sub_FFE90B58\n"
 860                 "B       loc_FFC87430\n"
 861  "loc_FFC873B8:\n"
 862                 "LDR     R0, [SP,#0x1C]\n"
 863                 "LDR     R0, [R0]\n"
 864                 "CMP     R0, #0xB\n"
 865                 "BNE     loc_FFC87400\n"
 866                 "MOV     R3, #0\n"
 867                 "STR     R3, [SP]\n"
 868                 "MOV     R3, #1\n"
 869                 "MOV     R2, #1\n"
 870                 "MOV     R1, #1\n"
 871                 "MOV     R0, #0\n"
 872                 "BL      sub_FFC838DC\n"
 873                 "MOV     R3, #0\n"
 874                 "STR     R3, [SP]\n"
 875                 "MOV     R3, #1\n"
 876                 "MOV     R2, #1\n"
 877                 "MOV     R1, #1\n"
 878                 "MOV     R0, #0\n"
 879                 "B       loc_FFC8742C\n"
 880  "loc_FFC87400:\n"
 881                 "MOV     R3, #1\n"
 882                 "MOV     R2, #1\n"
 883                 "MOV     R1, #1\n"
 884                 "MOV     R0, #1\n"
 885                 "STR     R3, [SP]\n"
 886                 "BL      sub_FFC838DC\n"
 887                 "MOV     R3, #1\n"
 888                 "MOV     R2, #1\n"
 889                 "MOV     R1, #1\n"
 890                 "MOV     R0, #1\n"
 891                 "STR     R3, [SP]\n"
 892  "loc_FFC8742C:\n"
 893                 "BL      sub_FFC83A1C\n"
 894  "loc_FFC87430:\n"
 895                 "LDR     R0, [SP,#0x1C]\n"
 896                 "BL      sub_FFC880E8\n"
 897                 "B       loc_FFC86EA0\n" 
 898     );
 899 }
 900 
 901 void __attribute__((naked,noinline)) sub_FFC84690_my(){
 902     asm volatile(
 903                 "STMFD   SP!, {R4-R8,LR}\n"
 904                 "LDR     R7, =0x3FF8\n"
 905                 "MOV     R4, R0\n"
 906                 "LDR     R0, [R7,#0x1C]\n"
 907                 "MOV     R1, #0x3E\n"
 908                 "BL      sub_FFC58EB0\n"
 909                 "LDRSH   R0, [R4,#4]\n"
 910                 "MOV     R2, #0\n"
 911                 "MOV     R1, #0\n"
 912                 "BL      sub_FFC83640\n"
 913                 "MOV     R6, R0\n"
 914                 "LDRSH   R0, [R4,#6]\n"
 915                 "BL      sub_FFC83750\n"
 916                 "LDRSH   R0, [R4,#8]\n"
 917                 "BL      sub_FFC837A8\n"
 918                 "LDRSH   R0, [R4,#0xA]\n"
 919                 "BL      sub_FFC83800\n"
 920                 "LDRSH   R0, [R4,#0xC]\n"
 921                 "MOV     R1, #0\n"
 922                 "BL      sub_FFC83858\n"
 923                 "MOV     R5, R0\n"
 924                 "LDR     R0, [R4]\n"
 925                 "LDR     R8, =0x1897C\n"
 926                 "CMP     R0, #0xB\n"
 927                 "MOVEQ   R6, #0\n"
 928                 "MOVEQ   R5, #0\n"
 929                 "BEQ     loc_FFC84724\n"
 930                 "CMP     R6, #1\n"
 931                 "BNE     loc_FFC84724\n"
 932                 "LDRSH   R0, [R4,#4]\n"
 933                 "LDR     R1, =0xFFC835AC\n"
 934                 "MOV     R2, #2\n"
 935                 "BL      sub_FFD0D52C\n"
 936                 "STRH    R0, [R4,#4]\n"
 937                 "MOV     R0, #0\n"
 938                 "STR     R0, [R7,#0x28]\n"
 939                 "B       loc_FFC8472C\n"
 940  "loc_FFC84724:\n"
 941                 "LDRH    R0, [R8]\n"
 942                 "STRH    R0, [R4,#4]\n"
 943  "loc_FFC8472C:\n"
 944                 "CMP     R5, #1\n"
 945                 "LDRNEH  R0, [R8,#8]\n"
 946                 "BNE     loc_FFC84748\n"
 947                 "LDRSH   R0, [R4,#0xC]\n"
 948                 "LDR     R1, =0xFFC83630\n"
 949                 "MOV     R2, #0x20\n"
 950                 "BL      sub_FFC88118\n"
 951  "loc_FFC84748:\n"
 952                 "STRH    R0, [R4,#0xC]\n"
 953                 "LDRSH   R0, [R4,#6]\n"
 954                 "BL      sub_FFC76DA8_my\n"             //---------------->
 955                 "LDRSH   R0, [R4,#8]\n"
 956                 "MOV     R1, #1\n"
 957                 "BL      sub_FFC774F8\n"
 958                 "MOV     R1, #0\n"
 959                 "ADD     R0, R4, #8\n"
 960                 "BL      sub_FFC77580\n"
 961                 "LDRSH   R0, [R4,#0xE]\n"
 962                 "BL      sub_FFC7F100\n"
 963                 "LDR     R4, =0xBB8\n"
 964                 "CMP     R6, #1\n"
 965                 "BNE     loc_FFC847A0\n"
 966                 "LDR     R0, [R7,#0x1C]\n"
 967                 "MOV     R2, R4\n"
 968                 "MOV     R1, #2\n"
 969                 "BL      sub_FFC58DBC\n"
 970                 "TST     R0, #1\n"
 971                 "SUBNE   R1, R4, #0x620\n"
 972                 "LDRNE   R0, =0xFFC83C30\n"             // "ExpDrv.c"
 973                 "BLNE    sub_FFC0B048\n"                // DebugAssert
 974  "loc_FFC847A0:\n"
 975                 "CMP     R5, #1\n"
 976                 "LDMNEFD SP!, {R4-R8,PC}\n"
 977                 "LDR     R0, [R7,#0x1C]\n"
 978                 "MOV     R2, R4\n"
 979                 "MOV     R1, #0x20\n"
 980                 "BL      sub_FFC58DBC\n"
 981                 "TST     R0, #1\n"
 982                 "LDRNE   R1, =0x59D\n"
 983                 "LDRNE   R0, =0xFFC83C30\n"             // aExpdrv_c
 984                 "LDMNEFD SP!, {R4-R8,LR}\n"
 985                 "BNE     sub_FFC0B048\n"                // DebugAssert
 986                 "LDMFD   SP!, {R4-R8,PC}\n"
 987     );
 988 }
 989 
 990 
 991 void __attribute__((naked,noinline)) sub_FFC76DA8_my(){
 992     asm volatile(
 993                 "STMFD   SP!, {R4-R6,LR}\n"
 994                 "LDR     R5, =0x3D08\n"
 995                 "MOV     R4, R0\n"
 996                 "LDR     R0, [R5,#4]\n"
 997                 "CMP     R0, #1\n"
 998                 "LDRNE   R1, =0x146\n"
 999                 "LDRNE   R0, =0xFFC76BAC\n"
1000                 "BLNE    sub_FFC0B048\n"                // DebugAssert(Shutter.c:326)
1001                 "CMN     R4, #0xC00\n"
1002                 "LDREQSH R4, [R5,#2]\n"
1003                 "CMN     R4, #0xC00\n"
1004                 "MOVEQ   R1, #0x14C\n"
1005                 "LDREQ   R0, =0xFFC76BAC\n"
1006                 "STRH    R4, [R5,#2]\n"
1007                 "BLEQ    sub_FFC0B048\n"                // DebugAssert(Shutter.c:332)
1008                 "MOV     R0, R4\n"
1009                 "BL      apex2us\n"                     // changed (call our own apex2us)
1010                 "MOV     R4, R0\n"
1011                 //"BL      nullsub_65\n"                // removed (null sub)
1012                 "MOV     R0, R4\n"
1013                 "BL      sub_FFCB0998\n"
1014                 "TST     R0, #1\n"
1015                 "LDRNE   R1, =0x151\n"
1016                 "LDMNEFD SP!, {R4-R6,LR}\n"
1017                 "LDRNE   R0, =0xFFC76BAC\n"
1018                 "BNE     sub_FFC0B048\n"                // DebugAssert(Shutter.c:337)
1019                 "LDMFD   SP!, {R4-R6,PC}\n"
1020 );
1021 }

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