// 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:   NUMBER.java
// Class Version:      45.3

package oracle.sql;

import java.io.PrintStream;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.SQLException;
import oracle.core.lmx.CoreException;

// Referenced classes of package oracle.sql:
//            Datum, LnxLib, LnxLibServer, LnxLibThin

// flag ACC_SUPER is set
public class NUMBER extends Datum
{
    // Constants:          749
    // Interfaces:         0
    // Fields:             41
    // Methods:            114
    // Class Attributes:   1


    static byte MAX_LONG[] = toBytes(0x7fffffffffffffffL);
    static byte MIN_LONG[] = toBytes(0x8000000000000000L);
    private static final int CHARACTER_ZERO = 48;
    private static final BigDecimal BIGDEC_NEGZERO = new BigDecimal("-0");
    private static final BigDecimal BIGDEC_ZERO = BigDecimal.valueOf(0L);
    private static final BigDecimal BIGDEC_ONE = BigDecimal.valueOf(1L);
    private static final BigInteger BIGINT_ZERO = BigInteger.valueOf(0L);
    private static final BigInteger BIGINT_HUND = BigInteger.valueOf(100L);
    private static final byte DIGEND = 21;
    private static final byte ODIGEND = 9;
    private static final int HUNDIGMAX = 66;
    private static final int BIGINTARRAYMAX = 54;
    private static final double BIGRATIO = 0.1505149978319906D;
    private static final int BIGLENMAX = 22;
    static final byte LNXM_NUM = 22;
    static final int LNXSGNBT = 128;
    static final byte LNXDIGS = 20;
    static final byte LNXEXPBS = 64;
    static final double ORANUM_FBASE = 100D;
    static final int LNXBASE = 100;
    static final byte IEEE_DBL_DIG = 15;
    private static final byte IEEE_FLT_DIG = 6;
    static final int LNXEXPMX = 127;
    static final int LNXEXPMN = 0;
    static final int LNXMXOUT = 40;
    static final int LNXMXFMT = 64;
    private static final byte BYTE_MAX_VALUE = 127;
    private static final byte BYTE_MIN_VALUE = -128;
    private static final short SHORT_MAX_VALUE = 32767;
    private static final short SHORT_MIN_VALUE = -32768;
    private static final byte PI[] = {
        -63, 4, 15, 16, 93, 66, 36, 90, 80, 33, 
        39, 47, 27, 44, 39, 33, 80, 51, 29, 85, 
        21
    };
    private static final byte E[] = {
        -63, 3, 72, 83, 82, 83, 85, 60, 5, 53, 
        36, 37, 3, 88, 48, 14, 53, 67, 25, 98, 
        77
    };
    private static final byte LN10[] = {
        -63, 3, 31, 26, 86, 10, 30, 95, 5, 57, 
        85, 2, 80, 92, 46, 47, 85, 37, 43, 8, 
        61
    };
    private static LnxLib _slnxlib;
    private static int INT_MAX = 15;
    private static float FLOAT_MAX_INT = 2.147484E+09F;
    private static float FLOAT_MIN_INT = -2.147484E+09F;
    private static double DOUBLE_MAX_INT = 2147483647D;
    private static double DOUBLE_MIN_INT = -2147483648D;
    private static double DOUBLE_MAX_INT_2 = 2147483649D;
    private static double DOUBLE_MIN_INT_2 = -2147483649D;

    // Decompiling method: <init>  Signature: ()V
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 8357
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type V At 0 8 Range 0 7 Init 0 fixed
    public NUMBER()
    {
        super(_makeZero());
        return;
    }

    // Decompiling method: <init>  Signature: (B)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 9 bytes, Code offset: 8407
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 9 Range 0 8 Init 0 fixed
    // Parameter  1 added: Name byte0 Type B At 0 9 Range 0 8 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public NUMBER(byte byte0)
    {
        super(toBytes(byte0));
        return;
    }

    // Decompiling method: <init>  Signature: (D)V
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 9 bytes, Code offset: 8458
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 9 Range 0 8 Init 0 fixed
    // Parameter  1 added: Name d Type D At 0 9 Range 0 8 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public NUMBER(double d)
        throws SQLException
    {
        super(toBytes(d));
        return;
    }

    // Decompiling method: <init>  Signature: (F)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 9 bytes, Code offset: 8519
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 9 Range 0 8 Init 0 fixed
    // Parameter  1 added: Name f Type F At 0 9 Range 0 8 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public NUMBER(float f)
    {
        super(toBytes(f));
        return;
    }

    // Decompiling method: <init>  Signature: (I)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 9 bytes, Code offset: 8570
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 9 Range 0 8 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 9 Range 0 8 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public NUMBER(int i)
    {
        super(toBytes(i));
        return;
    }

    // Decompiling method: <init>  Signature: (J)V
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 9 bytes, Code offset: 8621
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 9 Range 0 8 Init 0 fixed
    // Parameter  1 added: Name l Type J At 0 9 Range 0 8 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public NUMBER(long l)
    {
        super(toBytes(l));
        return;
    }

    // Decompiling method: <init>  Signature: (Ljava/lang/Object;)V
    // Max stack: 3, #locals: 2, #params: 2
    // Code length: 199 bytes, Code offset: 8672
    // Line Number Table found: 27 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 199 Range 0 198 Init 0 fixed
    // Parameter  1 added: Name obj Type Ljava/lang/Object; At 0 199 Range 0 198 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 199 Range 0 198 Init 0 fixed
    public NUMBER(Object obj)
        throws SQLException
    {
        super();
        if(obj instanceof Integer)
        {
            setShareBytes(toBytes(((Integer)obj).intValue()));
        } else
        if(obj instanceof Long)
        {
            setShareBytes(toBytes(((Long)obj).longValue()));
        } else
        if(obj instanceof Float)
        {
            setShareBytes(toBytes(((Float)obj).floatValue()));
        } else
        if(obj instanceof Double)
        {
            setShareBytes(toBytes(((Double)obj).doubleValue()));
        } else
        if(obj instanceof BigInteger)
        {
            setShareBytes(toBytes((BigInteger)obj));
        } else
        if(obj instanceof BigDecimal)
        {
            setShareBytes(toBytes((BigDecimal)obj));
        } else
        if(obj instanceof Boolean)
        {
            setShareBytes(toBytes(((Boolean)obj).booleanValue()));
        } else
        if(obj instanceof String)
        {
            setShareBytes(stringToBytes((String)obj));
        } else
        {
            throw new SQLException("Initialization failed");
        }
        return;
    }

    // Decompiling method: <init>  Signature: (Ljava/lang/String;I)V
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 10 bytes, Code offset: 9023
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 10 Range 0 9 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 10 Range 0 9 Init 0
    // Parameter  2 added: Name i Type I At 0 10 Range 0 9 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 10 Range 0 9 Init 0 fixed
    public NUMBER(String s, int i)
        throws SQLException
    {
        super(toBytes(s, i));
        return;
    }

    // Decompiling method: <init>  Signature: (Ljava/math/BigDecimal;)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 9 bytes, Code offset: 9085
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 9 Range 0 8 Init 0 fixed
    // Parameter  1 added: Name bigdecimal Type Ljava/math/BigDecimal; At 0 9 Range 0 8 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public NUMBER(BigDecimal bigdecimal)
        throws SQLException
    {
        super(toBytes(bigdecimal));
        return;
    }

    // Decompiling method: <init>  Signature: (Ljava/math/BigInteger;)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 9 bytes, Code offset: 9146
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 9 Range 0 8 Init 0 fixed
    // Parameter  1 added: Name biginteger Type Ljava/math/BigInteger; At 0 9 Range 0 8 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public NUMBER(BigInteger biginteger)
        throws SQLException
    {
        super(toBytes(biginteger));
        return;
    }

    // Decompiling method: <init>  Signature: (S)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 9 bytes, Code offset: 9207
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 9 Range 0 8 Init 0 fixed
    // Parameter  1 added: Name word0 Type S At 0 9 Range 0 8 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public NUMBER(short word0)
    {
        super(toBytes(word0));
        return;
    }

    // Decompiling method: <init>  Signature: (Z)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 9 bytes, Code offset: 9258
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 9 Range 0 8 Init 0 fixed
    // Parameter  1 added: Name flag Type Z At 0 9 Range 0 8 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public NUMBER(boolean flag)
    {
        super(toBytes(flag));
        return;
    }

    // Decompiling method: <init>  Signature: ([B)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 6 bytes, Code offset: 9309
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 6 Range 0 5 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 6 Range 0 5 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 6 Range 0 5 Init 0 fixed
    public NUMBER(byte abyte0[])
    {
        super(abyte0);
        return;
    }

    // Decompiling method: _byteTo2Chars  Signature: (B[CI)V
    // Max stack: 5, #locals: 3, #params: 3
    // Code length: 89 bytes, Code offset: 9357
    // Line Number Table found: 15 entries
    // Parameter  0 added: Name byte0 Type B At 0 89 Range 0 88 Init 0
    // Parameter  1 added: Name ac Type [C At 0 89 Range 0 88 Init 0
    // Parameter  2 added: Name i Type I At 0 89 Range 0 88 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 89 Range 0 88 Init 0 fixed
    private static void _byteTo2Chars(byte byte0, char ac[], int i)
    {
        if(byte0 < 0)
        {
            ac[i] = '0';
            ac[i + 1] = '0';
        } else
        if(byte0 < 10)
        {
            ac[i] = '0';
            ac[i + 1] = (char)(48 + byte0);
        } else
        if(byte0 < 100)
        {
            ac[i] = (char)(48 + byte0 / 10);
            ac[i + 1] = (char)(48 + byte0 % 10);
        } else
        {
            ac[i] = '0';
            ac[i + 1] = '0';
        }
        return;
    }

    // Decompiling method: _byteToChars  Signature: (B[CI)I
    // Max stack: 5, #locals: 3, #params: 3
    // Code length: 90 bytes, Code offset: 9540
    // Line Number Table found: 13 entries
    // Parameter  0 added: Name byte0 Type B At 0 90 Range 0 89 Init 0
    // Parameter  1 added: Name ac Type [C At 0 90 Range 0 89 Init 0
    // Parameter  2 added: Name i Type I At 0 90 Range 0 89 Init 0
    // RetValue   3 added: Name <returnValue> Type I At 0 90 Range 0 89 Init 0 fixed
    private static int _byteToChars(byte byte0, char ac[], int i)
    {
        if(byte0 < 0)
        {
            return 0;
        }
        if(byte0 < 10)
        {
            ac[i] = (char)(48 + byte0);
            return 1;
        }
        if(byte0 < 100)
        {
            ac[i] = (char)(48 + byte0 / 10);
            ac[i + 1] = (char)(48 + byte0 % 10);
            return 2;
        } else
        {
            ac[i] = '1';
            ac[i + 1] = (char)((48 + byte0 / 10) - 10);
            ac[i + 2] = (char)(48 + byte0 % 10);
            return 3;
        }
    }

    // Decompiling method: _fromLnxFmt  Signature: ([B)[B
    // Max stack: 5, #locals: 4, #params: 1
    // Code length: 126 bytes, Code offset: 9716
    // Line Number Table found: 18 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 126 Range 0 125 Init 0
    // RetValue   4 added: Name <returnValue> Type [B At 0 126 Range 0 125 Init 0 fixed
    // LocalVar   3 added: Name i Type I At 2 77 Range 2 78 Init 2
    // LocalVar   1 added: Name abyte1 Type [B At 13 112 Range 13 124 Init 13
    // LocalVar   2 added: Name flag Type Z At 29 17 Range 29 45 Init 29
    // LocalVar   2 chged: Name j Oname flag Type I At 45 1 Range 29 45 Init 29
    // LocalVar   2 added: Name flag Type Z At 101 18 Range 101 118 Init 101
    // LocalVar   2 chged: Name k Oname flag Type I At 118 1 Range 101 118 Init 101
    static byte[] _fromLnxFmt(byte abyte0[])
    {
        int k = abyte0.length;
        byte abyte1[];
        if(_isPositive(abyte0))
        {
            abyte1 = new byte[k];
            abyte1[0] = (byte)((abyte0[0] & 0xffffff7f) - 65);
            for(int i = 1; i < k; i++)
            {
                abyte1[i] = (byte)(abyte0[i] - 1);
            }

        } else
        {
            if(k - 1 == 20 && abyte0[k - 1] != 102)
            {
                abyte1 = new byte[k];
            } else
            {
                abyte1 = new byte[k - 1];
            }
            abyte1[0] = (byte)((~abyte0[0] & 0xffffff7f) - 65);
            for(int j = 1; j < abyte1.length; j++)
            {
                abyte1[j] = (byte)(101 - abyte0[j]);
            }

        }
        return abyte1;
    }

