Permalink
Cannot retrieve contributors at this time
{ | |
bzlib2 decompression functions | |
============================== | |
- more than 2 times faster than standard C version | |
- no external .obj necessary | |
- 100% API compatible | |
- does CRC check | |
- fully tested under Delphi, work with (Cross)Kylix | |
asm translation extracted from isbunzip.dll and optimized for Delphi 7 | |
The contents of this file are subject to the Mozilla Public License | |
Version 1.1 (the "License"); you may not use this file except in | |
compliance with the License. You may obtain a copy of the License at | |
http://www.mozilla.org/MPL | |
Software distributed under the License is distributed on an "AS IS" | |
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the | |
License for the specific language governing rights and limitations | |
under the License. | |
The Initial Developer of the Original Code is Arnaud Bouchez. | |
This work is Copyright (C) 2008 Arnaud Bouchez - http://bouchez.info | |
All Rights Reserved. | |
} | |
procedure BzExcept; | |
begin | |
raise Exception.Create('BZ decompress error'); | |
end; | |
const | |
_BZ2_crc32Table: array[byte] of cardinal = ( // not the same as ZLib ! | |
$00000000, $04c11db7, $09823b6e, $0d4326d9, | |
$130476dc, $17c56b6b, $1a864db2, $1e475005, | |
$2608edb8, $22c9f00f, $2f8ad6d6, $2b4bcb61, | |
$350c9b64, $31cd86d3, $3c8ea00a, $384fbdbd, | |
$4c11db70, $48d0c6c7, $4593e01e, $4152fda9, | |
$5f15adac, $5bd4b01b, $569796c2, $52568b75, | |
$6a1936c8, $6ed82b7f, $639b0da6, $675a1011, | |
$791d4014, $7ddc5da3, $709f7b7a, $745e66cd, | |
$9823b6e0, $9ce2ab57, $91a18d8e, $95609039, | |
$8b27c03c, $8fe6dd8b, $82a5fb52, $8664e6e5, | |
$be2b5b58, $baea46ef, $b7a96036, $b3687d81, | |
$ad2f2d84, $a9ee3033, $a4ad16ea, $a06c0b5d, | |
$d4326d90, $d0f37027, $ddb056fe, $d9714b49, | |
$c7361b4c, $c3f706fb, $ceb42022, $ca753d95, | |
$f23a8028, $f6fb9d9f, $fbb8bb46, $ff79a6f1, | |
$e13ef6f4, $e5ffeb43, $e8bccd9a, $ec7dd02d, | |
$34867077, $30476dc0, $3d044b19, $39c556ae, | |
$278206ab, $23431b1c, $2e003dc5, $2ac12072, | |
$128e9dcf, $164f8078, $1b0ca6a1, $1fcdbb16, | |
$018aeb13, $054bf6a4, $0808d07d, $0cc9cdca, | |
$7897ab07, $7c56b6b0, $71159069, $75d48dde, | |
$6b93dddb, $6f52c06c, $6211e6b5, $66d0fb02, | |
$5e9f46bf, $5a5e5b08, $571d7dd1, $53dc6066, | |
$4d9b3063, $495a2dd4, $44190b0d, $40d816ba, | |
$aca5c697, $a864db20, $a527fdf9, $a1e6e04e, | |
$bfa1b04b, $bb60adfc, $b6238b25, $b2e29692, | |
$8aad2b2f, $8e6c3698, $832f1041, $87ee0df6, | |
$99a95df3, $9d684044, $902b669d, $94ea7b2a, | |
$e0b41de7, $e4750050, $e9362689, $edf73b3e, | |
$f3b06b3b, $f771768c, $fa325055, $fef34de2, | |
$c6bcf05f, $c27dede8, $cf3ecb31, $cbffd686, | |
$d5b88683, $d1799b34, $dc3abded, $d8fba05a, | |
$690ce0ee, $6dcdfd59, $608edb80, $644fc637, | |
$7a089632, $7ec98b85, $738aad5c, $774bb0eb, | |
$4f040d56, $4bc510e1, $46863638, $42472b8f, | |
$5c007b8a, $58c1663d, $558240e4, $51435d53, | |
$251d3b9e, $21dc2629, $2c9f00f0, $285e1d47, | |
$36194d42, $32d850f5, $3f9b762c, $3b5a6b9b, | |
$0315d626, $07d4cb91, $0a97ed48, $0e56f0ff, | |
$1011a0fa, $14d0bd4d, $19939b94, $1d528623, | |
$f12f560e, $f5ee4bb9, $f8ad6d60, $fc6c70d7, | |
$e22b20d2, $e6ea3d65, $eba91bbc, $ef68060b, | |
$d727bbb6, $d3e6a601, $dea580d8, $da649d6f, | |
$c423cd6a, $c0e2d0dd, $cda1f604, $c960ebb3, | |
$bd3e8d7e, $b9ff90c9, $b4bcb610, $b07daba7, | |
$ae3afba2, $aafbe615, $a7b8c0cc, $a379dd7b, | |
$9b3660c6, $9ff77d71, $92b45ba8, $9675461f, | |
$8832161a, $8cf30bad, $81b02d74, $857130c3, | |
$5d8a9099, $594b8d2e, $5408abf7, $50c9b640, | |
$4e8ee645, $4a4ffbf2, $470cdd2b, $43cdc09c, | |
$7b827d21, $7f436096, $7200464f, $76c15bf8, | |
$68860bfd, $6c47164a, $61043093, $65c52d24, | |
$119b4be9, $155a565e, $18197087, $1cd86d30, | |
$029f3d35, $065e2082, $0b1d065b, $0fdc1bec, | |
$3793a651, $3352bbe6, $3e119d3f, $3ad08088, | |
$2497d08d, $2056cd3a, $2d15ebe3, $29d4f654, | |
$c5a92679, $c1683bce, $cc2b1d17, $c8ea00a0, | |
$d6ad50a5, $d26c4d12, $df2f6bcb, $dbee767c, | |
$e3a1cbc1, $e760d676, $ea23f0af, $eee2ed18, | |
$f0a5bd1d, $f464a0aa, $f9278673, $fde69bc4, | |
$89b8fd09, $8d79e0be, $803ac667, $84fbdbd0, | |
$9abc8bd5, $9e7d9662, $933eb0bb, $97ffad0c, | |
$afb010b1, $ab710d06, $a6322bdf, $a2f33668, | |
$bcb4666d, $b8757bda, $b5365d03, $b1f740b4 ); | |
_BZ2_rNums: array[0..511] of cardinal = ( | |
619, 720, 127, 481, 931, 816, 813, 233, 566, 247, | |
985, 724, 205, 454, 863, 491, 741, 242, 949, 214, | |
733, 859, 335, 708, 621, 574, 73, 654, 730, 472, | |
419, 436, 278, 496, 867, 210, 399, 680, 480, 51, | |
878, 465, 811, 169, 869, 675, 611, 697, 867, 561, | |
862, 687, 507, 283, 482, 129, 807, 591, 733, 623, | |
150, 238, 59, 379, 684, 877, 625, 169, 643, 105, | |
170, 607, 520, 932, 727, 476, 693, 425, 174, 647, | |
73, 122, 335, 530, 442, 853, 695, 249, 445, 515, | |
909, 545, 703, 919, 874, 474, 882, 500, 594, 612, | |
641, 801, 220, 162, 819, 984, 589, 513, 495, 799, | |
161, 604, 958, 533, 221, 400, 386, 867, 600, 782, | |
382, 596, 414, 171, 516, 375, 682, 485, 911, 276, | |
98, 553, 163, 354, 666, 933, 424, 341, 533, 870, | |
227, 730, 475, 186, 263, 647, 537, 686, 600, 224, | |
469, 68, 770, 919, 190, 373, 294, 822, 808, 206, | |
184, 943, 795, 384, 383, 461, 404, 758, 839, 887, | |
715, 67, 618, 276, 204, 918, 873, 777, 604, 560, | |
951, 160, 578, 722, 79, 804, 96, 409, 713, 940, | |
652, 934, 970, 447, 318, 353, 859, 672, 112, 785, | |
645, 863, 803, 350, 139, 93, 354, 99, 820, 908, | |
609, 772, 154, 274, 580, 184, 79, 626, 630, 742, | |
653, 282, 762, 623, 680, 81, 927, 626, 789, 125, | |
411, 521, 938, 300, 821, 78, 343, 175, 128, 250, | |
170, 774, 972, 275, 999, 639, 495, 78, 352, 126, | |
857, 956, 358, 619, 580, 124, 737, 594, 701, 612, | |
669, 112, 134, 694, 363, 992, 809, 743, 168, 974, | |
944, 375, 748, 52, 600, 747, 642, 182, 862, 81, | |
344, 805, 988, 739, 511, 655, 814, 334, 249, 515, | |
897, 955, 664, 981, 649, 113, 974, 459, 893, 228, | |
433, 837, 553, 268, 926, 240, 102, 654, 459, 51, | |
686, 754, 806, 760, 493, 403, 415, 394, 687, 700, | |
946, 670, 656, 610, 738, 392, 760, 799, 887, 653, | |
978, 321, 576, 617, 626, 502, 894, 679, 243, 440, | |
680, 879, 194, 572, 640, 724, 926, 56, 204, 700, | |
707, 151, 457, 449, 797, 195, 791, 558, 945, 679, | |
297, 59, 87, 824, 713, 663, 412, 693, 342, 606, | |
134, 108, 571, 364, 631, 212, 174, 643, 304, 329, | |
343, 97, 430, 751, 497, 314, 983, 374, 822, 928, | |
140, 206, 73, 263, 980, 736, 876, 478, 430, 305, | |
170, 514, 364, 692, 829, 82, 855, 953, 676, 246, | |
369, 970, 294, 750, 807, 827, 150, 790, 288, 923, | |
804, 378, 215, 828, 592, 281, 565, 555, 710, 82, | |
896, 831, 547, 261, 524, 462, 293, 465, 502, 56, | |
661, 821, 976, 991, 658, 869, 905, 758, 745, 193, | |
768, 550, 608, 933, 378, 286, 215, 979, 792, 961, | |
61, 688, 793, 644, 986, 403, 106, 366, 905, 644, | |
372, 567, 466, 434, 645, 210, 389, 550, 919, 135, | |
780, 773, 635, 389, 707, 100, 626, 958, 165, 504, | |
920, 176, 193, 713, 857, 265, 203, 50, 668, 108, | |
645, 990, 626, 197, 510, 357, 358, 850, 858, 364, | |
936, 638 ); // from original randtable.c | |
function BZ2_bzDecompressInit(var strm: TBZStreamRec; | |
verbosity, small: Integer): Integer; cdecl; | |
asm pop ebp // auto-generated push ebp; mov ebp,esp | |
push ebx | |
push ebp | |
push esi | |
push edi | |
@002: mov esi,[esp + 14H] | |
xor edi, edi | |
cmp esi, edi | |
je @005 | |
mov ebx,[esp + 1CH] | |
cmp ebx, edi | |
jz @003 | |
cmp ebx, 1 | |
jnz @005 | |
@003: mov ebp,[esp + 18H] | |
cmp ebp, edi | |
jl @005 | |
cmp ebp, 4 | |
jg @005 | |
mov eax,[esi + 24H] | |
cmp eax, edi | |
jz @005 | |
cmp [esi + 28H], edi | |
jz @005 | |
mov ecx,[esi + 2CH] | |
push 1 | |
push 64116 | |
push ecx | |
call eax | |
cmp eax, edi | |
jnz @004 | |
pop edi | |
pop esi | |
pop ebp | |
mov eax, -3 | |
pop ebx | |
ret | |
@004: mov [eax], esi | |
mov [esi + 20H], eax | |
mov dword ptr [eax + 04H], 10 | |
mov [eax + 20H], edi | |
mov [eax + 1CH], edi | |
mov [eax + 00000C64H], edi | |
mov [esi + 08H], edi | |
mov [esi + 0CH], edi | |
mov [esi + 18H], edi | |
mov [esi + 1CH], edi | |
mov [eax + 00000C54H], edi | |
mov [eax + 00000C50H], edi | |
mov [eax + 00000C4CH], edi | |
mov [eax + 2CH], edi | |
pop edi | |
mov [eax + 30H], ebp | |
pop esi | |
mov [eax + 28H], bl | |
pop ebp | |
xor eax, eax | |
pop ebx | |
ret | |
@005: pop edi | |
pop esi | |
pop ebp | |
mov eax, -2 | |
pop ebx | |
ret | |
end; | |
function BZ2_bzDecompress(var strm: TBZStreamRec): Integer; cdecl; | |
asm pop ebp // auto-generated push ebp; mov ebp,esp | |
mov eax,[esp + 04H] | |
push esi | |
test eax, eax | |
jnz @010 | |
mov eax, -2 | |
pop esi | |
ret | |
@010: mov esi,[eax + 20H] | |
test esi, esi | |
jnz @011 | |
mov eax, -2 | |
pop esi | |
ret | |
@011: cmp [esi], eax | |
jz @012 | |
mov eax, -2 | |
pop esi | |
ret | |
@012: mov eax,[esi + 04H] | |
cmp eax, 1 | |
je @016 | |
cmp eax, 2 | |
jnz @015 | |
mov al,[esi + 28H] | |
push esi | |
test al, al | |
jz @013 | |
call @048 | |
jmp @014 | |
@013: call @021 | |
@014: test al, al | |
jnz @017 | |
mov eax,[esi + 0000FA40H] | |
mov ecx,[esi + 00000440H] | |
inc eax | |
cmp ecx, eax | |
jnz @018 | |
mov eax,[esi + 0CH] | |
test eax, eax | |
jnz @018 | |
mov ecx,[esi + 00000C60H] | |
mov eax,[esi + 00000C58H] | |
not ecx | |
cmp ecx, eax | |
mov [esi + 00000C60H], ecx | |
jnz @017 | |
mov eax,[esi + 00000C64H] | |
mov dword ptr [esi + 04H], 14 | |
mov edx, eax | |
add eax, eax | |
shr edx, 31 | |
or edx, eax | |
xor edx, ecx | |
mov [esi + 00000C64H], edx | |
@015: cmp dword ptr [esi + 04H], 10 | |
jl @012 | |
push esi | |
call @070 | |
cmp eax, 4 | |
jz @019 | |
cmp dword ptr [esi + 04H], 2 | |
jnz @020 | |
jmp @012 | |
@016: or eax, 0FFFFFFFFH | |
pop esi | |
ret | |
@017: mov eax, -4 | |
pop esi | |
ret | |
@018: xor eax, eax | |
pop esi | |
ret | |
@019: mov eax,[esi + 00000C64H] | |
mov ecx,[esi + 00000C5CH] | |
sub eax, ecx | |
neg eax | |
sbb eax, eax | |
and al, 0F8H | |
add eax, 4 | |
@020: pop esi | |
ret | |
@021: mov eax,[esp + 04H] | |
sub esp, 28 | |
mov cl,[eax + 10H] | |
push ebx | |
push ebp | |
push esi | |
test cl, cl | |
push edi | |
je @032 | |
@022: mov ecx,[eax] | |
mov edx,[ecx + 14H] | |
test edx, edx | |
je @040 | |
mov edx,[eax + 0CH] | |
test edx, edx | |
jz @023 | |
mov ecx,[ecx + 10H] | |
mov dl,[eax + 08H] | |
xor ebx, ebx | |
mov [ecx], dl | |
mov ecx,[eax + 00000C60H] | |
mov bl,[eax + 08H] | |
mov edx, ecx | |
mov ebp,[eax + 0CH] | |
shr edx, 24 | |
xor edx, ebx | |
shl ecx, 8 | |
mov edx,dword ptr[_BZ2_crc32Table + edx*4] | |
xor edx, ecx | |
mov ecx,[eax] | |
dec ebp | |
mov [eax + 00000C60H], edx | |
mov [eax + 0CH], ebp | |
mov ebx,[ecx + 10H] | |
inc ebx | |
mov [ecx + 10H], ebx | |
mov ecx,[eax] | |
mov edi,[ecx + 14H] | |
dec edi | |
mov [ecx + 14H], edi | |
mov ecx,[eax] | |
mov esi,[ecx + 18H] | |
inc esi | |
mov [ecx + 18H], esi | |
mov ecx,[eax] | |
mov edx,[ecx + 18H] | |
test edx, edx | |
jnz @022 | |
inc [ecx + 1CH] | |
jmp @022 | |
@023: mov ebx,[eax + 0000FA40H] | |
mov esi,[eax + 00000440H] | |
inc ebx | |
cmp esi, ebx | |
je @040 | |
jg @036 | |
mov cl,[eax + 3CH] | |
mov ebp,[eax + 00000C4CH] | |
mov edx,[eax + 38H] | |
mov dword ptr [eax + 0CH], 1 | |
mov [eax + 08H], cl | |
mov ecx,[ebp + edx*4] | |
mov [eax + 38H], ecx | |
mov dl, cl | |
shr ecx, 8 | |
mov [eax + 38H], ecx | |
mov ecx,[eax + 14H] | |
test ecx, ecx | |
jnz @024 | |
mov ecx,[eax + 18H] | |
mov edi,dword ptr [_BZ2_rNums + ecx*4] | |
inc ecx | |
cmp ecx, 512 | |
mov [eax + 14H], edi | |
mov [eax + 18H], ecx | |
jnz @024 | |
mov dword ptr [eax + 18H], 0 | |
@024: mov edi,[eax + 14H] | |
dec edi | |
cmp edi, 1 | |
mov [eax + 14H], edi | |
sete cl | |
xor dl, cl | |
inc esi | |
cmp esi, ebx | |
mov [esp + 30H], dl | |
mov [eax + 00000440H], esi | |
je @022 | |
mov ecx,[esp + 30H] | |
mov edx,[eax + 3CH] | |
and ecx, 000000FFH | |
cmp ecx, edx | |
jz @025 | |
mov [eax + 3CH], ecx | |
jmp @022 | |
@025: mov edx,[eax + 38H] | |
mov dword ptr [eax + 0CH], 2 | |
mov ecx,[ebp + edx*4] | |
mov [eax + 38H], ecx | |
mov dl, cl | |
shr ecx, 8 | |
test edi, edi | |
mov [eax + 38H], ecx | |
jnz @026 | |
mov ecx,[eax + 18H] | |
mov edi,dword ptr [_BZ2_rNums + ecx*4] | |
inc ecx | |
cmp ecx, 512 | |
mov [eax + 14H], edi | |
mov [eax + 18H], ecx | |
jnz @026 | |
mov dword ptr [eax + 18H], 0 | |
@026: mov edi,[eax + 14H] | |
dec edi | |
cmp edi, 1 | |
mov [eax + 14H], edi | |
sete cl | |
xor dl, cl | |
inc esi | |
cmp esi, ebx | |
mov [esp + 30H], dl | |
mov [eax + 00000440H], esi | |
je @022 | |
mov ecx,[esp + 30H] | |
mov edx,[eax + 3CH] | |
and ecx, 000000FFH | |
cmp ecx, edx | |
jz @027 | |
mov [eax + 3CH], ecx | |
jmp @022 | |
@027: mov edx,[eax + 38H] | |
mov dword ptr [eax + 0CH], 3 | |
mov ecx,[ebp + edx*4] | |
mov [eax + 38H], ecx | |
mov dl, cl | |
shr ecx, 8 | |
test edi, edi | |
mov [eax + 38H], ecx | |
jnz @028 | |
mov ecx,[eax + 18H] | |
mov edi,dword ptr [_BZ2_rNums + ecx*4] | |
inc ecx | |
cmp ecx, 512 | |
mov [eax + 14H], edi | |
mov [eax + 18H], ecx | |
jnz @028 | |
mov dword ptr [eax + 18H], 0 | |
@028: mov edi,[eax + 14H] | |
dec edi | |
cmp edi, 1 | |
mov [eax + 14H], edi | |
sete cl | |
xor dl, cl | |
inc esi | |
cmp esi, ebx | |
mov [esp + 30H], dl | |
mov [eax + 00000440H], esi | |
je @022 | |
mov ecx,[esp + 30H] | |
mov edx,[eax + 3CH] | |
and ecx, 000000FFH | |
cmp ecx, edx | |
jz @029 | |
mov [eax + 3CH], ecx | |
jmp @022 | |
@029: mov edx,[eax + 38H] | |
mov ecx,[ebp + edx*4] | |
mov dl, cl | |
mov [eax + 38H], ecx | |
mov [esp + 30H], dl | |
xor edx, edx | |
shr ecx, 8 | |
cmp edi, edx | |
mov [eax + 38H], ecx | |
jnz @030 | |
mov ecx,[eax + 18H] | |
mov edi,dword ptr [_BZ2_rNums + ecx*4] | |
inc ecx | |
cmp ecx, 512 | |
mov [eax + 14H], edi | |
mov [eax + 18H], ecx | |
jnz @030 | |
mov [eax + 18H], edx | |
@030: mov ecx,[eax + 14H] | |
mov edi,[esp + 30H] | |
dec ecx | |
inc esi | |
cmp ecx, 1 | |
mov [eax + 14H], ecx | |
sete bl | |
and ebx, 000000FFH | |
and edi, 000000FFH | |
xor ebx, edi | |
mov edi,[eax + 38H] | |
add ebx, 4 | |
mov [eax + 00000440H], esi | |
mov [eax + 0CH], ebx | |
mov edi,[ebp + edi*4] | |
xor ebx, ebx | |
mov [eax + 38H], edi | |
mov bl,[eax + 38H] | |
mov [eax + 3CH], ebx | |
mov ebx, edi | |
shr ebx, 8 | |
cmp ecx, edx | |
mov [eax + 38H], ebx | |
jnz @031 | |
mov ecx,[eax + 18H] | |
mov edi,dword ptr [_BZ2_rNums + ecx*4] | |
inc ecx | |
cmp ecx, 512 | |
mov [eax + 14H], edi | |
mov [eax + 18H], ecx | |
jnz @031 | |
mov [eax + 18H], edx | |
@031: mov ebx,[eax + 14H] | |
xor edx, edx | |
dec ebx | |
mov ecx, ebx | |
mov [eax + 14H], ebx | |
cmp ecx, 1 | |
mov ecx,[eax + 3CH] | |
sete dl | |
xor ecx, edx | |
inc esi | |
mov [eax + 3CH], ecx | |
mov [eax + 00000440H], esi | |
jmp @022 | |
@032: mov ebx,[eax] | |
mov cl,[eax + 08H] | |
mov ebp,[eax + 00000440H] | |
mov edi,[eax + 00000C60H] | |
mov ebx,[ebx + 10H] | |
mov esi,[eax + 0CH] | |
mov [esp + 14H], ebx | |
mov ebx,[eax] | |
mov edx,[eax + 3CH] | |
mov [esp + 18H], cl | |
mov ebx,[ebx + 14H] | |
mov ecx,[eax + 00000C4CH] | |
mov [esp + 10H], ebx | |
mov [esp + 28H], ebx | |
mov ebx,[eax + 0000FA40H] | |
mov [esp + 20H], ecx | |
mov ecx,[eax + 38H] | |
inc ebx | |
mov [esp + 1CH], ebp | |
mov [esp + 24H], ebx | |
@033: test esi, esi | |
jle @035 | |
@034: mov ebx,[esp + 10H] | |
test ebx, ebx | |
jz @038 | |
cmp esi, 1 | |
je @043 | |
mov ebp,[esp + 14H] | |
mov bl,[esp + 18H] | |
mov [ebp], bl | |
mov ebp,[esp + 18H] | |
mov ebx, edi | |
and ebp, 000000FFH | |
shr ebx, 24 | |
xor ebx, ebp | |
mov ebp,[esp + 14H] | |
shl edi, 8 | |
mov ebx,dword ptr [_BZ2_crc32Table + ebx*4] | |
xor edi, ebx | |
mov ebx,[esp + 10H] | |
dec esi | |
inc ebp | |
dec ebx | |
mov [esp + 14H], ebp | |
mov ebp,[esp + 1CH] | |
mov [esp + 10H], ebx | |
jmp @034 | |
@035: mov esi,[esp + 24H] | |
cmp ebp, esi | |
jle @037 | |
@036: pop edi | |
pop esi | |
pop ebp | |
mov al, 1 | |
pop ebx | |
add esp, 28 | |
ret 4 | |
@037: jnz @041 | |
xor esi, esi | |
@038: mov ebx,[eax] | |
mov ebx,[ebx + 18H] | |
mov [esp + 30H], ebx | |
mov ebp, ebx | |
mov ebx,[esp + 10H] | |
sub ebp, ebx | |
mov ebx,[esp + 28H] | |
add ebp, ebx | |
mov ebx,[eax] | |
mov [ebx + 18H], ebp | |
mov ebx,[eax] | |
mov ebp,[esp + 30H] | |
cmp [ebx + 18H], ebp | |
jnc @039 | |
inc [ebx + 1CH] | |
@039: mov bl,[esp + 18H] | |
mov [eax + 3CH], edx | |
mov edx,[esp + 20H] | |
mov [eax + 0CH], esi | |
mov esi,[esp + 1CH] | |
mov [eax + 38H], ecx | |
mov ecx,[eax] | |
mov [eax + 00000C4CH], edx | |
mov edx,[esp + 14H] | |
mov [eax + 00000C60H], edi | |
mov [eax + 08H], bl | |
mov [eax + 00000440H], esi | |
mov [ecx + 10H], edx | |
mov eax,[eax] | |
mov ecx,[esp + 10H] | |
mov [eax + 14H], ecx | |
@040: pop edi | |
pop esi | |
pop ebp | |
xor al, al | |
pop ebx | |
add esp, 28 | |
ret 4 | |
@041: mov esi,[esp + 20H] | |
mov [esp + 18H], dl | |
mov ecx,[esi + ecx*4] | |
mov [esp + 30H], cl | |
mov esi,[esp + 30H] | |
shr ecx, 8 | |
and esi, 000000FFH | |
inc ebp | |
cmp esi, edx | |
mov [esp + 1CH], ebp | |
jz @042 | |
mov edx, esi | |
jmp @043 | |
@042: cmp ebp,[esp + 24H] | |
jnz @045 | |
@043: mov esi,[esp + 10H] | |
test esi, esi | |
jnz @044 | |
mov esi, 1 | |
jmp @038 | |
@044: mov esi,[esp + 14H] | |
mov bl,[esp + 18H] | |
mov [esi], bl | |
mov esi,[esp + 18H] | |
mov ebx, edi | |
and esi, 000000FFH | |
shr ebx, 24 | |
xor ebx, esi | |
shl edi, 8 | |
mov esi,dword ptr [_BZ2_crc32Table + ebx*4] | |
mov ebx,[esp + 14H] | |
xor edi, esi | |
mov esi,[esp + 10H] | |
inc ebx | |
dec esi | |
mov [esp + 14H], ebx | |
mov [esp + 10H], esi | |
jmp @035 | |
@045: mov ebx,[esp + 20H] | |
mov esi, 2 | |
mov ecx,[ebx + ecx*4] | |
mov ebx,[esp + 24H] | |
mov [esp + 30H], cl | |
shr ecx, 8 | |
inc ebp | |
cmp ebp, ebx | |
mov [esp + 1CH], ebp | |
je @033 | |
mov ebx,[esp + 30H] | |
and ebx, 000000FFH | |
cmp ebx, edx | |
jz @046 | |
mov edx, ebx | |
jmp @033 | |
@046: mov ebx,[esp + 20H] | |
mov esi, 3 | |
mov ecx,[ebx + ecx*4] | |
mov ebx,[esp + 24H] | |
mov [esp + 30H], cl | |
shr ecx, 8 | |
inc ebp | |
cmp ebp, ebx | |
mov [esp + 1CH], ebp | |
je @033 | |
mov ebx,[esp + 30H] | |
and ebx, 000000FFH | |
cmp ebx, edx | |
jz @047 | |
mov edx, ebx | |
jmp @033 | |
@047: mov edx,[esp + 20H] | |
mov ecx,[edx + ecx*4] | |
mov esi, ecx | |
shr ecx, 8 | |
and esi, 000000FFH | |
mov ecx,[edx + ecx*4] | |
add esi, 4 | |
mov edx, ecx | |
and edx, 000000FFH | |
shr ecx, 8 | |
add ebp, 2 | |
mov [esp + 1CH], ebp | |
jmp @033 | |
@048: push ebx | |
push ebp | |
push esi | |
mov esi,[esp + 10H] | |
push edi | |
mov ebx, 1 | |
mov al,[esi + 10H] | |
test al, al | |
je @060 | |
@049: mov eax,[esi] | |
mov ecx,[eax + 14H] | |
test ecx, ecx | |
je @062 | |
mov ecx,[esi + 0CH] | |
test ecx, ecx | |
jz @050 | |
mov eax,[eax + 10H] | |
mov cl,[esi + 08H] | |
mov [eax], cl | |
mov eax,[esi + 00000C60H] | |
mov edx, eax | |
xor ecx, ecx | |
mov cl,[esi + 08H] | |
shr edx, 24 | |
xor edx, ecx | |
shl eax, 8 | |
mov edx,dword ptr [_BZ2_crc32Table + edx*4] | |
xor edx, eax | |
mov eax,[esi + 0CH] | |
dec eax | |
mov [esi + 00000C60H], edx | |
mov [esi + 0CH], eax | |
mov eax,[esi] | |
mov ebp,[eax + 10H] | |
inc ebp | |
mov [eax + 10H], ebp | |
mov eax,[esi] | |
mov edi,[eax + 14H] | |
dec edi | |
mov [eax + 14H], edi | |
mov eax,[esi] | |
mov edx,[eax + 18H] | |
inc edx | |
mov [eax + 18H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 18H] | |
test ecx, ecx | |
jnz @049 | |
inc dword ptr [eax + 1CH] | |
jmp @049 | |
@006: push esi | |
mov esi,[esp + 0CH] | |
push edi | |
mov edi,[esp + 0CH] | |
xor eax, eax | |
mov edx, 256 | |
@007: lea ecx, [edx + eax] | |
sar ecx, 1 | |
cmp edi,[esi + ecx*4] | |
jl @008 | |
mov eax, ecx | |
jmp @009 | |
@008: mov edx, ecx | |
@009: mov ecx, edx | |
sub ecx, eax | |
cmp ecx, 1 | |
jnz @007 | |
pop edi | |
pop esi | |
ret 8 | |
@050: mov eax,[esi + 0000FA40H] | |
mov ecx,[esi + 00000440H] | |
inc eax | |
cmp ecx, eax | |
je @062 | |
jg @063 | |
mov ecx,[esi + 38H] | |
mov al,[esi + 3CH] | |
lea edi, [esi + 00000444H] | |
mov [esi + 0CH], ebx | |
push edi | |
push ecx | |
mov [esi + 08H], al | |
call @006 | |
mov edx,[esi + 38H] | |
mov ebx,[esi + 00000C54H] | |
mov ebp, edx | |
xor ecx, ecx | |
shr ebp, 1 | |
mov cl,[ebx + ebp] | |
xor ebp, ebp | |
mov ebx, ecx | |
mov cl, dl | |
and cl, 01H | |
shl cl, 2 | |
shr ebx, cl | |
mov ecx,[esi + 00000C50H] | |
mov bp, word ptr [ecx + edx*2] | |
mov ecx,[esi + 14H] | |
and ebx, 0000000FH | |
shl ebx, 16 | |
or ebx, ebp | |
test ecx, ecx | |
mov [esi + 38H], ebx | |
jnz @051 | |
mov ecx,[esi + 18H] | |
mov edx,dword ptr [_BZ2_rNums + ecx*4] | |
inc ecx | |
cmp ecx, 512 | |
mov [esi + 14H], edx | |
mov [esi + 18H], ecx | |
jnz @051 | |
mov dword ptr [esi + 18H], 0 | |
@051: mov ecx,[esi + 14H] | |
mov ebx, 1 | |
dec ecx | |
mov edx,[esi + 0000FA40H] | |
mov ebp, ecx | |
mov [esi + 14H], ecx | |
cmp ebp, ebx | |
sete cl | |
xor al, cl | |
mov [esp + 14H], al | |
mov eax,[esi + 00000440H] | |
inc eax | |
inc edx | |
cmp eax, edx | |
mov [esi + 00000440H], eax | |
je @049 | |
mov eax,[esp + 14H] | |
mov ecx,[esi + 3CH] | |
and eax, 000000FFH | |
cmp eax, ecx | |
jz @052 | |
mov [esi + 3CH], eax | |
jmp @049 | |
@052: mov eax,[esi + 38H] | |
push edi | |
push eax | |
mov dword ptr [esi + 0CH], 2 | |
call @006 | |
mov edx,[esi + 38H] | |
mov ebx,[esi + 00000C54H] | |
mov ebp, edx | |
xor ecx, ecx | |
shr ebp, 1 | |
mov cl,[ebx + ebp] | |
xor ebp, ebp | |
mov ebx, ecx | |
mov cl, dl | |
and cl, 01H | |
shl cl, 2 | |
shr ebx, cl | |
mov ecx,[esi + 00000C50H] | |
mov bp, word ptr [ecx + edx*2] | |
mov ecx,[esi + 14H] | |
and ebx, 0000000FH | |
shl ebx, 16 | |
or ebx, ebp | |
test ecx, ecx | |
mov [esi + 38H], ebx | |
jnz @053 | |
mov ecx,[esi + 18H] | |
mov edx,dword ptr [_BZ2_rNums + ecx*4] | |
inc ecx | |
cmp ecx, 512 | |
mov [esi + 14H], edx | |
mov [esi + 18H], ecx | |
jnz @053 | |
mov dword ptr [esi + 18H], 0 | |
@053: mov ecx,[esi + 14H] | |
mov ebx, 1 | |
dec ecx | |
mov edx,[esi + 0000FA40H] | |
mov ebp, ecx | |
mov [esi + 14H], ecx | |
cmp ebp, ebx | |
sete cl | |
xor al, cl | |
mov [esp + 14H], al | |
mov eax,[esi + 00000440H] | |
inc eax | |
inc edx | |
cmp eax, edx | |
mov [esi + 00000440H], eax | |
je @049 | |
mov eax,[esp + 14H] | |
mov ecx,[esi + 3CH] | |
and eax, 000000FFH | |
cmp eax, ecx | |
jz @054 | |
mov [esi + 3CH], eax | |
jmp @049 | |
@054: mov eax,[esi + 38H] | |
push edi | |
push eax | |
mov dword ptr [esi + 0CH], 3 | |
call @006 | |
mov edx,[esi + 38H] | |
mov ebx,[esi + 00000C54H] | |
mov ebp, edx | |
xor ecx, ecx | |
shr ebp, 1 | |
mov cl,[ebx + ebp] | |
xor ebp, ebp | |
mov ebx, ecx | |
mov cl, dl | |
and cl, 01H | |
shl cl, 2 | |
shr ebx, cl | |
mov ecx,[esi + 00000C50H] | |
mov bp, word ptr [ecx + edx*2] | |
mov ecx,[esi + 14H] | |
and ebx, 0000000FH | |
shl ebx, 16 | |
or ebx, ebp | |
test ecx, ecx | |
mov [esi + 38H], ebx | |
jnz @055 | |
mov ecx,[esi + 18H] | |
mov edx,dword ptr [_BZ2_rNums + ecx*4] | |
inc ecx | |
cmp ecx, 512 | |
mov [esi + 14H], edx | |
mov [esi + 18H], ecx | |
jnz @055 | |
mov dword ptr [esi + 18H], 0 | |
@055: mov ecx,[esi + 14H] | |
mov ebx, 1 | |
dec ecx | |
mov edx,[esi + 0000FA40H] | |
mov ebp, ecx | |
mov [esi + 14H], ecx | |
cmp ebp, ebx | |
sete cl | |
xor al, cl | |
mov [esp + 14H], al | |
mov eax,[esi + 00000440H] | |
inc eax | |
inc edx | |
cmp eax, edx | |
mov [esi + 00000440H], eax | |
je @049 | |
mov eax,[esp + 14H] | |
mov ecx,[esi + 3CH] | |
and eax, 000000FFH | |
cmp eax, ecx | |
jz @056 | |
mov [esi + 3CH], eax | |
jmp @049 | |
@056: mov eax,[esi + 38H] | |
push edi | |
push eax | |
call @006 | |
mov edx,[esi + 00000C54H] | |
xor ecx, ecx | |
mov [esp + 14H], al | |
mov eax,[esi + 38H] | |
mov ebp, eax | |
shr ebp, 1 | |
mov cl,[edx + ebp] | |
xor ebp, ebp | |
mov edx, ecx | |
mov cl, al | |
and cl, bl | |
shl cl, 2 | |
shr edx, cl | |
mov ecx,[esi + 00000C50H] | |
mov bp, word ptr [ecx + eax*2] | |
mov eax,[esi + 14H] | |
and edx, 0000000FH | |
shl edx, 16 | |
or edx, ebp | |
test eax, eax | |
mov [esi + 38H], edx | |
jnz @057 | |
mov eax,[esi + 18H] | |
mov edx,dword ptr [_BZ2_rNums + eax*4] | |
inc eax | |
cmp eax, 512 | |
mov [esi + 14H], edx | |
mov [esi + 18H], eax | |
jnz @057 | |
mov dword ptr [esi + 18H], 0 | |
@057: mov eax,[esi + 14H] | |
mov ebp,[esi + 00000440H] | |
mov ecx,[esp + 14H] | |
dec eax | |
inc ebp | |
mov edx,[esi + 38H] | |
cmp eax, ebx | |
mov [esi + 14H], eax | |
sete al | |
and eax, 000000FFH | |
and ecx, 000000FFH | |
xor eax, ecx | |
push edi | |
add eax, 4 | |
push edx | |
mov [esi + 00000440H], ebp | |
mov [esi + 0CH], eax | |
call @006 | |
mov edx,[esi + 38H] | |
mov edi,[esi + 00000C54H] | |
mov ebp, edx | |
xor ecx, ecx | |
shr ebp, 1 | |
mov [esi + 3CH], eax | |
mov cl,[edi + ebp] | |
xor ebp, ebp | |
mov edi, ecx | |
mov cl, dl | |
and cl, bl | |
shl cl, 2 | |
shr edi, cl | |
mov ecx,[esi + 00000C50H] | |
mov bp, word ptr [ecx + edx*2] | |
mov ecx,[esi + 14H] | |
and edi, 0000000FH | |
shl edi, 16 | |
or edi, ebp | |
test ecx, ecx | |
mov [esi + 38H], edi | |
jnz @058 | |
mov ecx,[esi + 18H] | |
mov edx,dword ptr [_BZ2_rNums + ecx*4] | |
inc ecx | |
cmp ecx, 512 | |
mov [esi + 14H], edx | |
mov [esi + 18H], ecx | |
jnz @058 | |
mov dword ptr [esi + 18H], 0 | |
@058: mov ebp,[esi + 14H] | |
xor edx, edx | |
dec ebp | |
mov ecx, ebp | |
mov [esi + 14H], ebp | |
cmp ecx, ebx | |
sete dl | |
xor edx, eax | |
mov eax,[esi + 00000440H] | |
inc eax | |
mov [esi + 3CH], edx | |
mov [esi + 00000440H], eax | |
jmp @049 | |
@059: mov [esi + 3CH], eax | |
@060: mov eax,[esi] | |
mov ecx,[eax + 14H] | |
test ecx, ecx | |
je @062 | |
mov ecx,[esi + 0CH] | |
test ecx, ecx | |
jz @061 | |
mov eax,[eax + 10H] | |
mov cl,[esi + 08H] | |
mov [eax], cl | |
mov eax,[esi + 00000C60H] | |
mov edx, eax | |
xor ecx, ecx | |
mov cl,[esi + 08H] | |
shr edx, 24 | |
xor edx, ecx | |
shl eax, 8 | |
mov edx,dword ptr [_BZ2_crc32Table + edx*4] | |
xor edx, eax | |
mov eax,[esi + 0CH] | |
dec eax | |
mov [esi + 00000C60H], edx | |
mov [esi + 0CH], eax | |
mov eax,[esi] | |
mov ebp,[eax + 10H] | |
inc ebp | |
mov [eax + 10H], ebp | |
mov eax,[esi] | |
mov edi,[eax + 14H] | |
dec edi | |
mov [eax + 14H], edi | |
mov eax,[esi] | |
mov edx,[eax + 18H] | |
inc edx | |
mov [eax + 18H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 18H] | |
test ecx, ecx | |
jnz @060 | |
inc dword ptr [eax + 1CH] | |
jmp @060 | |
@061: mov eax,[esi + 0000FA40H] | |
mov ecx,[esi + 00000440H] | |
inc eax | |
cmp ecx, eax | |
je @062 | |
jg @063 | |
mov ecx,[esi + 38H] | |
mov al,[esi + 3CH] | |
lea edi, [esi + 00000444H] | |
mov [esi + 0CH], ebx | |
push edi | |
push ecx | |
mov [esi + 08H], al | |
call @006 | |
mov ebp,[esi + 00000C54H] | |
xor ecx, ecx | |
mov [esp + 14H], al | |
mov eax,[esi + 38H] | |
mov edx, eax | |
shr edx, 1 | |
mov cl,[edx + ebp] | |
xor ebp, ebp | |
mov edx, ecx | |
mov cl, al | |
and cl, bl | |
shl cl, 2 | |
shr edx, cl | |
mov ecx,[esi + 00000C50H] | |
mov bp, word ptr [ecx + eax*2] | |
mov eax,[esi + 00000440H] | |
and edx, 0000000FH | |
shl edx, 16 | |
or edx, ebp | |
inc eax | |
mov [esi + 38H], edx | |
mov edx,[esi + 0000FA40H] | |
inc edx | |
mov [esi + 00000440H], eax | |
cmp eax, edx | |
je @060 | |
mov eax,[esp + 14H] | |
mov ecx,[esi + 3CH] | |
and eax, 000000FFH | |
cmp eax, ecx | |
jne @059 | |
mov eax,[esi + 38H] | |
push edi | |
push eax | |
mov dword ptr [esi + 0CH], 2 | |
call @006 | |
mov edx,[esi + 00000C54H] | |
xor ecx, ecx | |
mov [esp + 14H], al | |
mov eax,[esi + 38H] | |
mov ebp, eax | |
shr ebp, 1 | |
mov cl,[edx + ebp] | |
xor ebp, ebp | |
mov edx, ecx | |
mov cl, al | |
and cl, bl | |
shl cl, 2 | |
shr edx, cl | |
mov ecx,[esi + 00000C50H] | |
mov bp, word ptr [ecx + eax*2] | |
mov eax,[esi + 00000440H] | |
and edx, 0000000FH | |
shl edx, 16 | |
or edx, ebp | |
inc eax | |
mov [esi + 38H], edx | |
mov edx,[esi + 0000FA40H] | |
inc edx | |
mov [esi + 00000440H], eax | |
cmp eax, edx | |
je @060 | |
mov eax,[esp + 14H] | |
mov ecx,[esi + 3CH] | |
and eax, 000000FFH | |
cmp eax, ecx | |
jne @059 | |
mov eax,[esi + 38H] | |
push edi | |
push eax | |
mov dword ptr [esi + 0CH], 3 | |
call @006 | |
mov edx,[esi + 00000C54H] | |
xor ecx, ecx | |
mov [esp + 14H], al | |
mov eax,[esi + 38H] | |
mov ebp, eax | |
shr ebp, 1 | |
mov cl,[edx + ebp] | |
xor ebp, ebp | |
mov edx, ecx | |
mov cl, al | |
and cl, bl | |
shl cl, 2 | |
shr edx, cl | |
mov ecx,[esi + 00000C50H] | |
mov bp, word ptr [ecx + eax*2] | |
mov eax,[esi + 00000440H] | |
and edx, 0000000FH | |
shl edx, 16 | |
or edx, ebp | |
inc eax | |
mov [esi + 38H], edx | |
mov edx,[esi + 0000FA40H] | |
inc edx | |
mov [esi + 00000440H], eax | |
cmp eax, edx | |
je @060 | |
mov eax,[esp + 14H] | |
mov ecx,[esi + 3CH] | |
and eax, 000000FFH | |
cmp eax, ecx | |
jne @059 | |
mov eax,[esi + 38H] | |
push edi | |
push eax | |
call @006 | |
mov edx,[esi + 00000C54H] | |
xor ecx, ecx | |
mov [esp + 14H], al | |
mov eax,[esi + 38H] | |
mov ebp, eax | |
push edi | |
shr ebp, 1 | |
mov cl,[edx + ebp] | |
xor ebp, ebp | |
mov edx, ecx | |
mov cl, al | |
and cl, bl | |
shl cl, 2 | |
shr edx, cl | |
mov ecx,[esi + 00000C50H] | |
mov bp, word ptr [ecx + eax*2] | |
mov ecx,[esi + 00000440H] | |
and edx, 0000000FH | |
shl edx, 16 | |
or edx, ebp | |
inc ecx | |
mov [esi + 38H], edx | |
mov edx,[esp + 18H] | |
mov eax,[esi + 38H] | |
and edx, 000000FFH | |
add edx, 4 | |
push eax | |
mov [esi + 00000440H], ecx | |
mov [esi + 0CH], edx | |
call @006 | |
mov edx,[esi + 00000C54H] | |
mov [esi + 3CH], eax | |
mov eax,[esi + 38H] | |
xor ecx, ecx | |
mov edi, eax | |
shr edi, 1 | |
mov cl,[edi + edx] | |
xor edi, edi | |
mov edx, ecx | |
mov cl, al | |
and cl, bl | |
shl cl, 2 | |
shr edx, cl | |
mov ecx,[esi + 00000C50H] | |
mov di, word ptr [ecx + eax*2] | |
mov eax,[esi + 00000440H] | |
and edx, 0000000FH | |
shl edx, 16 | |
or edx, edi | |
inc eax | |
mov [esi + 38H], edx | |
mov [esi + 00000440H], eax | |
jmp @060 | |
@062: pop edi | |
pop esi | |
pop ebp | |
xor al, al | |
pop ebx | |
ret 4 | |
@063: pop edi | |
pop esi | |
mov al, bl | |
pop ebp | |
pop ebx | |
ret 4 | |
@070: sub esp, 120 | |
push ebx | |
push ebp | |
push esi | |
mov esi,[esp + 00000088H] | |
push edi | |
xor edi, edi | |
mov eax,[esi + 04H] | |
mov ebp,[esi] | |
cmp eax, 10 | |
jne @071 | |
mov [esi + 0000FA14H], edi | |
mov [esi + 0000FA18H], edi | |
mov [esi + 0000FA1CH], edi | |
mov [esi + 0000FA20H], edi | |
mov [esi + 0000FA24H], edi | |
mov [esi + 0000FA28H], edi | |
mov [esi + 0000FA2CH], edi | |
mov [esi + 0000FA30H], edi | |
mov [esi + 0000FA34H], edi | |
mov [esi + 0000FA38H], edi | |
mov [esi + 0000FA3CH], edi | |
mov [esi + 0000FA40H], edi | |
mov [esi + 0000FA44H], edi | |
mov [esi + 0000FA48H], edi | |
mov [esi + 0000FA4CH], edi | |
mov [esi + 0000FA50H], edi | |
mov [esi + 0000FA54H], edi | |
mov [esi + 0000FA58H], edi | |
mov [esi + 0000FA5CH], edi | |
mov [esi + 0000FA60H], edi | |
mov [esi + 0000FA64H], edi | |
mov [esi + 0000FA68H], edi | |
mov [esi + 0000FA6CH], edi | |
mov [esi + 0000FA70H], edi | |
@071: mov eax,[esi + 0000FA14H] | |
mov ecx,[esi + 0000FA18H] | |
mov edx,[esi + 0000FA1CH] | |
mov [esp + 14H], eax | |
mov eax,[esi + 0000FA20H] | |
mov [esp + 1CH], ecx | |
mov ecx,[esi + 0000FA24H] | |
mov [esp + 4CH], eax | |
mov eax,[esi + 0000FA2CH] | |
mov [esp + 2CH], edx | |
mov edx,[esi + 0000FA28H] | |
mov [esp + 6CH], eax | |
mov eax,[esi + 0000FA38H] | |
mov [esp + 5CH], ecx | |
mov ecx,[esi + 0000FA30H] | |
mov [esp + 3CH], eax | |
mov eax,[esi + 0000FA44H] | |
mov [esp + 34H], edx | |
mov edx,[esi + 0000FA34H] | |
mov [esp + 50H], ecx | |
mov ecx,[esi + 0000FA3CH] | |
mov [esp + 20H], eax | |
mov eax,[esi + 0000FA50H] | |
mov [esp + 38H], edx | |
mov edx,[esi + 0000FA40H] | |
mov [esp + 60H], ecx | |
mov ecx,[esi + 0000FA48H] | |
mov [esp + 00000084H], eax | |
mov eax,[esi + 0000FA60H] | |
mov ebx,[esi + 0000FA54H] | |
mov [esp + 18H], edx | |
mov edx,[esi + 0000FA4CH] | |
mov [esp + 54H], ecx | |
mov ecx,[esi + 0000FA58H] | |
mov [esp + 68H], eax | |
mov eax,[esi + 0000FA6CH] | |
mov [esp + 30H], edx | |
mov edx,[esi + 0000FA5CH] | |
mov [esp + 24H], ecx | |
mov ecx,[esi + 0000FA64H] | |
mov [esp + 44H], eax | |
mov eax,[esi + 04H] | |
mov [esp + 64H], edx | |
mov edx,[esi + 0000FA68H] | |
mov [esp + 58H], ecx | |
mov ecx,[esi + 0000FA70H] | |
add eax, -10 | |
mov [esp + 10H], ebx | |
cmp eax, 40 | |
mov [esp + 40H], edx | |
mov [esp + 48H], ecx | |
ja @304 | |
jmp dword ptr [@306 + eax*4] | |
@072: mov dword ptr [esi + 04H], 10 | |
@073: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @074 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @073 | |
inc dword ptr [eax + 0CH] | |
jmp @073 | |
@074: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
// and eax, 000000FFH | |
cmp al, 66 | |
jz @076 | |
@075: mov ebx,[esp + 10H] | |
mov edi, -5 | |
jmp @305 | |
@076: mov dword ptr [esi + 04H], 11 | |
@077: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @078 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @077 | |
inc dword ptr [eax + 0CH] | |
jmp @077 | |
@078: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
// and eax, 000000FFH | |
cmp al, 90 | |
jz @079 | |
mov ebx,[esp + 10H] | |
mov edi, -5 | |
jmp @305 | |
@079: mov dword ptr [esi + 04H], 12 | |
@080: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @081 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @080 | |
inc dword ptr [eax + 0CH] | |
jmp @080 | |
@081: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
// and eax, 000000FFH | |
cmp al, 104 | |
jz @082 | |
mov ebx,[esp + 10H] | |
mov edi, -5 | |
jmp @305 | |
@082: mov dword ptr [esi + 04H], 13 | |
@083: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @084 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @083 | |
inc dword ptr [eax + 0CH] | |
jmp @083 | |
@084: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
and eax, 000000FFH | |
cmp eax, 49 | |
mov [esi + 24H], eax | |
jl @075 | |
cmp eax, 57 | |
jg @075 | |
add eax, -48 | |
mov cl,[esi + 28H] | |
mov [esi + 24H], eax | |
push 1 | |
lea eax, [eax + eax*4] | |
test cl, cl | |
lea eax, [eax + eax*4] | |
lea eax, [eax + eax*4] | |
lea eax, [eax + eax*4] | |
jz @085 | |
mov ecx,[ebp + 2CH] | |
lea eax, [eax + eax*4] | |
shl eax, 6 | |
push eax | |
push ecx | |
call dword ptr [ebp + 24H] | |
mov [esi + 00000C50H], eax | |
mov eax,[esi + 24H] | |
push 1 | |
lea eax, [eax + eax*4] | |
lea eax, [eax + eax*4] | |
lea eax, [eax + eax*4] | |
lea eax, [eax + eax*4] | |
lea edx, [eax + eax*4] | |
mov eax,[ebp + 2CH] | |
shl edx, 5 | |
inc edx | |
sar edx, 1 | |
push edx | |
push eax | |
call dword ptr [ebp + 24H] | |
mov ecx,[esi + 00000C50H] | |
mov [esi + 00000C54H], eax | |
test ecx, ecx | |
jz @087 | |
jmp @086 | |
@085: mov edx,[ebp + 2CH] | |
lea ecx, [eax + eax*4] | |
shl ecx, 7 | |
push ecx | |
push edx | |
call dword ptr [ebp + 24H] | |
mov [esi + 00000C4CH], eax | |
@086: test eax, eax | |
jnz @088 | |
@087: mov ebx,[esp + 10H] | |
mov edi, -3 | |
jmp @305 | |
@088: mov dword ptr [esi + 04H], 14 | |
@089: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @090 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @089 | |
inc dword ptr [eax + 0CH] | |
jmp @089 | |
@090: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
and eax, 000000FFH | |
cmp al, 23 | |
je @274 | |
cmp al, 49 | |
jz @091 | |
mov ebx,[esp + 10H] | |
mov edi, -4 | |
jmp @305 | |
@091: mov dword ptr [esi + 04H], 15 | |
@092: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @093 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @092 | |
inc dword ptr [eax + 0CH] | |
jmp @092 | |
@093: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
// and eax, 000000FFH | |
cmp al, 65 | |
jz @094 | |
mov ebx,[esp + 10H] | |
mov edi, -4 | |
jmp @305 | |
@094: mov dword ptr [esi + 04H], 16 | |
@095: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @096 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @095 | |
inc dword ptr [eax + 0CH] | |
jmp @095 | |
@096: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
// and eax, 000000FFH | |
cmp al, 89 | |
jz @097 | |
mov ebx,[esp + 10H] | |
mov edi, -4 | |
jmp @305 | |
@097: mov dword ptr [esi + 04H], 17 | |
@098: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @099 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @098 | |
inc dword ptr [eax + 0CH] | |
jmp @098 | |
@099: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
// and eax, 000000FFH | |
cmp al, 38 | |
jz @100 | |
mov ebx,[esp + 10H] | |
mov edi, -4 | |
jmp @305 | |
@100: mov dword ptr [esi + 04H], 18 | |
@101: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @102 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @101 | |
inc dword ptr [eax + 0CH] | |
jmp @101 | |
@102: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
// and eax, 000000FFH | |
cmp al, 83 | |
jz @103 | |
mov ebx,[esp + 10H] | |
mov edi, -4 | |
jmp @305 | |
@103: mov dword ptr [esi + 04H], 19 | |
@104: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @105 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @104 | |
inc dword ptr [eax + 0CH] | |
jmp @104 | |
@105: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov [esi + 20H], edx | |
// and eax, 000000FFH | |
cmp al, 89 | |
jz @106 | |
mov ebx,[esp + 10H] | |
mov edi, -4 | |
jmp @305 | |
@106: mov eax,[esi + 2CH] | |
mov dword ptr [esi + 00000C58H], 0 | |
inc eax | |
mov [esi + 2CH], eax | |
@107: mov dword ptr [esi + 04H], 20 | |
@108: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @109 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] | |
mov [esi + 20H], ecx | |
shl edx, 8 | |
or edx, ebx | |
mov [esi + 1CH], edx | |
mov ebx,[eax] | |
inc ebx | |
mov [eax], ebx | |
mov eax,[esi] | |
mov edi,[eax + 04H] | |
dec edi | |
mov [eax + 04H], edi | |
mov eax,[esi] | |
mov edx,[eax + 08H] | |
inc edx | |
mov [eax + 08H], edx | |
mov eax,[esi] | |
mov ecx,[eax + 08H] | |
test ecx, ecx | |
jnz @108 | |
inc dword ptr [eax + 0CH] | |
jmp @108 | |
@109: mov edx,[esi + 20H] | |
mov eax,[esi + 1CH] | |
lea ecx, [edx - 08H] | |
add edx, -8 | |
shr eax, cl | |
mov ecx,[esi + 00000C58H] | |
mov [esi + 20H], edx | |
shl ecx, 8 | |
and eax, 000000FFH | |
and eax, 000000FFH | |
or ecx, eax | |
mov [esi + 00000C58H], ecx | |
@110: mov dword ptr [esi + 04H], 21 | |
@111: mov ecx,[esi + 20H] | |
cmp ecx, 8 | |
jge @112 | |
mov eax,[esi] | |
mov edx,[eax + 04H] | |
test edx, edx | |
je @303 | |
mov edi,[eax] | |
mov edx,[esi + 1CH] | |
xor ebx, ebx | |
add ecx, 8 | |
mov bl,[edi] |