--- /dev/null
+#!/usr/bin/perl -p
+chomp;
+$comment= s/\;.*// ? $& : '';
+if (m/^(\w*\s+)(\w+)(\s+)(.*?)(\s*)$/) {
+ ($lhs,$opcode,$midspc,$args,$rhs) = ($1,$2,$3,$4,$5);
+ if ($opcode =~ m/^(b(c|s|tg)f|btfs[sc])$/ &&
+ $args =~ m/\,.*\,/ &&
+ $args =~ s/\,\s*0$/ ' 'x length($&) /e) {
+ $opcode =~ s/f/_f/;
+ $opcode =~ s/ss$/_if0/;
+ $opcode =~ s/sc$/_if1/;
+ } elsif ($opcode =~ m/^(mul)wf$/ &&
+ $args =~ m/\,/ &&
+ $args =~ s/\,\s*0$/ ' 'x length($&) /e) {
+ $opcode= 'mul_wf';
+ } elsif ($opcode =~ m/^((and|add|xor|ior)wf|addwfc|subwfb)$/ &&
+ $args =~ m/\,.*\,/ &&
+ $args =~ s/\,\s*([01])$/ ' 'x length($&) /e) {
+ $opcode =~ s/wf/ $1 ? 'wff' : 'wfw' /e;
+ } elsif ($opcode =~ m/^(com|dec|inc|neg|r[lr]n?c|neg|swap)f$/ &&
+ $args =~ m/\,.*\,/ &&
+ $args =~ s/\,\s*([01])$/ ' 'x length($&) /e) {
+ $opcode =~ s/f/ $1 ? 'f' : 'fw' /e;
+ } elsif ($opcode =~ m/^(and|add|xor|ior|mul|mov)lw$/) {
+ $opcode =~ s/lw$/_lw/;
+ } elsif ($opcode =~ m/^b(n?(?:c|n|ov|z))$/) {
+ $opcode =~ s/^b/bra_/;
+ } elsif ($opcode =~ m/^movff$/) {
+ $opcode =~ s/ff/_ff/;
+ } elsif ($opcode =~ m/^macro$/) {
+ $macro= $lhs;
+ $macro =~ s/\s.*//;
+ $macro{$macro}= 1;
+ } elsif ($opcode =~ m/^(res|equ|include|udata|udata_acs)$/ ||
+ $opcode =~ m/^(ifn?def)$/ ||
+ $opcode =~ m/^(r?call|bra|goto)$/ ||
+ $opcode =~ m/_/) {
+ } elsif ($macro{$opcode}) {
+ } else {
+ warn "unknown $opcode $args";
+ }
+ $_= $lhs.$opcode.$midspc.$args.$rhs;
+}
+$_.= $comment."\n";