1 /* 2 #include "conf.h" 3 4 int *video_quality = &conf.video_quality; 5 int *video_mode = &conf.video_mode; 6 7 long def_table1[9]={0x2000,0x38D,0x788,0x5800,0x9C5,0x14B8,0x10000,0x1C6A,0x3C45}; 8 long def_table2[9]={0x1CCD,-0x2E1,-0x579,0x4F33,-0x7EB,-0xF0C,0xE666,-0x170A,-0x2BC6}; 9 10 long table1[9], table2[9]; 11 12 void change_video_tables(int a, int b){ 13 int i; 14 for (i=0;i<9;i++) {table1[i]=(def_table1[i]*a)/b; table2[i]=(def_table2[i]*a)/b;} 15 } 16 17 long CompressionRateTable[]={0x60, 0x5D, 0x5A, 0x57, 0x54, 0x51, 0x4D, 0x48, 0x42, 0x3B, 0x32, 0x29, 0x22, 0x1D, 0x17, 0x14, 0x10, 0xE, 0xB, 9, 7, 6, 5, 4, 3, 2, 1}; 18 19 void __attribute__((naked,noinline)) movie_record_task(){ 20 asm volatile( 21 "STMFD SP!, {R4,LR}\n" 22 "SUB SP, SP, #4\n" 23 "MOV R4, SP\n" 24 "B loc_FF954A7C\n" 25 "loc_FF9549D8:\n" 26 "LDR R3, =0x6EB28\n" 27 "LDR R2, [R3]\n" 28 "CMP R2, #0\n" 29 "BNE loc_FF954A68\n" 30 "SUB R3, R12, #2\n" 31 "CMP R3, #9\n" 32 "LDRLS PC, [PC,R3,LSL#2]\n" 33 "B loc_FF954A68\n" 34 ".long loc_FF954A28\n" 35 ".long loc_FF954A40\n" 36 ".long loc_FF954A48\n" 37 ".long loc_FF954A50\n" 38 ".long loc_FF954A30\n" 39 ".long loc_FF954A58\n" 40 ".long loc_FF954A38\n" 41 ".long loc_FF954A68\n" 42 ".long loc_FF954A60\n" 43 ".long loc_FF954A20\n" 44 "loc_FF954A20:\n" 45 "BL sub_FF954B14\n" 46 "B loc_FF954A64\n" 47 "loc_FF954A28:\n" 48 "BL unlock_optical_zoom\n" // + 49 "BL sub_FF954CC8\n" 50 "B loc_FF954A64\n" 51 "loc_FF954A30:\n" 52 "BL sub_FF95509C_my\n" //----------> 53 "B loc_FF954A64\n" 54 "loc_FF954A38:\n" 55 "BL sub_FF9554D0\n" 56 "B loc_FF954A64\n" 57 "loc_FF954A40:\n" 58 "BL sub_FF955334\n" 59 "B loc_FF954A64\n" 60 "loc_FF954A48:\n" 61 "BL sub_FF955640\n" 62 "B loc_FF954A64\n" 63 "loc_FF954A50:\n" 64 "BL sub_FF955804\n" 65 "B loc_FF954A64\n" 66 "loc_FF954A58:\n" 67 "BL sub_FF955558\n" 68 "B loc_FF954A64\n" 69 "loc_FF954A60:\n" 70 "BL sub_FF955384\n" 71 "loc_FF954A64:\n" 72 "LDR R1, [SP]\n" 73 "loc_FF954A68:\n" 74 "LDR R3, =0x6EA5C\n" 75 "MOV R2, #0\n" 76 "STR R2, [R1]\n" 77 "LDR R0, [R3]\n" 78 "BL sub_FF820814\n" 79 "loc_FF954A7C:\n" 80 "LDR R3, =0x6EA58\n" 81 "MOV R1, R4\n" 82 "LDR R0, [R3]\n" 83 "MOV R2, #0\n" 84 "BL sub_FF8203FC\n" 85 "LDR R0, [SP]\n" 86 "LDR R12, [R0]\n" 87 "CMP R12, #0xC\n" 88 "MOV R1, R0\n" 89 "BNE loc_FF9549D8\n" 90 "LDR R3, =0x6EA54\n" 91 "LDR R0, [R3]\n" 92 "BL sub_FF821190\n" 93 "BL sub_FF821958\n" 94 "ADD SP, SP, #4\n" 95 "LDMFD SP!, {R4,PC}\n" 96 ); 97 } 98 99 void __attribute__((naked,noinline)) sub_FF95509C_my(){ 100 asm volatile( 101 "STMFD SP!, {R4-R11,LR}\n" 102 "LDR R5, =0x6EB44\n" 103 "SUB SP, SP, #0x34\n" 104 "LDR R3, [R5]\n" 105 "CMP R3, #3\n" 106 "MOV R4, R0\n" 107 "MOVEQ R3, #4\n" 108 "STREQ R3, [R5]\n" 109 "LDR R3, =0x6EBF4\n" 110 "MOV LR, PC\n" 111 "LDR PC, [R3]\n" 112 "LDR R2, [R5]\n" 113 "CMP R2, #4\n" 114 "BNE loc_FF955260\n" 115 "ADD R0, SP, #0x30\n" 116 "ADD R1, SP, #0x2C\n" 117 "ADD R2, SP, #0x28\n" 118 "ADD R3, SP, #0x24\n" 119 "BL sub_FF956770_my\n" //----------> 120 "CMP R0, #0\n" 121 "BNE loc_FF955118\n" 122 "LDR R3, =0x6EB30\n" 123 "LDR R2, [R3]\n" 124 "CMP R2, #1\n" 125 "BNE loc_FF95512C\n" 126 "LDR R2, =0x6EB88\n" 127 "LDR R1, =0x6EB5C\n" 128 "LDR R12, [R2]\n" 129 "LDR R3, [R1]\n" 130 "CMP R12, R3\n" 131 "BCC loc_FF95512C\n" 132 "loc_FF955118:\n" 133 "BL sub_FF9552AC\n" 134 "BL sub_FF9554AC\n" 135 "MOV R3, #5\n" 136 "STR R3, [R5]\n" 137 "B loc_FF955260\n" 138 "loc_FF95512C:\n" 139 "LDR R12, =0x6EB90\n" 140 "LDR R11, =0x6EB9C\n" 141 "LDMIB R4, {R0-R2}\n" 142 "LDR R10, [R12]\n" 143 "LDR R7, [R11]\n" 144 "LDR R4, [SP,#0x2C]\n" 145 "LDR R5, [SP,#0x28]\n" 146 "LDR R6, [SP,#0x24]\n" 147 "LDR R8, =0x6EB34\n" 148 "LDR R3, [SP,#0x30]\n" 149 "ADD R12, SP, #0x20\n" 150 "ADD LR, SP, #0x1C\n" 151 "MOV R9, #1\n" 152 "STMEA SP, {R4-R6,R12}\n" 153 "STR R10, [SP,#0x10]\n" 154 "STR R7, [SP,#0x14]\n" 155 "STR LR, [SP,#0x18]\n" 156 "STR R9, [R8]\n" 157 "BL sub_FF89665C\n" 158 "LDR R3, =0x6EA4C\n" 159 "MOV R1, #0x3E8\n" 160 "LDR R0, [R3]\n" 161 "BL sub_FF820FA8\n" 162 "CMP R0, #9\n" 163 "BNE loc_FF9551A0\n" 164 "BL sub_FF956F80\n" 165 "LDR R3, =0x6EB44\n" 166 "LDR R0, =0xFF955084\n" 167 "B loc_FF9551B8\n" 168 "loc_FF9551A0:\n" 169 "LDR R5, [SP,#0x1C]\n" 170 "CMP R5, #0\n" 171 "BEQ loc_FF9551C4\n" 172 "BL sub_FF956F80\n" 173 "LDR R3, =0x6EB44\n" 174 "LDR R0, =0xFF955090\n" 175 "loc_FF9551B8:\n" 176 "STR R9, [R3]\n" 177 "BL sub_FF969EB0\n" 178 "B loc_FF955260\n" 179 "loc_FF9551C4:\n" 180 "BL sub_FF8967C8\n" 181 "LDR R0, [SP,#0x30]\n" 182 "LDR R1, [SP,#0x20]\n" 183 "BL sub_FF956CA4\n" 184 "LDR R4, =0x6EB88\n" 185 "LDR R3, [R4]\n" 186 "ADD R3, R3, #1\n" 187 "LDR R0, [SP,#0x20]\n" 188 "MOV R1, R11\n" 189 "STR R3, [R4]\n" 190 "MOV R2, R5\n" 191 "BL sub_FF955B60_my\n" //--------> 192 "LDR R3, =0x6EBA8\n" 193 "LDR R1, [R4]\n" 194 "LDR R2, [R3]\n" 195 "LDR R12, =0x6EBA4\n" 196 "MUL R0, R2, R1\n" 197 "LDR R1, [R12]\n" 198 "BL sub_FFAFF5B0\n" 199 "LDR R7, =0x6EBA0\n" 200 "LDR R3, [R7]\n" 201 "MOV R4, R0\n" 202 "CMP R3, R4\n" 203 "BNE loc_FF955238\n" 204 "LDR R6, =0x6EB38\n" 205 "LDR R3, [R6]\n" 206 "CMP R3, #1\n" 207 "BNE loc_FF955254\n" 208 "B loc_FF95523C\n" 209 "loc_FF955238:\n" 210 "LDR R6, =0x6EB38\n" 211 "loc_FF95523C:\n" 212 "LDR R3, =0x6EBD8\n" 213 "MOV R0, R4\n" 214 "MOV LR, PC\n" 215 "LDR PC, [R3]\n" 216 "STR R5, [R6]\n" 217 "STR R4, [R7]\n" 218 "loc_FF955254:\n" 219 "LDR R2, =0x6EB34\n" 220 "MOV R3, #0\n" 221 "STR R3, [R2]\n" 222 "loc_FF955260:\n" 223 "ADD SP, SP, #0x34\n" 224 "LDMFD SP!, {R4-R11,PC}\n" 225 ); 226 } 227 228 229 void __attribute__((naked,noinline)) sub_FF956770_my(){ 230 asm volatile( 231 "STMFD SP!, {R4-R11,LR}\n" 232 "LDR R5, =0x6EE9C\n" 233 "SUB SP, SP, #0x14\n" 234 "LDR LR, [R5]\n" 235 "LDR R12, =0x6EEB4\n" 236 "ADD LR, LR, #1\n" 237 "LDR R4, [R12]\n" 238 "STR LR, [R5]\n" 239 "LDR R12, =0x6EF34\n" 240 "STR R0, [SP,#0x10]\n" 241 "STR R1, [SP,#0xC]\n" 242 "STR R2, [SP,#8]\n" 243 "STR R3, [SP,#4]\n" 244 "CMP LR, R4\n" 245 "LDR R11, [R12]\n" 246 "MOVHI R0, #0x80000001\n" 247 "BHI loc_FF956C58\n" 248 "LDR R3, =0x6EF18\n" 249 "MOV R0, LR\n" 250 "LDR R1, [R3]\n" 251 "BL sub_FFAFFC40\n" 252 "CMP R0, #1\n" 253 "BNE loc_FF956990\n" 254 "LDR R0, =0x6EF3C\n" 255 "LDR R1, =0x6EE88\n" 256 "LDR R3, [R0]\n" 257 "LDR R2, [R1]\n" 258 "CMP R3, R2\n" 259 "LDREQ R3, =0x6EF38\n" 260 "LDREQ R5, [R3]\n" 261 "MOVNE R5, R2\n" 262 "LDR R3, =0x6EE9C\n" 263 "LDR R2, =0x6EF18\n" 264 "LDR R0, [R3]\n" 265 "LDR R1, [R2]\n" 266 "BL sub_FFAFF5B0\n" 267 "LDR R3, =0x6EE90\n" 268 "ADD R0, R0, #1\n" 269 "AND R0, R0, #1\n" 270 "STR R5, [R3,R0,LSL#2]\n" 271 "LDR R3, =0x6EE84\n" 272 "LDR R2, [R3]\n" 273 "CMP R5, R2\n" 274 "BHI loc_FF956840\n" 275 "LDR R4, =0x6EED4\n" 276 "LDR R3, [R4]\n" 277 "ADD R3, R5, R3\n" 278 "ADD R3, R3, #8\n" 279 "CMP R2, R3\n" 280 "BCS loc_FF956844\n" 281 "loc_FF956838:\n" 282 "MOV R0, #0x80000003\n" 283 "B loc_FF956C58\n" 284 "loc_FF956840:\n" 285 "LDR R4, =0x6EED4\n" 286 "loc_FF956844:\n" 287 "LDR R3, [R4]\n" 288 "LDR R2, =0x6EF3C\n" 289 "ADD R1, R5, R3\n" 290 "LDR R3, [R2]\n" 291 "ADD R2, R1, #8\n" 292 "CMP R2, R3\n" 293 "BLS loc_FF956890\n" 294 "LDR R2, =0x6EF38\n" 295 "LDR R0, =0x6EE84\n" 296 "RSB R3, R3, R1\n" 297 "LDR R1, [R2]\n" 298 "ADD R3, R3, #8\n" 299 "LDR R2, [R0]\n" 300 "ADD R1, R1, R3\n" 301 "CMP R2, R1\n" 302 "BCC loc_FF956838\n" 303 "LDR R3, =0x6EE88\n" 304 "STR R1, [R3]\n" 305 "B loc_FF956898\n" 306 "loc_FF956890:\n" 307 "LDR R3, =0x6EE88\n" 308 "STR R2, [R3]\n" 309 "loc_FF956898:\n" 310 "LDR R3, [R4]\n" 311 "LDR R12, =0x6EEE8\n" 312 "ADD R3, R3, #0x18\n" 313 "LDR R2, [R12,#4]\n" 314 "MOV R0, R3\n" 315 "MOV R1, #0\n" 316 "CMP R1, R2\n" 317 "BHI loc_FF956ADC\n" 318 "BNE loc_FF9568C8\n" 319 "LDR R3, [R12]\n" 320 "CMP R0, R3\n" 321 "BHI loc_FF956ADC\n" 322 "loc_FF9568C8:\n" 323 "LDR R4, [R4]\n" 324 "LDR LR, =0x6EEF0\n" 325 "STR R4, [SP]\n" 326 "LDR R12, =0x6EEE8\n" 327 "LDR R3, =0x6EE9C\n" 328 "LDMIA LR, {R7,R8}\n" 329 "LDMIA R12, {R5,R6}\n" 330 "LDR R10, [R3]\n" 331 "LDR R2, =0x6EF18\n" 332 "MOV R3, R4\n" 333 "MOV R4, #0\n" 334 "ADDS R7, R7, R3\n" 335 "ADC R8, R8, R4\n" 336 "LDR R9, [R2]\n" 337 "SUBS R5, R5, R3\n" 338 "SBC R6, R6, R4\n" 339 "MVN R2, #0\n" 340 "MVN R1, #0x17\n" 341 "ADDS R5, R5, R1\n" 342 "MOV R4, #0\n" 343 "MOV R3, #0x18\n" 344 "ADC R6, R6, R2\n" 345 "ADDS R7, R7, R3\n" 346 "ADC R8, R8, R4\n" 347 "STMIA R12, {R5,R6}\n" 348 "SUB R0, R10, #1\n" 349 "MOV R1, R9\n" 350 "STMIA LR, {R7,R8}\n" 351 "BL sub_FFAFF5B0\n" 352 "CMP R10, #1\n" 353 "MLA R0, R9, R0, R0\n" 354 "BEQ loc_FF956990\n" 355 "SUB R3, R0, #1\n" 356 "MOV R3, R3,LSL#4\n" 357 "ADD R4, R11, #0x10\n" 358 "ADD R5, R11, #0x14\n" 359 "LDR R1, [R5,R3]\n" 360 "LDR R2, [R4,R3]\n" 361 "LDR LR, =0x62773130\n" 362 "ADD R2, R2, R1\n" 363 "MOV R3, R0,LSL#4\n" 364 "ADD R2, R2, #8\n" 365 "MOV R0, #0\n" 366 "ADD R12, R11, #0xC\n" 367 "ADD R1, R11, #8\n" 368 "STR LR, [R1,R3]\n" 369 "STR R0, [R12,R3]\n" 370 "STR R2, [R4,R3]\n" 371 "LDR R0, [SP]\n" 372 "STR R0, [R5,R3]\n" 373 "loc_FF956990:\n" 374 "LDR R2, =0x6EE88\n" 375 "LDR R3, =0x6EF3C\n" 376 "LDR R1, [R2]\n" 377 "LDR R0, [R3]\n" 378 "ADD R3, R1, #9\n" 379 "CMP R3, R0\n" 380 "BLS loc_FF9569CC\n" 381 "LDR R2, =0x6EF38\n" 382 "LDR R3, [R2]\n" 383 "ADD R3, R3, R1\n" 384 "RSB R3, R0, R3\n" 385 "LDR R0, [SP,#0x10]\n" 386 "ADD R3, R3, #8\n" 387 "STR R3, [R0]\n" 388 "B loc_FF9569D8\n" 389 "loc_FF9569CC:\n" 390 "ADD R3, R1, #8\n" 391 "LDR R1, [SP,#0x10]\n" 392 "STR R3, [R1]\n" 393 "loc_FF9569D8:\n" 394 "LDR R2, [SP,#0x10]\n" 395 "LDR R1, =0x6EEE4\n" 396 "LDR R3, =0x6EF3C\n" 397 "LDR R12, [R2]\n" 398 "LDR R2, [R1]\n" 399 "LDR R0, [R3]\n" 400 "ADD R3, R12, R2\n" 401 "CMP R3, R0\n" 402 "BLS loc_FF956A2C\n" 403 "LDR R2, [SP,#0xC]\n" 404 "RSB R0, R12, R0\n" 405 "STR R0, [R2]\n" 406 "LDR R2, =0x6EF38\n" 407 "LDR R3, [R1]\n" 408 "LDR R1, [R2]\n" 409 "RSB R3, R0, R3\n" 410 "LDR R0, [SP,#8]\n" 411 "STR R1, [R0]\n" 412 "LDR R1, [SP,#4]\n" 413 "STR R3, [R1]\n" 414 "B loc_FF956A48\n" 415 "loc_FF956A2C:\n" 416 "LDR R0, [SP,#0xC]\n" 417 "STR R2, [R0]\n" 418 "LDR R1, [SP,#4]\n" 419 "MOV R3, #0\n" 420 "STR R3, [R1]\n" 421 "LDR R2, [SP,#8]\n" 422 "STR R3, [R2]\n" 423 "loc_FF956A48:\n" 424 "LDR R0, =0x6EE88\n" 425 "LDR R1, =0x6EE84\n" 426 "LDR R3, [R0]\n" 427 "LDR R2, [R1]\n" 428 "CMP R3, R2\n" 429 "BHI loc_FF956A74\n" 430 "LDR R0, [SP,#0xC]\n" 431 "LDR R3, [R0]\n" 432 "ADD R3, R12, R3\n" 433 "CMP R2, R3\n" 434 "BCC loc_FF956838\n" 435 "loc_FF956A74:\n" 436 "LDR R1, [SP,#8]\n" 437 "LDR R2, [R1]\n" 438 "CMP R2, #0\n" 439 "BEQ loc_FF956AA8\n" 440 "LDR R3, =0x6EE84\n" 441 "LDR R1, [R3]\n" 442 "CMP R2, R1\n" 443 "BHI loc_FF956AA8\n" 444 "LDR R0, [SP,#4]\n" 445 "LDR R3, [R0]\n" 446 "ADD R3, R2, R3\n" 447 "CMP R1, R3\n" 448 "BCC loc_FF956838\n" 449 "loc_FF956AA8:\n" 450 "LDR R3, =0x6EEE4\n" 451 "LDR R0, =0x6EEE8\n" 452 "LDR R2, [R3]\n" 453 "LDR R3, [R0,#4]\n" 454 "ADD R2, R2, #0x18\n" 455 "MOV R1, R2\n" 456 "MOV R2, #0\n" 457 "CMP R2, R3\n" 458 "BHI loc_FF956ADC\n" 459 "BNE loc_FF956AE4\n" 460 "LDR R3, [R0]\n" 461 "CMP R1, R3\n" 462 "BLS loc_FF956AE4\n" 463 "loc_FF956ADC:\n" 464 "MOV R0, #0x80000005\n" 465 "B loc_FF956C58\n" 466 "loc_FF956AE4:\n" 467 "LDR R1, =0x6EECC\n" 468 "LDR R0, =0x6EF18\n" 469 "LDR R3, [R1]\n" 470 "LDR R2, [R0]\n" 471 "ADD R3, R3, R2,LSL#4\n" 472 "ADD R3, R3, R3,LSL#2\n" 473 "LDR R12, =0x6EEE8\n" 474 "MOV R3, R3,LSL#1\n" 475 "ADD R3, R3, #0xA0\n" 476 "LDR R2, [R12,#4]\n" 477 "MOV R0, R3\n" 478 "MOV R1, #0\n" 479 "CMP R1, R2\n" 480 "BHI loc_FF956B2C\n" 481 "BNE loc_FF956B50\n" 482 "LDR R3, [R12]\n" 483 "CMP R0, R3\n" 484 "BLS loc_FF956B50\n" 485 "loc_FF956B2C:\n" 486 "LDR R4, =0x6EF00\n" 487 "LDR R1, [R4]\n" 488 "CMP R1, #0\n" 489 "BNE loc_FF956B50\n" 490 "MOV R0, #0x3140\n" 491 "ADD R0, R0, #8\n" 492 "BL sub_FF96E3EC\n" 493 "MOV R3, #1\n" 494 "STR R3, [R4]\n" 495 "loc_FF956B50:\n" 496 "LDR R1, =0x6EECC\n" 497 "LDR R0, =0x6EF18\n" 498 "LDR R2, [R1]\n" 499 "LDR R3, [R0]\n" 500 "LDR R0, =0x6EEF0\n" 501 "ADD R2, R2, R3,LSL#4\n" 502 "MVN R3, #0x9F\n" 503 "ADD R2, R2, R2,LSL#2\n" 504 "ADD R3, R3, #0x40000000\n" 505 "SUB R3, R3, R2,LSL#1\n" 506 "LDR R1, [R0,#4]\n" 507 "MOV R4, R3\n" 508 "MOV R5, #0\n" 509 "CMP R1, R5\n" 510 "BHI loc_FF956B9C\n" 511 "BNE loc_FF956BC0\n" 512 "LDR R3, [R0]\n" 513 "CMP R3, R4\n" 514 "BLS loc_FF956BC0\n" 515 "loc_FF956B9C:\n" 516 "LDR R4, =0x6EF00\n" 517 "LDR R1, [R4]\n" 518 "CMP R1, #0\n" 519 "BNE loc_FF956BC0\n" 520 "MOV R0, #0x3140\n" 521 "ADD R0, R0, #8\n" 522 "BL sub_FF96E3EC\n" 523 "MOV R3, #1\n" 524 "STR R3, [R4]\n" 525 "loc_FF956BC0:\n" 526 "LDR R3, =0x6EF18\n" 527 "LDR R0, =0x6EEB4\n" 528 "LDR R2, [R3]\n" 529 "LDR R12, =0x6EE9C\n" 530 "LDR R1, [R0]\n" 531 "ADD R3, R2, R2,LSL#2\n" 532 "ADD R2, R2, R3,LSL#1\n" 533 "LDR R0, [R12]\n" 534 "RSB R1, R2, R1\n" 535 "CMP R0, R1\n" 536 "BLS loc_FF956C10\n" 537 "LDR R4, =0x6EF00\n" 538 "LDR R1, [R4]\n" 539 "CMP R1, #0\n" 540 "BNE loc_FF956C10\n" 541 "MOV R0, #0x3140\n" 542 "ADD R0, R0, #8\n" 543 "BL sub_FF96E3EC\n" 544 "MOV R3, #1\n" 545 "STR R3, [R4]\n" 546 "loc_FF956C10:\n" 547 "LDR R3, =0x6EEF0\n" 548 "LDR R12, =0x6EEE4\n" 549 "LDMIA R3, {R1,R2}\n" 550 "LDR R0, [R12]\n" 551 "MOV R4, #0\n" 552 "MOV R3, #0x18\n" 553 "ADDS R1, R1, R0\n" 554 "ADC R2, R2, #0\n" 555 "ADDS R1, R1, R3\n" 556 "ADC R2, R2, R4\n" 557 "CMP R2, #0\n" 558 "BHI loc_FF956C4C\n" 559 "BNE loc_FF956C54\n" 560 "CMP R1, #0x40000000\n" 561 // "BLS loc_FF956C54\n" //- 562 "B loc_FF956C54\n" //+ 563 "loc_FF956C4C:\n" 564 "MOV R0, #0x80000007\n" 565 "B loc_FF956C58\n" 566 "loc_FF956C54:\n" 567 "MOV R0, #0\n" 568 "loc_FF956C58:\n" 569 "ADD SP, SP, #0x14\n" 570 "LDMFD SP!, {R4-R11,PC}\n" 571 ); 572 } 573 574 575 void __attribute__((naked,noinline)) sub_FF955B60_my(){ 576 asm volatile( 577 "CMP R2, #1\n" 578 "STMFD SP!, {R4-R7,LR}\n" 579 "MOV R7, R0\n" 580 "MOV R6, R1\n" 581 "MOVEQ R3, #0x79\n" 582 "STREQ R3, [R6]\n" 583 "LDMEQFD SP!, {R4-R7,PC}\n" 584 "LDR R12, =0x6EC00\n" 585 "LDR R0, [R12]\n" 586 "LDR R3, =0x6EC08\n" 587 "CMP R0, #0\n" 588 "LDR R1, [R3]\n" 589 "BEQ loc_FF955BA8\n" 590 "LDR R2, =0x6EC0C\n" 591 "LDR R3, [R2]\n" 592 "CMP R3, #1\n" 593 "BNE loc_FF955BBC\n" 594 "B loc_FF955BAC\n" 595 "loc_FF955BA8:\n" 596 "LDR R2, =0x6EC0C\n" 597 "loc_FF955BAC:\n" 598 "MOV R3, #0\n" 599 "STR R3, [R2]\n" 600 "STR R7, [R12]\n" 601 "B loc_FF955C74\n" 602 "loc_FF955BBC:\n" 603 "LDR R2, =0x6EC04\n" 604 "LDR R3, [R2]\n" 605 "LDR R5, =table1\n" // * 606 "ADD R3, R3, R3,LSL#1\n" 607 "MOV LR, R3,LSL#2\n" 608 "LDR R2, [R5,LR]\n" 609 "LDR R4, =table2\n" // * 610 "RSB R12, R2, R0\n" 611 "LDR R3, [R4,LR]\n" 612 "CMP R12, #0\n" 613 "RSB R0, R3, R0\n" 614 "BLE loc_FF955C20\n" 615 "ADD R3, R5, #4\n" 616 "LDR R2, [R3,LR]\n" 617 "CMP R2, R12\n" 618 "ADDGE R1, R1, #1\n" 619 "BGE loc_FF955C14\n" 620 "ADD R3, R5, #8\n" 621 "LDR R2, [R3,LR]\n" 622 "CMP R2, R12\n" 623 "ADDGE R1, R1, #2\n" 624 "ADDLT R1, R1, #3\n" 625 "loc_FF955C14:\n" 626 // "CMP R1, #0xE\n" //- 627 // "MOVGE R1, #0xE\n" //- 628 "CMP R1, #0x1A\n" //+ 629 "MOVGE R1, #0x1A\n" //+ 630 "B loc_FF955C58\n" 631 "loc_FF955C20:\n" 632 "CMP R0, #0\n" 633 "BGE loc_FF955C58\n" 634 "ADD R3, R4, #4\n" 635 "LDR R2, [R3,LR]\n" 636 "CMP R2, R0\n" 637 "SUBLE R1, R1, #1\n" 638 "BLE loc_FF955C50\n" 639 "ADD R3, R4, #8\n" 640 "LDR R2, [R3,LR]\n" 641 "CMP R2, R0\n" 642 "SUBLE R1, R1, #2\n" 643 "SUBGT R1, R1, #3\n" 644 "loc_FF955C50:\n" 645 "CMP R1, #0\n" 646 "MOVLT R1, #0\n" 647 "loc_FF955C58:\n" 648 "LDR R0, =0x6EC08\n" 649 "LDR R3, [R0]\n" 650 "CMP R1, R3\n" 651 "LDRNE R2, =0x6EC0C\n" 652 "MOVNE R3, #1\n" 653 "STRNE R1, [R0]\n" 654 "STRNE R3, [R2]\n" 655 "loc_FF955C74:\n" 656 "LDR R3, =0x6EC08\n" 657 // "LDR R1, =0x6134\n" //- 658 "LDR R1, =video_mode\n" //+ 659 "LDR R0, [R3]\n" 660 "LDR R2, =CompressionRateTable\n" // * 661 "LDR R12, [R1]\n" 662 "LDR R12, [R12]\n" //+ 663 "LDR LR, [R2,R0,LSL#2]\n" 664 "LDR R3, =0x6EC00\n" 665 "CMP R12, #1\n" 666 "STR R7, [R3]\n" 667 "STR LR, [R6]\n" 668 // "MOVEQ R3, #0xB\n" //- 669 "LDREQ R3, =video_quality\n" //+ 670 "LDREQ R3, [R3]\n" //+ 671 "LDREQ R3, [R3]\n" //+ 672 "STREQ R3, [R6]\n" 673 "LDMFD SP!, {R4-R7,PC}\n" 674 ); 675 } 676 */