1 /* 2 void __attribute__((naked,noinline)) sub_FFC5EA24_my() { 3 asm volatile( 4 "LDR R12, =0x201E\n" 5 "STMFD SP!, {R4,LR}\n" 6 "CMP R0, R12\n" 7 "BEQ loc_FFC5EAE4\n" 8 "BGT loc_FFC5EA80\n" 9 "LDR R12, =0x2004\n" 10 "CMP R0, R12\n" 11 "BEQ loc_FFC5EAEC\n" 12 "BGT loc_FFC5EA68\n" 13 "SUB R12, R0, #0x1000\n" 14 "SUBS R12, R12, #0xA9\n" 15 "SUBNE R12, R0, #0x1000\n" 16 "SUBNES R12, R12, #0xAD\n" 17 "SUBNE R12, R0, #0x1000\n" 18 "SUBNES R12, R12, #0xAF\n" 19 "BNE loc_FFC5EAFC\n" 20 "B loc_FFC5EAE4\n" 21 "loc_FFC5EA68:\n" 22 "SUB R12, R0, #0x2000\n" 23 "SUBS R12, R12, #5\n" 24 "SUBNE R12, R0, #0x2000\n" 25 "SUBNES R12, R12, #0x1D\n" 26 "BNE loc_FFC5EAFC\n" 27 "B loc_FFC5EAE4\n" 28 "loc_FFC5EA80:\n" 29 "LDR R12, =0x5004\n" 30 "CMP R0, R12\n" 31 "BEQ loc_FFC5EAE4\n" 32 "BGT loc_FFC5EAAC\n" 33 "SUB R12, R0, #0x3000\n" 34 "SUBS R12, R12, #0xA\n" 35 "BEQ loc_FFC5EAE0\n" 36 "SUB R12, R0, #0x5000\n" 37 "SUBS R12, R12, #1\n" 38 "BNE loc_FFC5EAFC\n" 39 "B loc_FFC5EAE4\n" 40 "loc_FFC5EAAC:\n" 41 "SUB R12, R0, #0x5000\n" 42 "SUBS R12, R12, #6\n" 43 "BEQ loc_FFC5EAE4\n" 44 "SUB R12, R0, #0x5000\n" 45 "SUBS R12, R12, #7\n" 46 "BNE loc_FFC5EAFC\n" 47 "BL sub_FFC1A5E8\n" 48 "LDR R1, =0x5738\n" 49 "LDR R0, [R1,#0x10]\n" 50 "CMP R0, #7\n" 51 "LDREQ R0, [R1,#0x18]\n" 52 "BLEQ sub_FFC5F394\n" 53 "B loc_FFC5EAF4\n" 54 "loc_FFC5EAE0:\n" 55 "BL sub_FFC19B98\n" 56 "loc_FFC5EAE4:\n" 57 "LDMFD SP!, {R4,LR}\n" 58 //B sub_FFC5E884 59 "B sub_FFC5E884_my\n" //-------------> 60 "loc_FFC5EAEC:\n" 61 "BL sub_FFC5D914\n" 62 "BL sub_FFC5E338\n" 63 "loc_FFC5EAF4:\n" 64 "MOV R0, #0\n" 65 "LDMFD SP!, {R4,PC}\n" 66 "loc_FFC5EAFC:\n" 67 "MOV R0, #1\n" 68 "LDMFD SP!, {R4,PC}\n" 69 ); 70 } //#fe 71 72 void __attribute__((naked,noinline)) sub_FFC5E884_my(){ //#fs 73 asm volatile( 74 "STMFD SP!, {R4-R6,LR}\n" 75 "BL sub_FFC5F500\n" 76 "CMP R0, #1\n" 77 "BLEQ sub_FFC5F5E8\n" 78 "LDR R4, =0x5738\n" 79 "MOV R5, #1\n" 80 "LDR R0, [R4,#0x24]\n" 81 "CMP R0, #0\n" 82 "LDRNE R0, [R4,#0x4C]\n" 83 "CMPNE R0, #0\n" 84 "BEQ loc_FFC5E8F0\n" 85 "BL sub_FFC5F500\n" 86 "CMP R0, #1\n" 87 "BNE loc_FFC5E8F0\n" 88 "BL sub_FFC5F5E8\n" 89 "LDR R0, [R4,#0x78]\n" 90 "CMP R0, #0\n" 91 "BNE loc_FFC5E8F0\n" 92 "LDR R1, =0xFFC5EA04\n" // aAcStartupshowi ; "AC:StartupShowInfo" 93 "MOV R0, #0x20\n" 94 "BL sub_FFC5556C\n" 95 "BL sub_FFD70AF0\n" 96 "BL sub_FFD70A80\n" 97 "MOV R1, #0\n" 98 "MOV R0, #0x51\n" 99 "BL sub_FFC6695C\n" 100 "STR R5, [R4,#0x78]\n" 101 "loc_FFC5E8F0:\n" 102 "BL sub_FFC5F500\n" 103 "CMP R0, #1\n" 104 "BNE loc_FFC5E93C\n" 105 "LDR R0, [R4,#0x44]\n" 106 "CMP R0, #0\n" 107 "BEQ loc_FFC5E93C\n" 108 "LDR R0, [R4,#0x74]\n" 109 "CMP R0, #0\n" 110 "BNE loc_FFC5E93C\n" 111 "LDR R1, =0xFFC5EA18\n" // aAcDispshot ; "AC:DispShot" 112 "MOV R0, #0x20\n" 113 "BL sub_FFC5556C\n" 114 "MOV R1, #0\n" 115 "MOV R0, #0x8C\n" 116 "BL sub_FFC6695C\n" 117 "BL sub_FFC64D10\n" 118 "MOV R0, #0x21\n" 119 "BL sub_FFC6699C\n" 120 "STR R5, [R4,#0x74]\n" 121 "loc_FFC5E93C:\n" 122 "LDR R0, [R4,#0x38]\n" 123 "CMP R0, #0\n" 124 "LDRNE R0, [R4,#0x3C]\n" 125 "CMPNE R0, #0\n" 126 "LDRNE R0, [R4,#0x44]\n" 127 "CMPNE R0, #0\n" 128 "LDRNE R0, [R4,#0x48]\n" 129 "CMPNE R0, #0\n" 130 "LDRNE R0, [R4,#0x1C]\n" 131 "LDRNE R1, [R4,#0x20]\n" 132 "ORRNES R0, R0, R1\n" 133 "BEQ loc_FFC5E978\n" 134 "BL sub_FFC5E1D8\n" 135 "BL sub_FFC5E338\n" 136 "B loc_FFC5E9A0\n" 137 "loc_FFC5E978:\n" 138 "LDR R0, [R4,#0x58]\n" 139 "CMP R0, #0\n" 140 "BEQ loc_FFC5E9A8\n" 141 "BL sub_FFC5E220\n" 142 "CMP R0, #1\n" 143 "BNE loc_FFC5E9A8\n" 144 "BL sub_FFC60B90\n" 145 "BL sub_FFC60B4C\n" 146 "MOV R0, #0\n" 147 "BL sub_FFC5F3D0\n" 148 "loc_FFC5E9A0:\n" 149 "MOV R0, #0\n" 150 "LDMFD SP!, {R4-R6,PC}\n" 151 "loc_FFC5E9A8:\n" 152 "BL sub_FFC5E220\n" 153 "CMP R0, #1\n" 154 "BNE loc_FFC5E9D0\n" 155 "LDR R0, [R4,#0x7C]\n" 156 "CMP R0, #0\n" 157 "BLEQ sub_FFC5F62C_my\n" //-------------> 158 "MOV R0, #0\n" 159 "STR R0, [R4,#0x70]\n" 160 "STR R0, [R4,#0x74]\n" 161 "STR R0, [R4,#0x78]\n" 162 "loc_FFC5E9D0:\n" 163 "MOV R0, #1\n" 164 "LDMFD SP!, {R4-R6,PC}\n" 165 ); 166 } // #fe 167 168 169 170 171 172 173 void __attribute__((naked,noinline)) sub_FFC5F62C_my(){ 174 asm volatile( 175 "STMFD SP!, {R4,LR}\n" 176 "LDR R1, =0xFFC5F84C\n" // aAcEntryrecboot ; "AC:EntryRecBoot" 177 "MOV R0, #0x20\n" 178 "BL sub_FFC5556C\n" 179 "BL sub_FFC19DB4\n" 180 "BL sub_FFC5F950\n" 181 "BL sub_FFC62BE0_my\n" // Continue here 182 "MOV R0, #1\n" 183 "BL sub_FFC5DCB4\n" 184 "BL sub_FFC5E15C\n" 185 "LDMFD SP!, {R4,LR}\n" 186 "B sub_FFC5E3CC\n" 187 ); 188 } // #fe 189 190 191 192 193 // Note: One sub_ missing from this firmware compared to A720 194 void __attribute__((naked,noinline)) sub_FFC62BE0_my(){ 195 asm volatile( 196 "STMFD SP!, {R4-R6,LR}\n" 197 "LDR R1, =0xFFC62DEC\n" // aStartrecmode ; "StartRecMode" 198 "MOV R0, #0x20\n" 199 "BL sub_FFC5556C\n" 200 "LDR R4, =0x59C0\n" 201 "MOV R0, #6\n" 202 "MOV R5, #1\n" 203 "STR R0, [R4,#0x5C]\n" 204 "STR R5, [R4,#0x10]\n" 205 "BL sub_FFD2D98C\n" 206 "BL sub_FFD33794\n" 207 "BL sub_FFD3206C\n" 208 // One sub_ missing from this firmware compared to A720 209 "BL sub_FFC63000_my\n" //-------------> 210 "BL sub_FFD3B758\n" 211 "MOV R0, #1\n" 212 "STR R5, [R4,#0x18]\n" 213 "BL sub_FFC630B0\n" 214 "MOV R0, #3\n" 215 "STR R0, [R4,#0x60]\n" 216 "LDR R1, [R4,#0x64]\n" 217 "LDMFD SP!, {R4-R6,LR}\n" 218 "MOV R0, #0\n" 219 "BX R1\n" 220 ); 221 } //#fe 222 223 224 225 226 227 228 229 void __attribute__((naked,noinline)) sub_FFC63000_my(){ 230 asm volatile( 231 "STMFD SP!, {R4,LR}\n" 232 "LDR R0, =0x855\n" 233 "BL sub_FFD2A1E8\n" 234 "BL sub_FFC19B98\n" 235 "BL sub_FFC629A8_my\n" //-------------> 236 "BL sub_FFD2D294\n" 237 "BL sub_FFD1CFBC\n" 238 "BL sub_FFD35574\n" 239 "BL sub_FFD35990\n" 240 "BL sub_FFD3ADFC\n" 241 "BL sub_FFD35BAC\n" 242 "BL sub_FFD35774\n" 243 "BL sub_FFD33EC4\n" 244 "BL sub_FFD3AA5C\n" 245 "BL sub_FFC66A3C\n" // taskcreate_DSITask 246 "LDMFD SP!, {R4,LR}\n" 247 "B sub_FFC6686C\n" // taskcreate_FaceFrame 248 249 ); 250 } //#fe 251 252 253 254 255 256 257 258 259 // branches are together 260 261 void __attribute__((naked,noinline)) sub_FFC629A8_my(){ 262 asm volatile( 263 "STMFD SP!, {R4,LR}\n" 264 "LDR R0, =0x5A28\n" 265 //ADR R1, sub_FFC627A8 266 "LDR R1, =sub_FFC627A8_my\n" //-------------> (branch 1) 267 "BL sub_FFC671F0\n" 268 "LDR R1, =0x59C0\n" 269 //ADR R0, sub_FFC628D0 270 "LDR R0, =sub_FFC628D0_my\n" //-------------> (branch 2) 271 "STR R0, [R1,#0x64]\n" 272 "LDMFD SP!, {R4,PC}\n" 273 ); 274 } 275 276 277 278 //branch 1 279 280 void __attribute__((naked,noinline)) sub_FFC627A8_my(){ 281 asm volatile( 282 "STMFD SP!, {R3-R5,LR}\n" 283 "LDR R4, =0x59C0\n" 284 "LDR R0, [R4,#0x3C]\n" 285 "CMP R0, #0\n" 286 "BLEQ sub_FFD1BD20\n" 287 "LDR R0, [R4,#0x30]\n" 288 "CMP R0, #1\n" 289 "BNE loc_FFC627E8\n" 290 "LDR R1, =0xFFC628B0\n" // a__preparecaptu ; "__PrepareCaptureModeChange__" 291 "MOV R0, #0x20\n" 292 "BL sub_FFC5556C\n" 293 "MOV R0, #0\n" 294 "STR R0, [R4,#0x30]\n" 295 "STR R0, [R4,#0x2C]\n" 296 "BL sub_FFC626A0\n" 297 "LDMFD SP!, {R3-R5,PC}\n" 298 "loc_FFC627E8:\n" 299 "BL sub_FFC15514\n" 300 "LDRH R0, [R4,#4]\n" 301 "MOV R1, SP\n" 302 "STRH R0, [SP]\n" 303 "LDR R0, [R4,#0x5C]\n" 304 "STRH R0, [SP,#0x2]\n" 305 "MOV R0, #0x40\n" 306 "BL sub_FFC6695C\n" 307 "LDR R0, [R4,#0x1C]\n" 308 "CMP R0, #0\n" 309 "LDREQH R0, [R4,#4]\n" 310 "BLEQ sub_FFC5D030\n" // PTM_SetCurrentCaptureMode 311 "LDRH R0, [R4,#4]\n" 312 "MOV R1, #1\n" 313 "BL sub_FFC61AB0_my\n" //-------------> (branches are joining here, DecideCaptureMode) 314 "LDR R0, [R4,#0x60]\n" 315 "BL sub_FFC630B0\n" 316 "MOV R0, #3\n" 317 "STR R0, [R4,#0x60]\n" 318 "LDR R1, [R4,#0x64]\n" 319 "ADD SP, SP, #4\n" 320 "LDMFD SP!, {R4,R5,LR}\n" 321 "MOV R0, #0\n" 322 "BX R1\n" 323 ); 324 } 325 326 327 328 329 330 331 332 333 334 335 336 //branch 2 337 338 void __attribute__((naked,noinline)) sub_FFC628D0_my(){ 339 asm volatile( 340 "STMFD SP!, {R4-R6,LR}\n" 341 "LDR R4, =0x59C0\n" 342 "LDRH R0, [R4,#4]\n" 343 "BL sub_FFD339CC\n" 344 "BL sub_FFD3222C\n" 345 "BL sub_FFD35C3C\n" 346 //"BL nullsub_98\n" 347 "BL sub_FFD34050\n" 348 "BL sub_FFD1ECC0\n" 349 "MOV R5, #0\n" 350 "MOV R0, R5\n" 351 "STR R5, [R4,#0x24]\n" 352 "BL sub_FFC155F8\n" 353 "BL sub_FFD1E38C\n" 354 "STR R5, [R4,#0x3C]\n" 355 "LDRH R0, [R4,#4]\n" 356 "MOV R1, #0\n" 357 "BL sub_FFC61AB0_my\n" //-------------> (branches are joining here, DecideCaptureMode) 358 "BL sub_FFC64D10\n" 359 "LDR R1, [R4,#0x5C]\n" 360 "MOV R0, #0x41\n" 361 "BL sub_FFC6695C\n" 362 "BL sub_FFD3221C\n" 363 "BL sub_FFD2DB00\n" 364 "CMP R0, #0\n" 365 "BLEQ sub_FFD32230\n" 366 "BL sub_FFD33954\n" 367 "BL sub_FFD1BB90\n" 368 "BL sub_FFC5B440\n" 369 "STR R0, [R4,#0x58]\n" 370 "LDR R0, =0x8003\n" 371 "STR R5, [R4,#0x2C]\n" 372 "BL sub_FFC5D158\n" // PTM_GetCurrentItem 373 "STRH R0, [R4]\n" 374 "LDR R0, =0x313D\n" 375 "MOV R1, #0\n" 376 "BL sub_FFC5BEC4\n" // PostLogicalEventToUI 377 "BL sub_FFC62F9C\n" 378 "LDR R0, [R4,#0x30]\n" 379 "CMP R0, #1\n" 380 "STREQ R5, [R4,#0x30]\n" 381 "LDMEQFD SP!, {R4-R6,LR}\n" 382 "BEQ sub_FFC626A0\n" 383 "LDMFD SP!, {R4-R6,PC}\n" 384 385 ); 386 } //#fe 387 388 389 390 391 392 393 394 395 396 //branches are joining here 397 398 void __attribute__((naked,noinline)) sub_FFC61AB0_my(){ 399 asm volatile( 400 "STMFD SP!, {R4-R6,LR}\n" 401 "MOV R5, R1\n" 402 "MOV R4, R0\n" 403 "MOV R0, #0x60\n" 404 "LDR R1, =0xFFC61D80\n" // a_decidecapture ; "_DecideCaptureMode" 405 "BL sub_FFC5556C\n" 406 "LDR R6, =0x59C0\n" 407 "LDR R0, [R6,#0x10]\n" 408 "CMP R0, #0\n" 409 "BEQ loc_FFC61BDC\n" 410 "LDR R0, [R6,#0x18]\n" 411 "LDR R2, =0x820A\n" 412 "LDR R1, =0xFFFE0000\n" // aVer_011_001 413 "CMP R0, #1\n" 414 "BNE loc_FFC61B24\n" 415 "CMP R5, #1\n" 416 "LDMEQFD SP!, {R4-R6,PC}\n" 417 "CMP R5, #0\n" 418 "BNE loc_FFC61B24\n" 419 "CMP R4, R2\n" 420 "BEQ loc_FFC61B1C\n" 421 "CMP R1, R4,LSL#17\n" 422 "TSTNE R4, #0xC00\n" 423 "BEQ loc_FFC61B18\n" 424 "BL sub_FFC62E84_my\n" //-------------> (StartMovie) 425 "B loc_FFC61B1C\n" 426 "loc_FFC61B18:\n" 427 "BL sub_FFC62E38\n" 428 "loc_FFC61B1C:\n" 429 "BL sub_FFC62FFC\n" 430 "B loc_FFC61BDC\n" 431 "loc_FFC61B24:\n" 432 "CMP R4, R2\n" 433 "BEQ loc_FFC61BD4\n" 434 "CMP R1, R4,LSL#17\n" 435 "LDRH R0, [R6,#2]\n" 436 "TSTNE R4, #0xC00\n" 437 "BEQ loc_FFC61B84\n" 438 "CMP R0, R2\n" 439 "BEQ loc_FFC61BD4\n" 440 "CMP R1, R0,LSL#17\n" 441 "TSTNE R0, #0xC00\n" 442 "BEQ loc_FFC61B68\n" 443 "LDR R1, =0xFFC61DA0\n" // a_movietomovie ; "_MovieToMovie" 444 "MOV R0, #0x60\n" 445 "BL sub_FFC5556C\n" 446 "CMP R5, #1\n" 447 "BEQ loc_FFC61BAC\n" 448 "B loc_FFC61B7C\n" 449 "loc_FFC61B68:\n" 450 "LDR R1, =0xFFC61DB0\n" // a_stilltomovie ; "_StillToMovie" 451 "MOV R0, #0x60\n" 452 "BL sub_FFC5556C\n" 453 "CMP R5, #1\n" 454 "BEQ loc_FFC61BC8\n" 455 "loc_FFC61B7C:\n" 456 "BL sub_FFC62E84_my\n" //-------------> (StartMovie) 457 "B loc_FFC61BD4\n" 458 "loc_FFC61B84:\n" 459 "CMP R0, R2\n" 460 "BEQ loc_FFC61BD4\n" 461 "CMP R1, R0,LSL#17\n" 462 "TSTNE R0, #0xC00\n" 463 "BEQ loc_FFC61BB4\n" 464 "LDR R1, =0xFFC61DC0\n" // a_movietostill ; "_MovieToStill"\n" 465 "MOV R0, #0x60\n" 466 "BL sub_FFC5556C\n" 467 "CMP R5, #1\n" 468 "BNE loc_FFC61BD0\n" 469 "loc_FFC61BAC:\n" 470 "LDMFD SP!, {R4-R6,LR}\n" 471 "B sub_FFC62EB0\n" 472 "loc_FFC61BB4:\n" 473 "LDR R1, =0xFFC61DD0\n" // a_stilltostill ; "_StillToStill"\n" 474 "MOV R0, #0x60\n" 475 "BL sub_FFC5556C\n" 476 "CMP R5, #1\n" 477 "BNE loc_FFC61BD0\n" 478 "loc_FFC61BC8:\n" 479 "LDMFD SP!, {R4-R6,LR}\n" 480 "B sub_FFC62E60\n" 481 "loc_FFC61BD0:\n" 482 "BL sub_FFC62E38\n" 483 "loc_FFC61BD4:\n" 484 "CMP R5, #0\n" 485 "LDMNEFD SP!, {R4-R6,PC}\n" 486 "loc_FFC61BDC:\n" 487 "STRH R4, [R6,#2]\n" 488 "LDMFD SP!, {R4-R6,PC}\n" 489 ); 490 } // #fe 491 492 //StartMovie 493 void __attribute__((naked,noinline)) sub_FFC62E84_my(){ 494 asm volatile( 495 "STMFD SP!, {R4,LR}\n" 496 "LDR R1, =0xFFC62FDC\n" // a_startmovie ; "_StartMovie"\n" 497 "MOV R0, #0x20\n" 498 "BL sub_FFC5556C\n" 499 "LDR R0, =0x59C0\n" 500 "LDR R0, [R0,#0x28]\n" 501 "CMP R0, #0\n" 502 "BLNE sub_FFC63860\n" 503 "LDMFD SP!, {R4,LR}\n" 504 "MOV R0, #0\n" 505 "B sub_FFC65BBC_my\n" // Continue here 506 ); 507 } 508 509 510 void __attribute__((naked,noinline)) sub_FFC65BBC_my(){ 511 asm volatile( 512 "STMFD SP!, {R4,LR}\n" 513 "LDR R4, =0x5B6C\n" 514 "MOV R0, #0\n" 515 "STR R0, [R4,#0x30]\n" 516 "LDR R0, [R4,#8]\n" 517 "CMP R0, #0\n" 518 "BNE loc_FFC65BE8\n" 519 "LDR R0, =sub_FFC657C8_my\n" // Continue here 520 "MOV R1, #0\n" 521 "BL sub_FFC5AEA0\n" // CreateController 522 "STR R0, [R4,#8]\n" 523 "loc_FFC65BE8:\n" 524 "LDR R0, [R4,#0xC]\n" 525 "CMP R0, #0\n" 526 "BNE loc_FFC65C04\n" 527 "LDR R0, =0xFFC65468\n" 528 "MOV R1, #0\n" 529 "BL sub_FFC62B0C\n" 530 "STR R0, [R4,#0xC]\n" 531 "loc_FFC65C04:\n" 532 "BL sub_FFC663CC\n" 533 "BL sub_FFC654CC\n" 534 "BL sub_FFD3B164\n" 535 "BL sub_FFD3BFAC\n" 536 "LDMFD SP!, {R4,LR}\n" 537 "B sub_FFD330C8\n" 538 ); 539 } 540 541 542 void __attribute__((naked,noinline)) sub_FFC657C8_my(){ 543 asm volatile( 544 "STMFD SP!, {R3-R11,LR}\n" 545 "LDR R5, =0x5B6C\n" 546 "MOV R4, R1\n" 547 "LDR R2, [R5,#0x2C]\n" 548 "ADD R0, R5, #0\n" 549 "LDR R0, [R0,#0x14]\n" 550 "LDR R9, =0x3007\n" 551 "CMP R2, #0\n" 552 "MOV R1, #0\n" 553 "MOV R11, R3\n" 554 "MVN R8, #0\n" 555 "BEQ loc_FFC65840\n" 556 "CMP R4, R9\n" 557 "BEQ loc_FFC65A30\n" 558 "CMP R4, #0x800\n" 559 "LDREQ R2, [R5,#0x38]\n" 560 "CMPEQ R11, R2\n" 561 "BNE loc_FFC65B40\n" 562 "STR R1, [R5,#0x2C]!\n" 563 "CMP R0, #0\n" 564 "STR R8, [R5,#0xC]\n" 565 "BNE loc_FFC65BB4\n" 566 "BL sub_FFC1A540\n" 567 "CMP R0, #1\n" 568 "BEQ loc_FFC65838\n" 569 "BL sub_FFC1A548\n" 570 "CMP R0, #1\n" 571 "BNE loc_FFC65BB4\n" 572 "loc_FFC65838:\n" 573 "BL sub_FFC65618\n" 574 "B loc_FFC65BB4\n" 575 "loc_FFC65840:\n" 576 "CMP R0, #1\n" 577 "SUBEQ R12, R4, #0x2000\n" 578 "SUBEQS R12, R12, #0x1C\n" 579 "BNE loc_FFC6585C\n" 580 "MOV R0, #0\n" 581 "BL sub_FFC65EBC\n" 582 "B loc_FFC65BB4\n" 583 "loc_FFC6585C:\n" 584 "BL sub_FFC5A964\n" 585 "LDR R10, =0x9A5\n" 586 "CMP R0, #1\n" 587 "SUB R6, R10, #4\n" 588 "SUB R7, R10, #2\n" 589 "BNE loc_FFC65890\n" 590 "CMP R4, R10\n" 591 "CMPNE R4, R6\n" 592 "CMPNE R4, R7\n" 593 "BNE loc_FFC65890\n" 594 "BL sub_FFC59B08\n" 595 "STR R4, [R5,#0x3C]\n" 596 "B loc_FFC65B40\n" 597 "loc_FFC65890:\n" 598 "BL sub_FFD32074\n" // GetAEIntegralServiceMode_7 599 "CMP R0, #1\n" 600 "BNE loc_FFC658B0\n" 601 "MOV R0, R4\n" 602 "BL sub_FFC5BBFC\n" 603 "CMP R0, #1\n" 604 "CMPNE R4, R10\n" 605 "BEQ loc_FFC65B40\n" 606 "loc_FFC658B0:\n" 607 "BL sub_FFC1A618\n" 608 "CMP R0, #1\n" 609 "BNE loc_FFC658C8\n" 610 "CMP R4, R6\n" 611 "CMPNE R4, R7\n" 612 "BEQ loc_FFC65BB4\n" 613 "loc_FFC658C8:\n" 614 "BL sub_FFC6279C\n" 615 "LDR R1, =0x9A2\n" 616 "CMP R0, #1\n" 617 "ADD R2, R1, #2\n" 618 "BNE loc_FFC658F0\n" 619 "CMP R4, R6\n" 620 "CMPNE R4, R1\n" 621 "CMPNE R4, R7\n" 622 "CMPNE R4, R2\n" 623 "BEQ loc_FFC65BB4\n" 624 "loc_FFC658F0:\n" 625 "LDR R12, =0x200A\n" 626 "CMP R4, R12\n" 627 "BEQ loc_FFC65BA4\n" 628 "BGT loc_FFC6596C\n" 629 "LDR R12, =0x907\n" 630 "CMP R4, R12\n" 631 "MOVEQ R1, #2\n" 632 "MOVEQ R0, R10\n" 633 "BEQ loc_FFC65AE0\n" 634 "BGT loc_FFC65948\n" 635 "SUB R12, R4, #0x800\n" 636 "LDR R6, =0x2003\n" 637 "SUBS R12, R12, #0x26\n" 638 "BEQ loc_FFC65A44\n" 639 "SUB R12, R4, #0x800\n" 640 "SUBS R12, R12, #0x29\n" 641 "BEQ loc_FFC65A88\n" 642 "CMP R4, #0x860\n" 643 "SUBNE R12, R4, #0x800\n" 644 "SUBNES R12, R12, #0x61\n" 645 "BNE loc_FFC65B58\n" 646 "B loc_FFC65B40\n" 647 "loc_FFC65948:\n" 648 "CMP R4, R6\n" 649 "BEQ loc_FFC65AD8\n" 650 "CMP R4, R1\n" 651 "BEQ loc_FFC65BA4\n" 652 "CMP R4, R7\n" 653 "BEQ loc_FFC65AD8\n" 654 "CMP R4, R2\n" 655 "BEQ loc_FFC65BA4\n" 656 "B loc_FFC65B58\n" 657 "loc_FFC6596C:\n" 658 "LDR R12, =0x3149\n" 659 "CMP R4, R12\n" 660 "MOVEQ R1, #0\n" 661 "MOVEQ R0, #0x84\n" 662 "BEQ loc_FFC65B50\n" 663 "BGT loc_FFC659C4\n" 664 "SUB R12, R4, #0x2000\n" 665 "SUBS R12, R12, #0x20\n" 666 "MOVEQ R1, R11\n" 667 "MOVEQ R0, #0x83\n" 668 "BEQ loc_FFC65B50\n" 669 "CMP R4, R9\n" 670 "BEQ loc_FFC65A1C\n" 671 "SUB R12, R4, #0x3100\n" 672 "SUBS R12, R12, #0x35\n" 673 "BEQ loc_FFC65A00\n" 674 "SUB R12, R4, #0x3000\n" 675 "SUBS R12, R12, #0x148\n" 676 "BNE loc_FFC65B58\n" 677 "MOV R1, #0\n" 678 "MOV R0, #0x86\n" 679 "B loc_FFC65B50\n" 680 "loc_FFC659C4:\n" 681 "SUB R12, R4, #0x3100\n" 682 "SUBS R12, R12, #0x4A\n" 683 "BEQ loc_FFC65B48\n" 684 "SUB R12, R4, #0x4000\n" 685 "SUBS R12, R12, #3\n" 686 "BEQ loc_FFC65B04\n" 687 "SUB R12, R4, #0x4000\n" 688 "SUBS R12, R12, #8\n" 689 "BEQ loc_FFC65AE8\n" 690 "SUB R12, R4, #0x4000\n" 691 "SUBS R12, R12, #0xF\n" 692 "BNE loc_FFC65B58\n" 693 "MOV R0, #0x82\n" 694 "BL sub_FFC6699C\n" 695 "B loc_FFC65BB4\n" 696 "loc_FFC65A00:\n" 697 "BL sub_FFC66400\n" // GetVRAMHPixelsSize_2 698 "CMP R0, #4\n" 699 "BEQ loc_FFC65BA4\n" 700 "LDR R0, [R5,#0x1C]\n" 701 "CMP R0, #0\n" 702 "BLNE sub_FFC65560\n" 703 "B loc_FFC65BB4\n" 704 "loc_FFC65A1C:\n" 705 "MOV R0, #1\n" 706 "STR R0, [R5,#0x1C]\n" 707 "LDR R0, [R5,#0x18]\n" 708 "CMP R0, #1\n" 709 "BNE loc_FFC65A38\n" 710 "loc_FFC65A30:\n" 711 "BL sub_FFC65560\n" 712 "LDMFD SP!, {R3-R11,PC}\n" 713 "loc_FFC65A38:\n" 714 "MOV R0, R4\n" 715 "BL sub_FFC65738\n" 716 "B loc_FFC65BB4\n" 717 "loc_FFC65A44:\n" 718 "BL sub_FFC6279C\n" 719 "CMP R0, #0\n" 720 "BEQ loc_FFC65A5C\n" 721 "MOV R0, R4\n" 722 "BL sub_FFC62CD0\n" 723 "B loc_FFC65BB4\n" 724 "loc_FFC65A5C:\n" 725 "LDR R0, [R5,#0x10]\n" 726 "LDR R1, [R5,#0x14]\n" 727 "ORR R0, R0, R1\n" 728 "LDR R1, [R5,#0x1C]\n" 729 "ORRS R0, R0, R1\n" 730 "BNE loc_FFC65BB4\n" 731 "MOV R1, #0\n" 732 "MOV R0, R6\n" 733 "BL sub_FFC47374\n" 734 "BL sub_FFD21708\n" // StartRecModeMenu 735 "B loc_FFC65BB4\n" 736 "loc_FFC65A88:\n" 737 "LDR R0, [R5,#0x10]\n" 738 "LDR R1, [R5,#0x14]\n" 739 "ORRS R0, R0, R1\n" 740 "BNE loc_FFC65BB4\n" 741 "BL sub_FFC62CDC\n" 742 "CMP R0, #0\n" 743 "LDREQ R0, [R5,#0x1C]\n" 744 "CMPEQ R0, #0\n" 745 "BNE loc_FFC65BB4\n" 746 "BL sub_FFC6279C\n" 747 "CMP R0, #0\n" 748 "BNE loc_FFC65BB4\n" 749 "BL sub_FFD3B92C\n" // j_IsEvfDriveMode_16\n" 750 "CMP R0, #0\n" 751 "BNE loc_FFC65BB4\n" 752 "MOV R1, #0\n" 753 "MOV R0, R6\n" 754 "BL sub_FFC47374\n" 755 "BL sub_FFD1C988\n" 756 "B loc_FFC65BB4\n" 757 "loc_FFC65AD8:\n" 758 "MOV R1, #1\n" 759 "MOV R0, R4\n" 760 "loc_FFC65AE0:\n" 761 "BL sub_FFC65674_my\n" // Continue here 762 "LDMFD SP!, {R3-R11,PC}\n" 763 "loc_FFC65AE8:\n" 764 "MOV R0, R11\n" 765 "BL sub_FFC6145C\n" 766 "CMP R0, #0\n" 767 "MOVEQ R1, R11\n" 768 "MOVEQ R0, R4\n" 769 "BLEQ sub_FFC6606C_my\n" // Continue here 770 "B loc_FFC65B40\n" 771 "loc_FFC65B04:\n" 772 "LDR R0, [R5,#0x3C]\n" 773 "CMN R0, #1\n" 774 "BEQ loc_FFC65B40\n" 775 "MOV R0, #0\n" 776 "BL sub_FFC58BEC\n" 777 "LDR R0, [R5,#0x3C]\n" 778 "CMP R0, R6\n" 779 "BNE loc_FFC65B30\n" 780 "BL sub_FFC1A540\n" 781 "CMP R0, #0\n" 782 "BEQ loc_FFC65B3C\n" 783 "loc_FFC65B30:\n" 784 "LDR R0, [R5,#0x3C]\n" 785 "MOV R1, #0\n" 786 "BL sub_FFC5BE78\n" // PostLogicalEventForNotPowerType\n" 787 "loc_FFC65B3C:\n" 788 "STR R8, [R5,#0x3C]\n" 789 "loc_FFC65B40:\n" 790 "MOV R0, #1\n" 791 "LDMFD SP!, {R3-R11,PC}\n" 792 "loc_FFC65B48:\n" 793 "MOV R1, #0\n" 794 "MOV R0, #0x85\n" 795 "loc_FFC65B50:\n" 796 "BL sub_FFC6695C\n" 797 "B loc_FFC65BB4\n" 798 "loc_FFC65B58:\n" 799 "LDR R12, =0x855\n" 800 "CMP R4, R12\n" 801 "BEQ loc_FFC65B94\n" 802 "BGT loc_FFC65B80\n" 803 "SUB R12, R4, #0x800\n" 804 "SUBS R12, R12, #0x38\n" 805 "SUBNE R12, R4, #0x800\n" 806 "SUBNES R12, R12, #0x39\n" 807 "BNE loc_FFC65BA4\n" 808 "B loc_FFC65B94\n" 809 "loc_FFC65B80:\n" 810 "SUB R12, R4, #0x800\n" 811 "SUBS R12, R12, #0x56\n" 812 "SUBNE R12, R4, #0x800\n" 813 "SUBNES R12, R12, #0x5D\n" 814 "BNE loc_FFC65BA4\n" 815 "loc_FFC65B94:\n" 816 "LDR R0, [R5,#0x10]\n" 817 "LDR R1, [R5,#0x14]\n" 818 "ORRS R0, R0, R1\n" 819 "BNE loc_FFC65BB4\n" 820 "loc_FFC65BA4:\n" 821 "MOV R1, R11\n" 822 "MOV R0, R4\n" 823 "BL sub_FFC6606C_my\n" // Continue here 824 "LDMFD SP!, {R3-R11,PC}\n" 825 "loc_FFC65BB4:\n" 826 "MOV R0, #0\n" 827 "LDMFD SP!, {R3-R11,PC}\n" 828 ); 829 } // #fe 830 831 // sub_FFC65674_my 832 //sub_FFC6606C_my 833 834 835 836 void __attribute__((naked,noinline)) sub_FFC65674_my(){ 837 asm volatile( 838 "STMFD SP!, {R4-R6,LR}\n" 839 "MOV R4, R0\n" 840 "LDR R0, =0x5B6C\n" 841 "MOV R5, R1\n" 842 "LDR R0, [R0,#0x1C]\n" 843 "CMP R0, #0\n" 844 "LDRNE R1, =0xFFC657A4\n" // aMvicon_fshtdwn ; "MviCon_fShtDwn" 845 "BNE loc_FFC65720\n" 846 "BL sub_FFC6640C\n" 847 "CMP R0, #1\n" 848 "BNE loc_FFC656B0\n" 849 "loc_FFC656A0:\n" 850 "MOV R0, R4\n" 851 "LDMFD SP!, {R4-R6,LR}\n" 852 "MOV R1, #0\n" 853 "B sub_FFC6606C_my\n" // Continue here 854 "loc_FFC656B0:\n" 855 "CMP R5, #2\n" 856 "BNE loc_FFC656C8\n" 857 "BL sub_FFC64D10\n" 858 "CMP R0, #0\n" 859 "BEQ loc_FFC65710\n" 860 "B loc_FFC656DC\n" 861 "loc_FFC656C8:\n" 862 "CMP R5, #1\n" 863 "BNE loc_FFC65710\n" 864 "BL sub_FFC64D28\n" 865 "CMP R0, #0\n" 866 "BNE loc_FFC65710\n" 867 "loc_FFC656DC:\n" 868 "MOV R0, #0\n" 869 "BL sub_FFC58BEC\n" 870 "SUB R12, R4, #0x900\n" 871 "SUBS R12, R12, #0xA1\n" 872 "SUBNE R12, R4, #0x900\n" 873 "SUBNES R12, R12, #0xA3\n" 874 "SUBNE R12, R4, #0x900\n" 875 "SUBNES R12, R12, #0xA5\n" 876 "LDREQ R0, =0xC507\n" 877 "MOVEQ R1, #0\n" 878 "BLEQ sub_FFC47374\n" 879 "loc_FFC65708:\n" 880 "MOV R0, #0\n" 881 "LDMFD SP!, {R4-R6,PC}\n" 882 "loc_FFC65710:\n" 883 "BL sub_FFC65618\n" 884 "CMP R0, #0\n" 885 "BNE loc_FFC6572C\n" 886 "LDR R1, =0xFFC657B4\n" // aMvicon_initchk ; "MviCon_InitChkBuf"\n" 887 "loc_FFC65720:\n" 888 "MOV R0, #0x60\n" 889 "BL sub_FFC5556C\n" 890 "B loc_FFC65708\n" 891 "loc_FFC6572C:\n" 892 "MOV R0, R5\n" 893 "BL sub_FFD31120\n" 894 "B loc_FFC656A0\n" 895 ); 896 } // #fe 897 898 899 900 void __attribute__((naked,noinline)) sub_FFC6606C_my(){ 901 asm volatile( 902 "STMFD SP!, {R4-R8,LR}\n" 903 "MOV R7, R1\n" 904 "MOV R4, R0\n" 905 "BL sub_FFC66488\n" 906 "LDR R5, =0x5BB0\n" 907 "LDR R3, =0x200A\n" 908 "LDR R12, [R5]\n" 909 "LDR R2, =0x4008\n" 910 "LDR R6, =0x9A3\n" 911 "LDR R0, =0x3007\n" 912 "LDR R1, =0x1051\n" 913 "CMP R12, #9\n" 914 "ADD LR, R3, #0x15\n" 915 "ADDLS PC, PC, R12,LSL#2\n" 916 "B loc_FFC663C4\n" 917 "loc_FFC660A8:\n" 918 "B loc_FFC660D0\n" 919 "loc_FFC660AC:\n" 920 "B loc_FFC660E0\n" 921 "loc_FFC660B0:\n" 922 "B loc_FFC660F0\n" 923 "loc_FFC660B4:\n" 924 "B loc_FFC66164\n" 925 "loc_FFC660B8:\n" 926 "B loc_FFC661A4\n" 927 "loc_FFC660BC:\n" 928 "B loc_FFC6622C\n" 929 "loc_FFC660C0:\n" 930 "B loc_FFC6625C\n" 931 "loc_FFC660C4:\n" 932 "B loc_FFC6630C\n" 933 "loc_FFC660C8:\n" 934 "B loc_FFC662D0\n" 935 "loc_FFC660CC:\n" 936 "B loc_FFC66334\n" 937 "loc_FFC660D0:\n" 938 "MOV R1, R7\n" 939 "MOV R0, R4\n" 940 "LDMFD SP!, {R4-R8,LR}\n" 941 "B sub_FFC65FE8\n" 942 "loc_FFC660E0:\n" 943 "MOV R1, R7\n" 944 "MOV R0, R4\n" 945 "LDMFD SP!, {R4-R8,LR}\n" 946 "B sub_FFC66608_my\n" // Continue here 947 "loc_FFC660F0:\n" 948 "CMP R4, R1\n" 949 "BEQ loc_FFC66154\n" 950 "SUB R12, R4, #0x2000\n" 951 "SUBS R12, R12, #6\n" 952 "BEQ loc_FFC66118\n" 953 "CMP R4, R0\n" 954 "BEQ loc_FFC6615C\n" 955 "SUB R12, R4, #0x3100\n" 956 "SUBS R12, R12, #0x4B\n" 957 "BNE loc_FFC663C4\n" 958 "loc_FFC66118:\n" 959 "BL sub_FFC655F4\n" 960 "MOV R0, #0\n" 961 "BL sub_FFC66470\n" 962 "LDR R0, [R5,#8]\n" 963 "CMP R0, #0\n" 964 "MOVNE R1, #0\n" 965 "MOVNE R0, R6\n" 966 "BNE loc_FFC6614C\n" 967 "LDR R0, [R5,#4]\n" 968 "CMP R0, #0\n" 969 "BEQ loc_FFC66374\n" 970 "LDR R0, =0x9A1\n" 971 "MOV R1, #0\n" 972 "loc_FFC6614C:\n" 973 "BL sub_FFC65FE8\n" 974 "B loc_FFC66374\n" 975 "loc_FFC66154:\n" 976 "BL sub_FFC6657C\n" 977 "B loc_FFC66374\n" 978 "loc_FFC6615C:\n" 979 "BL sub_FFC66594\n" 980 "B loc_FFC66374\n" 981 "loc_FFC66164:\n" 982 "SUB R12, R4, #0x900\n" 983 "SUBS R12, R12, #0xA2\n" 984 "BEQ loc_FFC66194\n" 985 "CMP R4, R6\n" 986 "BEQ loc_FFC6618C\n" 987 "CMP R4, R1\n" 988 "BEQ loc_FFC6619C\n" 989 "CMP R4, R0\n" 990 "BLEQ sub_FFC66594\n" 991 "B loc_FFC663C4\n" 992 "loc_FFC6618C:\n" 993 "BL sub_FFC65F8C_my\n" // Continue here EntryActionOnPreMoving 994 "B loc_FFC663C4\n" 995 "loc_FFC66194:\n" 996 "BL sub_FFC66558\n" 997 "B loc_FFC663C4\n" 998 "loc_FFC6619C:\n" 999 "BL sub_FFC6657C\n" 1000 "B loc_FFC663C4\n" 1001 "loc_FFC661A4:\n" 1002 "CMP R4, LR\n" 1003 "BEQ loc_FFC66200\n" 1004 "BGT loc_FFC661CC\n" 1005 "CMP R4, R6\n" 1006 "BEQ loc_FFC661E8\n" 1007 "CMP R4, R1\n" 1008 "BEQ loc_FFC66218\n" 1009 "loc_FFC661C0:\n" 1010 "CMP R4, R3\n" 1011 "BNE loc_FFC663C4\n" 1012 "B loc_FFC661DC\n" 1013 "loc_FFC661CC:\n" 1014 "CMP R4, R0\n" 1015 "BEQ loc_FFC6620C\n" 1016 "loc_FFC661D4:\n" 1017 "CMP R4, R2\n" 1018 "BNE loc_FFC663C4\n" 1019 "loc_FFC661DC:\n" 1020 "BL sub_FFC665E4\n" 1021 "BL sub_FFC66558\n" 1022 "B loc_FFC66374\n" 1023 "loc_FFC661E8:\n" 1024 "BL sub_FFC16BA4\n" 1025 "MOV R0, #5\n" 1026 "BL sub_FFC66470\n" 1027 "MOV R0, #0\n" 1028 "STR R0, [R5,#0xC]\n" 1029 "B loc_FFC66374\n" 1030 "loc_FFC66200:\n" 1031 "MOV R0, #5\n" 1032 "BL sub_FFC66470\n" 1033 "B loc_FFC66250\n" 1034 "loc_FFC6620C:\n" 1035 "BL sub_FFC16BA4\n" 1036 "BL sub_FFC665E4\n" 1037 "B loc_FFC66304\n" 1038 "loc_FFC66218:\n" 1039 "BL sub_FFC16BA4\n" 1040 "BL sub_FFC665E4\n" 1041 "B loc_FFC66264\n" 1042 "loc_FFC66224:\n" 1043 "BL sub_FFC66470\n" 1044 "B loc_FFC66374\n" 1045 "loc_FFC6622C:\n" 1046 "CMP R4, LR\n" 1047 "BEQ loc_FFC66250\n" 1048 "BGT loc_FFC66244\n" 1049 "CMP R4, R1\n" 1050 "BNE loc_FFC661C0\n" 1051 "B loc_FFC66264\n" 1052 "loc_FFC66244:\n" 1053 "CMP R4, R0\n" 1054 "BNE loc_FFC661D4\n" 1055 "B loc_FFC66304\n" 1056 "loc_FFC66250:\n" 1057 "MOV R0, R7\n" 1058 "BL sub_FFC665B0\n" 1059 "B loc_FFC66374\n" 1060 "loc_FFC6625C:\n" 1061 "CMP R4, R1\n" 1062 "BNE loc_FFC663C4\n" 1063 "loc_FFC66264:\n" 1064 "MOV R0, #8\n" 1065 "B loc_FFC66224\n" 1066 "loc_FFC662D0:\n" 1067 "CMP R4, R0\n" 1068 "BEQ loc_FFC66304\n" 1069 "BGT loc_FFC662F0\n" 1070 "CMP R4, R3\n" 1071 "BEQ loc_FFC66154\n" 1072 "CMP R4, LR\n" 1073 "BEQ loc_FFC66250\n" 1074 "B loc_FFC663C4\n" 1075 "loc_FFC662F0:\n" 1076 "CMP R4, R2\n" 1077 "SUBNE R12, R4, #0x4000\n" 1078 "SUBNES R12, R12, #0xE\n" 1079 "BEQ loc_FFC66154\n" 1080 "B loc_FFC663C4\n" 1081 "loc_FFC66304:\n" 1082 "MOV R0, #7\n" 1083 "B loc_FFC66224\n" 1084 "loc_FFC6630C:\n" 1085 "CMP R4, R3\n" 1086 "BEQ loc_FFC66324\n" 1087 "CMP R4, LR\n" 1088 "BEQ loc_FFC66250\n" 1089 "CMP R4, R2\n" 1090 "BNE loc_FFC663C4\n" 1091 "loc_FFC66324:\n" 1092 "BL sub_FFC66558\n" 1093 "MOV R0, #0\n" 1094 "BL sub_FFC65738\n" 1095 "B loc_FFC66374\n" 1096 "loc_FFC66334:\n" 1097 "SUB R12, R4, #0x800\n" 1098 "SUBS R12, R12, #0x4A\n" 1099 "BEQ loc_FFC6637C\n" 1100 "CMP R4, R1\n" 1101 "BEQ loc_FFC663B4\n" 1102 "CMP R4, R0\n" 1103 "BEQ loc_FFC663A4\n" 1104 "SUB R12, R4, #0x3100\n" 1105 "SUBS R12, R12, #0x2A\n" 1106 "BNE loc_FFC663C4\n" 1107 "BL sub_FFC66510\n" 1108 "LDR R0, [R5,#0x14]\n" 1109 "CMP R0, #0\n" 1110 "BNE loc_FFC66374\n" 1111 "BL sub_FFC6652C_my\n" // Continue here EntryActionOnMoving 1112 "BL sub_FFD32080\n" 1113 "loc_FFC66374:\n" 1114 "MOV R0, #0\n" 1115 "LDMFD SP!, {R4-R8,PC}\n" 1116 "loc_FFC6637C:\n" 1117 "BL sub_FFC66510\n" 1118 "LDR R0, =0x8007\n" 1119 "MOV R1, #0\n" 1120 "BL sub_FFC5D14C\n" // j_PTM_SetCurrentItem 1121 "BL sub_FFD310D4\n" 1122 "BL sub_FFC66558\n" 1123 "BL sub_FFD32080\n" 1124 "BL sub_FFC655F4\n" 1125 "MOV R0, #0\n" 1126 "B loc_FFC66224\n" 1127 "loc_FFC663A4:\n" 1128 "BL sub_FFC66510\n" 1129 "BL sub_FFD310D4\n" 1130 "BL sub_FFD32080\n" 1131 "B loc_FFC6615C\n" 1132 "loc_FFC663B4:\n" 1133 "BL sub_FFC66510\n" 1134 "BL sub_FFD310D4\n" 1135 "BL sub_FFD32080\n" 1136 "B loc_FFC66154\n" 1137 "loc_FFC663C4:\n" 1138 "MOV R0, #1\n" 1139 "LDMFD SP!, {R4-R8,PC}\n" 1140 ".ltorg\n" 1141 ); 1142 } // #fe 1143 1144 // subs used in the sub above : 1145 //sub_FFC66608_my 1146 //sub_FFC65F8C_my 1147 //sub_FFC6652C_my 1148 1149 1150 1151 1152 void __attribute__((naked,noinline)) sub_FFC66608_my(){ 1153 asm volatile( 1154 "LDR R3, =0x5BB0\n" 1155 "LDR R12, =0x2006\n" 1156 "STMFD SP!, {R4,LR}\n" 1157 "LDR R1, [R3,#0xC]\n" 1158 "LDR R2, [R3,#0x14]\n" 1159 "CMP R0, R12\n" 1160 "BEQ loc_FFC6667C\n" 1161 "BGT loc_FFC66648\n" 1162 "SUB R12, R0, #0x900\n" 1163 "SUBS R12, R12, #0xA2\n" 1164 "BEQ loc_FFC666A0\n" 1165 "SUB R12, R0, #0x1000\n" 1166 "SUBS R12, R12, #0x51\n" 1167 "BNE loc_FFC666C4\n" 1168 "BL sub_FFC6657C\n" 1169 "B loc_FFC666BC\n" 1170 "loc_FFC66648:\n" 1171 "SUB R12, R0, #0x3000\n" 1172 "SUBS R12, R12, #7\n" 1173 "BEQ loc_FFC666B8\n" 1174 "SUB R12, R0, #0x3100\n" 1175 "SUBS R12, R12, #0x4B\n" 1176 "BNE loc_FFC666C4\n" 1177 "CMP R2, #0\n" 1178 "BNE loc_FFC666BC\n" 1179 "LDR R0, [R3,#8]\n" 1180 "ORRS R0, R0, R1\n" 1181 "BEQ loc_FFC66688\n" 1182 "BL sub_FFC65F8C_my\n" // Continue here 1183 "B loc_FFC666BC\n" 1184 "loc_FFC6667C:\n" 1185 "CMP R2, #0\n" 1186 "BLEQ sub_FFC64D48\n" 1187 "B loc_FFC666BC\n" 1188 "loc_FFC66688:\n" 1189 "LDR R0, [R3,#4]\n" 1190 "CMP R0, #0\n" 1191 "MOVNE R0, #3\n" 1192 "BNE loc_FFC666B0\n" 1193 "BL sub_FFC66558\n" 1194 "B loc_FFC666BC\n" 1195 "loc_FFC666A0:\n" 1196 "CMP R1, #0\n" 1197 "BNE loc_FFC666BC\n" 1198 "BL sub_FFC16760\n" 1199 "MOV R0, #2\n" 1200 "loc_FFC666B0:\n" 1201 "BL sub_FFC66470\n" 1202 "B loc_FFC666BC\n" 1203 "loc_FFC666B8:\n" 1204 "BL sub_FFC66594\n" 1205 "loc_FFC666BC:\n" 1206 "MOV R0, #0\n" 1207 "LDMFD SP!, {R4,PC}\n" 1208 "loc_FFC666C4:\n" 1209 "MOV R0, #1\n" 1210 "LDMFD SP!, {R4,PC}\n" 1211 ); 1212 } //#fe 1213 1214 1215 1216 1217 1218 void __attribute__((naked,noinline)) sub_FFC65F8C_my(){ 1219 asm volatile( 1220 "STMFD SP!, {R4,LR}\n" 1221 "LDR R1, =0xFFC6626C\n" // a_entryactionon ; "_EntryActionOnPreMoving" 1222 "MOV R0, #0x60\n" 1223 "BL sub_FFC5556C\n" 1224 "LDR R4, =0x5BB0\n" 1225 "LDR R0, [R4,#0x10]\n" 1226 "CMP R0, #0\n" 1227 "LDMEQFD SP!, {R4,LR}\n" 1228 "BEQ sub_FFC6652C_my\n" // Continue here 1229 "LDR R1, =0xFFC66288\n" // a_entryaction_0 ; "_EntryActionOnSelfTimer" 1230 "MOV R0, #0x60\n" 1231 "BL sub_FFC5556C\n" 1232 "BL sub_FFD320AC\n" 1233 "LDR R0, [R4,#0x18]\n" 1234 "CMP R0, #1\n" 1235 "MOVNE R0, #1\n" 1236 "STRNE R0, [R4,#0x18]\n" 1237 "BLNE sub_FFC5C808\n" // LockMainPower\n" 1238 "MOV R0, #9\n" 1239 "BL sub_FFC66470\n" 1240 "LDMFD SP!, {R4,LR}\n" 1241 "B sub_FFD30F90\n" 1242 ); 1243 } // #fe 1244 1245 1246 1247 1248 void __attribute__((naked,noinline)) sub_FFC6652C_my(){ 1249 asm volatile( 1250 "STMFD SP!, {R4,LR}\n" 1251 "LDR R1, =0xFFC666E4\n" // a_entryaction_1 ; "_EntryActionOnMoving" 1252 "MOV R0, #0x60\n" 1253 "BL sub_FFC5556C\n" 1254 "LDR R1, =0x5BB0\n" 1255 "MOV R0, #0\n" 1256 "STR R0, [R1,#0xC]\n" 1257 "MOV R0, #4\n" 1258 "BL sub_FFC66470\n" 1259 "LDMFD SP!, {R4,LR}\n" 1260 "B sub_FFC65C5C_my\n" // Continue here 1261 1262 ); 1263 } //#fe 1264 1265 void __attribute__((naked,noinline)) sub_FFC65C5C_my(){ 1266 asm volatile( 1267 "LDR R0, =0x5B6C\n" 1268 "STMFD SP!, {R3,LR}\n" 1269 "LDR R1, [R0,#0x40]\n" 1270 "CMP R1, #1\n" 1271 "MOVNE R1, #1\n" 1272 "STRNE R1, [R0,#0x40]\n" 1273 "BLNE sub_FFC5C808\n" // LockMainPower\n" 1274 "MOV R1, #0\n" 1275 "MOV R0, #0x80\n" 1276 "BL sub_FFC6695C\n" 1277 "MOV R2, #2\n" 1278 "MOV R1, SP\n" 1279 "MOV R0, #0x6B\n" 1280 "BL sub_FFC5819C\n" // PT_GetPropertyCaseString_0\n" 1281 "MOV R2, #2\n" 1282 "MOV R1, SP\n" 1283 "MOV R0, #0xA3\n" 1284 "BL sub_FFC5809C\n" // PT_GetPropertyCaseString\n" 1285 "BL sub_FFC47434\n" 1286 "BL sub_FFC65000\n" 1287 "BL sub_FFC16B74_my\n" // Continue here (SSAPI:RecordMovie) 1288 "BL sub_FFC655AC\n" 1289 "LDMFD SP!, {R12,PC}\n" 1290 ); 1291 } //#fe 1292 1293 1294 1295 1296 1297 void __attribute__((naked,noinline)) sub_FFC16B74_my(){ 1298 asm volatile( 1299 "STMFD SP!, {R4,LR}\n" 1300 "MOV R4, R0\n" 1301 "MOV R0, #0x20\n" 1302 "LDR R1, =0xFFC16C94\n" // aSsapiRecordmov ; "SSAPI::RecordMovie" 1303 "BL sub_FFC5556C\n" 1304 "BL sub_FFC16FC8\n" 1305 "CMP R0, #0\n" 1306 "LDMNEFD SP!, {R4,PC}\n" 1307 "BL sub_FFC48A68\n" 1308 "MOV R0, R4\n" 1309 "LDMFD SP!, {R4,LR}\n" 1310 "B sub_FFC4AB5C_my\n" // Continue here 1311 ); 1312 } // #fe 1313 1314 1315 1316 void __attribute__((naked,noinline)) sub_FFC4AB5C_my(){ 1317 asm volatile( 1318 "STMFD SP!, {R4-R8,LR}\n" 1319 "MOV R8, R0\n" 1320 "MOV R0, #0x41\n" 1321 "SUB SP, SP, #0x38\n" 1322 "MOV R5, #0\n" 1323 "STR R0, [SP,#0x34]\n" 1324 "BL sub_FFC4AB2C\n" 1325 "CMP R0, #0\n" 1326 "LDRNE R1, =0x163\n" 1327 "BNE loc_FFC4AD08\n" 1328 "LDR R4, =0x52E4\n" 1329 "MOV R1, #0x5E\n" 1330 "LDR R0, [R4,#8]\n" 1331 "BL sub_FFC173FC\n" 1332 "BL sub_FFC5832C\n" 1333 "STR R0, [R4,#4]\n" 1334 "MOV R0, #0\n" 1335 "BL sub_FFC52170\n" 1336 "STR R0, [SP,#0x28]\n" 1337 "ADD R0, SP, #0x28\n" 1338 "MOV R1, SP\n" 1339 "BL sub_FFC522BC\n" 1340 "MOV R0, SP\n" 1341 "BL sub_FFC521A4\n" 1342 "STR R0, [SP,#0x2C]\n" 1343 "LDR R0, [R4,#4]\n" 1344 "MOV R3, #4\n" 1345 "ADD R2, SP, #0x2C\n" 1346 "MOV R1, #0x34\n" 1347 "BL sub_FFC58640\n" 1348 "LDR R7, [SP,#0x2C]\n" 1349 "BL sub_FFC4B04C\n" 1350 "MOV R6, #0\n" 1351 "ADD R1, SP, #0x28\n" 1352 "ADD R0, SP, #0x2C\n" 1353 "STR R6, [SP,#0x2C]\n" 1354 "STR R6, [SP,#0x28]\n" 1355 "BL sub_FFC1F6E8\n" 1356 "LDR R0, [R4,#4]\n" 1357 "MOV R3, #2\n" 1358 "ADD R2, SP, #0x2C\n" 1359 "MOV R1, #0x2F\n" 1360 "BL sub_FFC58640\n" 1361 "LDR R0, [R4,#4]\n" 1362 "MOV R3, #2\n" 1363 "ADD R2, SP, #0x28\n" 1364 "MOV R1, #0x2D\n" 1365 "BL sub_FFC58640\n" 1366 "ADD R1, SP, #0x28\n" 1367 "ADD R0, SP, #0x2C\n" 1368 "BL sub_FFC23048\n" 1369 "LDR R0, [R4,#4]\n" 1370 "MOV R3, #2\n" 1371 "ADD R2, SP, #0x2C\n" 1372 "MOV R1, #0x30\n" 1373 "BL sub_FFC58640\n" 1374 "ADD R1, SP, #0x28\n" 1375 "ADD R0, SP, #0x2C\n" 1376 "BL sub_FFC1FEC0\n" 1377 "LDR R0, [R4,#4]\n" 1378 "MOV R3, #2\n" 1379 "ADD R2, SP, #0x28\n" 1380 "MOV R1, #0x2E\n" 1381 "BL sub_FFC58640\n" 1382 "LDR R0, [R4,#4]\n" 1383 "MOV R3, #2\n" 1384 "ADD R2, SP, #0x2C\n" 1385 "MOV R1, #0xB8\n" 1386 "BL sub_FFC586EC\n" 1387 "TST R0, #1\n" 1388 "LDRNE R1, =0x142\n" 1389 "LDRNE R0, =0xFFC4AF80\n" // aSsmovierec_c ; "SsMovieRec.c" 1390 "BLNE sub_FFC0BDB8\n" // DebugAssert 1391 "LDRH R0, [SP,#0x2C]\n" 1392 "MOV R3, #4\n" 1393 "ADD R2, SP, #0x28\n" 1394 "CMP R0, #0\n" 1395 "MOVNE R0, #1\n" 1396 "STR R0, [SP,#0x28]\n" 1397 "LDR R0, [R4,#4]\n" 1398 "MOV R1, #0x92\n" 1399 "BL sub_FFC58640\n" 1400 "MOV R2, #1\n" 1401 "ADD R1, SP, #0x34\n" 1402 "MOV R0, #0xFA\n" 1403 "BL sub_FFC5819C\n" // PT_GetPropertyCaseString 1404 "TST R0, #1\n" 1405 "LDRNE R1, =0x17A\n" 1406 "LDRNE R0, =0xFFC4AF80\n" // aSsmovierec_c ; "SsMovieRec.c" 1407 "BLNE sub_FFC0BDB8\n" // DebugAssert 1408 "LDRB R0, [SP,#0x34]\n" 1409 "MOV R3, R8\n" 1410 "MOV R2, #0x14\n" 1411 "AND R1, R0, #0xFF\n" 1412 "ADD R0, SP, #0x30\n" 1413 "STR R7, [SP]\n" 1414 "BL sub_FFCEBB1C\n" 1415 "TST R0, #1\n" 1416 "LDRNE R1, =0x17E\n" 1417 "BNE loc_FFC4AD08\n" 1418 "LDR R0, =0x18370\n" 1419 "LDR R1, [SP,#0x30]\n" 1420 "MOV R2, #0x10\n" 1421 "BL sub_FFCDE9C0\n" 1422 "TST R0, #1\n" 1423 "BEQ loc_FFC4AD18\n" 1424 "LDR R1, =0x186\n" 1425 "loc_FFC4AD08:\n" 1426 "LDR R0, =0xFFC4AF80\n" // aSsmovierec_c ; "SsMovieRec.c" 1427 "BL sub_FFC0BDB8\n" // DebugAssert 1428 "loc_FFC4AD10:\n" 1429 "ADD SP, SP, #0x38\n" 1430 "LDMFD SP!, {R4-R8,PC}\n" 1431 "loc_FFC4AD18:\n" 1432 "LDR R0, [R4,#4]\n" 1433 "MOV R3, #4\n" 1434 "ADD R2, SP, #0x30\n" 1435 "MOV R1, #0x2B\n" 1436 "BL sub_FFC58640\n" 1437 "BL sub_FFC66B40\n" 1438 "LDRSB R1, [SP,#0x34]\n" 1439 "CMP R0, R1\n" 1440 "MOVEQ R7, #0\n" 1441 "BEQ loc_FFC4AD6C\n" 1442 "LDR R5, =0x18370\n" 1443 "MOV R0, R5\n" 1444 "BL sub_FFC66CBC\n" 1445 "MOV R8, R0\n" 1446 "BL sub_FFC95774\n" 1447 "CMP R8, R0\n" 1448 "MOV R7, R0\n" 1449 "LDRLS R1, =0x193\n" 1450 "LDRLS R0, =0xFFC4AF80\n" // aSsmovierec_c ; "SsMovieRec.c" 1451 "BLLS sub_FFC0BDB8\n" // DebugAssert 1452 "SUB R7, R8, R7\n" 1453 "loc_FFC4AD6C:\n" 1454 "BL sub_FFC46780_my\n" // Continue here (taskcreate_MovieRecord) 1455 "LDR R0, =0x18394\n" 1456 "LDRH R3, [R0,#0x46]\n" 1457 "LDRH R2, [R0,#0x44]\n" 1458 "LDR R1, [R0,#0x40]\n" 1459 "LDR R0, [R0,#0x3C]\n" 1460 "BL sub_FFC45800\n" 1461 "MOV R3, #0\n" 1462 "LDR R2, =0xFFC4AAF4\n" 1463 "MOV R1, #0\n" 1464 "LDR R0, =0xFFC4AB08\n" 1465 "ADD R8, SP, #0xC\n" 1466 "STMIA R8, {R0-R3}\n" 1467 "LDR R2, =0xFFC4AB18\n" 1468 "LDR R1, =0xFFC4AB04\n" 1469 "STMEA SP, {R1-R3}\n" 1470 "LDR R1, [R4,#4]\n" 1471 "MOV R3, R6\n" 1472 "MOV R2, R7\n" 1473 "MOV R0, R5\n" 1474 "BL sub_FFC45B5C\n" 1475 "LDR R0, [R4,#8]\n" 1476 "MOV R1, #0x20\n" 1477 "BL sub_FFC173C8\n" 1478 "B loc_FFC4AD10\n" 1479 ); 1480 } // #fe 1481 1482 void __attribute__((naked,noinline)) sub_FFC46780_my(){ 1483 asm volatile( 1484 "STMFD SP!, {R3-R9,LR}\n" 1485 "LDR R5, =0x5178\n" 1486 "MOV R6, #0\n" 1487 "STR R6, [R5,#0x20]\n" 1488 "LDR R0, [R5,#4]\n" 1489 "LDR R8, =0x2710\n" 1490 "CMP R0, #0\n" 1491 "BNE loc_FFC46838\n" 1492 "MOV R0, #1\n" 1493 "STR R0, [R5,#4]\n" 1494 "MOV R0, #0\n" 1495 "MOV R1, #0\n" 1496 "BL sub_FFC0BC34\n" 1497 "STR R0, [R5,#0x10]\n" 1498 "MOV R0, #0\n" 1499 "MOV R1, #0\n" 1500 "BL sub_FFC0BC34\n" 1501 "STR R0, [R5,#0x14]\n" 1502 "MOV R0, #0\n" 1503 "MOV R1, #0xA\n" 1504 "BL sub_FFC0BBEC\n" 1505 "STR R0, [R5,#0x18]\n" 1506 "MOV R0, #0\n" 1507 "MOV R1, #0xA\n" 1508 "BL sub_FFC0BBEC\n" 1509 "LDR R7, =0x17F84\n" 1510 "MOV R4, #9\n" 1511 "ADD R9, R4, #0x2D4\n" 1512 "STR R0, [R5,#0x1C]\n" 1513 "loc_FFC467F4:\n" 1514 "RSB R0, R4, R4,LSL#3\n" 1515 "STR R6, [R7,R0,LSL#2]\n" 1516 "ADD R1, R7, R0,LSL#2\n" 1517 "STR R9, [SP]\n" 1518 "LDR R0, [R5,#0x1C]\n" 1519 "LDR R3, =0xFFC45AFC\n" // aMovierecorder_ 1520 "MOV R2, R8\n" 1521 "BL sub_FFC0BCF8\n" 1522 "SUBS R4, R4, #1\n" 1523 "BPL loc_FFC467F4\n" 1524 "MOV R3, #0\n" 1525 "STR R3, [SP]\n" 1526 "LDR R3, =MovieRecord_Task_my\n" // FFC46678 task_MovieRecord 1527 "MOV R2, #0x1000\n" 1528 "MOV R1, #0x14\n" 1529 "LDR R0, =0xFFC46988\n" // aMovierecord ; "MovieRecord" 1530 "BL sub_FFC0BBB8\n" // KernelCreateTask 1531 "loc_FFC46838:\n" 1532 "BL sub_FFD0A4C8\n" // taskcreate_AviWrite 1533 "BL sub_FFC4689C\n" 1534 "MOV R1, R0\n" 1535 "MOV R0, #0xB\n" 1536 "ADD R3, R0, #0x2DC\n" 1537 "STR R0, [R1]\n" 1538 "STR R3, [SP]\n" 1539 "LDR R3, =0xFFC45AFC\n" // aMovierecorder_ ; "MovieRecorder.c" 1540 "MOV R2, R8\n" 1541 "LDR R0, [R5,#0x18]\n" 1542 "BL sub_FFC0BCF8\n" 1543 "LDMFD SP!, {R3-R9,PC}\n" 1544 ); 1545 } // #fe 1546 */ 1547 1548 void __attribute__((naked,noinline)) MovieRecord_Task_my(){ 1549 asm volatile( 1550 "STMFD SP!, {R2-R8,LR}\n" 1551 "LDR R8, =0x32B\n" 1552 "LDR R7, =0x2710\n" 1553 "LDR R4, =0x5178\n" 1554 "MOV R6, #0\n" 1555 "MOV R5, #1\n" 1556 "loc_FFC46690:\n" 1557 "LDR R0, [R4,#0x18]\n" 1558 "MOV R2, #0\n" 1559 "ADD R1, SP, #4\n" 1560 "BL sub_FFC1764C\n" 1561 "LDR R0, [R4,#0x20]\n" 1562 "CMP R0, #0\n" 1563 "BNE loc_FFC46760\n" 1564 "LDR R0, [SP,#4]\n" 1565 "LDR R1, [R0]\n" 1566 "SUB R1, R1, #2\n" 1567 "CMP R1, #9\n" 1568 "ADDLS PC, PC, R1,LSL#2\n" 1569 "B loc_FFC46760\n" 1570 "loc_FFC466C4:\n" 1571 "B loc_FFC46714\n" 1572 "loc_FFC466C8:\n" 1573 "B loc_FFC46734\n" 1574 "loc_FFC466CC:\n" 1575 "B loc_FFC46744\n" 1576 "loc_FFC466D0:\n" 1577 "B loc_FFC4674C\n" 1578 "loc_FFC466D4:\n" 1579 "B loc_FFC4671C\n" 1580 "loc_FFC466D8:\n" 1581 "B loc_FFC46754\n" 1582 "loc_FFC466DC:\n" 1583 "B loc_FFC46724\n" 1584 "loc_FFC466E0:\n" 1585 "B loc_FFC46760\n" 1586 "loc_FFC466E4:\n" 1587 "B loc_FFC4675C\n" 1588 "loc_FFC466E8:\n" 1589 "B loc_FFC466EC\n" 1590 "loc_FFC466EC:\n" 1591 "LDR R0, =0xFFC46374\n" 1592 "STR R6, [R4,#0x34]\n" 1593 "STR R0, [R4,#0xA0]\n" 1594 "LDR R0, =0xFFC45DEC\n" 1595 "LDR R2, =0xFFC45D08\n" 1596 "LDR R1, =0x180AC\n" 1597 "STR R6, [R4,#0x24]\n" 1598 "BL sub_FFCA2C98\n" 1599 "STR R5, [R4,#0x38]\n" 1600 "B loc_FFC46760\n" 1601 "loc_FFC46714:\n" 1602 "BL unlock_optical_zoom\n" // + 1603 "BL sub_FFC4646C\n" 1604 "B loc_FFC46760\n" 1605 "loc_FFC4671C:\n" 1606 "BL sub_FFC46174_my\n" //-----------------> 1607 "B loc_FFC46760\n" 1608 "loc_FFC46724:\n" 1609 "LDR R1, [R0,#0x10]\n" 1610 "LDR R0, [R0,#4]\n" 1611 "BL sub_FFD0B0D4\n" 1612 "B loc_FFC46760\n" 1613 "loc_FFC46734:\n" 1614 "LDR R0, [R4,#0x38]\n" 1615 "CMP R0, #5\n" 1616 "STRNE R5, [R4,#0x28]\n" 1617 "B loc_FFC46760\n" 1618 "loc_FFC46744:\n" 1619 "BL sub_FFC45F7C\n" 1620 "B loc_FFC46760\n" 1621 "loc_FFC4674C:\n" 1622 "BL sub_FFC45E38\n" 1623 "B loc_FFC46760\n" 1624 "loc_FFC46754:\n" 1625 "BL sub_FFC45C94\n" 1626 "B loc_FFC46760\n" 1627 "loc_FFC4675C:\n" 1628 "BL sub_FFC468C8\n" 1629 "loc_FFC46760:\n" 1630 "LDR R1, [SP,#4]\n" 1631 "LDR R3, =0xFFC45AFC\n" // aMovierecorder_ 1632 "STR R6, [R1]\n" 1633 "STR R8, [SP]\n" 1634 "LDR R0, [R4,#0x1C]\n" 1635 "MOV R2, R7\n" 1636 "BL sub_FFC0BCF8\n" 1637 "B loc_FFC46690\n" 1638 ); 1639 } 1640 1641 1642 void __attribute__((naked,noinline)) sub_FFC46174_my(){ 1643 asm volatile( 1644 "STMFD SP!, {R4-R8,LR}\n" 1645 "SUB SP, SP, #0x40\n" 1646 "MOV R6, #0\n" 1647 "LDR R5, =0x5178\n" 1648 "MOV R4, R0\n" 1649 "STR R6, [SP,#0x30]\n" 1650 "STR R6, [SP,#0x28]\n" 1651 "LDR R0, [R5,#0x38]\n" 1652 "MOV R8, #4\n" 1653 "CMP R0, #3\n" 1654 "STREQ R8, [R5,#0x38]\n" 1655 "LDR R0, [R5,#0xA0]\n" 1656 "BLX R0\n" 1657 //".long 0xE12FFF30\n" // don't know how it's determined but so far same code as a720 1658 "LDR R0, [R5,#0x38]\n" 1659 "CMP R0, #4\n" 1660 "BNE loc_FFC4624C\n" 1661 "ADD R3, SP, #0x28\n" 1662 "ADD R2, SP, #0x2C\n" 1663 "ADD R1, SP, #0x30\n" 1664 "ADD R0, SP, #0x34\n" 1665 "BL sub_FFD0B268\n" 1666 "CMP R0, #0\n" 1667 "MOV R7, #1\n" 1668 "BNE loc_FFC461F0\n" 1669 "LDR R1, [R5,#0x28]\n" 1670 "CMP R1, #1\n" 1671 "BNE loc_FFC46254\n" 1672 "LDR R1, [R5,#0x50]\n" 1673 "LDR R2, [R5,#0x3C]\n" 1674 "CMP R1, R2\n" 1675 "BCC loc_FFC46254\n" 1676 "loc_FFC461F0:\n" 1677 "CMP R0, #0x80000001\n" 1678 "STREQ R8, [R5,#0x54]\n" 1679 "BEQ loc_FFC46228\n" 1680 "CMP R0, #0x80000003\n" 1681 "STREQ R7, [R5,#0x54]\n" 1682 "BEQ loc_FFC46228\n" 1683 "CMP R0, #0x80000005\n" 1684 "MOVEQ R0, #2\n" 1685 "BEQ loc_FFC46224\n" 1686 "CMP R0, #0x80000007\n" 1687 "STRNE R6, [R5,#0x54]\n" 1688 "BNE loc_FFC46228\n" 1689 "MOV R0, #3\n" 1690 "loc_FFC46224:\n" 1691 "STR R0, [R5,#0x54]\n" 1692 "loc_FFC46228:\n" 1693 "LDR R0, =0x180DC\n" 1694 "LDR R0, [R0,#8]\n" 1695 "CMP R0, #0\n" 1696 "BEQ loc_FFC46240\n" 1697 "BL sub_FFC32918\n" 1698 "B loc_FFC46244\n" 1699 "loc_FFC46240:\n" 1700 "BL sub_FFC45C94\n" 1701 "loc_FFC46244:\n" 1702 "MOV R0, #5\n" 1703 "STR R0, [R5,#0x38]\n" 1704 "loc_FFC4624C:\n" 1705 "ADD SP, SP, #0x40\n" 1706 "LDMFD SP!, {R4-R8,PC}\n" 1707 "loc_FFC46254:\n" 1708 "LDR LR, [SP,#0x30]\n" 1709 "CMP LR, #0\n" 1710 "BEQ loc_FFC4631C\n" 1711 "STR R7, [R5,#0x2C]\n" 1712 "LDR R0, [R5,#0x6C]\n" 1713 "LDR R1, [R4,#0x14]\n" 1714 "LDR R2, [R4,#0x18]\n" 1715 "LDR R12, [R4,#0xC]\n" 1716 "ADD R3, SP, #0x38\n" 1717 "ADD R8, SP, #0x14\n" 1718 "STMIA R8, {R0-R3}\n" 1719 "LDR R3, [R5,#0x58]\n" 1720 "ADD R2, SP, #0x3C\n" 1721 "ADD R8, SP, #8\n" 1722 "LDRD R0, [SP,#0x28]\n" 1723 //".long 0xE1CD02D8\n" // again not sure why, but so far same code as a720 1724 "STMIA R8, {R0,R2,R3}\n" 1725 "STR R1, [SP,#4]\n" 1726 "STR LR, [SP]\n" 1727 "LDMIB R4, {R0,R1}\n" 1728 "LDR R3, [SP,#0x34]\n" 1729 "MOV R2, R12\n" 1730 "BL sub_FFCC99E4\n" 1731 "LDR R0, [R5,#0x10]\n" 1732 "MOV R1, #0x3E8\n" 1733 "BL sub_FFC0B774\n" // TakeSemaphore 1734 "CMP R0, #9\n" 1735 "BNE loc_FFC462D0\n" 1736 "BL sub_FFD0B844\n" 1737 "MOV R0, #0x90000\n" 1738 "STR R7, [R5,#0x38]\n" 1739 "B loc_FFC462E8\n" 1740 "loc_FFC462D0:\n" 1741 "LDR R0, [SP,#0x38]\n" 1742 "CMP R0, #0\n" 1743 "BEQ loc_FFC462F0\n" 1744 "BL sub_FFD0B844\n" 1745 "MOV R0, #0xA0000\n" 1746 "STR R7, [R5,#0x38]\n" 1747 "loc_FFC462E8:\n" 1748 "BL sub_FFC5CAA4\n" // HardwareDefect 1749 "B loc_FFC4624C\n" 1750 "loc_FFC462F0:\n" 1751 "BL sub_FFCC9AA8\n" 1752 "LDR R0, [SP,#0x34]\n" 1753 "LDR R1, [SP,#0x3C]\n" 1754 "BL sub_FFD0B5EC\n" 1755 "LDR R0, [R5,#0x4C]\n" 1756 "LDR R1, =0x51E4\n" 1757 "ADD R0, R0, #1\n" 1758 "STR R0, [R5,#0x4C]\n" 1759 "LDR R0, [SP,#0x3C]\n" 1760 "MOV R2, #0\n" 1761 "BL sub_FFD0947C_my\n" //-----------------> 1762 "loc_FFC4631C:\n" 1763 "LDR R0, [R5,#0x50]\n" 1764 "ADD R0, R0, #1\n" 1765 "STR R0, [R5,#0x50]\n" 1766 "LDR R1, [R5,#0x78]\n" 1767 "MUL R0, R1, R0\n" 1768 "LDR R1, [R5,#0x74]\n" 1769 "BL sub_FFE5A618\n" 1770 "MOV R4, R0\n" 1771 "BL sub_FFD0B87C\n" 1772 "LDR R1, [R5,#0x70]\n" 1773 "CMP R1, R4\n" 1774 "BNE loc_FFC46358\n" 1775 "LDR R0, [R5,#0x30]\n" 1776 "CMP R0, #1\n" 1777 "BNE loc_FFC4636C\n" 1778 "loc_FFC46358:\n" 1779 "LDR R1, [R5,#0x84]\n" 1780 "MOV R0, R4\n" 1781 "BLX R1\n" 1782 //".long 0xE12FFF31\n" // again, no clue about these but same code in a720... 1783 "STR R4, [R5,#0x70]\n" 1784 "STR R6, [R5,#0x30]\n" 1785 "loc_FFC4636C:\n" 1786 "STR R6, [R5,#0x2C]\n" 1787 "B loc_FFC4624C\n" 1788 ); 1789 } 1790 1791 1792 void __attribute__((naked,noinline)) sub_FFD0947C_my(){ 1793 asm volatile( 1794 "STMFD SP!, {R4-R8,LR}\n" 1795 "LDR R4, =0x7F7C\n" 1796 "LDR LR, [R4]\n" 1797 "LDR R2, [R4,#8]\n" 1798 "CMP LR, #0\n" 1799 "LDRNE R3, [R4,#0xC]\n" 1800 "MOV R5, R2\n" 1801 "CMPNE R3, #1\n" 1802 "MOVEQ R2, #0\n" 1803 "STREQ R0, [R4]\n" 1804 "STREQ R2, [R4,#0xC]\n" 1805 "BEQ loc_FFD09548\n" 1806 "LDR R3, [R4,#4]\n" 1807 "LDR R7, =table\n" // unk_FFE78188 1808 "ADD R12, R3, R3,LSL#1\n" 1809 "LDR R3, [R7,R12,LSL#2]\n" 1810 "ADD R6, R7, #0x30\n" 1811 "LDR R8, [R6,R12,LSL#2]\n" 1812 "SUB R3, LR, R3\n" 1813 "CMP R3, #0\n" 1814 "SUB LR, LR, R8\n" 1815 "BLE loc_FFD09504\n" 1816 "ADD R12, R7, R12,LSL#2\n" 1817 "LDR LR, [R12,#4]\n" 1818 "CMP LR, R3\n" 1819 "ADDGE R2, R2, #1\n" 1820 "BGE loc_FFD094F8\n" 1821 "LDR R12, [R12,#8]\n" 1822 "CMP R12, R3\n" 1823 "ADDLT R2, R2, #3\n" 1824 "ADDGE R2, R2, #2\n" 1825 "loc_FFD094F8:\n" 1826 //"CMP R2, #0x17\n" // - 1827 //"MOVGE R2, #0x16\n" // - 1828 "CMP R2, #0x1A\n" // + 1829 "MOVGE R2, #0x19\n" // + 1830 "B loc_FFD09538\n" 1831 "loc_FFD09504:\n" 1832 "CMP LR, #0\n" 1833 "BGE loc_FFD09538\n" 1834 "ADD R3, R6, R12,LSL#2\n" 1835 "LDR R12, [R3,#4]\n" 1836 "CMP R12, LR\n" 1837 "SUBLE R2, R2, #1\n" 1838 "BLE loc_FFD09530\n" 1839 "LDR R3, [R3,#8]\n" 1840 "CMP R3, LR\n" 1841 "SUBGT R2, R2, #3\n" 1842 "SUBLE R2, R2, #2\n" 1843 "loc_FFD09530:\n" 1844 "CMP R2, #0\n" 1845 "MOVLT R2, #0\n" 1846 "loc_FFD09538:\n" 1847 "CMP R2, R5\n" 1848 "STRNE R2, [R4,#8]\n" 1849 "MOVNE R2, #1\n" 1850 "STRNE R2, [R4,#0xC]\n" 1851 "loc_FFD09548:\n" 1852 "LDR R2, =CompressionRateTable\n" // unk_FFE7812C 1853 "LDR R3, [R4,#8]\n" 1854 "LDR R2, [R2,R3,LSL#2]\n" 1855 1856 "LDR R3, =video_mode\n" // + 1857 "LDR R3, [R3]\n" // + 1858 "LDR R3, [R3]\n" // + 1859 "CMP R3, #1\n" // + 1860 "LDREQ R3, =video_quality\n" // + 1861 "LDREQ R3, [R3]\n" // + 1862 "LDREQ R2, [R3]\n" // + 1863 1864 "STR R2, [R1]\n" 1865 "STR R0, [R4]\n" 1866 "BL mute_on_zoom\n" // + 1867 "LDMFD SP!, {R4-R8,PC}\n" 1868 ); 1869 } 1870 1871 #include "conf.h" 1872 1873 int *video_quality = &conf.video_quality; 1874 int *video_mode = &conf.video_mode; 1875 1876 long def_table[24]={0x2000, 0x38D, 0x788, 0x5800, 0x9C5, 0x14B8, 0x10000, 0x1C6A, 0x3C45, 0x8000, 0xE35, 0x1E23, 1877 0x1CCD, -0x2E1, -0x579, 0x4F33, -0x7EB, -0xF0C, 0xE666, -0x170A, -0x2BC6, 0x7333, -0xB85, -0x15E3}; 1878 1879 long table[24]; 1880 1881 void change_video_tables(int a, int b){ 1882 int i; 1883 for (i=0;i<24;i++) table[i]=(def_table[i]*a)/b; 1884 } 1885 1886 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};