/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.AliasNotFoundException
 *  com.l7tech.common.io.CertGenParams
 *  com.l7tech.common.io.CertUtils
 *  com.l7tech.common.io.KeyGenParams
 *  com.l7tech.gateway.common.security.MultipleAliasesException
 *  com.l7tech.gateway.common.security.SpecialKeyType
 *  com.l7tech.gateway.common.security.keystore.SsgKeyEntry
 *  com.l7tech.gateway.common.security.keystore.SsgKeyMetadata
 *  com.l7tech.gateway.common.spring.remoting.RemoteUtils
 *  com.l7tech.gateway.common.transport.SsgConnector
 *  com.l7tech.objectmodel.DeleteException
 *  com.l7tech.objectmodel.Entity
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.ObjectNotFoundException
 *  com.l7tech.objectmodel.PersistentEntity
 *  com.l7tech.objectmodel.SaveException
 *  com.l7tech.objectmodel.UpdateException
 *  com.l7tech.security.prov.ProviderUtil
 *  com.l7tech.util.CallableRunnable
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.Functions
 *  com.l7tech.util.Functions$Unary
 *  com.l7tech.util.Pair
 *  com.l7tech.util.PoolByteArrayOutputStream
 *  com.l7tech.util.TextUtils
 *  jakarta.servlet.ServletRequest
 *  jakarta.servlet.http.HttpServletRequest
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.context.ApplicationEvent
 *  org.springframework.context.ApplicationEventPublisher
 */
package com.l7tech.server.admin;

import com.l7tech.common.io.AliasNotFoundException;
import com.l7tech.common.io.CertGenParams;
import com.l7tech.common.io.CertUtils;
import com.l7tech.common.io.KeyGenParams;
import com.l7tech.gateway.common.security.MultipleAliasesException;
import com.l7tech.gateway.common.security.SpecialKeyType;
import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.gateway.common.security.keystore.SsgKeyMetadata;
import com.l7tech.gateway.common.spring.remoting.RemoteUtils;
import com.l7tech.gateway.common.transport.SsgConnector;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectNotFoundException;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.security.prov.ProviderUtil;
import com.l7tech.server.DefaultKey;
import com.l7tech.server.admin.i;
import com.l7tech.server.admin.j;
import com.l7tech.server.admin.k;
import com.l7tech.server.admin.l;
import com.l7tech.server.event.AdminInfo;
import com.l7tech.server.event.EntityChangeSet;
import com.l7tech.server.event.RoleAwareEntityDeletionEvent;
import com.l7tech.server.event.admin.Deleted;
import com.l7tech.server.event.admin.KeyExportedEvent;
import com.l7tech.server.event.admin.Updated;
import com.l7tech.server.security.keystore.SsgKeyFinder;
import com.l7tech.server.security.keystore.SsgKeyStore;
import com.l7tech.server.security.keystore.SsgKeyStoreManager;
import com.l7tech.server.transport.http.HttpTransportModule;
import com.l7tech.util.CallableRunnable;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Functions;
import com.l7tech.util.Pair;
import com.l7tech.util.PoolByteArrayOutputStream;
import com.l7tech.util.TextUtils;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.security.GeneralSecurityException;
import java.security.Key;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.security.auth.x500.X500Principal;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;

/*
 * Exception performing whole class analysis ignored.
 */
public class PrivateKeyAdminHelper {
    private static final Logger a;
    public static final String PROP_PKCS12_PARSING_PROVIDER;
    private final DefaultKey b;
    private final SsgKeyStoreManager c;
    private final ApplicationEventPublisher d;
    private static final String[] e;

    public PrivateKeyAdminHelper(DefaultKey defaultKey, SsgKeyStoreManager ssgKeyStoreManager, ApplicationEventPublisher applicationEventPublisher) {
        this.b = defaultKey;
        this.c = ssgKeyStoreManager;
        this.d = applicationEventPublisher;
    }

    public SsgKeyEntry doFindKeyEntry(String string, Goid goid) throws FindException, KeyStoreException {
        try {
            SsgKeyEntry ssgKeyEntry;
            try {
                ssgKeyEntry = string == null ? this.b.getServerSslInfo() : this.c.lookupKeyByKeyAlias(string, goid);
            }
            catch (IOException iOException) {
                throw PrivateKeyAdminHelper.a(iOException);
            }
            return ssgKeyEntry;
        }
        catch (IOException iOException) {
            return null;
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            return null;
        }
    }

    /*
     * Loose catch block
     */
    public boolean isKeyActive(SsgKeyFinder ssgKeyFinder, String string) throws KeyStoreException {
        SsgKeyEntry ssgKeyEntry;
        Goid goid;
        SsgConnector ssgConnector;
        block21: {
            block20: {
                HttpServletRequest httpServletRequest = RemoteUtils.getHttpServletRequest();
                try {
                    if (null == httpServletRequest) {
                        return false;
                    }
                }
                catch (ObjectNotFoundException objectNotFoundException) {
                    throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
                }
                ssgConnector = HttpTransportModule.getConnector((ServletRequest)httpServletRequest);
                try {
                    if (null == ssgConnector) {
                        return false;
                    }
                }
                catch (ObjectNotFoundException objectNotFoundException) {
                    throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
                }
                if (ssgConnector.getKeyAlias() == null) break block20;
                try {
                    block22: {
                        if (string.equalsIgnoreCase(ssgConnector.getKeyAlias())) break block20;
                        break block22;
                        catch (ObjectNotFoundException objectNotFoundException) {
                            throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
                        }
                    }
                    return false;
                }
                catch (ObjectNotFoundException objectNotFoundException) {
                    throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
                }
            }
            goid = ssgConnector.getKeystoreGoid();
            if (goid == null) break block21;
            try {
                block23: {
                    if (Goid.equals((Goid)goid, (Goid)ssgKeyFinder.getGoid())) break block21;
                    break block23;
                    catch (ObjectNotFoundException objectNotFoundException) {
                        throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
                    }
                }
                return false;
            }
            catch (ObjectNotFoundException objectNotFoundException) {
                throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
            }
        }
        try {
            ssgKeyEntry = ssgKeyFinder.getCertificateChain(string);
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            return false;
        }
        try {
            Goid goid2;
            String string2;
            PrivateKeyAdminHelper privateKeyAdminHelper;
            try {
                privateKeyAdminHelper = this;
                string2 = ssgConnector.getKeyAlias();
                goid2 = goid != null ? goid : PersistentEntity.DEFAULT_GOID;
            }
            catch (ObjectNotFoundException objectNotFoundException) {
                throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
            }
            SsgKeyEntry ssgKeyEntry2 = privateKeyAdminHelper.doFindKeyEntry(string2, goid2);
            return CertUtils.certsAreEqual((X509Certificate)ssgKeyEntry2.getCertificate(), (X509Certificate)ssgKeyEntry.getCertificate());
        }
        catch (FindException findException) {
            return false;
        }
    }