    // Decompiling method: _getLnxLib  Signature: ()Loracle/sql/LnxLib;
    // Max stack: 2, #locals: 0, #params: 0
    // Code length: 58 bytes, Code offset: 9948
    // Exception table: 1 entries
    //           start  6 end 37 handler 40 type SecurityException
    // Line Number Table found: 11 entries
    // RetValue   0 added: Name <returnValue> Type Loracle/sql/LnxLib; At 0 58 Range 0 57 Init 0 fixed
    private static LnxLib _getLnxLib()
    {
        if(_slnxlib == null)
        {
            try
            {
                if(System.getProperty("oracle.jserver.version") != null)
                {
                    _slnxlib = new LnxLibServer();
                } else
                {
                    _slnxlib = new LnxLibThin();
                }
            }
            catch(SecurityException _ex)
            {
                _slnxlib = new LnxLibThin();
            }
        }
        return _slnxlib;
    }

    // Decompiling method: _isInf  Signature: ([B)Z
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 37 bytes, Code offset: 10092
    // Line Number Table found: 6 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 37 Range 0 36 Init 0
    // RetValue   1 added: Name <returnValue> Type Z At 0 37 Range 0 36 Init 0 fixed
    static boolean _isInf(byte abyte0[])
    {
        return abyte0.length == 2 && abyte0[0] == -1 && abyte0[1] == 101 || abyte0[0] == 0 && abyte0.length == 1;
    }

    // Decompiling method: _isInt  Signature: ([B)Z
    // Max stack: 3, #locals: 4, #params: 1
    // Code length: 44 bytes, Code offset: 10187
    // Line Number Table found: 10 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 44 Range 0 43 Init 0
    // RetValue   4 added: Name <returnValue> Type Z At 0 44 Range 0 43 Init 0 fixed
    // LocalVar   1 added: Name abyte1 Type [B At 22 6 Range 22 27 Init 22
    // LocalVar   2 added: Name byte0 Type B At 26 9 Range 26 34 Init 26
    // LocalVar   3 added: Name byte1 Type B At 32 2 Range 32 33 Init 32
    private static boolean _isInt(byte abyte0[])
    {
        if(_isZero(abyte0))
        {
            return true;
        }
        if(_isInf(abyte0))
        {
            return false;
        }
        byte abyte1[] = _fromLnxFmt(abyte0);
        byte byte0 = abyte1[0];
        byte byte1 = (byte)(abyte1.length - 1);
        return byte1 <= byte0 + 1;
    }

    // Decompiling method: _isNegInf  Signature: ([B)Z
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 16 bytes, Code offset: 10305
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 16 Range 0 15 Init 0
    // RetValue   1 added: Name <returnValue> Type Z At 0 16 Range 0 15 Init 0 fixed
    static boolean _isNegInf(byte abyte0[])
    {
        return abyte0[0] == 0 && abyte0.length == 1;
    }

    // Decompiling method: _isPosInf  Signature: ([B)Z
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 25 bytes, Code offset: 10367
    // Line Number Table found: 5 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 25 Range 0 24 Init 0
    // RetValue   1 added: Name <returnValue> Type Z At 0 25 Range 0 24 Init 0 fixed
    static boolean _isPosInf(byte abyte0[])
    {
        return abyte0.length == 2 && abyte0[0] == -1 && abyte0[1] == 101;
    }

    // Decompiling method: _isPositive  Signature: ([B)Z
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 13 bytes, Code offset: 10446
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 13 Range 0 12 Init 0
    // RetValue   1 added: Name <returnValue> Type Z At 0 13 Range 0 12 Init 0 fixed
    static boolean _isPositive(byte abyte0[])
    {
        return (abyte0[0] & 0xffffff80) != 0;
    }

    // Decompiling method: _isZero  Signature: ([B)Z
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 18 bytes, Code offset: 10505
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 18 Range 0 17 Init 0
    // RetValue   1 added: Name <returnValue> Type Z At 0 18 Range 0 17 Init 0 fixed
    static boolean _isZero(byte abyte0[])
    {
        return abyte0[0] == -128 && abyte0.length == 1;
    }

    // Decompiling method: _makeNegInf  Signature: ()[B
    // Max stack: 3, #locals: 1, #params: 0
    // Code length: 10 bytes, Code offset: 10569
    // Line Number Table found: 3 entries
    // RetValue   1 added: Name <returnValue> Type [B At 0 10 Range 0 9 Init 0 fixed
    // LocalVar   0 added: Name abyte0 Type [B At 3 6 Range 3 8 Init 3
    static byte[] _makeNegInf()
    {
        byte abyte0[] = new byte[1];
        abyte0[0] = 0;
        return abyte0;
    }

    // Decompiling method: _makePosInf  Signature: ()[B
    // Max stack: 3, #locals: 1, #params: 0
    // Code length: 15 bytes, Code offset: 10625
    // Line Number Table found: 4 entries
    // RetValue   1 added: Name <returnValue> Type [B At 0 15 Range 0 14 Init 0 fixed
    // LocalVar   0 added: Name abyte0 Type [B At 3 11 Range 3 13 Init 3
    static byte[] _makePosInf()
    {
        byte abyte0[] = new byte[2];
        abyte0[0] = -1;
        abyte0[1] = 101;
        return abyte0;
    }

    // Decompiling method: _makeZero  Signature: ()[B
    // Max stack: 3, #locals: 1, #params: 0
    // Code length: 11 bytes, Code offset: 10690
    // Line Number Table found: 3 entries
    // RetValue   1 added: Name <returnValue> Type [B At 0 11 Range 0 10 Init 0 fixed
    // LocalVar   0 added: Name abyte0 Type [B At 3 7 Range 3 9 Init 3
    static byte[] _makeZero()
    {
        byte abyte0[] = new byte[1];
        abyte0[0] = -128;
        return abyte0;
    }

    // Decompiling method: _printBytes  Signature: ([B)V
    // Max stack: 5, #locals: 3, #params: 1
    // Code length: 75 bytes, Code offset: 10747
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 75 Range 0 74 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 75 Range 0 74 Init 0 fixed
    // LocalVar   1 added: Name i Type I At 2 63 Range 2 64 Init 2
    // LocalVar   2 added: Name flag Type Z At 29 35 Range 29 63 Init 29
    // LocalVar   2 chged: Name j Oname flag Type I At 63 1 Range 29 63 Init 29
    private static void _printBytes(byte abyte0[])
    {
        int i = abyte0.length;
        System.out.print(i + ": ");
        for(int j = 0; j < i; j++)
        {
            System.out.print(abyte0[j] + " ");
        }

        System.out.println();
        return;
    }

    // Decompiling method: _toLnxFmt  Signature: ([BZ)[B
    // Max stack: 5, #locals: 5, #params: 2
    // Code length: 134 bytes, Code offset: 10884
    // Line Number Table found: 19 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 134 Range 0 133 Init 0
    // Parameter  1 added: Name flag Type Z At 0 134 Range 0 133 Init 0
    // RetValue   5 added: Name <returnValue> Type [B At 0 134 Range 0 133 Init 0 fixed
    // LocalVar   4 added: Name i Type I At 2 116 Range 2 117 Init 2
    // LocalVar   2 added: Name abyte1 Type [B At 12 121 Range 12 132 Init 12
    // LocalVar   3 added: Name flag1 Type Z At 30 17 Range 30 46 Init 30
    // LocalVar   3 chged: Name j Oname flag1 Type I At 46 1 Range 30 46 Init 30
    // LocalVar   3 added: Name flag1 Type Z At 98 31 Range 98 128 Init 98
    // LocalVar   3 chged: Name k Oname flag1 Type I At 115 1 Range 98 128 Init 98
    static byte[] _toLnxFmt(byte abyte0[], boolean flag)
    {
        int k = abyte0.length;
        byte abyte1[];
        if(flag)
        {
            abyte1 = new byte[k];
            abyte1[0] = (byte)(abyte0[0] + 128 + 64 + 1);
            for(int i = 1; i < k; i++)
            {
                abyte1[i] = (byte)(abyte0[i] + 1);
            }

        } else
        {
            if(k - 1 < 20)
            {
                abyte1 = new byte[k + 1];
            } else
            {
                abyte1 = new byte[k];
            }
            abyte1[0] = (byte)(~(abyte0[0] + 128 + 64 + 1));
            int j;
            for(j = 1; j < k; j++)
            {
                abyte1[j] = (byte)(101 - abyte0[j]);
            }

            if(j <= 20)
            {
                abyte1[j] = 102;
            }
        }
        return abyte1;
    }

