summaryrefslogtreecommitdiff
path: root/tools/deobfuscate-simple-vivante.pl
blob: cf07ea7d55e70a5374c5cc0bc034e6afcdde8dba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$bitfield = '\d+:\d+|[A-Z_a-z]+';
$id = '[^()]+|[^()]*(?:(\((?:[^()]++|(?-1))*+\))[^()]*)*';
$hex = '0x[0-9a-fA-F]+';

$sub = "";
$name = "";
undef $prev;

while (<>) {
	s/\(0 ?\? ?($bitfield)\)/__gcmSTART(\1)/g;
	s/\(1 ?\? ?($bitfield)\)/__gcmEND(\1)/g;
	s/\(__gcmEND\(($bitfield)\) ?- ?__gcmSTART\(\1\) ?\+ ?1\)/__gcmGETSIZE(\1)/g;
	s/\(\(gctUINT32\) ?\(\(__gcmGETSIZE\(($bitfield)\) ?== ?32\) ?\? ?~0 ?: ?\(~\(~0 ?<< ?__gcmGETSIZE\((?-1)\)\)\)\)\)/__gcmMASK(\1)/g;
	s/\(\(\(gctUINT32\) ?\(($id)\)\) ?\<\< ?__gcmSTART\((?<field>$bitfield)\)\)/__gcmALIGN(\1, $+{field})/g;

	print;
}