    public List<String> findImpactedKeysByReplaceCertChain(Goid goid, String string, X509Certificate[] x509CertificateArray) throws UpdateException {
        SsgKeyFinder ssgKeyFinder;
        try {
            ssgKeyFinder = this.c.findByPrimaryKey(goid);
        }
        catch (FindException | KeyStoreException throwable) {
            String[] stringArray = e;
            throw new UpdateException(stringArray[21] + ExceptionUtils.getMessage((Throwable)throwable), throwable);
        }
        SsgKeyStore ssgKeyStore = ssgKeyFinder.getKeyStore();
        try {
            if (ssgKeyStore == null) {
                throw new UpdateException(e[61] + String.valueOf(goid) + e[16]);
            }
        }
        catch (KeyStoreException keyStoreException) {
            throw PrivateKeyAdminHelper.a(keyStoreException);
        }
        try {
            return ssgKeyStore.findImpactedKeysByReplaceCertChain(string, x509CertificateArray);
        }
        catch (Exception exception) {
            throw new UpdateException(e[14] + ExceptionUtils.getMessage((Throwable)exception), (Throwable)exception);
        }
    }

    public void doUpdateCertificateChain(Goid goid, String string, X509Certificate[] x509CertificateArray) throws UpdateException {
        this.doUpdateCertificateChain(goid, string, x509CertificateArray, false);
    }

    public void doUpdateCertificateChain(Goid goid, String string, X509Certificate[] x509CertificateArray, boolean bl2) throws UpdateException {
        SsgKeyFinder ssgKeyFinder;
        try {
            ssgKeyFinder = this.c.findByPrimaryKey(goid);
        }
        catch (KeyStoreException keyStoreException) {
            String[] stringArray = e;
            throw new UpdateException(stringArray[21] + ExceptionUtils.getMessage((Throwable)keyStoreException), (Throwable)keyStoreException);
        }
        catch (FindException findException) {
            String[] stringArray = e;
            throw new UpdateException(stringArray[21] + ExceptionUtils.getMessage((Throwable)findException), (Throwable)findException);
        }
        SsgKeyStore ssgKeyStore = ssgKeyFinder.getKeyStore();
        try {
            if (ssgKeyStore == null) {
                throw new UpdateException(e[4] + String.valueOf(goid) + e[33]);
            }
        }
        catch (KeyStoreException keyStoreException) {
            throw PrivateKeyAdminHelper.a(keyStoreException);
        }
        try {
            String[] stringArray = e;
            Future<Boolean> future = ssgKeyStore.replaceCertificateChain(this.a(ssgKeyStore, string, stringArray[32], stringArray[56]), string, x509CertificateArray, bl2);
            future.get();
        }
        catch (Exception exception) {
            throw new UpdateException(e[57] + ExceptionUtils.getMessage((Throwable)exception), (Throwable)exception);
        }
    }

    public void doUpdateKeyMetadata(Goid goid, @NotNull String string, @Nullable SsgKeyMetadata ssgKeyMetadata) throws UpdateException {
        SsgKeyFinder ssgKeyFinder;
        try {
            if (string == null) {
                PrivateKeyAdminHelper.a(0);
            }
        }
        catch (KeyStoreException keyStoreException) {
            throw PrivateKeyAdminHelper.a(keyStoreException);
        }
        try {
            ssgKeyFinder = this.c.findByPrimaryKey(goid);
        }
        catch (FindException | KeyStoreException throwable) {
            String[] stringArray = e;
            throw new UpdateException(stringArray[53] + ExceptionUtils.getMessage((Throwable)throwable), throwable);
        }
        try {
            ssgKeyFinder.getCertificateChain(string);
            SsgKeyStore ssgKeyStore = ssgKeyFinder.getKeyStore();
            try {
                if (ssgKeyStore != null) {
                    ssgKeyStore.updateKeyMetadata(goid, string, ssgKeyMetadata);
                }
            }
            catch (KeyStoreException keyStoreException) {
                throw PrivateKeyAdminHelper.a(keyStoreException);
            }
        }
        catch (Exception exception) {
            throw new UpdateException(e[48] + ExceptionUtils.getMessage((Throwable)exception), (Throwable)exception);
        }
    }

