/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.service.PublishedService
 *  com.l7tech.gateway.common.stepdebug.DebugContextVariableData
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.policy.assertion.Assertion
 *  com.l7tech.policy.assertion.Assertion$Comment
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.assertion.Include
 *  com.l7tech.policy.assertion.SetVariableAssertion
 *  com.l7tech.util.mdc.JulMdc
 *  io.opentelemetry.api.GlobalOpenTelemetry
 *  io.opentelemetry.api.baggage.Baggage
 *  io.opentelemetry.api.common.Attributes
 *  io.opentelemetry.api.common.AttributesBuilder
 *  io.opentelemetry.api.internal.ImmutableSpanContext
 *  io.opentelemetry.api.trace.Span
 *  io.opentelemetry.api.trace.SpanKind
 *  io.opentelemetry.api.trace.Tracer
 *  io.opentelemetry.context.Context
 *  io.opentelemetry.context.propagation.TextMapPropagator
 *  org.apache.commons.lang3.StringUtils
 */
package com.l7tech.server.otel;

import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.gateway.common.stepdebug.DebugContextVariableData;
import com.l7tech.objectmodel.Goid;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.Include;
import com.l7tech.policy.assertion.SetVariableAssertion;
import com.l7tech.server.audit.Auditor;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.otel.OtelContextFactory;
import com.l7tech.server.otel.OtelMetricContextImpl;
import com.l7tech.server.otel.OtelTraceSamplingConfig;
import com.l7tech.server.otel.util.OtelBaggageUtil;
import com.l7tech.server.otel.util.OtelContextUtil;
import com.l7tech.server.otel.util.OtelTraceConfigUtil;
import com.l7tech.server.stepdebug.DebugPecData;
import com.l7tech.util.mdc.JulMdc;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.baggage.Baggage;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.api.internal.ImmutableSpanContext;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapPropagator;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringJoiner;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;

