📄 jpegdecoder.java
字号:
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 + -