@ 11950148 .globl write_nand write_nand: oldR4 = -0x20 oldR5 = -0x1C oldR6 = -0x18 oldR7 = -0x14 oldR8 = -0x10 oldR11 = -0xC oldSP = -8 oldLR = -4 MOV R12, SP STMFD SP!, {R4-R8,R11,R12,LR,PC} CMP R1, #0 CMPNE R2, #0x200000 SUB R11, R12, #4 SUB SP, SP, #4 MOV R4, R2 MOV R5, R1 MOV R6, R0 MOV R7, #0 MOV R8, R0 BCS loc_119501D8 loc_11950178: MOV R0, R4 MOV LR, PC LDR PC, sub_1182E8C0 CMP R0, R4 BEQ loc_119501E4 loc_11950188: MOV R1, R6 MOV R2, R5 MOV R0, R4 MOV LR, PC LDR PC, write_nand_page MOV R3, R0,LSL#16 MOV R3, R3,ASR#16 CMP R3, #0 MOV R0, R4 ADD R6, R6, R3 BLE loc_119501FC ADD R7, R7, R3 ADD R4, R4, R3 RSB R5, R3, R5 MOV LR, PC LDR PC, flash_get_block_data_size CMP R0, R7 MOVEQ R7, #0 MOVEQ R8, R6 loc_119501CC: CMP R5, #0 CMPNE R4, #0x200000 BCC loc_11950178 loc_119501D8: RSBS R0, R5, #1 MOVCC R0, #0 LDMED SP, {R4-R8,R11,SP,PC} @ --------------------------------------------------------------------------- loc_119501E4: MOV LR, PC LDR PC, flash_is_block_bad CMP R0, #0 BEQ loc_11950188 MOV LR, PC LDR PC, flash_get_block_data_size ADD R4, R4, R0 B loc_119501CC @ --------------------------------------------------------------------------- loc_119501FC: MOV LR, PC LDR PC, sub_1182E8C0 ADD R5, R5, R7 MOV R6, R8 MOV R7, #0 MOV R4, R0 MOV LR, PC LDR PC, flash_get_block_data_size ADD R4, R4, R0 B loc_119501CC sub_1182E8C0: .global sub_1182E8C0 .long 0x101A77E0 write_nand_page: .global write_nand_page .long 0x101A7D28 flash_get_block_data_size: .global flash_get_block_data_size .long 0x101A777C flash_is_block_bad: .global flash_is_block_bad .long 0x101A7818