    public Future<X509Certificate> doGenerateKeyPair(Goid goid, String string, @Nullable SsgKeyMetadata ssgKeyMetadata, X500Principal x500Principal, KeyGenParams keyGenParams, int n2, boolean bl2, String string2) throws FindException, GeneralSecurityException {
        SsgKeyStore ssgKeyStore = this.a(goid, string, x500Principal, n2);
        return ssgKeyStore.generateKeyPair(this.a(ssgKeyStore, string, e[29]), string, keyGenParams, new CertGenParams(x500Principal, n2, bl2, string2), ssgKeyMetadata);
    }

    public SsgKeyEntry doImportKeyFromKeyStoreFile(Goid goid, String string, @Nullable SsgKeyMetadata ssgKeyMetadata, @Nullable byte[] byArray, String string2, @Nullable char[] cArray, char[] cArray2, @Nullable String string3) throws KeyStoreException, NoSuchProviderException, IOException, NoSuchAlgorithmException, CertificateException, AliasNotFoundException, MultipleAliasesException, UnrecoverableKeyException, SaveException, InterruptedException, ExecutionException, ObjectNotFoundException {
        return this.doImportKeyFromKeyStoreFile(goid, string, ssgKeyMetadata, byArray, string2, cArray, cArray2, string3, false);
    }

    public X509Certificate[] getCertficatesFromKeystoreBytes(@Nullable byte[] byArray, String string, @Nullable char[] cArray, char[] cArray2, @Nullable String string2) throws UnrecoverableKeyException, MultipleAliasesException, CertificateException, KeyStoreException, NoSuchAlgorithmException, IOException, NoSuchProviderException, AliasNotFoundException {
        Pair<PrivateKey, X509Certificate[]> pair = this.a(byArray, string, cArray, cArray2, string2);
        return (X509Certificate[])pair.getValue();
    }

    public String getSubjectDNBeforeImport(Goid goid, String string, @Nullable byte[] byArray, String string2, @Nullable char[] cArray, char[] cArray2, @Nullable String string3) throws KeyStoreException, NoSuchProviderException, IOException, NoSuchAlgorithmException, CertificateException, AliasNotFoundException, MultipleAliasesException, UnrecoverableKeyException, SaveException {
        Pair<PrivateKey, X509Certificate[]> pair = this.a(byArray, string2, cArray, cArray2, string3);
        SsgKeyStore ssgKeyStore = this.a(goid);
        SsgKeyEntry ssgKeyEntry = new SsgKeyEntry(ssgKeyStore.getGoid(), string, (X509Certificate[])pair.right, (PrivateKey)pair.left);
        return ssgKeyEntry.getSubjectDN();
    }

    public SsgKeyEntry doImportKeyFromKeyStoreFile(Goid goid, String string, @Nullable SsgKeyMetadata ssgKeyMetadata, @Nullable byte[] byArray, String string2, @Nullable char[] cArray, char[] cArray2, @Nullable String string3, boolean bl2) throws KeyStoreException, NoSuchProviderException, IOException, NoSuchAlgorithmException, CertificateException, AliasNotFoundException, MultipleAliasesException, UnrecoverableKeyException, SaveException, InterruptedException, ExecutionException, ObjectNotFoundException {
        Pair<PrivateKey, X509Certificate[]> pair = this.a(byArray, string2, cArray, cArray2, string3);
        SsgKeyStore ssgKeyStore = this.a(goid);
        SsgKeyEntry ssgKeyEntry = new SsgKeyEntry(ssgKeyStore.getGoid(), string, (X509Certificate[])pair.right, (PrivateKey)pair.left);
        try {
            if (ssgKeyMetadata != null) {
                ssgKeyEntry.attachMetadata(ssgKeyMetadata);
            }
        }
        catch (KeyStoreException keyStoreException) {
            throw PrivateKeyAdminHelper.a(keyStoreException);
        }
        String[] stringArray = e;
        Future<Boolean> future = ssgKeyStore.storePrivateKeyEntry(this.a(ssgKeyStore, string, stringArray[5]), ssgKeyEntry, false, bl2);
        try {
            if (!future.get().booleanValue()) {
                throw new KeyStoreException(stringArray[54]);
            }
        }
        catch (KeyStoreException keyStoreException) {
            throw PrivateKeyAdminHelper.a(keyStoreException);
        }
        return ssgKeyStore.getCertificateChain(string);
    }

    private Pair<PrivateKey, X509Certificate[]> a(@Nullable byte[] byArray, String string, @Nullable char[] cArray, char[] cArray2, @Nullable String string2) throws NoSuchProviderException, KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException, AliasNotFoundException, MultipleAliasesException, UnrecoverableKeyException {
        Key key;
        Object object;
        block20: {
            KeyStore keyStore;
            try {
                keyStore = this.a(string);
                keyStore.load(new ByteArrayInputStream(byArray), cArray);
            }
            catch (IOException | KeyStoreException | NoSuchAlgorithmException | CertificateException exception) {
                throw exception;
            }
            catch (RuntimeException runtimeException) {
                String[] stringArray = e;
                throw new KeyStoreException(stringArray[3] + ExceptionUtils.getMessage((Throwable)runtimeException), runtimeException);
            }
            if (string2 == null) {
                object = new ArrayList<String>(Collections.list(keyStore.aliases()));
                try {
                    if (object.isEmpty()) {
                        throw new AliasNotFoundException(e[46]);
                    }
                }
                catch (KeyStoreException keyStoreException) {
                    throw PrivateKeyAdminHelper.a(keyStoreException);
                }
                if (object.size() > 1) {
                    Iterator iterator = object.iterator();
                    while (true) {
                        block19: {
                            try {
                                while (iterator.hasNext()) {
                                    if (keyStore.isKeyEntry((String)iterator.next())) continue;
                                    break block19;
                                }
                                break;
                            }
                            catch (KeyStoreException keyStoreException) {
                                throw PrivateKeyAdminHelper.a(keyStoreException);
                            }
                        }
                        iterator.remove();
                    }
                    throw new MultipleAliasesException(object.toArray(new String[object.size()]));
                }
                string2 = (String)object.iterator().next();
            }
            object = keyStore.getCertificateChain(string2);
            key = keyStore.getKey(string2, cArray2);
            try {
                try {
                    if (object != null && key != null) break block20;
                }
                catch (KeyStoreException keyStoreException) {
                    throw PrivateKeyAdminHelper.a(keyStoreException);
                }
                throw new AliasNotFoundException(e[51] + string2);
            }
            catch (KeyStoreException keyStoreException) {
                throw PrivateKeyAdminHelper.a(keyStoreException);
            }
        }
        X509Certificate[] x509CertificateArray = CertUtils.asX509CertificateArray((Certificate[])object);
        try {
            if (!(key instanceof PrivateKey)) {
                throw new KeyStoreException(e[2] + String.valueOf(key.getClass()));
            }
        }
        catch (KeyStoreException keyStoreException) {
            throw PrivateKeyAdminHelper.a(keyStoreException);
        }
        return new Pair((Object)((PrivateKey)key), (Object)x509CertificateArray);
    }

