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

Disassembly:
sub esp, 0x48
mov dword [esp + 0x34], edx
mov dword [esp + 0xc], ecx
push ebx
push ebp
push esi
push edi
test ecx, ecx
je case.default.0x10242a50
mov edi, dword [ecx + 0x1c]
mov dword [esp + 0x30], edi
test edi, edi
je case.default.0x10242a50
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x28], eax
test eax, eax
je case.default.0x10242a50
mov ebx, dword [ecx]
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x102429f8
cmp dword [ecx + 4], ebx
jne case.default.0x10242a50
mov eax, dword [edi]
cmp eax, 0xb
jne 0x10242a17
mov dword [edi], 0xc
mov eax, dword [ecx + 0xc]
mov ebx, dword [ecx]
mov dword [esp + 0x28], eax
mov eax, 0xc
mov dword [esp + 0x18], ebx
mov edx, dword [ecx + 0x10]
mov ebp, dword [ecx + 4]
mov esi, dword [edi + 0x3c]
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0x20]
mov edx, dword [edi + 0x38]
mov dword [esp + 0x2c], ecx
xor ecx, ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x34], ecx
cmp eax, 0x1c
ja case.default.0x10242a50
mov ecx, eax
mov dword [esp + 0x48], 0x1f
jmp dword [eax*4 + 0x10243f08]
mov ecx, dword [edi + 8]
test ecx, ecx
jne 0x10242a69
mov dword [edi], 0xc
jmp 0x1024398f
cmp esi, 0x10
jae 0x10242a96
nop
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x10
jb 0x10242a70
mov ecx, dword [edi + 8]
test cl, 2
je 0x10242ade
cmp edx, 0x8b1f
jne 0x10242ade
push 0
xor edx, edx
xor ecx, ecx
call fcn.102406d0
push 2
lea edx, [esp + 0x2c]
mov dword [edi + 0x18], eax
mov ecx, eax
mov word [esp + 0x2c], 0x8b1f
call fcn.10240430
xor edx, edx
mov dword [edi + 0x18], eax
add esp, 8
mov dword [esp + 0x14], edx
xor esi, esi
mov dword [edi], 1
jmp 0x1024398f
mov eax, dword [edi + 0x20]
mov dword [edi + 0x10], 0
test eax, eax
je 0x10242af6
mov dword [eax + 0x30], 0xffffffff
mov ecx, dword [edi + 8]
test cl, 1
je 0x10242ba9
movzx ecx, dl
mov eax, edx
shr eax, 8
xor edx, edx
shl ecx, 8
add eax, ecx
div dword [esp + 0x48]
test edx, edx
mov edx, dword [esp + 0x14]
jne 0x10242ba9
mov eax, edx
and al, 0xf
cmp al, 8
je 0x10242b3c
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [edi], 0x1b
jmp 0x1024398f
shr edx, 4
sub esi, 4
mov ecx, edx
mov dword [esp + 0x14], edx
and ecx, 0xf
add ecx, 8
cmp ecx, dword [edi + 0x24]
jbe 0x10242b69
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_window_size
mov dword [edi], 0x1b
jmp 0x1024398f
mov eax, 1
xor edx, edx
shl eax, cl
xor ecx, ecx
push 0
mov dword [edi + 0x14], eax
call fcn.1023fee0
mov edx, dword [esp + 0x18]
add esp, 4
mov ecx, dword [esp + 0x1c]
shr edx, 8
not edx
mov dword [edi + 0x18], eax
and edx, 2
or edx, 9
mov dword [ecx + 0x30], eax
mov dword [edi], edx
xor edx, edx
mov dword [esp + 0x14], edx
xor esi, esi
jmp 0x1024398f
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [edi], 0x1b
jmp 0x1024398f
cmp esi, 0x10
jae 0x10242be7
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x10
jb 0x10242bc4
mov dword [edi + 0x10], edx
cmp dl, 8
jne 0x10242b26
test edx, 0xe000
je 0x10242c11
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.unknown_header_flags_set
mov dword [edi], 0x1b
jmp 0x1024398f
mov esi, dword [edi + 0x20]
mov ecx, edx
shr ecx, 8
mov eax, edx
test esi, esi
je 0x10242c29
mov eax, ecx
and eax, 1
mov dword [esi], eax
mov eax, dword [edi + 0x10]
test eax, 0x200
je 0x10242c4c
mov byte [esp + 0x24], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x25], cl
mov ecx, dword [edi + 0x18]
push 2
call fcn.10240430
add esp, 4
mov dword [edi + 0x18], eax
xor edx, edx
mov dword [edi], 2
mov dword [esp + 0x14], edx
xor esi, esi
jmp 0x10242c61
cmp esi, 0x20
jae 0x10242c84
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x20
jb 0x10242c61
mov eax, dword [edi + 0x20]
test eax, eax
je 0x10242c8e
mov dword [eax + 4], edx
test dword [edi + 0x10], 0x200
je 0x10242cc8
mov ecx, dword [edi + 0x18]
mov eax, edx
shr eax, 8
mov byte [esp + 0x25], al
mov eax, edx
mov byte [esp + 0x24], dl
shr edx, 0x18
shr eax, 0x10
mov byte [esp + 0x27], dl
lea edx, [esp + 0x24]
push 4
mov byte [esp + 0x2a], al
call fcn.10240430
add esp, 4
mov dword [edi + 0x18], eax
xor edx, edx
mov dword [edi], 3
mov dword [esp + 0x14], edx
xor esi, esi
jmp 0x10242ce0
cmp esi, 0x10
jae 0x10242d03
nop dword [eax]
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x10
jb 0x10242ce0
mov esi, dword [edi + 0x20]
mov ecx, edx
shr ecx, 8
test esi, esi
je 0x10242d1b
movzx eax, dl
mov dword [esi + 8], eax
mov eax, dword [edi + 0x20]
mov dword [eax + 0xc], ecx
test dword [edi + 0x10], 0x200
je 0x10242d40
mov byte [esp + 0x24], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x25], cl
mov ecx, dword [edi + 0x18]
push 2
call fcn.10240430
add esp, 4
mov dword [edi + 0x18], eax
xor edx, edx
mov dword [edi], 4
mov dword [esp + 0x14], edx
xor esi, esi
test dword [edi + 0x10], 0x400
je 0x10242dc4
cmp esi, 0x10
jae 0x10242d83
nop dword [eax]
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x10
jb 0x10242d60
mov eax, dword [edi + 0x20]
mov dword [edi + 0x40], edx
test eax, eax
je 0x10242d90
mov dword [eax + 0x14], edx
test dword [edi + 0x10], 0x200
je 0x10242db8
mov ecx, dword [edi + 0x18]
mov byte [esp + 0x24], dl
shr edx, 8
mov byte [esp + 0x25], dl
lea edx, [esp + 0x24]
push 2
call fcn.10240430
add esp, 4
mov dword [edi + 0x18], eax
mov dword [esp + 0x14], 0
xor esi, esi
jmp 0x10242dd2
mov eax, dword [edi + 0x20]
test eax, eax
je 0x10242dd2
mov dword [eax + 0x10], 0
mov dword [edi], 5
mov edx, dword [edi + 0x10]
test edx, 0x400
je 0x10242ea2
mov eax, dword [edi + 0x40]
mov ecx, ebp
cmp eax, ebp
cmovbe ecx, eax
mov dword [esp + 0x3c], ecx
test ecx, ecx
je 0x10242e9a
cmp dword [edi + 0x20], 0
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x38], eax
je 0x10242e64
mov edi, dword [edi + 0x20]
mov dword [esp + 0x38], eax
mov edi, dword [edi + 0x10]
test edi, edi
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x30]
je 0x10242e64
mov edx, dword [edi + 0x20]
mov edx, dword [edx + 0x14]
sub edx, eax
mov eax, dword [edi + 0x20]
mov dword [esp + 0x38], edx
mov edx, dword [eax + 0x18]
mov eax, dword [esp + 0x38]
add eax, ecx
cmp eax, edx
mov eax, dword [esp + 0x38]
jbe 0x10242e45
sub edx, eax
jmp 0x10242e47
mov edx, ecx
add eax, dword [esp + 0x40]
push edx
push ebx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [edi + 0x40]
add esp, 0xc
mov edx, dword [edi + 0x10]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x38], eax
test edx, 0x200
je 0x10242e85
test ebx, ebx
jne 0x10242e74
xor eax, eax
jmp 0x10242e82
push ecx
mov ecx, dword [edi + 0x18]
mov edx, ebx
call fcn.10240430
add esp, 4
mov dword [edi + 0x18], eax
mov ecx, dword [esp + 0x3c]
sub ebp, ecx
mov eax, dword [esp + 0x38]
add ebx, ecx
sub eax, ecx
mov dword [esp + 0x18], ebx
mov dword [edi + 0x40], eax
test eax, eax
jne 0x10243e12
mov dword [edi + 0x40], 0
mov dword [edi], 6
test dword [edi + 0x10], 0x800
je 0x10242f42
test ebp, ebp
je 0x10243e12
xor ecx, ecx
mov al, byte [ecx + ebx]
inc ecx
mov byte [esp + 0x13], al
mov eax, dword [edi + 0x20]
test eax, eax
je 0x10242ef4
cmp dword [eax + 0x1c], 0
je 0x10242ef4
mov edx, dword [edi + 0x40]
cmp edx, dword [eax + 0x20]
jae 0x10242ef4
mov eax, dword [eax + 0x1c]
mov bl, byte [esp + 0x13]
mov byte [edx + eax], bl
inc dword [edi + 0x40]
mov ebx, dword [esp + 0x18]
mov al, byte [esp + 0x13]
test al, al
je 0x10242f00
cmp ecx, ebp
jb 0x10242ec6
test dword [edi + 0x10], 0x200
mov dword [esp + 0x40], ecx
je 0x10242f30
test ebx, ebx
jne 0x10242f15
xor edx, edx
jmp 0x10242f2d
push ecx
mov ecx, dword [edi + 0x18]
mov edx, ebx
call fcn.10240430
mov ecx, dword [esp + 0x44]
mov edx, eax
mov al, byte [esp + 0x17]
add esp, 4
mov dword [edi + 0x18], edx
add ebx, ecx
sub ebp, ecx
mov dword [esp + 0x18], ebx
test al, al
jne 0x10243e12
jmp 0x10242f50
mov eax, dword [edi + 0x20]
test eax, eax
je 0x10242f50
mov dword [eax + 0x1c], 0
mov dword [edi + 0x40], 0
mov dword [edi], 7
test dword [edi + 0x10], 0x1000
je 0x10242ff0
test ebp, ebp
je 0x10243e12
xor ecx, ecx
mov al, byte [ecx + ebx]
inc ecx
mov byte [esp + 0x13], al
mov eax, dword [edi + 0x20]
test eax, eax
je 0x10242fa2
cmp dword [eax + 0x24], 0
je 0x10242fa2
mov edx, dword [edi + 0x40]
cmp edx, dword [eax + 0x28]
jae 0x10242fa2
mov eax, dword [eax + 0x24]
mov bl, byte [esp + 0x13]
mov byte [edx + eax], bl
inc dword [edi + 0x40]
mov ebx, dword [esp + 0x18]
mov al, byte [esp + 0x13]
test al, al
je 0x10242fae
cmp ecx, ebp
jb 0x10242f74
test dword [edi + 0x10], 0x200
mov dword [esp + 0x40], ecx
je 0x10242fde
test ebx, ebx
jne 0x10242fc3
xor edx, edx
jmp 0x10242fdb
push ecx
mov ecx, dword [edi + 0x18]
mov edx, ebx
call fcn.10240430
mov ecx, dword [esp + 0x44]
mov edx, eax
mov al, byte [esp + 0x17]
add esp, 4
mov dword [edi + 0x18], edx
add ebx, ecx
sub ebp, ecx
mov dword [esp + 0x18], ebx
test al, al
jne 0x10243e12
jmp 0x10242ffe
mov eax, dword [edi + 0x20]
test eax, eax
je 0x10242ffe
mov dword [eax + 0x24], 0
mov edx, dword [esp + 0x14]
mov dword [edi], 8
mov ecx, dword [edi + 0x10]
test ecx, 0x200
je 0x10243066
cmp esi, 0x10
jae 0x1024303e
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x10
jb 0x10243018
mov ecx, dword [edi + 0x10]
movzx eax, word [edi + 0x18]
cmp edx, eax
je 0x1024305c
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [edi], 0x1b
jmp 0x1024398f
mov dword [esp + 0x14], 0
xor esi, esi
mov eax, dword [edi + 0x20]
test eax, eax
je 0x10243080
sar ecx, 9
and ecx, 1
mov dword [eax + 0x2c], ecx
mov eax, dword [edi + 0x20]
mov dword [eax + 0x30], 1
push 0
xor edx, edx
xor ecx, ecx
call fcn.102406d0
mov ecx, dword [esp + 0x20]
add esp, 4
mov edx, dword [esp + 0x14]
mov dword [edi + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edi], 0xb
jmp 0x1024398f
cmp esi, 0x20
jae 0x102430d3
nop dword [eax]
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x20
jb 0x102430b0
mov ecx, edx
mov eax, edx
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, edx
shr eax, 8
shl ecx, 8
and eax, 0xff00
add eax, ecx
shr edx, 0x18
mov ecx, dword [esp + 0x1c]
add eax, edx
xor edx, edx
mov dword [edi + 0x18], eax
mov dword [esp + 0x14], edx
xor esi, esi
mov dword [ecx + 0x30], eax
mov dword [edi], 0xa
jmp 0x10243114
mov ecx, dword [esp + 0x1c]
cmp dword [edi + 0xc], 0
je 0x10243dc4
push 0
xor edx, edx
xor ecx, ecx
call fcn.1023fee0
mov ecx, dword [esp + 0x20]
add esp, 4
mov edx, dword [esp + 0x14]
mov dword [edi + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edi], 0xb
cmp dword [esp + 0x44], 5
je 0x10243e12
cmp dword [edi + 4], 0
je 0x10243169
mov ecx, esi
mov dword [edi], 0x18
and ecx, 7
shr edx, cl
sub esi, ecx
mov dword [esp + 0x14], edx
jmp 0x1024398f
cmp esi, 3
jae 0x10243193
nop
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 3
jb 0x10243170
mov eax, edx
shr edx, 1
and eax, 1
mov dword [edi + 4], eax
mov eax, edx
and eax, 3
jmp dword [eax*4 + 0x10243f7c]
shr edx, 2
sub esi, 3
mov dword [edi], 0xd
mov dword [esp + 0x14], edx
jmp 0x1024398f
shr edx, 2
sub esi, 3
mov dword [edi + 0x4c], 0x10263cb0
mov dword [edi + 0x54], 9
mov dword [edi + 0x50], 0x10263c30
mov dword [edi + 0x58], 5
mov dword [edi], 0x12
mov dword [esp + 0x14], edx
jmp 0x1024398f
shr edx, 2
sub esi, 3
mov dword [edi], 0xf
mov dword [esp + 0x14], edx
jmp 0x1024398f
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_block_type
mov dword [edi], 0x1b
shr edx, 2
sub esi, 3
mov dword [esp + 0x14], edx
jmp 0x1024398f
mov ecx, esi
and ecx, 7
shr edx, cl
sub esi, ecx
mov dword [esp + 0x14], edx
cmp esi, 0x20
jae 0x10243259
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x20
jb 0x10243236
mov eax, edx
movzx ecx, dx
not eax
shr eax, 0x10
cmp ecx, eax
je 0x1024327d
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov dword [edi], 0x1b
jmp 0x1024398f
xor edx, edx
mov dword [edi + 0x40], ecx
mov dword [esp + 0x14], edx
xor esi, esi
mov dword [edi], 0xe
mov ecx, dword [edi + 0x40]
test ecx, ecx
je 0x102432e0
cmp ecx, ebp
mov eax, ebp
cmovbe eax, ecx
mov ecx, dword [esp + 0x20]
cmp eax, ecx
cmovbe ecx, eax
mov dword [esp + 0x40], ecx
test ecx, ecx
je 0x10243e12
push ecx
mov ecx, dword [esp + 0x2c]
push ebx
push ecx
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0x4c]
add esp, 0xc
sub dword [esp + 0x20], eax
add ebx, eax
add dword [esp + 0x28], eax
sub ebp, eax
sub dword [edi + 0x40], eax
mov edx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
jmp 0x1024398f
mov dword [edi], 0xb
jmp 0x1024398f
cmp esi, 0xe
jae 0x10243313
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0xe
jb 0x102432f0
mov ecx, edx
sub esi, 0xe
shr edx, 5
and ecx, 0x1f
mov eax, edx
add ecx, 0x101
and eax, 0x1f
shr edx, 5
inc eax
mov dword [edi + 0x60], ecx
mov dword [esp + 0x40], eax
mov dword [edi + 0x64], eax
mov eax, edx
and eax, 0xf
shr edx, 4
add eax, 4
mov dword [esp + 0x14], edx
mov dword [edi + 0x5c], eax
cmp ecx, 0x11e
ja 0x10243441
cmp dword [esp + 0x40], 0x1e
ja 0x10243441
mov dword [edi + 0x68], 0
mov dword [edi], 0x10
mov eax, dword [edi + 0x68]
cmp eax, dword [edi + 0x5c]
jae 0x102433cd
cmp esi, 3
jae 0x102433a3
nop word [eax + eax]
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 3
jb 0x10243380
mov eax, dword [edi + 0x68]
mov ecx, edx
and ecx, 7
shr edx, 3
sub esi, 3
mov dword [esp + 0x14], edx
movzx eax, word [eax*2 + 0x102644b0]
mov word [edi + eax*2 + 0x70], cx
inc dword [edi + 0x68]
mov eax, dword [edi + 0x68]
cmp eax, dword [edi + 0x5c]
jb 0x10243375
cmp eax, 0x13
jae 0x102433ed
mov eax, dword [edi + 0x68]
xor ecx, ecx
movzx eax, word [eax*2 + 0x102644b0]
mov word [edi + eax*2 + 0x70], cx
inc dword [edi + 0x68]
cmp dword [edi + 0x68], 0x13
jb 0x102433d2
lea eax, [edi + 0x530]
mov dword [edi + 0x54], 7
lea edx, [edi + 0x6c]
mov dword [edi + 0x4c], eax
mov dword [edx], eax
lea ecx, [edi + 0x54]
lea eax, [edi + 0x2f0]
push eax
push ecx
push edx
push 0x13
lea edx, [edi + 0x70]
xor ecx, ecx
call fcn.10244020
mov edx, dword [esp + 0x24]
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x10243457
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov dword [edi], 0x1b
jmp 0x1024398f
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov dword [edi], 0x1b
jmp 0x1024398f
mov dword [edi + 0x68], 0
mov ecx, 0x11
mov dword [edi], 0x11
mov eax, dword [edi + 0x64]
add eax, dword [edi + 0x60]
cmp dword [edi + 0x68], eax
jae 0x102436ff
nop dword [eax + eax]
mov ecx, dword [edi + 0x54]
mov eax, 1
shl eax, cl
mov ecx, dword [edi + 0x4c]
dec eax
mov dword [esp + 0x4c], eax
and eax, edx
mov dword [esp + 0x50], ecx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
mov ebx, eax
shr ebx, 0x10
mov dword [esp + 0x38], ecx
movzx ecx, cl
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x40], eax
cmp ecx, esi
jbe 0x1024350c
nop dword [eax]
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [esp + 0x50]
add edx, eax
mov eax, dword [esp + 0x4c]
add esi, 8
and eax, edx
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
mov edi, eax
shr edi, 0x10
mov dword [esp + 0x38], ecx
movzx ecx, cl
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x40], eax
cmp ecx, esi
ja 0x102434c0
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
movzx edi, di
mov dword [esp + 0x4c], edi
movzx edi, di
mov dword [esp + 0x50], edi
cmp edi, 0x10
mov edi, dword [esp + 0x30]
mov dword [esp + 0x38], ecx
jae 0x10243589
movzx ecx, cl
mov dword [esp + 0x50], ecx
cmp esi, ecx
jae 0x10243566
nop word [eax + eax]
test ebp, ebp
je 0x10243e12
movzx edx, byte [ebx]
mov ecx, esi
shl edx, cl
inc ebx
add dword [esp + 0x14], edx
add esi, 8
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, dword [esp + 0x50]
jb 0x10243540
mov edx, dword [esp + 0x14]
movzx ecx, ah
mov ax, word [esp + 0x42]
sub esi, ecx
shr edx, cl
mov ecx, dword [edi + 0x68]
mov dword [esp + 0x14], edx
mov word [edi + ecx*2 + 0x70], ax
inc dword [edi + 0x68]
mov ecx, dword [edi + 0x68]
jmp 0x102436ef
cmp word [esp + 0x50], 0x10
mov ecx, dword [esp + 0x38]
movzx ecx, cl
mov dword [esp + 0x38], ecx
jne 0x10243604
add ecx, 2
cmp esi, ecx
jae 0x102435ce
test ebp, ebp
je 0x10243e12
movzx edx, byte [ebx]
mov ecx, esi
shl edx, cl
inc ebx
mov ecx, dword [esp + 0x38]
add esi, 8
add dword [esp + 0x14], edx
add ecx, 2
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, ecx
jb 0x102435a3
mov edx, dword [esp + 0x14]
movzx ecx, ah
mov eax, dword [edi + 0x68]
sub esi, ecx
shr edx, cl
mov dword [esp + 0x14], edx
test eax, eax
je 0x10243760
movzx eax, word [edi + eax*2 + 0x6e]
mov ecx, edx
and ecx, 3
shr edx, 2
add ecx, 3
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], ecx
sub esi, 2
jmp 0x102436b0
cmp word [esp + 0x4c], 0x11
jne 0x10243659
add ecx, 3
cmp esi, ecx
jae 0x1024363e
test ebp, ebp
je 0x10243e12
movzx edx, byte [ebx]
mov ecx, esi
shl edx, cl
inc ebx
mov ecx, dword [esp + 0x38]
add esi, 8
add dword [esp + 0x14], edx
add ecx, 3
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, ecx
jb 0x10243613
mov edx, dword [esp + 0x14]
movzx ecx, ah
shr edx, cl
mov eax, edx
and eax, 7
add eax, 3
shr edx, 3
mov dword [esp + 0x38], eax
mov eax, 0xfffffffd
jmp 0x102436a4
add ecx, 7
cmp esi, ecx
jae 0x1024368b
test ebp, ebp
je 0x10243e12
movzx edx, byte [ebx]
mov ecx, esi
shl edx, cl
inc ebx
mov ecx, dword [esp + 0x38]
add esi, 8
add dword [esp + 0x14], edx
add ecx, 7
dec ebp
mov dword [esp + 0x18], ebx
cmp esi, ecx
jb 0x10243660
mov edx, dword [esp + 0x14]
movzx ecx, ah
shr edx, cl
mov eax, edx
and eax, 0x7f
add eax, 0xb
shr edx, 7
mov dword [esp + 0x38], eax
mov eax, 0xfffffff9
sub eax, ecx
mov dword [esp + 0x3c], 0
add esi, eax
mov ecx, dword [edi + 0x68]
mov eax, dword [edi + 0x64]
add ecx, dword [esp + 0x38]
add eax, dword [edi + 0x60]
mov dword [esp + 0x14], edx
cmp ecx, eax
ja 0x10243760
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov eax, dword [edi + 0x68]
mov word [edi + eax*2 + 0x70], dx
mov ecx, dword [edi + 0x68]
lea ecx, [ecx + 1]
mov dword [edi + 0x68], ecx
sub ebx, 1
jne 0x102436d1
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, dword [edi + 0x64]
add eax, dword [edi + 0x60]
cmp ecx, eax
jb 0x10243480
mov ecx, dword [edi]
cmp ecx, 0x1b
je 0x1024398f
lea eax, [edi + 0x530]
mov dword [edi + 0x54], 9
lea ecx, [edi + 0x6c]
mov dword [edi + 0x4c], eax
mov dword [ecx], eax
lea edx, [edi + 0x2f0]
push edx
lea eax, [edi + 0x54]
push eax
push ecx
push dword [edi + 0x60]
lea edx, [edi + 0x70]
mov ecx, 1
call fcn.10244020
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x10243776
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov dword [eax + 0x18], str.invalid_literal_lengths_set
mov dword [edi], 0x1b
jmp 0x1024398f
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edi], 0x1b
jmp 0x1024398f
mov eax, dword [edi + 0x6c]
lea ecx, [edi + 0x6c]
mov dword [edi + 0x50], eax
lea edx, [edi + 0x2f0]
push edx
lea eax, [edi + 0x58]
mov dword [eax], 6
push eax
mov eax, dword [edi + 0x60]
add eax, 0x38
push ecx
push dword [edi + 0x64]
mov ecx, 2
lea edx, [edi + eax*2]
call fcn.10244020
mov edx, dword [esp + 0x24]
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x102437ce
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [edi], 0x1b
jmp 0x1024398f
mov dword [edi], 0x12
cmp ebp, 6
jb 0x10243835
cmp dword [esp + 0x20], 0x102
jb 0x10243835
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 0x10], ecx
mov ecx, eax
mov dword [eax], ebx
mov dword [eax + 4], ebp
mov dword [edi + 0x38], edx
mov edx, dword [esp + 0x2c]
mov dword [edi + 0x3c], esi
call fcn.10242340
mov eax, dword [esp + 0x1c]
mov edx, dword [edi + 0x38]
mov esi, dword [edi + 0x3c]
mov dword [esp + 0x14], edx
mov ecx, dword [eax + 0xc]
mov ebx, dword [eax]
mov ebp, dword [eax + 4]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], ebx
jmp 0x1024398f
mov ecx, dword [edi + 0x54]
mov eax, 1
shl eax, cl
mov ecx, dword [edi + 0x4c]
dec eax
mov dword [esp + 0x50], eax
and eax, edx
mov dword [esp + 0x40], ecx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x10243896
nop dword [eax]
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
mov ecx, dword [edi + 0x4c]
add edx, eax
mov eax, dword [esp + 0x50]
add esi, 8
and eax, edx
mov dword [esp + 0x14], edx
dec ebp
mov dword [esp + 0x18], ebx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x10243860
test al, al
je 0x10243946
test al, 0xf0
jne 0x10243946
mov ecx, eax
mov edi, 1
shr ecx, 8
mov edx, eax
movzx ebx, cl
movzx ecx, al
add ecx, ebx
shr eax, 0x10
shl edi, cl
mov ecx, ebx
dec edi
mov dword [esp + 0x3c], edx
and edi, dword [esp + 0x14]
shr edi, cl
mov ecx, dword [esp + 0x40]
add edi, eax
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
jbe 0x10243937
test ebp, ebp
je 0x10243e0e
mov ebx, dword [esp + 0x18]
mov ecx, esi
mov edi, 1
add esi, 8
dec ebp
movzx eax, byte [ebx]
inc ebx
shl eax, cl
add dword [esp + 0x14], eax
movzx eax, word [esp + 0x3e]
mov dword [esp + 0x18], ebx
movzx ebx, dh
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [esp + 0x14]
shr edi, cl
add edi, eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
ja 0x102438e3
mov edi, dword [esp + 0x30]
movzx ecx, dh
mov edx, dword [esp + 0x14]
shr edx, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr edx, cl
sub esi, ecx
mov ecx, eax
mov dword [esp + 0x14], edx
shr ecx, 0x10
mov dword [edi + 0x40], ecx
test al, al
jne 0x1024396a
mov dword [edi], 0x17
jmp 0x1024398b
test al, 0x20
je 0x10243976
mov dword [edi], 0xb
jmp 0x1024398b
test al, 0x40
je 0x102439a9
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_literal_length_code
mov dword [edi], 0x1b
mov ebx, dword [esp + 0x18]
mov ecx, dword [edi]
mov eax, ecx
cmp eax, 0x1c
jbe switch.0x10242a50
pop edi
pop esi
pop ebp
mov eax, 0xfffffffe
pop ebx
add esp, 0x48
ret
movzx eax, al
and eax, 0xf
mov dword [edi], 0x13
mov dword [edi + 0x48], eax
mov ebx, dword [edi + 0x48]
test ebx, ebx
je 0x10243a02
cmp esi, ebx
jae 0x102439eb
mov edx, dword [esp + 0x18]
test ebp, ebp
je 0x10243e12
movzx eax, byte [edx]
mov ecx, esi
shl eax, cl
inc edx
add dword [esp + 0x14], eax
add esi, 8
dec ebp
mov dword [esp + 0x18], edx
cmp esi, ebx
jb 0x102439c7
mov edx, dword [esp + 0x14]
mov ecx, ebx
mov eax, 1
shl eax, cl
dec eax
and eax, edx
shr edx, cl
add dword [edi + 0x40], eax
sub esi, ebx
mov dword [esp + 0x14], edx
mov dword [edi], 0x14
mov ecx, dword [edi + 0x58]
mov eax, 1
mov ebx, dword [edi + 0x50]
shl eax, cl
dec eax
mov dword [esp + 0x40], ebx
mov dword [esp + 0x50], eax
and eax, edx
mov eax, dword [ebx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x10243a6e
mov edx, dword [esp + 0x18]
test ebp, ebp
je 0x10243e12
movzx eax, byte [edx]
mov ecx, esi
shl eax, cl
inc edx
mov ecx, dword [esp + 0x14]
add esi, 8
add ecx, eax
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x50]
dec ebp
and eax, ecx
mov dword [esp + 0x14], ecx
mov eax, dword [ebx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x10243a33
mov edx, dword [esp + 0x14]
test al, 0xf0
jne 0x10243b16
mov ecx, eax
mov edi, 1
shr ecx, 8
mov edx, eax
movzx ebx, cl
movzx ecx, al
add ecx, ebx
shr eax, 0x10
shl edi, cl
mov ecx, ebx
dec edi
mov dword [esp + 0x3c], edx
and edi, dword [esp + 0x14]
shr edi, cl
mov ecx, dword [esp + 0x40]
add edi, eax
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
jbe 0x10243b07
test ebp, ebp
je 0x10243e0e
mov ebx, dword [esp + 0x18]
mov ecx, esi
mov edi, 1
add esi, 8
dec ebp
movzx eax, byte [ebx]
inc ebx
shl eax, cl
add dword [esp + 0x14], eax
movzx eax, word [esp + 0x3e]
mov dword [esp + 0x18], ebx
movzx ebx, dh
movzx ecx, dl
add ecx, ebx
shl edi, cl
mov ecx, ebx
dec edi
and edi, dword [esp + 0x14]
shr edi, cl
add edi, eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax + edi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, ebx
cmp ecx, esi
ja 0x10243ab3
mov edi, dword [esp + 0x30]
movzx ecx, dh
mov edx, dword [esp + 0x14]
shr edx, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr edx, cl
sub esi, ecx
mov dword [esp + 0x14], edx
test al, 0x40
je 0x10243b3a
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_distance_code
jmp 0x10243985
mov ecx, eax
mov dword [edi], 0x15
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [edi + 0x44], ecx
mov dword [edi + 0x48], eax
mov ebx, dword [edi + 0x48]
test ebx, ebx
je 0x10243b9b
cmp esi, ebx
jae 0x10243b84
mov edx, dword [esp + 0x18]
test ebp, ebp
je 0x10243e12
movzx eax, byte [edx]
mov ecx, esi
shl eax, cl
inc edx
add dword [esp + 0x14], eax
add esi, 8
dec ebp
mov dword [esp + 0x18], edx
cmp esi, ebx
jb 0x10243b60
mov edx, dword [esp + 0x14]
mov ecx, ebx
mov eax, 1
shl eax, cl
dec eax
and eax, edx
shr edx, cl
add dword [edi + 0x44], eax
sub esi, ebx
mov dword [esp + 0x14], edx
mov eax, dword [edi + 0x2c]
sub eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
add eax, ecx
cmp dword [edi + 0x44], eax
jbe 0x10243bbd
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_distance_too_far_back
jmp 0x10243985
mov dword [edi], 0x16
jmp 0x10243bc9
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10243e12
sub ecx, eax
mov eax, dword [edi + 0x44]
cmp eax, ecx
jbe 0x10243c14
sub eax, ecx
mov ecx, dword [edi + 0x30]
cmp eax, ecx
jbe 0x10243bf3
mov ebx, dword [edi + 0x28]
sub eax, ecx
sub ebx, eax
add ebx, dword [edi + 0x34]
jmp 0x10243bfa
mov ebx, dword [edi + 0x34]
sub ebx, eax
add ebx, ecx
mov ecx, dword [edi + 0x40]
cmp eax, ecx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x38], ecx
cmovbe ecx, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x38], ecx
jmp 0x10243c21
mov ebx, dword [esp + 0x28]
sub ebx, eax
mov eax, dword [edi + 0x40]
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x20]
mov edx, ecx
cmp dword [esp + 0x38], edx
cmovbe ecx, dword [esp + 0x38]
sub edx, ecx
sub eax, ecx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x28]
sub ebx, edx
mov dword [edi + 0x40], eax
mov al, byte [ebx + edx]
mov byte [edx], al
inc edx
sub ecx, 1
jne 0x10243c41
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x14]
cmp dword [edi + 0x40], ecx
jne 0x1024398b
mov dword [edi], 0x12
jmp 0x1024398b
cmp dword [esp + 0x20], 0
je 0x10243e12
mov ecx, dword [esp + 0x28]
mov al, byte [edi + 0x40]
mov byte [ecx], al
inc ecx
dec dword [esp + 0x20]
mov dword [esp + 0x28], ecx
mov dword [edi], 0x12
jmp 0x1024398f
cmp dword [edi + 8], 0
je 0x10243d6f
cmp esi, 0x20
jae 0x10243cc3
nop
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x20
jb 0x10243ca0
mov ecx, dword [esp + 0x2c]
sub ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], ecx
add dword [eax + 0x14], ecx
add dword [edi + 0x1c], ecx
test ecx, ecx
je 0x10243d19
mov eax, dword [esp + 0x28]
sub eax, ecx
cmp dword [edi + 0x10], 0
mov ecx, dword [edi + 0x18]
je 0x10243cfd
test eax, eax
je 0x10243d0f
push dword [esp + 0x2c]
mov edx, eax
call fcn.10240430
jmp 0x10243d08
push dword [esp + 0x2c]
mov edx, eax
call fcn.1023fee0
mov edx, dword [esp + 0x18]
add esp, 4
mov ecx, dword [esp + 0x1c]
mov dword [edi + 0x18], eax
mov dword [ecx + 0x30], eax
cmp dword [edi + 0x10], 0
mov ecx, edx
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
jne 0x10243d4c
and ecx, 0xff00
mov eax, edx
shl eax, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
mov eax, edx
shr eax, 0x18
add ecx, eax
cmp ecx, dword [edi + 0x18]
je 0x10243d67
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.incorrect_data_check
mov dword [edi], 0x1b
jmp 0x1024398f
xor edx, edx
xor esi, esi
mov dword [esp + 0x14], edx
mov dword [edi], 0x19
cmp dword [edi + 8], 0
je 0x10243df4
cmp dword [edi + 0x10], 0
je 0x10243df4
cmp esi, 0x20
jae 0x10243da9
test ebp, ebp
je 0x10243e12
movzx eax, byte [ebx]
mov ecx, esi
shl eax, cl
inc ebx
add edx, eax
mov dword [esp + 0x18], ebx
add esi, 8
mov dword [esp + 0x14], edx
dec ebp
cmp esi, 0x20
jb 0x10243d86
cmp edx, dword [edi + 0x1c]
je 0x10243dea
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.incorrect_length_check
mov dword [edi], 0x1b
jmp 0x1024398f
mov eax, dword [esp + 0x28]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 0x10], eax
mov eax, 2
mov dword [ecx], ebx
mov dword [ecx + 4], ebp
mov dword [edi + 0x3c], esi
mov dword [edi + 0x38], edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret
mov dword [esp + 0x14], 0
xor esi, esi
mov dword [edi], 0x1a
mov dword [esp + 0x34], 1
jmp 0x10243e12
mov dword [esp + 0x34], 0xfffffffd
jmp 0x10243e12
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x20]
mov dword [ebx + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [ebx], eax
mov eax, dword [esp + 0x14]
mov dword [ebx + 4], ebp
cmp dword [edi + 0x28], 0
mov ebp, dword [esp + 0x2c]
mov dword [edi + 0x38], eax
mov dword [edi + 0x3c], esi
jne 0x10243e4b
cmp dword [edi], 0x18
jge 0x10243e6b
cmp ebp, dword [ebx + 0x10]
je 0x10243e6b
mov edx, ebp
mov ecx, ebx
call fcn.102427a0
test eax, eax
je 0x10243e6b
mov dword [edi], 0x1c
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x48
ret
mov esi, dword [esp + 0x54]
sub esi, dword [ebx + 4]
sub ebp, dword [ebx + 0x10]
add dword [ebx + 8], esi
add dword [ebx + 0x14], ebp
add dword [edi + 0x1c], ebp
cmp dword [edi + 8], 0
je 0x10243eb5
test ebp, ebp
je 0x10243eb5
mov edx, dword [ebx + 0xc]
mov ecx, dword [edi + 0x18]
sub edx, ebp
cmp dword [edi + 0x10], 0
je 0x10243ea6
test edx, edx
jne 0x10243e9e
xor eax, eax
jmp 0x10243eaf
push ebp
call fcn.10240430
jmp 0x10243eac
push ebp
call fcn.1023fee0
add esp, 4
mov dword [edi + 0x18], eax
mov dword [ebx + 0x30], eax
mov ecx, dword [edi + 4]
mov edx, 0x80
neg ecx
sbb ecx, ecx
xor eax, eax
and ecx, 0x40
cmp dword [edi], 0xb
cmove eax, edx
add ecx, eax
add ecx, dword [edi + 0x3c]
mov dword [ebx + 0x2c], ecx
test esi, esi
jne 0x10243edc
test ebp, ebp
je 0x10243ee3
cmp dword [esp + 0x44], 4
jne 0x10243ef9
mov eax, dword [esp + 0x34]
mov ecx, 0xfffffffb
pop edi
pop esi
test eax, eax
pop ebp
cmove eax, ecx
pop ebx
add esp, 0x48
ret
mov eax, dword [esp + 0x34]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret