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

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

DEFINITIONS

This source file includes following definitions.
  1. capt_seq_task
  2. sub_FFD20314_my
  3. sub_FFC5FDC8_my
  4. exp_drv_task
  5. sub_FFC96E64_my
  6. sub_FFC88B4C_my

   1 #include "lolevel.h"
   2 #include "platform.h"
   3 #include "core.h"
   4 #include "conf.h"
   5 
   6 static long *nrflag = (long*)(0x5b10-0x08);  // Found @ ffd203a4 & ffd203c0
   7 
   8 #include "../../../generic/capt_seq.c"
   9 
  10 //** capt_seq_task  @ 0xFFC5F9DC 
  11 
  12 void __attribute__((naked,noinline)) capt_seq_task() {
  13 asm volatile (
  14       "STMFD   SP!, {R3-R9,LR} \n"
  15       "LDR     R6, =0x2850 \n"
  16       "LDR     R4, =0x349A0 \n"
  17       "MOV     R9, #1 \n"
  18       "MOV     R7, #0 \n"
  19 "loc_FFC5F9F0:\n"
  20       "LDR     R0, [R6, #4] \n"
  21       "MOV     R2, #0 \n"
  22       "MOV     R1, SP \n"
  23       "BL      sub_FFC2936C \n"
  24       "TST     R0, #1 \n"
  25       "BEQ     loc_FFC5FA1C \n"
  26       "LDR     R1, =0x5B4 \n"
  27       "LDR     R0, =0xFFC5F594 \n"
  28       "BL      sub_FFC0EB14 \n"
  29       "BL      sub_FFC0EACC \n"
  30       "LDMFD   SP!, {R3-R9,PC} \n"
  31 "loc_FFC5FA1C:\n"
  32       "LDR     R0, [SP] \n"
  33       "LDR     R1, [R0] \n"
  34       "CMP     R1, #0x1D \n"
  35       "ADDLS   PC, PC, R1, LSL #2 \n"
  36       "B       loc_FFC5FCA4 \n"
  37       "B       loc_FFC5FAA8 \n"
  38       "B       loc_FFC5FB0C \n"
  39       "B       loc_FFC5FB48 \n"
  40       "B       loc_FFC5FB5C \n"
  41       "B       loc_FFC5FB54 \n"
  42       "B       loc_FFC5FB64 \n"
  43       "B       loc_FFC5FB6C \n"
  44       "B       loc_FFC5FB74 \n"
  45       "B       loc_FFC5FBCC \n"
  46       "B       loc_FFC5FBF4 \n"
  47       "B       loc_FFC5FBD8 \n"
  48       "B       loc_FFC5FBE4 \n"
  49       "B       loc_FFC5FBEC \n"
  50       "B       loc_FFC5FBFC \n"
  51       "B       loc_FFC5FC04 \n"
  52       "B       loc_FFC5FC0C \n"
  53       "B       loc_FFC5FC14 \n"
  54       "B       loc_FFC5FC1C \n"
  55       "B       loc_FFC5FC28 \n"
  56       "B       loc_FFC5FC30 \n"
  57       "B       loc_FFC5FC38 \n"
  58       "B       loc_FFC5FC40 \n"
  59       "B       loc_FFC5FC48 \n"
  60       "B       loc_FFC5FC54 \n"
  61       "B       loc_FFC5FC5C \n"
  62       "B       loc_FFC5FC64 \n"
  63       "B       loc_FFC5FC6C \n"
  64       "B       loc_FFC5FC74 \n"
  65       "B       loc_FFC5FC80 \n"
  66       "B       loc_FFC5FCB0 \n"
  67 "loc_FFC5FAA8:\n"
  68       "BL      shooting_expo_iso_override\n"            //added
  69       "BL      sub_FFC602EC \n"
  70        "BL      shooting_expo_param_override\n"         // added
  71       "BL      sub_FFC5DAEC \n"
  72       "LDR     R0, [R4, #0x24] \n"
  73       "CMP     R0, #0 \n"
  74       "BEQ     loc_FFC5FCB0 \n"
  75       "BL      sub_FFC5F274 \n"
  76       "MOV     R5, R0 \n"
  77       "LDR     R0, [R4, #0x24] \n"
  78       "CMP     R0, #0 \n"
  79       "BEQ     loc_FFC5FAF0 \n"
  80       "MOV     R0, #0xC \n"
  81       "BL      sub_FFC640E0 \n"
  82       "TST     R0, #1 \n"
  83       "STRNE   R9, [R6, #0x10] \n"
  84       "LDRNE   R0, [R5, #8] \n"
  85       "ORRNE   R0, R0, #0x40000000 \n"
  86       "STRNE   R0, [R5, #8] \n"
  87       "BNE     loc_FFC5FCB0 \n"
  88 "loc_FFC5FAF0:\n"
  89       "MOV     R0, R5 \n"
  90       "BL      sub_FFC5F518 \n"
  91       "MOV     R0, R5 \n"
  92 //      "BL      sub_FFD20314 \n"   //original
  93       "BL      sub_FFD20314_my \n"  //patched
  94       "TST     R0, #1 \n"
  95       "STRNE   R9, [R6, #0x10] \n"
  96       "B       loc_FFC5FCB0 \n"
  97 "loc_FFC5FB0C:\n"
  98       "LDR     R0, [R4, #0x24] \n"
  99       "CMP     R0, #0 \n"
 100       "BNE     loc_FFC5FB38 \n"
 101       "MOV     R0, #0xC \n"
 102       "BL      sub_FFC640E0 \n"
 103       "TST     R0, #1 \n"
 104       "LDRNE   R0, [SP] \n"
 105       "MOVNE   R1, #1 \n"
 106       "LDRNE   R2, [R0, #0xC] \n"
 107       "MOVNE   R0, #1 \n"
 108       "BNE     loc_FFC5FBC4 \n"
 109 "loc_FFC5FB38:\n"
 110       "LDR     R0, [SP] \n"
 111 //      "BL      loc_FFC5FDC8 \n"   //original
 112       "BL      sub_FFC5FDC8_my\n"   //patched
 113 "loc_FFC5FB40:\n"
 114       "STR     R7, [R4, #0x24] \n"
 115       "B       loc_FFC5FCB0 \n"
 116 "loc_FFC5FB48:\n"
 117       "MOV     R0, #1 \n"
 118       "BL      sub_FFC60574 \n"
 119       "B       loc_FFC5FCB0 \n"
 120 "loc_FFC5FB54:\n"
 121       "BL      sub_FFC5FF40 \n"
 122       "B       loc_FFC5FB40 \n"
 123 "loc_FFC5FB5C:\n"
 124       "BL      sub_FFC602CC \n"
 125       "B       loc_FFC5FB40 \n"
 126 "loc_FFC5FB64:\n"
 127       "BL      sub_FFC602D4 \n"
 128       "B       loc_FFC5FCB0 \n"
 129 "loc_FFC5FB6C:\n"
 130       "BL      sub_FFC60484 \n"
 131       "B       loc_FFC5FBD0 \n"
 132 "loc_FFC5FB74:\n"
 133       "LDR     R5, [R0, #0xC] \n"
 134       "BL      sub_FFC602DC \n"
 135       "MOV     R0, R5 \n"
 136       "BL      sub_FFD1F30C \n"
 137       "TST     R0, #1 \n"
 138       "MOV     R8, R0 \n"
 139       "BNE     loc_FFC5FBB4 \n"
 140       "BL      sub_FFC70D3C \n"
 141       "STR     R0, [R5, #0x18] \n"
 142       "MOV     R0, R5 \n"
 143       "BL      sub_FFD2024C \n"
 144       "MOV     R0, R5 \n"
 145       "BL      sub_FFD205F0 \n"
 146       "MOV     R8, R0 \n"
 147       "LDR     R0, [R5, #0x18] \n"
 148       "BL      sub_FFC70F74 \n"
 149 "loc_FFC5FBB4:\n"
 150       "BL      sub_FFC602CC \n"
 151       "MOV     R2, R5 \n"
 152       "MOV     R1, #9 \n"
 153       "MOV     R0, R8 \n"
 154 "loc_FFC5FBC4:\n"
 155       "BL      sub_FFC5DF60 \n"
 156       "B       loc_FFC5FCB0 \n"
 157 "loc_FFC5FBCC:\n"
 158       "BL      sub_FFC604EC \n"
 159 "loc_FFC5FBD0:\n"
 160       "BL      sub_FFC5DAEC \n"
 161       "B       loc_FFC5FCB0 \n"
 162 "loc_FFC5FBD8:\n"
 163       "LDR     R0, [R4, #0x54] \n"
 164       "BL      sub_FFC608DC \n"
 165       "B       loc_FFC5FCB0 \n"
 166 "loc_FFC5FBE4:\n"
 167       "BL      sub_FFC60B90 \n"
 168       "B       loc_FFC5FCB0 \n"
 169 "loc_FFC5FBEC:\n"
 170       "BL      sub_FFC60C24 \n"
 171       "B       loc_FFC5FCB0 \n"
 172 "loc_FFC5FBF4:\n"
 173       "BL      sub_FFC602CC \n"
 174       "B       loc_FFC5FCB0 \n"
 175 "loc_FFC5FBFC:\n"
 176       "BL      sub_FFD1F538 \n"
 177       "B       loc_FFC5FCB0 \n"
 178 "loc_FFC5FC04:\n"
 179       "BL      sub_FFD1F730 \n"
 180       "B       loc_FFC5FCB0 \n"
 181 "loc_FFC5FC0C:\n"
 182       "BL      sub_FFD1F7C4 \n"
 183       "B       loc_FFC5FCB0 \n"
 184 "loc_FFC5FC14:\n"
 185       "BL      sub_FFD1F884 \n"
 186       "B       loc_FFC5FCB0 \n"
 187 "loc_FFC5FC1C:\n"
 188       "MOV     R0, #0 \n"
 189       "BL      sub_FFD1FA7C \n"
 190       "B       loc_FFC5FCB0 \n"
 191 "loc_FFC5FC28:\n"
 192       "BL      sub_FFD1FBCC \n"
 193       "B       loc_FFC5FCB0 \n"
 194 "loc_FFC5FC30:\n"
 195       "BL      sub_FFD1FC5C \n"
 196       "B       loc_FFC5FCB0 \n"
 197 "loc_FFC5FC38:\n"
 198       "BL      sub_FFD1FD1C \n"
 199       "B       loc_FFC5FCB0 \n"
 200 "loc_FFC5FC40:\n"
 201       "BL      sub_FFC606C8 \n"
 202       "B       loc_FFC5FCB0 \n"
 203 "loc_FFC5FC48:\n"
 204       "BL      sub_FFC6075C \n"
 205       "BL      sub_FFC276BC \n"
 206       "B       loc_FFC5FCB0 \n"
 207 "loc_FFC5FC54:\n"
 208       "BL      sub_FFD1F950 \n"
 209       "B       loc_FFC5FCB0 \n"
 210 "loc_FFC5FC5C:\n"
 211       "BL      sub_FFD1F994 \n"
 212       "B       loc_FFC5FCB0 \n"
 213 "loc_FFC5FC64:\n"
 214       "BL      sub_FFC628B0 \n"
 215       "B       loc_FFC5FCB0 \n"
 216 "loc_FFC5FC6C:\n"
 217       "BL      sub_FFC62930 \n"
 218       "B       loc_FFC5FCB0 \n"
 219 "loc_FFC5FC74:\n"
 220       "BL      sub_FFC6298C \n"
 221       "BL      sub_FFC6294C \n"
 222       "B       loc_FFC5FCB0 \n"
 223 "loc_FFC5FC80:\n"
 224       "LDRH    R0, [R4, #0x94] \n"
 225       "CMP     R0, #4 \n"
 226       "LDRNEH  R0, [R4] \n"
 227       "SUBNE   R12, R0, #0x8200 \n"
 228       "SUBNES  R12, R12, #0x2A \n"
 229       "BNE     loc_FFC5FCB0 \n"   //loc_ to sub_ ??
 230       "BL      sub_FFC62930 \n"
 231       "BL      sub_FFC62D50 \n"
 232       "B       loc_FFC5FCB0 \n"
 233 "loc_FFC5FCA4:\n"
 234       "LDR     R1, =0x70B \n"
 235       "LDR     R0, =0xFFC5F594 \n"
 236       "BL      sub_FFC0EB14 \n"
 237 "loc_FFC5FCB0:\n"
 238       "LDR     R0, [SP] \n"
 239       "LDR     R1, [R0, #4] \n"
 240       "LDR     R0, [R6] \n"
 241       "BL      sub_FFC68C20 \n"
 242       "LDR     R5, [SP] \n"
 243       "LDR     R0, [R5, #8] \n"
 244       "CMP     R0, #0 \n"
 245       "LDREQ   R1, =0x132 \n"
 246       "LDREQ   R0, =0xFFC5F594 \n"
 247       "BLEQ    sub_FFC0EB14 \n"
 248       "STR     R7, [R5, #8] \n"
 249       "B       loc_FFC5F9F0 \n"
 250         );
 251 }
 252 
 253 //** sub_FFD20314_my  @ 0xFFD20314 
 254 
 255 void __attribute__((naked,noinline)) sub_FFD20314_my() {
 256 asm volatile (
 257       "STMFD   SP!, {R0-R8,LR} \n"
 258       "MOV     R4, R0 \n"
 259       "BL      sub_FFD21028 \n"
 260       "MVN     R1, #0 \n"
 261       "BL      sub_FFC68C54 \n"
 262       "LDR     R5, =0x5B08 \n"
 263       "LDR     R0, [R5, #0xC] \n"
 264       "CMP     R0, #0 \n"
 265       "BNE     loc_FFD20364 \n"
 266       "MOV     R1, #1 \n"
 267       "MOV     R0, #0 \n"
 268       "BL      sub_FFC29BB4 \n"
 269       "STR     R0, [R5, #0xC] \n"
 270       "MOV     R3, #0 \n"
 271       "STR     R3, [SP] \n"
 272       "LDR     R3, =0xFFD1FE0C \n"
 273       "LDR     R0, =0xFFD2057C \n"
 274       "MOV     R2, #0x400 \n"
 275       "MOV     R1, #0x17 \n"
 276       "BL      sub_FFC29B80 \n"
 277 "loc_FFD20364:\n"
 278       "MOV     R2, #4 \n"
 279       "ADD     R1, SP, #8 \n"
 280       "MOV     R0, #0x8A \n"
 281       "BL      sub_FFC70BAC \n"
 282       "TST     R0, #1 \n"
 283       "MOVNE   R1, #0x3B4 \n"
 284       "LDRNE   R0, =0xFFD20078 \n"
 285       "BLNE    sub_FFC0EB14 \n"
 286       "LDR     R6, =0x34A64 \n"
 287       "LDR     R7, =0x349A0 \n"
 288       "LDR     R3, [R6] \n"
 289       "LDRSH   R2, [R6, #0xC] \n"
 290       "LDRSH   R1, [R6, #0xE] \n"
 291       "LDR     R0, [R7, #0x88] \n"
 292       "BL      sub_FFCEF118 \n"
 293       "BL      sub_FFC49E68 \n"
 294       "LDR     R3, =0x5B10 \n"
 295       "STRH    R0, [R4, #0xA4] \n"
 296       "SUB     R2, R3, #4 \n"
 297       "STRD    R2, [SP] \n"
 298       "MOV     R1, R0 \n"
 299       "LDRH    R0, [R7, #0x5C] \n"
 300       "LDRSH   R2, [R6, #0xC] \n"
 301       "SUB     R3, R3, #8 \n"
 302       "BL      sub_FFD21694 \n"
 303       "BL      wait_until_remote_button_is_released\n"
 304       "BL      capt_seq_hook_set_nr\n"
 305       "B       sub_FFD203C8\n"  //back to firmware
 306         );
 307 }
 308 
 309 //** sub_FFC5FDC8_my  @ 0xFFC5FDC8 
 310 
 311 void __attribute__((naked,noinline)) sub_FFC5FDC8_my() {
 312 asm volatile (
 313       "STMFD   SP!, {R4-R6,LR} \n"
 314       "LDR     R4, [R0, #0xC] \n"
 315       "LDR     R6, =0x349A0 \n"
 316       "LDR     R0, [R4, #8] \n"
 317       "MOV     R5, #0 \n"
 318       "ORR     R0, R0, #1 \n"
 319       "STR     R0, [R4, #8] \n"
 320       "LDR     R0, [R6, #0x24] \n"
 321       "CMP     R0, #0 \n"
 322       "MOVEQ   R0, #2 \n"
 323       "BLEQ    sub_FFC5C2E0 \n"
 324       "BL      sub_FFC602DC \n"
 325       "LDR     R0, [R6, #0x24] \n"
 326       "CMP     R0, #0 \n"
 327       "BNE     loc_FFC5FE64 \n"
 328       "MOV     R0, R4 \n"
 329       "BL      sub_FFC6067C \n"
 330       "MOV     R0, R4 \n"
 331       "BL      sub_FFD1EF78 \n"
 332       "CMP     R0, #0 \n"
 333       "MOV     R0, R4 \n"
 334       "BEQ     loc_FFC5FE3C \n"
 335       "BL      sub_FFD1F004 \n"
 336       "TST     R0, #1 \n"
 337       "MOVNE   R2, R4 \n"
 338       "LDMNEFD SP!, {R4-R6,LR} \n"
 339       "MOVNE   R1, #1 \n"
 340       "BNE     sub_FFC5DF60 \n"
 341       "B       loc_FFC5FE40 \n"
 342 "loc_FFC5FE3C:\n"
 343       "BL      sub_FFD1EFC8 \n"
 344 "loc_FFC5FE40:\n"
 345       "MOV     R0, R4 \n"
 346       "BL      sub_FFC5F518 \n"
 347       "MOV     R0, R4 \n"
 348       "BL      sub_FFD2024C \n"
 349       "BL      sub_FFD20E94 \n"
 350       "MOV     R0, R4 \n"
 351 //      "BL      sub_FFD20314 \n"  //original
 352      "BL      sub_FFD20314_my \n"  //patched
 353       "MOV     R5, R0 \n"
 354       "B       loc_FFC5FE74 \n"
 355 "loc_FFC5FE64:\n"
 356       "LDR     R0, =0x2850 \n"
 357       "LDR     R0, [R0, #0x10] \n"
 358       "CMP     R0, #0 \n"
 359       "MOVNE   R5, #0x1D \n"
 360 "loc_FFC5FE74:\n"
 361       "BL      capt_seq_hook_raw_here\n" // ++++->
 362       "BL      sub_FFC62930 \n"
 363       "BL      sub_FFC62978 \n"
 364       "BL      sub_FFC629B8 \n"
 365       "MOV     R2, R4 \n"
 366       "MOV     R1, #1 \n"
 367       "MOV     R0, R5 \n"
 368       "BL      sub_FFC5DF60 \n"
 369       "BL      sub_FFD205A4 \n"
 370       "CMP     R0, #0 \n"
 371       "LDRNE   R0, [R4, #8] \n"
 372       "ORRNE   R0, R0, #0x2000 \n"
 373       "STRNE   R0, [R4, #8] \n"
 374       "LDMFD   SP!, {R4-R6,PC} \n"
 375         );
 376 }
 377 
 378 //** exp_drv_task  @ 0xFFC99618 
 379 
 380 void __attribute__((naked,noinline)) exp_drv_task(  ) { 
 381 asm volatile (
 382       "STMFD   SP!, {R4-R8,LR} \n"
 383       "SUB     SP, SP, #0x20 \n"
 384       "LDR     R8, =0xBB8 \n"
 385       "LDR     R7, =0x3A74 \n"
 386       "LDR     R5, =0x3DDB4 \n"
 387       "MOV     R0, #0 \n"
 388       "ADD     R6, SP, #0x10 \n"
 389       "STR     R0, [SP, #0xC] \n"
 390 "loc_FFC99638:\n"
 391       "LDR     R0, [R7, #0x20] \n"
 392       "MOV     R2, #0 \n"
 393       "ADD     R1, SP, #0x1C \n"
 394       "BL      sub_FFC2936C \n"
 395       "LDR     R0, [SP, #0xC] \n"
 396       "CMP     R0, #1 \n"
 397       "BNE     loc_FFC99684 \n"
 398       "LDR     R0, [SP, #0x1C] \n"
 399       "LDR     R0, [R0] \n"
 400       "CMP     R0, #0x13 \n"
 401       "CMPNE   R0, #0x14 \n"
 402       "CMPNE   R0, #0x15 \n"
 403       "CMPNE   R0, #0x16 \n"
 404       "BEQ     loc_FFC997E8 \n"
 405       "CMP     R0, #0x28 \n"
 406       "BEQ     loc_FFC99770 \n"
 407       "ADD     R1, SP, #0xC \n"
 408       "MOV     R0, #0 \n"
 409       "BL      sub_FFC995C8 \n"
 410 "loc_FFC99684:\n"
 411       "LDR     R0, [SP, #0x1C] \n"
 412       "LDR     R1, [R0] \n"
 413       "CMP     R1, #0x2E \n"
 414       "BNE     loc_FFC996B4 \n"
 415       "LDR     R0, [SP, #0x1C] \n"
 416       "BL      sub_FFC9A920 \n"
 417       "LDR     R0, [R7, #0x1C] \n"
 418       "MOV     R1, #1 \n"
 419       "BL      sub_FFC68C20 \n"
 420       "BL      sub_FFC0EACC \n"
 421       "ADD     SP, SP, #0x20 \n"
 422       "LDMFD   SP!, {R4-R8,PC} \n"
 423 "loc_FFC996B4:\n"
 424       "CMP     R1, #0x2D \n"
 425       "BNE     loc_FFC996D0 \n"
 426       "LDR     R2, [R0, #0x8C]! \n"
 427       "LDR     R1, [R0, #4] \n"
 428       "MOV     R0, R1 \n"
 429       "BLX     R2 \n"
 430       "B       loc_FFC99C10 \n"
 431 "loc_FFC996D0:\n"
 432       "CMP     R1, #0x26 \n"
 433       "BNE     loc_FFC99720 \n"
 434       "LDR     R0, [R7, #0x1C] \n"
 435       "MOV     R1, #0x80 \n"
 436       "BL      sub_FFC68C54 \n"
 437       "LDR     R0, =0xFFC95D94 \n"
 438       "MOV     R1, #0x80 \n"
 439       "BL      sub_FFD14B20 \n"
 440       "LDR     R0, [R7, #0x1C] \n"
 441       "MOV     R2, R8 \n"
 442       "MOV     R1, #0x80 \n"
 443       "BL      sub_FFC68B60 \n"
 444       "TST     R0, #1 \n"
 445       "LDRNE   R1, =0xE5F \n"
 446       "BNE     loc_FFC997DC \n"
 447 "loc_FFC9970C:\n"
 448       "LDR     R1, [SP, #0x1C] \n"
 449       "LDR     R0, [R1, #0x90] \n"
 450       "LDR     R1, [R1, #0x8C] \n"
 451       "BLX     R1 \n"
 452       "B       loc_FFC99C10 \n"
 453 "loc_FFC99720:\n"
 454       "CMP     R1, #0x27 \n"
 455       "BNE     loc_FFC99768 \n"
 456       "ADD     R1, SP, #0xC \n"
 457       "BL      sub_FFC995C8 \n"
 458       "LDR     R0, [R7, #0x1C] \n"
 459       "MOV     R1, #0x100 \n"
 460       "BL      sub_FFC68C54 \n"
 461       "LDR     R0, =0xFFC95DA4 \n"
 462       "MOV     R1, #0x100 \n"
 463       "BL      sub_FFD14DA8 \n"
 464       "LDR     R0, [R7, #0x1C] \n"
 465       "MOV     R2, R8 \n"
 466       "MOV     R1, #0x100 \n"
 467       "BL      sub_FFC68B60 \n"
 468       "TST     R0, #1 \n"
 469       "BEQ     loc_FFC9970C \n"
 470       "LDR     R1, =0xE69 \n"
 471       "B       loc_FFC997DC \n"
 472 "loc_FFC99768:\n"
 473       "CMP     R1, #0x28 \n"
 474       "BNE     loc_FFC99780 \n"
 475 "loc_FFC99770:\n"
 476       "LDR     R0, [SP, #0x1C] \n"
 477       "ADD     R1, SP, #0xC \n"
 478       "BL      sub_FFC995C8 \n"
 479       "B       loc_FFC9970C \n"
 480 "loc_FFC99780:\n"
 481       "CMP     R1, #0x2B \n"
 482       "BNE     loc_FFC99798 \n"
 483       "BL      sub_FFC88DDC \n"
 484       "BL      sub_FFC89A04 \n"
 485       "BL      sub_FFC89554 \n"
 486       "B       loc_FFC9970C \n"
 487 "loc_FFC99798:\n"
 488       "CMP     R1, #0x2C \n"
 489       "BNE     loc_FFC997E8 \n"
 490       "LDR     R0, [R7, #0x1C] \n"
 491       "MOV     R1, #4 \n"
 492       "BL      sub_FFC68C54 \n"
 493       "LDR     R1, =0xFFC95DC4 \n"
 494       "LDR     R0, =0xFFFFF400 \n"
 495       "MOV     R2, #4 \n"
 496       "BL      sub_FFC88858 \n"
 497       "BL      sub_FFC88AE0 \n"
 498       "LDR     R0, [R7, #0x1C] \n"
 499       "MOV     R2, R8 \n"
 500       "MOV     R1, #4 \n"
 501       "BL      sub_FFC68A7C \n"
 502       "TST     R0, #1 \n"
 503       "BEQ     loc_FFC9970C \n"
 504       "LDR     R1, =0xE91 \n"
 505 "loc_FFC997DC:\n"
 506       "LDR     R0, =0xFFC96404 \n"
 507       "BL      sub_FFC0EB14 \n"
 508       "B       loc_FFC9970C \n"
 509 "loc_FFC997E8:\n"
 510       "LDR     R0, [SP, #0x1C] \n"
 511       "MOV     R4, #1 \n"
 512       "LDR     R1, [R0] \n"
 513       "CMP     R1, #0x11 \n"
 514       "CMPNE   R1, #0x12 \n"
 515       "BNE     loc_FFC99858 \n"
 516       "LDR     R1, [R0, #0x7C] \n"
 517       "ADD     R1, R1, R1, LSL #1 \n"
 518       "ADD     R1, R0, R1, LSL #2 \n"
 519       "SUB     R1, R1, #8 \n"
 520       "LDMIA   R1, {R2-R4} \n"
 521       "STMIA   R6, {R2-R4} \n"
 522       "BL      sub_FFC97F54 \n"
 523       "LDR     R0, [SP, #0x1C] \n"
 524       "LDR     R1, [R0, #0x7C] \n"
 525       "LDR     R3, [R0, #0x8C] \n"
 526       "LDR     R2, [R0, #0x90] \n"
 527       "ADD     R0, R0, #4 \n"
 528       "BLX     R3 \n"
 529       "LDR     R0, [SP, #0x1C] \n"
 530       "BL      sub_FFC9ACE8 \n"
 531       "LDR     R0, [SP, #0x1C] \n"
 532       "LDR     R1, [R0, #0x7C] \n"
 533       "LDR     R3, [R0, #0x94] \n"
 534       "LDR     R2, [R0, #0x98] \n"
 535       "ADD     R0, R0, #4 \n"
 536       "BLX     R3 \n"
 537       "B       loc_FFC99B50 \n"
 538 "loc_FFC99858:\n"
 539       "CMP     R1, #0x13 \n"
 540       "CMPNE   R1, #0x14 \n"
 541       "CMPNE   R1, #0x15 \n"
 542       "CMPNE   R1, #0x16 \n"
 543       "BNE     loc_FFC99910 \n"
 544       "ADD     R3, SP, #0xC \n"
 545       "MOV     R2, SP \n"
 546       "ADD     R1, SP, #0x10 \n"
 547       "BL      sub_FFC98230 \n"
 548       "CMP     R0, #1 \n"
 549       "MOV     R4, R0 \n"
 550       "CMPNE   R4, #5 \n"
 551       "BNE     loc_FFC998AC \n"
 552       "LDR     R0, [SP, #0x1C] \n"
 553       "MOV     R2, R4 \n"
 554       "LDR     R1, [R0, #0x7C]! \n"
 555       "LDR     R12, [R0, #0x10]! \n"
 556       "LDR     R3, [R0, #4] \n"
 557       "MOV     R0, SP \n"
 558       "BLX     R12 \n"
 559       "B       loc_FFC998E4 \n"
 560 "loc_FFC998AC:\n"
 561       "LDR     R0, [SP, #0x1C] \n"
 562       "CMP     R4, #2 \n"
 563       "LDR     R3, [R0, #0x90] \n"
 564       "CMPNE   R4, #6 \n"
 565       "BNE     loc_FFC998F8 \n"
 566       "LDR     R12, [R0, #0x8C] \n"
 567       "MOV     R0, SP \n"
 568       "MOV     R2, R4 \n"
 569       "MOV     R1, #1 \n"
 570       "BLX     R12 \n"
 571       "LDR     R0, [SP, #0x1C] \n"
 572       "MOV     R2, SP \n"
 573       "ADD     R1, SP, #0x10 \n"
 574       "BL      sub_FFC992D0 \n"
 575 "loc_FFC998E4:\n"
 576       "LDR     R0, [SP, #0x1C] \n"
 577       "LDR     R2, [SP, #0xC] \n"
 578       "MOV     R1, R4 \n"
 579       "BL      sub_FFC99568 \n"
 580       "B       loc_FFC99B50 \n"
 581 "loc_FFC998F8:\n"
 582       "LDR     R1, [R0, #0x7C] \n"
 583       "LDR     R12, [R0, #0x8C] \n"
 584       "ADD     R0, R0, #4 \n"
 585       "MOV     R2, R4 \n"
 586       "BLX     R12 \n"
 587       "B       loc_FFC99B50 \n"
 588 "loc_FFC99910:\n"
 589       "CMP     R1, #0x22 \n"
 590       "CMPNE   R1, #0x23 \n"
 591       "BNE     loc_FFC9995C \n"
 592       "LDR     R1, [R0, #0x7C] \n"
 593       "ADD     R1, R1, R1, LSL #1 \n"
 594       "ADD     R1, R0, R1, LSL #2 \n"
 595       "SUB     R1, R1, #8 \n"
 596       "LDMIA   R1, {R2-R4} \n"
 597       "STMIA   R6, {R2-R4} \n"
 598       "BL      sub_FFC974A4 \n"
 599       "LDR     R0, [SP, #0x1C] \n"
 600       "LDR     R1, [R0, #0x7C] \n"
 601       "LDR     R3, [R0, #0x8C] \n"
 602       "LDR     R2, [R0, #0x90] \n"
 603       "ADD     R0, R0, #4 \n"
 604       "BLX     R3 \n"
 605       "LDR     R0, [SP, #0x1C] \n"
 606       "BL      sub_FFC97798 \n"
 607       "B       loc_FFC99B50 \n"
 608 "loc_FFC9995C:\n"
 609       "ADD     R1, R0, #4 \n"
 610       "LDMIA   R1, {R2,R3,R12} \n"
 611       "STMIA   R6, {R2,R3,R12} \n"
 612       "LDR     R1, [R0] \n"
 613       "CMP     R1, #0x25 \n"
 614       "ADDLS   PC, PC, R1, LSL #2 \n"
 615       "B       loc_FFC99B30 \n"
 616       "B       loc_FFC99A10 \n"
 617       "B       loc_FFC99A10 \n"
 618       "B       loc_FFC99A18 \n"
 619       "B       loc_FFC99A20 \n"
 620       "B       loc_FFC99A20 \n"
 621       "B       loc_FFC99A20 \n"
 622       "B       loc_FFC99A10 \n"
 623       "B       loc_FFC99A18 \n"
 624       "B       loc_FFC99A20 \n"
 625       "B       loc_FFC99A20 \n"
 626       "B       loc_FFC99A38 \n"
 627       "B       loc_FFC99A38 \n"
 628       "B       loc_FFC99B24 \n"
 629       "B       loc_FFC99B2C \n"
 630       "B       loc_FFC99B2C \n"
 631       "B       loc_FFC99B2C \n"
 632       "B       loc_FFC99B2C \n"
 633       "B       loc_FFC99B30 \n"
 634       "B       loc_FFC99B30 \n"
 635       "B       loc_FFC99B30 \n"
 636       "B       loc_FFC99B30 \n"
 637       "B       loc_FFC99B30 \n"
 638       "B       loc_FFC99B30 \n"
 639       "B       loc_FFC99A28 \n"
 640       "B       loc_FFC99A30 \n"
 641       "B       loc_FFC99A30 \n"
 642       "B       loc_FFC99A44 \n"
 643       "B       loc_FFC99A44 \n"
 644       "B       loc_FFC99A4C \n"
 645       "B       loc_FFC99A7C \n"
 646       "B       loc_FFC99AAC \n"
 647       "B       loc_FFC99ADC \n"
 648       "B       loc_FFC99B0C \n"
 649       "B       loc_FFC99B0C \n"
 650       "B       loc_FFC99B30 \n"
 651       "B       loc_FFC99B30 \n"
 652       "B       loc_FFC99B14 \n"
 653       "B       loc_FFC99B1C \n"
 654 "loc_FFC99A10:\n"
 655       "BL      sub_FFC962AC \n"
 656       "B       loc_FFC99B30 \n"
 657 "loc_FFC99A18:\n"
 658       "BL      sub_FFC96530 \n"
 659       "B       loc_FFC99B30 \n"
 660 "loc_FFC99A20:\n"
 661       "BL      sub_FFC96738 \n"
 662       "B       loc_FFC99B30 \n"
 663 "loc_FFC99A28:\n"
 664       "BL      sub_FFC969B0 \n"
 665       "B       loc_FFC99B30 \n"
 666 "loc_FFC99A30:\n"
 667       "BL      sub_FFC96BA8 \n"
 668       "B       loc_FFC99B30 \n"
 669 "loc_FFC99A38:\n"
 670 //      "BL      sub_FFC96E64 \n"  //original
 671       "BL      sub_FFC96E64_my\n"  //patched
 672       "MOV     R4, #0 \n"
 673       "B       loc_FFC99B30 \n"
 674 "loc_FFC99A44:\n"
 675       "BL      sub_FFC96FA4 \n"
 676       "B       loc_FFC99B30 \n"
 677 "loc_FFC99A4C:\n"
 678       "LDRH    R1, [R0, #4] \n"
 679       "STRH    R1, [SP, #0x10] \n"
 680       "LDRH    R1, [R5, #2] \n"
 681       "STRH    R1, [SP, #0x12] \n"
 682       "LDRH    R1, [R5, #4] \n"
 683       "STRH    R1, [SP, #0x14] \n"
 684       "LDRH    R1, [R5, #6] \n"
 685       "STRH    R1, [SP, #0x16] \n"
 686       "LDRH    R1, [R0, #0xC] \n"
 687       "STRH    R1, [SP, #0x18] \n"
 688       "BL      sub_FFC9A994 \n"
 689       "B       loc_FFC99B30 \n"
 690 "loc_FFC99A7C:\n"
 691       "LDRH    R1, [R0, #4] \n"
 692       "STRH    R1, [SP, #0x10] \n"
 693       "LDRH    R1, [R5, #2] \n"
 694       "STRH    R1, [SP, #0x12] \n"
 695       "LDRH    R1, [R5, #4] \n"
 696       "STRH    R1, [SP, #0x14] \n"
 697       "LDRH    R1, [R5, #6] \n"
 698       "STRH    R1, [SP, #0x16] \n"
 699       "LDRH    R1, [R5, #8] \n"
 700       "STRH    R1, [SP, #0x18] \n"
 701       "BL      sub_FFC9AB00 \n"
 702       "B       loc_FFC99B30 \n"
 703 "loc_FFC99AAC:\n"
 704       "LDRH    R1, [R5] \n"
 705       "STRH    R1, [SP, #0x10] \n"
 706       "LDRH    R1, [R0, #6] \n"
 707       "STRH    R1, [SP, #0x12] \n"
 708       "LDRH    R1, [R5, #4] \n"
 709       "STRH    R1, [SP, #0x14] \n"
 710       "LDRH    R1, [R5, #6] \n"
 711       "STRH    R1, [SP, #0x16] \n"
 712       "LDRH    R1, [R5, #8] \n"
 713       "STRH    R1, [SP, #0x18] \n"
 714       "BL      sub_FFC9ABAC \n"
 715       "B       loc_FFC99B30 \n"
 716 "loc_FFC99ADC:\n"
 717       "LDRH    R1, [R5] \n"
 718       "STRH    R1, [SP, #0x10] \n"
 719       "LDRH    R1, [R5, #2] \n"
 720       "STRH    R1, [SP, #0x12] \n"
 721       "LDRH    R1, [R5, #4] \n"
 722       "STRH    R1, [SP, #0x14] \n"
 723       "LDRH    R1, [R5, #6] \n"
 724       "STRH    R1, [SP, #0x16] \n"
 725       "LDRH    R1, [R0, #0xC] \n"
 726       "STRH    R1, [SP, #0x18] \n"
 727       "BL      sub_FFC9AC4C \n"
 728       "B       loc_FFC99B30 \n"
 729 "loc_FFC99B0C:\n"
 730       "BL      sub_FFC972FC \n"
 731       "B       loc_FFC99B30 \n"
 732 "loc_FFC99B14:\n"
 733       "BL      sub_FFC9789C \n"
 734       "B       loc_FFC99B30 \n"
 735 "loc_FFC99B1C:\n"
 736       "BL      sub_FFC97AD8 \n"
 737       "B       loc_FFC99B30 \n"
 738 "loc_FFC99B24:\n"
 739       "BL      sub_FFC97C54 \n"
 740       "B       loc_FFC99B30 \n"
 741 "loc_FFC99B2C:\n"
 742       "BL      sub_FFC97DF0 \n"
 743 "loc_FFC99B30:\n"
 744       "LDR     R0, [SP, #0x1C] \n"
 745       "LDR     R1, [R0, #0x7C] \n"
 746       "LDR     R3, [R0, #0x8C] \n"
 747       "LDR     R2, [R0, #0x90] \n"
 748       "ADD     R0, R0, #4 \n"
 749       "BLX     R3 \n"
 750       "CMP     R4, #1 \n"
 751       "BNE     loc_FFC99B98 \n"
 752 "loc_FFC99B50:\n"
 753       "LDR     R0, [SP, #0x1C] \n"
 754       "MOV     R2, #0xC \n"
 755       "LDR     R1, [R0, #0x7C] \n"
 756       "ADD     R1, R1, R1, LSL #1 \n"
 757       "ADD     R0, R0, R1, LSL #2 \n"
 758       "SUB     R4, R0, #8 \n"
 759       "LDR     R0, =0x3DDB4 \n"
 760       "ADD     R1, SP, #0x10 \n"
 761       "BL      sub_FFEA2D44 \n"
 762       "LDR     R0, =0x3DDC0 \n"
 763       "MOV     R2, #0xC \n"
 764       "ADD     R1, SP, #0x10 \n"
 765       "BL      sub_FFEA2D44 \n"
 766       "LDR     R0, =0x3DDCC \n"
 767       "MOV     R2, #0xC \n"
 768       "MOV     R1, R4 \n"
 769       "BL      sub_FFEA2D44 \n"
 770       "B       loc_FFC99C10 \n"
 771 "loc_FFC99B98:\n"
 772       "LDR     R0, [SP, #0x1C] \n"
 773       "LDR     R0, [R0] \n"
 774       "CMP     R0, #0xB \n"
 775       "BNE     loc_FFC99BE0 \n"
 776       "MOV     R3, #0 \n"
 777       "STR     R3, [SP] \n"
 778       "MOV     R3, #1 \n"
 779       "MOV     R2, #1 \n"
 780       "MOV     R1, #1 \n"
 781       "MOV     R0, #0 \n"
 782       "BL      sub_FFC960B4 \n"
 783       "MOV     R3, #0 \n"
 784       "STR     R3, [SP] \n"
 785       "MOV     R3, #1 \n"
 786       "MOV     R2, #1 \n"
 787       "MOV     R1, #1 \n"
 788       "MOV     R0, #0 \n"
 789       "B       loc_FFC99C0C \n"
 790 "loc_FFC99BE0:\n"
 791       "MOV     R3, #1 \n"
 792       "MOV     R2, #1 \n"
 793       "MOV     R1, #1 \n"
 794       "MOV     R0, #1 \n"
 795       "STR     R3, [SP] \n"
 796       "BL      sub_FFC960B4 \n"
 797       "MOV     R3, #1 \n"
 798       "MOV     R2, #1 \n"
 799       "MOV     R1, #1 \n"
 800       "MOV     R0, #1 \n"
 801       "STR     R3, [SP] \n"
 802 "loc_FFC99C0C:\n"
 803       "BL      sub_FFC961F4 \n"
 804 "loc_FFC99C10:\n"
 805       "LDR     R0, [SP, #0x1C] \n"
 806       "BL      sub_FFC9A920 \n"
 807       "B       loc_FFC99638 \n"
 808         );
 809 }
 810 
 811 //** sub_FFC96E64_my  @ 0xFFC96E64 
 812 
 813 void __attribute__((naked,noinline)) sub_FFC96E64_my() {
 814 asm volatile (
 815       "STMFD   SP!, {R4-R8,LR} \n"
 816       "LDR     R7, =0x3A74 \n"
 817       "MOV     R4, R0 \n"
 818       "LDR     R0, [R7, #0x1C] \n"
 819       "MOV     R1, #0x3E \n"
 820       "BL      sub_FFC68C54 \n"
 821       "LDRSH   R0, [R4, #4] \n"
 822       "MOV     R2, #0 \n"
 823       "MOV     R1, #0 \n"
 824       "BL      sub_FFC95E18 \n"
 825       "MOV     R6, R0 \n"
 826       "LDRSH   R0, [R4, #6] \n"
 827       "BL      sub_FFC95F28 \n"
 828       "LDRSH   R0, [R4, #8] \n"
 829       "BL      sub_FFC95F80 \n"
 830       "LDRSH   R0, [R4, #0xA] \n"
 831       "BL      sub_FFC95FD8 \n"
 832       "LDRSH   R0, [R4, #0xC] \n"
 833       "MOV     R1, #0 \n"
 834       "BL      sub_FFC96030 \n"
 835       "MOV     R5, R0 \n"
 836       "LDR     R0, [R4] \n"
 837       "LDR     R8, =0x3DDCC \n"
 838       "CMP     R0, #0xB \n"
 839       "MOVEQ   R6, #0 \n"
 840       "MOVEQ   R5, #0 \n"
 841       "BEQ     loc_FFC96EF8 \n"
 842       "CMP     R6, #1 \n"
 843       "BNE     loc_FFC96EF8 \n"
 844       "LDRSH   R0, [R4, #4] \n"
 845       "LDR     R1, =0xFFC95D84 \n"
 846       "MOV     R2, #2 \n"
 847       "BL      sub_FFD14C74 \n"
 848       "STRH    R0, [R4, #4] \n"
 849       "MOV     R0, #0 \n"
 850       "STR     R0, [R7, #0x28] \n"
 851       "B       loc_FFC96F00 \n"
 852 "loc_FFC96EF8:\n"
 853       "LDRH    R0, [R8] \n"
 854       "STRH    R0, [R4, #4] \n"
 855 "loc_FFC96F00:\n"
 856       "CMP     R5, #1 \n"
 857       "LDRNEH  R0, [R8, #8] \n"
 858       "BNE     loc_FFC96F1C \n"
 859       "LDRSH   R0, [R4, #0xC] \n"
 860       "LDR     R1, =0xFFC95E08 \n"
 861       "MOV     R2, #0x20 \n"
 862       "BL      sub_FFC9A950 \n"
 863 "loc_FFC96F1C:\n"
 864       "STRH    R0, [R4, #0xC] \n"
 865       "LDRSH   R0, [R4, #6] \n"
 866 //      "BL      sub_FFC88B4C \n"    //original
 867       "BL      sub_FFC88B4C_my\n"    //patched
 868       "LDRSH   R0, [R4, #8] \n"
 869       "MOV     R1, #1 \n"
 870       "BL      sub_FFC8929C \n"
 871       "MOV     R1, #0 \n"
 872       "ADD     R0, R4, #8 \n"
 873       "BL      sub_FFC89324 \n"
 874       "LDRSH   R0, [R4, #0xE] \n"
 875       "BL      sub_FFC91178 \n"
 876       "LDR     R4, =0xBB8 \n"
 877       "CMP     R6, #1 \n"
 878       "BNE     loc_FFC96F74 \n"
 879       "LDR     R0, [R7, #0x1C] \n"
 880       "MOV     R2, R4 \n"
 881       "MOV     R1, #2 \n"
 882       "BL      sub_FFC68B60 \n"
 883       "TST     R0, #1 \n"
 884       "LDRNE   R1, =0x5A3 \n"
 885       "LDRNE   R0, =0xFFC96404 \n"
 886       "BLNE    sub_FFC0EB14 \n"
 887 "loc_FFC96F74:\n"
 888       "CMP     R5, #1 \n"
 889       "LDMNEFD SP!, {R4-R8,PC} \n"
 890       "LDR     R0, [R7, #0x1C] \n"
 891       "MOV     R2, R4 \n"
 892       "MOV     R1, #0x20 \n"
 893       "BL      sub_FFC68B60 \n"
 894       "TST     R0, #1 \n"
 895       "LDRNE   R1, =0x5A8 \n"
 896       "LDRNE   R0, =0xFFC96404 \n"
 897       "LDMNEFD SP!, {R4-R8,LR} \n"
 898       "BNE     sub_FFC0EB14 \n"
 899       "LDMFD   SP!, {R4-R8,PC} \n"
 900         );
 901 }
 902 
 903 //** sub_FFC88B4C_my  @ 0xFFC88B4C 
 904 
 905 void __attribute__((naked,noinline)) sub_FFC88B4C_my() {
 906 asm volatile (
 907       "STMFD   SP!, {R4-R6,LR} \n"
 908       "LDR     R5, =0x3760 \n"
 909       "MOV     R4, R0 \n"
 910       "LDR     R0, [R5, #4] \n"
 911       "CMP     R0, #1 \n"
 912       "LDRNE   R1, =0x146 \n"
 913       "LDRNE   R0, =0xFFC88950 \n"
 914       "BLNE    sub_FFC0EB14 \n"
 915       "CMN     R4, #0xC00 \n"
 916       "LDREQSH R4, [R5, #2] \n"
 917       "CMN     R4, #0xC00 \n"
 918       "MOVEQ   R1, #0x14C \n"
 919       "LDREQ   R0, =0xFFC88950 \n"
 920       "STRH    R4, [R5, #2] \n"
 921       "BLEQ    sub_FFC0EB14 \n"
 922       "MOV     R0, R4 \n"
 923 //      "BL      sub_FFD8F408 \n"  //original _apex2us
 924       "BL      apex2us\n"  // +
 925       "MOV     R4, R0 \n"
 926       "BL      sub_FFCBB7D4 \n"
 927       "MOV     R0, R4 \n"
 928       "BL      sub_FFCBF630 \n"
 929       "TST     R0, #1 \n"
 930       "LDRNE   R1, =0x151 \n"
 931       "LDMNEFD SP!, {R4-R6,LR} \n"
 932       "LDRNE   R0, =0xFFC88950 \n"
 933       "BNE     sub_FFC0EB14 \n"
 934       "LDMFD   SP!, {R4-R6,PC} \n"
 935         );
 936 }

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