/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.module.ModuleLoadingException
 *  com.l7tech.policy.assertion.Assertion
 *  com.l7tech.util.Background
 *  com.l7tech.util.ClassUtils
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.TextUtils
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.context.ApplicationContext
 */
package com.l7tech.server.policy.module;

import com.l7tech.gateway.common.module.ModuleLoadingException;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.server.policy.module.AssertionModuleRegistrationEvent;
import com.l7tech.server.policy.module.AssertionModuleUnregistrationEvent;
import com.l7tech.server.policy.module.ModularAssertionModule;
import com.l7tech.server.policy.module.ModularAssertionModulesConfig;
import com.l7tech.server.policy.module.ModuleData;
import com.l7tech.server.policy.module.ModuleException;
import com.l7tech.server.policy.module.ModulesScanner;
import com.l7tech.server.policy.module.ScannerCallbacks;
import com.l7tech.server.policy.module.ScheduledModuleScanner;
import com.l7tech.server.policy.module.g;
import com.l7tech.server.policy.module.h;
import com.l7tech.util.Background;
import com.l7tech.util.ClassUtils;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.TextUtils;
import java.io.File;
import java.io.IOException;
import java.lang.invoke.LambdaMetafactory;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.context.ApplicationContext;

/*
 * Exception performing whole class analysis ignored.
 */
