package com.l7tech.server.security.cert;

import com.l7tech.common.io.WhirlycacheFactory;
import com.l7tech.gateway.common.security.RevocationCheckPolicy;
import com.l7tech.gateway.common.security.RevocationCheckPolicyItem;
import com.l7tech.gateway.common.security.RevocationCheckPolicyItem.Type;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.security.cert.TrustedCert;
import com.l7tech.security.types.CertificateValidationResult;
import com.l7tech.util.Functions.Unary;
import com.whirlycott.cache.Cache;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

public class RevocationCheckerFactory {
   private static final Logger a;
   private final CertValidationProcessor b;
   private final CrlCache c;
   private final OCSPCache d;
   private final ReadWriteLock e;
   private final Cache f;
   private final Map<Goid, Set<t>> g;
   private final Map<Goid, Set<t>> h;
   private static final String[] i;

   public RevocationCheckerFactory(CertValidationProcessor var1, CrlCache var2, OCSPCache var3) {
      this.b = var1;
      this.c = var2;
      this.d = var3;
      this.e = new ReentrantReadWriteLock();
      this.g = new HashMap<>();
      this.h = new HashMap<>();
      this.f = WhirlycacheFactory.createCache(i[0], 1000, 66, WhirlycacheFactory.POLICY_LRU);
   }

