From a07edfb930066d85950d2b764af7a43d26eff074 Mon Sep 17 00:00:00 2001
From: illerokcob <113302047+illerokcob@users.noreply.github.com>
Date: Fri, 24 Nov 2023 20:28:12 +0100
Subject: [PATCH 1/2] Fix syntax highlighting issue with obfuscated smali code
Obfuscated apps add a strange hebrew character as the first character of the class' path which makes highlighting broken where this character is present. This commit fixes that.
---
syntaxes/smali.tmLanguage | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/syntaxes/smali.tmLanguage b/syntaxes/smali.tmLanguage
index b203c8b..bfa01a7 100644
--- a/syntaxes/smali.tmLanguage
+++ b/syntaxes/smali.tmLanguage
@@ -86,7 +86,7 @@
comment
Class name
match
- ^\s*(\.class)\s*((?:(?:interface|public|protected|private|abstract|static|final|synchronized|transient|volatile|native|strictfp|synthetic|enum|annotation)\s+)*)\s*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)(?=\s*(#.*)?$)
+ ^\s*(\.class)\s*((?:(?:interface|public|protected|private|abstract|static|final|synchronized|transient|volatile|native|strictfp|synthetic|enum|annotation)\s+)*)\s*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)(?=\s*(#.*)?$)
captures
@@ -115,7 +115,7 @@
comment
Super / implements class name
match
- ^\s*(\.(?:super|implements))\s+(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)(?=\s*(#.*)?$)
+ ^\s*(\.(?:super|implements))\s+(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)(?=\s*(#.*)?$)
captures
@@ -148,7 +148,7 @@
begin
- ^\s*(\.method)\s*((?:(?>public|protected|private|abstract|static|final|synthetic|synchronized|native|varargs|volatile|declared-synchronized|transient|strictfp|enum|bridge)\s+)*)(constructor )?(<init>|<clinit>|[\$\p{L}_][\w\-\$]*)\(((?:\[*(?:[ZBSCIJFD]|L[\w\-\$]+(?:/[\w\-\$]+)*;))*)\)(?:(V)|\[*(?:([ZBSCIJFD])|(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)))(?=\s*(?:#.*)?$)
+ ^\s*(\.method)\s*((?:(?>public|protected|private|abstract|static|final|synthetic|synchronized|native|varargs|volatile|declared-synchronized|transient|strictfp|enum|bridge)\s+)*)(constructor )?(<init>|<clinit>|[\$\p{L}_][\w\-\$\u05C5]*)\(((?:\[*(?:[ZBSCIJFD]|L[\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*;))*)\)(?:(V)|\[*(?:([ZBSCIJFD])|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)))(?=\s*(?:#.*)?$)
beginCaptures
1
@@ -315,7 +315,7 @@
comment
Local
match
- ^\s*(\.local)\s+([vp]\d+),\s+("[\w\-\$]+"):\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))))(?:,(")((?:[^"\\]|\\.)*)("))?(?:,\s*(")((?:[^"\\]|\\.)*)("))?(?=\s*(#.*)?$)
+ ^\s*(\.local)\s+([vp]\d+),\s+("[\w\-\$\u05C5]+"):\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))))(?:,(")((?:[^"\\]|\\.)*)("))?(?:,\s*(")((?:[^"\\]|\\.)*)("))?(?=\s*(#.*)?$)
captures
@@ -359,7 +359,7 @@
comment
Catch exceptions
match
- ^\s*(\.catch)\s+(?:(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))\s+{(:[A-Za-z_\d]+)\s+\.\.\s+(:[A-Za-z_\d]+)}\s+(:[A-Za-z_\d]+)(?=\s*(#.*)?$)
+ ^\s*(\.catch)\s+(?:(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))\s+{(:[A-Za-z_\d]+)\s+\.\.\s+(:[A-Za-z_\d]+)}\s+(:[A-Za-z_\d]+)(?=\s*(#.*)?$)
captures
@@ -823,7 +823,7 @@
match
- ^\s*(\.annotation)\s+(build|runtime|system)\s+(?:(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))(?=\s*(#.*)?$)
+ ^\s*(\.annotation)\s+(build|runtime|system)\s+(?:(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))(?=\s*(#.*)?$)
annotation-access
@@ -1013,7 +1013,7 @@
comment
This is another hack because sublime can't handle multi-line regex, particulaly for 'end'.
match
- ^\s*(value)\s*=\s*(?:(")((?:[^"\\]|\\.)*)(")?|(?:\.(enum|subannotation)\s+)?(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))(?:->(?:([\w\-\$]+):\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))))|(<init>|<clinit>|(?:[\$\p{L}_][\w\-\$]*))\(((?:\[*(?:[ZBSCIJFD]|L(?:[\w\-\$]+(?:/[\w\-\$]+)*);))*)\)(?:(V)|\[*([ZBSCIJFD])|\[*(?:(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)))))?(?=\s*(#.*)?$)
+ ^\s*(value)\s*=\s*(?:(")((?:[^"\\]|\\.)*)(")?|(?:\.(enum|subannotation)\s+)?(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))(?:->(?:([\w\-\$\u05C5]+):\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))))|(<init>|<clinit>|(?:[\$\p{L}_][\w\-\$\u05C5]*))\(((?:\[*(?:[ZBSCIJFD]|L(?:[\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*);))*)\)(?:(V)|\[*([ZBSCIJFD])|\[*(?:(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)))))?(?=\s*(#.*)?$)
annotation-value_list
@@ -1072,7 +1072,7 @@
match
- (?:(")((?:[^"\\]|\\.)*)(")?|(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))(?:,)?(?=\s*(#.*)?$)
+ (?:(")((?:[^"\\]|\\.)*)(")?|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))(?:,)?(?=\s*(#.*)?$)
@@ -1297,7 +1297,7 @@
comment
Field
match
- ^\s*(\.field)\s+((?:(?>public|protected|private|static|abstract|final|volatile|enum|varargs|declared-synchronized|synchronized|transient|native|strictfp|synthetic|bridge)\s+)*)([\p{L}_\-\$][\w\-\$]*):\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))))(?:\s+=\s+(?:(null|true|false)|(?i:(\d+(?:\.\d+)?[fldst]?))|(?i:((?:-0x(?:0|[1-9a-f][\da-f]{0,6}|[1-7][\da-f]{7}|8[0]{7})|0x(?:0|[1-9a-f][\da-f]{0,6}|[1-7][\da-f]{7}))|(?:(?:-0x(?:0|[1-9a-f][\da-f]{0,14}|[1-7][\da-f]{15}|8[0]{15})|0x(?:0|[1-9a-f][\da-f]{0,14}|[1-7][\da-f]{15}))[fldst]?))\b)|(["'])((?:[^"'\\]|\\.)*)(["'])))?(?=\s*(#.*)?$)
+ ^\s*(\.field)\s+((?:(?>public|protected|private|static|abstract|final|volatile|enum|varargs|declared-synchronized|synchronized|transient|native|strictfp|synthetic|bridge)\s+)*)([\p{L}_\-\$][\w\-\$\u05C5]*):\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))))(?:\s+=\s+(?:(null|true|false)|(?i:(\d+(?:\.\d+)?[fldst]?))|(?i:((?:-0x(?:0|[1-9a-f][\da-f]{0,6}|[1-7][\da-f]{7}|8[0]{7})|0x(?:0|[1-9a-f][\da-f]{0,6}|[1-7][\da-f]{7}))|(?:(?:-0x(?:0|[1-9a-f][\da-f]{0,14}|[1-7][\da-f]{15}|8[0]{15})|0x(?:0|[1-9a-f][\da-f]{0,14}|[1-7][\da-f]{15}))[fldst]?))\b)|(["'])((?:[^"'\\]|\\.)*)(["'])))?(?=\s*(#.*)?$)
field-end
@@ -1340,7 +1340,7 @@
match
- \[*(?:([ZBSCIJFD])|(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))
+ \[*(?:([ZBSCIJFD])|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))
opcode-format-10t-20t-30t
@@ -1570,7 +1570,7 @@
comment
Format: op vAA, field@BBBB
match
- ^\s*((?>sget|sput)(?>-wide|-object|-boolean|-byte|-char|-short)?)\s+([vp](?:0|[1-9][\d]?|1[\d]{2}|2[0-4][\d]|25[0-5])\b),\s*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)->([\w\-\$]+):\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))))(?=\s*(#.*)?$)
+ ^\s*((?>sget|sput)(?>-wide|-object|-boolean|-byte|-char|-short)?)\s+([vp](?:0|[1-9][\d]?|1[\d]{2}|2[0-4][\d]|25[0-5])\b),\s*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)->([\w\-\$\u05C5]+):\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))))(?=\s*(#.*)?$)
opcode-format-21c-relaxed
@@ -1658,7 +1658,7 @@
comment
Format: op vAA, type@BBBB
match
- ^\s*(const-class|check-cast|new-instance)\s+([vp](?:0|[1-9][\d]?|1[\d]{2}|2[0-4][\d]|25[0-5])\b),\s*\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))))(?=\s*(#.*)?$)
+ ^\s*(const-class|check-cast|new-instance)\s+([vp](?:0|[1-9][\d]?|1[\d]{2}|2[0-4][\d]|25[0-5])\b),\s*\[*(?:(?:([ZBSCIJFD])|(?:(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))))(?=\s*(#.*)?$)
opcode-format-21h
@@ -1880,7 +1880,7 @@
comment
Format: op vA, vB, field@CCCC
match
- ^\s*((?>iget|iput)(?>-wide|-object|-boolean|-byte|-char|-short)?)\s+([vp](?:0|[1-9]|1[0-5])\b),\s*([vp](?:0|[1-9]|1[0-5])\b),\s*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)->([\w\-\$]+):\[*(?:([ZBSCIJFD]|(?:(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))))(?=\s*(#.*)?$)
+ ^\s*((?>iget|iput)(?>-wide|-object|-boolean|-byte|-char|-short)?)\s+([vp](?:0|[1-9]|1[0-5])\b),\s*([vp](?:0|[1-9]|1[0-5])\b),\s*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)->([\w\-\$\u05C5]+):\[*(?:([ZBSCIJFD]|(?:(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))))(?=\s*(#.*)?$)
opcode-format-22c-relaxed
@@ -1938,7 +1938,7 @@
comment
Format: op vA, vB, type@CCCC
match
- ^\s*(instance-of)\s+([vp](?:0|[1-9]|1[0-5])\b),\s*([vp](?:0|[1-9]|1[0-5])\b),\s*\[*(?:([ZBSCIJFD])|(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))(?=\s*(#.*)?$)
+ ^\s*(instance-of)\s+([vp](?:0|[1-9]|1[0-5])\b),\s*([vp](?:0|[1-9]|1[0-5])\b),\s*\[*(?:([ZBSCIJFD])|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))(?=\s*(#.*)?$)
opcode-format-22c-type_array
@@ -1983,7 +1983,7 @@
comment
Format: op vA, vB, [type@CCCC
match
- ^\s*(new-array)\s+([vp](?:0|[1-9]|1[0-5])\b),\s*([vp](?:0|[1-9]|1[0-5])\b),\s*\[+(?:([ZBSCIJFD])|(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))(?=\s*(#.*)?$)
+ ^\s*(new-array)\s+([vp](?:0|[1-9]|1[0-5])\b),\s*([vp](?:0|[1-9]|1[0-5])\b),\s*\[+(?:([ZBSCIJFD])|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))(?=\s*(#.*)?$)
opcode-format-22s
@@ -2454,7 +2454,7 @@
comment
Format: op {vC, vD, vE, vF, vG}, meth@BBBB
match
- ^\s*(invoke-(?>virtual|static|direct|interface|super)) {\s*([vp](?:0|[1-9]|1[0-5])\b)?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?\s*},\s*(?:[\[]*([ZBSCIJFD])|\[*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))->(<init>|<clinit>|(?:[\-\$\p{L}_][\w\-\$]*))\((?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)))?(?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)))?(?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)))?(?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)))?(?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)))?\)(?:(?:(V)|\[*([ZBSCIJFD]))|(?:\[*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)))(?=\s*(#.*)?$)
+ ^\s*(invoke-(?>virtual|static|direct|interface|super)) {\s*([vp](?:0|[1-9]|1[0-5])\b)?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?\s*},\s*(?:[\[]*([ZBSCIJFD])|\[*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))->(<init>|<clinit>|(?:[\-\$\p{L}_][\w\-\$\u05C5]*))\((?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)))?(?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)))?(?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)))?(?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)))?(?:\[*([ZBSCIJFD])|(?:\[*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)))?\)(?:(?:(V)|\[*([ZBSCIJFD]))|(?:\[*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)))(?=\s*(#.*)?$)
opcode-format-35c-relaxed
@@ -2532,7 +2532,7 @@
comment
Format: op {vC, vD, vE, vF, vG}, type@BBBB
match
- ^\s*(filled-new-array) {([vp](?:0|[1-9]|1[0-5])\b),\s*([vp](?:0|[1-9]|1[0-5])\b)(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?},\s*\[+(?:([ZBSCIJFD])|(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))(?=\s*(#.*)?$)
+ ^\s*(filled-new-array) {([vp](?:0|[1-9]|1[0-5])\b),\s*([vp](?:0|[1-9]|1[0-5])\b)(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?},\s*\[+(?:([ZBSCIJFD])|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))(?=\s*(#.*)?$)
opcode-format-3rc-meth
@@ -2612,7 +2612,7 @@
comment
Format: op {vCCCC .. vNNNN}, meth@BBBB
match
- ^\s*(invoke-(?>virtual|static|direct|interface|super)/range) {\s*([vp](?:0|[1-9][\d]{0,3}|[1-5][\d]{4}|6[0-4][\d]{3}|65[0-4][\d]{2}|655[0-2][\d]|6553[0-5])\b) \.\. ([vp](?:0|[1-9][\d]{0,3}|[1-5][\d]{4}|6[0-4][\d]{3}|65[0-4][\d]{2}|655[0-2][\d]|6553[0-5])\b)\s*},\s*\[*(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)->(<init>|<clinit>|[\-\$\p{L}_][\w\-\$]*)\(((?:\[*(?:[ZBSCIJFD]|L[\w\-\$]+(?:/[\w\-\$]+)*;))*)\)(?:(V)|\[*(?:([ZBSCIJFD])|(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;)))(?=\s*(?:#.*)?$)
+ ^\s*(invoke-(?>virtual|static|direct|interface|super)/range) {\s*([vp](?:0|[1-9][\d]{0,3}|[1-5][\d]{4}|6[0-4][\d]{3}|65[0-4][\d]{2}|655[0-2][\d]|6553[0-5])\b) \.\. ([vp](?:0|[1-9][\d]{0,3}|[1-5][\d]{4}|6[0-4][\d]{3}|65[0-4][\d]{2}|655[0-2][\d]|6553[0-5])\b)\s*},\s*\[*(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)->(<init>|<clinit>|[\-\$\p{L}_][\w\-\$\u05C5]*)\(((?:\[*(?:[ZBSCIJFD]|L[\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*;))*)\)(?:(V)|\[*(?:([ZBSCIJFD])|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;)))(?=\s*(?:#.*)?$)
opcode-format-3rc-relaxed
@@ -2670,7 +2670,7 @@
comment
Format: op {vCCCC .. vNNNN}, type@BBBB
match
- ^\s*(filled-new-array/range) {([vp](?:0|[1-9][\d]{0,3}|[1-5][\d]{4}|6[0-4][\d]{3}|65[0-4][\d]{2}|655[0-2][\d]|6553[0-5])\b) \.\. ([vp](?:0|[1-9][\d]{0,3}|[1-5][\d]{4}|6[0-4][\d]{3}|65[0-4][\d]{2}|655[0-2][\d]|6553[0-5])\b)},\s*\[+(?:([ZBSCIJFD])|(L)([\w\-\$]+(?:/[\w\-\$]+)*)(;))(?=\s*(#.*)?$)
+ ^\s*(filled-new-array/range) {([vp](?:0|[1-9][\d]{0,3}|[1-5][\d]{4}|6[0-4][\d]{3}|65[0-4][\d]{2}|655[0-2][\d]|6553[0-5])\b) \.\. ([vp](?:0|[1-9][\d]{0,3}|[1-5][\d]{4}|6[0-4][\d]{3}|65[0-4][\d]{2}|655[0-2][\d]|6553[0-5])\b)},\s*\[+(?:([ZBSCIJFD])|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))(?=\s*(#.*)?$)
opcode-format-51l
From bec0758d0e23a28ce74df2698a6de030dbb2a7bd Mon Sep 17 00:00:00 2001
From: illerokcob <113302047+illerokcob@users.noreply.github.com>
Date: Fri, 24 Nov 2023 20:30:43 +0100
Subject: [PATCH 2/2] Fix filled-new-array one register syntax highlighting
issue
When the filled-new-array instruction is called with one parameter/register, snytax highlighting gets broken. This commit fixes the issue.
---
syntaxes/smali.tmLanguage | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/syntaxes/smali.tmLanguage b/syntaxes/smali.tmLanguage
index bfa01a7..bc6e673 100644
--- a/syntaxes/smali.tmLanguage
+++ b/syntaxes/smali.tmLanguage
@@ -2532,7 +2532,7 @@
comment
Format: op {vC, vD, vE, vF, vG}, type@BBBB
match
- ^\s*(filled-new-array) {([vp](?:0|[1-9]|1[0-5])\b),\s*([vp](?:0|[1-9]|1[0-5])\b)(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?},\s*\[+(?:([ZBSCIJFD])|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))(?=\s*(#.*)?$)
+ ^\s*(filled-new-array) {([vp](?:0|[1-9]|1[0-5])\b)?,?\s*([vp](?:0|[1-9]|1[0-5])\b)(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?(?:,\s*([vp](?:0|[1-9]|1[0-5])\b))?},\s*\[+(?:([ZBSCIJFD])|(L)([\w\-\$\u05C5]+(?:/[\w\-\$\u05C5]+)*)(;))(?=\s*(#.*)?$)
opcode-format-3rc-meth