public class ModularAssertionsScanner
extends ScheduledModuleScanner<ModularAssertionModule> {
    protected static final Logger logger;
    private static final String[] c;
    private static final boolean d;
    private final ModularAssertionModulesConfig e;
    private final Map<String, ModularAssertionModule> f;
    private final Map<String, Set<ModularAssertionModule>> g;
    private boolean h;
    private final ScannerCallbacks.ModularAssertion i;
    private static final String[] l;

    public ModularAssertionsScanner(@NotNull ModularAssertionModulesConfig modularAssertionModulesConfig, @NotNull ScannerCallbacks.ModularAssertion modularAssertion) {
        if (modularAssertionModulesConfig == null) {
            ModularAssertionsScanner.c(0);
        }
        if (modularAssertion == null) {
            ModularAssertionsScanner.c(1);
        }
        this.f = new ConcurrentHashMap<String, ModularAssertionModule>();
        this.g = new ConcurrentHashMap<String, Set<ModularAssertionModule>>();
        this.h = true;
        this.e = modularAssertionModulesConfig;
        this.i = modularAssertion;
    }

    private static boolean a(ClassLoader classLoader, String string) {
        try {
            boolean bl2;
            try {
                bl2 = classLoader.loadClass(string) != null;
            }
            catch (Exception exception) {
                throw ModularAssertionsScanner.a(exception);
            }
            return bl2;
        }
        catch (Exception exception) {
            return false;
        }
    }

    @Nullable
    public ModularAssertionModule getModuleForPackage(@NotNull String string) {
        try {
            if (string == null) {
                ModularAssertionsScanner.c(2);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw ModularAssertionsScanner.a(nullPointerException);
        }
        return this.f.get(string);
    }

    public boolean isFirstPartyAssertionPackage(@NotNull String string) {
        boolean bl2;
        block8: {
            block7: {
                try {
                    if (string == null) {
                        ModularAssertionsScanner.c(3);
                    }
                }
                catch (NullPointerException nullPointerException) {
                    throw ModularAssertionsScanner.a(nullPointerException);
                }
                Set<ModularAssertionModule> set = this.g.get(string);
                try {
                    try {
                        if (set == null || set.isEmpty()) break block7;
                    }
                    catch (NullPointerException nullPointerException) {
                        throw ModularAssertionsScanner.a(nullPointerException);
                    }
                    bl2 = true;
                    break block8;
                }
                catch (NullPointerException nullPointerException) {
                    throw ModularAssertionsScanner.a(nullPointerException);
                }
            }
            bl2 = false;
        }
        return bl2;
    }

    /*
     * Loose catch block
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    protected void onModuleLoaded(Class<? extends Assertion> clazz, String string) {
        block13: {
            if (string == null) return;
            try {
                if (string.length() >= 1) break block13;
                return;
                catch (ClassNotFoundException classNotFoundException) {
                    throw ModularAssertionsScanner.a(classNotFoundException);
                }
            }
            catch (ClassNotFoundException classNotFoundException) {
                throw ModularAssertionsScanner.a(classNotFoundException);
            }
        }
        Class<?> clazz2 = clazz.getClassLoader().loadClass(string);
        String[] stringArray = l;
        Method method = clazz2.getMethod(stringArray[52], ApplicationContext.class);
        int n2 = method.getModifiers();
        if (!Modifier.isStatic(n2)) {
            logger.log(Level.WARNING, stringArray[56] + clazz.getName() + stringArray[13]);
            return;
        }
        try {
            if (!Modifier.isPublic(n2)) {
                logger.log(Level.WARNING, l[59] + clazz.getName() + l[53]);
                return;
            }
        }
        catch (NullPointerException nullPointerException) {
            throw ModularAssertionsScanner.a(nullPointerException);
        }
        try {
            method.invoke(null, this.i.getApplicationContext());
            return;
        }
        catch (ClassNotFoundException classNotFoundException) {
            stringArray = l;
            logger.log(Level.WARNING, stringArray[59] + clazz.getName() + stringArray[14] + ExceptionUtils.getMessage((Throwable)classNotFoundException));
            return;
        }
        catch (NoSuchMethodException noSuchMethodException) {
            stringArray = l;
            logger.log(Level.WARNING, stringArray[59] + clazz.getName() + stringArray[43] + ExceptionUtils.getMessage((Throwable)noSuchMethodException));
            return;
        }
        catch (IllegalAccessException | InvocationTargetException reflectiveOperationException) {
            stringArray = l;
            logger.log(Level.WARNING, stringArray[59] + clazz.getName() + stringArray[7] + ExceptionUtils.getMessage((Throwable)reflectiveOperationException), reflectiveOperationException);
        }
    }

    protected void onModuleUnloaded(ModularAssertionModule modularAssertionModule) {
        Background.cancelAllTasksFromClassLoader(modularAssertionModule.getModuleClassLoader());
        this.i.publishEvent(new AssertionModuleUnregistrationEvent(this, modularAssertionModule));
        try {
            modularAssertionModule.close();
        }
        catch (IOException iOException) {
            String[] stringArray = l;
            logger.log(Level.WARNING, stringArray[26] + modularAssertionModule.getName() + stringArray[36] + ExceptionUtils.getMessage((Throwable)iOException), iOException);
        }
    }

    private static boolean a(Pattern[] patternArray, String string) {
        for (Pattern pattern : patternArray) {
            try {
                if (!pattern.matcher(string).matches()) continue;
                return true;
            }
            catch (NullPointerException nullPointerException) {
                throw ModularAssertionsScanner.a(nullPointerException);
            }
        }
        return false;
    }

    private static Pattern[] a(String string) {
        String[] stringArray;
        block6: {
            block5: {
                try {
                    if (string != null) break block5;
                    stringArray = c;
                    break block6;
                }
                catch (NullPointerException nullPointerException) {
                    throw ModularAssertionsScanner.a(nullPointerException);
                }
            }
            String[] stringArray2 = l;
            stringArray = string.split(stringArray2[29]);
        }
        String[] stringArray3 = stringArray;
        Pattern[] patternArray = new Pattern[stringArray3.length];
        try {
            for (int i2 = 0; i2 < stringArray3.length; ++i2) {
                patternArray[i2] = Pattern.compile(l[61] + TextUtils.globToRegex((CharSequence)stringArray3[i2]) + "$", 2);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw ModularAssertionsScanner.a(nullPointerException);
        }
        return patternArray;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Could not resolve type clashes
     * Unable to fully structure code
     */
    @Override
    @NotNull
    protected ModulesScanner.ModuleLoadStatus<ModularAssertionModule> onModuleLoad(ModuleData var1_1) throws ModuleException {
        block92: {
            block91: {
                block90: {
                    try {
                        if (var1_1 == null) {
                            throw new ModuleException(ModularAssertionsScanner.l[37], new NullPointerException());
                        }
                    }
                    catch (IOException v0) {
                        throw ModularAssertionsScanner.a(v0);
                    }
                    var2_2 = new ModulesScanner.ModuleLoadStatus<ModularAssertionModule>();
                    var3_3 = var1_1.getFile();
                    var4_4 = var1_1.getDigest();
                    var5_5 = var1_1.getLastModified();
                    var7_6 = var3_3.getName();
                    var8_7 = (ModularAssertionModule)this.getModule(var7_6);
                    var9_8 = new JarFile(var3_3, false);
                    var10_13 = var9_8.getManifest();
                    var11_14 = var10_13.getMainAttributes();
                    var12_15 = var11_14.getValue(this.e.getManifestHdrAssertionList());
                    var13_16 = var11_14.getValue(Attributes.Name.IMPLEMENTATION_TITLE);
                    try {
                        if (var12_15 != null) break block90;
                        v1 = ModularAssertionsScanner.c;
                        break block91;
                    }
                    catch (IOException v2) {
                        throw ModularAssertionsScanner.a(v2);
                    }
                }
                var34_17 = ModularAssertionsScanner.l;
                v1 = var14_18 = var12_15.split(var34_17[69]);
            }
            if (var14_18.length >= 1) break block92;
            var34_17 = ModularAssertionsScanner.l;
            ModularAssertionsScanner.logger.log(Level.WARNING, var34_17[57] + var3_3.getAbsolutePath());
            var2_2.setLoadedModule(null);
            v3 = var2_2;
            if (v3 == null) {
                ModularAssertionsScanner.c(4);
            }
            return v3;
        }
        try {
            var15_19 = var11_14.getValue(this.e.getManifestHdrPrivateLibraries());
            var16_20 = ModularAssertionsScanner.a(var15_19);
            var17_21 = new HashSet<String>();
            var18_22 = new HashSet<String>();
            var19_23 = new HashSet<g>();
            var20_24 = var9_8.entries();
            while (var20_24.hasMoreElements()) {
                block94: {
                    block93: {
                        var21_25 = var20_24.nextElement();
                        var22_26 = var21_25.getName();
                        try {
                            if (!var22_26.startsWith(ModularAssertionsScanner.l[65]) || !var22_26.toLowerCase().endsWith(ModularAssertionsScanner.l[25])) break block93;
                        }
                        catch (IOException v4) {
                            throw ModularAssertionsScanner.a(v4);
                        }
                        var34_17 = ModularAssertionsScanner.l;
                        ModularAssertionsScanner.logger.info(var34_17[64] + (String)var22_26 + var34_17[1] + var7_6);
                        var23_27 = ModularAssertionsScanner.a(var16_20, (String)var22_26);
                        try {
                            if (var23_27) {
                                ModularAssertionsScanner.logger.fine(var34_17[39] + (String)var22_26 + var34_17[55]);
                            }
                        }
                        catch (IOException v5) {
                            throw ModularAssertionsScanner.a(v5);
                        }
                        var24_31 = new g(var9_8, (String)var22_26, var23_27);
                        var19_23.add((g)var24_31);
                        for (Object var26_45 : var24_31.getDirectories()) {
                            if (var26_45 == null) continue;
                            try {
                                if (!var26_45.contains("/")) {
                                    continue;
                                }
                            }
                            catch (IOException v6) {
                                throw ModularAssertionsScanner.a(v6);
                            }
                            var27_46 = var26_45.split("/");
                            try {
                                if (var27_46.length < 2) {
                                    continue;
                                }
                            }
                            catch (IOException v7) {
                                throw ModularAssertionsScanner.a(v7);
                            }
                            try {
                                if (var27_46[0].endsWith(ModularAssertionsScanner.l[10])) {
                                    continue;
                                }
                            }
                            catch (IOException v8) {
                                throw ModularAssertionsScanner.a(v8);
                            }
                            var28_47 /* !! */  = var22_26.replaceAll("/", ".");
                            var28_47 /* !! */  = ClassUtils.stripSuffix((String)var28_47 /* !! */ , (String)".");
                            var17_21.add((String)var28_47 /* !! */ );
                        }
                        continue;
                    }
                    try {
                        if (!var21_25.isDirectory()) break block94;
                        if (var22_26 == null) continue;
                    }
                    catch (IOException v9) {
                        throw ModularAssertionsScanner.a(v9);
                    }
                    try {
                        if (!var22_26.contains("/")) {
                            continue;
                        }
                    }
                    catch (IOException v10) {
                        throw ModularAssertionsScanner.a(v10);
                    }
                    var23_28 = var22_26.split("/");
                    try {
                        if (var23_28.length < 2) {
                            continue;
                        }
                    }
                    catch (IOException v11) {
                        throw ModularAssertionsScanner.a(v11);
                    }
                    try {
                        if (var23_28[0].toUpperCase(Locale.ROOT).endsWith(ModularAssertionsScanner.l[31])) {
                            continue;
                        }
                    }
                    catch (IOException v12) {
                        throw ModularAssertionsScanner.a(v12);
                    }
                    var24_31 = var22_26.replaceAll("/", ".");
                    var24_31 = ClassUtils.stripSuffix((String)var24_31, (String)".");
                    var17_21.add((String)var24_31);
                    continue;
                }
                var34_17 = ModularAssertionsScanner.l;
                if (!var22_26.endsWith(var34_17[30])) continue;
                var23_29 = var22_26.lastIndexOf(47);
                try {
                    if (var23_29 <= 0) {
                        continue;
                    }
                }
                catch (IOException v13) {
                    throw ModularAssertionsScanner.a(v13);
                }
                var24_31 = var22_26.substring(0, var23_29);
                var25_37 = var24_31.indexOf(47);
                try {
                    if (var25_37 < 0) {
                        continue;
                    }
                }
                catch (IOException v14) {
                    throw ModularAssertionsScanner.a(v14);
                }
                var26_45 = var24_31.substring(0, var25_37);
                try {
                    if (var26_45.toUpperCase(Locale.ROOT).endsWith(ModularAssertionsScanner.l[31])) {
                        continue;
                    }
                }
                catch (IOException v15) {
                    throw ModularAssertionsScanner.a(v15);
                }
                var18_22.add(var24_31.replace('/', '.'));
            }
            var21_25 = new h(var7_6, var3_3.toURI().toURL(), this.getClass().getClassLoader(), var19_23, ModularAssertionsScanner.d, var13_16);
            var22_26 = new HashSet<E>();
            for (Object var26_45 : var14_18) {
                block97: {
                    block96: {
                        block101: {
                            block95: {
                                if (ModularAssertionsScanner.d) break block95;
                                try {
                                    block100: {
                                        if (!ModularAssertionsScanner.a(this.getClass().getClassLoader(), (String)var26_45)) break block95;
                                        break block100;
                                        catch (IOException v16) {
                                            throw ModularAssertionsScanner.a(v16);
                                        }
                                    }
                                    throw new InstantiationException(ModularAssertionsScanner.l[51] + (String)var26_45);
                                }
                                catch (IOException v17) {
                                    throw ModularAssertionsScanner.a(v17);
                                }
                            }
                            var27_46 = var21_25.loadClass((String)var26_45);
                            try {
                                if (!Assertion.class.isAssignableFrom((Class<?>)var27_46)) {
                                    throw new ClassCastException(ModularAssertionsScanner.l[32] + var27_46.getName());
                                }
                            }
                            catch (IOException v18) {
                                throw ModularAssertionsScanner.a(v18);
                            }
                            if (var8_7 == null) break block96;
                            if (var8_7.offersClass((String)var26_45)) break block97;
                            break block101;
                            catch (IOException v19) {
                                throw ModularAssertionsScanner.a(v19);
                            }
                        }
                        try {
                            block102: {
                                if (!this.i.isAssertionRegistered((String)var26_45)) break block97;
                                break block102;
                                catch (IOException v20) {
                                    throw ModularAssertionsScanner.a(v20);
                                }
                            }
                            throw new InstantiationException(ModularAssertionsScanner.l[21] + var27_46.getName());
                        }
                        catch (IOException v21) {
                            throw ModularAssertionsScanner.a(v21);
                        }
                    }
                    try {
                        if (this.i.isAssertionRegistered((String)var26_45)) {
                            throw new InstantiationException(ModularAssertionsScanner.l[66] + var27_46.getName());
                        }
                    }
                    catch (IOException v22) {
                        throw ModularAssertionsScanner.a(v22);
                    }
                }
                var28_47 /* !! */  = (Assertion)var27_46.newInstance();
                var22_26.add(var28_47 /* !! */ );
            }
            var23_30 = new ModularAssertionModule(var7_6, var9_8, var5_5, var4_4, (h)var21_25, (Set<? extends Assertion>)var22_26, var17_21);
            var23_30.setEntityName(var1_1.getName());
            var8_7 = (ModularAssertionModule)this.insertModule(var23_30);
            if (var8_7 != null) {
                var24_33 = var8_7;
                this.f.values().removeIf((Predicate<ModularAssertionModule>)LambdaMetafactory.metafactory(null, null, null, (Ljava/lang/Object;)Z, lambda$onModuleLoad$0(com.l7tech.server.policy.module.ModularAssertionModule com.l7tech.server.policy.module.ModularAssertionModule ), (Lcom/l7tech/server/policy/module/ModularAssertionModule;)Z)((ModularAssertionModule)var24_33));
                for (Object var26_45 : this.g.values()) {
                    var26_45.remove(var24_33);
                }
                this.g.values().removeIf((Predicate<Set>)LambdaMetafactory.metafactory(null, null, null, (Ljava/lang/Object;)Z, isEmpty(), (Ljava/util/Set;)Z)());
            }
            for (String var25_40 : var17_21) {
                this.f.put(var25_40, var23_30);
            }
            for (String var25_41 : var18_22) {
                this.g.computeIfAbsent(var25_41, (Function<String, Set>)LambdaMetafactory.metafactory(null, null, null, (Ljava/lang/Object;)Ljava/lang/Object;, lambda$onModuleLoad$1(java.lang.String ), (Ljava/lang/String;)Ljava/util/Set;)()).add(var23_30);
            }
            try {
                this.clearFailedModTimes();
                var2_2.setLoadedModule(var23_30);
                v23 = var2_2;
                v24 = var8_7 != null;
            }
            catch (IOException v25) {
                throw ModularAssertionsScanner.a(v25);
            }
            v23.setPrevModuleUnloaded(v24);
            try {
                this.i.registerClusterProps((Set<? extends Assertion>)var22_26);
                var24_35 = var22_26.iterator();
                while (var24_35.hasNext()) {
                    var25_42 = (Assertion)var24_35.next();
                    var34_17 = ModularAssertionsScanner.l;
                    var26_45 = (ClassLoader)var25_42.meta().get(var34_17[35]);
                    try {
                        if (var26_45 == null) continue;
                        var21_25.addDelegate((ClassLoader)var26_45);
                    }
                    catch (IOException v26) {
                        throw ModularAssertionsScanner.a(v26);
                    }
                }
                var24_35 = var22_26.iterator();
                while (var24_35.hasNext()) {
                    var25_43 = (Assertion)var24_35.next();
                    var34_17 = ModularAssertionsScanner.l;
                    var26_45 = (String)var25_43.meta().get(var34_17[8]);
                    if (var26_45 == null) continue;
                    try {
                        block103: {
                            if (var26_45.length() <= 0) continue;
                            break block103;
                            catch (IOException v27) {
                                throw ModularAssertionsScanner.a(v27);
                            }
                        }
                        ModularAssertionsScanner.logger.info(ModularAssertionsScanner.l[2] + var7_6);
                        this.onModuleLoaded(var25_43.getClass(), (String)var26_45);
                    }
                    catch (IOException v28) {
                        throw ModularAssertionsScanner.a(v28);
                    }
                }
                var24_35 = var22_26.iterator();
                while (var24_35.hasNext()) {
                    block99: {
                        block98: {
                            var25_44 = (Assertion)var24_35.next();
                            try {
                                if (var8_7 != null) break block98;
                                v29 = ModularAssertionsScanner.l[6];
                                break block99;
                            }
                            catch (IOException v30) {
                                throw ModularAssertionsScanner.a(v30);
                            }
                        }
                        var34_17 = ModularAssertionsScanner.l;
                        v29 = var34_17[44];
                    }
                    var26_45 = v29;
                    var30_48 = var4_4;
                    var31_49 = var7_6;
                    var32_50 = var26_45;
                    var33_51 = var25_44.getClass().getName();
                    var34_17 = ModularAssertionsScanner.l;
                    ModularAssertionsScanner.logger.info(var34_17[62] + var33_51 + var34_17[4] + (String)var32_50 + var34_17[67] + var31_49 + var34_17[63] + var30_48 + ")");
                    this.i.registerAssertion(var25_44.getClass());
                }
            }
            catch (Throwable var29_52) {
                try {
                    if (var8_7 != null) {
                        this.onModuleUnloaded(var8_7);
                    }
                }
                catch (IOException v31) {
                    throw ModularAssertionsScanner.a(v31);
                }
                throw var29_52;
            }
            try {
                if (var8_7 == null) ** GOTO lbl299
                this.onModuleUnloaded(var8_7);
            }
            catch (IOException v32) {
                throw ModularAssertionsScanner.a(v32);
            }
lbl299:
            // 2 sources

            this.i.publishEvent(new AssertionModuleRegistrationEvent(this, var23_30));
            v33 = var2_2;
        }
        catch (IOException var9_9) {
            var34_17 = ModularAssertionsScanner.l;
            throw new ModuleException(var34_17[68] + ExceptionUtils.getMessage((Throwable)var9_9), var9_9);
        }
        catch (ClassNotFoundException var9_10) {
            var34_17 = ModularAssertionsScanner.l;
            throw new ModuleException(var34_17[45] + ExceptionUtils.getMessage((Throwable)var9_10), var9_10);
        }
        catch (ClassCastException var9_11) {
            var34_17 = ModularAssertionsScanner.l;
            throw new ModuleException(var34_17[18] + ExceptionUtils.getMessage((Throwable)var9_11), var9_11);
        }
        catch (IllegalAccessException | InstantiationException var9_12) {
            throw new ModuleException(ModularAssertionsScanner.l[20] + ExceptionUtils.getMessage((Throwable)var9_12), var9_12);
        }
        if (v33 == null) {
            ModularAssertionsScanner.c(5);
        }
        return v33;
    }

    @Override
    protected boolean onModuleUnload(ModularAssertionModule modularAssertionModule) throws ModuleException {
        try {
            if (modularAssertionModule == null) {
                throw new ModuleException(l[42], new NullPointerException());
            }
        }
        catch (ModuleException moduleException) {
            throw ModularAssertionsScanner.a(moduleException);
        }
        try {
            if (this.removeModule(modularAssertionModule) == null) {
                return false;
            }
        }
        catch (ModuleException moduleException) {
            throw ModularAssertionsScanner.a(moduleException);
        }
        this.f.values().removeIf(modularAssertionModule2 -> {
            boolean bl2;
            try {
                bl2 = modularAssertionModule2 == modularAssertionModule;
            }
            catch (NullPointerException nullPointerException) {
                throw ModularAssertionsScanner.a(nullPointerException);
            }
            return bl2;
        });
        for (Set<ModularAssertionModule> object2 : this.g.values()) {
            object2.remove(modularAssertionModule);
        }
        this.g.values().removeIf(Set::isEmpty);
        this.clearFailedModTimes();
        Set<? extends Assertion> set = modularAssertionModule.getAssertionPrototypes();
        Iterator iterator = set.iterator();
        while (iterator.hasNext()) {
            Assertion assertion = (Assertion)iterator.next();
            String[] stringArray = l;
            logger.info(stringArray[49] + assertion.getClass().getName() + stringArray[34] + modularAssertionModule.getName());
            this.i.unregisterAssertion(assertion);
        }
        this.onModuleUnloaded(modularAssertionModule);
        return true;
    }

    @Override
    public void loadServerModuleFile(@NotNull File file, @NotNull String string, @NotNull String string2) throws ModuleLoadingException {
        try {
            if (file == null) {
                ModularAssertionsScanner.c(6);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        try {
            if (string == null) {
                ModularAssertionsScanner.c(7);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        try {
            if (string2 == null) {
                ModularAssertionsScanner.c(8);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        try {
            if (!this.e.isFeatureEnabled()) {
                throw new ModuleLoadingException(l[27] + string2 + l[17]);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        try {
            if (!this.e.isScanningEnabled()) {
                throw new ModuleLoadingException(l[24] + string2 + l[48]);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        super.loadServerModuleFile(file, string, string2);
    }

    @Override
    public void updateServerModuleFile(@NotNull File file, @NotNull String string, @NotNull String string2) {
        try {
            if (file == null) {
                ModularAssertionsScanner.c(9);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw ModularAssertionsScanner.a(nullPointerException);
        }
        try {
            if (string == null) {
                ModularAssertionsScanner.c(10);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw ModularAssertionsScanner.a(nullPointerException);
        }
        try {
            if (string2 == null) {
                ModularAssertionsScanner.c(11);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw ModularAssertionsScanner.a(nullPointerException);
        }
        super.updateServerModuleFile(file, string, string2);
    }

    @Override
    public void unloadServerModuleFile(@NotNull File file, @NotNull String string, @NotNull String string2) throws ModuleLoadingException {
        try {
            if (file == null) {
                ModularAssertionsScanner.c(12);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        try {
            if (string == null) {
                ModularAssertionsScanner.c(13);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        try {
            if (string2 == null) {
                ModularAssertionsScanner.c(14);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        try {
            if (!this.e.isFeatureEnabled()) {
                throw new ModuleLoadingException(l[60] + string2 + l[12]);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        try {
            if (!this.e.isScanningEnabled()) {
                throw new ModuleLoadingException(l[16] + string2 + l[11]);
            }
        }
        catch (ModuleLoadingException moduleLoadingException) {
            throw ModularAssertionsScanner.a((Exception)((Object)moduleLoadingException));
        }
        super.unloadServerModuleFile(file, string, string2);
    }

    @Override
    protected boolean isScanNeeded(File file, long l2) {
        boolean bl2;
        block5: {
            block4: {
                try {
                    try {
                        if (!this.isScanNeeded() && !super.isScanNeeded(file, l2)) break block4;
                    }
                    catch (NullPointerException nullPointerException) {
                        throw ModularAssertionsScanner.a(nullPointerException);
                    }
                    bl2 = true;
                    break block5;
                }
                catch (NullPointerException nullPointerException) {
                    throw ModularAssertionsScanner.a(nullPointerException);
                }
            }
            bl2 = false;
        }
        return bl2;
    }

    @Override
    public synchronized void destroy() {
        this.setScanNeeded(false);
        super.destroy();
    }

    @Override
    protected void onScanComplete(boolean bl2) {
        this.setScanNeeded(false);
    }

    public boolean scanModules() {
        return super.scanModules(this.e);
    }

    public synchronized void onLicenseChange() {
        this.reset();
        this.clearFailedModTimes();
        this.setScanNeeded(true);
    }

    public boolean isScanNeeded() {
        return this.h;
    }

    public void setScanNeeded(boolean bl2) {
        this.h = bl2;
    }

    private static /* synthetic */ Set lambda$onModuleLoad$1(String string) {
        return ConcurrentHashMap.newKeySet();
    }

    private static /* synthetic */ boolean lambda$onModuleLoad$0(ModularAssertionModule modularAssertionModule, ModularAssertionModule modularAssertionModule2) {
        boolean bl2;
        try {
            bl2 = modularAssertionModule2 == modularAssertionModule;
        }
        catch (NullPointerException nullPointerException) {
            throw ModularAssertionsScanner.a(nullPointerException);
        }
        return bl2;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[71];
                var3_1 = 0;
                var2_2 = "'3b\u0003\u001e8\u001e!?g\u0003\u0001j\u001829}\u0003\u0002`\u0006-?v\u0003\u001f`\u000e10j\u0003?`\u000e10n^3|\u0019!.{E\u001da\u0019\u0017?nB\u001cj\u0018\rd:}C\u001f/\u0007+8z@\u0017/\u001c\r2fX\u001bn\u0006-&fB\u0015/\u000e=2nA\u001blJ)3kY\u001ejJ-7/h\u0002\u001f`\u000e10n^3|\u0019!.{E\u001da\u0019j)|I3\u007f\u001a(5lM\u0006f\u0005*\u001fcM\u0001|\u001a%(g\u0006d:}C\u001f/\u000b4=lG\u0013h\u000f\n=bI\u0010*9x@\u000b\"\u0018!;f_\u0006j\u0018!8>d8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|fXRl\u000510k\f\u001c`\u001ed>j\f\u001ba\u001c+7jHH/\u001b)3kY\u001ej&+=k`\u001b|\u001e!2j^1c\u000b7/aM\u001fj\u00161,kM\u0006j9!.yI\u0000B\u0005 )cI4f\u0006!\u0004i\u0015Aj*fg/a\u001dk\u001f(=}\f3|\u0019!.{E\u001da\u0019d/lM\u001ca\u000f6|f_Rk\u00037=m@\u0017kD7fg/k\u0013{\u000f3=v\f\u0016`\u000f72(XRg\u000b29/@\u001bl\u000f*/j\f\u0014`\u0018d\u0011`H\u0007c\u000b6|N_\u0001j\u001805`B\u0001!Sd8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|fX\u0001/\u0005*\u0011`H\u0007c\u000f\b3nH\u0017kJ(5|X\u0017a\u000f6\u0011jX\u001a`\u000ed5|BU{J7(nX\u001bl<d8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|{D\u0017/\t(=|_Rf\u0019*{{\f\u0014`\u001f*85\f\u001c-/IE\u0000|\u001e\u0014=}X\u000bN\u001979}X\u001b`\u0004\u0014=lG\u0013h\u000f\u0016\u0007=aB\u001d{J12cC\u0013kJ)3kY\u001ejJf7fg/k\u0013{\u000f3=v\f\u0016`\u000f72(XRg\u000b29/@\u001bl\u000f*/j\f\u0014`\u0018d\u0011`H\u0007c\u000b6|N_\u0001j\u001805`B\u0001!%\u00009l@\u0013}\u000f |l@\u0013|\u0019d+n_Ra\u00050|nBRN\u001979}X\u001b`\u0004~|\t'=c@\u0010n\t//)\u00112nN\u001ejJ03/E\u001c|\u001e%2{E\u0013{\u000fd1`H\u0007c\u000b6|n_\u0001j\u001805`BH/H\u00009l@\u0013}\u000f |n_\u0001j\u001805`BRl\u0006%/|\f\u001b|J )\u007f@\u001bl\u000b09/C\u0014/\u000b7/j^\u0006f\u0005*|i^\u001dbJ%2`X\u001aj\u0018d1`H\u0007c\u000f~|\u0014(3nH!j\u001829}a\u001dk\u001f(9IE\u001ej\u0013#9{a\u001dk\u001f(9IC\u0000_\u000b'7nK\u0017\u0014\u0007=aB\u001d{J(3nHRb\u0005 )cIR-\u0004j6n^\u001b\u0001.}C\u0000/\u001d,5cIRl\u0006+/fB\u0015/\u0007+8z@\u0017/\u0014\u0007=aB\u001d{J(3nHRb\u0005 )cIR-8'3b\u0003\u001e8\u001e!?g\u0003\u0001j\u001829}\u0003\u0002`\u0006-?v\u0003\u001f`\u000e10j\u0003?`\u000e10n^3|\u0019!.{E\u001da\u0019\u0017?nB\u001cj\u0018\u0003\u0018/$\u0006j?cM\u0001|\u0004i\u0015Aj6\u00009l@\u0013}\u000f |n_\u0001j\u001805`BRl\u0006%/|\f\u001c`\u001ed=|_\u001bh\u0004%>cIR{\u0005d\u001d|_\u0017}\u001e-3a\u0016R\n7(nK\u0017k,-0j\u001fd:}C\u001f/\u00001/{\u0001\u0007a\u0018!;f_\u0006j\u0018!8/A\u001dk\u001f(9/!)3kY\u001ej)(=|_>`\u000b 9}h\u0017c\u000f#={I;a\u00190=aO\u0017\u0002~|\u0019)3kY\u001ej.%(n\f\u0011n\u0004*3{\f\u0010jJ*)c@>\u0005.hY\u001fj\u00040|iC\u0000/*\n3{b\u0007c\u0006d,n^\u0013b\u000f09}\fU*\u0019c|`JR*\u0019jy|\f\u001fz\u00190|aC\u0006/\b!|aY\u001ec\u0017\t=}G\u001ba\rd2j_\u0006j\u000ed6n^\u0014f\u0006!|\u00111,kM\u0006j\u000e\u00012{E\u0006v$%1j\u0006x5aE\u00061\u0015)3kY\u001ejJ'=aB\u001d{J&9/B\u0007c\u0006wd8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|{D\u0017/\t(=|_Rk\u0005!/a\u000b\u0006/\u0002%*j\f\u0013/\u001a1>cE\u0011/\u00190={E\u0011/\u0007!(gC\u0016/\u0005*\u0011`H\u0007c\u000f\b3nH\u0017kB\u0005,\u007f@\u001bl\u000b05`B1`\u000409wX[5J\r.)|X_z\u001a#.nH\u0017k#\u00112nN\u001ejJ03/J\u001ba\u000ed8jO\u001en\u0018!8/M\u0001|\u000f6(fC\u001c5J*\u0004\u0012`X<z\u0006(|bI\u0006g\u0005 |*_\\*\u0019d1z_\u0006/\u0004+(/^\u0017{\u001f62/B\u0007c\u0006\u001612cC\u0013k9!.yI\u0000B\u0005 )cI4f\u0006!*fg/a\u001dk\u001f(=}\f3|\u0019!.{E\u001da\u0019d/lM\u001ca\u000f6|f_Rk\u00037=m@\u0017kD \u00112}I\u0015f\u001909}E\u001chJ %aM\u001ff\td=|_\u0017}\u001e-3a\f\f)3kY\u001ej.-;j_\u00065\u00009l@\u0013}\u000f |l@\u0013|\u0019d=c^\u0017n\u000e=|jT\u001b|\u001e7|fBR\u007f\u000b69aXRl\u0006%/|@\u001dn\u000e!.5\f\u000e+2BC\u0016z\u0006!\u0010`M\u0016j\u000eSd8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|fX\u0001/\u0005*\u0011`H\u0007c\u000f\b3nH\u0017kJ(5|X\u0017a\u000f6\u0011jX\u001a`\u000ed5|BU{J4)m@\u001bl\n!2{E\u0006v$%1j\u000bd=|\f\u0002}\u00032={I\u0012\t3kY\u001en\u0018d=|_\u0017}\u001e-3a\fL\t3kY\u001en\u0018d=|_\u0017}\u001e-3ab\u0013b\u000f7|eM\u0000i\u0003(9/O\u001da\u001e%5a_Ra\u0005d1`H\u0007c\u000b6|n_\u0001j\u001805`B\u0001/B-;aC\u0000f\u0004#|fX[/\f+2BC\u0016z\u0006!\u0010`M\u0016\u0012\t3kY\u001en\u0018d=|_\u0017}\u001e-3a\f\u0016\u0007=aB\u001d{J12cC\u0013kJ)3kY\u001ejJf\t\u001at0\u0016\\%Emc\u001e\u00169hE\u0001{\u000f65aKRk\u0013*=bE\u0011/\u000b7/j^\u0006f\u0005*|\u0011dtbC\u0016z\u0006!|\\d3\"Xqj/\u001b\u0014.j@\u001dn\u000e-2h\f\u001cj\u001909k\f8N8d:f@\u0017/\f\u0005\u001d]\u0001;A,k0fN]H\u00009l@\u0013}\u000f |n_\u0001j\u001805`BRl\u0006%/|\f\u001b|J )\u007f@\u001bl\u000b09/C\u0014/\u000b7/j^\u0006f\u0005*|i^\u001dbJ%2`X\u001aj\u0018d1`H\u0007c\u000f~|\bd1`H\u0007c\u000fd\u0017\u00112nN\u001ejJ03/^\u0017n\u000ed1`H\u0007c\u000f~|";
                var4_3 = "'3b\u0003\u001e8\u001e!?g\u0003\u0001j\u001829}\u0003\u0002`\u0006-?v\u0003\u001f`\u000e10j\u0003?`\u000e10n^3|\u0019!.{E\u001da\u0019\u0017?nB\u001cj\u0018\rd:}C\u001f/\u0007+8z@\u0017/\u001c\r2fX\u001bn\u0006-&fB\u0015/\u000e=2nA\u001blJ)3kY\u001ejJ-7/h\u0002\u001f`\u000e10n^3|\u0019!.{E\u001da\u0019j)|I3\u007f\u001a(5lM\u0006f\u0005*\u001fcM\u0001|\u001a%(g\u0006d:}C\u001f/\u000b4=lG\u0013h\u000f\n=bI\u0010*9x@\u000b\"\u0018!;f_\u0006j\u0018!8>d8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|fXRl\u000510k\f\u001c`\u001ed>j\f\u001ba\u001c+7jHH/\u001b)3kY\u001ej&+=k`\u001b|\u001e!2j^1c\u000b7/aM\u001fj\u00161,kM\u0006j9!.yI\u0000B\u0005 )cI4f\u0006!\u0004i\u0015Aj*fg/a\u001dk\u001f(=}\f3|\u0019!.{E\u001da\u0019d/lM\u001ca\u000f6|f_Rk\u00037=m@\u0017kD7fg/k\u0013{\u000f3=v\f\u0016`\u000f72(XRg\u000b29/@\u001bl\u000f*/j\f\u0014`\u0018d\u0011`H\u0007c\u000b6|N_\u0001j\u001805`B\u0001!Sd8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|fX\u0001/\u0005*\u0011`H\u0007c\u000f\b3nH\u0017kJ(5|X\u0017a\u000f6\u0011jX\u001a`\u000ed5|BU{J7(nX\u001bl<d8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|{D\u0017/\t(=|_Rf\u0019*{{\f\u0014`\u001f*85\f\u001c-/IE\u0000|\u001e\u0014=}X\u000bN\u001979}X\u001b`\u0004\u0014=lG\u0013h\u000f\u0016\u0007=aB\u001d{J12cC\u0013kJ)3kY\u001ejJf7fg/k\u0013{\u000f3=v\f\u0016`\u000f72(XRg\u000b29/@\u001bl\u000f*/j\f\u0014`\u0018d\u0011`H\u0007c\u000b6|N_\u0001j\u001805`B\u0001!%\u00009l@\u0013}\u000f |l@\u0013|\u0019d+n_Ra\u00050|nBRN\u001979}X\u001b`\u0004~|\t'=c@\u0010n\t//)\u00112nN\u001ejJ03/E\u001c|\u001e%2{E\u0013{\u000fd1`H\u0007c\u000b6|n_\u0001j\u001805`BH/H\u00009l@\u0013}\u000f |n_\u0001j\u001805`BRl\u0006%/|\f\u001b|J )\u007f@\u001bl\u000b09/C\u0014/\u000b7/j^\u0006f\u0005*|i^\u001dbJ%2`X\u001aj\u0018d1`H\u0007c\u000f~|\u0014(3nH!j\u001829}a\u001dk\u001f(9IE\u001ej\u0013#9{a\u001dk\u001f(9IC\u0000_\u000b'7nK\u0017\u0014\u0007=aB\u001d{J(3nHRb\u0005 )cIR-\u0004j6n^\u001b\u0001.}C\u0000/\u001d,5cIRl\u0006+/fB\u0015/\u0007+8z@\u0017/\u0014\u0007=aB\u001d{J(3nHRb\u0005 )cIR-8'3b\u0003\u001e8\u001e!?g\u0003\u0001j\u001829}\u0003\u0002`\u0006-?v\u0003\u001f`\u000e10j\u0003?`\u000e10n^3|\u0019!.{E\u001da\u0019\u0017?nB\u001cj\u0018\u0003\u0018/$\u0006j?cM\u0001|\u0004i\u0015Aj6\u00009l@\u0013}\u000f |n_\u0001j\u001805`BRl\u0006%/|\f\u001c`\u001ed=|_\u001bh\u0004%>cIR{\u0005d\u001d|_\u0017}\u001e-3a\u0016R\n7(nK\u0017k,-0j\u001fd:}C\u001f/\u00001/{\u0001\u0007a\u0018!;f_\u0006j\u0018!8/A\u001dk\u001f(9/!)3kY\u001ej)(=|_>`\u000b 9}h\u0017c\u000f#={I;a\u00190=aO\u0017\u0002~|\u0019)3kY\u001ej.%(n\f\u0011n\u0004*3{\f\u0010jJ*)c@>\u0005.hY\u001fj\u00040|iC\u0000/*\n3{b\u0007c\u0006d,n^\u0013b\u000f09}\fU*\u0019c|`JR*\u0019jy|\f\u001fz\u00190|aC\u0006/\b!|aY\u001ec\u0017\t=}G\u001ba\rd2j_\u0006j\u000ed6n^\u0014f\u0006!|\u00111,kM\u0006j\u000e\u00012{E\u0006v$%1j\u0006x5aE\u00061\u0015)3kY\u001ejJ'=aB\u001d{J&9/B\u0007c\u0006wd8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|{D\u0017/\t(=|_Rk\u0005!/a\u000b\u0006/\u0002%*j\f\u0013/\u001a1>cE\u0011/\u00190={E\u0011/\u0007!(gC\u0016/\u0005*\u0011`H\u0007c\u000f\b3nH\u0017kB\u0005,\u007f@\u001bl\u000b05`B1`\u000409wX[5J\r.)|X_z\u001a#.nH\u0017k#\u00112nN\u001ejJ03/J\u001ba\u000ed8jO\u001en\u0018!8/M\u0001|\u000f6(fC\u001c5J*\u0004\u0012`X<z\u0006(|bI\u0006g\u0005 |*_\\*\u0019d1z_\u0006/\u0004+(/^\u0017{\u001f62/B\u0007c\u0006\u001612cC\u0013k9!.yI\u0000B\u0005 )cI4f\u0006!*fg/a\u001dk\u001f(=}\f3|\u0019!.{E\u001da\u0019d/lM\u001ca\u000f6|f_Rk\u00037=m@\u0017kD \u00112}I\u0015f\u001909}E\u001chJ %aM\u001ff\td=|_\u0017}\u001e-3a\f\f)3kY\u001ej.-;j_\u00065\u00009l@\u0013}\u000f |l@\u0013|\u0019d=c^\u0017n\u000e=|jT\u001b|\u001e7|fBR\u007f\u000b69aXRl\u0006%/|@\u001dn\u000e!.5\f\u000e+2BC\u0016z\u0006!\u0010`M\u0016j\u000eSd8jO\u001en\u0018!//MRb\u0005 )cIRc\u0005%8/@\u001b|\u001e!2j^Rm\u001f0|fX\u0001/\u0005*\u0011`H\u0007c\u000f\b3nH\u0017kJ(5|X\u0017a\u000f6\u0011jX\u001a`\u000ed5|BU{J4)m@\u001bl\n!2{E\u0006v$%1j\u000bd=|\f\u0002}\u00032={I\u0012\t3kY\u001en\u0018d=|_\u0017}\u001e-3a\fL\t3kY\u001en\u0018d=|_\u0017}\u001e-3ab\u0013b\u000f7|eM\u0000i\u0003(9/O\u001da\u001e%5a_Ra\u0005d1`H\u0007c\u000b6|n_\u0001j\u001805`B\u0001/B-;aC\u0000f\u0004#|fX[/\f+2BC\u0016z\u0006!\u0010`M\u0016\u0012\t3kY\u001en\u0018d=|_\u0017}\u001e-3a\f\u0016\u0007=aB\u001d{J12cC\u0013kJ)3kY\u001ejJf\t\u001at0\u0016\\%Emc\u001e\u00169hE\u0001{\u000f65aKRk\u0013*=bE\u0011/\u000b7/j^\u0006f\u0005*|\u0011dtbC\u0016z\u0006!|\\d3\"Xqj/\u001b\u0014.j@\u001dn\u000e-2h\f\u001cj\u001909k\f8N8d:f@\u0017/\f\u0005\u001d]\u0001;A,k0fN]H\u00009l@\u0013}\u000f |n_\u0001j\u001805`BRl\u0006%/|\f\u001b|J )\u007f@\u001bl\u000b09/C\u0014/\u000b7/j^\u0006f\u0005*|i^\u001dbJ%2`X\u001aj\u0018d1`H\u0007c\u000f~|\bd1`H\u0007c\u000fd\u0017\u00112nN\u001ejJ03/^\u0017n\u000ed1`H\u0007c\u000f~|".length();
                var1_4 = 56;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = ModularAssertionsScanner.c(v0, ModularAssertionsScanner.d(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "tCH\rE_\u00075r\u0006uk_\r&w\u0004";
                    var4_3 = "tCH\rE_\u00075r\u0006uk_\r&w\u0004".length();
                    var1_4 = 3;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 25;
                        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++] = ModularAssertionsScanner.c(v0, ModularAssertionsScanner.d(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;
            }
        }
        ModularAssertionsScanner.l = var5;
        ModularAssertionsScanner.logger = Logger.getLogger(ModularAssertionsScanner.class.getName());
        ModularAssertionsScanner.c = new String[0];
        ModularAssertionsScanner.d = ConfigFactory.getBooleanProperty((String)ModularAssertionsScanner.l[3], (boolean)false);
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void c(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 a(Exception exception) {
        return exception;
    }

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

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String c(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 -> 49;
                    case 1 -> 41;
                    case 2 -> 122;
                    case 3 -> 89;
                    case 4 -> 7;
                    case 5 -> 122;
                    default -> 31;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