   public RevocationChecker getRevocationChecker(X509Certificate param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aconst_null
      // 001: astore 2
      // 002: new com/l7tech/server/security/cert/t
      // 005: dup
      // 006: aload 1
      // 007: invokespecial com/l7tech/server/security/cert/t.<init> (Ljava/security/cert/X509Certificate;)V
      // 00a: astore 3
      // 00b: aload 0
      // 00c: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.e Ljava/util/concurrent/locks/ReadWriteLock;
      // 00f: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // 014: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 019: aload 0
      // 01a: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.f Lcom/whirlycott/cache/Cache;
      // 01d: aload 3
      // 01e: invokeinterface com/whirlycott/cache/Cache.retrieve (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 023: checkcast com/l7tech/server/security/cert/u
      // 026: astore 2
      // 027: aload 0
      // 028: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.e Ljava/util/concurrent/locks/ReadWriteLock;
      // 02b: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // 030: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 035: goto 04b
      // 038: astore 4
      // 03a: aload 0
      // 03b: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.e Ljava/util/concurrent/locks/ReadWriteLock;
      // 03e: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // 043: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 048: aload 4
      // 04a: athrow
      // 04b: aload 2
      // 04c: ifnonnull 104
      // 04f: aload 0
      // 050: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.b Lcom/l7tech/server/security/cert/CertValidationProcessor;
      // 053: aload 1
      // 054: invokeinterface com/l7tech/server/security/cert/CertValidationProcessor.getTrustedCertEntry (Ljava/security/cert/X509Certificate;)Lcom/l7tech/security/cert/TrustedCert; 2
      // 059: astore 4
      // 05b: aload 4
      // 05d: ifnonnull 070
      // 060: aload 0
      // 061: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.b Lcom/l7tech/server/security/cert/CertValidationProcessor;
      // 064: invokeinterface com/l7tech/server/security/cert/CertValidationProcessor.getDefaultPolicy ()Lcom/l7tech/gateway/common/security/RevocationCheckPolicy; 1
      // 069: goto 07b
      // 06c: invokestatic com/l7tech/server/security/cert/RevocationCheckerFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 06f: athrow
      // 070: aload 0
      // 071: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.b Lcom/l7tech/server/security/cert/CertValidationProcessor;
      // 074: aload 4
      // 076: invokeinterface com/l7tech/server/security/cert/CertValidationProcessor.getRevocationCheckPolicy (Lcom/l7tech/security/cert/TrustedCert;)Lcom/l7tech/gateway/common/security/RevocationCheckPolicy; 2
      // 07b: astore 5
      // 07d: aload 0
      // 07e: aload 3
      // 07f: aload 5
      // 081: invokevirtual com/l7tech/server/security/cert/RevocationCheckerFactory.a (Lcom/l7tech/server/security/cert/t;Lcom/l7tech/gateway/common/security/RevocationCheckPolicy;)Lcom/l7tech/server/security/cert/u;
      // 084: astore 2
      // 085: aload 0
      // 086: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.e Ljava/util/concurrent/locks/ReadWriteLock;
      // 089: invokeinterface java/util/concurrent/locks/ReadWriteLock.writeLock ()Ljava/util/concurrent/locks/Lock; 1
      // 08e: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 093: aload 0
      // 094: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.f Lcom/whirlycott/cache/Cache;
      // 097: aload 3
      // 098: aload 2
      // 099: invokeinterface com/whirlycott/cache/Cache.store (Ljava/lang/Object;Ljava/lang/Object;)V 3
      // 09e: aload 4
      // 0a0: ifnull 0b1
      // 0a3: aload 0
      // 0a4: aload 0
      // 0a5: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.g Ljava/util/Map;
      // 0a8: aload 4
      // 0aa: invokevirtual com/l7tech/security/cert/TrustedCert.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 0ad: aload 2
      // 0ae: invokevirtual com/l7tech/server/security/cert/RevocationCheckerFactory.a (Ljava/util/Map;Lcom/l7tech/objectmodel/Goid;Lcom/l7tech/server/security/cert/u;)V
      // 0b1: aload 5
      // 0b3: ifnull 0e0
      // 0b6: getstatic com/l7tech/gateway/common/security/RevocationCheckPolicy.DEFAULT_GOID Lcom/l7tech/objectmodel/Goid;
      // 0b9: aload 5
      // 0bb: invokevirtual com/l7tech/gateway/common/security/RevocationCheckPolicy.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 0be: invokevirtual com/l7tech/objectmodel/Goid.equals (Ljava/lang/Object;)Z
      // 0c1: ifne 0e0
      // 0c4: goto 0cb
      // 0c7: invokestatic com/l7tech/server/security/cert/RevocationCheckerFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0ca: athrow
      // 0cb: aload 0
      // 0cc: aload 0
      // 0cd: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.h Ljava/util/Map;
      // 0d0: aload 5
      // 0d2: invokevirtual com/l7tech/gateway/common/security/RevocationCheckPolicy.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 0d5: aload 2
      // 0d6: invokevirtual com/l7tech/server/security/cert/RevocationCheckerFactory.a (Ljava/util/Map;Lcom/l7tech/objectmodel/Goid;Lcom/l7tech/server/security/cert/u;)V
      // 0d9: goto 0e0
      // 0dc: invokestatic com/l7tech/server/security/cert/RevocationCheckerFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0df: athrow
      // 0e0: aload 0
      // 0e1: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.e Ljava/util/concurrent/locks/ReadWriteLock;
      // 0e4: invokeinterface java/util/concurrent/locks/ReadWriteLock.writeLock ()Ljava/util/concurrent/locks/Lock; 1
      // 0e9: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 0ee: goto 104
      // 0f1: astore 6
      // 0f3: aload 0
      // 0f4: getfield com/l7tech/server/security/cert/RevocationCheckerFactory.e Ljava/util/concurrent/locks/ReadWriteLock;
      // 0f7: invokeinterface java/util/concurrent/locks/ReadWriteLock.writeLock ()Ljava/util/concurrent/locks/Lock; 1
      // 0fc: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 101: aload 6
      // 103: athrow
      // 104: goto 181
      // 107: astore 3
      // 108: aload 1
      // 109: ifnonnull 118
      // 10c: getstatic com/l7tech/server/security/cert/RevocationCheckerFactory.i [Ljava/lang/String;
      // 10f: bipush 3
      // 110: aaload
      // 111: goto 11c
      // 114: invokestatic com/l7tech/server/security/cert/RevocationCheckerFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 117: athrow
      // 118: aload 1
      // 119: invokevirtual java/security/cert/X509Certificate.getSubjectDN ()Ljava/security/Principal;
      // 11c: astore 4
      // 11e: getstatic com/l7tech/server/security/cert/RevocationCheckerFactory.a Ljava/util/logging/Logger;
      // 121: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 124: aload 4
      // 126: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 129: getstatic com/l7tech/server/security/cert/RevocationCheckerFactory.i [Ljava/lang/String;
      // 12c: astore 7
      // 12e: aload 7
      // 130: bipush 7
      // 132: aaload
      // 133: swap
      // 134: aload 7
      // 136: bipush 11
      // 138: aaload
      // 139: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 13e: aload 3
      // 13f: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 142: goto 181
      // 145: astore 3
      // 146: aload 1
      // 147: ifnonnull 157
      // 14a: getstatic com/l7tech/server/security/cert/RevocationCheckerFactory.i [Ljava/lang/String;
      // 14d: bipush 6
      // 14f: aaload
      // 150: goto 15b
      // 153: invokestatic com/l7tech/server/security/cert/RevocationCheckerFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 156: athrow
      // 157: aload 1
      // 158: invokevirtual java/security/cert/X509Certificate.getSubjectDN ()Ljava/security/Principal;
      // 15b: astore 4
      // 15d: getstatic com/l7tech/server/security/cert/RevocationCheckerFactory.a Ljava/util/logging/Logger;
      // 160: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 163: aload 4
      // 165: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 168: getstatic com/l7tech/server/security/cert/RevocationCheckerFactory.i [Ljava/lang/String;
      // 16b: astore 7
      // 16d: aload 7
      // 16f: bipush 9
      // 171: aaload
      // 172: swap
      // 173: aload 7
      // 175: bipush 10
      // 177: aaload
      // 178: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 17d: aload 3
      // 17e: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 181: aload 2
      // 182: ifnonnull 18d
      // 185: new com/l7tech/server/security/cert/v
      // 188: dup
      // 189: invokespecial com/l7tech/server/security/cert/v.<init> ()V
      // 18c: astore 2
      // 18d: aload 2
      // 18e: areturn
      // try (11 -> 17): 22 null
      // try (22 -> 23): 22 null
      // try (74 -> 89): 90 java/security/cert/CertificateException
      // try (72 -> 79): 80 java/security/cert/CertificateException
      // try (36 -> 42): 42 java/security/cert/CertificateException
      // try (58 -> 92): 97 null
      // try (97 -> 98): 97 null
      // try (2 -> 104): 105 java/security/cert/CertificateException
      // try (2 -> 104): 134 com/l7tech/objectmodel/FindException
      // try (106 -> 112): 112 java/security/cert/CertificateException
      // try (135 -> 141): 141 java/security/cert/CertificateException
   }

