RAM_ARM9:0203A228 ; =============== S U B R O U T I N E ======================================= RAM_ARM9:0203A228 RAM_ARM9:0203A228 RAM_ARM9:0203A228 ; void *__fastcall allocateBlockFromExpHeap(int blkGroupID, u32 blockLength, bool clearBlock, const char *pSourceFile, int marker) RAM_ARM9:0203A228 allocateBlockFromExpHeap ; CODE XREF: setupMainGFSystems+EEp RAM_ARM9:0203A228 ; setupMainGFSystems+108p ... RAM_ARM9:0203A228 RAM_ARM9:0203A228 pSourceSrc = -0x18 RAM_ARM9:0203A228 marker = 0 RAM_ARM9:0203A228 RAM_ARM9:0203A228 F8 B5 PUSH {R3-R7,LR} RAM_ARM9:0203A22A 06 1C MOVS R6, R0 RAM_ARM9:0203A22C 0D 1C MOVS R5, R1 RAM_ARM9:0203A22E 17 1C MOVS R7, R2 RAM_ARM9:0203A230 00 93 STR R3, [SP,#0x18+pSourceSrc] RAM_ARM9:0203A232 FF F7 C9 FD BL getNewBlockFromHeapNum RAM_ARM9:0203A236 04 1C MOVS R4, R0 RAM_ARM9:0203A238 0B D1 BNE loc_203A252 RAM_ARM9:0203A23A FF F7 43 FF BL getAllocatorStatus RAM_ARM9:0203A23E 06 AB ADD R3, SP, #0x18+marker RAM_ARM9:0203A240 1B 88 LDRH R3, [R3] RAM_ARM9:0203A242 00 9A LDR R2, [SP,#0x18+pSourceSrc] RAM_ARM9:0203A244 30 1C MOVS R0, R6 ; blkGroupID RAM_ARM9:0203A246 29 1C MOVS R1, R5 ; blockLength RAM_ARM9:0203A248 00 F0 9A F8 BL abortIfBlockIsAllocatedWrong RAM_ARM9:0203A24C ; --------------------------------------------------------------------------- RAM_ARM9:0203A24C 42 F0 A8 FA BL OS_Panic RAM_ARM9:0203A250 10 E0 B loc_203A274 RAM_ARM9:0203A252 ; --------------------------------------------------------------------------- RAM_ARM9:0203A252 RAM_ARM9:0203A252 loc_203A252 ; CODE XREF: allocateBlockFromExpHeap+10j RAM_ARM9:0203A252 06 AA ADD R2, SP, #0x18 RAM_ARM9:0203A254 12 88 LDRH R2, [R2] ; marker RAM_ARM9:0203A256 00 99 LDR R1, [SP,#0x18+pSourceSrc] ; pSourceSrc RAM_ARM9:0203A258 00 F0 58 F8 BL copySourceFileToAllocatedBlock RAM_ARM9:0203A25C 30 1C MOVS R0, R6 ; blkGroupID RAM_ARM9:0203A25E 21 1C MOVS R1, R4 ; pBlk RAM_ARM9:0203A260 2A 1C MOVS R2, R5 RAM_ARM9:0203A262 00 F0 C9 F8 BL verifySysBlkGroup RAM_ARM9:0203A266 00 2F CMP R7, #0 RAM_ARM9:0203A268 04 D0 BEQ loc_203A274 RAM_ARM9:0203A26A 00 20 MOVS R0, #0 ; data RAM_ARM9:0203A26C 21 1C MOVS R1, R4 ; pSrc RAM_ARM9:0203A26E 2A 1C MOVS R2, R5 ; dataSize RAM_ARM9:0203A270 3E F0 08 EA BLX MIi_CpuClear32 RAM_ARM9:0203A274 RAM_ARM9:0203A274 loc_203A274 ; CODE XREF: allocateBlockFromExpHeap+28j RAM_ARM9:0203A274 ; allocateBlockFromExpHeap+40j RAM_ARM9:0203A274 20 1C MOVS R0, R4 RAM_ARM9:0203A276 F8 BD POP {R3-R7,PC} RAM_ARM9:0203A276 ; End of function allocateBlockFromExpHeap