/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.RequestId
 *  com.l7tech.gateway.common.audit.AssertionMessages
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.audit.AuditDetailMessage
 *  com.l7tech.gateway.common.mapping.MessageContextMapping
 *  com.l7tech.gateway.common.service.PublishedService
 *  com.l7tech.message.Message
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.assertion.MessageTargetable
 *  com.l7tech.policy.assertion.RoutingStatus
 *  com.l7tech.policy.variable.BuiltinVariables
 *  com.l7tech.policy.variable.NoSuchVariableException
 *  com.l7tech.policy.variable.VariableNotSettableException
 *  com.l7tech.util.InvalidDocumentFormatException
 *  com.l7tech.util.Pair
 *  com.l7tech.xml.SoapFaultLevel
 *  javax.wsdl.Binding
 *  javax.wsdl.Operation
 *  javax.wsdl.WSDLException
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 */
package com.l7tech.server.message;

import com.l7tech.gateway.common.RequestId;
import com.l7tech.gateway.common.audit.AssertionMessages;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.AuditDetailMessage;
import com.l7tech.gateway.common.mapping.MessageContextMapping;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.message.Message;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.MessageTargetable;
import com.l7tech.policy.assertion.RoutingStatus;
import com.l7tech.policy.variable.BuiltinVariables;
import com.l7tech.policy.variable.NoSuchVariableException;
import com.l7tech.policy.variable.VariableNotSettableException;
import com.l7tech.server.audit.AuditContext;
import com.l7tech.server.message.AssertionTraceListener;
import com.l7tech.server.message.AuthenticationContext;
import com.l7tech.server.message.PolicyContextCache;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.message.metrics.LatencyMetrics;
import com.l7tech.server.otel.OtelContext;
import com.l7tech.server.policy.PolicyMetadata;
import com.l7tech.server.policy.assertion.RoutingResultListener;
import com.l7tech.server.policy.assertion.ServerAssertion;
import com.l7tech.server.policy.variable.ServerVariables;
import com.l7tech.server.stepdebug.DebugContext;
import com.l7tech.util.InvalidDocumentFormatException;
import com.l7tech.util.Pair;
import com.l7tech.xml.SoapFaultLevel;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.TreeMap;
import java.util.logging.Level;
import javax.wsdl.Binding;
import javax.wsdl.Operation;
import javax.wsdl.WSDLException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.xml.sax.SAXException;

/*
 * Exception performing whole class analysis ignored.
 */
