Advertisement
Guest User

Untitled

a guest
Mar 12th, 2016
3,473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 186.64 KB | None | 0 0
  1. ; Processor : ARMB
  2. ; ARM architecture: metaarm
  3. ; Target assembler: Generic assembler for ARM
  4. ; Byte sex : Big endian
  5.  
  6. ; ===========================================================================
  7.  
  8. ; Segment type: Regular
  9. AREA NAND, DATA, ALIGN=0
  10. ; ORG 0xD010000
  11. NAND_CTRL % 4 ; DATA XREF: NAND_Read+2Eo
  12. ; SRAM:off_D4115E4o ...
  13. NAND_CONFIG % 4 ; DATA XREF: Main+27Co Main+27Ew ...
  14. NAND_ADDR1 % 4
  15. NAND_ADDR2 % 4 ; DATA XREF: sub_D4115EC+4Ao
  16. ; SRAM:off_D411760o
  17. NAND_DATABUF % 4 ; DATA XREF: NAND_Read+Co
  18. ; SRAM:off_D4115DCo ...
  19. NAND_ECCBUF % 4 ; DATA XREF: sub_D4115EC+74o
  20. ; SRAM:off_D411768o
  21. NAND_UNK1 % 4 ; DATA XREF: Main+28Ao Main+28Cw ...
  22. NAND_UNK2 % 4
  23. ; NAND ends
  24.  
  25. ; ===========================================================================
  26.  
  27. ; Segment type: Regular
  28. AREA AES, DATA, ALIGN=0
  29. ; ORG 0xD020000
  30. AES_CTRL % 4 ; DATA XREF: Main+52o Main+54w ...
  31. AES_SRC % 4 ; DATA XREF: Main+6Cw SRAM:0D411F76o ...
  32. AES_DEST % 4 ; DATA XREF: Main+70w
  33. AES_KEY % 4 ; DATA XREF: Main+58w Main+5Aw ...
  34. AES_IV_0 % 4 ; DATA XREF: Main+62w Main+64w ...
  35. ; AES ends
  36.  
  37. ; ===========================================================================
  38.  
  39. ; Segment type: Regular
  40. AREA SHA, DATA, ALIGN=0
  41. ; ORG 0xD030000
  42. SHA_CMD % 4 ; DATA XREF: Main+78o Main+7Aw ...
  43. SHA_SRC % 4 ; DATA XREF: Main+94w
  44. ; Update_HW_SHA+54o ...
  45. SHA_H0 % 4 ; DATA XREF: Main+7Ew
  46. ; Finale_HW_SHA+7Co ...
  47. SHA_H1 % 4 ; DATA XREF: Main+82w
  48. SHA_H2 % 4 ; DATA XREF: Main+86w
  49. ; SHA ends
  50.  
  51.  
  52. ; Segment type: Pure code
  53. AREA SRAM, CODE, READWRITE, ALIGN=0
  54. ; ORG 0xD400000
  55. CODE32
  56.  
  57. ; =============== S U B R O U T I N E =======================================
  58.  
  59.  
  60. Boot0_Start
  61. MOV R0, #0
  62. MCR p15, 0, R0,c7,c5, 0
  63. MCR p15, 0, R0,c7,c6, 0
  64. MRC p15, 0, R0,c1,c0, 0
  65. ORR R0, R0, #0x1000
  66. MCR p15, 0, R0,c1,c0, 0
  67. LDR R0, =dword_D413720
  68. LDR R1, =unk_D416C3C
  69. MOV R2, #0
  70. MOV R3, #4
  71. BL memset
  72. MOV R1, #0
  73. MOV R4, #0
  74. MOV R11, #0
  75. MOV R11, #0
  76. MOV LR, #0
  77. LDR SP, =StackStart ; StackEND
  78. LDR R2, =StackSize
  79. LDR R2, [R2]
  80. ADD SP, SP, R2
  81. LDR LR, =ExecuteBoot1
  82. LDR PC, =(Main+1)
  83.  
  84. ExecuteBoot1 ; DATA XREF: Boot0_Start+50o
  85. ; SRAM:off_D410134o
  86. MOV R1, R0
  87. MRC p15, 0, R0,c1,c0, 0
  88. BIC R0, R0, #0x1000
  89. MCR p15, 0, R0,c1,c0, 0
  90. MOV PC, R1
  91. ; End of function Boot0_Start
  92.  
  93. ; ---------------------------------------------------------------------------
  94.  
  95. HangLoop ; CODE XREF: SRAM:HangLoopj
  96. B HangLoop
  97.  
  98. ; =============== S U B R O U T I N E =======================================
  99.  
  100.  
  101. memset ; CODE XREF: Boot0_Start+28p memset+Cj
  102. CMP R0, R1
  103. BCS locret_D410120
  104. STR R2, [R0],R3
  105. B memset
  106. ; ---------------------------------------------------------------------------
  107.  
  108. locret_D410120 ; CODE XREF: memset+4j
  109. BX LR
  110. ; End of function memset
  111.  
  112. ; ---------------------------------------------------------------------------
  113. off_D410124 DCD dword_D413720 ; DATA XREF: Boot0_Start+18r
  114. off_D410128 DCD unk_D416C3C ; DATA XREF: Boot0_Start+1Cr
  115. off_D41012C DCD StackStart ; DATA XREF: Boot0_Start+40r
  116. ; StackEND
  117. off_D410130 DCD StackSize ; DATA XREF: Boot0_Start+44r
  118. off_D410134 DCD ExecuteBoot1 ; DATA XREF: Boot0_Start+50r
  119. off_D410138 DCD Main+1 ; DATA XREF: Boot0_Start+54r
  120. CODE16
  121.  
  122. ; =============== S U B R O U T I N E =======================================
  123.  
  124.  
  125. sub_D41013C ; CODE XREF: SRAM:0D4123E6p
  126.  
  127. varg_r0 = -0x10
  128. varg_r1 = -0xC
  129. varg_r2 = -8
  130. varg_r3 = -4
  131.  
  132. PUSH {R0-R3}
  133. MOVS R0, #0
  134. ADD SP, SP, #0x10
  135. BX LR
  136. ; End of function sub_D41013C
  137.  
  138.  
  139. ; =============== S U B R O U T I N E =======================================
  140.  
  141.  
  142. ; int __cdecl SendGPIODebugOut(unsigned __int8 Value)
  143. SendGPIODebugOut ; CODE XREF: CalcSHA_And_RSA:loc_D410226p
  144. ; Main+1Cp ...
  145. PUSH {LR}
  146. LDR R1, =HW_GPIO1OUT
  147. LDR R3, =0xFF00FFFF
  148. LDR R2, [R1]
  149. LSLS R0, R0, #0x18
  150. ANDS R3, R2
  151. LSRS R0, R0, #8
  152. ORRS R3, R0
  153. STR R3, [R1]
  154. MOVS R0, #1
  155. BL UDelay
  156. POP {R0}
  157. BX R0
  158. ; End of function SendGPIODebugOut
  159.  
  160. ; ---------------------------------------------------------------------------
  161. off_D410160 DCD HW_GPIO1OUT ; DATA XREF: SendGPIODebugOut+2r
  162. dword_D410164 DCD 0xFF00FFFF ; DATA XREF: SendGPIODebugOut+4r
  163.  
  164. ; =============== S U B R O U T I N E =======================================
  165.  
  166.  
  167. sub_D410168 ; CODE XREF: Main+210p Main+34Cp ...
  168. PUSH {R4-R6,LR}
  169. MOVS R5, R0
  170. MOVS R6, R1
  171. ADDS R4, R0, R1
  172. BL sub_D411CE8
  173. MOVS R0, R5
  174. SUBS R1, R6, #4
  175. BL sub_D411CAC
  176. SUBS R4, #4
  177. LDR R3, [R4]
  178. MOVS R2, #0
  179. CMP R3, R0
  180. BEQ loc_D41018E
  181.  
  182. loc_D410186 ; CODE XREF: sub_D410168+28j
  183. MOVS R0, R2
  184. POP {R4-R6}
  185. POP {R1}
  186. BX R1
  187. ; ---------------------------------------------------------------------------
  188.  
  189. loc_D41018E ; CODE XREF: sub_D410168+1Cj
  190. MOVS R2, #1
  191. B loc_D410186
  192. ; End of function sub_D410168
  193.  
  194. ; ---------------------------------------------------------------------------
  195. ALIGN 4
  196.  
  197. ; =============== S U B R O U T I N E =======================================
  198.  
  199.  
  200. CalcSHA_And_RSA ; CODE XREF: Main+5EAp Main+702p
  201.  
  202. var_20 = -0x20
  203.  
  204. PUSH {R4-R7,LR}
  205. MOV R7, R10
  206. MOV R6, R8
  207. PUSH {R6,R7}
  208. LDR R2, =dword_D4137C0
  209. LDR R3, =HW_TIMER
  210. MOVS R5, R0
  211. LDR R3, [R3]
  212. MOV R8, R2
  213. MOVS R0, R2
  214. MOVS R2, #0xC0
  215. SUB SP, SP, #4
  216. MOVS R7, R1
  217. LSLS R2, R2, #1
  218. ADDS R1, #0x20
  219. MOV R10, R3
  220. BL sub_D4132E0
  221. LDR R6, =word_D413940
  222. MOVS R3, #0x1A0
  223. ADDS R1, R7, R3
  224. MOVS R2, #0x60
  225. MOVS R0, R6
  226. BL sub_D4132E0
  227. LDR R4, =dword_D413B40
  228. MOVS R2, #512
  229. MOVS R1, #96
  230. ADDS R7, R7, R2 ; 0xD400512
  231. MOVS R0, R6
  232. MOVS R2, R4
  233. BL Calc_HW_SHA
  234. MOVS R3, #4
  235. MOV R2, R8
  236. STR R3, [SP,#0x20+var_20]
  237. MOVS R0, R4
  238. MOVS R1, R5
  239. ADDS R2, #4
  240. LDR R3, =RSA_Exponent
  241. BL sub_D412588
  242. CMP R0, #0
  243. BNE loc_D41023A
  244. LDRH R3, [R6]
  245. CMP R3, #0
  246. BNE loc_D410224
  247. MOVS R4, #0
  248. ADDS R0, R6, #0
  249.  
  250. loc_D4101FA ; CODE XREF: CalcSHA_And_RSA+72j
  251. ADDS R3, R4, R0
  252. LDRB R3, [R3,#(byte_D413942 - 0xD413940)]
  253. CMP R3, #0
  254. BNE loc_D4102D6
  255. ADDS R4, #1
  256. CMP R4, #1
  257. BLS loc_D4101FA
  258. MOVS R2, R0
  259. MOVS R4, #0
  260. ADDS R2, #0x28
  261. B loc_D410216
  262. ; ---------------------------------------------------------------------------
  263.  
  264. loc_D410210 ; CODE XREF: CalcSHA_And_RSA+8Aj
  265. ADDS R4, #1
  266. CMP R4, #0x37
  267. BHI loc_D41023E
  268.  
  269. loc_D410216 ; CODE XREF: CalcSHA_And_RSA+7Aj
  270. LDRB R3, [R2]
  271. LSLS R3, R3, #0x18
  272. ADDS R2, #1
  273. CMP R3, #0
  274. BEQ loc_D410210
  275. MOVS R0, #0xE4
  276. B loc_D410226
  277. ; ---------------------------------------------------------------------------
  278.  
  279. loc_D410224 ; CODE XREF: CalcSHA_And_RSA+60j
  280. MOVS R0, #0xE2 ; Value
  281.  
  282. loc_D410226 ; CODE XREF: CalcSHA_And_RSA+8Ej
  283. ; CalcSHA_And_RSA+A8j ...
  284. BL SendGPIODebugOut
  285. MOVS R0, #0
  286.  
  287. loc_D41022C ; CODE XREF: CalcSHA_And_RSA+140j
  288. ADD SP, SP, #4
  289. POP {R3,R4}
  290. MOV R8, R3
  291. MOV R10, R4
  292. POP {R4-R7}
  293. POP {R1}
  294. BX R1
  295. ; ---------------------------------------------------------------------------
  296.  
  297. loc_D41023A ; CODE XREF: CalcSHA_And_RSA+5Aj
  298. MOVS R0, #0xE1
  299. B loc_D410226
  300. ; ---------------------------------------------------------------------------
  301.  
  302. loc_D41023E ; CODE XREF: CalcSHA_And_RSA+80j
  303. LDR R2, =dword_D413764
  304. LDR R3, [R0,#8]
  305. LDR R2, [R2]
  306. CMP R3, R2
  307. BEQ loc_D41024C
  308. MOVS R0, #0xE5
  309. B loc_D410226
  310. ; ---------------------------------------------------------------------------
  311.  
  312. loc_D41024C ; CODE XREF: CalcSHA_And_RSA+B2j
  313. LDR R3, [R0,#4]
  314. CMP R3, #0x21
  315. BEQ loc_D41025A
  316. CMP R3, #0x22
  317. BEQ loc_D41027E
  318.  
  319. loc_D410256 ; CODE XREF: CalcSHA_And_RSA+CCj
  320. MOVS R0, #0xE7
  321. B loc_D410226
  322. ; ---------------------------------------------------------------------------
  323.  
  324. loc_D41025A ; CODE XREF: CalcSHA_And_RSA+BCj
  325. LDR R3, =HW_Time_Start
  326. LDR R3, [R3]
  327. CMP R3, #0
  328. BNE loc_D410256
  329. LDR R2, =dword_D413744
  330. LDR R3, [R0,#0x24]
  331. LDR R2, [R2]
  332. CMP R3, R2
  333. BNE loc_D4102DA
  334.  
  335. loc_D41026C ; CODE XREF: CalcSHA_And_RSA+F0j
  336. LDR R0, [R0,#0xC]
  337. LSRS R5, R0, #0xC
  338. CMP R5, #0
  339. BEQ loc_D41027A
  340. LDR R3, =0xFFF
  341. TST R0, R3
  342. BEQ loc_D41028A
  343.  
  344. loc_D41027A ; CODE XREF: CalcSHA_And_RSA+DEj
  345. MOVS R0, #0xE8
  346. B loc_D410226
  347. ; ---------------------------------------------------------------------------
  348.  
  349. loc_D41027E ; CODE XREF: CalcSHA_And_RSA+C0j
  350. LDR R3, =HW_Time_Start
  351. LDR R3, [R3]
  352. CMP R3, #1
  353. BEQ loc_D41026C
  354. MOVS R0, #0xE7
  355. B loc_D410226
  356. ; ---------------------------------------------------------------------------
  357.  
  358. loc_D41028A ; CODE XREF: CalcSHA_And_RSA+E4j
  359. LDR R0, =dword_D4139A0
  360. BL Init_HW_SHA
  361. CMP R5, #0
  362. BLS loc_D4102AE
  363. ADDS R4, R5, #0
  364.  
  365. loc_D410296 ; CODE XREF: CalcSHA_And_RSA+118j
  366. MOVS R2, #0x80
  367. MOVS R1, R7
  368. LDR R0, =dword_D4139A0
  369. LSLS R2, R2, #5
  370. BL Update_HW_SHA
  371. MOVS R3, #0x1000
  372. SUBS R4, #1
  373. ADDS R7, R7, R3
  374. CMP R4, #0
  375. BNE loc_D410296
  376.  
  377. loc_D4102AE ; CODE XREF: CalcSHA_And_RSA+FEj
  378. LDR R4, =dword_D413B40
  379. LDR R0, =dword_D4139A0
  380. MOVS R1, R4
  381. BL Finale_HW_SHA
  382. LDR R0, =dword_D413950
  383. MOVS R1, R4
  384. MOVS R2, #0x14
  385. BL sub_D411AF8
  386. CMP R0, #0
  387. BNE loc_D4102DE
  388. LDR R3, =HW_TIMER
  389. LDR R3, [R3]
  390. MOV R2, R10
  391. SUBS R3, R3, R2
  392. LDR R2, =0xD417FE8
  393. MOVS R0, R5
  394. STR R3, [R2]
  395. B loc_D41022C
  396. ; ---------------------------------------------------------------------------
  397.  
  398. loc_D4102D6 ; CODE XREF: CalcSHA_And_RSA+6Cj
  399. MOVS R0, #0xE3
  400. B loc_D410226
  401. ; ---------------------------------------------------------------------------
  402.  
  403. loc_D4102DA ; CODE XREF: CalcSHA_And_RSA+D6j
  404. MOVS R0, #0xE6
  405. B loc_D410226
  406. ; ---------------------------------------------------------------------------
  407.  
  408. loc_D4102DE ; CODE XREF: CalcSHA_And_RSA+130j
  409. MOVS R0, #0xE9
  410. B loc_D410226
  411. ; End of function CalcSHA_And_RSA
  412.  
  413. ; ---------------------------------------------------------------------------
  414. ALIGN 4
  415. off_D4102E4 DCD dword_D4137C0 ; DATA XREF: CalcSHA_And_RSA+8r
  416. off_D4102E8 DCD HW_TIMER ; DATA XREF: CalcSHA_And_RSA+Ar
  417. ; CalcSHA_And_RSA+132r
  418. off_D4102EC DCD word_D413940 ; DATA XREF: CalcSHA_And_RSA+24r
  419. off_D4102F0 DCD dword_D413B40 ; DATA XREF: CalcSHA_And_RSA+34r
  420. ; CalcSHA_And_RSA:loc_D4102AEr
  421. off_D4102F4 DCD RSA_Exponent ; DATA XREF: CalcSHA_And_RSA+52r
  422. off_D4102F8 DCD dword_D413764 ; DATA XREF: CalcSHA_And_RSA:loc_D41023Er
  423. off_D4102FC DCD HW_Time_Start ; DATA XREF: CalcSHA_And_RSA:loc_D41025Ar
  424. ; CalcSHA_And_RSA:loc_D41027Er
  425. off_D410300 DCD dword_D413744 ; DATA XREF: CalcSHA_And_RSA+CEr
  426. dword_D410304 DCD 0xFFF ; DATA XREF: CalcSHA_And_RSA+E0r
  427. off_D410308 DCD dword_D4139A0 ; DATA XREF: CalcSHA_And_RSA:loc_D41028Ar
  428. ; CalcSHA_And_RSA+106r ...
  429. off_D41030C DCD dword_D413950 ; DATA XREF: CalcSHA_And_RSA+124r
  430. dword_D410310 DCD 0xD417FE8 ; DATA XREF: CalcSHA_And_RSA+13Ar
  431.  
  432. ; =============== S U B R O U T I N E =======================================
  433.  
  434. ; PAGE = 0x1000
  435.  
  436. ; int __fastcall AES_Decrypt(unsigned __int8 *AESKey, unsigned __int8 *Buffer_IN, int BufferPagesCount)
  437. AES_Decrypt ; CODE XREF: Main+60Cp Main+71Cp
  438.  
  439. SetZeroIV = -0x18
  440.  
  441. PUSH {R4-R7,LR}
  442. LDR R3, =HW_TIMER
  443. SUB SP, SP, #4
  444. MOVS R4, R0
  445. MOVS R5, R1 ; R5 = Buffer_IN
  446. LDR R7, [R3]
  447. SUBS R6, R2, #0
  448. BNE loc_D41032C
  449.  
  450. return ; CODE XREF: AES_Decrypt+5Ej
  451. ADD SP, SP, #4
  452. POP {R4-R7}
  453. POP {R0}
  454. BX R0
  455. ; ---------------------------------------------------------------------------
  456.  
  457. loc_D41032C ; CODE XREF: AES_Decrypt+Ej
  458. MOVS R3, #0
  459. STR R3, [SP,#0x18+SetZeroIV] ; Set to 0 == No Zero IV
  460. LDR R0, =AES_Control_Buffer ; ControlBuffer
  461. LDR R3, =AES_IV ; IV
  462. MOVS R1, R4 ; AESKey
  463. MOVS R2, #0x10 ; AESKeyLen
  464. BL Init_HW_AES
  465. MOVS R3, #512
  466. ADDS R5, R5, R3 ; Buffer_IN + 0x200
  467. CMP R6, #0
  468. BLS Nothing_To_Decrypt
  469. ADDS R4, R6, #0
  470.  
  471. AES_Decrypt_Loop ; CODE XREF: AES_Decrypt+4Cj
  472. MOVS R2, #0x80
  473. MOVS R3, R5 ; AES_DEST_Buffer
  474. MOVS R1, R5 ; AES_SRC_Buffer
  475. LDR R0, =AES_Control_Buffer ; ControlBuffer
  476. LSLS R2, R2, #5 ; R2 == 0x1000 <- BufferSize
  477. BL AES_HW_Decrypt
  478. MOVS R3, #0x1000
  479. SUBS R4, #1 ; Decrease PageCount
  480. ADDS R5, R5, R3 ; Increase buffer by 0x1000
  481. CMP R4, #0
  482. BNE AES_Decrypt_Loop
  483.  
  484. Nothing_To_Decrypt ; CODE XREF: AES_Decrypt+30j
  485. LDR R0, =AES_Control_Buffer
  486. BL nullsub_1
  487. LDR R3, =HW_TIMER
  488. LDR R3, [R3]
  489. LDR R2, =HW_TIMER_Execution_Time
  490. SUBS R3, R3, R7
  491. STR R3, [R2]
  492. B return
  493. ; End of function AES_Decrypt
  494.  
  495. ; ---------------------------------------------------------------------------
  496. off_D410374 DCD HW_TIMER ; DATA XREF: AES_Decrypt+2r
  497. ; AES_Decrypt+54r
  498. ; unsigned __int8 *ControlBuffer
  499. ControlBuffer DCD AES_Control_Buffer ; DATA XREF: AES_Decrypt+1Cr
  500. ; AES_Decrypt+3Ar ...
  501. ; unsigned __int8 *IV
  502. IV DCD AES_IV ; DATA XREF: AES_Decrypt+1Er
  503. off_D410380 DCD HW_TIMER_Execution_Time ; DATA XREF: AES_Decrypt+58r
  504.  
  505. ; =============== S U B R O U T I N E =======================================
  506.  
  507.  
  508. Main ; CODE XREF: Boot0_Start+54j
  509. ; DATA XREF: Boot0_Start+54o ...
  510.  
  511. var_30 = -0x30
  512. var_2C = -0x2C
  513. var_28 = -0x28
  514.  
  515. ; FUNCTION CHUNK AT 0D41078C SIZE 00000336 BYTES
  516.  
  517. PUSH {R4-R7,LR}
  518. MOV R7, R11
  519. MOV R6, R10
  520. MOV R5, R9
  521. MOV R4, R8
  522. PUSH {R4-R7}
  523. LDR R3, =HW_TIMER
  524. LDR R3, [R3]
  525. MOV R10, R3
  526. LDR R3, =HW_Time_Start
  527. MOVS R7, #0
  528. SUB SP, SP, #0xC
  529. STR R7, [R3]
  530. MOVS R0, #0 ; Value
  531. BL SendGPIODebugOut
  532. LDR R2, =HW_BOOT0 ; Maps boot0
  533. MOVS R4, #0xC0
  534. LDR R3, [R2] ; Maps boot0
  535. LSLS R4, R4, #4
  536. ORRS R3, R4
  537. STR R3, [R2] ; Maps boot0
  538. SUBS R2, #0xB0
  539. LDR R1, [R2]
  540. MOVS R3, #0xFF0000
  541. ORRS R1, R3
  542. STR R1, [R2]
  543. ADDS R2, #8
  544. LDR R1, [R2]
  545. ORRS R1, R3
  546. STR R1, [R2]
  547. MOVS R0, #1 ; Value
  548. BL SendGPIODebugOut
  549. LDR R3, =HW_MEMMIRR
  550. MOVS R6, #7
  551. STR R6, [R3]
  552. MOVS R0, #2 ; Value
  553. BL SendGPIODebugOut
  554. LDR R3, =AES_CTRL
  555. STR R7, [R3] ; Set AES_Init to 0
  556. ADDS R3, #0xC
  557. STR R7, [R3]
  558. STR R7, [R3]
  559. STR R7, [R3]
  560. STR R7, [R3]
  561. ADDS R3, #4
  562. STR R7, [R3]
  563. STR R7, [R3]
  564. STR R7, [R3]
  565. STR R7, [R3]
  566. SUBS R3, #0xC
  567. STR R7, [R3]
  568. ADDS R3, #4
  569. STR R7, [R3]
  570. MOVS R0, #3 ; Value
  571. BL SendGPIODebugOut
  572. LDR R3, =SHA_CMD
  573. STR R7, [R3] ; Set SHA_Init to 0
  574. ADDS R3, #8
  575. STR R7, [R3]
  576. ADDS R3, #4
  577. STR R7, [R3]
  578. ADDS R3, #4
  579. STR R7, [R3]
  580. ADDS R3, #4
  581. STR R7, [R3]
  582. ADDS R3, #4
  583. STR R7, [R3]
  584. SUBS R3, #0x14
  585. MOVS R0, #4 ; Value
  586. STR R7, [R3]
  587. BL SendGPIODebugOut
  588. LDR R1, =dword_D8005B4
  589. LDR R3, =0xFFFFF3FF
  590. LDR R2, [R1]
  591. ANDS R3, R2
  592. ORRS R3, R4
  593. STR R3, [R1]
  594. BL Set_HW_OTP_Command_RD
  595. MOVS R0, #5 ; Value
  596. BL SendGPIODebugOut
  597. LDR R1, =HW_RESETS
  598. MOVS R3, #0x80
  599. LDR R2, [R1]
  600. LSLS R3, R3, #0xC
  601. ORRS R2, R3
  602. STR R2, [R1]
  603. MOVS R3, #0x80
  604. LDR R2, [R1]
  605. LSLS R3, R3, #0xB
  606. ORRS R2, R3
  607. STR R2, [R1]
  608. LDR R2, =HW_EXICTRL
  609. LDR R3, [R2]
  610. MOVS R5, #1
  611. ORRS R3, R5
  612. STR R3, [R2]
  613. MOVS R0, #8 ; Value
  614. BL SendGPIODebugOut
  615. LDR R0, =OTP_100
  616. MOV R8, R0
  617. MOV R1, R8 ; OutputBuffer
  618. MOVS R0, #0x20 ; FIELD = 80000100
  619. MOVS R2, #4 ; Length
  620.  
  621. loc_D410464
  622. BL Read_From_OTP
  623. LDR R4, =OTP_101
  624. MOVS R0, #0x21 ; Field = 80000101
  625. MOVS R1, R4 ; OutputBuffer
  626. MOVS R2, #4 ; Length
  627. BL Read_From_OTP
  628. LDR R2, =OTP_102
  629. MOVS R0, #0x22 ; Field = 80000102
  630. MOVS R1, R2 ; OutputBuffer
  631. MOV R9, R2
  632. MOVS R2, #4 ; Length
  633. BL Read_From_OTP
  634. LDR R3, =OTP_200
  635. MOVS R0, #40 ; Field = 80000200
  636. MOVS R1, R3 ; OutputBuffer
  637. MOVS R2, #16 ; Length
  638. MOV R11, R3
  639. BL Read_From_OTP
  640. LDR R1, =AES_Key_1 ; OutputBuffer
  641. MOVS R2, #16 ; Length
  642. MOVS R0, #0xE8 ; Field = 80000708
  643. BL Read_From_OTP
  644. MOVS R0, #9 ; Value
  645. BL SendGPIODebugOut
  646. LDR R4, [R4] ; R4 == OTP_101
  647. LDR R1, =Unknown_OTP_State_Value
  648. LSRS R3, R4, #0xF
  649. LDR R2, [R1]
  650. TST R3, R5 ; R5 == 1; Check if OTP_101 Bit 16 is set
  651. BEQ loc_D4104B8
  652. LDR R3, =0xFFFC7FFF
  653. ANDS R2, R3
  654. LSLS R3, R4, #0x11
  655. LSRS R3, R3, #0x1D
  656. LSLS R3, R3, #0xF
  657. ORRS R2, R3
  658.  
  659. loc_D4104B8 ; CODE XREF: Main+126j
  660. STR R2, [R1]
  661. LDR R1, =dword_D8001E4
  662. LSRS R3, R4, #3
  663. LDR R2, [R1]
  664. TST R3, R5
  665. BEQ loc_D4104CE
  666. LDR R3, =0xFFFC7FFF
  667. ANDS R6, R4
  668. ANDS R2, R3
  669. LSLS R3, R6, #0xF
  670. ORRS R2, R3
  671.  
  672. loc_D4104CE ; CODE XREF: Main+13Ej
  673. LSRS R3, R4, #7
  674. TST R3, R5
  675. BEQ loc_D4104E0
  676. LDR R3, =0xFFE3FFFF
  677. ANDS R2, R3
  678. LSLS R3, R4, #0x19
  679. LSRS R3, R3, #0x1D
  680. LSLS R3, R3, #0x12
  681. ORRS R2, R3
  682.  
  683. loc_D4104E0 ; CODE XREF: Main+14Ej
  684. LSRS R3, R4, #0xB
  685. TST R3, R5
  686. BEQ loc_D4104F2
  687. LDR R3, =0xFFFF8FFF
  688. ANDS R2, R3
  689. LSLS R3, R4, #0x15
  690. LSRS R3, R3, #0x1D
  691. LSLS R3, R3, #0xC
  692. ORRS R2, R3
  693.  
  694. loc_D4104F2 ; CODE XREF: Main+160j
  695. LSRS R3, R4, #0x13
  696. TST R3, R5
  697. BEQ loc_D410504
  698. LDR R3, =0xFF1FFFFF
  699. ANDS R2, R3
  700. LSLS R3, R4, #0xD
  701. LSRS R3, R3, #0x1D
  702. LSLS R3, R3, #0x15
  703. ORRS R2, R3
  704.  
  705. loc_D410504 ; CODE XREF: Main+172j
  706. STR R2, [R1]
  707. MOVS R0, #0xA ; Value
  708. BL SendGPIODebugOut
  709. MOV R2, R9
  710. LDR R0, [R2]
  711. CMP R0, #0
  712. BNE loc_D410516
  713. MOVS R0, #0xFA
  714.  
  715. loc_D410516 ; CODE XREF: Main+18Ej
  716. BL sub_D411774
  717. BL SetGPIO1OutputDirection
  718. MOVS R0, #0xB ; Value
  719. BL SendGPIODebugOut
  720. MOV R3, R8
  721. LDR R0, [R3]
  722. LSRS R3, R0, #0x1E
  723. TST R3, R5
  724. BEQ loc_D410530
  725. B loc_D4108DC
  726. ; ---------------------------------------------------------------------------
  727.  
  728. loc_D410530 ; CODE XREF: Main+1A8j
  729. CMP R0, #0
  730. BGE loc_D410536
  731. B loc_D4108B4
  732. ; ---------------------------------------------------------------------------
  733.  
  734. loc_D410536 ; CODE XREF: Main+1AEj
  735. LDR R3, =Dyn_AES_Key_Buffer
  736. MOVS R2, #0
  737. STR R2, [R3] ; Set D413B54 to 0
  738. LDR R3, =AES_Key_Ptr
  739. STR R2, [R3] ; set AES_KEY_Ptr to 0
  740. MOV R8, R2
  741.  
  742. loc_D410542 ; CODE XREF: Main+5AAj Main+5C0j
  743. LDR R3, =dword_D413B5C
  744. MOVS R0, #0xC ; Value
  745. STR R2, [R3] ; Set D413B5C = 0
  746. BL SendGPIODebugOut
  747. BL sub_D411C74
  748. MOVS R0, #0xD ; Value
  749. BL SendGPIODebugOut
  750. LDR R5, =Dyn_AES_Key_Buffer
  751. LDR R0, [R5] ; AESKey
  752. BL Set_HW_AESKey
  753. LDR R6, =word_D41378C
  754. MOVS R0, #0x1C
  755. MOVS R1, R6
  756. MOVS R2, #1
  757. BL AES_HW_Decrypt_0
  758. LDR R4, =word_D41379C
  759. MOVS R0, #0x1D
  760. MOVS R1, R4
  761. MOVS R2, #1
  762. BL AES_HW_Decrypt_0
  763. MOVS R1, R4
  764. MOVS R0, #0x1E
  765. ADDS R1, #0x10
  766. MOVS R2, #1
  767. BL AES_HW_Decrypt_0
  768. MOVS R0, #0xE ; Value
  769. BL SendGPIODebugOut
  770. LDR R3, [R5]
  771. CMP R3, #0
  772. BNE loc_D410590
  773. B loc_D4106CC
  774. ; ---------------------------------------------------------------------------
  775.  
  776. loc_D410590 ; CODE XREF: Main+208j
  777. MOVS R0, R6
  778. MOVS R1, #16
  779. BL sub_D410168
  780. CMP R0, #0
  781. BNE loc_D41059E
  782. B loc_D4108B0
  783. ; ---------------------------------------------------------------------------
  784.  
  785. loc_D41059E ; CODE XREF: Main+216j Main+354j ...
  786. LDR R1, =word_D41378C
  787. LDR R4, =dword_D413754
  788. LDRH R3, [R1]
  789. LDRH R2, [R1,#(word_D41378E - 0xD41378C)]
  790. STR R3, [R4]
  791. LDR R3, =dword_D413750
  792. STR R2, [R3]
  793. LDRH R3, [R1,#(word_D413790 - 0xD41378C)]
  794. LDRH R2, [R1,#(word_D413792 - 0xD41378C)]
  795. LSLS R3, R3, #0x10
  796. ADDS R3, R3, R2
  797. LDR R2, =dword_D41374C
  798. STR R3, [R2]
  799. LDRH R3, [R1,#(word_D413794 - 0xD41378C)]
  800. LDRH R2, [R1,#(word_D413796 - 0xD41378C)]
  801. LSLS R3, R3, #0x10
  802. ADDS R3, R3, R2
  803. LDR R2, =dword_D413748
  804. STR R3, [R2]
  805. LDR R3, =Dyn_AES_Key_Buffer
  806. LDR R2, [R3]
  807. CMP R2, #0
  808. BEQ loc_D4105CE
  809. B loc_D410814
  810. ; ---------------------------------------------------------------------------
  811.  
  812. loc_D4105CE ; CODE XREF: Main+246j
  813. LDR R3, =dword_D413744
  814. STR R2, [R3]
  815. LDR R3, =dword_D413740
  816. STR R2, [R3]
  817.  
  818. loc_D4105D6 ; CODE XREF: Main+4D4j
  819. LDR R2, [R4]
  820. LDR R3, =0x3FF
  821. MOVS R0, R2
  822. ANDS R0, R3
  823. BEQ loc_D4105E2
  824. B loc_D41080C
  825. ; ---------------------------------------------------------------------------
  826.  
  827. loc_D4105E2 ; CODE XREF: Main+25Aj Main+48Ej
  828. MOVS R6, #1
  829. LSLS R3, R2, #0x10
  830. BPL loc_D4105EA
  831. B loc_D4107EE
  832. ; ---------------------------------------------------------------------------
  833.  
  834. loc_D4105EA ; CODE XREF: Main+262j Main+486j
  835. MOVS R0, #0x13 ; Value
  836. BL SendGPIODebugOut
  837. LDR R0, =dword_D413750
  838. LDR R1, [R0]
  839. LSRS R3, R1, #0xE
  840. MOV R9, R0
  841. TST R3, R6
  842. BEQ loc_D410604
  843. LDR R3, =dword_D41374C
  844. LDR R2, [R3]
  845. LDR R3, =NAND_CONFIG
  846. STR R2, [R3]
  847.  
  848. loc_D410604 ; CODE XREF: Main+276j
  849. LSRS R3, R1, #0xD
  850. TST R3, R6
  851. BEQ loc_D410612
  852. LDR R3, =dword_D413748
  853. LDR R2, [R3]
  854. LDR R3, =NAND_UNK1
  855. STR R2, [R3]
  856.  
  857. loc_D410612 ; CODE XREF: Main+284j
  858. LDR R2, =dword_D413740
  859. LDR R3, [R2]
  860. LSRS R0, R3, #0xC
  861. MOV R11, R2
  862. CMP R0, #0
  863. BEQ loc_D410620
  864. MOVS R0, #1
  865.  
  866. loc_D410620 ; CODE XREF: Main+298j
  867. BL NAND_Read
  868. CMP R0, #0
  869. BEQ loc_D41062A
  870. B loc_D41078C
  871. ; ---------------------------------------------------------------------------
  872.  
  873. loc_D41062A ; CODE XREF: Main+2A2j
  874. MOVS R7, #0xDA
  875.  
  876. loc_D41062C ; CODE XREF: Main+468j Main+56Ej ...
  877. MOVS R0, #0x1B ; Value
  878. BL SendGPIODebugOut
  879. LDR R3, =dword_D413754
  880. LDR R2, [R3]
  881. MOVS R3, #0x7C00
  882. MOVS R0, R2
  883. ANDS R0, R3
  884. BEQ loc_D410654
  885. LDR R6, =HW_TIMER
  886. LDR R5, =0x2710
  887. LSRS R4, R0, #0xA
  888.  
  889. loc_D410646 ; CODE XREF: Main+2CEj
  890. MOVS R0, R4
  891. MULS R0, R5
  892. BL sub_D412060
  893. LDR R3, [R6]
  894. CMP R3, R0 ; Compare HW_TIMER with result
  895. BCC loc_D410646
  896.  
  897. loc_D410654 ; CODE XREF: Main+2BAj
  898. MOVS R0, #0x1C ; Value
  899. BL SendGPIODebugOut
  900. LDR R1, =HW_RESETS
  901. MOVS R3, #0x80
  902. LDR R2, [R1]
  903. LSLS R3, R3, #9
  904. ORRS R2, R3
  905. STR R2, [R1]
  906. BL Init_EXI_Register
  907. MOVS R0, #0x1D ; Value
  908. BL SendGPIODebugOut
  909. ADD R0, SP, #0x30+var_28
  910. BL sub_D410D78
  911. CMP R0, #0
  912. BEQ loc_D410682
  913. LDR R3, [SP,#0x30+var_28]
  914. LSLS R0, R3, #0x14
  915. BPL loc_D410682
  916. B loc_D4108E8
  917. ; ---------------------------------------------------------------------------
  918.  
  919. loc_D410682 ; CODE XREF: Main+2F4j Main+2FAj
  920. LDR R2, =HW_Time_Start
  921.  
  922. loc_D410684 ; CODE XREF: Main+56Aj
  923. LDR R3, [R2]
  924. CMP R3, #1
  925. BNE loc_D41068C
  926. B loc_D410996
  927. ; ---------------------------------------------------------------------------
  928.  
  929. loc_D41068C ; CODE XREF: Main+304j
  930. CMP R7, #0
  931. BEQ loc_D410692
  932. B loc_D410AA6
  933. ; ---------------------------------------------------------------------------
  934.  
  935. loc_D410692 ; CODE XREF: Main+30Aj Main+6F2j ...
  936. MOVS R0, #0x25 ; Value
  937. BL SendGPIODebugOut
  938. MOVS R1, #0 ; Unknown
  939. MOVS R2, #16 ; AES Key Len
  940. LDR R0, =AES_Key_1 ; Buffer
  941. BL CheckBuffer_Maybe
  942. MOVS R1, #0 ; Unknown
  943. MOVS R2, #0x10 ; BufferLen
  944. LDR R0, =OTP_200 ; Buffer
  945. BL CheckBuffer_Maybe
  946. LDR R3, =HW_TIMER
  947. LDR R3, [R3]
  948. MOV R0, R10
  949. SUBS R3, R3, R0 ; ExecutionTime = HW_TIMER_END - HW_TIMER_START
  950. LDR R2, =ExecutionTime
  951. LDR R0, =dword_D400200
  952. ADD SP, SP, #0xC
  953. STR R3, [R2]
  954. POP {R3-R6}
  955. MOV R8, R3
  956. MOV R9, R4
  957. MOV R10, R5
  958. MOV R11, R6
  959. POP {R4-R7}
  960. POP {R1}
  961. BX R1
  962. ; ---------------------------------------------------------------------------
  963.  
  964. loc_D4106CC ; CODE XREF: Main+20Aj
  965. MOVS R0, R6
  966. MOVS R1, #0x10
  967. BL sub_D410168
  968. CMP R0, #0
  969. BEQ loc_D4106DA
  970. B loc_D41059E
  971. ; ---------------------------------------------------------------------------
  972.  
  973. loc_D4106DA ; CODE XREF: Main+352j
  974. LDRH R3, [R6,#(word_D413798 - 0xD41378C)]
  975. CMP R3, #0
  976. BNE loc_D4106E8
  977. LDRH R3, [R6,#(word_D41379A - 0xD41378C)]
  978. CMP R3, #0
  979. BNE loc_D4106E8
  980. B loc_D41059E
  981. ; ---------------------------------------------------------------------------
  982.  
  983. loc_D4106E8 ; CODE XREF: Main+35Aj Main+360j
  984. MOVS R0, R6 ; Buffer
  985. MOVS R1, #0 ; Unknown
  986. MOVS R2, #0x10 ; BufferLen
  987. BL CheckBuffer_Maybe
  988. B loc_D41059E
  989. ; End of function Main
  990.  
  991. ; ---------------------------------------------------------------------------
  992. off_D4106F4 DCD HW_TIMER ; DATA XREF: Main+Cr Main+2BCr ...
  993. off_D4106F8 DCD HW_Time_Start ; DATA XREF: Main+12r
  994. ; Main:loc_D410682r
  995. off_D4106FC DCD HW_BOOT0 ; DATA XREF: Main+20r
  996. ; Maps boot0
  997. off_D410700 DCD HW_MEMMIRR ; DATA XREF: Main+46r
  998. off_D410704 DCD AES_CTRL ; DATA XREF: Main+52r
  999. off_D410708 DCD SHA_CMD ; DATA XREF: Main+78r
  1000. off_D41070C DCD dword_D8005B4 ; DATA XREF: Main+9Ar
  1001. dword_D410710 DCD 0xFFFFF3FF ; DATA XREF: Main+9Cr
  1002. off_D410714 DCD HW_RESETS ; DATA XREF: Main+B0r Main+2D6r
  1003. off_D410718 DCD HW_EXICTRL ; DATA XREF: Main+C6r
  1004. ; unsigned __int8 *OutputBuffer
  1005. OutputBuffer DCD OTP_100 ; DATA XREF: Main+D6r
  1006. ; unsigned __int8 *off_D410720
  1007. off_D410720 DCD OTP_101 ; DATA XREF: Main+E4r
  1008. ; unsigned __int8 *off_D410724
  1009. off_D410724 DCD OTP_102 ; DATA XREF: Main+F0r
  1010. ; unsigned __int8 *off_D410728
  1011. off_D410728 DCD OTP_200 ; DATA XREF: Main+FEr Main+322r
  1012. ; unsigned __int8 *AESKey
  1013. AESKey DCD AES_Key_1 ; DATA XREF: Main+10Cr Main+318r
  1014. off_D410730 DCD Unknown_OTP_State_Value ; DATA XREF: Main+11Er
  1015. dword_D410734 DCD 0xFFFC7FFF ; DATA XREF: Main+128r Main+140r
  1016. off_D410738 DCD dword_D8001E4 ; DATA XREF: Main+136r
  1017. dword_D41073C DCD 0xFFE3FFFF ; DATA XREF: Main+150r
  1018. dword_D410740 DCD 0xFFFF8FFF ; DATA XREF: Main+162r
  1019. dword_D410744 DCD 0xFF1FFFFF ; DATA XREF: Main+174r
  1020. off_D410748 DCD Dyn_AES_Key_Buffer ; DATA XREF: Main:loc_D410536r
  1021. ; Main+1D2r ...
  1022. off_D41074C DCD AES_Key_Ptr ; DATA XREF: Main+1B8r
  1023. off_D410750 DCD dword_D413B5C ; DATA XREF: Main:loc_D410542r
  1024. off_D410754 DCD word_D41378C ; DATA XREF: Main+1DAr
  1025. ; Main:loc_D41059Er
  1026. off_D410758 DCD word_D41379C ; DATA XREF: Main+1E6r
  1027. off_D41075C DCD dword_D413754 ; DATA XREF: Main+21Cr Main+2AEr
  1028. off_D410760 DCD dword_D413750 ; DATA XREF: Main+224r Main+26Cr
  1029. off_D410764 DCD dword_D41374C ; DATA XREF: Main+230r Main+278r
  1030. off_D410768 DCD dword_D413748 ; DATA XREF: Main+23Cr Main+286r
  1031. off_D41076C DCD dword_D413744 ; DATA XREF: Main:loc_D4105CEr
  1032. off_D410770 DCD dword_D413740 ; DATA XREF: Main+24Er
  1033. ; Main:loc_D410612r
  1034. dword_D410774 DCD 0x3FF ; DATA XREF: Main+254r
  1035. off_D410778 DCD NAND_CONFIG ; DATA XREF: Main+27Cr
  1036. off_D41077C DCD NAND_UNK1 ; DATA XREF: Main+28Ar
  1037. dword_D410780 DCD 0x2710 ; DATA XREF: Main+2BEr
  1038. off_D410784 DCD ExecutionTime ; DATA XREF: Main+330r
  1039. off_D410788 DCD dword_D400200 ; DATA XREF: Main+332r
  1040. ; ---------------------------------------------------------------------------
  1041. ; START OF FUNCTION CHUNK FOR Main
  1042.  
  1043. loc_D41078C ; CODE XREF: Main+2A4j
  1044. MOVS R0, #0x14 ; Value
  1045. BL SendGPIODebugOut
  1046. LDR R3, =HW_TIMER
  1047. LDR R5, [R3]
  1048. LDR R3, =HW_Time_Start
  1049. LDR R3, [R3]
  1050. CMP R3, #0
  1051. BEQ loc_D4107A0
  1052. B loc_D4108E4
  1053. ; ---------------------------------------------------------------------------
  1054.  
  1055. loc_D4107A0 ; CODE XREF: Main+418j
  1056. MOVS R0, #0x15 ; Value
  1057. BL SendGPIODebugOut
  1058. MOVS R0, #0
  1059. BL CheckBoot0_Maybe
  1060. MOV R2, R9
  1061. MOV R0, R11
  1062. LDR R3, [R2]
  1063. LDR R1, [R0]
  1064. LSRS R3, R3, #0xF
  1065. MOVS R0, #dword_D400000
  1066. LSLS R1, R1, #6
  1067. MOVS R2, #1
  1068. ANDS R3, R6
  1069. BL sub_D4115EC
  1070. CMP R0, #0
  1071. BNE loc_D4107CA
  1072. B loc_D4108F0
  1073. ; ---------------------------------------------------------------------------
  1074.  
  1075. loc_D4107CA ; CODE XREF: Main+442j
  1076. LDR R4, =word_D413940
  1077. MOVS R2, #0x60
  1078. MOVS R0, R4
  1079. LDR R1, =unk_D4001A0
  1080. BL sub_D4132E0
  1081. LDR R3, [R4,#(dword_D41394C - 0xD413940)]
  1082. LDR R0, =0x9FF
  1083. ADDS R4, R3, R0
  1084. LDR R3, =0xFFFFF800
  1085. ANDS R4, R3
  1086. LDR R3, =0xF7FF
  1087. SUBS R2, R4, #1
  1088. CMP R2, R3
  1089. BHI loc_D4107EA
  1090. B loc_D4108F4
  1091. ; ---------------------------------------------------------------------------
  1092.  
  1093. loc_D4107EA ; CODE XREF: Main+462j
  1094. MOVS R7, #0xD6
  1095. B loc_D41062C
  1096. ; ---------------------------------------------------------------------------
  1097.  
  1098. loc_D4107EE ; CODE XREF: Main+264j
  1099. MOVS R0, #0x10 ; Value
  1100. BL SendGPIODebugOut
  1101. LDR R4, =dword_D80047C
  1102. MOVS R3, #0x1000
  1103. STR R3, [R4]
  1104. LDR R3, =dword_D8005BC
  1105. MOVS R2, #3
  1106. STR R2, [R3]
  1107. BL sub_D4132E8
  1108. MOVS R3, #0
  1109. STR R3, [R4]
  1110. B loc_D4105EA
  1111. ; ---------------------------------------------------------------------------
  1112.  
  1113. loc_D41080C ; CODE XREF: Main+25Cj
  1114. BL sub_D41203C
  1115. LDR R2, [R4]
  1116. B loc_D4105E2
  1117. ; ---------------------------------------------------------------------------
  1118.  
  1119. loc_D410814 ; CODE XREF: Main+248j
  1120. MOVS R0, #0xF ; Value
  1121. BL SendGPIODebugOut
  1122. LDR R6, =word_D41379C
  1123. MOVS R1, #0x10
  1124. MOVS R0, R6
  1125. BL sub_D410168
  1126. MOVS R4, R6
  1127. ADDS R4, #0x10
  1128. MOVS R5, R0
  1129. MOVS R1, #0x10
  1130. MOVS R0, R4
  1131. BL sub_D410168
  1132. CMP R5, #0
  1133. BEQ loc_D41085A
  1134. CMP R0, #0
  1135. BEQ loc_D410842
  1136. LDRH R2, [R6]
  1137. LDRH R3, [R6,#(word_D4137AC - 0xD41379C)]
  1138. CMP R2, R3
  1139. BCC loc_D41085E
  1140.  
  1141. loc_D410842 ; CODE XREF: Main+4B4j
  1142. MOVS R2, #0
  1143.  
  1144. loc_D410844 ; CODE XREF: Main+4DCj
  1145. LDR R3, =word_D41379C
  1146. LSLS R2, R2, #4
  1147. ADDS R2, R2, R3
  1148. LDRH R1, [R2]
  1149. LDR R3, =dword_D413744
  1150. LDRH R2, [R2,#(word_D41379E - 0xD41379C)]
  1151. STR R1, [R3]
  1152. LDR R4, =dword_D413754
  1153. LDR R3, =dword_D413740
  1154. STR R2, [R3]
  1155. B loc_D4105D6
  1156. ; ---------------------------------------------------------------------------
  1157.  
  1158. loc_D41085A ; CODE XREF: Main+4B0j
  1159. CMP R0, #0
  1160. BEQ loc_D410862
  1161.  
  1162. loc_D41085E ; CODE XREF: Main+4BCj
  1163. MOVS R2, #1
  1164. B loc_D410844
  1165. ; ---------------------------------------------------------------------------
  1166.  
  1167. loc_D410862 ; CODE XREF: Main+4D8j
  1168. MOVS R0, #0xC4 ; Value
  1169.  
  1170. loc_D410864 ; CODE XREF: Main+52Ej Main+556j ...
  1171. BL SendGPIODebugOut
  1172.  
  1173. loc_D410868 ; CODE XREF: Main+70Aj
  1174. MOVS R1, #0 ; Unknown
  1175. MOVS R2, #16 ; BufferLen
  1176. LDR R0, =AES_Key_1 ; Buffer
  1177. BL CheckBuffer_Maybe
  1178. LDR R0, =OTP_200 ; Buffer
  1179. MOVS R1, #0 ; Unknown
  1180. MOVS R2, #16 ; BufferLen
  1181. BL CheckBuffer_Maybe
  1182. MOV R3, R8
  1183. LSLS R5, R3, #0x18
  1184.  
  1185. loc_D410880 ; CODE XREF: Main+52Aj
  1186. LDR R3, =HW_GPIO1OUT
  1187. LSRS R0, R5, #0x18
  1188. LDR R4, [R3]
  1189. BL SendGPIODebugOut
  1190. LDR R0, =500000
  1191. BL UDelay
  1192. LDR R3, =HW_Time_Start
  1193. LSLS R4, R4, #8
  1194. LDRB R0, [R3,#(HW_Time_Start+3 - 0xD413768)] ; Value
  1195. BL SendGPIODebugOut
  1196. LSRS R4, R4, #0x18
  1197. LDR R0, =500000
  1198. BL UDelay
  1199. MOVS R0, R4 ; Value
  1200. BL SendGPIODebugOut
  1201. LDR R0, =500000
  1202. BL UDelay
  1203. B loc_D410880
  1204. ; ---------------------------------------------------------------------------
  1205.  
  1206. loc_D4108B0 ; CODE XREF: Main+218j
  1207. MOVS R0, #0xC3
  1208. B loc_D410864
  1209. ; ---------------------------------------------------------------------------
  1210.  
  1211. loc_D4108B4 ; CODE XREF: Main+1B0j
  1212. LDR R1, =dword_D800510
  1213. LDR R2, =0xDFFFFFFF
  1214. LDR R3, [R1]
  1215. ANDS R3, R2
  1216. MOVS R2, #1
  1217. MOV R8, R2
  1218. MOVS R2, #0xC0
  1219. STR R3, [R1]
  1220. LSLS R2, R2, #0x15
  1221. MOVS R3, #0x80
  1222. ANDS R2, R0
  1223. LSLS R3, R3, #0x14
  1224. CMP R2, R3
  1225. BEQ loc_D410930
  1226. MOVS R3, #0x10000000
  1227. CMP R2, R3
  1228. BEQ loc_D41091A
  1229. MOVS R0, #0xC2
  1230. B loc_D410864
  1231. ; ---------------------------------------------------------------------------
  1232.  
  1233. loc_D4108DC ; CODE XREF: Main+1AAj
  1234. MOVS R0, #2
  1235. MOV R8, R0
  1236. MOVS R0, #0xC1
  1237. B loc_D410864
  1238. ; ---------------------------------------------------------------------------
  1239.  
  1240. loc_D4108E4 ; CODE XREF: Main+41Aj
  1241. MOVS R0, #0xD5
  1242. B loc_D410864
  1243. ; ---------------------------------------------------------------------------
  1244.  
  1245. loc_D4108E8 ; CODE XREF: Main+2FCj
  1246. LDR R2, =HW_Time_Start
  1247. MOVS R3, #1
  1248. STR R3, [R2]
  1249. B loc_D410684
  1250. ; ---------------------------------------------------------------------------
  1251.  
  1252. loc_D4108F0 ; CODE XREF: Main+444j
  1253. MOVS R7, #0xD1
  1254. B loc_D41062C
  1255. ; ---------------------------------------------------------------------------
  1256.  
  1257. loc_D4108F4 ; CODE XREF: Main+464j
  1258. MOVS R0, #0
  1259. BL CheckBoot0_Maybe
  1260. MOV R0, R9
  1261. MOV R2, R11
  1262. LDR R3, [R0]
  1263. LDR R1, [R2]
  1264. LSRS R3, R3, #0xF
  1265. MOVS R0, #dword_D400000
  1266. LSLS R1, R1, #6
  1267. LSRS R2, R4, #0xB
  1268. ANDS R3, R6
  1269. BL sub_D4115EC
  1270. CMP R0, #0
  1271. BNE loc_D410946
  1272. MOVS R7, #0xD7
  1273. B loc_D41062C
  1274. ; ---------------------------------------------------------------------------
  1275.  
  1276. loc_D41091A ; CODE XREF: Main+552j
  1277. LDR R3, =dword_D413764
  1278. MOVS R2, #2
  1279. STR R2, [R3]
  1280. LDR R2, =OTP_200
  1281. LDR R3, =Dyn_AES_Key_Buffer
  1282. STR R2, [R3]
  1283. LDR R2, =AES_Key_1
  1284. LDR R3, =AES_Key_Ptr
  1285. STR R2, [R3]
  1286. LDR R2, =RSA_PUB_1
  1287. B loc_D410542
  1288. ; ---------------------------------------------------------------------------
  1289.  
  1290. loc_D410930 ; CODE XREF: Main+54Aj
  1291. LDR R3, =dword_D413764
  1292. MOV R0, R8
  1293. STR R0, [R3]
  1294. LDR R3, =Dyn_AES_Key_Buffer
  1295. MOV R2, R11
  1296. STR R2, [R3]
  1297. LDR R0, =AES_Key_1
  1298. LDR R3, =AES_Key_Ptr
  1299. LDR R2, =RSA_PUB_0
  1300. STR R0, [R3]
  1301. B loc_D410542
  1302. ; ---------------------------------------------------------------------------
  1303.  
  1304. loc_D410946 ; CODE XREF: Main+590j
  1305. LDR R2, =HW_TIMER
  1306. LDR R3, [R2]
  1307. LDR R2, =dword_D417FE4
  1308. SUBS R3, R3, R5
  1309. STR R3, [R2]
  1310. MOVS R0, #0x18 ; Value
  1311. BL SendGPIODebugOut
  1312. LDR R3, =Dyn_AES_Key_Buffer
  1313. LDR R3, [R3]
  1314. CMP R3, #0
  1315. BNE loc_D410960
  1316. B loc_D41062C
  1317. ; ---------------------------------------------------------------------------
  1318.  
  1319. loc_D410960 ; CODE XREF: Main+5D8j
  1320. MOVS R0, #0x19 ; Value
  1321. BL SendGPIODebugOut
  1322. LDR R3, =dword_D413B5C
  1323. MOVS R1, #0xD4
  1324. LDR R0, [R3]
  1325. LSLS R1, R1, #0x14 ; R1 == 0xD400000
  1326. BL CalcSHA_And_RSA
  1327. SUBS R4, R0, #0
  1328. BNE DecryptBuffer
  1329. LDR R3, =HW_GPIO1OUT
  1330. LDR R3, [R3]
  1331. LSLS R3, R3, #8
  1332. LSRS R7, R3, #0x18
  1333. B loc_D41062C
  1334. ; ---------------------------------------------------------------------------
  1335.  
  1336. DecryptBuffer ; CODE XREF: Main+5F0j
  1337. MOVS R0, #0x1A ; Value
  1338. BL SendGPIODebugOut
  1339. LDR R3, =AES_Key_Ptr
  1340. MOVS R1, #0xD4
  1341. LDR R0, [R3] ; AESKey
  1342. LSLS R1, R1, #0x14 ; R1 == 0xD400000
  1343. MOVS R2, R4 ; BufferPagesCount
  1344. BL AES_Decrypt ; PAGE = 0x1000
  1345. B loc_D41062C
  1346. ; ---------------------------------------------------------------------------
  1347.  
  1348. loc_D410996 ; CODE XREF: Main+306j
  1349. MOVS R0, #0x1E ; Value
  1350. BL SendGPIODebugOut
  1351. LDR R3, =HW_GPIO1INTENABLE
  1352. LDR R1, =0xBFFFFFFF
  1353. LDR R0, [R3]
  1354. ANDS R0, R1
  1355. STR R0, [R3]
  1356. LDR R2, =HW_GPIO1DIR
  1357. MOVS R3, #0x80
  1358. LDR R0, [R2]
  1359. LSLS R3, R3, #0x17
  1360. ORRS R0, R3
  1361. STR R0, [R2]
  1362. SUBS R2, #8
  1363. LDR R0, [R2]
  1364. ORRS R0, R3
  1365. STR R0, [R2]
  1366. LDR R3, =HW_GPIO1OUT
  1367. LDR R0, [R3]
  1368. ANDS R0, R1
  1369. STR R0, [R3]
  1370. LDR R3, =dword_D413750
  1371. LDR R2, [R3]
  1372. LDR R3, =HW_TIMER
  1373. LSLS R2, R2, #0x16
  1374. LDR R6, [R3]
  1375. MOVS R7, R3
  1376. LDR R3, =20000
  1377. LSRS R2, R2, #0x1E
  1378. MOVS R5, R2
  1379. MULS R5, R3
  1380.  
  1381. loc_D4109D6 ; CODE XREF: Main+660j
  1382. LDR R2, =20000
  1383. LDR R4, [R7]
  1384. ADDS R0, R5, R2
  1385. SUBS R4, R4, R6
  1386. BL sub_D412060
  1387. CMP R4, R0
  1388. BCC loc_D4109D6
  1389. MOVS R0, #0
  1390. MOVS R1, #0
  1391. ADD R2, SP, #0b100
  1392. BL sub_D411290
  1393. CMP R0, #0
  1394. BEQ loc_D410AAA
  1395. LDR R3, =dword_D413750
  1396. LDR R1, [R3]
  1397. LDR R2, [SP,#0b100]
  1398. LSLS R0, R1, #0x14
  1399. BPL loc_D410ABE
  1400. MOVS R4, #0xFF
  1401. ANDS R4, R1
  1402.  
  1403. loc_D410A02 ; CODE XREF: Main+73Cj
  1404. LDR R3, [R3]
  1405. LSLS R3, R3, #0x15
  1406. LSRS R3, R3, #0x1F
  1407. STR R3, [SP,#0x30+var_30]
  1408. MOVS R0, #0
  1409. MOVS R1, #0
  1410. MOVS R3, R4
  1411. BL sub_D41139C
  1412. CMP R0, #0
  1413. BEQ loc_D410ABA
  1414. MOVS R0, #0
  1415. BL CheckBoot0_Maybe
  1416. MOVS R2, #0xD4
  1417. MOVS R3, #0x80
  1418. MOVS R0, #0
  1419. MOVS R1, #0
  1420. LSLS R2, R2, #0x14
  1421. LSLS R3, R3, #3
  1422. BL sub_D411544
  1423. CMP R0, #0
  1424. BEQ loc_D410AB6
  1425. LDR R4, =word_D413940
  1426. MOVS R2, #0x60
  1427. MOVS R0, R4
  1428. LDR R1, =unk_D4001A0
  1429. BL sub_D4132E0
  1430. LDR R3, [R4,#(dword_D41394C - 0xD413940)]
  1431. LDR R2, =0x3FF
  1432. ADDS R4, R3, R2
  1433. LDR R3, =0xFFFFFE00
  1434. ANDS R4, R3
  1435. LDR R3, =0xF7FF
  1436. SUBS R2, R4, #1
  1437. CMP R2, R3
  1438. BHI loc_D410AB2
  1439. MOVS R0, #0
  1440. BL CheckBoot0_Maybe
  1441. MOVS R2, #0xD4
  1442. MOVS R0, #0
  1443. MOVS R1, #0
  1444. LSLS R2, R2, #0x14
  1445. MOVS R3, R4
  1446. BL sub_D411544
  1447. CMP R0, #0
  1448. BEQ loc_D410AAE
  1449. MOVS R0, #0x1F ; Value
  1450. BL SendGPIODebugOut
  1451. LDR R3, =Dyn_AES_Key_Buffer
  1452. LDR R3, [R3]
  1453. CMP R3, #0
  1454. BNE loc_D410A78
  1455. B loc_D410692
  1456. ; ---------------------------------------------------------------------------
  1457.  
  1458. loc_D410A78 ; CODE XREF: Main+6F0j
  1459. MOVS R0, #0x20 ; Value
  1460. BL SendGPIODebugOut
  1461. LDR R3, =dword_D413B5C
  1462. MOVS R1, #0xD4
  1463. LDR R0, [R3]
  1464. LSLS R1, R1, #0x14
  1465. BL CalcSHA_And_RSA
  1466. SUBS R4, R0, #0
  1467. BNE loc_D410A90
  1468. B loc_D410868
  1469. ; ---------------------------------------------------------------------------
  1470.  
  1471. loc_D410A90 ; CODE XREF: Main+708j
  1472. MOVS R0, #0x21 ; Value
  1473. BL SendGPIODebugOut
  1474. LDR R3, =AES_Key_Ptr
  1475. MOVS R1, #0xD4
  1476. LDR R0, [R3] ; AESKey
  1477. LSLS R1, R1, #0x14 ; R1 = 0xD400000
  1478. MOVS R2, R4 ; BufferPagesCount
  1479. BL AES_Decrypt ; PAGE = 0x1000
  1480. B loc_D410692
  1481. ; ---------------------------------------------------------------------------
  1482.  
  1483. loc_D410AA6 ; CODE XREF: Main+30Cj
  1484. MOVS R0, R7
  1485. B loc_D410864
  1486. ; ---------------------------------------------------------------------------
  1487.  
  1488. loc_D410AAA ; CODE XREF: Main+66Ej
  1489. MOVS R0, #0xD2
  1490. B loc_D410864
  1491. ; ---------------------------------------------------------------------------
  1492.  
  1493. loc_D410AAE ; CODE XREF: Main+6E2j
  1494. MOVS R0, #0xD9
  1495. B loc_D410864
  1496. ; ---------------------------------------------------------------------------
  1497.  
  1498. loc_D410AB2 ; CODE XREF: Main+6CAj
  1499. MOVS R0, #0xD8
  1500. B loc_D410864
  1501. ; ---------------------------------------------------------------------------
  1502.  
  1503. loc_D410AB6 ; CODE XREF: Main+6ACj
  1504. MOVS R0, #0xD4
  1505. B loc_D410864
  1506. ; ---------------------------------------------------------------------------
  1507.  
  1508. loc_D410ABA ; CODE XREF: Main+692j
  1509. MOVS R0, #0xD3
  1510. B loc_D410864
  1511. ; ---------------------------------------------------------------------------
  1512.  
  1513. loc_D410ABE ; CODE XREF: Main+678j
  1514. MOVS R4, #1
  1515. B loc_D410A02
  1516. ; END OF FUNCTION CHUNK FOR Main
  1517. ; ---------------------------------------------------------------------------
  1518. ALIGN 4
  1519. off_D410AC4 DCD HW_TIMER ; DATA XREF: Main+40Er
  1520. ; Main:loc_D410946r ...
  1521. off_D410AC8 DCD HW_Time_Start ; DATA XREF: Main+412r Main+50Cr ...
  1522. off_D410ACC DCD word_D413940 ; DATA XREF: Main:loc_D4107CAr
  1523. ; Main+6AEr
  1524. off_D410AD0 DCD unk_D4001A0 ; DATA XREF: Main+44Cr Main+6B4r
  1525. dword_D410AD4 DCD 0x9FF ; DATA XREF: Main+454r
  1526. dword_D410AD8 DCD 0xFFFFF800 ; DATA XREF: Main+458r
  1527. dword_D410ADC DCD 0xF7FF ; DATA XREF: Main+45Cr Main+6C4r
  1528. off_D410AE0 DCD dword_D80047C ; DATA XREF: Main+470r
  1529. off_D410AE4 DCD dword_D8005BC ; DATA XREF: Main+478r
  1530. off_D410AE8 DCD word_D41379C ; DATA XREF: Main+496r
  1531. ; Main:loc_D410844r
  1532. off_D410AEC DCD dword_D413744 ; DATA XREF: Main+4C8r
  1533. off_D410AF0 DCD dword_D413754 ; DATA XREF: Main+4CEr
  1534. off_D410AF4 DCD dword_D413740 ; DATA XREF: Main+4D0r
  1535. ; unsigned __int8 *off_D410AF8
  1536. off_D410AF8 DCD AES_Key_1 ; DATA XREF: Main+4E8r Main+5A2r ...
  1537. ; unsigned __int8 *off_D410AFC
  1538. off_D410AFC DCD OTP_200 ; DATA XREF: Main+4EEr Main+59Cr
  1539. off_D410B00 DCD HW_GPIO1OUT ; DATA XREF: Main:loc_D410880r
  1540. ; Main+5F2r ...
  1541. UDelayValue DCD 500000 ; DATA XREF: Main+506r Main+518r ...
  1542. off_D410B08 DCD dword_D800510 ; DATA XREF: Main:loc_D4108B4r
  1543. dword_D410B0C DCD 0xDFFFFFFF ; DATA XREF: Main+532r
  1544. off_D410B10 DCD dword_D413764 ; DATA XREF: Main:loc_D41091Ar
  1545. ; Main:loc_D410930r
  1546. off_D410B14 DCD Dyn_AES_Key_Buffer ; DATA XREF: Main+59Er Main+5B2r ...
  1547. off_D410B18 DCD AES_Key_Ptr ; DATA XREF: Main+5A4r Main+5BAr ...
  1548. off_D410B1C DCD RSA_PUB_1 ; DATA XREF: Main+5A8r
  1549. off_D410B20 DCD RSA_PUB_0 ; DATA XREF: Main+5BCr
  1550. off_D410B24 DCD dword_D417FE4 ; DATA XREF: Main+5C6r
  1551. off_D410B28 DCD dword_D413B5C ; DATA XREF: Main+5E2r Main+6FAr
  1552. off_D410B2C DCD HW_GPIO1INTENABLE ; DATA XREF: Main+618r
  1553. dword_D410B30 DCD 0xBFFFFFFF ; DATA XREF: Main+61Ar
  1554. off_D410B34 DCD HW_GPIO1DIR ; DATA XREF: Main+622r
  1555. off_D410B38 DCD dword_D413750 ; DATA XREF: Main+63Er Main+670r
  1556. dword_D410B3C DCD 20000 ; DATA XREF: Main+64Ar
  1557. ; Main:loc_D4109D6r
  1558. dword_D410B40 DCD 0x3FF ; DATA XREF: Main+6BCr
  1559. dword_D410B44 DCD 0xFFFFFE00 ; DATA XREF: Main+6C0r
  1560.  
  1561. ; =============== S U B R O U T I N E =======================================
  1562.  
  1563.  
  1564. Set_HW_OTP_Command_RD ; CODE XREF: Main+A6p
  1565. LDR R2, =HW_OTP_COMMAND
  1566. MOVS R3, #0x80000000 ; Set RD HighBit
  1567. STR R3, [R2]
  1568. BX LR
  1569. ; End of function Set_HW_OTP_Command_RD
  1570.  
  1571. ; ---------------------------------------------------------------------------
  1572. ALIGN 4
  1573. off_D410B54 DCD HW_OTP_COMMAND ; DATA XREF: Set_HW_OTP_Command_RDr
  1574.  
  1575. ; =============== S U B R O U T I N E =======================================
  1576.  
  1577.  
  1578. ; int __cdecl Read_From_OTP(int Field, unsigned __int8 *OutputBuffer, int Length)
  1579. Read_From_OTP ; CODE XREF: Main:loc_D410464p
  1580. ; Main+ECp ...
  1581. PUSH {R4-R7,LR}
  1582. MOV R7, R10
  1583. MOV R6, R8
  1584. PUSH {R6,R7}
  1585. MOVS R4, R0
  1586. MOVS R5, R1
  1587. MOVS R0, R1 ; Buffer
  1588. MOVS R6, R2
  1589. MOVS R1, #0 ; Unknown
  1590. BL CheckBuffer_Maybe
  1591. MOVS R1, #0
  1592. CMP R6, #0
  1593. BLE Not_Valid
  1594. LDR R2, =HW_OTP_COMMAND
  1595. MOVS R7, #0xE0
  1596. MOV R10, R2
  1597. MOVS R3, #0x1F
  1598. MOVS R0, #0x80
  1599. ADDS R2, #4 ; R2 = HW_OTP_DATA
  1600. LSLS R7, R7, #3 ; 0x700
  1601. MOV R8, R3
  1602. LSLS R0, R0, #0x18 ; 0x8000000 == HIGH_BIT == READ_COMMAND
  1603. MOV R12, R2
  1604.  
  1605. Read_From_HW_OTP_DATA ; CODE XREF: Read_From_OTP+4Cj
  1606. LSLS R3, R4, #3 ; R4 == Field
  1607. MOV R2, R8 ; R8 == 0x1F
  1608. ANDS R2, R4 ; R2 = Field(R4) & 0x1F
  1609. ANDS R3, R7 ; R3 = (Field(R4) << 3) & 0x700(R7)
  1610. ORRS R3, R2 ; R3 = ((Field(R4) << 3) & 0x700(R7)) | (Field(R4) & 0x1F)
  1611. ORRS R3, R0 ; SET RD BIT
  1612. MOV R2, R10 ; HW_OTP_COMMAND
  1613. STR R3, [R2] ; Set HW_OTP_COMMAND
  1614. MOV R2, R12
  1615. LDR R3, [R2] ; Load Data From HW_OTP_DATA
  1616. ADDS R1, #4
  1617. STMIA R5!, {R3}
  1618. ADDS R4, #1
  1619. CMP R1, R6
  1620. BLT Read_From_HW_OTP_DATA ; R4 == Field
  1621.  
  1622. Not_Valid ; CODE XREF: Read_From_OTP+1Aj
  1623. POP {R3,R4}
  1624. MOV R8, R3
  1625. MOV R10, R4
  1626. POP {R4-R7}
  1627. POP {R0}
  1628. BX R0
  1629. ; End of function Read_From_OTP
  1630.  
  1631. ; ---------------------------------------------------------------------------
  1632. ALIGN 4
  1633. off_D410BB4 DCD HW_OTP_COMMAND ; DATA XREF: Read_From_OTP+1Cr
  1634. ; ---------------------------------------------------------------------------
  1635.  
  1636. Init_EXI_Register ; CODE XREF: Main+2E2p
  1637. PUSH {R4,LR}
  1638. LDR R1, =EXI0_CSR ; Communication Status Register
  1639. LDR R0, =EXI1_CSR
  1640. LDR R4, =EXI2_CSR
  1641. MOVS R3, #0 ; EXI_CSR_EXIINTMSK
  1642. STR R3, [R1] ; Communication Status Register
  1643. STR R3, [R0]
  1644. STR R3, [R4]
  1645. MOVS R3, #0x2000 ; EXI_CSR_ROMDIS - disable IPL decryption logic
  1646. STR R3, [R1] ; Communication Status Register
  1647. LDR R2, =0x80A
  1648. LDR R3, [R1] ; Communication Status Register
  1649. ORRS R3, R2
  1650. STR R3, [R1] ; Communication Status Register
  1651. LDR R3, [R0]
  1652. ORRS R3, R2
  1653. STR R3, [R0]
  1654. LDR R3, [R4]
  1655. ORRS R3, R2
  1656. STR R3, [R4]
  1657. POP {R4}
  1658. POP {R0}
  1659. BX R0
  1660. ; ---------------------------------------------------------------------------
  1661. off_D410BE8 DCD EXI0_CSR ; DATA XREF: SRAM:0D410BBAr
  1662. ; Communication Status Register
  1663. off_D410BEC DCD EXI1_CSR ; DATA XREF: SRAM:0D410BBCr
  1664. off_D410BF0 DCD EXI2_CSR ; DATA XREF: SRAM:0D410BBEr
  1665. dword_D410BF4 DCD 0x80A ; DATA XREF: SRAM:0D410BCEr
  1666.  
  1667. ; =============== S U B R O U T I N E =======================================
  1668.  
  1669.  
  1670. Set_EXI1_CSR ; CODE XREF: SRAM:0D410D4Ap
  1671. ; sub_D410D78+Cp ...
  1672. PUSH {R4,LR}
  1673. MOVS R3, #0x14
  1674. MOVS R4, R0
  1675. MULS R4, R3
  1676. LDR R3, =0xD006800
  1677. ADDS R4, R4, R3
  1678. MOVS R3, #0x800000
  1679. ORRS R4, R3
  1680. LDR R0, [R4] ; D806814
  1681. LDR R3, =0x405
  1682. ANDS R0, R3
  1683. MOVS R3, #0x80
  1684. LSLS R3, R1
  1685. LSLS R2, R2, #4
  1686. ORRS R3, R2
  1687. ORRS R0, R3
  1688. STR R0, [R4]
  1689. POP {R4}
  1690. POP {R0}
  1691. BX R0
  1692. ; End of function Set_EXI1_CSR
  1693.  
  1694. ; ---------------------------------------------------------------------------
  1695. ALIGN 4
  1696. dword_D410C24 DCD 0xD006800 ; DATA XREF: Set_EXI1_CSR+8r
  1697. dword_D410C28 DCD 0x405 ; DATA XREF: Set_EXI1_CSR+14r
  1698.  
  1699. ; =============== S U B R O U T I N E =======================================
  1700.  
  1701.  
  1702. StoreToGC_EXI ; CODE XREF: SRAM:0D410D6Cp
  1703. ; sub_D410D78+3Ap ...
  1704. MOVS R3, #0x14
  1705. MOVS R1, R0
  1706. MULS R1, R3
  1707. LDR R3, =0xD006800
  1708. ADDS R1, R1, R3
  1709. MOVS R3, #0x800000
  1710. ORRS R1, R3 ; D806814
  1711. LDR R3, [R1]
  1712. LDR R2, =0x405
  1713. ANDS R3, R2
  1714. STR R3, [R1]
  1715. BX LR
  1716. ; End of function StoreToGC_EXI
  1717.  
  1718. ; ---------------------------------------------------------------------------
  1719. ALIGN 4
  1720. dword_D410C48 DCD 0xD006800 ; DATA XREF: StoreToGC_EXI+6r
  1721. dword_D410C4C DCD 0x405 ; DATA XREF: StoreToGC_EXI+12r
  1722.  
  1723. ; =============== S U B R O U T I N E =======================================
  1724.  
  1725.  
  1726. Set_EXI1_CR ; CODE XREF: sub_D410C70+32p
  1727. ; sub_D410D78+22p ...
  1728. PUSH {LR}
  1729. MOVS R3, #0x14
  1730. MULS R3, R0
  1731. LDR R1, =0xD00680C
  1732. ADDS R2, R3, R1
  1733. MOVS R3, #0x800000
  1734. ORRS R2, R3 ; D806820
  1735. MOVS R1, #1
  1736.  
  1737. loc_D410C62 ; CODE XREF: Set_EXI1_CR+16j
  1738. LDR R3, [R2]
  1739. TST R3, R1
  1740. BNE loc_D410C62
  1741. POP {R0}
  1742. BX R0
  1743. ; End of function Set_EXI1_CR
  1744.  
  1745. ; ---------------------------------------------------------------------------
  1746. dword_D410C6C DCD 0xD00680C ; DATA XREF: Set_EXI1_CR+6r
  1747.  
  1748. ; =============== S U B R O U T I N E =======================================
  1749.  
  1750.  
  1751. sub_D410C70 ; CODE XREF: SRAM:0D410D2Ap
  1752. ; SRAM:0D410D5Ap ...
  1753. PUSH {R4-R7,LR}
  1754. MOV R7, R8
  1755. PUSH {R7}
  1756. MOVS R7, R1
  1757. MOVS R6, R3
  1758. SUBS R4, R2, #0
  1759. BEQ loc_D410CC8
  1760. CMP R3, #0
  1761. BNE loc_D410CD2
  1762.  
  1763. loc_D410C82 ; CODE XREF: sub_D410C70+8Cj
  1764. MOVS R3, #0x14
  1765. MOVS R2, R0
  1766. MULS R2, R3
  1767. LDR R1, =0xD00680C
  1768. SUBS R3, R4, #1
  1769. MOV R8, R2
  1770. LSLS R3, R3, #4
  1771. MOVS R5, #0x80
  1772. LSLS R2, R6, #2
  1773. ORRS R2, R3
  1774. ADD R1, R8
  1775. LSLS R5, R5, #0x10
  1776. MOVS R3, #1
  1777. ORRS R1, R5
  1778. ORRS R2, R3
  1779. STR R2, [R1]
  1780. BL Set_EXI1_CR
  1781. CMP R6, #0
  1782. BNE loc_D410CC8
  1783. LDR R3, =0xD006810
  1784. ADD R3, R8
  1785. ORRS R3, R5
  1786. LDR R5, [R3]
  1787. MOVS R2, #0
  1788. CMP R4, #0
  1789. BLS loc_D410CC8
  1790. MOVS R0, #0x18
  1791.  
  1792. loc_D410CBA ; CODE XREF: sub_D410C70+56j
  1793. MOVS R3, R5
  1794. LSRS R3, R0
  1795. STRB R3, [R7,R2]
  1796. ADDS R2, #1
  1797. SUBS R0, #8
  1798. CMP R2, R4
  1799. BCC loc_D410CBA
  1800.  
  1801. loc_D410CC8 ; CODE XREF: sub_D410C70+Cj
  1802. ; sub_D410C70+38j ...
  1803. POP {R3}
  1804. MOV R8, R3
  1805. POP {R4-R7}
  1806. POP {R0}
  1807. BX R0
  1808. ; ---------------------------------------------------------------------------
  1809.  
  1810. loc_D410CD2 ; CODE XREF: sub_D410C70+10j
  1811. MOVS R5, #0
  1812. MOVS R2, #0
  1813. CMP R4, #0
  1814. BLS loc_D410CEA
  1815. MOVS R1, #0x18
  1816.  
  1817. loc_D410CDC ; CODE XREF: sub_D410C70+78j
  1818. LDRB R3, [R7,R2]
  1819. ADDS R2, #1
  1820. LSLS R3, R1
  1821. ORRS R5, R3
  1822. SUBS R1, #8
  1823. CMP R2, R4
  1824. BCC loc_D410CDC
  1825.  
  1826. loc_D410CEA ; CODE XREF: sub_D410C70+68j
  1827. MOVS R3, #0x14
  1828. MOVS R2, R0
  1829. MULS R2, R3
  1830. LDR R3, =0xD006810
  1831. ADDS R2, R2, R3
  1832. MOVS R3, #0x800000
  1833. ORRS R2, R3
  1834. STR R5, [R2]
  1835. B loc_D410C82
  1836. ; End of function sub_D410C70
  1837.  
  1838. ; ---------------------------------------------------------------------------
  1839. ALIGN 0x10
  1840. dword_D410D00 DCD 0xD00680C ; DATA XREF: sub_D410C70+18r
  1841. dword_D410D04 DCD 0xD006810 ; DATA XREF: sub_D410C70+3Ar
  1842. ; sub_D410C70+80r
  1843. ; ---------------------------------------------------------------------------
  1844. PUSH {R4-R7,LR}
  1845. MOV R7, R8
  1846. PUSH {R7}
  1847. MOV R8, R0
  1848. MOVS R7, R3
  1849. MOVS R6, R1
  1850. SUBS R5, R2, #0
  1851. BEQ loc_D410D34
  1852.  
  1853. loc_D410D18 ; CODE XREF: SRAM:0D410D32j
  1854. MOVS R4, R5
  1855. CMP R5, #4
  1856. BLS loc_D410D20
  1857. MOVS R4, #4
  1858.  
  1859. loc_D410D20 ; CODE XREF: SRAM:0D410D1Cj
  1860. MOVS R1, R6
  1861. MOV R0, R8
  1862. MOVS R2, R4
  1863. MOVS R3, R7
  1864. SUBS R5, R5, R4
  1865. BL sub_D410C70
  1866. ADDS R6, R6, R4
  1867. CMP R5, #0
  1868. BNE loc_D410D18
  1869.  
  1870. loc_D410D34 ; CODE XREF: SRAM:0D410D16j
  1871. POP {R3}
  1872. MOV R8, R3
  1873. POP {R4-R7}
  1874. POP {R0}
  1875. BX R0
  1876. ; ---------------------------------------------------------------------------
  1877. ALIGN 0x10
  1878. PUSH {R4,R5,LR}
  1879. SUB SP, SP, #4
  1880. MOVS R5, R2
  1881. MOVS R2, #0
  1882. MOVS R4, R0
  1883. BL Set_EXI1_CSR
  1884. MOVS R3, #0
  1885. STR R3, [SP]
  1886. MOVS R0, R4
  1887. MOV R1, SP
  1888. MOVS R2, #2
  1889. MOVS R3, #1
  1890. BL sub_D410C70
  1891. MOVS R1, R5
  1892. MOVS R0, R4
  1893. MOVS R2, #4
  1894. MOVS R3, #0
  1895. BL sub_D410C70
  1896. MOVS R0, R4
  1897. BL StoreToGC_EXI
  1898. ADD SP, SP, #4
  1899. POP {R4,R5}
  1900. POP {R0}
  1901. BX R0
  1902.  
  1903. ; =============== S U B R O U T I N E =======================================
  1904.  
  1905.  
  1906. sub_D410D78 ; CODE XREF: Main+2EEp
  1907.  
  1908. var_10 = -0x10
  1909.  
  1910. PUSH {R4,R5,LR}
  1911. SUB SP, SP, #4
  1912. MOVS R1, #1
  1913. MOVS R2, #0
  1914. MOVS R5, R0
  1915. MOVS R0, #0
  1916. BL Set_EXI1_CSR
  1917. LDR R3, =0x21000400
  1918. MOV R1, SP
  1919. MOVS R2, #4
  1920. STR R3, [SP,#0x10+var_10]
  1921. MOVS R0, #0
  1922. MOVS R3, #1
  1923. BL sub_D410C70
  1924. MOVS R0, #0
  1925. BL Set_EXI1_CR
  1926. MOVS R2, #4
  1927. MOVS R3, #0
  1928. MOV R1, SP
  1929. MOVS R0, #0
  1930. BL sub_D410C70
  1931. MOVS R0, #0
  1932. BL Set_EXI1_CR
  1933. MOVS R0, #0
  1934. BL StoreToGC_EXI
  1935. LDR R2, [SP,#0x10+var_10]
  1936. LDR R3, =0x3030303
  1937. CMP R2, R3
  1938. BEQ loc_D410DC8
  1939. MOVS R0, #0
  1940.  
  1941. loc_D410DC0 ; CODE XREF: sub_D410D78+8Ej
  1942. ADD SP, SP, #4
  1943. POP {R4,R5}
  1944. POP {R1}
  1945. BX R1
  1946. ; ---------------------------------------------------------------------------
  1947.  
  1948. loc_D410DC8 ; CODE XREF: sub_D410D78+44j
  1949. MOVS R0, #0
  1950. MOVS R1, #1
  1951. MOVS R2, #0
  1952. BL Set_EXI1_CSR
  1953. LDR R3, =0x21000C00
  1954. MOV R1, SP
  1955. MOVS R2, #4
  1956. STR R3, [SP,#0x10+var_10]
  1957. MOVS R0, #0
  1958. MOVS R3, #1
  1959. BL sub_D410C70
  1960. MOVS R0, #0
  1961. BL Set_EXI1_CR
  1962. MOVS R3, #0
  1963. MOV R1, SP
  1964. MOVS R2, #4
  1965. MOVS R0, #0
  1966. BL sub_D410C70
  1967. MOVS R0, #0
  1968. BL Set_EXI1_CR
  1969. MOVS R0, #0
  1970. BL StoreToGC_EXI
  1971. LDR R3, [SP,#0x10+var_10]
  1972. MOVS R0, #1
  1973. STR R3, [R5]
  1974. B loc_D410DC0
  1975. ; End of function sub_D410D78
  1976.  
  1977. ; ---------------------------------------------------------------------------
  1978. dword_D410E08 DCD 0x21000400 ; DATA XREF: sub_D410D78+10r
  1979. dword_D410E0C DCD 0x3030303 ; DATA XREF: sub_D410D78+40r
  1980. dword_D410E10 DCD 0x21000C00 ; DATA XREF: sub_D410D78+5Ar
  1981. ; ---------------------------------------------------------------------------
  1982. LDR R0, [R0,R1]
  1983. BX LR
  1984. ; ---------------------------------------------------------------------------
  1985. STR R2, [R0,R1]
  1986. BX LR
  1987.  
  1988. ; =============== S U B R O U T I N E =======================================
  1989.  
  1990.  
  1991. sub_D410E1C ; CODE XREF: sub_D410EA4+Ep
  1992. LDR R3, =0xFF00FF
  1993. STR R3, [R0,#0x34]
  1994. STR R3, [R0,#0x38]
  1995. BX LR
  1996. ; End of function sub_D410E1C
  1997.  
  1998. ; ---------------------------------------------------------------------------
  1999. dword_D410E24 DCD 0xFF00FF ; DATA XREF: sub_D410E1Cr
  2000.  
  2001. ; =============== S U B R O U T I N E =======================================
  2002.  
  2003.  
  2004. sub_D410E28 ; CODE XREF: sub_D411290+40p
  2005. LDR R3, =SDHC_REG_BASE
  2006. LSLS R0, R0, #2
  2007. LDR R0, [R0,R3]
  2008. LSLS R1, R1, #8
  2009. ADDS R0, R0, R1
  2010. LDR R3, [R0,#0x2C]
  2011. MOVS R1, #0xF0000
  2012. LSLS R2, R2, #0x10
  2013. BICS R3, R1
  2014. ANDS R2, R1
  2015. ORRS R3, R2
  2016. STR R3, [R0,#0x2C]
  2017. LDR R3, [R0,#0x2C]
  2018. BX LR
  2019. ; End of function sub_D410E28
  2020.  
  2021. ; ---------------------------------------------------------------------------
  2022. ALIGN 4
  2023. off_D410E48 DCD SDHC_REG_BASE ; DATA XREF: sub_D410E28r
  2024.  
  2025. ; =============== S U B R O U T I N E =======================================
  2026.  
  2027.  
  2028. sub_D410E4C ; CODE XREF: sub_D411138+1Ep
  2029. ; sub_D41143C+1Ep
  2030. PUSH {LR}
  2031. CMP R0, #0x38 ; switch 57 cases
  2032. BHI def_D410E58 ; jumptable 0D410E58 default case
  2033. LDR R2, =jpt_D410E58
  2034. LSLS R3, R0, #2
  2035. LDR R3, [R3,R2]
  2036. MOV PC, R3 ; switch jump
  2037. ; ---------------------------------------------------------------------------
  2038.  
  2039. def_D410E58 ; CODE XREF: sub_D410E4C+4j
  2040. ; sub_D410E4C+Cj
  2041. ; DATA XREF: ...
  2042. MOVS R0, #0 ; jumptable 0D410E58 default case
  2043.  
  2044. loc_D410E5C ; CODE XREF: sub_D410E4C+16j
  2045. ; sub_D410E4C+1Ej ...
  2046. POP {R1}
  2047. BX R1
  2048. ; ---------------------------------------------------------------------------
  2049.  
  2050. loc_D410E60 ; CODE XREF: sub_D410E4C+Cj
  2051. ; sub_D410E4C+1Aj
  2052. ; DATA XREF: ...
  2053. MOVS R0, #3 ; jumptable 0D410E58 cases 7,12,28,29,38
  2054. B loc_D410E5C
  2055. ; ---------------------------------------------------------------------------
  2056.  
  2057. loc_D410E64 ; CODE XREF: sub_D410E4C+Cj
  2058. ; DATA XREF: SRAM:0D41330Co ...
  2059. CMP R1, #0 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  2060. BNE loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
  2061. MOVS R0, #2
  2062. B loc_D410E5C
  2063. ; ---------------------------------------------------------------------------
  2064.  
  2065. loc_D410E6C ; CODE XREF: sub_D410E4C+Cj
  2066. ; DATA XREF: SRAM:0D413308o ...
  2067. MOVS R0, #1 ; jumptable 0D410E58 cases 2,9,10
  2068. B loc_D410E5C
  2069. ; End of function sub_D410E4C
  2070.  
  2071. ; ---------------------------------------------------------------------------
  2072. off_D410E70 DCD jpt_D410E58 ; DATA XREF: sub_D410E4C+6r
  2073.  
  2074. ; =============== S U B R O U T I N E =======================================
  2075.  
  2076.  
  2077. sub_D410E74 ; CODE XREF: sub_D411290+1Ep
  2078. PUSH {R4,R5,LR}
  2079. LDR R3, =SDHC_REG_BASE
  2080. LSLS R0, R0, #2
  2081. LDR R3, [R0,R3]
  2082. LSLS R1, R1, #8
  2083. ADDS R4, R3, R1
  2084. LDR R3, [R4,#0x2C]
  2085. ORRS R3, R2
  2086. STR R3, [R4,#0x2C]
  2087. LDR R3, [R4,#0x2C]
  2088. MOVS R5, R2
  2089. TST R3, R5
  2090. BEQ loc_D410E9A
  2091.  
  2092. loc_D410E8E ; CODE XREF: sub_D410E74+24j
  2093. MOVS R0, #0xA
  2094. BL UDelay
  2095. LDR R3, [R4,#0x2C]
  2096. TST R3, R5
  2097. BNE loc_D410E8E
  2098.  
  2099. loc_D410E9A ; CODE XREF: sub_D410E74+18j
  2100. POP {R4,R5}
  2101. POP {R0}
  2102. BX R0
  2103. ; End of function sub_D410E74
  2104.  
  2105. ; ---------------------------------------------------------------------------
  2106. off_D410EA0 DCD SDHC_REG_BASE ; DATA XREF: sub_D410E74+2r
  2107.  
  2108. ; =============== S U B R O U T I N E =======================================
  2109.  
  2110.  
  2111. sub_D410EA4 ; CODE XREF: sub_D411290+26p
  2112. PUSH {R4-R7,LR}
  2113. LDR R3, =SDHC_REG_BASE
  2114. LSLS R0, R0, #2
  2115. LDR R3, [R0,R3]
  2116. LSLS R1, R1, #8
  2117. ADDS R4, R3, R1
  2118. MOVS R0, R4
  2119. BL sub_D410E1C
  2120. LDR R3, =0x1FF01FF
  2121. STR R3, [R4,#0x30]
  2122. LDR R3, [R4,#0x24]
  2123. MOVS R5, #0
  2124. LSLS R2, R3, #0xF
  2125. BMI loc_D410EE0
  2126. MOVS R6, #0x3E8
  2127. MOVS R7, #1
  2128.  
  2129. loc_D410EC8 ; CODE XREF: sub_D410EA4+3Aj
  2130. MOVS R0, #0x3E8
  2131. BL UDelay
  2132. CMP R5, R6
  2133. BHI loc_D410EEC
  2134. LDR R3, [R4,#0x24]
  2135. MOVS R2, R7
  2136. LSRS R3, R3, #0x10
  2137. ADDS R5, #1
  2138. BICS R2, R3
  2139. BNE loc_D410EC8
  2140.  
  2141. loc_D410EE0 ; CODE XREF: sub_D410EA4+1Cj
  2142. MOVS R3, #0x40
  2143. STR R3, [R4,#0x30]
  2144. MOVS R0, #1
  2145.  
  2146. loc_D410EE6 ; CODE XREF: sub_D410EA4+4Aj
  2147. POP {R4-R7}
  2148. POP {R1}
  2149. BX R1
  2150. ; ---------------------------------------------------------------------------
  2151.  
  2152. loc_D410EEC ; CODE XREF: sub_D410EA4+2Ej
  2153. MOVS R0, #0
  2154. B loc_D410EE6
  2155. ; End of function sub_D410EA4
  2156.  
  2157. ; ---------------------------------------------------------------------------
  2158. off_D410EF0 DCD SDHC_REG_BASE ; DATA XREF: sub_D410EA4+2r
  2159. dword_D410EF4 DCD 0x1FF01FF ; DATA XREF: sub_D410EA4+12r
  2160.  
  2161. ; =============== S U B R O U T I N E =======================================
  2162.  
  2163.  
  2164. sub_D410EF8 ; CODE XREF: sub_D411290+4Ap
  2165. ; sub_D41139C+10p
  2166. PUSH {R4-R7,LR}
  2167. MOV R7, R8
  2168. PUSH {R7}
  2169. LDR R3, =SDHC_REG_BASE
  2170. LSLS R0, R0, #2
  2171. LDR R3, [R0,R3]
  2172. LSLS R1, R1, #8
  2173. ADDS R6, R3, R1
  2174. LDR R1, [R6,#0x2C]
  2175. LDR R3, =0xFFFF00FB
  2176. ANDS R1, R3
  2177. LSLS R7, R2, #8
  2178. MOVS R3, R1
  2179. ORRS R3, R7
  2180. MOVS R4, #1
  2181. ORRS R3, R4
  2182. STR R3, [R6,#0x2C]
  2183. MOVS R0, #0xA
  2184. MOV R8, R1
  2185. BL UDelay
  2186. LDR R3, [R6,#0x2C]
  2187. LSRS R3, R3, #1
  2188. MOVS R5, #0
  2189. BICS R4, R3
  2190. BEQ loc_D410F44
  2191. MOVS R4, #1
  2192.  
  2193. loc_D410F2E ; CODE XREF: sub_D410EF8+4Aj
  2194. MOVS R0, #0xA
  2195. ADDS R5, #1
  2196. BL UDelay
  2197. CMP R5, #0x63
  2198. BHI loc_D410F80
  2199. LDR R3, [R6,#0x2C]
  2200. MOVS R2, R4
  2201. LSRS R3, R3, #1
  2202. BICS R2, R3
  2203. BNE loc_D410F2E
  2204.  
  2205. loc_D410F44 ; CODE XREF: sub_D410EF8+32j
  2206. MOV R3, R8
  2207. ORRS R7, R3
  2208. MOVS R3, #5
  2209. ORRS R7, R3
  2210. STR R7, [R6,#0x2C]
  2211. MOVS R0, #0xA
  2212. BL UDelay
  2213. LDR R3, [R6,#0x2C]
  2214. MOVS R5, #0
  2215. LSLS R1, R3, #0x1E
  2216. BMI loc_D410F74
  2217. MOVS R4, #1
  2218.  
  2219. loc_D410F5E ; CODE XREF: sub_D410EF8+7Aj
  2220. MOVS R0, #0xA
  2221. ADDS R5, #1
  2222. BL UDelay
  2223. CMP R5, #0x63
  2224. BHI loc_D410F80
  2225. LDR R3, [R6,#0x2C]
  2226. MOVS R2, R4
  2227. LSRS R3, R3, #1
  2228. BICS R2, R3
  2229. BNE loc_D410F5E
  2230.  
  2231. loc_D410F74 ; CODE XREF: sub_D410EF8+62j
  2232. MOVS R0, #1
  2233.  
  2234. loc_D410F76 ; CODE XREF: sub_D410EF8+8Aj
  2235. POP {R3}
  2236. MOV R8, R3
  2237. POP {R4-R7}
  2238. POP {R1}
  2239. BX R1
  2240. ; ---------------------------------------------------------------------------
  2241.  
  2242. loc_D410F80 ; CODE XREF: sub_D410EF8+40j
  2243. ; sub_D410EF8+70j
  2244. MOVS R0, #0
  2245. B loc_D410F76
  2246. ; End of function sub_D410EF8
  2247.  
  2248. ; ---------------------------------------------------------------------------
  2249. off_D410F84 DCD SDHC_REG_BASE ; DATA XREF: sub_D410EF8+6r
  2250. dword_D410F88 DCD 0xFFFF00FB ; DATA XREF: sub_D410EF8+12r
  2251.  
  2252. ; =============== S U B R O U T I N E =======================================
  2253.  
  2254.  
  2255. sub_D410F8C ; CODE XREF: sub_D41105C+10p
  2256. ; sub_D411078+18p ...
  2257.  
  2258. arg_0 = 0
  2259.  
  2260. PUSH {R4-R7,LR}
  2261. MOV R7, R8
  2262. PUSH {R7}
  2263. MOV R8, R3
  2264. LDR R3, =SDHC_REG_BASE
  2265. LSLS R0, R0, #2
  2266. LDR R3, [R0,R3]
  2267. LSLS R1, R1, #8
  2268. ADDS R4, R3, R1
  2269. LDR R3, [R4,#0x24]
  2270. MOVS R0, #1
  2271. MOVS R5, #0
  2272. TST R3, R0
  2273. BNE loc_D41100A
  2274. STR R2, [R4,#8]
  2275. LDR R2, =0xFFFF0000
  2276. MOV R3, R8
  2277. ANDS R2, R3
  2278. LDR R1, =0xFFFF
  2279. LDR R3, [R4,#0xC]
  2280. ANDS R3, R1
  2281. ORRS R2, R3
  2282. STR R2, [R4,#0xC]
  2283. LDR R3, [R4,#0x30]
  2284. BICS R0, R3
  2285. BEQ loc_D410FE2
  2286. LDR R7, =0x2710
  2287. MOVS R6, #1
  2288.  
  2289. loc_D410FC4 ; CODE XREF: sub_D410F8C+54j
  2290. MOVS R0, #0xC8
  2291. BL UDelay
  2292. LDR R3, [R4,#0x30]
  2293. LSRS R3, R3, #0xF
  2294. TST R3, R6
  2295. BNE loc_D41100A
  2296. MOVS R3, R5
  2297. ADDS R5, #1
  2298. CMP R3, R7
  2299. BHI loc_D41100A
  2300. LDR R3, [R4,#0x30]
  2301. MOVS R2, R6
  2302. BICS R2, R3
  2303. BNE loc_D410FC4
  2304.  
  2305. loc_D410FE2 ; CODE XREF: sub_D410F8C+32j
  2306. MOV R2, R8
  2307. LSLS R3, R2, #2
  2308. MOVS R1, #1
  2309. LSRS R2, R3, #0x1A
  2310. STR R1, [R4,#0x30]
  2311. CMP R2, #7
  2312. BEQ loc_D411016
  2313. CMP R2, #0xC
  2314. BEQ loc_D411016
  2315.  
  2316. loc_D410FF4 ; CODE XREF: sub_D410F8C+BCj
  2317. LDR R3, [R4,#0x30]
  2318. LSLS R2, R3, #0x10
  2319. BMI loc_D41100A
  2320. LDR R3, [SP,#0x18+arg_0]
  2321. CMP R3, #0
  2322. BEQ loc_D411006
  2323. LDR R3, [R4,#0x10]
  2324. LDR R2, [SP,#0x18+arg_0]
  2325. STR R3, [R2]
  2326.  
  2327. loc_D411006 ; CODE XREF: sub_D410F8C+72j
  2328. MOVS R0, #1
  2329. B loc_D41100C
  2330. ; ---------------------------------------------------------------------------
  2331.  
  2332. loc_D41100A ; CODE XREF: sub_D410F8C+1Aj
  2333. ; sub_D410F8C+44j ...
  2334. MOVS R0, #0
  2335.  
  2336. loc_D41100C ; CODE XREF: sub_D410F8C+7Cj
  2337. POP {R3}
  2338. MOV R8, R3
  2339. POP {R4-R7}
  2340. POP {R1}
  2341. BX R1
  2342. ; ---------------------------------------------------------------------------
  2343.  
  2344. loc_D411016 ; CODE XREF: sub_D410F8C+62j
  2345. ; sub_D410F8C+66j
  2346. LDR R3, [R4,#0x30]
  2347. LSRS R3, R3, #1
  2348. MOVS R5, #0
  2349. BICS R1, R3
  2350. BEQ loc_D411044
  2351. MOVS R6, #1
  2352.  
  2353. loc_D411022 ; CODE XREF: sub_D410F8C+B6j
  2354. MOVS R0, #0xC8
  2355. BL UDelay
  2356. LDR R3, [R4,#0x30]
  2357. LSRS R3, R3, #0xF
  2358. TST R3, R6
  2359. BNE loc_D41100A
  2360. LDR R3, =0x2710
  2361. MOVS R2, R5
  2362. ADDS R5, #1
  2363. CMP R2, R3
  2364. BHI loc_D41100A
  2365. LDR R3, [R4,#0x30]
  2366. MOVS R2, R6
  2367. LSRS R3, R3, #1
  2368. BICS R2, R3
  2369. BNE loc_D411022
  2370.  
  2371. loc_D411044 ; CODE XREF: sub_D410F8C+92j
  2372. MOVS R3, #2
  2373. STR R3, [R4,#0x30]
  2374. B loc_D410FF4
  2375. ; End of function sub_D410F8C
  2376.  
  2377. ; ---------------------------------------------------------------------------
  2378. ALIGN 4
  2379. off_D41104C DCD SDHC_REG_BASE ; DATA XREF: sub_D410F8C+8r
  2380. dword_D411050 DCD 0xFFFF0000 ; DATA XREF: sub_D410F8C+1Er
  2381. dword_D411054 DCD 0xFFFF ; DATA XREF: sub_D410F8C+24r
  2382. dword_D411058 DCD 0x2710 ; DATA XREF: sub_D410F8C+34r
  2383. ; sub_D410F8C+A4r
  2384.  
  2385. ; =============== S U B R O U T I N E =======================================
  2386.  
  2387.  
  2388. sub_D41105C ; CODE XREF: sub_D411290+96p
  2389.  
  2390. var_8 = -8
  2391.  
  2392. PUSH {LR}
  2393. SUB SP, SP, #4
  2394. MOVS R3, R0
  2395. STR R2, [SP,#8+var_8]
  2396. MOVS R0, R1
  2397. MOVS R2, #0
  2398. MOVS R1, R3
  2399. MOVS R3, #0
  2400. BL sub_D410F8C
  2401. ADD SP, SP, #4
  2402. POP {R1}
  2403. BX R1
  2404. ; End of function sub_D41105C
  2405.  
  2406. ; ---------------------------------------------------------------------------
  2407. ALIGN 4
  2408.  
  2409. ; =============== S U B R O U T I N E =======================================
  2410.  
  2411.  
  2412. sub_D411078 ; CODE XREF: sub_D411290+E2p
  2413.  
  2414. var_10 = -0x10
  2415.  
  2416. PUSH {R4,R5,LR}
  2417. LDR R3, =SDHC_REG_BASE
  2418. MOVS R5, R2
  2419. LSLS R2, R0, #2
  2420. LDR R3, [R2,R3]
  2421. LSLS R4, R1, #8
  2422. SUB SP, SP, #4
  2423. ADDS R4, R3, R4
  2424. MOVS R3, #0
  2425. STR R3, [SP,#0x10+var_10]
  2426. MOVS R2, #0
  2427. LDR R3, =0x2090000
  2428. BL sub_D410F8C
  2429. CMP R0, #0
  2430. BEQ loc_D4110B0
  2431. CMP R5, #0
  2432. BEQ loc_D4110AE
  2433. MOVS R2, #0
  2434. MOVS R1, #3
  2435.  
  2436. loc_D4110A0 ; CODE XREF: sub_D411078+34j
  2437. MOVS R3, R2
  2438. ADDS R3, #0x10
  2439. LDR R3, [R4,R3]
  2440. STR R3, [R2,R5]
  2441. ADDS R2, #4
  2442. SUBS R1, #1
  2443. BPL loc_D4110A0
  2444.  
  2445. loc_D4110AE ; CODE XREF: sub_D411078+22j
  2446. MOVS R0, #1
  2447.  
  2448. loc_D4110B0 ; CODE XREF: sub_D411078+1Ej
  2449. ADD SP, SP, #4
  2450. POP {R4,R5}
  2451. POP {R1}
  2452. BX R1
  2453. ; End of function sub_D411078
  2454.  
  2455. ; ---------------------------------------------------------------------------
  2456. off_D4110B8 DCD SDHC_REG_BASE ; DATA XREF: sub_D411078+2r
  2457. dword_D4110BC DCD 0x2090000 ; DATA XREF: sub_D411078+16r
  2458.  
  2459. ; =============== S U B R O U T I N E =======================================
  2460.  
  2461.  
  2462. sub_D4110C0 ; CODE XREF: sub_D411290+F0p
  2463.  
  2464. var_18 = -0x18
  2465.  
  2466. PUSH {R4-R7,LR}
  2467. LDR R3, =SDHC_REG_BASE
  2468. MOVS R7, R2
  2469. LSLS R2, R0, #2
  2470. LDR R3, [R2,R3]
  2471. MOVS R5, R1
  2472. LSLS R1, R1, #8
  2473. SUB SP, SP, #4
  2474. MOVS R6, R0
  2475. ADDS R4, R3, R1
  2476.  
  2477. loc_D4110D4 ; CODE XREF: sub_D4110C0+2Ej
  2478. MOVS R3, #0
  2479. STR R3, [SP,#0x18+var_18]
  2480. MOVS R0, R6
  2481. MOVS R1, R5
  2482. MOVS R2, #0
  2483. LDR R3, =0x31A0000
  2484. BL sub_D410F8C
  2485. CMP R0, #0
  2486. BEQ loc_D4110F8
  2487. LDR R3, [R4,#0x10]
  2488. LSRS R3, R3, #0x10
  2489. CMP R3, #0
  2490. BEQ loc_D4110D4
  2491. CMP R7, #0
  2492. BEQ loc_D4110F6
  2493. STR R3, [R7]
  2494.  
  2495. loc_D4110F6 ; CODE XREF: sub_D4110C0+32j
  2496. MOVS R0, #1
  2497.  
  2498. loc_D4110F8 ; CODE XREF: sub_D4110C0+26j
  2499. ADD SP, SP, #4
  2500. POP {R4-R7}
  2501. POP {R1}
  2502. BX R1
  2503. ; End of function sub_D4110C0
  2504.  
  2505. ; ---------------------------------------------------------------------------
  2506. off_D411100 DCD SDHC_REG_BASE ; DATA XREF: sub_D4110C0+2r
  2507. dword_D411104 DCD 0x31A0000 ; DATA XREF: sub_D4110C0+1Er
  2508.  
  2509. ; =============== S U B R O U T I N E =======================================
  2510.  
  2511.  
  2512. sub_D411108 ; CODE XREF: sub_D411290+58p
  2513.  
  2514. var_8 = -8
  2515.  
  2516. PUSH {LR}
  2517. SUB SP, SP, #4
  2518. STR R2, [SP,#8+var_8]
  2519. LDR R3, =0x5020000
  2520. MOVS R2, #0
  2521. BL sub_D410F8C
  2522. ADD SP, SP, #4
  2523. POP {R1}
  2524. BX R1
  2525. ; End of function sub_D411108
  2526.  
  2527. ; ---------------------------------------------------------------------------
  2528. dword_D41111C DCD 0x5020000 ; DATA XREF: sub_D411108+6r
  2529.  
  2530. ; =============== S U B R O U T I N E =======================================
  2531.  
  2532.  
  2533. sub_D411120 ; CODE XREF: sub_D41139C+2Cp
  2534.  
  2535. var_8 = -8
  2536.  
  2537. PUSH {LR}
  2538. SUB SP, SP, #4
  2539. STR R3, [SP,#8+var_8]
  2540. LSLS R2, R2, #0x10
  2541. LDR R3, =0x71B0000
  2542. BL sub_D410F8C
  2543. ADD SP, SP, #4
  2544. POP {R1}
  2545. BX R1
  2546. ; End of function sub_D411120
  2547.  
  2548. ; ---------------------------------------------------------------------------
  2549. dword_D411134 DCD 0x71B0000 ; DATA XREF: sub_D411120+8r
  2550.  
  2551. ; =============== S U B R O U T I N E =======================================
  2552.  
  2553.  
  2554. sub_D411138
  2555.  
  2556. var_1C = -0x1C
  2557.  
  2558. PUSH {R4-R7,LR}
  2559. MOV R7, R8
  2560. PUSH {R7}
  2561. MOV R8, R3
  2562. LDR R3, =SDHC_REG_BASE
  2563. MOVS R6, R2
  2564. LSLS R2, R0, #2
  2565. LDR R3, [R2,R3]
  2566. MOVS R5, R1
  2567. LSLS R1, R1, #8
  2568. MOVS R4, R0
  2569. ADDS R7, R3, R1
  2570. SUB SP, SP, #4
  2571. MOVS R1, #0
  2572. MOVS R0, #9
  2573. BL sub_D410E4C
  2574. LSLS R3, R0, #0x10
  2575. MOVS R0, R4
  2576. LDR R4, =0x9080000
  2577. MOVS R2, #0
  2578. STR R2, [SP,#0x1C+var_1C]
  2579. MOVS R1, R5
  2580. LSLS R2, R6, #0x10
  2581. ORRS R3, R4
  2582. BL sub_D410F8C
  2583. CMP R0, #0
  2584. BEQ loc_D41118E
  2585. MOV R0, R8
  2586. CMP R0, #0
  2587. BEQ loc_D41118C
  2588. MOVS R2, #0
  2589. MOVS R1, #3
  2590.  
  2591. loc_D41117C ; CODE XREF: sub_D411138+52j
  2592. MOVS R3, R2
  2593. ADDS R3, #0x10
  2594. LDR R3, [R7,R3]
  2595. MOV R0, R8
  2596. STR R3, [R2,R0]
  2597. ADDS R2, #4
  2598. SUBS R1, #1
  2599. BPL loc_D41117C
  2600.  
  2601. loc_D41118C ; CODE XREF: sub_D411138+3Ej
  2602. MOVS R0, #1
  2603.  
  2604. loc_D41118E ; CODE XREF: sub_D411138+38j
  2605. ADD SP, SP, #4
  2606. POP {R3}
  2607. MOV R8, R3
  2608. POP {R4-R7}
  2609. POP {R1}
  2610. BX R1
  2611. ; End of function sub_D411138
  2612.  
  2613. ; ---------------------------------------------------------------------------
  2614. ALIGN 4
  2615. off_D41119C DCD SDHC_REG_BASE ; DATA XREF: sub_D411138+8r
  2616. dword_D4111A0 DCD 0x9080000 ; DATA XREF: sub_D411138+26r
  2617.  
  2618. ; =============== S U B R O U T I N E =======================================
  2619.  
  2620.  
  2621. sub_D4111A4 ; CODE XREF: sub_D41139C+40p
  2622. ; sub_D41139C+5Ep
  2623.  
  2624. var_8 = -8
  2625.  
  2626. PUSH {LR}
  2627. SUB SP, SP, #4
  2628. STR R3, [SP,#8+var_8]
  2629. LSLS R2, R2, #0x10
  2630. LDR R3, =0xD1A0000
  2631. BL sub_D410F8C
  2632. ADD SP, SP, #4
  2633. POP {R1}
  2634. BX R1
  2635. ; End of function sub_D4111A4
  2636.  
  2637. ; ---------------------------------------------------------------------------
  2638. dword_D4111B8 DCD 0xD1A0000 ; DATA XREF: sub_D4111A4+8r
  2639.  
  2640. ; =============== S U B R O U T I N E =======================================
  2641.  
  2642.  
  2643. sub_D4111BC ; CODE XREF: sub_D41139C+7Ap
  2644.  
  2645. var_8 = -8
  2646.  
  2647. PUSH {LR}
  2648. SUB SP, SP, #4
  2649. STR R3, [SP,#8+var_8]
  2650. LDR R3, =0x101A0000
  2651. BL sub_D410F8C
  2652. ADD SP, SP, #4
  2653. POP {R1}
  2654. BX R1
  2655. ; End of function sub_D4111BC
  2656.  
  2657. ; ---------------------------------------------------------------------------
  2658. ALIGN 0x10
  2659. dword_D4111D0 DCD 0x101A0000 ; DATA XREF: sub_D4111BC+6r
  2660.  
  2661. ; =============== S U B R O U T I N E =======================================
  2662.  
  2663.  
  2664. sub_D4111D4 ; CODE XREF: sub_D41139C+8Ep
  2665.  
  2666. var_1C = -0x1C
  2667. arg_0 = 0
  2668.  
  2669. PUSH {R4-R7,LR}
  2670. MOV R7, R8
  2671. PUSH {R7}
  2672. MOVS R6, R2
  2673. LDR R2, =SDHC_REG_BASE
  2674. MOVS R5, R1
  2675. LSLS R1, R0, #2
  2676. LDR R2, [R1,R2]
  2677. SUB SP, SP, #4
  2678. MOVS R4, R0
  2679. LSLS R0, R5, #8
  2680. ADDS R2, R2, R0
  2681. LDR R7, [SP,#0x1C+arg_0]
  2682. MOV R8, R2
  2683. MOVS R0, R4
  2684. LSLS R2, R3, #0x10
  2685. MOVS R1, R5
  2686. LDR R3, =0x371A0000
  2687. STR R7, [SP,#0x1C+var_1C]
  2688. BL sub_D410F8C
  2689. CMP R0, #0
  2690. BNE loc_D41120E
  2691.  
  2692. loc_D411202 ; CODE XREF: sub_D4111D4+4Cj
  2693. ; sub_D4111D4+5Ej
  2694. ADD SP, SP, #4
  2695. POP {R3}
  2696. MOV R8, R3
  2697. POP {R4-R7}
  2698. POP {R1}
  2699. BX R1
  2700. ; ---------------------------------------------------------------------------
  2701.  
  2702. loc_D41120E ; CODE XREF: sub_D4111D4+2Cj
  2703. LSLS R6, R6, #1
  2704. MOVS R0, R4
  2705. MOVS R1, R5
  2706. MOVS R2, R6
  2707. LDR R3, =0x6020000
  2708. STR R7, [SP,#0x1C+var_1C]
  2709. BL sub_D410F8C
  2710. CMP R0, #0
  2711. BEQ loc_D411202
  2712. MOV R2, R8
  2713. LDR R3, [R2,#0x28]
  2714. MOVS R2, #2
  2715. BICS R3, R2
  2716. ORRS R3, R6
  2717. MOV R2, R8
  2718. MOVS R0, #1
  2719. STR R3, [R2,#0x28]
  2720. B loc_D411202
  2721. ; End of function sub_D4111D4
  2722.  
  2723. ; ---------------------------------------------------------------------------
  2724. off_D411234 DCD SDHC_REG_BASE ; DATA XREF: sub_D4111D4+8r
  2725. dword_D411238 DCD 0x371A0000 ; DATA XREF: sub_D4111D4+22r
  2726. dword_D41123C DCD 0x6020000 ; DATA XREF: sub_D4111D4+42r
  2727.  
  2728. ; =============== S U B R O U T I N E =======================================
  2729.  
  2730.  
  2731. sub_D411240 ; CODE XREF: sub_D411290+A8p
  2732. ; sub_D411290+BEp
  2733.  
  2734. var_1C = -0x1C
  2735. var_18 = -0x18
  2736.  
  2737. PUSH {R4-R7,LR}
  2738. SUB SP, SP, #8
  2739. MOVS R7, R3
  2740. MOVS R3, #0
  2741. MOVS R6, R2
  2742. STR R3, [SP,#0x1C+var_18]
  2743. STR R3, [SP,#0x1C+var_1C]
  2744. MOVS R2, #0
  2745. LDR R3, =0x371A0000
  2746. MOVS R4, R0
  2747. MOVS R5, R1
  2748. BL sub_D410F8C
  2749. CMP R0, #0
  2750. BNE loc_D411266
  2751.  
  2752. loc_D41125E ; CODE XREF: sub_D411240+38j
  2753. ; sub_D411240+44j
  2754. ADD SP, SP, #8
  2755. POP {R4-R7}
  2756. POP {R1}
  2757. BX R1
  2758. ; ---------------------------------------------------------------------------
  2759.  
  2760. loc_D411266 ; CODE XREF: sub_D411240+1Cj
  2761. ADD R3, SP, #0x1C+var_18
  2762. STR R3, [SP,#0x1C+var_1C]
  2763. MOVS R0, R4
  2764. MOVS R1, R5
  2765. MOVS R2, R6
  2766. LDR R3, =0x29020000
  2767. BL sub_D410F8C
  2768. CMP R0, #0
  2769. BEQ loc_D41125E
  2770. CMP R7, #0
  2771. BEQ loc_D411282
  2772. LDR R3, [SP,#0x1C+var_18]
  2773. STR R3, [R7]
  2774.  
  2775. loc_D411282 ; CODE XREF: sub_D411240+3Cj
  2776. MOVS R0, #1
  2777. B loc_D41125E
  2778. ; End of function sub_D411240
  2779.  
  2780. ; ---------------------------------------------------------------------------
  2781. ALIGN 4
  2782. dword_D411288 DCD 0x371A0000 ; DATA XREF: sub_D411240+10r
  2783. dword_D41128C DCD 0x29020000 ; DATA XREF: sub_D411240+30r
  2784.  
  2785. ; =============== S U B R O U T I N E =======================================
  2786.  
  2787.  
  2788. sub_D411290 ; CODE XREF: Main+668p
  2789.  
  2790. var_2C = -0x2C
  2791. var_28 = -0x28
  2792.  
  2793. PUSH {R4-R7,LR}
  2794. MOV R7, R8
  2795. PUSH {R7}
  2796. LDR R3, =SDHC_REG_BASE
  2797. MOV R8, R2
  2798. LSLS R2, R0, #2
  2799. LDR R3, [R2,R3]
  2800. MOVS R5, R1
  2801. MOVS R2, #0xE0
  2802. LSLS R1, R1, #8
  2803. MOVS R4, R0
  2804. ADDS R6, R3, R1
  2805. SUB SP, SP, #0x14
  2806. MOVS R1, R5
  2807. LSLS R2, R2, #0x13
  2808. BL sub_D410E74
  2809. MOVS R0, R4
  2810. MOVS R1, R5
  2811. BL sub_D410EA4
  2812. CMP R0, #0
  2813. BNE loc_D4112CA
  2814.  
  2815. loc_D4112BE ; CODE XREF: sub_D411290+50j
  2816. ; sub_D411290+9Cj ...
  2817. ADD SP, SP, #0x14
  2818. POP {R3}
  2819. MOV R8, R3
  2820. POP {R4-R7}
  2821. POP {R1}
  2822. BX R1
  2823. ; ---------------------------------------------------------------------------
  2824.  
  2825. loc_D4112CA ; CODE XREF: sub_D411290+2Cj
  2826. MOVS R0, R4
  2827. MOVS R1, R5
  2828. MOVS R2, #0xA
  2829. BL sub_D410E28
  2830. MOVS R0, R4
  2831. MOVS R1, R5
  2832. MOVS R2, #0x40
  2833. BL sub_D410EF8
  2834. CMP R0, #0
  2835. BEQ loc_D4112BE
  2836. MOVS R0, R4
  2837. MOVS R1, R5
  2838. MOVS R2, #0
  2839. BL sub_D411108
  2840. CMP R0, #0
  2841. BNE loc_D41138C
  2842. LDR R3, [R6,#0x30]
  2843. LSLS R2, R3, #0xF
  2844. BPL loc_D41138C
  2845. MOVS R3, #0x10000
  2846. STR R3, [R6,#0x30]
  2847. MOVS R3, #0x80
  2848. LDR R2, [R6,#0x2C]
  2849. LSLS R3, R3, #0x12
  2850. ORRS R2, R3
  2851. STR R2, [R6,#0x2C]
  2852. LDR R2, [R6,#0x2C]
  2853. MOVS R3, #1
  2854. LSRS R2, R2, #0x19
  2855. TST R2, R3
  2856. BEQ loc_D411320
  2857. MOVS R7, #1
  2858.  
  2859. loc_D411312 ; CODE XREF: sub_D411290+8Ej
  2860. MOVS R0, #0xA
  2861. BL UDelay
  2862. LDR R3, [R6,#0x2C]
  2863. LSRS R3, R3, #0x19
  2864. TST R3, R7
  2865. BNE loc_D411312
  2866.  
  2867. loc_D411320 ; CODE XREF: sub_D411290+7Ej
  2868. MOVS R0, R4
  2869. MOVS R1, R5
  2870. MOVS R2, #0
  2871. BL sub_D41105C
  2872. CMP R0, #0
  2873. BEQ loc_D4112BE
  2874. MOVS R0, R4
  2875. MOVS R1, R5
  2876. MOVS R2, #0
  2877. MOV R3, SP
  2878. MOV R7, SP
  2879. BL sub_D411240
  2880. CMP R0, #0
  2881. BEQ loc_D4112BE
  2882. MOVS R6, #0
  2883. B loc_D411366
  2884. ; ---------------------------------------------------------------------------
  2885.  
  2886. loc_D411344 ; CODE XREF: sub_D411290+DAj
  2887. LDR R3, =0x1FFE00
  2888. MOVS R0, R4
  2889. ANDS R2, R3
  2890. MOVS R1, R5
  2891. MOVS R3, R7
  2892. BL sub_D411240
  2893. CMP R0, #0
  2894. BEQ loc_D41138C
  2895. MOVS R0, #0x64
  2896. BL UDelay
  2897. LDR R3, =0x1388
  2898. MOVS R2, R6
  2899. ADDS R6, #1
  2900. CMP R2, R3
  2901. BHI loc_D41138C
  2902.  
  2903. loc_D411366 ; CODE XREF: sub_D411290+B2j
  2904. LDR R2, [SP,#0x2C+var_2C]
  2905. CMP R2, #0
  2906. BGE loc_D411344
  2907. MOVS R0, R4
  2908. MOVS R1, R5
  2909. ADD R2, SP, #0x2C+var_28
  2910. BL sub_D411078
  2911. CMP R0, #0
  2912. BEQ loc_D4112BE
  2913. MOVS R0, R4
  2914. MOVS R1, R5
  2915. MOV R2, R8
  2916. BL sub_D4110C0
  2917. CMP R0, #0
  2918. BEQ loc_D4112BE
  2919. MOVS R0, #1
  2920. B loc_D4112BE
  2921. ; ---------------------------------------------------------------------------
  2922.  
  2923. loc_D41138C ; CODE XREF: sub_D411290+5Ej
  2924. ; sub_D411290+64j ...
  2925. MOVS R0, #0
  2926. B loc_D4112BE
  2927. ; End of function sub_D411290
  2928.  
  2929. ; ---------------------------------------------------------------------------
  2930. off_D411390 DCD SDHC_REG_BASE ; DATA XREF: sub_D411290+6r
  2931. dword_D411394 DCD 0x1FFE00 ; DATA XREF: sub_D411290:loc_D411344r
  2932. dword_D411398 DCD 0x1388 ; DATA XREF: sub_D411290+CCr
  2933.  
  2934. ; =============== S U B R O U T I N E =======================================
  2935.  
  2936.  
  2937. sub_D41139C ; CODE XREF: Main+68Cp
  2938.  
  2939. var_20 = -0x20
  2940. var_1C = -0x1C
  2941. arg_0 = 0
  2942.  
  2943. PUSH {R4-R7,LR}
  2944. MOV R7, R8
  2945. PUSH {R7}
  2946. MOVS R6, R2
  2947. SUB SP, SP, #8
  2948. MOVS R2, R3
  2949. MOVS R4, R0
  2950. MOVS R5, R1
  2951. BL sub_D410EF8
  2952. CMP R0, #0
  2953. BNE loc_D4113C0
  2954.  
  2955. loc_D4113B4 ; CODE XREF: sub_D41139C+32j
  2956. ; sub_D41139C+46j ...
  2957. ADD SP, SP, #8
  2958. POP {R3}
  2959. MOV R8, R3
  2960. POP {R4-R7}
  2961. POP {R1}
  2962. BX R1
  2963. ; ---------------------------------------------------------------------------
  2964.  
  2965. loc_D4113C0 ; CODE XREF: sub_D41139C+16j
  2966. MOVS R0, R4
  2967. MOVS R1, R5
  2968. MOVS R2, R6
  2969. MOVS R3, #0
  2970. BL sub_D411120
  2971. CMP R0, #0
  2972. BEQ loc_D4113B4
  2973. ADD R2, SP, #0x20+var_1C
  2974. MOV R8, R2
  2975. MOVS R0, R4
  2976. MOVS R1, R5
  2977. MOVS R2, R6
  2978. MOV R3, R8
  2979. BL sub_D4111A4
  2980. CMP R0, #0
  2981. BEQ loc_D4113B4
  2982. LDR R3, [SP,#0x20+var_1C]
  2983. LSLS R2, R3, #0x17
  2984. BMI loc_D41140C
  2985. MOVS R7, #1
  2986.  
  2987. loc_D4113EC ; CODE XREF: sub_D41139C+6Ej
  2988. MOVS R0, #0x64
  2989. BL UDelay
  2990. MOVS R0, R4
  2991. MOVS R1, R5
  2992. MOVS R2, R6
  2993. MOV R3, R8
  2994. BL sub_D4111A4
  2995. CMP R0, #0
  2996. BEQ loc_D411436
  2997. LDR R3, [SP,#0x20+var_1C]
  2998. MOVS R2, R7
  2999. LSRS R3, R3, #8
  3000. BICS R2, R3
  3001. BNE loc_D4113EC
  3002.  
  3003. loc_D41140C ; CODE XREF: sub_D41139C+4Cj
  3004. MOVS R2, #0x80
  3005. MOVS R0, R4
  3006. MOVS R1, R5
  3007. LSLS R2, R2, #2
  3008. MOVS R3, #0
  3009. BL sub_D4111BC
  3010. CMP R0, #0
  3011. BEQ loc_D4113B4
  3012. MOVS R3, #0
  3013. STR R3, [SP,#0x20+var_20]
  3014. MOVS R0, R4
  3015. MOVS R1, R5
  3016. LDR R2, [SP,#0x20+arg_0]
  3017. MOVS R3, R6
  3018. BL sub_D4111D4
  3019. CMP R0, #0
  3020. BEQ loc_D4113B4
  3021. MOVS R0, #1
  3022. B loc_D4113B4
  3023. ; ---------------------------------------------------------------------------
  3024.  
  3025. loc_D411436 ; CODE XREF: sub_D41139C+64j
  3026. MOVS R0, #0
  3027. B loc_D4113B4
  3028. ; End of function sub_D41139C
  3029.  
  3030. ; ---------------------------------------------------------------------------
  3031. ALIGN 4
  3032.  
  3033. ; =============== S U B R O U T I N E =======================================
  3034.  
  3035.  
  3036. sub_D41143C ; CODE XREF: sub_D411544+10p
  3037.  
  3038. arg_0 = 0
  3039. arg_4 = 4
  3040.  
  3041. PUSH {R4-R7,LR}
  3042. MOV R7, R11
  3043. MOV R6, R10
  3044. MOV R5, R9
  3045. MOV R4, R8
  3046. PUSH {R4-R7}
  3047. MOV R11, R3
  3048. LDR R3, =SDHC_REG_BASE
  3049. LSLS R0, R0, #2
  3050. LDR R3, [R0,R3]
  3051. LSLS R1, R1, #8
  3052. ADDS R5, R3, R1
  3053. MOVS R0, #0x12
  3054. MOVS R1, #0
  3055. MOVS R4, R2
  3056. BL sub_D410E4C
  3057. LDR R2, [SP,#0x24+arg_0]
  3058. LSLS R3, R2, #0x10
  3059. MOV R2, R11
  3060. ORRS R3, R2
  3061. STR R3, [R5,#4]
  3062. LDR R3, =0x12380036
  3063. LSLS R0, R0, #0x10
  3064. ORRS R0, R3
  3065. STR R4, [R5,#8]
  3066. STR R0, [R5,#0xC]
  3067. LDR R3, [R5,#0x30]
  3068. LSLS R2, R3, #0x1F
  3069. BMI loc_D411488
  3070. MOVS R4, #1
  3071.  
  3072. loc_D41147A ; CODE XREF: sub_D41143C+4Aj
  3073. MOVS R0, #1
  3074. BL UDelay
  3075. LDR R3, [R5,#0x30]
  3076. MOVS R2, R4
  3077. BICS R2, R3
  3078. BNE loc_D41147A
  3079.  
  3080. loc_D411488 ; CODE XREF: sub_D41143C+3Aj
  3081. MOVS R3, #9
  3082. STR R3, [R5,#0x30]
  3083. LDR R2, [SP,#0x24+arg_0]
  3084. MOVS R3, #0
  3085. LDR R0, [R5,#0x30]
  3086. MOV R8, R3
  3087. CMP R2, #0
  3088. BLS loc_D4114F6
  3089. MOV R3, R11
  3090. LSRS R3, R3, #2
  3091. MOVS R2, #0
  3092. MOV R9, R3
  3093. MOV R10, R2
  3094.  
  3095. loc_D4114A2 ; CODE XREF: sub_D41143C+B8j
  3096. MOV R3, R9
  3097. CMP R3, #0
  3098. BLS loc_D4114EA
  3099. LDR R7, [SP,#0x24+arg_4]
  3100. MOV R6, R9
  3101. ADD R7, R10
  3102.  
  3103. loc_D4114AE ; CODE XREF: sub_D41143C+ACj
  3104. LDR R3, [R5,#0x24]
  3105. LSLS R2, R3, #0x14
  3106. BMI loc_D4114C6
  3107. MOVS R4, #1
  3108.  
  3109. loc_D4114B6 ; CODE XREF: sub_D41143C+88j
  3110. MOVS R0, #0xA
  3111. BL UDelay
  3112. LDR R3, [R5,#0x24]
  3113. MOVS R2, R4
  3114. LSRS R3, R3, #0xB
  3115. BICS R2, R3
  3116. BNE loc_D4114B6
  3117.  
  3118. loc_D4114C6 ; CODE XREF: sub_D41143C+76j
  3119. LDR R0, [R5,#0x20]
  3120. MOVS R3, #0xFF00
  3121. LSRS R2, R0, #8
  3122. ANDS R2, R3
  3123. LSRS R1, R0, #0x18
  3124. MOVS R3, #0xFF
  3125. ORRS R1, R2
  3126. LSLS R3, R3, #0x10
  3127. LSLS R2, R0, #8
  3128. ANDS R2, R3
  3129. ORRS R1, R2
  3130. LSLS R3, R0, #0x18
  3131. ORRS R1, R3
  3132. SUBS R6, #1
  3133. STMIA R7!, {R1}
  3134. CMP R6, #0
  3135. BNE loc_D4114AE
  3136.  
  3137. loc_D4114EA ; CODE XREF: sub_D41143C+6Aj
  3138. MOVS R3, #1
  3139. LDR R2, [SP,#0x24+arg_0]
  3140. ADD R8, R3
  3141. ADD R10, R11
  3142. CMP R8, R2
  3143. BCC loc_D4114A2
  3144.  
  3145. loc_D4114F6 ; CODE XREF: sub_D41143C+5Aj
  3146. LDR R0, [R5,#0x30]
  3147. LSLS R3, R0, #0x1E
  3148. BMI loc_D411514
  3149. MOVS R4, #1
  3150.  
  3151. loc_D4114FE ; CODE XREF: sub_D41143C+D6j
  3152. LSRS R3, R0, #0xF
  3153. TST R3, R4
  3154. BNE loc_D411532
  3155. MOVS R0, #0xA
  3156. BL UDelay
  3157. LDR R0, [R5,#0x30]
  3158. MOVS R2, R4
  3159. LSRS R3, R0, #1
  3160. BICS R2, R3
  3161. BNE loc_D4114FE
  3162.  
  3163. loc_D411514 ; CODE XREF: sub_D41143C+BEj
  3164. LDR R0, [R5,#4]
  3165. LDR R3, =0xFFFF0000
  3166. TST R0, R3
  3167. BNE loc_D411532
  3168. MOVS R3, #2
  3169. STR R3, [R5,#0x30]
  3170. MOVS R0, #1
  3171.  
  3172. loc_D411522 ; CODE XREF: sub_D41143C+F8j
  3173. POP {R3-R6}
  3174. MOV R8, R3
  3175. MOV R9, R4
  3176. MOV R10, R5
  3177. MOV R11, R6
  3178. POP {R4-R7}
  3179. POP {R1}
  3180. BX R1
  3181. ; ---------------------------------------------------------------------------
  3182.  
  3183. loc_D411532 ; CODE XREF: sub_D41143C+C6j
  3184. ; sub_D41143C+DEj
  3185. MOVS R0, #0
  3186. B loc_D411522
  3187. ; End of function sub_D41143C
  3188.  
  3189. ; ---------------------------------------------------------------------------
  3190. ALIGN 4
  3191. off_D411538 DCD SDHC_REG_BASE ; DATA XREF: sub_D41143C+Er
  3192. dword_D41153C DCD 0x12380036 ; DATA XREF: sub_D41143C+2Cr
  3193. dword_D411540 DCD 0xFFFF0000 ; DATA XREF: sub_D41143C+DAr
  3194.  
  3195. ; =============== S U B R O U T I N E =======================================
  3196.  
  3197.  
  3198. sub_D411544 ; CODE XREF: Main+6A6p Main+6DCp
  3199.  
  3200. var_C = -0xC
  3201. var_8 = -8
  3202.  
  3203. PUSH {LR}
  3204. SUB SP, SP, #8
  3205. LSRS R3, R3, #9
  3206. STR R3, [SP,#0xC+var_C]
  3207. MOVS R3, #0x80
  3208. STR R2, [SP,#0xC+var_8]
  3209. LSLS R3, R3, #2
  3210. MOVS R2, #0
  3211. BL sub_D41143C
  3212. NEGS R3, R0
  3213. ORRS R3, R0
  3214. LSRS R0, R3, #0x1F
  3215. ADD SP, SP, #8
  3216. POP {R1}
  3217. BX R1
  3218. ; End of function sub_D411544
  3219.  
  3220.  
  3221. ; =============== S U B R O U T I N E =======================================
  3222.  
  3223.  
  3224. NAND_Read ; CODE XREF: Main:loc_D410620p
  3225. PUSH {R4,R5,LR}
  3226. LDR R1, =NAND_CONFIG
  3227. MOVS R3, #0x80
  3228. LDR R2, [R1]
  3229. LSLS R3, R3, #0x14
  3230. ORRS R2, R3
  3231. LDR R3, =NAND_DATABUF
  3232. MOVS R4, #0
  3233. STR R2, [R1]
  3234. STR R4, [R3]
  3235. ADDS R3, #4
  3236. STR R4, [R3]
  3237. SUBS R3, #0xC
  3238. STR R4, [R3]
  3239. ADDS R3, #4
  3240. STR R4, [R3]
  3241. CMP R0, #1
  3242. BEQ loc_D4115CE
  3243. LDR R3, =NAND_UNK1
  3244. LDR R2, [R3]
  3245. MOVS R1, #2
  3246. BICS R2, R1
  3247.  
  3248. loc_D411590 ; CODE XREF: NAND_Read+72j
  3249. STR R2, [R3]
  3250. LDR R2, =NAND_CTRL
  3251. LDR R3, =0x80FF8000
  3252. STR R3, [R2]
  3253. LDR R3, [R2]
  3254. MOVS R4, #0
  3255. CMP R3, #0
  3256. BLT loc_D4115B2
  3257.  
  3258. loc_D4115A0 ; CODE XREF: NAND_Read+56j
  3259. LDR R3, =NAND_UNK1
  3260. LDR R2, [R3]
  3261. MOVS R1, #2
  3262. BICS R2, R1
  3263. STR R2, [R3]
  3264. MOVS R0, #1
  3265.  
  3266. loc_D4115AC ; CODE XREF: NAND_Read+68j
  3267. POP {R4,R5}
  3268. POP {R1}
  3269. BX R1
  3270. ; ---------------------------------------------------------------------------
  3271.  
  3272. loc_D4115B2 ; CODE XREF: NAND_Read+3Aj
  3273. MOVS R5, R2
  3274. B loc_D4115BC
  3275. ; ---------------------------------------------------------------------------
  3276.  
  3277. loc_D4115B6 ; CODE XREF: NAND_Read+64j
  3278. LDR R3, [R5]
  3279. CMP R3, #0
  3280. BGE loc_D4115A0
  3281.  
  3282. loc_D4115BC ; CODE XREF: NAND_Read+50j
  3283. MOVS R0, #0xA
  3284. BL UDelay
  3285. MOVS R3, R4
  3286. ADDS R4, #1
  3287. CMP R3, #0x4B
  3288. BLS loc_D4115B6
  3289. MOVS R0, #0
  3290. B loc_D4115AC
  3291. ; ---------------------------------------------------------------------------
  3292.  
  3293. loc_D4115CE ; CODE XREF: NAND_Read+22j
  3294. ADDS R3, #0xC
  3295. LDR R2, [R3]
  3296. MOVS R1, #2
  3297. ORRS R2, R1
  3298. B loc_D411590
  3299. ; End of function NAND_Read
  3300.  
  3301. ; ---------------------------------------------------------------------------
  3302. off_D4115D8 DCD NAND_CONFIG ; DATA XREF: NAND_Read+2r
  3303. off_D4115DC DCD NAND_DATABUF ; DATA XREF: NAND_Read+Cr
  3304. off_D4115E0 DCD NAND_UNK1 ; DATA XREF: NAND_Read+24r
  3305. ; NAND_Read:loc_D4115A0r
  3306. off_D4115E4 DCD NAND_CTRL ; DATA XREF: NAND_Read+2Er
  3307. dword_D4115E8 DCD 0x80FF8000 ; DATA XREF: NAND_Read+30r
  3308.  
  3309. ; =============== S U B R O U T I N E =======================================
  3310.  
  3311.  
  3312. sub_D4115EC ; CODE XREF: Main+43Cp Main+58Ap
  3313.  
  3314. var_34 = -0x34
  3315. var_30 = -0x30
  3316. var_2C = -0x2C
  3317. var_28 = -0x28
  3318.  
  3319. PUSH {R4-R7,LR}
  3320. MOV R7, R11
  3321. MOV R6, R10
  3322. MOV R5, R9
  3323. MOV R4, R8
  3324. PUSH {R4-R7}
  3325. SUB SP, SP, #0x10
  3326. ADDS R5, R1, R2
  3327. STR R3, [SP,#0x34+var_28]
  3328. MOVS R4, R1
  3329. ADDS R3, R5, #2
  3330. MOV R8, R0
  3331. MOVS R6, R1
  3332. CMP R3, R4
  3333. BLS loc_D411706
  3334. LSLS R3, R2, #0xB
  3335. ADD R3, R8
  3336. MOVS R1, #1
  3337. NEGS R2, R1
  3338. STR R3, [SP,#0x34+var_2C]
  3339. MOV R12, R2
  3340.  
  3341. loc_D411616 ; CODE XREF: sub_D4115EC+30j
  3342. ; sub_D4115EC+118j
  3343. LDR R1, =NAND_CTRL
  3344. LDR R3, [R1]
  3345. CMP R3, #0
  3346. BLT loc_D411616
  3347. CMP R5, R4
  3348. BLS loc_D411668
  3349. LSRS R3, R4, #0x12
  3350. CMP R3, #0
  3351. BEQ loc_D41170A
  3352. LDR R2, =NAND_UNK1
  3353. LDR R3, [R2]
  3354. MOVS R2, #2
  3355. ORRS R3, R2
  3356. ADDS R1, #0x18
  3357.  
  3358. loc_D411632 ; CODE XREF: sub_D4115EC+128j
  3359. STR R3, [R1]
  3360. LDR R3, =0x3FFFF
  3361. LDR R2, =NAND_ADDR2
  3362. ANDS R3, R4
  3363. STR R3, [R2]
  3364. MOVS R3, #0x9F
  3365. SUBS R2, #0xC
  3366. LSLS R3, R3, #0x18
  3367. STR R3, [R2]
  3368. ADDS R1, R2, #0
  3369.  
  3370. loc_D411646 ; CODE XREF: sub_D4115EC+5Ej
  3371. LDR R3, [R1]
  3372. CMP R3, #0
  3373. BLT loc_D411646
  3374. SUBS R3, R4, R6
  3375. LDR R2, =NAND_DATABUF
  3376. LSLS R3, R3, #0xB
  3377. ADD R3, R8
  3378. STR R3, [R2]
  3379. MOVS R3, #1
  3380. LDR R2, [SP,#0x34+var_2C]
  3381. ANDS R3, R4
  3382. LSLS R3, R3, #7
  3383. ADDS R3, R2, R3
  3384. LDR R2, =NAND_ECCBUF
  3385. STR R3, [R2]
  3386. LDR R3, =0x8030B840
  3387. STR R3, [R1]
  3388.  
  3389. loc_D411668 ; CODE XREF: sub_D4115EC+34j
  3390. LDR R3, [SP,#0x34+var_28]
  3391. CMP R3, #0
  3392. BEQ loc_D4116FA
  3393. CMP R4, R6
  3394. BLS loc_D4116FA
  3395. ADDS R3, R5, #1
  3396. CMP R3, R4
  3397. BLS loc_D4116FA
  3398. MOV R1, R12
  3399. LSLS R3, R1, #0xB
  3400. ADD R3, R8
  3401. MOVS R2, #1
  3402. STR R3, [SP,#0x34+var_30]
  3403. SUBS R3, R4, #1
  3404. ANDS R3, R2
  3405. LDR R1, [SP,#0x34+var_2C]
  3406. LSLS R3, R3, #7
  3407. ADDS R3, R1, R3
  3408. MOVS R2, #0xFF
  3409. LSLS R1, R2, #0x10
  3410. STR R3, [SP,#0x34+var_34]
  3411. LSLS R3, R2, #0x18
  3412. LSLS R2, R2, #8
  3413. MOVS R7, #0
  3414. MOV R11, R3
  3415. MOV R9, R1
  3416. MOV R10, R2
  3417.  
  3418. loc_D41169E ; CODE XREF: sub_D4115EC+10Cj
  3419. LDR R1, [SP,#0x34+var_34]
  3420. LSLS R3, R7, #2
  3421. ADDS R2, R1, R3
  3422. LDR R0, [R2,#0x40]
  3423. MOVS R2, R1
  3424. ADDS R2, #0x30
  3425. LDR R2, [R2,R3]
  3426. CMP R2, R0
  3427. BEQ loc_D4116F4
  3428. MOV R3, R11
  3429. ANDS R3, R2
  3430. LSRS R1, R3, #0x18
  3431. MOV R3, R9
  3432. ANDS R3, R2
  3433. LSRS R3, R3, #8
  3434. ORRS R1, R3
  3435. MOV R3, R10
  3436. ANDS R3, R2
  3437. LSLS R3, R3, #8
  3438. ORRS R1, R3
  3439. MOVS R3, #0xFF
  3440. ANDS R2, R3
  3441. LSLS R3, R2, #0x18
  3442. ORRS R1, R3
  3443. MOV R2, R11
  3444. MOV R3, R9
  3445. ANDS R2, R0
  3446. ANDS R3, R0
  3447. LSRS R3, R3, #8
  3448. LSRS R2, R2, #0x18
  3449. ORRS R2, R3
  3450. MOV R3, R10
  3451. ANDS R3, R0
  3452. LSLS R3, R3, #8
  3453. ORRS R2, R3
  3454. MOVS R3, #0xFF
  3455. ANDS R0, R3
  3456. LSLS R3, R0, #0x18
  3457. ORRS R2, R3
  3458. EORS R1, R2
  3459. SUBS R3, R1, #1
  3460. TST R3, R1
  3461. BNE loc_D411716
  3462.  
  3463. loc_D4116F4 ; CODE XREF: sub_D4115EC+C2j
  3464. ; sub_D4115EC+164j
  3465. ADDS R7, #1
  3466. CMP R7, #4
  3467. BCC loc_D41169E
  3468.  
  3469. loc_D4116FA ; CODE XREF: sub_D4115EC+80j
  3470. ; sub_D4115EC+84j ...
  3471. MOVS R1, #1
  3472. ADDS R4, #1
  3473. ADDS R3, R5, #2
  3474. ADD R12, R1
  3475. CMP R3, R4
  3476. BHI loc_D411616
  3477.  
  3478. loc_D411706 ; CODE XREF: sub_D4115EC+1Cj
  3479. MOVS R0, #1
  3480. B loc_D411726
  3481. ; ---------------------------------------------------------------------------
  3482.  
  3483. loc_D41170A ; CODE XREF: sub_D4115EC+3Aj
  3484. LDR R2, =NAND_UNK1
  3485. LDR R3, [R2]
  3486. LDR R1, =NAND_UNK1
  3487. MOVS R2, #2
  3488. BICS R3, R2
  3489. B loc_D411632
  3490. ; ---------------------------------------------------------------------------
  3491.  
  3492. loc_D411716 ; CODE XREF: sub_D4115EC+106j
  3493. LDR R3, =0xFFF
  3494. LSRS R2, R1, #0x10
  3495. ANDS R3, R1
  3496. LDR R1, =0xFFF
  3497. EORS R3, R2
  3498. CMP R3, R1
  3499. BEQ loc_D411738
  3500. MOVS R0, #0
  3501.  
  3502. loc_D411726 ; CODE XREF: sub_D4115EC+11Cj
  3503. ADD SP, SP, #0x10
  3504. POP {R3-R6}
  3505. MOV R8, R3
  3506. MOV R9, R4
  3507. MOV R10, R5
  3508. MOV R11, R6
  3509. POP {R4-R7}
  3510. POP {R1}
  3511. BX R1
  3512. ; ---------------------------------------------------------------------------
  3513.  
  3514. loc_D411738 ; CODE XREF: sub_D4115EC+136j
  3515. LDR R3, [SP,#0x34+var_30]
  3516. LSLS R0, R7, #9
  3517. ADDS R0, R0, R3
  3518. LSLS R1, R2, #0x14
  3519. MOVS R3, #7
  3520. ANDS R2, R3
  3521. LSRS R1, R1, #0x17
  3522. MOVS R3, #1
  3523. LSLS R3, R2
  3524. LDRB R2, [R1,R0]
  3525. EORS R3, R2
  3526. STRB R3, [R1,R0]
  3527. B loc_D4116F4
  3528. ; End of function sub_D4115EC
  3529.  
  3530. ; ---------------------------------------------------------------------------
  3531. ALIGN 4
  3532. off_D411754 DCD NAND_CTRL ; DATA XREF: sub_D4115EC:loc_D411616r
  3533. off_D411758 DCD NAND_UNK1 ; DATA XREF: sub_D4115EC+3Cr
  3534. ; sub_D4115EC:loc_D41170Ar ...
  3535. dword_D41175C DCD 0x3FFFF ; DATA XREF: sub_D4115EC+48r
  3536. off_D411760 DCD NAND_ADDR2 ; DATA XREF: sub_D4115EC+4Ar
  3537. off_D411764 DCD NAND_DATABUF ; DATA XREF: sub_D4115EC+62r
  3538. off_D411768 DCD NAND_ECCBUF ; DATA XREF: sub_D4115EC+74r
  3539. dword_D41176C DCD 0x8030B840 ; DATA XREF: sub_D4115EC+78r
  3540. dword_D411770 DCD 0xFFF ; DATA XREF: sub_D4115EC:loc_D411716r
  3541. ; sub_D4115EC+130r
  3542.  
  3543. ; =============== S U B R O U T I N E =======================================
  3544.  
  3545.  
  3546. sub_D411774 ; CODE XREF: Main:loc_D410516p
  3547. LDR R3, =dword_D413460
  3548. STR R0, [R3]
  3549. BX LR
  3550. ; End of function sub_D411774
  3551.  
  3552. ; ---------------------------------------------------------------------------
  3553. ALIGN 4
  3554. off_D41177C DCD dword_D413460 ; DATA XREF: sub_D411774r
  3555.  
  3556. ; =============== S U B R O U T I N E =======================================
  3557.  
  3558.  
  3559. SetGPIO1OutputDirection ; CODE XREF: Main+196p
  3560. LDR R2, =HW_GPIO1INTENABLE
  3561. LDR R1, =0xFFFFC3FF
  3562. LDR R3, [R2]
  3563. ANDS R3, R1
  3564. STR R3, [R2]
  3565. SUBS R2, #0x14
  3566. LDR R3, [R2]
  3567. ANDS R3, R1
  3568. STR R3, [R2]
  3569. LDR R1, =HW_GPIO1DIR
  3570. MOVS R3, #0xE0
  3571. LDR R2, [R1]
  3572. LSLS R3, R3, #5
  3573. ORRS R2, R3
  3574. STR R2, [R1]
  3575. SUBS R1, #8
  3576. LDR R2, [R1]
  3577. MOVS R3, #0x3C00
  3578. ORRS R2, R3
  3579. STR R2, [R1]
  3580. BX LR
  3581. ; End of function SetGPIO1OutputDirection
  3582.  
  3583. ; ---------------------------------------------------------------------------
  3584. off_D4117AC DCD HW_GPIO1INTENABLE ; DATA XREF: SetGPIO1OutputDirectionr
  3585. dword_D4117B0 DCD 0xFFFFC3FF ; DATA XREF: SetGPIO1OutputDirection+2r
  3586. off_D4117B4 DCD HW_GPIO1DIR ; DATA XREF: SetGPIO1OutputDirection+12r
  3587.  
  3588. ; =============== S U B R O U T I N E =======================================
  3589.  
  3590.  
  3591. Enable_EEP_CLK ; CODE XREF: sub_D411810+34p
  3592. ; sub_D411810+5Ap ...
  3593. LDR R1, =HW_GPIO1OUT
  3594. MOVS R3, #0x80
  3595. LDR R2, [R1]
  3596. LSLS R3, R3, #4 ; R3 == 0x800
  3597. ORRS R2, R3
  3598. STR R2, [R1]
  3599. BX LR
  3600. ; End of function Enable_EEP_CLK
  3601.  
  3602. ; ---------------------------------------------------------------------------
  3603. ALIGN 4
  3604. off_D4117C8 DCD HW_GPIO1OUT ; DATA XREF: Enable_EEP_CLKr
  3605.  
  3606. ; =============== S U B R O U T I N E =======================================
  3607.  
  3608.  
  3609. Disable_EEP_CLK ; CODE XREF: sub_D411810+1Ep
  3610. ; sub_D411810:loc_D41185Ap ...
  3611. LDR R3, =HW_GPIO1OUT
  3612. LDR R1, =0xFFFFF7FF
  3613. LDR R2, [R3]
  3614. ANDS R2, R1
  3615. STR R2, [R3]
  3616. BX LR
  3617. ; End of function Disable_EEP_CLK
  3618.  
  3619. ; ---------------------------------------------------------------------------
  3620. off_D4117D8 DCD HW_GPIO1OUT ; DATA XREF: Disable_EEP_CLKr
  3621. dword_D4117DC DCD 0xFFFFF7FF ; DATA XREF: Disable_EEP_CLK+2r
  3622.  
  3623. ; =============== S U B R O U T I N E =======================================
  3624.  
  3625.  
  3626. Enable_EEP_CS ; CODE XREF: sub_D411810+22p
  3627. ; sub_D411810+4Ep
  3628. LDR R1, =HW_GPIO1OUT
  3629. MOVS R3, #0x80
  3630. LDR R2, [R1]
  3631. LSLS R3, R3, #3 ; R3 == 0x400
  3632. ORRS R2, R3
  3633. STR R2, [R1]
  3634. BX LR
  3635. ; End of function Enable_EEP_CS
  3636.  
  3637. ; ---------------------------------------------------------------------------
  3638. ALIGN 0x10
  3639. off_D4117F0 DCD HW_GPIO1OUT ; DATA XREF: Enable_EEP_CSr
  3640.  
  3641. ; =============== S U B R O U T I N E =======================================
  3642.  
  3643.  
  3644. Disable_EEP_CS ; CODE XREF: sub_D411810+28p
  3645. ; sub_D411810+8Ep
  3646. LDR R1, =HW_GPIO1OUT
  3647. LDR R2, =0xFFFFEFFF
  3648. LDR R3, [R1]
  3649. ANDS R2, R3
  3650. MOVS R3, #1
  3651. ANDS R3, R0
  3652. LSLS R3, R3, #0xC
  3653. ORRS R2, R3
  3654. STR R2, [R1]
  3655. BX LR
  3656. ; End of function Disable_EEP_CS
  3657.  
  3658. ; ---------------------------------------------------------------------------
  3659. off_D411808
  3660. ; DATA XREF: Disable_EEP_CSr
  3661. dword_D41180C DCD 0xFFFFEFFF ; DATA XREF: Disable_EEP_CS+2r
  3662.  
  3663. ; =============== S U B R O U T I N E =======================================
  3664.  
  3665.  
  3666. sub_D411810 ; CODE XREF: AES_HW_Decrypt_0+24p
  3667. PUSH {R4-R7,LR}
  3668. MOV R7, R8
  3669. PUSH {R7}
  3670. MOVS R7, #0xFF
  3671. MOVS R3, #0xC0
  3672. ANDS R7, R0
  3673. LSLS R3, R3, #3
  3674. LDR R6, =dword_D413460
  3675. MOV R8, R1
  3676. ORRS R7, R3
  3677. MOVS R5, #0xA
  3678.  
  3679. loc_D411826 ; CODE XREF: sub_D411810+42j
  3680. MOVS R4, R7
  3681. MOVS R3, #1
  3682. LSRS R4, R5
  3683. ANDS R4, R3
  3684. BL Disable_EEP_CLK
  3685. BL Enable_EEP_CS
  3686. MOVS R0, R4
  3687. BL Disable_EEP_CS
  3688. LDR R0, [R6]
  3689. LSRS R0, R0, #1
  3690. BL sub_D411994
  3691. BL Enable_EEP_CLK
  3692. LDR R0, [R6]
  3693. LSRS R0, R0, #1
  3694. BL sub_D411994
  3695. SUBS R5, #1
  3696. BCS loc_D411826
  3697. LDR R6, =dword_D413460
  3698. MOVS R5, #0
  3699. MOVS R4, #0xF
  3700.  
  3701. loc_D41185A ; CODE XREF: sub_D411810+74j
  3702. BL Disable_EEP_CLK
  3703. BL Enable_EEP_CS
  3704. LDR R0, [R6]
  3705. LSRS R0, R0, #1
  3706. BL sub_D411994
  3707. BL Enable_EEP_CLK
  3708. LDR R0, [R6]
  3709. LSRS R0, R0, #1
  3710. BL sub_D411994
  3711. LDR R3, =HW_GPIO1IN
  3712. LDR R3, [R3]
  3713. LSLS R3, R3, #0x12
  3714. LSRS R3, R3, #0x1F
  3715. LSLS R3, R4
  3716. ORRS R5, R3
  3717. SUBS R4, #1
  3718. BCS loc_D41185A
  3719. MOV R3, R8
  3720. STR R5, [R3]
  3721. LDR R6, =HW_GPIO1OUT
  3722. LDR R5, =dword_D413460
  3723. MOVS R4, #1
  3724.  
  3725. loc_D411890 ; CODE XREF: sub_D411810+A8j
  3726. BL Disable_EEP_CLK
  3727. LDR R2, =0xFFFFFBFF
  3728. LDR R3, [R6]
  3729. ANDS R3, R2
  3730. STR R3, [R6]
  3731. MOVS R0, #0
  3732. BL Disable_EEP_CS
  3733. LDR R0, [R5]
  3734. LSRS R0, R0, #1
  3735. BL sub_D411994
  3736. BL Enable_EEP_CLK
  3737. LDR R0, [R5]
  3738. LSRS R0, R0, #1
  3739. BL sub_D411994
  3740. SUBS R4, #1
  3741. BPL loc_D411890
  3742. BL Disable_EEP_CLK
  3743. MOVS R0, #0
  3744. POP {R3}
  3745. MOV R8, R3
  3746. POP {R4-R7}
  3747. POP {R1}
  3748. BX R1
  3749. ; End of function sub_D411810
  3750.  
  3751. ; ---------------------------------------------------------------------------
  3752. ALIGN 4
  3753. off_D4118CC DCD dword_D413460 ; DATA XREF: sub_D411810+Er
  3754. ; sub_D411810+44r ...
  3755. off_D4118D0 DCD HW_GPIO1IN ; DATA XREF: sub_D411810+66r
  3756. off_D4118D4 DCD HW_GPIO1OUT ; DATA XREF: sub_D411810+7Ar
  3757. dword_D4118D8 DCD 0xFFFFFBFF ; DATA XREF: sub_D411810+84r
  3758.  
  3759. ; =============== S U B R O U T I N E =======================================
  3760.  
  3761.  
  3762. ; int __cdecl Set_HW_AESKey(unsigned __int8 *AESKey)
  3763. Set_HW_AESKey ; CODE XREF: Main+1D6p
  3764.  
  3765. var_C = -0xC
  3766.  
  3767. PUSH {R4,LR}
  3768. SUB SP, SP, #4
  3769. SUBS R1, R0, #0 ; AESKey
  3770. BEQ EmptyKey
  3771. MOVS R4, #1
  3772. MOVS R3, #0 ; IV
  3773. LDR R0, =AES_Control_Buffer_0 ; ControlBuffer
  3774. MOVS R2, #16 ; AESKeyLen
  3775. STR R4, [SP,#0xC+var_C]
  3776. BL Init_HW_AES
  3777. LDR R3, =dword_D413B80
  3778. STR R4, [R3]
  3779.  
  3780. EmptyKey ; CODE XREF: Set_HW_AESKey+6j
  3781. ADD SP, SP, #4
  3782. POP {R4}
  3783. POP {R0}
  3784. BX R0
  3785. ; End of function Set_HW_AESKey
  3786.  
  3787. ; ---------------------------------------------------------------------------
  3788. ALIGN 0x10
  3789. ; unsigned __int8 *off_D411900
  3790. off_D411900 DCD AES_Control_Buffer_0 ; DATA XREF: Set_HW_AESKey+Cr
  3791. off_D411904 DCD dword_D413B80 ; DATA XREF: Set_HW_AESKey+16r
  3792.  
  3793. ; =============== S U B R O U T I N E =======================================
  3794.  
  3795.  
  3796. AES_HW_Decrypt_0 ; CODE XREF: Main+1E2p Main+1EEp ...
  3797.  
  3798. var_24 = -0x24
  3799.  
  3800. PUSH {R4-R7,LR}
  3801. MOV R7, R10
  3802. MOV R6, R9
  3803. MOV R5, R8
  3804. PUSH {R5-R7}
  3805. SUB SP, SP, #4
  3806. MOV R8, R1
  3807. LSLS R6, R0, #3
  3808. CMP R2, #0
  3809. BEQ loc_D411966
  3810. LDR R3, =word_D413CC0
  3811. MOV R10, SP
  3812. MOV R9, R3
  3813. ADDS R7, R2, #0
  3814.  
  3815. loc_D411924 ; CODE XREF: AES_HW_Decrypt_0+5Cj
  3816. MOVS R4, #0
  3817. MOV R5, R9
  3818.  
  3819. loc_D411928 ; CODE XREF: AES_HW_Decrypt_0+32j
  3820. ADDS R0, R6, R4
  3821. MOV R1, R10
  3822. BL sub_D411810
  3823. LDR R3, [SP,#0x24+var_24]
  3824. ADDS R4, #1
  3825. STRH R3, [R5]
  3826. ADDS R5, #2
  3827. CMP R4, #7
  3828. BLE loc_D411928
  3829. LDR R3, =dword_D413B80
  3830. LDR R3, [R3]
  3831. CMP R3, #0
  3832. BEQ loc_D411976
  3833. LDR R0, =AES_Control_Buffer_0 ; ControlBuffer
  3834. MOV R1, R9 ; AES_SRC_Buffer
  3835. MOVS R2, #16 ; BufferSize
  3836. LDR R3, =AES_DEST_Buffer_0 ; AES_DEST_Buffer
  3837. BL AES_HW_Decrypt
  3838.  
  3839. loc_D411950 ; CODE XREF: AES_HW_Decrypt_0+78j
  3840. MOV R0, R8
  3841. LDR R1, =AES_DEST_Buffer_0
  3842. MOVS R2, #0x10
  3843. BL sub_D4132E0
  3844. SUBS R7, #1
  3845. MOVS R3, #0x10
  3846. ADDS R6, #8
  3847. ADD R8, R3
  3848. CMP R7, #0
  3849. BNE loc_D411924
  3850.  
  3851. loc_D411966 ; CODE XREF: AES_HW_Decrypt_0+12j
  3852. ADD SP, SP, #4
  3853. POP {R3-R5}
  3854. MOV R8, R3
  3855. MOV R9, R4
  3856. MOV R10, R5
  3857. POP {R4-R7}
  3858. POP {R0}
  3859. BX R0
  3860. ; ---------------------------------------------------------------------------
  3861.  
  3862. loc_D411976 ; CODE XREF: AES_HW_Decrypt_0+3Aj
  3863. MOV R1, R9
  3864. MOVS R2, #0x10
  3865. LDR R0, =AES_DEST_Buffer_0
  3866. BL sub_D4132E0
  3867. B loc_D411950
  3868. ; End of function AES_HW_Decrypt_0
  3869.  
  3870. ; ---------------------------------------------------------------------------
  3871. ALIGN 4
  3872. off_D411984 DCD word_D413CC0 ; DATA XREF: AES_HW_Decrypt_0+14r
  3873. off_D411988 DCD dword_D413B80 ; DATA XREF: AES_HW_Decrypt_0+34r
  3874. ; void *off_D41198C
  3875. off_D41198C DCD AES_Control_Buffer_0 ; DATA XREF: AES_HW_Decrypt_0+3Cr
  3876. ; unsigned __int8 *AES_DEST_Buffer
  3877. AES_DEST_Buffer DCD AES_DEST_Buffer_0 ; DATA XREF: AES_HW_Decrypt_0+42r
  3878. ; AES_HW_Decrypt_0+4Ar ...
  3879.  
  3880. ; =============== S U B R O U T I N E =======================================
  3881.  
  3882.  
  3883. sub_D411994 ; CODE XREF: sub_D411810+30p
  3884. ; sub_D411810+3Cp ...
  3885. PUSH {LR}
  3886. CMP R0, #4
  3887. BEQ loc_D4119A2
  3888. SUBS R0, #4
  3889.  
  3890. loc_D41199C ; CODE XREF: sub_D411994+Cj
  3891. SUBS R0, #1
  3892. CMP R0, #0
  3893. BNE loc_D41199C
  3894.  
  3895. loc_D4119A2 ; CODE XREF: sub_D411994+4j
  3896. POP {R0}
  3897. BX R0
  3898. ; End of function sub_D411994
  3899.  
  3900. ; ---------------------------------------------------------------------------
  3901. ALIGN 4
  3902.  
  3903. ; =============== S U B R O U T I N E =======================================
  3904.  
  3905.  
  3906. sub_D4119A8 ; CODE XREF: CheckBuffer_Maybe+30p
  3907. ; CheckBuffer_Maybe+BAp ...
  3908. PUSH {R4-R7,LR}
  3909. MOV R7, R8
  3910. PUSH {R7}
  3911. LDR R3, =0x17FFFFF
  3912. LSLS R1, R1, #0x18
  3913. LSRS R6, R1, #0x18
  3914. MOVS R4, R0
  3915. CMP R0, R3
  3916. BHI loc_D4119F4
  3917. SUBS R5, R2, #1
  3918. BCC loc_D4119EA
  3919. MOVS R2, #3
  3920. MOVS R3, #0x18
  3921. MOV R8, R2
  3922. MOV R12, R3
  3923. MOVS R7, #0xFF
  3924.  
  3925. loc_D4119C8 ; CODE XREF: sub_D4119A8+40j
  3926. MOV R3, R8
  3927. ANDS R3, R4
  3928. SUBS R0, R4, R3
  3929. MOV R2, R12
  3930. LSLS R3, R3, #3
  3931. SUBS R3, R2, R3
  3932. LDR R1, [R0]
  3933. MOVS R2, R7
  3934. LSLS R2, R3
  3935. BICS R1, R2
  3936. MOVS R2, R6
  3937. LSLS R2, R3
  3938. ORRS R1, R2
  3939. STR R1, [R0]
  3940. ADDS R4, #1
  3941. SUBS R5, #1
  3942. BCS loc_D4119C8
  3943.  
  3944. loc_D4119EA ; CODE XREF: sub_D4119A8+14j
  3945. ; sub_D4119A8+4Ej ...
  3946. POP {R3}
  3947. MOV R8, R3
  3948. POP {R4-R7}
  3949. POP {R0}
  3950. BX R0
  3951. ; ---------------------------------------------------------------------------
  3952.  
  3953. loc_D4119F4 ; CODE XREF: sub_D4119A8+10j
  3954. SUBS R5, R2, #1
  3955. BCC loc_D4119EA
  3956.  
  3957. loc_D4119F8 ; CODE XREF: sub_D4119A8+5Ej
  3958. STRB R6, [R4]
  3959. ADDS R4, #1
  3960. SUBS R5, #1
  3961. BCC loc_D4119EA
  3962. STRB R6, [R4]
  3963. ADDS R4, #1
  3964. SUBS R5, #1
  3965. BCS loc_D4119F8
  3966. B loc_D4119EA
  3967. ; End of function sub_D4119A8
  3968.  
  3969. ; ---------------------------------------------------------------------------
  3970. ALIGN 4
  3971. dword_D411A0C DCD 0x17FFFFF ; DATA XREF: sub_D4119A8+6r
  3972.  
  3973. ; =============== S U B R O U T I N E =======================================
  3974.  
  3975.  
  3976. ; int __cdecl CheckBuffer_Maybe(unsigned __int8 *Buffer, int Unknown, int BufferLen)
  3977. CheckBuffer_Maybe ; CODE XREF: Main+31Ap Main+324p ...
  3978. PUSH {R4-R7,LR}
  3979. MOV R7, R10
  3980. MOV R6, R8
  3981. PUSH {R6,R7}
  3982. MOVS R7, R0
  3983. SUBS R5, R2, #0
  3984. BEQ loc_D411ADE
  3985. MOVS R2, #0xFF
  3986. MOVS R3, R2
  3987. ANDS R3, R1
  3988. MOVS R6, #3
  3989. MOVS R2, R0
  3990. MOV R8, R0
  3991. MOV R10, R3
  3992. ANDS R2, R6
  3993. MOV R12, R2
  3994. BEQ loc_D411A4E
  3995. MOVS R3, #4
  3996. MOV R2, R12
  3997. SUBS R4, R3, R2
  3998. CMP R4, R5
  3999. BCS loc_D411AC6
  4000. MOV R1, R10
  4001. MOVS R2, R4
  4002. BL sub_D4119A8
  4003. MOVS R3, R7
  4004. BICS R3, R6
  4005. ADDS R3, #4
  4006. SUBS R5, R5, R4
  4007. MOV R8, R3
  4008.  
  4009. loc_D411A4E ; CODE XREF: CheckBuffer_Maybe+20j
  4010. MOVS R3, #0x100
  4011. CMP R5, R3
  4012. BLS loc_D411AD0
  4013. MOVS R3, #0xF
  4014. MOV R2, R8
  4015. ANDS R2, R3
  4016. BEQ loc_D411AD0
  4017. MOVS R3, #0x10
  4018. SUBS R4, R3, R2
  4019. CMP R5, R4
  4020. BCS loc_D411A6A
  4021. MOVS R4, R5
  4022. MOVS R5, #0
  4023.  
  4024. loc_D411A6A ; CODE XREF: CheckBuffer_Maybe+54j
  4025. MOVS R3, #0xC
  4026. ANDS R3, R4
  4027. MOV R12, R3
  4028. BEQ loc_D411A8E
  4029. MOV R3, R10
  4030. LSLS R1, R3, #8
  4031. ORRS R1, R3
  4032. LSLS R3, R1, #0x10
  4033. ORRS R1, R3
  4034. MOV R2, R12
  4035. MOV R3, R8
  4036. B loc_D411A86
  4037. ; ---------------------------------------------------------------------------
  4038.  
  4039. loc_D411A82 ; CODE XREF: CheckBuffer_Maybe+78j
  4040. STMIA R3!, {R1}
  4041. SUBS R2, #4
  4042.  
  4043. loc_D411A86 ; CODE XREF: CheckBuffer_Maybe+70j
  4044. CMP R2, #3
  4045. BHI loc_D411A82
  4046. MOVS R3, #3
  4047. ANDS R4, R3
  4048.  
  4049. loc_D411A8E ; CODE XREF: CheckBuffer_Maybe+60j
  4050. CMP R4, #0
  4051. BNE loc_D411AEC
  4052.  
  4053. loc_D411A92 ; CODE XREF: CheckBuffer_Maybe+E6j
  4054. CMP R5, #0
  4055. BEQ loc_D411ADE
  4056. MOVS R3, #0xF
  4057. MOV R2, R8
  4058. ANDS R2, R3
  4059. ADDS R2, R2, R5
  4060. MOVS R5, R2
  4061. SUBS R5, #0x10
  4062. MOV R2, R8
  4063. BICS R2, R3
  4064. MOVS R4, R5
  4065. ADDS R2, #0x10
  4066. BICS R4, R3
  4067. MOV R8, R2
  4068. CMP R4, #0
  4069. BEQ loc_D411ADA
  4070.  
  4071. loc_D411AB2 ; CODE XREF: CheckBuffer_Maybe+C8j
  4072. MOV R0, R8
  4073. MOV R1, R10
  4074. MOVS R2, R4
  4075. SUBS R5, R5, R4
  4076. BL sub_D4132F0
  4077. ADD R8, R4
  4078. CMP R5, #0
  4079. BEQ loc_D411ADE
  4080.  
  4081. loc_D411AC4 ; CODE XREF: CheckBuffer_Maybe+CCj
  4082. MOV R0, R8
  4083.  
  4084. loc_D411AC6 ; CODE XREF: CheckBuffer_Maybe+2Aj
  4085. MOV R1, R10
  4086. MOVS R2, R5
  4087. BL sub_D4119A8
  4088. B loc_D411ADE
  4089. ; ---------------------------------------------------------------------------
  4090.  
  4091. loc_D411AD0 ; CODE XREF: CheckBuffer_Maybe+44j
  4092. ; CheckBuffer_Maybe+4Cj
  4093. MOVS R3, #3
  4094. MOVS R4, R5
  4095. BICS R4, R3
  4096. CMP R4, #0
  4097. BNE loc_D411AB2
  4098.  
  4099. loc_D411ADA ; CODE XREF: CheckBuffer_Maybe+A0j
  4100. CMP R5, #0
  4101. BNE loc_D411AC4
  4102.  
  4103. loc_D411ADE ; CODE XREF: CheckBuffer_Maybe+Cj
  4104. ; CheckBuffer_Maybe+84j ...
  4105. MOVS R0, R7
  4106. POP {R3,R4}
  4107. MOV R8, R3
  4108. MOV R10, R4
  4109. POP {R4-R7}
  4110. POP {R1}
  4111. BX R1
  4112. ; ---------------------------------------------------------------------------
  4113.  
  4114. loc_D411AEC ; CODE XREF: CheckBuffer_Maybe+80j
  4115. MOV R0, R8
  4116. MOV R1, R10
  4117. MOVS R2, R4
  4118. BL sub_D4119A8
  4119. B loc_D411A92
  4120. ; End of function CheckBuffer_Maybe
  4121.  
  4122.  
  4123. ; =============== S U B R O U T I N E =======================================
  4124.  
  4125.  
  4126. sub_D411AF8 ; CODE XREF: CalcSHA_And_RSA+12Ap
  4127. PUSH {R4-R6,LR}
  4128. MOVS R3, R1
  4129. MOVS R5, R0
  4130. MOVS R1, R0
  4131. MOVS R0, R3
  4132. SUBS R4, R2, #0
  4133. BNE loc_D411B0E
  4134. MOVS R0, #0
  4135.  
  4136. loc_D411B08 ; CODE XREF: sub_D411AF8+3Ej
  4137. ; sub_D411AF8+4Ej
  4138. POP {R4-R6}
  4139. POP {R1}
  4140. BX R1
  4141. ; ---------------------------------------------------------------------------
  4142.  
  4143. loc_D411B0E ; CODE XREF: sub_D411AF8+Cj
  4144. SUBS R4, #1
  4145. CMP R4, #0
  4146. BEQ loc_D411B38
  4147.  
  4148. loc_D411B14 ; CODE XREF: sub_D411AF8+2Ej
  4149. LDRB R5, [R0]
  4150. LDRB R6, [R1]
  4151. MOVS R3, R5
  4152. CMP R6, R3
  4153. BNE loc_D411B2C
  4154. SUBS R4, #1
  4155. ADDS R1, #1
  4156. ADDS R0, #1
  4157. CMP R4, #0
  4158. BNE loc_D411B14
  4159. LDRB R6, [R1]
  4160. LDRB R5, [R0]
  4161.  
  4162. loc_D411B2C ; CODE XREF: sub_D411AF8+24j
  4163. LSLS R2, R6, #0x18
  4164. LSLS R3, R5, #0x18
  4165. LSRS R2, R2, #0x18
  4166. LSRS R3, R3, #0x18
  4167. SUBS R0, R2, R3
  4168. B loc_D411B08
  4169. ; ---------------------------------------------------------------------------
  4170.  
  4171. loc_D411B38 ; CODE XREF: sub_D411AF8+1Aj
  4172. LDRB R6, [R5]
  4173. LDRB R5, [R3]
  4174. LSLS R2, R6, #0x18
  4175. LSLS R3, R5, #0x18
  4176. LSRS R2, R2, #0x18
  4177. LSRS R3, R3, #0x18
  4178. SUBS R0, R2, R3
  4179. B loc_D411B08
  4180. ; End of function sub_D411AF8
  4181.  
  4182. CODE32
  4183.  
  4184. ; =============== S U B R O U T I N E =======================================
  4185.  
  4186.  
  4187. sub_D411B48 ; CODE XREF: sub_D4132F0:loc_D4132F4j
  4188. ORR R1, R1, R1,LSL#8
  4189. ORR R1, R1, R1,LSL#16
  4190. BIC R3, R2, #0xF
  4191. CMP R3, #0
  4192. BEQ loc_D411B7C
  4193. STMFD SP!, {R4,R5}
  4194. MOV R12, R1
  4195. MOV R4, R1
  4196. MOV R5, R1
  4197.  
  4198. loc_D411B6C ; CODE XREF: sub_D411B48+2Cj
  4199. STMIA R0!, {R1,R4,R5,R12}
  4200. SUBS R3, R3, #0x10
  4201. BNE loc_D411B6C
  4202. LDMFD SP!, {R4,R5}
  4203.  
  4204. loc_D411B7C ; CODE XREF: sub_D411B48+10j
  4205. AND R2, R2, #0xF
  4206. CMP R2, #0
  4207. BEQ locret_D411B94
  4208.  
  4209. loc_D411B88 ; CODE XREF: sub_D411B48+48j
  4210. STR R1, [R0],#4
  4211. SUBS R2, R2, #4
  4212. BNE loc_D411B88
  4213.  
  4214. locret_D411B94 ; CODE XREF: sub_D411B48+3Cj
  4215. BX LR
  4216. ; End of function sub_D411B48
  4217.  
  4218.  
  4219. ; =============== S U B R O U T I N E =======================================
  4220.  
  4221.  
  4222. sub_D411B98 ; CODE XREF: sub_D4132E0:loc_D4132E4j
  4223. CMP R2, #0
  4224. BXEQ LR
  4225. STMFD SP!, {R4-R6}
  4226. ORR R3, R0, R1
  4227. TST R3, #3
  4228. BNE loc_D411C10
  4229. CMP R2, #0xF
  4230. BLS loc_D411BF8
  4231. CMP R2, #0x1F
  4232. BLS loc_D411BE0
  4233. STMFD SP!, {R7-R9}
  4234.  
  4235. loc_D411BC4 ; CODE XREF: sub_D411B98+40j
  4236. LDMIA R1!, {R3-R9,R12}
  4237. STMIA R0!, {R3-R9,R12}
  4238. SUB R2, R2, #0x20
  4239. CMP R2, #0x1F
  4240. BLS loc_D411BDC
  4241. B loc_D411BC4
  4242. ; ---------------------------------------------------------------------------
  4243.  
  4244. loc_D411BDC ; CODE XREF: sub_D411B98+3Cj
  4245. LDMFD SP!, {R7-R9}
  4246.  
  4247. loc_D411BE0 ; CODE XREF: sub_D411B98+24j
  4248. ; sub_D411B98+5Cj
  4249. CMP R2, #0xF
  4250. BLS loc_D411BF8
  4251. LDMIA R1!, {R3-R6}
  4252. STMIA R0!, {R3-R6}
  4253. SUB R2, R2, #0x10
  4254. B loc_D411BE0
  4255. ; ---------------------------------------------------------------------------
  4256.  
  4257. loc_D411BF8 ; CODE XREF: sub_D411B98+1Cj
  4258. ; sub_D411B98+4Cj ...
  4259. CMP R2, #3
  4260. BLS loc_D411C10
  4261. LDR R3, [R1],#4
  4262. STR R3, [R0],#4
  4263. SUB R2, R2, #4
  4264. B loc_D411BF8
  4265. ; ---------------------------------------------------------------------------
  4266.  
  4267. loc_D411C10 ; CODE XREF: sub_D411B98+14j
  4268. ; sub_D411B98+64j
  4269. CMP R0, #0x1800000
  4270. BCS loc_D411C54
  4271. MOV R12, #0xFF
  4272.  
  4273. loc_D411C1C ; CODE XREF: sub_D411B98+B8j
  4274. CMP R2, #0
  4275. BEQ loc_D411C6C
  4276. MOV R6, R0
  4277. AND R3, R6, #3
  4278. LDR R4, [R6,-R3]!
  4279. MOV R3, R3,LSL#3
  4280. RSB R3, R3, #0x18
  4281. BIC R5, R4, R12,LSL R3
  4282. LDRB R4, [R1],#1
  4283. ORR R4, R5, R4,LSL R3
  4284. STR R4, [R6]
  4285. ADD R0, R0, #1
  4286. SUB R2, R2, #1
  4287. B loc_D411C1C
  4288. ; ---------------------------------------------------------------------------
  4289.  
  4290. loc_D411C54 ; CODE XREF: sub_D411B98+7Cj
  4291. ; sub_D411B98+D0j
  4292. CMP R2, #0
  4293. BEQ loc_D411C6C
  4294. LDRB R3, [R1],#1
  4295. STRB R3, [R0],#1
  4296. SUB R2, R2, #1
  4297. B loc_D411C54
  4298. ; ---------------------------------------------------------------------------
  4299.  
  4300. loc_D411C6C ; CODE XREF: sub_D411B98+88j
  4301. ; sub_D411B98+C0j
  4302. LDMFD SP!, {R4-R6}
  4303. BX LR
  4304. ; End of function sub_D411B98
  4305.  
  4306. CODE16
  4307.  
  4308. ; =============== S U B R O U T I N E =======================================
  4309.  
  4310.  
  4311. sub_D411C74 ; CODE XREF: Main+1C8p
  4312. PUSH {R4,R5,LR}
  4313. LDR R4, =0xEDB88320
  4314. LDR R5, =dword_D413D44
  4315. MOVS R0, #0
  4316. MOVS R1, #1
  4317.  
  4318. loc_D411C7E ; CODE XREF: sub_D411C74+28j
  4319. MOVS R3, R0
  4320. MOVS R2, #7
  4321. B loc_D411C8C
  4322. ; ---------------------------------------------------------------------------
  4323.  
  4324. loc_D411C84 ; CODE XREF: sub_D411C74+1Aj
  4325. LSRS R3, R3, #1
  4326. EORS R3, R4
  4327. SUBS R2, #1
  4328. BMI loc_D411C96
  4329.  
  4330. loc_D411C8C ; CODE XREF: sub_D411C74+Ej
  4331. ; sub_D411C74+20j
  4332. TST R3, R1
  4333. BNE loc_D411C84
  4334. LSRS R3, R3, #1
  4335. SUBS R2, #1
  4336. BPL loc_D411C8C
  4337.  
  4338. loc_D411C96 ; CODE XREF: sub_D411C74+16j
  4339. ADDS R0, #1
  4340. STMIA R5!, {R3}
  4341. CMP R0, #0xFF
  4342. BLS loc_D411C7E
  4343. POP {R4,R5}
  4344. POP {R0}
  4345. BX R0
  4346. ; End of function sub_D411C74
  4347.  
  4348. ; ---------------------------------------------------------------------------
  4349. dword_D411CA4 DCD 0xEDB88320 ; DATA XREF: sub_D411C74+2r
  4350. off_D411CA8 DCD dword_D413D44 ; DATA XREF: sub_D411C74+4r
  4351.  
  4352. ; =============== S U B R O U T I N E =======================================
  4353.  
  4354.  
  4355. sub_D411CAC ; CODE XREF: sub_D410168+10p
  4356. PUSH {R4-R6,LR}
  4357. LDR R4, =dword_D413D40
  4358. LDR R3, [R4]
  4359. MVNS R3, R3
  4360. STR R3, [R4]
  4361. SUBS R1, #1
  4362. BCC loc_D411CD6
  4363. LDR R6, =dword_D413D44
  4364. MOVS R5, #0xFF
  4365.  
  4366. loc_D411CBE ; CODE XREF: sub_D411CAC+28j
  4367. LDRB R3, [R0]
  4368. LDR R2, [R4]
  4369. EORS R3, R2
  4370. ANDS R3, R5
  4371. LSLS R3, R3, #2
  4372. LDR R3, [R3,R6]
  4373. LSRS R2, R2, #8
  4374. EORS R3, R2
  4375. STR R3, [R4]
  4376. ADDS R0, #1
  4377. SUBS R1, #1
  4378. BCS loc_D411CBE
  4379.  
  4380. loc_D411CD6 ; CODE XREF: sub_D411CAC+Cj
  4381. LDR R0, [R4]
  4382. MVNS R0, R0
  4383. POP {R4-R6}
  4384. POP {R1}
  4385. BX R1
  4386. ; End of function sub_D411CAC
  4387.  
  4388. ; ---------------------------------------------------------------------------
  4389. off_D411CE0 DCD dword_D413D40 ; DATA XREF: sub_D411CAC+2r
  4390. off_D411CE4 DCD dword_D413D44 ; DATA XREF: sub_D411CAC+Er
  4391.  
  4392. ; =============== S U B R O U T I N E =======================================
  4393.  
  4394.  
  4395. sub_D411CE8 ; CODE XREF: sub_D410168+8p
  4396. LDR R3, =dword_D413D40
  4397. MOVS R2, #0
  4398. STR R2, [R3]
  4399. BX LR
  4400. ; End of function sub_D411CE8
  4401.  
  4402. ; ---------------------------------------------------------------------------
  4403. off_D411CF0 DCD dword_D413D40 ; DATA XREF: sub_D411CE8r
  4404.  
  4405. ; =============== S U B R O U T I N E =======================================
  4406.  
  4407.  
  4408. Init_HW_SHA ; CODE XREF: CalcSHA_And_RSA+F8p
  4409. ; Calc_HW_SHA+10p
  4410. PUSH {R4,LR}
  4411. LDR R3, =SHA_CMD
  4412. MOVS R1, #0
  4413. LDR R2, =0x67452301
  4414. STR R1, [R3] ; SHA_SRC
  4415. ADDS R3, #8
  4416. STR R2, [R3]
  4417. LDR R2, =0xEFCDAB89
  4418. ADDS R3, #4
  4419. STR R2, [R3]
  4420. LDR R2, =0x98BADCFE
  4421. ADDS R3, #4
  4422. STR R2, [R3]
  4423. LDR R2, =0x10325476
  4424. ADDS R3, #4
  4425. STR R2, [R3]
  4426. LDR R2, =0xC3D2E1F0
  4427. ADDS R3, #4
  4428. STR R2, [R3]
  4429. MOVS R4, #0
  4430. MOVS R3, #0
  4431. STR R3, [R0,#0x14]
  4432. STR R4, [R0,#0x18]
  4433. STRH R1, [R0,#0x1C]
  4434. MOVS R0, #1
  4435. POP {R4}
  4436. POP {R1}
  4437. BX R1
  4438. ; End of function Init_HW_SHA
  4439.  
  4440. ; ---------------------------------------------------------------------------
  4441. off_D411D2C DCD SHA_CMD ; DATA XREF: Init_HW_SHA+2r
  4442. dword_D411D30 DCD 0x67452301 ; DATA XREF: Init_HW_SHA+6r
  4443. dword_D411D34 DCD 0xEFCDAB89 ; DATA XREF: Init_HW_SHA+Er
  4444. dword_D411D38 DCD 0x98BADCFE ; DATA XREF: Init_HW_SHA+14r
  4445. dword_D411D3C DCD 0x10325476 ; DATA XREF: Init_HW_SHA+1Ar
  4446. dword_D411D40 DCD 0xC3D2E1F0 ; DATA XREF: Init_HW_SHA+20r
  4447.  
  4448. ; =============== S U B R O U T I N E =======================================
  4449.  
  4450.  
  4451. Update_HW_SHA ; CODE XREF: CalcSHA_And_RSA+10Ap
  4452. ; Calc_HW_SHA+1Ap
  4453. PUSH {R4-R7,LR}
  4454. MOVS R3, #0x3F
  4455. MOVS R6, R0
  4456. MOVS R7, R1
  4457. MOVS R5, R2
  4458. ANDS R2, R3
  4459. BNE loc_D411D70
  4460. LSLS R3, R5, #3
  4461. LDR R1, [R6,#0x14]
  4462. LDR R2, [R6,#0x18]
  4463. MOVS R4, R3
  4464. MOVS R3, #0
  4465. ADDS R2, R2, R4
  4466. ADCS R1, R3
  4467. STR R1, [R6,#0x14]
  4468. STR R2, [R6,#0x18]
  4469. CMP R5, #0x3F
  4470. BHI loc_D411D92
  4471.  
  4472. loc_D411D68 ; CODE XREF: Update_HW_SHA+4Cj
  4473. ; Update_HW_SHA+6Ej
  4474. MOVS R0, #1
  4475. POP {R4-R7}
  4476. POP {R1}
  4477. BX R1
  4478. ; ---------------------------------------------------------------------------
  4479.  
  4480. loc_D411D70 ; CODE XREF: Update_HW_SHA+Cj
  4481. ADDS R1, R1, R5
  4482. STRH R2, [R0,#0x1C]
  4483. SUBS R1, R1, R2
  4484. LDR R0, =unk_D414180
  4485. BL sub_D4132E0
  4486. LSLS R3, R5, #3
  4487. LDR R1, [R6,#0x14]
  4488. LDR R2, [R6,#0x18]
  4489. MOVS R4, R3
  4490. MOVS R3, #0
  4491. ADDS R2, R2, R4
  4492. ADCS R1, R3
  4493. STR R1, [R6,#0x14]
  4494. STR R2, [R6,#0x18]
  4495. CMP R5, #0x3F
  4496. BLS loc_D411D68
  4497.  
  4498. loc_D411D92 ; CODE XREF: Update_HW_SHA+22j
  4499. MOVS R0, #5
  4500. BL CheckBoot0_Maybe
  4501. LDR R3, =SHA_SRC
  4502. MOVS R2, R5
  4503. STR R7, [R3]
  4504. SUBS R2, #0x40
  4505. MOVS R3, #0xC0
  4506. LDR R1, =SHA_CMD
  4507. LSRS R2, R2, #6
  4508. LSLS R3, R3, #0x18
  4509. ORRS R2, R3
  4510. STR R2, [R1]
  4511.  
  4512. Loop_Until_HW_SHA_Ready ; CODE XREF: Update_HW_SHA+6Cj
  4513. LDR R3, [R1]
  4514. CMP R3, #0
  4515. BLT Loop_Until_HW_SHA_Ready
  4516. B loc_D411D68
  4517. ; End of function Update_HW_SHA
  4518.  
  4519. ; ---------------------------------------------------------------------------
  4520. off_D411DB4 DCD unk_D414180 ; DATA XREF: Update_HW_SHA+32r
  4521. off_D411DB8 DCD SHA_SRC ; DATA XREF: Update_HW_SHA+54r
  4522. off_D411DBC DCD SHA_CMD ; DATA XREF: Update_HW_SHA+5Er
  4523.  
  4524. ; =============== S U B R O U T I N E =======================================
  4525.  
  4526.  
  4527. Finale_HW_SHA ; CODE XREF: CalcSHA_And_RSA+120p
  4528. ; Calc_HW_SHA+22p
  4529. PUSH {R4-R7,LR}
  4530. MOV R7, R8
  4531. PUSH {R7}
  4532. MOVS R3, #0x40
  4533. MOV R8, R3
  4534. LDRH R3, [R0,#0x1C]
  4535. LSLS R2, R3, #0x10
  4536. LSRS R3, R2, #0x10
  4537. LDR R7, =unk_D4141B8
  4538. MOVS R5, R1
  4539. CMP R3, #0x38
  4540. BLS loc_D411DDE
  4541. MOVS R3, #0x80
  4542. ADDS R7, #0x40
  4543. MOV R8, R3
  4544.  
  4545. loc_D411DDE ; CODE XREF: Finale_HW_SHA+16j
  4546. LSRS R3, R2, #0x10
  4547. ADDS R3, #1
  4548. STRH R3, [R0,#0x1C]
  4549. LDR R6, =unk_D414180
  4550. MOVS R3, #0x80
  4551. LSRS R2, R2, #0x10
  4552. NEGS R3, R3
  4553. STRB R3, [R6,R2]
  4554. LDRH R3, [R0,#0x1C]
  4555. MOV R1, R8
  4556. LSLS R2, R3, #0x10
  4557. LSRS R3, R2, #0x10
  4558. SUBS R1, #8
  4559. CMP R3, R1
  4560. BGE loc_D411E12
  4561. MOVS R4, #0
  4562.  
  4563. loc_D411DFE ; CODE XREF: Finale_HW_SHA+50j
  4564. LSRS R3, R2, #0x10
  4565. ADDS R3, #1
  4566. STRH R3, [R0,#0x1C]
  4567. LSRS R3, R2, #0x10
  4568. STRB R4, [R6,R3]
  4569. LDRH R3, [R0,#0x1C]
  4570. LSLS R2, R3, #0x10
  4571. LSRS R3, R2, #0x10
  4572. CMP R3, R1
  4573. BLT loc_D411DFE
  4574.  
  4575. loc_D411E12 ; CODE XREF: Finale_HW_SHA+3Aj
  4576. LDR R3, [R0,#0x14]
  4577. LDR R4, [R0,#0x18]
  4578. MOVS R0, #5
  4579. STR R3, [R7]
  4580. STR R4, [R7,#4]
  4581. BL CheckBoot0_Maybe
  4582. LDR R2, =unk_D414180
  4583. LDR R3, =SHA_SRC
  4584. STR R2, [R3]
  4585. MOV R2, R8
  4586. SUBS R2, #0x40
  4587. MOVS R3, #0xC0
  4588. LDR R1, =SHA_CMD
  4589. ASRS R2, R2, #6
  4590. LSLS R3, R3, #0x18
  4591. ORRS R2, R3
  4592. STR R2, [R1]
  4593.  
  4594. loc_D411E36 ; CODE XREF: Finale_HW_SHA+7Aj
  4595. LDR R3, [R1]
  4596. CMP R3, #0
  4597. BLT loc_D411E36
  4598. LDR R1, =SHA_H0
  4599. MOVS R2, #4
  4600.  
  4601. Read_HW_SHA_HASH ; CODE XREF: Finale_HW_SHA+86j
  4602. LDMIA R1!, {R3}
  4603. STMIA R5!, {R3}
  4604. SUBS R2, #1
  4605. BPL Read_HW_SHA_HASH
  4606. MOVS R0, #1
  4607. POP {R3}
  4608. MOV R8, R3
  4609. POP {R4-R7}
  4610. POP {R1}
  4611. BX R1
  4612. ; End of function Finale_HW_SHA
  4613.  
  4614. ; ---------------------------------------------------------------------------
  4615. off_D411E54 DCD unk_D4141B8 ; DATA XREF: Finale_HW_SHA+10r
  4616. off_D411E58 DCD unk_D414180 ; DATA XREF: Finale_HW_SHA+24r
  4617. ; Finale_HW_SHA+60r
  4618. off_D411E5C DCD SHA_SRC ; DATA XREF: Finale_HW_SHA+62r
  4619. off_D411E60 DCD SHA_CMD ; DATA XREF: Finale_HW_SHA+6Cr
  4620. off_D411E64 DCD SHA_H0 ; DATA XREF: Finale_HW_SHA+7Cr
  4621.  
  4622. ; =============== S U B R O U T I N E =======================================
  4623.  
  4624.  
  4625. Calc_HW_SHA ; CODE XREF: CalcSHA_And_RSA+42p
  4626. PUSH {R4-R6,LR}
  4627. MOV R6, R8
  4628. PUSH {R6}
  4629. SUB SP, SP, #0x78
  4630. MOVS R6, R1
  4631. MOVS R5, R0
  4632. MOV R0, SP
  4633. MOV R8, R2
  4634. BL Init_HW_SHA
  4635. MOVS R1, R5
  4636. MOVS R2, R6
  4637. MOV R0, SP
  4638. BL Update_HW_SHA
  4639. MOV R1, R8
  4640. MOV R0, SP
  4641. BL Finale_HW_SHA
  4642. MOVS R0, #1
  4643. ADD SP, SP, #0x78
  4644. POP {R3}
  4645. MOV R8, R3
  4646. POP {R4-R6}
  4647. POP {R1}
  4648. BX R1
  4649. ; End of function Calc_HW_SHA
  4650.  
  4651.  
  4652. ; =============== S U B R O U T I N E =======================================
  4653.  
  4654.  
  4655. ; void __cdecl Init_HW_AES(unsigned __int8 *ControlBuffer, unsigned __int8 *AESKey, int AESKeyLen, unsigned __int8 *IV)
  4656. Init_HW_AES ; CODE XREF: AES_Decrypt+24p
  4657. ; Set_HW_AESKey+12p
  4658.  
  4659. SetZeroIV = 0
  4660.  
  4661. PUSH {R4-R7,LR}
  4662. MOVS R5, R3 ; IV
  4663. LDR R3, =AES_CTRL
  4664. MOVS R6, R0
  4665. LSRS R2, R2, #2
  4666. MOVS R0, #0
  4667. LDR R7, [SP,#0x14+SetZeroIV]
  4668. STR R0, [R3]
  4669. CMP R2, #0 ; Is KeyLen == 0
  4670. BLS SetIVOnly
  4671. LDR R4, =AES_KEY
  4672. ADDS R0, R2, #0
  4673.  
  4674. SetAesKey ; CODE XREF: Init_HW_AES+20j
  4675. LDMIA R1!, {R3} ; R1 == AES_Key
  4676. SUBS R0, #1
  4677. STR R3, [R4]
  4678. CMP R0, #0
  4679. BNE SetAesKey ; R1 == AES_Key
  4680.  
  4681. SetIVOnly ; CODE XREF: Init_HW_AES+12j
  4682. MOVS R1, R5
  4683. CMP R7, #1
  4684. BEQ Set_IV_To_0
  4685. LDR R2, =AES_IV_0
  4686. MOVS R0, #3
  4687.  
  4688. SetIV ; CODE XREF: Init_HW_AES+32j
  4689. LDMIA R1!, {R3}
  4690. STR R3, [R2]
  4691. SUBS R0, #1
  4692. BPL SetIV
  4693.  
  4694. InitBuffer ; CODE XREF: Init_HW_AES+5Cj
  4695. MOVS R2, #0x104
  4696. ADDS R3, R6, R2 ; Buffer + 0x104
  4697. MOVS R2, #0
  4698. STR R2, [R3] ; *(Buffer + 0x104) = 0 == Set IV Flag (Use IV from last command)
  4699. MOVS R2, #0x10C
  4700. ADDS R3, R6, R2 ; Buffer + 0x10C
  4701. MOVS R0, #1
  4702. STR R7, [R3] ; *(Buffer + 0x10C) = 1 == Decrypt By Size
  4703. POP {R4-R7}
  4704. POP {R1}
  4705. BX R1
  4706. ; ---------------------------------------------------------------------------
  4707.  
  4708. Set_IV_To_0 ; CODE XREF: Init_HW_AES+26j
  4709. LDR R2, =AES_IV_0
  4710. MOVS R3, #0
  4711. MOVS R0, #0
  4712. STR R3, [R2]
  4713. STR R3, [R2]
  4714. STR R3, [R2]
  4715. STR R0, [R2]
  4716. B InitBuffer
  4717. ; End of function Init_HW_AES
  4718.  
  4719. ; ---------------------------------------------------------------------------
  4720. ALIGN 4
  4721. off_D411EFC DCD AES_CTRL ; DATA XREF: Init_HW_AES+4r
  4722. off_D411F00 DCD AES_KEY ; DATA XREF: Init_HW_AES+14r
  4723. off_D411F04 DCD AES_IV_0 ; DATA XREF: Init_HW_AES+28r
  4724. ; Init_HW_AES:Set_IV_To_0r
  4725.  
  4726. ; =============== S U B R O U T I N E =======================================
  4727.  
  4728.  
  4729. ; int __cdecl DecryptBuffer16Byte(unsigned int BufferSize, int ControlFlags, int EncDecModeFlag)
  4730. DecryptBuffer16Byte ; CODE XREF: SRAM:0D411F9Cp
  4731. ; AES_HW_Decrypt+2Cp
  4732. PUSH {R4-R6,LR}
  4733. MOVS R4, R2
  4734. MOVS R5, R0
  4735. MOVS R6, R1
  4736. MOVS R0, #4
  4737. LSLS R4, R4, #0x1B
  4738. SUBS R5, #0x10
  4739. BL CheckBoot0_Maybe
  4740. ORRS R4, R6
  4741. LSRS R5, R5, #4
  4742. MOVS R3, #0xC0
  4743. LDR R2, =AES_CTRL
  4744. ORRS R4, R5
  4745. LSLS R3, R3, #0x18 ; R3 = C0000000
  4746. ORRS R4, R3
  4747. STR R4, [R2]
  4748.  
  4749. WaitUntilAESFinshedLoop ; CODE XREF: DecryptBuffer16Byte+26j
  4750. LDR R3, [R2]
  4751. CMP R3, #0
  4752. BLT WaitUntilAESFinshedLoop
  4753. MOVS R0, #1
  4754. POP {R4-R6}
  4755. POP {R1}
  4756. BX R1
  4757. ; End of function DecryptBuffer16Byte
  4758.  
  4759. ; ---------------------------------------------------------------------------
  4760. off_D411F38 DCD AES_CTRL ; DATA XREF: DecryptBuffer16Byte+18r
  4761.  
  4762. ; =============== S U B R O U T I N E =======================================
  4763.  
  4764.  
  4765. ; int __cdecl DecryptBuffer(unsigned int BufferSize, int ControlFlags, int EncDecModeFlag)
  4766. DecryptBuffer ; CODE XREF: SRAM:0D411FB6p
  4767. ; AES_HW_Decrypt+46p
  4768. PUSH {R4-R6,LR}
  4769. SUBS R5, R0, #0
  4770. BEQ Done
  4771. LSLS R6, R2, #0x1B ; R2 =3 -> 0x18000000
  4772. MOVS R3, #0xC0
  4773. ORRS R6, R1
  4774. LSLS R3, R3, #0x18 ; SET EXEC and IRQ
  4775. LDR R4, =AES_CTRL
  4776. ORRS R6, R3
  4777.  
  4778. AES_Decrypt ; CODE XREF: DecryptBuffer+24j
  4779. MOVS R0, #4
  4780. BL CheckBoot0_Maybe
  4781. STR R6, [R4] ; Set AES_CTRL
  4782.  
  4783. WaitUntilAESFinshed ; CODE XREF: DecryptBuffer+1Ej
  4784. LDR R3, [R4]
  4785. CMP R3, #0
  4786. BLT WaitUntilAESFinshed
  4787. SUBS R5, #0x10 ; Decrease size by 16 Byte
  4788. CMP R5, #0
  4789. BNE AES_Decrypt
  4790.  
  4791. Done ; CODE XREF: DecryptBuffer+4j
  4792. MOVS R0, #1
  4793. POP {R4-R6}
  4794. POP {R1}
  4795. BX R1
  4796. ; End of function DecryptBuffer
  4797.  
  4798. ; ---------------------------------------------------------------------------
  4799. ALIGN 4
  4800. off_D411F6C DCD AES_CTRL ; DATA XREF: DecryptBuffer+Er
  4801. ; ---------------------------------------------------------------------------
  4802. PUSH {R4,R5,LR}
  4803. MOVS R4, R0
  4804. MOVS R0, R2
  4805. LDR R2, =AES_SRC
  4806. STR R1, [R2]
  4807. ADDS R2, #4
  4808. STR R3, [R2]
  4809. MOVS R2, #0x10C
  4810. ADDS R3, R4, R2
  4811. LDR R3, [R3]
  4812. MOVS R5, #0
  4813. CMP R3, #1
  4814. BEQ loc_D411FB2
  4815. MOVS R2, #0x104
  4816. ADDS R4, R4, R2
  4817. LDR R3, [R4]
  4818. CMP R3, #0
  4819. BNE loc_D411FAC
  4820.  
  4821. loc_D411F98 ; CODE XREF: SRAM:0D411FB0j
  4822. MOVS R1, R5
  4823. MOVS R2, #2
  4824. BL DecryptBuffer16Byte
  4825.  
  4826. loc_D411FA0 ; CODE XREF: SRAM:0D411FC0j
  4827. MOVS R3, #1
  4828. MOVS R0, #1
  4829. STR R3, [R4]
  4830. POP {R4,R5}
  4831. POP {R1}
  4832. BX R1
  4833. ; ---------------------------------------------------------------------------
  4834.  
  4835. loc_D411FAC ; CODE XREF: SRAM:0D411F96j
  4836. MOVS R5, #0x1000
  4837. B loc_D411F98
  4838. ; ---------------------------------------------------------------------------
  4839.  
  4840. loc_D411FB2 ; CODE XREF: SRAM:0D411F8Aj
  4841. MOVS R1, #0
  4842. MOVS R2, #2
  4843. BL DecryptBuffer
  4844. MOVS R3, #0x104
  4845. ADDS R4, R4, R3
  4846. B loc_D411FA0
  4847. ; ---------------------------------------------------------------------------
  4848. ALIGN 4
  4849. off_D411FC4 DCD AES_SRC ; DATA XREF: SRAM:0D411F76r
  4850.  
  4851. ; =============== S U B R O U T I N E =======================================
  4852.  
  4853.  
  4854. ; int __cdecl AES_HW_Decrypt(void *ControlBuffer, unsigned __int8 *AES_SRC_Buffer, int BufferSize, unsigned __int8 *AES_DEST_Buffer)
  4855. AES_HW_Decrypt ; CODE XREF: AES_Decrypt+3Ep
  4856. ; AES_HW_Decrypt_0+44p
  4857. PUSH {R4,R5,LR}
  4858. MOVS R4, R0
  4859. MOVS R0, R2 ; BufferSize
  4860. LDR R2, =AES_SRC
  4861. STR R1, [R2] ; Set AES_Src
  4862. ADDS R2, #4
  4863. STR R3, [R2] ; Set AES_DEST
  4864. MOVS R2, #0x10C
  4865. ADDS R3, R4, R2 ; UnknownBuffer + 0x10C
  4866. LDR R3, [R3] ; Init_HW_AES set this value to 1
  4867. MOVS R5, #0
  4868. CMP R3, #1
  4869. BEQ DecryptBufferBySize
  4870. MOVS R2, #0x104
  4871. ADDS R4, R4, R2 ; UnknownBuffer + 0x104
  4872. LDR R3, [R4] ; Init_HW_AES set this value to 0
  4873. CMP R3, #0
  4874. BNE USE_IV_FROM_LAST_Command ; Set IV flag, use IV from last command
  4875.  
  4876. loc_D411FF0 ; CODE XREF: AES_HW_Decrypt+40j
  4877. MOVS R1, R5 ; ControlFlags
  4878. MOVS R2, #3 ; 3 -> SET ENA and DEC
  4879. BL DecryptBuffer16Byte
  4880.  
  4881. loc_D411FF8 ; CODE XREF: AES_HW_Decrypt+50j
  4882. MOVS R3, #1
  4883. MOVS R0, #1
  4884. STR R3, [R4]
  4885. POP {R4,R5}
  4886. POP {R1}
  4887. BX R1
  4888. ; ---------------------------------------------------------------------------
  4889.  
  4890. USE_IV_FROM_LAST_Command ; CODE XREF: AES_HW_Decrypt+26j
  4891. MOVS R5, #0x1000 ; Set IV flag, use IV from last command
  4892. B loc_D411FF0
  4893. ; ---------------------------------------------------------------------------
  4894.  
  4895. DecryptBufferBySize ; CODE XREF: AES_HW_Decrypt+1Aj
  4896. MOVS R1, #0 ; ControlFlags
  4897. MOVS R2, #3 ; 3 -> SET ENA and DEC
  4898. BL DecryptBuffer ; R1 = 0; R2 = 3
  4899. MOVS R3, #0x104
  4900. ADDS R4, R4, R3
  4901. B loc_D411FF8
  4902. ; End of function AES_HW_Decrypt
  4903.  
  4904. ; ---------------------------------------------------------------------------
  4905. ALIGN 4
  4906. off_D41201C DCD AES_SRC ; DATA XREF: AES_HW_Decrypt+6r
  4907. ; [00000002 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD CTRL-"+" TO EXPAND]
  4908. ALIGN 4
  4909. CODE32
  4910.  
  4911. ; =============== S U B R O U T I N E =======================================
  4912.  
  4913.  
  4914. sub_D412024 ; CODE XREF: sub_D4132E8:loc_D4132ECj
  4915.  
  4916. var_4 = -4
  4917.  
  4918. SUB SP, SP, #4
  4919. STR R0, [SP,#4+var_4]
  4920. MCR p15, 0, R0,c7,c0, 4
  4921. LDR R0, [SP,#4+var_4]
  4922. ADD SP, SP, #4
  4923. BX LR
  4924. ; End of function sub_D412024
  4925.  
  4926. CODE16
  4927.  
  4928. ; =============== S U B R O U T I N E =======================================
  4929.  
  4930.  
  4931. sub_D41203C ; CODE XREF: Main:loc_D41080Cp
  4932. LDR R3, =unk_D414200
  4933. STR R0, [R3]
  4934. BX LR
  4935. ; End of function sub_D41203C
  4936.  
  4937. ; ---------------------------------------------------------------------------
  4938. ALIGN 4
  4939. off_D412044 DCD unk_D414200 ; DATA XREF: sub_D41203Cr
  4940.  
  4941. ; =============== S U B R O U T I N E =======================================
  4942.  
  4943.  
  4944. sub_D412048 ; CODE XREF: sub_D412060+4p
  4945. PUSH {LR}
  4946. LDR R3, =unk_D414200
  4947. LDR R0, [R3]
  4948. CMP R0, #0
  4949. BEQ loc_D412056
  4950.  
  4951. loc_D412052 ; CODE XREF: sub_D412048+10j
  4952. POP {R1}
  4953. BX R1
  4954. ; ---------------------------------------------------------------------------
  4955.  
  4956. loc_D412056 ; CODE XREF: sub_D412048+8j
  4957. MOVS R0, #0xF3
  4958. B loc_D412052
  4959. ; End of function sub_D412048
  4960.  
  4961. ; ---------------------------------------------------------------------------
  4962. ALIGN 4
  4963. off_D41205C DCD unk_D414200 ; DATA XREF: sub_D412048+2r
  4964.  
  4965. ; =============== S U B R O U T I N E =======================================
  4966.  
  4967.  
  4968. sub_D412060 ; CODE XREF: Main+2C6p Main+65Ap ...
  4969. PUSH {R4,R5,LR}
  4970. MOVS R5, R0
  4971. BL sub_D412048
  4972. MOVS R4, #0
  4973. MOVS R3, R0
  4974. MOVS R2, #0
  4975. MOVS R1, R5
  4976. MOVS R0, R4
  4977. BL sub_D413268
  4978. LSLS R2, R0, #0x19
  4979. LSRS R3, R1, #7
  4980. MOVS R1, R2
  4981. ORRS R1, R3
  4982. MOVS R0, R1
  4983. POP {R4,R5}
  4984. POP {R1}
  4985. BX R1
  4986. ; End of function sub_D412060
  4987.  
  4988. ; ---------------------------------------------------------------------------
  4989. ALIGN 4
  4990.  
  4991. ; =============== S U B R O U T I N E =======================================
  4992.  
  4993.  
  4994. UDelay ; CODE XREF: SendGPIODebugOut+14p
  4995. ; Main+508p ...
  4996. PUSH {LR}
  4997. BL sub_D412060
  4998. CMP R0, #1
  4999. BHI loc_D412094
  5000. MOVS R0, #2
  5001.  
  5002. loc_D412094 ; CODE XREF: UDelay+8j
  5003. LDR R1, =HW_TIMER
  5004. LDR R3, [R1]
  5005. ADDS R2, R3, R0
  5006. CMP R2, R3
  5007. BLS loc_D4120A8
  5008.  
  5009. loc_D41209E ; CODE XREF: UDelay+1Aj
  5010. LDR R3, [R1]
  5011. CMP R3, R2
  5012. BCC loc_D41209E
  5013.  
  5014. loc_D4120A4 ; CODE XREF: UDelay+2Cj
  5015. POP {R0}
  5016. BX R0
  5017. ; ---------------------------------------------------------------------------
  5018.  
  5019. loc_D4120A8 ; CODE XREF: UDelay+14j
  5020. ADDS R3, R1, #0
  5021.  
  5022. loc_D4120AA ; CODE XREF: UDelay+26j UDelay+2Aj
  5023. LDR R0, [R3]
  5024. CMP R0, #0
  5025. BLT loc_D4120AA
  5026. CMP R0, R2
  5027. BCC loc_D4120AA
  5028. B loc_D4120A4
  5029. ; End of function UDelay
  5030.  
  5031. ; ---------------------------------------------------------------------------
  5032. ALIGN 4
  5033. off_D4120B8 DCD HW_TIMER ; DATA XREF: UDelay:loc_D412094r
  5034.  
  5035. ; =============== S U B R O U T I N E =======================================
  5036.  
  5037.  
  5038. sub_D4120BC ; CODE XREF: Boot0_Checks_Maybe+26p
  5039. ; Boot0_Checks_Maybe+E0p ...
  5040. PUSH {R4,R5,LR}
  5041. LDR R1, =HW_VERSION
  5042. LDR R3, [R1]
  5043. MOVS R5, #0xF0
  5044. MOVS R4, #0
  5045. TST R3, R5
  5046. BNE loc_D4120E0
  5047. LDR R2, =dword_D800130
  5048. MOVS R3, #0x80
  5049. LDR R4, [R2]
  5050. LSLS R3, R3, #3
  5051. ORRS R3, R4
  5052. STR R3, [R2]
  5053. LDR R3, =dword_D800138
  5054. LDR R2, [R3]
  5055. LDR R2, [R3]
  5056. LDR R2, [R3]
  5057. LDR R3, [R3]
  5058.  
  5059. loc_D4120E0 ; CODE XREF: sub_D4120BC+Cj
  5060. LDR R3, =0xD8B0000
  5061. ORRS R3, R0
  5062. LDR R0, [R3]
  5063. LDR R3, [R1]
  5064. LDR R3, [R1]
  5065. TST R3, R5
  5066. BNE loc_D4120F2
  5067. LDR R3, =dword_D800130
  5068. STR R4, [R3]
  5069.  
  5070. loc_D4120F2 ; CODE XREF: sub_D4120BC+30j
  5071. POP {R4,R5}
  5072. POP {R1}
  5073. BX R1
  5074. ; End of function sub_D4120BC
  5075.  
  5076. ; ---------------------------------------------------------------------------
  5077. off_D4120F8 DCD HW_VERSION ; DATA XREF: sub_D4120BC+2r
  5078. off_D4120FC DCD dword_D800130 ; DATA XREF: sub_D4120BC+Er
  5079. ; sub_D4120BC+32r
  5080. off_D412100 DCD dword_D800138 ; DATA XREF: sub_D4120BC+1Ar
  5081. dword_D412104 DCD 0xD8B0000 ; DATA XREF: sub_D4120BC:loc_D4120E0r
  5082.  
  5083. ; =============== S U B R O U T I N E =======================================
  5084.  
  5085.  
  5086. Boot0_Checks_Maybe ; CODE XREF: sub_D412340+Ap
  5087. ; SRAM:0D41240Ep ...
  5088. PUSH {R4-R7,LR}
  5089. MOV R7, R11
  5090. MOV R6, R10
  5091. MOV R5, R9
  5092. MOV R4, R8
  5093. PUSH {R4-R7}
  5094. MOVS R4, R0
  5095. CMP R0, #0xC
  5096. BNE loc_D41211C
  5097. B loc_D41229C
  5098. ; ---------------------------------------------------------------------------
  5099.  
  5100. loc_D41211C ; CODE XREF: Boot0_Checks_Maybe+10j
  5101. CMP R0, #0xB
  5102. BNE loc_D412122
  5103. B loc_D4122C0
  5104. ; ---------------------------------------------------------------------------
  5105.  
  5106. loc_D412122 ; CODE XREF: Boot0_Checks_Maybe+16j
  5107. CMP R0, #0
  5108. BEQ loc_D412128
  5109. B loc_D412272
  5110. ; ---------------------------------------------------------------------------
  5111.  
  5112. loc_D412128 ; CODE XREF: Boot0_Checks_Maybe+1Cj
  5113. MOVS R7, #0x8000
  5114.  
  5115. loc_D41212C ; CODE XREF: Boot0_Checks_Maybe+192j
  5116. ; Boot0_Checks_Maybe+196j ...
  5117. MOVS R0, #8
  5118. BL sub_D4120BC
  5119. TST R0, R7
  5120. BEQ loc_D412138
  5121. B loc_D412262
  5122. ; ---------------------------------------------------------------------------
  5123.  
  5124. loc_D412138 ; CODE XREF: Boot0_Checks_Maybe+2Cj
  5125. SUBS R3, R4, #2
  5126. CMP R3, #8
  5127. BLS loc_D412140
  5128. B loc_D4122A0
  5129. ; ---------------------------------------------------------------------------
  5130.  
  5131. loc_D412140 ; CODE XREF: Boot0_Checks_Maybe+34j
  5132. LDR R4, =HW_BOOT0 ; Maps boot0
  5133. LDR R3, [R4]
  5134. MOVS R2, #0xF
  5135. ANDS R3, R2
  5136. CMP R3, #9
  5137. BNE loc_D41214E
  5138. B loc_D4122C6
  5139. ; ---------------------------------------------------------------------------
  5140.  
  5141. loc_D41214E ; CODE XREF: Boot0_Checks_Maybe+42j
  5142. ; Boot0_Checks_Maybe+1D4j
  5143. LDR R1, =dword_D800188
  5144. LDR R2, =0xFFFEFFFF
  5145. LDR R3, [R1]
  5146. ANDS R3, R2
  5147. STR R3, [R1]
  5148. MOVS R3, #0x80
  5149. LDR R2, [R1]
  5150. LSLS R3, R3, #0x12
  5151. ORRS R2, R3
  5152. STR R2, [R1]
  5153. SUBS R1, #0x64
  5154. LDR R2, [R1]
  5155. LDR R3, =0xFFFFF83F
  5156. ANDS R2, R3
  5157. MOVS R3, #0x280
  5158. ORRS R2, R3
  5159. STR R2, [R1]
  5160. ADDS R1, #0x10
  5161. LDR R2, [R1]
  5162. MOVS R3, #0x400
  5163. ORRS R2, R3
  5164. STR R2, [R1]
  5165. ADDS R1, #0x58
  5166. MOVS R2, #0xF
  5167.  
  5168. loc_D412182 ; CODE XREF: Boot0_Checks_Maybe+80j
  5169. LDR R3, [R1]
  5170. ANDS R3, R2
  5171. CMP R3, #9
  5172. BNE loc_D412182
  5173. LDR R1, =dword_D800100
  5174. MOVS R2, #0x80
  5175. LDR R3, [R1]
  5176. LSLS R2, R2, #3
  5177. ORRS R3, R2
  5178. STR R3, [R1]
  5179. ADDS R1, #4
  5180. LDR R3, [R1]
  5181. ORRS R3, R2
  5182. STR R3, [R1]
  5183. ADDS R1, #4
  5184. LDR R3, [R1]
  5185. ORRS R3, R2
  5186. STR R3, [R1]
  5187. LDR R3, =dword_D80010C
  5188. MOV R11, R3
  5189. LDR R3, [R3]
  5190. MOV R1, R11
  5191. ORRS R3, R2
  5192. STR R3, [R1]
  5193. LDR R3, =dword_D800110
  5194. MOV R9, R3
  5195. LDR R3, [R3]
  5196. MOV R1, R9
  5197. ORRS R3, R2
  5198. STR R3, [R1]
  5199. LDR R3, =dword_D800114
  5200. MOV R10, R3
  5201. LDR R3, [R3]
  5202. MOV R1, R10
  5203. ORRS R3, R2
  5204. STR R3, [R1]
  5205. LDR R3, =dword_D800118
  5206. MOV R8, R3
  5207. LDR R3, [R3]
  5208. MOV R1, R8
  5209. ORRS R3, R2
  5210. STR R3, [R1]
  5211. LDR R6, =dword_D80011C
  5212. LDR R3, [R6]
  5213. ORRS R3, R2
  5214. LDR R5, =dword_D800120
  5215. STR R3, [R6]
  5216. LDR R3, [R5]
  5217. ORRS R3, R2
  5218. STR R3, [R5]
  5219. MOVS R0, #8
  5220. BL sub_D4120BC
  5221. LDR R4, =unk_D8B0008
  5222. BICS R0, R7
  5223. STR R0, [R4]
  5224. MOVS R0, #8
  5225. BL sub_D4120BC
  5226. ORRS R7, R0
  5227. STR R7, [R4]
  5228. LDR R1, =dword_D800134
  5229. LDR R2, =0xFFFFFBFF
  5230. LDR R3, [R1]
  5231. ANDS R3, R2
  5232. STR R3, [R1]
  5233. SUBS R1, #0x34
  5234. LDR R3, [R1]
  5235. ANDS R3, R2
  5236. STR R3, [R1]
  5237. ADDS R1, #4
  5238. LDR R3, [R1]
  5239. ANDS R3, R2
  5240. STR R3, [R1]
  5241. ADDS R1, #4
  5242. LDR R3, [R1]
  5243. ANDS R3, R2
  5244. STR R3, [R1]
  5245. MOV R1, R11
  5246. LDR R3, [R1]
  5247. ANDS R3, R2
  5248. STR R3, [R1]
  5249. MOV R1, R9
  5250. LDR R3, [R1]
  5251. ANDS R3, R2
  5252. STR R3, [R1]
  5253. MOV R1, R10
  5254. LDR R3, [R1]
  5255. ANDS R3, R2
  5256. STR R3, [R1]
  5257. MOV R1, R8
  5258. LDR R3, [R1]
  5259. ANDS R3, R2
  5260. STR R3, [R1]
  5261. LDR R3, [R6]
  5262. ANDS R3, R2
  5263. STR R3, [R6]
  5264. LDR R3, [R5]
  5265. ANDS R3, R2
  5266. STR R3, [R5]
  5267. ADDS R1, #0x70
  5268. LDR R3, [R1]
  5269. LDR R2, =0xFDFFFFFF
  5270. ANDS R3, R2
  5271. STR R3, [R1]
  5272. SUBS R1, #0x64
  5273. LDR R3, [R1]
  5274. LDR R2, =0xFFFFF83F
  5275. ANDS R3, R2
  5276. MOVS R2, #0xC0
  5277. ORRS R3, R2
  5278. STR R3, [R1]
  5279.  
  5280. loc_D412262 ; CODE XREF: Boot0_Checks_Maybe+2Ej
  5281. ; Boot0_Checks_Maybe+1A2j ...
  5282. POP {R3-R6}
  5283. MOV R8, R3
  5284. MOV R9, R4
  5285. MOV R10, R5
  5286. MOV R11, R6
  5287. POP {R4-R7}
  5288. POP {R0}
  5289. BX R0
  5290. ; ---------------------------------------------------------------------------
  5291.  
  5292. loc_D412272 ; CODE XREF: Boot0_Checks_Maybe+1Ej
  5293. CMP R0, #1
  5294. BEQ loc_D4122DE
  5295. CMP R0, #2
  5296. BEQ loc_D4122E4
  5297. CMP R0, #3
  5298. BEQ loc_D4122EC
  5299. CMP R0, #4
  5300. BEQ loc_D4122F0
  5301. CMP R0, #5
  5302. BEQ loc_D4122E8
  5303. CMP R0, #6
  5304. BEQ loc_D4122F4
  5305. CMP R0, #7
  5306. BEQ loc_D4122F8
  5307. CMP R0, #8
  5308. BEQ loc_D4122FC
  5309. CMP R0, #9
  5310. BEQ loc_D412300
  5311. MOVS R7, #0x100
  5312. B loc_D41212C
  5313. ; ---------------------------------------------------------------------------
  5314.  
  5315. loc_D41229C ; CODE XREF: Boot0_Checks_Maybe+12j
  5316. MOVS R7, #0
  5317. B loc_D41212C
  5318. ; ---------------------------------------------------------------------------
  5319.  
  5320. loc_D4122A0 ; CODE XREF: Boot0_Checks_Maybe+36j
  5321. CMP R4, #0xB
  5322. BEQ loc_D4122AC
  5323. CMP R4, #0
  5324. BEQ loc_D4122AC
  5325. CMP R4, #1
  5326. BNE loc_D412262
  5327.  
  5328. loc_D4122AC ; CODE XREF: Boot0_Checks_Maybe+19Aj
  5329. ; Boot0_Checks_Maybe+19Ej
  5330. LDR R2, =unk_D8B0008
  5331. MOVS R3, R0
  5332. BICS R3, R7
  5333. STR R3, [R2]
  5334. MOVS R3, R0
  5335. ORRS R3, R7
  5336. STR R3, [R2]
  5337. STR R3, [R2]
  5338. STR R3, [R2]
  5339. B loc_D412262
  5340. ; ---------------------------------------------------------------------------
  5341.  
  5342. loc_D4122C0 ; CODE XREF: Boot0_Checks_Maybe+18j
  5343. MOVS R7, #0x1000
  5344. B loc_D41212C
  5345. ; ---------------------------------------------------------------------------
  5346.  
  5347. loc_D4122C6 ; CODE XREF: Boot0_Checks_Maybe+44j
  5348. MOVS R2, #0x80
  5349. LDR R1, =dword_D800188
  5350. LSLS R2, R2, #9
  5351. MOVS R0, #0xF
  5352.  
  5353. loc_D4122CE ; CODE XREF: Boot0_Checks_Maybe+1D2j
  5354. LDR R3, [R1]
  5355. ORRS R3, R2
  5356. STR R3, [R1]
  5357. LDR R3, [R4]
  5358. ANDS R3, R0
  5359. CMP R3, #9
  5360. BEQ loc_D4122CE
  5361. B loc_D41214E
  5362. ; ---------------------------------------------------------------------------
  5363.  
  5364. loc_D4122DE ; CODE XREF: Boot0_Checks_Maybe+16Cj
  5365. MOVS R7, #0x4000
  5366. B loc_D41212C
  5367. ; ---------------------------------------------------------------------------
  5368.  
  5369. loc_D4122E4 ; CODE XREF: Boot0_Checks_Maybe+170j
  5370. MOVS R7, #1
  5371. B loc_D41212C
  5372. ; ---------------------------------------------------------------------------
  5373.  
  5374. loc_D4122E8 ; CODE XREF: Boot0_Checks_Maybe+17Cj
  5375. MOVS R7, #8
  5376. B loc_D41212C
  5377. ; ---------------------------------------------------------------------------
  5378.  
  5379. loc_D4122EC ; CODE XREF: Boot0_Checks_Maybe+174j
  5380. MOVS R7, #2
  5381. B loc_D41212C
  5382. ; ---------------------------------------------------------------------------
  5383.  
  5384. loc_D4122F0 ; CODE XREF: Boot0_Checks_Maybe+178j
  5385. MOVS R7, #4
  5386. B loc_D41212C
  5387. ; ---------------------------------------------------------------------------
  5388.  
  5389. loc_D4122F4 ; CODE XREF: Boot0_Checks_Maybe+180j
  5390. MOVS R7, #0x10
  5391. B loc_D41212C
  5392. ; ---------------------------------------------------------------------------
  5393.  
  5394. loc_D4122F8 ; CODE XREF: Boot0_Checks_Maybe+184j
  5395. MOVS R7, #0x20
  5396. B loc_D41212C
  5397. ; ---------------------------------------------------------------------------
  5398.  
  5399. loc_D4122FC ; CODE XREF: Boot0_Checks_Maybe+188j
  5400. MOVS R7, #0x40
  5401. B loc_D41212C
  5402. ; ---------------------------------------------------------------------------
  5403.  
  5404. loc_D412300 ; CODE XREF: Boot0_Checks_Maybe+18Cj
  5405. MOVS R7, #0x80
  5406. B loc_D41212C
  5407. ; End of function Boot0_Checks_Maybe
  5408.  
  5409. ; ---------------------------------------------------------------------------
  5410. off_D412304 DCD HW_BOOT0 ; DATA XREF: Boot0_Checks_Maybe:loc_D412140r
  5411. ; Maps boot0
  5412. off_D412308 DCD dword_D800188 ; DATA XREF: Boot0_Checks_Maybe:loc_D41214Er
  5413. ; Boot0_Checks_Maybe+1C0r
  5414. dword_D41230C DCD 0xFFFEFFFF ; DATA XREF: Boot0_Checks_Maybe+48r
  5415. dword_D412310 DCD 0xFFFFF83F ; DATA XREF: Boot0_Checks_Maybe+5Er
  5416. ; Boot0_Checks_Maybe+150r
  5417. off_D412314 DCD dword_D800100 ; DATA XREF: Boot0_Checks_Maybe+82r
  5418. off_D412318 DCD dword_D80010C ; DATA XREF: Boot0_Checks_Maybe+9Er
  5419. off_D41231C DCD dword_D800110 ; DATA XREF: Boot0_Checks_Maybe+AAr
  5420. off_D412320 DCD dword_D800114 ; DATA XREF: Boot0_Checks_Maybe+B6r
  5421. off_D412324 DCD dword_D800118 ; DATA XREF: Boot0_Checks_Maybe+C2r
  5422. off_D412328 DCD dword_D80011C ; DATA XREF: Boot0_Checks_Maybe+CEr
  5423. off_D41232C DCD dword_D800120 ; DATA XREF: Boot0_Checks_Maybe+D4r
  5424. off_D412330 DCD unk_D8B0008 ; DATA XREF: Boot0_Checks_Maybe+E4r
  5425. ; Boot0_Checks_Maybe:loc_D4122ACr
  5426. off_D412334 DCD dword_D800134 ; DATA XREF: Boot0_Checks_Maybe+F4r
  5427. dword_D412338 DCD 0xFFFFFBFF ; DATA XREF: Boot0_Checks_Maybe+F6r
  5428. dword_D41233C DCD 0xFDFFFFFF ; DATA XREF: Boot0_Checks_Maybe+146r
  5429.  
  5430. ; =============== S U B R O U T I N E =======================================
  5431.  
  5432.  
  5433. sub_D412340 ; CODE XREF: SRAM:0D412380p
  5434. PUSH {R4,LR}
  5435. LDR R3, =0xD8B4000
  5436. ORRS R3, R0
  5437. MOVS R0, #0
  5438. LDRH R4, [R3]
  5439. BL Boot0_Checks_Maybe
  5440. LSLS R4, R4, #0x10
  5441. LSRS R4, R4, #0x10
  5442. MOVS R0, R4
  5443. POP {R4}
  5444. POP {R1}
  5445. BX R1
  5446. ; End of function sub_D412340
  5447.  
  5448. ; ---------------------------------------------------------------------------
  5449. ALIGN 4
  5450. off_D41235C DCD 0xD8B4000 ; DATA XREF: sub_D412340+2r
  5451. ; ---------------------------------------------------------------------------
  5452. PUSH {R4-R6,LR}
  5453. MOVS R5, #0
  5454. CMP R0, #0xC ; switch 13 cases
  5455. BHI def_D41236E ; jumptable 0D41236E default case
  5456. LDR R2, =jpt_D41236E
  5457. LSLS R3, R0, #2
  5458. LDR R3, [R3,R2]
  5459. MOV PC, R3 ; switch jump
  5460. ; ---------------------------------------------------------------------------
  5461.  
  5462. def_D41236E ; CODE XREF: SRAM:0D412366j
  5463. SUBS R0, #0xD ; jumptable 0D41236E default case
  5464. CMP R0, #4
  5465. BLS loc_D4123AE
  5466.  
  5467. def_D4123B4 ; CODE XREF: SRAM:0D4123B8j
  5468. ; SRAM:0D4123BCj ...
  5469. LDR R3, =0xD8B4228 ; jumptable 0D4123B4 default case
  5470. STRH R5, [R3]
  5471. MOVS R6, #0
  5472. MOVS R4, #0
  5473.  
  5474. loc_D41237E ; CODE XREF: SRAM:0D41239Aj
  5475. LDR R0, =0x22A
  5476. BL sub_D412340
  5477. MOVS R3, R5
  5478. EORS R3, R0
  5479. LSLS R3, R3, #0x10
  5480. CMP R3, #0
  5481. BEQ loc_D4123D6
  5482. MOVS R0, #1
  5483. BL UDelay
  5484. LDR R3, =0xF423F
  5485. ADDS R4, #1
  5486. CMP R4, R3
  5487. BLS loc_D41237E
  5488. LDR R3, =0xD8B4228
  5489. MOVS R2, #0
  5490. STRH R2, [R3]
  5491. CMP R6, #0
  5492. BEQ loc_D4123E2
  5493.  
  5494. loc_D4123A6 ; CODE XREF: SRAM:0D4123E0j
  5495. ; SRAM:0D4123EAj
  5496. POP {R4-R6}
  5497. POP {R0}
  5498. BX R0
  5499. ; ---------------------------------------------------------------------------
  5500.  
  5501. loc_D4123AC ; CODE XREF: SRAM:0D41236Ej
  5502. ; DATA XREF: SRAM:jpt_D41236Eo ...
  5503. MOVS R0, #0 ; jumptable 0D41236E cases 0,1,11
  5504.  
  5505. loc_D4123AE ; CODE XREF: SRAM:0D412374j
  5506. ; SRAM:0D4123CCj ...
  5507. LDR R2, =jpt_D4123B4
  5508. LSLS R3, R0, #2
  5509. LDR R3, [R3,R2]
  5510. MOV PC, R3 ; switch jump
  5511. ; ---------------------------------------------------------------------------
  5512.  
  5513. loc_D4123B6 ; CODE XREF: SRAM:0D4123B4j
  5514. ; DATA XREF: SRAM:0D413428o
  5515. MOVS R5, #0xF ; jumptable 0D4123B4 case 17
  5516. B def_D4123B4 ; jumptable 0D4123B4 default case
  5517. ; ---------------------------------------------------------------------------
  5518.  
  5519. loc_D4123BA ; CODE XREF: SRAM:0D4123B4j
  5520. ; DATA XREF: SRAM:0D413424o
  5521. MOVS R5, #8 ; jumptable 0D4123B4 case 16
  5522. B def_D4123B4 ; jumptable 0D4123B4 default case
  5523. ; ---------------------------------------------------------------------------
  5524.  
  5525. loc_D4123BE ; CODE XREF: SRAM:0D4123B4j
  5526. ; DATA XREF: SRAM:0D413420o
  5527. MOVS R5, #4 ; jumptable 0D4123B4 case 15
  5528. B def_D4123B4 ; jumptable 0D4123B4 default case
  5529. ; ---------------------------------------------------------------------------
  5530.  
  5531. loc_D4123C2 ; CODE XREF: SRAM:0D4123B4j
  5532. ; DATA XREF: SRAM:0D41341Co
  5533. MOVS R5, #2 ; jumptable 0D4123B4 case 14
  5534. B def_D4123B4 ; jumptable 0D4123B4 default case
  5535. ; ---------------------------------------------------------------------------
  5536.  
  5537. loc_D4123C6 ; CODE XREF: SRAM:0D4123B4j
  5538. ; DATA XREF: SRAM:jpt_D4123B4o
  5539. MOVS R5, #1 ; jumptable 0D4123B4 case 13
  5540. B def_D4123B4 ; jumptable 0D4123B4 default case
  5541. ; ---------------------------------------------------------------------------
  5542.  
  5543. loc_D4123CA ; CODE XREF: SRAM:0D41236Ej
  5544. ; DATA XREF: SRAM:0D4133ECo ...
  5545. MOVS R0, #2 ; jumptable 0D41236E cases 2,6
  5546. B loc_D4123AE
  5547. ; ---------------------------------------------------------------------------
  5548.  
  5549. loc_D4123CE ; CODE XREF: SRAM:0D41236Ej
  5550. ; DATA XREF: SRAM:0D4133F0o ...
  5551. MOVS R0, #3 ; jumptable 0D41236E cases 3,7-10
  5552. B loc_D4123AE
  5553. ; ---------------------------------------------------------------------------
  5554.  
  5555. loc_D4123D2 ; CODE XREF: SRAM:0D41236Ej
  5556. ; DATA XREF: SRAM:0D4133F4o ...
  5557. MOVS R0, #1 ; jumptable 0D41236E cases 4,5,12
  5558. B loc_D4123AE
  5559. ; ---------------------------------------------------------------------------
  5560.  
  5561. loc_D4123D6 ; CODE XREF: SRAM:0D41238Cj
  5562. LDR R3, =0xD8B4228
  5563. MOVS R2, #0
  5564. MOVS R6, #1
  5565. STRH R2, [R3]
  5566. CMP R6, #0
  5567. BNE loc_D4123A6
  5568.  
  5569. loc_D4123E2 ; CODE XREF: SRAM:0D4123A4j
  5570. MOVS R1, R5
  5571. LDR R0, =aErrorAhbmemflu ; "ERROR: ahbMemFlush(0x%x) did not ack!\n"
  5572. BL sub_D41013C
  5573. B loc_D4123A6
  5574. ; ---------------------------------------------------------------------------
  5575. off_D4123EC DCD jpt_D41236E ; DATA XREF: SRAM:0D412368r
  5576. off_D4123F0 DCD 0xD8B4228 ; DATA XREF: SRAM:def_D4123B4r
  5577. ; SRAM:0D41239Cr ...
  5578. dword_D4123F4 DCD 0x22A ; DATA XREF: SRAM:loc_D41237Er
  5579. dword_D4123F8 DCD 0xF423F ; DATA XREF: SRAM:0D412394r
  5580. off_D4123FC DCD jpt_D4123B4 ; DATA XREF: SRAM:loc_D4123AEr
  5581. off_D412400 DCD aErrorAhbmemflu ; DATA XREF: SRAM:0D4123E4r
  5582. ; "ERROR: ahbMemFlush(0x%x) did not ack!\n"
  5583. ; ---------------------------------------------------------------------------
  5584. PUSH {R4,LR}
  5585. BL sub_D4120BC
  5586. MOVS R4, R0
  5587. MOVS R0, #0
  5588. BL Boot0_Checks_Maybe
  5589. MOVS R0, R4
  5590. POP {R4}
  5591. POP {R1}
  5592. BX R1
  5593. ; ---------------------------------------------------------------------------
  5594. ALIGN 4
  5595.  
  5596. ; =============== S U B R O U T I N E =======================================
  5597.  
  5598.  
  5599. CheckBoot0_Maybe ; CODE XREF: Main+424p Main+572p ...
  5600. PUSH {R4,LR}
  5601. MOVS R4, R0
  5602. BL Boot0_Checks_Maybe
  5603. CMP R4, #0
  5604. BNE loc_D41242E
  5605.  
  5606. loc_D412428 ; CODE XREF: CheckBoot0_Maybe+18j
  5607. POP {R4}
  5608. POP {R0}
  5609. BX R0
  5610. ; ---------------------------------------------------------------------------
  5611.  
  5612. loc_D41242E ; CODE XREF: CheckBoot0_Maybe+Aj
  5613. MOVS R0, #0
  5614. BL Boot0_Checks_Maybe
  5615. B loc_D412428
  5616. ; End of function CheckBoot0_Maybe
  5617.  
  5618. ; ---------------------------------------------------------------------------
  5619. ALIGN 4
  5620.  
  5621. ; =============== S U B R O U T I N E =======================================
  5622.  
  5623.  
  5624. sub_D412438 ; CODE XREF: sub_D412588+Ep
  5625. ; SRAM:0D4125B2p
  5626.  
  5627. var_A40 = -0xA40
  5628. var_A3C = -0xA3C
  5629. var_834 = -0x834
  5630.  
  5631. PUSH {R4-R7,LR}
  5632. MOV R7, R11
  5633. MOV R6, R10
  5634. MOV R5, R9
  5635. MOV R4, R8
  5636. PUSH {R4-R7}
  5637. LDR R4, =0xFFFFF5E4
  5638. ADD SP, R4
  5639. MOVS R7, R0
  5640. MOVS R4, R1
  5641. MOVS R5, R2
  5642. MOV R8, R3
  5643. LDR R2, =0xA44
  5644. ADD R2, SP
  5645. LDR R2, [R2]
  5646. MOV R11, R2
  5647. LSRS R6, R2, #2
  5648. LDR R3, =0x614
  5649. ADD R3, SP
  5650. MOV R9, R3
  5651. MOVS R0, R3
  5652. MOVS R1, R6
  5653. MOVS R2, R4
  5654. MOV R3, R11
  5655. LDR R4, =(sub_D4130F8+1)
  5656. BLX R4 ; sub_D4130F8
  5657. MOVS R2, #0x410
  5658. ADD R2, SP
  5659. MOV R10, R2
  5660. MOVS R0, R2
  5661. MOVS R1, R6
  5662. MOVS R2, R5
  5663. MOV R3, R11
  5664. BLX R4 ; sub_D4130F8
  5665. ADD R0, SP, #0xA40+var_834
  5666. MOVS R1, #1
  5667. MOV R2, R8
  5668. MOVS R5, #0xA40
  5669. ADD R5, SP
  5670. LDR R3, [R5]
  5671. BLX R4 ; sub_D4130F8
  5672. MOVS R2, #8
  5673. ADD R2, SP
  5674. MOV R8, R2
  5675. MOV R3, R9
  5676. STR R3, [SP,#0xA40+var_A40]
  5677. STR R6, [SP,#0xA40+var_A3C]
  5678. MOVS R0, R2
  5679. MOV R1, R10
  5680. ADD R2, SP, #0xA40+var_834
  5681. MOVS R3, #1
  5682. LDR R4, =sub_D412D38
  5683. BLX R4 ; sub_D412D38
  5684. MOV R4, R11
  5685. LSLS R1, R4, #3
  5686. LDR R5, =0x818
  5687. ADD R5, SP
  5688. MOVS R0, R5
  5689. LSRS R1, R1, #3
  5690. MOV R2, R8
  5691. MOVS R3, R6
  5692. LDR R4, =(sub_D4130AC+1)
  5693. BLX R4 ; sub_D4130AC
  5694. MOVS R0, #0
  5695. LDRB R3, [R5]
  5696. CMP R3, #0
  5697. BNE loc_D4124C4
  5698. MOVS R0, #1
  5699.  
  5700. loc_D4124C4 ; CODE XREF: sub_D412438+88j
  5701. MOVS R2, #0
  5702. LDRB R3, [R5,#1]
  5703. CMP R3, #1
  5704. BNE loc_D4124CE
  5705. MOVS R2, #1
  5706.  
  5707. loc_D4124CE ; CODE XREF: sub_D412438+92j
  5708. ANDS R0, R2
  5709. ADDS R5, #2
  5710. LDR R3, =0xA1C
  5711. ADD R3, SP
  5712. ADD R3, R11
  5713. LDR R2, =0xFFFFFDD8
  5714. ADDS R3, R3, R2
  5715. CMP R3, R5
  5716. BLS loc_D412502
  5717. MOVS R2, #1
  5718. LDR R3, =0xA1C
  5719. ADD R3, SP
  5720. ADD R3, R11
  5721. LDR R4, =0xFFFFFDD8
  5722. ADDS R1, R3, R4
  5723.  
  5724. loc_D4124EC ; CODE XREF: sub_D412438+C8j
  5725. LDRB R3, [R5]
  5726. ADDS R5, #1
  5727. LSLS R3, R3, #0x18
  5728. LSRS R3, R3, #0x18
  5729. CMP R3, #0xFF
  5730. BNE loc_D4124FC
  5731. ANDS R0, R2
  5732. B loc_D4124FE
  5733. ; ---------------------------------------------------------------------------
  5734.  
  5735. loc_D4124FC ; CODE XREF: sub_D412438+BEj
  5736. MOVS R0, #0
  5737.  
  5738. loc_D4124FE ; CODE XREF: sub_D412438+C2j
  5739. CMP R1, R5
  5740. BHI loc_D4124EC
  5741.  
  5742. loc_D412502 ; CODE XREF: sub_D412438+A6j
  5743. MOVS R1, #0
  5744. LDR R4, =SHA1_HASH
  5745. MOVS R6, #1
  5746.  
  5747. loc_D412508 ; CODE XREF: sub_D412438+E8j
  5748. LDRB R3, [R5]
  5749. ADDS R5, #1
  5750. LSLS R3, R3, #0x18
  5751. LSRS R3, R3, #0x18
  5752. LDRB R2, [R4,R1]
  5753. CMP R3, R2
  5754. BNE loc_D41251A
  5755. ANDS R0, R6
  5756. B loc_D41251C
  5757. ; ---------------------------------------------------------------------------
  5758.  
  5759. loc_D41251A ; CODE XREF: sub_D412438+DCj
  5760. MOVS R0, #0
  5761.  
  5762. loc_D41251C ; CODE XREF: sub_D412438+E0j
  5763. ADDS R1, #1
  5764. CMP R1, #0xF
  5765. BLS loc_D412508
  5766. MOVS R1, #0
  5767. MOVS R4, #1
  5768.  
  5769. loc_D412526 ; CODE XREF: sub_D412438+108j
  5770. LDRB R2, [R7]
  5771. ADDS R7, #1
  5772. LDRB R3, [R5]
  5773. ADDS R5, #1
  5774. LSLS R3, R3, #0x18
  5775. LSLS R2, R2, #0x18
  5776. CMP R2, R3
  5777. BNE loc_D41253A
  5778. ANDS R0, R4
  5779. B loc_D41253C
  5780. ; ---------------------------------------------------------------------------
  5781.  
  5782. loc_D41253A ; CODE XREF: sub_D412438+FCj
  5783. MOVS R0, #0
  5784.  
  5785. loc_D41253C ; CODE XREF: sub_D412438+100j
  5786. ADDS R1, #1
  5787. CMP R1, #0x13
  5788. BLS loc_D412526
  5789. CMP R0, #0
  5790. BEQ loc_D41254A
  5791. MOVS R0, #0
  5792. B loc_D41254C
  5793. ; ---------------------------------------------------------------------------
  5794.  
  5795. loc_D41254A ; CODE XREF: sub_D412438+10Cj
  5796. MOVS R0, #7
  5797.  
  5798. loc_D41254C ; CODE XREF: sub_D412438+110j
  5799. LDR R3, =0xA1C
  5800. ADD SP, R3
  5801. POP {R3-R6}
  5802. MOV R8, R3
  5803. MOV R9, R4
  5804. MOV R10, R5
  5805. MOV R11, R6
  5806. POP {R4-R7}
  5807. POP {R1}
  5808. BX R1
  5809. ; End of function sub_D412438
  5810.  
  5811. ; ---------------------------------------------------------------------------
  5812. dword_D412560 DCD 0xFFFFF5E4 ; DATA XREF: sub_D412438+Cr
  5813. dword_D412564 DCD 0xA44 ; DATA XREF: sub_D412438+18r
  5814. dword_D412568 DCD 0x614 ; DATA XREF: sub_D412438+22r
  5815. off_D41256C DCD sub_D4130F8+1 ; DATA XREF: sub_D412438+30r
  5816. off_D412570 DCD sub_D412D38 ; DATA XREF: sub_D412438+6Ar
  5817. dword_D412574 DCD 0x818 ; DATA XREF: sub_D412438+72r
  5818. off_D412578 DCD sub_D4130AC+1 ; DATA XREF: sub_D412438+7Er
  5819. dword_D41257C DCD 0xA1C ; DATA XREF: sub_D412438+9Ar
  5820. ; sub_D412438+AAr ...
  5821. dword_D412580 DCD 0xFFFFFDD8 ; DATA XREF: sub_D412438+A0r
  5822. ; sub_D412438+B0r
  5823. off_D412584 DCD SHA1_HASH ; DATA XREF: sub_D412438+CCr
  5824.  
  5825. ; =============== S U B R O U T I N E =======================================
  5826.  
  5827.  
  5828. sub_D412588 ; CODE XREF: CalcSHA_And_RSA+54p
  5829.  
  5830. var_10 = -0x10
  5831. var_C = -0xC
  5832. arg_0 = 0
  5833.  
  5834. PUSH {R4,LR}
  5835. SUB SP, SP, #8
  5836. LDR R4, [SP,#0x10+arg_0]
  5837. STR R4, [SP,#0x10+var_10]
  5838. MOVS R4, #0x100
  5839. STR R4, [SP,#0x10+var_C]
  5840. BL sub_D412438
  5841. ADD SP, SP, #8
  5842. POP {R4}
  5843. POP {R1}
  5844. BX R1
  5845. ; End of function sub_D412588
  5846.  
  5847. ; ---------------------------------------------------------------------------
  5848. ALIGN 4
  5849. PUSH {R4,LR}
  5850. SUB SP, SP, #8
  5851. LDR R4, [SP,#0x10]
  5852. STR R4, [SP]
  5853. MOVS R4, #0x200
  5854. STR R4, [SP,#4]
  5855. BL sub_D412438
  5856. ADD SP, SP, #8
  5857. POP {R4}
  5858. POP {R1}
  5859. BX R1
  5860. ; ---------------------------------------------------------------------------
  5861. ALIGN 0x10
  5862. PUSH {R4-R7,LR}
  5863. MOV R7, R11
  5864. MOV R6, R10
  5865. MOV R5, R9
  5866. MOV R4, R8
  5867. PUSH {R4-R7}
  5868. LDR R4, =0xFFFFF7E8
  5869. ADD SP, R4
  5870. MOVS R7, R0
  5871. MOV R8, R1
  5872. MOV R10, R3
  5873. LDR R3, =0x83C
  5874. ADD R3, SP
  5875. LDR R5, [R3]
  5876. LSRS R6, R5, #2
  5877. LDR R3, =0x614
  5878. ADD R3, SP
  5879. MOV R11, R3
  5880. MOVS R0, R3
  5881. MOVS R1, R6
  5882. MOVS R3, R5
  5883. LDR R4, =(sub_D4130F8+1)
  5884. BLX R4 ; sub_D4130F8
  5885. MOVS R3, #0x410
  5886. ADD R3, SP
  5887. MOV R9, R3
  5888. MOVS R0, R3
  5889. MOVS R1, R6
  5890. MOV R2, R8
  5891. MOVS R3, R5
  5892. BLX R4 ; sub_D4130F8
  5893. MOVS R3, #0x20C
  5894. ADD R3, SP
  5895. MOV R8, R3
  5896. MOVS R0, R3
  5897. MOVS R1, R6
  5898. MOV R2, R10
  5899. MOVS R3, R5
  5900. BLX R4 ; sub_D4130F8
  5901. MOVS R3, #8
  5902. ADD R3, SP
  5903. MOV R10, R3
  5904. MOV R3, R11
  5905. STR R3, [SP]
  5906. STR R6, [SP,#4]
  5907. MOV R0, R10
  5908. MOV R1, R9
  5909. MOV R2, R8
  5910. MOVS R3, R6
  5911. LDR R4, =sub_D412D38
  5912. BLX R4 ; sub_D412D38
  5913. LSLS R5, R5, #3
  5914. MOVS R0, R7
  5915. LSRS R1, R5, #3
  5916. MOV R2, R10
  5917. MOVS R3, R6
  5918. LDR R4, =(sub_D4130AC+1)
  5919. BLX R4 ; sub_D4130AC
  5920. LDR R3, =0x818
  5921. ADD SP, R3
  5922. POP {R3-R6}
  5923. MOV R8, R3
  5924. MOV R9, R4
  5925. MOV R10, R5
  5926. MOV R11, R6
  5927. POP {R4-R7}
  5928. POP {R0}
  5929. BX R0
  5930. ; ---------------------------------------------------------------------------
  5931. dword_D41264C DCD 0xFFFFF7E8 ; DATA XREF: SRAM:0D4125CCr
  5932. dword_D412650 DCD 0x83C ; DATA XREF: SRAM:0D4125D6r
  5933. dword_D412654 DCD 0x614 ; DATA XREF: SRAM:0D4125DEr
  5934. off_D412658 DCD sub_D4130F8+1 ; DATA XREF: SRAM:0D4125EAr
  5935. off_D41265C DCD sub_D412D38 ; DATA XREF: SRAM:0D412626r
  5936. off_D412660 DCD sub_D4130AC+1 ; DATA XREF: SRAM:0D412634r
  5937. dword_D412664 DCD 0x818 ; DATA XREF: SRAM:0D412638r
  5938. CODE32
  5939.  
  5940. ; =============== S U B R O U T I N E =======================================
  5941.  
  5942. ; Attributes: bp-based frame
  5943.  
  5944. sub_D412668 ; CODE XREF: sub_D412AE0+E0p
  5945. MOV R12, SP
  5946. STMFD SP!, {R4-R12,LR,PC}
  5947. SUB R11, R12, #4
  5948. MOV R9, R0
  5949. MOV R8, R2
  5950. MOV R6, R2,LSR#16
  5951. MOV R3, R2,LSL#16
  5952. MOV R10, R3,LSR#16
  5953. LDMIA R1, {R4,R5}
  5954. MOV R3, #0xFFFF
  5955. CMP R6, R3
  5956. MOVEQ R7, R5,LSR#16
  5957. BEQ loc_D4126BC
  5958. MOV R0, R5
  5959. ADD R1, R6, #1
  5960. LDR R3, =(sub_D4131EC+1)
  5961. MOV LR, PC
  5962. BX R3 ; sub_D4131EC
  5963. MOV R0, R0,LSL#16
  5964. MOV R7, R0,LSR#16
  5965.  
  5966. loc_D4126BC ; CODE XREF: sub_D412668+34j
  5967. MUL R2, R10, R7
  5968. MUL R1, R6, R7
  5969. MOV R3, R2,LSL#16
  5970. RSB R4, R3, R4
  5971. MVN R3, R3
  5972. CMP R3, R4
  5973. SUBCC R5, R5, #1
  5974. SUB R5, R5, R2,LSR#16
  5975. RSB R5, R1, R5
  5976. CMP R6, R5
  5977. BCC loc_D4126F8
  5978. BNE loc_D412730
  5979. MOV R3, R10,LSL#16
  5980. CMP R3, R4
  5981. BHI loc_D412730
  5982.  
  5983. loc_D4126F8 ; CODE XREF: sub_D412668+7Cj
  5984. MOV R2, R10,LSL#16
  5985. MVN R1, R2
  5986.  
  5987. loc_D412700 ; CODE XREF: sub_D412668+B8j
  5988. ; sub_D412668+C4j
  5989. RSB R4, R2, R4
  5990. CMP R1, R4
  5991. SUBCC R5, R5, #1
  5992. RSB R5, R6, R5
  5993. ADD R3, R7, #1
  5994. MOV R3, R3,LSL#16
  5995. MOV R7, R3,LSR#16
  5996. CMP R6, R5
  5997. BCC loc_D412700
  5998. BNE loc_D412730
  5999. CMP R2, R4
  6000. BLS loc_D412700
  6001.  
  6002. loc_D412730 ; CODE XREF: sub_D412668+80j
  6003. ; sub_D412668+8Cj ...
  6004. MOV R3, #0xFFFF
  6005. CMP R6, R3
  6006. MOVEQ R3, R5,LSL#16
  6007. MOVEQ R0, R3,LSR#16
  6008. BEQ loc_D412768
  6009. MOV R0, R4,LSR#16
  6010. ADD R0, R0, R5,LSL#16
  6011. ADD R1, R6, #1
  6012. LDR R3, =(sub_D4131EC+1)
  6013. MOV LR, PC
  6014. BX R3 ; sub_D4131EC
  6015. MOV R0, R0,LSL#16
  6016. MOV R0, R0,LSR#16
  6017.  
  6018. loc_D412768 ; CODE XREF: sub_D412668+DCj
  6019. MUL R2, R10, R0
  6020. MUL R1, R6, R0
  6021. RSB R4, R2, R4
  6022. MVN R3, R2
  6023. CMP R3, R4
  6024. SUBCC R5, R5, #1
  6025. MOV R3, R1,LSL#16
  6026. RSB R4, R3, R4
  6027. MVN R3, R3
  6028. CMP R3, R4
  6029. SUBCC R5, R5, #1
  6030. SUB R3, R5, R1,LSR#16
  6031. MOV R5, R3
  6032. CMP R3, #0
  6033. BNE loc_D4127AC
  6034. CMP R8, R4
  6035. BHI loc_D4127D8
  6036.  
  6037. loc_D4127AC ; CODE XREF: sub_D412668+138j
  6038. MVN R2, R8
  6039.  
  6040. loc_D4127B0 ; CODE XREF: sub_D412668+164j
  6041. ; sub_D412668+16Cj
  6042. RSB R4, R8, R4
  6043. CMP R2, R4
  6044. SUBCC R5, R5, #1
  6045. ADD R3, R0, #1
  6046. MOV R3, R3,LSL#16
  6047. MOV R0, R3,LSR#16
  6048. CMP R5, #0
  6049. BNE loc_D4127B0
  6050. CMP R8, R4
  6051. BLS loc_D4127B0
  6052.  
  6053. loc_D4127D8 ; CODE XREF: sub_D412668+140j
  6054. ADD R3, R0, R7,LSL#16
  6055. STR R3, [R9]
  6056. LDMFD SP, {R4-R11,SP,LR}
  6057. BX LR
  6058. ; End of function sub_D412668
  6059.  
  6060. ; ---------------------------------------------------------------------------
  6061. off_D4127E8 DCD sub_D4131EC+1 ; DATA XREF: sub_D412668+40r
  6062. ; sub_D412668+ECr
  6063.  
  6064. ; =============== S U B R O U T I N E =======================================
  6065.  
  6066.  
  6067. sub_D4127EC ; CODE XREF: sub_D412930+A8p
  6068. ; sub_D412D38+8Cp ...
  6069. MOV R12, #0
  6070. CMP R12, R2
  6071. BXGE LR
  6072.  
  6073. loc_D4127F8 ; CODE XREF: sub_D4127EC+1Cj
  6074. LDR R3, [R1,R12,LSL#2]
  6075. STR R3, [R0,R12,LSL#2]
  6076. ADD R12, R12, #1
  6077. CMP R12, R2
  6078. BLT loc_D4127F8
  6079. BX LR
  6080. ; End of function sub_D4127EC
  6081.  
  6082.  
  6083. ; =============== S U B R O U T I N E =======================================
  6084.  
  6085.  
  6086. sub_D412810 ; CODE XREF: sub_D412930+28p
  6087. ; sub_D412AE0+60p ...
  6088. MOV R3, #0
  6089. CMP R3, R1
  6090. BXGE LR
  6091. MOV R2, R3
  6092.  
  6093. loc_D412820 ; CODE XREF: sub_D412810+1Cj
  6094. STR R2, [R0,R3,LSL#2]
  6095. ADD R3, R3, #1
  6096. CMP R3, R1
  6097. BLT loc_D412820
  6098. BX LR
  6099. ; End of function sub_D412810
  6100.  
  6101.  
  6102. ; =============== S U B R O U T I N E =======================================
  6103.  
  6104.  
  6105. sub_D412834 ; CODE XREF: SRAM:0D413014p
  6106. STMFD SP!, {R4,R5,LR}
  6107. MOV R5, R0
  6108. MOV R4, R1
  6109. MOV R1, R2
  6110. MOV R2, R3
  6111. MOV R0, #0
  6112. MOV LR, R0
  6113. CMP R0, R3
  6114. BGE loc_D412888
  6115.  
  6116. loc_D412858 ; CODE XREF: sub_D412834+50j
  6117. LDR R3, [R4,LR,LSL#2]
  6118. ADDS R12, R0, R3
  6119. LDRCS R12, [R1,LR,LSL#2]
  6120. BCS loc_D412878
  6121. LDR R3, [R1,LR,LSL#2]
  6122. ADDS R12, R12, R3
  6123. MOVCC R0, #0
  6124. MOVCS R0, #1
  6125.  
  6126. loc_D412878 ; CODE XREF: sub_D412834+30j
  6127. STR R12, [R5,LR,LSL#2]
  6128. ADD LR, LR, #1
  6129. CMP LR, R2
  6130. BLT loc_D412858
  6131.  
  6132. loc_D412888 ; CODE XREF: sub_D412834+20j
  6133. LDMFD SP!, {R4,R5,LR}
  6134. BX LR
  6135. ; End of function sub_D412834
  6136.  
  6137.  
  6138. ; =============== S U B R O U T I N E =======================================
  6139.  
  6140.  
  6141. sub_D412890 ; CODE XREF: sub_D412AE0+138p
  6142. ; SRAM:0D413088p
  6143. STMFD SP!, {R4,R5,LR}
  6144. MOV R5, R0
  6145. MOV R4, R1
  6146. MOV R1, R2
  6147. MOV R2, R3
  6148. MOV R0, #0
  6149. MOV LR, R0
  6150. CMP R0, R3
  6151. BGE loc_D412900
  6152.  
  6153. loc_D4128B4 ; CODE XREF: sub_D412890+6Cj
  6154. LDR R3, [R4,LR,LSL#2]
  6155. RSB R12, R0, R3
  6156. RSB R3, R0, #0xFF000000
  6157. ADD R3, R3, #0x1000000
  6158. SUB R3, R3, #1
  6159. CMP R12, R3
  6160. LDRHI R3, [R1,LR,LSL#2]
  6161. MVNHI R12, R3
  6162. BHI loc_D4128F0
  6163. LDR R3, [R1,LR,LSL#2]
  6164. RSB R12, R3, R12
  6165. MVN R3, R3
  6166. CMP R12, R3
  6167. MOVLS R0, #0
  6168. MOVHI R0, #1
  6169.  
  6170. loc_D4128F0 ; CODE XREF: sub_D412890+44j
  6171. STR R12, [R5,LR,LSL#2]
  6172. ADD LR, LR, #1
  6173. CMP LR, R2
  6174. BLT loc_D4128B4
  6175.  
  6176. loc_D412900 ; CODE XREF: sub_D412890+20j
  6177. LDMFD SP!, {R4,R5,LR}
  6178. BX LR
  6179. ; End of function sub_D412890
  6180.  
  6181.  
  6182. ; =============== S U B R O U T I N E =======================================
  6183.  
  6184.  
  6185. sub_D412908 ; CODE XREF: sub_D412930+34p
  6186. ; sub_D412930+44p ...
  6187. MOV R2, R0
  6188. SUBS R0, R1, #1
  6189. BMI loc_D412928
  6190.  
  6191. loc_D412914 ; CODE XREF: sub_D412908+1Cj
  6192. LDR R3, [R2,R0,LSL#2]
  6193. CMP R3, #0
  6194. BNE loc_D412928
  6195. SUBS R0, R0, #1
  6196. BPL loc_D412914
  6197.  
  6198. loc_D412928 ; CODE XREF: sub_D412908+8j
  6199. ; sub_D412908+14j
  6200. ADD R0, R0, #1
  6201. BX LR
  6202. ; End of function sub_D412908
  6203.  
  6204.  
  6205. ; =============== S U B R O U T I N E =======================================
  6206.  
  6207. ; Attributes: bp-based frame
  6208.  
  6209. sub_D412930 ; CODE XREF: sub_D412CE8+24p
  6210. ; SRAM:0D412FF8p
  6211.  
  6212. var_34 = -0x34
  6213. var_30 = -0x30
  6214. var_2C = -0x2C
  6215.  
  6216. MOV R12, SP
  6217. STMFD SP!, {R4-R12,LR,PC}
  6218. SUB R11, R12, #4
  6219. SUB SP, SP, #0xC
  6220. STR R0, [R11,#var_2C]
  6221. STR R1, [R11,#var_30]
  6222. MOV R9, R2
  6223. MOV R10, R3
  6224. LDR R0, =unk_D415E20
  6225. MOV R1, R3,LSL#1
  6226. BL sub_D412810
  6227. LDR R0, [R11,#var_30]
  6228. MOV R1, R10
  6229. BL sub_D412908
  6230. MOV R8, R0
  6231. MOV R0, R9
  6232. MOV R1, R10
  6233. BL sub_D412908
  6234. MOV R7, R0
  6235. MOV R5, #0
  6236. CMP R5, R8
  6237. BGE loc_D4129CC
  6238. LDR R6, =unk_D415E20
  6239.  
  6240. loc_D41298C ; CODE XREF: sub_D412930+98j
  6241. ADD R4, R5, R7
  6242. ADD R1, R6, R5,LSL#2
  6243. LDR R3, [R11,#var_30]
  6244. LDR R2, [R3,R5,LSL#2]
  6245. STR R7, [SP,#0x34+var_34]
  6246. MOV R0, R1
  6247. MOV R3, R9
  6248. LDR R12, =sub_D41314C
  6249. MOV LR, PC
  6250. BX R12 ; sub_D41314C
  6251. LDR R3, [R6,R4,LSL#2]
  6252. ADD R0, R0, R3
  6253. STR R0, [R6,R4,LSL#2]
  6254. ADD R5, R5, #1
  6255. CMP R5, R8
  6256. BLT loc_D41298C
  6257.  
  6258. loc_D4129CC ; CODE XREF: sub_D412930+54j
  6259. LDR R0, [R11,#var_2C]
  6260. LDR R1, =unk_D415E20
  6261. MOV R2, R10,LSL#1
  6262. BL sub_D4127EC
  6263. SUB SP, R11, #0x28
  6264. LDMFD SP, {R4-R11,SP,LR}
  6265. BX LR
  6266. ; End of function sub_D412930
  6267.  
  6268. ; ---------------------------------------------------------------------------
  6269. off_D4129E8 DCD unk_D415E20 ; DATA XREF: sub_D412930+20r
  6270. ; sub_D412930+58r ...
  6271. off_D4129EC DCD sub_D41314C ; DATA XREF: sub_D412930+78r
  6272.  
  6273. ; =============== S U B R O U T I N E =======================================
  6274.  
  6275.  
  6276. sub_D4129F0 ; CODE XREF: sub_D412AE0+78p
  6277. ; sub_D412AE0+90p
  6278. STMFD SP!, {R4-R6,LR}
  6279. MOV R5, R0
  6280. MOV R4, R1
  6281. MOV R1, R3
  6282. CMP R2, #0x1F
  6283. MOVGT R0, #0
  6284. BGT loc_D412A44
  6285. RSB R6, R2, #0x20
  6286. MOV R0, #0
  6287. MOV LR, R0
  6288. CMP R0, R3
  6289. BGE loc_D412A44
  6290.  
  6291. loc_D412A20 ; CODE XREF: sub_D4129F0+50j
  6292. LDR R12, [R4,LR,LSL#2]
  6293. ORR R3, R0, R12,LSL R2
  6294. STR R3, [R5,LR,LSL#2]
  6295. CMP R2, #0
  6296. MOVNE R0, R12,LSR R6
  6297. MOVEQ R0, #0
  6298. ADD LR, LR, #1
  6299. CMP LR, R1
  6300. BLT loc_D412A20
  6301.  
  6302. loc_D412A44 ; CODE XREF: sub_D4129F0+18j
  6303. ; sub_D4129F0+2Cj
  6304. LDMFD SP!, {R4-R6,LR}
  6305. BX LR
  6306. ; End of function sub_D4129F0
  6307.  
  6308.  
  6309. ; =============== S U B R O U T I N E =======================================
  6310.  
  6311.  
  6312. sub_D412A4C ; CODE XREF: sub_D412AE0+198p
  6313. STMFD SP!, {R4,R5,LR}
  6314. MOV R4, R0
  6315. CMP R2, #0x1F
  6316. MOVGT R0, #0
  6317. BGT loc_D412A90
  6318. RSB R5, R2, #0x20
  6319. MOV R0, #0
  6320. SUBS R12, R3, #1
  6321. BMI loc_D412A90
  6322.  
  6323. loc_D412A70 ; CODE XREF: sub_D412A4C+40j
  6324. LDR LR, [R1,R12,LSL#2]
  6325. ORR R3, R0, LR,LSR R2
  6326. STR R3, [R4,R12,LSL#2]
  6327. CMP R2, #0
  6328. MOVNE R0, LR,LSL R5
  6329. MOVEQ R0, #0
  6330. SUBS R12, R12, #1
  6331. BPL loc_D412A70
  6332.  
  6333. loc_D412A90 ; CODE XREF: sub_D412A4C+10j
  6334. ; sub_D412A4C+20j
  6335. LDMFD SP!, {R4,R5,LR}
  6336. BX LR
  6337. ; End of function sub_D412A4C
  6338.  
  6339.  
  6340. ; =============== S U B R O U T I N E =======================================
  6341.  
  6342.  
  6343. sub_D412A98 ; CODE XREF: sub_D412AE0+160p
  6344. SUBS R12, R2, #1
  6345. BMI loc_D412AD8
  6346.  
  6347. loc_D412AA0 ; CODE XREF: sub_D412A98+3Cj
  6348. LDR R2, [R0,R12,LSL#2]
  6349. LDR R3, [R1,R12,LSL#2]
  6350. CMP R2, R3
  6351. BLS loc_D412AB8
  6352. MOV R0, #1
  6353. BX LR
  6354. ; ---------------------------------------------------------------------------
  6355.  
  6356. loc_D412AB8 ; CODE XREF: sub_D412A98+14j
  6357. LDR R2, [R0,R12,LSL#2]
  6358. LDR R3, [R1,R12,LSL#2]
  6359. CMP R2, R3
  6360. BCS loc_D412AD0
  6361. MOV R0, #0xFFFFFFFF
  6362. BX LR
  6363. ; ---------------------------------------------------------------------------
  6364.  
  6365. loc_D412AD0 ; CODE XREF: sub_D412A98+2Cj
  6366. SUBS R12, R12, #1
  6367. BPL loc_D412AA0
  6368.  
  6369. loc_D412AD8 ; CODE XREF: sub_D412A98+4j
  6370. MOV R0, #0
  6371. BX LR
  6372. ; End of function sub_D412A98
  6373.  
  6374.  
  6375. ; =============== S U B R O U T I N E =======================================
  6376.  
  6377. ; Attributes: bp-based frame
  6378.  
  6379. sub_D412AE0 ; CODE XREF: sub_D412C9C+38p
  6380. ; SRAM:0D412FDCp
  6381.  
  6382. var_38 = -0x38
  6383. var_34 = -0x34
  6384. var_30 = -0x30
  6385. var_2C = -0x2C
  6386. arg_0 = 4
  6387. arg_4 = 8
  6388.  
  6389. MOV R12, SP
  6390. STMFD SP!, {R4-R12,LR,PC}
  6391. SUB R11, R12, #4
  6392. SUB SP, SP, #0x10
  6393. MOV R9, R0
  6394. STR R1, [R11,#var_30]
  6395. MOV R10, R2
  6396. MOV R6, R3
  6397. LDR R8, [R11,#arg_0]
  6398. MOV R0, R8
  6399. LDR R1, [R11,#arg_4]
  6400. BL sub_D412908
  6401. SUBS R7, R0, #0
  6402. BEQ loc_D412C7C
  6403. MOV R5, R7,LSL#2
  6404. ADD R3, R5, R8
  6405. LDR R0, [R3,#-4]
  6406. LDR R3, =sub_D4131E0
  6407. MOV LR, PC
  6408. BX R3 ; sub_D4131E0
  6409. RSB R0, R0, #0x20
  6410. STR R0, [R11,#var_34]
  6411. LDR R0, =unk_D415408
  6412. MOV R1, R7
  6413. BL sub_D412810
  6414. LDR R4, =unk_D415408
  6415. MOV R0, R4
  6416. MOV R1, R10
  6417. LDR R2, [R11,#var_34]
  6418. MOV R3, R6
  6419. BL sub_D4129F0
  6420. STR R0, [R4,R6,LSL#2]
  6421. LDR R0, =unk_D415814
  6422. MOV R1, R8
  6423. LDR R2, [R11,#var_34]
  6424. MOV R3, R7
  6425. BL sub_D4129F0
  6426. LDR R3, =unk_D415814
  6427. ADD R5, R5, R3
  6428. LDR R10, [R5,#-4]
  6429. MOV R0, R9
  6430. MOV R1, R6
  6431. BL sub_D412810
  6432. SUBS R6, R6, R7
  6433. BMI loc_D412C5C
  6434. MOV R8, R4
  6435.  
  6436. loc_D412B98 ; CODE XREF: sub_D412AE0+178j
  6437. CMN R10, #1
  6438. ADDEQ R3, R6, R7
  6439. LDREQ R3, [R8,R3,LSL#2]
  6440. STREQ R3, [R11,#var_2C]
  6441. BEQ loc_D412BC4
  6442. ADD R1, R6, R7
  6443. SUB R0, R11, #-var_2C
  6444. LDR R3, =unk_D415404
  6445. ADD R1, R3, R1,LSL#2
  6446. ADD R2, R10, #1
  6447. BL sub_D412668
  6448.  
  6449. loc_D412BC4 ; CODE XREF: sub_D412AE0+C8j
  6450. ADD R4, R6, R7
  6451. ADD R1, R8, R6,LSL#2
  6452. STR R7, [SP,#0x38+var_38]
  6453. MOV R0, R1
  6454. LDR R2, [R11,#var_2C]
  6455. LDR R3, =unk_D415814
  6456. LDR R12, =sub_D413194
  6457. MOV LR, PC
  6458. BX R12 ; sub_D413194
  6459. LDR R3, [R8,R4,LSL#2]
  6460. RSB R3, R0, R3
  6461. STR R3, [R8,R4,LSL#2]
  6462. LDR R5, =unk_D415408
  6463. B loc_D412C28
  6464. ; ---------------------------------------------------------------------------
  6465.  
  6466. loc_D412BFC ; CODE XREF: sub_D412AE0+150j
  6467. ; sub_D412AE0+168j
  6468. LDR R3, [R11,#var_2C]
  6469. ADD R3, R3, #1
  6470. STR R3, [R11,#var_2C]
  6471. ADD R1, R5, R6,LSL#2
  6472. MOV R0, R1
  6473. LDR R2, =unk_D415814
  6474. MOV R3, R7
  6475. BL sub_D412890
  6476. LDR R3, [R5,R4,LSL#2]
  6477. RSB R3, R0, R3
  6478. STR R3, [R5,R4,LSL#2]
  6479.  
  6480. loc_D412C28 ; CODE XREF: sub_D412AE0+118j
  6481. LDR R3, [R5,R4,LSL#2]
  6482. CMP R3, #0
  6483. BNE loc_D412BFC
  6484. ADD R0, R5, R6,LSL#2
  6485. LDR R1, =unk_D415814
  6486. MOV R2, R7
  6487. BL sub_D412A98
  6488. CMP R0, #0
  6489. BGE loc_D412BFC
  6490. LDR R3, [R11,#var_2C]
  6491. STR R3, [R9,R6,LSL#2]
  6492. SUBS R6, R6, #1
  6493. BPL loc_D412B98
  6494.  
  6495. loc_D412C5C ; CODE XREF: sub_D412AE0+B0j
  6496. LDR R0, [R11,#var_30]
  6497. LDR R1, [R11,#arg_4]
  6498. BL sub_D412810
  6499. LDR R0, [R11,#var_30]
  6500. LDR R1, =unk_D415408
  6501. LDR R2, [R11,#var_34]
  6502. MOV R3, R7
  6503. BL sub_D412A4C
  6504.  
  6505. loc_D412C7C ; CODE XREF: sub_D412AE0+34j
  6506. SUB SP, R11, #0x28
  6507. LDMFD SP, {R4-R11,SP,LR}
  6508. BX LR
  6509. ; End of function sub_D412AE0
  6510.  
  6511. ; ---------------------------------------------------------------------------
  6512. off_D412C88 DCD sub_D4131E0 ; DATA XREF: sub_D412AE0+44r
  6513. off_D412C8C DCD unk_D415408 ; DATA XREF: sub_D412AE0+58r
  6514. ; sub_D412AE0+64r ...
  6515. off_D412C90 DCD unk_D415814 ; DATA XREF: sub_D412AE0+80r
  6516. ; sub_D412AE0+94r ...
  6517. off_D412C94 DCD unk_D415404 ; DATA XREF: sub_D412AE0+D4r
  6518. off_D412C98 DCD sub_D413194 ; DATA XREF: sub_D412AE0+FCr
  6519.  
  6520. ; =============== S U B R O U T I N E =======================================
  6521.  
  6522. ; Attributes: bp-based frame
  6523.  
  6524. sub_D412C9C ; CODE XREF: sub_D412CE8+3Cp
  6525.  
  6526. var_18 = -0x18
  6527. var_14 = -0x14
  6528. arg_0 = 4
  6529.  
  6530. MOV R12, SP
  6531. STMFD SP!, {R4,R11,R12,LR,PC}
  6532. SUB R11, R12, #4
  6533. SUB SP, SP, #8
  6534. MOV R12, R0
  6535. MOV LR, R1
  6536. MOV R4, R2
  6537. STR R3, [SP,#0x18+var_18]
  6538. LDR R3, [R11,#arg_0]
  6539. STR R3, [SP,#0x18+var_14]
  6540. LDR R0, =unk_D415A18
  6541. MOV R1, R12
  6542. MOV R2, LR
  6543. MOV R3, R4
  6544. BL sub_D412AE0
  6545. SUB SP, R11, #0x10
  6546. LDMFD SP, {R4,R11,SP,LR}
  6547. BX LR
  6548. ; End of function sub_D412C9C
  6549.  
  6550. ; ---------------------------------------------------------------------------
  6551. off_D412CE4 DCD unk_D415A18 ; DATA XREF: sub_D412C9C+28r
  6552.  
  6553. ; =============== S U B R O U T I N E =======================================
  6554.  
  6555. ; Attributes: bp-based frame
  6556.  
  6557. sub_D412CE8 ; CODE XREF: sub_D412D38+B0p
  6558. ; sub_D412D38+D4p ...
  6559.  
  6560. var_1C = -0x1C
  6561. arg_0 = 4
  6562.  
  6563. MOV R12, SP
  6564. STMFD SP!, {R4-R6,R11,R12,LR,PC}
  6565. SUB R11, R12, #4
  6566. SUB SP, SP, #4
  6567. MOV R4, R0
  6568. MOV R6, R3
  6569. LDR R5, [R11,#arg_0]
  6570. LDR R0, =unk_D416834
  6571. MOV R3, R5
  6572. BL sub_D412930
  6573. STR R5, [SP,#0x1C+var_1C]
  6574. MOV R0, R4
  6575. LDR R1, =unk_D416834
  6576. MOV R2, R5,LSL#1
  6577. MOV R3, R6
  6578. BL sub_D412C9C
  6579. SUB SP, R11, #0x18
  6580. LDMFD SP, {R4-R6,R11,SP,LR}
  6581. BX LR
  6582. ; End of function sub_D412CE8
  6583.  
  6584. ; ---------------------------------------------------------------------------
  6585. off_D412D34 DCD unk_D416834 ; DATA XREF: sub_D412CE8+1Cr
  6586. ; sub_D412CE8+30r
  6587.  
  6588. ; =============== S U B R O U T I N E =======================================
  6589.  
  6590. ; Attributes: bp-based frame
  6591.  
  6592. sub_D412D38 ; CODE XREF: sub_D412438+6Cp
  6593. ; SRAM:0D412628p
  6594. ; DATA XREF: ...
  6595.  
  6596. var_48 = -0x48
  6597. var_44 = -0x44
  6598. var_40 = -0x40
  6599. var_3C = -0x3C
  6600. var_38 = -0x38
  6601. var_34 = -0x34
  6602. var_30 = -0x30
  6603. var_2C = -0x2C
  6604. var_28 = -0x28
  6605.  
  6606. MOV R12, SP
  6607. STMFD SP!, {R4-R12,LR,PC}
  6608. SUB R11, R12, #4
  6609. SUB SP, SP, #0x20
  6610. STR R0, [R11,#var_3C]
  6611. MOV R4, R1
  6612. STR R2, [R11,#var_40]
  6613. STR R3, [R11,#var_44]
  6614. LDMIB R11, {R9,R10}
  6615. MOV R2, #0
  6616. MOV R3, #1
  6617. STR R3, [R11,#var_38]
  6618. STR R3, [R11,#var_34]
  6619. STR R2, [R11,#var_30]
  6620. STR R2, [R11,#var_2C]
  6621. LDR R3, [R11,#var_40]
  6622. LDR R1, [R3]
  6623. MOV R7, R2
  6624.  
  6625. loc_D412D80 ; CODE XREF: sub_D412D38+6Cj
  6626. AND R2, R1, #3
  6627. SUB R3, R11, #-var_28
  6628. ADD R2, R3, R2,LSL#2
  6629. LDR R3, [R2,#-0x10]
  6630. ADD R3, R3, #1
  6631. STR R3, [R2,#-0x10]
  6632. MOV R1, R1,LSR#2
  6633. ADD R7, R7, #1
  6634. CMP R7, #0xF
  6635. BLE loc_D412D80
  6636. LDR R3, [R11,#var_2C]
  6637. CMP R3, #0
  6638. MOVNE R3, #1
  6639. STRNE R3, [R11,#var_30]
  6640. LDR R0, =unk_D416228
  6641. MOV R1, R4
  6642. MOV R2, R10
  6643. BL sub_D4127EC
  6644. LDR R3, [R11,#var_30]
  6645. CMP R3, #0
  6646. BEQ loc_D412DEC
  6647. STR R10, [SP,#0x48+var_48]
  6648. LDR R0, =unk_D41642C
  6649. SUB R1, R0, #0x204
  6650. MOV R2, R4
  6651. MOV R3, R9
  6652. BL sub_D412CE8
  6653.  
  6654. loc_D412DEC ; CODE XREF: sub_D412D38+98j
  6655. LDR R3, [R11,#var_2C]
  6656. CMP R3, #0
  6657. BEQ loc_D412E10
  6658. STR R10, [SP,#0x48+var_48]
  6659. LDR R0, =unk_D416630
  6660. SUB R1, R0, #0x204
  6661. MOV R2, R4
  6662. MOV R3, R9
  6663. BL sub_D412CE8
  6664.  
  6665. loc_D412E10 ; CODE XREF: sub_D412D38+BCj
  6666. LDR R0, =dword_D415204 ; StackEnd
  6667. MOV R1, R10
  6668. BL sub_D412810
  6669. MOV R2, #1
  6670. LDR R3, =dword_D415204 ; StackEnd
  6671. STR R2, [R3]
  6672. LDR R0, [R11,#var_40]
  6673. LDR R1, [R11,#var_44]
  6674. BL sub_D412908
  6675. STR R0, [R11,#var_44]
  6676. SUBS R7, R0, #1
  6677. BMI loc_D412EF4
  6678.  
  6679. loc_D412E40 ; CODE XREF: sub_D412D38+1B8j
  6680. LDR R2, [R11,#var_40]
  6681. LDR R5, [R2,R7,LSL#2]
  6682. MOV R8, #0x20
  6683. LDR R2, [R11,#var_44]
  6684. SUB R3, R2, #1
  6685. CMP R3, R7
  6686. BNE loc_D412E74
  6687. MOVS R3, R5,LSR#30
  6688. BNE loc_D412E74
  6689.  
  6690. loc_D412E64 ; CODE XREF: sub_D412D38+138j
  6691. MOV R5, R5,LSL#2
  6692. SUB R8, R8, #2
  6693. MOVS R2, R5,LSR#30
  6694. BEQ loc_D412E64
  6695.  
  6696. loc_D412E74 ; CODE XREF: sub_D412D38+120j
  6697. ; sub_D412D38+128j
  6698. MOV R6, #0
  6699. CMP R6, R8
  6700. BCS loc_D412EEC
  6701. LDR R4, =dword_D415204 ; StackEnd
  6702.  
  6703. loc_D412E84 ; CODE XREF: sub_D412D38+1B0j
  6704. STR R10, [SP,#0x48+var_48]
  6705. MOV R0, R4
  6706. MOV R1, R4
  6707. MOV R2, R4
  6708. MOV R3, R9
  6709. BL sub_D412CE8
  6710. STR R10, [SP,#0x48+var_48]
  6711. MOV R0, R4
  6712. MOV R1, R4
  6713. MOV R2, R4
  6714. MOV R3, R9
  6715. BL sub_D412CE8
  6716. MOVS R3, R5,LSR#30
  6717. BEQ loc_D412EDC
  6718. ADD R2, R3, R3,LSL#7
  6719. STR R10, [SP,#0x48+var_48]
  6720. MOV R0, R4
  6721. MOV R1, R4
  6722. LDR R3, =unk_D416024
  6723. ADD R2, R3, R2,LSL#2
  6724. MOV R3, R9
  6725. BL sub_D412CE8
  6726.  
  6727. loc_D412EDC ; CODE XREF: sub_D412D38+180j
  6728. ADD R6, R6, #2
  6729. MOV R5, R5,LSL#2
  6730. CMP R6, R8
  6731. BCC loc_D412E84
  6732.  
  6733. loc_D412EEC ; CODE XREF: sub_D412D38+144j
  6734. SUBS R7, R7, #1
  6735. BPL loc_D412E40
  6736.  
  6737. loc_D412EF4 ; CODE XREF: sub_D412D38+104j
  6738. LDR R0, [R11,#var_3C]
  6739. LDR R1, =dword_D415204 ; StackEnd
  6740. MOV R2, R10
  6741. BL sub_D4127EC
  6742. SUB SP, R11, #0x28
  6743. LDMFD SP, {R4-R11,SP,LR}
  6744. BX LR
  6745. ; End of function sub_D412D38
  6746.  
  6747. ; ---------------------------------------------------------------------------
  6748. off_D412F10 DCD unk_D416228 ; DATA XREF: sub_D412D38+80r
  6749. off_D412F14 DCD unk_D41642C ; DATA XREF: sub_D412D38+A0r
  6750. off_D412F18 DCD unk_D416630 ; DATA XREF: sub_D412D38+C4r
  6751. off_D412F1C DCD dword_D415204 ; DATA XREF: sub_D412D38:loc_D412E10r
  6752. ; sub_D412D38+E8r ...
  6753. ; StackEnd
  6754. off_D412F20 DCD unk_D416024 ; DATA XREF: sub_D412D38+194r
  6755.  
  6756. ; =============== S U B R O U T I N E =======================================
  6757.  
  6758.  
  6759. sub_D412F24 ; CODE XREF: SRAM:0D413064p
  6760. MOV R2, #0
  6761. CMP R2, R1
  6762. BGE loc_D412F50
  6763.  
  6764. loc_D412F30 ; CODE XREF: sub_D412F24+28j
  6765. LDR R3, [R0,R2,LSL#2]
  6766. CMP R3, #0
  6767. BEQ loc_D412F44
  6768. MOV R0, #0
  6769. BX LR
  6770. ; ---------------------------------------------------------------------------
  6771.  
  6772. loc_D412F44 ; CODE XREF: sub_D412F24+14j
  6773. ADD R2, R2, #1
  6774. CMP R2, R1
  6775. BLT loc_D412F30
  6776.  
  6777. loc_D412F50 ; CODE XREF: sub_D412F24+8j
  6778. MOV R0, #1
  6779. BX LR
  6780. ; End of function sub_D412F24
  6781.  
  6782. ; ---------------------------------------------------------------------------
  6783. MOV R12, SP
  6784. STMFD SP!, {R4-R12,LR,PC}
  6785. SUB R11, R12, #4
  6786. SUB SP, SP, #0x130
  6787. STR R0, [R11,#-0x14C]
  6788. MOV R5, R1
  6789. STR R2, [R11,#-0x150]
  6790. MOV R8, R3
  6791. SUB R0, R11, #0xA8
  6792. MOV R1, R3
  6793. BL sub_D412810
  6794. MOV R4, #1
  6795. STR R4, [R11,#-0xA8]
  6796. SUB R0, R11, #0xE8
  6797. MOV R1, R8
  6798. BL sub_D412810
  6799. SUB R0, R11, #0xC8
  6800. MOV R1, R5
  6801. MOV R2, R8
  6802. BL sub_D4127EC
  6803. SUB R0, R11, #0x108
  6804. LDR R1, [R11,#-0x150]
  6805. MOV R2, R8
  6806. BL sub_D4127EC
  6807. MOV R9, R4
  6808. SUB R10, R11, #0x108
  6809. B loc_D41305C
  6810. ; ---------------------------------------------------------------------------
  6811.  
  6812. loc_D412FC4 ; CODE XREF: SRAM:0D41306Cj
  6813. STR R10, [SP]
  6814. STR R8, [SP,#4]
  6815. SUB R0, R11, #0x48
  6816. SUB R1, R11, #0x88
  6817. SUB R2, R11, #0xC8
  6818. MOV R3, R8
  6819. BL sub_D412AE0
  6820. SUB R6, R11, #0x148
  6821. SUB R5, R11, #0xE8
  6822. MOV R0, R6
  6823. SUB R1, R11, #0x48
  6824. MOV R2, R5
  6825. MOV R3, R8
  6826. BL sub_D412930
  6827. SUB R7, R11, #0x68
  6828. SUB R4, R11, #0xA8
  6829. MOV R0, R7
  6830. MOV R1, R4
  6831. MOV R2, R6
  6832. MOV R3, R8
  6833. BL sub_D412834
  6834. MOV R0, R4
  6835. MOV R1, R5
  6836. MOV R2, R8
  6837. BL sub_D4127EC
  6838. MOV R0, R5
  6839. MOV R1, R7
  6840. MOV R2, R8
  6841. BL sub_D4127EC
  6842. SUB R0, R11, #0xC8
  6843. MOV R1, R10
  6844. MOV R2, R8
  6845. BL sub_D4127EC
  6846. MOV R0, R10
  6847. SUB R1, R11, #0x88
  6848. MOV R2, R8
  6849. BL sub_D4127EC
  6850. RSB R9, R9, #0
  6851.  
  6852. loc_D41305C ; CODE XREF: SRAM:0D412FC0j
  6853. SUB R0, R11, #0x108
  6854. MOV R1, R8
  6855. BL sub_D412F24
  6856. CMP R0, #0
  6857. BEQ loc_D412FC4
  6858. CMP R9, #0
  6859. BGE loc_D413090
  6860. LDR R0, [R11,#-0x14C]
  6861. LDR R1, [R11,#-0x150]
  6862. SUB R2, R11, #0xA8
  6863. MOV R3, R8
  6864. BL sub_D412890
  6865. B loc_D4130A0
  6866. ; ---------------------------------------------------------------------------
  6867.  
  6868. loc_D413090 ; CODE XREF: SRAM:0D413074j
  6869. LDR R0, [R11,#-0x14C]
  6870. SUB R1, R11, #0xA8
  6871. MOV R2, R8
  6872. BL sub_D4127EC
  6873.  
  6874. loc_D4130A0 ; CODE XREF: SRAM:0D41308Cj
  6875. SUB SP, R11, #0x28
  6876. LDMFD SP, {R4-R11,SP,LR}
  6877. BX LR
  6878. CODE16
  6879.  
  6880. ; =============== S U B R O U T I N E =======================================
  6881.  
  6882.  
  6883. sub_D4130AC ; CODE XREF: sub_D412438+80p
  6884. ; SRAM:0D412636p
  6885. ; DATA XREF: ...
  6886. PUSH {R4-R7,LR}
  6887. MOVS R4, R0
  6888. MOVS R7, R2
  6889. MOVS R6, R3
  6890. MOVS R5, #0
  6891. SUBS R1, #1
  6892. CMP R3, R5
  6893. BLS loc_D4130E6
  6894. CMP R1, #0
  6895. BLT loc_D4130F2
  6896.  
  6897. loc_D4130C0 ; CODE XREF: sub_D4130AC+36j
  6898. LSLS R3, R5, #2
  6899. LDR R0, [R3,R7]
  6900. MOVS R2, #0
  6901. CMP R1, #0
  6902. BLT loc_D4130DA
  6903.  
  6904. loc_D4130CA ; CODE XREF: sub_D4130AC+2Cj
  6905. MOVS R3, R0
  6906. LSRS R3, R2
  6907. STRB R3, [R4,R1]
  6908. ADDS R2, #8
  6909. SUBS R1, #1
  6910. BMI loc_D4130DA
  6911. CMP R2, #0x1F
  6912. BLS loc_D4130CA
  6913.  
  6914. loc_D4130DA ; CODE XREF: sub_D4130AC+1Cj
  6915. ; sub_D4130AC+28j
  6916. ADDS R5, #1
  6917. CMP R6, R5
  6918. BLS loc_D4130E6
  6919. CMP R1, #0
  6920. BGE loc_D4130C0
  6921. B loc_D4130F2
  6922. ; ---------------------------------------------------------------------------
  6923.  
  6924. loc_D4130E6 ; CODE XREF: sub_D4130AC+Ej
  6925. ; sub_D4130AC+32j
  6926. CMP R1, #0
  6927. BLT loc_D4130F2
  6928. MOVS R3, #0
  6929.  
  6930. loc_D4130EC ; CODE XREF: sub_D4130AC+44j
  6931. STRB R3, [R4,R1]
  6932. SUBS R1, #1
  6933. BPL loc_D4130EC
  6934.  
  6935. loc_D4130F2 ; CODE XREF: sub_D4130AC+12j
  6936. ; sub_D4130AC+38j ...
  6937. POP {R4-R7}
  6938. POP {R0}
  6939. BX R0
  6940. ; End of function sub_D4130AC
  6941.  
  6942.  
  6943. ; =============== S U B R O U T I N E =======================================
  6944.  
  6945.  
  6946. sub_D4130F8 ; CODE XREF: sub_D412438+32p
  6947. ; sub_D412438+44p ...
  6948. PUSH {R4-R7,LR}
  6949. MOVS R7, R0
  6950. MOVS R6, R1
  6951. MOVS R5, R2
  6952. MOVS R4, #0
  6953. SUBS R2, R3, #1
  6954. CMP R4, R6
  6955. BGE loc_D413144
  6956. CMP R2, #0
  6957. BLT loc_D413132
  6958.  
  6959. loc_D41310C ; CODE XREF: sub_D4130F8+38j
  6960. MOVS R0, #0
  6961. MOVS R1, #0
  6962. CMP R2, #0
  6963. BLT loc_D413124
  6964.  
  6965. loc_D413114 ; CODE XREF: sub_D4130F8+2Aj
  6966. LDRB R3, [R5,R2]
  6967. LSLS R3, R1
  6968. ORRS R0, R3
  6969. ADDS R1, #8
  6970. SUBS R2, #1
  6971. BMI loc_D413124
  6972. CMP R1, #0x1F
  6973. BLE loc_D413114
  6974.  
  6975. loc_D413124 ; CODE XREF: sub_D4130F8+1Aj
  6976. ; sub_D4130F8+26j
  6977. LSLS R3, R4, #2
  6978. STR R0, [R3,R7]
  6979. ADDS R4, #1
  6980. CMP R4, R6
  6981. BGE loc_D413144
  6982. CMP R2, #0
  6983. BGE loc_D41310C
  6984.  
  6985. loc_D413132 ; CODE XREF: sub_D4130F8+12j
  6986. CMP R4, R6
  6987. BGE loc_D413144
  6988. MOVS R2, #0
  6989.  
  6990. loc_D413138 ; CODE XREF: sub_D4130F8+4Aj
  6991. LSLS R3, R4, #2
  6992. ADDS R3, R3, R7
  6993. STR R2, [R3]
  6994. ADDS R4, #1
  6995. CMP R4, R6
  6996. BLT loc_D413138
  6997.  
  6998. loc_D413144 ; CODE XREF: sub_D4130F8+Ej
  6999. ; sub_D4130F8+34j ...
  7000. POP {R4-R7}
  7001. POP {R0}
  7002. BX R0
  7003. ; End of function sub_D4130F8
  7004.  
  7005. ; ---------------------------------------------------------------------------
  7006. ALIGN 4
  7007. CODE32
  7008.  
  7009. ; =============== S U B R O U T I N E =======================================
  7010.  
  7011.  
  7012. sub_D41314C ; CODE XREF: sub_D412930+80p
  7013. ; DATA XREF: sub_D412930+78o ...
  7014. MOV R12, SP
  7015. STMFD SP!, {R4-R7,LR}
  7016. CMP R2, #0
  7017. MOVEQ R0, R2
  7018. BEQ locret_D413190
  7019. MOV R5, #0
  7020. LDR LR, [R12]
  7021.  
  7022. loc_D413168 ; CODE XREF: sub_D41314C+3Cj
  7023. MOV R4, #0
  7024. LDR R6, [R3],#4
  7025. LDR R7, [R1],#4
  7026. UMLAL R5, R4, R2, R6
  7027. ADDS R5, R5, R7
  7028. STR R5, [R0],#4
  7029. ADC R5, R4, #0
  7030. SUBS LR, LR, #1
  7031. BGT loc_D413168
  7032. MOV R0, R5
  7033.  
  7034. locret_D413190 ; CODE XREF: sub_D41314C+10j
  7035. LDMFD SP!, {R4-R7,PC}
  7036. ; End of function sub_D41314C
  7037.  
  7038.  
  7039. ; =============== S U B R O U T I N E =======================================
  7040.  
  7041.  
  7042. sub_D413194 ; CODE XREF: sub_D412AE0+104p
  7043. ; DATA XREF: sub_D412AE0+FCo ...
  7044. MOV R12, SP
  7045. STMFD SP!, {R4-R7,LR}
  7046. CMP R2, #0
  7047. MOVEQ R0, R2
  7048. BEQ locret_D4131DC
  7049. MOV R5, #0
  7050. LDR LR, [R12]
  7051.  
  7052. loc_D4131B0 ; CODE XREF: sub_D413194+40j
  7053. MOV R4, #0
  7054. LDR R6, [R3],#4
  7055. LDR R7, [R1],#4
  7056. UMLAL R5, R4, R2, R6
  7057. SUBS R5, R7, R5
  7058. STR R5, [R0],#4
  7059. ADDCC R5, R4, #1
  7060. MOVCS R5, R4
  7061. SUBS LR, LR, #1
  7062. BGT loc_D4131B0
  7063. MOV R0, R5
  7064.  
  7065. locret_D4131DC ; CODE XREF: sub_D413194+10j
  7066. LDMFD SP!, {R4-R7,PC}
  7067. ; End of function sub_D413194
  7068.  
  7069.  
  7070. ; =============== S U B R O U T I N E =======================================
  7071.  
  7072.  
  7073. sub_D4131E0 ; CODE XREF: sub_D412AE0+4Cp
  7074. ; DATA XREF: sub_D412AE0+44o ...
  7075. CLZ R0, R0
  7076. RSB R0, R0, #0x20
  7077. BX LR
  7078. ; End of function sub_D4131E0
  7079.  
  7080. CODE16
  7081.  
  7082. ; =============== S U B R O U T I N E =======================================
  7083.  
  7084.  
  7085. sub_D4131EC ; CODE XREF: sub_D412668+48p
  7086. ; sub_D412668+F4p
  7087. ; DATA XREF: ...
  7088. CMP R1, #0
  7089. BEQ loc_D41325A
  7090. MOVS R3, #1
  7091. MOVS R2, #0
  7092. PUSH {R4}
  7093. CMP R0, R1
  7094. BCC loc_D413254
  7095. MOVS R4, #0x10000000
  7096.  
  7097. loc_D4131FE ; CODE XREF: sub_D4131EC+1Ej
  7098. CMP R1, R4
  7099. BCS loc_D41320C
  7100. CMP R1, R0
  7101. BCS loc_D41320C
  7102. LSLS R1, R1, #4
  7103. LSLS R3, R3, #4
  7104. B loc_D4131FE
  7105. ; ---------------------------------------------------------------------------
  7106.  
  7107. loc_D41320C ; CODE XREF: sub_D4131EC+14j
  7108. ; sub_D4131EC+18j
  7109. LSLS R4, R4, #3
  7110.  
  7111. loc_D41320E ; CODE XREF: sub_D4131EC+2Ej
  7112. CMP R1, R4
  7113. BCS loc_D41321C
  7114. CMP R1, R0
  7115. BCS loc_D41321C
  7116. LSLS R1, R1, #1
  7117. LSLS R3, R3, #1
  7118. B loc_D41320E
  7119. ; ---------------------------------------------------------------------------
  7120.  
  7121. loc_D41321C ; CODE XREF: sub_D4131EC+24j
  7122. ; sub_D4131EC+28j ...
  7123. CMP R0, R1
  7124. BCC loc_D413224
  7125. SUBS R0, R0, R1
  7126. ORRS R2, R3
  7127.  
  7128. loc_D413224 ; CODE XREF: sub_D4131EC+32j
  7129. LSRS R4, R1, #1
  7130. CMP R0, R4
  7131. BCC loc_D413230
  7132. SUBS R0, R0, R4
  7133. LSRS R4, R3, #1
  7134. ORRS R2, R4
  7135.  
  7136. loc_D413230 ; CODE XREF: sub_D4131EC+3Cj
  7137. LSRS R4, R1, #2
  7138. CMP R0, R4
  7139. BCC loc_D41323C
  7140. SUBS R0, R0, R4
  7141. LSRS R4, R3, #2
  7142. ORRS R2, R4
  7143.  
  7144. loc_D41323C ; CODE XREF: sub_D4131EC+48j
  7145. LSRS R4, R1, #3
  7146. CMP R0, R4
  7147. BCC loc_D413248
  7148. SUBS R0, R0, R4
  7149. LSRS R4, R3, #3
  7150. ORRS R2, R4
  7151.  
  7152. loc_D413248 ; CODE XREF: sub_D4131EC+54j
  7153. CMP R0, #0
  7154. BEQ loc_D413254
  7155. LSRS R3, R3, #4
  7156. BEQ loc_D413254
  7157. LSRS R1, R1, #4
  7158. B loc_D41321C
  7159. ; ---------------------------------------------------------------------------
  7160.  
  7161. loc_D413254 ; CODE XREF: sub_D4131EC+Cj
  7162. ; sub_D4131EC+5Ej ...
  7163. MOVS R0, R2
  7164. POP {R4}
  7165. BX LR
  7166. ; ---------------------------------------------------------------------------
  7167.  
  7168. loc_D41325A ; CODE XREF: sub_D4131EC+2j
  7169. PUSH {LR}
  7170. BL nullsub_2
  7171. MOVS R0, #0
  7172. POP {PC}
  7173. ; End of function sub_D4131EC
  7174.  
  7175. ; [00000002 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD CTRL-"+" TO EXPAND]
  7176. ALIGN 4
  7177.  
  7178. ; =============== S U B R O U T I N E =======================================
  7179.  
  7180.  
  7181. sub_D413268 ; CODE XREF: sub_D412060+12p
  7182.  
  7183. var_24 = -0x24
  7184. var_20 = -0x20
  7185. var_1C = -0x1C
  7186. var_18 = -0x18
  7187.  
  7188. PUSH {R4-R7,LR}
  7189. SUB SP, SP, #0x10
  7190. MOVS R5, #0
  7191. MOVS R4, #0
  7192. STR R0, [SP,#0x24+var_1C]
  7193. STR R1, [SP,#0x24+var_18]
  7194. STR R4, [SP,#0x24+var_24]
  7195. STR R5, [SP,#0x24+var_20]
  7196. MOVS R6, R3
  7197. MOVS R5, R2
  7198. LDR R2, =0xFFFF
  7199. LDR R3, [SP,#0x24+var_18]
  7200. MOVS R1, R2
  7201. ANDS R1, R3
  7202. LSRS R0, R3, #0x10
  7203. MOVS R3, R2
  7204. ANDS R3, R6
  7205. MOVS R7, R3
  7206. MULS R7, R1
  7207. MOV R12, R2
  7208. LSRS R2, R6, #0x10
  7209. MOVS R4, R2
  7210. MULS R4, R1
  7211. MOVS R1, R3
  7212. MULS R1, R0
  7213. LSRS R3, R7, #0x10
  7214. ADDS R4, R4, R3
  7215. ADDS R4, R4, R1
  7216. MULS R2, R0
  7217. CMP R4, R1
  7218. BCS loc_D4132AC
  7219. MOVS R3, #0x10000
  7220. ADDS R2, R2, R3
  7221.  
  7222. loc_D4132AC ; CODE XREF: sub_D413268+3Cj
  7223. LSRS R3, R4, #0x10
  7224. ADDS R2, R3, R2
  7225. STR R2, [SP,#0x24+var_24]
  7226. MOV R2, R12
  7227. ANDS R4, R2
  7228. LSLS R3, R4, #0x10
  7229. LDR R4, [SP,#0x24+var_18]
  7230. ANDS R7, R2
  7231. ADDS R7, R3, R7
  7232. MOVS R3, R5
  7233. MULS R3, R4
  7234. LDR R4, [SP,#0x24+var_1C]
  7235. MOVS R2, R6
  7236. MULS R2, R4
  7237. STR R7, [SP,#0x24+var_20]
  7238. LDR R0, [SP,#0x24+var_24]
  7239. LDR R1, [SP,#0x24+var_20]
  7240. ADDS R3, R3, R2
  7241. ADDS R0, R3, R0
  7242. ADD SP, SP, #0x10
  7243. POP {R4-R7}
  7244. POP {R2}
  7245. BX R2
  7246. ; End of function sub_D413268
  7247.  
  7248. ; ---------------------------------------------------------------------------
  7249. ALIGN 4
  7250. dword_D4132DC DCD 0xFFFF ; DATA XREF: sub_D413268+14r
  7251.  
  7252. ; =============== S U B R O U T I N E =======================================
  7253.  
  7254. ; Attributes: thunk
  7255.  
  7256. sub_D4132E0 ; CODE XREF: CalcSHA_And_RSA+20p
  7257. ; CalcSHA_And_RSA+30p ...
  7258. BX PC
  7259. ; ---------------------------------------------------------------------------
  7260. ALIGN 4
  7261. CODE32
  7262.  
  7263. loc_D4132E4 ; CODE XREF: sub_D4132E0j
  7264. B sub_D411B98
  7265. ; End of function sub_D4132E0
  7266.  
  7267. CODE16
  7268.  
  7269. ; =============== S U B R O U T I N E =======================================
  7270.  
  7271. ; Attributes: thunk
  7272.  
  7273. sub_D4132E8 ; CODE XREF: Main+47Ep
  7274. BX PC
  7275. ; ---------------------------------------------------------------------------
  7276. ALIGN 4
  7277. CODE32
  7278.  
  7279. loc_D4132EC ; CODE XREF: sub_D4132E8j
  7280. B sub_D412024
  7281. ; End of function sub_D4132E8
  7282.  
  7283. CODE16
  7284.  
  7285. ; =============== S U B R O U T I N E =======================================
  7286.  
  7287. ; Attributes: thunk
  7288.  
  7289. sub_D4132F0 ; CODE XREF: CheckBuffer_Maybe+AAp
  7290. BX PC
  7291. ; ---------------------------------------------------------------------------
  7292. ALIGN 4
  7293. CODE32
  7294.  
  7295. loc_D4132F4 ; CODE XREF: sub_D4132F0j
  7296. B sub_D411B48
  7297. ; End of function sub_D4132F0
  7298.  
  7299. ; ---------------------------------------------------------------------------
  7300. ALIGN 0x10
  7301. jpt_D410E58 DCD def_D410E58 ; DATA XREF: sub_D410E4C+6o
  7302. ; SRAM:off_D410E70o
  7303. ; jump table for switch statement
  7304. DCD def_D410E58 ; jumptable 0D410E58 default case
  7305. DCD loc_D410E6C ; jumptable 0D410E58 cases 2,9,10
  7306. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7307. DCD def_D410E58 ; jumptable 0D410E58 default case
  7308. DCD def_D410E58 ; jumptable 0D410E58 default case
  7309. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7310. DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
  7311. DCD def_D410E58 ; jumptable 0D410E58 default case
  7312. DCD loc_D410E6C ; jumptable 0D410E58 cases 2,9,10
  7313. DCD loc_D410E6C ; jumptable 0D410E58 cases 2,9,10
  7314. DCD def_D410E58 ; jumptable 0D410E58 default case
  7315. DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
  7316. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7317. DCD def_D410E58 ; jumptable 0D410E58 default case
  7318. DCD def_D410E58 ; jumptable 0D410E58 default case
  7319. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7320. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7321. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7322. DCD def_D410E58 ; jumptable 0D410E58 default case
  7323. DCD def_D410E58 ; jumptable 0D410E58 default case
  7324. DCD def_D410E58 ; jumptable 0D410E58 default case
  7325. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7326. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7327. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7328. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7329. DCD def_D410E58 ; jumptable 0D410E58 default case
  7330. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7331. DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
  7332. DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
  7333. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7334. DCD def_D410E58 ; jumptable 0D410E58 default case
  7335. DCD def_D410E58 ; jumptable 0D410E58 default case
  7336. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7337. DCD def_D410E58 ; jumptable 0D410E58 default case
  7338. DCD def_D410E58 ; jumptable 0D410E58 default case
  7339. DCD def_D410E58 ; jumptable 0D410E58 default case
  7340. DCD def_D410E58 ; jumptable 0D410E58 default case
  7341. DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
  7342. DCD def_D410E58 ; jumptable 0D410E58 default case
  7343. DCD def_D410E58 ; jumptable 0D410E58 default case
  7344. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7345. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7346. DCD def_D410E58 ; jumptable 0D410E58 default case
  7347. DCD def_D410E58 ; jumptable 0D410E58 default case
  7348. DCD def_D410E58 ; jumptable 0D410E58 default case
  7349. DCD def_D410E58 ; jumptable 0D410E58 default case
  7350. DCD def_D410E58 ; jumptable 0D410E58 default case
  7351. DCD def_D410E58 ; jumptable 0D410E58 default case
  7352. DCD def_D410E58 ; jumptable 0D410E58 default case
  7353. DCD def_D410E58 ; jumptable 0D410E58 default case
  7354. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7355. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7356. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7357. DCD def_D410E58 ; jumptable 0D410E58 default case
  7358. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7359. DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
  7360. jpt_D41236E DCD loc_D4123AC ; DATA XREF: SRAM:0D412368o
  7361. ; SRAM:off_D4123ECo
  7362. ; jump table for switch statement
  7363. DCD loc_D4123AC ; jumptable 0D41236E cases 0,1,11
  7364. DCD loc_D4123CA ; jumptable 0D41236E cases 2,6
  7365. DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
  7366. DCD loc_D4123D2 ; jumptable 0D41236E cases 4,5,12
  7367. DCD loc_D4123D2 ; jumptable 0D41236E cases 4,5,12
  7368. DCD loc_D4123CA ; jumptable 0D41236E cases 2,6
  7369. DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
  7370. DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
  7371. DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
  7372. DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
  7373. DCD loc_D4123AC ; jumptable 0D41236E cases 0,1,11
  7374. DCD loc_D4123D2 ; jumptable 0D41236E cases 4,5,12
  7375. jpt_D4123B4 DCD loc_D4123C6 ; DATA XREF: SRAM:loc_D4123AEo
  7376. ; SRAM:off_D4123FCo
  7377. ; jump table for switch statement
  7378. DCD loc_D4123C2 ; jumptable 0D4123B4 case 14
  7379. DCD loc_D4123BE ; jumptable 0D4123B4 case 15
  7380. DCD loc_D4123BA ; jumptable 0D4123B4 case 16
  7381. DCD loc_D4123B6 ; jumptable 0D4123B4 case 17
  7382. aErrorAhbmemflu DCB "ERROR: ahbMemFlush(0x%x) did not ack!",0xA,0
  7383. ; DATA XREF: SRAM:0D4123E4o
  7384. ; SRAM:off_D412400o
  7385. DCB 0
  7386. StackSize DCD 0x1000 ; DATA XREF: Boot0_Start+44o
  7387. ; Boot0_Start+48r ...
  7388. SDHC_REG_BASE DCD 0xD070000 ; DATA XREF: sub_D410E28o
  7389. ; SRAM:off_D410E48o ...
  7390. SDWIFI_REG_BASE DCD 0xD080000
  7391. dword_D413460 DCD 0xFA ; DATA XREF: sub_D411774o
  7392. ; sub_D411774+2w ...
  7393. ALIGN 0x20
  7394. RSA_Exponent DCD 0x10001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7395. ; DATA XREF: CalcSHA_And_RSA+52o
  7396. ; SRAM:off_D4102F4o
  7397. DCD 0
  7398. RSA_PUB_0 DCD 0x7F0A36D1, 0x3E32C3, 0xDCA663, 0x282522B, 0x5A992501
  7399. ; DATA XREF: Main+5BCo
  7400. ; SRAM:off_D410B20o
  7401. DCD 0x11EF9CF, 0x88D1BF94, 0x69198E3C, 0x8AF95D8C, 0x8C78167
  7402. DCD 0x722E769F, 0x638B0EA7, 0x3B2D2ABA, 0xF716FDE2, 0x44B62537
  7403. DCD 0x9581824E, 0x540E6209, 0xF9B639FF, 0x51B5DFC5, 0x974BD6CC
  7404. DCD 0x4244D019, 0xFFEF6F6A, 0x9BF1C752, 0xCB057A18, 0x2424B569
  7405. DCD 0xFFA079AC, 0xD18BFD75, 0x1B29D8B9, 0xEB395C1E, 0xA075D6B1
  7406. DCD 0x26B3A325, 0x4C0875D8, 0x7317E7E3, 0x19CD5290, 0xC50C4EE
  7407. DCD 0xE2A85999, 0x1F842A14, 0xEAD7FE21, 0xA35EECAA, 0xD635B68F
  7408. DCD 0xF8336DC2, 0x645D1814, 0x84A62ADA, 0x8CD109B2, 0x398BDC24
  7409. DCD 0x14204465, 0xD8086367, 0xC37B60E4, 0xC701A724, 0x5799C4D0
  7410. DCD 0xCEFD1E7D, 0xF9B0E83A, 0x196C0B14, 0x426AF63D, 0xAA652951
  7411. DCD 0x1AF30477, 0x68902EFF, 0x4A2A9F77, 0x523D5702, 0xCCC8BFF8
  7412. DCD 0xD919249F, 0x6645C1C, 0xCC28060C, 0xFBEFE33D
  7413. RSA_PUB_1 DCD 0x9E2109BB, 0xE6D77252, 0x33DB6E7C, 0x6C31A097, 0x304FFCE7
  7414. ; DATA XREF: Main+5A8o
  7415. ; SRAM:off_D410B1Co
  7416. DCD 0x8BEF6CAD, 0xA3C52C28, 0x4730F448, 0x86BCD63C, 0x459EA1C8
  7417. DCD 0xEEE45165, 0x33BA3D43, 0xA869237E, 0x79274261, 0x808613D5
  7418. DCD 0x8328E5AC, 0x7F8D9E8A, 0x877C8F96, 0xD22A8A6A, 0xA8F39790
  7419. DCD 0x281D5729, 0x30492A8E, 0xF1D18FCC, 0x42F4F591, 0x26A2DB54
  7420. DCD 0xC9988726, 0xF9183080, 0x9608243, 0xC7BB8423, 0x68366936
  7421. DCD 0xB2A8003, 0x6D4C0606, 0x68759F37, 0x278D3C7C, 0x280C14E7
  7422. DCD 0x7A1DC7D7, 0x4B7AB79F, 0xA2925749, 0xA198FE8B, 0x67888CBF
  7423. DCD 0xE9CB15D4, 0x9CE8EA36, 0xB23C747F, 0xBC81AC19, 0xE28A8D3C
  7424. DCD 0x1512B8, 0xE48D7991, 0xB05B228, 0x6F7B2BD, 0x8DBB1D86
  7425. DCD 0x9D4F1B2D, 0xC5745717, 0x7436B551, 0xA466811B, 0xC7EEB779
  7426. DCD 0x5B7F905F, 0xABA7D396, 0xF312385B, 0x9717A01D, 0x83534580
  7427. DCD 0xD16944B7, 0x399AE52C, 0xCCF23D38, 0xD53DF7FB
  7428. AES_IV DCB 0x4F, 0xCD, 0x24, 0xA0, 0xE4, 0xD3, 0xAB, 0x6F, 0xAE
  7429. ; DATA XREF: AES_Decrypt+1Eo SRAM:IVo
  7430. DCB 0x8D, 0xFD, 0x81, 8, 0x58, 0x1D, 0xCF
  7431. DCD 0
  7432. DCD 0
  7433. DCD 0
  7434. DCD 0
  7435. DCD 0
  7436. DCD 0
  7437. DCD 0
  7438. DCD 0
  7439. DCD 0
  7440. DCD 0
  7441. DCD 0
  7442. DCD 0
  7443. SHA1_HASH DCD 0x302130, 0x906052B, 0xE03021A, 0x5000414, 0, 0, 0
  7444. ; DATA XREF: sub_D412438+CCo
  7445. ; SRAM:off_D412584o
  7446. DCD 0
  7447. dword_D413720 DCD 0, 0, 0, 0, 0, 0, 0, 0 ; DATA XREF: Boot0_Start+18o
  7448. ; SRAM:off_D410124o
  7449. dword_D413740 DCD 0 ; DATA XREF: Main+24Eo Main+250w ...
  7450. dword_D413744 DCD 0 ; DATA XREF: CalcSHA_And_RSA+CEo
  7451. ; CalcSHA_And_RSA+D2r ...
  7452. dword_D413748 DCD 0 ; DATA XREF: Main+23Co Main+23Ew ...
  7453. dword_D41374C DCD 0 ; DATA XREF: Main+230o Main+232w ...
  7454. dword_D413750 DCD 0 ; DATA XREF: Main+224o Main+226w ...
  7455. dword_D413754 DCD 0 ; DATA XREF: Main+21Co Main+222w ...
  7456. OTP_102 DCD 0 ; DATA XREF: Main+F0o
  7457. ; SRAM:off_D410724o
  7458. OTP_101 DCD 0 ; DATA XREF: Main+E4o Main+11Cr ...
  7459. OTP_100 DCD 0 ; DATA XREF: Main+D6o
  7460. ; SRAM:OutputBuffero
  7461. dword_D413764 DCD 0 ; DATA XREF: CalcSHA_And_RSA:loc_D41023Eo
  7462. ; CalcSHA_And_RSA+AEr ...
  7463. HW_Time_Start DCD 0 ; DATA XREF: CalcSHA_And_RSA:loc_D41025Ao
  7464. ; CalcSHA_And_RSA+C8r ...
  7465. OTP_200 DCB 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; DATA XREF: Main+FEo
  7466. ; Main+322o ...
  7467. AES_Key_1 DCB 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; DATA XREF: Main+10Co
  7468. ; Main+318o ...
  7469. word_D41378C DCW 0 ; DATA XREF: Main+1DAo
  7470. ; Main:loc_D41059Eo ...
  7471. word_D41378E DCW 0 ; DATA XREF: Main+220r
  7472. word_D413790 DCW 0 ; DATA XREF: Main+228r
  7473. word_D413792 DCW 0 ; DATA XREF: Main+22Ar
  7474. word_D413794 DCW 0 ; DATA XREF: Main+234r
  7475. word_D413796 DCW 0 ; DATA XREF: Main+236r
  7476. word_D413798 DCW 0 ; DATA XREF: Main:loc_D4106DAr
  7477. word_D41379A DCW 0 ; DATA XREF: Main+35Cr
  7478. word_D41379C DCW 0 ; DATA XREF: Main+1E6o
  7479. ; SRAM:off_D410758o ...
  7480. word_D41379E DCW 0 ; DATA XREF: Main+4CAr
  7481. DCD 0, 0, 0
  7482. word_D4137AC DCW 0 ; DATA XREF: Main+4B8r
  7483. DCW 0
  7484. ALIGN 0x20
  7485. dword_D4137C0 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7486. ; DATA XREF: CalcSHA_And_RSA+8o
  7487. ; SRAM:off_D4102E4o
  7488. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7489. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7490. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7491. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7492. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7493. word_D413940 DCW 0 ; DATA XREF: CalcSHA_And_RSA+24o
  7494. ; CalcSHA_And_RSA+5Cr ...
  7495. byte_D413942 DCB 0 ; DATA XREF: CalcSHA_And_RSA+68r
  7496. DCB 0
  7497. DCD 0, 0
  7498. dword_D41394C DCD 0 ; DATA XREF: Main+452r Main+6BAr
  7499. dword_D413950 DCD 0, 0, 0, 0, 0, 0 ; DATA XREF: CalcSHA_And_RSA+124o
  7500. ; SRAM:off_D41030Co
  7501. DCB 0
  7502. DCB 0, 0, 0
  7503. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7504. dword_D4139A0 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7505. ; DATA XREF: CalcSHA_And_RSA:loc_D41028Ao
  7506. ; CalcSHA_And_RSA+106o ...
  7507. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7508. AES_Control_Buffer DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7509. ; DATA XREF: AES_Decrypt+1Co
  7510. ; AES_Decrypt+3Ao ...
  7511. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7512. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7513. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7514. DCD 0, 0, 0, 0, 0, 0
  7515. dword_D413B40 DCD 0, 0, 0, 0, 0 ; DATA XREF: CalcSHA_And_RSA+34o
  7516. ; CalcSHA_And_RSA:loc_D4102AEo ...
  7517. Dyn_AES_Key_Buffer DCD 0 ; DATA XREF: Main:loc_D410536o
  7518. ; Main+1B6w ...
  7519. AES_Key_Ptr DCD 0 ; DATA XREF: Main+1B8o Main+1BAw ...
  7520. dword_D413B5C DCD 0 ; DATA XREF: Main:loc_D410542o
  7521. ; Main+1C2w ...
  7522. ALIGN 0x40
  7523. dword_D413B80 DCD 0 ; DATA XREF: Set_HW_AESKey+16o
  7524. ; Set_HW_AESKey+18w ...
  7525. AES_Control_Buffer_0 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7526. ; DATA XREF: Set_HW_AESKey+Co
  7527. ; SRAM:off_D411900o ...
  7528. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7529. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7530. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7531. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7532. word_D413CC0 DCW 0 ; DATA XREF: AES_HW_Decrypt_0+14o
  7533. ; AES_HW_Decrypt_0+2Cw ...
  7534. DCW 0
  7535. ALIGN 0x40
  7536. AES_DEST_Buffer_0 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7537. ; DATA XREF: AES_HW_Decrypt_0+42o
  7538. ; AES_HW_Decrypt_0+4Ao ...
  7539. dword_D413D40 DCD 0 ; DATA XREF: sub_D411CAC+2o
  7540. ; sub_D411CAC+4r ...
  7541. dword_D413D44 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7542. ; DATA XREF: sub_D411C74+4o
  7543. ; SRAM:off_D411CA8o ...
  7544. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7545. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7546. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7547. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7548. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7549. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7550. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7551. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7552. DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  7553. DCD 0, 0, 0, 0, 0
  7554.  
  7555.  
  7556. ; ===========================================================================
  7557.  
  7558. ; Segment type: Regular
  7559. AREA GPIO, DATA, ALIGN=0
  7560. ; ORG 0xD800000
  7561. HW_IPC_PPCMSG % 4
  7562. HW_IPC_PPCCTRL % 4
  7563. HW_IPC_ARMMSG % 4
  7564. HW_IPC_ARMCTRL % 4
  7565. HW_TIMER % 4 ; DATA XREF: CalcSHA_And_RSA+Ao
  7566. ; CalcSHA_And_RSA+132o ...
  7567. HW_ALARM % 4
  7568.  
  7569. HW_MEMMIRR % 4 ; DATA XREF: Main+46o Main+4Aw ...
  7570.  
  7571. HW_EXICTRL % 4 ; DATA XREF: Main+C6o Main+C8r ...
  7572.  
  7573. HW_GPIO1ENABLE % 4 ; DATA XREF: Main+2Er Main+36w ...
  7574. HW_GPIO1OUT % 4 ; DATA XREF: SendGPIODebugOut+2o
  7575. ; SRAM:off_D410160o ...
  7576. HW_GPIO1DIR % 4 ; DATA XREF: Main+3Ar Main+3Ew ...
  7577. HW_GPIO1IN % 4 ; DATA XREF: sub_D411810+66o
  7578. ; SRAM:off_D4118D0o
  7579. HW_GPIO1INTLVL % 4
  7580. HW_GPIO1INTFLAG % 4
  7581. HW_GPIO1INTENABLE % 4 ; DATA XREF: Main+618o Main+61Cr ...
  7582. HW_GPIO_INMIR % 4
  7583. HW_GPIO_OWNER % 4
  7584. dword_D800100 % 4 ; DATA XREF: Boot0_Checks_Maybe+82o
  7585. ; SRAM:off_D412314o
  7586. % 4
  7587. % 4
  7588. dword_D80010C % 4 ; DATA XREF: Boot0_Checks_Maybe+9Eo
  7589. ; SRAM:off_D412318o
  7590. dword_D800110 % 4 ; DATA XREF: Boot0_Checks_Maybe+AAo
  7591. ; SRAM:off_D41231Co
  7592. dword_D800114 % 4 ; DATA XREF: Boot0_Checks_Maybe+B6o
  7593. ; SRAM:off_D412320o
  7594. dword_D800118 % 4 ; DATA XREF: Boot0_Checks_Maybe+C2o
  7595. ; SRAM:off_D412324o
  7596. dword_D80011C % 4 ; DATA XREF: Boot0_Checks_Maybe+CEo
  7597. ; SRAM:off_D412328o
  7598. dword_D800120 % 4 ; DATA XREF: Boot0_Checks_Maybe+D4o
  7599. ; SRAM:off_D41232Co
  7600.  
  7601. dword_D800130 % 4 ; DATA XREF: sub_D4120BC+Eo
  7602. ; sub_D4120BC+32o ...
  7603. dword_D800134 % 4 ; DATA XREF: Boot0_Checks_Maybe+F4o
  7604. ; SRAM:off_D412334o
  7605. dword_D800138 % 4 ; DATA XREF: sub_D4120BC+1Ao
  7606. ; SRAM:off_D412100o
  7607.  
  7608. dword_D800188 % 4 ; DATA XREF: Boot0_Checks_Maybe:loc_D41214Eo
  7609. ; Boot0_Checks_Maybe+1C0o ...
  7610. HW_BOOT0 % 4 ; DATA XREF: Main+20o Main+24r ...
  7611. ; Maps boot0
  7612. % 4
  7613. HW_RESETS % 4 ; DATA XREF: Main+B0o Main+B4r ...
  7614. % 4
  7615.  
  7616. Unknown_OTP_State_Value % 4 ; DATA XREF: Main+11Eo Main+122r ...
  7617. dword_D8001E4 % 4 ; DATA XREF: Main+136o Main+13Ar ...
  7618.  
  7619. HW_OTP_COMMAND % 4 ; DATA XREF: Set_HW_OTP_Command_RDo
  7620. ; SRAM:off_D410B54o ...
  7621. HW_OTP_DATA % 4 ; DATA XREF: Read_From_OTP+42r
  7622.  
  7623. HW_VERSION % 4 ; DATA XREF: sub_D4120BC+2o
  7624. ; SRAM:off_D4120F8o
  7625.  
  7626. dword_D80047C % 4 ; DATA XREF: Main+470o Main+476w ...
  7627.  
  7628. dword_D800510 % 4 ; DATA XREF: Main:loc_D4108B4o
  7629. ; Main+534r ...
  7630.  
  7631. dword_D8005B4 % 4 ; DATA XREF: Main+9Ao Main+9Er ...
  7632. % 1
  7633. % 1
  7634. % 10
  7635. % 1
  7636. dword_D8005BC % 4 ; DATA XREF: Main+478o Main+47Cw ...
  7637.  
  7638. ; GC_EXI ends
  7639.  
  7640. ; ===========================================================================
  7641.  
  7642. ; Segment type: Regular
  7643. AREA DRAMCtrl, DATA, ALIGN=0
  7644. ; ORG 0xD8B0000
  7645. % 1
  7646. % 1
  7647. % 1
  7648. % 1
  7649. % 1
  7650. % 1
  7651. % 1
  7652. % 1
  7653. unk_D8B0008 % 1 ; DATA XREF: Boot0_Checks_Maybe+E4o
  7654. ; Boot0_Checks_Maybe:loc_D4122ACo ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement