#!/usr/bin/env python3
"""Read what's expected at 0x10000 from original hex."""
with open('/Users/admin/workspace/jyq/mcubin/mcu_app.hex') as f:
    lines = f.readlines()

ext_addr = 0
for line in lines:
    line = line.strip()
    if not line: continue
    bc = int(line[1:3], 16)
    addr = int(line[3:7], 16)
    rt = int(line[7:9], 16)
    payload = bytes.fromhex(line[9:9+bc*2])
    if rt == 4:
        ext_addr = int.from_bytes(payload[:2], 'big') << 16
    elif rt == 0:
        start = ext_addr + addr
        end = start + bc
        if start <= 0x10000 < end:
            offset = 0x10000 - start
            data = payload[offset:offset+32]
            print('Expected at 0x10000 (first 32 bytes):')
            for i in range(0, len(data), 4):
                word = int.from_bytes(data[i:i+4], 'little')
                print('  0x%08X' % word)
            break
