root/platform/ixus230_elph310hs/sub/100a/movie_rec.c

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

DEFINITIONS

This source file includes following definitions.
  1. change_video_tables
  2. set_quality
  3. movie_record_task
  4. movie_time
  5. sub_FF185D98_my
  6. sub_FF2E31E8_my

   1 #include "conf.h"
   2 
   3 void change_video_tables(__attribute__ ((unused))int a, __attribute__ ((unused))int b) {}
   4 
   5 void  set_quality(int *x){ // -17 highest; +12 lowest
   6  if (conf.video_mode) *x=12-((conf.video_quality-1)*(12+17)/(99-1));
   7 }
   8 
   9 /*----------------------------------------------------------------------
  10         movie_record_task()
  11 -----------------------------------------------------------------------*/
  12 void __attribute__((naked,noinline)) movie_record_task() {
  13 // FF186748
  14     asm volatile (
  15         "    STMFD   SP!, {R2-R10,LR} \n" 
  16         "    LDR     R6, =0xFF1854B8 \n" 
  17         "    LDR     R7, =0xFF1861B4 \n" 
  18         "    LDR     R4, =0x6CC0 \n" 
  19         "    LDR     R9, =0x6D6 \n" 
  20         "    LDR     R10, =0x2710 \n" 
  21         "    MOV     R8, #1 \n" 
  22         "    MOV     R5, #0 \n" 
  23         "loc_FF186768:\n"
  24         "    LDR     R0, [R4, #0x24] \n" 
  25         "    MOV     R2, #0 \n" 
  26         "    ADD     R1, SP, #4 \n" 
  27         "    BL      sub_FF02B314 \n" 
  28         "    LDR     R0, [R4, #0x2C] \n" 
  29         "    CMP     R0, #0 \n" 
  30         "    LDRNE   R0, [R4, #0xC] \n" 
  31         "    CMPNE   R0, #2 \n" 
  32         "    LDRNE   R0, [R4, #0x44] \n" 
  33         "    CMPNE   R0, #6 \n" 
  34         "    BNE     loc_FF1868A4 \n" 
  35         "    LDR     R0, [SP, #4] \n" 
  36         "    LDR     R1, [R0] \n" 
  37         "    SUB     R1, R1, #2 \n" 
  38         "    CMP     R1, #0xD \n" 
  39         "    ADDCC   PC, PC, R1, LSL #2 \n" 
  40         "    B       loc_FF1868A4 \n" 
  41         "    B       loc_FF186844 \n" 
  42         "    B       loc_FF186868 \n" 
  43         "    B       loc_FF186878 \n" 
  44         "    B       loc_FF186880 \n" 
  45         "    B       loc_FF186888 \n" 
  46         "    B       loc_FF186890 \n" 
  47         "    B       loc_FF18684C \n" 
  48         "    B       loc_FF186898 \n" 
  49         "    B       loc_FF186858 \n" 
  50         "    B       loc_FF1868A4 \n" 
  51         "    B       loc_FF1868A0 \n" 
  52         "    B       loc_FF186810 \n" 
  53         "    B       loc_FF1867E0 \n" 
  54         "loc_FF1867E0:\n" // jump table entry 12
  55         "    STR     R5, [R4, #0x40] \n" 
  56         "    STR     R5, [R4, #0x30] \n" 
  57         "    STR     R5, [R4, #0x34] \n" 
  58         "    STRH    R5, [R4, #6] \n" 
  59         "    STR     R6, [R4, #0xD8] \n" 
  60         "    STR     R7, [R4, #0xF4] \n" 
  61         "    LDR     R0, [R4, #0xC] \n" 
  62         "    ADD     R0, R0, #1 \n" 
  63         "    STR     R0, [R4, #0xC] \n" 
  64         "    MOV     R0, #6 \n" 
  65         "    STR     R0, [R4, #0x44] \n" 
  66         "    B       loc_FF186830 \n" 
  67         "loc_FF186810:\n" // jump table entry 11
  68         "    STR     R5, [R4, #0x40] \n" 
  69         "    STR     R5, [R4, #0x30] \n" 
  70         "    STR     R6, [R4, #0xD8] \n" 
  71         "    STR     R7, [R4, #0xF4] \n" 
  72         "    LDR     R0, [R4, #0xC] \n" 
  73         "    ADD     R0, R0, #1 \n" 
  74         "    STR     R0, [R4, #0xC] \n" 
  75         "    STR     R8, [R4, #0x44] \n" 
  76         "loc_FF186830:\n"
  77         "    LDR     R2, =0xFF184A60 \n" 
  78         "    LDR     R1, =0xB1A28 \n" 
  79         "    LDR     R0, =0xFF184B74 \n" 
  80         "    BL      sub_FF045B24 \n" 
  81         "    B       loc_FF1868A4 \n" 
  82         "loc_FF186844:\n" // jump table entry 0
  83 //begin patch
  84         // "    BL      sub_FF185D98 \n" // original
  85         "    BL     movie_time\n"     //patched
  86 "label_A:\n"
  87 //end patch
  88         "    B       loc_FF1868A4 \n" 
  89         "loc_FF18684C:\n" // jump table entry 6
  90         "    LDR     R1, [R4, #0xF4] \n" 
  91         "    BLX     R1 \n" 
  92         "    LDR     R0, =0x6D48-4 \n" // added - found at FF1866A4 in 100a
  93         "    BL      set_quality \n" // added
  94         "    B       loc_FF1868A4 \n" 
  95         "loc_FF186858:\n"  // jump table entry 8
  96         "    LDR     R1, [R0, #0x18] \n" 
  97         "    LDR     R0, [R0, #4] \n" 
  98         "    BL      sub_FF2E474C \n" //diff
  99         "    B       loc_FF1868A4 \n" 
 100         "loc_FF186868:\n" // jump table entry 1
 101         "    LDR     R0, [R4, #0x44] \n" 
 102         "    CMP     R0, #5 \n" 
 103         "    STRNE   R8, [R4, #0x34] \n" 
 104         "    B       loc_FF1868A4 \n" 
 105         "loc_FF186878:\n" // jump table entry 2
 106         "    BL      sub_FF18512C \n" 
 107         "    B       loc_FF1868A4 \n" 
 108         "loc_FF186880:\n" // jump table entry 3
 109         "    BL      sub_FF184E24 \n" 
 110         "    B       loc_FF1868A4 \n" 
 111         "loc_FF186888:\n" // jump table entry 4
 112         "    BL      sub_FF184BCC \n" 
 113         "    B       loc_FF1868A4 \n" 
 114         "loc_FF186890:\n" // jump table entry 5
 115         "    BL      sub_FF1847EC \n" 
 116         "    B       loc_FF1868A4 \n" 
 117         "loc_FF186898:\n" // jump table entry 7
 118         "    BL      sub_FF18476C \n" 
 119         "    B       loc_FF1868A4 \n" 
 120         "loc_FF1868A0:\n" // jump table entry 10
 121         "    BL      sub_FF186E1C \n" 
 122         "loc_FF1868A4:\n" // jump table default entry & 9
 123         "    LDR     R1, [SP, #4] \n" 
 124         "    LDR     R3, =0xFF1844C0 \n" // **"MovieRecorder.c"
 125         "    STR     R5, [R1] \n" 
 126         "    STR     R9, [SP] \n" 
 127         "    LDR     R0, [R4, #0x28] \n" 
 128         "    MOV     R2, R10 \n" 
 129         "    BL      sub_FF02BC8C \n" 
 130         "    B       loc_FF186768 \n" 
 131     );
 132 }
 133 
 134 void __attribute__((naked,noinline)) movie_time() {
 135     if( (int)conf.ext_video_time == 1 ) {
 136         asm volatile (
 137           "BL     sub_FF185D98_my\n"
 138           "B      label_A\n"
 139         );
 140     } else {
 141         asm volatile (
 142           "BL     sub_FF185D98\n"
 143           "B      label_A\n"
 144         );
 145     }
 146 }
 147 /*----------------------------------------------------------------------
 148         sub_FF185D98_my()
 149 -----------------------------------------------------------------------*/
 150 void __attribute__((naked,noinline)) sub_FF185D98_my() {
 151 // FF185D98
 152     asm volatile (
 153         "    STMFD   SP!, {R0-R8,LR} \n" 
 154         "    LDR     R6, =0x6CC0 \n" 
 155         "    MOV     R0, #0 \n" 
 156         "    STR     R0, [R6, #0x34] \n" 
 157         "    STR     R0, [R6, #0x38] \n" 
 158         "    ADD     R0, R6, #0 \n" 
 159         "    LDR     R0, [R0, #0x5C] \n" 
 160         "    LDRH    R1, [R6, #6] \n" 
 161         "    MOV     R3, #0x3E8 \n" 
 162         "    MUL     R0, R3, R0 \n" 
 163         "    CMP     R1, #0 \n" 
 164         "    MOV     R2, #1 \n" 
 165         "    BNE     loc_FF185DDC \n" 
 166         "    LDR     R1, [R6, #0x90] \n" 
 167         "    CMP     R1, #0 \n" 
 168         "    BNE     loc_FF185DEC \n" 
 169         "    B       loc_FF185DE4 \n" 
 170         "loc_FF185DDC:\n"
 171         "    CMP     R1, #3 \n" 
 172         "    BNE     loc_FF185DEC \n" 
 173         "loc_FF185DE4:\n"
 174         "    STR     R2, [R6, #0x48] \n" 
 175         "    B       loc_FF185DF8 \n" 
 176         "loc_FF185DEC:\n"
 177         "    MOV     R1, #0x3E8 \n" 
 178         "    BL      sub_FF3A2F5C \n" //diff
 179         "    STR     R0, [R6, #0x48] \n" 
 180         "loc_FF185DF8:\n"
 181         "    LDR     R4, =0xB1A5C \n" 
 182         "    MOV     R7, #2 \n" 
 183         "    LDR     R0, [R4, #8] \n" 
 184         "    CMP     R0, #0 \n" 
 185         "    BEQ     loc_FF185E60 \n" 
 186         "    LDR     R0, [R6, #0x58] \n" 
 187         "    MOV     R1, #4 \n" 
 188         "    CMP     R0, #0x18 \n" 
 189         "    BEQ     loc_FF185FF4 \n" 
 190         "    BGT     loc_FF185E3C \n" 
 191         "    CMP     R0, #0xA \n" 
 192         "    CMPNE   R0, #0xF \n" 
 193         "    STREQ   R7, [R4, #0x14] \n" 
 194         "    BEQ     loc_FF185E60 \n" 
 195         "    CMP     R0, #0x14 \n" 
 196         "    BNE     loc_FF185E54 \n" 
 197         "    B       loc_FF185FF4 \n" 
 198         "loc_FF185E3C:\n"
 199         "    CMP     R0, #0x1E \n" 
 200         "    BEQ     loc_FF185FF4 \n" 
 201         "    CMP     R0, #0x3C \n" 
 202         "    MOVEQ   R0, #8 \n" 
 203         "    STREQ   R0, [R4, #0x14] \n" 
 204         "    BEQ     loc_FF185E60 \n" 
 205         "loc_FF185E54:\n"
 206         "    LDR     R1, =0x7D9 \n" 
 207         "    LDR     R0, =0xFF1844C0 \n" // **"MovieRecorder.c"
 208         "    BL      _DebugAssert \n"
 209         "loc_FF185E60:\n"
 210         "    LDR     R2, =0x6CC2 \n" 
 211         "    LDR     R0, [R6, #0xB8] \n" 
 212         "    MOV     R3, #2 \n" 
 213         "    MOV     R1, #0xAA \n" 
 214         "    BL      sub_FF08A794 \n" 
 215         "    LDR     R2, =0x6CC4 \n" 
 216         "    LDR     R0, [R6, #0xB8] \n" 
 217         "    MOV     R3, #2 \n" 
 218         "    MOV     R1, #0xA9 \n" 
 219         "    BL      sub_FF08A794 \n" 
 220         "    LDR     R2, =0x6D10 \n" 
 221         "    LDR     R0, [R6, #0xB8] \n" 
 222         "    MOV     R3, #4 \n" 
 223         "    MOV     R1, #0xA2 \n" 
 224         "    BL      sub_FF08A794 \n" 
 225         "    LDR     R2, =0x6D14 \n" 
 226         "    LDR     R0, [R6, #0xB8] \n" 
 227         "    MOV     R3, #4 \n" 
 228         "    MOV     R1, #0xA3 \n" 
 229         "    BL      sub_FF08A794 \n" 
 230         "    LDR     R0, [R6, #0x90] \n" 
 231         "    CMP     R0, #0 \n" 
 232         "    LDRNE   R2, =0x6DC0 \n" 
 233         "    MOVNE   R1, #0 \n" 
 234         "    MOVNE   R0, #0xD \n" 
 235         "    BLNE    sub_FF084970 \n" 
 236         "    LDR     R0, [R6, #0x4C] \n" 
 237         "    LDR     R5, =0x6DC0 \n" 
 238         "    LDR     R8, =0xB1A44 \n" 
 239         "    CMP     R0, #2 \n" 
 240         "    CMPNE   R0, #3 \n" 
 241         "    BNE     loc_FF185F5C \n" 
 242         "    LDR     R0, [R6, #0x90] \n" 
 243         "    CMP     R0, #0 \n" 
 244         "    LDRNE   R0, =0x443FC000 \n" 
 245         "    STRNE   R0, [R5] \n" 
 246         "    BNE     loc_FF185F5C \n" 
 247         "    LDR     R0, =0x460B8600 \n" 
 248         "    LDR     R1, =0x10959E0 \n" 
 249         "    STR     R0, [R5] \n" 
 250         "    STR     R1, [R5, #4] \n" 
 251         "    LDMIA   R8, {R1,R2} \n" 
 252         "    STR     R0, [R6, #0xA0] \n" 
 253         "    MUL     R1, R2, R1 \n" 
 254         "    MOV     R2, #0 \n" 
 255         "    MOV     R3, R1, LSL #1 \n" 
 256         "    ADD     R1, R0, R3 \n" 
 257         "    STR     R3, [R6, #0x9C] \n" 
 258         "    STR     R1, [R6, #0xA4] \n" 
 259         "    STMEA   SP, {R1-R3} \n" 
 260         "    MOV     R3, R2 \n" 
 261         "    MOV     R2, #9 \n" 
 262         "    MOV     R1, #5 \n" 
 263         "    MOV     R0, #0x10 \n" 
 264         "    BL      sub_FF29930C \n" 
 265         "    LDR     R1, [R5] \n" 
 266         "    LDR     R0, [R6, #0x9C] \n" 
 267         "    ADD     R1, R1, R0, LSL #1 \n" 
 268         "    STR     R1, [R5] \n" 
 269         "    LDR     R1, [R5, #4] \n" 
 270         "    RSB     R0, R0, #0 \n" 
 271         "    ADD     R0, R1, R0, LSL #1 \n" 
 272         "    STR     R0, [R5, #4] \n" 
 273         "loc_FF185F5C:\n"
 274         "    LDR     R3, =0xFF185D64 \n" 
 275         "    LDMIA   R5, {R0,R1} \n" 
 276         "    STR     R3, [SP] \n" 
 277         "    LDR     R3, =0xB1A5C \n" 
 278         "    SUB     R2, R3, #0x18 \n" 
 279         //"    BL      sub_FF2E31E8 \n" //diff from 100b
 280         "    BL      sub_FF2E31E8_my \n" // patched
 281         "    LDR     R3, [R6, #0xB8] \n" 
 282         "    STR     R3, [SP] \n" 
 283         "    LDR     R0, [R6, #0x90] \n" 
 284         "    LDRD    R2, [R6, #0xF8] \n" 
 285         "    BL      sub_FF2E3624 \n" //diff
 286         "    LDR     R0, [R6, #0x64] \n" 
 287         "    LDR     R3, =0x6D48 \n" 
 288         "    AND     R1, R0, #0xFF \n" 
 289         "    LDR     R0, [R8] \n" 
 290         "    SUB     R2, R3, #4 \n" 
 291         "    BL      sub_FF2E1184 \n" //diff
 292         "    LDRH    R0, [R6, #6] \n" 
 293         "    CMP     R0, #2 \n" 
 294         "    LDREQ   R0, =0xFF185A3C \n" 
 295         "    STREQ   R0, [R6, #0xF4] \n" 
 296         "    LDR     R0, [R6, #0x90] \n" 
 297         "    CMP     R0, #0 \n" 
 298         "    LDREQ   R1, =0xFF185670 \n" 
 299         "    STREQ   R1, [R6, #0xF4] \n" 
 300         "    LDR     R2, [R6, #0xC] \n" 
 301         "    LDR     R1, =0xFF3EC250 \n" //diff
 302         "    CMP     R2, #2 \n" 
 303         "    BNE     sub_FF185FFC \n" 
 304         "    LDR     R0, [R6, #0x4C] \n" 
 305         "    ADD     R0, R1, R0, LSL #3 \n" 
 306         "    LDR     R1, [R8, #0xC] \n" 
 307         "    LDR     R0, [R0, R1, LSL #2] \n" 
 308         "    BL      sub_FF29F37C \n" 
 309         "    LDR     R0, =0xFF185594 \n" 
 310         "    MOV     R1, #0 \n" 
 311         "    BL      sub_FF29F878 \n" 
 312         "    B       sub_FF186038 \n" 
 313         "loc_FF185FF4:\n"
 314         "    STR     R1, [R4, #0x14] \n" 
 315         "    B       loc_FF185E60 \n" 
 316         );
 317 }
 318 
 319 /*----------------------------------------------------------------------
 320         sub_FF2E31E8_my()
 321 -----------------------------------------------------------------------*/
 322 void __attribute__((naked,noinline)) sub_FF2E31E8_my() {
 323 // FF2E31E8
 324     asm volatile (
 325         "    STMFD   SP!, {R0-R12,LR} \n" 
 326         "    MOV     R9, R0 \n" 
 327         "    LDR     R0, [R2, #0x10] \n" 
 328         "    LDR     R8, [SP, #0x38] \n" 
 329         "    CMP     R0, #0 \n" 
 330         "    LDREQ   R1, =0x346 \n" 
 331         "    LDREQ   R0, =0xFF2E206C \n" // **"MovWriter.c"
 332         "    MOV     R5, #0 \n" 
 333         "    MOV     R4, R2 \n" 
 334         "    MOV     R10, R3 \n" 
 335         "    MOV     R7, R5 \n" 
 336         "    BLEQ    _DebugAssert \n" 
 337         "    LDR     R6, =0xC318 \n" 
 338         "    LDR     R0, [R4] \n" 
 339         "    MOV     R11, #0x1E \n" 
 340         "    STR     R0, [R6, #0xD0] \n" 
 341         "    LDR     R0, [R4, #4] \n" 
 342         "    STR     R0, [R6, #0xD4] \n" 
 343         "    LDR     R0, [R4, #0x10] \n" 
 344         "    STR     R0, [R6, #0xE0] \n" 
 345         "    LDR     R1, [R4, #8] \n" 
 346         "    LDR     R0, =0x7530 \n" 
 347         "    CMP     R1, #0xB \n" 
 348         "    ADDCC   PC, PC, R1, LSL #2 \n" 
 349         "    B       loc_FF2E32D4 \n" 
 350         "    B       loc_FF2E3288 \n" 
 351         "    B       loc_FF2E3278 \n" 
 352         "    B       loc_FF2E32B0 \n" 
 353         "    B       loc_FF2E32C4 \n" 
 354         "    B       loc_FF2E32D4 \n" 
 355         "    B       loc_FF2E32D4 \n" 
 356         "    B       loc_FF2E32D4 \n" 
 357         "    B       loc_FF2E32D4 \n" 
 358         "    B       loc_FF2E32A8 \n" 
 359         "    B       loc_FF2E32A0 \n" 
 360         "    B       loc_FF2E3290 \n" 
 361 
 362         "loc_FF2E3278:\n" // jump table entry 1
 363         "    LDR     R7, =0x5DC0 \n" 
 364         "    MOV     R0, #0x18 \n" 
 365         "    STR     R7, [R6, #0x12C] \n" 
 366         "    B       loc_FF2E32BC \n" //diff
 367         "loc_FF2E3288:\n" // jump table entry 0
 368         "    MOV     R7, R0 \n" 
 369         "    B       loc_FF2E3294 \n" //diff
 370         "loc_FF2E3290:\n" // jump table entry 10
 371         "    LDR     R7, =0x5DC \n" 
 372         "loc_FF2E3294:\n"
 373         "    STR     R0, [R6, #0x12C] \n" 
 374         "    STR     R11, [R6, #0xD8] \n" 
 375         "    B       loc_FF2E32E0 \n" 
 376         "loc_FF2E32A0:\n" // jump table entry 9
 377         "    LDR     R7, =0xBB8 \n" 
 378         "    B       loc_FF2E3294 \n" 
 379         "loc_FF2E32A8:\n" // jump table entry 8
 380         "    LDR     R7, =0x1770 \n" 
 381         "    B       loc_FF2E3294 \n" 
 382         "loc_FF2E32B0:\n" // jump table entry 2
 383         "    LDR     R7, =0x57600000 \n" // 2hrs, orignal 0x3A980
 384         "    STR     R0, [R6, #0x12C] \n" 
 385         "    MOV     R0, #240 \n" // original 0xF0
 386         "loc_FF2E32BC:\n"
 387         "    STR     R0, [R6, #0xD8] \n" 
 388         "    B       loc_FF2E32E0 \n" 
 389         "loc_FF2E32C4:\n" // jump table entry 3
 390         "    STR     R0, [R6, #0x12C] \n" 
 391         "    LDR     R7, =0x28800000 \n" // 2hrs, original 0x1D4C0
 392         "    MOV     R0, #0x78 \n" // 120 fps (0x78 = dec 120)
 393         "    B       loc_FF2E32BC \n" 
 394 
 395         "loc_FF2E32D4:\n" // jump table default entry & 4-7
 396         "    LDR     R1, =0x377 \n" 
 397         "    LDR     R0, =0xFF2E206C \n" // **"MovWriter.c"
 398         "    BL      _DebugAssert \n" // patched
 399         "loc_FF2E32E0:\n"
 400         "    LDR     R0, [R6, #0xD8] \n" 
 401         "    LDR     R1, =7200 \n" // 2hrs, original 0xE0F
 402         "    MOV     R0, R0, LSR #1 \n" 
 403         "    STR     R0, [R6, #0xDC] \n" 
 404         "    LDR     R0, [R10] \n" 
 405         "    STR     R0, [R6, #0xE4] \n" 
 406         "    LDRH    R0, [R10, #0x10] \n" 
 407         "    STR     R0, [R6, #0xE8] \n" 
 408         "    LDR     R0, [R10, #4] \n" 
 409         "    STRH    R0, [R6, #2] \n" 
 410         "    LDR     R0, [R10, #8] \n" 
 411         "    STRH    R0, [R6, #4] \n" 
 412         "    LDR     R0, [R10, #0x14] \n" 
 413         "    STR     R0, [R6, #0xEC] \n" 
 414         "    STR     R8, [R6, #0x128] \n" 
 415         "    LDR     R0, [R6, #0xD0] \n" 
 416         "    CMP     R0, #0x140 \n" 
 417         "    MOVEQ   R0, #0x20000 \n" 
 418         "    MOVEQ   R5, #1 \n" 
 419         "    STREQ   R0, [R6, #0xAC] \n" 
 420         "    BEQ     loc_FF2E3374 \n" 
 421         "    CMP     R0, #0x280 \n" 
 422         "    LDREQ   R0, =0x7A760 \n" 
 423         "    MOVEQ   R5, #2 \n" 
 424         "    STREQ   R0, [R6, #0xAC] \n" 
 425         "    BEQ     loc_FF2E3374 \n" 
 426         "    CMP     R0, #0x500 \n" //0x500=1280
 427         "    LDREQ   R0, =0x11DA50 \n" 
 428         "    LDR     R1, =7200 \n" // 2hrs, original 0x257
 429         "    MOVEQ   R5, #4 \n" 
 430         "    STREQ   R0, [R6, #0xAC] \n" 
 431         "    BEQ     loc_FF2E3374 \n" 
 432         "    CMP     R0, #0x780 \n" 
 433         "    BNE     loc_FF2E337C \n" 
 434         "    MOV     R0, #2097152 \n" // 10mins, original 0x200000
 435         "    MOV     R5, #5 \n" 
 436         "    STR     R0, [R6, #0xAC] \n" 
 437         "loc_FF2E3374:\n"
 438         "    STR     R1, [R6, #0x4C] \n" 
 439         "    B       loc_FF2E3388 \n" 
 440         "loc_FF2E337C:\n"
 441         "    LDR     R1, =0x39F \n" 
 442         "    LDR     R0, =0xFF2E206C \n" // **"MovWriter.c"
 443         "    BL      _DebugAssert \n"
 444         "loc_FF2E3388:\n"
 445         "    LDR     R0, [R6, #0x4C] \n" 
 446         "    LDR     R1, =0x138D \n" 
 447         "    MUL     R0, R7, R0 \n" 
 448         "    BL      sub_FF3A2F5C \n" 
 449         "    ADD     R0, R0, #1 \n" 
 450         "    ADD     R0, R0, R0, LSL #2 \n" 
 451         "    STR     R0, [R6, #0x48] \n" 
 452         "    LDR     R8, [R4, #8] \n" 
 453         "    CMP     R8, #0xA \n" 
 454         "    CMPNE   R8, #9 \n" 
 455         "    CMPNE   R8, #8 \n" 
 456         "    BNE     loc_FF2E33CC \n" 
 457         "    LDR     R1, =0x3E9 \n" 
 458         "    MUL     R0, R1, R0 \n" 
 459         "    MOV     R1, R7 \n" 
 460         "    BL      sub_FF3A2F5C \n" 
 461         "    STR     R0, [R6, #0x4C] \n" 
 462         "loc_FF2E33CC:\n"
 463         "    CMP     R8, #2 \n" 
 464         "    CMPNE   R8, #3 \n" 
 465         "    BNE     loc_FF2E3404 \n" 
 466         "    RSB     R0, R7, R7, LSL #4 \n" 
 467         "    LDR     R1, =0x3E9 \n" 
 468         "    MOV     R0, R0, LSL #1 \n" 
 469         "    STR     R11, [R6, #0x4C] \n" 
 470         "    BL      sub_FF3A2F5C \n" 
 471         "    LDR     R1, [R6, #0xE0] \n" 
 472         "    MOV     R7, R1 \n" 
 473         "    BL      sub_FF3A2F5C \n" 
 474         "    ADD     R0, R0, #1 \n" 
 475         "    MUL     R0, R7, R0 \n" 
 476         "    STR     R0, [R6, #0x48] \n" 
 477         "loc_FF2E3404:\n"
 478         "    LDR     R0, [R4, #0xC] \n" 
 479         "    LDR     R7, [R10, #0xC] \n" 
 480         "    ADDS    R1, R0, #0 \n" 
 481         "    MOV     R0, R7, LSR #1 \n" 
 482         "    STR     R7, [R6, #0x94] \n" 
 483         "    STR     R0, [R6, #0x98] \n" 
 484         "    ADD     R0, R9, #3 \n" 
 485         "    BIC     R0, R0, #3 \n" 
 486         "    STR     R0, [R6, #0xF4] \n" 
 487         "    LDR     R2, [R6, #0x48] \n" 
 488         "    MOVNE   R1, #1 \n" 
 489         "    MOV     R2, R2, LSL #2 \n" 
 490         "    ADD     R3, R0, R2 \n" 
 491         "    STR     R3, [R6, #0xF8] \n" 
 492         "    LDRH    R12, [R6, #4] \n" 
 493         "    LDR     R0, [SP, #4] \n" 
 494         "    ADD     R2, R2, R3 \n" 
 495         "    CMP     R12, #0 \n" 
 496         "    ADD     R0, R0, R9 \n" 
 497         "    BEQ     loc_FF2E3584 \n"
 498         "    STR     R2, [R6, #0xFC] \n" 
 499         "    LDR     R3, [R6, #0x4C] \n" 
 500         "    LDR     R9, =0x15E4BC \n" 
 501         "    ADD     R2, R2, R3, LSL #3 \n" 
 502         "    ADD     R2, R2, #0x1F \n" 
 503         "    BIC     R2, R2, #0x1F \n" 
 504         "    STR     R2, [R6, #0x100] \n" 
 505         "    LDR     R3, [R6, #0xAC] \n" 
 506         "    LDR     R11, =0xC498 \n" 
 507         "    ADD     R2, R2, R3 \n" 
 508         "    ADD     R3, R2, #0x100000 \n" 
 509         "    STR     R2, [R6, #0x78] \n" 
 510         "    SUB     R0, R0, R3 \n" 
 511         "    RSB     R2, R7, #0 \n" 
 512         "    ADD     R0, R0, R2, LSL #1 \n" 
 513         "    MOV     R0, R0, LSR #0xF \n" 
 514         "    MOV     R0, R0, LSL #0xF \n" 
 515         "    STR     R3, [R6, #0x104] \n" 
 516         "    ADD     R8, R3, R0 \n" 
 517         "    STR     R0, [R6, #0x110] \n" 
 518         "    STR     R8, [R6, #0x108] \n" 
 519         "    MOV     R2, #0 \n" 
 520         "    ADD     R10, R9, #0x10 \n" 
 521         "    STR     R8, [R6, #0x10C] \n" 
 522         "loc_FF2E34B4:\n"
 523         "    MLA     R0, R2, R7, R8 \n" 
 524         "    ADD     R12, R9, R2, LSL #3 \n" 
 525         "    ADD     R0, R0, #3 \n" 
 526         "    BIC     R0, R0, #3 \n" 
 527         "    STR     R0, [R11, R2, LSL #2] \n" 
 528         "    MOV     R0, #0 \n" 
 529         "    ADD     R6, R10, R2, LSL #3 \n" 
 530 "loc_FF2E34D0:\n"
 531         "    STR     R3, [R12, R0, LSL #2] \n" 
 532         "    STR     R3, [R6, R0, LSL #2] \n" 
 533         "    ADD     R0, R0, #1 \n" 
 534         "    CMP     R0, #2 \n" 
 535         "    BLT     loc_FF2E34D0 \n" 
 536         "    ADD     R2, R2, #1 \n" 
 537         "    CMP     R2, #2 \n" 
 538         "    BLT     loc_FF2E34B4 \n" 
 539         "    LDRH    R3, [R4, #0x14] \n" 
 540         "    LDR     R2, [R4, #8] \n" 
 541         "    MOV     R0, R5 \n" 
 542         "    BL      sub_FF0D5C48 \n" 
 543         "    LDR     R1, =0xC318 \n" 
 544         "    LDR     R2, [R1, #0x94] \n" 
 545         "    ADD     R0, R0, R2 \n" 
 546         "    STR     R0, [R1, #0x8C] \n" 
 547         "    LDMFD   SP!, {R0-R12,PC} \n" 
 548         "loc_FF2E3584:\n"
 549         "    ADD     R2, R2, #0x1F \n" 
 550         "    BIC     R2, R2, #0x1F \n" 
 551         "    STR     R2, [R6, #0x100] \n" 
 552         "    LDR     R3, [R6, #0xAC] \n" 
 553         "    ADD     R2, R2, R3 \n" 
 554         "    SUB     R0, R0, R2 \n" 
 555         "    MOV     R0, R0, LSR #0xF \n" 
 556         "    MOV     R0, R0, LSL #0xF \n" 
 557         "    STR     R2, [R6, #0x104] \n" 
 558         "    STR     R0, [R6, #0x110] \n" 
 559         "    ADD     R0, R0, R2 \n" 
 560         "    STR     R0, [R6, #0x108] \n" 
 561         "    LDRH    R3, [R4, #0x14] \n" 
 562         "    MOV     R2, R8 \n" 
 563         "    MOV     R0, R5 \n" 
 564         "    BL      sub_FF0D5C48 \n" 
 565         "    STR     R0, [R6, #0x8C] \n" 
 566         "    LDMFD   SP!, {R0-R12,PC} \n" 
 567     );
 568 }

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