diff --git a/packages/webcrack/src/deobfuscate/control-flow-object.ts b/packages/webcrack/src/deobfuscate/control-flow-object.ts index 983f0348..11a5eb0f 100644 --- a/packages/webcrack/src/deobfuscate/control-flow-object.ts +++ b/packages/webcrack/src/deobfuscate/control-flow-object.ts @@ -105,28 +105,18 @@ export default { ); const anyMemberAccess = constMemberExpression(m.identifier(), propertyName); - const deadBranchMatcher = m.or( - m.ifStatement( - m.or( - m.callExpression(anyMemberAccess, [anyMemberAccess, anyMemberAccess]), - m.binaryExpression( - m.or('===', '!=='), - m.stringLiteral(), - m.stringLiteral(), - ), - ), - ), - m.conditionalExpression( - m.or( - m.callExpression(anyMemberAccess, [anyMemberAccess, anyMemberAccess]), - m.binaryExpression( - m.or('===', '!=='), - m.stringLiteral(), - m.stringLiteral(), - ), - ), + const deadBranchTest = m.or( + m.callExpression(anyMemberAccess, [anyMemberAccess, anyMemberAccess]), + m.binaryExpression( + m.or('===', '!=='), + m.stringLiteral(), + m.stringLiteral(), ), ); + const deadBranchMatcher = m.or( + m.ifStatement(deadBranchTest), + m.conditionalExpression(deadBranchTest), + ); function isConstantBinding(binding: Binding) { // Workaround because sometimes babel treats the VariableDeclarator/binding itself as a violation