unsigned prev_size = 0;
unsigned prev_pos = 0;
unsigned repeat_count = 0;
- while (pos < exec_size) {
+ while (pos <= exec_size) {
bool new_block =
next_block < program->blocks.size() && pos == program->blocks[next_block].offset;
if (pos + prev_size <= exec_size && prev_pos != pos && !new_block &&
print_block_markers(output, program, referenced_blocks, &next_block, pos);
+ /* For empty last block, only print block marker. */
+ if (pos == exec_size)
+ break;
+
char outline[1024];
std::pair<bool, size_t> res = disasm_instr(program->gfx_level, disasm, binary.data(),
exec_size, pos, outline, sizeof(outline));