    public List<String> findImpactedKeysByImportKey(Goid goid, String string, @Nullable byte[] byArray, String string2, @Nullable char[] cArray, char[] cArray2, @Nullable String string3) throws GeneralSecurityException, AliasNotFoundException, MultipleAliasesException, IOException, SaveException {
        Pair<PrivateKey, X509Certificate[]> pair = this.a(byArray, string2, cArray, cArray2, string3);
        SsgKeyStore ssgKeyStore = this.a(goid);
        return ssgKeyStore.findImpactedKeysByReplaceCertChain(string, (X509Certificate[])pair.right);
    }

    public byte[] doExportKeyAsPkcs12(Goid goid, String string, String string2, char[] cArray) throws FindException, KeyStoreException, UnrecoverableKeyException {
        SsgKeyFinder ssgKeyFinder = this.c.findByPrimaryKey(goid);
        try {
            if (!ssgKeyFinder.isKeyExportSupported()) {
                throw new UnrecoverableKeyException(e[50]);
            }
        }
        catch (IOException iOException) {
            throw PrivateKeyAdminHelper.a(iOException);
        }
        SsgKeyEntry ssgKeyEntry = this.c.lookupKeyByKeyAlias(string, goid);
        try {
            if (!ssgKeyEntry.isPrivateKeyAvailable()) {
                throw new UnrecoverableKeyException(e[11] + string + e[58]);
            }
        }
        catch (IOException iOException) {
            throw PrivateKeyAdminHelper.a(iOException);
        }
        if (string2 == null) {
            string2 = string;
        }
        PrivateKey privateKey = ssgKeyEntry.getPrivateKey();
        Certificate[] certificateArray = ssgKeyEntry.getCertificateChain();
        KeyStore keyStore = KeyStore.getInstance(e[37], ProviderUtil.loadInstalledBCProxy().getBCProvider());
        try (PoolByteArrayOutputStream poolByteArrayOutputStream = new PoolByteArrayOutputStream();){
            keyStore.load(null, cArray);
            keyStore.setKeyEntry(string2, privateKey, cArray, certificateArray);
            keyStore.store((OutputStream)poolByteArrayOutputStream, cArray);
            this.d.publishEvent((ApplicationEvent)new KeyExportedEvent(this, ssgKeyEntry.getKeystoreId(), ssgKeyEntry.getAlias(), this.a(ssgKeyEntry)));
            byte[] byArray = poolByteArrayOutputStream.toByteArray();
            return byArray;
        }
    }

    public static String getClusterPropertyForSpecialKeyType(SpecialKeyType specialKeyType) {
        return switch (l.a[specialKeyType.ordinal()]) {
            case 1 -> {
                String[] var2_1 = e;
                yield var2_1[45];
            }
            case 2 -> {
                String[] var2_2 = e;
                yield var2_2[9];
            }
            case 3 -> {
                String[] var2_3 = e;
                yield var2_3[13];
            }
            case 4 -> {
                String[] var2_4 = e;
                yield var2_4[43];
            }
            case 5 -> {
                String[] var2_5 = e;
                yield var2_5[49];
            }
            case 6 -> {
                String[] var2_6 = e;
                yield var2_6[27];
            }
            default -> throw new IllegalArgumentException(e[28] + String.valueOf(specialKeyType));
        };
    }

    private String a(SsgKeyEntry ssgKeyEntry) {
        X509Certificate x509Certificate = ssgKeyEntry.getCertificate();
        try {
            if (x509Certificate == null) {
                return null;
            }
        }
        catch (RuntimeException runtimeException) {
            throw PrivateKeyAdminHelper.a(runtimeException);
        }
        return x509Certificate.getSubjectDN().getName();
    }

    private KeyStore a(String string) throws KeyStoreException, NoSuchProviderException {
        String[] stringArray = e;
        if (stringArray[38].equals(string)) {
            String string2;
            block14: {
                string2 = ConfigFactory.getProperty((String)stringArray[1], (String)stringArray[39]);
                try {
                    block13: {
                        try {
                            try {
                                if (null == string2 || string2.length() < 1) break block13;
                            }
                            catch (KeyStoreException keyStoreException) {
                                throw PrivateKeyAdminHelper.a(keyStoreException);
                            }
                            if (!string2.equalsIgnoreCase(e[17])) break block14;
                        }
                        catch (KeyStoreException keyStoreException) {
                            throw PrivateKeyAdminHelper.a(keyStoreException);
                        }
                    }
                    return KeyStore.getInstance(e[38]);
                }
                catch (KeyStoreException keyStoreException) {
                    throw PrivateKeyAdminHelper.a(keyStoreException);
                }
            }
            try {
                if (e[12].equalsIgnoreCase(string2)) {
                    return KeyStore.getInstance(e[38], ProviderUtil.loadInstalledBCProxy().getBCProvider());
                }
            }
            catch (KeyStoreException keyStoreException) {
                throw PrivateKeyAdminHelper.a(keyStoreException);
            }
            stringArray = e;
            return KeyStore.getInstance(stringArray[38], string2);
        }
        try {
            if (e[64].equals(string)) {
                return KeyStore.getInstance(e[30]);
            }
        }
        catch (KeyStoreException keyStoreException) {
            throw PrivateKeyAdminHelper.a(keyStoreException);
        }
        throw new KeyStoreException(e[20] + string);
    }

