REDIVIVUS

Proposals / #755

Type the DT1 deep-copy header input and allocated header output

applied · by Commit-Will · submitted 2026-11-01, applied 2026-11-02

Ghidra v1804 · 39698f0

Win 0060a750 takes pSrcTileCmpHdr and ppDstTileCmpHdr, both uint32_t*. It allocates and copies 0x114 bytes, reads tile count+0x10c and the tile pointer+0x110, allocates count*0x60 records, and separately copies/recompresses each tile's20-byte subtiles. These are the existing D2TileLibraryHeaderStrc/Entry layouts. On every normal return it loads the output argument and stores the allocated header base through it at 0060a8f3. Retype source to D2TileLibraryHeaderStrc* and output to D2TileLibraryHeaderStrc**. Both selected names fit. Preserve the callback/context argument, void result, stdcall, RET 0xc and all storage. Full original bytes checked. No incoming xrefs exist: API-contract proof only, no runtime invocation claim.

Changes 2, applied together

  1. Retype variable win 0x0060a750 Stack[0x4]

    typeuint32_t *→D2TileLibraryHeaderStrc *
  2. Retype variable win 0x0060a750 Stack[0x8]

    typeuint32_t *→D2TileLibraryHeaderStrc **