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) 7 *x=12-((conf.video_quality-1)*(12+17)/(99-1)); 8 } 9 10 //** movie_record_task @ 0xFF95B3EC 11 12 void __attribute__((naked,noinline)) movie_record_task() { 13 asm volatile ( 14 "STMFD SP!, {R2-R10,LR} \n" 15 "LDR R6, =0xFF95A884 \n" 16 "LDR R7, =0xFF95ADB0 \n" //This function was used to take values for set_quality --> 17 "LDR R4, =0x62F8 \n" 18 "LDR R9, =0x69B \n" 19 "LDR R10, =0x2710 \n" 20 "MOV R8, #1 \n" 21 "MOV R5, #0 \n" 22 "loc_FF95B40C:\n" 23 "LDR R0, [R4, #0x24] \n" 24 "MOV R2, #0 \n" 25 "ADD R1, SP, #4 \n" 26 "BL sub_003F7218 \n" //RAM 27 "LDR R0, [R4, #0x2C] \n" 28 "CMP R0, #0 \n" 29 "LDRNE R0, [R4, #0xC] \n" 30 "CMPNE R0, #2 \n" 31 "LDRNE R0, [R4, #0x44] \n" 32 "CMPNE R0, #6 \n" 33 "BNE loc_FF95B530 \n" 34 "LDR R0, [SP, #4] \n" 35 "LDR R1, [R0] \n" 36 "SUB R1, R1, #2 \n" 37 "CMP R1, #0xB \n" 38 "ADDCC PC, PC, R1, LSL #2 \n" 39 "B loc_FF95B530 \n" 40 "B loc_FF95B4E0 \n" //(01) 41 "B loc_FF95B504 \n" //(02) 42 "B loc_FF95B514 \n" //(03) 43 "B loc_FF95B51C \n" //(04) 44 "B loc_FF95B4E8 \n" //(05) 45 "B loc_FF95B524 \n" //(06) 46 "B loc_FF95B4F4 \n" //(07) 47 "B loc_FF95B530 \n" //(08) 48 "B loc_FF95B52C \n" //(09) 49 "B loc_FF95B4AC \n" //(10) 50 "B loc_FF95B47C \n" //(11) 51 "loc_FF95B47C:\n" //Jump Table entry 11 52 "STR R5, [R4, #0x40] \n" 53 "STR R5, [R4, #0x30] \n" 54 "STR R5, [R4, #0x34] \n" 55 "STRH R5, [R4, #6] \n" 56 "STR R6, [R4, #0xB4] \n" 57 "STR R7, [R4, #0xD0] \n" 58 "LDR R0, [R4, #0xC] \n" 59 "ADD R0, R0, #1 \n" 60 "STR R0, [R4, #0xC] \n" 61 "MOV R0, #6 \n" 62 "STR R0, [R4, #0x44] \n" 63 "B loc_FF95B4CC \n" 64 "loc_FF95B4AC: \n" //Jump Table entry 10 65 "STR R5, [R4, #0x40] \n" 66 "STR R5, [R4, #0x30] \n" 67 "STR R6, [R4, #0xB4] \n" 68 "STR R7, [R4, #0xD0] \n" 69 "LDR R0, [R4, #0xC] \n" 70 "ADD R0, R0, #1 \n" 71 "STR R0, [R4, #0xC] \n" 72 "STR R8, [R4, #0x44] \n" 73 "loc_FF95B4CC:\n" 74 "LDR R2, =0xFF959FE4 \n" 75 "LDR R1, =0xACC18 \n" 76 "LDR R0, =0xFF95A0F8 \n" 77 "BL sub_FF84A34C \n" 78 "B loc_FF95B530 \n" 79 "loc_FF95B4E0: \n" //Jump Table entry 01 80 "BL unlock_optical_zoom \n" //added 81 "BL sub_FF95A9E4 \n" 82 "B loc_FF95B530 \n" 83 "loc_FF95B4E8: \n" //Jump Table entry 05 84 "LDR R1, [R4, #0xD0] \n" 85 "BLX R1 \n" 86 //begin patch 87 "LDR R0, =0x637C \n" // added, 0x6380-0x4 taken from "loc_FF95B2D4:" see commented function below. 88 "BL set_quality \n" // added 89 "BL mute_on_zoom\n" // added 90 //end patch 91 "B loc_FF95B530 \n" 92 "loc_FF95B4F4: \n" //Jump Table entry 07 93 "LDR R1, [R0, #0x18] \n" 94 "LDR R0, [R0, #4] \n" 95 "BL sub_FFA6A7F0 \n" 96 "B loc_FF95B530 \n" 97 "loc_FF95B504: \n" //Jump Table entry 02 98 "LDR R0, [R4, #0x44] \n" 99 "CMP R0, #5 \n" 100 "STRNE R8, [R4, #0x34] \n" 101 "B loc_FF95B530 \n" 102 "loc_FF95B514: \n" //Jump Table entry 03 103 "BL sub_FF95A4E4 \n" 104 "B loc_FF95B530 \n" 105 "loc_FF95B51C: \n" //Jump Table entry 04 106 "BL sub_FF95A144 \n" 107 "B loc_FF95B530 \n" 108 "loc_FF95B524: \n" //Jump Table entry 06 109 "BL sub_FF959F70 \n" 110 "B loc_FF95B530 \n" 111 "loc_FF95B52C: \n" //Jump Table entry 09 112 "BL sub_FF95BA08 \n" 113 "loc_FF95B530: \n" 114 "LDR R1, [SP, #4] \n" 115 "LDR R3, =0xFF959CD0 \n" 116 "STR R5, [R1] \n" 117 "STR R9, [SP] \n" 118 "LDR R0, [R4, #0x28] \n" 119 "MOV R2, R10 \n" 120 "BL sub_003F7B90 \n" //RAM 121 "B loc_FF95B40C \n" 122 ); 123 } 124 125 //This function was used to take values for set_quality 126 //** sub_FF95ADB0_my @ 0xFF95ADB0 127 /* 128 void __attribute__((naked,noinline)) sub_FF95ADB0_my() { 129 asm volatile ( 130 "STMFD SP!, {R4-R11,LR}\n" 131 "SUB SP, SP, #0x64\n" 132 "MOV R9, #0\n" 133 "LDR R6, =0x62F8\n" 134 "STR R9, [SP, #0x54]\n" 135 "STR R9, [SP, #0x4C]\n" 136 "STR R9, [R6, #0xB8]\n" 137 "STR R9, [R6, #0xBC]\n" 138 "STR R9, [R6, #0xC0]\n" 139 "STR R9, [R6, #0xC4]\n" 140 "MOV R4, R0 \n" 141 "STR R9, [R6, #0xC8] \n" 142 "LDR R0, [R6, #0x44] \n" 143 "MOV R11, #4 \n" 144 "CMP R0, #3 \n" 145 "STREQ R11, [R6, #0x44] \n" 146 "LDR R0, [R6, #0xB4] \n" 147 "MOV R8, R9 \n" 148 "MOV R5, #1 \n" 149 "MOV R7, R9 \n" 150 "BLX R0 \n" 151 "LDR R0, [R6, #0x44] \n" 152 "CMP R0, #6 \n" 153 "BEQ loc_FF95AE24 \n" 154 "LDR R1, [R6, #0xC] \n" 155 "CMP R1, #2 \n" 156 "BNE loc_FF95AE4C \n" 157 "CMP R0, #5 \n" 158 "BEQ loc_FF95AE5C\n" 159 "loc_FF95AE24: \n" 160 "LDR R2, =0xFF95AC84 \n" 161 "LDR R1, =0xFF95ACE8 \n" 162 "LDR R0, =0xFF95AD4C \n" 163 "MOV R7, #1 \n" 164 "ADD R3, SP, #0x30 \n" 165 "BL sub_FF84AE94 \n" 166 "LDR R0, [R6, #0x44] \n" 167 "CMP R0, #4 \n" 168 "MOVNE R5, #0 \n" 169 "B loc_FF95AE6C \n" 170 "loc_FF95AE4C: \n" 171 "CMP R0, #4 \n" 172 "BEQ loc_FF95AE6C \n" 173 "CMP R1, #2 \n" 174 "BNE loc_FF95AE64 \n" 175 "loc_FF95AE5C: \n" 176 "MOV R0, #0 \n" 177 "BL sub_FF84AF00 \n" 178 "loc_FF95AE64: \n" 179 "ADD SP, SP, #0x64 \n" 180 "LDMFD SP!, {R4-R11,PC}\n" 181 "loc_FF95AE6C: \n" 182 "LDRH R0, [R6, #6] \n" 183 "CMP R0, #3 \n" 184 "BNE loc_FF95AEA0 \n" 185 "LDR R0, [R6, #0xCC] \n" 186 "CMP R0, #0 \n" 187 "LDREQ R1, =0x8E8 \n" 188 "LDREQ R0, =0xFF959CD0 \n" 189 "BLEQ _DebugAssert \n" //RAM 190 "LDR R0, [R6, #0x6C] \n" 191 "LDR R1, [R6, #0xCC] \n" 192 "BL sub_003FC934 \n" //RAM 193 "CMP R1, #0 \n" 194 "MOVNE R5, #0 \n" 195 "loc_FF95AEA0:\n" 196 "LDR R0, [R6, #0x44] \n" 197 "CMP R0, #6 \n" 198 "CMPNE R0, #1 \n" 199 "CMPNE R0, #3 \n" 200 "BNE loc_FF95AEE4 \n" 201 "CMP R7, #1 \n" 202 "CMPEQ R5, #0 \n" 203 "BNE loc_FF95AEE4 \n" 204 "BL sub_FF84AEB8 \n" 205 "LDR R0, [R6, #0x18] \n" 206 "MOV R1, #0x3E8 \n" 207 "BL _TakeSemaphore \n" //RAM 208 "CMP R0, #9 \n" 209 "BNE loc_FF95B350 \n" 210 "MOV R0, #0x90000 \n" 211 "BL sub_FF834B68 \n" 212 "B loc_FF95AE64 \n" 213 "loc_FF95AEE4: \n" 214 "CMP R5, #1 \n" 215 "MOV R10, #1 \n" 216 "BNE loc_FF95AF0C \n" 217 "ADD R3, SP, #0x4C \n" 218 "ADD R2, SP, #0x50 \n" 219 "ADD R1, SP, #0x54 \n" 220 "ADD R0, SP, #0x58 \n" 221 "BL sub_FFA6A8C8 \n" 222 "MOVS R9, R0 \n" 223 "BNE loc_FF95AF28 \n" 224 "loc_FF95AF0C: \n" 225 "LDR R0, [R6, #0x34] \n" 226 "CMP R0, #1 \n" 227 "BNE loc_FF95B0A4 \n" 228 "LDR R0, [R6, #0x6C] \n" 229 "LDR R1, [R6, #0x48] \n" 230 "CMP R0, R1 \n" 231 "BCC loc_FF95B0A4 \n" 232 "loc_FF95AF28: \n" 233 "CMP R9, #0x80000001 \n" 234 "STREQ R11, [R6, #0x70] \n" 235 "BEQ loc_FF95AF60 \n" 236 "CMP R9, #0x80000003 \n" 237 "STREQ R10, [R6, #0x70] \n" 238 "BEQ loc_FF95AF60 \n" 239 "CMP R9, #0x80000005 \n" 240 "MOVEQ R0, #2 \n" 241 "BEQ loc_FF95AF5C \n" 242 "CMP R9, #0x80000007 \n" 243 "STRNE R8, [R6, #0x70] \n" 244 "BNE loc_FF95AF60 \n" 245 "MOV R0, #3 \n" 246 "loc_FF95AF5C: \n" 247 "STR R0, [R6, #0x70]\n" 248 "loc_FF95AF60: \n" 249 "LDR R0, [R6, #0xC] \n" 250 "CMP R0, #2 \n" 251 "BNE loc_FF95AFC4 \n" 252 "LDR R0, =0xFF95AC78 \n" 253 "MOV R1, #0 \n" 254 "BL sub_FFA36048 \n" 255 "LDR R1, [R6, #0x64] \n" 256 "LDR R2, =0xACC64 \n" 257 "ADD R3, SP, #0x5C \n" 258 "ADD R0, SP, #0x30 \n" 259 "STRD R0, [SP, #0x10] \n" 260 "STRD R2, [SP, #0x18] \n" 261 "LDR R1, [R6, #0x84] \n" 262 "LDR R2, [R6, #0x88] \n" 263 "MVN R3, #1 \n" 264 "ADD R0, SP, #0x60 \n" 265 "STMEA SP, {R0-R3} \n" 266 "MOV R3, #0 \n" 267 "LDR R0, =0xACCC4 \n" 268 "MOV R2, R3 \n" 269 "MOV R1, #0x40 \n" 270 "BL sub_FFA35F9C \n" 271 "B loc_FF95B01C \n" 272 "loc_FF95AFBC: \n" 273 "MOV R1, #1 \n" 274 "B loc_FF95B294 \n" 275 "loc_FF95AFC4: \n" 276 "BL sub_FF95BAD8 \n" 277 "LDR R2, [R6, #0x64] \n" 278 "ADD R3, SP, #0x5C \n" 279 "MVN R1, #1 \n" 280 "MOV R0, #0 \n" 281 "ADD R5, SP, #0x1C \n" 282 "STMIA R5, {R0-R3} \n" 283 "LDR R3, [R4, #0x1C] \n" 284 "LDR R1, [R6, #0x84] \n" 285 "LDR R2, [R6, #0x88] \n" 286 "ADD R0, SP, #0x60 \n" 287 "ADD R4, SP, #0xC \n" 288 "STMIA R4, {R0-R3} \n" 289 "MOV R3, #0 \n" 290 "MOV R1, #0x40 \n" 291 "STMEA SP, {R1,R3} \n" 292 "MOV R2, #0 \n" 293 "STR R3, [SP, #8] \n" 294 "LDR R3, =0xACCC4 \n" 295 "MOV R1, R2 \n" 296 "MOV R0, R2 \n" 297 "BL sub_FFA34C8C \n" 298 "loc_FF95B01C: \n" 299 "LDR R0, [R6, #0x18] \n" 300 "LDR R1, [R6, #0x60] \n" 301 "BL _TakeSemaphore \n" 302 "CMP R0, #9 \n" 303 "BEQ loc_FF95AFBC \n" 304 "LDR R0, [SP, #0x5C] \n" 305 "CMP R0, #0 \n" 306 "BEQ loc_FF95B044 \n" 307 "loc_FF95B03C: \n" 308 "MOV R1, #1 \n" 309 "B loc_FF95B2AC \n" 310 "loc_FF95B044:\n" 311 "LDR R0, [R6, #0xC] \n" 312 "MOV R4, #5 \n" 313 "CMP R0, #2 \n" 314 "MOV R0, #1 \n" 315 "BNE loc_FF95B090 \n" 316 "BL sub_FFA36010 \n" 317 "BL sub_FFA3602C \n" 318 "BL sub_FF84AEDC \n" 319 "MOV R0, #0 \n" 320 "BL sub_FF84AF00 \n" 321 "BL sub_FF84AF30 \n" 322 "STR R4, [R6, #0x44] \n" 323 "LDR R0, [R6, #0x64] \n" 324 "CMP R0, #1 \n" 325 "BLEQ sub_FFA3606C \n" 326 "BL sub_FF95BAD8 \n" 327 "BL sub_FF84AF8C \n" 328 "STR R10, [R6, #0x44] \n" 329 "B loc_FF95B09C \n" 330 "loc_FF95B090:\n" 331 "BL sub_FFA34D38 \n" 332 "BL sub_FFA34D80 \n" 333 "STR R4, [R6, #0x44] \n" 334 "loc_FF95B09C: \n" 335 "STR R8, [R6, #0x34] \n" 336 "B loc_FF95AE64 \n" 337 "loc_FF95B0A4: \n" 338 "CMP R5, #1 \n" 339 "BNE loc_FF95B348 \n" 340 "STR R10, [R6, #0x38] \n" 341 "LDR R0, [R6, #0x6C] \n" 342 "LDR R11, [R4, #0xC] \n" 343 "CMP R0, #0 \n" 344 "LDRNE R9, [SP, #0x58] \n" 345 "LDRNE R10, [SP, #0x54] \n" 346 "BNE loc_FF95B1CC \n" 347 "LDR R0, [R6, #0xC] \n" 348 "CMP R0, #2 \n" 349 "BNE loc_FF95B124 \n" 350 "LDR R0, =0xFF95AC78 \n" 351 "MOV R1, #0 \n" 352 "BL sub_FFA36048 \n" 353 "LDR R1, [R6, #0x64] \n" 354 "LDR R2, =0xACC64 \n" 355 "ADD R3, SP, #0x5C \n" 356 "ADD R0, SP, #0x30 \n" 357 "STRD R0, [SP, #0x10] \n" 358 "STRD R2, [SP, #0x18] \n" 359 "LDR R1, [R6, #0x84] \n" 360 "LDR R2, [R6, #0x88] \n" 361 "MVN R3, #0 \n" 362 "ADD R0, SP, #0x60 \n" 363 "STMEA SP, {R0-R3} \n" 364 "LDR R0, [SP, #0x58] \n" 365 "LDR R1, [SP, #0x54] \n" 366 "LDR R2, [SP, #0x50] \n" 367 "LDR R3, [SP, #0x4C] \n" 368 "BL sub_FFA35F9C \n" 369 "B loc_FF95B178 \n" 370 "loc_FF95B124:\n" 371 "LDR R0, [R4, #0x20] \n" 372 "LDR R2, [R6, #0x64] \n" 373 "ADD R3, SP, #0x5C \n" 374 "MVN R1, #0 \n" 375 "ADD R9, SP, #0x1C \n" 376 "STMIA R9, {R0-R3} \n" 377 "LDR R3, [R4, #0x1C] \n" 378 "LDR R1, [R6, #0x84] \n" 379 "LDR R2, [R6, #0x88] \n" 380 "ADD R0, SP, #0x60 \n" 381 "ADD R9, SP, #0xC \n" 382 "STMIA R9, {R0-R3} \n" 383 "LDR R1, [SP, #0x50] \n" 384 "LDR R2, [SP, #0x54] \n" 385 "LDR R3, [SP, #0x4C] \n" 386 "STMFA SP, {R1,R3} \n" 387 "STR R2, [SP] \n" 388 "LDMIB R4, {R0,R1} \n" 389 "LDR R3, [SP, #0x58] \n" 390 "MOV R2, R11 \n" 391 "BL sub_FFA34C8C \n" 392 "loc_FF95B178:\n" 393 "LDR R0, [R6, #0x18] \n" 394 "LDR R1, [R6, #0x60] \n" 395 "BL _TakeSemaphore \n" //RAM 396 "CMP R0, #9 \n" 397 "BEQ loc_FF95AFBC \n" 398 "LDR R0, [SP, #0x5C] \n" 399 "CMP R0, #0 \n" 400 "BNE loc_FF95B03C \n" 401 "LDR R0, [R6, #0xC] \n" 402 "CMP R0, #2 \n" 403 "MOV R0, #1 \n" 404 "BNE loc_FF95B1B0 \n" 405 "BL sub_FFA36010 \n" 406 "B loc_FF95B1B4 \n" 407 "loc_FF95B1B0: \n" 408 "BL sub_FFA34D38 \n" 409 "loc_FF95B1B4: \n" 410 "STR R8, [R6, #0xC4] \n" 411 "LDR R0, [SP, #0x60] \n" 412 "LDR R1, [SP, #0x58] \n" 413 "ADD R9, R1, R0 \n" 414 "LDR R1, [SP, #0x54] \n" 415 "SUB R10, R1, R0 \n" 416 "loc_FF95B1CC: \n" 417 "LDR R0, [R6, #0xC] \n" 418 "CMP R0, #2 \n" 419 "BNE loc_FF95B22C \n" 420 "LDR R0, =0xFF95A960 \n" 421 "MOV R1, #0 \n" 422 "BL sub_FFA36048 \n" 423 "LDR R1, [R6, #0x64] \n" 424 "LDR R2, =0xACC64 \n" 425 "ADD R0, SP, #0x30 \n" 426 "ADD R3, SP, #0x5C \n" 427 "STRD R0, [SP, #0x10] \n" 428 "STRD R2, [SP, #0x18] \n" 429 "LDR R1, [R6, #0x84] \n" 430 "LDR R2, [R6, #0x88] \n" 431 "LDR R3, [R6, #0x68] \n" 432 "ADD R0, SP, #0x60 \n" 433 "STMEA SP, {R0-R3} \n" 434 "LDR R2, [SP, #0x50] \n" 435 "LDR R3, [SP, #0x4C] \n" 436 "MOV R1, R10 \n" 437 "MOV R0, R9 \n" 438 "BL sub_FFA35F9C \n" 439 "BL sub_FF84AEB8 \n" 440 "B loc_FF95B27C \n" 441 "loc_FF95B22C:\n" 442 "LDR R0, [R4, #0x20] \n" 443 "LDR R1, [R6, #0x68] \n" 444 "LDR R2, [R6, #0x64] \n" 445 "ADD R3, SP, #0x5C \n" 446 "ADD R12, SP, #0x1C \n" 447 "STMIA R12, {R0-R3} \n" 448 "LDR R3, [R4, #0x1C] \n" 449 "LDR R1, [R6, #0x84] \n" 450 "LDR R2, [R6, #0x88] \n" 451 "ADD R0, SP, #0x60 \n" 452 "ADD R12, SP, #0xC \n" 453 "STMIA R12, {R0-R3} \n" 454 "LDR R2, [SP, #0x50] \n" 455 "LDR R3, [SP, #0x4C] \n" 456 "STMFA SP, {R2,R3} \n" 457 "STR R10, [SP] \n" 458 "LDMIB R4, {R0,R1} \n" 459 "MOV R3, R9 \n" 460 "MOV R2, R11 \n" 461 "BL sub_FFA34C8C \n" 462 "loc_FF95B27C: \n" 463 "LDR R0, [R6, #0x18] \n" 464 "LDR R1, [R6, #0x60] \n" 465 "BL _TakeSemaphore \n" //RAM 466 "CMP R0, #9 \n" 467 "BNE loc_FF95B29C \n" 468 "MOV R1, #0 \n" 469 "loc_FF95B294: \n" 470 "MOV R0, #0x90000 \n" 471 "B loc_FF95B2B0 \n" 472 "loc_FF95B29C:\n" 473 "LDR R0, [SP, #0x5C] \n" 474 "CMP R0, #0 \n" 475 "BEQ loc_FF95B2B8 \n" 476 "MOV R1, #0 \n" 477 "loc_FF95B2AC: \n" 478 "MOV R0, #0xA0000 \n" 479 "loc_FF95B2B0: \n" 480 "BL sub_FF95AC08 \n" 481 "B loc_FF95AE64 \n" 482 "loc_FF95B2B8: \n" 483 "LDR R0, [R6, #0xC] \n" 484 "CMP R0, #2 \n" 485 "MOV R0, #0 \n" 486 "BNE loc_FF95B2D0 \n" 487 "BL sub_FFA36010 \n" 488 "B loc_FF95B2D4 \n" 489 "loc_FF95B2D0: \n" 490 "BL sub_FFA34D38 \n" 491 "loc_FF95B2D4:\n" 492 "LDR R0, [SP, #0x58]\n" 493 "LDR R1, [SP, #0x60]\n" 494 "BL sub_FFA6AAF0\n" 495 "LDR R0, [R6, #0x68]\n" 496 "LDR R3, =0x6380\n" // <- 0x6380 497 "ADD R1, R0, #1\n" 498 "STR R1, [R6, #0x68] \n" 499 "LDR R0, [SP, #0x60] \n" 500 "SUB R2, R3, #4 \n" // <- -4 501 "BL sub_FFA68364 \n" 502 #if 0 503 "LDR R0, =0x637C \n" // added, 0x6380-0x4 504 "BL set_quality \n" // added 505 #endif 506 "LDR R0, [R6, #0x64] \n" 507 "CMP R0, #1 \n" 508 "BNE loc_FF95B348 \n" 509 "ADD R0, SP, #0x48 \n" 510 "BL sub_FFA360CC \n" 511 "LDR R1, =0xACC34 \n" 512 "LDR R0, [R1, #4] \n" 513 "LDR R1, [R1] \n" 514 "SUB R2, R0, #0x400 \n" 515 "SUBS R2, R2, #0x38 \n" 516 "ADDEQ R0, R0, #8 \n" 517 "MOV R1, R1, LSR #4 \n" 518 "MOV R0, R0, LSR #4 \n" 519 "MUL R1, R0, R1 \n" 520 "LDR R0, [SP, #0x48] \n" 521 "BL sub_003FC934 \n" //RAM 522 "LDR R1, =0xACC64 \n" 523 "STR R0, [SP, #0x48] \n" 524 "BL sub_FFA68694 \n" 525 "loc_FF95B348:\n" 526 "CMP R7, #1 \n" 527 "BNE loc_FF95B35C \n" 528 "loc_FF95B350: \n" 529 "BL sub_FF84AEDC \n" 530 "MOV R0, #1 \n" 531 "BL sub_FF84AF00 \n" 532 "loc_FF95B35C: \n" 533 "CMP R5, #1 \n" 534 "LDRNEH R0, [R6, #6] \n" 535 "CMPNE R0, #3 \n" 536 "BNE loc_FF95AE64 \n" 537 "LDR R0, [R6, #0x6C] \n" 538 "ADD R0, R0, #1 \n" 539 "STR R0, [R6, #0x6C] \n" 540 "LDRH R1, [R6, #6] \n" 541 "CMP R1, #3 \n" 542 "LDRNE R1, [R6, #0x54] \n" 543 "MULNE R0, R1, R0 \n" 544 "LDRNE R1, [R6, #0x50] \n" 545 "BNE loc_FF95B3AC \n" 546 "LDR R1, [R6, #0x58] \n" 547 "CMP R1, #0x19 \n" 548 "LDRNE R1, =0x3E9 \n" 549 "MOVEQ R1, #0x3E8 \n" 550 "MUL R0, R1, R0 \n" 551 "LDRNE R1, =0x1770 \n" 552 "LDREQ R1, =0x1388 \n" 553 "loc_FF95B3AC:\n" 554 "BL sub_003FC934 \n" //RAM 555 "MOV R4, R0 \n" 556 "BL sub_FFA6AE84 \n" 557 "LDR R0, [R6, #0x8C] \n" 558 "CMP R0, R4 \n" 559 "BNE loc_FF95B3D0 \n" 560 "LDR R0, [R6, #0x3C] \n" 561 "CMP R0, #1 \n" 562 "BNE loc_FF95B3E4 \n" 563 "loc_FF95B3D0:\n" 564 "LDR R1, [R6, #0x98] \n" 565 "MOV R0, R4 \n" 566 "BLX R1 \n" 567 "STR R4, [R6, #0x8C] \n" 568 "STR R8, [R6, #0x3C] \n" 569 "loc_FF95B3E4: \n" 570 "STR R8, [R6, #0x38] \n" 571 "B loc_FF95AE64 \n" 572 ); 573 */