| 1 | // IXUS120-SD940 fw 1.03B - rev 2 |
|---|
| 2 | #include "lolevel.h" |
|---|
| 3 | #include "platform.h" |
|---|
| 4 | #include "core.h" |
|---|
| 5 | #include "conf.h" |
|---|
| 6 | |
|---|
| 7 | static long *nrflag = (long*)0x6718; // @FF94244C SD940 103b |
|---|
| 8 | |
|---|
| 9 | #include "../../../generic/capt_seq.c" |
|---|
| 10 | |
|---|
| 11 | /*---------------------------------------------------------------------- |
|---|
| 12 | capt_seq_task() |
|---|
| 13 | -----------------------------------------------------------------------*/ |
|---|
| 14 | void __attribute__((naked,noinline)) capt_seq_task() { |
|---|
| 15 | asm volatile ( |
|---|
| 16 | " STMFD SP!, {R3-R9,LR}\n" |
|---|
| 17 | " LDR R6, =0x2988\n" |
|---|
| 18 | " LDR R4, =0x37B08\n" |
|---|
| 19 | " MOV R9, #1\n" |
|---|
| 20 | " MOV R7, #0\n" |
|---|
| 21 | "loc_FF872FA4:\n" |
|---|
| 22 | " LDR R0, [R6,#4]\n" |
|---|
| 23 | " MOV R2, #0\n" |
|---|
| 24 | " MOV R1, SP\n" |
|---|
| 25 | " BL sub_FF837DC8\n" |
|---|
| 26 | " TST R0, #1\n" |
|---|
| 27 | " BEQ loc_FF872FD0\n" |
|---|
| 28 | " LDR R1, =0x5B4\n" |
|---|
| 29 | " LDR R0, =0xFF872B20\n" |
|---|
| 30 | " BL sub_FF81E88C\n" |
|---|
| 31 | " BL sub_FF81E844\n" |
|---|
| 32 | " LDMFD SP!, {R3-R9,PC}\n" |
|---|
| 33 | "loc_FF872FD0:\n" |
|---|
| 34 | " LDR R0, [SP]\n" |
|---|
| 35 | " LDR R1, [R0]\n" |
|---|
| 36 | " CMP R1, #0x1D\n" |
|---|
| 37 | " ADDLS PC, PC, R1,LSL#2\n" |
|---|
| 38 | " B loc_FF87325C\n" |
|---|
| 39 | |
|---|
| 40 | "loc_FF872FE4: B loc_FF87305C\n" |
|---|
| 41 | "loc_FF872FE8: B loc_FF8730C0\n" |
|---|
| 42 | "loc_FF872FEC: B loc_FF8730FC\n" |
|---|
| 43 | "loc_FF872FF0: B loc_FF873110\n" |
|---|
| 44 | "loc_FF872FF4: B loc_FF873108\n" |
|---|
| 45 | "loc_FF872FF8: B loc_FF873118\n" |
|---|
| 46 | "loc_FF872FFC: B loc_FF873120\n" |
|---|
| 47 | "loc_FF873000: B loc_FF873128\n" |
|---|
| 48 | "loc_FF873004: B loc_FF873180\n" |
|---|
| 49 | "loc_FF873008: B loc_FF8731A8\n" |
|---|
| 50 | "loc_FF87300C: B loc_FF87318C\n" |
|---|
| 51 | "loc_FF873010: B loc_FF873198\n" |
|---|
| 52 | "loc_FF873014: B loc_FF8731A0\n" |
|---|
| 53 | "loc_FF873018: B loc_FF8731B0\n" |
|---|
| 54 | "loc_FF87301C: B loc_FF8731B8\n" |
|---|
| 55 | "loc_FF873020: B loc_FF8731C0\n" |
|---|
| 56 | "loc_FF873024: B loc_FF8731C8\n" |
|---|
| 57 | "loc_FF873028: B loc_FF8731D0\n" |
|---|
| 58 | "loc_FF87302C: B loc_FF8731DC\n" |
|---|
| 59 | "loc_FF873030: B loc_FF8731E4\n" |
|---|
| 60 | "loc_FF873034: B loc_FF8731EC\n" |
|---|
| 61 | "loc_FF873038: B loc_FF8731F4\n" |
|---|
| 62 | "loc_FF87303C: B loc_FF8731FC\n" |
|---|
| 63 | "loc_FF873040: B loc_FF873208\n" |
|---|
| 64 | "loc_FF873044: B loc_FF873210\n" |
|---|
| 65 | "loc_FF873048: B loc_FF873218\n" |
|---|
| 66 | "loc_FF87304C: B loc_FF873220\n" |
|---|
| 67 | "loc_FF873050: B loc_FF873228\n" |
|---|
| 68 | "loc_FF873054: B loc_FF873234\n" |
|---|
| 69 | "loc_FF873058: B loc_FF873268\n" |
|---|
| 70 | |
|---|
| 71 | "loc_FF87305C:\n" |
|---|
| 72 | " BL sub_FF8738E8\n" |
|---|
| 73 | " BL shooting_expo_param_override\n" // added |
|---|
| 74 | " BL sub_FF870DD8\n" |
|---|
| 75 | |
|---|
| 76 | // this code added to avoid some incorrect behavior if overrides are used. |
|---|
| 77 | // but it can cause some unexpected side effects. In this case, remove this code! |
|---|
| 78 | " MOV R0, #0\n" |
|---|
| 79 | " STR R0, [R4,#0x24]\n" // fixes overrides behavior at short shutter press |
|---|
| 80 | |
|---|
| 81 | " LDR R0, [R4,#0x24]\n" |
|---|
| 82 | " CMP R0, #0\n" |
|---|
| 83 | " BEQ loc_FF873268\n" |
|---|
| 84 | " BL sub_FF872800\n" |
|---|
| 85 | " MOV R5, R0\n" |
|---|
| 86 | " LDR R0, [R4,#0x24]\n" |
|---|
| 87 | " CMP R0, #0\n" |
|---|
| 88 | " BEQ loc_FF8730A4\n" |
|---|
| 89 | " MOV R0, #0xC\n" |
|---|
| 90 | " BL sub_FF877A2C\n" |
|---|
| 91 | " TST R0, #1\n" |
|---|
| 92 | " STRNE R9, [R6,#0x10]\n" |
|---|
| 93 | " LDRNE R0, [R5,#8]\n" |
|---|
| 94 | " ORRNE R0, R0, #0x40000000\n" |
|---|
| 95 | " STRNE R0, [R5,#8]\n" |
|---|
| 96 | " BNE loc_FF873268\n" |
|---|
| 97 | |
|---|
| 98 | "loc_FF8730A4:\n" |
|---|
| 99 | " MOV R0, R5\n" |
|---|
| 100 | " BL sub_FF872AA4\n" |
|---|
| 101 | " MOV R0, R5\n" |
|---|
| 102 | |
|---|
| 103 | //" BL sub_FF942438\n" |
|---|
| 104 | " BL sub_FF942438_my\n" // patched |
|---|
| 105 | |
|---|
| 106 | " TST R0, #1\n" |
|---|
| 107 | " STRNE R9, [R6,#0x10]\n" |
|---|
| 108 | " B loc_FF873268\n" |
|---|
| 109 | |
|---|
| 110 | "loc_FF8730C0:\n" |
|---|
| 111 | " LDR R0, [R4,#0x24]\n" |
|---|
| 112 | " CMP R0, #0\n" |
|---|
| 113 | " BNE loc_FF8730EC\n" |
|---|
| 114 | " MOV R0, #0xC\n" |
|---|
| 115 | " BL sub_FF877A2C\n" |
|---|
| 116 | " TST R0, #1\n" |
|---|
| 117 | " LDRNE R0, [SP]\n" |
|---|
| 118 | " MOVNE R1, #1\n" |
|---|
| 119 | " LDRNE R2, [R0,#0xC]\n" |
|---|
| 120 | " MOVNE R0, #1\n" |
|---|
| 121 | " BNE loc_FF873178\n" |
|---|
| 122 | |
|---|
| 123 | "loc_FF8730EC:\n" |
|---|
| 124 | " LDR R0, [SP]\n" |
|---|
| 125 | //" BL sub_FF873380\n" |
|---|
| 126 | " BL sub_FF873380_my\n" // patched |
|---|
| 127 | |
|---|
| 128 | "loc_FF8730F4:\n" |
|---|
| 129 | " STR R7, [R4,#0x24]\n" |
|---|
| 130 | " B loc_FF873268\n" |
|---|
| 131 | |
|---|
| 132 | "loc_FF8730FC:\n" |
|---|
| 133 | " MOV R0, #1\n" |
|---|
| 134 | " BL sub_FF873B3C\n" |
|---|
| 135 | " B loc_FF873268\n" |
|---|
| 136 | |
|---|
| 137 | "loc_FF873108:\n" |
|---|
| 138 | " BL sub_FF873528\n" |
|---|
| 139 | " B loc_FF8730F4\n" |
|---|
| 140 | |
|---|
| 141 | "loc_FF873110:\n" |
|---|
| 142 | " BL sub_FF8738C8\n" |
|---|
| 143 | " B loc_FF8730F4\n" |
|---|
| 144 | |
|---|
| 145 | "loc_FF873118:\n" |
|---|
| 146 | " BL sub_FF8738D0\n" |
|---|
| 147 | " B loc_FF873268\n" |
|---|
| 148 | |
|---|
| 149 | "loc_FF873120:\n" |
|---|
| 150 | " BL sub_FF873A5C\n" |
|---|
| 151 | " B loc_FF873184\n" |
|---|
| 152 | |
|---|
| 153 | "loc_FF873128:\n" |
|---|
| 154 | " LDR R5, [R0,#0xC]\n" |
|---|
| 155 | " BL sub_FF8738D8\n" |
|---|
| 156 | " MOV R0, R5\n" |
|---|
| 157 | " BL sub_FF941250\n" |
|---|
| 158 | " TST R0, #1\n" |
|---|
| 159 | " MOV R8, R0\n" |
|---|
| 160 | " BNE loc_FF873168\n" |
|---|
| 161 | " BL sub_FF884AE4\n" |
|---|
| 162 | " STR R0, [R5,#0x18]\n" |
|---|
| 163 | " MOV R0, R5\n" |
|---|
| 164 | " BL sub_FF942350\n" |
|---|
| 165 | " MOV R0, R5\n" |
|---|
| 166 | " BL sub_FF94274C\n" |
|---|
| 167 | " MOV R8, R0\n" |
|---|
| 168 | " LDR R0, [R5,#0x18]\n" |
|---|
| 169 | " BL sub_FF884CE8\n" |
|---|
| 170 | "loc_FF873168:\n" |
|---|
| 171 | " BL sub_FF8738C8\n" |
|---|
| 172 | " MOV R2, R5\n" |
|---|
| 173 | " MOV R1, #9\n" |
|---|
| 174 | " MOV R0, R8\n" |
|---|
| 175 | "loc_FF873178:\n" |
|---|
| 176 | " BL sub_FF8712C4\n" |
|---|
| 177 | " B loc_FF873268\n" |
|---|
| 178 | |
|---|
| 179 | "loc_FF873180:\n" |
|---|
| 180 | " BL sub_FF873ABC\n" |
|---|
| 181 | "loc_FF873184:\n" |
|---|
| 182 | " BL sub_FF870DD8\n" |
|---|
| 183 | " B loc_FF873268\n" |
|---|
| 184 | "loc_FF87318C:\n" |
|---|
| 185 | " LDR R0, [R4,#0x54]\n" |
|---|
| 186 | " BL sub_FF873EC8\n" |
|---|
| 187 | " B loc_FF873268\n" |
|---|
| 188 | "loc_FF873198:\n" |
|---|
| 189 | " BL sub_FF87417C\n" |
|---|
| 190 | " B loc_FF873268\n" |
|---|
| 191 | "loc_FF8731A0:\n" |
|---|
| 192 | " BL sub_FF874210\n" |
|---|
| 193 | " B loc_FF873268\n" |
|---|
| 194 | "loc_FF8731A8:\n" |
|---|
| 195 | " BL sub_FF8738C8\n" |
|---|
| 196 | " B loc_FF873268\n" |
|---|
| 197 | "loc_FF8731B0:\n" |
|---|
| 198 | " BL sub_FF941468\n" |
|---|
| 199 | " B loc_FF873268\n" |
|---|
| 200 | "loc_FF8731B8:\n" |
|---|
| 201 | " BL sub_FF94167C\n" |
|---|
| 202 | " B loc_FF873268\n" |
|---|
| 203 | "loc_FF8731C0:\n" |
|---|
| 204 | " BL sub_FF941714\n" |
|---|
| 205 | " B loc_FF873268\n" |
|---|
| 206 | "loc_FF8731C8:\n" |
|---|
| 207 | " BL sub_FF9417E4\n" |
|---|
| 208 | " B loc_FF873268\n" |
|---|
| 209 | "loc_FF8731D0:\n" |
|---|
| 210 | " MOV R0, #0\n" |
|---|
| 211 | " BL sub_FF941A34\n" |
|---|
| 212 | " B loc_FF873268\n" |
|---|
| 213 | "loc_FF8731DC:\n" |
|---|
| 214 | " BL sub_FF941B84\n" |
|---|
| 215 | " B loc_FF873268\n" |
|---|
| 216 | "loc_FF8731E4:\n" |
|---|
| 217 | " BL sub_FF941C14\n" |
|---|
| 218 | " B loc_FF873268\n" |
|---|
| 219 | "loc_FF8731EC:\n" |
|---|
| 220 | " BL sub_FF941CD4\n" |
|---|
| 221 | " B loc_FF873268\n" |
|---|
| 222 | "loc_FF8731F4:\n" |
|---|
| 223 | " BL sub_FF873CB4\n" |
|---|
| 224 | " B loc_FF873268\n" |
|---|
| 225 | "loc_FF8731FC:\n" |
|---|
| 226 | " BL sub_FF873D54\n" |
|---|
| 227 | " BL sub_FF835F18\n" |
|---|
| 228 | " B loc_FF873268\n" |
|---|
| 229 | "loc_FF873208:\n" |
|---|
| 230 | " BL sub_FF9418B0\n" |
|---|
| 231 | " B loc_FF873268\n" |
|---|
| 232 | "loc_FF873210:\n" |
|---|
| 233 | " BL sub_FF94191C\n" |
|---|
| 234 | " B loc_FF873268\n" |
|---|
| 235 | "loc_FF873218:\n" |
|---|
| 236 | " BL sub_FF8761DC\n" |
|---|
| 237 | " B loc_FF873268\n" |
|---|
| 238 | "loc_FF873220:\n" |
|---|
| 239 | " BL sub_FF876244\n" |
|---|
| 240 | " B loc_FF873268\n" |
|---|
| 241 | "loc_FF873228:\n" |
|---|
| 242 | " BL sub_FF8762A0\n" |
|---|
| 243 | " BL sub_FF876260\n" |
|---|
| 244 | " B loc_FF873268\n" |
|---|
| 245 | "loc_FF873234:\n" |
|---|
| 246 | " MOV R0, #1\n" |
|---|
| 247 | " BL sub_FF942F90\n" |
|---|
| 248 | " MOV R0, #1\n" |
|---|
| 249 | " BL sub_FF9430A0\n" |
|---|
| 250 | " LDRH R0, [R4,#0x98]\n" |
|---|
| 251 | " CMP R0, #4\n" |
|---|
| 252 | " BNE loc_FF873268\n" |
|---|
| 253 | " BL sub_FF876244\n" |
|---|
| 254 | " BL sub_FF876680\n" |
|---|
| 255 | " B loc_FF873268\n" |
|---|
| 256 | |
|---|
| 257 | "loc_FF87325C:\n" |
|---|
| 258 | " LDR R1, =0x709\n" |
|---|
| 259 | " LDR R0, =0xFF872B20\n" |
|---|
| 260 | " BL sub_FF81E88C\n" |
|---|
| 261 | |
|---|
| 262 | "loc_FF873268:\n" |
|---|
| 263 | " LDR R0, [SP]\n" |
|---|
| 264 | " LDR R1, [R0,#4]\n" |
|---|
| 265 | " LDR R0, [R6]\n" |
|---|
| 266 | " BL sub_FF87C7E8\n" |
|---|
| 267 | " LDR R5, [SP]\n" |
|---|
| 268 | " LDR R0, [R5,#8]\n" |
|---|
| 269 | " CMP R0, #0\n" |
|---|
| 270 | " LDREQ R1, =0x132\n" |
|---|
| 271 | " LDREQ R0, =0xFF872B20\n" |
|---|
| 272 | " BLEQ sub_FF81E88C\n" |
|---|
| 273 | " STR R7, [R5,#8]\n" |
|---|
| 274 | " B loc_FF872FA4\n" |
|---|
| 275 | ); |
|---|
| 276 | } |
|---|
| 277 | |
|---|
| 278 | |
|---|
| 279 | /*---------------------------------------------------------------------- |
|---|
| 280 | sub_FF942438_my() - capt_seq_task() |
|---|
| 281 | -----------------------------------------------------------------------*/ |
|---|
| 282 | void __attribute__((naked,noinline)) sub_FF942438_my(){ |
|---|
| 283 | asm volatile( |
|---|
| 284 | " STMFD SP!, {R0-R8,LR}\n" |
|---|
| 285 | " MOV R4, R0\n" |
|---|
| 286 | " BL sub_FF94328C\n" |
|---|
| 287 | " MVN R1, #0\n" |
|---|
| 288 | " BL sub_FF87C81C\n" |
|---|
| 289 | " LDR R5, =0x6718\n" |
|---|
| 290 | " LDR R0, [R5,#0xC]\n" |
|---|
| 291 | " CMP R0, #0\n" |
|---|
| 292 | " BNE loc_FF942488\n" |
|---|
| 293 | " MOV R1, #1\n" |
|---|
| 294 | " MOV R0, #0\n" |
|---|
| 295 | " BL sub_FF838610\n" |
|---|
| 296 | " STR R0, [R5,#0xC]\n" |
|---|
| 297 | " MOV R3, #0\n" |
|---|
| 298 | " STR R3, [SP]\n" |
|---|
| 299 | " LDR R3, =0xFF941DC4\n" |
|---|
| 300 | " LDR R0, =0xFF9426B4\n" |
|---|
| 301 | " MOV R2, #0x400\n" |
|---|
| 302 | " MOV R1, #0x17\n" |
|---|
| 303 | " BL sub_FF8385DC\n" |
|---|
| 304 | "loc_FF942488:\n" |
|---|
| 305 | " MOV R2, #4\n" |
|---|
| 306 | " ADD R1, SP, #0x08\n" |
|---|
| 307 | " MOV R0, #0x8A\n" |
|---|
| 308 | " BL sub_FF884954\n" |
|---|
| 309 | " TST R0, #1\n" |
|---|
| 310 | " LDRNE R1, =0x3C5\n" |
|---|
| 311 | " LDRNE R0, =0xFF94205C\n" |
|---|
| 312 | " BLNE sub_FF81E88C\n" |
|---|
| 313 | " LDR R6, =0x37BCC\n" |
|---|
| 314 | " LDR R8, =0x37B08\n" |
|---|
| 315 | " LDRSH R2, [R6,#0xC]\n" |
|---|
| 316 | " LDRSH R1, [R6,#0xE]\n" |
|---|
| 317 | " LDR R0, [R8,#0x8C]\n" |
|---|
| 318 | " BL sub_FF90B570\n" |
|---|
| 319 | " BL sub_FF85BC98\n" |
|---|
| 320 | " LDR R3, =0x6720\n" |
|---|
| 321 | " STRH R0, [R4,#0xA4]\n" |
|---|
| 322 | " SUB R2, R3, #4\n" |
|---|
| 323 | " STRD R2, [SP]\n" |
|---|
| 324 | " MOV R1, R0\n" |
|---|
| 325 | " LDRH R0, [R8,#0x5C]\n" |
|---|
| 326 | " LDRSH R2, [R6,#0xC]\n" |
|---|
| 327 | " SUB R3, R3, #8\n" |
|---|
| 328 | " BL sub_FF9448D0\n" |
|---|
| 329 | |
|---|
| 330 | "BL wait_until_remote_button_is_released\n" |
|---|
| 331 | "BL capt_seq_hook_set_nr\n" |
|---|
| 332 | |
|---|
| 333 | " B sub_FF9424E8\n" // go back to the ROM |
|---|
| 334 | ); |
|---|
| 335 | } |
|---|
| 336 | |
|---|
| 337 | |
|---|
| 338 | |
|---|
| 339 | /*---------------------------------------------------------------------- |
|---|
| 340 | sub_FF873380_my() - capt_seq_task() |
|---|
| 341 | -----------------------------------------------------------------------*/ |
|---|
| 342 | void __attribute__((naked,noinline)) sub_FF873380_my(){ |
|---|
| 343 | asm volatile( |
|---|
| 344 | " STMFD SP!, {R4-R6,LR}\n" |
|---|
| 345 | " LDR R4, [R0,#0xC]\n" |
|---|
| 346 | " LDR R6, =0x37B08\n" |
|---|
| 347 | " LDR R0, [R4,#8]\n" |
|---|
| 348 | " MOV R5, #0\n" |
|---|
| 349 | " ORR R0, R0, #1\n" |
|---|
| 350 | " STR R0, [R4,#8]\n" |
|---|
| 351 | " LDR R0, [R6,#0x24]\n" |
|---|
| 352 | " CMP R0, #0\n" |
|---|
| 353 | " MOVEQ R0, #2\n" |
|---|
| 354 | " BLEQ sub_FF86F4B8\n" |
|---|
| 355 | " BL sub_FF8738D8\n" |
|---|
| 356 | " LDR R0, [R6,#0x24]\n" |
|---|
| 357 | " CMP R0, #0\n" |
|---|
| 358 | " BNE loc_FF873448\n" |
|---|
| 359 | " MOV R0, #0\n" |
|---|
| 360 | " BL sub_FF942F90\n" |
|---|
| 361 | " MOV R0, #0\n" |
|---|
| 362 | " BL sub_FF9430A0\n" |
|---|
| 363 | " MOV R0, R4\n" |
|---|
| 364 | " BL sub_FF873C5C\n" |
|---|
| 365 | " MOV R0, R4\n" |
|---|
| 366 | " BL sub_FF940EA0\n" |
|---|
| 367 | " CMP R0, #0\n" |
|---|
| 368 | " BEQ loc_FF873410\n" |
|---|
| 369 | " BL sub_FF942FD0\n" |
|---|
| 370 | " BL sub_FF9430E4\n" |
|---|
| 371 | " BL sub_FF943134\n" |
|---|
| 372 | " MOV R0, R4\n" |
|---|
| 373 | " BL sub_FF940F84\n" |
|---|
| 374 | " TST R0, #1\n" |
|---|
| 375 | " MOVNE R2, R4\n" |
|---|
| 376 | " LDMNEFD SP!, {R4-R6,LR}\n" |
|---|
| 377 | " MOVNE R1, #1\n" |
|---|
| 378 | " BNE sub_FF8712C4\n" |
|---|
| 379 | " B loc_FF873424\n" |
|---|
| 380 | "loc_FF873410:\n" |
|---|
| 381 | " MOV R0, R4\n" |
|---|
| 382 | " BL sub_FF940F20\n" |
|---|
| 383 | " BL sub_FF942FD0\n" |
|---|
| 384 | " BL sub_FF9430E4\n" |
|---|
| 385 | " BL sub_FF943134\n" |
|---|
| 386 | "loc_FF873424:\n" |
|---|
| 387 | " MOV R0, R4\n" |
|---|
| 388 | " BL sub_FF872AA4\n" |
|---|
| 389 | " MOV R0, R4\n" |
|---|
| 390 | " BL sub_FF942350\n" |
|---|
| 391 | " BL sub_FF942DC8\n" |
|---|
| 392 | " MOV R0, R4\n" |
|---|
| 393 | |
|---|
| 394 | //" BL sub_FF942438\n" |
|---|
| 395 | " BL sub_FF942438_my\n" |
|---|
| 396 | |
|---|
| 397 | " MOV R5, R0\n" |
|---|
| 398 | " BL capt_seq_hook_raw_here\n" //----------->> |
|---|
| 399 | " B loc_FF873458\n" |
|---|
| 400 | // --------------------------------------------------------------------------- |
|---|
| 401 | |
|---|
| 402 | "loc_FF873448:\n" |
|---|
| 403 | " LDR R0, =0x2988\n" |
|---|
| 404 | " LDR R0, [R0,#0x10]\n" |
|---|
| 405 | " CMP R0, #0\n" |
|---|
| 406 | " MOVNE R5, #0x1D\n" |
|---|
| 407 | |
|---|
| 408 | "loc_FF873458:\n" |
|---|
| 409 | " BL sub_FF876244\n" |
|---|
| 410 | " BL sub_FF87628C\n" |
|---|
| 411 | " BL sub_FF8762CC\n" |
|---|
| 412 | " MOV R2, R4\n" |
|---|
| 413 | " MOV R1, #1\n" |
|---|
| 414 | " MOV R0, R5\n" |
|---|
| 415 | " BL sub_FF8712C4\n" |
|---|
| 416 | " BL sub_FF9426F0\n" |
|---|
| 417 | " CMP R0, #0\n" |
|---|
| 418 | " LDRNE R0, [R4,#8]\n" |
|---|
| 419 | " ORRNE R0, R0, #0x2000\n" |
|---|
| 420 | " STRNE R0, [R4,#8]\n" |
|---|
| 421 | " LDMFD SP!, {R4-R6,PC}\n" |
|---|
| 422 | ) ; |
|---|
| 423 | } |
|---|
| 424 | |
|---|
| 425 | |
|---|
| 426 | /*---------------------------------------------------------------------- |
|---|
| 427 | exp_drv_task() |
|---|
| 428 | -----------------------------------------------------------------------*/ |
|---|
| 429 | void __attribute__((naked,noinline)) exp_drv_task() { |
|---|
| 430 | asm volatile( |
|---|
| 431 | " STMFD SP!, {R4-R8,LR}\n" |
|---|
| 432 | " SUB SP, SP, #0x20\n" |
|---|
| 433 | " LDR R8, =0xBB8\n" |
|---|
| 434 | " LDR R7, =0x3C80\n" |
|---|
| 435 | " LDR R5, =0x3C760\n" |
|---|
| 436 | " MOV R0, #0\n" |
|---|
| 437 | " ADD R6, SP, #0x10\n" |
|---|
| 438 | " STR R0, [SP,#0x0C]\n" |
|---|
| 439 | "loc_FF8B2FA0:\n" |
|---|
| 440 | " LDR R0, [R7,#0x20]\n" |
|---|
| 441 | " MOV R2, #0\n" |
|---|
| 442 | " ADD R1, SP, #0x1C\n" |
|---|
| 443 | " BL sub_FF837DC8\n" |
|---|
| 444 | " LDR R0, [SP,#0x0C]\n" |
|---|
| 445 | " CMP R0, #1\n" |
|---|
| 446 | " BNE loc_FF8B2FEC\n" |
|---|
| 447 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 448 | " LDR R0, [R0]\n" |
|---|
| 449 | " CMP R0, #0x13\n" |
|---|
| 450 | " CMPNE R0, #0x14\n" |
|---|
| 451 | " CMPNE R0, #0x15\n" |
|---|
| 452 | " CMPNE R0, #0x16\n" |
|---|
| 453 | " BEQ loc_FF8B3108\n" |
|---|
| 454 | " CMP R0, #0x28\n" |
|---|
| 455 | " BEQ loc_FF8B30E0\n" |
|---|
| 456 | " ADD R1, SP, #0x0C\n" |
|---|
| 457 | " MOV R0, #0\n" |
|---|
| 458 | " BL sub_FF8B2F30\n" |
|---|
| 459 | "loc_FF8B2FEC:\n" |
|---|
| 460 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 461 | " LDR R1, [R0]\n" |
|---|
| 462 | " CMP R1, #0x2D\n" |
|---|
| 463 | " BNE loc_FF8B301C\n" |
|---|
| 464 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 465 | " BL sub_FF8B41F0\n" |
|---|
| 466 | " LDR R0, [R7,#0x1C]\n" |
|---|
| 467 | " MOV R1, #1\n" |
|---|
| 468 | " BL sub_FF87C7E8\n" |
|---|
| 469 | " BL sub_FF81E844\n" |
|---|
| 470 | " ADD SP, SP, #0x20\n" |
|---|
| 471 | " LDMFD SP!, {R4-R8,PC}\n" |
|---|
| 472 | "loc_FF8B301C:\n" |
|---|
| 473 | " CMP R1, #0x2C\n" |
|---|
| 474 | " BNE loc_FF8B3038\n" |
|---|
| 475 | " LDR R2, [R0,#0x8C]!\n" |
|---|
| 476 | " LDR R1, [R0,#4]\n" |
|---|
| 477 | " MOV R0, R1\n" |
|---|
| 478 | " BLX R2\n" |
|---|
| 479 | " B loc_FF8B3530\n" |
|---|
| 480 | "loc_FF8B3038:\n" |
|---|
| 481 | " CMP R1, #0x26\n" |
|---|
| 482 | " BNE loc_FF8B3088\n" |
|---|
| 483 | " LDR R0, [R7,#0x1C]\n" |
|---|
| 484 | " MOV R1, #0x80\n" |
|---|
| 485 | " BL sub_FF87C81C\n" |
|---|
| 486 | " LDR R0, =0xFF8AF690\n" |
|---|
| 487 | " MOV R1, #0x80\n" |
|---|
| 488 | " BL sub_FF936260\n" |
|---|
| 489 | " LDR R0, [R7,#0x1C]\n" |
|---|
| 490 | " MOV R2, R8\n" |
|---|
| 491 | " MOV R1, #0x80\n" |
|---|
| 492 | " BL sub_FF87C728\n" |
|---|
| 493 | " TST R0, #1\n" |
|---|
| 494 | " LDRNE R1, =0xE54\n" |
|---|
| 495 | " BNE loc_FF8B30CC\n" |
|---|
| 496 | "loc_FF8B3074:\n" |
|---|
| 497 | " LDR R1, [SP,#0x1C]\n" |
|---|
| 498 | " LDR R0, [R1,#0x90]\n" |
|---|
| 499 | " LDR R1, [R1,#0x8C]\n" |
|---|
| 500 | " BLX R1\n" |
|---|
| 501 | " B loc_FF8B3530\n" |
|---|
| 502 | "loc_FF8B3088:\n" |
|---|
| 503 | " CMP R1, #0x27\n" |
|---|
| 504 | " BNE loc_FF8B30D8\n" |
|---|
| 505 | " ADD R1, SP, #0xC\n" |
|---|
| 506 | " BL sub_FF8B2F30\n" |
|---|
| 507 | " LDR R0, [R7,#0x1C]\n" |
|---|
| 508 | " MOV R1, #0x100\n" |
|---|
| 509 | " BL sub_FF87C81C\n" |
|---|
| 510 | " LDR R0, =0xFF8AF6A0\n" |
|---|
| 511 | " MOV R1, #0x100\n" |
|---|
| 512 | " BL sub_FF9364E8\n" |
|---|
| 513 | " LDR R0, [R7,#0x1C]\n" |
|---|
| 514 | " MOV R2, R8\n" |
|---|
| 515 | " MOV R1, #0x100\n" |
|---|
| 516 | " BL sub_FF87C728\n" |
|---|
| 517 | " TST R0, #1\n" |
|---|
| 518 | " BEQ loc_FF8B3074\n" |
|---|
| 519 | " LDR R1, =0xE5E\n" |
|---|
| 520 | "loc_FF8B30CC:\n" |
|---|
| 521 | " LDR R0, =0xFF8AFD04\n" |
|---|
| 522 | " BL sub_FF81E88C\n" |
|---|
| 523 | " B loc_FF8B3074\n" |
|---|
| 524 | "loc_FF8B30D8:\n" |
|---|
| 525 | " CMP R1, #0x28\n" |
|---|
| 526 | " BNE loc_FF8B30F0\n" |
|---|
| 527 | "loc_FF8B30E0:\n" |
|---|
| 528 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 529 | " ADD R1, SP, #0x0C\n" |
|---|
| 530 | " BL sub_FF8B2F30\n" |
|---|
| 531 | " B loc_FF8B3074\n" |
|---|
| 532 | "loc_FF8B30F0:\n" |
|---|
| 533 | " CMP R1, #0x2B\n" |
|---|
| 534 | " BNE loc_FF8B3108\n" |
|---|
| 535 | " BL sub_FF8A31A0\n" |
|---|
| 536 | " BL sub_FF8A3DC4\n" |
|---|
| 537 | " BL sub_FF8A3918\n" |
|---|
| 538 | " B loc_FF8B3074\n" |
|---|
| 539 | "loc_FF8B3108:\n" |
|---|
| 540 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 541 | " MOV R4, #1\n" |
|---|
| 542 | " LDR R1, [R0]\n" |
|---|
| 543 | " CMP R1, #0x11\n" |
|---|
| 544 | " CMPNE R1, #0x12\n" |
|---|
| 545 | " BNE loc_FF8B3178\n" |
|---|
| 546 | " LDR R1, [R0,#0x7C]\n" |
|---|
| 547 | " ADD R1, R1, R1,LSL#1\n" |
|---|
| 548 | " ADD R1, R0, R1,LSL#2\n" |
|---|
| 549 | " SUB R1, R1, #8\n" |
|---|
| 550 | " LDMIA R1, {R2-R4}\n" |
|---|
| 551 | " STMIA R6, {R2-R4}\n" |
|---|
| 552 | " BL sub_FF8B1844\n" |
|---|
| 553 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 554 | " LDR R1, [R0,#0x7C]\n" |
|---|
| 555 | " LDR R3, [R0,#0x8C]\n" |
|---|
| 556 | " LDR R2, [R0,#0x90]\n" |
|---|
| 557 | " ADD R0, R0, #4\n" |
|---|
| 558 | " BLX R3\n" |
|---|
| 559 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 560 | " BL sub_FF8B45B0\n" |
|---|
| 561 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 562 | " LDR R1, [R0,#0x7C]\n" |
|---|
| 563 | " LDR R3, [R0,#0x94]\n" |
|---|
| 564 | " LDR R2, [R0,#0x98]\n" |
|---|
| 565 | " ADD R0, R0, #4\n" |
|---|
| 566 | " BLX R3\n" |
|---|
| 567 | " B loc_FF8B3470\n" |
|---|
| 568 | "loc_FF8B3178:\n" |
|---|
| 569 | " CMP R1, #0x13\n" |
|---|
| 570 | " CMPNE R1, #0x14\n" |
|---|
| 571 | " CMPNE R1, #0x15\n" |
|---|
| 572 | " CMPNE R1, #0x16\n" |
|---|
| 573 | " BNE loc_FF8B3230\n" |
|---|
| 574 | " ADD R3, SP, #0x0C\n" |
|---|
| 575 | " MOV R2, SP\n" |
|---|
| 576 | " ADD R1, SP, #0x10\n" |
|---|
| 577 | " BL sub_FF8B1B2C\n" |
|---|
| 578 | " CMP R0, #1\n" |
|---|
| 579 | " MOV R4, R0\n" |
|---|
| 580 | " CMPNE R4, #5\n" |
|---|
| 581 | " BNE loc_FF8B31CC\n" |
|---|
| 582 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 583 | " MOV R2, R4\n" |
|---|
| 584 | " LDR R1, [R0,#0x7C]!\n" |
|---|
| 585 | " LDR R12, [R0,#0x10]!\n" |
|---|
| 586 | " LDR R3, [R0,#4]\n" |
|---|
| 587 | " MOV R0, SP\n" |
|---|
| 588 | " BLX R12\n" |
|---|
| 589 | " B loc_FF8B3204\n" |
|---|
| 590 | "loc_FF8B31CC:\n" |
|---|
| 591 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 592 | " CMP R4, #2\n" |
|---|
| 593 | " LDR R3, [R0,#0x90]\n" |
|---|
| 594 | " CMPNE R4, #6\n" |
|---|
| 595 | " BNE loc_FF8B3218\n" |
|---|
| 596 | " LDR R12, [R0,#0x8C]\n" |
|---|
| 597 | " MOV R0, SP\n" |
|---|
| 598 | " MOV R2, R4\n" |
|---|
| 599 | " MOV R1, #1\n" |
|---|
| 600 | " BLX R12\n" |
|---|
| 601 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 602 | " MOV R2, SP\n" |
|---|
| 603 | " ADD R1, SP, #0x10\n" |
|---|
| 604 | " BL sub_FF8B2C44\n" |
|---|
| 605 | "loc_FF8B3204:\n" |
|---|
| 606 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 607 | " LDR R2, [SP,#0x0C]\n" |
|---|
| 608 | " MOV R1, R4\n" |
|---|
| 609 | " BL sub_FF8B2ED0\n" |
|---|
| 610 | " B loc_FF8B3470\n" |
|---|
| 611 | "loc_FF8B3218:\n" |
|---|
| 612 | " LDR R1, [R0,#0x7C]\n" |
|---|
| 613 | " LDR R12, [R0,#0x8C]\n" |
|---|
| 614 | " ADD R0, R0, #4\n" |
|---|
| 615 | " MOV R2, R4\n" |
|---|
| 616 | " BLX R12\n" |
|---|
| 617 | " B loc_FF8B3470\n" |
|---|
| 618 | "loc_FF8B3230:\n" |
|---|
| 619 | " CMP R1, #0x22\n" |
|---|
| 620 | " CMPNE R1, #0x23\n" |
|---|
| 621 | " BNE loc_FF8B327C\n" |
|---|
| 622 | " LDR R1, [R0,#0x7C]\n" |
|---|
| 623 | " ADD R1, R1, R1,LSL#1\n" |
|---|
| 624 | " ADD R1, R0, R1,LSL#2\n" |
|---|
| 625 | " SUB R1, R1, #8\n" |
|---|
| 626 | " LDMIA R1, {R2-R4}\n" |
|---|
| 627 | " STMIA R6, {R2-R4}\n" |
|---|
| 628 | " BL sub_FF8B0D94\n" |
|---|
| 629 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 630 | " LDR R1, [R0,#0x7C]\n" |
|---|
| 631 | " LDR R3, [R0,#0x8C]\n" |
|---|
| 632 | " LDR R2, [R0,#0x90]\n" |
|---|
| 633 | " ADD R0, R0, #4\n" |
|---|
| 634 | " BLX R3\n" |
|---|
| 635 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 636 | " BL sub_FF8B1088\n" |
|---|
| 637 | " B loc_FF8B3470\n" |
|---|
| 638 | "loc_FF8B327C:\n" |
|---|
| 639 | " ADD R1, R0, #4\n" |
|---|
| 640 | " LDMIA R1, {R2,R3,R12}\n" |
|---|
| 641 | " STMIA R6, {R2,R3,R12}\n" |
|---|
| 642 | " LDR R1, [R0]\n" |
|---|
| 643 | " CMP R1, #0x25\n" |
|---|
| 644 | " ADDLS PC, PC, R1,LSL#2\n" |
|---|
| 645 | " B loc_FF8B3450\n" |
|---|
| 646 | |
|---|
| 647 | "loc_FF8B3298: B loc_FF8B3330\n" |
|---|
| 648 | "loc_FF8B329C: B loc_FF8B3330\n" |
|---|
| 649 | "loc_FF8B32A0: B loc_FF8B3338\n" |
|---|
| 650 | "loc_FF8B32A4: B loc_FF8B3340\n" |
|---|
| 651 | "loc_FF8B32A8: B loc_FF8B3340\n" |
|---|
| 652 | "loc_FF8B32AC: B loc_FF8B3340\n" |
|---|
| 653 | "loc_FF8B32B0: B loc_FF8B3330\n" |
|---|
| 654 | "loc_FF8B32B4: B loc_FF8B3338\n" |
|---|
| 655 | "loc_FF8B32B8: B loc_FF8B3340\n" |
|---|
| 656 | "loc_FF8B32BC: B loc_FF8B3340\n" |
|---|
| 657 | "loc_FF8B32C0: B loc_FF8B3358\n" |
|---|
| 658 | "loc_FF8B32C4: B loc_FF8B3358\n" |
|---|
| 659 | "loc_FF8B32C8: B loc_FF8B3444\n" |
|---|
| 660 | "loc_FF8B32CC: B loc_FF8B344C\n" |
|---|
| 661 | "loc_FF8B32D0: B loc_FF8B344C\n" |
|---|
| 662 | "loc_FF8B32D4: B loc_FF8B344C\n" |
|---|
| 663 | "loc_FF8B32D8: B loc_FF8B344C\n" |
|---|
| 664 | "loc_FF8B32DC: B loc_FF8B3450\n" |
|---|
| 665 | "loc_FF8B32E0: B loc_FF8B3450\n" |
|---|
| 666 | "loc_FF8B32E4: B loc_FF8B3450\n" |
|---|
| 667 | "loc_FF8B32E8: B loc_FF8B3450\n" |
|---|
| 668 | "loc_FF8B32EC: B loc_FF8B3450\n" |
|---|
| 669 | "loc_FF8B32F0: B loc_FF8B3450\n" |
|---|
| 670 | "loc_FF8B32F4: B loc_FF8B3348\n" |
|---|
| 671 | "loc_FF8B32F8: B loc_FF8B3350\n" |
|---|
| 672 | "loc_FF8B32FC: B loc_FF8B3350\n" |
|---|
| 673 | "loc_FF8B3300: B loc_FF8B3364\n" |
|---|
| 674 | "loc_FF8B3304: B loc_FF8B3364\n" |
|---|
| 675 | "loc_FF8B3308: B loc_FF8B336C\n" |
|---|
| 676 | "loc_FF8B330C: B loc_FF8B339C\n" |
|---|
| 677 | "loc_FF8B3310: B loc_FF8B33CC\n" |
|---|
| 678 | "loc_FF8B3314: B loc_FF8B33FC\n" |
|---|
| 679 | "loc_FF8B3318: B loc_FF8B342C\n" |
|---|
| 680 | "loc_FF8B331C: B loc_FF8B342C\n" |
|---|
| 681 | "loc_FF8B3320: B loc_FF8B3450\n" |
|---|
| 682 | "loc_FF8B3324: B loc_FF8B3450\n" |
|---|
| 683 | "loc_FF8B3328: B loc_FF8B3434\n" |
|---|
| 684 | "loc_FF8B332C: B loc_FF8B343C\n" |
|---|
| 685 | |
|---|
| 686 | |
|---|
| 687 | "loc_FF8B3330:\n" |
|---|
| 688 | " BL sub_FF8AFBA8\n" |
|---|
| 689 | " B loc_FF8B3450\n" |
|---|
| 690 | |
|---|
| 691 | "loc_FF8B3338:\n" |
|---|
| 692 | " BL sub_FF8AFE30\n" |
|---|
| 693 | " B loc_FF8B3450\n" |
|---|
| 694 | |
|---|
| 695 | "loc_FF8B3340:\n" |
|---|
| 696 | " BL sub_FF8B0038\n" |
|---|
| 697 | " B loc_FF8B3450\n" |
|---|
| 698 | |
|---|
| 699 | "loc_FF8B3348:\n" |
|---|
| 700 | " BL sub_FF8B02B0\n" |
|---|
| 701 | " B loc_FF8B3450\n" |
|---|
| 702 | |
|---|
| 703 | "loc_FF8B3350:\n" |
|---|
| 704 | " BL sub_FF8B04A8\n" |
|---|
| 705 | " B loc_FF8B3450\n" |
|---|
| 706 | |
|---|
| 707 | "loc_FF8B3358:\n" |
|---|
| 708 | //" BL sub_FF8B0764\n" |
|---|
| 709 | " BL sub_FF8B0764_my\n" //----->>> |
|---|
| 710 | |
|---|
| 711 | " MOV R4, #0\n" |
|---|
| 712 | " B loc_FF8B3450\n" |
|---|
| 713 | |
|---|
| 714 | "loc_FF8B3364:\n" |
|---|
| 715 | " BL sub_FF8B08A4\n" |
|---|
| 716 | " B loc_FF8B3450\n" |
|---|
| 717 | |
|---|
| 718 | "loc_FF8B336C:\n" |
|---|
| 719 | " LDRH R1, [R0,#4]\n" |
|---|
| 720 | " STRH R1, [SP,#0x10]\n" |
|---|
| 721 | " LDRH R1, [R5,#2]\n" |
|---|
| 722 | " STRH R1, [SP,#0x12]\n" |
|---|
| 723 | " LDRH R1, [R5,#4]\n" |
|---|
| 724 | " STRH R1, [SP,#0x14]\n" |
|---|
| 725 | " LDRH R1, [R5,#6]\n" |
|---|
| 726 | " STRH R1, [SP,#0x16]\n" |
|---|
| 727 | " LDRH R1, [R0,#0xC]\n" |
|---|
| 728 | " STRH R1, [SP,#0x18]\n" |
|---|
| 729 | " BL sub_FF8B4264\n" |
|---|
| 730 | " B loc_FF8B3450\n" |
|---|
| 731 | |
|---|
| 732 | "loc_FF8B339C:\n" |
|---|
| 733 | " LDRH R1, [R0,#4]\n" |
|---|
| 734 | " STRH R1, [SP,#0x10]\n" |
|---|
| 735 | " LDRH R1, [R5,#2]\n" |
|---|
| 736 | " STRH R1, [SP,#0x12]\n" |
|---|
| 737 | " LDRH R1, [R5,#4]\n" |
|---|
| 738 | " STRH R1, [SP,#0x14]\n" |
|---|
| 739 | " LDRH R1, [R5,#6]\n" |
|---|
| 740 | " STRH R1, [SP,#0x16]\n" |
|---|
| 741 | " LDRH R1, [R5,#8]\n" |
|---|
| 742 | " STRH R1, [SP,#0x18]\n" |
|---|
| 743 | " BL sub_FF8B43C8\n" |
|---|
| 744 | " B loc_FF8B3450\n" |
|---|
| 745 | |
|---|
| 746 | "loc_FF8B33CC:\n" |
|---|
| 747 | " LDRH R1, [R5]\n" |
|---|
| 748 | " STRH R1, [SP,#0x10]\n" |
|---|
| 749 | " LDRH R1, [R0,#6]\n" |
|---|
| 750 | " STRH R1, [SP,#0x12]\n" |
|---|
| 751 | " LDRH R1, [R5,#4]\n" |
|---|
| 752 | " STRH R1, [SP,#0x14]\n" |
|---|
| 753 | " LDRH R1, [R5,#6]\n" |
|---|
| 754 | " STRH R1, [SP,#0x16]\n" |
|---|
| 755 | " LDRH R1, [R5,#8]\n" |
|---|
| 756 | " STRH R1, [SP,#0x18]\n" |
|---|
| 757 | " BL sub_FF8B4474\n" |
|---|
| 758 | " B loc_FF8B3450\n" |
|---|
| 759 | |
|---|
| 760 | "loc_FF8B33FC:\n" |
|---|
| 761 | " LDRH R1, [R5]\n" |
|---|
| 762 | " STRH R1, [SP,#0x10]\n" |
|---|
| 763 | " LDRH R1, [R5,#2]\n" |
|---|
| 764 | " STRH R1, [SP,#0x12]\n" |
|---|
| 765 | " LDRH R1, [R5,#4]\n" |
|---|
| 766 | " STRH R1, [SP,#0x14]\n" |
|---|
| 767 | " LDRH R1, [R5,#6]\n" |
|---|
| 768 | " STRH R1, [SP,#0x16]\n" |
|---|
| 769 | " LDRH R1, [R0,#0xC]\n" |
|---|
| 770 | " STRH R1, [SP,#0x18]\n" |
|---|
| 771 | " BL sub_FF8B4514\n" |
|---|
| 772 | " B loc_FF8B3450\n" |
|---|
| 773 | |
|---|
| 774 | "loc_FF8B342C:\n" |
|---|
| 775 | " BL sub_FF8B0BEC\n" |
|---|
| 776 | " B loc_FF8B3450\n" |
|---|
| 777 | |
|---|
| 778 | "loc_FF8B3434:\n" |
|---|
| 779 | " BL sub_FF8B118C\n" |
|---|
| 780 | " B loc_FF8B3450\n" |
|---|
| 781 | |
|---|
| 782 | "loc_FF8B343C:\n" |
|---|
| 783 | " BL sub_FF8B13C8\n" |
|---|
| 784 | " B loc_FF8B3450\n" |
|---|
| 785 | |
|---|
| 786 | "loc_FF8B3444:\n" |
|---|
| 787 | " BL sub_FF8B1544\n" |
|---|
| 788 | " B loc_FF8B3450\n" |
|---|
| 789 | |
|---|
| 790 | "loc_FF8B344C:\n" |
|---|
| 791 | " BL sub_FF8B16E0\n" |
|---|
| 792 | |
|---|
| 793 | "loc_FF8B3450:\n" |
|---|
| 794 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 795 | " LDR R1, [R0,#0x7C]\n" |
|---|
| 796 | " LDR R3, [R0,#0x8C]\n" |
|---|
| 797 | " LDR R2, [R0,#0x90]\n" |
|---|
| 798 | " ADD R0, R0, #4\n" |
|---|
| 799 | " BLX R3\n" |
|---|
| 800 | " CMP R4, #1\n" |
|---|
| 801 | " BNE loc_FF8B34B8\n" |
|---|
| 802 | |
|---|
| 803 | "loc_FF8B3470:\n" |
|---|
| 804 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 805 | " MOV R2, #0xC\n" |
|---|
| 806 | " LDR R1, [R0,#0x7C]\n" |
|---|
| 807 | " ADD R1, R1, R1,LSL#1\n" |
|---|
| 808 | " ADD R0, R0, R1,LSL#2\n" |
|---|
| 809 | " SUB R4, R0, #8\n" |
|---|
| 810 | " LDR R0, =0x3C760\n" |
|---|
| 811 | " ADD R1, SP, #0x10\n" |
|---|
| 812 | " BL sub_FFB077E8\n" |
|---|
| 813 | " LDR R0, =0x3C76C\n" |
|---|
| 814 | " MOV R2, #0xC\n" |
|---|
| 815 | " ADD R1, SP, #0x10\n" |
|---|
| 816 | " BL sub_FFB077E8\n" |
|---|
| 817 | " LDR R0, =0x3C778\n" |
|---|
| 818 | " MOV R2, #0xC\n" |
|---|
| 819 | " MOV R1, R4\n" |
|---|
| 820 | " BL sub_FFB077E8\n" |
|---|
| 821 | " B loc_FF8B3530\n" |
|---|
| 822 | "loc_FF8B34B8:\n" |
|---|
| 823 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 824 | " LDR R0, [R0]\n" |
|---|
| 825 | " CMP R0, #0xB\n" |
|---|
| 826 | " BNE loc_FF8B3500\n" |
|---|
| 827 | " MOV R3, #0\n" |
|---|
| 828 | " STR R3, [SP]\n" |
|---|
| 829 | " MOV R3, #1\n" |
|---|
| 830 | " MOV R2, #1\n" |
|---|
| 831 | " MOV R1, #1\n" |
|---|
| 832 | " MOV R0, #0\n" |
|---|
| 833 | " BL sub_FF8AF9B0\n" |
|---|
| 834 | " MOV R3, #0\n" |
|---|
| 835 | " STR R3, [SP]\n" |
|---|
| 836 | " MOV R3, #1\n" |
|---|
| 837 | " MOV R2, #1\n" |
|---|
| 838 | " MOV R1, #1\n" |
|---|
| 839 | " MOV R0, #0\n" |
|---|
| 840 | " B loc_FF8B352C\n" |
|---|
| 841 | "loc_FF8B3500:\n" |
|---|
| 842 | " MOV R3, #1\n" |
|---|
| 843 | " MOV R2, #1\n" |
|---|
| 844 | " MOV R1, #1\n" |
|---|
| 845 | " MOV R0, #1\n" |
|---|
| 846 | " STR R3, [SP]\n" |
|---|
| 847 | " BL sub_FF8AF9B0\n" |
|---|
| 848 | " MOV R3, #1\n" |
|---|
| 849 | " MOV R2, #1\n" |
|---|
| 850 | " MOV R1, #1\n" |
|---|
| 851 | " MOV R0, #1\n" |
|---|
| 852 | " STR R3, [SP]\n" |
|---|
| 853 | |
|---|
| 854 | "loc_FF8B352C:\n" |
|---|
| 855 | " BL sub_FF8AFAF0\n" |
|---|
| 856 | |
|---|
| 857 | "loc_FF8B3530:\n" |
|---|
| 858 | " LDR R0, [SP,#0x1C]\n" |
|---|
| 859 | " BL sub_FF8B41F0\n" |
|---|
| 860 | " B loc_FF8B2FA0\n" |
|---|
| 861 | ); |
|---|
| 862 | } |
|---|
| 863 | |
|---|
| 864 | |
|---|
| 865 | /*---------------------------------------------------------------------- |
|---|
| 866 | sub_FF8B0764_my() - exp_drv_task() |
|---|
| 867 | -----------------------------------------------------------------------*/ |
|---|
| 868 | void __attribute__((naked,noinline)) sub_FF8B0764_my(){ |
|---|
| 869 | asm volatile( |
|---|
| 870 | " STMFD SP!, {R4-R8,LR}\n" |
|---|
| 871 | " LDR R7, =0x3C80\n" |
|---|
| 872 | " MOV R4, R0\n" |
|---|
| 873 | " LDR R0, [R7,#0x1C]\n" |
|---|
| 874 | " MOV R1, #0x3E\n" |
|---|
| 875 | " BL sub_FF87C81C\n" |
|---|
| 876 | " LDRSH R0, [R4,#4]\n" |
|---|
| 877 | " MOV R2, #0\n" |
|---|
| 878 | " MOV R1, #0\n" |
|---|
| 879 | " BL sub_FF8AF714\n" |
|---|
| 880 | " MOV R6, R0\n" |
|---|
| 881 | " LDRSH R0, [R4,#6]\n" |
|---|
| 882 | " BL sub_FF8AF824\n" |
|---|
| 883 | " LDRSH R0, [R4,#8]\n" |
|---|
| 884 | " BL sub_FF8AF87C\n" |
|---|
| 885 | " LDRSH R0, [R4,#0xA]\n" |
|---|
| 886 | " BL sub_FF8AF8D4\n" |
|---|
| 887 | " LDRSH R0, [R4,#0xC]\n" |
|---|
| 888 | " MOV R1, #0\n" |
|---|
| 889 | " BL sub_FF8AF92C\n" |
|---|
| 890 | " MOV R5, R0\n" |
|---|
| 891 | " LDR R0, [R4]\n" |
|---|
| 892 | " LDR R8, =0x3C778\n" |
|---|
| 893 | " CMP R0, #0xB\n" |
|---|
| 894 | " MOVEQ R6, #0\n" |
|---|
| 895 | " MOVEQ R5, #0\n" |
|---|
| 896 | " BEQ loc_FF8B07F8\n" |
|---|
| 897 | " CMP R6, #1\n" |
|---|
| 898 | " BNE loc_FF8B07F8\n" |
|---|
| 899 | " LDRSH R0, [R4,#4]\n" |
|---|
| 900 | " LDR R1, =0xFF8AF680\n" |
|---|
| 901 | " MOV R2, #2\n" |
|---|
| 902 | " BL sub_FF9363B4\n" |
|---|
| 903 | " STRH R0, [R4,#4]\n" |
|---|
| 904 | " MOV R0, #0\n" |
|---|
| 905 | " STR R0, [R7,#0x28]\n" |
|---|
| 906 | " B loc_FF8B0800\n" |
|---|
| 907 | "loc_FF8B07F8:\n" |
|---|
| 908 | " LDRH R0, [R8]\n" |
|---|
| 909 | " STRH R0, [R4,#4]\n" |
|---|
| 910 | "loc_FF8B0800:\n" |
|---|
| 911 | " CMP R5, #1\n" |
|---|
| 912 | " LDRNEH R0, [R8,#8]\n" |
|---|
| 913 | " BNE loc_FF8B081C\n" |
|---|
| 914 | " LDRSH R0, [R4,#0xC]\n" |
|---|
| 915 | " LDR R1, =0xFF8AF704\n" |
|---|
| 916 | " MOV R2, #0x20\n" |
|---|
| 917 | " BL sub_FF8B4220\n" |
|---|
| 918 | "loc_FF8B081C:\n" |
|---|
| 919 | " STRH R0, [R4,#0xC]\n" |
|---|
| 920 | " LDRSH R0, [R4, #6] \n" |
|---|
| 921 | |
|---|
| 922 | //" BL sub_FF8A2F10\n" |
|---|
| 923 | " BL sub_FF8A2F10_my\n" //------------->>> |
|---|
| 924 | |
|---|
| 925 | " LDRSH R0, [R4,#8]\n" |
|---|
| 926 | " MOV R1, #1\n" |
|---|
| 927 | " BL sub_FF8A3660\n" |
|---|
| 928 | " MOV R1, #0\n" |
|---|
| 929 | " ADD R0, R4, #8\n" |
|---|
| 930 | " BL sub_FF8A36E8\n" |
|---|
| 931 | " LDRSH R0, [R4,#0xE]\n" |
|---|
| 932 | " BL sub_FF8AB1D4\n" |
|---|
| 933 | " LDR R4, =0xBB8\n" |
|---|
| 934 | " CMP R6, #1\n" |
|---|
| 935 | " BNE loc_FF8B0874\n" |
|---|
| 936 | " LDR R0, [R7,#0x1C]\n" |
|---|
| 937 | " MOV R2, R4\n" |
|---|
| 938 | " MOV R1, #2\n" |
|---|
| 939 | " BL sub_FF87C728\n" |
|---|
| 940 | " TST R0, #1\n" |
|---|
| 941 | " SUBNE R1, R4, #0x620\n" |
|---|
| 942 | " LDRNE R0, =0xFF8AFD04\n" |
|---|
| 943 | " BLNE sub_FF81E88C\n" |
|---|
| 944 | "loc_FF8B0874:\n" |
|---|
| 945 | " CMP R5, #1\n" |
|---|
| 946 | " LDMNEFD SP!, {R4-R8,PC}\n" |
|---|
| 947 | " LDR R0, [R7,#0x1C]\n" |
|---|
| 948 | " MOV R2, R4\n" |
|---|
| 949 | " MOV R1, #0x20\n" |
|---|
| 950 | " BL sub_FF87C728\n" |
|---|
| 951 | " TST R0, #1\n" |
|---|
| 952 | " LDRNE R1, =0x59D\n" |
|---|
| 953 | " LDRNE R0, =0xFF8AFD04\n" |
|---|
| 954 | " LDMNEFD SP!, {R4-R8,LR}\n" |
|---|
| 955 | " BNE sub_FF81E88C\n" |
|---|
| 956 | " LDMFD SP!, {R4-R8,PC}\n" |
|---|
| 957 | ); |
|---|
| 958 | } |
|---|
| 959 | |
|---|
| 960 | |
|---|
| 961 | /*---------------------------------------------------------------------- |
|---|
| 962 | sub_FF8A2F10_my() - exp_drv_task() |
|---|
| 963 | -----------------------------------------------------------------------*/ |
|---|
| 964 | void __attribute__((naked,noinline)) sub_FF8A2F10_my(){ |
|---|
| 965 | asm volatile( |
|---|
| 966 | " STMFD SP!, {R4-R6,LR}\n" |
|---|
| 967 | " LDR R5, =0x3998\n" |
|---|
| 968 | " MOV R4, R0\n" |
|---|
| 969 | " LDR R0, [R5,#4]\n" |
|---|
| 970 | " CMP R0, #1\n" |
|---|
| 971 | " LDRNE R1, =0x146\n" |
|---|
| 972 | " LDRNE R0, =0xFF8A2D14\n" |
|---|
| 973 | " BLNE sub_FF81E88C\n" |
|---|
| 974 | " CMN R4, #0xC00\n" |
|---|
| 975 | " LDREQSH R4, [R5,#2]\n" |
|---|
| 976 | " CMN R4, #0xC00\n" |
|---|
| 977 | " MOVEQ R1, #0x14C\n" |
|---|
| 978 | " LDREQ R0, =0xFF8A2D14\n" |
|---|
| 979 | " STRH R4, [R5,#2]\n" |
|---|
| 980 | " BLEQ sub_FF81E88C\n" |
|---|
| 981 | " MOV R0, R4\n" |
|---|
| 982 | |
|---|
| 983 | //" BL sub_FF9D53A0\n" // old??? apex2us |
|---|
| 984 | " BL apex2us\n" //--------------->> |
|---|
| 985 | |
|---|
| 986 | " MOV R4, R0\n" |
|---|
| 987 | //" BL nullsub_64\n" |
|---|
| 988 | " MOV R0, R4\n" |
|---|
| 989 | " BL sub_FF8DB784\n" |
|---|
| 990 | " TST R0, #1\n" |
|---|
| 991 | " LDRNE R1, =0x151\n" |
|---|
| 992 | " LDMNEFD SP!, {R4-R6,LR}\n" |
|---|
| 993 | " LDRNE R0, =0xFF8A2D14\n" |
|---|
| 994 | " BNE sub_FF81E88C\n" |
|---|
| 995 | " LDMFD SP!, {R4-R6,PC}\n" |
|---|
| 996 | ); |
|---|
| 997 | } |
|---|
| 998 | |
|---|
| 999 | |
|---|