    private SsgKeyStore a(Goid goid) throws SaveException {
        SsgKeyFinder ssgKeyFinder;
        try {
            ssgKeyFinder = this.c.findByPrimaryKey(goid);
        }
        catch (FindException | KeyStoreException throwable) {
            String[] stringArray = e;
            throw new SaveException(stringArray[31] + ExceptionUtils.getMessage((Throwable)throwable), throwable);
        }
        SsgKeyStore ssgKeyStore = ssgKeyFinder.getKeyStore();
        try {
            if (ssgKeyStore == null) {
                throw new SaveException(e[4] + String.valueOf(goid) + e[33]);
            }
        }
        catch (KeyStoreException keyStoreException) {
            throw PrivateKeyAdminHelper.a(keyStoreException);
        }
        return ssgKeyStore;
    }

    private SsgKeyStore a(Goid goid, String string, X500Principal x500Principal, int n2) throws FindException, KeyStoreException {
        SsgKeyStore ssgKeyStore;
        block19: {
            SsgKeyFinder ssgKeyFinder;
            try {
                if (string == null) {
                    throw new NullPointerException(e[6]);
                }
            }
            catch (ObjectNotFoundException objectNotFoundException) {
                throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
            }
            try {
                if (string.length() < 1) {
                    throw new IllegalArgumentException(e[41]);
                }
            }
            catch (ObjectNotFoundException objectNotFoundException) {
                throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
            }
            try {
                if (x500Principal == null) {
                    throw new NullPointerException(e[35]);
                }
            }
            catch (ObjectNotFoundException objectNotFoundException) {
                throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
            }
            String[] stringArray = e;
            new X500Principal(x500Principal.getName(stringArray[26])).getEncoded();
            try {
                ssgKeyFinder = this.c.findByPrimaryKey(goid);
            }
            catch (ObjectNotFoundException objectNotFoundException) {
                stringArray = e;
                throw new FindException(stringArray[23] + String.valueOf(goid));
            }
            ssgKeyStore = null;
            try {
                if (ssgKeyFinder == null || !ssgKeyFinder.isMutable()) break block19;
            }
            catch (ObjectNotFoundException objectNotFoundException) {
                throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
            }
            ssgKeyStore = ssgKeyFinder.getKeyStore();
        }
        try {
            if (ssgKeyStore == null) {
                throw new FindException(e[62] + String.valueOf(goid) + e[42]);
            }
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
        }
        try {
            if (n2 < 1) {
                throw new IllegalArgumentException(e[36]);
            }
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            throw PrivateKeyAdminHelper.a((Exception)((Object)objectNotFoundException));
        }
        return ssgKeyStore;
    }

    private Runnable a(SsgKeyStore ssgKeyStore, String string, String string2) {
        return new CallableRunnable(AdminInfo.find(true).wrapCallable(new i(this, ssgKeyStore, string, string2)));
    }

    private Runnable a(SsgKeyStore ssgKeyStore, String string, String string2, String string3) {
        EntityChangeSet entityChangeSet = new EntityChangeSet(new String[]{string2}, new Object[]{new Object()}, new Object[]{new Object()});
        return this.a(new Updated<SsgKeyEntry>(SsgKeyEntry.createDummyEntityForAuditing((Goid)ssgKeyStore.getGoid(), (String)string), entityChangeSet, string3));
    }

    private Runnable a(SsgKeyStore ssgKeyStore, String string) {
        return this.a(new Deleted<SsgKeyEntry>(SsgKeyEntry.createDummyEntityForAuditing((Goid)ssgKeyStore.getGoid(), (String)string)));
    }

    private Runnable a(ApplicationEvent applicationEvent) {
        return new CallableRunnable(AdminInfo.find(true).wrapCallable(new j(this, applicationEvent)));
    }

    public void validateKeyDeletionAllowed(@NotNull Goid goid, @NotNull String string) throws FindException, KeyStoreException {
        block19: {
            try {
                if (goid == null) {
                    PrivateKeyAdminHelper.a(1);
                }
            }
            catch (FindException findException) {
                throw PrivateKeyAdminHelper.a((Exception)((Object)findException));
            }
            try {
                if (string == null) {
                    PrivateKeyAdminHelper.a(2);
                }
            }
            catch (FindException findException) {
                throw PrivateKeyAdminHelper.a((Exception)((Object)findException));
            }
            try {
                block18: {
                    try {
                        try {
                            if (goid == null || string == null) break block18;
                        }
                        catch (FindException findException) {
                            throw PrivateKeyAdminHelper.a((Exception)((Object)findException));
                        }
                        if (!string.trim().isEmpty()) break block19;
                    }
                    catch (FindException findException) {
                        throw PrivateKeyAdminHelper.a((Exception)((Object)findException));
                    }
                }
                throw new IllegalArgumentException(e[40]);
            }
            catch (FindException findException) {
                throw PrivateKeyAdminHelper.a((Exception)((Object)findException));
            }
        }
        SsgKeyEntry ssgKeyEntry = this.doFindKeyEntry(string, goid);
        try {
            if (ssgKeyEntry == null) {
                return;
            }
        }
        catch (FindException findException) {
            throw PrivateKeyAdminHelper.a((Exception)((Object)findException));
        }
        String string2 = ssgKeyEntry.getId();
        List<SpecialKeyType> list = this.b(string2);
        try {
            if (!list.isEmpty()) {
                this.a(goid, string, string2, list);
            }
        }
        catch (FindException findException) {
            throw PrivateKeyAdminHelper.a((Exception)((Object)findException));
        }
    }

