Function at 0x47bcc0
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xcc
mov eax, dword [ebp + 8]
test eax, eax
jne 0x47bce5
mov dword [ebp - 0x68], 0xfffffffe
mov eax, dword [ebp - 0x68]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x1c]
test edi, edi
je case.default.0x47bd6c
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x78], edx
test edx, edx
je case.default.0x47bd6c
mov ecx, dword [eax]
mov dword [ebp - 0x7c], ecx
test ecx, ecx
je 0x47cde0
mov eax, dword [edi]
cmp eax, 0xb
je 0x47cd99
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 8]
mov edx, dword [edx + 0x10]
mov dword [ebp - 0x70], edx
mov ecx, dword [ecx + 4]
mov dword [ebp - 0x74], ecx
mov ecx, dword [ebp + 0xc]
mov edx, dword [edi + 0x38]
sub ecx, 5
mov dword [ebp - 0x3c], edx
mov esi, dword [ebp - 0x74]
mov ebx, dword [edi + 0x3c]
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0x30], esi
lea ecx, [edi + 0x530]
lea esi, [edi + 0x2f0]
mov dword [ebp - 0x6c], edx
mov dword [ebp - 0x68], 0
mov dword [ebp - 0xa4], ecx
mov dword [ebp - 0xa8], esi
cmp eax, 0x1e
ja case.default.0x47bd6c
jmp dword [eax*4 + 0x4c1ef0]
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
add ebx, 8
mov dword [ebp - 0x3c], ecx
cmp ebx, 0xf
jbe 0x47bd73
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x10], eax
cmp al, 8
je 0x47d313
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.unknown_compression_method
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
add ebx, 8
mov dword [ebp - 0x3c], ecx
cmp ebx, 0xd
jbe 0x47bdc6
mov eax, dword [ebp - 0x3c]
sub ebx, 0xe
and eax, 0x1f
add eax, 0x101
mov dword [edi + 0x60], eax
mov eax, dword [ebp - 0x3c]
shr eax, 5
and eax, 0x1f
inc eax
mov dword [edi + 0x64], eax
mov eax, dword [ebp - 0x3c]
shr eax, 0xa
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
and eax, 0xf
add eax, 4
mov dword [edi + 0x5c], eax
mov eax, dword [ebp - 0x3c]
shr eax, 4
mov dword [ebp - 0x3c], eax
cmp dword [edi + 0x60], 0x11e
ja 0x47d129
cmp dword [edi + 0x64], 0x1e
ja 0x47d129
mov dword [edi + 0x68], 0
mov dword [edi], 0x11
mov eax, dword [edi + 0x68]
mov dword [ebp - 0xc8], eax
lea esi, [eax + eax + 0x4c1f80]
cmp dword [edi + 0x5c], eax
jbe 0x47beda
cmp ebx, 2
ja 0x47be9d
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
add ebx, 8
mov dword [ebp - 0x3c], ecx
mov ax, word [esi]
mov edx, dword [ebp - 0x3c]
and eax, 0xffff
and edx, 7
sub ebx, 3
add esi, 2
mov word [edi + eax*2 + 0x70], dx
mov ecx, dword [ebp - 0xc8]
inc ecx
mov dword [ebp - 0xc8], ecx
mov eax, dword [ebp - 0xc8]
mov dword [edi + 0x68], eax
mov edx, dword [ebp - 0x3c]
shr edx, 3
mov dword [ebp - 0x3c], edx
cmp dword [edi + 0x5c], eax
ja 0x47be6c
cmp dword [ebp - 0xc8], 0x12
ja 0x47bf1d
mov esi, dword [ebp - 0xc8]
lea edx, [esi + esi + 0x4c1f80]
mov ax, word [edx]
add edx, 2
and eax, 0xffff
mov word [edi + eax*2 + 0x70], 0
mov eax, dword [ebp - 0xc8]
inc eax
mov dword [ebp - 0xc8], eax
mov eax, dword [ebp - 0xc8]
mov dword [edi + 0x68], eax
cmp eax, 0x13
jne 0x47bef0
mov eax, dword [ebp - 0xa4]
mov dword [edi + 0x54], 7
mov dword [edi + 0x6c], eax
mov dword [edi + 0x4c], eax
push eax
push eax
mov eax, dword [ebp - 0xa8]
push eax
lea eax, [edi + 0x54]
push eax
lea eax, [edi + 0x6c]
push eax
lea eax, [edi + 0x70]
push 0x13
push eax
push 0
call fcn.00480c40
add esp, 0x20
mov dword [ebp - 0x68], eax
test eax, eax
je 0x47c946
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_code_lengths_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x47c024
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov esi, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], esi
add ebx, 8
cmp ebx, 0x1f
jbe 0x47bf73
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
shr eax, 8
mov ecx, dword [ebp - 0x3c]
shr edx, 0x18
and eax, 0xff00
add eax, edx
mov edx, dword [ebp - 0x3c]
and edx, 0xff00
xor ebx, ebx
shl ecx, 0x18
shl edx, 8
mov dword [ebp - 0x3c], ecx
add eax, edx
mov edx, dword [ebp - 0x3c]
add eax, edx
mov dword [edi + 0x18], eax
mov esi, dword [ebp + 8]
mov dword [esi + 0x30], eax
mov dword [edi], 0xa
mov dword [ebp - 0x3c], 0
mov eax, dword [edi + 0xc]
test eax, eax
je 0x47d68c
push eax
push 0
push 0
push 0
call fcn.00480670
add esp, 0x10
mov dword [edi + 0x18], eax
mov esi, dword [ebp + 8]
mov dword [esi + 0x30], eax
mov dword [edi], 0xb
cmp dword [ebp - 0x94], 1
ja case.0x47bd6c.12
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x78]
mov dword [ecx + 0xc], esi
mov eax, dword [ebp - 0x70]
mov dword [ecx + 0x10], eax
mov edx, dword [ebp - 0x7c]
mov dword [ecx], edx
mov esi, dword [ebp - 0x30]
mov dword [ecx + 4], esi
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x3c], ebx
mov dword [edi + 0x38], eax
mov eax, dword [edi + 0x28]
test eax, eax
jne 0x47c05b
cmp dword [edi], 0x19
ja 0x47c06e
mov edx, dword [ebp - 0x6c]
cmp dword [ecx + 0x10], edx
je 0x47c06e
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp + 8]
call fcn.0047ba50
test eax, eax
jne 0x47c934
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x74]
mov ebx, dword [ebp - 0x6c]
mov eax, dword [ecx + 4]
mov edx, dword [ecx + 0x14]
sub esi, eax
mov eax, dword [ecx + 0x10]
sub ebx, eax
mov eax, dword [ecx + 8]
add eax, esi
add edx, ebx
mov dword [ecx + 8], eax
mov dword [ecx + 0x14], edx
mov eax, dword [edi + 0x1c]
add eax, ebx
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 8]
test eax, eax
je 0x47c0cc
test ebx, ebx
je 0x47c0cc
mov eax, dword [edi + 0x10]
test eax, eax
je 0x47cdc4
push eax
push ebx
mov eax, dword [ecx + 0xc]
sub eax, ebx
push eax
mov eax, dword [edi + 0x18]
push eax
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
cmp dword [edi + 4], 1
sbb eax, eax
mov edx, dword [edi + 0x3c]
xor eax, 0xffffffff
and eax, 0x40
add eax, edx
mov edx, dword [edi]
cmp edx, 0xb
je 0x47cdba
cmp edx, 0x13
je 0x47cd8f
xor ecx, ecx
cmp edx, 0xe
je 0x47cd8f
mov edx, dword [ebp + 8]
add eax, ecx
or ebx, esi
mov dword [edx + 0x2c], eax
je 0x47c112
cmp dword [ebp + 0xc], 4
jne 0x47bcda
mov eax, dword [ebp - 0x68]
test eax, eax
jne 0x47bcda
mov dword [ebp - 0x68], 0xfffffffb
jmp 0x47bcda
mov edx, dword [edi + 0x20]
test edx, edx
je 0x47c13b
mov eax, dword [ebp - 0x3c]
shr eax, 8
and eax, 1
mov dword [edx], eax
test byte [edi + 0x11], 2
jne 0x47d58e
mov dword [edi], 2
xor ebx, ebx
mov dword [ebp - 0x3c], 0
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x47c024
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], eax
add ebx, 8
cmp ebx, 0x1f
jbe 0x47c154
mov eax, dword [edi + 0x20]
test eax, eax
je 0x47c195
mov edx, dword [ebp - 0x3c]
mov dword [eax + 4], edx
test byte [edi + 0x11], 2
jne 0x47d1cc
mov dword [edi], 3
xor ebx, ebx
mov dword [ebp - 0x3c], 0
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x47c024
mov ecx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x7c]
dec ecx
xor eax, eax
mov dword [ebp - 0x30], ecx
mov cl, bl
mov al, byte [esi]
mov edx, dword [ebp - 0x3c]
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], esi
add ebx, 8
cmp ebx, 0xf
jbe 0x47c1ae
mov edx, dword [edi + 0x20]
test edx, edx
je 0x47c1f9
movzx eax, byte [ebp - 0x3c]
mov dword [edx + 8], eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [edi + 0x20]
shr eax, 8
mov dword [edx + 0xc], eax
test byte [edi + 0x11], 2
jne 0x47d19c
mov dword [edi], 4
xor ebx, ebx
mov dword [ebp - 0x3c], 0
test byte [edi + 0x11], 4
jne 0x47c4a1
mov eax, dword [edi + 0x20]
test eax, eax
je 0x47c22a
mov dword [eax + 0x10], 0
mov dword [edi], 5
mov edx, dword [edi + 0x10]
test dh, 4
je 0x47c2c9
mov eax, dword [edi + 0x40]
mov esi, dword [ebp - 0x30]
cmp esi, eax
jbe 0x47c248
mov esi, eax
test esi, esi
je 0x47c2c1
mov ecx, dword [edi + 0x20]
mov dword [ebp - 0xac], ecx
test ecx, ecx
je 0x47c2a0
mov ecx, dword [ecx + 0x10]
mov dword [ebp - 0x9c], ecx
test ecx, ecx
je 0x47c2a0
mov ecx, dword [ebp - 0xac]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x18]
sub edx, eax
mov dword [ebp - 0x48], esi
lea eax, [esi + edx]
cmp eax, ecx
jbe 0x47c283
sub ecx, edx
mov dword [ebp - 0x48], ecx
mov eax, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0x48]
add eax, edx
push edx
mov edx, dword [ebp - 0x7c]
push ecx
push edx
push eax
call sub.msvcrt.dll_memcpy
mov edx, dword [edi + 0x10]
add esp, 0x10
and dh, 2
jne 0x47d38b
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x7c]
add eax, esi
sub edx, esi
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x7c], eax
mov eax, dword [edi + 0x40]
sub eax, esi
mov dword [edi + 0x40], eax
test eax, eax
jne 0x47c024
mov dword [edi + 0x40], 0
mov dword [edi], 6
test byte [edi + 0x11], 8
je 0x47ce1f
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
xor esi, esi
mov edx, dword [ebp - 0x7c]
mov dl, byte [esi + edx]
inc esi
mov byte [ebp - 0x95], dl
mov edx, dword [edi + 0x20]
test edx, edx
je 0x47c31d
mov ecx, dword [edx + 0x1c]
test ecx, ecx
je 0x47c31d
mov eax, dword [edi + 0x40]
cmp eax, dword [edx + 0x20]
jae 0x47c31d
mov dl, byte [ebp - 0x95]
mov byte [ecx + eax], dl
inc eax
mov dword [edi + 0x40], eax
cmp byte [ebp - 0x95], 0
jne 0x47cd81
test byte [edi + 0x11], 2
jne 0x47d101
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
sub eax, esi
add ecx, esi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x7c], ecx
cmp byte [ebp - 0x95], 0
jne 0x47c024
mov dword [edi + 0x40], 0
mov dword [edi], 7
test byte [edi + 0x11], 0x10
je 0x47cdf0
mov edx, dword [ebp - 0x30]
test edx, edx
je 0x47c024
xor esi, esi
mov ecx, dword [ebp - 0x7c]
mov cl, byte [esi + ecx]
inc esi
mov byte [ebp - 0x31], cl
mov edx, dword [edi + 0x20]
test edx, edx
je 0x47c39f
mov ecx, dword [edx + 0x24]
test ecx, ecx
je 0x47c39f
mov eax, dword [edi + 0x40]
cmp eax, dword [edx + 0x28]
jae 0x47c39f
mov dl, byte [ebp - 0x31]
mov byte [ecx + eax], dl
inc eax
mov dword [edi + 0x40], eax
cmp byte [ebp - 0x31], 0
jne 0x47cd73
test byte [edi + 0x11], 2
jne 0x47cfd0
mov eax, dword [ebp - 0x30]
sub eax, esi
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x7c]
add eax, esi
mov dword [ebp - 0x7c], eax
cmp byte [ebp - 0x31], 0
jne 0x47c024
mov dword [edi], 8
mov edx, dword [edi + 0x10]
test dh, 2
jne 0x47c449
mov eax, dword [edi + 0x20]
test eax, eax
je 0x47c3f5
sar edx, 9
and edx, 1
mov dword [eax + 0x2c], edx
mov eax, dword [edi + 0x20]
mov dword [eax + 0x30], 1
push eax
push 0
push 0
push 0
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x30], eax
mov dword [edi], 0xb
mov eax, dword [edi]
jmp 0x47bd63
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x3c]
add ebx, 8
add ecx, eax
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x7c], eax
cmp ebx, 0xf
jbe 0x47c41a
movzx eax, word [edi + 0x18]
cmp eax, dword [ebp - 0x3c]
je 0x47d159
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.header_crc_mismatch
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x47c024
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], eax
add ebx, 8
cmp ebx, 0xf
jbe 0x47c472
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x40], eax
mov eax, dword [edi + 0x20]
test eax, eax
je 0x47c4b9
mov edx, dword [ebp - 0x3c]
mov dword [eax + 0x14], edx
test byte [edi + 0x11], 2
jne 0x47d3a5
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x47c22a
mov eax, dword [edi + 4]
test eax, eax
jne 0x47ce07
cmp ebx, 2
ja 0x47c50d
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
add ebx, 8
mov dword [ebp - 0x3c], ecx
mov eax, dword [ebp - 0x3c]
lea ecx, [ebx - 1]
and eax, 1
mov dword [edi + 4], eax
mov edx, dword [ebp - 0x3c]
shr edx, 1
mov eax, edx
and eax, 3
cmp eax, 1
je 0x47d337
jae 0x47d175
mov dword [edi], 0xd
shr edx, 2
lea ebx, [ecx - 2]
mov dword [ebp - 0x3c], edx
mov eax, dword [edi]
jmp 0x47bd63
mov dword [edi + 0x40], edx
mov dword [edi], 0xe
cmp dword [ebp + 0xc], 6
je 0x47d580
mov dword [ebp - 0x3c], 0
xor ebx, ebx
mov dword [edi], 0xf
mov eax, dword [edi + 0x40]
test eax, eax
je 0x47cf50
mov edx, dword [ebp - 0x70]
cmp edx, eax
jbe 0x47c57e
mov edx, eax
mov esi, edx
cmp edx, dword [ebp - 0x30]
jbe 0x47c588
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x47c024
mov ecx, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x78]
push eax
push esi
push ecx
push edx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0x30]
sub eax, esi
add esp, 0x10
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x7c]
add eax, esi
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x70]
sub eax, esi
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x78]
add eax, esi
mov dword [ebp - 0x78], eax
mov eax, dword [edi + 0x40]
sub eax, esi
mov dword [edi + 0x40], eax
mov eax, dword [edi]
jmp 0x47bd63
mov eax, dword [ebp - 0x40]
and eax, 0xffff
mov dword [edi + 0x44], eax
mov al, byte [ebp - 0xc8]
mov dword [edi], 0x17
and eax, 0xf
mov dword [edi + 0x48], eax
mov esi, dword [edi + 0x48]
test esi, esi
je 0x47c653
cmp ebx, esi
jae 0x47c629
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
add ebx, 8
shl eax, cl
mov ecx, dword [ebp - 0x3c]
inc edx
add ecx, eax
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x3c], ecx
cmp esi, ebx
ja 0x47c5f9
mov ecx, esi
mov eax, 1
shl eax, cl
mov edx, dword [ebp - 0x3c]
dec eax
and eax, edx
mov edx, dword [edi + 0x44]
add edx, eax
sub ebx, esi
mov dword [edi + 0x44], edx
shr dword [ebp - 0x3c], cl
mov eax, dword [edi + 0x1bc4]
add eax, esi
mov dword [edi + 0x1bc4], eax
mov dword [edi], 0x18
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x47c024
mov eax, dword [ebp - 0x70]
mov edx, dword [ebp - 0x6c]
sub edx, eax
mov eax, dword [edi + 0x44]
cmp edx, eax
jae 0x47cf5d
sub eax, edx
mov edx, eax
cmp eax, dword [edi + 0x2c]
jbe 0x47cfb0
mov eax, dword [edi + 0x1bc0]
test eax, eax
je 0x47cfb0
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x4c1ea5
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov dword [edi], 0x13
cmp dword [ebp + 0xc], 6
je 0x47c024
mov dword [edi], 0x14
cmp dword [ebp - 0x30], 5
jbe 0x47ce36
cmp dword [ebp - 0x70], 0x101
jbe 0x47ce36
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x78]
mov dword [edx + 0xc], ecx
mov esi, dword [ebp - 0x70]
mov dword [edx + 0x10], esi
mov eax, dword [ebp - 0x7c]
mov dword [edx], eax
mov ecx, dword [ebp - 0x30]
mov dword [edx + 4], ecx
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x3c], ebx
mov dword [edi + 0x38], eax
push eax
push eax
mov eax, dword [ebp - 0x6c]
push eax
push edx
call fcn.00481650
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 8]
mov edx, dword [edx + 0xc]
mov dword [ebp - 0x78], edx
mov esi, dword [ebp + 8]
mov ecx, dword [ecx + 0x10]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x70], ecx
add esp, 0x10
mov esi, dword [esi]
mov dword [ebp - 0x7c], esi
mov eax, dword [eax + 4]
mov dword [ebp - 0x30], eax
mov edx, dword [edi + 0x38]
mov dword [ebp - 0x3c], edx
mov ebx, dword [edi + 0x3c]
cmp dword [edi], 0xb
jne 0x47bdc2
mov eax, dword [edi]
mov dword [edi + 0x1bc4], 0xffffffff
jmp 0x47bd63
and eax, 0xf
mov dword [edi], 0x15
mov dword [edi + 0x48], eax
mov esi, dword [edi + 0x48]
test esi, esi
je 0x47c7bf
cmp ebx, esi
jae 0x47c795
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
add ebx, 8
shl eax, cl
mov ecx, dword [ebp - 0x3c]
inc edx
add ecx, eax
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x3c], ecx
cmp esi, ebx
ja 0x47c765
mov ecx, esi
mov eax, 1
shl eax, cl
mov edx, dword [ebp - 0x3c]
dec eax
and eax, edx
mov edx, dword [edi + 0x40]
add edx, eax
sub ebx, esi
mov dword [edi + 0x40], edx
shr dword [ebp - 0x3c], cl
mov eax, dword [edi + 0x1bc4]
add eax, esi
mov dword [edi + 0x1bc4], eax
mov eax, dword [edi + 0x40]
mov dword [edi], 0x16
mov dword [edi + 0x1bc8], eax
mov esi, dword [edi + 0x50]
mov eax, 1
mov dword [ebp - 0x80], esi
mov ecx, dword [edi + 0x58]
mov edx, dword [ebp - 0x80]
shl eax, cl
lea esi, [eax - 1]
mov eax, dword [ebp - 0x3c]
and eax, esi
lea eax, [edx + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x40], cx
mov dl, byte [eax + 1]
mov al, byte [eax]
mov byte [ebp - 0xc8], al
xor eax, eax
mov al, dl
cmp ebx, eax
jae 0x47c859
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
mov edx, dword [ebp - 0x80]
mov dword [ebp - 0x3c], ecx
add ebx, 8
mov eax, dword [ebp - 0x3c]
and eax, esi
lea eax, [edx + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x40], cx
mov dl, byte [eax + 1]
mov al, byte [eax]
mov byte [ebp - 0xc8], al
xor eax, eax
mov al, dl
cmp eax, ebx
ja 0x47c807
mov al, byte [ebp - 0xc8]
and eax, 0xff
mov dword [ebp - 0x2c], eax
test al, 0xf0
je 0x47cfea
mov cl, dl
and ecx, 0xff
mov esi, ecx
mov ecx, esi
xor eax, eax
shr dword [ebp - 0x3c], cl
mov al, dl
sub ebx, eax
mov eax, dword [edi + 0x1bc4]
add eax, esi
mov dword [edi + 0x1bc4], eax
test byte [ebp - 0x2c], 0x40
je 0x47c5d1
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x4c1e8f
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov eax, dword [edi + 8]
test eax, eax
jne 0x47cb91
mov dword [edi], 0x1b
mov eax, dword [edi + 8]
test eax, eax
je 0x47cad5
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x47c90c
jmp 0x47cad5
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x47c024
mov ecx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x7c]
dec ecx
xor eax, eax
mov dword [ebp - 0x30], ecx
mov cl, bl
mov al, byte [esi]
mov edx, dword [ebp - 0x3c]
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], esi
add ebx, 8
cmp ebx, 0x1f
jbe 0x47c8e0
mov eax, dword [ebp - 0x3c]
cmp dword [edi + 0x1c], eax
je 0x47cacc
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov dword [edi], 0x1e
mov dword [ebp - 0x68], 0xfffffffc
jmp 0x47bcda
mov dword [edi + 0x68], 0
mov dword [edi], 0x12
mov ecx, dword [edi + 0x68]
mov dword [ebp - 0x38], ecx
mov esi, dword [edi + 0x64]
mov dword [ebp - 0xa0], esi
mov eax, dword [edi + 0x60]
add esi, eax
mov dword [ebp - 0xa0], esi
mov eax, dword [ebp - 0x38]
cmp dword [ebp - 0xa0], eax
jbe 0x47d5f7
mov edx, dword [edi + 0x4c]
mov eax, 1
mov dword [ebp - 0x5c], edx
mov ecx, dword [edi + 0x54]
shl eax, cl
dec eax
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x60]
and eax, ecx
lea eax, [edx + eax*4]
mov cl, byte [eax + 1]
mov dx, word [eax + 2]
mov al, cl
and eax, 0xff
mov esi, eax
cmp ebx, eax
jae 0x47c9fd
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
mov edx, dword [ebp - 0x60]
mov dword [ebp - 0x3c], ecx
mov esi, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x3c]
add ebx, 8
and eax, edx
lea eax, [esi + eax*4]
mov cl, byte [eax + 1]
mov dx, word [eax + 2]
mov al, cl
and eax, 0xff
mov esi, eax
cmp eax, ebx
ja 0x47c9af
cmp dx, 0xf
jbe 0x47d140
cmp dx, 0x10
je 0x47d408
cmp dx, 0x11
je 0x47d4df
and ecx, 0xff
mov edx, ecx
mov dword [ebp - 0xc8], ecx
add edx, 7
cmp ebx, edx
jae 0x47ca63
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec eax
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x3c]
add ebx, 8
add ecx, eax
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x7c], eax
cmp ebx, edx
jb 0x47ca30
mov eax, dword [ebp - 0x3c]
mov cl, byte [ebp - 0xc8]
shr eax, cl
mov ecx, ebx
mov edx, eax
sub ecx, esi
and edx, 0x7f
shr eax, 7
add edx, 0xb
lea ebx, [ecx - 7]
mov dword [ebp - 0x3c], eax
xor ecx, ecx
mov esi, dword [ebp - 0x38]
lea eax, [edx + esi]
cmp dword [ebp - 0xa0], eax
jb 0x47d5be
mov word [ebp - 0xca], cx
mov eax, dword [edi + 0x68]
mov word [edi + eax*2 + 0x70], cx
inc eax
mov dword [edi + 0x68], eax
mov ecx, 1
mov si, word [ebp - 0xca]
inc ecx
mov word [edi + eax*2 + 0x70], si
inc eax
mov dword [ebp - 0x38], eax
cmp ecx, edx
mov dword [edi + 0x68], eax
jne 0x47caaf
jmp 0x47c96d
mov dword [ebp - 0x3c], 0
xor ebx, ebx
mov dword [edi], 0x1c
mov dword [ebp - 0x68], 1
jmp 0x47c024
mov dword [ebp - 0x68], 0xfffffffd
jmp 0x47c024
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x3c], cl
cmp ebx, 0x1f
ja 0x47cb34
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov cl, bl
mov al, byte [edx]
add ebx, 8
shl eax, cl
mov ecx, dword [ebp - 0x3c]
inc edx
add ecx, eax
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x3c], ecx
cmp ebx, 0x1f
jbe 0x47cb03
mov eax, dword [ebp - 0x3c]
shr eax, 0x10
movzx edx, word [ebp - 0x3c]
xor eax, 0xffff
cmp edx, eax
je 0x47c548
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_stored_block_lengths
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov esi, dword [ebp - 0x30]
test esi, esi
je 0x47c024
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov esi, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
inc esi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], esi
add ebx, 8
cmp ebx, 0x1f
jbe 0x47cb62
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x70]
mov edx, dword [esi + 0x14]
sub eax, ecx
add edx, eax
mov dword [esi + 0x14], edx
mov esi, dword [edi + 0x1c]
add esi, eax
test eax, eax
mov dword [edi + 0x1c], esi
je 0x47cbdd
mov ecx, dword [edi + 0x10]
test ecx, ecx
je 0x47d553
push edx
mov edx, dword [ebp - 0x78]
sub edx, eax
push eax
push edx
mov eax, dword [edi + 0x18]
push eax
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
mov esi, dword [ebp + 8]
mov dword [esi + 0x30], eax
mov edx, dword [edi + 0x10]
mov eax, dword [ebp - 0x3c]
test edx, edx
jne 0x47cc0d
mov edx, eax
shr edx, 8
shr eax, 0x18
and edx, 0xff00
add edx, eax
mov eax, dword [ebp - 0x3c]
and eax, 0xff00
shl eax, 8
add edx, eax
mov eax, dword [ebp - 0x3c]
shl eax, 0x18
lea eax, [edx + eax]
cmp eax, dword [edi + 0x18]
je 0x47d56c
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_data_check
mov dword [edi], 0x1d
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x6c], edx
mov eax, dword [edi]
jmp 0x47bd63
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x47c024
mov edx, dword [ebp - 0x78]
mov eax, dword [edi + 0x40]
mov byte [edx], al
inc edx
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x78], edx
dec eax
mov dword [ebp - 0x70], eax
mov dword [edi], 0x14
mov eax, dword [edi]
jmp 0x47bd63
mov edx, dword [edi + 8]
test edx, edx
jne 0x47cca1
mov dword [edi], 0xc
mov eax, dword [edi]
jmp 0x47bd63
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec eax
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x7c]
add esi, eax
inc ecx
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x7c], ecx
add ebx, 8
cmp ebx, 0xf
jbe 0x47cc72
and edx, 2
je 0x47ccb8
cmp dword [ebp - 0x3c], 0x8b1f
je 0x47d49a
mov eax, dword [edi + 0x20]
mov dword [edi + 0x10], 0
test eax, eax
je 0x47cccd
mov dword [eax + 0x30], 0xffffffff
test byte [edi + 8], 1
je 0x47d374
movzx eax, byte [ebp - 0x3c]
shl eax, 8
mov edx, dword [ebp - 0x3c]
shr edx, 8
add eax, edx
mov edx, 0x1f
mov esi, edx
xor edx, edx
div esi
test edx, edx
jne 0x47d374
mov eax, dword [ebp - 0x3c]
and eax, 0xf
cmp eax, 8
jne 0x47bdb2
mov eax, dword [ebp - 0x3c]
shr eax, 4
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
and eax, 0xf
lea ecx, [eax + 8]
mov eax, dword [edi + 0x24]
test eax, eax
jne 0x47d5d5
mov dword [edi + 0x24], ecx
mov eax, 1
shl eax, cl
mov dword [edi + 0x14], eax
push eax
push 0
push 0
push 0
call fcn.00480670
mov dword [edi + 0x18], eax
add esp, 0x10
mov esi, dword [ebp + 8]
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 0x3c]
and eax, 0x200
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 1
sbb eax, eax
xor ebx, ebx
and eax, 2
add eax, 9
mov dword [edi], eax
mov dword [ebp - 0x3c], 0
mov eax, dword [edi]
jmp 0x47bd63
cmp esi, dword [ebp - 0x30]
jb 0x47c375
jmp 0x47c3a9
cmp esi, dword [ebp - 0x30]
jb 0x47c2ed
jmp 0x47c32a
mov ecx, 0x100
jmp 0x47c0fc
mov dword [edi], 0xc
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov esi, dword [esi + 0xc]
mov dword [ebp - 0x78], esi
mov eax, dword [eax]
mov dword [ebp - 0x7c], eax
mov eax, 0xc
jmp 0x47bd11
sub eax, 0xffffff80
xor ecx, ecx
jmp 0x47c0fc
mov edx, dword [ebp + 8]
push eax
push ebx
mov eax, dword [edx + 0xc]
sub eax, ebx
push eax
mov ecx, dword [edi + 0x18]
push ecx
call fcn.00480670
add esp, 0x10
jmp 0x47c0c3
mov eax, dword [eax + 4]
test eax, eax
je 0x47bd06
jmp case.default.0x47bd6c
mov eax, dword [edi + 0x20]
test eax, eax
je 0x47c3cd
mov dword [eax + 0x24], 0
jmp 0x47c3cd
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x3c], cl
mov dword [edi], 0x1a
mov eax, dword [edi]
jmp 0x47bd63
mov eax, dword [edi + 0x20]
test eax, eax
je 0x47c351
mov dword [eax + 0x1c], 0
jmp 0x47c351
mov ecx, dword [edi + 0x4c]
mov dword [edi + 0x1bc4], 0
mov dword [ebp - 0x90], ecx
mov eax, 1
mov ecx, dword [edi + 0x54]
mov edx, dword [ebp - 0x90]
shl eax, cl
lea esi, [eax - 1]
mov eax, dword [ebp - 0x3c]
and eax, esi
lea eax, [edx + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x3e], cx
mov dl, byte [eax + 1]
mov al, byte [eax]
mov byte [ebp - 0xc8], al
xor eax, eax
mov al, dl
cmp ebx, eax
jae 0x47ced4
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
inc edx
shl eax, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x7c], edx
add ecx, eax
mov edx, dword [ebp - 0x90]
mov dword [ebp - 0x3c], ecx
add ebx, 8
mov eax, dword [ebp - 0x3c]
and eax, esi
lea eax, [edx + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x3e], cx
mov dl, byte [eax + 1]
mov al, byte [eax]
mov byte [ebp - 0xc8], al
xor eax, eax
mov al, dl
cmp eax, ebx
ja 0x47ce7f
cmp byte [ebp - 0xc8], 0
je 0x47d11b
xor eax, eax
mov al, byte [ebp - 0xc8]
test al, 0xf0
je 0x47d21a
mov cl, dl
and ecx, 0xff
mov esi, ecx
mov ecx, esi
xor eax, eax
shr dword [ebp - 0x3c], cl
mov al, dl
sub ebx, eax
mov eax, dword [edi + 0x1bc4]
add eax, esi
mov dword [edi + 0x1bc4], eax
mov ax, word [ebp - 0x3e]
and eax, 0xffff
mov dword [edi + 0x40], eax
cmp byte [ebp - 0xc8], 0
jne 0x47cf36
mov dword [edi], 0x19
mov eax, dword [edi]
jmp 0x47bd63
xor eax, eax
mov al, byte [ebp - 0xc8]
test al, 0x20
je 0x47d3de
mov dword [edi + 0x1bc4], 0xffffffff
mov dword [edi], 0xb
mov eax, dword [edi]
jmp 0x47bd63
mov esi, dword [ebp - 0x78]
sub esi, eax
mov eax, dword [edi + 0x40]
mov edx, eax
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x44], edx
cmp edx, ecx
jbe 0x47cf76
mov dword [ebp - 0x44], ecx
mov edx, ecx
mov ecx, dword [ebp - 0x70]
sub eax, edx
sub ecx, edx
mov dword [ebp - 0x70], ecx
mov dword [edi + 0x40], eax
mov ecx, dword [ebp - 0x78]
mov edx, dword [ebp - 0x44]
mov al, byte [esi]
inc esi
mov byte [ecx], al
inc ecx
dec edx
jne 0x47cf89
mov esi, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x44]
lea esi, [ecx + esi]
mov dword [ebp - 0x78], esi
mov eax, dword [edi + 0x40]
test eax, eax
je 0x47cc51
mov eax, dword [edi]
jmp 0x47bd63
mov eax, dword [edi + 0x30]
cmp edx, eax
jbe 0x47d167
sub edx, eax
mov esi, dword [edi + 0x28]
sub esi, edx
mov eax, dword [edi + 0x34]
add esi, eax
mov eax, dword [edi + 0x40]
cmp edx, eax
jbe 0x47cf67
jmp 0x47cf65
push eax
mov eax, dword [ebp - 0x7c]
push esi
push eax
mov eax, dword [edi + 0x18]
push eax
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x47c3b3
xor eax, eax
mov esi, dword [ebp - 0x40]
mov al, dl
and esi, 0xffff
mov dword [ebp - 0x88], eax
mov ecx, eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x50], esi
add ecx, eax
mov eax, 1
shl eax, cl
dec eax
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x54], eax
and eax, ecx
mov cl, byte [ebp - 0x88]
shr eax, cl
add eax, esi
mov esi, dword [ebp - 0x80]
lea eax, [esi + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x40], cx
mov cl, byte [eax + 1]
mov byte [ebp - 0x55], cl
mov al, byte [eax]
mov byte [ebp - 0xc8], al
mov al, cl
and eax, 0xff
mov esi, eax
mov eax, dword [ebp - 0x88]
add eax, esi
cmp ebx, eax
jae 0x47d0c7
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov esi, dword [ebp - 0x54]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x3c]
add ebx, 8
add ecx, eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x3c], ecx
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x3c]
and eax, esi
mov cl, byte [ebp - 0x88]
shr eax, cl
mov ecx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x80]
add eax, ecx
lea eax, [esi + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x40], cx
mov cl, byte [eax + 1]
mov byte [ebp - 0x55], cl
mov al, byte [eax]
mov byte [ebp - 0xc8], al
mov al, cl
and eax, 0xff
mov esi, eax
mov eax, dword [ebp - 0x88]
add eax, esi
cmp eax, ebx
ja 0x47d052
mov cl, byte [ebp - 0x88]
xor eax, eax
shr dword [ebp - 0x3c], cl
mov al, dl
mov edx, dword [edi + 0x1bc4]
sub ebx, eax
mov eax, dword [ebp - 0x88]
add edx, eax
mov dword [edi + 0x1bc4], edx
mov dl, byte [ebp - 0xc8]
and edx, 0xff
mov dword [ebp - 0x2c], edx
mov dl, byte [ebp - 0x55]
jmp 0x47c879
push eax
mov eax, dword [ebp - 0x7c]
push esi
push eax
mov eax, dword [edi + 0x18]
push eax
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x47c334
mov al, dl
and eax, 0xff
mov esi, eax
jmp 0x47cefb
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.too_many_length_or_distance_symbols
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
shr dword [ebp - 0x3c], cl
mov ecx, dword [ebp - 0x38]
sub ebx, esi
mov word [edi + ecx*2 + 0x70], dx
inc ecx
mov dword [ebp - 0x38], ecx
mov dword [edi + 0x68], ecx
jmp 0x47c96d
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x47c3db
mov esi, eax
mov eax, dword [edi + 0x34]
sub esi, edx
add esi, eax
jmp 0x47cfc7
cmp eax, 2
je 0x47d3fd
cmp eax, 3
jne 0x47c538
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_block_type
mov dword [edi], 0x1d
jmp 0x47c538
mov al, byte [ebp - 0x3c]
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x3c]
shr eax, 8
mov dword [ebp - 0x3c], eax
push eax
mov dl, byte [ebp - 0x3c]
lea eax, [ebp - 0x1c]
push 2
mov byte [ebp - 0x1b], dl
push eax
mov eax, dword [edi + 0x18]
push eax
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x47c203
mov eax, dword [ebp - 0x3c]
mov cl, byte [ebp - 0x3c]
shr eax, 8
mov byte [ebp - 0x1c], cl
mov dword [ebp - 0x3c], eax
mov al, byte [ebp - 0x3c]
mov byte [ebp - 0x1b], al
mov eax, dword [ebp - 0x3c]
shr eax, 8
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
mov dl, byte [ebp - 0x3c]
shr eax, 8
mov byte [ebp - 0x1a], dl
mov dword [ebp - 0x3c], eax
push eax
mov cl, byte [ebp - 0x3c]
lea eax, [ebp - 0x1c]
push 4
mov byte [ebp - 0x19], cl
push eax
mov eax, dword [edi + 0x18]
push eax
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x47c19f
xor ecx, ecx
mov si, word [ebp - 0x3e]
mov cl, dl
and esi, 0xffff
mov dword [ebp - 0x4c], ecx
add ecx, eax
mov eax, 1
mov dword [ebp - 0x8c], esi
shl eax, cl
dec eax
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x84], eax
and eax, ecx
mov cl, byte [ebp - 0x4c]
shr eax, cl
add eax, esi
mov esi, dword [ebp - 0x90]
lea eax, [esi + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x3e], cx
mov cl, byte [eax + 1]
mov byte [ebp - 0x61], cl
mov al, byte [eax]
mov byte [ebp - 0xc8], al
mov al, cl
and eax, 0xff
mov esi, eax
mov eax, dword [ebp - 0x4c]
add eax, esi
cmp ebx, eax
jae 0x47d2f6
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x7c]
dec esi
xor eax, eax
mov dword [ebp - 0x30], esi
mov esi, dword [ebp - 0x84]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
mov ecx, dword [ebp - 0x3c]
add ebx, 8
add ecx, eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x3c], ecx
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x3c]
and eax, esi
mov cl, byte [ebp - 0x4c]
shr eax, cl
mov ecx, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x90]
add eax, ecx
lea eax, [esi + eax*4]
mov cx, word [eax + 2]
mov word [ebp - 0x3e], cx
mov cl, byte [eax + 1]
mov byte [ebp - 0x61], cl
mov al, byte [eax]
mov byte [ebp - 0xc8], al
mov al, cl
and eax, 0xff
mov esi, eax
mov eax, dword [ebp - 0x4c]
add eax, esi
cmp eax, ebx
ja 0x47d27e
xor eax, eax
mov cl, byte [ebp - 0x4c]
mov al, dl
shr dword [ebp - 0x3c], cl
sub ebx, eax
mov eax, dword [ebp - 0x4c]
mov dword [edi + 0x1bc4], eax
mov dl, byte [ebp - 0x61]
jmp 0x47cefb
test dword [ebp - 0x3c], 0xe000
je 0x47c129
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_header_flags_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov dword [edi + 0x4c], 0x4c2040
mov dword [edi + 0x54], 9
mov dword [edi + 0x50], 0x4c1fc0
mov dword [edi + 0x58], 5
mov dword [edi], 0x13
cmp dword [ebp + 0xc], 6
jne 0x47c538
mov eax, dword [ebp - 0x3c]
sub ebx, 3
shr eax, 3
mov dword [ebp - 0x3c], eax
jmp 0x47c024
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
push eax
mov eax, dword [ebp - 0x7c]
push esi
push eax
mov ecx, dword [edi + 0x18]
push ecx
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x47c2a9
mov esi, dword [ebp - 0x3c]
mov cl, byte [ebp - 0x3c]
shr esi, 8
mov byte [ebp - 0x1c], cl
mov dword [ebp - 0x3c], esi
push ebx
mov al, byte [ebp - 0x3c]
push 2
mov byte [ebp - 0x1b], al
lea eax, [ebp - 0x1c]
push eax
xor ebx, ebx
mov ecx, dword [edi + 0x18]
push ecx
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
mov dword [ebp - 0x3c], 0
jmp 0x47c22a
test al, 0x40
je 0x47c74e
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], 0x4c1e73
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov dword [edi], 0x10
jmp 0x47c538
and ecx, 0xff
mov edx, ecx
mov dword [ebp - 0xc8], ecx
add edx, 2
mov dword [ebp - 0xd0], edx
cmp ebx, edx
jae 0x47d45a
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov ecx, dword [ebp - 0x30]
xor eax, eax
dec ecx
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x7c]
mov al, byte [ecx]
mov cl, bl
shl eax, cl
add edx, eax
mov eax, dword [ebp - 0x7c]
inc eax
add ebx, 8
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x7c], eax
cmp ebx, dword [ebp - 0xd0]
jb 0x47d423
mov cl, byte [ebp - 0xc8]
mov eax, dword [ebp - 0x38]
shr dword [ebp - 0x3c], cl
sub ebx, esi
test eax, eax
je 0x47d621
mov edx, dword [ebp - 0x38]
sub ebx, 2
mov ax, word [edi + edx*2 + 0x6e]
mov ecx, eax
mov eax, dword [ebp - 0x3c]
and eax, 3
and ecx, 0xffff
lea edx, [eax + 3]
mov eax, dword [ebp - 0x3c]
shr eax, 2
mov dword [ebp - 0x3c], eax
jmp 0x47ca85
push eax
push 0
push 0
push 0
call fcn.0047ae90
add esp, 0xc
mov dword [edi + 0x18], eax
lea eax, [ebp - 0x1c]
push 2
mov byte [ebp - 0x1c], 0x1f
push eax
mov byte [ebp - 0x1b], 0x8b
mov eax, dword [edi + 0x18]
xor ebx, ebx
push eax
call fcn.0047ae90
mov dword [edi], 1
mov dword [edi + 0x18], eax
mov dword [ebp - 0x3c], 0
add esp, 0x10
mov eax, dword [edi]
jmp 0x47bd63
and ecx, 0xff
mov dword [ebp - 0xc8], ecx
add ecx, 3
mov dword [ebp - 0xd0], ecx
cmp ebx, ecx
jae 0x47d52c
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x47c024
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x7c]
dec eax
mov cl, bl
mov dword [ebp - 0x30], eax
xor eax, eax
mov al, byte [edx]
add ebx, 8
shl eax, cl
mov ecx, dword [ebp - 0x3c]
inc edx
add ecx, eax
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x3c], ecx
cmp ebx, dword [ebp - 0xd0]
jb 0x47d4f8
mov eax, dword [ebp - 0x3c]
mov cl, byte [ebp - 0xc8]
shr eax, cl
mov ecx, ebx
mov edx, eax
sub ecx, esi
and edx, 7
shr eax, 3
add edx, 3
lea ebx, [ecx - 3]
xor ecx, ecx
mov dword [ebp - 0x3c], eax
jmp 0x47ca85
mov ecx, dword [ebp - 0x78]
push esi
sub ecx, eax
push eax
push ecx
mov ecx, dword [edi + 0x18]
push ecx
call fcn.00480670
add esp, 0x10
jmp 0x47cbd4
mov ecx, dword [ebp - 0x70]
xor ebx, ebx
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x3c], 0
jmp 0x47c8be
xor ebx, ebx
mov dword [ebp - 0x3c], 0
jmp 0x47c024
mov al, byte [ebp - 0x3c]
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x3c]
shr eax, 8
mov dword [ebp - 0x3c], eax
push eax
mov dl, byte [ebp - 0x3c]
lea eax, [ebp - 0x1c]
push 2
mov byte [ebp - 0x1b], dl
push eax
mov eax, dword [edi + 0x18]
push eax
call fcn.0047ae90
add esp, 0x10
mov dword [edi + 0x18], eax
jmp 0x47c145
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
cmp ecx, eax
jbe 0x47cd28
mov ecx, dword [ebp + 8]
sub ebx, 4
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
cmp dword [edi], 0x1d
je 0x47bdc2
cmp word [edi + 0x270], 0
jne 0x47d638
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_code____missing_end_of_block
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov ecx, dword [ebp - 0xa4]
mov dword [edi + 0x54], 9
mov dword [edi + 0x6c], ecx
mov dword [edi + 0x4c], ecx
push eax
push eax
mov eax, dword [ebp - 0xa8]
lea esi, [edi + 0x6c]
push eax
lea eax, [edi + 0x54]
push eax
push esi
mov ecx, dword [edi + 0x60]
lea eax, [edi + 0x70]
push ecx
push eax
push 1
call fcn.00480c40
add esp, 0x20
mov dword [ebp - 0x68], eax
test eax, eax
je 0x47d6bb
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_literal_lengths_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x78]
mov dword [eax + 0xc], edx
mov ecx, dword [ebp - 0x70]
mov dword [eax + 0x10], ecx
mov esi, dword [ebp - 0x7c]
mov dword [eax], esi
mov edx, dword [ebp - 0x30]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x3c]
mov dword [edi + 0x3c], ebx
mov dword [edi + 0x38], ecx
mov dword [ebp - 0x68], 2
jmp 0x47bcda
mov eax, dword [edi + 0x6c]
mov dword [edi + 0x58], 6
mov dword [edi + 0x50], eax
push edx
mov eax, dword [ebp - 0xa8]
push edx
push eax
lea eax, [edi + 0x58]
push eax
push esi
mov eax, dword [edi + 0x64]
push eax
mov eax, dword [edi + 0x60]
lea eax, [edi + eax*2 + 0x70]
push eax
push 2
call fcn.00480c40
add esp, 0x20
mov dword [ebp - 0x68], eax
test eax, eax
je 0x47c6a9
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [edi], 0x1d
mov eax, dword [edi]
jmp 0x47bd63