   public void invalidateRevocationCheckPolicy(Goid var1) {
      this.a(var1, null, this.h);
   }

   public void invalidateTrustedCert(Goid var1) {
      this.a(var1, new o(this), this.g);
   }

   private void a(Map<Goid, Set<t>> var1, Goid var2, u var3) {
      Set var4 = (Set)var1.get(var2);
      if (var4 == null) {
         var4 = new HashSet();
         var1.put(var2, var4);
      }

      var4.add(var3.a);
   }

   private void a(Goid var1, Unary<X509Certificate, Goid> var2, Map<Goid, Set<t>> var3) {
      HashSet var4 = new HashSet();
      HashSet var5 = new HashSet();
      Collection var6 = null;
      this.e.readLock().lock();

      try {
         var6 = (Set)var3.get(var1);
      } finally {
         this.e.readLock().unlock();
      }

      label130: {
         try {
            if (var6 != null) {
               var4.add(var1);
               var5.addAll(var6);
               break label130;
            }
         } catch (Exception var28) {
            throw a(var28);
         }

         if (var2 != null) {
            try {
               X509Certificate var7 = (X509Certificate)var2.call(var1);

               try {
                  if (var7 != null) {
                     var5.add(new t(var7));
                  }
               } catch (Exception var23) {
                  throw a(var23);
               }
            } catch (Exception var24) {
               Logger var10000 = a;
               Level var10001 = Level.WARNING;
               String var10002 = String.valueOf(var1);
               String[] var10 = i;
               var10000.log(var10001, var10[2] + var10002 + var10[8], var24);
            }
         }
      }

      try {
         if (a.isLoggable(Level.FINE)) {
            a.log(Level.FINE, i[4], var5);
         }
      } catch (Exception var27) {
         throw a(var27);
      }

      this.e.writeLock().lock();

      try {
         var3.keySet().removeAll(var4);

         for (t var8 : var5) {
            this.f.remove(var8);
         }
      } finally {
         this.e.writeLock().unlock();
      }
   }

