// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) braces deadcode fieldsfirst 
// Source File Name:   LdxLibThin.java
// Class Version:      45.3

package oracle.sql;

import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.*;
import java.util.*;
import oracle.core.lmx.CoreException;
import oracle.gss.util.NLSLocale;

// Referenced classes of package oracle.sql:
//            DATE, LdxLib

// flag ACC_SUPER is set
class LdxLibThin
    implements LdxLib
{
    // Constants:          521
    // Interfaces:         1
    // Fields:             90
    // Methods:            28
    // Class Attributes:   1


    private static final int LDXFDLSZ = 50;
    private static final byte LDX_CC = 1;
    private static final byte LDX_SCC = 2;
    private static final byte LDX_I = 3;
    private static final byte LDX_Y = 4;
    private static final byte LDX_IY = 5;
    private static final byte LDX_YY = 6;
    private static final byte LDX_IYY = 7;
    private static final byte LDX_YYY = 8;
    private static final byte LDX_IYYY = 9;
    private static final byte LDX_YYYY = 10;
    private static final byte LDX_YCYYY = 11;
    private static final byte LDX_SYYYY = 12;
    private static final byte LDX_SYCYYY = 13;
    private static final byte LDX_YEAR = 14;
    private static final byte LDX_SYEAR = 15;
    private static final byte LDX_Q = 16;
    private static final byte LDX_MM = 17;
    private static final byte LDX_IW = 18;
    private static final byte LDX_WW = 19;
    private static final byte LDX_W = 20;
    private static final byte LDX_D = 21;
    private static final byte LDX_DD = 22;
    private static final byte LDX_DDD = 23;
    private static final byte LDX_HH24 = 24;
    private static final byte LDX_HH = 25;
    private static final byte LDX_MI = 26;
    private static final byte LDX_SS = 27;
    private static final byte LDX_SSSSS = 28;
    private static final byte LDX_J = 29;
    private static final byte LDX_MONTH = 30;
    private static final byte LDX_MON = 31;
    private static final byte LDX_DAY = 32;
    private static final byte LDX_DY = 33;
    private static final byte LDX_AMPM = 34;
    private static final byte LDX_A_M_P_M = 35;
    private static final byte LDX_BCAD = 36;
    private static final byte LDX_B_C_A_D = 37;
    private static final byte LDX_RM = 38;
    private static final byte LDX_FM = 39;
    private static final byte LDX_RR = 40;
    private static final byte LDX_RRRR = 41;
    private static final byte LDX_FX = 42;
    private static final byte LDX_E = 43;
    private static final byte LDX_EE = 44;
    private static final byte LDX_LIT = 45;
    private static final byte LDX_JUS = 16;
    private static final byte LDX_NTH = 1;
    private static final byte LDX_SPL = 2;
    private static final byte LDX_CAP = 4;
    private static final byte LDX_UPR = 8;
    private static final byte LDX_QUO = 1;
    private static final byte LDX_SPA = 2;
    private static final byte LDX_PUN = 4;
    private static final byte LDX_ALPHA = -128;
    private static final byte LDXFNJUS = 64;
    private static final byte LDX_NEG = 32;
    private static final byte LDX_COMMA = 16;
    private static final byte LDX_LEN = 15;
    private static final byte LDXFL_NOT = 0;
    private static final byte LDXFL_FLEX = 1;
    private static final byte LDXFL_STD = 2;
    private static final byte LDXFL_MDONE = 4;
    private static final byte LDXFL_YDONE = 8;
    private static final byte LDXFL_PUNC = 16;
    private static final byte LDXFL_MSEC = 32;
    private static final int LDXSBUFFERSIZE = 64;
    private static final int LDXWBUFSIZE = 64;
    private static final int LDXTCE = 0;
    private static final int LDXTYE = 1;
    private static final int LDXTMO = 2;
    private static final int LDXTDA = 3;
    private static final int LDXTHO = 4;
    private static final int LDXTMI = 5;
    private static final int LDXTSO = 6;
    private static final int LDXTSIZ = 7;
    private static final int LDX_SUNDAY = 0x254ee5;
    private final int LDXPMXYR = 9999;
    private final int LDXPMNYR = -4712;
    private static final char ldxfda[][] = {
        {
            'A', '.', 'D', '.'
        }, {
            'A', '.', 'M', '.'
        }, {
            'A', 'D'
        }, {
            'A', 'M'
        }, {
            'B', '.', 'C', '.'
        }, {
            'B', 'C'
        }, {
            'C', 'C'
        }, {
            'D'
        }, {
            'D', 'A', 'Y'
        }, {
            'D', 'D'
        }, {
            'D', 'D', 'D'
        }, {
            'D', 'Y'
        }, {
            'E'
        }, {
            'E', 'E'
        }, {
            'F', 'M'
        }, {
            'F', 'X'
        }, {
            'H', 'H'
        }, {
            'H', 'H', '1', '2'
        }, {
            'H', 'H', '2', '4'
        }, {
            'I'
        }, {
            'I', 'W'
        }, {
            'I', 'Y'
        }, {
            'I', 'Y', 'Y'
        }, {
            'I', 'Y', 'Y', 'Y'
        }, {
            'J'
        }, {
            'M', 'I'
        }, {
            'M', 'M'
        }, {
            'M', 'O', 'N'
        }, {
            'M', 'O', 'N', 'T', 'H'
        }, {
            'P', '.', 'M', '.'
        }, {
            'P', 'M'
        }, {
            'Q'
        }, {
            'R', 'M'
        }, {
            'R', 'R'
        }, {
            'R', 'R', 'R', 'R'
        }, {
            'S', 'C', 'C'
        }, {
            'S', 'S'
        }, {
            'S', 'S', 'S', 'S', 'S'
        }, {
            'S', 'Y', ',', 'Y', 'Y', 'Y'
        }, {
            'S', 'Y', 'E', 'A', 'R'
        }, {
            'S', 'Y', 'Y', 'Y', 'Y'
        }, {
            'W'
        }, {
            'W', 'W'
        }, {
            'Y'
        }, {
            'Y', ',', 'Y', 'Y', 'Y'
        }, {
            'Y', 'E', 'A', 'R'
        }, {
            'Y', 'Y'
        }, {
            'Y', 'Y', 'Y'
        }, {
            'Y', 'Y', 'Y', 'Y'
        }, new char[1]
    };
    private static final byte ldxfdc[] = {
        37, 35, 36, 34, 37, 36, 1, 21, 32, 22, 
        23, 33, 43, 44, 39, 42, 25, 25, 24, 3, 
        18, 5, 7, 9, 29, 26, 17, 31, 30, 35, 
        34, 16, 38, 40, 41, 2, 27, 28, 13, 15, 
        12, 20, 19, 4, 11, 14, 6, 8, 10, 0
    };
    private static final byte ldxfcdlen[] = {
        0, 2, 35, 1, 1, 2, 2, 3, 3, 4, 
        4, 21, 37, 54, -60, -27, 1, 2, 2, 2, 
        1, 1, 2, 3, 2, 2, 2, 2, 5, 7, 
        -128, -128, -128, -128, -62, -60, -62, -60, -124, 0, 
        2, 4, 0, -113, -98, -128, -128
    };
    private static int ldxfdi[] = {
        0, 4, 6, 7, 12, 14, 0x80000000, 16, 19, 24, 
        0x80000000, 0x80000000, 25, 0x80000000, 0x80000000, 29, 31, 32, 35, 0x80000000, 
        0x80000000, 0x80000000, 41, 0x80000000, 43, 0x80000000
    };
    private static final char ldxfdx[][] = {
        {
            'S', 'P'
        }, {
            'S', 'P', 'T', 'H'
        }, {
            'T', 'H'
        }, {
            'T', 'H', 'S', 'P'
        }, new char[1]
    };
    private static final byte ldxfdxc[] = {
        2, 3, 1, 3, 0
    };
    private static final byte NULLFMT[] = {
        0, 16
    };
    private static final byte DEFAULT_FORMAT[] = {
        22, 24, 46, 4, 47, 31, 24, 46, 4, 47, 
        10, 24
    };
    private static final String ldxpaa[] = {
        "A.D.", "A.M.", "B.C.", "P.M."
    };
    private static final int ldxdom[] = {
        0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 
        273, 304, 334, 365
    };
    private final byte ldxpmxa[][] = {
        {
            23, 29
        }, {
            4, 6, 8, 10, 12, 11, 13
        }, {
            25, 24
        }, {
            34, 35
        }, {
            36, 37
        }, {
            30, 31, 17, 38
        }, {
            32, 33, 21
        }, {
            34, 35, 24
        }, {
            12, 13, 36, 37
        }
    };

    // Decompiling method: <init>  Signature: ()V
    // Max stack: 8, #locals: 1, #params: 1
    // Code length: 231 bytes, Code offset: 10286
    // Line Number Table found: 25 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 231 Range 0 230 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type V At 0 231 Range 0 230 Init 0 fixed
    LdxLibThin()
    {
        super();
        /* LDXPMXYR = 9999; */
        /* LDXPMNYR = -4712; */
        /* ldxpmxa = (new byte[][] {
            new byte[] {
                23, 29
            }, new byte[] {
                4, 6, 8, 10, 12, 11, 13
            }, new byte[] {
                25, 24
            }, new byte[] {
                34, 35
            }, new byte[] {
                36, 37
            }, new byte[] {
                30, 31, 17, 38
            }, new byte[] {
                32, 33, 21
            }, new byte[] {
                34, 35, 24
            }, new byte[] {
                12, 13, 36, 37
            }
        }); */
        return;
    }

    // Decompiling method: ldxadm  Signature: ([BI)[B
    // Max stack: 4, #locals: 9, #params: 3
    // Code length: 267 bytes, Code offset: 10651
    // Line Number Table found: 34 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 267 Range 0 266 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 267 Range 0 266 Init 0
    // Parameter  2 added: Name i Type I At 0 267 Range 0 266 Init 0
    // RetValue   9 added: Name <returnValue> Type [B At 0 267 Range 0 266 Init 0 fixed
    // LocalVar   4 added: Name j Type I At 24 128 Range 24 151 Init 24
    // LocalVar   3 added: Name k Type I At 28 28 Range 28 55 Init 28
    // LocalVar   5 added: Name l Type I At 36 140 Range 36 175 Init 36
    // LocalVar   6 added: Name i1 Type I At 45 218 Range 45 262 Init 45
    // LocalVar   3 added: Name j1 Type I At 71 143 Range 71 213 Init 71
    // LocalVar   8 added: Name k1 Type I At 178 68 Range 178 245 Init 178
    // LocalVar   7 added: Name l1 Type I At 238 20 Range 238 257 Init 238
    // LocalVar   3 name j1(I) merged out into k(I)
    public byte[] ldxadm(byte abyte0[], int i)
        throws SQLException
    {
        int k = ((abyte0[0] & 0xff) - 100) * 100 + ((abyte0[1] & 0xff) - 100);
        int j = k;
        int l = abyte0[2] & 0xff;
        int i1 = abyte0[3] & 0xff;
        i += (abyte0[2] & 0xff) + j * 12;
        if(i > 0)
        {
            if((j = i / 12) > 9999)
            {
                throw new SQLException(CoreException.getMessage((byte)8));
            }
            if((i %= 12) == 0)
            {
                j--;
                i = 12;
            }
        } else
        {
            if((j = i / 12 - 1) < -4712)
            {
                throw new SQLException(CoreException.getMessage((byte)8));
            }
            i = i % 12 + 12;
        }
        int k1 = i != 2 || !ldxisl(k) ? ldxdom[l + 1] - ldxdom[l] : 29;
        abyte0[0] = (byte)(j / 100 + 100);
        abyte0[1] = (byte)(j % 100 + 100);
        abyte0[2] = (byte)i;
        int j1 = i != 2 || !ldxisl(j) ? ldxdom[i + 1] - ldxdom[i] : 29;
        abyte0[3] = (byte)(i1 != k1 && i1 <= j1 ? i1 : j1);
        return abyte0;
    }

    // Decompiling method: ldxads  Signature: ([BII)[B
    // Max stack: 6, #locals: 6, #params: 4
    // Code length: 206 bytes, Code offset: 11098
    // Line Number Table found: 34 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 206 Range 0 205 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 206 Range 0 205 Init 0
    // Parameter  2 added: Name i Type I At 0 206 Range 0 205 Init 0
    // Parameter  3 added: Name j Type I At 0 206 Range 0 205 Init 0
    // RetValue   6 added: Name <returnValue> Type [B At 0 206 Range 0 205 Init 0 fixed
    // LocalVar   4 added: Name k Type I At 2 2 Range 2 3 Init 2
    // LocalVar   5 added: Name l Type I At 111 10 Range 111 120 Init 111
    // LocalVar   5 added: Name i1 Type I At 181 4 Range 181 184 Init 181
    // LocalVar   5 name i1(I) merged out into l(I)
    public byte[] ldxads(byte abyte0[], int i, int j)
        throws SQLException
    {
        int k = 0x15180;
        if(j != 0)
        {
            j += (abyte0[4] * 60 + abyte0[5]) * 60 + abyte0[6];
            i += j / 0x15180;
            if((j %= 0x15180) < 0)
            {
                j += 0x15180;
                i--;
            }
            abyte0[4] = (byte)(j / 3600);
            abyte0[5] = (byte)((j % 3600) / 60);
            abyte0[6] = (byte)(j % 3600 % 60);
        }
        int l = ((abyte0[0] & 0xff) - 100) * 100 + ((abyte0[1] & 0xff) - 100);
        if(i != 0)
        {
            i += ldxctj(l, abyte0[2], abyte0[3]);
            if(i < 1)
            {
                throw new SQLException(CoreException.getMessage((byte)8));
            }
            abyte0 = ldxjtc(i, abyte0);
        }
        l = ((abyte0[0] & 0xff) - 100) * 100 + ((abyte0[1] & 0xff) - 100);
        if(l > 9999)
        {
            throw new SQLException(CoreException.getMessage((byte)8));
        } else
        {
            return abyte0;
        }
    }

    // Decompiling method: ldxchk  Signature: ([B)I
    // Max stack: 3, #locals: 2, #params: 2
    // Code length: 12 bytes, Code offset: 11484
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // RetValue   2 added: Name <returnValue> Type I At 0 12 Range 0 11 Init 0 fixed
    public int ldxchk(byte abyte0[])
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxctj  Signature: (III)I
    // Max stack: 5, #locals: 5, #params: 4
    // Code length: 111 bytes, Code offset: 11552
    // Line Number Table found: 11 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 111 Range 0 110 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 111 Range 0 110 Init 0
    // Parameter  2 added: Name j Type I At 0 111 Range 0 110 Init 0
    // Parameter  3 added: Name k Type I At 0 111 Range 0 110 Init 0
    // RetValue   5 added: Name <returnValue> Type I At 0 111 Range 0 110 Init 0 fixed
    // LocalVar   4 added: Name flag Type Z At 8 62 Range 8 69 Init 8
    // LocalVar   4 chged: Name l Oname flag Type I At 18 10 Range 8 69 Init 8
    // LocalVar   4 added: Name i1 Type I At 78 32 Range 78 109 Init 78
    // LocalVar   4 name i1(I) merged out into l(I)
    private int ldxctj(int i, int j, int k)
    {
        int l;
        if(i == -4712)
        {
            l = 0;
        } else
        {
            l = i + 4712;
            l = 365 * l + (l - 1) / 4;
        }
        if(i >= 1583)
        {
            l = (l - 10 - (i - 1501) / 100) + (i - 1201) / 400;
        }
        l += ldxcty(i, j, k);
        if(i == 1582 && (j == 10 && k >= 15 || j >= 11))
        {
            l -= 10;
        }
        return l;
    }

    // Decompiling method: ldxcty  Signature: (III)I
    // Max stack: 3, #locals: 4, #params: 4
    // Code length: 27 bytes, Code offset: 11741
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 27 Range 0 26 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 27 Range 0 26 Init 0
    // Parameter  2 added: Name j Type I At 0 27 Range 0 26 Init 0
    // Parameter  3 added: Name k Type I At 0 27 Range 0 26 Init 0
    // RetValue   4 added: Name <returnValue> Type I At 0 27 Range 0 26 Init 0 fixed
    private int ldxcty(int i, int j, int k)
    {
        return ldxdom[j] + k + (j < 3 || !ldxisl(i) ? 0 : 1);
    }

    // Decompiling method: ldxdfd  Signature: (II)[B
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 12 bytes, Code offset: 11806
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 12 Range 0 11 Init 0
    // Parameter  2 added: Name j Type I At 0 12 Range 0 11 Init 0
    // RetValue   3 added: Name <returnValue> Type [B At 0 12 Range 0 11 Init 0 fixed
    public byte[] ldxdfd(int i, int j)
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxdow  Signature: (IIILjava/util/Locale;)I
    // Max stack: 4, #locals: 8, #params: 5
    // Code length: 47 bytes, Code offset: 11874
    // Line Number Table found: 6 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 47 Range 0 46 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 47 Range 0 46 Init 0
    // Parameter  2 added: Name j Type I At 0 47 Range 0 46 Init 0
    // Parameter  3 added: Name k Type I At 0 47 Range 0 46 Init 0
    // Parameter  4 added: Name locale Type Ljava/util/Locale; At 0 47 Range 0 46 Init 0
    // RetValue   8 added: Name <returnValue> Type I At 0 47 Range 0 46 Init 0 fixed
    // LocalVar   7 added: Name calendar Type Ljava/util/Calendar; At 5 17 Range 5 21 Init 5
    // LocalVar   5 added: Name l Type I At 14 4 Range 14 17 Init 14
    // LocalVar   6 added: Name i1 Type I At 32 12 Range 32 43 Init 32
    private int ldxdow(int i, int j, int k, Locale locale)
    {
        Calendar calendar = Calendar.getInstance(locale);
        int l = ldxctj(i, j, k);
        int i1 = (l - (0x254ee5 + (calendar.getFirstDayOfWeek() - 1))) % 7;
        if(i1 < 0)
        {
            i1 += 7;
        }
        return i1 + 1;
    }

    // Decompiling method: ldxdtd  Signature: ([B[I[I)V
    // Max stack: 3, #locals: 4, #params: 4
    // Code length: 12 bytes, Code offset: 11979
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // Parameter  2 added: Name ai Type [I At 0 12 Range 0 11 Init 0
    // Parameter  3 added: Name ai1 Type [I At 0 12 Range 0 11 Init 0
    // RetValue   4 added: Name <returnValue> Type V At 0 12 Range 0 11 Init 0 fixed
    public void ldxdtd(byte abyte0[], int ai[], int ai1[])
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxdts  Signature: ([BLjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    // Max stack: 5, #locals: 4, #params: 4
    // Code length: 13 bytes, Code offset: 12047
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 13 Range 0 12 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 13 Range 0 12 Init 0
    // Parameter  2 added: Name s Type Ljava/lang/String; At 0 13 Range 0 12 Init 0
    // Parameter  3 added: Name s1 Type Ljava/lang/String; At 0 13 Range 0 12 Init 0
    // RetValue   4 added: Name <returnValue> Type Ljava/lang/String; At 0 13 Range 0 12 Init 0 fixed
    public String ldxdts(byte abyte0[], String s, String s1)
        throws SQLException
    {
        return ldxdts(abyte0, ldxsto(s, s1), s1);
    }

    // Decompiling method: ldxdts  Signature: ([B[BLjava/lang/String;)Ljava/lang/String;
    // Max stack: 7, #locals: 30, #params: 4
    // Code length: 1778 bytes, Code offset: 12108
    // Line Number Table found: 227 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 1778 Range 0 1777 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 1778 Range 0 1777 Init 0
    // Parameter  2 added: Name abyte1 Type [B At 0 1778 Range 0 1777 Init 0
    // Parameter  3 added: Name s Type Ljava/lang/String; At 0 1778 Range 0 1777 Init 0
    // RetValue  30 added: Name <returnValue> Type Ljava/lang/String; At 0 1778 Range 0 1777 Init 0 fixed
    // LocalVar   4 added: Name flag Type Z At 1 2 Range 1 2 Init 1
    // LocalVar   6 added: Name flag1 Type Z At 4 2 Range 4 5 Init 4
    // LocalVar   7 added: Name flag2 Type Z At 7 1760 Range 7 1766 Init 7
    // LocalVar   9 added: Name flag3 Type Z At 10 2 Range 10 11 Init 10
    // LocalVar  11 added: Name flag4 Type Z At 13 2 Range 13 14 Init 13
    // LocalVar  12 added: Name flag5 Type Z At 16 1374 Range 16 1389 Init 16
    // LocalVar  13 added: Name obj Type A At 19 1649 Range 19 1667 Init 19
    // LocalVar  17 added: Name stringbuffer Type Ljava/lang/StringBuffer; At 30 1744 Range 30 1773 Init 30
    // LocalVar  18 added: Name obj1 Type A At 33 2 Range 33 34 Init 33
    // LocalVar   8 added: Name i Type I At 64 1705 Range 64 1768 Init 64
    // LocalVar  16 added: Name nlslocale Type Loracle/gss/util/NLSLocale; At 82 48 Range 82 129 Init 82
    // LocalVar  12 chged: Name j Oname flag5 Type I At 90 1300 Range 16 1389 Init 16
    // LocalVar  15 added: Name locale Type Ljava/util/Locale; At 104 1566 Range 104 1669 Init 104
    // LocalVar  21 added: Name s1 Type Ljava/lang/String; At 116 16 Range 116 131 Init 116
    // LocalVar  22 added: Name s2 Type Ljava/lang/String; At 126 8 Range 126 133 Init 126
    // LocalVar  11 added: Name k Type I At 181 1072 Range 181 1252 Init 181
    // LocalVar   7 chged: Name l Oname flag2 Type I At 1765 2 Range 7 1766 Init 7
    // LocalVar   4 added: Name byte0 Type B At 193 1265 Range 193 1457 Init 193
    // LocalVar   6 added: Name byte1 Type B At 202 1525 Range 202 1726 Init 202
    // LocalVar  10 added: Name i1 Type I At 221 24 Range 221 244 Init 221
    // LocalVar   5 added: Name byte2 Type B At 257 1193 Range 257 1449 Init 257
    // LocalVar  18 added: Name stringbuffer1 Type Ljava/lang/StringBuffer; At 315 4 Range 315 318 Init 315
    // LocalVar  19 added: Name stringbuffer2 Type Ljava/lang/StringBuffer; At 319 1442 Range 319 1760 Init 319
    // LocalVar  13 chged: Name s3 Oname obj Type Ljava/lang/String; At 567 1101 Range 19 1667 Init 19
    // LocalVar   4 chged: Name j1 Oname byte0 Type I At 572 3 Range 193 1457 Init 193
    // LocalVar  14 added: Name k1 Type I At 612 2 Range 612 613 Init 612
    // LocalVar  14 added: Name l1 Type I At 713 2 Range 713 714 Init 713
    // LocalVar  20 added: Name i2 Type I At 768 83 Range 768 850 Init 768
    // LocalVar  23 added: Name calendar Type Ljava/util/Calendar; At 775 4 Range 775 778 Init 775
    // LocalVar  24 added: Name as Type [Ljava/lang/String; At 826 23 Range 826 848 Init 826
    // LocalVar  14 added: Name j2 Type I At 861 2 Range 861 862 Init 861
    // LocalVar  25 added: Name as1 Type [Ljava/lang/String; At 1023 23 Range 1023 1045 Init 1023
    // LocalVar  14 added: Name k2 Type I At 1061 2 Range 1061 1062 Init 1061
    // LocalVar  14 added: Name l2 Type I At 1377 16 Range 1377 1392 Init 1377
    // LocalVar  26 added: Name s4 Type Ljava/lang/String; At 1411 6 Range 1411 1416 Init 1411
    // LocalVar  27 added: Name as2 Type [Ljava/lang/String; At 1500 106 Range 1500 1605 Init 1500
    // LocalVar  20 added: Name flag2 Type Z At 1570 42 Range 1570 1611 Init 1570
    // LocalVar  28 added: Name flag5 Type Z At 1573 31 Range 1573 1603 Init 1573
    // LocalVar  28 chged: Name i3 Oname flag5 Type I At 1602 2 Range 1573 1603 Init 1573
    // LocalVar  20 chged: Name j3 Oname flag2 Type I At 1610 2 Range 1570 1611 Init 1570
    // LocalVar  20 added: Name k3 Type I At 1618 23 Range 1618 1640 Init 1618
    // LocalVar  29 added: Name flag2 Type Z At 1621 18 Range 1621 1638 Init 1621
    // LocalVar  29 chged: Name l3 Oname flag2 Type I At 1637 2 Range 1621 1638 Init 1621
    // LocalVar  14 added: Name byte0 Type B At 1650 2 Range 1650 1651 Init 1650
    // LocalVar  11 chged: Name i4 Oname flag4 Type I At 13 2 Range 13 14 Init 13
    // LocalVar  11 name k(I) merged out into i4(I)
    // LocalVar  20 name k3(I) merged out into j3(I)
    public String ldxdts(byte abyte0[], byte abyte1[], String s)
        throws SQLException
    {
        boolean flag = false;
        boolean flag1 = false;
        int j = 0;
        boolean flag2 = false;
        int i1 = 0;
        int j1 = 0;
        String s1 = null;
        StringBuffer stringbuffer = new StringBuffer(64);
        Object obj = null;
        if(abyte1.length == 0 || abyte1 == null || abyte1[0] == 0 && abyte1[1] == 16)
        {
            abyte1 = DEFAULT_FORMAT;
        }
        int k = abyte1.length;
        Locale locale;
        if(s != null && s.compareTo("") != 0)
        {
            NLSLocale nlslocale = NLSLocale.getInstance();
            j1 = s.indexOf("_");
            if(j1 == -1)
            {
                locale = nlslocale.getJavaLocale(s);
            } else
            {
                String s2 = s.substring(0, j1);
                String s3 = s.substring(j1 + 1);
                locale = nlslocale.getJavaLocale(s2, s3);
            }
            if(locale == null)
            {
                locale = Locale.getDefault();
            }
        } else
        {
            locale = Locale.getDefault();
        }
        i1 = ((abyte0[0] & 0xff) - 100) * 100 + ((abyte0[1] & 0xff) - 100);
        while(j < k) 
        {
            int i = abyte1[j++];
            byte byte1 = abyte1[j++];
            if(i == 0)
            {
                break;
            }
            if(i >= 45)
            {
                int l = i - 45;
                stringbuffer.append(new String(abyte1, j, l));
                j += l;
                continue;
            }
            byte byte0 = ldxfcdlen[i];
            StringBuffer stringbuffer2;
            if((byte0 & 0xffffff80) != 0 && (byte1 & 0xc) != 0 || (byte1 & 0x10) != 0 && (byte0 & 0x40) == 0 || (byte1 & 0xc) != 0 && (byte1 & 0x3) != 0)
            {
                StringBuffer stringbuffer1 = new StringBuffer(64);
                stringbuffer2 = stringbuffer1;
            } else
            {
                stringbuffer2 = stringbuffer;
            }
            switch(i)
            {
            case 42: // '*'
                continue;

            case 37: // '%'
                if(locale.getCountry().compareTo("US") == 0 && locale.getLanguage().compareTo("en") == 0)
                {
                    s1 = abyte0[0] >= 100 ? ldxpaa[0] : ldxpaa[2];
                    break;
                }
                i--;
                // fall through

            case 36: // '$'
                stringbuffer2.append((new DateFormatSymbols(locale)).getEras()[abyte0[0] >= 100 ? 1 : 0]);
                int k1 = stringbuffer2.length();
                break;

            case 35: // '#'
                if(locale.getCountry().compareTo("US") == 0 && locale.getLanguage().compareTo("en") == 0)
                {
                    s1 = abyte0[4] - 1 < 12 ? ldxpaa[1] : ldxpaa[3];
                    break;
                }
                i--;
                // fall through

            case 34: // '"'
                stringbuffer2.append((new DateFormatSymbols(locale)).getAmPmStrings()[abyte0[4] - 1 < 12 ? 0 : 1]);
                int l1 = stringbuffer2.length();
                break;

            case 29: // '\035'
                j1 = ldxctj(i1, abyte0[2], abyte0[3]);
                break;

            case 21: // '\025'
                j1 = ldxdow(i1, abyte0[2], abyte0[3], locale);
                break;

            case 32: // ' '
            case 33: // '!'
                int l2 = ldxdow(i1, abyte0[2], abyte0[3], locale);
                Calendar calendar = Calendar.getInstance(locale);
                if(calendar.getFirstDayOfWeek() > 1)
                {
                    l2++;
                }
                if(l2 > 7)
                {
                    l2 -= 7;
                }
                if(l2 == 0)
                {
                    l2++;
                }
                String as[];
                if(i == 32)
                {
                    as = (new DateFormatSymbols(locale)).getWeekdays();
                } else
                {
                    as = (new DateFormatSymbols(locale)).getShortWeekdays();
                }
                stringbuffer2.append(as[l2]);
                int i2 = stringbuffer2.length();
                break;

            case 1: // '\001'
            case 2: // '\002'
                if((j1 = i1) > 0)
                {
                    j1 = (j1 - 1) / 100 + 1;
                } else
                {
                    j1 = -((-1 - j1) / 100) - 1;
                }
                break;

            case 22: // '\026'
                j1 = abyte0[3];
                break;

            case 43: // '+'
            case 44: // ','
                throw new SQLException(CoreException.getMessage((byte)1));

            case 24: // '\030'
            case 25: // '\031'
                j1 = abyte0[4] - 1;
                if(i == 25)
                {
                    j1 = j1 <= 12 ? j1 != 0 ? j1 : 12 : j1 - 12;
                }
                break;

            case 26: // '\032'
                j1 = abyte0[5] - 1;
                break;

            case 16: // '\020'
                j1 = (abyte0[2] + 2) / 3;
                break;

            case 17: // '\021'
                j1 = abyte0[2];
                break;

            case 30: // '\036'
            case 31: // '\037'
                j1 = abyte0[2];
                String as1[];
                if(i == 30)
                {
                    as1 = (new DateFormatSymbols(locale)).getMonths();
                } else
                {
                    as1 = (new DateFormatSymbols(locale)).getShortMonths();
                }
                stringbuffer2.append(as1[--j1]);
                int j2 = stringbuffer2.length();
                break;

            case 38: // '&'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 27: // '\033'
                j1 = abyte0[6] - 1;
                break;

            case 28: // '\034'
                j1 = ((abyte0[4] - 1) * 60 + (abyte0[5] - 1)) * 60 + (abyte0[6] - 1);
                break;

            case 20: // '\024'
                j1 = (abyte0[3] + 6) / 7;
                break;

            case 23: // '\027'
                j1 = ldxcty(i1, abyte0[2], abyte0[3]);
                break;

            case 18: // '\022'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 19: // '\023'
                j1 = (ldxcty(i1, abyte0[2], abyte0[3]) + 6) / 7;
                break;

            case 3: // '\003'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 4: // '\004'
                j1 = i1 % 10;
                break;

            case 5: // '\005'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 6: // '\006'
            case 40: // '('
                j1 = i1 % 100;
                break;

            case 7: // '\007'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 8: // '\b'
                j1 = i1 % 1000;
                break;

            case 10: // '\n'
            case 11: // '\013'
            case 12: // '\f'
            case 13: // '\r'
            case 41: // ')'
                j1 = i1;
                break;

            case 9: // '\t'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 14: // '\016'
            case 15: // '\017'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 39: // '\''
            default:
                throw new SQLException(CoreException.getMessage((byte)7));
            }
            if((byte0 & 0xffffff80) == 0)
            {
                if((byte0 & 0x20) == 0)
                {
                    if(j1 < 0)
                    {
                        j1 = -j1;
                    }
                } else
                if(j1 >= 0)
                {
                    stringbuffer2.insert(0, " ");
                    byte0--;
                }
                if((byte1 & 0x2) != 0)
                {
                    throw new SQLException(CoreException.getMessage((byte)1));
                }
                int k2;
                if((byte1 & 0x10) != 0)
                {
                    k2 = byte0 & 0xf;
                } else
                {
                    k2 = 0;
                }
                String s4 = lxi42b(64, j1, k2, (byte0 & 0x10) != 0, locale);
                stringbuffer2.append(s4);
                if((byte1 & 0x1) != 0)
                {
                    throw new SQLException(CoreException.getMessage((byte)1));
                }
            } else
            if((byte1 & 0x10) != 0 && (byte0 & 0x40) == 0)
            {
                String as2[];
                switch(i)
                {
                case 33: // '!'
                    as2 = (new DateFormatSymbols(locale)).getShortWeekdays();
                    break;

                case 32: // ' '
                    as2 = (new DateFormatSymbols(locale)).getWeekdays();
                    break;

                case 31: // '\037'
                    as2 = (new DateFormatSymbols(locale)).getShortMonths();
                    break;

                case 30: // '\036'
                    as2 = (new DateFormatSymbols(locale)).getMonths();
                    break;

                default:
                    throw new SQLException(CoreException.getMessage((byte)7));
                }
                int i3 = 0;
                for(int j3 = 0; j3 < as2.length; j3++)
                {
                    j1 = as2[j3].length();
                    if(j1 > i3)
                    {
                        i3 = j1;
                    }
                }

                i3 -= stringbuffer2.length();
                for(int k3 = 0; k3 < i3; k3++)
                {
                    stringbuffer2.append(" ");
                }

            }
            if(s1 != null)
            {
                byte byte2 = 4;
                if((byte1 & 0xc) == 0)
                {
                    stringbuffer2 = stringbuffer;
                }
                stringbuffer2.append(s1.toLowerCase(locale));
                s1 = null;
            }
            if((byte1 & 0x4) != 0)
            {
                if(Character.isLowerCase(stringbuffer2.charAt(0)))
                {
                    stringbuffer2.setCharAt(0, Character.toUpperCase(stringbuffer2.charAt(0)));
                }
                stringbuffer.append(stringbuffer2);
            } else
            if((byte1 & 0x8) != 0)
            {
                stringbuffer.append(stringbuffer2.toString().toUpperCase());
            } else
            if(stringbuffer2 != stringbuffer)
            {
                stringbuffer.append(stringbuffer2);
            }
        }
        return stringbuffer.toString();
    }

    // Decompiling method: ldxdyc  Signature: (II[B)[B
    // Max stack: 6, #locals: 7, #params: 4
    // Code length: 112 bytes, Code offset: 14838
    // Line Number Table found: 12 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 112 Range 0 111 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 112 Range 0 111 Init 0
    // Parameter  2 added: Name j Type I At 0 112 Range 0 111 Init 0
    // Parameter  3 added: Name abyte0 Type [B At 0 112 Range 0 111 Init 0
    // RetValue   7 added: Name <returnValue> Type [B At 0 112 Range 0 111 Init 0 fixed
    // LocalVar   6 added: Name flag Type Z At 5 52 Range 5 56 Init 5
    // LocalVar   4 added: Name k Type I At 33 50 Range 33 82 Init 33
    // LocalVar   5 added: Name l Type I At 77 25 Range 77 101 Init 77
    private byte[] ldxdyc(int i, int j, byte abyte0[])
        throws SQLException
    {
        boolean flag = ldxisl(i);
        if(j == 366 && !flag)
        {
            throw new SQLException(CoreException.getMessage((byte)9));
        }
        int k = j;
        if(j > 59 + (flag ? 1 : 0))
        {
            k += 2 - (flag ? 1 : 0);
        }
        int l = (k += 91) * 100;
        abyte0[3] = (byte)(k - (l - l % 3055) / 100);
        abyte0[2] = (byte)(l / 3055 - 2);
        return abyte0;
    }

    // Decompiling method: ldxdyf  Signature: ([B)[B
    // Max stack: 3, #locals: 2, #params: 2
    // Code length: 12 bytes, Code offset: 15042
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // RetValue   2 added: Name <returnValue> Type [B At 0 12 Range 0 11 Init 0 fixed
    public byte[] ldxdyf(byte abyte0[])
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxftd  Signature: ([B[I[I)V
    // Max stack: 3, #locals: 4, #params: 4
    // Code length: 12 bytes, Code offset: 15110
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // Parameter  2 added: Name ai Type [I At 0 12 Range 0 11 Init 0
    // Parameter  3 added: Name ai1 Type [I At 0 12 Range 0 11 Init 0
    // RetValue   4 added: Name <returnValue> Type V At 0 12 Range 0 11 Init 0 fixed
    public void ldxftd(byte abyte0[], int ai[], int ai1[])
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxgdt  Signature: ()[B
    // Max stack: 3, #locals: 1, #params: 1
    // Code length: 12 bytes, Code offset: 15178
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [B At 0 12 Range 0 11 Init 0 fixed
    public byte[] ldxgdt()
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxisl  Signature: (I)Z
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 52 bytes, Code offset: 15246
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 52 Range 0 51 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 52 Range 0 51 Init 0
    // RetValue   2 added: Name <returnValue> Type Z At 0 52 Range 0 51 Init 0 fixed
    private boolean ldxisl(int i)
    {
        return i % 4 == 0 && (i > 1582 ? i % 100 != 0 || i % 400 == 0 || false : i != -4712 || false);
    }

    // Decompiling method: ldxjtc  Signature: (I[B)[B
    // Max stack: 4, #locals: 6, #params: 3
    // Code length: 309 bytes, Code offset: 15344
    // Line Number Table found: 51 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 309 Range 0 308 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 309 Range 0 308 Init 0
    // Parameter  2 added: Name abyte0 Type [B At 0 309 Range 0 308 Init 0
    // RetValue   6 added: Name <returnValue> Type [B At 0 309 Range 0 308 Init 0 fixed
    // LocalVar   5 added: Name j Type I At 71 46 Range 71 116 Init 71
    // LocalVar   3 added: Name k Type I At 84 34 Range 84 117 Init 84
    // LocalVar   4 added: Name l Type I At 90 36 Range 90 125 Init 90
    // LocalVar   5 added: Name i1 Type I At 119 28 Range 119 146 Init 119
    // LocalVar   5 added: Name j1 Type I At 171 72 Range 171 242 Init 171
    // LocalVar   4 added: Name k1 Type I At 181 5 Range 181 185 Init 181
    // LocalVar   4 added: Name l1 Type I At 195 10 Range 195 204 Init 195
    // LocalVar   4 added: Name i2 Type I At 207 8 Range 207 214 Init 207
    // LocalVar   3 added: Name j2 Type I At 218 9 Range 218 226 Init 218
    // LocalVar   4 added: Name k2 Type I At 224 10 Range 224 233 Init 224
    // LocalVar   3 added: Name l2 Type I At 231 50 Range 231 280 Init 231
    // LocalVar   4 added: Name i3 Type I At 236 40 Range 236 275 Init 236
    // LocalVar   5 added: Name j3 Type I At 246 4 Range 246 249 Init 246
    // LocalVar   5 added: Name k3 Type I At 252 47 Range 252 298 Init 252
    // LocalVar   3 name l2(I) merged out into j2(I)
    // LocalVar   4 name l1(I) merged out into k1(I)
    // LocalVar   4 name i2(I) merged out into k1(I)
    // LocalVar   4 name k2(I) merged out into k1(I)
    // LocalVar   4 name i3(I) merged out into k1(I)
    // LocalVar   5 name i1(I) merged out into j(I)
    // LocalVar   5 name j3(I) merged out into j1(I)
    // LocalVar   5 name k3(I) merged out into j1(I)
    private byte[] ldxjtc(int i, byte abyte0[])
        throws SQLException
    {
        if(i < 1)
        {
            throw new SQLException(CoreException.getMessage((byte)10));
        }
        if(i < 366)
        {
            abyte0[0] = 53;
            abyte0[1] = 28;
            abyte0 = ldxdyc(-4712, i, abyte0);
        } else
        if(i < 0x231519)
        {
            i -= 366;
            int j1 = -4711 + (i / 1461) * 4;
            i %= 1461;
            int j = i / 365;
            int l = i % 365;
            if(l == 0 && j == 4)
            {
                l = 366;
                j = 3;
            } else
            {
                l++;
            }
            j1 += j;
            abyte0 = ldxdyc(j1, l, abyte0);
            abyte0[0] = (byte)(j1 / 100 + 100);
            abyte0[1] = (byte)(j1 % 100 + 100);
        } else
        {
            i = 4 * (i - 0x1a431f) - 1;
            int k1 = i / 0x23ab1;
            i %= 0x23ab1;
            int i1 = i / 4;
            i = 4 * i1 + 3;
            i1 = i % 1461;
            i /= 1461;
            i1 /= 4;
            i1++;
            int k = 5 * i1 - 3;
            i1 = k % 153;
            k /= 153;
            i1 /= 5;
            i1++;
            k1 *= 100;
            k1 += i;
            if(k < 10)
            {
                k += 3;
            } else
            {
                k -= 9;
                k1++;
            }
            abyte0[3] = (byte)i1;
            abyte0[2] = (byte)k;
            abyte0[0] = (byte)(k1 / 100 + 100);
            abyte0[1] = (byte)(k1 % 100 + 100);
        }
        return abyte0;
    }

    // Decompiling method: ldxldd  Signature: ([B)[B
    // Max stack: 3, #locals: 2, #params: 2
    // Code length: 12 bytes, Code offset: 15901
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // RetValue   2 added: Name <returnValue> Type [B At 0 12 Range 0 11 Init 0 fixed
    public byte[] ldxldd(byte abyte0[])
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxnxd  Signature: ([BI)[B
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 12 bytes, Code offset: 15969
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // Parameter  2 added: Name i Type I At 0 12 Range 0 11 Init 0
    // RetValue   3 added: Name <returnValue> Type [B At 0 12 Range 0 11 Init 0 fixed
    public byte[] ldxnxd(byte abyte0[], int i)
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxrnd  Signature: ([BLjava/lang/String;)[B
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 12 bytes, Code offset: 16037
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // Parameter  2 added: Name s Type Ljava/lang/String; At 0 12 Range 0 11 Init 0
    // RetValue   3 added: Name <returnValue> Type [B At 0 12 Range 0 11 Init 0 fixed
    public byte[] ldxrnd(byte abyte0[], String s)
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxsbm  Signature: ([B[B)[B
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 12 bytes, Code offset: 16105
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // Parameter  2 added: Name abyte1 Type [B At 0 12 Range 0 11 Init 0
    // RetValue   3 added: Name <returnValue> Type [B At 0 12 Range 0 11 Init 0 fixed
    public byte[] ldxsbm(byte abyte0[], byte abyte1[])
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxstd  Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[B
    // Max stack: 5, #locals: 17, #params: 4
    // Code length: 882 bytes, Code offset: 16173
    // Line Number Table found: 116 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 882 Range 0 881 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 882 Range 0 881 Init 0
    // Parameter  2 added: Name s1 Type Ljava/lang/String; At 0 882 Range 0 881 Init 0
    // Parameter  3 added: Name s2 Type Ljava/lang/String; At 0 882 Range 0 881 Init 0
    // RetValue  17 added: Name <returnValue> Type [B At 0 882 Range 0 881 Init 0 fixed
    // LocalVar   4 added: Name obj Type A At 1 2 Range 1 2 Init 1
    // LocalVar   5 added: Name obj1 Type A At 4 2 Range 4 5 Init 4
    // LocalVar   6 added: Name flag Type Z At 7 2 Range 7 8 Init 7
    // LocalVar   7 added: Name flag1 Type Z At 10 2 Range 10 11 Init 10
    // LocalVar   8 added: Name ac Type [C At 17 797 Range 17 813 Init 17
    // LocalVar   9 added: Name flag2 Type Z At 20 783 Range 20 802 Init 20
    // LocalVar  10 added: Name flag3 Type Z At 23 2 Range 23 24 Init 23
    // LocalVar  11 added: Name flag4 Type Z At 26 791 Range 26 816 Init 26
    // LocalVar  12 added: Name flag5 Type Z At 29 2 Range 29 30 Init 29
    // LocalVar  13 added: Name parseposition Type Ljava/text/ParsePosition; At 39 801 Range 39 839 Init 39
    // LocalVar  14 added: Name simpledateformat Type Ljava/text/SimpleDateFormat; At 48 789 Range 48 836 Init 48
    // LocalVar   5 added: Name abyte0 Type [B At 56 646 Range 56 701 Init 56
    // LocalVar  10 added: Name i Type I At 67 738 Range 67 804 Init 67
    // LocalVar   9 chged: Name j Oname flag2 Type I At 801 2 Range 20 802 Init 20
    // LocalVar  11 chged: Name k Oname flag4 Type I At 815 2 Range 26 816 Init 26
    // LocalVar  15 added: Name s3 Type Ljava/lang/String; At 820 6 Range 820 825 Init 820
    // LocalVar  16 added: Name date Type Ljava/util/Date; At 843 13 Range 843 855 Init 843
    // LocalVar   4 added: Name abyte1 Type [B At 866 2 Range 866 867 Init 866
    // LocalVar   6 added: Name byte0 Type B At 80 611 Range 80 690 Init 80
    // LocalVar   7 added: Name byte1 Type B At 90 623 Range 90 712 Init 90
    // LocalVar  15 added: Name flag2 Type Z At 322 20 Range 322 341 Init 322
    // LocalVar  15 chged: Name l Oname flag2 Type I At 340 2 Range 322 341 Init 322
    // LocalVar  15 added: Name flag2 Type Z At 350 20 Range 350 369 Init 350
    // LocalVar  15 chged: Name i1 Oname flag2 Type I At 368 2 Range 350 369 Init 350
    // LocalVar  15 added: Name flag2 Type Z At 378 20 Range 378 397 Init 378
    // LocalVar  15 chged: Name j1 Oname flag2 Type I At 396 2 Range 378 397 Init 378
    // LocalVar  15 added: Name flag2 Type Z At 453 20 Range 453 472 Init 453
    // LocalVar  15 chged: Name k1 Oname flag2 Type I At 471 2 Range 453 472 Init 453
    // LocalVar  15 added: Name flag2 Type Z At 481 20 Range 481 500 Init 481
    // LocalVar  15 chged: Name l1 Oname flag2 Type I At 499 2 Range 481 500 Init 481
    // LocalVar  15 added: Name flag2 Type Z At 522 20 Range 522 541 Init 522
    // LocalVar  15 chged: Name i2 Oname flag2 Type I At 540 2 Range 522 541 Init 522
    // LocalVar  12 added: Name j2 Type I At 694 101 Range 694 794 Init 694
    // LocalVar  15 added: Name s4 Type Ljava/lang/String; At 709 62 Range 709 770 Init 709
    // LocalVar   4 chged: Name abyte2 Oname obj Type [B At 1 2 Range 1 2 Init 1
    // LocalVar   4 name abyte1([B) merged out into abyte2([B)
    // LocalVar   5 chged: Name abyte1 Oname obj1 Type [B At 4 2 Range 4 5 Init 4
    // LocalVar   5 name abyte0([B) merged out into abyte1([B)
    public byte[] ldxstd(String s, String s1, String s2)
        throws SQLException
    {
        byte abyte0[] = null;
        byte abyte1[] = null;
        boolean flag = false;
        boolean flag1 = false;
        char ac[] = new char[512];
        int i = 0;
        boolean flag2 = false;
        int k = 0;
        boolean flag3 = false;
        ParsePosition parseposition = new ParsePosition(0);
        SimpleDateFormat simpledateformat = new SimpleDateFormat();
        abyte1 = ldxsto(s1, s2);
        ldxsti(abyte1);
        for(int j = abyte1.length; i < j;)
        {
            byte byte0 = abyte1[i++];
            byte byte1 = abyte1[i++];
            switch(byte0)
            {
            case 43: // '+'
            case 44: // ','
                throw new SQLException(CoreException.getMessage((byte)1));

            case 41: // ')'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 40: // '('
                throw new SQLException(CoreException.getMessage((byte)1));

            case 4: // '\004'
                ac[k++] = 'y';
                break;

            case 6: // '\006'
                for(int i1 = 0; i1 < 2; i1++)
                {
                    ac[k++] = 'y';
                }

                break;

            case 8: // '\b'
                for(int j1 = 0; j1 < 3; j1++)
                {
                    ac[k++] = 'y';
                }

                break;

            case 10: // '\n'
                for(int k1 = 0; k1 < 4; k1++)
                {
                    ac[k++] = 'y';
                }

                break;

            case 11: // '\013'
            case 12: // '\f'
            case 13: // '\r'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 38: // '&'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 17: // '\021'
                ac[k++] = 'M';
                ac[k++] = 'M';
                break;

            case 31: // '\037'
                for(int l1 = 0; l1 < 3; l1++)
                {
                    ac[k++] = 'M';
                }

                break;

            case 30: // '\036'
                for(int i2 = 0; i2 < 4; i2++)
                {
                    ac[k++] = 'M';
                }

                break;

            case 21: // '\025'
            case 33: // '!'
                ac[k++] = 'E';
                break;

            case 32: // ' '
                for(int j2 = 0; j2 < 4; j2++)
                {
                    ac[k++] = 'E';
                }

                break;

            case 22: // '\026'
                ac[k++] = 'd';
                break;

            case 23: // '\027'
                ac[k++] = 'D';
                break;

            case 29: // '\035'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 25: // '\031'
                ac[k++] = 'h';
                break;

            case 24: // '\030'
                ac[k++] = 'H';
                break;

            case 26: // '\032'
                ac[k++] = 'm';
                break;

            case 27: // '\033'
                ac[k++] = 's';
                break;

            case 28: // '\034'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 34: // '"'
            case 35: // '#'
                ac[k++] = 'a';
                break;

            case 36: // '$'
            case 37: // '%'
                ac[k++] = 'G';
                break;

            case 39: // '\''
            case 42: // '*'
                throw new SQLException(CoreException.getMessage((byte)1));

            case 5: // '\005'
            case 7: // '\007'
            case 9: // '\t'
            case 14: // '\016'
            case 15: // '\017'
            case 16: // '\020'
            case 18: // '\022'
            case 19: // '\023'
            case 20: // '\024'
            default:
                int l = byte0 - 45;
                String s3 = new String(abyte1, i, l);
                if(byte1 == 1)
                {
                    ac[k++] = '\'';
                    System.arraycopy(s3.toCharArray(), 0, ac, k, l);
                    k += l;
                    i += l;
                    ac[k++] = '\'';
                } else
                {
                    System.arraycopy(s3.toCharArray(), 0, ac, k, l);
                    k += l;
                    i += l;
                }
                break;
            }
        }

        String s4 = new String(ac, 0, k);
        simpledateformat.applyPattern(s4);
        simpledateformat.setLenient(false);
        Date date = simpledateformat.parse(s, parseposition);
        if(date != null)
        {
            return abyte0 = DATE.toBytes(new Timestamp(date.getTime()));
        } else
        {
            throw new SQLException(CoreException.getMessage((byte)6));
        }
    }

    // Decompiling method: ldxsti  Signature: ([B)V
    // Max stack: 4, #locals: 7, #params: 2
    // Code length: 280 bytes, Code offset: 17563
    // Line Number Table found: 26 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 280 Range 0 279 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 280 Range 0 279 Init 0
    // RetValue   7 added: Name <returnValue> Type V At 0 280 Range 0 279 Init 0 fixed
    // LocalVar   2 added: Name ai Type [I At 4 213 Range 4 216 Init 4
    // LocalVar   3 added: Name flag Type Z At 6 188 Range 6 193 Init 6
    // LocalVar   3 chged: Name i Oname flag Type I At 193 1 Range 6 193 Init 6
    // LocalVar   4 added: Name flag Type Z At 200 71 Range 200 270 Init 200
    // LocalVar   4 chged: Name j Oname flag Type I At 269 2 Range 200 270 Init 200
    // LocalVar   4 added: Name byte0 Type B At 21 2 Range 21 22 Init 21
    // LocalVar   5 added: Name flag Type Z At 206 43 Range 206 248 Init 206
    // LocalVar   6 added: Name flag1 Type Z At 209 27 Range 209 235 Init 209
    // LocalVar   6 chged: Name k Oname flag1 Type I At 234 2 Range 209 235 Init 209
    // LocalVar   5 chged: Name l Oname flag Type I At 247 2 Range 206 248 Init 206
    private void ldxsti(byte abyte0[])
        throws SQLException
    {
        int ai[] = new int[46];
        for(int i = 0; i < abyte0.length; i += 2)
        {
            if(abyte0[i] < 45)
            {
                byte byte0 = abyte0[i];
                if(abyte0[i] != 42 && abyte0[i] != 39 && ai[abyte0[i]] != 0)
                {
                    throw new SQLException(CoreException.getMessage((byte)7));
                }
                ai[abyte0[i]]++;
                switch(abyte0[i])
                {
                case 1: // '\001'
                case 2: // '\002'
                case 3: // '\003'
                case 5: // '\005'
                case 7: // '\007'
                case 9: // '\t'
                case 14: // '\016'
                case 15: // '\017'
                case 16: // '\020'
                case 18: // '\022'
                case 19: // '\023'
                case 20: // '\024'
                    throw new SQLException(CoreException.getMessage((byte)7));
                }
            } else
            {
                i += abyte0[i] - 45;
            }
        }

        for(int j = 0; j < ldxpmxa.length; j++)
        {
            int k = 0;
            for(int l = 0; l < ldxpmxa[j].length; l++)
            {
                k += ai[ldxpmxa[j][l]];
            }

            if(k > 1)
            {
                throw new SQLException(CoreException.getMessage((byte)7));
            }
        }

        return;
    }

    // Decompiling method: ldxsto  Signature: (Ljava/lang/String;Ljava/lang/String;)[B
    // Max stack: 5, #locals: 22, #params: 3
    // Code length: 999 bytes, Code offset: 17991
    // Line Number Table found: 134 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 999 Range 0 998 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 999 Range 0 998 Init 0
    // Parameter  2 added: Name s1 Type Ljava/lang/String; At 0 999 Range 0 998 Init 0
    // RetValue  22 added: Name <returnValue> Type [B At 0 999 Range 0 998 Init 0 fixed
    // LocalVar   3 added: Name flag Type Z At 1 972 Range 1 972 Init 1
    // LocalVar   4 added: Name flag1 Type Z At 3 977 Range 3 979 Init 3
    // LocalVar   6 added: Name flag2 Type Z At 6 961 Range 6 966 Init 6
    // LocalVar   7 added: Name abyte0 Type [B At 13 973 Range 13 985 Init 13
    // LocalVar   8 added: Name byte0 Type B At 17 2 Range 17 18 Init 17
    // LocalVar   9 added: Name flag3 Type Z At 20 378 Range 20 397 Init 20
    // LocalVar  10 added: Name flag4 Type Z At 23 2 Range 23 24 Init 23
    // LocalVar  11 added: Name ac Type [C At 30 375 Range 30 404 Init 30
    // LocalVar  12 added: Name flag5 Type Z At 33 2 Range 33 34 Init 33
    // LocalVar  15 added: Name flag6 Type Z At 36 2 Range 36 37 Init 36
    // LocalVar   5 added: Name i Type I At 59 916 Range 59 974 Init 59
    // LocalVar   3 chged: Name j Oname flag Type I At 972 1 Range 1 972 Init 1
    // LocalVar   4 chged: Name k Oname flag1 Type I At 978 2 Range 3 979 Init 3
    // LocalVar  19 added: Name abyte1 Type [B At 982 16 Range 982 997 Init 982
    // LocalVar   8 added: Name byte1 Type B At 66 884 Range 66 949 Init 66
    // LocalVar  10 added: Name flag Type Z At 69 104 Range 69 172 Init 69
    // LocalVar  12 added: Name flag1 Type Z At 94 314 Range 94 407 Init 94
    // LocalVar  12 chged: Name l Oname flag1 Type I At 202 2 Range 94 407 Init 94
    // LocalVar  20 added: Name flag1 Type Z At 239 119 Range 239 357 Init 239
    // LocalVar  16 added: Name i1 Type I At 243 19 Range 243 261 Init 243
    // LocalVar  19 added: Name flag7 Type Z At 246 106 Range 246 351 Init 246
    // LocalVar  20 chged: Name j1 Oname flag1 Type I At 267 2 Range 239 357 Init 239
    // LocalVar  19 chged: Name k1 Oname flag7 Type I At 285 2 Range 246 351 Init 246
    // LocalVar  21 added: Name abyte2 Type [B At 314 19 Range 314 332 Init 314
    // LocalVar  10 chged: Name l1 Oname flag Type I At 117 243 Range 69 359 Init 69
    // LocalVar   9 chged: Name byte2 Oname flag3 Type B At 366 32 Range 20 397 Init 20
    // LocalVar  19 added: Name abyte3 Type [B At 414 19 Range 414 432 Init 414
    // LocalVar  14 added: Name c Type C At 472 140 Range 472 611 Init 472
    // LocalVar  16 added: Name i2 Type I At 479 38 Range 479 516 Init 479
    // LocalVar  15 added: Name j2 Type I At 518 105 Range 518 622 Init 518
    // LocalVar  16 added: Name byte3 Type B At 522 110 Range 522 631 Init 522
    // LocalVar  15 added: Name byte4 Type B At 632 116 Range 632 747 Init 632
    // LocalVar  14 added: Name c1 Type C At 705 4 Range 705 708 Init 705
    // LocalVar   6 chged: Name byte5 Oname flag2 Type B At 749 218 Range 6 966 Init 6
    // LocalVar  15 added: Name flag Type Z At 764 86 Range 764 849 Init 764
    // LocalVar  17 added: Name byte6 Type B At 767 92 Range 767 858 Init 767
    // LocalVar  15 chged: Name k2 Oname flag Type I At 848 2 Range 764 849 Init 764
    // LocalVar  15 added: Name byte7 Type B At 859 34 Range 859 892 Init 859
    // LocalVar   6 chged: Name l2 Oname byte5 Type I At 927 2 Range 6 966 Init 6
    // LocalVar  19 added: Name i3 Type I At 534 59 Range 534 592 Init 534
    // LocalVar  17 added: Name flag Type Z At 537 54 Range 537 590 Init 537
    // LocalVar  18 added: Name j3 Type I At 540 44 Range 540 583 Init 540
    // LocalVar  17 chged: Name k3 Oname flag Type I At 575 2 Range 537 590 Init 537
    // LocalVar  16 chged: Name l3 Oname byte3 Type I At 598 34 Range 522 631 Init 522
    // LocalVar  15 chged: Name i4 Oname byte4 Type I At 632 116 Range 632 747 Init 632
    // LocalVar  19 added: Name j4 Type I At 779 59 Range 779 837 Init 779
    // LocalVar  16 added: Name flag Type Z At 782 54 Range 782 835 Init 782
    // LocalVar  18 added: Name k4 Type I At 785 44 Range 785 828 Init 785
    // LocalVar  16 chged: Name l4 Oname flag Type I At 820 2 Range 782 835 Init 782
    // LocalVar  17 chged: Name i5 Oname byte6 Type I At 843 16 Range 767 858 Init 767
    // LocalVar  15 chged: Name j5 Oname byte7 Type I At 859 34 Range 859 892 Init 859
    // LocalVar  13 hasn't been used
    // LocalVar  15 name i4(I) merged out into j2(I)
    // LocalVar  15 name j5(I) merged out into k2(I)
    // LocalVar  16 name l3(I) merged out into i2(I)
    public byte[] ldxsto(String s, String s1)
        throws SQLException
    {
        int i = 0;
        int j = 0;
        int l = 0;
        byte abyte0[] = new byte[512];
        byte byte0 = 16;
        byte byte2 = 0;
        boolean flag = false;
        char ac[] = new char[256];
        boolean flag1 = false;
        boolean flag2 = false;
        if(s == null || s.compareTo("") == 0)
        {
            return NULLFMT;
        }
        for(int k = s.length(); i < k;)
        {
            byte byte1 = 16;
            int i1 = 0;
            do
            {
                if(i < k && s.charAt(i) == '|')
                {
                    i++;
                    break;
                }
                int j1 = 0;
                while(i < k && !Character.isLetterOrDigit(s.charAt(i))) 
                {
                    if(s.charAt(i) == '"')
                    {
                        byte2 = 1;
                        while(i != k && s.charAt(++i) != '"') 
                        {
                            ac[i1++] = s.charAt(i);
                            j1++;
                        }
                        if(s.charAt(i) == '"')
                        {
                            i++;
                        }
                    } else
                    {
                        ac[i1++] = s.charAt(i++);
                        j1++;
                    }
                }
                if(j1 > 0)
                {
                    if(j1 > 210)
                    {
                        throw new SQLException(CoreException.getMessage((byte)7));
                    }
                    if(Character.isWhitespace(ac[0]))
                    {
                        int k4 = 0;
                        int i2 = j1;
                        int l3 = 0;
                        for(; i2 > 0 && Character.isWhitespace(ac[k4]); i2--)
                        {
                            k4++;
                            l3++;
                        }

                        abyte0[j++] = (byte)(45 + l3);
                        abyte0[j++] = 2;
                        byte abyte3[] = (new String(ac, 0, l3)).getBytes();
                        System.arraycopy(abyte3, 0, abyte0, j, abyte3.length);
                        j += abyte3.length;
                        j1 -= l3;
                        if(j1 == 0)
                        {
                            continue;
                        }
                        i += l3 + 1;
                        i1 = k4;
                    } else
                    {
                        i1 = 0;
                    }
                    if(byte2 != 1)
                    {
                        byte2 = 4;
                    }
                    abyte0[j++] = (byte)(45 + j1);
                    abyte0[j++] = byte2;
                    byte abyte1[] = (new String(ac, 0, j1)).getBytes();
                    System.arraycopy(abyte1, 0, abyte0, j, abyte1.length);
                    j += abyte1.length;
                } else
                {
                    if(!Character.isLetterOrDigit(s.charAt(i)))
                    {
                        throw new SQLException(CoreException.getMessage((byte)7));
                    }
                    char c = Character.toUpperCase(s.charAt(i));
                    int j2 = c - 65;
                    if(j2 > 25 || ldxfdi[j2] == 0x80000000)
                    {
                        throw new SQLException(CoreException.getMessage((byte)7));
                    }
                    int k1 = ldxfdi[j2];
                    j2 = 50;
                    for(; k1 < ldxfda.length; k1++)
                    {
                        int i4 = ldxfda[k1].length;
                        int l2 = 0;
                        for(int j3 = i; l2 < i4 && j3 < k; j3++)
                        {
                            if(Character.toUpperCase(s.charAt(j3)) != ldxfda[k1][l2])
                            {
                                break;
                            }
                            l2++;
                        }

                        if(l2 == i4)
                        {
                            j2 = k1;
                        }
                        if(ldxfda[k1 + 1][0] != c)
                        {
                            break;
                        }
                    }

                    k1 = j2;
                    if(k1 >= ldxfda.length)
                    {
                        throw new SQLException(CoreException.getMessage((byte)7));
                    }
                    if(k - i > 1 && Character.isUpperCase(s.charAt(i)))
                    {
                        char c1 = Character.isLetterOrDigit(s.charAt(i + 1)) ? s.charAt(i + 1) : s.charAt(i + 2);
                        if(Character.isLowerCase(c1))
                        {
                            byte1 |= 0x4;
                        } else
                        {
                            byte1 |= 0x8;
                        }
                    }
                    i += ldxfda[k1].length;
                    l = ldxfdc[k1];
                    if((ldxfcdlen[l] & 0xffffff80) == 0)
                    {
                        int l1 = 0;
                        int i3 = -1;
                        for(; l1 < ldxfdx.length; l1++)
                        {
                            int j4 = ldxfdx[l1].length;
                            int k2 = 0;
                            for(int k3 = i; k2 < j4 && k3 < k; k3++)
                            {
                                if(Character.toUpperCase(s.charAt(k3)) != ldxfdx[l1][k2])
                                {
                                    break;
                                }
                                k2++;
                            }

                            if(k2 == j4)
                            {
                                i3 = l1;
                            }
                        }

                        l1 = i3;
                        if(l1 >= 0 && l1 < ldxfdx.length)
                        {
                            byte1 |= ldxfdxc[l1];
                            i += ldxfdx[l1].length;
                        }
                    }
                    if(512 - j < 2)
                    {
                        throw new SQLException(CoreException.getMessage((byte)7));
                    }
                    abyte0[j++] = (byte)l;
                    abyte0[j++] = byte1;
                }
                if(l == 39)
                {
                    byte1 = (byte1 & 0x10) != 1 ? 16 : 0;
                }
            } while(l == 39);
        }

        byte abyte2[] = new byte[j];
        System.arraycopy(abyte0, 0, abyte2, 0, abyte2.length);
        return abyte2;
    }

    // Decompiling method: ldxsub  Signature: ([B[B[I[I)V
    // Max stack: 3, #locals: 5, #params: 5
    // Code length: 12 bytes, Code offset: 19570
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // Parameter  2 added: Name abyte1 Type [B At 0 12 Range 0 11 Init 0
    // Parameter  3 added: Name ai Type [I At 0 12 Range 0 11 Init 0
    // Parameter  4 added: Name ai1 Type [I At 0 12 Range 0 11 Init 0
    // RetValue   5 added: Name <returnValue> Type V At 0 12 Range 0 11 Init 0 fixed
    public void ldxsub(byte abyte0[], byte abyte1[], int ai[], int ai1[])
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: ldxtrn  Signature: ([BLjava/lang/String;)[B
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 12 bytes, Code offset: 19638
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 12 Range 0 11 Init 0
    // Parameter  2 added: Name s Type Ljava/lang/String; At 0 12 Range 0 11 Init 0
    // RetValue   3 added: Name <returnValue> Type [B At 0 12 Range 0 11 Init 0 fixed
    public byte[] ldxtrn(byte abyte0[], String s)
        throws SQLException
    {
        throw new SQLException(CoreException.getMessage((byte)1));
    }

    // Decompiling method: lxi42b  Signature: (IJIZLjava/util/Locale;)Ljava/lang/String;
    // Max stack: 4, #locals: 17, #params: 7
    // Code length: 248 bytes, Code offset: 19706
    // Line Number Table found: 30 entries
    // Parameter  0 added: Name this Type Loracle/sql/LdxLibThin; At 0 248 Range 0 247 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 248 Range 0 247 Init 0
    // Parameter  2 added: Name l Type J At 0 248 Range 0 247 Init 0
    // Parameter  4 added: Name j Type I At 0 248 Range 0 247 Init 0
    // Parameter  5 added: Name flag Type Z At 0 248 Range 0 247 Init 0
    // Parameter  6 added: Name locale Type Ljava/util/Locale; At 0 248 Range 0 247 Init 0
    // RetValue  17 added: Name <returnValue> Type Ljava/lang/String; At 0 248 Range 0 247 Init 0 fixed
    // LocalVar   7 added: Name flag1 Type Z At 1 199 Range 1 199 Init 1
    // LocalVar   8 added: Name flag2 Type Z At 4 2 Range 4 5 Init 4
    // LocalVar   9 added: Name l1 Type J At 7 56 Range 7 62 Init 7
    // LocalVar  11 added: Name numberformat Type Ljava/text/NumberFormat; At 14 94 Range 14 107 Init 14
    // LocalVar  12 added: Name decimalformat Type Ljava/text/DecimalFormat; At 21 146 Range 21 166 Init 21
    // LocalVar  13 added: Name stringbuffer Type Ljava/lang/StringBuffer; At 30 214 Range 30 243 Init 30
    // LocalVar  14 added: Name k Type I At 37 165 Range 37 201 Init 37
    // LocalVar  15 added: Name flag3 Type Z At 40 175 Range 40 214 Init 40
    // LocalVar  16 added: Name c Type C At 50 180 Range 50 229 Init 50
    // LocalVar   8 added: Name flag4 Type Z At 53 131 Range 53 183 Init 53
    // LocalVar   8 chged: Name i1 Oname flag4 Type I At 81 3 Range 53 183 Init 53
    // LocalVar  15 chged: Name c1 Oname flag3 Type C At 173 42 Range 40 214 Init 40
    // LocalVar   7 chged: Name j1 Oname flag1 Type I At 197 3 Range 1 199 Init 1
    // LocalVar   8 chged: Name k1 Oname flag2 Type I At 4 2 Range 4 5 Init 4
    // LocalVar   8 name i1(I) merged out into k1(I)
    private String lxi42b(int i, long l, int j, boolean flag, Locale locale)
        throws SQLException
    {
        int k = 0;
        int i1 = 0;
        long l1 = l;
        NumberFormat numberformat = NumberFormat.getInstance(locale);
        DecimalFormat decimalformat = (DecimalFormat)numberformat;
        StringBuffer stringbuffer = new StringBuffer();
        int j1 = decimalformat.getGroupingSize();
        char c = '\0';
        char c1 = decimalformat.getDecimalFormatSymbols().getZeroDigit();
        for(i1 = 1; (l1 /= 10L) != 0L; i1++) { }
        if(l < 0L)
        {
            i1++;
        }
        if(flag)
        {
            i1 += (i1 - 1) / j1;
        }
        if(!flag)
        {
            numberformat.setGroupingUsed(false);
        }
        stringbuffer.append(decimalformat.format(l));
        if(i1 > i || j > i || j != 0 && i1 > j)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        }
        if(flag)
        {
            c = decimalformat.getDecimalFormatSymbols().getGroupingSeparator();
        }
        if(j != 0)
        {
            for(j -= i1; j-- != 0;)
            {
                if(flag && k++ == j1 && j != 0)
                {
                    stringbuffer.insert(0, c);
                    k = 1;
                    j--;
                }
                stringbuffer.insert(0, c1);
            }

        }
        return stringbuffer.toString();
    }

    // Decompiling method: <clinit>  Signature: ()V
    // Max stack: 7, #locals: 0, #params: 0
    // Code length: 2028 bytes, Code offset: 6492
    // Line Number Table found: 433 entries
    // RetValue   0 added: Name <returnValue> Type V At 0 2028 Range 0 2027 Init 0 fixed
    static 
    {
        /* ldxfda = (new char[][] {
            new char[] {
                'A', '.', 'D', '.'
            }, new char[] {
                'A', '.', 'M', '.'
            }, new char[] {
                'A', 'D'
            }, new char[] {
                'A', 'M'
            }, new char[] {
                'B', '.', 'C', '.'
            }, new char[] {
                'B', 'C'
            }, new char[] {
                'C', 'C'
            }, new char[] {
                'D'
            }, new char[] {
                'D', 'A', 'Y'
            }, new char[] {
                'D', 'D'
            }, new char[] {
                'D', 'D', 'D'
            }, new char[] {
                'D', 'Y'
            }, new char[] {
                'E'
            }, new char[] {
                'E', 'E'
            }, new char[] {
                'F', 'M'
            }, new char[] {
                'F', 'X'
            }, new char[] {
                'H', 'H'
            }, new char[] {
                'H', 'H', '1', '2'
            }, new char[] {
                'H', 'H', '2', '4'
            }, new char[] {
                'I'
            }, new char[] {
                'I', 'W'
            }, new char[] {
                'I', 'Y'
            }, new char[] {
                'I', 'Y', 'Y'
            }, new char[] {
                'I', 'Y', 'Y', 'Y'
            }, new char[] {
                'J'
            }, new char[] {
                'M', 'I'
            }, new char[] {
                'M', 'M'
            }, new char[] {
                'M', 'O', 'N'
            }, new char[] {
                'M', 'O', 'N', 'T', 'H'
            }, new char[] {
                'P', '.', 'M', '.'
            }, new char[] {
                'P', 'M'
            }, new char[] {
                'Q'
            }, new char[] {
                'R', 'M'
            }, new char[] {
                'R', 'R'
            }, new char[] {
                'R', 'R', 'R', 'R'
            }, new char[] {
                'S', 'C', 'C'
            }, new char[] {
                'S', 'S'
            }, new char[] {
                'S', 'S', 'S', 'S', 'S'
            }, new char[] {
                'S', 'Y', ',', 'Y', 'Y', 'Y'
            }, new char[] {
                'S', 'Y', 'E', 'A', 'R'
            }, new char[] {
                'S', 'Y', 'Y', 'Y', 'Y'
            }, new char[] {
                'W'
            }, new char[] {
                'W', 'W'
            }, new char[] {
                'Y'
            }, new char[] {
                'Y', ',', 'Y', 'Y', 'Y'
            }, new char[] {
                'Y', 'E', 'A', 'R'
            }, new char[] {
                'Y', 'Y'
            }, new char[] {
                'Y', 'Y', 'Y'
            }, new char[] {
                'Y', 'Y', 'Y', 'Y'
            }, new char[1]
        }); */
        /* ldxfdc = (new byte[] {
            37, 35, 36, 34, 37, 36, 1, 21, 32, 22, 
            23, 33, 43, 44, 39, 42, 25, 25, 24, 3, 
            18, 5, 7, 9, 29, 26, 17, 31, 30, 35, 
            34, 16, 38, 40, 41, 2, 27, 28, 13, 15, 
            12, 20, 19, 4, 11, 14, 6, 8, 10, 0
        }); */
        /* ldxfcdlen = (new byte[] {
            0, 2, 35, 1, 1, 2, 2, 3, 3, 4, 
            4, 21, 37, 54, -60, -27, 1, 2, 2, 2, 
            1, 1, 2, 3, 2, 2, 2, 2, 5, 7, 
            -128, -128, -128, -128, -62, -60, -62, -60, -124, 0, 
            2, 4, 0, -113, -98, -128, -128
        }); */
        /* ldxfdi = (new int[] {
            0, 4, 6, 7, 12, 14, 0x80000000, 16, 19, 24, 
            0x80000000, 0x80000000, 25, 0x80000000, 0x80000000, 29, 31, 32, 35, 0x80000000, 
            0x80000000, 0x80000000, 41, 0x80000000, 43, 0x80000000
        }); */
        /* ldxfdx = (new char[][] {
            new char[] {
                'S', 'P'
            }, new char[] {
                'S', 'P', 'T', 'H'
            }, new char[] {
                'T', 'H'
            }, new char[] {
                'T', 'H', 'S', 'P'
            }, new char[1]
        }); */
        /* ldxfdxc = (new byte[] {
            2, 3, 1, 3, 0
        }); */
        /* NULLFMT = (new byte[] {
            0, 16
        }); */
        /* DEFAULT_FORMAT = (new byte[] {
            22, 24, 46, 4, 47, 31, 24, 46, 4, 47, 
            10, 24
        }); */
        /* ldxpaa = (new String[] {
            "A.D.", "A.M.", "B.C.", "P.M."
        }); */
        /* ldxdom = (new int[] {
            0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 
            273, 304, 334, 365
        }); */
    }
}
