4689 lines
198 KiB
PHP
4689 lines
198 KiB
PHP
|
|
{
|
|
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]
|
|
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 @111
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @111
|
|
|
|
@112: 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
|
|
|
|
@113: mov dword ptr [esi + 04H], 22
|
|
@114: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @115
|
|
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 @114
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @114
|
|
|
|
@115: 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
|
|
|
|
@116: mov dword ptr [esi + 04H], 23
|
|
@117: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @118
|
|
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 @117
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @117
|
|
|
|
@118: 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
|
|
|
|
@119: mov dword ptr [esi + 04H], 24
|
|
@120: mov ecx,[esi + 20H]
|
|
cmp ecx, 1
|
|
jge @121
|
|
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 @120
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @120
|
|
|
|
@121: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
mov dword ptr [esi + 34H], 0
|
|
lea ecx, [edx - 01H]
|
|
shr eax, cl
|
|
and eax, 00000001H
|
|
dec edx
|
|
mov [esi + 20H], edx
|
|
mov [esi + 10H], al
|
|
|
|
@122:
|
|
mov dword ptr [esi + 04H], 25
|
|
@123: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @124
|
|
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 @123
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @123
|
|
|
|
@124: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 08H]
|
|
add edx, -8
|
|
shr eax, cl
|
|
mov ecx,[esi + 34H]
|
|
mov [esi + 20H], edx
|
|
shl ecx, 8
|
|
and eax, 000000FFH
|
|
and eax, 000000FFH
|
|
or ecx, eax
|
|
mov [esi + 34H], ecx
|
|
|
|
@125: mov dword ptr [esi + 04H], 26
|
|
@126: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @127
|
|
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 @126
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @126
|
|
|
|
@127: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 08H]
|
|
add edx, -8
|
|
shr eax, cl
|
|
mov ecx,[esi + 34H]
|
|
mov [esi + 20H], edx
|
|
shl ecx, 8
|
|
and eax, 000000FFH
|
|
and eax, 000000FFH
|
|
or ecx, eax
|
|
mov [esi + 34H], ecx
|
|
|
|
@128: mov dword ptr [esi + 04H], 27
|
|
xor ebp, ebp
|
|
@129: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @130
|
|
mov eax,[esi]
|
|
cmp [eax + 04H], ebp
|
|
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]
|
|
cmp [eax + 08H], ebp
|
|
jnz @129
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @129
|
|
|
|
@130: mov eax,[esi + 20H]
|
|
mov edx,[esi + 1CH]
|
|
lea ecx, [eax - 08H]
|
|
add eax, -8
|
|
shr edx, cl
|
|
mov [esi + 20H], eax
|
|
mov eax,[esi + 34H]
|
|
shl eax, 8
|
|
and edx, 000000FFH
|
|
and edx, 000000FFH
|
|
or eax, edx
|
|
mov [esi + 34H], eax
|
|
jge @131
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@131: mov ecx,[esi + 24H]
|
|
lea ecx, [ecx + ecx*4]
|
|
lea ecx, [ecx + ecx*4]
|
|
lea ecx, [ecx + ecx*4]
|
|
lea ecx, [ecx + ecx*4]
|
|
lea ecx, [ecx + ecx*4]
|
|
shl ecx, 5
|
|
add ecx, 10
|
|
cmp eax, ecx
|
|
jle @132
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@132: mov [esp + 14H], ebp
|
|
jmp @138
|
|
|
|
@133: mov dword ptr [esi + 04H], 28
|
|
xor ebp, ebp
|
|
@134: mov ecx,[esi + 20H]
|
|
cmp ecx, 1
|
|
jge @135
|
|
mov eax,[esi]
|
|
cmp [eax + 04H], ebp
|
|
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]
|
|
cmp [eax + 08H], ebp
|
|
jnz @134
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @134
|
|
|
|
@135: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 01H]
|
|
shr eax, cl
|
|
and eax, 00000001H
|
|
dec edx
|
|
cmp al, 1
|
|
mov [esi + 20H], edx
|
|
jnz @136
|
|
mov eax,[esp + 14H]
|
|
mov byte ptr [eax + esi + 00000D6CH], 1
|
|
jmp @137
|
|
|
|
@136: mov ecx,[esp + 14H]
|
|
mov byte ptr [ecx + esi + 00000D6CH], 0
|
|
@137: inc dword ptr [esp + 14H]
|
|
@138: mov eax,[esp + 14H]
|
|
mov edx, 16
|
|
cmp eax, edx
|
|
jl @133
|
|
lea edi, [esi + 00000C6CH]
|
|
mov ecx, 64
|
|
xor eax, eax
|
|
mov [esp + 14H], ebp
|
|
rep stosd
|
|
jmp @145
|
|
|
|
@139: mov dword ptr [esi + 04H], 29
|
|
xor ebp, ebp
|
|
@140: mov ecx,[esi + 20H]
|
|
cmp ecx, 1
|
|
jge @141
|
|
mov eax,[esi]
|
|
cmp [eax + 04H], ebp
|
|
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]
|
|
cmp [eax + 08H], ebp
|
|
jnz @140
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @140
|
|
|
|
@141: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 01H]
|
|
shr eax, cl
|
|
and eax, 00000001H
|
|
dec edx
|
|
cmp al, 1
|
|
mov [esi + 20H], edx
|
|
jnz @142
|
|
mov eax,[esp + 14H]
|
|
mov ecx,[esp + 1CH]
|
|
shl eax, 4
|
|
add eax, ecx
|
|
mov byte ptr [eax + esi + 00000C6CH], 1
|
|
@142: mov eax,[esp + 1CH]
|
|
mov edx, 16
|
|
inc eax
|
|
mov [esp + 1CH], eax
|
|
@143: cmp [esp + 1CH], edx
|
|
jl @139
|
|
@144: inc dword ptr [esp + 14H]
|
|
@145: mov eax,[esp + 14H]
|
|
cmp eax, edx
|
|
jge @146
|
|
mov cl,[eax + esi + 00000D6CH]
|
|
test cl, cl
|
|
jz @144
|
|
mov [esp + 1CH], ebp
|
|
jmp @143
|
|
|
|
@146: push esi
|
|
call @307
|
|
mov eax,[esi + 00000C68H]
|
|
cmp eax, ebp
|
|
jnz @147
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@147: add eax, 2
|
|
mov [esp + 4CH], eax
|
|
|
|
@148: mov dword ptr [esi + 04H], 30
|
|
@149: mov ecx,[esi + 20H]
|
|
cmp ecx, 3
|
|
jge @150
|
|
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 @149
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @149
|
|
|
|
@150: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 03H]
|
|
add edx, -3
|
|
shr eax, cl
|
|
mov [esi + 20H], edx
|
|
and eax, 00000007H
|
|
cmp eax, 2
|
|
mov [esp + 5CH], eax
|
|
jl @151
|
|
cmp eax, 6
|
|
jle @152
|
|
@151: mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@152: mov dword ptr [esi + 04H], 31
|
|
xor ebp, ebp
|
|
@153: mov ecx,[esi + 20H]
|
|
cmp ecx, 15
|
|
jge @154
|
|
mov eax,[esi]
|
|
cmp [eax + 04H], ebp
|
|
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]
|
|
cmp [eax + 08H], ebp
|
|
jnz @153
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @153
|
|
|
|
@154: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 0FH]
|
|
add edx, -15
|
|
shr eax, cl
|
|
mov [esi + 20H], edx
|
|
and eax, 00007FFFH
|
|
mov edi, eax
|
|
cmp eax, 1
|
|
mov [esp + 34H], edi
|
|
jge @155
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@155: mov [esp + 14H], ebp
|
|
jmp @160
|
|
|
|
@156: mov dword ptr [esi + 04H], 32
|
|
xor ebp, ebp
|
|
@157: mov ecx,[esi + 20H]
|
|
cmp ecx, 1
|
|
jge @158
|
|
mov eax,[esi]
|
|
cmp [eax + 04H], ebp
|
|
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]
|
|
cmp [eax + 08H], ebp
|
|
jnz @157
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @157
|
|
|
|
@158: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 01H]
|
|
shr eax, cl
|
|
and eax, 00000001H
|
|
dec edx
|
|
test al, al
|
|
mov [esi + 20H], edx
|
|
jz @159
|
|
mov eax,[esp + 1CH]
|
|
mov ecx,[esp + 5CH]
|
|
inc eax
|
|
cmp eax, ecx
|
|
mov [esp + 1CH], eax
|
|
jl @156
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@159: mov eax,[esp + 14H]
|
|
mov cl,[esp + 1CH]
|
|
mov edi,[esp + 34H]
|
|
mov [eax + esi + 0000650EH], cl
|
|
inc eax
|
|
mov [esp + 14H], eax
|
|
@160: cmp [esp + 14H], edi
|
|
jge @161
|
|
mov [esp + 1CH], ebp
|
|
jmp @156
|
|
|
|
@161: mov edx,[esp + 5CH]
|
|
xor cl, cl
|
|
cmp edx, ebp
|
|
jle @163
|
|
xor eax, eax
|
|
@162: mov [esp + eax + 7CH], cl
|
|
inc cl
|
|
mov [esp + 2CH], cl
|
|
mov eax,[esp + 2CH]
|
|
and eax, 000000FFH
|
|
cmp eax, edx
|
|
jl @162
|
|
@163: cmp edi, ebp
|
|
mov [esp + 14H], ebp
|
|
jle @167
|
|
mov ebp,[esp + 34H]
|
|
@164: mov edx,[esp + 14H]
|
|
mov dl,[esi + edx + 0000650EH]
|
|
mov [esp + 2CH], dl
|
|
mov eax,[esp + 2CH]
|
|
and eax, 000000FFH
|
|
test dl, dl
|
|
mov bl,[esp + eax + 7CH]
|
|
lea ecx, [esp + eax + 7CH]
|
|
jbe @166
|
|
mov edi, eax
|
|
@165: mov al,[ecx - 01H]
|
|
mov [ecx], al
|
|
dec ecx
|
|
dec edi
|
|
jnz @165
|
|
@166: mov eax,[esp + 14H]
|
|
mov [esp + 7CH], bl
|
|
mov [eax + esi + 00001EBCH], bl
|
|
inc eax
|
|
cmp eax, ebp
|
|
mov [esp + 14H], eax
|
|
jl @164
|
|
@167: mov dword ptr [esp + 2CH], 0
|
|
jmp @178
|
|
|
|
@168: mov dword ptr [esi + 04H], 35
|
|
@169: mov ecx,[esi + 20H]
|
|
cmp ecx, 1
|
|
jge @170
|
|
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 @169
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @169
|
|
|
|
@170: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 01H]
|
|
shr eax, cl
|
|
and eax, 00000001H
|
|
dec edx
|
|
test al, al
|
|
mov eax,[esp + 30H]
|
|
mov [esi + 20H], edx
|
|
jnz @171
|
|
inc eax
|
|
jmp @172
|
|
|
|
@171: dec eax
|
|
@172: mov [esp + 30H], eax
|
|
@173: mov eax,[esp + 30H]
|
|
cmp eax, 1
|
|
jl @289
|
|
cmp eax, 20
|
|
jg @289
|
|
|
|
@174: mov dword ptr [esi + 04H], 34
|
|
@175: mov ecx,[esi + 20H]
|
|
cmp ecx, 1
|
|
jge @176
|
|
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 @175
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @175
|
|
|
|
@176: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 01H]
|
|
shr eax, cl
|
|
and eax, 00000001H
|
|
dec edx
|
|
test al, al
|
|
mov [esi + 20H], edx
|
|
jne @168
|
|
mov eax,[esp + 2CH]
|
|
mov ecx, eax
|
|
shl ecx, 7
|
|
add ecx, eax
|
|
mov eax,[esp + 14H]
|
|
lea edx, [eax + ecx*2]
|
|
mov cl,[esp + 30H]
|
|
inc eax
|
|
mov [edx + esi + 0000AB60H], cl
|
|
mov [esp + 14H], eax
|
|
@177: mov edx,[esp + 14H]
|
|
mov eax,[esp + 4CH]
|
|
cmp edx, eax
|
|
jl @173
|
|
inc dword ptr [esp + 2CH]
|
|
@178: mov eax,[esp + 5CH]
|
|
mov ecx,[esp + 2CH]
|
|
cmp ecx, eax
|
|
jge @182
|
|
|
|
@179: mov dword ptr [esi + 04H], 33
|
|
@180: mov ecx,[esi + 20H]
|
|
cmp ecx, 5
|
|
jge @181
|
|
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 @180
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @180
|
|
|
|
@181: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
mov dword ptr [esp + 14H], 0
|
|
lea ecx, [edx - 05H]
|
|
shr eax, cl
|
|
and eax, 0000001FH
|
|
add edx, -5
|
|
mov [esi + 20H], edx
|
|
mov [esp + 30H], eax
|
|
jmp @177
|
|
|
|
@182: test eax, eax
|
|
mov dword ptr [esp + 2CH], 0
|
|
jle @188
|
|
lea ecx, [esi + 0000F9FCH]
|
|
lea edi, [esi + 0000C99CH]
|
|
mov [esp + 6CH], ecx
|
|
lea ebx, [esi + 0000AB60H]
|
|
mov [esp + 60H], eax
|
|
mov [esp + 2CH], eax
|
|
@183: mov eax,[esp + 4CH]
|
|
xor ecx, ecx
|
|
xor edx, edx
|
|
mov ebp, 32
|
|
test eax, eax
|
|
jle @187
|
|
@184: xor eax, eax
|
|
mov al,[ebx + edx]
|
|
cmp eax, ecx
|
|
jle @185
|
|
mov ecx, eax
|
|
@185: cmp eax, ebp
|
|
jge @186
|
|
mov ebp, eax
|
|
@186: mov eax,[esp + 4CH]
|
|
inc edx
|
|
cmp edx, eax
|
|
jl @184
|
|
@187: mov edx,[esp + 4CH]
|
|
lea eax, [edi + 00001830H]
|
|
push edx
|
|
push ecx
|
|
push ebp
|
|
push ebx
|
|
push eax
|
|
lea ecx, [edi - 00001830H]
|
|
push edi
|
|
push ecx
|
|
call @310
|
|
add ebx, 258
|
|
add edi, 1032
|
|
mov eax,[esp + 6CH]
|
|
mov [eax], ebp
|
|
add eax, 4
|
|
mov [esp + 6CH], eax
|
|
mov eax,[esp + 60H]
|
|
dec eax
|
|
mov [esp + 60H], eax
|
|
jnz @183
|
|
@188: mov eax,[esi + 00000C68H]
|
|
xor ebp, ebp
|
|
inc eax
|
|
lea edi, [esi + 40H]
|
|
mov [esp + 6CH], eax
|
|
mov eax,[esi + 24H]
|
|
mov ecx, 256
|
|
mov edx, 15
|
|
lea eax, [eax + eax*4]
|
|
mov [esp + 38H], ebp
|
|
mov dword ptr [esp + 14H], 256
|
|
mov [esp + 50H], edx
|
|
lea eax, [eax + eax*4]
|
|
lea eax, [eax + eax*4]
|
|
lea eax, [eax + eax*4]
|
|
lea eax, [eax + eax*4]
|
|
shl eax, 5
|
|
mov [esp + 60H], eax
|
|
xor eax, eax
|
|
rep stosd
|
|
mov eax, 4095
|
|
lea edi, [esi + 00001EB8H]
|
|
@189: mov ecx, 15
|
|
shl dl, 4
|
|
@190: mov bl, cl
|
|
add bl, dl
|
|
mov [eax + esi + 00000E7CH], bl
|
|
dec eax
|
|
dec ecx
|
|
jns @190
|
|
lea edx, [eax + 01H]
|
|
mov [edi], edx
|
|
mov edx,[esp + 50H]
|
|
dec edx
|
|
sub edi, 4
|
|
cmp edx, ebp
|
|
mov [esp + 50H], edx
|
|
jge @189
|
|
mov eax,[esp + 34H]
|
|
mov [esp + 18H], ebp
|
|
cmp eax, ebp
|
|
mov [esp + 50H], ebp
|
|
jg @191
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@191: xor eax, eax
|
|
mov dword ptr [esp + 38H], 49
|
|
mov al,[esi + 00001EBCH]
|
|
mov edx, eax
|
|
mov [esp + 68H], eax
|
|
mov ecx,[esi + eax*4 + 0000F9FCH]
|
|
shl edx, 7
|
|
add edx, eax
|
|
mov [esp + 58H], ecx
|
|
mov [esp + 10H], ecx
|
|
lea eax, [esi + edx*8]
|
|
lea edx, [eax + 0000B16CH]
|
|
mov [esp + 40H], edx
|
|
lea edx, [eax + 0000E1CCH]
|
|
add eax, 51612
|
|
mov [esp + 48H], edx
|
|
mov [esp + 44H], eax
|
|
@192: mov ebx,[esp + 10H]
|
|
mov dword ptr [esi + 04H], 36
|
|
@193: mov ecx,[esi + 20H]
|
|
cmp ecx, ebx
|
|
jge @194
|
|
mov eax,[esi]
|
|
mov edx,[eax + 04H]
|
|
test edx, edx
|
|
je @273
|
|
mov edi,[eax]
|
|
mov ebp,[esi + 1CH]
|
|
xor edx, edx
|
|
add ecx, 8
|
|
mov dl,[edi]
|
|
mov [esi + 20H], ecx
|
|
shl ebp, 8
|
|
or ebp, edx
|
|
mov [esi + 1CH], ebp
|
|
mov ebp,[eax]
|
|
inc ebp
|
|
mov [eax], ebp
|
|
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 @193
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @193
|
|
|
|
@194: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
sub edx, ebx
|
|
mov edi, 1
|
|
mov ecx, edx
|
|
mov [esi + 20H], edx
|
|
shr eax, cl
|
|
mov ecx, ebx
|
|
shl edi, cl
|
|
dec edi
|
|
and eax, edi
|
|
mov [esp + 24H], eax
|
|
jmp @199
|
|
|
|
@195: mov ebx,[esp + 10H]
|
|
@196: mov dword ptr [esi + 04H], 37
|
|
@197: mov ecx,[esi + 20H]
|
|
cmp ecx, 1
|
|
jge @198
|
|
mov eax,[esi]
|
|
mov edx,[eax + 04H]
|
|
test edx, edx
|
|
je @273
|
|
mov edi,[eax]
|
|
mov ebp,[esi + 1CH]
|
|
xor edx, edx
|
|
add ecx, 8
|
|
mov dl,[edi]
|
|
mov [esi + 20H], ecx
|
|
shl ebp, 8
|
|
or ebp, edx
|
|
mov [esi + 1CH], ebp
|
|
mov ebp,[eax]
|
|
inc ebp
|
|
mov [eax], ebp
|
|
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 @197
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @197
|
|
|
|
@198: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 01H]
|
|
shr eax, cl
|
|
mov ecx,[esp + 24H]
|
|
and eax, 00000001H
|
|
dec edx
|
|
mov [esi + 20H], edx
|
|
lea edx, [ecx + ecx]
|
|
or edx, eax
|
|
mov [esp + 64H], eax
|
|
mov [esp + 24H], edx
|
|
mov eax, edx
|
|
@199: cmp ebx, 20
|
|
jle @200
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@200: mov ecx,[esp + 40H]
|
|
cmp eax,[ecx + ebx*4]
|
|
jle @201
|
|
inc ebx
|
|
mov [esp + 10H], ebx
|
|
jmp @196
|
|
|
|
@201: mov edx,[esp + 44H]
|
|
sub eax,[edx + ebx*4]
|
|
js @202
|
|
cmp eax, 258
|
|
jl @210
|
|
@202: mov edi, -4
|
|
jmp @305
|
|
|
|
@203: mov ebx,[esp + 10H]
|
|
@204: mov dword ptr [esi + 04H], 41
|
|
@205: mov ecx,[esi + 20H]
|
|
cmp ecx, 1
|
|
jge @206
|
|
mov eax,[esi]
|
|
mov edx,[eax + 04H]
|
|
test edx, edx
|
|
je @273
|
|
mov edi,[eax]
|
|
mov ebp,[esi + 1CH]
|
|
xor edx, edx
|
|
add ecx, 8
|
|
mov dl,[edi]
|
|
mov [esi + 20H], ecx
|
|
shl ebp, 8
|
|
or ebp, edx
|
|
mov [esi + 1CH], ebp
|
|
mov ebp,[eax]
|
|
inc ebp
|
|
mov [eax], ebp
|
|
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 @205
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @205
|
|
|
|
@206: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 01H]
|
|
shr eax, cl
|
|
mov ecx,[esp + 24H]
|
|
and eax, 00000001H
|
|
dec edx
|
|
mov [esi + 20H], edx
|
|
lea edx, [ecx + ecx]
|
|
mov [esp + 64H], eax
|
|
or eax, edx
|
|
mov [esp + 24H], eax
|
|
@207: cmp ebx, 20
|
|
jle @208
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@208: mov ecx,[esp + 40H]
|
|
cmp eax,[ecx + ebx*4]
|
|
jle @209
|
|
inc ebx
|
|
mov [esp + 10H], ebx
|
|
jmp @204
|
|
|
|
@209: mov edx,[esp + 44H]
|
|
sub eax,[edx + ebx*4]
|
|
js @260
|
|
cmp eax, 258
|
|
jge @260
|
|
@210: mov ecx,[esp + 48H]
|
|
mov edx,[ecx + eax*4]
|
|
mov [esp + 3CH], edx
|
|
@211: mov ecx,[esp + 3CH]
|
|
mov eax,[esp + 6CH]
|
|
cmp ecx, eax
|
|
je @253
|
|
test ecx, ecx
|
|
je @232
|
|
cmp ecx, 1
|
|
je @232
|
|
mov eax,[esp + 60H]
|
|
mov edx,[esp + 18H]
|
|
cmp edx, eax
|
|
jl @212
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@212: dec ecx
|
|
cmp ecx, 16
|
|
jae @217
|
|
mov edi,[esi + 00001E7CH]
|
|
cmp ecx, 3
|
|
mov [esp + 7CH], edi
|
|
lea eax, [edi + ecx]
|
|
mov dl,[eax + esi + 00000E7CH]
|
|
mov [esp + 28H], dl
|
|
jbe @214
|
|
lea edx, [esi + 00000E7BH]
|
|
mov edi, esi
|
|
sub edi, edx
|
|
add eax, edx
|
|
add edi, 3708
|
|
mov [esp + 70H], edi
|
|
mov edi, esi
|
|
sub edi, edx
|
|
lea ebp, [edi + 00000E7AH]
|
|
mov edi, esi
|
|
sub edi, edx
|
|
add edi, 3704
|
|
mov [esp + 78H], edi
|
|
mov edi, esi
|
|
sub edi, edx
|
|
add edi, 3705
|
|
mov [esp + 74H], edi
|
|
mov edi, ecx
|
|
shr edi, 2
|
|
@213: mov ebx,[esp + 70H]
|
|
mov dl,[eax]
|
|
sub ecx, 4
|
|
mov [ebx + eax], dl
|
|
mov dl,[eax + ebp]
|
|
mov [eax], dl
|
|
mov edx,[esp + 74H]
|
|
mov bl,[edx + eax]
|
|
mov [eax + ebp], bl
|
|
mov ebx,[esp + 78H]
|
|
mov bl,[ebx + eax]
|
|
mov [edx + eax], bl
|
|
sub eax, 4
|
|
dec edi
|
|
jnz @213
|
|
mov edi,[esp + 7CH]
|
|
@214: test ecx, ecx
|
|
jbe @216
|
|
lea eax, [edi + esi + 00000E7CH]
|
|
@215: mov dl,[ecx + eax - 01H]
|
|
mov [ecx + eax], dl
|
|
dec ecx
|
|
jnz @215
|
|
@216: mov al,[esp + 28H]
|
|
mov [edi + esi + 00000E7CH], al
|
|
jmp @224
|
|
|
|
@217: mov edx, ecx
|
|
and ecx, 0000000FH
|
|
shr edx, 4
|
|
mov ebp,[esi + edx*4 + 00001E7CH]
|
|
lea edi, [esi + edx*4 + 00001E7CH]
|
|
add ecx, ebp
|
|
cmp ecx, ebp
|
|
mov bl,[ecx + esi + 00000E7CH]
|
|
mov [esp + 28H], bl
|
|
jle @219
|
|
@218: mov al,[ecx + esi + 00000E7BH]
|
|
mov [ecx + esi + 00000E7CH], al
|
|
mov eax,[edi]
|
|
dec ecx
|
|
cmp ecx, eax
|
|
jg @218
|
|
@219: mov ecx,[edi]
|
|
inc ecx
|
|
test edx, edx
|
|
mov [edi], ecx
|
|
jle @221
|
|
mov eax, edi
|
|
mov edi, edx
|
|
@220: mov edx,[eax]
|
|
add eax, -4
|
|
dec edx
|
|
dec edi
|
|
mov [eax + 04H], edx
|
|
mov ecx, edx
|
|
mov edx,[eax]
|
|
mov dl,[edx + esi + 00000E8BH]
|
|
mov [ecx + esi + 00000E7CH], dl
|
|
jnz @220
|
|
@221: mov ecx,[esi + 00001E7CH]
|
|
dec ecx
|
|
mov eax, ecx
|
|
mov [esi + 00001E7CH], ecx
|
|
mov [eax + esi + 00000E7CH], bl
|
|
mov eax,[esi + 00001E7CH]
|
|
test eax, eax
|
|
jnz @224
|
|
mov eax, 4095
|
|
lea ecx, [esi + 00001EB8H]
|
|
mov ebp, 16
|
|
@222: mov edi, 15
|
|
@223: mov ebx,[ecx]
|
|
mov edx, edi
|
|
add edx, ebx
|
|
dec eax
|
|
dec edi
|
|
mov dl,[edx + esi + 00000E7CH]
|
|
mov [eax + esi + 00000E7DH], dl
|
|
jns @223
|
|
lea edx, [eax + 01H]
|
|
mov [ecx], edx
|
|
sub ecx, 4
|
|
dec ebp
|
|
jnz @222
|
|
@224: mov eax,[esp + 28H]
|
|
xor ecx, ecx
|
|
and eax, 000000FFH
|
|
mov cl,[eax + esi + 00000D7CH]
|
|
lea eax, [eax + esi + 00000D7CH]
|
|
mov edx,[esi + ecx*4 + 40H]
|
|
lea ecx, [esi + ecx*4 + 40H]
|
|
inc edx
|
|
mov [ecx], edx
|
|
mov cl,[esi + 28H]
|
|
test cl, cl
|
|
jz @225
|
|
movzx dx, byte ptr [eax]
|
|
mov eax,[esi + 00000C50H]
|
|
mov ecx,[esp + 18H]
|
|
mov word ptr [eax + ecx*2], dx
|
|
jmp @226
|
|
|
|
@225: mov ecx,[esp + 18H]
|
|
xor edx, edx
|
|
mov dl,[eax]
|
|
mov eax,[esi + 00000C4CH]
|
|
mov [eax + ecx*4], edx
|
|
@226: mov ecx,[esp + 18H]
|
|
inc ecx
|
|
mov [esp + 18H], ecx
|
|
mov ecx,[esp + 38H]
|
|
test ecx, ecx
|
|
jnz @228
|
|
mov eax,[esp + 50H]
|
|
mov ecx,[esp + 34H]
|
|
inc eax
|
|
cmp eax, ecx
|
|
mov [esp + 50H], eax
|
|
jl @227
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@227: xor edx, edx
|
|
mov ecx, 50
|
|
mov dl,[eax + esi + 00001EBCH]
|
|
mov eax, edx
|
|
mov [esp + 68H], eax
|
|
mov edx,[esi + eax*4 + 0000F9FCH]
|
|
mov [esp + 58H], edx
|
|
mov edx, eax
|
|
shl edx, 7
|
|
add edx, eax
|
|
lea eax, [esi + edx*8]
|
|
lea edx, [eax + 0000B16CH]
|
|
mov [esp + 40H], edx
|
|
lea edx, [eax + 0000E1CCH]
|
|
add eax, 51612
|
|
mov [esp + 48H], edx
|
|
mov [esp + 44H], eax
|
|
@228: mov eax,[esp + 58H]
|
|
dec ecx
|
|
mov [esp + 38H], ecx
|
|
mov [esp + 10H], eax
|
|
@229: mov ebx,[esp + 10H]
|
|
mov dword ptr [esi + 04H], 40
|
|
@230: mov ecx,[esi + 20H]
|
|
cmp ecx, ebx
|
|
jge @231
|
|
mov eax,[esi]
|
|
mov edx,[eax + 04H]
|
|
test edx, edx
|
|
je @273
|
|
mov edi,[eax]
|
|
mov ebp,[esi + 1CH]
|
|
xor edx, edx
|
|
add ecx, 8
|
|
mov dl,[edi]
|
|
mov [esi + 20H], ecx
|
|
shl ebp, 8
|
|
or ebp, edx
|
|
mov [esi + 1CH], ebp
|
|
mov ebp,[eax]
|
|
inc ebp
|
|
mov [eax], ebp
|
|
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 @230
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @230
|
|
|
|
@231: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
sub edx, ebx
|
|
mov edi, 1
|
|
mov ecx, edx
|
|
mov [esi + 20H], edx
|
|
shr eax, cl
|
|
mov ecx, ebx
|
|
shl edi, cl
|
|
dec edi
|
|
and eax, edi
|
|
mov [esp + 24H], eax
|
|
jmp @207
|
|
|
|
@232: mov dword ptr [esp + 20H], -1
|
|
mov dword ptr [esp + 54H], 1
|
|
@233: mov eax,[esp + 3CH]
|
|
test eax, eax
|
|
jnz @234
|
|
mov eax,[esp + 54H]
|
|
mov ecx,[esp + 20H]
|
|
add ecx, eax
|
|
mov [esp + 20H], ecx
|
|
jmp @235
|
|
|
|
@234: cmp eax, 1
|
|
jnz @235
|
|
mov ecx,[esp + 20H]
|
|
mov edx,[esp + 54H]
|
|
lea eax, [ecx + edx*2]
|
|
mov [esp + 20H], eax
|
|
@235: mov ecx,[esp + 54H]
|
|
lea edx, [ecx + ecx]
|
|
mov ecx,[esp + 38H]
|
|
test ecx, ecx
|
|
mov [esp + 54H], edx
|
|
jnz @237
|
|
mov eax,[esp + 50H]
|
|
mov ecx,[esp + 34H]
|
|
inc eax
|
|
cmp eax, ecx
|
|
mov [esp + 50H], eax
|
|
jl @236
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@236: xor edx, edx
|
|
mov ecx, 50
|
|
mov dl,[eax + esi + 00001EBCH]
|
|
mov eax, edx
|
|
mov [esp + 68H], eax
|
|
mov edx,[esi + eax*4 + 0000F9FCH]
|
|
mov [esp + 58H], edx
|
|
mov edx, eax
|
|
shl edx, 7
|
|
add edx, eax
|
|
lea eax, [esi + edx*8]
|
|
lea edx, [eax + 0000B16CH]
|
|
mov [esp + 40H], edx
|
|
lea edx, [eax + 0000E1CCH]
|
|
add eax, 51612
|
|
mov [esp + 48H], edx
|
|
mov [esp + 44H], eax
|
|
@237: mov ebx,[esp + 58H]
|
|
dec ecx
|
|
mov [esp + 38H], ecx
|
|
mov [esp + 10H], ebx
|
|
jmp @239
|
|
|
|
@238: mov ebx,[esp + 10H]
|
|
@239: mov dword ptr [esi + 04H], 38
|
|
@240: mov ecx,[esi + 20H]
|
|
cmp ecx, ebx
|
|
jge @241
|
|
mov eax,[esi]
|
|
mov edx,[eax + 04H]
|
|
test edx, edx
|
|
je @273
|
|
mov edi,[eax]
|
|
mov ebp,[esi + 1CH]
|
|
xor edx, edx
|
|
add ecx, 8
|
|
mov dl,[edi]
|
|
mov [esi + 20H], ecx
|
|
shl ebp, 8
|
|
or ebp, edx
|
|
mov [esi + 1CH], ebp
|
|
mov ebp,[eax]
|
|
inc ebp
|
|
mov [eax], ebp
|
|
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 @240
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @240
|
|
|
|
@241: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
sub edx, ebx
|
|
mov edi, 1
|
|
mov ecx, edx
|
|
mov [esi + 20H], edx
|
|
shr eax, cl
|
|
mov ecx, ebx
|
|
shl edi, cl
|
|
dec edi
|
|
and eax, edi
|
|
mov [esp + 24H], eax
|
|
@242: cmp ebx, 20
|
|
jle @243
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@243: mov ecx,[esp + 40H]
|
|
cmp eax,[ecx + ebx*4]
|
|
jle @248
|
|
inc ebx
|
|
mov [esp + 10H], ebx
|
|
jmp @245
|
|
|
|
@244: mov ebx,[esp + 10H]
|
|
@245: mov dword ptr [esi + 04H], 39
|
|
@246: mov ecx,[esi + 20H]
|
|
cmp ecx, 1
|
|
jge @247
|
|
mov eax,[esi]
|
|
mov edx,[eax + 04H]
|
|
test edx, edx
|
|
je @273
|
|
mov edi,[eax]
|
|
mov ebp,[esi + 1CH]
|
|
xor edx, edx
|
|
add ecx, 8
|
|
mov dl,[edi]
|
|
mov [esi + 20H], ecx
|
|
shl ebp, 8
|
|
or ebp, edx
|
|
mov [esi + 1CH], ebp
|
|
mov ebp,[eax]
|
|
inc ebp
|
|
mov [eax], ebp
|
|
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 @246
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @246
|
|
|
|
@247: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 01H]
|
|
shr eax, cl
|
|
mov ecx,[esp + 24H]
|
|
and eax, 00000001H
|
|
dec edx
|
|
mov [esi + 20H], edx
|
|
lea edx, [ecx + ecx]
|
|
or edx, eax
|
|
mov [esp + 64H], eax
|
|
mov [esp + 24H], edx
|
|
mov eax, edx
|
|
jmp @242
|
|
|
|
@248: mov ecx,[esp + 44H]
|
|
sub eax,[ecx + ebx*4]
|
|
js @260
|
|
cmp eax, 258
|
|
jge @260
|
|
mov edx,[esp + 48H]
|
|
mov eax,[edx + eax*4]
|
|
test eax, eax
|
|
mov [esp + 3CH], eax
|
|
je @233
|
|
cmp eax, 1
|
|
je @233
|
|
mov eax,[esi + 00001E7CH]
|
|
xor ecx, ecx
|
|
mov edx,[esp + 20H]
|
|
mov cl,[eax + esi + 00000E7CH]
|
|
inc edx
|
|
mov [esp + 20H], edx
|
|
mov cl,[ecx + esi + 00000D7CH]
|
|
mov [esp + 28H], cl
|
|
mov eax,[esp + 28H]
|
|
and eax, 000000FFH
|
|
mov ebp,[esi + eax*4 + 40H]
|
|
add ebp, edx
|
|
mov [esi + eax*4 + 40H], ebp
|
|
cmp byte ptr [esi + 28H], 0
|
|
jz @251
|
|
test edx, edx
|
|
jle @211
|
|
mov eax,[esp + 18H]
|
|
@249: cmp eax,[esp + 60H]
|
|
jge @250
|
|
mov ebp,[esi + 00000C50H]
|
|
inc eax
|
|
movzx di, cl
|
|
mov word ptr [ebp + eax*2 - 02H], di
|
|
dec edx
|
|
test edx, edx
|
|
jg @249
|
|
mov [esp + 20H], edx
|
|
mov [esp + 18H], eax
|
|
jmp @211
|
|
|
|
@250: mov [esp + 20H], edx
|
|
mov [esp + 18H], eax
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@251: test edx, edx
|
|
jle @211
|
|
mov edi,[esp + 60H]
|
|
mov ecx,[esp + 18H]
|
|
mov edx,[esp + 20H]
|
|
@252: cmp ecx, edi
|
|
jge @260
|
|
mov ebp,[esi + 00000C4CH]
|
|
inc ecx
|
|
dec edx
|
|
mov [esp + 18H], ecx
|
|
mov [ebp + ecx*4 - 04H], eax
|
|
mov [esp + 20H], edx
|
|
test edx, edx
|
|
jg @252
|
|
jmp @211
|
|
|
|
@253: mov eax,[esi + 34H]
|
|
test eax, eax
|
|
jl @260
|
|
mov edi,[esp + 18H]
|
|
cmp eax, edi
|
|
jge @260
|
|
lea eax, [esi + 00000448H]
|
|
mov dword ptr [esi + 00000444H], 0
|
|
mov ecx, eax
|
|
mov edx, 256
|
|
@254: mov ebp,[ecx - 00000408H]
|
|
mov [ecx], ebp
|
|
add ecx, 4
|
|
dec edx
|
|
jnz @254
|
|
mov ecx, 256
|
|
@255: mov edx,[eax - 04H]
|
|
mov ebp,[eax]
|
|
add ebp, edx
|
|
mov [eax], ebp
|
|
add eax, 4
|
|
dec ecx
|
|
jnz @255
|
|
xor ebp, ebp
|
|
xor eax, eax
|
|
mov [esp + 14H], eax
|
|
lea ecx, [esi + 00000444H]
|
|
@256: mov edx,[ecx]
|
|
cmp edx, ebp
|
|
jl @259
|
|
cmp edx, edi
|
|
jg @259
|
|
inc eax
|
|
add ecx, 4
|
|
cmp eax, 256
|
|
jle @256
|
|
mov [esp + 14H], eax
|
|
mov al,[esi + 28H]
|
|
test al, al
|
|
mov [esi + 0CH], ebp
|
|
mov byte ptr [esi + 08H], 0
|
|
mov dword ptr [esi + 00000C60H], -1
|
|
mov dword ptr [esi + 04H], 2
|
|
je @269
|
|
lea eax, [esi + 00000848H]
|
|
mov ecx, 257
|
|
@257: mov edx,[eax - 00000404H]
|
|
mov [eax], edx
|
|
add eax, 4
|
|
dec ecx
|
|
jnz @257
|
|
xor eax, eax
|
|
cmp edi, ebp
|
|
jle @263
|
|
@258: mov ecx,[esi + 00000C50H]
|
|
mov dl,[ecx + eax*2]
|
|
lea ecx, [ecx + eax*2]
|
|
mov [esp + 28H], dl
|
|
mov edx,[esp + 28H]
|
|
and edx, 000000FFH
|
|
test al, 01H
|
|
lea edi, [esi + edx*4 + 00000848H]
|
|
mov dx, word ptr [esi + edx*4 + 00000848H]
|
|
mov word ptr [ecx], dx
|
|
mov ecx, eax
|
|
jnz @261
|
|
mov edx,[esi + 00000C54H]
|
|
sar ecx, 1
|
|
lea ebp, [edx + ecx]
|
|
mov ecx,[edi]
|
|
sar ecx, 16
|
|
mov dl,[ebp]
|
|
and dl, 0F0H
|
|
or cl, dl
|
|
mov [ebp], cl
|
|
jmp @262
|
|
|
|
@259: mov [esp + 14H], eax
|
|
@260: mov edi, -4
|
|
jmp @305
|
|
|
|
@261: mov edx,[esi + 00000C54H]
|
|
sar ecx, 1
|
|
mov bl,[edx + ecx]
|
|
lea ebp, [edx + ecx]
|
|
mov ecx,[edi]
|
|
sar ecx, 12
|
|
mov dl, cl
|
|
xor dl, bl
|
|
and dl, 0FH
|
|
xor dl, cl
|
|
mov [ebp], dl
|
|
@262: mov ebx,[edi]
|
|
mov ecx,[esp + 18H]
|
|
inc ebx
|
|
inc eax
|
|
cmp eax, ecx
|
|
mov [edi], ebx
|
|
jl @258
|
|
@263: mov edx,[esi + 34H]
|
|
mov ecx,[esi + 00000C54H]
|
|
mov eax, edx
|
|
xor ebx, ebx
|
|
sar eax, 1
|
|
xor edi, edi
|
|
mov [esp + 14H], edx
|
|
mov bl,[eax + ecx]
|
|
mov cl, dl
|
|
and cl, 01H
|
|
mov eax, ebx
|
|
shl cl, 2
|
|
shr eax, cl
|
|
mov ecx,[esi + 00000C50H]
|
|
mov di, word ptr [ecx + edx*2]
|
|
and eax, 0000000FH
|
|
shl eax, 16
|
|
or eax, edi
|
|
mov [esp + 1CH], eax
|
|
@264: mov eax,[esp + 1CH]
|
|
mov ecx,[esi + 00000C50H]
|
|
mov edx, eax
|
|
mov ebx, eax
|
|
lea edi, [ecx + eax*2]
|
|
mov eax,[esi + 00000C54H]
|
|
sar edx, 1
|
|
xor ecx, ecx
|
|
and ebx, 00000001H
|
|
mov cl,[edx + eax]
|
|
xor ebp, ebp
|
|
mov eax, ecx
|
|
mov cl, bl
|
|
shl cl, 2
|
|
shr eax, cl
|
|
xor ecx, ecx
|
|
mov [esp + 7CH], edi
|
|
mov cx, word ptr [edi]
|
|
and eax, 0000000FH
|
|
shl eax, 16
|
|
or eax, ecx
|
|
mov cx, word ptr [esp + 14H]
|
|
mov word ptr [edi], cx
|
|
mov ecx,[esi + 00000C54H]
|
|
cmp ebx, ebp
|
|
lea edi, [edx + ecx]
|
|
mov ecx,[esp + 14H]
|
|
jnz @265
|
|
mov dl,[edi]
|
|
sar ecx, 16
|
|
and dl, 0F0H
|
|
or cl, dl
|
|
mov [edi], cl
|
|
jmp @266
|
|
|
|
@265: mov bl,[edi]
|
|
sar ecx, 12
|
|
mov dl, cl
|
|
xor dl, bl
|
|
and dl, 0FH
|
|
xor dl, cl
|
|
mov [edi], dl
|
|
@266: mov ecx,[esp + 1CH]
|
|
mov [esp + 1CH], eax
|
|
mov eax,[esi + 34H]
|
|
mov [esp + 14H], ecx
|
|
cmp ecx, eax
|
|
jne @264
|
|
mov ecx, eax
|
|
mov al,[esi + 10H]
|
|
test al, al
|
|
mov [esi + 38H], ecx
|
|
mov [esi + 00000440H], ebp
|
|
je @268
|
|
lea eax, [esi + 00000444H]
|
|
mov [esi + 14H], ebp
|
|
push eax
|
|
push ecx
|
|
mov [esi + 18H], ebp
|
|
call @006
|
|
mov edx,[esi + 38H]
|
|
mov edi,[esi + 00000C54H]
|
|
mov ecx, edx
|
|
xor ebx, ebx
|
|
shr ecx, 1
|
|
mov [esi + 3CH], eax
|
|
mov bl,[ecx + edi]
|
|
mov cl, dl
|
|
and cl, 01H
|
|
xor edi, edi
|
|
shl cl, 2
|
|
shr ebx, cl
|
|
mov ecx,[esi + 00000C50H]
|
|
mov di, word ptr [ecx + edx*2]
|
|
mov edx,[esi + 00000440H]
|
|
mov ecx,[esi + 14H]
|
|
and ebx, 0000000FH
|
|
shl ebx, 16
|
|
or ebx, edi
|
|
inc edx
|
|
cmp ecx, ebp
|
|
mov [esi + 38H], ebx
|
|
mov [esi + 00000440H], edx
|
|
jnz @267
|
|
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 @267
|
|
mov [esi + 18H], ebp
|
|
@267: mov ebx,[esi + 14H]
|
|
xor edx, edx
|
|
dec ebx
|
|
mov ecx, ebx
|
|
mov [esi + 14H], ebx
|
|
mov ebx,[esp + 10H]
|
|
cmp ecx, 1
|
|
sete dl
|
|
xor edx, eax
|
|
xor ebp, ebp
|
|
mov [esi + 3CH], edx
|
|
xor edi, edi
|
|
jmp @305
|
|
|
|
@268: lea eax, [esi + 00000444H]
|
|
push eax
|
|
push ecx
|
|
call @006
|
|
mov edx,[esi + 00000C54H]
|
|
mov [esi + 3CH], eax
|
|
mov eax,[esi + 38H]
|
|
xor ebx, ebx
|
|
mov ecx, eax
|
|
xor ebp, ebp
|
|
shr ecx, 1
|
|
mov bl,[ecx + edx]
|
|
mov cl, al
|
|
and cl, 01H
|
|
xor edx, edx
|
|
shl cl, 2
|
|
shr ebx, cl
|
|
mov ecx,[esi + 00000C50H]
|
|
mov dx, word ptr [ecx + eax*2]
|
|
mov eax,[esi + 00000440H]
|
|
and ebx, 0000000FH
|
|
shl ebx, 16
|
|
or ebx, edx
|
|
inc eax
|
|
mov [esi + 38H], ebx
|
|
mov ebx,[esp + 10H]
|
|
mov [esi + 00000440H], eax
|
|
xor edi, edi
|
|
jmp @305
|
|
|
|
@269: xor edx, edx
|
|
cmp edi, ebp
|
|
mov [esp + 14H], edx
|
|
jle @271
|
|
@270: mov ecx,[esi + 00000C4CH]
|
|
mov al,[ecx + edx*4]
|
|
mov [esp + 28H], al
|
|
mov eax,[esp + 28H]
|
|
and eax, 000000FFH
|
|
mov edi,[esi + eax*4 + 00000444H]
|
|
lea eax, [esi + eax*4 + 00000444H]
|
|
lea ecx, [ecx + edi*4]
|
|
mov edi, edx
|
|
shl edi, 8
|
|
or [ecx], edi
|
|
mov edi,[eax]
|
|
inc edi
|
|
inc edx
|
|
mov [eax], edi
|
|
mov eax,[esp + 18H]
|
|
cmp edx, eax
|
|
jl @270
|
|
mov [esp + 14H], edx
|
|
@271: mov eax,[esi + 00000C4CH]
|
|
mov ecx,[esi + 34H]
|
|
mov edx,[eax + ecx*4]
|
|
mov cl,[esi + 10H]
|
|
shr edx, 8
|
|
test cl, cl
|
|
mov [esi + 38H], edx
|
|
mov [esi + 00000440H], ebp
|
|
jz @272
|
|
mov ecx, edx
|
|
mov [esi + 14H], ebp
|
|
mov [esi + 18H], ebp
|
|
mov edx,[eax + ecx*4]
|
|
xor eax, eax
|
|
mov edi, edx
|
|
mov [esi + 38H], edx
|
|
shr edi, 8
|
|
mov [esi + 38H], edi
|
|
mov al, dl
|
|
mov edi, 1
|
|
mov [esi + 3CH], eax
|
|
mov [esi + 00000440H], edi
|
|
mov ecx,dword ptr [_BZ2_rNums]
|
|
mov edx, ecx
|
|
mov [esi + 14H], ecx
|
|
dec edx
|
|
mov [esi + 18H], edi
|
|
mov [esi + 14H], edx
|
|
mov eax, edx
|
|
xor edx, edx
|
|
cmp eax, edi
|
|
mov eax,[esi + 3CH]
|
|
sete dl
|
|
xor eax, edx
|
|
xor edi, edi
|
|
mov [esi + 3CH], eax
|
|
jmp @305
|
|
|
|
@272: mov ecx,[esi + 38H]
|
|
mov edx,[eax + ecx*4]
|
|
xor eax, eax
|
|
mov al, dl
|
|
mov [esi + 38H], edx
|
|
mov [esi + 3CH], eax
|
|
mov eax, edx
|
|
shr eax, 8
|
|
mov [esi + 38H], eax
|
|
mov dword ptr [esi + 00000440H], 1
|
|
@273: xor edi, edi
|
|
jmp @305
|
|
|
|
@274: mov dword ptr [esi + 04H], 42
|
|
@275: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @276
|
|
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 @275
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @275
|
|
|
|
@276: 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, 114
|
|
jz @277
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@277: mov dword ptr [esi + 04H], 43
|
|
@278: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @279
|
|
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 @278
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @278
|
|
|
|
@279: 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, 69
|
|
jz @280
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@280: mov dword ptr [esi + 04H], 44
|
|
@281: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @282
|
|
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 @281
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @281
|
|
|
|
@282: 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, 56
|
|
jz @283
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@283: mov dword ptr [esi + 04H], 45
|
|
@284: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @285
|
|
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 @284
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @284
|
|
|
|
@285: 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, 80
|
|
jz @286
|
|
mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@286: mov dword ptr [esi + 04H], 46
|
|
@287: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @288
|
|
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 @287
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @287
|
|
|
|
@288: 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, -112
|
|
jz @290
|
|
@289: mov ebx,[esp + 10H]
|
|
mov edi, -4
|
|
jmp @305
|
|
|
|
@290: mov dword ptr [esi + 00000C5CH], 0
|
|
|
|
@291: mov dword ptr [esi + 04H], 47
|
|
@292: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @293
|
|
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 @292
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @292
|
|
|
|
@293: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 08H]
|
|
add edx, -8
|
|
shr eax, cl
|
|
mov ecx,[esi + 00000C5CH]
|
|
mov [esi + 20H], edx
|
|
shl ecx, 8
|
|
and eax, 000000FFH
|
|
and eax, 000000FFH
|
|
or ecx, eax
|
|
mov [esi + 00000C5CH], ecx
|
|
|
|
@294:
|
|
mov dword ptr [esi + 04H], 48
|
|
@295: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @296
|
|
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 @295
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @295
|
|
|
|
@296: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 08H]
|
|
add edx, -8
|
|
shr eax, cl
|
|
mov ecx,[esi + 00000C5CH]
|
|
mov [esi + 20H], edx
|
|
shl ecx, 8
|
|
and eax, 000000FFH
|
|
and eax, 000000FFH
|
|
or ecx, eax
|
|
mov [esi + 00000C5CH], ecx
|
|
|
|
@297: mov dword ptr [esi + 04H], 49
|
|
@298: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @299
|
|
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 @298
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @298
|
|
|
|
@299: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
lea ecx, [edx - 08H]
|
|
add edx, -8
|
|
shr eax, cl
|
|
mov ecx,[esi + 00000C5CH]
|
|
mov [esi + 20H], edx
|
|
shl ecx, 8
|
|
and eax, 000000FFH
|
|
and eax, 000000FFH
|
|
or ecx, eax
|
|
mov [esi + 00000C5CH], ecx
|
|
|
|
@300:
|
|
mov dword ptr [esi + 04H], 50
|
|
@301: mov ecx,[esi + 20H]
|
|
cmp ecx, 8
|
|
jge @302
|
|
mov eax,[esi]
|
|
mov edx,[eax + 04H]
|
|
test edx, edx
|
|
jz @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 @301
|
|
inc dword ptr [eax + 0CH]
|
|
jmp @301
|
|
|
|
@302: mov edx,[esi + 20H]
|
|
mov eax,[esi + 1CH]
|
|
mov ebx,[esp + 10H]
|
|
mov dword ptr [esi + 04H], 1
|
|
lea ecx, [edx - 08H]
|
|
add edx, -8
|
|
shr eax, cl
|
|
mov ecx,[esi + 00000C5CH]
|
|
mov [esi + 20H], edx
|
|
shl ecx, 8
|
|
mov edi, 4
|
|
and eax, 000000FFH
|
|
and eax, 000000FFH
|
|
or ecx, eax
|
|
mov [esi + 00000C5CH], ecx
|
|
jmp @305
|
|
|
|
@303: mov ebx,[esp + 10H]
|
|
xor edi, edi
|
|
|
|
@305: mov edx,[esp + 14H]
|
|
mov eax,[esp + 1CH]
|
|
mov ecx,[esp + 2CH]
|
|
mov [esi + 0000FA14H], edx
|
|
mov edx,[esp + 4CH]
|
|
mov [esi + 0000FA18H], eax
|
|
mov eax,[esp + 5CH]
|
|
mov [esi + 0000FA1CH], ecx
|
|
mov ecx,[esp + 34H]
|
|
mov [esi + 0000FA20H], edx
|
|
mov edx,[esp + 6CH]
|
|
mov [esi + 0000FA24H], eax
|
|
mov eax,[esp + 50H]
|
|
mov [esi + 0000FA28H], ecx
|
|
mov ecx,[esp + 38H]
|
|
mov [esi + 0000FA2CH], edx
|
|
mov edx,[esp + 3CH]
|
|
mov [esi + 0000FA30H], eax
|
|
mov eax,[esp + 60H]
|
|
mov [esi + 0000FA34H], ecx
|
|
mov ecx,[esp + 18H]
|
|
mov [esi + 0000FA38H], edx
|
|
mov edx,[esp + 20H]
|
|
mov [esi + 0000FA3CH], eax
|
|
mov eax,[esp + 54H]
|
|
mov [esi + 0000FA40H], ecx
|
|
mov ecx,[esp + 30H]
|
|
mov [esi + 0000FA44H], edx
|
|
mov edx,[esp + 00000084H]
|
|
mov [esi + 0000FA48H], eax
|
|
mov eax,[esp + 24H]
|
|
mov [esi + 0000FA4CH], ecx
|
|
mov ecx,[esp + 64H]
|
|
mov [esi + 0000FA58H], eax
|
|
mov eax,[esp + 58H]
|
|
mov [esi + 0000FA50H], edx
|
|
mov edx,[esp + 68H]
|
|
mov [esi + 0000FA64H], eax
|
|
mov eax,[esp + 48H]
|
|
mov [esi + 0000FA5CH], ecx
|
|
mov ecx,[esp + 40H]
|
|
mov [esi + 0000FA60H], edx
|
|
mov edx,[esp + 44H]
|
|
mov [esi + 0000FA70H], eax
|
|
mov eax, edi
|
|
mov [esi + 0000FA54H], ebx
|
|
mov [esi + 0000FA68H], ecx
|
|
mov [esi + 0000FA6CH], edx
|
|
pop edi
|
|
pop esi
|
|
pop ebp
|
|
pop ebx
|
|
add esp, 120
|
|
ret 4
|
|
|
|
@304: push 4001
|
|
call BzExcept
|
|
push 4002
|
|
call BzExcept
|
|
|
|
// nop; nop // align Table
|
|
@306: dd @072
|
|
dd @076
|
|
dd @079
|
|
dd @082
|
|
dd @088
|
|
dd @091
|
|
dd @094
|
|
dd @097
|
|
dd @100
|
|
dd @103
|
|
dd @107
|
|
dd @110
|
|
dd @113
|
|
dd @116
|
|
dd @119
|
|
dd @122
|
|
dd @125
|
|
dd @128
|
|
dd @133
|
|
dd @139
|
|
dd @148
|
|
dd @152
|
|
dd @156
|
|
dd @179
|
|
dd @174
|
|
dd @168
|
|
dd @192
|
|
dd @195
|
|
dd @238
|
|
dd @244
|
|
dd @229
|
|
dd @203
|
|
dd @274
|
|
dd @277
|
|
dd @280
|
|
dd @283
|
|
dd @286
|
|
dd @291
|
|
dd @294
|
|
dd @297
|
|
dd @300
|
|
@307:
|
|
mov eax,[esp + 04H]
|
|
xor ecx, ecx
|
|
mov dword ptr [eax + 00000C68H], 0
|
|
@308: mov dl,[eax + ecx + 00000C6CH]
|
|
test dl, dl
|
|
jz @309
|
|
mov edx,[eax + 00000C68H]
|
|
mov [eax + edx + 00000D7CH], cl
|
|
mov edx,[eax + 00000C68H]
|
|
inc edx
|
|
mov [eax + 00000C68H], edx
|
|
@309: inc ecx
|
|
cmp ecx, 256
|
|
jl @308
|
|
ret 4
|
|
@310:
|
|
mov eax,[esp + 14H]
|
|
push ebx
|
|
mov ebx,[esp + 20H]
|
|
push ebp
|
|
mov ebp,[esp + 20H]
|
|
push esi
|
|
xor esi, esi
|
|
push edi
|
|
cmp eax, ebp
|
|
mov edi, eax
|
|
jg @315
|
|
@311: xor eax, eax
|
|
test ebx, ebx
|
|
jle @314
|
|
mov ecx,[esp + 1CH]
|
|
lea ecx, [ecx + esi*4]
|
|
@312: mov ebx,[esp + 20H]
|
|
xor edx, edx
|
|
mov dl,[eax + ebx]
|
|
cmp edx, edi
|
|
jnz @313
|
|
mov [ecx], eax
|
|
inc esi
|
|
add ecx, 4
|
|
@313: mov ebx,[esp + 2CH]
|
|
inc eax
|
|
cmp eax, ebx
|
|
jl @312
|
|
@314: inc edi
|
|
cmp edi, ebp
|
|
jle @311
|
|
@315: mov edx,[esp + 18H]
|
|
mov ecx, 23
|
|
xor eax, eax
|
|
mov edi, edx
|
|
test ebx, ebx
|
|
rep stosd
|
|
jle @317
|
|
@316: mov esi,[esp + 20H]
|
|
xor ecx, ecx
|
|
mov cl,[eax + esi]
|
|
mov edi,[edx + ecx*4 + 04H]
|
|
lea ecx, [edx + ecx*4 + 04H]
|
|
inc edi
|
|
inc eax
|
|
cmp eax, ebx
|
|
mov [ecx], edi
|
|
jl @316
|
|
@317: lea eax, [edx + 04H]
|
|
mov ecx, 22
|
|
@318: mov esi,[eax - 04H]
|
|
mov ebx,[eax]
|
|
add ebx, esi
|
|
mov [eax], ebx
|
|
add eax, 4
|
|
dec ecx
|
|
jnz @318
|
|
mov ebx,[esp + 14H]
|
|
mov ecx, 23
|
|
xor eax, eax
|
|
mov edi, ebx
|
|
rep stosd
|
|
mov ecx,[esp + 24H]
|
|
xor esi, esi
|
|
cmp ecx, ebp
|
|
jg @320
|
|
lea eax, [edx + ecx*4]
|
|
mov edi, ebx
|
|
mov ebx,[esp + 24H]
|
|
mov ecx, ebp
|
|
sub ecx, ebx
|
|
sub edi, edx
|
|
inc ecx
|
|
@319: mov ebx,[eax + 04H]
|
|
sub ebx,[eax]
|
|
add eax, 4
|
|
add esi, ebx
|
|
lea ebx, [esi - 01H]
|
|
mov [edi + eax - 04H], ebx
|
|
shl esi, 1
|
|
dec ecx
|
|
jnz @319
|
|
mov ebx,[esp + 14H]
|
|
mov ecx,[esp + 24H]
|
|
@320: inc ecx
|
|
cmp ecx, ebp
|
|
jg @322
|
|
sub ebp, ecx
|
|
lea eax, [edx + ecx*4]
|
|
lea edx, [ebx + ecx*4 - 04H]
|
|
inc ebp
|
|
@321: mov ecx,[edx]
|
|
mov ebx,[eax]
|
|
add edx, 4
|
|
add eax, 4
|
|
lea ecx, [ecx + ecx + 02H]
|
|
sub ecx, ebx
|
|
dec ebp
|
|
mov [eax - 04H], ecx
|
|
jnz @321
|
|
@322: pop edi
|
|
pop esi
|
|
pop ebp
|
|
pop ebx
|
|
ret 28
|
|
end;
|
|
|
|
function BZ2_bzDecompressEnd(var strm: TBZStreamRec): Integer; cdecl;
|
|
asm pop ebp // auto-generated push ebp; mov ebp,esp
|
|
push esi
|
|
mov esi,[esp + 08H]
|
|
test esi, esi
|
|
push edi
|
|
jnz @064
|
|
pop edi
|
|
mov eax, -2
|
|
pop esi
|
|
ret
|
|
|
|
@064: mov edi,[esi + 20H]
|
|
test edi, edi
|
|
jnz @065
|
|
pop edi
|
|
mov eax, -2
|
|
pop esi
|
|
ret
|
|
|
|
@065: cmp [edi], esi
|
|
jz @066
|
|
pop edi
|
|
mov eax, -2
|
|
pop esi
|
|
ret
|
|
|
|
@066: mov eax,[edi + 00000C4CH]
|
|
test eax, eax
|
|
jz @067
|
|
push eax
|
|
mov eax,[esi + 2CH]
|
|
push eax
|
|
call dword ptr [esi + 28H]
|
|
@067: mov eax,[edi + 00000C50H]
|
|
test eax, eax
|
|
jz @068
|
|
mov ecx,[esi + 2CH]
|
|
push eax
|
|
push ecx
|
|
call dword ptr [esi + 28H]
|
|
@068: mov edi,[edi + 00000C54H]
|
|
test edi, edi
|
|
jz @069
|
|
mov edx,[esi + 2CH]
|
|
push edi
|
|
push edx
|
|
call dword ptr [esi + 28H]
|
|
@069: mov eax,[esi + 20H]
|
|
mov ecx,[esi + 2CH]
|
|
push eax
|
|
push ecx
|
|
call dword ptr [esi + 28H]
|
|
mov dword ptr [esi + 20H], 0
|
|
pop edi
|
|
xor eax, eax
|
|
pop esi
|
|
ret
|
|
end;
|
|
|
|
|