![]() | This article is relevant only to legacy hardware or software, and is retained for its historical significance. Please ask at the community portal if you would like to update this article with current information. |
iPhone 3GS 8920x from iBoot-636.66[edit]
Disassembly for image_load[edit]
N88AP_iBoot:4FF1D4E0 ; =============== S U B R O U T I N E =======================================
N88AP_iBoot:4FF1D4E0
N88AP_iBoot:4FF1D4E0 ; Attributes: bp-based frame
N88AP_iBoot:4FF1D4E0
N88AP_iBoot:4FF1D4E0 ; int __fastcall n88ap__iBoot__image_load(struct MEMZ_STRUCT *mem_info, char *TAG_TYPE, int unknown1, int unknown2)
N88AP_iBoot:4FF1D4E0 n88ap__iBoot__image_load ; CODE XREF: n88ap__iBoot__diag_function+8A�p
N88AP_iBoot:4FF1D4E0 ; sub_4FF009CC+22�p
N88AP_iBoot:4FF1D4E0 ; n88ap__iBoot__go_command+66�p
N88AP_iBoot:4FF1D4E0 ; n88ap__iBoot__ramdisk_command_function+7E�p
N88AP_iBoot:4FF1D4E0 ; n88ap__iBoot__devicetree_function+7C�p ...
N88AP_iBoot:4FF1D4E0
N88AP_iBoot:4FF1D4E0 var_18 = -0x18
N88AP_iBoot:4FF1D4E0 var_14 = -0x14
N88AP_iBoot:4FF1D4E0 oldR4 = -0x10
N88AP_iBoot:4FF1D4E0 oldR5 = -0xC
N88AP_iBoot:4FF1D4E0 oldR7 = -8
N88AP_iBoot:4FF1D4E0 oldLR = -4
N88AP_iBoot:4FF1D4E0
N88AP_iBoot:4FF1D4E0 000 PUSH {R4,R5,R7,LR} ; Push registers
N88AP_iBoot:4FF1D4E2 010 ADD R7, SP, #8 ; Rd = Op1 + Op2
N88AP_iBoot:4FF1D4E4 010 SUB SP, SP, #8 ; Rd = Op1 - Op2
N88AP_iBoot:4FF1D4E6 018 MOV R5, R3 ; Rd = Op2
N88AP_iBoot:4FF1D4E8 018 LDR R3, [R2] ; Load from Memory
N88AP_iBoot:4FF1D4EA 018 MOV R4, R2 ; Rd = Op2
N88AP_iBoot:4FF1D4EC 018 STR R3, [SP,#0x18+var_14] ; Store to Memory
N88AP_iBoot:4FF1D4EE 018 LDR R3, [R5] ; param_R3
N88AP_iBoot:4FF1D4F0 018 STR R3, [SP,#0x18+var_18] ; Store to Memory
N88AP_iBoot:4FF1D4F2 018 CBZ R0, end_of_error ; Compare and Branch on Zero
N88AP_iBoot:4FF1D4F4 018 LDR R2, [R0,#MEMZ_STRUCT.tag.full_size] ; param_R2
N88AP_iBoot:4FF1D4F6 018 CMP R3, R2 ; Set cond. codes on Op1 - Op2
N88AP_iBoot:4FF1D4F8 018 BCS loc_4FF1D502 ; Branch
N88AP_iBoot:4FF1D4FA 018 LDR R0, =aImage_loadImageTooLarge_0 ; "image_load: image too large\n"
N88AP_iBoot:4FF1D4FC 018 BL N88AP__iBOOT__console_printf ; Branch with Link
N88AP_iBoot:4FF1D500 018 B end_of_error ; Branch
N88AP_iBoot:4FF1D502 ; ---------------------------------------------------------------------------
N88AP_iBoot:4FF1D502
N88AP_iBoot:4FF1D502 loc_4FF1D502 ; CODE XREF: n88ap__iBoot__image_load+18�j
N88AP_iBoot:4FF1D502 018 LDR R2, [R0,#MEMZ_STRUCT.id_memz] ; Load from Memory
N88AP_iBoot:4FF1D504 018 LDR R3, ='Memz' ; Load from Memory
N88AP_iBoot:4FF1D506 018 CMP R2, R3 ; Set cond. codes on Op1 - Op2
N88AP_iBoot:4FF1D508 018 BEQ MemZ_Operation ; Branch
N88AP_iBoot:4FF1D50A 018 LDR R3, ='img3' ; Load from Memory
N88AP_iBoot:4FF1D50C 018 CMP R2, R3 ; Set cond. codes on Op1 - Op2
N88AP_iBoot:4FF1D50E 018 BNE end_of_error ; Branch
N88AP_iBoot:4FF1D510 018 B img3_Operation ; Branch
N88AP_iBoot:4FF1D512 ; ---------------------------------------------------------------------------
N88AP_iBoot:4FF1D512
N88AP_iBoot:4FF1D512 MemZ_Operation ; CODE XREF: n88ap__iBoot__image_load+28�j
N88AP_iBoot:4FF1D512 018 ADD R2, SP, #0x18+var_14 ; Rd = Op1 + Op2
N88AP_iBoot:4FF1D514 018 MOV R3, SP ; Rd = Op2
N88AP_iBoot:4FF1D516 018 BL n88ap__iBoot__blockdev ; Branch with Link
N88AP_iBoot:4FF1D51A 018 CBZ R0, loc_4FF1D534 ; Compare and Branch on Zero
N88AP_iBoot:4FF1D51C 018 CMP R0, #0x16 ; Set cond. codes on Op1 - Op2
N88AP_iBoot:4FF1D51E 018 BNE end_of_error ; Branch
N88AP_iBoot:4FF1D520 018 LDR R3, [R4] ; Load from Memory
N88AP_iBoot:4FF1D522 018 STR R3, [SP,#0x18+var_14] ; Store to Memory
N88AP_iBoot:4FF1D524 018 LDR R3, [R5] ; Load from Memory
N88AP_iBoot:4FF1D526 018 STR R3, [SP,#0x18+var_18] ; Store to Memory
N88AP_iBoot:4FF1D528 018 B end_of_error ; Branch
N88AP_iBoot:4FF1D52A ; ---------------------------------------------------------------------------
N88AP_iBoot:4FF1D52A
N88AP_iBoot:4FF1D52A img3_Operation ; CODE XREF: n88ap__iBoot__image_load+30�j
N88AP_iBoot:4FF1D52A 018 ADD R2, SP, #0x18+var_14 ; Rd = Op1 + Op2
N88AP_iBoot:4FF1D52C 018 MOV R3, SP ; Rd = Op2
N88AP_iBoot:4FF1D52E 018 BL n88ap__iBoot__blockdev ; Branch with Link
N88AP_iBoot:4FF1D532 018 CBNZ R0, end_of_error ; Compare and Branch on Non-Zero
N88AP_iBoot:4FF1D534
N88AP_iBoot:4FF1D534 loc_4FF1D534 ; CODE XREF: n88ap__iBoot__image_load+3A�j
N88AP_iBoot:4FF1D534 018 LDR R3, [SP,#0x18+var_14] ; Load from Memory
N88AP_iBoot:4FF1D536 018 MOVS R0, #0 ; Rd = Op2
N88AP_iBoot:4FF1D538 018 STR R3, [R4] ; Store to Memory
N88AP_iBoot:4FF1D53A 018 LDR R3, [SP,#0x18+var_18] ; Load from Memory
N88AP_iBoot:4FF1D53C 018 STR R3, [R5] ; Store to Memory
N88AP_iBoot:4FF1D53E 018 B loc_4FF1D54A ; Branch
N88AP_iBoot:4FF1D540 ; ---------------------------------------------------------------------------
N88AP_iBoot:4FF1D540
N88AP_iBoot:4FF1D540 end_of_error ; CODE XREF: n88ap__iBoot__image_load+12�j
N88AP_iBoot:4FF1D540 ; n88ap__iBoot__image_load+20�j
N88AP_iBoot:4FF1D540 ; n88ap__iBoot__image_load+2E�j
N88AP_iBoot:4FF1D540 ; n88ap__iBoot__image_load+3E�j
N88AP_iBoot:4FF1D540 ; n88ap__iBoot__image_load+48�j ...
N88AP_iBoot:4FF1D540 018 MOV.W R0, #0xFFFFFFFF ; Rd = Op2
N88AP_iBoot:4FF1D544 018 MOVS R3, #0 ; Rd = Op2
N88AP_iBoot:4FF1D546 018 STR R3, [R4] ; Store to Memory
N88AP_iBoot:4FF1D548 018 STR R3, [R5] ; Store to Memory
N88AP_iBoot:4FF1D54A
N88AP_iBoot:4FF1D54A loc_4FF1D54A ; CODE XREF: n88ap__iBoot__image_load+5E�j
N88AP_iBoot:4FF1D54A 018 SUB.W SP, R7, #8 ; Rd = Op1 - Op2
N88AP_iBoot:4FF1D54E 018 POP {R4,R5,R7,PC} ; Pop registers
N88AP_iBoot:4FF1D54E ; End of function n88ap__iBoot__image_load
N88AP_iBoot:4FF1D54E
N88AP_iBoot:4FF1D54E ; ---------------------------------------------------------------------------
N88AP_iBoot:4FF1D550 ; int off_4FF1D550
N88AP_iBoot:4FF1D550 off_4FF1D550 DCD aImage_loadImageTooLarge_0
N88AP_iBoot:4FF1D550 ; DATA XREF: n88ap__iBoot__image_load+1A�r
N88AP_iBoot:4FF1D550 ; "image_load: image too large\n"
N88AP_iBoot:4FF1D554 dword_4FF1D554 DCD 'Memz' ; DATA XREF: n88ap__iBoot__image_load+24�r
N88AP_iBoot:4FF1D558 dword_4FF1D558 DCD 'img3' ; DATA XREF: n88ap__iBoot__image_load+2A�r
N88AP_iBoot:4FF1D55C
Disassembly for blockdev[edit]
N88AP_iBoot:4FF15868 ; =============== S U B R O U T I N E ======================================= N88AP_iBoot:4FF15868 N88AP_iBoot:4FF15868 ; Attributes: bp-based frame N88AP_iBoot:4FF15868 N88AP_iBoot:4FF15868 n88ap__iBoot__blockdev ; CODE XREF: n88ap__iBoot__image_load+36�p N88AP_iBoot:4FF15868 ; n88ap__iBoot__image_load+4E�p N88AP_iBoot:4FF15868 N88AP_iBoot:4FF15868 var_94 = -0x94 N88AP_iBoot:4FF15868 var_90 = -0x90 N88AP_iBoot:4FF15868 var_8C = -0x8C N88AP_iBoot:4FF15868 var_88 = -0x88 N88AP_iBoot:4FF15868 var_84 = -0x84 N88AP_iBoot:4FF15868 var_80 = -0x80 N88AP_iBoot:4FF15868 var_7C = -0x7C N88AP_iBoot:4FF15868 var_78 = -0x78 N88AP_iBoot:4FF15868 var_74 = -0x74 N88AP_iBoot:4FF15868 var_70 = -0x70 N88AP_iBoot:4FF15868 var_6C = -0x6C N88AP_iBoot:4FF15868 var_68 = -0x68 N88AP_iBoot:4FF15868 var_64 = -0x64 N88AP_iBoot:4FF15868 var_60 = -0x60 N88AP_iBoot:4FF15868 argv2 = -0x5C N88AP_iBoot:4FF15868 var_58 = -0x58 N88AP_iBoot:4FF15868 var_54 = -0x54 N88AP_iBoot:4FF15868 var_44 = -0x44 N88AP_iBoot:4FF15868 var_24 = -0x24 N88AP_iBoot:4FF15868 oldR4 = -0x14 N88AP_iBoot:4FF15868 oldR5 = -0x10 N88AP_iBoot:4FF15868 oldR6 = -0xC N88AP_iBoot:4FF15868 oldR7 = -8 N88AP_iBoot:4FF15868 oldLR = -4 N88AP_iBoot:4FF15868 N88AP_iBoot:4FF15868 000 PUSH {R4-R7,LR} ; Push registers N88AP_iBoot:4FF1586A 014 ADD R7, SP, #0xC ; Rd = Op1 + Op2 N88AP_iBoot:4FF1586C 014 PUSH.W {R8,R10,R11} ; Push registers N88AP_iBoot:4FF15870 020 SUB SP, SP, #0x74 ; Rd = Op1 - Op2 N88AP_iBoot:4FF15872 094 MOV R10, R1 ; Rd = Op2 N88AP_iBoot:4FF15874 094 LDR R1, =dword_4FF2A308 ; param_R1 N88AP_iBoot:4FF15876 094 STR R3, [SP,#0x94+var_84] ; Store to Memory N88AP_iBoot:4FF15878 094 MOV R11, R2 ; Rd = Op2 N88AP_iBoot:4FF1587A 094 LDR R3, [R1] ; Load from Memory N88AP_iBoot:4FF1587C 094 MOV R5, R0 ; Rd = Op2 N88AP_iBoot:4FF1587E 094 STR R3, [SP,#0x94+var_24] ; Store to Memory N88AP_iBoot:4FF15880 094 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF15882 094 STR R3, [SP,#0x94+var_58] ; Store to Memory N88AP_iBoot:4FF15884 094 LDR R3, ='Memz' ; Load from Memory N88AP_iBoot:4FF15886 094 LDR R6, [R2] ; Load from Memory N88AP_iBoot:4FF15888 094 LDR R2, [R0,#MEMZ_STRUCT.id_memz] ; param_R2 N88AP_iBoot:4FF1588A 094 LDR.W R8, [R0,#MEMZ_STRUCT.tag.full_size] ; Load from Memory N88AP_iBoot:4FF1588E 094 CMP R2, R3 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15890 094 BEQ loc_4FF158CC ; Branch N88AP_iBoot:4FF15892 094 LDR R3, ='img3' ; param_R3 N88AP_iBoot:4FF15894 094 CMP R2, R3 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15896 094 BNE loc_4FF158A0 ; Branch N88AP_iBoot:4FF15898 094 CBNZ R6, loc_4FF158A6 ; Compare and Branch on Non-Zero N88AP_iBoot:4FF1589A 094 LDR R0, =aLoadAddressNotSpecified_0 ; "load address not specified\n" N88AP_iBoot:4FF1589C 094 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF158A0 N88AP_iBoot:4FF158A0 loc_4FF158A0 ; CODE XREF: n88ap__iBoot__blockdev+2E�j N88AP_iBoot:4FF158A0 094 MOV.W R4, #0xFFFFFFFF ; Rd = Op2 N88AP_iBoot:4FF158A4 094 B loc_4FF15B60 ; Branch N88AP_iBoot:4FF158A6 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF158A6 N88AP_iBoot:4FF158A6 loc_4FF158A6 ; CODE XREF: n88ap__iBoot__blockdev+30�j N88AP_iBoot:4FF158A6 094 LDR R3, [R0,#MEMZ_STRUCT.start_address] ; Load from Memory N88AP_iBoot:4FF158A8 094 MOV R1, R6 ; Rd = Op2 N88AP_iBoot:4FF158AA 094 LDR R0, [R3,#8] ; Load from Memory N88AP_iBoot:4FF158AC 094 LDR R2, [R3,#0xC] ; Load from Memory N88AP_iBoot:4FF158AE 094 STR.W R8, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF158B2 094 MOV R2, R2 ; Rd = Op2 N88AP_iBoot:4FF158B4 094 MOV.W R3, #0 ; Rd = Op2 N88AP_iBoot:4FF158B8 094 LDR R4, [R0,#0x1C] ; Load from Memory N88AP_iBoot:4FF158BA 094 BLX R4 ; Branch with Link and Exchange (register indirect) N88AP_iBoot:4FF158BC 094 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF158BE 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF158C0 094 BGT loc_4FF158E8 ; Branch N88AP_iBoot:4FF158C2 094 MOV R1, R4 ; param_R1 N88AP_iBoot:4FF158C4 094 LDR R0, =aBlockdevReadFailedWithD_0 ; "blockdev read failed with %d\n" N88AP_iBoot:4FF158C6 094 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF158CA 094 B loc_4FF15B60 ; Branch N88AP_iBoot:4FF158CC ; --------------------------------------------------------------------------- N88AP_iBoot:4FF158CC N88AP_iBoot:4FF158CC loc_4FF158CC ; CODE XREF: n88ap__iBoot__blockdev+28�j N88AP_iBoot:4FF158CC 094 LDR R1, [R0,#MEMZ_STRUCT.start_address] ; Load from Memory N88AP_iBoot:4FF158CE 094 LDR R3, ='Img3' ; Load from Memory N88AP_iBoot:4FF158D0 094 LDR R2, [R1] ; Load from Memory N88AP_iBoot:4FF158D2 094 CMP R2, R3 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF158D4 094 BEQ loc_4FF158DA ; Branch N88AP_iBoot:4FF158D6 094 MOVS R4, #0x16 ; Rd = Op2 N88AP_iBoot:4FF158D8 094 B loc_4FF15B6C ; Branch N88AP_iBoot:4FF158DA ; --------------------------------------------------------------------------- N88AP_iBoot:4FF158DA N88AP_iBoot:4FF158DA loc_4FF158DA ; CODE XREF: n88ap__iBoot__blockdev+6C�j N88AP_iBoot:4FF158DA 094 CBZ R6, loc_4FF158E8 ; Compare and Branch on Zero N88AP_iBoot:4FF158DC 094 CMP R6, R1 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF158DE 094 BEQ loc_4FF158E8 ; Branch N88AP_iBoot:4FF158E0 094 MOV R0, R6 ; Rd = Op2 N88AP_iBoot:4FF158E2 094 MOV R2, R8 ; Rd = Op2 N88AP_iBoot:4FF158E4 094 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF158E8 N88AP_iBoot:4FF158E8 loc_4FF158E8 ; CODE XREF: n88ap__iBoot__blockdev+58�j N88AP_iBoot:4FF158E8 ; n88ap__iBoot__blockdev:loc_4FF158DA�j N88AP_iBoot:4FF158E8 ; n88ap__iBoot__blockdev+76�j N88AP_iBoot:4FF158E8 094 ADD R0, SP, #0x94+var_58 ; Rd = Op1 + Op2 N88AP_iBoot:4FF158EA 094 MOV R1, R6 ; Rd = Op2 N88AP_iBoot:4FF158EC 094 MOV R2, R8 ; Rd = Op2 N88AP_iBoot:4FF158EE 094 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF158F0 094 BL sub_4FF153EC ; Branch with Link N88AP_iBoot:4FF158F4 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF158F6 094 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF158F8 094 BNE.W loc_4FF15B60 ; Branch N88AP_iBoot:4FF158FC 094 LDR R2, [R5,#0xC] ; Load from Memory N88AP_iBoot:4FF158FE 094 LDR R3, ='img3' ; Load from Memory N88AP_iBoot:4FF15900 094 CMP R2, R3 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15902 094 BNE loc_4FF15908 ; Branch N88AP_iBoot:4FF15904 094 MOVS R1, #1 ; Rd = Op2 N88AP_iBoot:4FF15906 094 B loc_4FF15910 ; Branch N88AP_iBoot:4FF15908 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15908 N88AP_iBoot:4FF15908 loc_4FF15908 ; CODE XREF: n88ap__iBoot__blockdev+9A�j N88AP_iBoot:4FF15908 094 LDR R3, [R5,#0x10] ; Load from Memory N88AP_iBoot:4FF1590A 094 LSRS R1, R3, #2 ; Logical Shift Right N88AP_iBoot:4FF1590C 094 AND.W R1, R1, #1 ; Rd = Op1 & Op2 N88AP_iBoot:4FF15910 N88AP_iBoot:4FF15910 loc_4FF15910 ; CODE XREF: n88ap__iBoot__blockdev+9E�j N88AP_iBoot:4FF15910 094 LDR R0, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF15912 094 BL sub_4FF1548C ; Branch with Link N88AP_iBoot:4FF15916 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF15918 094 CBZ R0, loc_4FF15938 ; Compare and Branch on Zero N88AP_iBoot:4FF1591A 094 CMP R0, #1 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF1591C 094 BNE.W loc_4FF15B60 ; Branch N88AP_iBoot:4FF15920 094 LDR R0, [R5,#0x10] ; Load from Memory N88AP_iBoot:4FF15922 094 TST.W R0, #2 ; Set cond. codes on Op1 & Op2 N88AP_iBoot:4FF15926 094 BNE.W loc_4FF15B60 ; Branch N88AP_iBoot:4FF1592A 094 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF1592C 094 BL sub_4FF1A074 ; Branch with Link N88AP_iBoot:4FF15930 094 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15932 094 BEQ.W loc_4FF15B60 ; Branch N88AP_iBoot:4FF15936 094 B loc_4FF15A40 ; Branch N88AP_iBoot:4FF15938 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15938 N88AP_iBoot:4FF15938 loc_4FF15938 ; CODE XREF: n88ap__iBoot__blockdev+B0�j N88AP_iBoot:4FF15938 094 LDR R2, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF1593A 094 STR R2, [SP,#0x94+var_70] ; Store to Memory N88AP_iBoot:4FF1593C 094 BL sub_4FF1F920 ; Branch with Link N88AP_iBoot:4FF15940 094 MOVS R1, #1 ; Rd = Op2 N88AP_iBoot:4FF15942 094 STR R1, [SP,#0x94+var_90] ; Store to Memory N88AP_iBoot:4FF15944 094 STR R1, [SP,#0x94+var_8C] ; Store to Memory N88AP_iBoot:4FF15946 094 SUBS R1, #1 ; Rd = Op1 - Op2 N88AP_iBoot:4FF15948 094 STR R1, [SP,#0x94+var_88] ; Store to Memory N88AP_iBoot:4FF1594A 094 LDR R1, ='SDOM' ; Load from Memory N88AP_iBoot:4FF1594C 094 STR R4, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF1594E 094 MOV R2, R0 ; Rd = Op2 N88AP_iBoot:4FF15950 094 MOV.W R3, #0 ; Rd = Op2 N88AP_iBoot:4FF15954 094 LDR R0, [SP,#0x94+var_70] ; Load from Memory N88AP_iBoot:4FF15956 094 BL sub_4FF15798 ; Branch with Link N88AP_iBoot:4FF1595A 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF1595C 094 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF1595E 094 BNE loc_4FF15A44 ; Branch N88AP_iBoot:4FF15960 094 BL sub_4FF1F914 ; Branch with Link N88AP_iBoot:4FF15964 094 CBZ R0, loc_4FF15982 ; Compare and Branch on Zero N88AP_iBoot:4FF15966 094 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF15968 094 LDR R0, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF1596A 094 STR R2, [SP,#0x94+var_90] ; Store to Memory N88AP_iBoot:4FF1596C 094 STR R2, [SP,#0x94+var_8C] ; Store to Memory N88AP_iBoot:4FF1596E 094 LDR R1, ='PROD' ; Load from Memory N88AP_iBoot:4FF15970 094 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF15972 094 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF15974 094 STR R4, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF15976 094 STR R4, [SP,#0x94+var_88] ; Store to Memory N88AP_iBoot:4FF15978 094 BL sub_4FF15798 ; Branch with Link N88AP_iBoot:4FF1597C 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF1597E 094 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15980 094 BNE loc_4FF15A44 ; Branch N88AP_iBoot:4FF15982 N88AP_iBoot:4FF15982 loc_4FF15982 ; CODE XREF: n88ap__iBoot__blockdev+FC�j N88AP_iBoot:4FF15982 094 LDR R4, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF15984 094 BL sub_4FF1F8F8 ; Branch with Link N88AP_iBoot:4FF15988 094 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF1598A 094 STR R1, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF1598C 094 ADDS R1, #1 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1598E 094 STR R1, [SP,#0x94+var_90] ; Store to Memory N88AP_iBoot:4FF15990 094 STR R1, [SP,#0x94+var_8C] ; Store to Memory N88AP_iBoot:4FF15992 094 SUBS R1, #1 ; Rd = Op1 - Op2 N88AP_iBoot:4FF15994 094 STR R1, [SP,#0x94+var_88] ; Store to Memory N88AP_iBoot:4FF15996 094 LDR R1, ='CHIP' ; Load from Memory N88AP_iBoot:4FF15998 094 MOV R2, R0 ; Rd = Op2 N88AP_iBoot:4FF1599A 094 MOV.W R3, #0 ; Rd = Op2 N88AP_iBoot:4FF1599E 094 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF159A0 094 BL sub_4FF15798 ; Branch with Link N88AP_iBoot:4FF159A4 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF159A6 094 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF159A8 094 BNE loc_4FF15A44 ; Branch N88AP_iBoot:4FF159AA 094 CMP.W R10, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF159AE 094 BEQ loc_4FF159CE ; Branch N88AP_iBoot:4FF159B0 094 STR R0, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF159B2 094 MOVS R1, #1 ; Rd = Op2 N88AP_iBoot:4FF159B4 094 STR R0, [SP,#0x94+var_8C] ; Store to Memory N88AP_iBoot:4FF159B6 094 STR R1, [SP,#0x94+var_90] ; Store to Memory N88AP_iBoot:4FF159B8 094 STR R0, [SP,#0x94+var_88] ; Store to Memory N88AP_iBoot:4FF159BA 094 MOV R2, R10 ; Rd = Op2 N88AP_iBoot:4FF159BC 094 MOV.W R3, #0 ; Rd = Op2 N88AP_iBoot:4FF159C0 094 LDR R0, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF159C2 094 LDR R1, ='TYPE' ; Load from Memory N88AP_iBoot:4FF159C4 094 BL sub_4FF15798 ; Branch with Link N88AP_iBoot:4FF159C8 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF159CA 094 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF159CC 094 BNE loc_4FF15A44 ; Branch N88AP_iBoot:4FF159CE N88AP_iBoot:4FF159CE loc_4FF159CE ; CODE XREF: n88ap__iBoot__blockdev+146�j N88AP_iBoot:4FF159CE 094 LDR R4, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF159D0 094 BL sub_4FF1E3F8 ; Branch with Link N88AP_iBoot:4FF159D4 094 LDR R1, [R5,#0x10] ; Load from Memory N88AP_iBoot:4FF159D6 094 AND.W R1, R1, #1 ; Rd = Op1 & Op2 N88AP_iBoot:4FF159DA 094 STR R1, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF159DC 094 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF159DE 094 STR R1, [SP,#0x94+var_90] ; Store to Memory N88AP_iBoot:4FF159E0 094 STR R1, [SP,#0x94+var_8C] ; Store to Memory N88AP_iBoot:4FF159E2 094 STR R1, [SP,#0x94+var_88] ; Store to Memory N88AP_iBoot:4FF159E4 094 LDR R1, ='SEPO' ; Load from Memory N88AP_iBoot:4FF159E6 094 MOV R2, R0 ; Rd = Op2 N88AP_iBoot:4FF159E8 094 MOV.W R3, #0 ; Rd = Op2 N88AP_iBoot:4FF159EC 094 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF159EE 094 BL sub_4FF15798 ; Branch with Link N88AP_iBoot:4FF159F2 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF159F4 094 CBNZ R0, loc_4FF15A44 ; Compare and Branch on Non-Zero N88AP_iBoot:4FF159F6 094 LDR.W R10, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF159FA 094 BL sub_4FF184E4 ; Branch with Link N88AP_iBoot:4FF159FE 094 LDR R1, ='BORD' ; Load from Memory N88AP_iBoot:4FF15A00 094 STR R4, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF15A02 094 STR R4, [SP,#0x94+var_90] ; Store to Memory N88AP_iBoot:4FF15A04 094 STR R4, [SP,#0x94+var_8C] ; Store to Memory N88AP_iBoot:4FF15A06 094 STR R4, [SP,#0x94+var_88] ; Store to Memory N88AP_iBoot:4FF15A08 094 MOV R2, R0 ; Rd = Op2 N88AP_iBoot:4FF15A0A 094 MOV.W R3, #0 ; Rd = Op2 N88AP_iBoot:4FF15A0E 094 MOV R0, R10 ; Rd = Op2 N88AP_iBoot:4FF15A10 094 BL sub_4FF15798 ; Branch with Link N88AP_iBoot:4FF15A14 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF15A16 094 CBNZ R0, loc_4FF15A44 ; Compare and Branch on Non-Zero N88AP_iBoot:4FF15A18 094 LDR.W R10, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF15A1C 094 BL sub_4FF1F904 ; Branch with Link N88AP_iBoot:4FF15A20 094 STR R0, [SP,#0x94+var_80] ; Store to Memory N88AP_iBoot:4FF15A22 094 STR R1, [SP,#0x94+var_7C] ; Store to Memory N88AP_iBoot:4FF15A24 094 BL sub_4FF1F910 ; Branch with Link N88AP_iBoot:4FF15A28 094 LDR R1, ='ECID' ; Load from Memory N88AP_iBoot:4FF15A2A 094 ADD R2, SP, #0x94+var_80 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15A2C 094 LDMIA R2, {R2,R3} ; Load Block from Memory N88AP_iBoot:4FF15A2E 094 STR R4, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF15A30 094 STR R4, [SP,#0x94+var_8C] ; Store to Memory N88AP_iBoot:4FF15A32 094 STR R4, [SP,#0x94+var_88] ; Store to Memory N88AP_iBoot:4FF15A34 094 STR R0, [SP,#0x94+var_90] ; Store to Memory N88AP_iBoot:4FF15A36 094 MOV R0, R10 ; Rd = Op2 N88AP_iBoot:4FF15A38 094 BL sub_4FF15798 ; Branch with Link N88AP_iBoot:4FF15A3C 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF15A3E 094 CBNZ R0, loc_4FF15A44 ; Compare and Branch on Non-Zero N88AP_iBoot:4FF15A40 N88AP_iBoot:4FF15A40 loc_4FF15A40 ; CODE XREF: n88ap__iBoot__blockdev+CE�j N88AP_iBoot:4FF15A40 094 STR R4, [SP,#0x94+var_78] ; Store to Memory N88AP_iBoot:4FF15A42 094 B loc_4FF15A64 ; Branch N88AP_iBoot:4FF15A44 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15A44 N88AP_iBoot:4FF15A44 loc_4FF15A44 ; CODE XREF: n88ap__iBoot__blockdev+F6�j N88AP_iBoot:4FF15A44 ; n88ap__iBoot__blockdev+118�j N88AP_iBoot:4FF15A44 ; n88ap__iBoot__blockdev+140�j N88AP_iBoot:4FF15A44 ; n88ap__iBoot__blockdev+164�j N88AP_iBoot:4FF15A44 ; n88ap__iBoot__blockdev+18C�j ... N88AP_iBoot:4FF15A44 094 LDR R0, [R5,#0x10] ; Load from Memory N88AP_iBoot:4FF15A46 094 TST.W R0, #2 ; Set cond. codes on Op1 & Op2 N88AP_iBoot:4FF15A4A 094 BNE.W loc_4FF15B60 ; Branch N88AP_iBoot:4FF15A4E 094 MOVS R0, #1 ; Rd = Op2 N88AP_iBoot:4FF15A50 094 BL sub_4FF1A074 ; Branch with Link N88AP_iBoot:4FF15A54 094 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15A56 094 BEQ.W loc_4FF15B60 ; Branch N88AP_iBoot:4FF15A5A 094 LDR R0, =aImageValidationFailedButUntrustedImagesAreP_0 ; "image validation failed but untrusted i"... N88AP_iBoot:4FF15A5C 094 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15A60 094 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF15A62 094 STR R2, [SP,#0x94+var_78] ; Store to Memory N88AP_iBoot:4FF15A64 N88AP_iBoot:4FF15A64 loc_4FF15A64 ; CODE XREF: n88ap__iBoot__blockdev+1DA�j N88AP_iBoot:4FF15A64 094 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF15A66 094 LDR R0, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF15A68 094 STR R3, [SP,#0x94+var_60] ; Store to Memory N88AP_iBoot:4FF15A6A 094 STR R3, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF15A6C 094 LDR R1, ='DATA' ; Load from Memory N88AP_iBoot:4FF15A6E 094 ADD R2, SP, #0x94+argv2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15A70 094 ADD R3, SP, #0x94+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15A72 094 BL sub_4FF1531C ; Branch with Link N88AP_iBoot:4FF15A76 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF15A78 094 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15A7A 094 BNE loc_4FF15B60 ; Branch N88AP_iBoot:4FF15A7C 094 MOV R10, R0 ; Rd = Op2 N88AP_iBoot:4FF15A7E N88AP_iBoot:4FF15A7E loc_4FF15A7E ; CODE XREF: n88ap__iBoot__blockdev+2E2�j N88AP_iBoot:4FF15A7E 094 MOVS R3, #0x38 ; '8' ; Rd = Op2 N88AP_iBoot:4FF15A80 094 LDR R0, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF15A82 094 STR R3, [SP,#0x94+var_6C] ; Store to Memory N88AP_iBoot:4FF15A84 094 LDR R1, ='KBAG' ; Load from Memory N88AP_iBoot:4FF15A86 094 ADD R2, SP, #0x94+var_64 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15A88 094 ADD R3, SP, #0x94+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF15A8A 094 STR.W R10, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF15A8E 094 BL sub_4FF1531C ; Branch with Link N88AP_iBoot:4FF15A92 094 CMP R0, #2 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15A94 094 BNE loc_4FF15AA0 ; Branch N88AP_iBoot:4FF15A96 094 CMP.W R10, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15A9A 094 BEQ loc_4FF15B4C ; Branch N88AP_iBoot:4FF15A9C 094 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF15A9E 094 B loc_4FF15B60 ; Branch N88AP_iBoot:4FF15AA0 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15AA0 N88AP_iBoot:4FF15AA0 loc_4FF15AA0 ; CODE XREF: n88ap__iBoot__blockdev+22C�j N88AP_iBoot:4FF15AA0 094 LDR R3, [SP,#0x94+var_78] ; Load from Memory N88AP_iBoot:4FF15AA2 094 CMP R3, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15AA4 094 BNE loc_4FF15B5E ; Branch N88AP_iBoot:4FF15AA6 094 MOVS R2, #0x30 ; '0' ; Rd = Op2 N88AP_iBoot:4FF15AA8 094 MOV R1, R3 ; Rd = Op2 N88AP_iBoot:4FF15AAA 094 ADD R0, SP, #0x94+var_54 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15AAC 094 BLX sub_4FF1ED54 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF15AB0 094 LDR R1, [SP,#0x94+var_64] ; Load from Memory N88AP_iBoot:4FF15AB2 094 LDR R2, [R1,#4] ; Load from Memory N88AP_iBoot:4FF15AB4 094 CMP R2, #0xC0 ; '? ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15AB6 094 BEQ loc_4FF15AC4 ; Branch N88AP_iBoot:4FF15AB8 094 CMP.W R2, #0x100 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15ABC 094 BEQ loc_4FF15ACA ; Branch N88AP_iBoot:4FF15ABE 094 CMP R2, #0x80 ; '' ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15AC0 094 BNE loc_4FF15B5E ; Branch N88AP_iBoot:4FF15AC2 094 B loc_4FF15AD0 ; Branch N88AP_iBoot:4FF15AC4 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15AC4 N88AP_iBoot:4FF15AC4 loc_4FF15AC4 ; CODE XREF: n88ap__iBoot__blockdev+24E�j N88AP_iBoot:4FF15AC4 094 MOV.W R3, #0x10000000 ; Rd = Op2 N88AP_iBoot:4FF15AC8 094 B loc_4FF15AD2 ; Branch N88AP_iBoot:4FF15ACA ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15ACA N88AP_iBoot:4FF15ACA loc_4FF15ACA ; CODE XREF: n88ap__iBoot__blockdev+254�j N88AP_iBoot:4FF15ACA 094 MOV.W R3, #0x20000000 ; Rd = Op2 N88AP_iBoot:4FF15ACE 094 B loc_4FF15AD2 ; Branch N88AP_iBoot:4FF15AD0 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15AD0 N88AP_iBoot:4FF15AD0 loc_4FF15AD0 ; CODE XREF: n88ap__iBoot__blockdev+25A�j N88AP_iBoot:4FF15AD0 094 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF15AD2 N88AP_iBoot:4FF15AD2 loc_4FF15AD2 ; CODE XREF: n88ap__iBoot__blockdev+260�j N88AP_iBoot:4FF15AD2 ; n88ap__iBoot__blockdev+266�j N88AP_iBoot:4FF15AD2 094 LSRS R5, R2, #3 ; Logical Shift Right N88AP_iBoot:4FF15AD4 094 ADDS R1, #8 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15AD6 094 MOVS R2, #0x10 ; Rd = Op2 N88AP_iBoot:4FF15AD8 094 ADD R0, SP, #0x94+var_54 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15ADA 094 STR R3, [SP,#0x94+var_74] ; Store to Memory N88AP_iBoot:4FF15ADC 094 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF15AE0 094 LDR R1, [SP,#0x94+var_64] ; Load from Memory N88AP_iBoot:4FF15AE2 094 ADD R0, SP, #0x94+var_44 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15AE4 094 ADDS R1, #0x18 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15AE6 094 MOV R2, R5 ; Rd = Op2 N88AP_iBoot:4FF15AE8 094 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF15AEC 094 LDR R0, [SP,#0x94+var_64] ; Load from Memory N88AP_iBoot:4FF15AEE 094 LDR R3, [R0] ; Load from Memory N88AP_iBoot:4FF15AF0 094 CBZ R3, loc_4FF15B16 ; Compare and Branch on Zero N88AP_iBoot:4FF15AF2 094 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF15AF4 094 ADD R1, SP, #0x94+var_68 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15AF6 094 STR R3, [SP,#0x94+var_68] ; Store to Memory N88AP_iBoot:4FF15AF8 094 LDR R0, [R0] ; Load from Memory N88AP_iBoot:4FF15AFA 094 BL sub_4FF18500 ; Branch with Link N88AP_iBoot:4FF15AFE 094 CBNZ R0, loc_4FF15B46 ; Compare and Branch on Non-Zero N88AP_iBoot:4FF15B00 094 LDR R2, [SP,#0x94+var_68] ; Load from Memory N88AP_iBoot:4FF15B02 094 STR R0, [SP,#0x94+var_90] ; Store to Memory N88AP_iBoot:4FF15B04 094 STR R0, [SP,#0x94+var_8C] ; Store to Memory N88AP_iBoot:4FF15B06 094 STR R2, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF15B08 094 ADD.W R3, R5, #0x10 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15B0C 094 ADDS R0, #Decrypt ; argv1 N88AP_iBoot:4FF15B0E 094 ADD R1, SP, #0x94+var_54 ; argv2 N88AP_iBoot:4FF15B10 094 ADD R2, SP, #0x94+var_54 ; argv3 N88AP_iBoot:4FF15B12 094 BL N88AP__iBOOT__aes_crypto_cmd ; Branch with Link N88AP_iBoot:4FF15B16 N88AP_iBoot:4FF15B16 loc_4FF15B16 ; CODE XREF: n88ap__iBoot__blockdev+288�j N88AP_iBoot:4FF15B16 094 LDR R1, [SP,#0x94+var_74] ; Load from Memory N88AP_iBoot:4FF15B18 094 LDR R3, [SP,#0x94+var_60] ; Load from Memory N88AP_iBoot:4FF15B1A 094 ADD R2, SP, #0x94+var_44 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15B1C 094 STR R1, [SP,#0x94+var_94] ; Store to Memory N88AP_iBoot:4FF15B1E 094 LDR R1, [SP,#0x94+argv2] ; argv2 N88AP_iBoot:4FF15B20 094 TST.W R3, #0xF ; Set cond. codes on Op1 & Op2 N88AP_iBoot:4FF15B24 094 ITT NE ; If Then N88AP_iBoot:4FF15B26 094 BICNE.W R3, R3, #0xF ; Rd = Op1 & ~Op2 N88AP_iBoot:4FF15B2A 094 ADDNE R3, #0x10 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15B2C 094 STR R2, [SP,#0x94+var_90] ; Store to Memory N88AP_iBoot:4FF15B2E 094 MOVS R0, #0x11 ; argv1 N88AP_iBoot:4FF15B30 094 ADD R2, SP, #0x94+var_54 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15B32 094 STR R2, [SP,#0x94+var_8C] ; Store to Memory N88AP_iBoot:4FF15B34 094 MOV R2, R1 ; argv3 N88AP_iBoot:4FF15B36 094 BL N88AP__iBOOT__aes_crypto_cmd ; Branch with Link N88AP_iBoot:4FF15B3A 094 ADD R0, SP, #0x94+var_54 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15B3C 094 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF15B3E 094 MOVS R2, #0x30 ; '0' ; Rd = Op2 N88AP_iBoot:4FF15B40 094 BLX sub_4FF1ED54 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF15B44 094 B loc_4FF15B4C ; Branch N88AP_iBoot:4FF15B46 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15B46 N88AP_iBoot:4FF15B46 loc_4FF15B46 ; CODE XREF: n88ap__iBoot__blockdev+296�j N88AP_iBoot:4FF15B46 094 ADD.W R10, R10, #1 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15B4A 094 B loc_4FF15A7E ; Branch N88AP_iBoot:4FF15B4C ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15B4C N88AP_iBoot:4FF15B4C loc_4FF15B4C ; CODE XREF: n88ap__iBoot__blockdev+232�j N88AP_iBoot:4FF15B4C ; n88ap__iBoot__blockdev+2DC�j N88AP_iBoot:4FF15B4C 094 LDR R2, [SP,#0x94+var_60] ; Load from Memory N88AP_iBoot:4FF15B4E 094 MOV R0, R6 ; Rd = Op2 N88AP_iBoot:4FF15B50 094 LDR R1, [SP,#0x94+argv2] ; Load from Memory N88AP_iBoot:4FF15B52 094 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF15B56 094 LDR R3, [SP,#0x94+var_60] ; Load from Memory N88AP_iBoot:4FF15B58 094 LDR R2, [SP,#0x94+var_84] ; Load from Memory N88AP_iBoot:4FF15B5A 094 STR R3, [R2] ; Store to Memory N88AP_iBoot:4FF15B5C 094 B loc_4FF15B60 ; Branch N88AP_iBoot:4FF15B5E ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15B5E N88AP_iBoot:4FF15B5E loc_4FF15B5E ; CODE XREF: n88ap__iBoot__blockdev+23C�j N88AP_iBoot:4FF15B5E ; n88ap__iBoot__blockdev+258�j N88AP_iBoot:4FF15B5E 094 MOVS R4, #0x16 ; Rd = Op2 N88AP_iBoot:4FF15B60 N88AP_iBoot:4FF15B60 loc_4FF15B60 ; CODE XREF: n88ap__iBoot__blockdev+3C�j N88AP_iBoot:4FF15B60 ; n88ap__iBoot__blockdev+62�j N88AP_iBoot:4FF15B60 ; n88ap__iBoot__blockdev+90�j N88AP_iBoot:4FF15B60 ; n88ap__iBoot__blockdev+B4�j N88AP_iBoot:4FF15B60 ; n88ap__iBoot__blockdev+BE�j ... N88AP_iBoot:4FF15B60 094 LDR R3, [SP,#0x94+var_58] ; Load from Memory N88AP_iBoot:4FF15B62 094 CBZ R3, loc_4FF15B6A ; Compare and Branch on Zero N88AP_iBoot:4FF15B64 094 ADD R0, SP, #0x94+var_58 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15B66 094 BL sub_4FF15620 ; Branch with Link N88AP_iBoot:4FF15B6A N88AP_iBoot:4FF15B6A loc_4FF15B6A ; CODE XREF: n88ap__iBoot__blockdev+2FA�j N88AP_iBoot:4FF15B6A 094 CBZ R4, loc_4FF15B7E ; Compare and Branch on Zero N88AP_iBoot:4FF15B6C N88AP_iBoot:4FF15B6C loc_4FF15B6C ; CODE XREF: n88ap__iBoot__blockdev+70�j N88AP_iBoot:4FF15B6C 094 LDR R3, [SP,#0x94+var_84] ; Load from Memory N88AP_iBoot:4FF15B6E 094 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF15B70 094 MOV R0, R6 ; Rd = Op2 N88AP_iBoot:4FF15B72 094 STR.W R1, [R11] ; Store to Memory N88AP_iBoot:4FF15B76 094 MOV R2, R8 ; Rd = Op2 N88AP_iBoot:4FF15B78 094 STR R1, [R3] ; Store to Memory N88AP_iBoot:4FF15B7A 094 BLX sub_4FF1ED54 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF15B7E N88AP_iBoot:4FF15B7E loc_4FF15B7E ; CODE XREF: n88ap__iBoot__blockdev:loc_4FF15B6A�j N88AP_iBoot:4FF15B7E 094 LDR R1, =dword_4FF2A308 ; Load from Memory N88AP_iBoot:4FF15B80 094 LDR R2, [SP,#0x94+var_24] ; Load from Memory N88AP_iBoot:4FF15B82 094 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF15B84 094 LDR R3, [R1] ; Load from Memory N88AP_iBoot:4FF15B86 094 CMP R2, R3 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15B88 094 BEQ loc_4FF15B8E ; Branch N88AP_iBoot:4FF15B8A 094 BL N88AP__iBOOT____stack_chk_fail ; Branch with Link N88AP_iBoot:4FF15B8E ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15B8E N88AP_iBoot:4FF15B8E loc_4FF15B8E ; CODE XREF: n88ap__iBoot__blockdev+320�j N88AP_iBoot:4FF15B8E 094 SUB.W SP, R7, #0x18 ; Rd = Op1 - Op2 N88AP_iBoot:4FF15B92 094 POP.W {R8,R10,R11} ; Pop registers N88AP_iBoot:4FF15B96 088 POP {R4-R7,PC} ; Pop registers N88AP_iBoot:4FF15B96 ; End of function n88ap__iBoot__blockdev N88AP_iBoot:4FF15B96 N88AP_iBoot:4FF15B96 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15B98 ; int off_4FF15B98 N88AP_iBoot:4FF15B98 off_4FF15B98 DCD dword_4FF2A308 ; DATA XREF: n88ap__iBoot__blockdev+C�r N88AP_iBoot:4FF15B98 ; n88ap__iBoot__blockdev:loc_4FF15B7E�r N88AP_iBoot:4FF15B9C dword_4FF15B9C DCD 'Memz' ; DATA XREF: n88ap__iBoot__blockdev+1C�r N88AP_iBoot:4FF15BA0 ; int dword_4FF15BA0 N88AP_iBoot:4FF15BA0 dword_4FF15BA0 DCD 'img3' ; DATA XREF: n88ap__iBoot__blockdev+2A�r N88AP_iBoot:4FF15BA0 ; n88ap__iBoot__blockdev+96�r N88AP_iBoot:4FF15BA4 ; int off_4FF15BA4 N88AP_iBoot:4FF15BA4 off_4FF15BA4 DCD aLoadAddressNotSpecified_0 N88AP_iBoot:4FF15BA4 ; DATA XREF: n88ap__iBoot__blockdev+32�r N88AP_iBoot:4FF15BA4 ; "load address not specified\n" N88AP_iBoot:4FF15BA8 ; int off_4FF15BA8 N88AP_iBoot:4FF15BA8 off_4FF15BA8 DCD aBlockdevReadFailedWithD_0 N88AP_iBoot:4FF15BA8 ; DATA XREF: n88ap__iBoot__blockdev+5C�r N88AP_iBoot:4FF15BA8 ; "blockdev read failed with %d\n" N88AP_iBoot:4FF15BAC dword_4FF15BAC DCD 'Img3' ; DATA XREF: n88ap__iBoot__blockdev+66�r N88AP_iBoot:4FF15BB0 dword_4FF15BB0 DCD 'SDOM' ; DATA XREF: n88ap__iBoot__blockdev+E2�r N88AP_iBoot:4FF15BB4 dword_4FF15BB4 DCD 'PROD' ; DATA XREF: n88ap__iBoot__blockdev+106�r N88AP_iBoot:4FF15BB8 dword_4FF15BB8 DCD 'CHIP' ; DATA XREF: n88ap__iBoot__blockdev+12E�r N88AP_iBoot:4FF15BBC dword_4FF15BBC DCD 'TYPE' ; DATA XREF: n88ap__iBoot__blockdev+15A�r N88AP_iBoot:4FF15BC0 dword_4FF15BC0 DCD 'SEPO' ; DATA XREF: n88ap__iBoot__blockdev+17C�r N88AP_iBoot:4FF15BC4 dword_4FF15BC4 DCD 'BORD' ; DATA XREF: n88ap__iBoot__blockdev+196�r N88AP_iBoot:4FF15BC8 dword_4FF15BC8 DCD 'ECID' ; DATA XREF: n88ap__iBoot__blockdev+1C0�r N88AP_iBoot:4FF15BCC ; int off_4FF15BCC N88AP_iBoot:4FF15BCC off_4FF15BCC DCD aImageValidationFailedButUntrustedImagesAreP_0 N88AP_iBoot:4FF15BCC ; DATA XREF: n88ap__iBoot__blockdev+1F2�r N88AP_iBoot:4FF15BCC ; "image validation failed but untrusted i"... N88AP_iBoot:4FF15BD0 dword_4FF15BD0 DCD 'DATA' ; DATA XREF: n88ap__iBoot__blockdev+204�r N88AP_iBoot:4FF15BD4 dword_4FF15BD4 DCD 'KBAG' ; DATA XREF: n88ap__iBoot__blockdev+21C�r N88AP_iBoot:4FF15BD8