Image load

From The iPhone Wiki
Revision as of 10:40, 11 March 2010 by Dimo (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

iPhone 3GS 8920x from iBoot-636.66

Disassembly for image_load

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

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