diff --git a/irdb-libs/ir_builders/fill_in_cfg.cpp b/irdb-libs/ir_builders/fill_in_cfg.cpp index fd821cad767a349330f6065893a06f21d38a0d68..7c0190a73649bcb55fb185d4816408bb41654162 100644 --- a/irdb-libs/ir_builders/fill_in_cfg.cpp +++ b/irdb-libs/ir_builders/fill_in_cfg.cpp @@ -608,10 +608,11 @@ void PopulateCFG::detect_scoops_in_code(FileIR_t *firp) // if there is an indexing operation, skip this instruction. if( mem_op->hasIndexRegister()) continue; - // sanity check that it's a memory operation, and extract fields - assert(mem_op->isMemory()); + // sanity check that it's a memory operation, as it could be a direct reference to the PC. + if(!mem_op->isMemory()) continue; + // extract fields referenced_address = mem_op->getMemoryDisplacement() + (is_arm32 ? insn->getAddress()->getVirtualOffset() + 8 : 0); }