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

Disassembly:
sub esp, 0x3c
test ecx, ecx
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x44], edx
mov dword [esp + 0x14], ecx
je case.default.0x4247d4
mov esi, dword [ecx + 0x1c]
test esi, esi
mov dword [esp + 0x3c], esi
je case.default.0x4247d4
mov eax, dword [ecx + 0xc]
test eax, eax
je case.default.0x4247d4
cmp dword [ecx], 0
jne 0x424781
mov eax, dword [ecx + 4]
test eax, eax
jne case.default.0x4247d4
cmp dword [esi], 0xb
jne 0x424790
mov dword [esi], 0xc
lea esp, [esp]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
mov edi, dword [eax]
mov ebx, dword [esi + 0x30]
mov ebp, dword [esi + 0x34]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x30], ecx
mov ecx, dword [esi]
cmp ecx, 0x1c
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x38], 0
ja case.default.0x4247d4
jmp dword [ecx*4 + 0x425b28]
mov ecx, dword [esi + 8]
test ecx, ecx
jne 0x4247f0
mov dword [esi], 0xc
jmp 0x4259bd
cmp ebp, 0x10
jae 0x42481c
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x10
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
jb 0x4247f5
mov eax, dword [esi + 8]
test al, 2
je 0x42486b
cmp ebx, 0x8b1f
jne 0x42486b
push 0
xor edx, edx
xor ecx, ecx
call fcn.0041b140
mov dword [esi + 0x14], eax
mov byte [esp + 0x28], 0x1f
mov byte [esp + 0x29], 0x8b
mov ecx, dword [esi + 0x14]
push 2
lea edx, [esp + 0x2c]
call fcn.0041b140
xor ebx, ebx
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
xor ebp, ebp
mov dword [esi], 1
jmp 0x4259bd
test al, 1
mov dword [esi + 0x10], 0
je 0x424926
mov eax, ebx
and eax, 0xff
shl eax, 8
mov ecx, ebx
shr ecx, 8
add eax, ecx
xor edx, edx
mov ecx, 0x1f
div ecx
test edx, edx
jne 0x424926
mov edx, ebx
and edx, 0xf
cmp dl, 8
je 0x4248c0
mov eax, dword [esp + 0x14]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, dword [esp + 0x10]
jmp 0x4259b7
mov eax, dword [esi + 0x1c]
shr ebx, 4
mov ecx, ebx
and ecx, 0xf
add ecx, 8
sub ebp, 4
cmp ecx, eax
mov dword [esp + 0x18], ebx
jbe 0x4248ed
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov dword [edx + 0x18], str.invalid_window_size
jmp 0x4259b7
push 0
xor edx, edx
xor ecx, ecx
call fcn.0042a820
mov ecx, dword [esp + 0x14]
not ebx
and ebx, 0x200
or ebx, 0x900
shr ebx, 8
mov dword [esi + 0x14], eax
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0x10]
mov dword [esi], ebx
xor ebx, ebx
mov dword [esp + 0x18], ebx
xor ebp, ebp
jmp 0x4259bd
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov dword [edx + 0x18], str.incorrect_header_check
jmp 0x4259b7
cmp ebp, 0x10
jae 0x42496c
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x10
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
jb 0x424945
cmp bl, 8
mov dword [esi + 0x10], ebx
je 0x424984
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.unknown_compression_method
jmp 0x4259b7
test bh, 0xe0
je 0x424999
mov edx, dword [esp + 0x14]
mov dword [edx + 0x18], str.unknown_header_flags_set
jmp 0x4259b7
test bh, 2
je 0x4249be
mov byte [esp + 0x28], bl
shr ebx, 8
mov byte [esp + 0x29], bl
mov ecx, dword [esi + 0x14]
push 2
lea edx, [esp + 0x2c]
call fcn.0041b140
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x10]
xor ebx, ebx
xor ebp, ebp
mov dword [esi], 2
jmp 0x4249d5
cmp ebp, 0x20
jae 0x4249f4
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x20
jb 0x4249d5
mov ecx, dword [esi + 0x10]
test ch, 2
je 0x424a2e
mov byte [esp + 0x28], bl
mov eax, ebx
mov ecx, ebx
shr ecx, 0x10
shr eax, 8
shr ebx, 0x18
mov byte [esp + 0x29], al
mov byte [esp + 0x2a], cl
mov byte [esp + 0x2b], bl
mov ecx, dword [esi + 0x14]
push 4
lea edx, [esp + 0x2c]
call fcn.0041b140
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x10]
xor ebx, ebx
xor ebp, ebp
mov dword [esi], 3
jmp 0x424a45
cmp ebp, 0x10
jae 0x424a68
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x10
mov dword [esp + 0x1c], edi
jb 0x424a45
mov ecx, dword [esi + 0x10]
test ch, 2
je 0x424a90
mov byte [esp + 0x28], bl
shr ebx, 8
mov byte [esp + 0x29], bl
mov ecx, dword [esi + 0x14]
push 2
lea edx, [esp + 0x2c]
call fcn.0041b140
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x10]
xor ebx, ebx
mov dword [esp + 0x18], ebx
xor ebp, ebp
mov dword [esi], 4
mov ecx, dword [esi + 0x10]
test ch, 4
je 0x424b06
cmp ebp, 0x10
jae 0x424ad3
nop
lea esp, [esp]
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x10
mov dword [esp + 0x1c], edi
jb 0x424ab0
mov ecx, dword [esi + 0x10]
test ch, 2
mov dword [esi + 0x38], ebx
je 0x424afe
mov byte [esp + 0x28], bl
shr ebx, 8
mov byte [esp + 0x29], bl
mov ecx, dword [esi + 0x14]
push 2
lea edx, [esp + 0x2c]
call fcn.0041b140
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x10]
xor ebx, ebx
mov dword [esp + 0x18], ebx
xor ebp, ebp
mov dword [esi], 5
mov edx, dword [esi + 0x10]
test dh, 4
je 0x424b67
mov ecx, dword [esi + 0x38]
cmp ecx, eax
mov dword [esp + 0x20], ecx
jbe 0x424b25
mov ecx, eax
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x424b5c
test dh, 2
je 0x424b48
mov eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x14]
push eax
mov edx, edi
call fcn.0041b140
mov ecx, dword [esp + 0x20]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esi + 0x38]
sub eax, ecx
add edi, ecx
sub edx, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
mov dword [esi + 0x38], edx
mov ecx, dword [esi + 0x38]
test ecx, ecx
jne 0x425a1f
mov dword [esi], 6
mov ecx, dword [esi + 0x10]
test ch, 8
je 0x424bcb
test eax, eax
je 0x425a1f
xor ecx, ecx
nop
movzx edx, byte [ecx + edi]
inc ecx
test edx, edx
mov dword [esp + 0x34], edx
je 0x424b91
cmp ecx, eax
jb 0x424b80
mov edx, dword [esi + 0x10]
test dh, 0x20
mov dword [esp + 0x20], ecx
je 0x424bb3
push ecx
mov ecx, dword [esi + 0x14]
mov edx, edi
call fcn.0041b140
mov ecx, dword [esp + 0x20]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x10]
sub eax, ecx
add edi, ecx
mov ecx, dword [esp + 0x34]
test ecx, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
jne 0x425a1f
mov dword [esi], 7
mov ecx, dword [esi + 0x10]
test ch, 0x10
je 0x424c30
test eax, eax
je 0x425a1f
xor ecx, ecx
movzx edx, byte [ecx + edi]
inc ecx
test edx, edx
mov dword [esp + 0x34], edx
je 0x424bf4
cmp ecx, eax
jb 0x424be3
mov edx, dword [esi + 0x10]
test dh, 0x20
mov dword [esp + 0x20], ecx
je 0x424c18
mov edx, ecx
mov ecx, dword [esi + 0x14]
push edx
mov edx, edi
call fcn.0041b140
mov ecx, dword [esp + 0x20]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x10]
sub eax, ecx
add edi, ecx
mov ecx, dword [esp + 0x34]
test ecx, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
jne 0x425a1f
mov dword [esi], 8
mov ecx, dword [esi + 0x10]
test ch, 2
je 0x424c8f
cmp ebp, 0x10
jae 0x424c6a
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x10
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
jb 0x424c43
mov ecx, dword [esi + 0x14]
and ecx, 0xffff
cmp ebx, ecx
je 0x424c87
mov edx, dword [esp + 0x14]
mov dword [edx + 0x18], str.header_crc_mismatch
jmp 0x4259b7
xor ebx, ebx
mov dword [esp + 0x18], ebx
xor ebp, ebp
push 0
xor edx, edx
xor ecx, ecx
call fcn.0041b140
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x14], eax
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0x10]
mov dword [esi], 0xb
jmp 0x4259bd
cmp ebp, 0x20
jae 0x424cdf
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x20
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
jb 0x424cb8
xor edx, edx
mov dh, byte [esp + 0x1a]
mov eax, ebx
and eax, 0xff00
mov ecx, ebx
shl ecx, 0x10
add eax, ecx
mov ecx, dword [esp + 0x14]
shl eax, 8
shr ebx, 0x18
add eax, edx
add eax, ebx
mov dword [esi + 0x14], eax
mov dword [ecx + 0x30], eax
xor ebx, ebx
xor ebp, ebp
mov dword [esi], 0xa
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4259d5
push 0
xor edx, edx
xor ecx, ecx
call fcn.0042a820
mov edx, dword [esp + 0x14]
mov dword [esi + 0x14], eax
mov dword [edx + 0x30], eax
mov eax, dword [esp + 0x10]
mov dword [esi], 0xb
cmp dword [esp + 0x44], 5
je 0x425a1f
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x424d65
mov ecx, ebp
and ecx, 7
shr ebx, cl
sub ebp, ecx
mov dword [esi], 0x18
mov dword [esp + 0x18], ebx
jmp 0x4259bd
cmp ebp, 3
jae 0x424d93
lea ebx, [ebx]
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 3
mov dword [esp + 0x1c], edi
jb 0x424d70
mov ecx, ebx
and ecx, 1
shr ebx, 1
mov dword [esi + 4], ecx
mov ecx, ebx
and ecx, 3
dec ebp
cmp ecx, 3
ja case.default.0x424da8
jmp dword [ecx*4 + 0x425b9c]
shr ebx, 2
mov dword [esi], 0xd
mov dword [esp + 0x18], ebx
sub ebp, 2
jmp 0x4259bd
shr ebx, 2
mov dword [esi + 0x44], 0x43cca0
mov dword [esi + 0x4c], 9
mov dword [esi + 0x48], 0x43d4a0
mov dword [esi + 0x50], 5
mov dword [esi], 0x12
mov dword [esp + 0x18], ebx
sub ebp, 2
jmp 0x4259bd
shr ebx, 2
mov dword [esi], 0xf
mov dword [esp + 0x18], ebx
sub ebp, 2
jmp 0x4259bd
mov edx, dword [esp + 0x14]
mov dword [edx + 0x18], str.invalid_block_type
mov dword [esi], 0x1b
nop
lea esp, [esp]
shr ebx, 2
mov dword [esp + 0x18], ebx
sub ebp, 2
jmp 0x4259bd
mov ecx, ebp
and ecx, 7
shr ebx, cl
sub ebp, ecx
cmp ebp, 0x20
mov dword [esp + 0x18], ebx
jae 0x424e69
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x20
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
jb 0x424e42
mov edx, ebx
mov ecx, ebx
not edx
and ecx, 0xffff
shr edx, 0x10
cmp ecx, edx
je 0x424e8c
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_stored_block_lengths
jmp 0x4259b7
xor ebx, ebx
mov dword [esi + 0x38], ecx
mov dword [esp + 0x18], ebx
xor ebp, ebp
mov dword [esi], 0xe
mov ecx, dword [esi + 0x38]
test ecx, ecx
mov dword [esp + 0x20], ecx
je 0x425554
cmp ecx, eax
jbe 0x424eb6
mov ecx, eax
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 0x24]
cmp ecx, edx
jbe 0x424ec4
mov ecx, edx
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x425a1f
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x2c]
mov edx, ecx
shr ecx, 2
mov esi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x24]
sub esi, ecx
add eax, ecx
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x38]
sub edi, ecx
add esi, ecx
sub edx, ecx
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x3c]
mov dword [eax + 0x38], edx
mov eax, dword [esp + 0x10]
jmp 0x4259bd
cmp ebp, 0xe
jae 0x424f58
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0xe
mov dword [esp + 0x1c], edi
jb 0x424f35
mov ecx, ebx
and ecx, 0x1f
add ecx, 0x101
shr ebx, 5
mov edx, ebx
mov dword [esi + 0x58], ecx
shr ebx, 5
mov ecx, ebx
and ecx, 0xf
add ecx, 4
and edx, 0x1f
mov dword [esi + 0x54], ecx
mov ecx, dword [esi + 0x58]
inc edx
shr ebx, 4
sub ebp, 0xe
cmp ecx, 0x11e
mov dword [esi + 0x5c], edx
mov dword [esp + 0x18], ebx
ja 0x425088
mov ecx, edx
cmp ecx, 0x1e
ja 0x425088
mov dword [esi + 0x60], 0
mov dword [esi], 0x10
mov ecx, dword [esi + 0x60]
cmp ecx, dword [esi + 0x54]
jae 0x425017
lea esp, [esp]
cmp ebp, 3
jae 0x424fe8
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 3
mov dword [esp + 0x1c], edi
jb 0x424fc5
mov edx, dword [esi + 0x60]
movzx edx, word [edx*2 + 0x43d520]
xor ecx, ecx
mov cl, bl
shr ebx, 3
sub ebp, 3
mov dword [esp + 0x18], ebx
and ecx, 7
mov word [esi + edx*2 + 0x68], cx
mov ecx, dword [esi + 0x60]
mov edx, dword [esi + 0x54]
inc ecx
cmp ecx, edx
mov dword [esi + 0x60], ecx
jb 0x424fc0
mov ecx, dword [esi + 0x60]
mov eax, 0x13
cmp ecx, eax
jae 0x425040
xor ecx, ecx
mov edx, dword [esi + 0x60]
movzx edx, word [edx*2 + 0x43d520]
mov word [esi + edx*2 + 0x68], cx
mov edx, dword [esi + 0x60]
inc edx
cmp edx, eax
mov dword [esi + 0x60], edx
jb 0x425025
lea eax, [esi + 0x528]
lea ecx, [esi + 0x64]
mov dword [ecx], eax
lea edx, [esi + 0x2e8]
push edx
mov dword [esi + 0x44], eax
lea eax, [esi + 0x4c]
push eax
push ecx
push 0x13
lea edx, [esi + 0x68]
xor ecx, ecx
mov dword [eax], 7
call fcn.0042c7b0
test eax, eax
mov dword [esp + 0x38], eax
je 0x425098
mov eax, dword [esp + 0x14]
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov eax, dword [esp + 0x10]
jmp 0x4259b7
mov edx, dword [esp + 0x14]
mov dword [edx + 0x18], str.too_many_length_or_distance_symbols
jmp 0x4259b7
mov eax, dword [esp + 0x10]
mov dword [esi + 0x60], 0
mov dword [esi], 0x11
mov edx, dword [esi + 0x58]
mov ecx, dword [esi + 0x5c]
add ecx, edx
cmp dword [esi + 0x60], ecx
mov dword [esp + 0x40], ecx
jae 0x4252d6
mov edi, edi
mov ecx, dword [esi + 0x4c]
mov edx, 1
shl edx, cl
lea ecx, [edx - 1]
mov edx, dword [esi + 0x44]
mov dword [esp + 0x34], ecx
and ecx, ebx
mov ecx, dword [edx + ecx*4]
xor edx, edx
mov dl, ch
mov dword [esp + 0x20], ecx
cmp edx, ebp
jbe 0x42511b
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
mov ecx, dword [esi + 0x44]
dec eax
add ebp, 8
add ebx, edx
mov edx, dword [esp + 0x34]
and edx, ebx
mov ecx, dword [ecx + edx*4]
xor edx, edx
mov dl, ch
inc edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], ecx
cmp edx, ebp
ja 0x4250e5
mov dx, word [esp + 0x22]
cmp dx, 0x10
movzx ecx, ch
mov dword [esp + 0x18], ecx
jae 0x425178
cmp ebp, ecx
jae 0x425157
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
mov ecx, dword [esp + 0x18]
dec eax
add ebp, 8
add ebx, edx
inc edi
cmp ebp, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
jb 0x425131
mov dx, word [esp + 0x22]
shr ebx, cl
sub ebp, ecx
mov ecx, dword [esi + 0x60]
mov word [esi + ecx*2 + 0x68], dx
mov ecx, dword [esi + 0x60]
inc ecx
mov dword [esp + 0x18], ebx
mov dword [esi + 0x60], ecx
jmp 0x4252c1
jne 0x4251dd
lea edx, [ecx + 2]
cmp ebp, edx
jae 0x4251aa
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
mov ecx, dword [esp + 0x18]
dec eax
add ebp, 8
add ebx, edx
inc edi
lea edx, [ecx + 2]
cmp ebp, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
jb 0x425181
shr ebx, cl
sub ebp, ecx
mov ecx, dword [esi + 0x60]
test ecx, ecx
mov dword [esp + 0x18], ebx
je 0x42532c
movzx ecx, word [esi + ecx*2 + 0x66]
mov dword [esp + 0x34], ecx
mov ecx, ebx
and ecx, 3
add ecx, 3
shr ebx, 2
mov dword [esp + 0x20], ecx
sub ebp, 2
jmp 0x425287
cmp dx, 0x11
jne 0x425231
lea edx, [ecx + 3]
cmp ebp, edx
jae 0x425219
lea ebx, [ebx]
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
mov ecx, dword [esp + 0x18]
dec eax
add ebp, 8
add ebx, edx
inc edi
lea edx, [ecx + 3]
cmp ebp, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
jb 0x4251f0
shr ebx, cl
mov edx, ebx
and edx, 7
add edx, 3
mov dword [esp + 0x20], edx
shr ebx, 3
mov edx, 0xfffffffd
jmp 0x425277
lea edx, [ecx + 7]
cmp ebp, edx
jae 0x425261
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
mov ecx, dword [esp + 0x18]
dec eax
add ebp, 8
add ebx, edx
inc edi
lea edx, [ecx + 7]
cmp ebp, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
jb 0x425238
shr ebx, cl
mov edx, ebx
and edx, 0x7f
add edx, 0xb
mov dword [esp + 0x20], edx
shr ebx, 7
mov edx, 0xfffffff9
sub edx, ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x34], 0
add ebp, edx
mov edx, dword [esi + 0x60]
add edx, ecx
cmp edx, dword [esp + 0x40]
mov dword [esp + 0x18], ebx
ja 0x42533c
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x4252c1
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x34]
lea ebx, [ebx]
mov edx, dword [esi + 0x60]
mov word [esi + edx*2 + 0x68], cx
inc dword [esi + 0x60]
dec dword [esp + 0x20]
jne 0x4252b0
mov edx, dword [esi + 0x58]
mov ecx, dword [esi + 0x5c]
add ecx, edx
cmp dword [esi + 0x60], ecx
mov dword [esp + 0x40], ecx
jb 0x4250c0
cmp dword [esi], 0x1b
je 0x4259bd
lea eax, [esi + 0x528]
lea ecx, [esi + 0x64]
mov dword [ecx], eax
mov dword [esi + 0x44], eax
lea edx, [esi + 0x2e8]
push edx
lea eax, [esi + 0x4c]
push eax
mov dword [eax], 9
mov eax, dword [esi + 0x58]
push ecx
push eax
lea edx, [esi + 0x68]
mov ecx, 1
call fcn.0042c7b0
test eax, eax
mov dword [esp + 0x38], eax
je 0x42534c
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov dword [ecx + 0x18], str.invalid_literal_lengths_set
jmp 0x4259b7
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
jmp 0x4259b7
mov edx, dword [esp + 0x14]
mov dword [edx + 0x18], str.invalid_bit_length_repeat
jmp 0x4259b7
mov edx, dword [esi + 0x64]
lea ecx, [esi + 0x64]
mov dword [esi + 0x48], edx
lea edx, [esi + 0x2e8]
push edx
lea eax, [esi + 0x50]
push eax
push ecx
mov ecx, dword [esi + 0x58]
mov dword [eax], 6
mov eax, dword [esi + 0x5c]
lea edx, [esi + ecx*2 + 0x68]
push eax
mov ecx, 2
call fcn.0042c7b0
mov dword [esp + 0x38], eax
test eax, eax
mov eax, dword [esp + 0x10]
je 0x425398
mov edx, dword [esp + 0x14]
mov dword [edx + 0x18], str.invalid_distances_set
jmp 0x4259b7
mov dword [esi], 0x12
cmp eax, 6
jb 0x425405
cmp dword [esp + 0x24], 0x102
jb 0x425405
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x10]
mov dword [ecx + 0x10], edx
mov edx, dword [esp + 0x30]
mov dword [ecx], edi
mov dword [ecx + 4], eax
mov dword [esi + 0x30], ebx
mov dword [esi + 0x34], ebp
call fcn.0042c340
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x10]
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov ebx, dword [esi + 0x30]
mov ebp, dword [esi + 0x34]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ebx
jmp 0x4259bd
mov ecx, dword [esi + 0x4c]
mov edx, 1
shl edx, cl
lea ecx, [edx - 1]
mov edx, dword [esi + 0x44]
mov dword [esp + 0x34], ecx
and ecx, ebx
mov edx, dword [edx + ecx*4]
xor ecx, ecx
mov cl, dh
mov dword [esp + 0x20], edx
cmp ecx, ebp
jbe 0x425466
lea ebx, [ebx]
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
mov ecx, dword [esi + 0x44]
dec eax
add ebp, 8
add ebx, edx
mov edx, dword [esp + 0x34]
and edx, ebx
mov edx, dword [ecx + edx*4]
xor ecx, ecx
mov cl, dh
inc edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edx
cmp ecx, ebp
ja 0x425430
test dl, dl
je 0x425528
test dl, 0xf0
jne 0x425528
xor ecx, ecx
mov cl, dh
mov dword [esp + 0x34], edx
mov dword [esp + 0x18], ecx
xor ecx, ecx
mov cl, dl
add ecx, dword [esp + 0x18]
mov edx, 1
shl edx, cl
mov ecx, dword [esp + 0x18]
dec edx
and edx, ebx
shr edx, cl
movzx ecx, word [esp + 0x22]
add edx, ecx
mov ecx, dword [esi + 0x44]
mov edx, dword [ecx + edx*4]
movzx ecx, byte [esp + 0x35]
mov dword [esp + 0x20], edx
movzx edx, dh
add edx, ecx
cmp edx, ebp
mov dword [esp + 0x18], ecx
jbe 0x425520
mov edi, edi
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
xor ecx, ecx
mov cl, byte [esp + 0x34]
dec eax
add ebx, edx
mov edx, dword [esp + 0x18]
inc edi
add ebp, 8
mov dword [esp + 0x10], eax
add ecx, edx
mov edx, 1
shl edx, cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], edi
dec edx
and edx, ebx
shr edx, cl
movzx ecx, word [esp + 0x36]
add edx, ecx
mov ecx, dword [esi + 0x44]
mov ecx, dword [ecx + edx*4]
xor edx, edx
mov dl, ch
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
add edx, ecx
cmp edx, ebp
ja 0x4254c0
lea esp, [esp]
mov edx, dword [esp + 0x20]
shr ebx, cl
sub ebp, ecx
xor ecx, ecx
mov cl, dh
shr ebx, cl
xor ecx, ecx
mov cl, dh
mov dword [esp + 0x18], ebx
sub ebp, ecx
test dl, dl
movzx ecx, word [esp + 0x22]
mov dword [esi + 0x38], ecx
jne 0x42554f
mov dword [esi], 0x17
jmp 0x4259bd
test dl, 0x20
je 0x42555f
mov dword [esi], 0xb
jmp 0x4259bd
test dl, 0x40
je 0x425574
mov edx, dword [esp + 0x14]
mov dword [edx + 0x18], str.invalid_literal_length_code
jmp 0x4259b7
and edx, 0xf
mov dword [esi + 0x40], edx
mov dword [esi], 0x13
mov ecx, dword [esi + 0x40]
test ecx, ecx
je 0x4255ce
cmp ebp, ecx
jae 0x4255b5
nop
lea esp, [esp]
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
mov ecx, dword [esi + 0x40]
dec eax
add ebp, 8
add ebx, edx
inc edi
cmp ebp, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
jb 0x425590
mov edx, 1
shl edx, cl
mov ecx, dword [esi + 0x38]
dec edx
and edx, ebx
add ecx, edx
mov dword [esi + 0x38], ecx
mov ecx, dword [esi + 0x40]
shr ebx, cl
sub ebp, ecx
mov dword [esi], 0x14
mov ecx, dword [esi + 0x50]
mov edx, 1
shl edx, cl
lea ecx, [edx - 1]
mov edx, dword [esi + 0x48]
mov dword [esp + 0x40], ecx
and ecx, ebx
mov edx, dword [edx + ecx*4]
xor ecx, ecx
mov cl, dh
mov dword [esp + 0x20], edx
cmp ecx, ebp
jbe 0x425636
lea esp, [esp]
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
mov ecx, dword [esi + 0x48]
dec eax
add ebp, 8
add ebx, edx
mov edx, dword [esp + 0x40]
and edx, ebx
mov edx, dword [ecx + edx*4]
xor ecx, ecx
mov cl, dh
inc edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edx
cmp ecx, ebp
ja 0x425600
test dl, 0xf0
jne 0x4256e8
xor ecx, ecx
mov cl, dh
mov dword [esp + 0x34], edx
mov dword [esp + 0x18], ecx
xor ecx, ecx
mov cl, dl
add ecx, dword [esp + 0x18]
mov edx, 1
shl edx, cl
mov ecx, dword [esp + 0x18]
dec edx
and edx, ebx
shr edx, cl
movzx ecx, word [esp + 0x22]
add edx, ecx
mov ecx, dword [esi + 0x48]
mov edx, dword [ecx + edx*4]
movzx ecx, byte [esp + 0x35]
mov dword [esp + 0x20], edx
movzx edx, dh
add edx, ecx
cmp edx, ebp
mov dword [esp + 0x18], ecx
jbe 0x4256e0
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
xor ecx, ecx
mov cl, byte [esp + 0x34]
dec eax
add ebx, edx
mov edx, dword [esp + 0x18]
inc edi
add ebp, 8
mov dword [esp + 0x10], eax
add ecx, edx
mov edx, 1
shl edx, cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], edi
dec edx
and edx, ebx
shr edx, cl
movzx ecx, word [esp + 0x36]
add edx, ecx
mov ecx, dword [esi + 0x48]
mov ecx, dword [ecx + edx*4]
xor edx, edx
mov dl, ch
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
add edx, ecx
cmp edx, ebp
ja 0x425686
nop
mov edx, dword [esp + 0x20]
shr ebx, cl
sub ebp, ecx
xor ecx, ecx
mov cl, dh
shr ebx, cl
xor ecx, ecx
mov cl, dh
mov dword [esp + 0x18], ebx
sub ebp, ecx
test dl, 0x40
je 0x42570d
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.invalid_distance_code
jmp 0x4259b7
movzx ecx, word [esp + 0x22]
and edx, 0xf
mov dword [esi + 0x3c], ecx
mov dword [esi + 0x40], edx
mov dword [esi], 0x15
mov ecx, dword [esi + 0x40]
test ecx, ecx
je 0x425772
cmp ebp, ecx
jae 0x425755
lea esp, [esp]
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
mov ecx, dword [esi + 0x40]
dec eax
add ebp, 8
add ebx, edx
inc edi
cmp ebp, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
jb 0x425730
mov edx, 1
shl edx, cl
mov ecx, dword [esi + 0x3c]
dec edx
and edx, ebx
add ecx, edx
mov dword [esi + 0x3c], ecx
mov ecx, dword [esi + 0x40]
shr ebx, cl
sub ebp, ecx
mov dword [esp + 0x18], ebx
mov edx, dword [esp + 0x24]
mov ecx, dword [esi + 0x24]
sub ecx, edx
add ecx, dword [esp + 0x30]
cmp dword [esi + 0x3c], ecx
jbe 0x425794
mov edx, dword [esp + 0x14]
mov dword [edx + 0x18], str.invalid_distance_too_far_back
jmp 0x4259b7
mov dword [esi], 0x16
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x425a1f
mov edx, dword [esp + 0x30]
sub edx, ecx
mov ecx, dword [esi + 0x3c]
cmp ecx, edx
jbe 0x4257ef
sub ecx, edx
mov edx, dword [esi + 0x28]
cmp ecx, edx
mov dword [esp + 0x20], ecx
jbe 0x4257d0
sub ecx, edx
mov edx, dword [esi + 0x2c]
add edx, dword [esi + 0x20]
mov dword [esp + 0x20], ecx
sub edx, ecx
jmp 0x4257dc
mov edx, dword [esi + 0x2c]
sub edx, ecx
add edx, dword [esi + 0x28]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x34], edx
mov edx, dword [esi + 0x38]
cmp ecx, edx
mov dword [esp + 0x40], edx
jbe 0x425804
mov ecx, edx
jmp 0x425800
mov edx, dword [esp + 0x2c]
sub edx, ecx
mov ecx, dword [esi + 0x38]
mov dword [esp + 0x34], edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 0x24]
cmp ecx, edx
jbe 0x425812
mov ecx, edx
mov dword [esp + 0x20], ecx
sub edx, ecx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x40]
sub edx, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esi + 0x38], edx
mov edx, dword [esp + 0x34]
mov dl, byte [edx]
mov byte [ecx], dl
mov edx, dword [esp + 0x34]
inc ecx
inc edx
mov dword [esp + 0x34], edx
dec dword [esp + 0x20]
jne 0x425825
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 0x38]
test ecx, ecx
jne 0x4259bd
mov dword [esi], 0x12
jmp 0x4259bd
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x425a1f
mov ecx, dword [esp + 0x2c]
mov dl, byte [esi + 0x38]
mov byte [ecx], dl
inc ecx
mov dword [esp + 0x2c], ecx
dec dword [esp + 0x24]
mov dword [esi], 0x12
jmp 0x4259bd
mov ecx, dword [esi + 8]
test ecx, ecx
je 0x425958
cmp ebp, 0x20
jae 0x4258b7
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x20
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
jb 0x425890
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
add dword [edx + 0x14], ecx
mov edx, dword [esi + 0x18]
add edx, ecx
test ecx, ecx
mov dword [esp + 0x30], ecx
mov dword [esi + 0x18], edx
je 0x425907
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov edx, dword [esp + 0x2c]
test eax, eax
mov eax, dword [esp + 0x30]
push eax
je 0x4258f2
sub edx, eax
call fcn.0041b140
jmp 0x4258f9
sub edx, eax
call fcn.0042a820
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x14], eax
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 0x10]
mov edx, dword [esp + 0x24]
test ecx, ecx
mov dword [esp + 0x30], edx
mov ecx, ebx
jne 0x425937
and ecx, 0xff00
mov edx, ebx
shl edx, 0x10
add ecx, edx
xor edx, edx
mov dh, byte [esp + 0x1a]
shl ecx, 8
add ecx, edx
mov edx, ebx
shr edx, 0x18
add ecx, edx
cmp ecx, dword [esi + 0x14]
je 0x425950
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.incorrect_data_check
jmp 0x4259b7
xor ebx, ebx
mov dword [esp + 0x18], ebx
xor ebp, ebp
mov dword [esi], 0x19
mov ecx, dword [esi + 8]
test ecx, ecx
je 0x425a07
mov ecx, dword [esi + 0x10]
test ecx, ecx
je 0x425a07
cmp ebp, 0x20
jae 0x4259a7
lea esp, [esp]
test eax, eax
je 0x425a1f
movzx edx, byte [edi]
mov ecx, ebp
shl edx, cl
dec eax
add ebp, 8
mov dword [esp + 0x10], eax
add ebx, edx
inc edi
cmp ebp, 0x20
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
jb 0x425980
cmp ebx, dword [esi + 0x18]
je 0x425a03
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x18], str.incorrect_length_check
mov dword [esi], 0x1b
mov ecx, dword [esi]
cmp ecx, 0x1c
jbe switch.0x004247d4
mov eax, 0xfffffffe
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x10]
mov dword [eax], edi
mov dword [eax + 0x10], ecx
mov dword [eax + 4], edx
pop edi
mov dword [esi + 0x30], ebx
mov dword [esi + 0x34], ebp
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x3c
ret
xor ebx, ebx
xor ebp, ebp
mov dword [esi], 0x1a
mov dword [esp + 0x38], 1
jmp 0x425a1f
mov dword [esp + 0x38], 0xfffffffd
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov dword [ecx + 0xc], edx
mov edx, dword [esp + 0x24]
mov dword [ecx + 0x10], edx
mov dword [ecx], edi
mov dword [ecx + 4], eax
mov eax, dword [esi + 0x20]
test eax, eax
mov dword [esi + 0x30], ebx
mov dword [esi + 0x34], ebp
jne 0x425a51
cmp dword [esi], 0x18
jge 0x425a75
mov eax, dword [esp + 0x30]
cmp eax, dword [ecx + 0x10]
je 0x425a75
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
call fcn.00425bb0
test eax, eax
je 0x425a75
mov dword [esi], 0x1c
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x3c
ret
mov edi, dword [esp + 0x14]
mov edx, dword [edi + 4]
mov ecx, dword [edi + 0x10]
mov ebp, dword [esp + 0x48]
mov ebx, dword [esp + 0x30]
mov eax, dword [edi + 8]
sub ebp, edx
mov edx, dword [edi + 0x14]
sub ebx, ecx
add eax, ebp
add edx, ebx
mov dword [edi + 8], eax
mov dword [edi + 0x14], edx
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 8]
add ecx, ebx
test eax, eax
mov dword [esi + 0x18], ecx
je 0x425ad0
test ebx, ebx
je 0x425ad0
mov edx, dword [edi + 0xc]
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
sub edx, ebx
test eax, eax
push ebx
je 0x425ac5
call fcn.0041b140
jmp 0x425aca
call fcn.0042a820
mov dword [esi + 0x14], eax
mov dword [edi + 0x30], eax
mov edx, dword [esi + 4]
mov ecx, dword [esi]
neg edx
sbb edx, edx
and edx, 0x40
xor eax, eax
cmp ecx, 0xb
mov ecx, dword [esi + 0x34]
setne al
dec eax
and eax, 0x80
add edx, eax
add edx, ecx
test ebp, ebp
mov dword [edi + 0x2c], edx
jne 0x425afc
test ebx, ebx
je 0x425b03
cmp dword [esp + 0x44], 4
jne 0x425b1c
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x4259cd
pop edi
pop esi
pop ebp
mov eax, 0xfffffffb
pop ebx
add esp, 0x3c
ret
mov eax, dword [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret