⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpegdecoder.java

📁 一款J2ME浏览器
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        for (int i1 = 0; i1 < i; i1++) {
            int l = _mth0122();
            if (l > 5) {
                return false;
            }
            ai[i1] = l;
            l = _mth0122();
            ai1[i1] = l >> 4;
            ai2[i1] = l & 0xf;
            if (ai1[i1] > 4 || ai2[i1] > 4) {
                return false;
            }
        }

        _mth0121(3);
        int ai4[] = new int[4];
        int ai5[] = new int[100];
        int ai6[] = new int[64];
        int ai7[] = new int[140];
        int j1 = 0;
        int k1 = 0;
        int l1 = 0;
        boolean flag = false;
        boolean flag1 = false;
        DecodeParam decodeParam = new DecodeParam();
        boolean flag2 = false;
        for (int k2 = 0; k2 < 4; k2++) {
            ai3[k2] = 0;
            ai4[k2] = 0;
        }

        decodeParam.DC = ai7;
        boolean flag4 = false;
        label0:
        do {
            int l2 = 0;
            label1:
            do {
                if (l2 >= i) {
                    continue label0;
                }
                HuffmanTable huffmantable1 = _fld011C[ai1[l2]];
                HuffmanTable huffmantable = _fld011D[ai2[l2]];
                int i4 = ai[l2];
                int k4 = 0;
                do {
                    if (k4 >= _fld011B[i4].h * _fld011B[i4].v) {
                        break;
                    }
                    int j2 = 0;
                    label2:
                    do {
                        int i2;
                        int ai9[];
                        label3:
                        {
                            int j5;
                            label4:
                            {
                                int l6;
                                label5:
                                {
                                    if (j2 >= 64) {
                                        break label2;
                                    }
                                    if (j1 <= 30 && !flag) {
                                        for (int l4 = 0; l4 < j1; l4++) {
                                            ai7[l4] = ai7[l1 + l4];
                                        }

                                        l1 = 0;
                                        int i5;
                                        if (poolsize - FA > 100) {
                                            i5 = 100;
                                        } else {
                                            i5 = poolsize - FA;
                                        }
                                        for (int l5 = 0; l5 < i5; l5++) {
                                            ai7[j1 + l5] = _mth0122();
                                        }

                                        j1 += i5;
                                        if (FA == poolsize) {
                                            flag = true;
                                        }
                                    }
                                    decodeParam.DD = l1;
                                    decodeParam.DE = k1;
                                    decodeParam.DF = j1;
                                    boolean flag3;
                                    if (j2 == 0) {
                                        flag3 = huffmantable1.deCode(decodeParam);
                                        i2 = HuffmanTable.deCode_code;
                                    } else {
                                        flag3 = huffmantable.deCode(decodeParam);
                                        i2 = HuffmanTable.deCode_code;
                                    }
                                    k1 = decodeParam.DE;
                                    l1 = decodeParam.DD;
                                    j1 = decodeParam.DF;
                                    k1 %= 8;
                                    if (j1 <= 0) {
                                        return false;
                                    }
                                    if (!flag3) {
                                        break label1;
                                    }
                                    ai9 = new int[4];
                                    if (j2 != 0) {
                                        break label3;
                                    }
                                    if (i2 == 0) {
                                        j5 = 0;
                                        break label4;
                                    }
                                    int j7 = i2;
                                    int j8 = 0;
                                    l6 = k1;
                                    if (k1 == 0) {
                                        if (ai7[l1] == 255) {
                                            while (ai7[l1 + 1] == 255) {
                                                l1++;
                                                j1--;
                                            }
                                            if (ai7[l1 + 1] != 0) {
                                                break label1;
                                            }
                                        } else if (ai7[l1] == 0 && ai7[l1 - 1] == 255) {
                                            l1++;
                                            j1--;
                                            if (ai7[l1] == 255) {
                                                while (ai7[l1 + 1] == 255) {
                                                    l1++;
                                                    j1--;
                                                }
                                                if (ai7[l1 + 1] != 0) {
                                                    break label1;
                                                }
                                            }
                                        }
                                    }
                                    label6:
                                    do {
                                        do {
                                            label7:
                                            do {
                                                do {
                                                    do {
                                                        if (j7 <= 0 || j8 >= 4) {
                                                            break label5;
                                                        }
                                                        int l7 = 8 - k1;
                                                        ai9[j8] = ai7[l1];
                                                        if (j7 >= l7) {
                                                            l1++;
                                                            k1 = 0;
                                                            j1--;
                                                        } else {
                                                            k1 += j7;
                                                        }
                                                        j7 -= l7;
                                                        j8++;
                                                    } while (k1 != 0);
                                                    if (ai7[l1] != 255) {
                                                        continue label7;
                                                    }
                                                    while (ai7[l1 + 1] == 255) {
                                                        l1++;
                                                        j1--;
                                                    }
                                                } while (ai7[l1 + 1] == 0);
                                                break label6;
                                            } while (ai7[l1] != 0 || ai7[l1 - 1] != 255);
                                            l1++;
                                            j1--;
                                        } while (ai7[l1] != 255);
                                        while (ai7[l1 + 1] == 255) {
                                            l1++;
                                            j1--;
                                        }
                                    } while (ai7[l1 + 1] == 0);
                                    break label1;
                                }
                                j5 = ((ai9[0] & 0xff) << 24) + ((ai9[1] & 0xff) << 16) + ((ai9[2] & 0xff) << 8) + (ai9[3] & 0xff);
                                j5 <<= l6;
                                if (j5 > 0) {
                                    j5 = 0 - (~j5 >>> 32 - i2);
                                } else {
                                    j5 >>>= 32 - i2;
                                }
                            }
                            ai4[l2] += j5;
                            ai5[0] = ai4[l2];
                            j2++;
                            continue;
                        }
                        int k6;
                        int i7;
                        label8:
                        {
                            if (i2 == 0) {
                                while (j2 < 64) {
                                    ai5[j2] = 0;
                                    j2++;
                                }
                                continue;
                            }
                            if (i2 == 240) {
                                int l8 = 0;
                                while (l8 < 16) {
                                    ai5[j2] = 0;
                                    j2++;
                                    l8++;
                                }
                                continue;
                            }
                            int i6 = i2 >> 4;
                            k6 = i2 & 0xf;
                            for (int i9 = 0; i9 < i6; i9++) {
                                ai5[j2] = 0;
                                j2++;
                            }

                            if (k6 == 0) {
                                continue;
                            }
                            int k7 = k6;
                            int k8 = 0;
                            i7 = k1;
                            if (k1 == 0) {
                                if (ai7[l1] == 255) {
                                    while (ai7[l1 + 1] == 255) {
                                        l1++;
                                        j1--;
                                    }
                                    if (ai7[l1 + 1] != 0) {
                                        break label1;
                                    }
                                } else if (ai7[l1] == 0 && ai7[l1 - 1] == 255) {
                                    l1++;
                                    j1--;
                                    if (ai7[l1] == 255) {
                                        while (ai7[l1 + 1] == 255) {
                                            l1++;
                                            j1--;
                                        }
                                        if (ai7[l1 + 1] != 0) {
                                            break label1;
                                        }
                                    }
                                }
                            }
                            label9:
                            do {
                                do {
                                    label10:
                                    do {
                                        do {
                                            do {
                                                if (k7 <= 0 || k8 >= 4) {
                                                    break label8;
                                                }
                                                int i8 = 8 - k1;
                                                ai9[k8] = ai7[l1];
                                                if (k7 >= i8) {
                                                    l1++;
                                                    k1 = 0;
                                                    j1--;
                                                } else {
                                                    k1 += k7;
                                                }
                                                k7 -= i8;
                                                k8++;
                                            } while (k1 != 0);
                                            if (ai7[l1] != 255) {
                                                continue label10;
                                            }
                                            while (ai7[l1 + 1] == 255) {
                                                l1++;
                                                j1--;
                                            }
                                        } while (ai7[l1 + 1] == 0);
                                        break label9;
                                    } while (ai7[l1] != 0 || ai7[l1 - 1] != 255);
                                    l1++;
                                    j1--;
                                } while (ai7[l1] != 255);
                                while (ai7[l1 + 1] == 255) {
                                    l1++;
                                    j1--;
                                }
                            } while (ai7[l1 + 1] == 0);
                            break label1;
                        }
                        int k5 = ((ai9[0] & 0xff) << 24) + ((ai9[1] & 0xff) << 16) + ((ai9[2] & 0xff) << 8) + (ai9[3] & 0xff);
                        k5 <<= i7;
                        if (k5 > 0) {
                            k5 = 0 - (~k5 >>> 32 - k6);
                        } else {
                            k5 >>>= 32 - k6;
                        }
                        ai5[j2] = k5;
                        j2++;
                    } while (true);
                    if (j2 > 64) {
                        break label1;
                    }
                    int ai8[] = qt[_fld011B[i4].DB];
                    for (int j6 = 0; j6 < 64; j6++) {
                        ai5[j6] *= ai8[j6];
                        ai6[_fld0123[j6]] = ai5[j6];
                    }

                    _mth011E(ai6);
                    _mth011F(i4, ai3[l2], _fld0127, _fld0122[l2]);
                    ai3[l2]++;
                    k4++;
                } while (true);
                l2++;
            } while (true);
            do {
                int i3 = ai7[l1];
                int j3 = ai7[l1 + 1];
                if (i3 == 255 && j3 != 255 && j3 != 0) {
                    if (j3 < 208 || j3 > 215) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -