github.com/decomp/exp@v0.0.0-20210624183419-6d058f5e1da6/cmd/bin2asm/overlay.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 7 "path/filepath" 8 9 "github.com/pkg/errors" 10 ) 11 12 // dumpOverlay dumps the overlay of the PE file in NASM syntax. 13 func dumpOverlay(overlay []byte) error { 14 buf := &bytes.Buffer{} 15 for _, b := range overlay { 16 // Dump data. 17 // 18 // db 0x44 ; 'D' 19 char := "" 20 if isPrint(b) { 21 char = fmt.Sprintf(" ; %q", b) 22 } 23 fmt.Fprintf(buf, " db 0x%02X%s\n", b, char) 24 } 25 filename := "overlay.asm" 26 outPath := filepath.Join(outDir, filename) 27 dbg.Printf("creating %q\n", outPath) 28 if err := ioutil.WriteFile(outPath, buf.Bytes(), 0644); err != nil { 29 return errors.WithStack(err) 30 } 31 return nil 32 }