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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x8c
mov esi, dword [esp + 0xa0]
test esi, esi
je case.default.0x4b0d15
mov eax, dword [esp + 0xa0]
mov ebp, dword [eax + 0x1c]
test ebp, ebp
je case.default.0x4b0d15
mov edx, dword [eax + 0xc]
mov dword [esp + 0x44], edx
test edx, edx
je case.default.0x4b0d15
mov esi, dword [eax]
test esi, esi
je 0x4b1f01
mov ecx, dword [eax + 4]
mov dword [esp + 0x4c], ecx
mov eax, dword [ebp]
cmp eax, 0xb
je 0x4b0e60
mov edx, dword [esp + 0xa0]
mov ecx, dword [ebp + 0x38]
mov dword [esp + 0x30], ecx
lea ecx, [ebp + 0x2f0]
mov edx, dword [edx + 0x10]
mov ebx, dword [ebp + 0x3c]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x50], edx
lea edx, [ebp + 0x530]
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x48], 0
mov dword [esp + 0x54], edx
mov dword [esp + 0x58], ecx
cmp eax, 0x1c
jbe switch.0x004b0d15
mov dword [esp + 0x48], 0xfffffffe
mov eax, dword [esp + 0x48]
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [ebp + 8]
xor eax, eax
test ecx, ecx
je 0x4b1fd5
cmp ebx, 0x1f
ja 0x4b0c60
test edi, edi
je 0x4b14d0
mov edx, dword [esp + 0x30]
mov ecx, ebx
jmp 0x4b0c48
test edi, edi
je 0x4b1f28
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x4b0c40
mov dword [esp + 0x30], edx
mov ebx, ecx
mov edx, dword [esp + 0xa0]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x50]
sub eax, ecx
mov ecx, dword [edx + 0x14]
add ecx, eax
mov dword [edx + 0x14], ecx
mov edx, dword [ebp + 0x1c]
add edx, eax
test eax, eax
mov dword [ebp + 0x1c], edx
je 0x4b0cb6
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], eax
test edx, edx
je 0x4b262c
mov ecx, dword [esp + 0x44]
sub ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.004b03e0
mov ecx, dword [esp + 0xa0]
mov dword [ebp + 0x18], eax
mov dword [ecx + 0x30], eax
mov ecx, dword [ebp + 0x10]
mov eax, dword [esp + 0x30]
test ecx, ecx
jne 0x4b0cea
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
shl edx, 0x18
and eax, 0xff00
shr ecx, 0x18
shl eax, 8
add ecx, edx
mov edx, dword [esp + 0x30]
shr edx, 8
and edx, 0xff00
add edx, ecx
add eax, edx
cmp eax, dword [ebp + 0x18]
je 0x4b1fc0
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x50], eax
mov eax, 0x1b
mov dword [ecx + 0x18], str.incorrect_data_check
mov dword [ebp], 0x1b
jmp dword [eax*4 + 0x701bec]
cmp ebx, 0x1f
ja 0x4b0d53
test edi, edi
je 0x4b14d0
mov edx, dword [esp + 0x30]
mov ecx, ebx
jmp 0x4b0d3d
test edi, edi
je 0x4b1e73
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x4b0d35
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x30]
shr eax, 0x18
mov ecx, dword [esp + 0xa0]
shl edx, 0x18
xor ebx, ebx
add edx, eax
mov eax, dword [esp + 0x30]
shr eax, 8
and eax, 0xff00
add eax, edx
mov edx, dword [esp + 0x30]
and edx, 0xff00
mov dword [esp + 0x30], 0
shl edx, 8
add eax, edx
mov dword [ebp + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [ebp], 0xa
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x4b2677
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004b5530
mov edx, dword [esp + 0xa0]
mov dword [ebp + 0x18], eax
mov dword [edx + 0x30], eax
mov dword [ebp], 0xb
cmp dword [esp + 0xa4], 5
je 0x4b14d0
mov ecx, dword [ebp + 4]
test ecx, ecx
jne 0x4b0e70
cmp ebx, 2
ja 0x4b0e16
test edi, edi
je 0x4b14d0
xor eax, eax
mov cl, bl
mov al, byte [esi]
mov edx, dword [esp + 0x30]
shl eax, cl
add edx, eax
dec edi
mov dword [esp + 0x30], edx
inc esi
add ebx, 8
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x30]
shr edx, 1
and eax, 1
mov dword [ebp + 4], eax
mov eax, edx
and eax, 3
cmp eax, 2
je 0x4b20b7
cmp eax, 3
je 0x4b231c
dec eax
je 0x4b22ef
mov dword [ebp], 0xd
mov eax, 0xd
shr edx, 2
sub ebx, 3
mov dword [esp + 0x30], edx
jmp 0x4b0bf7
mov dword [ebp], 0xc
mov al, 0xc
jmp 0x4b0bbb
mov ecx, ebx
mov dword [ebp], 0x18
and ecx, 7
and ebx, 0xfffffff8
shr dword [esp + 0x30], cl
mov eax, 0x18
jmp switch.0x004b0d15
mov edx, dword [ebp + 0x48]
test edx, edx
je 0x4b0ee8
cmp ebx, edx
jae 0x4b0ed1
test edi, edi
je 0x4b14d0
mov ecx, ebx
mov ebx, ebp
mov ebp, dword [esp + 0x30]
jmp 0x4b0eb8
test edi, edi
je 0x4b2123
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x4b0eb0
mov dword [esp + 0x30], ebp
mov ebp, ebx
mov ebx, ecx
mov cl, dl
mov eax, 1
shl eax, cl
dec eax
sub ebx, edx
and eax, dword [esp + 0x30]
shr dword [esp + 0x30], cl
add dword [ebp + 0x40], eax
mov dword [ebp], 0x14
mov eax, dword [ebp + 0x50]
mov ecx, dword [ebp + 0x58]
mov dword [esp + 0x34], eax
mov eax, 1
shl eax, cl
dec eax
xor ecx, ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x40]
and eax, edx
mov edx, dword [esp + 0x34]
lea eax, [edx + eax*4]
mov dl, byte [eax]
mov byte [esp + 0x38], dl
mov dl, byte [eax + 1]
mov cl, dl
mov ax, word [eax + 2]
mov dword [esp + 0x64], ecx
cmp ebx, ecx
jae 0x4b0f88
test edi, edi
je 0x4b14d0
mov dword [esp + 0x5c], ebp
mov ecx, ebx
mov ebp, dword [esp + 0x30]
jmp 0x4b0f4b
test edi, edi
je 0x4b20e1
xor eax, eax
mov edx, dword [esp + 0x34]
mov al, byte [esi]
xor ebx, ebx
shl eax, cl
add ebp, eax
mov eax, dword [esp + 0x40]
and eax, ebp
add ecx, 8
dec edi
inc esi
lea eax, [edx + eax*4]
mov dl, byte [eax]
mov byte [esp + 0x38], dl
mov dl, byte [eax + 1]
mov bl, dl
mov ax, word [eax + 2]
cmp ebx, ecx
ja 0x4b0f43
mov dword [esp + 0x30], ebp
mov dword [esp + 0x64], ebx
mov ebp, dword [esp + 0x5c]
mov ebx, ecx
mov cl, byte [esp + 0x38]
and ecx, 0xff
mov dword [esp + 0x40], ecx
and ecx, 0xf0
jne 0x4b1ff2
xor ecx, ecx
and eax, 0xffff
mov cl, dl
mov dword [esp + 0x60], eax
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x6c]
add ecx, eax
mov eax, 1
shl eax, cl
dec eax
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x5c], eax
and eax, ecx
mov cl, dl
mov edx, dword [esp + 0x60]
shr eax, cl
add eax, edx
mov edx, dword [esp + 0x34]
xor ecx, ecx
lea eax, [edx + eax*4]
mov dl, byte [eax]
mov byte [esp + 0x38], dl
mov dl, byte [eax + 1]
mov cl, dl
mov ax, word [eax + 2]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x6c]
add ecx, dword [esp + 0x68]
cmp ebx, ecx
jae 0x4b1077
test edi, edi
je 0x4b14d0
mov dword [esp + 0x68], ebp
mov ebp, dword [esp + 0x6c]
jmp 0x4b101b
test edi, edi
je 0x4b22bc
xor eax, eax
mov cl, bl
mov al, byte [esi]
mov edx, dword [esp + 0x30]
shl eax, cl
add edx, eax
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x30]
add ebx, 8
and eax, ecx
mov ecx, ebp
shr eax, cl
add eax, edx
mov edx, dword [esp + 0x34]
dec edi
inc esi
lea eax, [edx + eax*4]
mov cl, byte [eax + 1]
mov dl, byte [eax]
mov byte [esp + 0x2b], cl
xor ecx, ecx
mov cl, byte [esp + 0x2b]
mov byte [esp + 0x38], dl
mov ax, word [eax + 2]
lea edx, [ecx + ebp]
cmp edx, ebx
ja 0x4b1013
mov ebp, dword [esp + 0x68]
mov dl, byte [esp + 0x2b]
mov dword [esp + 0x68], ecx
mov cl, byte [esp + 0x6c]
shr dword [esp + 0x30], cl
mov ecx, dword [esp + 0x64]
sub ebx, ecx
mov cl, byte [esp + 0x38]
and ecx, 0xff
mov dword [esp + 0x40], ecx
jmp 0x4b1ffa
mov dword [ebp], 0x16
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4b14d0
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x50]
sub edx, eax
mov eax, dword [ebp + 0x44]
cmp edx, eax
jb 0x4b1f33
mov edx, dword [esp + 0x44]
sub edx, eax
mov eax, dword [ebp + 0x40]
mov ecx, eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x34], eax
jbe 0x4b10dd
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x38], esi
sub ecx, eax
sub dword [esp + 0x3c], eax
mov dword [ebp + 0x40], ecx
xor eax, eax
mov esi, dword [esp + 0x44]
mov cl, byte [edx + eax]
mov byte [esi + eax], cl
inc eax
cmp dword [esp + 0x34], eax
jne 0x4b10f4
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x34]
add eax, edx
mov esi, dword [esp + 0x38]
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x4b1a84
mov eax, dword [ebp]
jmp 0x4b0bf7
mov dword [ebp], 0x1c
mov dword [esp + 0x48], 0xfffffffc
jmp 0x4b0c08
mov dword [ebp], 0x12
cmp edi, 5
ja 0x4b2034
mov ecx, dword [ebp + 0x54]
mov eax, 1
shl eax, cl
dec eax
mov edx, dword [ebp + 0x4c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x34], edx
and eax, ecx
lea eax, [edx + eax*4]
mov dl, byte [eax]
mov cl, byte [eax + 1]
mov byte [esp + 0x38], dl
mov dx, word [eax + 2]
mov al, cl
mov byte [esp + 0x5c], cl
and eax, 0xff
mov dword [esp + 0x60], eax
cmp ebx, eax
jae 0x4b11ed
test edi, edi
je 0x4b14d0
mov eax, dword [esp + 0x30]
mov ecx, ebx
mov dword [esp + 0x64], ebp
jmp 0x4b11a9
test edi, edi
je 0x4b2274
xor edx, edx
mov ebp, dword [esp + 0x34]
mov dl, byte [esi]
dec edi
shl edx, cl
add eax, edx
mov edx, dword [esp + 0x40]
and edx, eax
add ecx, 8
inc esi
lea ebx, [ebp + edx*4]
mov dl, byte [ebx]
mov bp, word [ebx + 2]
mov byte [esp + 0x38], dl
mov dl, byte [ebx + 1]
xor ebx, ebx
mov bl, dl
cmp ebx, ecx
ja 0x4b11a1
mov dword [esp + 0x60], ebx
mov byte [esp + 0x5c], dl
mov dword [esp + 0x30], eax
mov edx, ebp
mov ebx, ecx
mov ebp, dword [esp + 0x64]
cmp byte [esp + 0x38], 0
je 0x4b22c5
mov al, byte [esp + 0x38]
and eax, 0xff
mov dword [esp + 0x40], eax
test al, 0xf0
jne 0x4b24ea
mov cl, byte [esp + 0x5c]
and edx, 0xffff
and ecx, 0xff
mov dword [esp + 0x64], edx
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x6c]
add ecx, eax
mov eax, 1
shl eax, cl
dec eax
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x68], eax
and eax, ecx
mov cl, byte [esp + 0x5c]
shr eax, cl
add eax, edx
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x6c]
lea eax, [edx + eax*4]
mov dl, byte [eax]
mov byte [esp + 0x38], dl
mov dl, byte [eax + 1]
mov byte [esp + 0x40], dl
mov dx, word [eax + 2]
xor eax, eax
mov al, byte [esp + 0x40]
add ecx, eax
cmp ebx, ecx
jae 0x4b12dc
test edi, edi
je 0x4b14d0
mov dword [esp + 0x5c], ebp
mov ebp, dword [esp + 0x6c]
jmp 0x4b1288
test edi, edi
je 0x4b20e7
xor eax, eax
mov cl, bl
mov al, byte [esi]
mov edx, dword [esp + 0x30]
shl eax, cl
add edx, eax
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x30]
add ebx, 8
and eax, ecx
mov ecx, ebp
shr eax, cl
add eax, edx
mov edx, dword [esp + 0x34]
dec edi
inc esi
lea eax, [edx + eax*4]
mov dl, byte [eax]
mov byte [esp + 0x38], dl
mov dl, byte [eax + 1]
mov byte [esp + 0x40], dl
mov dx, word [eax + 2]
xor eax, eax
mov al, byte [esp + 0x40]
lea ecx, [eax + ebp]
cmp ecx, ebx
ja 0x4b1280
mov ebp, dword [esp + 0x5c]
mov cl, byte [esp + 0x6c]
and edx, 0xffff
shr dword [esp + 0x30], cl
mov ecx, dword [esp + 0x60]
mov dword [ebp + 0x40], edx
sub ebx, ecx
mov cl, al
xor eax, eax
mov al, byte [esp + 0x40]
shr dword [esp + 0x30], cl
sub ebx, eax
cmp byte [esp + 0x38], 0
je 0x4b22de
mov al, byte [esp + 0x38]
and eax, 0xff
mov dword [esp + 0x40], eax
test byte [esp + 0x40], 0x20
jne 0x4b1fa7
test byte [esp + 0x40], 0x40
je 0x4b2661
mov edx, dword [esp + 0xa0]
mov eax, 0x1b
mov dword [edx + 0x18], 0x701b6d
mov dword [ebp], 0x1b
jmp switch.0x004b0d15
mov edx, dword [ebp + 0x5c]
mov ecx, ebx
mov dword [esp + 0x34], edx
mov edx, dword [ebp + 0x68]
cmp dword [esp + 0x34], edx
jbe 0x4b13b7
cmp ecx, 2
ja 0x4b1384
test edi, edi
je 0x4b1f2c
xor eax, eax
mov ebx, dword [esp + 0x30]
mov al, byte [esi]
dec edi
shl eax, cl
add ebx, eax
inc esi
mov dword [esp + 0x30], ebx
add ecx, 8
mov ax, word [edx + edx + 0x7024e0]
mov ebx, dword [esp + 0x30]
and eax, 0xffff
and ebx, 7
inc edx
sub ecx, 3
mov word [ebp + eax*2 + 0x70], bx
mov eax, dword [esp + 0x30]
shr eax, 3
mov dword [ebp + 0x68], edx
mov dword [esp + 0x30], eax
cmp edx, dword [esp + 0x34]
jb 0x4b1362
mov ebx, ecx
cmp edx, 0x12
ja 0x4b13e4
lea eax, [edx + edx + 0x7024e0]
mov dx, word [eax]
add eax, 2
and edx, 0xffff
cmp eax, 0x702506
mov word [ebp + edx*2 + 0x70], 0
jne 0x4b13c3
mov dword [ebp + 0x68], 0x13
mov edx, dword [esp + 0x54]
lea eax, [ebp + 0x54]
mov dword [ebp + 0x6c], edx
mov dword [ebp + 0x4c], edx
mov dword [ebp + 0x54], 7
mov dword [esp + 0x10], eax
lea eax, [ebp + 0x6c]
mov ecx, dword [esp + 0x58]
mov dword [esp + 0xc], eax
lea eax, [ebp + 0x70]
mov dword [esp + 0x14], ecx
mov dword [esp + 8], 0x13
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.004b59a0
mov dword [esp + 0x48], eax
test eax, eax
je 0x4b2646
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov dword [ebp], 0x1b
mov eax, 0x1b
jmp switch.0x004b0d15
mov eax, dword [ebp + 8]
test eax, eax
je 0x4b2512
mov edx, dword [ebp + 0x10]
test edx, edx
je 0x4b2512
cmp ebx, 0x1f
ja 0x4b1498
test edi, edi
je 0x4b14d0
mov edx, dword [esp + 0x30]
mov ecx, ebx
jmp 0x4b1480
test edi, edi
je 0x4b1f28
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x4b1478
mov dword [esp + 0x30], edx
mov ebx, ecx
mov edx, dword [esp + 0x30]
cmp dword [ebp + 0x1c], edx
je 0x4b2508
mov ecx, dword [esp + 0xa0]
mov dword [ecx + 0x18], str.incorrect_length_check
mov dword [ebp], 0x1b
mov eax, 0x1b
jmp switch.0x004b0d15
mov dword [esp + 0x48], 1
lea esi, [esi]
mov eax, dword [esp + 0xa0]
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
mov dword [eax], esi
mov dword [eax + 4], edi
mov eax, dword [esp + 0x30]
mov dword [ebp + 0x3c], ebx
mov dword [ebp + 0x38], eax
mov eax, dword [ebp + 0x28]
test eax, eax
jne 0x4b1507
cmp dword [ebp], 0x17
ja 0x4b151f
cmp dword [esp + 0x50], ecx
je 0x4b151f
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0xa0]
call fcn.004b07d0
test eax, eax
jne 0x4b1126
mov edx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
mov eax, dword [edx + 4]
sub ebx, eax
mov eax, dword [edx + 0x10]
sub esi, eax
mov eax, dword [edx + 8]
add eax, ebx
mov dword [edx + 8], eax
mov eax, dword [edx + 0x14]
add eax, esi
mov dword [edx + 0x14], eax
mov eax, dword [ebp + 0x1c]
add eax, esi
test esi, esi
mov dword [ebp + 0x1c], eax
je 0x4b158b
mov edi, dword [ebp + 8]
test edi, edi
je 0x4b158b
mov ecx, dword [ebp + 0x10]
mov dword [esp + 8], esi
test ecx, ecx
je 0x4b1e80
mov eax, dword [edx + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.004b03e0
mov edx, dword [esp + 0xa0]
mov dword [ebp + 0x18], eax
mov dword [edx + 0x30], eax
cmp dword [ebp + 4], 1
sbb eax, eax
mov edx, dword [ebp + 0x3c]
xor eax, 0xffffffff
and eax, 0x40
add eax, edx
cmp dword [ebp], 0xb
setne dl
and edx, 0xff
mov ebp, dword [esp + 0xa0]
dec edx
and edx, 0x80
add eax, edx
or esi, ebx
mov dword [ebp + 0x2c], eax
je 0x4b15ce
cmp dword [esp + 0xa4], 4
jne 0x4b0c08
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x4b0c08
mov dword [esp + 0x48], 0xfffffffb
mov eax, dword [esp + 0x48]
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp + 0x68]
mov dword [esp + 0x5c], eax
mov edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x64]
mov dword [esp + 0x64], edx
add edx, eax
mov dword [esp + 0x60], edx
mov dword [esp + 0x38], ebp
mov ebp, dword [esp + 0x5c]
cmp dword [esp + 0x60], ebp
jbe 0x4b26a8
mov eax, dword [esp + 0x38]
mov ebp, 1
mov ecx, dword [eax + 0x54]
mov edx, dword [eax + 0x4c]
shl ebp, cl
mov ecx, ebp
mov eax, dword [esp + 0x30]
dec ecx
and eax, ecx
mov dword [esp + 0x34], ecx
lea eax, [edx + eax*4]
mov cl, byte [eax + 1]
mov ax, word [eax + 2]
mov byte [esp + 0x40], cl
and ecx, 0xff
mov ebp, ecx
cmp ebx, ecx
jae 0x4b16ab
test edi, edi
je 0x4b20f2
mov ecx, ebx
mov dword [esp + 0x40], edx
jmp 0x4b166a
test edi, edi
je 0x4b20f0
xor eax, eax
mov edx, dword [esp + 0x30]
mov al, byte [esi]
mov ebx, dword [esp + 0x34]
shl eax, cl
add edx, eax
add ecx, 8
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x30]
dec edi
and eax, ebx
inc esi
lea eax, [edx + eax*4]
mov bl, byte [eax + 1]
mov ax, word [eax + 2]
mov dl, bl
and edx, 0xff
mov ebp, edx
cmp edx, ecx
ja 0x4b1662
mov byte [esp + 0x40], bl
mov ebx, ecx
cmp ax, 0xf
ja 0x4b2180
cmp ebx, ebp
jae 0x4b16f1
test edi, edi
je 0x4b20f2
mov ecx, ebx
mov edx, dword [esp + 0x30]
mov ebx, eax
jmp 0x4b16d8
test edi, edi
je 0x4b23b9
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebp
jb 0x4b16d0
mov eax, ebx
mov dword [esp + 0x30], edx
mov ebx, ecx
mov edx, dword [esp + 0x38]
sub ebx, ebp
mov ebp, dword [esp + 0x5c]
mov cl, byte [esp + 0x40]
shr dword [esp + 0x30], cl
mov word [edx + ebp*2 + 0x70], ax
inc ebp
mov dword [esp + 0x5c], ebp
mov dword [edx + 0x68], ebp
jmp 0x4b160c
mov dword [esp + 0x48], 0xfffffffd
jmp 0x4b14d0
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [esp + 0x30], cl
cmp ebx, 0x1f
ja 0x4b1763
test edi, edi
je 0x4b14d0
mov edx, dword [esp + 0x30]
mov ecx, ebx
jmp 0x4b174b
test edi, edi
je 0x4b1e73
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x4b1743
mov dword [esp + 0x30], edx
mov ebx, ecx
mov edx, dword [esp + 0x30]
shr edx, 0x10
movzx eax, word [esp + 0x30]
xor edx, 0xffff
cmp eax, edx
je 0x4b23c8
mov edx, dword [esp + 0xa0]
mov eax, 0x1b
mov dword [edx + 0x18], str.invalid_stored_block_lengths
mov dword [ebp], 0x1b
jmp switch.0x004b0d15
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x4b1fa7
mov edx, edi
cmp edi, eax
jbe 0x4b17b3
mov edx, eax
cmp edx, dword [esp + 0x3c]
jbe 0x4b17bd
mov edx, dword [esp + 0x3c]
test edx, edx
je 0x4b14d0
mov ecx, dword [esp + 0x44]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [esp], ecx
mov dword [esp + 0x2c], edx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
add eax, edx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 0x40]
sub eax, edx
sub ecx, edx
mov dword [ebp + 0x40], eax
sub edi, edx
add esi, edx
mov dword [esp + 0x3c], ecx
mov eax, dword [ebp]
jmp 0x4b0bf7
cmp ebx, 0xd
ja 0x4b1845
test edi, edi
je 0x4b14d0
mov edx, dword [esp + 0x30]
mov ecx, ebx
jmp 0x4b182d
test edi, edi
je 0x4b1e73
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xd
jbe 0x4b1825
mov dword [esp + 0x30], edx
mov ebx, ecx
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
shr edx, 0xa
mov eax, dword [esp + 0x30]
and edx, 0xf
and eax, 0x1f
add edx, 4
add eax, 0x101
shr ecx, 5
mov dword [esp + 0x34], edx
and ecx, 0x1f
mov dword [ebp + 0x5c], edx
mov edx, dword [esp + 0x30]
inc ecx
shr edx, 0xe
sub ebx, 0xe
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x64], ecx
mov dword [esp + 0x30], edx
cmp eax, 0x11e
ja 0x4b2153
cmp ecx, 0x1e
ja 0x4b2153
mov dword [ebp + 0x68], 0
mov dword [ebp], 0x10
xor edx, edx
mov ecx, ebx
jmp 0x4b1362
mov edx, dword [ebp + 0x10]
test dh, 0x10
je 0x4b1a4a
test edi, edi
je 0x4b14d0
xor edx, edx
mov dword [esp + 0x38], edi
mov dword [esp + 0x40], ebx
mov eax, edx
mov cl, byte [esi + eax]
xor edx, edx
mov dl, cl
inc eax
mov dword [esp + 0x34], edx
mov edx, dword [ebp + 0x20]
test edx, edx
je 0x4b18f9
mov edi, dword [edx + 0x24]
test edi, edi
je 0x4b18f9
mov ebx, dword [ebp + 0x40]
cmp ebx, dword [edx + 0x28]
jae 0x4b18f9
mov byte [edi + ebx], cl
inc ebx
mov dword [ebp + 0x40], ebx
mov edx, dword [esp + 0x34]
test edx, edx
je 0x4b1907
cmp eax, dword [esp + 0x38]
jb 0x4b18d0
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x40]
mov edx, eax
test byte [ebp + 0x11], 2
jne 0x4b2100
mov eax, dword [esp + 0x34]
sub edi, edx
add esi, edx
test eax, eax
jne 0x4b14d0
mov edx, dword [ebp + 0x10]
mov dword [ebp], 8
test dh, 2
je 0x4b1eb0
cmp ebx, 0xf
ja 0x4b197b
test edi, edi
je 0x4b14d0
mov dword [esp + 0x34], edx
mov ecx, ebx
mov edx, dword [esp + 0x30]
jmp 0x4b195f
test edi, edi
je 0x4b1e73
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x4b1957
mov dword [esp + 0x30], edx
mov ebx, ecx
mov edx, dword [esp + 0x34]
mov eax, dword [ebp + 0x18]
and eax, 0xffff
cmp eax, dword [esp + 0x30]
je 0x4b1ea0
mov ecx, dword [esp + 0xa0]
mov eax, 0x1b
mov dword [ecx + 0x18], str.header_crc_mismatch
mov dword [ebp], 0x1b
jmp switch.0x004b0d15
mov edx, dword [ebp + 0x10]
jmp 0x4b1935
mov edx, dword [ebp + 0x10]
test dh, 8
je 0x4b1d23
test edi, edi
je 0x4b14d0
xor edx, edx
mov dword [esp + 0x38], edi
mov dword [esp + 0x40], ebx
mov eax, edx
mov cl, byte [esi + eax]
xor edx, edx
mov dl, cl
inc eax
mov dword [esp + 0x34], edx
mov edx, dword [ebp + 0x20]
test edx, edx
je 0x4b19fe
mov edi, dword [edx + 0x1c]
test edi, edi
je 0x4b19fe
mov ebx, dword [ebp + 0x40]
cmp ebx, dword [edx + 0x20]
jae 0x4b19fe
mov byte [edi + ebx], cl
inc ebx
mov dword [ebp + 0x40], ebx
mov ebx, dword [esp + 0x34]
test ebx, ebx
je 0x4b1a0c
cmp eax, dword [esp + 0x38]
jb 0x4b19d5
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x40]
mov edx, eax
test byte [ebp + 0x11], 2
jne 0x4b2130
mov ecx, dword [esp + 0x34]
sub edi, edx
add esi, edx
test ecx, ecx
jne 0x4b14d0
mov edx, dword [ebp + 0x10]
mov dword [ebp + 0x40], 0
mov dword [ebp], 7
test dh, 0x10
jne 0x4b18bc
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x4b192e
mov dword [eax + 0x24], 0
jmp 0x4b192e
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4b14d0
mov ecx, dword [esp + 0x44]
mov eax, dword [ebp + 0x40]
mov byte [ecx], al
mov eax, dword [esp + 0x3c]
inc ecx
dec eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x3c], eax
mov dword [ebp], 0x12
mov eax, 0x12
jmp switch.0x004b0d15
mov edx, dword [ebp + 0x48]
test edx, edx
je 0x4b1f60
cmp ebx, edx
jae 0x4b1ad7
test edi, edi
je 0x4b14d0
mov ecx, ebx
mov ebx, ebp
mov ebp, dword [esp + 0x30]
jmp 0x4b1abe
test edi, edi
je 0x4b2123
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x4b1ab6
mov dword [esp + 0x30], ebp
mov ebp, ebx
mov ebx, ecx
mov cl, dl
mov eax, 1
shl eax, cl
dec eax
sub ebx, edx
and eax, dword [esp + 0x30]
add eax, dword [ebp + 0x44]
shr dword [esp + 0x30], cl
mov dword [ebp + 0x44], eax
jmp 0x4b1f63
cmp ebx, 0x1f
ja 0x4b1b2e
test edi, edi
je 0x4b14d0
mov edx, dword [esp + 0x30]
mov ecx, ebx
jmp 0x4b1b18
test edi, edi
je 0x4b1e73
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x4b1b10
mov dword [esp + 0x30], edx
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x4b1b3c
mov edx, dword [esp + 0x30]
mov dword [eax + 4], edx
test byte [ebp + 0x11], 2
jne 0x4b235e
mov dword [ebp], 3
mov dword [esp + 0x30], 0
xor ebx, ebx
jmp 0x4b1b65
cmp ebx, 0xf
ja 0x4b1b93
test edi, edi
je 0x4b14d0
mov edx, dword [esp + 0x30]
mov ecx, ebx
jmp 0x4b1b7d
test edi, edi
je 0x4b1e73
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x4b1b75
mov dword [esp + 0x30], edx
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x4b1bac
movzx edx, byte [esp + 0x30]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x30]
shr edx, 8
mov dword [eax + 0xc], edx
mov edx, dword [ebp + 0x10]
test dh, 2
jne 0x4b2283
mov dword [ebp], 4
xor ebx, ebx
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], edx
test dh, 4
je 0x4b20c8
cmp ebx, 0xf
ja 0x4b1c10
test edi, edi
je 0x4b14d0
mov ecx, ebx
mov ebx, edx
mov edx, dword [esp + 0x30]
jmp 0x4b1bf8
test edi, edi
je 0x4b1e73
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x4b1bf0
mov dword [esp + 0x30], edx
mov edx, ebx
mov ecx, dword [esp + 0x30]
mov eax, dword [ebp + 0x20]
mov dword [ebp + 0x40], ecx
test eax, eax
je 0x4b1c21
mov dword [eax + 0x14], ecx
test dh, 2
jne 0x4b242d
mov ecx, edx
mov dword [esp + 0x34], edx
and ecx, 0x400
xor ebx, ebx
mov dword [esp + 0x30], 0
mov dword [ebp], 5
jmp 0x4b1c5f
mov edx, dword [ebp + 0x10]
mov ecx, edx
mov dword [esp + 0x34], edx
and ecx, 0x400
test ecx, ecx
je 0x4b1d0c
mov eax, dword [ebp + 0x40]
mov edx, edi
cmp edi, eax
ja 0x4b1fa0
test edx, edx
je 0x4b1d01
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0x40], ecx
test ecx, ecx
je 0x4b1ce7
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x38], ecx
test ecx, ecx
je 0x4b1ce7
mov ecx, dword [esp + 0x40]
mov ecx, dword [ecx + 0x14]
sub ecx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x34], ecx
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 0x34]
add eax, edx
mov dword [esp + 0x40], eax
mov eax, edx
cmp dword [esp + 0x40], ecx
jbe 0x4b1cc0
mov eax, ecx
mov ecx, dword [esp + 0x34]
sub eax, ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x2c], edx
add ecx, dword [esp + 0x34]
mov dword [esp + 8], eax
mov dword [esp], ecx
mov dword [esp + 4], esi
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x2c]
test dword [esp + 0x34], 0x200
jne 0x4b233b
mov eax, dword [ebp + 0x40]
sub edi, edx
sub eax, edx
add esi, edx
mov dword [ebp + 0x40], eax
test eax, eax
jne 0x4b14d0
mov edx, dword [ebp + 0x10]
mov dword [ebp + 0x40], 0
mov dword [ebp], 6
test dh, 8
jne 0x4b19c1
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x4b1a33
mov dword [eax + 0x1c], 0
jmp 0x4b1a33
mov edx, dword [ebp + 8]
test edx, edx
je 0x4b1fe1
cmp ebx, 0xf
ja 0x4b1d88
test edi, edi
je 0x4b14d0
mov dword [esp + 0x34], edx
mov ecx, ebx
mov edx, dword [esp + 0x30]
jmp 0x4b1d6c
test edi, edi
je 0x4b1f28
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x4b1d64
mov dword [esp + 0x30], edx
mov ebx, ecx
mov edx, dword [esp + 0x34]
cmp dword [esp + 0x30], 0x8b1f
je 0x4b2526
mov eax, dword [ebp + 0x20]
mov dword [ebp + 0x10], 0
test eax, eax
je 0x4b1dab
mov dword [eax + 0x30], 0xffffffff
and edx, 1
je 0x4b240e
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x30]
shl edx, 8
mov ecx, 0x1f
shr eax, 8
and edx, 0xffff
add eax, edx
xor edx, edx
div ecx
test edx, edx
jne 0x4b240e
mov eax, dword [esp + 0x30]
and eax, 0xf
cmp eax, 8
je 0x4b2761
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [ebp], 0x1b
mov eax, 0x1b
jmp switch.0x004b0d15
cmp ebx, 0xf
ja 0x4b1e45
test edi, edi
je 0x4b14d0
mov edx, dword [esp + 0x30]
mov ecx, ebx
jmp 0x4b1e2d
test edi, edi
je 0x4b1f28
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x4b1e25
mov dword [esp + 0x30], edx
mov ebx, ecx
mov eax, dword [esp + 0x30]
mov dword [ebp + 0x10], eax
cmp al, 8
je 0x4b23e1
mov edx, dword [esp + 0xa0]
mov eax, 0x1b
mov dword [edx + 0x18], str.unknown_compression_method
mov dword [ebp], 0x1b
jmp switch.0x004b0d15
mov dword [esp + 0x30], edx
mov ebx, ecx
jmp 0x4b14d0
mov ecx, dword [esp + 0xa0]
mov eax, dword [ecx + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.004b5530
jmp 0x4b157e
xor ebx, ebx
mov dword [esp + 0x30], 0
lea esi, [esi]
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x4b1ec7
sar edx, 9
mov dword [eax + 0x30], 1
and edx, 1
mov dword [eax + 0x2c], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004b03e0
mov edx, dword [esp + 0xa0]
mov dword [ebp + 0x18], eax
mov dword [edx + 0x30], eax
mov dword [ebp], 0xb
mov eax, 0xb
jmp switch.0x004b0d15
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x48], 0xfffffffe
mov ebx, dword [eax + 4]
test ebx, ebx
jne 0x4b0c08
mov dword [esp + 0x4c], 0
jmp 0x4b0baf
mov dword [esp + 0x30], edx
mov ebx, ecx
jmp 0x4b14d0
sub eax, edx
mov edx, dword [ebp + 0x30]
cmp eax, edx
jbe 0x4b2172
sub eax, edx
mov edx, dword [ebp + 0x28]
sub edx, eax
mov ecx, dword [ebp + 0x34]
add edx, ecx
mov ecx, dword [ebp + 0x40]
cmp eax, ecx
jbe 0x4b10cb
mov eax, ecx
jmp 0x4b10cb
mov eax, dword [ebp + 0x44]
mov ecx, dword [ebp + 0x2c]
mov edx, dword [esp + 0x50]
add edx, ecx
mov ecx, dword [esp + 0x3c]
sub edx, ecx
cmp edx, eax
jae 0x4b1098
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], 0x701b9f
mov dword [ebp], 0x1b
mov eax, 0x1b
jmp switch.0x004b0d15
mov edx, eax
jmp 0x4b1c74
mov dword [ebp], 0xb
mov eax, 0xb
jmp switch.0x004b0d15
mov edx, dword [ebp + 0x10]
jmp 0x4b1bc9
mov edx, dword [esp + 0x3c]
mov eax, dword [ebp + 8]
mov dword [esp + 0x50], edx
xor ebx, ebx
mov dword [esp + 0x30], 0
mov dword [ebp], 0x19
jmp 0x4b1454
mov dword [ebp], 0xc
mov eax, 0xc
jmp switch.0x004b0d15
xor ecx, ecx
mov cl, dl
mov dword [esp + 0x68], ecx
and edx, 0xff
mov cl, byte [esp + 0x68]
shr dword [esp + 0x30], cl
sub ebx, edx
test byte [esp + 0x40], 0x40
je 0x4b2256
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], 0x701b89
mov dword [ebp], 0x1b
mov eax, 0x1b
jmp switch.0x004b0d15
cmp dword [esp + 0x3c], 0x101
jbe 0x4b114a
mov edx, dword [esp + 0xa0]
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], eax
mov dword [edx], esi
mov dword [edx + 4], edi
mov edx, dword [esp + 0x30]
mov dword [ebp + 0x3c], ebx
mov dword [ebp + 0x38], edx
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.004b5f80
mov edx, dword [esp + 0xa0]
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0xa0]
mov ebx, dword [ebp + 0x3c]
mov edx, dword [edx + 0xc]
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x44], edx
mov edx, dword [ebp + 0x38]
mov esi, dword [eax]
mov edi, dword [eax + 4]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x30], edx
mov eax, dword [ebp]
jmp 0x4b0bf7
mov dword [ebp], 0xf
mov eax, 0xf
jmp 0x4b0e50
mov eax, dword [ebp + 0x20]
xor ecx, ecx
test eax, eax
je 0x4b1c40
mov dword [eax + 0x10], 0
jmp 0x4b1c40
mov dword [esp + 0x30], ebp
mov ebx, ecx
mov ebp, dword [esp + 0x5c]
jmp 0x4b14d0
mov ebx, ecx
mov ebp, dword [esp + 0x38]
jmp 0x4b14d0
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x2c], edx
mov dword [esp], eax
call fcn.004b03e0
mov edx, dword [esp + 0x2c]
mov dword [ebp + 0x18], eax
jmp 0x4b191b
mov dword [esp + 0x30], ebp
mov ebp, ebx
mov ebx, ecx
jmp 0x4b14d0
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x2c], edx
mov dword [esp], eax
call fcn.004b03e0
mov edx, dword [esp + 0x2c]
mov dword [ebp + 0x18], eax
jmp 0x4b1a20
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov dword [ebp], 0x1b
mov eax, 0x1b
jmp switch.0x004b0d15
sub edx, eax
mov ecx, dword [ebp + 0x34]
add edx, ecx
jmp 0x4b1f4c
mov cl, byte [esp + 0x40]
and ecx, 0xff
mov dword [esp + 0x34], ecx
mov edx, ecx
cmp ax, 0x10
je 0x4b2466
cmp ax, 0x11
je 0x4b25c5
add edx, 7
cmp ebx, edx
jae 0x4b21e3
test edi, edi
je 0x4b20f2
mov dword [esp + 0x40], ebp
mov ecx, ebx
mov ebp, dword [esp + 0x30]
jmp 0x4b21c8
test edi, edi
je 0x4b23aa
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x4b21c0
mov dword [esp + 0x30], ebp
mov ebx, ecx
mov ebp, dword [esp + 0x40]
mov edx, dword [esp + 0x30]
mov cl, byte [esp + 0x34]
shr edx, cl
mov eax, edx
sub ebx, ebp
and eax, 0x7f
sub ebx, 7
shr edx, 7
add eax, 0xb
mov dword [esp + 0x30], edx
xor ecx, ecx
mov ebp, dword [esp + 0x5c]
add ebp, eax
mov dword [esp + 0x34], ebp
cmp dword [esp + 0x60], ebp
jb 0x4b2804
add eax, eax
mov ebp, dword [esp + 0x5c]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x40], 0
lea edx, [eax + ebp*2]
xor eax, eax
mov ebp, dword [esp + 0x68]
mov word [edx + eax + 0x70], cx
add eax, 2
cmp eax, ebp
jne 0x4b2236
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x5c], ecx
mov dword [edx + 0x68], ecx
jmp 0x4b160c
mov dl, byte [esp + 0x38]
and eax, 0xffff
and edx, 0xf
mov dword [ebp + 0x44], eax
mov dword [ebp + 0x48], edx
mov dword [ebp], 0x15
jmp 0x4b1a98
mov dword [esp + 0x30], eax
mov ebx, ecx
mov ebp, dword [esp + 0x64]
jmp 0x4b14d0
mov al, byte [esp + 0x30]
mov dword [esp + 8], 2
mov byte [esp + 0x7c], al
mov eax, dword [esp + 0x30]
shr eax, 8
mov byte [esp + 0x7d], al
lea eax, [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.004b03e0
mov edx, dword [ebp + 0x10]
mov dword [ebp + 0x18], eax
jmp 0x4b1bb8
mov ebp, dword [esp + 0x68]
jmp 0x4b14d0
mov cl, byte [esp + 0x5c]
xor eax, eax
shr dword [esp + 0x30], cl
mov al, byte [esp + 0x5c]
and edx, 0xffff
sub ebx, eax
mov dword [ebp + 0x40], edx
mov dword [ebp], 0x17
mov eax, 0x17
jmp switch.0x004b0d15
mov dword [ebp + 0x4c], 0x701c60
mov dword [ebp + 0x54], 9
mov dword [ebp + 0x50], 0x702460
mov dword [ebp + 0x58], 5
mov dword [ebp], 0x12
mov eax, 0x12
jmp 0x4b0e50
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.invalid_block_type
mov dword [ebp], 0x1b
mov eax, 0x1b
jmp 0x4b0e50
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x2c], edx
mov dword [esp], eax
call fcn.004b03e0
mov edx, dword [esp + 0x2c]
mov dword [ebp + 0x18], eax
jmp 0x4b1cf5
mov eax, dword [esp + 0x30]
mov dword [esp + 8], 4
shr eax, 8
mov cl, byte [esp + 0x30]
mov byte [esp + 0x7d], al
mov eax, dword [esp + 0x30]
shr eax, 0x10
mov byte [esp + 0x7c], cl
mov byte [esp + 0x7e], al
mov eax, dword [esp + 0x30]
shr eax, 0x18
mov byte [esp + 0x7f], al
lea eax, [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.004b03e0
mov dword [ebp + 0x18], eax
jmp 0x4b1b46
mov dword [esp + 0x30], ebp
mov ebx, ecx
mov ebp, dword [esp + 0x38]
jmp 0x4b14d0
mov dword [esp + 0x30], edx
mov ebx, ecx
mov ebp, dword [esp + 0x38]
jmp 0x4b14d0
mov dword [ebp + 0x40], eax
mov dword [ebp], 0xe
xor ebx, ebx
mov dword [esp + 0x30], 0
jmp 0x4b17a3
test dword [esp + 0x30], 0xe000
je 0x4b258e
mov ecx, dword [esp + 0xa0]
mov eax, 0x1b
mov dword [ecx + 0x18], str.unknown_header_flags_set
mov dword [ebp], 0x1b
jmp switch.0x004b0d15
mov ecx, dword [esp + 0xa0]
mov eax, 0x1b
mov dword [ecx + 0x18], str.incorrect_header_check
mov dword [ebp], 0x1b
jmp switch.0x004b0d15
mov al, byte [esp + 0x30]
mov dword [esp + 8], 2
mov byte [esp + 0x7c], al
mov eax, dword [esp + 0x30]
shr eax, 8
mov byte [esp + 0x7d], al
lea eax, [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.004b03e0
mov edx, dword [ebp + 0x10]
mov dword [ebp + 0x18], eax
jmp 0x4b1c2a
add edx, 2
cmp ebx, edx
jae 0x4b24a4
test edi, edi
je 0x4b20f2
mov dword [esp + 0x40], ebp
mov ecx, ebx
mov ebp, dword [esp + 0x30]
jmp 0x4b2489
test edi, edi
je 0x4b23aa
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x4b2481
mov dword [esp + 0x30], ebp
mov ebx, ecx
mov ebp, dword [esp + 0x40]
mov cl, byte [esp + 0x34]
mov eax, dword [esp + 0x5c]
shr dword [esp + 0x30], cl
sub ebx, ebp
test eax, eax
je 0x4b2804
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x30]
sub ebx, 2
shr ebp, 2
mov cx, word [eax + edx*2 + 0x6e]
mov eax, dword [esp + 0x30]
and ecx, 0xffff
and eax, 3
mov dword [esp + 0x30], ebp
add eax, 3
jmp 0x4b2203
xor eax, eax
mov cl, byte [esp + 0x5c]
mov al, byte [esp + 0x5c]
and edx, 0xffff
shr dword [esp + 0x30], cl
sub ebx, eax
mov dword [ebp + 0x40], edx
jmp 0x4b1319
xor ebx, ebx
mov dword [esp + 0x30], 0
mov dword [ebp], 0x1a
mov dword [esp + 0x48], 1
jmp 0x4b14d0
test dl, 2
je 0x4b1d96
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004b03e0
lea edx, [esp + 0x7c]
mov dword [ebp + 0x18], eax
mov byte [esp + 0x7c], 0x1f
mov byte [esp + 0x7d], 0x8b
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004b03e0
xor ebx, ebx
mov dword [ebp + 0x18], eax
mov dword [ebp], 1
mov eax, 1
mov dword [esp + 0x30], 0
jmp switch.0x004b0d15
mov edx, dword [ebp + 0x20]
test edx, edx
je 0x4b25a1
mov eax, dword [esp + 0x30]
shr eax, 8
and eax, 1
mov dword [edx], eax
test dword [esp + 0x30], 0x200
jne 0x4b272b
mov dword [ebp], 2
xor ebx, ebx
mov dword [esp + 0x30], 0
jmp 0x4b1afb
add edx, 3
cmp ebx, edx
jae 0x4b2603
test edi, edi
je 0x4b20f2
mov dword [esp + 0x40], ebp
mov ecx, ebx
mov ebp, dword [esp + 0x30]
jmp 0x4b25e8
test edi, edi
je 0x4b23aa
xor eax, eax
dec edi
mov al, byte [esi]
inc esi
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x4b25e0
mov dword [esp + 0x30], ebp
mov ebx, ecx
mov ebp, dword [esp + 0x40]
mov edx, dword [esp + 0x30]
mov cl, byte [esp + 0x34]
shr edx, cl
mov eax, edx
xor ecx, ecx
shr edx, 3
and eax, 7
mov dword [esp + 0x30], edx
mov edx, 0xfffffffd
sub edx, ebp
add eax, 3
add ebx, edx
jmp 0x4b2203
mov edx, dword [esp + 0x44]
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.004b5530
jmp 0x4b0ca9
mov dword [ebp + 0x68], 0
mov dword [ebp], 0x11
mov dword [esp + 0x5c], 0
jmp 0x4b15f8
mov dl, byte [esp + 0x38]
mov dword [ebp], 0x13
and edx, 0xf
mov dword [ebp + 0x48], edx
jmp 0x4b0e93
mov eax, dword [esp + 0xa0]
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x48], 2
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
mov dword [eax], esi
mov dword [eax + 4], edi
mov eax, dword [esp + 0x30]
mov dword [ebp + 0x3c], ebx
mov dword [ebp + 0x38], eax
jmp 0x4b0c08
mov ebp, dword [esp + 0x38]
cmp dword [ebp], 0x1b
je 0x4b14ba
mov eax, dword [esp + 0x54]
mov dword [ebp + 0x54], 9
mov dword [ebp + 0x6c], eax
mov dword [ebp + 0x4c], eax
lea eax, [ebp + 0x54]
lea edx, [ebp + 0x6c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x58]
mov dword [esp + 8], eax
lea eax, [ebp + 0x70]
mov dword [esp + 0xc], edx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 4], eax
mov dword [esp], 1
call fcn.004b59a0
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x48], eax
test eax, eax
je 0x4b279b
mov edx, dword [esp + 0xa0]
mov eax, 0x1b
mov dword [edx + 0x18], str.invalid_literal_lengths_set
mov dword [ebp], 0x1b
jmp switch.0x004b0d15
mov al, byte [esp + 0x30]
mov dword [esp + 8], 2
mov byte [esp + 0x7c], al
mov eax, dword [esp + 0x30]
shr eax, 8
mov byte [esp + 0x7d], al
lea eax, [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.004b03e0
mov dword [ebp + 0x18], eax
jmp 0x4b25af
shr dword [esp + 0x30], 4
mov ecx, dword [esp + 0x30]
and ecx, 0xf
add ecx, 8
cmp ecx, dword [ebp + 0x24]
jbe 0x4b2822
mov edx, dword [esp + 0xa0]
sub ebx, 4
mov eax, 0x1b
mov dword [edx + 0x18], str.invalid_window_size
mov dword [ebp], 0x1b
jmp switch.0x004b0d15
mov eax, dword [ebp + 0x6c]
mov ecx, dword [esp + 0x58]
mov dword [ebp + 0x50], eax
lea eax, [ebp + 0x58]
mov dword [ebp + 0x58], 6
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
mov eax, dword [ebp + 0x64]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x60]
mov dword [esp], 2
lea eax, [ebp + eax*2 + 0x70]
mov dword [esp + 4], eax
call fcn.004b59a0
mov dword [esp + 0x48], eax
test eax, eax
je 0x4b113a
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [ebp], 0x1b
mov eax, 0x1b
jmp switch.0x004b0d15
mov ebp, dword [esp + 0x38]
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [ebp], 0x1b
jmp 0x4b14ba
mov eax, 1
shl eax, cl
mov dword [ebp + 0x14], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004b5530
mov ecx, dword [esp + 0xa0]
mov dword [ebp + 0x18], eax
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0x30]
and eax, 0x200
mov dword [esp + 0x30], 0
cmp eax, 1
sbb eax, eax
xor ebx, ebx
and eax, 2
add eax, 9
mov dword [ebp], eax
jmp 0x4b0bf7