    private List<SpecialKeyType> b(String string) {
        ArrayList<SpecialKeyType> arrayList = new ArrayList<SpecialKeyType>();
        try {
            this.a(string, SpecialKeyType.SERVER_SSL, arrayList);
            this.a(string, SpecialKeyType.CLIENT_SSL, arrayList);
        }
        catch (IOException iOException) {
            String[] stringArray = e;
            a.log(Level.WARNING, stringArray[8], new Object[]{string, ExceptionUtils.getMessage((Throwable)iOException)});
            throw new IllegalArgumentException(stringArray[15] + ExceptionUtils.getMessage((Throwable)iOException), iOException);
        }
        return arrayList;
    }

    private void a(String string, SpecialKeyType specialKeyType, List<SpecialKeyType> list) throws IOException {
        block7: {
            SsgKeyEntry ssgKeyEntry = null;
            if (specialKeyType == SpecialKeyType.SERVER_SSL) {
                ssgKeyEntry = this.b.getLatestServerSslInfo();
            } else if (specialKeyType == SpecialKeyType.CLIENT_SSL) {
                ssgKeyEntry = this.b.getLatestClientSslInfo();
            }
            try {
                try {
                    if (ssgKeyEntry == null || !string.equalsIgnoreCase(ssgKeyEntry.getId())) break block7;
                }
                catch (IOException iOException) {
                    throw PrivateKeyAdminHelper.a(iOException);
                }
                list.add(specialKeyType);
            }
            catch (IOException iOException) {
                throw PrivateKeyAdminHelper.a(iOException);
            }
        }
    }

    private void a(Goid goid, String string, String string2, List<SpecialKeyType> list) {
        String[] stringArray = e;
        String string3 = String.valueOf(TextUtils.join((String)stringArray[59], (Collection)Functions.map(list, (Functions.Unary)new k(this))));
        a.log(Level.WARNING, stringArray[60], new Object[]{goid, string, string2, string3});
        throw new IllegalArgumentException(stringArray[55] + string + stringArray[24] + string3 + stringArray[18]);
    }