public class OtelTraceContextImpl
extends OtelMetricContextImpl {
    public static final String OTEL_TRACE_ID;
    public static final String OTEL_SPAN_ID;
    public static final String OTEL_TRACE_ATTRIBUTES_CV;
    public static final String OTEL_SPAN_ATTRIBUTES_CV;
    public static final String OTEL_BAGGAGE_TRACE_ATTRIBUTES_CV;
    public static final String DEFAULT_ATTR_DELIMITER = ",";
    public static final String DEFAULT_KV_DELIMITER = "=";
    private final Tracer l;
    private final String m;
    private final DebugPecData n;
    private final OtelTraceSamplingConfig o;
    private Collection<Integer> p;
    private Span q;
    private final String r;
    private final String s;
    private Map<String, String> t = new HashMap<String, String>();
    private Map<String, String> u = new HashMap<String, String>();
    private Map<String, String> v = new HashMap<String, String>();
    private final Auditor w;
    private static final Logger x;
    private static final TextMapPropagator y;
    private final Set<String> z;
    private final Set<String> A = new HashSet<String>();
    private boolean B;
    private static final String[] E;

    public OtelTraceContextImpl(String string, String string2, String string3, OtelTraceSamplingConfig otelTraceSamplingConfig, String string4, String string5, boolean bl2, Auditor auditor) {
        super(string, string2, auditor);
        this.l = GlobalOpenTelemetry.tracerBuilder((String)E[6]).setInstrumentationVersion(OTEL_SCOPE_VERSION).build();
        this.m = string3;
        this.o = otelTraceSamplingConfig;
        this.r = string4;
        this.z = string5 != null ? Arrays.stream(string5.split(DEFAULT_ATTR_DELIMITER)).map(String::trim).collect(Collectors.toUnmodifiableSet()) : Collections.emptySet();
        this.s = string2 != null ? string2 : "";
        this.B = bl2;
        this.n = bl2 ? new DebugPecData((Audit)auditor) : null;
        this.w = auditor;
    }

    @Override
    public Span getCurrentSpan() {
        return this.q;
    }

    @Override
    public Span startServiceSpan(PolicyEnforcementContext policyEnforcementContext) {
        this.p = policyEnforcementContext.getAssertionNumber();
        Context context = y.extract(Context.current(), (Object)policyEnforcementContext.getRequest().getHeadersKnob(), k);
        Span span = this.l.spanBuilder(this.m).setParent(context).setSpanKind(SpanKind.SERVER).startSpan();
        this.a(span, policyEnforcementContext);
        String[] stringArray = E;
        JulMdc.put((String)stringArray[31], (String)(span.getSpanContext().getTraceId() + "-" + span.getSpanContext().getSpanId()));
        policyEnforcementContext.setVariable(stringArray[12], span.getSpanContext().getTraceId());
        policyEnforcementContext.setVariable(stringArray[0], span.getSpanContext().getSpanId());
        this.h = Baggage.fromContext((Context)context);
        this.g.putAll(this.h.asMap());
        OtelBaggageUtil.setBaggageContextVariable(policyEnforcementContext, this.g);
        this.q = span;
        return span;
    }

    @Override
    public void endServiceSpan(Span span, AssertionStatus assertionStatus, PolicyEnforcementContext policyEnforcementContext) {
        Object object;
        if (span.getSpanContext() == ImmutableSpanContext.INVALID) {
            return;
        }
        Goid goid = policyEnforcementContext.getService() == null ? PublishedService.DEFAULT_GOID : policyEnforcementContext.getService().getGoid();
        String string = policyEnforcementContext.getService() == null ? "" : policyEnforcementContext.getService().getName();
        String string2 = policyEnforcementContext.getService() == null ? "" : policyEnforcementContext.getService().getRoutingUri();
        AttributesBuilder attributesBuilder = Attributes.builder();
        String[] stringArray = E;
        attributesBuilder.put(this.s + stringArray[5], string);
        attributesBuilder.put(this.s + stringArray[28], string2);
        attributesBuilder.put(this.s + stringArray[23], stringArray[30]);
        span.setAttribute(this.s + stringArray[24], goid.toString());
        if (policyEnforcementContext.getRequest().isHttpRequest()) {
            object = policyEnforcementContext.getRequest().getHttpRequestKnob();
            attributesBuilder.put(this.s + stringArray[9], object.getRequestUrl());
            attributesBuilder.put(this.s + stringArray[3], object.getMethod().name());
        }
        span.setAllAttributes(attributesBuilder.build());
        if (this.B) {
            this.n.setPolicyResult(assertionStatus, this.p);
            this.a(span, policyEnforcementContext);
        }
        this.b(span, policyEnforcementContext);
        if (!this.u.isEmpty()) {
            this.a(span, policyEnforcementContext, this.u);
        }
        this.a(span, policyEnforcementContext, this.A);
        object = OtelContextUtil.getResolvedContextValue(policyEnforcementContext, this.o.getTraceNamePattern(), (Audit)this.w);
        if (object != null && !((String)object).isBlank()) {
            span.updateName((String)object);
        }
        x.log(Level.FINEST, E[21] + span.toString());
        span.end();
    }

    @Override
    public Span startAssertionSpan(Assertion assertion, PolicyEnforcementContext policyEnforcementContext) {
        String string;
        String string2;
        Include include;
        this.p = policyEnforcementContext.getAssertionNumber();
        this.c(assertion);
        this.a(assertion, policyEnforcementContext);
        this.a(assertion);
        if (this.b(assertion)) {
            return Span.getInvalid();
        }
        String string3 = this.p.stream().map(String::valueOf).collect(Collectors.joining("."));
        StringJoiner stringJoiner = new StringJoiner(" ");
        stringJoiner.add(string3);
        Assertion.Comment comment = assertion.getAssertionComment();
        String string4 = this.getAssertionShortName(assertion);
        if (assertion instanceof Include) {
            include = (Include)assertion;
            string2 = include.getPolicyName();
        } else {
            string2 = null;
        }
        String string5 = string2;
        include = Attributes.builder();
        String[] stringArray = E;
        include.put(this.s + stringArray[18], string3);
        if (comment != null) {
            string = comment.getAssertionComment(Assertion.Comment.LEFT_COMMENT);
            String string6 = comment.getAssertionComment(Assertion.Comment.RIGHT_COMMENT);
            if (string != null) {
                include.put(this.s + stringArray[14], string);
                stringJoiner.add(string);
            }
            stringArray = E;
            stringJoiner.add(String.format(stringArray[13], string4));
            if (string6 != null) {
                include.put(this.s + stringArray[34], string6);
                stringJoiner.add(string6);
            }
        } else {
            stringJoiner.add(string4);
        }
        stringArray = E;
        include.put(this.s + stringArray[11], this.getAssertionFeatureSetName(assertion));
        include.put(this.s + stringArray[17], string4);
        if (string5 != null) {
            stringJoiner.add(String.format(stringArray[27], string5));
            include.put(this.s + stringArray[22], string5);
        }
        string = this.l.spanBuilder(stringJoiner.toString()).setSpanKind(SpanKind.INTERNAL).setAllAttributes(include.build()).startSpan();
        stringArray = E;
        JulMdc.put((String)stringArray[2], (String)(string.getSpanContext().getTraceId() + "-" + string.getSpanContext().getSpanId()));
        policyEnforcementContext.setVariable(stringArray[32], string.getSpanContext().getTraceId());
        policyEnforcementContext.setVariable(stringArray[33], string.getSpanContext().getSpanId());
        this.q = string;
        return string;
    }

    private void a(Assertion assertion) {
        if (!(assertion instanceof SetVariableAssertion)) {
            return;
        }
        String string = ((SetVariableAssertion)assertion).getVariableToSet();
        String string2 = ((SetVariableAssertion)assertion).expression();
        if (string2.isBlank()) {
            return;
        }
        String[] stringArray = E;
        if (stringArray[10].equalsIgnoreCase(string)) {
            String string3 = Pattern.quote(DEFAULT_ATTR_DELIMITER);
            Object[] objectArray = string2.split(string3);
            x.fine(stringArray[15] + Arrays.toString(objectArray));
            this.A.addAll(Arrays.stream(objectArray).map(String::trim).collect(Collectors.toSet()));
        }
    }

    @Override
    public void endAssertionSpan(Span span, Assertion assertion, PolicyEnforcementContext policyEnforcementContext) {
        if (span.getSpanContext() == ImmutableSpanContext.INVALID) {
            return;
        }
        this.a(span, policyEnforcementContext);
        if (!this.v.isEmpty()) {
            this.a(span, policyEnforcementContext, this.v);
        }
        x.log(Level.FINEST, E[4] + span.toString());
        span.end();
    }

    private boolean b(Assertion assertion) {
        boolean bl2 = false;
        List<Pattern> list = this.o.getIncludeAssertions();
        List<Pattern> list2 = this.o.getExcludeAssertions();
        String string = this.getAssertionShortName(assertion);
        if (!list.isEmpty()) {
            boolean bl3 = bl2 = !list.stream().anyMatch(pattern -> pattern.matcher(string).matches());
        }
        if (!bl2) {
            bl2 = list2.stream().anyMatch(pattern -> pattern.matcher(string).matches());
        }
        return bl2;
    }

    private void a(Span span, PolicyEnforcementContext policyEnforcementContext) {
        if (!this.B) {
            return;
        }
        this.n.update(policyEnforcementContext, Collections.emptySet());
        Set<DebugContextVariableData> set = this.n.getContextVariables();
        for (DebugContextVariableData debugContextVariableData : set) {
            StringBuilder stringBuilder = new StringBuilder();
            if (OtelTraceConfigUtil.shouldCtxVarBeIncluded(this.o.getIncludeCtxVars(), this.o.getExcludeCtxVars(), debugContextVariableData.getName())) {
                stringBuilder.append(debugContextVariableData).append(System.lineSeparator());
                if (!debugContextVariableData.getChildren().isEmpty()) {
                    this.a(stringBuilder, 1, debugContextVariableData.getName(), debugContextVariableData.getChildren());
                }
            }
            if (stringBuilder.isEmpty()) continue;
            span.addEvent(stringBuilder.toString());
        }
    }

    private void a(StringBuilder stringBuilder, int n2, String string, Set<DebugContextVariableData> set) {
        for (DebugContextVariableData debugContextVariableData : set) {
            String string2 = String.format(E[20], string, debugContextVariableData.getName());
            if (!OtelTraceConfigUtil.shouldCtxVarBeIncluded(this.o.getIncludeCtxVars(), this.o.getExcludeCtxVars(), string2)) continue;
            stringBuilder.append(StringUtils.repeat((String)"\t", (int)n2)).append(debugContextVariableData).append(System.lineSeparator());
            if (debugContextVariableData.getChildren().isEmpty()) continue;
            this.a(stringBuilder, n2 + 1, string2, debugContextVariableData.getChildren());
        }
    }

    private void b(Span span, PolicyEnforcementContext policyEnforcementContext) {
        if (this.r != null && !this.r.isBlank()) {
            OtelTraceConfigUtil.setCustomAttributesMap(this.r, this.t);
            if (!this.t.isEmpty()) {
                this.a(span, policyEnforcementContext, this.t);
            }
        }
    }

    private void c(Assertion assertion) {
        if (assertion instanceof SetVariableAssertion) {
            String string = ((SetVariableAssertion)assertion).getVariableToSet();
            String string2 = ((SetVariableAssertion)assertion).expression();
            String[] stringArray = E;
            if (stringArray[26].equalsIgnoreCase(string)) {
                if (!this.u.isEmpty()) {
                    this.u.clear();
                }
                if (!string2.isBlank()) {
                    OtelTraceConfigUtil.setCustomAttributesMap(string2, this.u);
                }
            } else if (E[8].equalsIgnoreCase(string)) {
                if (!this.v.isEmpty()) {
                    this.v.clear();
                }
                if (!string2.isBlank()) {
                    OtelTraceConfigUtil.setCustomAttributesMap(string2, this.v);
                }
            }
        }
    }

    private void a(Span span, PolicyEnforcementContext policyEnforcementContext, Map<String, String> map) {
        if (!map.isEmpty()) {
            for (Map.Entry<String, String> entry : map.entrySet()) {
                String string = OtelContextUtil.getResolvedContextValue(policyEnforcementContext, entry.getValue(), (Audit)this.w);
                span.setAttribute(this.s + entry.getKey(), string);
            }
        }
    }

    private void a(Span span, PolicyEnforcementContext policyEnforcementContext, Set<String> set) {
        Map map = this.createBaggage().asMap();
        HashSet<String> hashSet = new HashSet<String>();
        if (set.isEmpty()) {
            String[] stringArray = E;
            x.fine(stringArray[29]);
            this.z.forEach(string -> hashSet.add(OtelContextUtil.getResolvedContextValue(policyEnforcementContext, string, (Audit)this.w)));
        } else {
            String[] stringArray = E;
            x.fine(stringArray[16]);
            set.forEach(string -> hashSet.add(OtelContextUtil.getResolvedContextValue(policyEnforcementContext, string, (Audit)this.w)));
        }
        x.fine(E[25] + String.valueOf(hashSet));
        OtelBaggageUtil.setBaggageSpanAttributes(span, map, hashSet, this.s);
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[35];
                var3_1 = 0;
                var2_2 = "c\u0015#wS>\u0012m\u000f\u000f\u007f\u0014c\u0015#wS>\u0012m\u000fhz\t9\u0010e\u00033o\u0018>\u0007C5\u0003W\"\u0004&\u0006a\u00042s\u0012)\u001bC\u0015#w],\u0011\u007f\u00044o\u0014\"\f,\u00126z\u0013m\u0006i\u00033|Gm\u000b\u007f\u00044m\u0014.\u0007B\u0000+~\u0012o\u000e+5\u0011,\u001bi\u0013q5\u001a,\u0016i\u0016'b\u0015c\u0015#wS9\u0010m\u0002#5\u001c9\u0016~\b$n\t(\u0011\u0014c\u0015#wS>\u0012m\u000fhz\t9\u0010e\u00033o\u0018>\n~\u00047n\u0018>\u0016Y\u0013*\u001dc\u0015#wS/\u0003k\u0006'|\u0018c\u0016~\u0000%~S,\u0016x\u0013/y\b9\u0007\u007f\rm\u00125~\u000f9\u000bc\u000f\u0012b\r(\fc\u0015#wS9\u0010m\u0002#R\u0019\n,Ni;X>B#Nf\u000b`\u0004 o>\"\u000fa\u0004(o\u001d_\u00042;?,\u0005k\u0000!~]\u001e\u0012m\u000ffZ\t9\u0010e\u00033o\u0018>X,#Y\u0012/u\u001am\u000ec\u0002'w]/\u0003k\u0006'|\u0018m\u0011|\u0000(;\u001c9\u0016~\b$n\t(\u0011\t\u007f\t)i\t\u0003\u0003a\u0004\n`\b(~38\u000fn\u00044\u001dc\u0015#wS/\u0003k\u0006'|\u0018c\u0016~\u0000%~S,\u0016x\u0013/y\b9\u0007\u007f\u0005)\u0012h>\u000e\u0019C\u0015#w]>\u0007~\u0017/x\u0018m\u0011|\u0000(;\u0019(\u0000y\u0006|;\n|\u000e*r\u001e4,m\f#\rm\u00125~\u000f9\u000bc\u000f\u0012b\r(\u0004k\u000e/\u007f\u0019N\u0000!|\u001c*\u0007,26z\u0013m#x\u00154r\u001f8\u0016i\u0012|;\u0015c\u0015#wS9\u0010m\u0002#5\u001c9\u0016~\b$n\t(\u0011\u00046Ach\n\u007f\u00044m\u0014.\u0007Y\u0013/<@\u000e%z\u0011m m\u0006!z\u001a(Be\u0012f~\u0010=\u0016uMfn\u000e$\fkA!w\u0012/\u0003`A$z\u001a*\u0003k\u0004fh\r,\f,\u00002o\u000f$\u0000y\u0015#h\u0007_\u00044m\u0014.\u0007\u0007C5\u0003W\"\u0004&\fc\u0015#wS9\u0010m\u0002#R\u0019";
                var4_3 = "c\u0015#wS>\u0012m\u000f\u000f\u007f\u0014c\u0015#wS>\u0012m\u000fhz\t9\u0010e\u00033o\u0018>\u0007C5\u0003W\"\u0004&\u0006a\u00042s\u0012)\u001bC\u0015#w],\u0011\u007f\u00044o\u0014\"\f,\u00126z\u0013m\u0006i\u00033|Gm\u000b\u007f\u00044m\u0014.\u0007B\u0000+~\u0012o\u000e+5\u0011,\u001bi\u0013q5\u001a,\u0016i\u0016'b\u0015c\u0015#wS9\u0010m\u0002#5\u001c9\u0016~\b$n\t(\u0011\u0014c\u0015#wS>\u0012m\u000fhz\t9\u0010e\u00033o\u0018>\n~\u00047n\u0018>\u0016Y\u0013*\u001dc\u0015#wS/\u0003k\u0006'|\u0018c\u0016~\u0000%~S,\u0016x\u0013/y\b9\u0007\u007f\rm\u00125~\u000f9\u000bc\u000f\u0012b\r(\fc\u0015#wS9\u0010m\u0002#R\u0019\n,Ni;X>B#Nf\u000b`\u0004 o>\"\u000fa\u0004(o\u001d_\u00042;?,\u0005k\u0000!~]\u001e\u0012m\u000ffZ\t9\u0010e\u00033o\u0018>X,#Y\u0012/u\u001am\u000ec\u0002'w]/\u0003k\u0006'|\u0018m\u0011|\u0000(;\u001c9\u0016~\b$n\t(\u0011\t\u007f\t)i\t\u0003\u0003a\u0004\n`\b(~38\u000fn\u00044\u001dc\u0015#wS/\u0003k\u0006'|\u0018c\u0016~\u0000%~S,\u0016x\u0013/y\b9\u0007\u007f\u0005)\u0012h>\u000e\u0019C\u0015#w]>\u0007~\u0017/x\u0018m\u0011|\u0000(;\u0019(\u0000y\u0006|;\n|\u000e*r\u001e4,m\f#\rm\u00125~\u000f9\u000bc\u000f\u0012b\r(\u0004k\u000e/\u007f\u0019N\u0000!|\u001c*\u0007,26z\u0013m#x\u00154r\u001f8\u0016i\u0012|;\u0015c\u0015#wS9\u0010m\u0002#5\u001c9\u0016~\b$n\t(\u0011\u00046Ach\n\u007f\u00044m\u0014.\u0007Y\u0013/<@\u000e%z\u0011m m\u0006!z\u001a(Be\u0012f~\u0010=\u0016uMfn\u000e$\fkA!w\u0012/\u0003`A$z\u001a*\u0003k\u0004fh\r,\f,\u00002o\u000f$\u0000y\u0015#h\u0007_\u00044m\u0014.\u0007\u0007C5\u0003W\"\u0004&\fc\u0015#wS9\u0010m\u0002#R\u0019".length();
                var1_4 = 11;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = OtelTraceContextImpl.b(v0, OtelTraceContextImpl.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "(^h<\u0018uY&DD4\f5Cj8BEF*Gh>B";
                    var4_3 = "(^h<\u0018uY&DD4\f5Cj8BEF*Gh>B".length();
                    var1_4 = 11;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 10;
                        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++] = OtelTraceContextImpl.b(v0, OtelTraceContextImpl.b(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;
            }
        }
        OtelTraceContextImpl.E = var5;
        OtelTraceContextImpl.OTEL_TRACE_ID = OtelTraceContextImpl.E[32];
        OtelTraceContextImpl.OTEL_TRACE_ATTRIBUTES_CV = OtelTraceContextImpl.E[7];
        OtelTraceContextImpl.OTEL_BAGGAGE_TRACE_ATTRIBUTES_CV = OtelTraceContextImpl.E[19];
        OtelTraceContextImpl.OTEL_SPAN_ATTRIBUTES_CV = OtelTraceContextImpl.E[1];
        OtelTraceContextImpl.OTEL_SPAN_ID = OtelTraceContextImpl.E[33];
        OtelTraceContextImpl.x = Logger.getLogger(OtelTraceContextImpl.class.getName());
        OtelTraceContextImpl.y = OtelContextFactory.getTextMapPropagator();
    }

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

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String b(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 -> 77;
                    case 1 -> 32;
                    case 2 -> 7;
                    case 3 -> 90;
                    case 4 -> 60;
                    case 5 -> 12;
                    default -> 35;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

