/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  org.apache.ftpserver.command.AbstractCommand
 *  org.apache.ftpserver.ftplet.DefaultFtpReply
 *  org.apache.ftpserver.ftplet.FtpException
 *  org.apache.ftpserver.ftplet.FtpRequest
 *  org.apache.ftpserver.impl.FtpIoSession
 *  org.apache.ftpserver.impl.FtpServerContext
 */
package com.l7tech.server.transport.ftp;

import java.io.IOException;
import org.apache.ftpserver.command.AbstractCommand;
import org.apache.ftpserver.ftplet.DefaultFtpReply;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.impl.FtpIoSession;
import org.apache.ftpserver.impl.FtpServerContext;

public class FtpCommands {

    public static class LANG
    extends AbstractCommand {
        private static final String a;
        private static final String[] b;

        public void execute(FtpIoSession ftpIoSession, FtpServerContext ftpServerContext, FtpRequest ftpRequest) throws IOException, FtpException {
            block5: {
                block4: {
                    ftpIoSession.resetState();
                    String string = ftpRequest.getArgument();
                    try {
                        try {
                            if (string != null && !string.toLowerCase().startsWith(b[2])) break block4;
                        }
                        catch (IOException iOException) {
                            throw LANG.a(iOException);
                        }
                        ftpIoSession.setLanguage(null);
                        ftpIoSession.write((Object)new DefaultFtpReply(200, b[3]));
                        break block5;
                    }
                    catch (IOException iOException) {
                        throw LANG.a(iOException);
                    }
                }
                ftpIoSession.write((Object)new DefaultFtpReply(504, b[1]));
            }
        }

        private static IOException a(IOException iOException) {
            return iOException;
        }

        /*
         * Unable to fully structure code
         */
        static {
            block10: {
                block9: {
                    var5 = new String[4];
                    var3_1 = 0;
                    var2_2 = ",x0\ny\u000e!\u0002P^iZ\"\u0002$\u001eT&bC%\u000eNV,{\u0006\"\u0017[^ip\f>CJR eC<\u0002L[$s\u0017)\u0011\u0010";
                    var4_3 = ",x0\ny\u000e!\u0002P^iZ\"\u0002$\u001eT&bC%\u000eNV,{\u0006\"\u0017[^ip\f>CJR eC<\u0002L[$s\u0017)\u0011\u0010".length();
                    var1_4 = 2;
                    var0_5 = -1;
lbl7:
                    // 2 sources

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

                    while (true) {
                        var5[var3_1++] = LANG.a(v0, LANG.a(v2));
                        if ((var0_5 += var1_4) < var4_3) {
                            var1_4 = var2_2.charAt(var0_5);
                            ** continue;
                        }
                        var2_2 = "]\t\u0012{\b\u007fPs!/\u0018+SsUo$S\u0006k\u0013";
                        var4_3 = "]\t\u0012{\b\u007fPs!/\u0018+SsUo$S\u0006k\u0013".length();
                        var1_4 = 2;
                        var0_5 = -1;
lbl22:
                        // 2 sources

                        while (true) {
                            v0 = 105;
                            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++] = LANG.a(v0, LANG.a(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;
                }
            }
            LANG.b = var5;
            LANG.a = LANG.b[0];
        }

        private static char[] a(String string) {
            char[] cArray = string.toCharArray();
            if (cArray.length < 2) {
                cArray = cArray;
                cArray[0] = (char)(cArray[0] ^ 0x22);
            }
            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 -> 81;
                        case 1 -> 14;
                        case 2 -> 123;
                        case 3 -> 84;
                        case 4 -> 123;
                        case 5 -> 38;
                        default -> 34;
                    })));
                    ++n3;
                    n4 = n4;
                } while (n4 > n3);
            }
            return new String(cArray2).intern();
        }
    }

    public static class FEAT
    extends AbstractCommand {
        private final String a;
        private static final String[] b;

        public FEAT(String[] stringArray) {
            this.a = this.a(stringArray);
        }

        public void execute(FtpIoSession ftpIoSession, FtpServerContext ftpServerContext, FtpRequest ftpRequest) throws IOException, FtpException {
            ftpIoSession.resetState();
            ftpIoSession.write((Object)new DefaultFtpReply(211, this.a));
        }

        private String a(String[] stringArray) {
            StringBuilder stringBuilder = new StringBuilder();
            String[] stringArray2 = b;
            stringBuilder.append(stringArray2[1]);
            for (String string : stringArray) {
                stringArray2 = b;
                stringBuilder.append(stringArray2[2]);
                stringBuilder.append(string);
            }
            stringBuilder.append(b[0]);
            return stringBuilder.toString();
        }

        /*
         * Enabled aggressive block sorting
         */
        static {
            String[] stringArray = new String[3];
            int n2 = 0;
            String string = "G\u0005/9\u00074P):\u0014\u0019\u007f\u0006/%b\tJ(YmaH\u001fMmDkxW\u001eL9Rz2\u0002G\u0017";
            int n3 = "G\u0005/9\u00074P):\u0014\u0019\u007f\u0006/%b\tJ(YmaH\u001fMmDkxW\u001eL9Rz2\u0002G\u0017".length();
            int n4 = 10;
            int n5 = -1;
            while (true) {
                int n6 = ++n5;
                stringArray[n2++] = FEAT.a(111, FEAT.a(string.substring(n6, n6 + n4)));
                if ((n5 += n4) >= n3) {
                    b = stringArray;
                    return;
                }
                n4 = string.charAt(n5);
            }
        }

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

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