    public void doDeletePrivateKeyEntry(SsgKeyStore ssgKeyStore, String string) throws DeleteException, KeyStoreException {
        try {
            SsgKeyEntry ssgKeyEntry = this.doFindKeyEntry(string, ssgKeyStore.getGoid());
            try {
                if (ssgKeyEntry != null) {
                    this.d.publishEvent((ApplicationEvent)new RoleAwareEntityDeletionEvent(this, (Entity)ssgKeyEntry));
                }
            }
            catch (ExecutionException executionException) {
                throw PrivateKeyAdminHelper.a(executionException);
            }
            Future<Boolean> future = ssgKeyStore.deletePrivateKeyEntry(this.a(ssgKeyStore, string), string);
            future.get();
        }
        catch (ExecutionException executionException) {
            String[] stringArray = e;
            throw new DeleteException(stringArray[22] + ExceptionUtils.getMessage((Throwable)executionException), (Throwable)executionException);
        }
        catch (InterruptedException interruptedException) {
            String[] stringArray = e;
            throw new DeleteException(stringArray[0] + ExceptionUtils.getMessage((Throwable)interruptedException), (Throwable)interruptedException);
        }
        catch (FindException findException) {
            throw new DeleteException(e[25] + ExceptionUtils.getMessage((Throwable)findException), (Throwable)findException);
        }
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[65];
                var3_1 = 0;
                var2_2 = "aMPylN\u001d@L\u0011}iEY\u0014HTbs_RFF\u000b;+WL\\5l\u001cIQ@Y5kNDgW^ie\u0005M_@B*2\u0005MUQBrnL\u0013DQ^miOXF\u001f\u007fFH;eEIFZ\u0011rs\u000bS[W\u0011z {O]UPoe`XM\u0019\u0011\u0019aMPylN\u001d@L\u0011ieJY\u0014hTbS_RFF\u000b;\u0013QQCtr\u0011\u001d_FHhtDOQ\u0003x_ \b]NAtr_XP\rUOXzs\u000bTG\u0003_nlG\b_FHZlB\\G/qQCtr\u000b^\\FRpiEZ\u0014PA~cB\\X\u0003Anr[RGF\u0011}oY\u001d_FH;{\u001b@\u000e\u0003J*}\u001f_FHHtDOQ\rU~fJHXWb~r]XFpBw.JQ]BB-WL\\4l\u001cIQ@Y4sNOBFC4aOP]M\u001eKrBKUWTPeR|PNXuHNQDFC\u0016dQXma_X\u0014hTb MRF\u0003PwiJN\u0014\u0002v`\u001f_FHHtDOQ\rU~fJHXWrwiNS@pBw.JQ]BB\u0018qQCtr\u000bNQWErnL\u001dZFF;cNO@\u0019\u0011:wB_uo_\u001dBFCrfR\u001dGSTxiJQ\u0014SDipDNQ\u0003PhsBZZNTutX\u001dRLC;kND\u001a\u0003tirDO\u000e\u0003\r\u0014JB;rN\\P\u000e^ulR\u0007PFWzuGIi\u001a\u0003eseXX\u0014HTbs\u000b\\FF\u0011xrBI]@Pw MRF\u0003VztNJUZ\u0011HSg\u001d[STia_T[MB5 mTFPE;dNN]D_ztN\u001dU\u0003UrfMXFF_o @XM\u0003Wtr\u000bI\\FB~ [HFS^heX\u0013\u0013PLdkdJIQhTbMNIUGPoa\"\u007fFHHtDOQ\u0003WrlN\u001d@ZA~ ER@\u0003Bnp[RFWT\u007f:\u000b\u0018qQCtr\u000bZQWErnL\u001d_FHhtDOQ\u0019\u0011\u0016aMPylN\u001d@L\u0011\u007feGX@F\u0011peR\u0007\u0014\u001azL\u0011peRN@LC~ MRAMU;wBI\\\u0003X\u007f \u001c\u0013\u0019\u0011xuYOQMEwy\u000bYQPX|nJIQG\u0011}oY\u001d\u0014aMPylN\u001d@L\u0011}iEY\u0014HTb:\u000b\twb\u007fTNb~uo\u001b_FHHtDOQ\rPndBIgJVuiEZ\u001aB]raX\u0011zL\u0011huHU\u0014HTbTRMQ\u0019\u0011\tSF_~rJIQG\u0003~hb\u0018QQCtr\u000bZQWErnL\u001d_FHhtDOQ\u0019\u0011\u0010WFCoiMTWBE~CC\\]M\r\u0014JB;rN\\P\u000e^ulR\u0005UOXzs\nPM\u0011rs\u000bSAO]\u001bQ[ArrRyUZB;m^N@\u0003S~ [RGJErvN\u0006dhrH1\u0019\u0006dhrH1\u0019\u0002v`3_FHhtDOQd^rd\u000b\\ZG\u0011peR|XJPh FHGW\u0011uo_\u001dVF\u0011uuGQ\u0014LC;eFM@Z\u000eUOXzs\u000bTG\u0003Tvp_D\u000f\u0014JB;nDI\u0014NDoaIQQ\u0018_FHHtDOQ\rU~fJHXWrz.JQ]BB>uQVnmNS@\u0003Wtr\u000b}zLEUuGQ\u0014SPiaFX@FC;'\u000eN\u0013\u0003^} \u000eN\u001a\u0006B;m^N@\u0003_tt\u000b_Q\u0003_nlG\u0019_FHHtDOQ\rU~fJHXWbhl\u0005\\XJPh-\u007fFHHtDOQ\u0003WrlN\u001dWL_oaBSG\u0003_t [O]UPoe\u000bVQZ\u0011~n_O]FB\u001aBB]rdJIQhTbDNQQWXtnjQXLF~d qQCtr\u000bNQWErnL\u001dZFF;kND\u0014NToaO\\@B\u000b;\u001a_FHHtDOQ\rPndBIbJTleY\u0013UOXzs\u0018\u007fFH;eSM[QE;nDI\u0014BGziG\\VOT\"UOXzs\u000bS[W\u0011}o^SP\u0003Xu `XMpEtrN\u001dRJ]~:\u000b+WL\\5l\u001cIQ@Y5kNDgW^ie\u0005M_@B*2\u0005MUQBrnL\u0013DQ^miOXF\u0018qQCtr\u000bZQWErnL\u001d_FHhtDOQ\u0019\u0011\u001f}NAtr_\u001d[STia_T[M\u0011ie_HFMT\u007f M\\XPT\u0013wB_uo_\u001dPF]~tN\u001d_FH;'\bFFAwaHXP!qQCtr\u000bNQWErnL\u001dU\u0003_~w\u000b^QQErfB^UWT! \u0014\u0014@PunDI\u0014AT;eSM[QE~d\u0005\u0002\u0018\u0003XvO^xkNY\u0014GTwe_T[M\u0011tf\u000bMFLE~c_XP\u0003bHL\u000bVQZ\u000b;kNDGW^ielR]G\f`0V\u0011\u0014B]raX\u0000O\u0012L7 @XMjU&{\u0019@\u0018\u0003EbpNN\tX\u0002f\u0013QQCtr\u0011\u001d_FHhtDOQ\u0003x_ \u0011\u007fFHhtDOQ\u0003FrtC\u001d]G\u0011";
                var4_3 = "aMPylN\u001d@L\u0011}iEY\u0014HTbs_RFF\u000b;+WL\\5l\u001cIQ@Y5kNDgW^ie\u0005M_@B*2\u0005MUQBrnL\u0013DQ^miOXF\u001f\u007fFH;eEIFZ\u0011rs\u000bS[W\u0011z {O]UPoe`XM\u0019\u0011\u0019aMPylN\u001d@L\u0011ieJY\u0014hTbS_RFF\u000b;\u0013QQCtr\u0011\u001d_FHhtDOQ\u0003x_ \b]NAtr_XP\rUOXzs\u000bTG\u0003_nlG\b_FHZlB\\G/qQCtr\u000b^\\FRpiEZ\u0014PA~cB\\X\u0003Anr[RGF\u0011}oY\u001d_FH;{\u001b@\u000e\u0003J*}\u001f_FHHtDOQ\rU~fJHXWb~r]XFpBw.JQ]BB-WL\\4l\u001cIQ@Y4sNOBFC4aOP]M\u001eKrBKUWTPeR|PNXuHNQDFC\u0016dQXma_X\u0014hTb MRF\u0003PwiJN\u0014\u0002v`\u001f_FHHtDOQ\rU~fJHXWrwiNS@pBw.JQ]BB\u0018qQCtr\u000bNQWErnL\u001dZFF;cNO@\u0019\u0011:wB_uo_\u001dBFCrfR\u001dGSTxiJQ\u0014SDipDNQ\u0003PhsBZZNTutX\u001dRLC;kND\u001a\u0003tirDO\u000e\u0003\r\u0014JB;rN\\P\u000e^ulR\u0007PFWzuGIi\u001a\u0003eseXX\u0014HTbs\u000b\\FF\u0011xrBI]@Pw MRF\u0003VztNJUZ\u0011HSg\u001d[STia_T[MB5 mTFPE;dNN]D_ztN\u001dU\u0003UrfMXFF_o @XM\u0003Wtr\u000bI\\FB~ [HFS^heX\u0013\u0013PLdkdJIQhTbMNIUGPoa\"\u007fFHHtDOQ\u0003WrlN\u001d@ZA~ ER@\u0003Bnp[RFWT\u007f:\u000b\u0018qQCtr\u000bZQWErnL\u001d_FHhtDOQ\u0019\u0011\u0016aMPylN\u001d@L\u0011\u007feGX@F\u0011peR\u0007\u0014\u001azL\u0011peRN@LC~ MRAMU;wBI\\\u0003X\u007f \u001c\u0013\u0019\u0011xuYOQMEwy\u000bYQPX|nJIQG\u0011}oY\u001d\u0014aMPylN\u001d@L\u0011}iEY\u0014HTb:\u000b\twb\u007fTNb~uo\u001b_FHHtDOQ\rPndBIgJVuiEZ\u001aB]raX\u0011zL\u0011huHU\u0014HTbTRMQ\u0019\u0011\tSF_~rJIQG\u0003~hb\u0018QQCtr\u000bZQWErnL\u001d_FHhtDOQ\u0019\u0011\u0010WFCoiMTWBE~CC\\]M\r\u0014JB;rN\\P\u000e^ulR\u0005UOXzs\nPM\u0011rs\u000bSAO]\u001bQ[ArrRyUZB;m^N@\u0003S~ [RGJErvN\u0006dhrH1\u0019\u0006dhrH1\u0019\u0002v`3_FHhtDOQd^rd\u000b\\ZG\u0011peR|XJPh FHGW\u0011uo_\u001dVF\u0011uuGQ\u0014LC;eFM@Z\u000eUOXzs\u000bTG\u0003Tvp_D\u000f\u0014JB;nDI\u0014NDoaIQQ\u0018_FHHtDOQ\rU~fJHXWrz.JQ]BB>uQVnmNS@\u0003Wtr\u000b}zLEUuGQ\u0014SPiaFX@FC;'\u000eN\u0013\u0003^} \u000eN\u001a\u0006B;m^N@\u0003_tt\u000b_Q\u0003_nlG\u0019_FHHtDOQ\rU~fJHXWbhl\u0005\\XJPh-\u007fFHHtDOQ\u0003WrlN\u001dWL_oaBSG\u0003_t [O]UPoe\u000bVQZ\u0011~n_O]FB\u001aBB]rdJIQhTbDNQQWXtnjQXLF~d qQCtr\u000bNQWErnL\u001dZFF;kND\u0014NToaO\\@B\u000b;\u001a_FHHtDOQ\rPndBIbJTleY\u0013UOXzs\u0018\u007fFH;eSM[QE;nDI\u0014BGziG\\VOT\"UOXzs\u000bS[W\u0011}o^SP\u0003Xu `XMpEtrN\u001dRJ]~:\u000b+WL\\5l\u001cIQ@Y5kNDgW^ie\u0005M_@B*2\u0005MUQBrnL\u0013DQ^miOXF\u0018qQCtr\u000bZQWErnL\u001d_FHhtDOQ\u0019\u0011\u001f}NAtr_\u001d[STia_T[M\u0011ie_HFMT\u007f M\\XPT\u0013wB_uo_\u001dPF]~tN\u001d_FH;'\bFFAwaHXP!qQCtr\u000bNQWErnL\u001dU\u0003_~w\u000b^QQErfB^UWT! \u0014\u0014@PunDI\u0014AT;eSM[QE~d\u0005\u0002\u0018\u0003XvO^xkNY\u0014GTwe_T[M\u0011tf\u000bMFLE~c_XP\u0003bHL\u000bVQZ\u000b;kNDGW^ielR]G\f`0V\u0011\u0014B]raX\u0000O\u0012L7 @XMjU&{\u0019@\u0018\u0003EbpNN\tX\u0002f\u0013QQCtr\u0011\u001d_FHhtDOQ\u0003x_ \u0011\u007fFHhtDOQ\u0003FrtC\u001d]G\u0011".length();
                var1_4 = 25;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = PrivateKeyAdminHelper.a(v0, PrivateKeyAdminHelper.c(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "4-#\u0003\u001f/$:\u000f5\u0019\u000f\u0003\u0015\u0003\t";
                    var4_3 = "4-#\u0003\u001f/$:\u000f5\u0019\u000f\u0003\u0015\u0003\t".length();
                    var1_4 = 12;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 77;
                        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++] = PrivateKeyAdminHelper.a(v0, PrivateKeyAdminHelper.c(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;
            }
        }
        PrivateKeyAdminHelper.e = var5;
        PrivateKeyAdminHelper.PROP_PKCS12_PARSING_PROVIDER = PrivateKeyAdminHelper.e[52];
        PrivateKeyAdminHelper.a = Logger.getLogger(PrivateKeyAdminHelper.class.getName());
    }

    /*
     * 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 2[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[] c(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x1B);
        }
        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 -> 18;
                    case 1 -> 5;
                    case 2 -> 23;
                    case 3 -> 61;
                    case 4 -> 38;
                    case 5 -> 13;
                    default -> 27;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