   private X509Certificate[] a(List<Goid> var1) throws FindException, CertificateException {
      ArrayList var2 = new ArrayList();

      for (Goid var4 : var1) {
         TrustedCert var5 = this.b.getTrustedCertByOid(var4);

         try {
            if (var5 != null) {
               var2.add(var5.getCertificate());
            }
         } catch (FindException var6) {
            throw a(var6);
         }
      }

      return var2.toArray(new X509Certificate[var2.size()]);
   }

   private u a(t var1, RevocationCheckPolicy var2) throws FindException, CertificateException {
      CertificateValidationResult var3 = CertificateValidationResult.REVOKED;
      CertificateValidationResult var4 = CertificateValidationResult.REVOKED;
      ArrayList var5 = new ArrayList();

      label64: {
         try {
            if (var2 == null) {
               return new u(var1, var3, var4, var5);
            }

            if (!var2.isDefaultSuccess()) {
               break label64;
            }
         } catch (PatternSyntaxException var17) {
            throw a(var17);
         }

         var3 = CertificateValidationResult.OK;
      }

      if (var2.isContinueOnServerUnavailable()) {
         var4 = CertificateValidationResult.UNKNOWN;
      }

      for (RevocationCheckPolicyItem var7 : var2.getRevocationCheckItems()) {
         String var8 = var7.getUrl();
         boolean var9 = var7.isAllowIssuerSignature();
         Boolean var10 = var7.getIncludeNonce();
         X509Certificate[] var11 = this.a(var7.getTrustedSigners());
         Type var12 = var7.getType();
         if (var12 != null) {
            try {
               label52: {
                  label51: {
                     label50: {
                        try {
                           switch (p.a[var12.ordinal()]) {
                              case 1:
                                 var5.add(new r(null, Pattern.compile(var8), var9, var11, this.c, this.b));
                                 continue;
                              case 2:
                                 break label52;
                              case 3:
                                 break label51;
                              case 4:
                                 break label50;
                           }
                        } catch (PatternSyntaxException var15) {
                           throw a(var15);
                        }

                        String[] var14 = i;
                        a.log(Level.WARNING, var14[5], var12.name());
                        continue;
                     }

                     var5.add(new s(var8, null, var9, var10, var11, this.d, this.b));
                     continue;
                  }

                  var5.add(new s(null, Pattern.compile(var8), var9, var10, var11, this.d, this.b));
                  continue;
               }

               var5.add(new r(var8, null, var9, var11, this.c, this.b));
            } catch (PatternSyntaxException var16) {
               a.log(Level.WARNING, i[1], var8);
            }
         }
      }

      return new u(var1, var3, var4, var5);
   }

