The iPhone Wiki is no longer updated. Visit this article on The Apple Wiki for current information. |
Kernelcache loader (iBoot command)
iPhone 3GS 8920x from iBoot-636.66
(N.B - In iBoot iBoot-1219.62.8, from iOS 5.1b3 (the latest at the time of this writing) for k48AP (iPad), the kernelcache loader is at ROM:5FF120C8. Complete disassembly to follow later)
Disassembly for kernelcache Loader
N88AP_iBoot:4FF15E04 ; =============== S U B R O U T I N E ======================================= N88AP_iBoot:4FF15E04 N88AP_iBoot:4FF15E04 ; Attributes: bp-based frame N88AP_iBoot:4FF15E04 N88AP_iBoot:4FF15E04 ; int __fastcall LoadImage_kernelcache_img3(int memoery_pos, int memory_size) N88AP_iBoot:4FF15E04 LoadImage_kernelcache_img3 ; CODE XREF: sub_4FF0067C+C8�p N88AP_iBoot:4FF15E04 ; n88ap__iBoot__bootx_function+4E�p N88AP_iBoot:4FF15E04 N88AP_iBoot:4FF15E04 var_C4 = -0xC4 N88AP_iBoot:4FF15E04 param_R1 = -0xC0 N88AP_iBoot:4FF15E04 var_BC = -0xBC N88AP_iBoot:4FF15E04 var_B8 = -0xB8 N88AP_iBoot:4FF15E04 var_B4 = -0xB4 N88AP_iBoot:4FF15E04 var_B0 = -0xB0 N88AP_iBoot:4FF15E04 var_AC = -0xAC N88AP_iBoot:4FF15E04 var_A8 = -0xA8 N88AP_iBoot:4FF15E04 var_A4 = -0xA4 N88AP_iBoot:4FF15E04 var_A0 = -0xA0 N88AP_iBoot:4FF15E04 var_9C = -0x9C N88AP_iBoot:4FF15E04 var_98 = -0x98 N88AP_iBoot:4FF15E04 var_94 = -0x94 N88AP_iBoot:4FF15E04 var_90 = -0x90 N88AP_iBoot:4FF15E04 var_8C = -0x8C N88AP_iBoot:4FF15E04 var_88 = -0x88 N88AP_iBoot:4FF15E04 var_84 = -0x84 N88AP_iBoot:4FF15E04 var_7E = -0x7E N88AP_iBoot:4FF15E04 var_78 = -0x78 N88AP_iBoot:4FF15E04 var_74 = -0x74 N88AP_iBoot:4FF15E04 param_R2 = -0x70 N88AP_iBoot:4FF15E04 var_6C = -0x6C N88AP_iBoot:4FF15E04 param_R3 = -0x68 N88AP_iBoot:4FF15E04 var_64 = -0x64 N88AP_iBoot:4FF15E04 var_60 = -0x60 N88AP_iBoot:4FF15E04 var_5C = -0x5C N88AP_iBoot:4FF15E04 var_58 = -0x58 N88AP_iBoot:4FF15E04 var_54 = -0x54 N88AP_iBoot:4FF15E04 var_34 = -0x34 N88AP_iBoot:4FF15E04 var_24 = -0x24 N88AP_iBoot:4FF15E04 oldR4 = -0x14 N88AP_iBoot:4FF15E04 oldR5 = -0x10 N88AP_iBoot:4FF15E04 oldR6 = -0xC N88AP_iBoot:4FF15E04 oldR7 = -8 N88AP_iBoot:4FF15E04 oldLR = -4 N88AP_iBoot:4FF15E04 N88AP_iBoot:4FF15E04 000 PUSH {R4-R7,LR} ; Push registers N88AP_iBoot:4FF15E06 014 ADD R7, SP, #0xC ; Rd = Op1 + Op2 N88AP_iBoot:4FF15E08 014 PUSH.W {R8,R10,R11} ; Push registers N88AP_iBoot:4FF15E0C 020 SUB SP, SP, #0xA4 ; Rd = Op1 - Op2 N88AP_iBoot:4FF15E0E 0C4 LDR.W R5, =dword_4FF2A308 ; Load from Memory N88AP_iBoot:4FF15E12 0C4 MOV R8, R2 ; Rd = Op2 N88AP_iBoot:4FF15E14 0C4 MOVS R2, #0 ; Type N88AP_iBoot:4FF15E16 0C4 LDR R3, [R5] ; Load from Memory N88AP_iBoot:4FF15E18 0C4 STR R3, [SP,#0xC4+var_24] ; Store to Memory N88AP_iBoot:4FF15E1A 0C4 BL n88ap__iBoot__MEMZ_STRUCT_INIT ; Branch with Link N88AP_iBoot:4FF15E1E 0C4 CBNZ R0, loc_4FF15E30 ; Compare and Branch on Non-Zero N88AP_iBoot:4FF15E20 0C4 LDR.W R0, =aKernelcacheImageCorrupt ; "Kernelcache image corrupt\n" N88AP_iBoot:4FF15E24 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15E28 0C4 MOV.W R0, #0xFFFFFFFF ; Rd = Op2 N88AP_iBoot:4FF15E2C 0C4 B.W loc_4FF16BA8 ; Branch N88AP_iBoot:4FF15E30 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15E30 N88AP_iBoot:4FF15E30 loc_4FF15E30 ; CODE XREF: LoadImage_kernelcache_img3+1A�j N88AP_iBoot:4FF15E30 0C4 LDR R3, [R0,#4] ; param_R3 N88AP_iBoot:4FF15E32 0C4 CMP.W R3, #0xF00000 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15E36 0C4 BLS loc_4FF15E48 ; Branch N88AP_iBoot:4FF15E38 0C4 LDR.W R0, =aKernelcacheTooLarge ; "Kernelcache too large\n" N88AP_iBoot:4FF15E3C 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15E40 0C4 MOV R0, 0xFFFFFFFE ; mem_info N88AP_iBoot:4FF15E44 0C4 B.W loc_4FF16BA8 ; Branch N88AP_iBoot:4FF15E48 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15E48 N88AP_iBoot:4FF15E48 loc_4FF15E48 ; CODE XREF: LoadImage_kernelcache_img3+32�j N88AP_iBoot:4FF15E48 0C4 MOV.W R3, #0x43000000 ; Rd = Op2 N88AP_iBoot:4FF15E4C 0C4 LDR.W R1, ='krnl' ; TAG_TYPE N88AP_iBoot:4FF15E50 0C4 STR R3, [SP,#0xC4+var_58] ; Store to Memory N88AP_iBoot:4FF15E52 0C4 ADD R2, SP, #0xC4+var_58 ; unknown1 N88AP_iBoot:4FF15E54 0C4 MOV.W R3, #0xF00000 ; Rd = Op2 N88AP_iBoot:4FF15E58 0C4 STR R3, [SP,#0xC4+var_5C] ; Store to Memory N88AP_iBoot:4FF15E5A 0C4 ADD R3, SP, #0xC4+var_5C ; unknown2 N88AP_iBoot:4FF15E5C 0C4 BL n88ap__iBoot__image_load ; Branch with Link N88AP_iBoot:4FF15E60 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15E62 0C4 BGE loc_4FF15E74 ; Branch N88AP_iBoot:4FF15E64 0C4 LDR.W R0, =aKernelcacheImageNotValid ; "Kernelcache image not valid\n" N88AP_iBoot:4FF15E68 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15E6C 0C4 MOV R0, 0xFFFFFFFD N88AP_iBoot:4FF15E70 0C4 B.W loc_4FF16BA8 ; Branch N88AP_iBoot:4FF15E74 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15E74 N88AP_iBoot:4FF15E74 loc_4FF15E74 ; CODE XREF: LoadImage_kernelcache_img3+5E�j N88AP_iBoot:4FF15E74 0C4 LDR R0, [SP,#0xC4+var_58] ; Load from Memory N88AP_iBoot:4FF15E76 0C4 LDR R0, [R0] ; Load from Memory N88AP_iBoot:4FF15E78 0C4 BL sub_4FF1F408 ; Branch with Link N88AP_iBoot:4FF15E7C 0C4 LDR.W R3, ='comp' ; Load from Memory N88AP_iBoot:4FF15E80 0C4 CMP R0, R3 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15E82 0C4 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF15E84 0C4 IT NE ; If Then N88AP_iBoot:4FF15E86 0C4 MOVNE R0, 0xFFFFFFFC N88AP_iBoot:4FF15E8A 0C4 BNE.W loc_4FF16BA8 ; Branch N88AP_iBoot:4FF15E8E 0C4 B.W loc_4FF16B48 ; Branch N88AP_iBoot:4FF15E92 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15E92 N88AP_iBoot:4FF15E92 loc_4FF15E92 ; CODE XREF: LoadImage_kernelcache_img3+D56�j N88AP_iBoot:4FF15E92 0C4 LDR R0, [R6,#4] ; Load from Memory N88AP_iBoot:4FF15E94 0C4 BL sub_4FF1F408 ; Branch with Link N88AP_iBoot:4FF15E98 0C4 LDR.W R3, ='lzss' ; param_R3 N88AP_iBoot:4FF15E9C 0C4 CMP R0, R3 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15E9E 0C4 IT NE ; If Then N88AP_iBoot:4FF15EA0 0C4 LDRNE.W R0, =aUnknownKernelcacheCompressionType ; "unknown kernelcache compression type\n" N88AP_iBoot:4FF15EA4 0C4 BNE loc_4FF15F30 ; Branch N88AP_iBoot:4FF15EA6 0C4 ADD.W R11, R6, #0x180 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15EAA 0C4 MOV R1, R6 ; param_R1 N88AP_iBoot:4FF15EAC 0C4 LDR.W R0, =aLoadingKernelCacheAtX___ ; "Loading kernel cache at %#x..." N88AP_iBoot:4FF15EB0 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15EB4 0C4 MOV R1, R11 ; param_R1 N88AP_iBoot:4FF15EB6 0C4 LDR.W R0, =aDataStartsAtP ; "data starts at %p\n" N88AP_iBoot:4FF15EBA 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15EBE 0C4 LDR R0, [R6,#0x10] ; Load from Memory N88AP_iBoot:4FF15EC0 0C4 BL sub_4FF1F408 ; Branch with Link N88AP_iBoot:4FF15EC4 0C4 RSB.W R3, R6, #3 ; Rd = Op2 - Op1 N88AP_iBoot:4FF15EC8 0C4 ADD R3, R11 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15ECA 0C4 ADDS R3, R3, R0 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15ECC 0C4 STR R0, [SP,#0xC4+var_BC] ; Store to Memory N88AP_iBoot:4FF15ECE 0C4 BIC.W R3, R3, #3 ; Rd = Op1 & ~Op2 N88AP_iBoot:4FF15ED2 0C4 STR R3, [SP,#0xC4+param_R1] ; Store to Memory N88AP_iBoot:4FF15ED4 0C4 LDR R0, [R6,#0xC] ; Load from Memory N88AP_iBoot:4FF15ED6 0C4 BL sub_4FF1F408 ; Branch with Link N88AP_iBoot:4FF15EDA 0C4 LDR R2, [SP,#0xC4+param_R1] ; Load from Memory N88AP_iBoot:4FF15EDC 0C4 ADD.W R1, R2, R0 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15EE0 0C4 CMP.W R1, #0xF00000 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15EE4 0C4 MOV R10, R0 ; Rd = Op2 N88AP_iBoot:4FF15EE6 0C4 ITT HI ; If Then N88AP_iBoot:4FF15EE8 0C4 MOVHI.W R2, #0xF00000 ; Rd = Op2 N88AP_iBoot:4FF15EEC 0C4 LDRHI.W R0, =aUncompressedSizeTooLargeUMaxD ; "uncompressed size too large %u, max %d\n"... N88AP_iBoot:4FF15EF0 0C4 BHI loc_4FF15F12 ; Branch N88AP_iBoot:4FF15EF2 0C4 LDR R3, [SP,#0xC4+param_R1] ; Load from Memory N88AP_iBoot:4FF15EF4 0C4 MOV R2, R11 ; Rd = Op2 N88AP_iBoot:4FF15EF6 0C4 ADD.W R4, R3, R6 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15EFA 0C4 RSB.W R1, R3, #0xF00000 ; Rd = Op2 - Op1 N88AP_iBoot:4FF15EFE 0C4 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF15F00 0C4 LDR R3, [SP,#0xC4+var_BC] ; Load from Memory N88AP_iBoot:4FF15F02 0C4 BL sub_4FF1D5DC ; Branch with Link N88AP_iBoot:4FF15F06 0C4 CMP R10, R0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15F08 0C4 MOV R1, R0 ; param_R1 N88AP_iBoot:4FF15F0A 0C4 BEQ loc_4FF15F18 ; Branch N88AP_iBoot:4FF15F0C 0C4 LDR.W R0, =aSizeMismatchFromLzssDShouldBeD ; "size mismatch from lzss %d, should be %"... N88AP_iBoot:4FF15F10 0C4 MOV R2, R10 ; param_R2 N88AP_iBoot:4FF15F12 N88AP_iBoot:4FF15F12 loc_4FF15F12 ; CODE XREF: LoadImage_kernelcache_img3+EC�j N88AP_iBoot:4FF15F12 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15F16 0C4 B loc_4FF15F42 ; Branch N88AP_iBoot:4FF15F18 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15F18 N88AP_iBoot:4FF15F18 loc_4FF15F18 ; CODE XREF: LoadImage_kernelcache_img3+106�j N88AP_iBoot:4FF15F18 0C4 LDR R0, [R6,#8] ; Load from Memory N88AP_iBoot:4FF15F1A 0C4 BL sub_4FF1F408 ; Branch with Link N88AP_iBoot:4FF15F1E 0C4 MOV R1, R10 ; Rd = Op2 N88AP_iBoot:4FF15F20 0C4 MOV R11, R0 ; Rd = Op2 N88AP_iBoot:4FF15F22 0C4 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF15F24 0C4 BL sub_4FF1CB3C ; Branch with Link N88AP_iBoot:4FF15F28 0C4 CMP R11, R0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15F2A 0C4 BEQ loc_4FF15F36 ; Branch N88AP_iBoot:4FF15F2C 0C4 LDR.W R0, =aAdlerMismatch ; "adler mismatch\n" N88AP_iBoot:4FF15F30 N88AP_iBoot:4FF15F30 loc_4FF15F30 ; CODE XREF: LoadImage_kernelcache_img3+A0�j N88AP_iBoot:4FF15F30 ; LoadImage_kernelcache_img3+D52�j N88AP_iBoot:4FF15F30 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15F34 0C4 B loc_4FF15F42 ; Branch N88AP_iBoot:4FF15F36 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15F36 N88AP_iBoot:4FF15F36 loc_4FF15F36 ; CODE XREF: LoadImage_kernelcache_img3+126�j N88AP_iBoot:4FF15F36 0C4 LDR.W R0, =aDone ; "done\n" N88AP_iBoot:4FF15F3A 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15F3E 0C4 STR R4, [SP,#0xC4+var_58] ; Store to Memory N88AP_iBoot:4FF15F40 0C4 CBNZ R4, loc_4FF15F4A ; Compare and Branch on Non-Zero N88AP_iBoot:4FF15F42 N88AP_iBoot:4FF15F42 loc_4FF15F42 ; CODE XREF: LoadImage_kernelcache_img3+112�j N88AP_iBoot:4FF15F42 ; LoadImage_kernelcache_img3+130�j N88AP_iBoot:4FF15F42 0C4 MOV R0, 0xFFFFFFFB N88AP_iBoot:4FF15F46 0C4 B.W loc_4FF16BA8 ; Branch N88AP_iBoot:4FF15F4A ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15F4A N88AP_iBoot:4FF15F4A loc_4FF15F4A ; CODE XREF: LoadImage_kernelcache_img3+13C�j N88AP_iBoot:4FF15F4A 0C4 LDR R1, [SP,#0xC4+param_R1] ; param_R1 N88AP_iBoot:4FF15F4C 0C4 LDR.W R3, =0xFEEDFACE ; param_R3 N88AP_iBoot:4FF15F50 0C4 LDR R0, [R1,R6] ; Load from Memory N88AP_iBoot:4FF15F52 0C4 CMP R0, R3 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15F54 0C4 IT NE ; If Then N88AP_iBoot:4FF15F56 0C4 MOVNE R0, 0xFFFFFFFA N88AP_iBoot:4FF15F5A 0C4 BNE.W loc_4FF16BA8 ; Branch N88AP_iBoot:4FF15F5E 0C4 B.W loc_4FF16B5E ; Branch N88AP_iBoot:4FF15F62 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15F62 N88AP_iBoot:4FF15F62 loc_4FF15F62 ; CODE XREF: LoadImage_kernelcache_img3+D9A�j N88AP_iBoot:4FF15F62 0C4 LDR.W R0, =aLoad_macho_imageFailedToLoadDeviceTree ; "load_macho_image: failed to load device"... N88AP_iBoot:4FF15F66 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF15F6A 0C4 B.W loc_4FF16B34 ; Branch N88AP_iBoot:4FF15F6E ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15F6E N88AP_iBoot:4FF15F6E loc_4FF15F6E ; CODE XREF: LoadImage_kernelcache_img3+D96�j N88AP_iBoot:4FF15F6E 0C4 LDR.W R2, =dword_4FF2CD04 ; Load from Memory N88AP_iBoot:4FF15F72 0C4 ADD.W R10, R6, #0x1C ; Rd = Op1 + Op2 N88AP_iBoot:4FF15F76 0C4 LDR R0, [R2] ; Load from Memory N88AP_iBoot:4FF15F78 0C4 BL sub_4FF138BC ; Branch with Link N88AP_iBoot:4FF15F7C 0C4 LDR.W R3, =dword_4FF2CD10 ; Load from Memory N88AP_iBoot:4FF15F80 0C4 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF15F82 0C4 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF15F84 0C4 STR R6, [R3] ; Store to Memory N88AP_iBoot:4FF15F86 0C4 LDR R6, [R6,#0x10] ; Load from Memory N88AP_iBoot:4FF15F88 0C4 STR R1, [SP,#0xC4+var_B8] ; Store to Memory N88AP_iBoot:4FF15F8A 0C4 STR R6, [SP,#0xC4+var_B0] ; Store to Memory N88AP_iBoot:4FF15F8C 0C4 B loc_4FF160AC ; Branch N88AP_iBoot:4FF15F8E ; --------------------------------------------------------------------------- N88AP_iBoot:4FF15F8E N88AP_iBoot:4FF15F8E loc_4FF15F8E ; CODE XREF: LoadImage_kernelcache_img3+2AE�j N88AP_iBoot:4FF15F8E 0C4 LDR.W R2, [R10,#4] ; Load from Memory N88AP_iBoot:4FF15F92 0C4 STR R2, [SP,#0xC4+var_B4] ; Store to Memory N88AP_iBoot:4FF15F94 0C4 LDR.W R3, [R10] ; Load from Memory N88AP_iBoot:4FF15F98 0C4 CMP R3, #2 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15F9A 0C4 STR R3, [SP,#0xC4+var_C4] ; Store to Memory N88AP_iBoot:4FF15F9C 0C4 BEQ.W loc_4FF16BA2 ; Branch N88AP_iBoot:4FF15FA0 0C4 CMP R3, #5 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15FA2 0C4 BEQ loc_4FF1607C ; Branch N88AP_iBoot:4FF15FA4 0C4 CMP R3, #1 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15FA6 0C4 BNE loc_4FF1609C ; Branch N88AP_iBoot:4FF15FA8 0C4 LDR.W R2, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF15FAC 0C4 LDR.W R3, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF15FB0 0C4 LDR.W R1, [R10,#0x18] ; Load from Memory N88AP_iBoot:4FF15FB4 0C4 LDR R2, [R2,#4] ; Load from Memory N88AP_iBoot:4FF15FB6 0C4 LDR R3, [R3,#8] ; Load from Memory N88AP_iBoot:4FF15FB8 0C4 STR R1, [SP,#0xC4+var_A4] ; Store to Memory N88AP_iBoot:4FF15FBA 0C4 LDR.W R11, [R10,#0x1C] ; Load from Memory N88AP_iBoot:4FF15FBE 0C4 STR R2, [SP,#0xC4+var_AC] ; Store to Memory N88AP_iBoot:4FF15FC0 0C4 LDR.W R2, =dword_4FF2CD10 ; Load from Memory N88AP_iBoot:4FF15FC4 0C4 STR R3, [SP,#0xC4+var_A8] ; Store to Memory N88AP_iBoot:4FF15FC6 0C4 LDR.W R1, [R10,#0x20] ; Load from Memory N88AP_iBoot:4FF15FCA 0C4 LDR R2, [R2] ; Load from Memory N88AP_iBoot:4FF15FCC 0C4 ADD.W R4, R10, #8 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15FD0 0C4 STR R1, [SP,#0xC4+var_98] ; Store to Memory N88AP_iBoot:4FF15FD2 0C4 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF15FD4 0C4 LDR.W R1, =a__pagezero ; "__PAGEZERO" N88AP_iBoot:4FF15FD8 0C4 STR R2, [SP,#0xC4+var_9C] ; Store to Memory N88AP_iBoot:4FF15FDA 0C4 LDR.W R6, [R10,#0x24] ; Load from Memory N88AP_iBoot:4FF15FDE 0C4 BL sub_4FF1ECA0 ; Branch with Link N88AP_iBoot:4FF15FE2 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF15FE4 0C4 BEQ.W loc_4FF16BA2 ; Branch N88AP_iBoot:4FF15FE8 0C4 LDR R3, [SP,#0xC4+var_A8] ; Load from Memory N88AP_iBoot:4FF15FEA 0C4 LDR R1, [SP,#0xC4+var_A4] ; Load from Memory N88AP_iBoot:4FF15FEC 0C4 LDR R2, [SP,#0xC4+var_AC] ; Load from Memory N88AP_iBoot:4FF15FEE 0C4 ADD.W R0, R3, R1 ; Rd = Op1 + Op2 N88AP_iBoot:4FF15FF2 0C4 SUBS R0, R0, R2 ; Rd = Op1 - Op2 N88AP_iBoot:4FF15FF4 0C4 MOVS R1, #0x20 ; ' ' ; param_R3 N88AP_iBoot:4FF15FF6 0C4 STR R0, [SP,#0xC4+var_A0] ; Store to Memory N88AP_iBoot:4FF15FF8 0C4 LDR.W R2, =aKernelS ; "Kernel-%s" N88AP_iBoot:4FF15FFC 0C4 ADD R0, SP, #0xC4+var_54 ; param_R2 N88AP_iBoot:4FF15FFE 0C4 MOV R3, R4 ; Rd = Op2 N88AP_iBoot:4FF16000 0C4 BL sub_4FF1EC48 ; Branch with Link N88AP_iBoot:4FF16004 0C4 ADD R0, SP, #0xC4+var_54 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16006 0C4 LDR R1, [SP,#0xC4+var_A0] ; Load from Memory N88AP_iBoot:4FF16008 0C4 MOV R2, R11 ; Rd = Op2 N88AP_iBoot:4FF1600A 0C4 BL N88AP__iBoot__AllocateMemoryRange ; Branch with Link N88AP_iBoot:4FF1600E 0C4 CMP.W R11, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16012 0C4 BEQ loc_4FF16028 ; Branch N88AP_iBoot:4FF16014 0C4 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF16016 0C4 LDR.W R1, =a__prelink ; "__PRELINK" N88AP_iBoot:4FF1601A 0C4 BL sub_4FF1ECA0 ; Branch with Link N88AP_iBoot:4FF1601E 0C4 CBNZ R0, loc_4FF16028 ; Compare and Branch on Non-Zero N88AP_iBoot:4FF16020 0C4 LDR.W R3, =dword_4FF2CD14 ; Load from Memory N88AP_iBoot:4FF16024 0C4 LDR R1, [SP,#0xC4+var_C4] ; Load from Memory N88AP_iBoot:4FF16026 0C4 STR R1, [R3] ; Store to Memory N88AP_iBoot:4FF16028 N88AP_iBoot:4FF16028 loc_4FF16028 ; CODE XREF: LoadImage_kernelcache_img3+20E�j N88AP_iBoot:4FF16028 ; LoadImage_kernelcache_img3+21A�j N88AP_iBoot:4FF16028 0C4 CBZ R6, loc_4FF1603A ; Compare and Branch on Zero N88AP_iBoot:4FF1602A 0C4 LDR R2, [SP,#0xC4+var_9C] ; Load from Memory N88AP_iBoot:4FF1602C 0C4 LDR R3, [SP,#0xC4+var_98] ; Load from Memory N88AP_iBoot:4FF1602E 0C4 LDR R0, [SP,#0xC4+var_A0] ; Load from Memory N88AP_iBoot:4FF16030 0C4 ADD.W R1, R2, R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16034 0C4 MOV R2, R6 ; Rd = Op2 N88AP_iBoot:4FF16036 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF1603A N88AP_iBoot:4FF1603A loc_4FF1603A ; CODE XREF: LoadImage_kernelcache_img3:loc_4FF16028�j N88AP_iBoot:4FF1603A 0C4 CMP R11, R6 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF1603C 0C4 BLE loc_4FF1604E ; Branch N88AP_iBoot:4FF1603E 0C4 LDR R1, [SP,#0xC4+var_A0] ; Load from Memory N88AP_iBoot:4FF16040 0C4 RSB.W R2, R6, R11 ; Rd = Op2 - Op1 N88AP_iBoot:4FF16044 0C4 ADD.W R0, R1, R6 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16048 0C4 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF1604A 0C4 BLX sub_4FF1ED54 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF1604E N88AP_iBoot:4FF1604E loc_4FF1604E ; CODE XREF: LoadImage_kernelcache_img3+238�j N88AP_iBoot:4FF1604E 0C4 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF16050 0C4 MOVS R0, #1 ; Rd = Op2 N88AP_iBoot:4FF16052 0C4 MOV R2, R1 ; Rd = Op2 N88AP_iBoot:4FF16054 0C4 BL sub_4FF1E344 ; Branch with Link N88AP_iBoot:4FF16058 0C4 LDR R2, [SP,#0xC4+var_A4] ; Load from Memory N88AP_iBoot:4FF1605A 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF1605C 0C4 ADD.W R4, R11, R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16060 0C4 BL sub_4FF15CC8 ; Branch with Link N88AP_iBoot:4FF16064 0C4 CMP R4, R0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16066 0C4 BLS.W loc_4FF16BA2 ; Branch N88AP_iBoot:4FF1606A 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF1606C 0C4 BL sub_4FF15CC8 ; Branch with Link N88AP_iBoot:4FF16070 0C4 RSB.W R0, R0, R4 ; Rd = Op2 - Op1 N88AP_iBoot:4FF16074 0C4 BL sub_4FF15CC8 ; Branch with Link N88AP_iBoot:4FF16078 0C4 B.W loc_4FF16BA2 ; Branch N88AP_iBoot:4FF1607C ; --------------------------------------------------------------------------- N88AP_iBoot:4FF1607C N88AP_iBoot:4FF1607C loc_4FF1607C ; CODE XREF: LoadImage_kernelcache_img3+19E�j N88AP_iBoot:4FF1607C 0C4 LDR.W R3, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF16080 0C4 LDR.W R1, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF16084 0C4 LDR R2, [R3,#8] ; Load from Memory N88AP_iBoot:4FF16086 0C4 LDR.W R3, [R10,#0x4C] ; Load from Memory N88AP_iBoot:4FF1608A 0C4 ADD R3, R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1608C 0C4 LDR R2, [R1,#4] ; Load from Memory N88AP_iBoot:4FF1608E 0C4 RSB.W R2, R2, R3 ; Rd = Op2 - Op1 N88AP_iBoot:4FF16092 0C4 LDR.W R3, =dword_4FF2CBC8 ; Load from Memory N88AP_iBoot:4FF16096 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16098 0C4 B.W loc_4FF16BA2 ; Branch N88AP_iBoot:4FF1609C ; --------------------------------------------------------------------------- N88AP_iBoot:4FF1609C N88AP_iBoot:4FF1609C loc_4FF1609C ; CODE XREF: LoadImage_kernelcache_img3+1A2�j N88AP_iBoot:4FF1609C 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF1609E 0C4 BNE.W loc_4FF16B34 ; Branch N88AP_iBoot:4FF160A2 N88AP_iBoot:4FF160A2 loc_4FF160A2 ; CODE XREF: LoadImage_kernelcache_img3+DA0�j N88AP_iBoot:4FF160A2 0C4 LDR R2, [SP,#0xC4+var_B4] ; Load from Memory N88AP_iBoot:4FF160A4 0C4 LDR R3, [SP,#0xC4+var_B8] ; Load from Memory N88AP_iBoot:4FF160A6 0C4 ADD R10, R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF160A8 0C4 ADDS R3, #1 ; Rd = Op1 + Op2 N88AP_iBoot:4FF160AA 0C4 STR R3, [SP,#0xC4+var_B8] ; Store to Memory N88AP_iBoot:4FF160AC N88AP_iBoot:4FF160AC loc_4FF160AC ; CODE XREF: LoadImage_kernelcache_img3+188�j N88AP_iBoot:4FF160AC 0C4 LDR R1, [SP,#0xC4+var_B8] ; Load from Memory N88AP_iBoot:4FF160AE 0C4 LDR R2, [SP,#0xC4+var_B0] ; Load from Memory N88AP_iBoot:4FF160B0 0C4 CMP R1, R2 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF160B2 0C4 BLT.W loc_4FF15F8E ; Branch N88AP_iBoot:4FF160B6 0C4 LDR.W R3, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF160BA 0C4 LDR.W R10, =dword_4FF2A03C ; Load from Memory N88AP_iBoot:4FF160BE 0C4 MOVS R6, #1 ; Rd = Op2 N88AP_iBoot:4FF160C0 0C4 LDR.W R2, =dword_4FF214E8 ; Load from Memory N88AP_iBoot:4FF160C4 0C4 LDR.W R1, [R10] ; Load from Memory N88AP_iBoot:4FF160C8 0C4 STR R6, [R3,#0x18] ; Store to Memory N88AP_iBoot:4FF160CA 0C4 LDR.W R3, =aRdMd0NandEnableReformat1Progress ; "rd=md0 nand-enable-reformat=1 -progress"... N88AP_iBoot:4FF160CE 0C4 LDR.W R0, ='Teth' ; Load from Memory N88AP_iBoot:4FF160D2 0C4 CMP R1, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF160D4 0C4 ITE NE ; If Then N88AP_iBoot:4FF160D6 0C4 MOVNE R4, R3 ; Rd = Op2 N88AP_iBoot:4FF160D8 0C4 MOVEQ R4, R2 ; Rd = Op2 N88AP_iBoot:4FF160DA 0C4 MOVS R2, #0x10 ; Rd = Op2 N88AP_iBoot:4FF160DC 0C4 ADD R1, SP, #0xC4+var_34 ; Rd = Op1 + Op2 N88AP_iBoot:4FF160DE 0C4 BL sub_4FF17C24 ; Branch with Link N88AP_iBoot:4FF160E2 0C4 CMP.W R0, #0xFFFFFFFF ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF160E6 0C4 BEQ loc_4FF160FA ; Branch N88AP_iBoot:4FF160E8 0C4 LDRB.W R3, [SP,#0xC4+var_34] ; Load from Memory N88AP_iBoot:4FF160EC 0C4 CBZ R3, loc_4FF160FA ; Compare and Branch on Zero N88AP_iBoot:4FF160EE 0C4 LDR.W R0, =aIsTethered ; "is-tethered" N88AP_iBoot:4FF160F2 0C4 MOV R1, R6 ; Rd = Op2 N88AP_iBoot:4FF160F4 0C4 MOVS R2, #0 ; Rd = Op2 N88AP_iBoot:4FF160F6 0C4 BL sub_4FF1D084 ; Branch with Link N88AP_iBoot:4FF160FA N88AP_iBoot:4FF160FA loc_4FF160FA ; CODE XREF: LoadImage_kernelcache_img3+2E2�j N88AP_iBoot:4FF160FA ; LoadImage_kernelcache_img3+2E8�j N88AP_iBoot:4FF160FA 0C4 LDR.W R0, =aIsTethered ; "is-tethered" N88AP_iBoot:4FF160FE 0C4 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF16100 0C4 BL sub_4FF1CD88 ; Branch with Link N88AP_iBoot:4FF16104 0C4 CBZ R0, loc_4FF16114 ; Compare and Branch on Zero N88AP_iBoot:4FF16106 0C4 LDR.W R0, =n88ap__iBOOT__gBootArgs.commandLine ; Load from Memory N88AP_iBoot:4FF1610A 0C4 LDR.W R2, =aSForceUsbPower1 ; "%s force-usb-power=1 " N88AP_iBoot:4FF1610E 0C4 MOV.W R1, #0x100 ; Rd = Op2 N88AP_iBoot:4FF16112 0C4 B loc_4FF16120 ; Branch N88AP_iBoot:4FF16114 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16114 N88AP_iBoot:4FF16114 loc_4FF16114 ; CODE XREF: LoadImage_kernelcache_img3+300�j N88AP_iBoot:4FF16114 0C4 LDR.W R0, =n88ap__iBOOT__gBootArgs.commandLine ; param_R2 N88AP_iBoot:4FF16118 0C4 LDR.W R2, =aS_2 ; "%s " N88AP_iBoot:4FF1611C 0C4 MOV.W R1, #0x100 ; param_R3 N88AP_iBoot:4FF16120 N88AP_iBoot:4FF16120 loc_4FF16120 ; CODE XREF: LoadImage_kernelcache_img3+30E�j N88AP_iBoot:4FF16120 0C4 MOV R3, R4 ; Rd = Op2 N88AP_iBoot:4FF16122 0C4 BL sub_4FF1EC48 ; Branch with Link N88AP_iBoot:4FF16126 0C4 LDR.W R1, =n88ap__iBOOT__gBootArgs.commandLine ; param_R1 N88AP_iBoot:4FF1612A 0C4 LDR.W R0, =aGbootargs_commandlineS ; "gBootArgs.commandLine = [%s]\n" N88AP_iBoot:4FF1612E 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF16132 0C4 MOVS R2, #0 ; Rd = Op2 N88AP_iBoot:4FF16134 0C4 LDR.W R0, =n88ap__iBOOT__gBootArgs.commandLine ; Load from Memory N88AP_iBoot:4FF16138 0C4 LDR.W R1, =aS_3 ; "-s" N88AP_iBoot:4FF1613C 0C4 BL sub_4FF15CE8 ; Branch with Link N88AP_iBoot:4FF16140 0C4 MOV R2, R0 ; Rd = Op2 N88AP_iBoot:4FF16142 0C4 CBNZ R0, loc_4FF16152 ; Compare and Branch on Non-Zero N88AP_iBoot:4FF16144 0C4 LDR.W R0, =n88ap__iBOOT__gBootArgs.commandLine ; Load from Memory N88AP_iBoot:4FF16148 0C4 LDR.W R1, =aV_1 ; "-v" N88AP_iBoot:4FF1614C 0C4 BL sub_4FF15CE8 ; Branch with Link N88AP_iBoot:4FF16150 0C4 CBZ R0, loc_4FF1615A ; Compare and Branch on Zero N88AP_iBoot:4FF16152 N88AP_iBoot:4FF16152 loc_4FF16152 ; CODE XREF: LoadImage_kernelcache_img3+33E�j N88AP_iBoot:4FF16152 0C4 LDR.W R1, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF16156 0C4 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF16158 0C4 STR R3, [R1,#0x18] ; Store to Memory N88AP_iBoot:4FF1615A N88AP_iBoot:4FF1615A loc_4FF1615A ; CODE XREF: LoadImage_kernelcache_img3+34C�j N88AP_iBoot:4FF1615A 0C4 LDR.W R0, =n88ap__iBOOT__gBootArgs.commandLine ; Load from Memory N88AP_iBoot:4FF1615E 0C4 LDR.W R1, =aDebug ; "debug=" N88AP_iBoot:4FF16162 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF16164 0C4 BL sub_4FF15CE8 ; Branch with Link N88AP_iBoot:4FF16168 0C4 CBZ R0, loc_4FF1616E ; Compare and Branch on Zero N88AP_iBoot:4FF1616A 0C4 BL sub_4FF19FD4 ; Branch with Link N88AP_iBoot:4FF1616E N88AP_iBoot:4FF1616E loc_4FF1616E ; CODE XREF: LoadImage_kernelcache_img3+364�j N88AP_iBoot:4FF1616E 0C4 LDR.W R0, =n88ap__iBOOT__gBootArgs.commandLine ; Load from Memory N88AP_iBoot:4FF16172 0C4 LDR.W R1, =aForceUsbPower1 ; "force-usb-power=1" N88AP_iBoot:4FF16176 0C4 MOVS R2, #0 ; Rd = Op2 N88AP_iBoot:4FF16178 0C4 BL sub_4FF15CE8 ; Branch with Link N88AP_iBoot:4FF1617C 0C4 CBZ R0, loc_4FF16186 ; Compare and Branch on Zero N88AP_iBoot:4FF1617E 0C4 LDR.W R3, =dword_4FF2A148 ; Load from Memory N88AP_iBoot:4FF16182 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF16184 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16186 N88AP_iBoot:4FF16186 loc_4FF16186 ; CODE XREF: LoadImage_kernelcache_img3+378�j N88AP_iBoot:4FF16186 0C4 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF16188 0C4 MOVS R2, #0x14 ; Rd = Op2 N88AP_iBoot:4FF1618A 0C4 ADD R0, SP, #0xC4+var_94 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1618C 0C4 BLX sub_4FF1ED54 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF16190 0C4 ADD R0, SP, #0xC4+var_94 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16192 0C4 BL sub_4FF17200 ; Branch with Link N88AP_iBoot:4FF16196 0C4 LDR.W R6, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF1619A 0C4 LDR R3, [SP,#0xC4+var_88] ; Load from Memory N88AP_iBoot:4FF1619C 0C4 LDR.W R2, =dword_4FF2CD0C ; Load from Memory N88AP_iBoot:4FF161A0 0C4 MOV.W R11, #0 ; Rd = Op2 N88AP_iBoot:4FF161A4 0C4 STR R3, [R6,#0x1C] ; Store to Memory N88AP_iBoot:4FF161A6 0C4 LDR R3, [SP,#0xC4+var_90] ; Load from Memory N88AP_iBoot:4FF161A8 0C4 MOV R1, R11 ; Rd = Op2 N88AP_iBoot:4FF161AA 0C4 STR.W R11, [R2] ; Store to Memory N88AP_iBoot:4FF161AE 0C4 STR R3, [R6,#0x20] ; Store to Memory N88AP_iBoot:4FF161B0 0C4 LDR R3, [SP,#0xC4+var_8C] ; Load from Memory N88AP_iBoot:4FF161B2 0C4 LDR.W R0, =aVramSize ; "vram-size" N88AP_iBoot:4FF161B6 0C4 STR R3, [R6,#0x24] ; Store to Memory N88AP_iBoot:4FF161B8 0C4 LDR R3, [SP,#0xC4+var_84] ; Load from Memory N88AP_iBoot:4FF161BA 0C4 STR R3, [R6,#0x28] ; Store to Memory N88AP_iBoot:4FF161BC 0C4 LDR R3, [SP,#0xC4+var_94] ; Load from Memory N88AP_iBoot:4FF161BE 0C4 STR R3, [R6,#0x14] ; Store to Memory N88AP_iBoot:4FF161C0 0C4 BL sub_4FF1CD88 ; Branch with Link N88AP_iBoot:4FF161C4 0C4 LDR.W R3, =dword_4FF2CD0C ; Load from Memory N88AP_iBoot:4FF161C8 0C4 LDR R2, [R6,#0xC] ; Load from Memory N88AP_iBoot:4FF161CA 0C4 CMP.W R0, #0x300000 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF161CE 0C4 STR R0, [R3] ; Store to Memory N88AP_iBoot:4FF161D0 0C4 ITTT CC ; If Then N88AP_iBoot:4FF161D2 0C4 LDRCC.W R1, =dword_4FF2CD0C ; Load from Memory N88AP_iBoot:4FF161D6 0C4 MOVCC.W R3, #0x300000 ; Rd = Op2 N88AP_iBoot:4FF161DA 0C4 STRCC R3, [R1] ; Store to Memory N88AP_iBoot:4FF161DC 0C4 LDR.W R1, =dword_4FF2CD0C ; Load from Memory N88AP_iBoot:4FF161E0 0C4 LDR R3, [R1] ; Load from Memory N88AP_iBoot:4FF161E2 0C4 RSB.W R3, R3, R2 ; Rd = Op2 - Op1 N88AP_iBoot:4FF161E6 0C4 LDR.W R2, =dword_4FF2CD08 ; Load from Memory N88AP_iBoot:4FF161EA 0C4 STR R3, [R6,#0xC] ; Store to Memory N88AP_iBoot:4FF161EC 0C4 LDR R0, [R2] ; Load from Memory N88AP_iBoot:4FF161EE 0C4 STR R0, [R6,#0x34] ; Store to Memory N88AP_iBoot:4FF161F0 0C4 BL sub_4FF15CC8 ; Branch with Link N88AP_iBoot:4FF161F4 0C4 LDR R2, [R6,#4] ; Load from Memory N88AP_iBoot:4FF161F6 0C4 MOV R3, R0 ; Rd = Op2 N88AP_iBoot:4FF161F8 0C4 STR R0, [R6,#0x30] ; Store to Memory N88AP_iBoot:4FF161FA 0C4 LDR R0, [R6,#8] ; Load from Memory N88AP_iBoot:4FF161FC 0C4 SUBS R0, R0, R2 ; Rd = Op1 - Op2 N88AP_iBoot:4FF161FE 0C4 ADDS R0, R0, R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16200 0C4 LDR.W R3, =dword_4FF2CD04 ; Load from Memory N88AP_iBoot:4FF16204 0C4 LDR R1, [R3] ; Load from Memory N88AP_iBoot:4FF16206 0C4 LDR.W R3, =dword_4FF2CD08 ; Load from Memory N88AP_iBoot:4FF1620A 0C4 LDR R2, [R3] ; Load from Memory N88AP_iBoot:4FF1620C 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF16210 0C4 LDR R3, [R6,#4] ; Load from Memory N88AP_iBoot:4FF16212 0C4 LDR R0, [R6,#8] ; Load from Memory N88AP_iBoot:4FF16214 0C4 LDR.W R1, =dword_4FF2CD04 ; Load from Memory N88AP_iBoot:4FF16218 0C4 SUBS R0, R0, R3 ; Rd = Op1 - Op2 N88AP_iBoot:4FF1621A 0C4 LDR R3, [R6,#0x30] ; Load from Memory N88AP_iBoot:4FF1621C 0C4 ADDS R0, R0, R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1621E 0C4 STR R0, [R1] ; Store to Memory N88AP_iBoot:4FF16220 0C4 BL sub_4FF138BC ; Branch with Link N88AP_iBoot:4FF16224 0C4 LDR.W R3, =dword_4FF2CD08 ; Load from Memory N88AP_iBoot:4FF16228 0C4 LDR.W R2, =dword_4FF2CD04 ; Load from Memory N88AP_iBoot:4FF1622C 0C4 LDR.W R0, =aDevicetree ; "DeviceTree" N88AP_iBoot:4FF16230 0C4 LDR R1, [R2] ; Load from Memory N88AP_iBoot:4FF16232 0C4 LDR R2, [R3] ; Load from Memory N88AP_iBoot:4FF16234 0C4 BL N88AP__iBoot__AllocateMemoryRange ; Branch with Link N88AP_iBoot:4FF16238 0C4 LDR.W R3, [R10] ; Load from Memory N88AP_iBoot:4FF1623C 0C4 CBZ R3, loc_4FF16270 ; Compare and Branch on Zero N88AP_iBoot:4FF1623E 0C4 LDR.W R10, =dword_4FF2A040 ; Load from Memory N88AP_iBoot:4FF16242 0C4 LDR.W R0, [R10] ; Load from Memory N88AP_iBoot:4FF16246 0C4 BL sub_4FF15CC8 ; Branch with Link N88AP_iBoot:4FF1624A 0C4 LDR R1, [R6,#8] ; Load from Memory N88AP_iBoot:4FF1624C 0C4 LDR R3, [R6,#4] ; Load from Memory N88AP_iBoot:4FF1624E 0C4 LDR.W R2, [R10] ; Load from Memory N88AP_iBoot:4FF16252 0C4 SUBS R1, R1, R3 ; Rd = Op1 - Op2 N88AP_iBoot:4FF16254 0C4 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF16256 0C4 LDR.W R0, =dword_4FF2A03C ; Load from Memory N88AP_iBoot:4FF1625A 0C4 ADDS R1, R1, R4 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1625C 0C4 LDR R0, [R0] ; Load from Memory N88AP_iBoot:4FF1625E 0C4 BLX sub_4FF1EE64 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF16262 0C4 LDR.W R2, [R10] ; Load from Memory N88AP_iBoot:4FF16266 0C4 LDR.W R0, =aRamdisk ; "RAMDisk" N88AP_iBoot:4FF1626A 0C4 MOV R1, R4 ; Rd = Op2 N88AP_iBoot:4FF1626C 0C4 BL N88AP__iBoot__AllocateMemoryRange ; Branch with Link N88AP_iBoot:4FF16270 N88AP_iBoot:4FF16270 loc_4FF16270 ; CODE XREF: LoadImage_kernelcache_img3+438�j N88AP_iBoot:4FF16270 0C4 MOV R0, R11 ; Rd = Op2 N88AP_iBoot:4FF16272 0C4 LDR.W R1, =dword_4FF214E8 ; Load from Memory N88AP_iBoot:4FF16276 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16278 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF1627C 0C4 CBZ R0, loc_4FF1629E ; Compare and Branch on Zero N88AP_iBoot:4FF1627E 0C4 LDR.W R3, =aModelNumber ; "model-number" N88AP_iBoot:4FF16282 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16284 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16286 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16288 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1628A 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1628C 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16290 0C4 CBZ R0, loc_4FF1629E ; Compare and Branch on Zero N88AP_iBoot:4FF16292 0C4 LDR.W R0, ='Mod#' ; Load from Memory N88AP_iBoot:4FF16296 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16298 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF1629A 0C4 BL sub_4FF17C24 ; Branch with Link N88AP_iBoot:4FF1629E N88AP_iBoot:4FF1629E loc_4FF1629E ; CODE XREF: LoadImage_kernelcache_img3+478�j N88AP_iBoot:4FF1629E ; LoadImage_kernelcache_img3+48C�j N88AP_iBoot:4FF1629E 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF162A0 0C4 LDR.W R1, =dword_4FF214E8 ; Load from Memory N88AP_iBoot:4FF162A4 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF162A6 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF162AA 0C4 CBZ R0, loc_4FF162CC ; Compare and Branch on Zero N88AP_iBoot:4FF162AC 0C4 LDR.W R3, =aRegionInfo ; "region-info" N88AP_iBoot:4FF162B0 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF162B2 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF162B4 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF162B6 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF162B8 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF162BA 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF162BE 0C4 CBZ R0, loc_4FF162CC ; Compare and Branch on Zero N88AP_iBoot:4FF162C0 0C4 LDR.W R0, ='Regn' ; Load from Memory N88AP_iBoot:4FF162C4 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF162C6 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF162C8 0C4 BL sub_4FF17C24 ; Branch with Link N88AP_iBoot:4FF162CC N88AP_iBoot:4FF162CC loc_4FF162CC ; CODE XREF: LoadImage_kernelcache_img3+4A6�j N88AP_iBoot:4FF162CC ; LoadImage_kernelcache_img3+4BA�j N88AP_iBoot:4FF162CC 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF162CE 0C4 LDR.W R1, =dword_4FF214E8 ; Load from Memory N88AP_iBoot:4FF162D2 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF162D4 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF162D8 0C4 CBZ R0, loc_4FF162FA ; Compare and Branch on Zero N88AP_iBoot:4FF162DA 0C4 LDR.W R3, =aSerialNumber ; "serial-number" N88AP_iBoot:4FF162DE 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF162E0 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF162E2 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF162E4 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF162E6 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF162E8 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF162EC 0C4 CBZ R0, loc_4FF162FA ; Compare and Branch on Zero N88AP_iBoot:4FF162EE 0C4 LDR.W R0, ='SrNm' ; Load from Memory N88AP_iBoot:4FF162F2 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF162F4 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF162F6 0C4 BL sub_4FF17C24 ; Branch with Link N88AP_iBoot:4FF162FA N88AP_iBoot:4FF162FA loc_4FF162FA ; CODE XREF: LoadImage_kernelcache_img3+4D4�j N88AP_iBoot:4FF162FA ; LoadImage_kernelcache_img3+4E8�j N88AP_iBoot:4FF162FA 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF162FC 0C4 LDR.W R1, =dword_4FF214E8 ; Load from Memory N88AP_iBoot:4FF16300 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16302 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF16306 0C4 CBZ R0, loc_4FF16328 ; Compare and Branch on Zero N88AP_iBoot:4FF16308 0C4 LDR.W R3, =aMlbSerialNumber ; "mlb-serial-number" N88AP_iBoot:4FF1630C 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF1630E 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16310 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16312 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16314 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16316 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF1631A 0C4 CBZ R0, loc_4FF16328 ; Compare and Branch on Zero N88AP_iBoot:4FF1631C 0C4 LDR.W R0, ='MLB#' ; Load from Memory N88AP_iBoot:4FF16320 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16322 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF16324 0C4 BL sub_4FF17C24 ; Branch with Link N88AP_iBoot:4FF16328 N88AP_iBoot:4FF16328 loc_4FF16328 ; CODE XREF: LoadImage_kernelcache_img3+502�j N88AP_iBoot:4FF16328 ; LoadImage_kernelcache_img3+516�j N88AP_iBoot:4FF16328 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF1632A 0C4 LDR.W R1, =dword_4FF214E8 ; Load from Memory N88AP_iBoot:4FF1632E 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16330 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF16334 0C4 CBZ R0, loc_4FF16356 ; Compare and Branch on Zero N88AP_iBoot:4FF16336 0C4 LDR.W R3, =aConfigNumber ; "config-number" N88AP_iBoot:4FF1633A 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF1633C 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF1633E 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16340 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16342 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16344 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16348 0C4 CBZ R0, loc_4FF16356 ; Compare and Branch on Zero N88AP_iBoot:4FF1634A 0C4 LDR.W R0, ='CFG#' ; Load from Memory N88AP_iBoot:4FF1634E 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16350 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF16352 0C4 BL sub_4FF17C24 ; Branch with Link N88AP_iBoot:4FF16356 N88AP_iBoot:4FF16356 loc_4FF16356 ; CODE XREF: LoadImage_kernelcache_img3+530�j N88AP_iBoot:4FF16356 ; LoadImage_kernelcache_img3+544�j N88AP_iBoot:4FF16356 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16358 0C4 LDR.W R1, =aPram ; "pram" N88AP_iBoot:4FF1635C 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1635E 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF16362 0C4 CBZ R0, loc_4FF16388 ; Compare and Branch on Zero N88AP_iBoot:4FF16364 0C4 LDR.W R3, =aReg ; "reg" N88AP_iBoot:4FF16368 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF1636A 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF1636C 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF1636E 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16370 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16372 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16376 0C4 CBZ R0, loc_4FF16388 ; Compare and Branch on Zero N88AP_iBoot:4FF16378 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF1637A 0C4 LDR.W R2, =0x4FFFC000 ; Load from Memory N88AP_iBoot:4FF1637E 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16380 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16382 0C4 MOV.W R2, #0x4000 ; Rd = Op2 N88AP_iBoot:4FF16386 0C4 STR R2, [R3,#4] ; Store to Memory N88AP_iBoot:4FF16388 N88AP_iBoot:4FF16388 loc_4FF16388 ; CODE XREF: LoadImage_kernelcache_img3+55E�j N88AP_iBoot:4FF16388 ; LoadImage_kernelcache_img3+572�j N88AP_iBoot:4FF16388 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF1638A 0C4 LDR.W R1, =aVram ; "vram" N88AP_iBoot:4FF1638E 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16390 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF16394 0C4 CBZ R0, loc_4FF163BC ; Compare and Branch on Zero N88AP_iBoot:4FF16396 0C4 LDR.W R3, =aReg ; "reg" N88AP_iBoot:4FF1639A 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF1639C 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF1639E 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF163A0 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF163A2 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF163A4 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF163A8 0C4 CBZ R0, loc_4FF163BC ; Compare and Branch on Zero N88AP_iBoot:4FF163AA 0C4 LDR.W R2, =dword_4FF2CD0C ; Load from Memory N88AP_iBoot:4FF163AE 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF163B0 0C4 LDR R1, [R2] ; Load from Memory N88AP_iBoot:4FF163B2 0C4 RSB.W R2, R1, #0x50000000 ; Rd = Op2 - Op1 N88AP_iBoot:4FF163B6 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF163B8 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF163BA 0C4 STR R1, [R3,#4] ; Store to Memory N88AP_iBoot:4FF163BC N88AP_iBoot:4FF163BC loc_4FF163BC ; CODE XREF: LoadImage_kernelcache_img3+590�j N88AP_iBoot:4FF163BC ; LoadImage_kernelcache_img3+5A4�j N88AP_iBoot:4FF163BC 0C4 LDR.W R0, =aNetworkType ; "network-type" N88AP_iBoot:4FF163C0 0C4 BL sub_4FF1CD9C ; Branch with Link N88AP_iBoot:4FF163C4 0C4 CBZ R0, loc_4FF163D4 ; Compare and Branch on Zero N88AP_iBoot:4FF163C6 0C4 LDR.W R1, =aEthernet ; "ethernet" N88AP_iBoot:4FF163CA 0C4 BL sub_4FF1ECA0 ; Branch with Link N88AP_iBoot:4FF163CE 0C4 CBZ R0, loc_4FF163D4 ; Compare and Branch on Zero N88AP_iBoot:4FF163D0 0C4 MOVS R6, #1 ; Rd = Op2 N88AP_iBoot:4FF163D2 0C4 B loc_4FF163D6 ; Branch N88AP_iBoot:4FF163D4 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF163D4 N88AP_iBoot:4FF163D4 loc_4FF163D4 ; CODE XREF: LoadImage_kernelcache_img3+5C0�j N88AP_iBoot:4FF163D4 ; LoadImage_kernelcache_img3+5CA�j N88AP_iBoot:4FF163D4 0C4 MOVS R6, #0 ; Rd = Op2 N88AP_iBoot:4FF163D6 N88AP_iBoot:4FF163D6 loc_4FF163D6 ; CODE XREF: LoadImage_kernelcache_img3+5CE�j N88AP_iBoot:4FF163D6 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF163D8 0C4 LDR.W R1, =aChosen ; "chosen" N88AP_iBoot:4FF163DC 0C4 ADD R2, SP, #0xC4+var_64 ; Rd = Op1 + Op2 N88AP_iBoot:4FF163DE 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF163E2 0C4 CBNZ R0, loc_4FF163EE ; Compare and Branch on Non-Zero N88AP_iBoot:4FF163E4 0C4 LDR.W R0, =aUpdatedevicetreeFailedToFindTheChosenNode ; "UpdateDeviceTree: failed to find the /c"... N88AP_iBoot:4FF163E8 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF163EC 0C4 B loc_4FF16AD4 ; Branch N88AP_iBoot:4FF163EE ; --------------------------------------------------------------------------- N88AP_iBoot:4FF163EE N88AP_iBoot:4FF163EE loc_4FF163EE ; CODE XREF: LoadImage_kernelcache_img3+5DE�j N88AP_iBoot:4FF163EE 0C4 LDR.W R3, =aDebugEnabled ; "debug-enabled" N88AP_iBoot:4FF163F2 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF163F4 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF163F6 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF163F8 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF163FA 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF163FC 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16400 0C4 CBZ R0, loc_4FF16410 ; Compare and Branch on Zero N88AP_iBoot:4FF16402 0C4 MOVS R0, #0x20 ; ' ' ; Rd = Op2 N88AP_iBoot:4FF16404 0C4 BL sub_4FF19FAC ; Branch with Link N88AP_iBoot:4FF16408 0C4 CBZ R0, loc_4FF16410 ; Compare and Branch on Zero N88AP_iBoot:4FF1640A 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF1640C 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF1640E 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16410 N88AP_iBoot:4FF16410 loc_4FF16410 ; CODE XREF: LoadImage_kernelcache_img3+5FC�j N88AP_iBoot:4FF16410 ; LoadImage_kernelcache_img3+604�j N88AP_iBoot:4FF16410 0C4 LDR.W R3, =aDevelopmentCert ; "development-cert" N88AP_iBoot:4FF16414 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF16416 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16418 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF1641A 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1641C 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1641E 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16422 0C4 CBZ R0, loc_4FF16434 ; Compare and Branch on Zero N88AP_iBoot:4FF16424 0C4 MOV.W R0, #BlackRa1n__iPhoneTypeInfo ; Rd = Op2 N88AP_iBoot:4FF16428 0C4 BL sub_4FF19FAC ; Branch with Link N88AP_iBoot:4FF1642C 0C4 CBZ R0, loc_4FF16434 ; Compare and Branch on Zero N88AP_iBoot:4FF1642E 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16430 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF16432 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16434 N88AP_iBoot:4FF16434 loc_4FF16434 ; CODE XREF: LoadImage_kernelcache_img3+61E�j N88AP_iBoot:4FF16434 ; LoadImage_kernelcache_img3+628�j N88AP_iBoot:4FF16434 0C4 LDR.W R3, =aProductionCert ; "production-cert" N88AP_iBoot:4FF16438 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF1643A 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF1643C 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF1643E 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16440 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16442 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16446 0C4 CBZ R0, loc_4FF16458 ; Compare and Branch on Zero N88AP_iBoot:4FF16448 0C4 MOV.W R0, #0x200000 ; Rd = Op2 N88AP_iBoot:4FF1644C 0C4 BL sub_4FF19FAC ; Branch with Link N88AP_iBoot:4FF16450 0C4 CBZ R0, loc_4FF16458 ; Compare and Branch on Zero N88AP_iBoot:4FF16452 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16454 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF16456 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16458 N88AP_iBoot:4FF16458 loc_4FF16458 ; CODE XREF: LoadImage_kernelcache_img3+642�j N88AP_iBoot:4FF16458 ; LoadImage_kernelcache_img3+64C�j N88AP_iBoot:4FF16458 0C4 LDR.W R3, =aGidAesKey ; "gid-aes-key" N88AP_iBoot:4FF1645C 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF1645E 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16460 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16462 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16464 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16466 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF1646A 0C4 CBZ R0, loc_4FF1647C ; Compare and Branch on Zero N88AP_iBoot:4FF1646C 0C4 MOV.W R0, #0x40000 ; Rd = Op2 N88AP_iBoot:4FF16470 0C4 BL sub_4FF19FAC ; Branch with Link N88AP_iBoot:4FF16474 0C4 CBZ R0, loc_4FF1647C ; Compare and Branch on Zero N88AP_iBoot:4FF16476 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16478 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF1647A 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF1647C N88AP_iBoot:4FF1647C loc_4FF1647C ; CODE XREF: LoadImage_kernelcache_img3+666�j N88AP_iBoot:4FF1647C ; LoadImage_kernelcache_img3+670�j N88AP_iBoot:4FF1647C 0C4 LDR.W R3, =aUidAesKey ; "uid-aes-key" N88AP_iBoot:4FF16480 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF16482 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16484 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16486 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16488 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1648A 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF1648E 0C4 CBZ R0, loc_4FF164A0 ; Compare and Branch on Zero N88AP_iBoot:4FF16490 0C4 MOV.W R0, #0x80000 ; Rd = Op2 N88AP_iBoot:4FF16494 0C4 BL sub_4FF19FAC ; Branch with Link N88AP_iBoot:4FF16498 0C4 CBZ R0, loc_4FF164A0 ; Compare and Branch on Zero N88AP_iBoot:4FF1649A 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF1649C 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF1649E 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF164A0 N88AP_iBoot:4FF164A0 loc_4FF164A0 ; CODE XREF: LoadImage_kernelcache_img3+68A�j N88AP_iBoot:4FF164A0 ; LoadImage_kernelcache_img3+694�j N88AP_iBoot:4FF164A0 0C4 LDR.W R3, =aSecureBoot ; "secure-boot" N88AP_iBoot:4FF164A4 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF164A6 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF164A8 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF164AA 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF164AC 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF164AE 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF164B2 0C4 CBZ R0, loc_4FF164C4 ; Compare and Branch on Zero N88AP_iBoot:4FF164B4 0C4 MOV.W R0, #0x10000000 ; Rd = Op2 N88AP_iBoot:4FF164B8 0C4 BL sub_4FF19FAC ; Branch with Link N88AP_iBoot:4FF164BC 0C4 CBZ R0, loc_4FF164C4 ; Compare and Branch on Zero N88AP_iBoot:4FF164BE 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF164C0 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF164C2 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF164C4 N88AP_iBoot:4FF164C4 loc_4FF164C4 ; CODE XREF: LoadImage_kernelcache_img3+6AE�j N88AP_iBoot:4FF164C4 ; LoadImage_kernelcache_img3+6B8�j N88AP_iBoot:4FF164C4 0C4 LDR R3, =aSoftwareBehavior ; "software-behavior" N88AP_iBoot:4FF164C6 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF164C8 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF164CA 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF164CC 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF164CE 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF164D0 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF164D4 0C4 CBZ R0, loc_4FF164E0 ; Compare and Branch on Zero N88AP_iBoot:4FF164D6 0C4 LDR R0, ='SwBh' ; Load from Memory N88AP_iBoot:4FF164D8 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF164DA 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF164DC 0C4 BL sub_4FF17C24 ; Branch with Link N88AP_iBoot:4FF164E0 N88AP_iBoot:4FF164E0 loc_4FF164E0 ; CODE XREF: LoadImage_kernelcache_img3+6D0�j N88AP_iBoot:4FF164E0 0C4 LDR R3, =aSystemTrusted ; "system-trusted" N88AP_iBoot:4FF164E2 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF164E4 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF164E6 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF164E8 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF164EA 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF164EC 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF164F0 0C4 CBZ R0, loc_4FF16502 ; Compare and Branch on Zero N88AP_iBoot:4FF164F2 0C4 MOV.W R0, #0x20000000 ; Rd = Op2 N88AP_iBoot:4FF164F6 0C4 BL sub_4FF19FAC ; Branch with Link N88AP_iBoot:4FF164FA 0C4 CBZ R0, loc_4FF16502 ; Compare and Branch on Zero N88AP_iBoot:4FF164FC 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF164FE 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF16500 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16502 N88AP_iBoot:4FF16502 loc_4FF16502 ; CODE XREF: LoadImage_kernelcache_img3+6EC�j N88AP_iBoot:4FF16502 ; LoadImage_kernelcache_img3+6F6�j N88AP_iBoot:4FF16502 0C4 LDR R3, =aBoardId ; "board-id" N88AP_iBoot:4FF16504 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF16506 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16508 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF1650A 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1650C 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1650E 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16512 0C4 CBZ R0, loc_4FF1651C ; Compare and Branch on Zero N88AP_iBoot:4FF16514 0C4 LDR R4, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16516 0C4 BL sub_4FF184E4 ; Branch with Link N88AP_iBoot:4FF1651A 0C4 STR R0, [R4] ; Store to Memory N88AP_iBoot:4FF1651C N88AP_iBoot:4FF1651C loc_4FF1651C ; CODE XREF: LoadImage_kernelcache_img3+70E�j N88AP_iBoot:4FF1651C 0C4 LDR R3, =aChipId ; "chip-id" N88AP_iBoot:4FF1651E 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF16520 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16522 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16524 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16526 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16528 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF1652C 0C4 CBZ R0, loc_4FF16536 ; Compare and Branch on Zero N88AP_iBoot:4FF1652E 0C4 LDR R4, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16530 0C4 BL sub_4FF1F8F8 ; Branch with Link N88AP_iBoot:4FF16534 0C4 STR R0, [R4] ; Store to Memory N88AP_iBoot:4FF16536 N88AP_iBoot:4FF16536 loc_4FF16536 ; CODE XREF: LoadImage_kernelcache_img3+728�j N88AP_iBoot:4FF16536 0C4 LDR R3, =aUniqueChipId ; "unique-chip-id" N88AP_iBoot:4FF16538 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF1653A 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF1653C 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF1653E 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16540 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16542 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16546 0C4 CBZ R0, loc_4FF16552 ; Compare and Branch on Zero N88AP_iBoot:4FF16548 0C4 LDR R4, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF1654A 0C4 BL sub_4FF1F904 ; Branch with Link N88AP_iBoot:4FF1654E 0C4 STMIA.W R4, {R0,R1} ; Store Block to Memory N88AP_iBoot:4FF16552 N88AP_iBoot:4FF16552 loc_4FF16552 ; CODE XREF: LoadImage_kernelcache_img3+742�j N88AP_iBoot:4FF16552 0C4 LDR R3, =aFirmwareVersion ; "firmware-version" N88AP_iBoot:4FF16554 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF16556 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16558 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF1655A 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1655C 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1655E 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16562 0C4 CBZ R0, loc_4FF1656E ; Compare and Branch on Zero N88AP_iBoot:4FF16564 0C4 LDR R0, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16566 0C4 LDR R1, =aIboot636_66 ; "iBoot-636.66" N88AP_iBoot:4FF16568 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF1656A 0C4 BL sub_4FF1ED1C ; Branch with Link N88AP_iBoot:4FF1656E N88AP_iBoot:4FF1656E loc_4FF1656E ; CODE XREF: LoadImage_kernelcache_img3+75E�j N88AP_iBoot:4FF1656E 0C4 LDR R3, =aBootpResponse ; "bootp-response" N88AP_iBoot:4FF16570 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF16572 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16574 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16576 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16578 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1657A 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF1657E 0C4 CBZ R0, loc_4FF165E2 ; Compare and Branch on Zero N88AP_iBoot:4FF16580 0C4 LDR R4, =dword_4FF2CD18 ; Load from Memory N88AP_iBoot:4FF16582 0C4 ADD R1, SP, #0xC4+var_74 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16584 0C4 MOV.W R10, #2 ; Rd = Op2 N88AP_iBoot:4FF16588 0C4 LDR R0, =aIpaddr ; "ipaddr" N88AP_iBoot:4FF1658A 0C4 STRB.W R10, [R4] ; Store to Memory N88AP_iBoot:4FF1658E 0C4 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF16590 0C4 STR R3, [SP,#0xC4+var_74] ; Store to Memory N88AP_iBoot:4FF16592 0C4 BL sub_4FF1D170 ; Branch with Link N88AP_iBoot:4FF16596 0C4 ADD.W R0, R4, #0x10 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1659A 0C4 ADD R1, SP, #0xC4+var_74 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1659C 0C4 MOVS R2, #4 ; Rd = Op2 N88AP_iBoot:4FF1659E 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF165A2 0C4 LDR R0, =aGateway ; "gateway" N88AP_iBoot:4FF165A4 0C4 BL sub_4FF1CD9C ; Branch with Link N88AP_iBoot:4FF165A8 0C4 CBZ R0, loc_4FF165D6 ; Compare and Branch on Zero N88AP_iBoot:4FF165AA 0C4 ADD R1, SP, #0xC4+var_74 ; Rd = Op1 + Op2 N88AP_iBoot:4FF165AC 0C4 LDR R0, =aGateway ; "gateway" N88AP_iBoot:4FF165AE 0C4 BL sub_4FF1D170 ; Branch with Link N88AP_iBoot:4FF165B2 0C4 LDR R1, =dword_4FF25954 ; Load from Memory N88AP_iBoot:4FF165B4 0C4 MOVS R2, #4 ; Rd = Op2 N88AP_iBoot:4FF165B6 0C4 ADD.W R0, R4, #0xEC ; Rd = Op1 + Op2 N88AP_iBoot:4FF165BA 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF165BE 0C4 LDR R1, =dword_4FF2595C ; Load from Memory N88AP_iBoot:4FF165C0 0C4 MOV R2, R10 ; Rd = Op2 N88AP_iBoot:4FF165C2 0C4 ADD.W R0, R4, #0xF0 ; Rd = Op1 + Op2 N88AP_iBoot:4FF165C6 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF165CA 0C4 ADD.W R0, R4, #0xF2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF165CE 0C4 ADD R1, SP, #0xC4+var_74 ; Rd = Op1 + Op2 N88AP_iBoot:4FF165D0 0C4 MOVS R2, #4 ; Rd = Op2 N88AP_iBoot:4FF165D2 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF165D6 N88AP_iBoot:4FF165D6 loc_4FF165D6 ; CODE XREF: LoadImage_kernelcache_img3+7A4�j N88AP_iBoot:4FF165D6 0C4 LDR R0, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF165D8 0C4 MOV R1, R4 ; Rd = Op2 N88AP_iBoot:4FF165DA 0C4 MOV.W R2, #0x12C ; Rd = Op2 N88AP_iBoot:4FF165DE 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF165E2 N88AP_iBoot:4FF165E2 loc_4FF165E2 ; CODE XREF: LoadImage_kernelcache_img3+77A�j N88AP_iBoot:4FF165E2 0C4 LDR R0, =n88ap__iBOOT__gBootArgs.commandLine ; Load from Memory N88AP_iBoot:4FF165E4 0C4 LDR R1, =aRd_1 ; "rd=" N88AP_iBoot:4FF165E6 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF165E8 0C4 BL sub_4FF15CE8 ; Branch with Link N88AP_iBoot:4FF165EC 0C4 CBNZ R0, loc_4FF1660C ; Compare and Branch on Non-Zero N88AP_iBoot:4FF165EE 0C4 LDR R3, =aRootMatching ; "root-matching" N88AP_iBoot:4FF165F0 0C4 LDR R0, [SP,#0xC4+var_64] ; Load from Memory N88AP_iBoot:4FF165F2 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF165F4 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF165F6 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF165F8 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF165FA 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF165FE 0C4 CBZ R0, loc_4FF1660C ; Compare and Branch on Zero N88AP_iBoot:4FF16600 0C4 LDR R0, [SP,#0xC4+param_R2] ; param_R2 N88AP_iBoot:4FF16602 0C4 LDR R1, [SP,#0xC4+param_R3] ; param_R3 N88AP_iBoot:4FF16604 0C4 LDR R2, =aDictKeyIoproviderclassKeyStringIomediaStringK ; "<dict><key>IOProviderClass</key><string"... N88AP_iBoot:4FF16606 0C4 MOVS R3, #1 ; Rd = Op2 N88AP_iBoot:4FF16608 0C4 BL sub_4FF1EC48 ; Branch with Link N88AP_iBoot:4FF1660C N88AP_iBoot:4FF1660C loc_4FF1660C ; CODE XREF: LoadImage_kernelcache_img3+7E8�j N88AP_iBoot:4FF1660C ; LoadImage_kernelcache_img3+7FA�j N88AP_iBoot:4FF1660C 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF1660E 0C4 LDR R1, =dword_4FF214E8 ; Load from Memory N88AP_iBoot:4FF16610 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16612 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF16616 0C4 CBZ R0, loc_4FF16634 ; Compare and Branch on Zero N88AP_iBoot:4FF16618 0C4 LDR R3, =aPlatformName ; "platform-name" N88AP_iBoot:4FF1661A 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF1661C 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF1661E 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16620 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16622 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16624 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16628 0C4 CBZ R0, loc_4FF16634 ; Compare and Branch on Zero N88AP_iBoot:4FF1662A 0C4 LDR R0, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF1662C 0C4 LDR R1, =aS5l8920x ; "s5l8920x" N88AP_iBoot:4FF1662E 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF16630 0C4 BL sub_4FF1ED1C ; Branch with Link N88AP_iBoot:4FF16634 N88AP_iBoot:4FF16634 loc_4FF16634 ; CODE XREF: LoadImage_kernelcache_img3+812�j N88AP_iBoot:4FF16634 ; LoadImage_kernelcache_img3+824�j N88AP_iBoot:4FF16634 0C4 ADD.W R0, SP, #0xC4+var_7E ; Rd = Op1 + Op2 N88AP_iBoot:4FF16638 0C4 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF1663A 0C4 MOVS R2, #6 ; Rd = Op2 N88AP_iBoot:4FF1663C 0C4 BLX sub_4FF1ED54 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF16640 0C4 LDR R0, =aEthaddr ; "ethaddr" N88AP_iBoot:4FF16642 0C4 BL sub_4FF1CD9C ; Branch with Link N88AP_iBoot:4FF16646 0C4 CBZ R0, loc_4FF16654 ; Compare and Branch on Zero N88AP_iBoot:4FF16648 0C4 ADD.W R1, SP, #0xC4+var_7E ; Rd = Op1 + Op2 N88AP_iBoot:4FF1664C 0C4 LDR R0, =aEthaddr ; "ethaddr" N88AP_iBoot:4FF1664E 0C4 BL sub_4FF1D0C4 ; Branch with Link N88AP_iBoot:4FF16652 0C4 B loc_4FF16664 ; Branch N88AP_iBoot:4FF16654 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16654 N88AP_iBoot:4FF16654 loc_4FF16654 ; CODE XREF: LoadImage_kernelcache_img3+842�j N88AP_iBoot:4FF16654 0C4 STR R0, [SP,#0xC4+var_78] ; Store to Memory N88AP_iBoot:4FF16656 0C4 MOVS R0, #6 ; Rd = Op2 N88AP_iBoot:4FF16658 0C4 ADD.W R1, SP, #0xC4+var_7E ; Rd = Op1 + Op2 N88AP_iBoot:4FF1665C 0C4 MOV R2, R0 ; Rd = Op2 N88AP_iBoot:4FF1665E 0C4 ADD R3, SP, #0xC4+var_78 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16660 0C4 BL sub_4FF1A638 ; Branch with Link N88AP_iBoot:4FF16664 N88AP_iBoot:4FF16664 loc_4FF16664 ; CODE XREF: LoadImage_kernelcache_img3+84E�j N88AP_iBoot:4FF16664 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16666 0C4 LDR R1, =dword_4FF214E8 ; Load from Memory N88AP_iBoot:4FF16668 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1666A 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF1666E 0C4 CBZ R0, loc_4FF1668E ; Compare and Branch on Zero N88AP_iBoot:4FF16670 0C4 LDR R3, =aLocalMacAddress ; "local-mac-address" N88AP_iBoot:4FF16672 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16674 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16676 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16678 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1667A 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1667C 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16680 0C4 CBZ R0, loc_4FF1668E ; Compare and Branch on Zero N88AP_iBoot:4FF16682 0C4 LDR R0, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16684 0C4 ADD.W R1, SP, #0xC4+var_7E ; Rd = Op1 + Op2 N88AP_iBoot:4FF16688 0C4 MOVS R2, #6 ; Rd = Op2 N88AP_iBoot:4FF1668A 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF1668E N88AP_iBoot:4FF1668E loc_4FF1668E ; CODE XREF: LoadImage_kernelcache_img3+86A�j N88AP_iBoot:4FF1668E ; LoadImage_kernelcache_img3+87C�j N88AP_iBoot:4FF1668E 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16690 0C4 LDR R1, =aEthernet ; "ethernet" N88AP_iBoot:4FF16692 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16694 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF16698 0C4 CBZ R0, loc_4FF166DC ; Compare and Branch on Zero N88AP_iBoot:4FF1669A 0C4 LDR R3, =aLocalMacAddress ; "local-mac-address" N88AP_iBoot:4FF1669C 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF1669E 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF166A0 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF166A2 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF166A4 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF166A6 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF166AA 0C4 CBZ R0, loc_4FF166DC ; Compare and Branch on Zero N88AP_iBoot:4FF166AC 0C4 LDR R0, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF166AE 0C4 ADD.W R1, SP, #0xC4+var_7E ; Rd = Op1 + Op2 N88AP_iBoot:4FF166B2 0C4 MOVS R2, #6 ; Rd = Op2 N88AP_iBoot:4FF166B4 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF166B8 0C4 CBZ R6, loc_4FF166DC ; Compare and Branch on Zero N88AP_iBoot:4FF166BA 0C4 LDR R3, =aCompatible ; "compatible" N88AP_iBoot:4FF166BC 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF166BE 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF166C0 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF166C2 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF166C4 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF166C6 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF166CA 0C4 CBZ R0, loc_4FF166DC ; Compare and Branch on Zero N88AP_iBoot:4FF166CC 0C4 LDR R0, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF166CE 0C4 LDR R1, =aXxx ; "xxx" N88AP_iBoot:4FF166D0 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF166D2 0C4 BL sub_4FF1ED1C ; Branch with Link N88AP_iBoot:4FF166D6 0C4 LDR R0, =aEthernetDisabled ; "Ethernet disabled\n" N88AP_iBoot:4FF166D8 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF166DC N88AP_iBoot:4FF166DC loc_4FF166DC ; CODE XREF: LoadImage_kernelcache_img3+894�j N88AP_iBoot:4FF166DC ; LoadImage_kernelcache_img3+8A6�j N88AP_iBoot:4FF166DC ; LoadImage_kernelcache_img3+8B4�j N88AP_iBoot:4FF166DC ; LoadImage_kernelcache_img3+8C6�j N88AP_iBoot:4FF166DC 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF166DE 0C4 LDR R1, =aArmIoSdio ; "arm-io/sdio" N88AP_iBoot:4FF166E0 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF166E2 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF166E6 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF166E8 0C4 BEQ loc_4FF16768 ; Branch N88AP_iBoot:4FF166EA 0C4 LDR R3, =aLocalMacAddress ; "local-mac-address" N88AP_iBoot:4FF166EC 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF166EE 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF166F0 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF166F2 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF166F4 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF166F6 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF166FA 0C4 CBZ R0, loc_4FF1671C ; Compare and Branch on Zero N88AP_iBoot:4FF166FC 0C4 LDR R0, =aWifiaddr ; "wifiaddr" N88AP_iBoot:4FF166FE 0C4 BL sub_4FF1CD9C ; Branch with Link N88AP_iBoot:4FF16702 0C4 CBZ R0, loc_4FF1670E ; Compare and Branch on Zero N88AP_iBoot:4FF16704 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16706 0C4 LDR R0, =aWifiaddr ; "wifiaddr" N88AP_iBoot:4FF16708 0C4 BL sub_4FF1D0C4 ; Branch with Link N88AP_iBoot:4FF1670C 0C4 B loc_4FF1671C ; Branch N88AP_iBoot:4FF1670E ; --------------------------------------------------------------------------- N88AP_iBoot:4FF1670E N88AP_iBoot:4FF1670E loc_4FF1670E ; CODE XREF: LoadImage_kernelcache_img3+8FE�j N88AP_iBoot:4FF1670E 0C4 STR R0, [SP,#0xC4+var_78] ; Store to Memory N88AP_iBoot:4FF16710 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16712 0C4 MOVS R0, #1 ; Rd = Op2 N88AP_iBoot:4FF16714 0C4 MOVS R2, #6 ; Rd = Op2 N88AP_iBoot:4FF16716 0C4 ADD R3, SP, #0xC4+var_78 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16718 0C4 BL sub_4FF1A638 ; Branch with Link N88AP_iBoot:4FF1671C N88AP_iBoot:4FF1671C loc_4FF1671C ; CODE XREF: LoadImage_kernelcache_img3+8F6�j N88AP_iBoot:4FF1671C ; LoadImage_kernelcache_img3+908�j N88AP_iBoot:4FF1671C 0C4 LDR R3, =aTxCalibration ; "tx-calibration" N88AP_iBoot:4FF1671E 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16720 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16722 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16724 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16726 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16728 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF1672C 0C4 CBZ R0, loc_4FF16746 ; Compare and Branch on Zero N88AP_iBoot:4FF1672E 0C4 LDR R0, =aInstallingWifiCalibration ; "Installing WIFI Calibration\n" N88AP_iBoot:4FF16730 0C4 MOVS R3, #0 ; param_R3 N88AP_iBoot:4FF16732 0C4 STR R3, [SP,#0xC4+var_78] ; Store to Memory N88AP_iBoot:4FF16734 0C4 BL N88AP__iBOOT__console_printf ; Branch with Link N88AP_iBoot:4FF16738 0C4 MOVS R0, #2 ; Rd = Op2 N88AP_iBoot:4FF1673A 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF1673C 0C4 MOV.W R2, #0x400 ; Rd = Op2 N88AP_iBoot:4FF16740 0C4 ADD R3, SP, #0xC4+var_78 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16742 0C4 BL sub_4FF1A638 ; Branch with Link N88AP_iBoot:4FF16746 N88AP_iBoot:4FF16746 loc_4FF16746 ; CODE XREF: LoadImage_kernelcache_img3+928�j N88AP_iBoot:4FF16746 0C4 LDR R3, =aVendorId ; "vendor-id" N88AP_iBoot:4FF16748 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF1674A 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF1674C 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF1674E 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16750 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16752 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16756 0C4 CBZ R0, loc_4FF16768 ; Compare and Branch on Zero N88AP_iBoot:4FF16758 0C4 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF1675A 0C4 MOVS R0, #3 ; Rd = Op2 N88AP_iBoot:4FF1675C 0C4 STR R3, [SP,#0xC4+var_78] ; Store to Memory N88AP_iBoot:4FF1675E 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16760 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF16762 0C4 ADD R3, SP, #0xC4+var_78 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16764 0C4 BL sub_4FF1A638 ; Branch with Link N88AP_iBoot:4FF16768 N88AP_iBoot:4FF16768 loc_4FF16768 ; CODE XREF: LoadImage_kernelcache_img3+8E4�j N88AP_iBoot:4FF16768 ; LoadImage_kernelcache_img3+952�j N88AP_iBoot:4FF16768 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF1676A 0C4 LDR R1, =aArmIoUart3Bluetooth ; "arm-io/uart3/bluetooth" N88AP_iBoot:4FF1676C 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1676E 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF16772 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16774 0C4 BEQ.W loc_4FF16960 ; Branch N88AP_iBoot:4FF16778 0C4 LDR R3, =aLocalMacAddress ; "local-mac-address" N88AP_iBoot:4FF1677A 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF1677C 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF1677E 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16780 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16782 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16784 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16788 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF1678A 0C4 BEQ.W loc_4FF1693E ; Branch N88AP_iBoot:4FF1678E 0C4 LDR R0, =aBtaddr ; "btaddr" N88AP_iBoot:4FF16790 0C4 BL sub_4FF1CD9C ; Branch with Link N88AP_iBoot:4FF16794 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16796 0C4 BEQ.W loc_4FF16930 ; Branch N88AP_iBoot:4FF1679A 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF1679C 0C4 LDR R0, =aBtaddr ; "btaddr" N88AP_iBoot:4FF1679E 0C4 BL sub_4FF1D0C4 ; Branch with Link N88AP_iBoot:4FF167A2 0C4 B loc_4FF1693E ; Branch N88AP_iBoot:4FF167A2 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF167A4 0C4 off_4FF167A4 DCD dword_4FF2A308 ; DATA XREF: LoadImage_kernelcache_img3+A�r N88AP_iBoot:4FF167A8 ; int off_4FF167A8 N88AP_iBoot:4FF167A8 0C4 off_4FF167A8 DCD aKernelcacheImageCorrupt N88AP_iBoot:4FF167A8 ; DATA XREF: LoadImage_kernelcache_img3+1C�r N88AP_iBoot:4FF167A8 ; "Kernelcache image corrupt\n" N88AP_iBoot:4FF167AC ; int off_4FF167AC N88AP_iBoot:4FF167AC 0C4 off_4FF167AC DCD aKernelcacheTooLarge N88AP_iBoot:4FF167AC ; DATA XREF: LoadImage_kernelcache_img3+34�r N88AP_iBoot:4FF167AC ; "Kernelcache too large\n" N88AP_iBoot:4FF167B0 ; char *dword_4FF167B0 N88AP_iBoot:4FF167B0 0C4 dword_4FF167B0 DCD 'krnl' ; DATA XREF: LoadImage_kernelcache_img3+48�r N88AP_iBoot:4FF167B4 ; int off_4FF167B4 N88AP_iBoot:4FF167B4 0C4 off_4FF167B4 DCD aKernelcacheImageNotValid N88AP_iBoot:4FF167B4 ; DATA XREF: LoadImage_kernelcache_img3+60�r N88AP_iBoot:4FF167B4 ; "Kernelcache image not valid\n" N88AP_iBoot:4FF167B8 0C4 dword_4FF167B8 DCD 'comp' ; DATA XREF: LoadImage_kernelcache_img3+78�r N88AP_iBoot:4FF167BC ; int dword_4FF167BC N88AP_iBoot:4FF167BC 0C4 dword_4FF167BC DCD 'lzss' ; DATA XREF: LoadImage_kernelcache_img3+94�r N88AP_iBoot:4FF167C0 0C4 off_4FF167C0 DCD aUnknownKernelcacheCompressionType N88AP_iBoot:4FF167C0 ; DATA XREF: LoadImage_kernelcache_img3+9C�r N88AP_iBoot:4FF167C0 ; "unknown kernelcache compression type\n" N88AP_iBoot:4FF167C4 ; int off_4FF167C4 N88AP_iBoot:4FF167C4 0C4 off_4FF167C4 DCD aLoadingKernelCacheAtX___ N88AP_iBoot:4FF167C4 ; DATA XREF: LoadImage_kernelcache_img3+A8�r N88AP_iBoot:4FF167C4 ; "Loading kernel cache at %#x..." N88AP_iBoot:4FF167C8 ; int off_4FF167C8 N88AP_iBoot:4FF167C8 0C4 off_4FF167C8 DCD aDataStartsAtP ; DATA XREF: LoadImage_kernelcache_img3+B2�r N88AP_iBoot:4FF167C8 ; "data starts at %p\n" N88AP_iBoot:4FF167CC 0C4 off_4FF167CC DCD aUncompressedSizeTooLargeUMaxD N88AP_iBoot:4FF167CC ; DATA XREF: LoadImage_kernelcache_img3+E8�r N88AP_iBoot:4FF167CC ; "uncompressed size too large %u, max %d\n"... N88AP_iBoot:4FF167D0 ; int off_4FF167D0 N88AP_iBoot:4FF167D0 0C4 off_4FF167D0 DCD aSizeMismatchFromLzssDShouldBeD N88AP_iBoot:4FF167D0 ; DATA XREF: LoadImage_kernelcache_img3+108�r N88AP_iBoot:4FF167D0 ; "size mismatch from lzss %d, should be %"... N88AP_iBoot:4FF167D4 ; int off_4FF167D4 N88AP_iBoot:4FF167D4 0C4 off_4FF167D4 DCD aAdlerMismatch ; DATA XREF: LoadImage_kernelcache_img3+128�r N88AP_iBoot:4FF167D4 ; "adler mismatch\n" N88AP_iBoot:4FF167D8 ; int off_4FF167D8 N88AP_iBoot:4FF167D8 0C4 off_4FF167D8 DCD aDone ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF15F36�r N88AP_iBoot:4FF167D8 ; "done\n" N88AP_iBoot:4FF167DC ; int dword_4FF167DC N88AP_iBoot:4FF167DC 0C4 dword_4FF167DC DCD 0xFEEDFACE ; DATA XREF: LoadImage_kernelcache_img3+148�r N88AP_iBoot:4FF167E0 ; int off_4FF167E0 N88AP_iBoot:4FF167E0 0C4 off_4FF167E0 DCD aLoad_macho_imageFailedToLoadDeviceTree N88AP_iBoot:4FF167E0 ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF15F62�r N88AP_iBoot:4FF167E0 ; "load_macho_image: failed to load device"... N88AP_iBoot:4FF167E4 0C4 off_4FF167E4 DCD dword_4FF2CD04 ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF15F6E�r N88AP_iBoot:4FF167E4 ; LoadImage_kernelcache_img3+3FC�r N88AP_iBoot:4FF167E4 ; LoadImage_kernelcache_img3+410�r N88AP_iBoot:4FF167E4 ; LoadImage_kernelcache_img3+424�r N88AP_iBoot:4FF167E8 0C4 off_4FF167E8 DCD dword_4FF2CD10 ; DATA XREF: LoadImage_kernelcache_img3+178�r N88AP_iBoot:4FF167E8 ; LoadImage_kernelcache_img3+1BC�r N88AP_iBoot:4FF167EC 0C4 off_4FF167EC DCD dword_4FF2CBCC ; DATA XREF: LoadImage_kernelcache_img3+1A4�r N88AP_iBoot:4FF167EC ; LoadImage_kernelcache_img3+1A8�r N88AP_iBoot:4FF167EC ; LoadImage_kernelcache_img3:loc_4FF1607C�r N88AP_iBoot:4FF167EC ; LoadImage_kernelcache_img3+27C�r N88AP_iBoot:4FF167EC ; LoadImage_kernelcache_img3+2B2�r ... N88AP_iBoot:4FF167F0 0C4 off_4FF167F0 DCD a__pagezero ; DATA XREF: LoadImage_kernelcache_img3+1D0�r N88AP_iBoot:4FF167F0 ; "__PAGEZERO" N88AP_iBoot:4FF167F4 0C4 off_4FF167F4 DCD aKernelS ; DATA XREF: LoadImage_kernelcache_img3+1F4�r N88AP_iBoot:4FF167F4 ; "Kernel-%s" N88AP_iBoot:4FF167F8 0C4 off_4FF167F8 DCD a__prelink ; DATA XREF: LoadImage_kernelcache_img3+212�r N88AP_iBoot:4FF167F8 ; "__PRELINK" N88AP_iBoot:4FF167FC 0C4 off_4FF167FC DCD dword_4FF2CD14 ; DATA XREF: LoadImage_kernelcache_img3+21C�r N88AP_iBoot:4FF16800 0C4 off_4FF16800 DCD dword_4FF2CBC8 ; DATA XREF: LoadImage_kernelcache_img3+28E�r N88AP_iBoot:4FF16804 0C4 off_4FF16804 DCD dword_4FF2A03C ; DATA XREF: LoadImage_kernelcache_img3+2B6�r N88AP_iBoot:4FF16804 ; LoadImage_kernelcache_img3+452�r N88AP_iBoot:4FF16808 0C4 off_4FF16808 DCD dword_4FF214E8 ; DATA XREF: LoadImage_kernelcache_img3+2BC�r N88AP_iBoot:4FF16808 ; LoadImage_kernelcache_img3+46E�r N88AP_iBoot:4FF16808 ; LoadImage_kernelcache_img3+49C�r N88AP_iBoot:4FF16808 ; LoadImage_kernelcache_img3+4CA�r N88AP_iBoot:4FF16808 ; LoadImage_kernelcache_img3+4F8�r ... N88AP_iBoot:4FF1680C 0C4 off_4FF1680C DCD aRdMd0NandEnableReformat1Progress N88AP_iBoot:4FF1680C ; DATA XREF: LoadImage_kernelcache_img3+2C6�r N88AP_iBoot:4FF1680C ; "rd=md0 nand-enable-reformat=1 -progress"... N88AP_iBoot:4FF16810 0C4 dword_4FF16810 DCD 'Teth' ; DATA XREF: LoadImage_kernelcache_img3+2CA�r N88AP_iBoot:4FF16814 0C4 off_4FF16814 DCD aIsTethered ; DATA XREF: LoadImage_kernelcache_img3+2EA�r N88AP_iBoot:4FF16814 ; LoadImage_kernelcache_img3:loc_4FF160FA�r N88AP_iBoot:4FF16814 ; "is-tethered" N88AP_iBoot:4FF16818 ; int off_4FF16818 N88AP_iBoot:4FF16818 0C4 off_4FF16818 DCD n88ap__iBOOT__gBootArgs.commandLine N88AP_iBoot:4FF16818 ; DATA XREF: LoadImage_kernelcache_img3+302�r N88AP_iBoot:4FF16818 ; LoadImage_kernelcache_img3:loc_4FF16114�r N88AP_iBoot:4FF16818 ; LoadImage_kernelcache_img3+322�r N88AP_iBoot:4FF16818 ; LoadImage_kernelcache_img3+330�r N88AP_iBoot:4FF16818 ; LoadImage_kernelcache_img3+340�r ... N88AP_iBoot:4FF1681C 0C4 off_4FF1681C DCD aSForceUsbPower1 ; DATA XREF: LoadImage_kernelcache_img3+306�r N88AP_iBoot:4FF1681C ; "%s force-usb-power=1 " N88AP_iBoot:4FF16820 0C4 off_4FF16820 DCD aS_2 ; DATA XREF: LoadImage_kernelcache_img3+314�r N88AP_iBoot:4FF16820 ; "%s " N88AP_iBoot:4FF16824 ; int off_4FF16824 N88AP_iBoot:4FF16824 0C4 off_4FF16824 DCD aGbootargs_commandlineS N88AP_iBoot:4FF16824 ; DATA XREF: LoadImage_kernelcache_img3+326�r N88AP_iBoot:4FF16824 ; "gBootArgs.commandLine = [%s]\n" N88AP_iBoot:4FF16828 0C4 off_4FF16828 DCD aS_3 ; DATA XREF: LoadImage_kernelcache_img3+334�r N88AP_iBoot:4FF16828 ; "-s" N88AP_iBoot:4FF1682C 0C4 off_4FF1682C DCD aV_1 ; DATA XREF: LoadImage_kernelcache_img3+344�r N88AP_iBoot:4FF1682C ; "-v" N88AP_iBoot:4FF16830 0C4 off_4FF16830 DCD aDebug ; DATA XREF: LoadImage_kernelcache_img3+35A�r N88AP_iBoot:4FF16830 ; "debug=" N88AP_iBoot:4FF16834 0C4 off_4FF16834 DCD aForceUsbPower1 ; DATA XREF: LoadImage_kernelcache_img3+36E�r N88AP_iBoot:4FF16834 ; "force-usb-power=1" N88AP_iBoot:4FF16838 0C4 off_4FF16838 DCD dword_4FF2A148 ; DATA XREF: LoadImage_kernelcache_img3+37A�r N88AP_iBoot:4FF1683C 0C4 off_4FF1683C DCD dword_4FF2CD0C ; DATA XREF: LoadImage_kernelcache_img3+398�r N88AP_iBoot:4FF1683C ; LoadImage_kernelcache_img3+3C0�r N88AP_iBoot:4FF1683C ; LoadImage_kernelcache_img3+3CE�r N88AP_iBoot:4FF1683C ; LoadImage_kernelcache_img3+3D8�r N88AP_iBoot:4FF1683C ; LoadImage_kernelcache_img3+5A6�r N88AP_iBoot:4FF16840 0C4 off_4FF16840 DCD aVramSize ; DATA XREF: LoadImage_kernelcache_img3+3AE�r N88AP_iBoot:4FF16840 ; "vram-size" N88AP_iBoot:4FF16844 0C4 off_4FF16844 DCD dword_4FF2CD08 ; DATA XREF: LoadImage_kernelcache_img3+3E2�r N88AP_iBoot:4FF16844 ; LoadImage_kernelcache_img3+402�r N88AP_iBoot:4FF16844 ; LoadImage_kernelcache_img3+420�r N88AP_iBoot:4FF16848 0C4 off_4FF16848 DCD aDevicetree ; DATA XREF: LoadImage_kernelcache_img3+428�r N88AP_iBoot:4FF16848 ; "DeviceTree" N88AP_iBoot:4FF1684C 0C4 off_4FF1684C DCD dword_4FF2A040 ; DATA XREF: LoadImage_kernelcache_img3+43A�r N88AP_iBoot:4FF16850 0C4 off_4FF16850 DCD aRamdisk ; DATA XREF: LoadImage_kernelcache_img3+462�r N88AP_iBoot:4FF16850 ; "RAMDisk" N88AP_iBoot:4FF16854 0C4 off_4FF16854 DCD aModelNumber ; DATA XREF: LoadImage_kernelcache_img3+47A�r N88AP_iBoot:4FF16854 ; "model-number" N88AP_iBoot:4FF16858 0C4 dword_4FF16858 DCD 'Mod#' ; DATA XREF: LoadImage_kernelcache_img3+48E�r N88AP_iBoot:4FF1685C 0C4 off_4FF1685C DCD aRegionInfo ; DATA XREF: LoadImage_kernelcache_img3+4A8�r N88AP_iBoot:4FF1685C ; "region-info" N88AP_iBoot:4FF16860 0C4 dword_4FF16860 DCD 'Regn' ; DATA XREF: LoadImage_kernelcache_img3+4BC�r N88AP_iBoot:4FF16864 0C4 off_4FF16864 DCD aSerialNumber ; DATA XREF: LoadImage_kernelcache_img3+4D6�r N88AP_iBoot:4FF16864 ; "serial-number" N88AP_iBoot:4FF16868 0C4 dword_4FF16868 DCD 'SrNm' ; DATA XREF: LoadImage_kernelcache_img3+4EA�r N88AP_iBoot:4FF1686C 0C4 off_4FF1686C DCD aMlbSerialNumber ; DATA XREF: LoadImage_kernelcache_img3+504�r N88AP_iBoot:4FF1686C ; "mlb-serial-number" N88AP_iBoot:4FF16870 0C4 dword_4FF16870 DCD 'MLB#' ; DATA XREF: LoadImage_kernelcache_img3+518�r N88AP_iBoot:4FF16874 0C4 off_4FF16874 DCD aConfigNumber ; DATA XREF: LoadImage_kernelcache_img3+532�r N88AP_iBoot:4FF16874 ; "config-number" N88AP_iBoot:4FF16878 0C4 dword_4FF16878 DCD 'CFG#' ; DATA XREF: LoadImage_kernelcache_img3+546�r N88AP_iBoot:4FF1687C 0C4 off_4FF1687C DCD aPram ; DATA XREF: LoadImage_kernelcache_img3+554�r N88AP_iBoot:4FF1687C ; "pram" N88AP_iBoot:4FF16880 0C4 off_4FF16880 DCD aReg ; DATA XREF: LoadImage_kernelcache_img3+560�r N88AP_iBoot:4FF16880 ; LoadImage_kernelcache_img3+592�r N88AP_iBoot:4FF16880 ; "reg" N88AP_iBoot:4FF16884 0C4 off_4FF16884 DCD 0x4FFFC000 ; DATA XREF: LoadImage_kernelcache_img3+576�r N88AP_iBoot:4FF16888 0C4 off_4FF16888 DCD aVram ; DATA XREF: LoadImage_kernelcache_img3+586�r N88AP_iBoot:4FF16888 ; "vram" N88AP_iBoot:4FF1688C 0C4 off_4FF1688C DCD aNetworkType ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF163BC�r N88AP_iBoot:4FF1688C ; "network-type" N88AP_iBoot:4FF16890 0C4 off_4FF16890 DCD aEthernet ; DATA XREF: LoadImage_kernelcache_img3+5C2�r N88AP_iBoot:4FF16890 ; LoadImage_kernelcache_img3+88C�r N88AP_iBoot:4FF16890 ; "ethernet" N88AP_iBoot:4FF16894 0C4 off_4FF16894 DCD aChosen ; DATA XREF: LoadImage_kernelcache_img3+5D4�r N88AP_iBoot:4FF16894 ; "chosen" N88AP_iBoot:4FF16898 ; int off_4FF16898 N88AP_iBoot:4FF16898 0C4 off_4FF16898 DCD aUpdatedevicetreeFailedToFindTheChosenNode N88AP_iBoot:4FF16898 ; DATA XREF: LoadImage_kernelcache_img3+5E0�r N88AP_iBoot:4FF16898 ; "UpdateDeviceTree: failed to find the /c"... N88AP_iBoot:4FF1689C 0C4 off_4FF1689C DCD aDebugEnabled ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF163EE�r N88AP_iBoot:4FF1689C ; "debug-enabled" N88AP_iBoot:4FF168A0 0C4 off_4FF168A0 DCD aDevelopmentCert ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16410�r N88AP_iBoot:4FF168A0 ; "development-cert" N88AP_iBoot:4FF168A4 0C4 off_4FF168A4 DCD aProductionCert ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16434�r N88AP_iBoot:4FF168A4 ; "production-cert" N88AP_iBoot:4FF168A8 0C4 off_4FF168A8 DCD aGidAesKey ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16458�r N88AP_iBoot:4FF168A8 ; "gid-aes-key" N88AP_iBoot:4FF168AC 0C4 off_4FF168AC DCD aUidAesKey ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF1647C�r N88AP_iBoot:4FF168AC ; "uid-aes-key" N88AP_iBoot:4FF168B0 0C4 off_4FF168B0 DCD aSecureBoot ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF164A0�r N88AP_iBoot:4FF168B0 ; "secure-boot" N88AP_iBoot:4FF168B4 0C4 off_4FF168B4 DCD aSoftwareBehavior ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF164C4�r N88AP_iBoot:4FF168B4 ; "software-behavior" N88AP_iBoot:4FF168B8 0C4 dword_4FF168B8 DCD 'SwBh' ; DATA XREF: LoadImage_kernelcache_img3+6D2�r N88AP_iBoot:4FF168BC 0C4 off_4FF168BC DCD aSystemTrusted ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF164E0�r N88AP_iBoot:4FF168BC ; "system-trusted" N88AP_iBoot:4FF168C0 0C4 off_4FF168C0 DCD aBoardId ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16502�r N88AP_iBoot:4FF168C0 ; "board-id" N88AP_iBoot:4FF168C4 0C4 off_4FF168C4 DCD aChipId ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF1651C�r N88AP_iBoot:4FF168C4 ; "chip-id" N88AP_iBoot:4FF168C8 0C4 off_4FF168C8 DCD aUniqueChipId ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16536�r N88AP_iBoot:4FF168C8 ; "unique-chip-id" N88AP_iBoot:4FF168CC 0C4 off_4FF168CC DCD aFirmwareVersion ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16552�r N88AP_iBoot:4FF168CC ; "firmware-version" N88AP_iBoot:4FF168D0 0C4 off_4FF168D0 DCD aIboot636_66 ; DATA XREF: LoadImage_kernelcache_img3+762�r N88AP_iBoot:4FF168D0 ; "iBoot-636.66" N88AP_iBoot:4FF168D4 0C4 off_4FF168D4 DCD aBootpResponse ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF1656E�r N88AP_iBoot:4FF168D4 ; "bootp-response" N88AP_iBoot:4FF168D8 0C4 off_4FF168D8 DCD dword_4FF2CD18 ; DATA XREF: LoadImage_kernelcache_img3+77C�r N88AP_iBoot:4FF168DC 0C4 off_4FF168DC DCD aIpaddr ; DATA XREF: LoadImage_kernelcache_img3+784�r N88AP_iBoot:4FF168DC ; "ipaddr" N88AP_iBoot:4FF168E0 0C4 off_4FF168E0 DCD aGateway ; DATA XREF: LoadImage_kernelcache_img3+79E�r N88AP_iBoot:4FF168E0 ; LoadImage_kernelcache_img3+7A8�r N88AP_iBoot:4FF168E0 ; "gateway" N88AP_iBoot:4FF168E4 0C4 off_4FF168E4 DCD dword_4FF25954 ; DATA XREF: LoadImage_kernelcache_img3+7AE�r N88AP_iBoot:4FF168E8 0C4 off_4FF168E8 DCD dword_4FF2595C ; DATA XREF: LoadImage_kernelcache_img3+7BA�r N88AP_iBoot:4FF168EC 0C4 off_4FF168EC DCD aRd_1 ; DATA XREF: LoadImage_kernelcache_img3+7E0�r N88AP_iBoot:4FF168EC ; "rd=" N88AP_iBoot:4FF168F0 0C4 off_4FF168F0 DCD aRootMatching ; DATA XREF: LoadImage_kernelcache_img3+7EA�r N88AP_iBoot:4FF168F0 ; "root-matching" N88AP_iBoot:4FF168F4 0C4 off_4FF168F4 DCD aDictKeyIoproviderclassKeyStringIomediaStringK N88AP_iBoot:4FF168F4 ; DATA XREF: LoadImage_kernelcache_img3+800�r N88AP_iBoot:4FF168F4 ; "<dict><key>IOProviderClass</key><string"... N88AP_iBoot:4FF168F8 0C4 off_4FF168F8 DCD aPlatformName ; DATA XREF: LoadImage_kernelcache_img3+814�r N88AP_iBoot:4FF168F8 ; "platform-name" N88AP_iBoot:4FF168FC 0C4 off_4FF168FC DCD aS5l8920x ; DATA XREF: LoadImage_kernelcache_img3+828�r N88AP_iBoot:4FF168FC ; "s5l8920x" N88AP_iBoot:4FF16900 0C4 off_4FF16900 DCD aEthaddr ; DATA XREF: LoadImage_kernelcache_img3+83C�r N88AP_iBoot:4FF16900 ; LoadImage_kernelcache_img3+848�r N88AP_iBoot:4FF16900 ; "ethaddr" N88AP_iBoot:4FF16904 0C4 off_4FF16904 DCD aLocalMacAddress ; DATA XREF: LoadImage_kernelcache_img3+86C�r N88AP_iBoot:4FF16904 ; LoadImage_kernelcache_img3+896�r N88AP_iBoot:4FF16904 ; LoadImage_kernelcache_img3+8E6�r N88AP_iBoot:4FF16904 ; LoadImage_kernelcache_img3+974�r N88AP_iBoot:4FF16904 ; "local-mac-address" N88AP_iBoot:4FF16908 0C4 off_4FF16908 DCD aCompatible ; DATA XREF: LoadImage_kernelcache_img3+8B6�r N88AP_iBoot:4FF16908 ; "compatible" N88AP_iBoot:4FF1690C 0C4 off_4FF1690C DCD aXxx ; DATA XREF: LoadImage_kernelcache_img3+8CA�r N88AP_iBoot:4FF1690C ; "xxx" N88AP_iBoot:4FF16910 ; int off_4FF16910 N88AP_iBoot:4FF16910 0C4 off_4FF16910 DCD aEthernetDisabled ; DATA XREF: LoadImage_kernelcache_img3+8D2�r N88AP_iBoot:4FF16910 ; "Ethernet disabled\n" N88AP_iBoot:4FF16914 0C4 off_4FF16914 DCD aArmIoSdio ; DATA XREF: LoadImage_kernelcache_img3+8DA�r N88AP_iBoot:4FF16914 ; "arm-io/sdio" N88AP_iBoot:4FF16918 0C4 off_4FF16918 DCD aWifiaddr ; DATA XREF: LoadImage_kernelcache_img3+8F8�r N88AP_iBoot:4FF16918 ; LoadImage_kernelcache_img3+902�r N88AP_iBoot:4FF16918 ; "wifiaddr" N88AP_iBoot:4FF1691C 0C4 off_4FF1691C DCD aTxCalibration ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF1671C�r N88AP_iBoot:4FF1691C ; "tx-calibration" N88AP_iBoot:4FF16920 ; int off_4FF16920 N88AP_iBoot:4FF16920 0C4 off_4FF16920 DCD aInstallingWifiCalibration N88AP_iBoot:4FF16920 ; DATA XREF: LoadImage_kernelcache_img3+92A�r N88AP_iBoot:4FF16920 ; "Installing WIFI Calibration\n" N88AP_iBoot:4FF16924 0C4 off_4FF16924 DCD aVendorId ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16746�r N88AP_iBoot:4FF16924 ; "vendor-id" N88AP_iBoot:4FF16928 0C4 off_4FF16928 DCD aArmIoUart3Bluetooth N88AP_iBoot:4FF16928 ; DATA XREF: LoadImage_kernelcache_img3+966�r N88AP_iBoot:4FF16928 ; "arm-io/uart3/bluetooth" N88AP_iBoot:4FF1692C 0C4 off_4FF1692C DCD aBtaddr ; DATA XREF: LoadImage_kernelcache_img3+98A�r N88AP_iBoot:4FF1692C ; LoadImage_kernelcache_img3+998�r N88AP_iBoot:4FF1692C ; "btaddr" N88AP_iBoot:4FF16930 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16930 N88AP_iBoot:4FF16930 loc_4FF16930 ; CODE XREF: LoadImage_kernelcache_img3+992�j N88AP_iBoot:4FF16930 0C4 STR R0, [SP,#0xC4+var_78] ; Store to Memory N88AP_iBoot:4FF16932 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16934 0C4 MOVS R0, #4 ; Rd = Op2 N88AP_iBoot:4FF16936 0C4 MOVS R2, #6 ; Rd = Op2 N88AP_iBoot:4FF16938 0C4 ADD R3, SP, #0xC4+var_78 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1693A 0C4 BL sub_4FF1A638 ; Branch with Link N88AP_iBoot:4FF1693E N88AP_iBoot:4FF1693E loc_4FF1693E ; CODE XREF: LoadImage_kernelcache_img3+986�j N88AP_iBoot:4FF1693E ; LoadImage_kernelcache_img3+99E�j N88AP_iBoot:4FF1693E 0C4 LDR R3, =aVendorId ; "vendor-id" N88AP_iBoot:4FF16940 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16942 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16944 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16946 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16948 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1694A 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF1694E 0C4 CBZ R0, loc_4FF16960 ; Compare and Branch on Zero N88AP_iBoot:4FF16950 0C4 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF16952 0C4 MOVS R0, #5 ; Rd = Op2 N88AP_iBoot:4FF16954 0C4 STR R3, [SP,#0xC4+var_78] ; Store to Memory N88AP_iBoot:4FF16956 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16958 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF1695A 0C4 ADD R3, SP, #0xC4+var_78 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1695C 0C4 BL sub_4FF1A638 ; Branch with Link N88AP_iBoot:4FF16960 N88AP_iBoot:4FF16960 loc_4FF16960 ; CODE XREF: LoadImage_kernelcache_img3+970�j N88AP_iBoot:4FF16960 ; LoadImage_kernelcache_img3+B4A�j N88AP_iBoot:4FF16960 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16962 0C4 LDR R1, =aBaseband ; "baseband" N88AP_iBoot:4FF16964 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16966 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF1696A 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF1696C 0C4 BEQ loc_4FF169CC ; Branch N88AP_iBoot:4FF1696E 0C4 LDR R3, =aBatteryId ; "battery-id" N88AP_iBoot:4FF16970 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16972 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16974 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16976 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16978 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF1697A 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF1697E 0C4 CBZ R0, loc_4FF16988 ; Compare and Branch on Zero N88AP_iBoot:4FF16980 0C4 LDR R0, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16982 0C4 LDR R1, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF16984 0C4 BL sub_4FF10090 ; Branch with Link N88AP_iBoot:4FF16988 N88AP_iBoot:4FF16988 loc_4FF16988 ; CODE XREF: LoadImage_kernelcache_img3+B7A�j N88AP_iBoot:4FF16988 0C4 LDR R3, =aDeviceImei ; "device-imei" N88AP_iBoot:4FF1698A 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF1698C 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF1698E 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16990 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16992 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16994 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16998 0C4 CBZ R0, loc_4FF169AA ; Compare and Branch on Zero N88AP_iBoot:4FF1699A 0C4 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF1699C 0C4 MOVS R0, #7 ; Rd = Op2 N88AP_iBoot:4FF1699E 0C4 STR R3, [SP,#0xC4+var_78] ; Store to Memory N88AP_iBoot:4FF169A0 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF169A2 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF169A4 0C4 ADD R3, SP, #0xC4+var_78 ; Rd = Op1 + Op2 N88AP_iBoot:4FF169A6 0C4 BL sub_4FF1A638 ; Branch with Link N88AP_iBoot:4FF169AA N88AP_iBoot:4FF169AA loc_4FF169AA ; CODE XREF: LoadImage_kernelcache_img3+B94�j N88AP_iBoot:4FF169AA 0C4 LDR R3, =aSnum ; "snum" N88AP_iBoot:4FF169AC 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF169AE 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF169B0 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF169B2 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF169B4 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF169B6 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF169BA 0C4 CBZ R0, loc_4FF169CC ; Compare and Branch on Zero N88AP_iBoot:4FF169BC 0C4 MOVS R3, #0 ; Rd = Op2 N88AP_iBoot:4FF169BE 0C4 MOVS R0, #8 ; Rd = Op2 N88AP_iBoot:4FF169C0 0C4 STR R3, [SP,#0xC4+var_78] ; Store to Memory N88AP_iBoot:4FF169C2 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF169C4 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF169C6 0C4 ADD R3, SP, #0xC4+var_78 ; Rd = Op1 + Op2 N88AP_iBoot:4FF169C8 0C4 BL sub_4FF1A638 ; Branch with Link N88AP_iBoot:4FF169CC N88AP_iBoot:4FF169CC loc_4FF169CC ; CODE XREF: LoadImage_kernelcache_img3+B68�j N88AP_iBoot:4FF169CC ; LoadImage_kernelcache_img3+BB6�j N88AP_iBoot:4FF169CC 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF169CE 0C4 LDR R1, =aCharger ; "charger" N88AP_iBoot:4FF169D0 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF169D2 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF169D6 0C4 CBZ R0, loc_4FF16A0C ; Compare and Branch on Zero N88AP_iBoot:4FF169D8 0C4 LDR R3, =aBatteryId ; "battery-id" N88AP_iBoot:4FF169DA 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF169DC 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF169DE 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF169E0 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF169E2 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF169E4 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF169E8 0C4 CBZ R0, loc_4FF169F2 ; Compare and Branch on Zero N88AP_iBoot:4FF169EA 0C4 LDR R0, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF169EC 0C4 LDR R1, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF169EE 0C4 BL sub_4FF10090 ; Branch with Link N88AP_iBoot:4FF169F2 N88AP_iBoot:4FF169F2 loc_4FF169F2 ; CODE XREF: LoadImage_kernelcache_img3+BE4�j N88AP_iBoot:4FF169F2 0C4 LDR R3, =aBootVoltage ; "boot-voltage" N88AP_iBoot:4FF169F4 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF169F6 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF169F8 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF169FA 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF169FC 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF169FE 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16A02 0C4 CBZ R0, loc_4FF16A0C ; Compare and Branch on Zero N88AP_iBoot:4FF16A04 0C4 LDR R4, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16A06 0C4 BL sub_4FF04B90 ; Branch with Link N88AP_iBoot:4FF16A0A 0C4 STR R0, [R4] ; Store to Memory N88AP_iBoot:4FF16A0C N88AP_iBoot:4FF16A0C loc_4FF16A0C ; CODE XREF: LoadImage_kernelcache_img3+BD2�j N88AP_iBoot:4FF16A0C ; LoadImage_kernelcache_img3+BFE�j N88AP_iBoot:4FF16A0C 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16A0E 0C4 LDR R1, =aArmIoSpi1MultiTouch ; "arm-io/spi1/multi-touch" N88AP_iBoot:4FF16A10 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A12 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF16A16 0C4 CBZ R0, loc_4FF16A50 ; Compare and Branch on Zero N88AP_iBoot:4FF16A18 0C4 LDR R3, =aMultiTouchCalibration ; "multi-touch-calibration" N88AP_iBoot:4FF16A1A 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16A1C 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A1E 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16A20 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A22 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A24 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16A28 0C4 CBZ R0, loc_4FF16A34 ; Compare and Branch on Zero N88AP_iBoot:4FF16A2A 0C4 LDR R0, ='MtCl' ; Load from Memory N88AP_iBoot:4FF16A2C 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16A2E 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF16A30 0C4 BL sub_4FF17C24 ; Branch with Link N88AP_iBoot:4FF16A34 N88AP_iBoot:4FF16A34 loc_4FF16A34 ; CODE XREF: LoadImage_kernelcache_img3+C24�j N88AP_iBoot:4FF16A34 0C4 LDR R3, =aProxCalibration ; "prox-calibration" N88AP_iBoot:4FF16A36 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16A38 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A3A 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16A3C 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A3E 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A40 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16A44 0C4 CBZ R0, loc_4FF16A50 ; Compare and Branch on Zero N88AP_iBoot:4FF16A46 0C4 LDR R0, ='PxCl' ; Load from Memory N88AP_iBoot:4FF16A48 0C4 LDR R1, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16A4A 0C4 LDR R2, [SP,#0xC4+param_R3] ; Load from Memory N88AP_iBoot:4FF16A4C 0C4 BL sub_4FF17C24 ; Branch with Link N88AP_iBoot:4FF16A50 N88AP_iBoot:4FF16A50 loc_4FF16A50 ; CODE XREF: LoadImage_kernelcache_img3+C12�j N88AP_iBoot:4FF16A50 ; LoadImage_kernelcache_img3+C40�j N88AP_iBoot:4FF16A50 0C4 BL sub_4FF189A4 ; Branch with Link N88AP_iBoot:4FF16A54 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16A56 0C4 BLT loc_4FF16AD4 ; Branch N88AP_iBoot:4FF16A58 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16A5A 0C4 LDR R1, =aChosenIboot ; "chosen/iBoot" N88AP_iBoot:4FF16A5C 0C4 ADD R2, SP, #0xC4+var_60 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A5E 0C4 BL sub_4FF13964 ; Branch with Link N88AP_iBoot:4FF16A62 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16A64 0C4 BEQ loc_4FF16AD4 ; Branch N88AP_iBoot:4FF16A66 0C4 BL sub_4FF19F20 ; Branch with Link N88AP_iBoot:4FF16A6A 0C4 LDR R3, =aStartTime ; "start-time" N88AP_iBoot:4FF16A6C 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A6E 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16A70 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A72 0C4 MOV R10, R0 ; Rd = Op2 N88AP_iBoot:4FF16A74 0C4 MOV R11, R1 ; Rd = Op2 N88AP_iBoot:4FF16A76 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16A78 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A7A 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16A7E 0C4 CBZ R0, loc_4FF16A88 ; Compare and Branch on Zero N88AP_iBoot:4FF16A80 0C4 LDR R3, =dword_4FF2DC60 ; Load from Memory N88AP_iBoot:4FF16A82 0C4 LDR R2, [R3] ; Load from Memory N88AP_iBoot:4FF16A84 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16A86 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16A88 N88AP_iBoot:4FF16A88 loc_4FF16A88 ; CODE XREF: LoadImage_kernelcache_img3+C7A�j N88AP_iBoot:4FF16A88 0C4 LDR R3, =aDebugWaitStart ; "debug-wait-start" N88AP_iBoot:4FF16A8A 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16A8C 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A8E 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16A90 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A92 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16A94 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16A98 0C4 CBZ R0, loc_4FF16AA2 ; Compare and Branch on Zero N88AP_iBoot:4FF16A9A 0C4 LDR R3, =dword_4FF2DC48 ; Load from Memory N88AP_iBoot:4FF16A9C 0C4 LDR R2, [R3] ; Load from Memory N88AP_iBoot:4FF16A9E 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16AA0 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16AA2 N88AP_iBoot:4FF16AA2 loc_4FF16AA2 ; CODE XREF: LoadImage_kernelcache_img3+C94�j N88AP_iBoot:4FF16AA2 0C4 LDR R3, =aLoadKernelStart ; "load-kernel-start" N88AP_iBoot:4FF16AA4 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16AA6 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16AA8 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16AAA 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16AAC 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16AAE 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16AB2 0C4 CBZ R0, loc_4FF16ABC ; Compare and Branch on Zero N88AP_iBoot:4FF16AB4 0C4 LDR R3, =dword_4FF2DC50 ; Load from Memory N88AP_iBoot:4FF16AB6 0C4 LDR R2, [R3] ; Load from Memory N88AP_iBoot:4FF16AB8 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16ABA 0C4 STR R2, [R3] ; Store to Memory N88AP_iBoot:4FF16ABC N88AP_iBoot:4FF16ABC loc_4FF16ABC ; CODE XREF: LoadImage_kernelcache_img3+CAE�j N88AP_iBoot:4FF16ABC 0C4 LDR R3, =aPopulateRegistryTime ; "populate-registry-time" N88AP_iBoot:4FF16ABE 0C4 LDR R0, [SP,#0xC4+var_60] ; Load from Memory N88AP_iBoot:4FF16AC0 0C4 ADD R1, SP, #0xC4+var_6C ; Rd = Op1 + Op2 N88AP_iBoot:4FF16AC2 0C4 STR R3, [SP,#0xC4+var_6C] ; Store to Memory N88AP_iBoot:4FF16AC4 0C4 ADD R2, SP, #0xC4+param_R2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16AC6 0C4 ADD R3, SP, #0xC4+param_R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16AC8 0C4 BL sub_4FF1390C ; Branch with Link N88AP_iBoot:4FF16ACC 0C4 CBZ R0, loc_4FF16AD4 ; Compare and Branch on Zero N88AP_iBoot:4FF16ACE 0C4 LDR R3, [SP,#0xC4+param_R2] ; Load from Memory N88AP_iBoot:4FF16AD0 0C4 STR.W R10, [R3] ; Store to Memory N88AP_iBoot:4FF16AD4 N88AP_iBoot:4FF16AD4 loc_4FF16AD4 ; CODE XREF: LoadImage_kernelcache_img3+5E8�j N88AP_iBoot:4FF16AD4 ; LoadImage_kernelcache_img3+C52�j N88AP_iBoot:4FF16AD4 ; LoadImage_kernelcache_img3+C60�j N88AP_iBoot:4FF16AD4 ; LoadImage_kernelcache_img3+CC8�j N88AP_iBoot:4FF16AD4 0C4 MOV.W R0, #0x1000 ; Rd = Op2 N88AP_iBoot:4FF16AD8 0C4 BL sub_4FF15CC8 ; Branch with Link N88AP_iBoot:4FF16ADC 0C4 LDR R3, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF16ADE 0C4 LDR R4, =dword_4FF2DC40 ; Load from Memory N88AP_iBoot:4FF16AE0 0C4 MOV.W R2, #0x1000 ; Rd = Op2 N88AP_iBoot:4FF16AE4 0C4 LDR R1, [R3,#8] ; Load from Memory N88AP_iBoot:4FF16AE6 0C4 LDR R3, [R3,#4] ; Load from Memory N88AP_iBoot:4FF16AE8 0C4 SUBS R1, R1, R3 ; Rd = Op1 - Op2 N88AP_iBoot:4FF16AEA 0C4 ADDS R1, R1, R0 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16AEC 0C4 LDR R0, =aBootargs ; "BootArgs" N88AP_iBoot:4FF16AEE 0C4 STR R1, [R4] ; Store to Memory N88AP_iBoot:4FF16AF0 0C4 BL N88AP__iBoot__AllocateMemoryRange ; Branch with Link N88AP_iBoot:4FF16AF4 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16AF6 0C4 BL sub_4FF15CC8 ; Branch with Link N88AP_iBoot:4FF16AFA 0C4 LDR R1, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF16AFC 0C4 LDR R3, [R1,#4] ; Load from Memory N88AP_iBoot:4FF16AFE 0C4 LDR R2, [R1,#8] ; Load from Memory N88AP_iBoot:4FF16B00 0C4 SUBS R2, R2, R3 ; Rd = Op1 - Op2 N88AP_iBoot:4FF16B02 0C4 LDR R3, =0xFFFFC000 ; Load from Memory N88AP_iBoot:4FF16B04 0C4 ADD.W R0, R0, #0x3000 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16B08 0C4 ANDS R0, R3 ; Rd = Op1 & Op2 N88AP_iBoot:4FF16B0A 0C4 ADD.W R3, R2, R0 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16B0E 0C4 MOV.W R2, #0x1000 ; Rd = Op2 N88AP_iBoot:4FF16B12 0C4 STR R3, [R1,#0x10] ; Store to Memory N88AP_iBoot:4FF16B14 0C4 LDR R0, [R4] ; Load from Memory N88AP_iBoot:4FF16B16 0C4 MOVS R1, #0 ; Rd = Op2 N88AP_iBoot:4FF16B18 0C4 BLX sub_4FF1ED54 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF16B1C 0C4 LDR R1, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF16B1E 0C4 MOV.W R2, #0x138 ; Rd = Op2 N88AP_iBoot:4FF16B22 0C4 LDR R0, [R4] ; Load from Memory N88AP_iBoot:4FF16B24 0C4 BLX sub_4FF1EE70 ; Branch with Link and Exchange (immediate address) N88AP_iBoot:4FF16B28 0C4 LDR R0, =0x40000090 ; Load from Memory N88AP_iBoot:4FF16B2A 0C4 BL N88AP__iBOOT__iBootSleepValid ; Branch with Link N88AP_iBoot:4FF16B2E 0C4 LDR R3, =dword_4FF2CBC8 ; Load from Memory N88AP_iBoot:4FF16B30 0C4 LDR R3, [R3] ; Load from Memory N88AP_iBoot:4FF16B32 0C4 CBNZ R3, loc_4FF16B40 ; Compare and Branch on Non-Zero N88AP_iBoot:4FF16B34 N88AP_iBoot:4FF16B34 loc_4FF16B34 ; CODE XREF: LoadImage_kernelcache_img3+166�j N88AP_iBoot:4FF16B34 ; LoadImage_kernelcache_img3+29A�j N88AP_iBoot:4FF16B34 0C4 MOVS R0, #1 ; Rd = Op2 N88AP_iBoot:4FF16B36 0C4 BL sub_4FF1A10C ; Branch with Link N88AP_iBoot:4FF16B3A 0C4 MOV R0, 0xFFFFFFF9 N88AP_iBoot:4FF16B3E 0C4 B loc_4FF16BA8 ; Branch N88AP_iBoot:4FF16B40 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16B40 N88AP_iBoot:4FF16B40 loc_4FF16B40 ; CODE XREF: LoadImage_kernelcache_img3+D2E�j N88AP_iBoot:4FF16B40 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16B42 0C4 STR.W R3, [R8] ; Store to Memory N88AP_iBoot:4FF16B46 0C4 B loc_4FF16BA8 ; Branch N88AP_iBoot:4FF16B48 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16B48 N88AP_iBoot:4FF16B48 loc_4FF16B48 ; CODE XREF: LoadImage_kernelcache_img3+8A�j N88AP_iBoot:4FF16B48 0C4 LDR R6, [SP,#0xC4+var_58] ; Load from Memory N88AP_iBoot:4FF16B4A 0C4 LDR R0, [R6] ; Load from Memory N88AP_iBoot:4FF16B4C 0C4 BL sub_4FF1F408 ; Branch with Link N88AP_iBoot:4FF16B50 0C4 CMP R0, R4 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16B52 0C4 IT NE ; If Then N88AP_iBoot:4FF16B54 0C4 LDRNE R0, =aUnknownKernelcacheSignature ; "unknown kernelcache signature\n" N88AP_iBoot:4FF16B56 0C4 BNE.W loc_4FF15F30 ; Branch N88AP_iBoot:4FF16B5A 0C4 B.W loc_4FF15E92 ; Branch N88AP_iBoot:4FF16B5E ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16B5E N88AP_iBoot:4FF16B5E loc_4FF16B5E ; CODE XREF: LoadImage_kernelcache_img3+15A�j N88AP_iBoot:4FF16B5E 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16B60 0C4 MOVS R2, #1 ; Rd = Op2 N88AP_iBoot:4FF16B62 0C4 MOV R1, R0 ; Rd = Op2 N88AP_iBoot:4FF16B64 0C4 BL sub_4FF19FF0 ; Branch with Link N88AP_iBoot:4FF16B68 0C4 LDR R2, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF16B6A 0C4 MOV.W R3, #1 ; Rd = Op2 N88AP_iBoot:4FF16B6E 0C4 LDR R6, [SP,#0xC4+var_58] ; Load from Memory N88AP_iBoot:4FF16B70 0C4 STRH R3, [R2] ; Store to Memory N88AP_iBoot:4FF16B72 0C4 BL sub_4FF1E3F8 ; Branch with Link N88AP_iBoot:4FF16B76 0C4 LDR R1, =dword_4FF2CBCC ; Load from Memory N88AP_iBoot:4FF16B78 0C4 MOV.W R3, #0xC0000000 ; Rd = Op2 N88AP_iBoot:4FF16B7C 0C4 STR R3, [R1,#4] ; Store to Memory N88AP_iBoot:4FF16B7E 0C4 ADD.W R3, R3, #0x80000000 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16B82 0C4 STR R3, [R1,#8] ; Store to Memory N88AP_iBoot:4FF16B84 0C4 ADD.W R3, R3, #0xD0000000 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16B88 0C4 STR R3, [R1,#0xC] ; Store to Memory N88AP_iBoot:4FF16B8A 0C4 ADDS R0, #1 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16B8C 0C4 STRH R0, [R1,#2] ; Store to Memory N88AP_iBoot:4FF16B8E 0C4 LDR R0, =dword_4FF2CD04 ; Load from Memory N88AP_iBoot:4FF16B90 0C4 LDR R1, =dword_4FF2CD08 ; Load from Memory N88AP_iBoot:4FF16B92 0C4 BL sub_4FF13AEC ; Branch with Link N88AP_iBoot:4FF16B96 0C4 CMP R0, #0 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16B98 0C4 MOV R4, R0 ; Rd = Op2 N88AP_iBoot:4FF16B9A 0C4 BGE.W loc_4FF15F6E ; Branch N88AP_iBoot:4FF16B9E 0C4 B.W loc_4FF15F62 ; Branch N88AP_iBoot:4FF16BA2 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16BA2 N88AP_iBoot:4FF16BA2 loc_4FF16BA2 ; CODE XREF: LoadImage_kernelcache_img3+198�j N88AP_iBoot:4FF16BA2 ; LoadImage_kernelcache_img3+1E0�j N88AP_iBoot:4FF16BA2 ; LoadImage_kernelcache_img3+262�j N88AP_iBoot:4FF16BA2 ; LoadImage_kernelcache_img3+274�j N88AP_iBoot:4FF16BA2 ; LoadImage_kernelcache_img3+294�j N88AP_iBoot:4FF16BA2 0C4 MOVS R0, #0 ; Rd = Op2 N88AP_iBoot:4FF16BA4 0C4 B.W loc_4FF160A2 ; Branch N88AP_iBoot:4FF16BA8 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16BA8 N88AP_iBoot:4FF16BA8 loc_4FF16BA8 ; CODE XREF: LoadImage_kernelcache_img3+28�j N88AP_iBoot:4FF16BA8 ; LoadImage_kernelcache_img3+40�j N88AP_iBoot:4FF16BA8 ; LoadImage_kernelcache_img3+6C�j N88AP_iBoot:4FF16BA8 ; LoadImage_kernelcache_img3+86�j N88AP_iBoot:4FF16BA8 ; LoadImage_kernelcache_img3+142�j ... N88AP_iBoot:4FF16BA8 0C4 LDR R2, [SP,#0xC4+var_24] ; Load from Memory N88AP_iBoot:4FF16BAA 0C4 LDR R3, [R5] ; Load from Memory N88AP_iBoot:4FF16BAC 0C4 CMP R2, R3 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16BAE 0C4 BEQ loc_4FF16BB4 ; Branch N88AP_iBoot:4FF16BB0 0C4 BL N88AP__iBOOT____stack_chk_fail ; Branch with Link N88AP_iBoot:4FF16BB4 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16BB4 N88AP_iBoot:4FF16BB4 loc_4FF16BB4 ; CODE XREF: LoadImage_kernelcache_img3+DAA�j N88AP_iBoot:4FF16BB4 0C4 SUB.W SP, R7, #0x18 ; Rd = Op1 - Op2 N88AP_iBoot:4FF16BB8 0C4 POP.W {R8,R10,R11} ; Pop registers N88AP_iBoot:4FF16BBC 0B8 POP {R4-R7,PC} ; Pop registers N88AP_iBoot:4FF16BBC ; End of function LoadImage_kernelcache_img3 N88AP_iBoot:4FF16BBC N88AP_iBoot:4FF16BBC ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16BBE DCW 0xBF00 N88AP_iBoot:4FF16BC0 off_4FF16BC0 DCD aVendorId ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF1693E�r N88AP_iBoot:4FF16BC0 ; "vendor-id" N88AP_iBoot:4FF16BC4 off_4FF16BC4 DCD aBaseband ; DATA XREF: LoadImage_kernelcache_img3+B5E�r N88AP_iBoot:4FF16BC4 ; "baseband" N88AP_iBoot:4FF16BC8 off_4FF16BC8 DCD aBatteryId ; DATA XREF: LoadImage_kernelcache_img3+B6A�r N88AP_iBoot:4FF16BC8 ; LoadImage_kernelcache_img3+BD4�r N88AP_iBoot:4FF16BC8 ; "battery-id" N88AP_iBoot:4FF16BCC off_4FF16BCC DCD aDeviceImei ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16988�r N88AP_iBoot:4FF16BCC ; "device-imei" N88AP_iBoot:4FF16BD0 off_4FF16BD0 DCD aSnum ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF169AA�r N88AP_iBoot:4FF16BD0 ; "snum" N88AP_iBoot:4FF16BD4 off_4FF16BD4 DCD aCharger ; DATA XREF: LoadImage_kernelcache_img3+BCA�r N88AP_iBoot:4FF16BD4 ; "charger" N88AP_iBoot:4FF16BD8 off_4FF16BD8 DCD aBootVoltage ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF169F2�r N88AP_iBoot:4FF16BD8 ; "boot-voltage" N88AP_iBoot:4FF16BDC off_4FF16BDC DCD aArmIoSpi1MultiTouch N88AP_iBoot:4FF16BDC ; DATA XREF: LoadImage_kernelcache_img3+C0A�r N88AP_iBoot:4FF16BDC ; "arm-io/spi1/multi-touch" N88AP_iBoot:4FF16BE0 off_4FF16BE0 DCD aMultiTouchCalibration N88AP_iBoot:4FF16BE0 ; DATA XREF: LoadImage_kernelcache_img3+C14�r N88AP_iBoot:4FF16BE0 ; "multi-touch-calibration" N88AP_iBoot:4FF16BE4 dword_4FF16BE4 DCD 'MtCl' ; DATA XREF: LoadImage_kernelcache_img3+C26�r N88AP_iBoot:4FF16BE8 off_4FF16BE8 DCD aProxCalibration ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16A34�r N88AP_iBoot:4FF16BE8 ; "prox-calibration" N88AP_iBoot:4FF16BEC dword_4FF16BEC DCD 'PxCl' ; DATA XREF: LoadImage_kernelcache_img3+C42�r N88AP_iBoot:4FF16BF0 off_4FF16BF0 DCD aChosenIboot ; DATA XREF: LoadImage_kernelcache_img3+C56�r N88AP_iBoot:4FF16BF0 ; "chosen/iBoot" N88AP_iBoot:4FF16BF4 off_4FF16BF4 DCD aStartTime ; DATA XREF: LoadImage_kernelcache_img3+C66�r N88AP_iBoot:4FF16BF4 ; "start-time" N88AP_iBoot:4FF16BF8 off_4FF16BF8 DCD dword_4FF2DC60 ; DATA XREF: LoadImage_kernelcache_img3+C7C�r N88AP_iBoot:4FF16BFC off_4FF16BFC DCD aDebugWaitStart ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16A88�r N88AP_iBoot:4FF16BFC ; "debug-wait-start" N88AP_iBoot:4FF16C00 off_4FF16C00 DCD dword_4FF2DC48 ; DATA XREF: LoadImage_kernelcache_img3+C96�r N88AP_iBoot:4FF16C04 off_4FF16C04 DCD aLoadKernelStart ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16AA2�r N88AP_iBoot:4FF16C04 ; "load-kernel-start" N88AP_iBoot:4FF16C08 off_4FF16C08 DCD dword_4FF2DC50 ; DATA XREF: LoadImage_kernelcache_img3+CB0�r N88AP_iBoot:4FF16C0C off_4FF16C0C DCD aPopulateRegistryTime N88AP_iBoot:4FF16C0C ; DATA XREF: LoadImage_kernelcache_img3:loc_4FF16ABC�r N88AP_iBoot:4FF16C0C ; "populate-registry-time" N88AP_iBoot:4FF16C10 off_4FF16C10 DCD dword_4FF2CBCC ; DATA XREF: LoadImage_kernelcache_img3+CD8�r N88AP_iBoot:4FF16C10 ; LoadImage_kernelcache_img3+CF6�r N88AP_iBoot:4FF16C10 ; LoadImage_kernelcache_img3+D18�r N88AP_iBoot:4FF16C10 ; LoadImage_kernelcache_img3+D64�r N88AP_iBoot:4FF16C10 ; LoadImage_kernelcache_img3+D72�r N88AP_iBoot:4FF16C14 off_4FF16C14 DCD dword_4FF2DC40 ; DATA XREF: LoadImage_kernelcache_img3+CDA�r N88AP_iBoot:4FF16C18 off_4FF16C18 DCD aBootargs ; DATA XREF: LoadImage_kernelcache_img3+CE8�r N88AP_iBoot:4FF16C18 ; "BootArgs" N88AP_iBoot:4FF16C1C dword_4FF16C1C DCD 0xFFFFC000 ; DATA XREF: LoadImage_kernelcache_img3+CFE�r N88AP_iBoot:4FF16C20 dword_4FF16C20 DCD 0x40000090 ; DATA XREF: LoadImage_kernelcache_img3+D24�r N88AP_iBoot:4FF16C24 off_4FF16C24 DCD dword_4FF2CBC8 ; DATA XREF: LoadImage_kernelcache_img3+D2A�r N88AP_iBoot:4FF16C28 off_4FF16C28 DCD aUnknownKernelcacheSignature N88AP_iBoot:4FF16C28 ; DATA XREF: LoadImage_kernelcache_img3+D50�r N88AP_iBoot:4FF16C28 ; "unknown kernelcache signature\n" N88AP_iBoot:4FF16C2C off_4FF16C2C DCD dword_4FF2CD04 ; DATA XREF: LoadImage_kernelcache_img3+D8A�r N88AP_iBoot:4FF16C30 off_4FF16C30 DCD dword_4FF2CD08 ; DATA XREF: LoadImage_kernelcache_img3+D8C�r N88AP_iBoot:4FF16C34 N88AP_iBoot:4FF16C34 ; =============== S U B R O U T I N E ======================================= N88AP_iBoot:4FF16C34 N88AP_iBoot:4FF16C34 N88AP_iBoot:4FF16C34 sub_4FF16C34 ; CODE XREF: N88AP__iBoot__load_bank_partitions+6E�p N88AP_iBoot:4FF16C34 ; N88AP__iBoot__load_bank_partitions+D0�p N88AP_iBoot:4FF16C34 ; N88AP__iBoot__nvram_save+D2�p N88AP_iBoot:4FF16C34 ; N88AP__iBoot__nvram_save+120�p N88AP_iBoot:4FF16C34 ; N88AP__iBoot__nvram_save+178�p N88AP_iBoot:4FF16C34 000 LDRB R3, [R0] ; Load from Memory N88AP_iBoot:4FF16C36 000 ADDS R2, R0, #2 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16C38 000 ADD.W R12, R0, #0x10 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16C3C 000 B loc_4FF16C46 ; Branch N88AP_iBoot:4FF16C3E ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16C3E N88AP_iBoot:4FF16C3E loc_4FF16C3E ; CODE XREF: sub_4FF16C34+18�j N88AP_iBoot:4FF16C3E 000 LDRB.W R0, [R2,#-1] ; Load from Memory N88AP_iBoot:4FF16C42 000 ADD R0, R3 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16C44 000 UXTH R3, R0 ; Unsigned extend halfword to word N88AP_iBoot:4FF16C46 N88AP_iBoot:4FF16C46 loc_4FF16C46 ; CODE XREF: sub_4FF16C34+8�j N88AP_iBoot:4FF16C46 000 MOV R1, R2 ; Rd = Op2 N88AP_iBoot:4FF16C48 000 ADDS R2, #1 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16C4A 000 CMP R12, R1 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16C4C 000 BHI loc_4FF16C3E ; Branch N88AP_iBoot:4FF16C4E 000 B loc_4FF16C58 ; Branch N88AP_iBoot:4FF16C50 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16C50 N88AP_iBoot:4FF16C50 loc_4FF16C50 ; CODE XREF: sub_4FF16C34+26�j N88AP_iBoot:4FF16C50 000 AND.W R2, R3, #0xFF ; Rd = Op1 & Op2 N88AP_iBoot:4FF16C54 000 ADD.W R3, R2, R3,LSR#8 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16C58 N88AP_iBoot:4FF16C58 loc_4FF16C58 ; CODE XREF: sub_4FF16C34+1A�j N88AP_iBoot:4FF16C58 000 CMP R3, #0xFF ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16C5A 000 BHI loc_4FF16C50 ; Branch N88AP_iBoot:4FF16C5C 000 UXTB R0, R3 ; Unsigned extend byte to word N88AP_iBoot:4FF16C5E 000 BX LR ; Branch to/from Thumb mode N88AP_iBoot:4FF16C5E ; End of function sub_4FF16C34 N88AP_iBoot:4FF16C5E N88AP_iBoot:4FF16C60 N88AP_iBoot:4FF16C60 ; =============== S U B R O U T I N E ======================================= N88AP_iBoot:4FF16C60 N88AP_iBoot:4FF16C60 N88AP_iBoot:4FF16C60 sub_4FF16C60 ; CODE XREF: N88AP__iBoot__load_bank_partitions+1F2�p N88AP_iBoot:4FF16C60 ; N88AP__iBoot__nvram_save+1B2�p N88AP_iBoot:4FF16C60 000 PUSH {R4,LR} ; Push registers N88AP_iBoot:4FF16C62 008 LDR.W R12, =off_4FF2A2FC ; Load from Memory N88AP_iBoot:4FF16C66 008 LDR.W R9, =dword_4FF2CE64 ; Load from Memory N88AP_iBoot:4FF16C6A 008 LDR.W LR, =dword_4FF2CE60 ; Load from Memory N88AP_iBoot:4FF16C6E 008 LDR.W R3, [R12,#4] ; Load from Memory N88AP_iBoot:4FF16C72 008 LDR.W R4, [R9] ; Load from Memory N88AP_iBoot:4FF16C76 008 LDR.W R1, [LR] ; Load from Memory N88AP_iBoot:4FF16C7A 008 B loc_4FF16C96 ; Branch N88AP_iBoot:4FF16C7C ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16C7C N88AP_iBoot:4FF16C7C loc_4FF16C7C ; CODE XREF: sub_4FF16C60+38�j N88AP_iBoot:4FF16C7C 008 CBZ R4, loc_4FF16C86 ; Compare and Branch on Zero N88AP_iBoot:4FF16C7E 008 LDR R0, [R3,#0x20] ; Load from Memory N88AP_iBoot:4FF16C80 008 LDR R2, [R4,#0x20] ; Load from Memory N88AP_iBoot:4FF16C82 008 CMP R0, R2 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16C84 008 BCS loc_4FF16C88 ; Branch N88AP_iBoot:4FF16C86 N88AP_iBoot:4FF16C86 loc_4FF16C86 ; CODE XREF: sub_4FF16C60:loc_4FF16C7C�j N88AP_iBoot:4FF16C86 008 MOV R4, R3 ; Rd = Op2 N88AP_iBoot:4FF16C88 N88AP_iBoot:4FF16C88 loc_4FF16C88 ; CODE XREF: sub_4FF16C60+24�j N88AP_iBoot:4FF16C88 008 CBZ R1, loc_4FF16C92 ; Compare and Branch on Zero N88AP_iBoot:4FF16C8A 008 LDR R0, [R3,#0x20] ; Load from Memory N88AP_iBoot:4FF16C8C 008 LDR R2, [R1,#0x20] ; Load from Memory N88AP_iBoot:4FF16C8E 008 CMP R0, R2 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16C90 008 BLS loc_4FF16C94 ; Branch N88AP_iBoot:4FF16C92 N88AP_iBoot:4FF16C92 loc_4FF16C92 ; CODE XREF: sub_4FF16C60:loc_4FF16C88�j N88AP_iBoot:4FF16C92 008 MOV R1, R3 ; Rd = Op2 N88AP_iBoot:4FF16C94 N88AP_iBoot:4FF16C94 loc_4FF16C94 ; CODE XREF: sub_4FF16C60+30�j N88AP_iBoot:4FF16C94 008 LDR R3, [R3,#4] ; Load from Memory N88AP_iBoot:4FF16C96 N88AP_iBoot:4FF16C96 loc_4FF16C96 ; CODE XREF: sub_4FF16C60+1A�j N88AP_iBoot:4FF16C96 008 CMP R3, R12 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16C98 008 BNE loc_4FF16C7C ; Branch N88AP_iBoot:4FF16C9A 008 STR.W R4, [R9] ; Store to Memory N88AP_iBoot:4FF16C9E 008 STR.W R1, [LR] ; Store to Memory N88AP_iBoot:4FF16CA2 008 POP {R4,PC} ; Pop registers N88AP_iBoot:4FF16CA2 ; End of function sub_4FF16C60 N88AP_iBoot:4FF16CA2 N88AP_iBoot:4FF16CA2 ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16CA4 off_4FF16CA4 DCD off_4FF2A2FC ; DATA XREF: sub_4FF16C60+2�r N88AP_iBoot:4FF16CA8 off_4FF16CA8 DCD dword_4FF2CE64 ; DATA XREF: sub_4FF16C60+6�r N88AP_iBoot:4FF16CAC off_4FF16CAC DCD dword_4FF2CE60 ; DATA XREF: sub_4FF16C60+A�r N88AP_iBoot:4FF16CB0 N88AP_iBoot:4FF16CB0 ; =============== S U B R O U T I N E ======================================= N88AP_iBoot:4FF16CB0 N88AP_iBoot:4FF16CB0 ; Attributes: bp-based frame N88AP_iBoot:4FF16CB0 N88AP_iBoot:4FF16CB0 sub_4FF16CB0 ; CODE XREF: N88AP__iBoot__load_bank_partitions+1FC�p N88AP_iBoot:4FF16CB0 ; N88AP__iBoot__nvram_save+2C�p N88AP_iBoot:4FF16CB0 N88AP_iBoot:4FF16CB0 oldR4 = -0x14 N88AP_iBoot:4FF16CB0 oldR5 = -0x10 N88AP_iBoot:4FF16CB0 oldR6 = -0xC N88AP_iBoot:4FF16CB0 oldR7 = -8 N88AP_iBoot:4FF16CB0 oldLR = -4 N88AP_iBoot:4FF16CB0 N88AP_iBoot:4FF16CB0 000 PUSH {R4-R7,LR} ; Push registers N88AP_iBoot:4FF16CB2 014 ADD R7, SP, #0xC ; Rd = Op1 + Op2 N88AP_iBoot:4FF16CB4 014 LDR R4, [R0,#0xC] ; Load from Memory N88AP_iBoot:4FF16CB6 014 ADD.W R5, R0, #8 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16CBA 014 MOV R6, R1 ; Rd = Op2 N88AP_iBoot:4FF16CBC 014 B loc_4FF16CCC ; Branch N88AP_iBoot:4FF16CBE ; --------------------------------------------------------------------------- N88AP_iBoot:4FF16CBE N88AP_iBoot:4FF16CBE loc_4FF16CBE ; CODE XREF: sub_4FF16CB0+1E�j N88AP_iBoot:4FF16CBE 014 ADD.W R1, R4, #0x14 ; Rd = Op1 + Op2 N88AP_iBoot:4FF16CC2 014 MOV R0, R6 ; Rd = Op2 N88AP_iBoot:4FF16CC4 014 BL sub_4FF1ECA0 ; Branch with Link N88AP_iBoot:4FF16CC8 014 CBZ R0, loc_4FF16CD2 ; Compare and Branch on Zero N88AP_iBoot:4FF16CCA 014 LDR R4, [R4,#4] ; Load from Memory N88AP_iBoot:4FF16CCC N88AP_iBoot:4FF16CCC loc_4FF16CCC ; CODE XREF: sub_4FF16CB0+C�j N88AP_iBoot:4FF16CCC 014 CMP R4, R5 ; Set cond. codes on Op1 - Op2 N88AP_iBoot:4FF16CCE 014 BNE loc_4FF16CBE ; Branch N88AP_iBoot:4FF16CD0 014 MOVS R4, #0 ; Rd = Op2 N88AP_iBoot:4FF16CD2 N88AP_iBoot:4FF16CD2 loc_4FF16CD2 ; CODE XREF: sub_4FF16CB0+18�j N88AP_iBoot:4FF16CD2 014 MOV R0, R4 ; Rd = Op2 N88AP_iBoot:4FF16CD4 014 POP {R4-R7,PC} ; Pop registers N88AP_iBoot:4FF16CD4 ; End of function sub_4FF16CB0 N88AP_iBoot:4FF16CD4