public class PolicyEnforcementContextWrapper
implements PolicyEnforcementContext {
    private PolicyEnforcementContext a;
    private static final String[] g;

    @Override
    public Message getRequest() {
        return this.a.getRequest();
    }

    @Override
    public Message getResponse() {
        return this.a.getResponse();
    }

    @Override
    public AuthenticationContext getDefaultAuthenticationContext() {
        return this.a.getDefaultAuthenticationContext();
    }

    @Override
    public AuthenticationContext getAuthenticationContext(Message message) {
        return this.a.getAuthenticationContext(message);
    }

    @Override
    public RoutingStatus getRoutingStatus() {
        return this.a.getRoutingStatus();
    }

    @Override
    public void setRoutingStatus(RoutingStatus routingStatus) {
        this.a.setRoutingStatus(routingStatus);
    }

    @Override
    public boolean isPostRouting() {
        return this.a.isPostRouting();
    }

    @Override
    public boolean isReplyExpected() {
        return this.a.isReplyExpected();
    }

    @Override
    public Level getAuditLevel() {
        return this.a.getAuditLevel();
    }

    @Override
    public void setAuditLevel(Level level) {
        this.a.setAuditLevel(level);
    }

    @Override
    public RequestId getRequestId() {
        return this.a.getRequestId();
    }

    @Override
    public void addSeenAssertionStatus(AssertionStatus assertionStatus) {
        this.a.addSeenAssertionStatus(assertionStatus);
    }

    @Override
    public Set<AssertionStatus> getSeenAssertionStatus() {
        return this.a.getSeenAssertionStatus();
    }

    @Override
    public boolean isAuditSaveRequest() {
        return this.a.isAuditSaveRequest();
    }

    @Override
    public void setAuditSaveRequest(boolean bl2) {
        this.a.setAuditSaveRequest(bl2);
    }

    @Override
    public boolean isAuditSaveResponse() {
        return this.a.isAuditSaveResponse();
    }

    @Override
    public void setAuditSaveResponse(boolean bl2) {
        this.a.setAuditSaveResponse(bl2);
    }

    @Override
    @Deprecated
    public Collection<ServerAssertion> getDeferredAssertions() {
        return Collections.emptyList();
    }

    @Override
    @Deprecated
    public void addDeferredAssertion(ServerAssertion serverAssertion, ServerAssertion serverAssertion2) {
        throw new UnsupportedOperationException();
    }

    @Override
    @Deprecated
    public void removeDeferredAssertion(ServerAssertion serverAssertion) {
    }

    @Override
    public RoutingResultListener getRoutingResultListener() {
        return this.a.getRoutingResultListener();
    }

    @Override
    public void addRoutingResultListener(RoutingResultListener routingResultListener) {
        this.a.addRoutingResultListener(routingResultListener);
    }

    @Override
    public void removeRoutingResultListener(RoutingResultListener routingResultListener) {
        this.a.removeRoutingResultListener(routingResultListener);
    }

    @Override
    public void setAuthenticationMissing() {
        this.a.setAuthenticationMissing();
    }

    @Override
    public boolean isRequestPolicyViolated() {
        return this.a.isRequestPolicyViolated();
    }

    @Override
    public void setRequestPolicyViolated() {
        this.a.setRequestPolicyViolated();
    }

    @Override
    public void setRequestClaimingWrongPolicyVersion() {
        this.a.setRequestClaimingWrongPolicyVersion();
    }

    @Override
    public boolean isRequestClaimingWrongPolicyVersion() {
        return this.a.isRequestClaimingWrongPolicyVersion();
    }

    @Override
    public PublishedService getService() {
        return this.a.getService();
    }

    @Override
    public void setService(PublishedService publishedService) {
        this.a.setService(publishedService);
    }

    @Override
    public PolicyMetadata getServicePolicyMetadata() {
        return this.a.getServicePolicyMetadata();
    }

    @Override
    public void setServicePolicyMetadata(PolicyMetadata policyMetadata) {
        this.a.setServicePolicyMetadata(policyMetadata);
    }

    @Override
    public PolicyMetadata getCurrentPolicyMetadata() {
        return this.a.getCurrentPolicyMetadata();
    }

    @Override
    public void setCurrentPolicyMetadata(PolicyMetadata policyMetadata) {
        this.a.setCurrentPolicyMetadata(policyMetadata);
    }

    @Override
    public PolicyContextCache getCache() {
        return this.a.getCache();
    }

    @Override
    public void setCache(PolicyContextCache policyContextCache) {
        this.a.setCache(policyContextCache);
    }

    @Override
    public List<String> getIncrementedCounters() {
        return this.a.getIncrementedCounters();
    }

    @Override
    public Object getVariable(String string) throws NoSuchVariableException {
        Object object = this.a(string) ? this.b(string) : this.a.getVariable(string);
        return object;
    }

    @Override
    public Map<String, Object> getAllVariables() {
        return this.a.getAllVariables();
    }

    /*
     * Enabled aggressive block sorting
     * Enabled unnecessary exception pruning
     * Enabled aggressive exception aggregation
     */
    @Override
    public void setVariable(String string, Object object) throws VariableNotSettableException {
        try {
            if (string == null) {
                return;
            }
        }
        catch (NoSuchVariableException noSuchVariableException) {
            throw PolicyEnforcementContextWrapper.b((Exception)((Object)noSuchVariableException));
        }
        try {
            if (this.a(string)) {
                try {
                    this.a(string, object);
                    return;
                }
                catch (NoSuchVariableException noSuchVariableException) {
                    String[] stringArray = g;
                    throw new RuntimeException(stringArray[5] + string + stringArray[1], noSuchVariableException);
                }
            }
        }
        catch (VariableNotSettableException variableNotSettableException) {
            throw PolicyEnforcementContextWrapper.b((Exception)((Object)variableNotSettableException));
        }
        this.a.setVariable(string, object);
    }

    @Override
    public Map<String, Object> getVariableMap(String[] stringArray, Audit audit) {
        TreeMap<String, Object> treeMap = new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER);
        ArrayList<String> arrayList = new ArrayList<String>();
        for (String string : stringArray) {
            if (this.a(string)) {
                try {
                    Object object = this.b(string);
                    treeMap.put(string, object);
                }
                catch (NoSuchVariableException noSuchVariableException) {
                    audit.logAndAudit((AuditDetailMessage)AssertionMessages.NO_SUCH_VARIABLE, new String[]{string});
                }
                continue;
            }
            arrayList.add(string);
        }
        treeMap.putAll(this.a.getVariableMap(arrayList.toArray(new String[arrayList.size()]), audit));
        return treeMap;
    }

    @Override
    public void routingStarted() {
        this.a.routingStarted();
    }

    @Override
    public void routingFinished() {
        this.a.routingFinished();
    }

    @Override
    public long getRoutingStartTime() {
        return this.a.getRoutingStartTime();
    }

    @Override
    public long getRoutingEndTime() {
        return this.a.getRoutingEndTime();
    }

    @Override
    public long getRoutingTotalTime() {
        return this.a.getRoutingTotalTime();
    }

    @Override
    public Pair<Binding, Operation> getBindingAndOperation() throws IOException, SAXException, WSDLException, InvalidDocumentFormatException {
        return this.a.getBindingAndOperation();
    }

    @Override
    public boolean isStealthResponseMode() {
        return this.a.isStealthResponseMode();
    }

    @Override
    public long getStartTime() {
        return this.a.getStartTime();
    }

    @Override
    public long getAssertionLatencyNanos() {
        return this.a.getAssertionLatencyNanos();
    }

    @Override
    public void setAssertionLatencyNanos(long l2) {
        this.a.setAssertionLatencyNanos(l2);
    }

    @Override
    public URL getRoutedServiceUrl() {
        return this.a.getRoutedServiceUrl();
    }

    @Override
    public void setRoutedServiceUrl(URL uRL) {
        this.a.setRoutedServiceUrl(uRL);
    }

    @Override
    public long getEndTime() {
        return this.a.getEndTime();
    }

    @Override
    public void setEndTime() {
        this.a.setEndTime();
    }

    @Override
    public SoapFaultLevel getFaultlevel() {
        return this.a.getFaultlevel();
    }

    @Override
    public void setFaultlevel(SoapFaultLevel soapFaultLevel) {
        this.a.setFaultlevel(soapFaultLevel);
    }

    @Override
    public void assertionStarting(ServerAssertion serverAssertion) {
        this.a.assertionStarting(serverAssertion);
    }

    @Override
    public void assertionFinished(ServerAssertion serverAssertion, AssertionStatus assertionStatus, @Nullable LatencyMetrics latencyMetrics) {
        this.a.assertionFinished(serverAssertion, assertionStatus, latencyMetrics);
    }

    @Override
    public List<PolicyEnforcementContext.AssertionResult> getAssertionResults() {
        return this.a.getAssertionResults();
    }

    @Override
    public Collection<Integer> getAssertionNumber() {
        return this.a.getAssertionNumber();
    }

    @Override
    public Message getTargetMessage(MessageTargetable messageTargetable) throws NoSuchVariableException {
        return this.a.getTargetMessage(messageTargetable);
    }

    @Override
    public Message getOrCreateTargetMessage(MessageTargetable messageTargetable, boolean bl2) throws NoSuchVariableException, VariableNotSettableException {
        return this.a.getOrCreateTargetMessage(messageTargetable, bl2);
    }

    @Override
    public Message getTargetMessage(MessageTargetable messageTargetable, boolean bl2) throws NoSuchVariableException {
        return this.a.getTargetMessage(messageTargetable, bl2);
    }

    @Override
    public boolean isResponseWss11() {
        return this.a.isResponseWss11();
    }

    @Override
    public void setResponseWss11(boolean bl2) {
        this.a.setResponseWss11(bl2);
    }

    @Override
    public void setMalformedRequest() {
        this.a.setMalformedRequest();
    }

    @Override
    public boolean isMalformedRequest() {
        return this.a.isMalformedRequest();
    }

    @Override
    public void setSavedRequestL7aMessageId(String string) {
        this.a.setSavedRequestL7aMessageId(string);
    }

    @Override
    public String getSavedRequestL7aMessageId() {
        return this.a.getSavedRequestL7aMessageId();
    }

    @Override
    @NotNull
    public List<MessageContextMapping> getMappings() {
        List<MessageContextMapping> list;
        try {
            list = this.a.getMappings();
            if (list == null) {
                PolicyEnforcementContextWrapper.a(0);
            }
        }
        catch (UnsupportedOperationException unsupportedOperationException) {
            throw PolicyEnforcementContextWrapper.b(unsupportedOperationException);
        }
        return list;
    }

    @Override
    public void setMappings(List<MessageContextMapping> list) {
        this.a.setMappings(list);
    }

    @Override
    public Collection<Integer> getAssertionOrdinalPath() {
        return this.a.getAssertionOrdinalPath();
    }

    @Override
    public void pushAssertionOrdinal(int n2) {
        this.a.pushAssertionOrdinal(n2);
    }

    @Override
    public int popAssertionOrdinal() throws NoSuchElementException {
        return this.a.popAssertionOrdinal();
    }

    @Override
    public void passDownAssertionOrdinal(@NotNull PolicyEnforcementContext policyEnforcementContext) {
        try {
            if (policyEnforcementContext == null) {
                PolicyEnforcementContextWrapper.a(1);
            }
        }
        catch (UnsupportedOperationException unsupportedOperationException) {
            throw PolicyEnforcementContextWrapper.b(unsupportedOperationException);
        }
        this.a.passDownAssertionOrdinal(policyEnforcementContext);
    }

    @Override
    public void setTraceListener(AssertionTraceListener assertionTraceListener) {
        this.a.setTraceListener(assertionTraceListener);
    }

    @Override
    public boolean hasTraceListener() {
        return this.a.hasTraceListener();
    }

    @Override
    public AssertionTraceListener getTraceListener() {
        return this.a.getTraceListener();
    }

    @Override
    public boolean isRequestWasCompressed() {
        return this.a.isRequestWasCompressed();
    }

    @Override
    public void setRequestWasCompressed(boolean bl2) {
        this.a.setRequestWasCompressed(bl2);
    }

    @Override
    public AssertionStatus getPolicyResult() {
        return this.a.getPolicyResult();
    }

    @Override
    public void setPolicyResult(AssertionStatus assertionStatus) {
        this.a.setPolicyResult(assertionStatus);
    }

    @Override
    public boolean isPolicyExecutionAttempted() {
        return this.a.isPolicyExecutionAttempted();
    }

    @Override
    public void setPolicyExecutionAttempted(boolean bl2) {
        this.a.setPolicyExecutionAttempted(bl2);
    }

    @Override
    public DebugContext getDebugContext() {
        return this.a.getDebugContext();
    }

    @Override
    public void setDebugContext(DebugContext debugContext) {
        this.a.setDebugContext(debugContext);
    }

    @Override
    public OtelContext getOtelContext() {
        return this.a.getOtelContext();
    }

    @Override
    public void setOtelContext(OtelContext otelContext) {
        this.a.setOtelContext(otelContext);
    }

    @Override
    public void setAuditContext(@Nullable AuditContext auditContext) {
        this.a.setAuditContext(auditContext);
    }

    @Override
    public AuditContext getAuditContext() {
        return this.a.getAuditContext();
    }

    @Override
    public void runOnClose(Runnable runnable) {
        this.a.runOnClose(runnable);
    }

    @Override
    public void runOnCloseFirst(Runnable runnable) {
        this.a.runOnCloseFirst(runnable);
    }

    @Override
    public void close() {
        this.a.close();
    }

    @Override
    public boolean isOverwriteResponseCookiePath() {
        return this.a.isOverwriteResponseCookiePath();
    }

    @Override
    public void setOverwriteResponseCookiePath(boolean bl2) {
        this.a.setOverwriteResponseCookiePath(bl2);
    }

    @Override
    public boolean isOverwriteResponseCookieDomain() {
        return this.a.isOverwriteResponseCookieDomain();
    }

    @Override
    public void setOverwriteResponseCookieDomain(boolean bl2) {
        this.a.setOverwriteResponseCookieDomain(bl2);
    }

    @Override
    public boolean isAuthorizedRequest() {
        return this.a.isAuthorizedRequest();
    }

    @Override
    public boolean isCompletedRequest() {
        return this.a.isCompletedRequest();
    }

    protected PolicyEnforcementContextWrapper(PolicyEnforcementContext policyEnforcementContext) {
        this.a = policyEnforcementContext;
    }

    private boolean a(String string) {
        boolean bl2;
        block5: {
            block4: {
                try {
                    try {
                        if (!BuiltinVariables.isSupported((String)string) || !ServerVariables.isValidForContext(string, this)) break block4;
                    }
                    catch (UnsupportedOperationException unsupportedOperationException) {
                        throw PolicyEnforcementContextWrapper.b(unsupportedOperationException);
                    }
                    bl2 = true;
                    break block5;
                }
                catch (UnsupportedOperationException unsupportedOperationException) {
                    throw PolicyEnforcementContextWrapper.b(unsupportedOperationException);
                }
            }
            bl2 = false;
        }
        return bl2;
    }

    private void a(String string, Object object) throws NoSuchVariableException {
        ServerVariables.set(string, object, this);
    }

    private Object b(String string) throws NoSuchVariableException {
        return ServerVariables.get(string, this);
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void a(int var0) {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 6[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1050)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

    private static Exception b(Exception exception) {
        return exception;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[9];
                var3_1 = 0;
                var2_2 = "0,>;R\u001b\r\u0005~?!M^#?1-\u0000J\u0012\u000fQ.8<^\u0013\u0006\u0005;+n\u0018[\u0010V~6(\u001f[\u0010_{*nR\u000b\u0010\u0005~7!K^\u0001\u0014~7;S\u0012,V~0=\u001f\r\u0016\u0001.6=Z\u001a\u000f\b~*;O\u000e\f\u0003*<*\u0013^\u0001\u0004*y*P\u001b\u0010\u001fy-nZ\u0006\n\u0002*\u0018\u0001?*={\u0011\u0014\u001f\u001f*=Z\f\u0017\u001817\u0001M\u001a\n\u001f?5\u0005\u001260\"[\u000b\u0016;-\u0003^\u000e\u0013\u00180>=\n'?+'^\u001c\u000f\u0014~~*1\u00106:q\u000b\u000f\u001d~4+K\u0016\f\u0015~|=\u0011[\u0010Q3,=K^\r\u001e*y<Z\n\u0016\u00030y J\u0012\u000f";
                var4_3 = "0,>;R\u001b\r\u0005~?!M^#?1-\u0000J\u0012\u000fQ.8<^\u0013\u0006\u0005;+n\u0018[\u0010V~6(\u001f[\u0010_{*nR\u000b\u0010\u0005~7!K^\u0001\u0014~7;S\u0012,V~0=\u001f\r\u0016\u0001.6=Z\u001a\u000f\b~*;O\u000e\f\u0003*<*\u0013^\u0001\u0004*y*P\u001b\u0010\u001fy-nZ\u0006\n\u0002*\u0018\u0001?*={\u0011\u0014\u001f\u001f*=Z\f\u0017\u001817\u0001M\u001a\n\u001f?5\u0005\u001260\"[\u000b\u0016;-\u0003^\u000e\u0013\u00180>=\n'?+'^\u001c\u000f\u0014~~*1\u00106:q\u000b\u000f\u001d~4+K\u0016\f\u0015~|=\u0011[\u0010Q3,=K^\r\u001e*y<Z\n\u0016\u00030y J\u0012\u000f".length();
                var1_4 = 62;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 50;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = PolicyEnforcementContextWrapper.a(v0, PolicyEnforcementContextWrapper.e(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u001036cQK\u0015\u0016?3cN\u0019\u0013\u00059)cP\u0019\u0012\u0000=<)\u0012,\u000e\u001f585x\u0012\u0007\u001c.8)P\u0019\u000f\u0007\u001f4\"I\u0019\u0019\u0007\u000b)-M\f\u0004\u00019\u001036cQK\u0015\u0016?3cN\u0019\u0013\u00059)cP\u0019\u0012\u0000=<)\u0012,\u000e\u001f585x\u0012\u0007\u001c.8)P\u0019\u000f\u0007\u001f4\"I\u0019\u0019\u0007\u000b)-M\f\u0004\u0001";
                    var4_3 = "\u001036cQK\u0015\u0016?3cN\u0019\u0013\u00059)cP\u0019\u0012\u0000=<)\u0012,\u000e\u001f585x\u0012\u0007\u001c.8)P\u0019\u000f\u0007\u001f4\"I\u0019\u0019\u0007\u000b)-M\f\u0004\u00019\u001036cQK\u0015\u0016?3cN\u0019\u0013\u00059)cP\u0019\u0012\u0000=<)\u0012,\u000e\u001f585x\u0012\u0007\u001c.8)P\u0019\u000f\u0007\u001f4\"I\u0019\u0019\u0007\u000b)-M\f\u0004\u0001".length();
                    var1_4 = 57;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 48;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = PolicyEnforcementContextWrapper.a(v0, PolicyEnforcementContextWrapper.e(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        PolicyEnforcementContextWrapper.g = var5;
    }

    private static char[] e(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x51);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 67;
                    case 1 -> 108;
                    case 2 -> 107;
                    case 3 -> 124;
                    case 4 -> 13;
                    case 5 -> 76;
                    default -> 81;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