    // Decompiling method: abs  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 11128
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER abs()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxabs(shareBytes()));
    }

    // Decompiling method: acos  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 11196
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER acos()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxacos(shareBytes()));
    }

    // Decompiling method: add  Signature: (Loracle/sql/NUMBER;)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 24 bytes, Code offset: 11264
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    // Parameter  1 added: Name number Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    public NUMBER add(NUMBER number)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxadd(shareBytes(), number.shareBytes()));
    }

    // Decompiling method: asin  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 11336
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER asin()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxasin(shareBytes()));
    }

    // Decompiling method: atan  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 11404
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER atan()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxatan(shareBytes()));
    }

    // Decompiling method: atan2  Signature: (Loracle/sql/NUMBER;)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 24 bytes, Code offset: 11472
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    // Parameter  1 added: Name number Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    public NUMBER atan2(NUMBER number)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxatan2(shareBytes(), number.shareBytes()));
    }

    // Decompiling method: bigDecimalValue  Signature: ()Ljava/math/BigDecimal;
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 11552
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/math/BigDecimal; At 0 8 Range 0 7 Init 0 fixed
    public BigDecimal bigDecimalValue()
        throws SQLException
    {
        return toBigDecimal(shareBytes());
    }

    // Decompiling method: bigIntegerValue  Signature: ()Ljava/math/BigInteger;
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 11608
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/math/BigInteger; At 0 8 Range 0 7 Init 0 fixed
    public BigInteger bigIntegerValue()
        throws SQLException
    {
        return toBigInteger(shareBytes());
    }

    // Decompiling method: booleanValue  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 11664
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 8 Range 0 7 Init 0 fixed
    public boolean booleanValue()
    {
        return toBoolean(shareBytes());
    }

    // Decompiling method: byteValue  Signature: ()B
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 11710
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type B At 0 8 Range 0 7 Init 0 fixed
    public byte byteValue()
        throws SQLException
    {
        return toByte(shareBytes());
    }

    // Decompiling method: ceil  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 11766
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER ceil()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxceil(shareBytes()));
    }

    // Decompiling method: compareTo  Signature: (Loracle/sql/NUMBER;)I
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 12 bytes, Code offset: 11834
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 12 Range 0 11 Init 0 fixed
    // Parameter  1 added: Name number Type Loracle/sql/NUMBER; 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 compareTo(NUMBER number)
    {
        return Datum.compareBytes(shareBytes(), number.shareBytes());
    }

    // Decompiling method: cos  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 11884
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER cos()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxcos(shareBytes()));
    }

    // Decompiling method: cosh  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 11952
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER cosh()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxcsh(shareBytes()));
    }

    // Decompiling method: decrement  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 12020
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER decrement()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxdec(shareBytes()));
    }

    // Decompiling method: div  Signature: (Loracle/sql/NUMBER;)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 24 bytes, Code offset: 12088
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    // Parameter  1 added: Name number Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    public NUMBER div(NUMBER number)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxdiv(shareBytes(), number.shareBytes()));
    }

    // Decompiling method: doubleValue  Signature: ()D
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 12160
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type D At 0 8 Range 0 7 Init 0 fixed
    public double doubleValue()
    {
        return toDouble(shareBytes());
    }

    // Decompiling method: e  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 3, #locals: 0, #params: 0
    // Code length: 11 bytes, Code offset: 12206
    // Line Number Table found: 1 entries
    // RetValue   0 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 11 Range 0 10 Init 0 fixed
    public static NUMBER e()
    {
        return new NUMBER(E);
    }

    // Decompiling method: exp  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 12255
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER exp()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxexp(shareBytes()));
    }

    // Decompiling method: floatValue  Signature: ()F
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 12323
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type F At 0 8 Range 0 7 Init 0 fixed
    public float floatValue()
    {
        return toFloat(shareBytes());
    }

    // Decompiling method: floatingPointRound  Signature: (I)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 21 bytes, Code offset: 12369
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 21 Range 0 20 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    public NUMBER floatingPointRound(int i)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxfpr(shareBytes(), i));
    }

    // Decompiling method: floor  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 12438
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER floor()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxflo(shareBytes()));
    }

    // Decompiling method: formattedTextToNumber  Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Loracle/sql/NUMBER;
    // Max stack: 6, #locals: 3, #params: 3
    // Code length: 19 bytes, Code offset: 12506
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 19 Range 0 18 Init 0
    // Parameter  1 added: Name s1 Type Ljava/lang/String; At 0 19 Range 0 18 Init 0
    // Parameter  2 added: Name s2 Type Ljava/lang/String; At 0 19 Range 0 18 Init 0
    // RetValue   3 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 19 Range 0 18 Init 0 fixed
    public static NUMBER formattedTextToNumber(String s, String s1, String s2)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxfcn(s, s1, s2));
    }

    // Decompiling method: increment  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 12573
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER increment()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxinc(shareBytes()));
    }

    // Decompiling method: intValue  Signature: ()I
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 12641
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type I At 0 8 Range 0 7 Init 0 fixed
    public int intValue()
        throws SQLException
    {
        return toInt(shareBytes());
    }

    // Decompiling method: isConvertibleTo  Signature: (Ljava/lang/Class;)Z
    // Max stack: 2, #locals: 3, #params: 2
    // Code length: 81 bytes, Code offset: 12697
    // Line Number Table found: 11 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 81 Range 0 80 Init 0 fixed
    // Parameter  1 added: Name class1 Type Ljava/lang/Class; At 0 81 Range 0 80 Init 0
    // RetValue   3 added: Name <returnValue> Type Z At 0 81 Range 0 80 Init 0 fixed
    // LocalVar   2 added: Name s Type Ljava/lang/String; At 4 65 Range 4 68 Init 4
    public boolean isConvertibleTo(Class class1)
    {
        String s = class1.getName();
        return s.compareTo("java.lang.Integer") == 0 || s.compareTo("java.lang.Long") == 0 || s.compareTo("java.lang.Float") == 0 || s.compareTo("java.lang.Double") == 0 || s.compareTo("java.math.BigInteger") == 0 || s.compareTo("java.math.BigDecimal") == 0 || s.compareTo("java.lang.String") == 0 || s.compareTo("java.lang.Boolean") == 0;
    }

    // Decompiling method: isInf  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 12856
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 8 Range 0 7 Init 0 fixed
    public boolean isInf()
    {
        return _isInf(shareBytes());
    }

    // Decompiling method: isInt  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 12902
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 8 Range 0 7 Init 0 fixed
    public boolean isInt()
    {
        return _isInt(shareBytes());
    }

    // Decompiling method: isNegInf  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 12948
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 8 Range 0 7 Init 0 fixed
    public boolean isNegInf()
    {
        return _isNegInf(shareBytes());
    }

    // Decompiling method: isPosInf  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 12994
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 8 Range 0 7 Init 0 fixed
    public boolean isPosInf()
    {
        return _isPosInf(shareBytes());
    }

    // Decompiling method: isValid  Signature: ([B)Z
    // Max stack: 3, #locals: 4, #params: 1
    // Code length: 198 bytes, Code offset: 13040
    // Line Number Table found: 33 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 198 Range 0 197 Init 0
    // RetValue   4 added: Name <returnValue> Type Z At 0 198 Range 0 197 Init 0 fixed
    // LocalVar   1 added: Name byte0 Type B At 3 190 Range 3 192 Init 3
    // LocalVar   3 added: Name flag Type Z At 74 25 Range 74 98 Init 74
    // LocalVar   3 chged: Name i Oname flag Type I At 98 1 Range 74 98 Init 74
    // LocalVar   3 added: Name flag Type Z At 167 25 Range 167 191 Init 167
    // LocalVar   3 chged: Name j Oname flag Type I At 191 1 Range 167 191 Init 167
    // LocalVar   2 added: Name byte1 Type B At 81 7 Range 81 87 Init 81
    // LocalVar   2 added: Name byte2 Type B At 174 7 Range 174 180 Init 174
    public static boolean isValid(byte abyte0[])
    {
        byte byte0 = (byte)abyte0.length;
        if(_isPositive(abyte0))
        {
            if(byte0 == 1)
            {
                return _isZero(abyte0);
            }
            if(abyte0[0] == -1 && abyte0[1] == 101)
            {
                return byte0 == 2;
            }
            if(byte0 > 21)
            {
                return false;
            }
            if(abyte0[1] < 2 || abyte0[byte0 - 1] < 2)
            {
                return false;
            }
            for(int i = 1; i < byte0; i++)
            {
                byte byte1 = abyte0[i];
                if(byte1 < 1 || byte1 > 100)
                {
                    return false;
                }
            }

            return true;
        }
        if(byte0 < 3)
        {
            return _isNegInf(abyte0);
        }
        if(byte0 > 21)
        {
            return false;
        }
        if(abyte0[byte0 - 1] != 102)
        {
            if(byte0 <= 20)
            {
                return false;
            }
        } else
        {
            byte0--;
        }
        if(abyte0[1] > 100 || abyte0[byte0 - 1] > 100)
        {
            return false;
        }
        for(int j = 1; j < byte0; j++)
        {
            byte byte2 = abyte0[j];
            if(byte2 < 2 || byte2 > 101)
            {
                return false;
            }
        }

        return true;
    }

    // Decompiling method: isZero  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 13404
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 8 Range 0 7 Init 0 fixed
    public boolean isZero()
    {
        return _isZero(shareBytes());
    }

    // Decompiling method: ln  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 13450
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER ln()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxln(shareBytes()));
    }

    // Decompiling method: ln10  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 3, #locals: 0, #params: 0
    // Code length: 11 bytes, Code offset: 13518
    // Line Number Table found: 1 entries
    // RetValue   0 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 11 Range 0 10 Init 0 fixed
    public static NUMBER ln10()
    {
        return new NUMBER(LN10);
    }

    // Decompiling method: log  Signature: (Loracle/sql/NUMBER;)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 24 bytes, Code offset: 13567
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    // Parameter  1 added: Name number Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    public NUMBER log(NUMBER number)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxlog(shareBytes(), number.shareBytes()));
    }

    // Decompiling method: longValue  Signature: ()J
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 13647
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type J At 0 8 Range 0 7 Init 0 fixed
    public long longValue()
        throws SQLException
    {
        return toLong(shareBytes());
    }

    // Decompiling method: makeJdbcArray  Signature: (I)Ljava/lang/Object;
    // Max stack: 1, #locals: 3, #params: 2
    // Code length: 7 bytes, Code offset: 13703
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 7 Range 0 6 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 7 Range 0 6 Init 0
    // RetValue   3 added: Name <returnValue> Type Ljava/lang/Object; At 0 7 Range 0 6 Init 0 fixed
    // LocalVar   2 added: Name abigdecimal Type [Ljava/math/BigDecimal; At 4 2 Range 4 5 Init 4
    public Object makeJdbcArray(int i)
    {
        BigDecimal abigdecimal[] = new BigDecimal[i];
        return abigdecimal;
    }

    // Decompiling method: mod  Signature: (Loracle/sql/NUMBER;)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 24 bytes, Code offset: 13752
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    // Parameter  1 added: Name number Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    public NUMBER mod(NUMBER number)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxmod(shareBytes(), number.shareBytes()));
    }

    // Decompiling method: mul  Signature: (Loracle/sql/NUMBER;)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 24 bytes, Code offset: 13824
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    // Parameter  1 added: Name number Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    public NUMBER mul(NUMBER number)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxmul(shareBytes(), number.shareBytes()));
    }

    // Decompiling method: negInf  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 3, #locals: 0, #params: 0
    // Code length: 11 bytes, Code offset: 13896
    // Line Number Table found: 1 entries
    // RetValue   0 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 11 Range 0 10 Init 0 fixed
    public static NUMBER negInf()
    {
        return new NUMBER(_makeNegInf());
    }

    // Decompiling method: negate  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 13945
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER negate()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxneg(shareBytes()));
    }

    // Decompiling method: pi  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 3, #locals: 0, #params: 0
    // Code length: 11 bytes, Code offset: 14013
    // Line Number Table found: 1 entries
    // RetValue   0 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 11 Range 0 10 Init 0 fixed
    public static NUMBER pi()
    {
        return new NUMBER(PI);
    }

    // Decompiling method: posInf  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 3, #locals: 0, #params: 0
    // Code length: 11 bytes, Code offset: 14062
    // Line Number Table found: 1 entries
    // RetValue   0 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 11 Range 0 10 Init 0 fixed
    public static NUMBER posInf()
    {
        return new NUMBER(_makePosInf());
    }

    // Decompiling method: pow  Signature: (I)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 21 bytes, Code offset: 14111
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 21 Range 0 20 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    public NUMBER pow(int i)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxpow(shareBytes(), i));
    }

    // Decompiling method: pow  Signature: (Loracle/sql/NUMBER;)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 24 bytes, Code offset: 14180
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    // Parameter  1 added: Name number Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    public NUMBER pow(NUMBER number)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxbex(shareBytes(), number.shareBytes()));
    }

    // Decompiling method: round  Signature: (I)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 21 bytes, Code offset: 14260
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 21 Range 0 20 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    public NUMBER round(int i)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxrou(shareBytes(), i));
    }

    // Decompiling method: scale  Signature: (II[Z)Loracle/sql/NUMBER;
    // Max stack: 7, #locals: 4, #params: 4
    // Code length: 23 bytes, Code offset: 14329
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 23 Range 0 22 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 23 Range 0 22 Init 0
    // Parameter  2 added: Name j Type I At 0 23 Range 0 22 Init 0
    // Parameter  3 added: Name aflag Type [Z At 0 23 Range 0 22 Init 0
    // RetValue   4 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 23 Range 0 22 Init 0 fixed
    public NUMBER scale(int i, int j, boolean aflag[])
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxsca(shareBytes(), i, j, aflag));
    }

    // Decompiling method: shift  Signature: (I)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 21 bytes, Code offset: 14408
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 21 Range 0 20 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    public NUMBER shift(int i)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxshift(shareBytes(), i));
    }

    // Decompiling method: shortValue  Signature: ()S
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 14477
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type S At 0 8 Range 0 7 Init 0 fixed
    public short shortValue()
        throws SQLException
    {
        return toShort(shareBytes());
    }

    // Decompiling method: sign  Signature: ()I
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 28 bytes, Code offset: 14533
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 28 Range 0 27 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type I At 0 28 Range 0 27 Init 0 fixed
    public int sign()
    {
        if(_isZero(shareBytes()))
        {
            return 0;
        } else
        {
            return _isPositive(shareBytes()) ? 1 : -1;
        }
    }

    // Decompiling method: sin  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 14607
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER sin()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxsin(shareBytes()));
    }

    // Decompiling method: sinh  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 14675
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER sinh()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxsnh(shareBytes()));
    }

    // Decompiling method: sqroot  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 14743
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER sqroot()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxsqr(shareBytes()));
    }

    // Decompiling method: stringToBytes  Signature: (Ljava/lang/String;)[B
    // Max stack: 3, #locals: 3, #params: 2
    // Code length: 36 bytes, Code offset: 14811
    // Line Number Table found: 5 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 36 Range 0 35 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 36 Range 0 35 Init 0
    // RetValue   3 added: Name <returnValue> Type [B At 0 36 Range 0 35 Init 0 fixed
    // LocalVar   2 added: Name flag Type Z At 1 31 Range 1 31 Init 1
    // LocalVar   2 chged: Name i Oname flag Type I At 29 3 Range 1 31 Init 1
    private byte[] stringToBytes(String s)
        throws SQLException
    {
        int i = 0;
        s = s.trim();
        if(s.indexOf(46) >= 0)
        {
            i = s.length() - 1 - s.indexOf(46);
        }
        return toBytes(s, i);
    }

    // Decompiling method: stringValue  Signature: ()Ljava/lang/String;
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 8 bytes, Code offset: 14911
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 8 Range 0 7 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Ljava/lang/String; At 0 8 Range 0 7 Init 0 fixed
    public String stringValue()
    {
        return toString(shareBytes());
    }

    // Decompiling method: sub  Signature: (Loracle/sql/NUMBER;)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 24 bytes, Code offset: 14957
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    // Parameter  1 added: Name number Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    public NUMBER sub(NUMBER number)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxsub(shareBytes(), number.shareBytes()));
    }

    // Decompiling method: tan  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 15029
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER tan()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxtan(shareBytes()));
    }

    // Decompiling method: tanh  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 4, #locals: 1, #params: 1
    // Code length: 20 bytes, Code offset: 15097
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 20 Range 0 19 Init 0 fixed
    public NUMBER tanh()
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxtnh(shareBytes()));
    }

    // Decompiling method: textToPrecisionNumber  Signature: (Ljava/lang/String;ZIZILjava/lang/String;)Loracle/sql/NUMBER;
    // Max stack: 9, #locals: 6, #params: 6
    // Code length: 24 bytes, Code offset: 15165
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 24 Range 0 23 Init 0
    // Parameter  1 added: Name flag Type Z At 0 24 Range 0 23 Init 0
    // Parameter  2 added: Name i Type I At 0 24 Range 0 23 Init 0
    // Parameter  3 added: Name flag1 Type Z At 0 24 Range 0 23 Init 0
    // Parameter  4 added: Name j Type I At 0 24 Range 0 23 Init 0
    // Parameter  5 added: Name s1 Type Ljava/lang/String; At 0 24 Range 0 23 Init 0
    // RetValue   6 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 24 Range 0 23 Init 0 fixed
    public static NUMBER textToPrecisionNumber(String s, boolean flag, int i, boolean flag1, int j, String s1)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxcpn(s, flag, i, flag1, j, s1));
    }

    // Decompiling method: toBigDecimal  Signature: ([B)Ljava/math/BigDecimal;
    // Max stack: 6, #locals: 18, #params: 1
    // Code length: 460 bytes, Code offset: 15245
    // Line Number Table found: 59 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 460 Range 0 459 Init 0
    // RetValue  18 added: Name <returnValue> Type Ljava/math/BigDecimal; At 0 460 Range 0 459 Init 0 fixed
    // LocalVar   1 added: Name al Type [J At 4 342 Range 4 345 Init 4
    // LocalVar   2 added: Name byte0 Type B At 7 112 Range 7 118 Init 7
    // LocalVar   3 added: Name flag Type Z At 9 102 Range 9 110 Init 9
    // LocalVar   9 added: Name flag1 Type Z At 11 348 Range 11 358 Init 11
    // LocalVar  12 added: Name flag2 Type Z At 47 332 Range 47 378 Init 47
    // LocalVar  13 added: Name abyte1 Type [B At 53 381 Range 53 433 Init 53
    // LocalVar  10 added: Name i Type I At 61 375 Range 61 435 Init 61
    // LocalVar   4 added: Name j Type I At 63 146 Range 63 208 Init 63
    // LocalVar   3 chged: Name k Oname flag Type I At 77 1 Range 9 110 Init 9
    // LocalVar   3 chged: Name byte1 Oname k Type B At 85 115 Range 9 199 Init 9
    // LocalVar   5 added: Name byte2 Type B At 119 198 Range 119 316 Init 119
    // LocalVar   8 added: Name k Type I At 233 24 Range 233 256 Init 233
    // LocalVar  14 added: Name abyte2 Type [B At 253 136 Range 253 388 Init 253
    // LocalVar   9 chged: Name l Oname flag1 Type I At 265 2 Range 11 358 Init 11
    // LocalVar   5 added: Name byte3 Type B At 320 48 Range 320 367 Init 320
    // LocalVar  15 added: Name biginteger Type Ljava/math/BigInteger; At 392 8 Range 392 399 Init 392
    // LocalVar  16 added: Name bigdecimal Type Ljava/math/BigDecimal; At 403 15 Range 403 417 Init 403
    // LocalVar  17 added: Name i1 Type I At 414 33 Range 414 446 Init 414
    // LocalVar  16 added: Name bigdecimal1 Type Ljava/math/BigDecimal; At 425 34 Range 425 458 Init 425
    // LocalVar   6 added: Name l1 Type J At 139 59 Range 139 197 Init 139
    // LocalVar   2 added: Name byte4 Type B At 143 38 Range 143 180 Init 143
    // LocalVar  11 hasn't been used
    // LocalVar   5 name byte3(B) merged out into byte2(B)
    // LocalVar  16 name bigdecimal1(Ljava/math/BigDecimal;) merged out into bigdecimal(Ljava/math/BigDecimal;)
    public static BigDecimal toBigDecimal(byte abyte0[])
        throws SQLException
    {
        long al[] = new long[10];
        byte byte0 = 9;
        byte byte2 = 1;
        int k = 0;
        if(_isZero(abyte0))
        {
            return BIGDEC_ZERO;
        }
        if(_isInf(abyte0))
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        }
        boolean flag = _isPositive(abyte0);
        byte abyte1[] = _fromLnxFmt(abyte0);
        int i1;
        int i = i1 = abyte1.length - 1;
        if((i1 & 0x1) == 1)
        {
            al[byte0] = abyte1[byte2];
            byte2++;
            i--;
        } else
        {
            al[byte0] = abyte1[byte2] * 100 + abyte1[byte2 + 1];
            byte2 += 2;
            i -= 2;
        }
        byte byte3 = byte0;
        for(; i != 0; i -= 2)
        {
            long l = abyte1[byte2] * 100 + abyte1[byte2 + 1];
            for(byte byte1 = 9; byte1 >= byte3; byte1--)
            {
                l += al[byte1] * 10000L;
                al[byte1] = l & 65535L;
                l >>= 16;
            }

            byte3--;
            al[byte3] = l;
            byte2 += 2;
        }

        int j;
        if(al[byte3] >> 8 != 0L)
        {
            j = 2 * (9 - byte3) + 2;
        } else
        {
            j = 2 * (9 - byte3) + 1;
        }
        byte abyte2[] = new byte[j];
        if((j & 0x1) == 1)
        {
            abyte2[k] = (byte)(int)al[byte3];
            k++;
        } else
        {
            abyte2[k] = (byte)(int)(al[byte3] >> 8);
            k++;
            abyte2[k] = (byte)(int)(al[byte3] & 255L);
            k++;
        }
        for(byte3++; byte3 <= 9; byte3++)
        {
            abyte2[k] = (byte)(int)(al[byte3] >> 8);
            abyte2[k + 1] = (byte)(int)(al[byte3] & 255L);
            k += 2;
        }

        BigInteger biginteger = new BigInteger(flag ? 1 : -1, abyte2);
        BigDecimal bigdecimal = new BigDecimal(biginteger);
        int j1 = (abyte1[0] - i1) + 1;
        bigdecimal = bigdecimal.movePointRight(j1 * 2);
        if(j1 < 0 && abyte1[i1] % 10 == 0)
        {
            bigdecimal = bigdecimal.setScale(-(j1 * 2 + 1));
        }
        return bigdecimal;
    }

    // Decompiling method: toBigInteger  Signature: ([B)Ljava/math/BigInteger;
    // Max stack: 6, #locals: 16, #params: 1
    // Code length: 440 bytes, Code offset: 15985
    // Line Number Table found: 58 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 440 Range 0 439 Init 0
    // RetValue  16 added: Name <returnValue> Type Ljava/math/BigInteger; At 0 440 Range 0 439 Init 0 fixed
    // LocalVar   1 added: Name al Type [J At 4 363 Range 4 366 Init 4
    // LocalVar   2 added: Name byte0 Type B At 7 133 Range 7 139 Init 7
    // LocalVar   3 added: Name flag Type Z At 9 123 Range 9 131 Init 9
    // LocalVar   9 added: Name flag1 Type Z At 11 369 Range 11 379 Init 11
    // LocalVar  12 added: Name flag2 Type Z At 47 353 Range 47 399 Init 47
    // LocalVar  13 added: Name abyte1 Type [B At 53 364 Range 53 416 Init 53
    // LocalVar  10 added: Name i Type I At 80 341 Range 80 420 Init 80
    // LocalVar   4 added: Name j Type I At 84 146 Range 84 229 Init 84
    // LocalVar   3 chged: Name k Oname flag Type I At 98 1 Range 9 131 Init 9
    // LocalVar   3 chged: Name byte1 Oname k Type B At 106 115 Range 9 220 Init 9
    // LocalVar   5 added: Name byte2 Type B At 140 198 Range 140 337 Init 140
    // LocalVar   8 added: Name k Type I At 254 24 Range 254 277 Init 254
    // LocalVar  14 added: Name abyte2 Type [B At 274 136 Range 274 409 Init 274
    // LocalVar   9 chged: Name l Oname flag1 Type I At 286 2 Range 11 379 Init 11
    // LocalVar   5 added: Name byte3 Type B At 341 48 Range 341 388 Init 341
    // LocalVar  15 added: Name biginteger Type Ljava/math/BigInteger; At 413 15 Range 413 427 Init 413
    // LocalVar  11 added: Name i1 Type I At 424 9 Range 424 432 Init 424
    // LocalVar   6 added: Name l1 Type J At 160 59 Range 160 218 Init 160
    // LocalVar   2 added: Name byte4 Type B At 164 38 Range 164 201 Init 164
    // LocalVar   5 name byte3(B) merged out into byte2(B)
    public static BigInteger toBigInteger(byte abyte0[])
        throws SQLException
    {
        long al[] = new long[10];
        byte byte0 = 9;
        byte byte2 = 1;
        int k = 0;
        if(_isZero(abyte0))
        {
            return BIGINT_ZERO;
        }
        if(_isInf(abyte0))
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        }
        boolean flag = _isPositive(abyte0);
        byte abyte1[] = _fromLnxFmt(abyte0);
        if(abyte1[0] < 0)
        {
            return BIGINT_ZERO;
        }
        int i1 = Math.min(abyte1[0] + 1, abyte1.length - 1);
        int i = i1;
        if((i1 & 0x1) == 1)
        {
            al[byte0] = abyte1[byte2];
            byte2++;
            i--;
        } else
        {
            al[byte0] = abyte1[byte2] * 100 + abyte1[byte2 + 1];
            byte2 += 2;
            i -= 2;
        }
        byte byte3 = byte0;
        for(; i != 0; i -= 2)
        {
            long l = abyte1[byte2] * 100 + abyte1[byte2 + 1];
            for(byte byte1 = 9; byte1 >= byte3; byte1--)
            {
                l += al[byte1] * 10000L;
                al[byte1] = l & 65535L;
                l >>= 16;
            }

            byte3--;
            al[byte3] = l;
            byte2 += 2;
        }

        int j;
        if(al[byte3] >> 8 != 0L)
        {
            j = 2 * (9 - byte3) + 2;
        } else
        {
            j = 2 * (9 - byte3) + 1;
        }
        byte abyte2[] = new byte[j];
        if((j & 0x1) == 1)
        {
            abyte2[k] = (byte)(int)al[byte3];
            k++;
        } else
        {
            abyte2[k] = (byte)(int)(al[byte3] >> 8);
            k++;
            abyte2[k] = (byte)(int)(al[byte3] & 255L);
            k++;
        }
        for(byte3++; byte3 <= 9; byte3++)
        {
            abyte2[k] = (byte)(int)(al[byte3] >> 8);
            abyte2[k + 1] = (byte)(int)(al[byte3] & 255L);
            k += 2;
        }

        BigInteger biginteger = new BigInteger(flag ? 1 : -1, abyte2);
        int j1 = abyte1[0] - (i1 - 1);
        return biginteger.multiply(BIGINT_HUND.pow(j1));
    }

    // Decompiling method: toBoolean  Signature: ([B)Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 11 bytes, Code offset: 16701
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 11 Range 0 10 Init 0
    // RetValue   1 added: Name <returnValue> Type Z At 0 11 Range 0 10 Init 0 fixed
    public static boolean toBoolean(byte abyte0[])
    {
        return !_isZero(abyte0);
    }

    // Decompiling method: toByte  Signature: ([B)B
    // Max stack: 4, #locals: 3, #params: 1
    // Code length: 39 bytes, Code offset: 16758
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 39 Range 0 38 Init 0
    // RetValue   3 added: Name <returnValue> Type B At 0 39 Range 0 38 Init 0 fixed
    // LocalVar   1 added: Name l Type J At 1 1 Range 1 1 Init 1
    // LocalVar   1 added: Name l1 Type J At 6 30 Range 6 35 Init 6
    // LocalVar   1 name l1(J) merged out into l(J)
    public static byte toByte(byte abyte0[])
        throws SQLException
    {
        long l = 0L;
        l = toLong(abyte0);
        if(l > 127L || l < -128L)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        } else
        {
            return (byte)(int)l;
        }
    }

    // Decompiling method: toBytes  Signature: ()[B
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 16869
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type [B At 0 5 Range 0 4 Init 0 fixed
    public byte[] toBytes()
    {
        return getBytes();
    }

    // Decompiling method: toBytes  Signature: (B)[B
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 6 bytes, Code offset: 16912
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name byte0 Type B At 0 6 Range 0 5 Init 0
    // RetValue   1 added: Name <returnValue> Type [B At 0 6 Range 0 5 Init 0 fixed
    public static byte[] toBytes(byte byte0)
    {
        return toBytes(byte0);
    }

    // Decompiling method: toBytes  Signature: (D)[B
    // Max stack: 4, #locals: 2, #params: 2
    // Code length: 52 bytes, Code offset: 16956
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name d Type D At 0 52 Range 0 51 Init 0
    // RetValue   2 added: Name <returnValue> Type [B At 0 52 Range 0 51 Init 0 fixed
    public static byte[] toBytes(double d)
        throws SQLException
    {
        if(d == 0.0D || d == -0D)
        {
            return _makeZero();
        }
        if(d == (1.0D / 0.0D))
        {
            return _makePosInf();
        }
        if(d == (-1.0D / 0.0D))
        {
            return _makeNegInf();
        } else
        {
            return _getLnxLib().lnxren(d);
        }
    }

    // Decompiling method: toBytes  Signature: (F)[B
    // Max stack: 7, #locals: 2, #params: 1
    // Code length: 62 bytes, Code offset: 17080
    // Exception table: 1 entries
    //           start  44 end 59 handler 59 type Exception
    // Line Number Table found: 11 entries
    // Parameter  0 added: Name f Type F At 0 62 Range 0 61 Init 0
    // RetValue   2 added: Name <returnValue> Type [B At 0 62 Range 0 61 Init 0 fixed
    // LocalVar   1 added: Name s Type Ljava/lang/String; At 43 5 Range 43 47 Init 43
    public static byte[] toBytes(float f)
    {
        if(f == 0.0F || f == -0F)
        {
            return _makeZero();
        }
        if(f == (1.0F / 0.0F))
        {
            return _makePosInf();
        }
        if(f == (-1.0F / 0.0F))
        {
            return _makeNegInf();
        }
        String s = Float.toString(f);
        try
        {
            return _getLnxLib().lnxcpn(s, false, 0, false, 0, null);
        }
        catch(Exception _ex)
        {
            return null;
        }
    }

    // Decompiling method: toBytes  Signature: (I)[B
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 6 bytes, Code offset: 17228
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name i Type I At 0 6 Range 0 5 Init 0
    // RetValue   1 added: Name <returnValue> Type [B At 0 6 Range 0 5 Init 0 fixed
    public static byte[] toBytes(int i)
    {
        return toBytes(i);
    }

    // Decompiling method: toBytes  Signature: (J)[B
    // Max stack: 3, #locals: 2, #params: 2
    // Code length: 10 bytes, Code offset: 17272
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name l Type J At 0 10 Range 0 9 Init 0
    // RetValue   2 added: Name <returnValue> Type [B At 0 10 Range 0 9 Init 0 fixed
    public static byte[] toBytes(long l)
    {
        return _getLnxLib().lnxmin(l);
    }

    // Decompiling method: toBytes  Signature: (Ljava/lang/String;I)[B
    // Max stack: 7, #locals: 23, #params: 2
    // Code length: 1010 bytes, Code offset: 17320
    // Line Number Table found: 177 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 1010 Range 0 1009 Init 0
    // Parameter  1 added: Name i Type I At 0 1010 Range 0 1009 Init 0
    // RetValue  23 added: Name <returnValue> Type [B At 0 1010 Range 0 1009 Init 0 fixed
    // LocalVar   2 added: Name flag Type Z At 1 1 Range 1 1 Init 1
    // LocalVar   3 added: Name flag1 Type Z At 3 711 Range 3 713 Init 3
    // LocalVar   5 added: Name abyte0 Type [B At 8 985 Range 8 992 Init 8
    // LocalVar   7 added: Name flag2 Type Z At 11 827 Range 11 837 Init 11
    // LocalVar   9 added: Name flag3 Type Z At 14 992 Range 14 1005 Init 14
    // LocalVar  10 added: Name flag4 Type Z At 17 836 Range 17 852 Init 17
    // LocalVar  11 added: Name flag5 Type Z At 20 508 Range 20 527 Init 20
    // LocalVar  12 added: Name flag6 Type Z At 23 966 Range 23 988 Init 23
    // LocalVar  14 added: Name flag7 Type Z At 26 973 Range 26 998 Init 26
    // LocalVar  15 added: Name flag8 Type Z At 29 229 Range 29 257 Init 29
    // LocalVar  16 added: Name byte0 Type B At 33 583 Range 33 615 Init 33
    // LocalVar  17 added: Name flag9 Type Z At 36 832 Range 36 867 Init 36
    // LocalVar  18 added: Name flag10 Type Z At 39 2 Range 39 40 Init 39
    // LocalVar  19 added: Name flag11 Type Z At 42 48 Range 42 89 Init 42
    // LocalVar  20 added: Name j Type I At 53 449 Range 53 501 Init 53
    // LocalVar   2 added: Name k Type I At 76 765 Range 76 840 Init 76
    // LocalVar  21 added: Name ac Type [C At 81 785 Range 81 865 Init 81
    // LocalVar  19 chged: Name l Oname flag11 Type I At 88 2 Range 42 89 Init 42
    // LocalVar   3 chged: Name i1 Oname flag1 Type I At 103 1 Range 3 713 Init 3
    // LocalVar  12 chged: Name j1 Oname flag6 Type I At 174 3 Range 23 988 Init 23
    // LocalVar   6 added: Name k1 Type I At 247 22 Range 247 268 Init 247
    // LocalVar  15 chged: Name l1 Oname flag8 Type I At 249 2 Range 29 257 Init 29
    // LocalVar  17 chged: Name i2 Oname flag9 Type I At 271 597 Range 36 867 Init 36
    // LocalVar   7 chged: Name j2 Oname flag2 Type I At 281 51 Range 11 837 Init 11
    // LocalVar  14 chged: Name k2 Oname flag7 Type I At 316 3 Range 26 998 Init 26
    // LocalVar   4 added: Name flag1 Type Z At 474 26 Range 474 499 Init 474
    // LocalVar   4 chged: Name l2 Oname flag1 Type I At 498 2 Range 474 499 Init 474
    // LocalVar   6 added: Name i3 Type I At 537 10 Range 537 546 Init 537
    // LocalVar  22 added: Name j3 Type I At 543 8 Range 543 550 Init 543
    // LocalVar  13 added: Name k3 Type I At 580 130 Range 580 709 Init 580
    // LocalVar  18 added: Name l3 Type I At 603 59 Range 603 661 Init 603
    // LocalVar  22 added: Name i4 Type I At 858 81 Range 858 938 Init 858
    // LocalVar  18 added: Name j4 Type I At 875 4 Range 875 878 Init 875
    // LocalVar   4 added: Name k4 Type I At 949 24 Range 949 972 Init 949
    // LocalVar  22 added: Name abyte1 Type [B At 982 22 Range 982 1003 Init 982
    // LocalVar   8 hasn't been used
    // LocalVar   2 chged: Name l4 Oname flag Type I At 1 1 Range 1 1 Init 1
    // LocalVar   2 name k(I) merged out into l4(I)
    public static byte[] toBytes(String s, int i)
        throws SQLException
    {
        int j = 0;
        int k = 0;
        byte abyte0[] = new byte[22];
        int l1 = 0;
        boolean flag = true;
        boolean flag1 = false;
        boolean flag2 = false;
        int i2 = 0;
        int k2 = 0;
        int l2 = 0;
        byte byte0 = 40;
        int i3 = 0;
        boolean flag3 = false;
        int l3 = 0;
        s = s.trim();
        int i4 = s.length();
        if(s.charAt(0) == '-')
        {
            i4--;
            flag = false;
            l3 = 1;
        }
        j = i4;
        char ac[] = new char[i4];
        s.getChars(l3, i4 + l3, ac, 0);
        for(; k < j && ac[k] == '0'; k++) { }
        if(k == j)
        {
            return _makeZero();
        }
        if(i4 >= 2 && ac[k] == '.')
        {
            for(; j > 0 && ac[j - 1] == '0'; j--) { }
            if(++k == j)
            {
                return _makeZero();
            }
            i2--;
            for(; k < j - 1 && ac[k] == '0' && ac[k + 1] == '0'; k += 2)
            {
                i2--;
                l2 += 2;
            }

            if(i2 <= -65)
            {
                throw new SQLException(CoreException.getMessage((byte)2));
            }
            if(j - k > byte0)
            {
                int j1 = 2 + byte0;
                if(l2 > 0)
                {
                    j1 += l2;
                }
                if(j1 <= j)
                {
                    j = j1;
                }
                i3 = j;
                flag1 = true;
            }
            l1 = j - k >> 1;
            if((j - k) % 2 != 0)
            {
                abyte0[l1] = (byte)(Integer.parseInt(new String(ac, j - 1, 1)) * 10);
                k2++;
                j--;
            }
            while(j > k) 
            {
                l1--;
                abyte0[l1] = (byte)Integer.parseInt(new String(ac, j - 2, 2));
                j -= 2;
                k2++;
            }
        } else
        {
            for(; i > 0 && j > 0 && ac[j - 1] == '0'; i--)
            {
                j--;
            }

            if(i == 0 && j > 1)
            {
                if(ac[j - 1] == '.')
                {
                    j--;
                }
                if(k == j)
                {
                    return _makeZero();
                }
                while(j > 1 && ac[j - 2] == '0' && ac[j - 1] == '0') 
                {
                    j -= 2;
                    i2++;
                }
            }
            if(i2 > 62)
            {
                throw new SQLException(CoreException.getMessage((byte)3));
            }
            for(int l = 0; l < i4; l++)
            {
                if(ac[l] != '.')
                {
                    continue;
                }
                flag2 = true;
                break;
            }

            if(j - k - (flag2 ? 1 : 0) > byte0)
            {
                int k1 = byte0 + (flag2 ? 1 : 0);
                int j4 = j - k1;
                j = k1;
                i -= j4;
                if(i < 0)
                {
                    i = 0;
                }
                flag1 = true;
                i3 = j;
            }
            int j2 = i != 0 ? j - i - 1 : j - k;
            int j3;
            if(j2 % 2 != 0)
            {
                j3 = Integer.parseInt(new String(ac, k, 1));
                k++;
                j2--;
                if(j - 1 == byte0)
                {
                    i--;
                    j--;
                    flag1 = true;
                    i3 = j;
                }
            } else
            {
                j3 = Integer.parseInt(new String(ac, k, 2));
                k += 2;
                j2 -= 2;
            }
            abyte0[l1] = (byte)j3;
            l1++;
            for(k2++; j2 > 0; k2++)
            {
                abyte0[l1] = (byte)Integer.parseInt(new String(ac, k, 2));
                l1++;
                k += 2;
                i2++;
                j2 -= 2;
            }

            if(k < j)
            {
                if(i % 2 != 0)
                {
                    l1 += i / 2;
                    abyte0[l1] = (byte)(Integer.parseInt(new String(ac, j - 1, 1)) * 10);
                    j--;
                    i--;
                } else
                {
                    l1 += i / 2 - 1;
                    abyte0[l1] = (byte)Integer.parseInt(new String(ac, j - 2, 2));
                    j -= 2;
                    i -= 2;
                }
                k2++;
                l1--;
            }
            while(i > 0) 
            {
                abyte0[l1] = (byte)Integer.parseInt(new String(ac, j - 2, 2));
                l1--;
                j -= 2;
                i -= 2;
                k2++;
            }
        }
        if(flag1)
        {
            int k4 = k2;
            int k3 = Integer.parseInt(new String(ac, i3, 1));
            if(k3 >= 5)
            {
                k4--;
                for(abyte0[k4]++; abyte0[k4] == 100; abyte0[k4]++)
                {
                    if(k4 == 0)
                    {
                        i2++;
                        abyte0[k4] = 1;
                        break;
                    }
                    abyte0[k4] = 0;
                    k4--;
                }

                for(int i1 = k2 - 1; i1 >= 0; i1--)
                {
                    if(abyte0[i1] != 0)
                    {
                        break;
                    }
                    k2--;
                }

            }
        }
        byte abyte1[] = new byte[k2 + 1];
        abyte1[0] = (byte)i2;
        System.arraycopy(abyte0, 0, abyte1, 1, k2);
        return _toLnxFmt(abyte1, flag);
    }

    // Decompiling method: toBytes  Signature: (Ljava/math/BigDecimal;)[B
    // Max stack: 7, #locals: 25, #params: 1
    // Code length: 1288 bytes, Code offset: 19082
    // Line Number Table found: 158 entries
    // Parameter  0 added: Name bigdecimal Type Ljava/math/BigDecimal; At 0 1288 Range 0 1287 Init 0
    // RetValue  25 added: Name <returnValue> Type [B At 0 1288 Range 0 1287 Init 0 fixed
    // LocalVar   1 added: Name abyte0 Type [B At 4 1267 Range 4 1270 Init 4
    // LocalVar   2 added: Name al Type [J At 9 496 Range 9 504 Init 9
    // LocalVar   3 added: Name al1 Type [J At 14 785 Range 14 798 Init 14
    // LocalVar   4 added: Name byte0 Type B At 17 356 Range 17 372 Init 17
    // LocalVar   5 added: Name flag Type Z At 20 372 Range 20 391 Init 20
    // LocalVar   7 added: Name byte1 Type B At 24 727 Range 24 750 Init 24
    // LocalVar  11 added: Name flag1 Type Z At 27 801 Range 27 827 Init 27
    // LocalVar  14 added: Name flag2 Type Z At 30 2 Range 30 31 Init 30
    // LocalVar  18 added: Name bigdecimal1 Type Ljava/math/BigDecimal; At 36 116 Range 36 151 Init 36
    // LocalVar  20 added: Name flag3 Type Z At 39 2 Range 39 40 Init 39
    // LocalVar  13 added: Name flag4 Type Z At 65 1219 Range 65 1283 Init 65
    // LocalVar  16 added: Name i Type I At 71 792 Range 71 862 Init 71
    // LocalVar  19 added: Name j Type I At 81 7 Range 81 87 Init 81
    // LocalVar  21 added: Name flag5 Type Z At 84 64 Range 84 147 Init 84
    // LocalVar  21 chged: Name k Oname flag5 Type I At 92 3 Range 84 147 Init 84
    // LocalVar  22 added: Name bigdecimal2 Type Ljava/math/BigDecimal; At 102 4 Range 102 105 Init 102
    // LocalVar  20 added: Name l Type I At 118 1093 Range 118 1210 Init 118
    // LocalVar  22 added: Name bigdecimal3 Type Ljava/math/BigDecimal; At 133 4 Range 133 136 Init 133
    // LocalVar  12 added: Name abyte1 Type [B At 163 76 Range 163 238 Init 163
    // LocalVar  15 added: Name flag5 Type Z At 186 45 Range 186 230 Init 186
    // LocalVar  15 chged: Name i1 Oname flag5 Type I At 229 2 Range 186 230 Init 186
    // LocalVar   6 added: Name j1 Type I At 240 356 Range 240 595 Init 240
    // LocalVar   5 chged: Name k1 Oname flag Type I At 272 2 Range 20 391 Init 20
    // LocalVar   5 chged: Name byte2 Oname k1 Type B At 291 295 Range 20 585 Init 20
    // LocalVar   8 added: Name l1 Type J At 344 19 Range 344 362 Init 344
    // LocalVar  11 chged: Name k1 Oname flag1 Type I At 600 2 Range 27 827 Init 27
    // LocalVar  10 added: Name i2 Type I At 626 651 Range 626 1276 Init 626
    // LocalVar   4 added: Name byte3 Type B At 754 67 Range 754 820 Init 754
    // LocalVar  15 added: Name j2 Type I At 830 23 Range 830 852 Init 830
    // LocalVar  23 added: Name k2 Type I At 870 172 Range 870 1041 Init 870
    // LocalVar  24 added: Name abyte2 Type [B At 878 173 Range 878 1050 Init 878
    // LocalVar  15 added: Name flag Type Z At 889 50 Range 889 938 Init 889
    // LocalVar  15 chged: Name l2 Oname flag Type I At 923 2 Range 889 938 Init 889
    // LocalVar  15 added: Name i3 Type I At 986 46 Range 986 1031 Init 986
    // LocalVar  15 added: Name byte4 Type B At 1068 66 Range 1068 1133 Init 1068
    // LocalVar  15 chged: Name j3 Oname byte4 Type I At 1083 3 Range 1068 1133 Init 1068
    // LocalVar  15 added: Name k3 Type I At 1144 23 Range 1144 1166 Init 1144
    // LocalVar  14 added: Name l3 Type I At 1192 76 Range 1192 1267 Init 1192
    // LocalVar  23 added: Name abyte3 Type [B At 1261 21 Range 1261 1281 Init 1261
    // LocalVar   8 added: Name l4 Type J At 418 72 Range 418 489 Init 418
    // LocalVar   4 added: Name byte4 Type B At 422 44 Range 422 465 Init 422
    // LocalVar   8 added: Name l5 Type J At 511 72 Range 511 582 Init 511
    // LocalVar   4 added: Name byte5 Type B At 515 44 Range 515 558 Init 515
    // LocalVar  17 hasn't been used
    // LocalVar   8 name l5(J) merged out into l4(J)
    // LocalVar  14 chged: Name i4 Oname flag2 Type I At 30 2 Range 30 31 Init 30
    // LocalVar  14 name l3(I) merged out into i4(I)
    // LocalVar  20 chged: Name l3 Oname flag3 Type I At 39 2 Range 39 40 Init 39
    // LocalVar  20 name l(I) merged out into l3(I)
    public static byte[] toBytes(BigDecimal bigdecimal)
        throws SQLException
    {
        byte abyte0[] = new byte[66];
        long al[] = new long[54];
        long al1[] = new long[22];
        byte byte0 = 21;
        byte byte4 = 0;
        byte byte5 = 21;
        int k = 0;
        int i1 = 0;
        BigDecimal bigdecimal1 = bigdecimal.abs();
        int k3 = 0;
        if(bigdecimal.signum() == 0)
        {
            return _makeZero();
        }
        boolean flag = bigdecimal.signum() != -1;
        int i3 = bigdecimal.scale();
        int j3 = bigdecimal1.compareTo(BIGDEC_ONE);
        int l3 = 0;
        if(j3 == -1)
        {
            BigDecimal bigdecimal2;
            do
            {
                l3++;
                bigdecimal2 = bigdecimal1.movePointRight(l3);
            } while(bigdecimal2.compareTo(BIGDEC_ONE) < 0);
            k3 = -l3;
        } else
        {
            BigDecimal bigdecimal3;
            do
            {
                l3++;
                bigdecimal3 = bigdecimal1.movePointLeft(l3);
            } while(bigdecimal3.compareTo(BIGDEC_ONE) >= 0);
            k3 = l3;
        }
        byte abyte1[] = bigdecimal1.movePointRight(i3).toBigInteger().toByteArray();
        if(abyte1.length > 54)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        }
        for(int j1 = 0; j1 < abyte1.length; j1++)
        {
            if(abyte1[j1] < 0)
            {
                al[j1] = abyte1[j1] + 256;
            } else
            {
                al[j1] = abyte1[j1];
            }
        }

        int i = abyte1.length;
        switch(i % 3)
        {
        case 2: // '\002'
            al1[byte0] = (al[byte4] << 8) + al[byte4 + 1];
            byte4 += 2;
            i -= 2;
            break;

        case 1: // '\001'
            al1[byte0] = al[byte4];
            byte4++;
            i--;
            break;

        default:
            long l = (al[byte4] << 16) + (al[byte4 + 1] << 8) + al[byte4 + 2];
            al1[byte0] = l % 0x0000f4240L;
            al1[byte0 - 1] = l / 0x0000f4240L;
            byte5 -= al1[byte0 - 1] == 0L ? 0 : 1;
            byte4 += 3;
            i -= 3;
            break;
        }
        for(; i != 0; i -= 3)
        {
            long l1 = (al[byte4] << 4) + (al[byte4 + 1] >> 4);
            for(byte byte1 = 21; byte1 >= byte5; byte1--)
            {
                l1 += al1[byte1] << 12;
                al1[byte1] = l1 % 0x0000f4240L;
                l1 /= 0x0000f4240L;
            }

            if(l1 != 0L)
            {
                byte5--;
                al1[byte5] = l1;
            }
            l1 = ((al[byte4 + 1] & 15L) << 8) + al[byte4 + 2];
            for(byte byte2 = 21; byte2 >= byte5; byte2--)
            {
                l1 += al1[byte2] << 12;
                al1[byte2] = l1 % 0x0000f4240L;
                l1 /= 0x0000f4240L;
            }

            if(l1 != 0L)
            {
                byte5--;
                al1[byte5] = l1;
            }
            byte4 += 3;
        }

        int j;
        if((abyte0[k] = (byte)(int)(al1[byte5] / 10000L)) != 0)
        {
            j = 3 * (21 - byte5) + 3;
            abyte0[k + 1] = (byte)(int)((al1[byte5] % 10000L) / 100L);
            abyte0[k + 2] = (byte)(int)(al1[byte5] % 100L);
            k += 3;
        } else
        if((abyte0[k] = (byte)(int)((al1[byte5] % 10000L) / 100L)) != 0)
        {
            j = 3 * (21 - byte5) + 2;
            abyte0[k + 1] = (byte)(int)(al1[byte5] % 100L);
            k += 2;
        } else
        {
            abyte0[k] = (byte)(int)al1[byte5];
            j = 3 * (21 - byte5) + 1;
            k++;
        }
        for(byte byte3 = (byte)(byte5 + 1); byte3 <= 21; byte3++)
        {
            abyte0[k] = (byte)(int)(al1[byte3] / 10000L);
            abyte0[k + 1] = (byte)(int)((al1[byte3] % 10000L) / 100L);
            abyte0[k + 2] = (byte)(int)(al1[byte3] % 100L);
            k += 3;
        }

        for(int k1 = k - 1; k1 >= 0; k1--)
        {
            if(abyte0[k1] != 0)
            {
                break;
            }
            j--;
        }

        if(i3 > 0 && (i3 & 0x1) != 0)
        {
            int i4 = j;
            byte abyte3[] = new byte[i4 + 1];
            if(abyte0[0] <= 9)
            {
                int i2;
                for(i2 = 0; i2 < i4 - 1; i2++)
                {
                    abyte3[i2] = (byte)((abyte0[i2] % 10) * 10 + abyte0[i2 + 1] / 10);
                }

                abyte3[i2] = (byte)((abyte0[i2] % 10) * 10);
                if(abyte3[i4 - 1] == 0)
                {
                    j--;
                }
            } else
            {
                abyte3[i4] = (byte)((abyte0[i4 - 1] % 10) * 10);
                int j2;
                for(j2 = i4 - 1; j2 > 0; j2--)
                {
                    abyte3[j2] = (byte)(abyte0[j2] / 10 + (abyte0[j2 - 1] % 10) * 10);
                }

                abyte3[j2] = (byte)(abyte0[j2] / 10);
                if(abyte3[i4] > 0)
                {
                    j++;
                }
            }
            System.arraycopy(abyte3, 0, abyte0, 0, j);
        }
        if(j > 20)
        {
            int k2 = 20;
            j = 20;
            if(abyte0[k2] >= 50)
            {
                k2--;
                for(abyte0[k2]++; abyte0[k2] == 100; abyte0[k2]++)
                {
                    if(k2 == 0)
                    {
                        k3++;
                        abyte0[k2] = 1;
                        break;
                    }
                    abyte0[k2] = 0;
                    k2--;
                }

                for(int l2 = j - 1; l2 >= 0; l2--)
                {
                    if(abyte0[l2] != 0)
                    {
                        break;
                    }
                    j--;
                }

            }
        }
        if(k3 <= 0)
        {
            if(abyte0[0] < 10)
            {
                i1 = -(2 - k3) / 2 + 1;
            } else
            {
                i1 = -(2 - k3) / 2;
            }
        } else
        {
            i1 = (k3 - 1) / 2;
        }
        if(i1 > 62)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        }
        if(i1 <= -65)
        {
            throw new SQLException(CoreException.getMessage((byte)2));
        } else
        {
            byte abyte2[] = new byte[j + 1];
            abyte2[0] = (byte)i1;
            System.arraycopy(abyte0, 0, abyte2, 1, j);
            return _toLnxFmt(abyte2, flag);
        }
    }

    // Decompiling method: toBytes  Signature: (Ljava/math/BigInteger;)[B
    // Max stack: 7, #locals: 18, #params: 1
    // Code length: 963 bytes, Code offset: 21046
    // Line Number Table found: 120 entries
    // Parameter  0 added: Name biginteger Type Ljava/math/BigInteger; At 0 963 Range 0 962 Init 0
    // RetValue  18 added: Name <returnValue> Type [B At 0 963 Range 0 962 Init 0 fixed
    // LocalVar   1 added: Name abyte0 Type [B At 4 942 Range 4 945 Init 4
    // LocalVar   2 added: Name al Type [J At 9 440 Range 9 448 Init 9
    // LocalVar   3 added: Name al1 Type [J At 14 729 Range 14 742 Init 14
    // LocalVar   4 added: Name byte0 Type B At 17 300 Range 17 316 Init 17
    // LocalVar   5 added: Name flag Type Z At 20 316 Range 20 335 Init 20
    // LocalVar   7 added: Name byte1 Type B At 24 671 Range 24 694 Init 24
    // LocalVar  10 added: Name flag1 Type Z At 27 2 Range 27 28 Init 27
    // LocalVar  12 added: Name flag2 Type Z At 30 742 Range 30 771 Init 30
    // LocalVar  14 added: Name flag3 Type Z At 33 926 Range 33 958 Init 33
    // LocalVar  17 added: Name biginteger1 Type Ljava/math/BigInteger; At 58 14 Range 58 71 Init 58
    // LocalVar  13 added: Name abyte1 Type [B At 68 116 Range 68 183 Init 68
    // LocalVar  15 added: Name i Type I At 84 859 Range 84 942 Init 84
    // LocalVar  16 added: Name flag4 Type Z At 131 45 Range 131 175 Init 131
    // LocalVar  16 chged: Name j Oname flag4 Type I At 174 2 Range 131 175 Init 131
    // LocalVar   6 added: Name k Type I At 185 355 Range 185 539 Init 185
    // LocalVar   5 chged: Name l Oname flag Type I At 216 2 Range 20 335 Init 20
    // LocalVar   5 chged: Name byte2 Oname l Type B At 235 295 Range 20 529 Init 20
    // LocalVar   8 added: Name l Type J At 288 19 Range 288 306 Init 288
    // LocalVar  12 chged: Name i1 Oname flag2 Type I At 544 2 Range 30 771 Init 30
    // LocalVar  11 added: Name j1 Type I At 570 382 Range 570 951 Init 570
    // LocalVar   4 added: Name byte3 Type B At 698 67 Range 698 764 Init 698
    // LocalVar  16 added: Name k1 Type I At 774 23 Range 774 796 Init 774
    // LocalVar  16 added: Name byte4 Type B At 809 66 Range 809 874 Init 809
    // LocalVar  16 chged: Name l1 Oname byte4 Type I At 824 3 Range 809 874 Init 809
    // LocalVar  16 added: Name i2 Type I At 885 23 Range 885 907 Init 885
    // LocalVar  17 added: Name abyte2 Type [B At 936 21 Range 936 956 Init 936
    // LocalVar   8 added: Name l2 Type J At 362 72 Range 362 433 Init 362
    // LocalVar   4 added: Name byte4 Type B At 366 44 Range 366 409 Init 366
    // LocalVar   8 added: Name l3 Type J At 455 72 Range 455 526 Init 455
    // LocalVar   4 added: Name byte5 Type B At 459 44 Range 459 502 Init 459
    // LocalVar   8 name l3(J) merged out into l2(J)
    public static byte[] toBytes(BigInteger biginteger)
        throws SQLException
    {
        byte abyte0[] = new byte[66];
        long al[] = new long[54];
        long al1[] = new long[22];
        byte byte0 = 21;
        byte byte4 = 0;
        byte byte5 = 21;
        boolean flag = false;
        int k = 0;
        boolean flag1 = true;
        if(biginteger.signum() == 0)
        {
            return _makeZero();
        }
        byte abyte1[];
        int i1;
        if(biginteger.signum() == -1)
        {
            BigInteger biginteger1 = biginteger.abs();
            flag1 = false;
            abyte1 = biginteger1.toByteArray();
            i1 = (int)Math.floor((double)biginteger1.bitLength() * 0.1505149978319906D);
        } else
        {
            abyte1 = biginteger.toByteArray();
            i1 = (int)Math.floor((double)biginteger.bitLength() * 0.1505149978319906D);
        }
        if(abyte1.length > 54)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        }
        for(int j1 = 0; j1 < abyte1.length; j1++)
        {
            if(abyte1[j1] < 0)
            {
                al[j1] = abyte1[j1] + 256;
            } else
            {
                al[j1] = abyte1[j1];
            }
        }

        int i = abyte1.length;
        switch(i % 3)
        {
        case 2: // '\002'
            al1[byte0] = (al[byte4] << 8) + al[byte4 + 1];
            byte4 += 2;
            i -= 2;
            break;

        case 1: // '\001'
            al1[byte0] = al[byte4];
            byte4++;
            i--;
            break;

        default:
            long l = (al[byte4] << 16) + (al[byte4 + 1] << 8) + al[byte4 + 2];
            al1[byte0] = l % 0x0000f4240L;
            al1[byte0 - 1] = l / 0x0000f4240L;
            byte5 -= al1[byte0 - 1] == 0L ? 0 : 1;
            byte4 += 3;
            i -= 3;
            break;
        }
        for(; i != 0; i -= 3)
        {
            long l1 = (al[byte4] << 4) + (al[byte4 + 1] >> 4);
            for(byte byte1 = 21; byte1 >= byte5; byte1--)
            {
                l1 += al1[byte1] << 12;
                al1[byte1] = l1 % 0x0000f4240L;
                l1 /= 0x0000f4240L;
            }

            if(l1 != 0L)
            {
                byte5--;
                al1[byte5] = l1;
            }
            l1 = ((al[byte4 + 1] & 15L) << 8) + al[byte4 + 2];
            for(byte byte2 = 21; byte2 >= byte5; byte2--)
            {
                l1 += al1[byte2] << 12;
                al1[byte2] = l1 % 0x0000f4240L;
                l1 /= 0x0000f4240L;
            }

            if(l1 != 0L)
            {
                byte5--;
                al1[byte5] = l1;
            }
            byte4 += 3;
        }

        int j;
        if((abyte0[k] = (byte)(int)(al1[byte5] / 10000L)) != 0)
        {
            j = 3 * (21 - byte5) + 3;
            abyte0[k + 1] = (byte)(int)((al1[byte5] % 10000L) / 100L);
            abyte0[k + 2] = (byte)(int)(al1[byte5] % 100L);
            k += 3;
        } else
        if((abyte0[k] = (byte)(int)((al1[byte5] % 10000L) / 100L)) != 0)
        {
            j = 3 * (21 - byte5) + 2;
            abyte0[k + 1] = (byte)(int)(al1[byte5] % 100L);
            k += 2;
        } else
        {
            abyte0[k] = (byte)(int)al1[byte5];
            j = 3 * (21 - byte5) + 1;
            k++;
        }
        for(byte byte3 = (byte)(byte5 + 1); byte3 <= 21; byte3++)
        {
            abyte0[k] = (byte)(int)(al1[byte3] / 10000L);
            abyte0[k + 1] = (byte)(int)((al1[byte3] % 10000L) / 100L);
            abyte0[k + 2] = (byte)(int)(al1[byte3] % 100L);
            k += 3;
        }

        for(int k1 = k - 1; k1 >= 0; k1--)
        {
            if(abyte0[k1] != 0)
            {
                break;
            }
            j--;
        }

        if(j > 19)
        {
            int i2 = 20;
            j = 19;
            if(abyte0[i2] >= 50)
            {
                i2--;
                for(abyte0[i2]++; abyte0[i2] == 100; abyte0[i2]++)
                {
                    if(i2 == 0)
                    {
                        i1++;
                        abyte0[i2] = 1;
                        break;
                    }
                    abyte0[i2] = 0;
                    i2--;
                }

                for(int j2 = j - 1; j2 >= 0; j2--)
                {
                    if(abyte0[j2] != 0)
                    {
                        break;
                    }
                    j--;
                }

            }
        }
        if(i1 > 62)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        } else
        {
            byte abyte2[] = new byte[j + 1];
            abyte2[0] = (byte)i1;
            System.arraycopy(abyte0, 0, abyte2, 1, j);
            return _toLnxFmt(abyte2, flag1);
        }
    }

    // Decompiling method: toBytes  Signature: (S)[B
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 6 bytes, Code offset: 22533
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name word0 Type S At 0 6 Range 0 5 Init 0
    // RetValue   1 added: Name <returnValue> Type [B At 0 6 Range 0 5 Init 0 fixed
    public static byte[] toBytes(short word0)
    {
        return toBytes(word0);
    }

    // Decompiling method: toBytes  Signature: (Z)[B
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 14 bytes, Code offset: 22577
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name flag Type Z At 0 14 Range 0 13 Init 0
    // RetValue   1 added: Name <returnValue> Type [B At 0 14 Range 0 13 Init 0 fixed
    public static byte[] toBytes(boolean flag)
    {
        if(flag)
        {
            return toBytes(1L);
        } else
        {
            return toBytes(0L);
        }
    }

    // Decompiling method: toDouble  Signature: ([B)D
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 41 bytes, Code offset: 22637
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 41 Range 0 40 Init 0
    // RetValue   1 added: Name <returnValue> Type D At 0 41 Range 0 40 Init 0 fixed
    public static double toDouble(byte abyte0[])
    {
        if(_isZero(abyte0))
        {
            return 0.0D;
        }
        if(_isPosInf(abyte0))
        {
            return (1.0D / 0.0D);
        }
        if(_isNegInf(abyte0))
        {
            return (-1.0D / 0.0D);
        } else
        {
            return _getLnxLib().lnxnur(abyte0);
        }
    }

    // Decompiling method: toFloat  Signature: ([B)F
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 6 bytes, Code offset: 22740
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 6 Range 0 5 Init 0
    // RetValue   1 added: Name <returnValue> Type F At 0 6 Range 0 5 Init 0 fixed
    public static float toFloat(byte abyte0[])
    {
        return (float)toDouble(abyte0);
    }

    // Decompiling method: toFormattedText  Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    // Max stack: 4, #locals: 3, #params: 3
    // Code length: 15 bytes, Code offset: 22784
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 15 Range 0 14 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 15 Range 0 14 Init 0
    // Parameter  2 added: Name s1 Type Ljava/lang/String; At 0 15 Range 0 14 Init 0
    // RetValue   3 added: Name <returnValue> Type Ljava/lang/String; At 0 15 Range 0 14 Init 0 fixed
    public String toFormattedText(String s, String s1)
        throws SQLException
    {
        return _getLnxLib().lnxnfn(shareBytes(), s, s1);
    }

    // Decompiling method: toInt  Signature: ([B)I
    // Max stack: 4, #locals: 5, #params: 1
    // Code length: 134 bytes, Code offset: 22847
    // Line Number Table found: 12 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 134 Range 0 133 Init 0
    // RetValue   5 added: Name <returnValue> Type I At 0 134 Range 0 133 Init 0 fixed
    // LocalVar   1 added: Name s Type Ljava/lang/String; At 32 2 Range 32 33 Init 32
    // LocalVar   2 added: Name d Type D At 40 88 Range 40 127 Init 40
    // LocalVar   4 added: Name i Type I At 129 4 Range 129 132 Init 129
    public static int toInt(byte abyte0[])
        throws SQLException
    {
        if(_isInf(abyte0))
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        }
        String s = _getLnxLib().lnxnuc(abyte0, INT_MAX, null);
        double d = Double.valueOf(s).doubleValue();
        if((float)d > FLOAT_MAX_INT || (float)d < FLOAT_MIN_INT)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        }
        if(d > DOUBLE_MAX_INT && d <= DOUBLE_MAX_INT_2)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        }
        if(d < DOUBLE_MIN_INT && d >= DOUBLE_MIN_INT_2)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        } else
        {
            int i = (int)d;
            return i;
        }
    }

    // Decompiling method: toJdbc  Signature: ()Ljava/lang/Object;
    // Max stack: 3, #locals: 2, #params: 1
    // Code length: 18 bytes, Code offset: 23073
    // Exception table: 1 entries
    //           start  0 end 5 handler 5 type SQLException
    // Line Number Table found: 4 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 18 Range 0 17 Init 0 fixed
    // RetValue   2 added: Name <returnValue> Type Ljava/lang/Object; At 0 18 Range 0 17 Init 0 fixed
    // LocalVar   1 added: Name sqlexception Type Ljava/sql/SQLException; At 5 6 Range 5 10 Init 5
    public Object toJdbc()
        throws SQLException
    {
        try
        {
            return bigDecimalValue();
        }
        catch(SQLException sqlexception)
        {
            return new SQLException(sqlexception.getMessage());
        }
    }

    // Decompiling method: toLong  Signature: ([B)J
    // Max stack: 3, #locals: 1, #params: 1
    // Code length: 58 bytes, Code offset: 23159
    // Line Number Table found: 9 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 58 Range 0 57 Init 0
    // RetValue   1 added: Name <returnValue> Type J At 0 58 Range 0 57 Init 0 fixed
    public static long toLong(byte abyte0[])
        throws SQLException
    {
        if(_isZero(abyte0))
        {
            return 0L;
        }
        if(_isInf(abyte0) || Datum.compareBytes(abyte0, MAX_LONG) > 0 || Datum.compareBytes(abyte0, MIN_LONG) < 0)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        } else
        {
            return _getLnxLib().lnxsni(abyte0);
        }
    }

    // Decompiling method: toShort  Signature: ([B)S
    // Max stack: 4, #locals: 3, #params: 1
    // Code length: 39 bytes, Code offset: 23297
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 39 Range 0 38 Init 0
    // RetValue   3 added: Name <returnValue> Type S At 0 39 Range 0 38 Init 0 fixed
    // LocalVar   1 added: Name l Type J At 1 1 Range 1 1 Init 1
    // LocalVar   1 added: Name l1 Type J At 6 30 Range 6 35 Init 6
    // LocalVar   1 name l1(J) merged out into l(J)
    public static short toShort(byte abyte0[])
        throws SQLException
    {
        long l = 0L;
        l = toLong(abyte0);
        if(l > 32767L || l < -32768L)
        {
            throw new SQLException(CoreException.getMessage((byte)3));
        } else
        {
            return (short)(int)l;
        }
    }

    // Decompiling method: toString  Signature: ([B)Ljava/lang/String;
    // Max stack: 5, #locals: 10, #params: 1
    // Code length: 484 bytes, Code offset: 23408
    // Line Number Table found: 66 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 484 Range 0 483 Init 0
    // RetValue  10 added: Name <returnValue> Type Ljava/lang/String; At 0 484 Range 0 483 Init 0 fixed
    // LocalVar   1 added: Name flag Type Z At 1 479 Range 1 479 Init 1
    // LocalVar   3 added: Name abyte1 Type [B At 65 396 Range 65 460 Init 65
    // LocalVar   4 added: Name byte0 Type B At 69 161 Range 69 229 Init 69
    // LocalVar   5 added: Name i Type I At 75 354 Range 75 428 Init 75
    // LocalVar   6 added: Name j Type I At 84 156 Range 84 239 Init 84
    // LocalVar   8 added: Name k Type I At 99 34 Range 99 132 Init 99
    // LocalVar   9 added: Name ac Type [C At 135 343 Range 135 477 Init 135
    // LocalVar   1 chged: Name l Oname flag Type I At 147 3 Range 1 479 Init 1
    // LocalVar   2 added: Name byte1 Type B At 171 23 Range 171 193 Init 171
    // LocalVar   7 added: Name i1 Type I At 241 162 Range 241 402 Init 241
    // LocalVar   2 added: Name byte2 Type B At 276 70 Range 276 345 Init 276
    // LocalVar   2 added: Name flag Type Z At 407 55 Range 407 461 Init 407
    // LocalVar   2 chged: Name j1 Oname flag Type I At 426 1 Range 407 461 Init 407
    // LocalVar   2 chged: Name k1 Oname byte1 Type I At 187 3 Range 171 193 Init 171
    // LocalVar   4 chged: Name l1 Oname byte0 Type I At 190 3 Range 69 229 Init 69
    // LocalVar   2 chged: Name i2 Oname byte2 Type I At 307 3 Range 276 345 Init 276
    public static String toString(byte abyte0[])
    {
        int i = 0;
        if(_isZero(abyte0))
        {
            return new String("0");
        }
        if(_isPosInf(abyte0))
        {
            return (new Double((1.0D / 0.0D))).toString();
        }
        if(_isNegInf(abyte0))
        {
            return (new Double((-1.0D / 0.0D))).toString();
        }
        byte abyte1[] = _fromLnxFmt(abyte0);
        int i1 = abyte1[0];
        int j1 = abyte1.length - 1;
        int k1 = i1 - (j1 - 1);
        int i2;
        if(k1 >= 0)
        {
            i2 = 2 * (i1 + 1) + 1;
        } else
        if(i1 >= 0)
        {
            i2 = 2 * (j1 + 1);
        } else
        {
            i2 = 2 * (j1 - i1) + 3;
        }
        char ac[] = new char[i2];
        if(!_isPositive(abyte0))
        {
            ac[i++] = '-';
        }
        if(k1 >= 0)
        {
            i += _byteToChars(abyte1[1], ac, i);
            for(int j = 2; j <= j1;)
            {
                _byteTo2Chars(abyte1[j], ac, i);
                i += 2;
                j++;
                i1--;
            }

            if(i1 > 0)
            {
                for(; i1 > 0; i1--)
                {
                    ac[i++] = '0';
                    ac[i++] = '0';
                }

            }
        } else
        {
            int l1 = j1 + k1;
            if(l1 > 0)
            {
                i += _byteToChars(abyte1[1], ac, i);
                if(l1 == 1)
                {
                    ac[i++] = '.';
                }
                int k;
                for(k = 2; k < j1; k++)
                {
                    _byteTo2Chars(abyte1[k], ac, i);
                    i += 2;
                    if(l1 == k)
                    {
                        ac[i++] = '.';
                    }
                }

                if(abyte1[k] % 10 == 0)
                {
                    i += _byteToChars((byte)(abyte1[k] / 10), ac, i);
                } else
                {
                    _byteTo2Chars(abyte1[k], ac, i);
                    i += 2;
                }
            } else
            {
                ac[i++] = '0';
                ac[i++] = '.';
                for(; l1 < 0; l1++)
                {
                    ac[i++] = '0';
                    ac[i++] = '0';
                }

                int l;
                for(l = 1; l < j1; l++)
                {
                    _byteTo2Chars(abyte1[l], ac, i);
                    i += 2;
                }

                if(abyte1[l] % 10 == 0)
                {
                    i += _byteToChars((byte)(abyte1[l] / 10), ac, i);
                } else
                {
                    _byteTo2Chars(abyte1[l], ac, i);
                    i += 2;
                }
            }
        }
        return new String(ac, 0, i);
    }

    // Decompiling method: toText  Signature: (ILjava/lang/String;)Ljava/lang/String;
    // Max stack: 4, #locals: 3, #params: 3
    // Code length: 15 bytes, Code offset: 24190
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 15 Range 0 14 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 15 Range 0 14 Init 0
    // Parameter  2 added: Name s Type Ljava/lang/String; At 0 15 Range 0 14 Init 0
    // RetValue   3 added: Name <returnValue> Type Ljava/lang/String; At 0 15 Range 0 14 Init 0 fixed
    public String toText(int i, String s)
        throws SQLException
    {
        return _getLnxLib().lnxnuc(shareBytes(), i, s);
    }

    // Decompiling method: truncate  Signature: (I)Loracle/sql/NUMBER;
    // Max stack: 5, #locals: 2, #params: 2
    // Code length: 21 bytes, Code offset: 24253
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 21 Range 0 20 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 21 Range 0 20 Init 0 fixed
    public NUMBER truncate(int i)
        throws SQLException
    {
        return new NUMBER(_getLnxLib().lnxtru(shareBytes(), i));
    }

    // Decompiling method: zero  Signature: ()Loracle/sql/NUMBER;
    // Max stack: 3, #locals: 0, #params: 0
    // Code length: 11 bytes, Code offset: 24322
    // Line Number Table found: 1 entries
    // RetValue   0 added: Name <returnValue> Type Loracle/sql/NUMBER; At 0 11 Range 0 10 Init 0 fixed
    public static NUMBER zero()
    {
        return new NUMBER(_makeZero());
    }

    // Decompiling method: <clinit>  Signature: ()V
    // Max stack: 4, #locals: 0, #params: 0
    // Code length: 474 bytes, Code offset: 7489
    // Line Number Table found: 90 entries
    // RetValue   0 added: Name <returnValue> Type V At 0 474 Range 0 473 Init 0 fixed
    static 
    {
        /* MAX_LONG = toBytes(0x7fffffffffffffffL); */
        /* MIN_LONG = toBytes(0x8000000000000000L); */
        /* BIGDEC_NEGZERO = new BigDecimal("-0"); */
        /* BIGDEC_ZERO = BigDecimal.valueOf(0L); */
        /* BIGDEC_ONE = BigDecimal.valueOf(1L); */
        /* BIGINT_ZERO = BigInteger.valueOf(0L); */
        /* BIGINT_HUND = BigInteger.valueOf(100L); */
        /* PI = (new byte[] {
            -63, 4, 15, 16, 93, 66, 36, 90, 80, 33, 
            39, 47, 27, 44, 39, 33, 80, 51, 29, 85, 
            21
        }); */
        /* E = (new byte[] {
            -63, 3, 72, 83, 82, 83, 85, 60, 5, 53, 
            36, 37, 3, 88, 48, 14, 53, 67, 25, 98, 
            77
        }); */
        /* LN10 = (new byte[] {
            -63, 3, 31, 26, 86, 10, 30, 95, 5, 57, 
            85, 2, 80, 92, 46, 47, 85, 37, 43, 8, 
            61
        }); */
        /* INT_MAX = 15; */
        /* FLOAT_MAX_INT = 2.147484E+09F; */
        /* FLOAT_MIN_INT = -2.147484E+09F; */
        /* DOUBLE_MAX_INT = 2147483647D; */
        /* DOUBLE_MIN_INT = -2147483648D; */
        /* DOUBLE_MAX_INT_2 = 2147483649D; */
        /* DOUBLE_MIN_INT_2 = -2147483649D; */
    }
}