   static {
      String[] var5 = new String[12];
      int var3 = 0;
      String var2 = "7y]\u00071^z\fsE8=Sg\u0006eh\t1Wk=,{E\u0007 V`\u0002<Y\r$Pm\u0004hB\u0007<\u001fm\ryH\u00037M.\u0012u_\u0000rV`\u0013}G\u00016\u001f[7P\u000b\u00183Kz\u0000nEHu\u0018uUa\fO|# nY\u0007 \u001fh\frO\u0001<X.\u0011n^\u001b&ZjE\u007fN\u001a&Vh\f\u007fJ\u001c7\u001f)\u0004\u000bsE\r=&pN\t V`\u0002<H\t1Wk\u0001<Y\r$Pm\u0004hB\u0007<\u001fm\ryH\u00037M}EzD\u001ar\\k\u0017hB\u000e;\\o\u0011y\u000b\u00037F}Eg\u001b\u0015|2,{E\u0007 V`\u0002<^\u00069Qa\u0012r\u000b\u001a7Ia\u0006}_\u0001=Q.\u0006tN\u000b9V`\u0002<_\u0011\"Z.B;PX/\u0018)K\u0004\u000bsE\r50rJ\n>Z.\u0011s\u000b\u000b Zo\u0011y\u000b\u001a7Ia\u0006}_\u0001=Q.\u0006tN\u000b9Z|EzD\u001ar\\k\u0017hB\u000e;\\o\u0011y\u000bO\u0013B<M\u0007 \u001fg\u000bjJ\u0004;[o\u0011uD\u0006|50rJ\n>Z.\u0011s\u000b\u000b Zo\u0011y\u000b\u001a7Ia\u0006}_\u0001=Q.\u0006tN\u000b9Z|EzD\u001ar\\k\u0017hB\u000e;\\o\u0011y\u000bO";
      int var4 = "7y]\u00071^z\fsE8=Sg\u0006eh\t1Wk=,{E\u0007 V`\u0002<Y\r$Pm\u0004hB\u0007<\u001fm\ryH\u00037M.\u0012u_\u0000rV`\u0013}G\u00016\u001f[7P\u000b\u00183Kz\u0000nEHu\u0018uUa\fO|# nY\u0007 \u001fh\frO\u0001<X.\u0011n^\u001b&ZjE\u007fN\u001a&Vh\f\u007fJ\u001c7\u001f)\u0004\u000bsE\r=&pN\t V`\u0002<H\t1Wk\u0001<Y\r$Pm\u0004hB\u0007<\u001fm\ryH\u00037M}EzD\u001ar\\k\u0017hB\u000e;\\o\u0011y\u000b\u00037F}Eg\u001b\u0015|2,{E\u0007 V`\u0002<^\u00069Qa\u0012r\u000b\u001a7Ia\u0006}_\u0001=Q.\u0006tN\u000b9V`\u0002<_\u0011\"Z.B;PX/\u0018)K\u0004\u000bsE\r50rJ\n>Z.\u0011s\u000b\u000b Zo\u0011y\u000b\u001a7Ia\u0006}_\u0001=Q.\u0006tN\u000b9Z|EzD\u001ar\\k\u0017hB\u000e;\\o\u0011y\u000bO\u0013B<M\u0007 \u001fg\u000bjJ\u0004;[o\u0011uD\u0006|50rJ\n>Z.\u0011s\u000b\u000b Zo\u0011y\u000b\u001a7Ia\u0006}_\u0001=Q.\u0006tN\u000b9Z|EzD\u001ar\\k\u0017hB\u000e;\\o\u0011y\u000bO"
         .length();
      char var1 = 21;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 1;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     i = var5;
                     a = Logger.getLogger(RevocationCheckerFactory.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = ".^\u0002.^";
                  var4 = ".^\u0002.^".length();
                  var1 = 2;
                  var7 = -1;
            }

            var10000 = 109;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static Exception a(Exception var0) {
      return var0;
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 15);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 100;
            case 1 -> 29;
            case 2 -> 42;
            case 3 -> 105;
            case 4 -> 83;
            case 5 -> 62;
            default -> 15;
         });
      }

      return new String(var10001).intern();
   }
}
