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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
push ebx
push esi
mov esi, ecx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x18], esi
push edi
test esi, esi
je case.default.0x4e0511
mov ebx, dword [esi + 0x1c]
mov dword [ebp - 0x30], ebx
test ebx, ebx
je case.default.0x4e0511
xor ecx, ecx
cmp dword [esi + 0xc], ecx
je case.default.0x4e0511
cmp dword [esi], ecx
jne 0x4e04d2
cmp dword [esi + 4], ecx
jne case.default.0x4e0511
cmp dword [ebx], 0xb
jne 0x4e04dd
mov dword [ebx], 0xc
mov eax, dword [esi + 0xc]
mov edx, dword [ebx + 0x38]
mov edi, dword [ebx + 0x3c]
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x10], eax
mov eax, dword [esi]
mov dword [ebp - 8], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], ecx
jmp 0x4e05eb
jmp dword [eax*4 + 0x4e188f]
cmp dword [ebx + 8], 0
jne 0x4e0529
mov dword [ebx], 0xc
jmp 0x4e05eb
push 0x10
pop eax
cmp edi, eax
jae 0x4e055e
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
add edi, 8
mov eax, dword [ebp - 8]
mov dword [ebp - 0x14], edi
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
mov dword [ebp - 4], edx
cmp edi, 0x10
jb 0x4e0530
xor ecx, ecx
test byte [ebx + 8], 2
je 0x4e059d
cmp edx, 0x8b1f
jne 0x4e059d
push 0x1f
pop eax
mov dword [ebx + 0x18], ecx
lea edx, [ebp - 0x1c]
push 2
xor ecx, ecx
mov byte [ebp - 0x1c], al
mov byte [ebp - 0x1b], 0x8b
call fcn.004e50b1
pop ecx
xor ecx, ecx
mov dword [ebx + 0x18], eax
mov edx, ecx
mov dword [ebx], 1
mov edi, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], edi
jmp 0x4e05eb
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x10], ecx
test eax, eax
je 0x4e05ab
or dword [eax + 0x30], 0xffffffff
test byte [ebx + 8], 1
je 0x4e0658
movzx ecx, dl
mov eax, edx
shl ecx, 8
xor edx, edx
shr eax, 8
add eax, ecx
push 0x1f
pop ecx
div ecx
test edx, edx
mov edx, dword [ebp - 4]
jne 0x4e0656
mov eax, edx
and al, 0xf
cmp al, 8
je 0x4e0600
mov dword [esi + 0x18], str.unknown_compression_method
mov dword [ebx], 0x1d
xor ecx, ecx
mov eax, dword [ebx]
cmp eax, 0x1e
jbe switch.0x004e0511
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
shr edx, 4
sub edi, 4
mov ecx, edx
mov dword [ebp - 4], edx
and ecx, 0xf
mov dword [ebp - 0x14], edi
add ecx, 8
cmp dword [ebx + 0x24], 0
jne 0x4e0648
mov dword [ebx + 0x24], ecx
xor edi, edi
shr edx, 8
inc edi
not edx
mov eax, edi
mov dword [ebx + 0x18], edi
and edx, 2
shl eax, cl
or edx, 9
mov dword [ebx + 0x14], eax
mov dword [esi + 0x30], edi
xor ecx, ecx
mov dword [ebx], edx
mov edi, ecx
mov edx, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], edi
jmp 0x4e05eb
cmp ecx, dword [ebx + 0x24]
jbe 0x4e061d
mov dword [esi + 0x18], str.invalid_window_size
jmp 0x4e05e3
xor ecx, ecx
mov dword [esi + 0x18], str.incorrect_header_check
mov dword [ebx], 0x1d
jmp 0x4e05eb
push 0x10
pop eax
cmp edi, eax
jae 0x4e069e
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
add edi, 8
mov eax, dword [ebp - 8]
push 0x10
mov dword [ebp - 0x14], edi
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
pop eax
mov dword [ebp - 4], edx
cmp edi, eax
jb 0x4e066e
xor ecx, ecx
mov dword [ebx + 0x10], edx
cmp dl, 8
je 0x4e06af
mov dword [esi + 0x18], str.unknown_compression_method
jmp 0x4e065f
test edx, 0xe000
je 0x4e06c0
mov dword [esi + 0x18], str.unknown_header_flags_set
jmp 0x4e065f
mov ecx, dword [ebx + 0x20]
test ecx, ecx
je 0x4e06d1
mov eax, edx
shr eax, 8
and eax, 1
mov dword [ecx], eax
test dword [ebx + 0x10], 0x200
je 0x4e06f4
mov ecx, dword [ebx + 0x18]
mov byte [ebp - 0x1c], dl
shr edx, 8
mov byte [ebp - 0x1b], dl
lea edx, [ebp - 0x1c]
push 2
call fcn.004e50b1
pop ecx
mov dword [ebx + 0x18], eax
xor eax, eax
mov dword [ebx], 2
mov edx, eax
mov edi, eax
jmp 0x4e0723
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
add edi, 8
mov dword [ebp - 4], edx
cmp edi, 0x20
jb 0x4e0702
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x4e0735
mov dword [eax + 4], edx
test dword [ebx + 0x10], 0x200
je 0x4e0768
mov ecx, dword [ebx + 0x18]
mov eax, edx
shr eax, 8
mov byte [ebp - 0x1b], al
mov eax, edx
mov byte [ebp - 0x1c], dl
shr edx, 0x18
shr eax, 0x10
mov byte [ebp - 0x19], dl
lea edx, [ebp - 0x1c]
push 4
mov byte [ebp - 0x1a], al
call fcn.004e50b1
pop ecx
mov dword [ebx + 0x18], eax
xor eax, eax
mov dword [ebx], 3
mov edx, eax
mov edi, eax
jmp 0x4e0797
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
add edi, 8
mov dword [ebp - 4], edx
push 0x10
pop eax
cmp edi, eax
jb 0x4e0776
mov ecx, dword [ebx + 0x20]
test ecx, ecx
je 0x4e07b9
movzx eax, dl
mov dword [ecx + 8], eax
mov ecx, edx
mov eax, dword [ebx + 0x20]
shr ecx, 8
mov dword [eax + 0xc], ecx
test dword [ebx + 0x10], 0x200
je 0x4e07dc
mov ecx, dword [ebx + 0x18]
mov byte [ebp - 0x1c], dl
shr edx, 8
mov byte [ebp - 0x1b], dl
lea edx, [ebp - 0x1c]
push 2
call fcn.004e50b1
pop ecx
mov dword [ebx + 0x18], eax
xor ecx, ecx
mov dword [ebx], 4
mov edx, ecx
mov edi, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], edi
test dword [ebx + 0x10], 0x400
jne 0x4e0884
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x4e0805
mov dword [eax + 0x10], ecx
mov dword [ebx], 5
test dword [ebx + 0x10], 0x400
je 0x4e0918
mov ecx, dword [ebx + 0x40]
mov eax, dword [ebp - 0xc]
cmp ecx, eax
cmova ecx, eax
mov dword [ebp - 0x3c], ecx
test ecx, ecx
je 0x4e090d
mov edx, dword [ebx + 0x20]
test edx, edx
je 0x4e08df
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x40], eax
test eax, eax
je 0x4e08df
mov eax, dword [edx + 0x14]
sub eax, dword [ebx + 0x40]
mov edx, dword [edx + 0x18]
mov dword [ebp - 0x34], eax
add eax, ecx
cmp eax, edx
mov eax, dword [ebp - 0x34]
jbe 0x4e08ca
sub edx, eax
jmp 0x4e08cc
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
mov dword [ebp - 4], edx
add edi, 8
push 0x10
pop eax
cmp edi, eax
jb 0x4e0860
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x40], edx
test eax, eax
je 0x4e0898
mov dword [eax + 0x14], edx
test dword [ebx + 0x10], 0x200
je 0x4e08bb
mov ecx, dword [ebx + 0x18]
mov byte [ebp - 0x1c], dl
shr edx, 8
mov byte [ebp - 0x1b], dl
lea edx, [ebp - 0x1c]
push 2
call fcn.004e50b1
pop ecx
mov dword [ebx + 0x18], eax
xor ecx, ecx
mov edi, ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 0x14], edi
jmp 0x4e0805
mov edx, ecx
add eax, dword [ebp - 0x40]
push edx
push dword [ebp - 8]
push eax
call fcn.005447e0
mov ecx, dword [ebp - 0x3c]
add esp, 0xc
test dword [ebx + 0x10], 0x200
je 0x4e08fe
mov eax, dword [ebp - 8]
test eax, eax
je 0x4e08fb
push ecx
mov ecx, dword [ebx + 0x18]
mov edx, eax
call fcn.004e50b1
pop ecx
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 0x3c]
sub dword [ebp - 0xc], eax
add dword [ebp - 8], eax
sub dword [ebx + 0x40], eax
mov eax, dword [ebp - 0xc]
xor ecx, ecx
cmp dword [ebx + 0x40], ecx
jne 0x4e0c5b
mov dword [ebx + 0x40], ecx
mov dword [ebx], 6
test dword [ebx + 0x10], 0x800
je 0x4e09bb
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
mov edi, dword [ebp - 8]
mov esi, eax
movzx eax, byte [ecx + edi]
inc ecx
mov dword [ebp - 0x34], eax
mov eax, dword [ebx + 0x20]
mov dword [ebp - 0x3c], ecx
test eax, eax
je 0x4e096e
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x4e096e
mov edx, dword [ebx + 0x40]
cmp edx, dword [eax + 0x20]
jae 0x4e096e
mov eax, dword [eax + 0x1c]
mov ecx, dword [ebp - 0x34]
mov byte [eax + edx], cl
inc dword [ebx + 0x40]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x34]
test edx, edx
je 0x4e0979
cmp ecx, esi
jb 0x4e093e
test dword [ebx + 0x10], 0x200
mov edi, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
je 0x4e09a4
mov eax, dword [ebp - 8]
test eax, eax
je 0x4e09a1
push ecx
mov ecx, dword [ebx + 0x18]
mov edx, eax
call fcn.004e50b1
mov edx, dword [ebp - 0x34]
pop ecx
mov ecx, dword [ebp - 0x3c]
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 0xc]
add dword [ebp - 8], ecx
sub eax, ecx
mov dword [ebp - 0xc], eax
test edx, edx
jne 0x4e0c5b
xor ecx, ecx
jmp 0x4e09c5
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x4e09c5
mov dword [eax + 0x1c], ecx
mov dword [ebx + 0x40], ecx
mov dword [ebx], 7
test dword [ebx + 0x10], 0x1000
je 0x4e0a66
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
mov edi, dword [ebp - 8]
mov esi, eax
movzx eax, byte [ecx + edi]
inc ecx
mov dword [ebp - 0x34], eax
mov eax, dword [ebx + 0x20]
mov dword [ebp - 0x3c], ecx
test eax, eax
je 0x4e0a1b
mov edx, dword [eax + 0x24]
test edx, edx
je 0x4e0a1b
mov edx, dword [ebx + 0x40]
cmp edx, dword [eax + 0x28]
jae 0x4e0a1b
mov eax, dword [eax + 0x24]
mov ecx, dword [ebp - 0x34]
mov byte [eax + edx], cl
inc dword [ebx + 0x40]
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x34]
test edx, edx
je 0x4e0a26
cmp ecx, esi
jb 0x4e09eb
test dword [ebx + 0x10], 0x200
mov edi, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
je 0x4e0a51
mov eax, dword [ebp - 8]
test eax, eax
je 0x4e0a4e
push ecx
mov ecx, dword [ebx + 0x18]
mov edx, eax
call fcn.004e50b1
mov edx, dword [ebp - 0x34]
pop ecx
mov ecx, dword [ebp - 0x3c]
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 0xc]
add dword [ebp - 8], ecx
sub eax, ecx
mov dword [ebp - 0xc], eax
test edx, edx
jne 0x4e0c5b
jmp 0x4e0a70
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x4e0a70
mov dword [eax + 0x24], ecx
mov edx, dword [ebp - 4]
mov dword [ebx], 8
test dword [ebx + 0x10], 0x200
je 0x4e0ad2
jmp 0x4e0aab
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
add edi, 8
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], edi
push 0x10
pop eax
cmp edi, eax
jb 0x4e0a84
movzx eax, word [ebx + 0x18]
cmp edx, eax
je 0x4e0ac6
mov dword [esi + 0x18], str.header_crc_mismatch
jmp 0x4e05e3
xor eax, eax
mov edx, eax
mov edi, eax
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], edi
mov ecx, dword [ebx + 0x20]
test ecx, ecx
je 0x4e0aef
mov eax, dword [ebx + 0x10]
sar eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [ebx + 0x20]
mov dword [eax + 0x30], 1
xor ecx, ecx
mov dword [ebx + 0x18], ecx
mov dword [esi + 0x30], ecx
mov dword [ebx], 0xb
jmp 0x4e05eb
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
mov dword [ebp - 4], edx
add edi, 8
cmp edi, 0x20
jb 0x4e0b02
mov ecx, edx
mov edi, 0xff00
mov eax, edx
and ecx, edi
shl eax, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
and eax, edi
shl ecx, 8
shr edx, 0x18
add eax, ecx
add eax, edx
xor ecx, ecx
mov dword [ebx + 0x18], eax
mov edx, ecx
mov dword [esi + 0x30], eax
mov edi, ecx
mov dword [ebp - 4], edx
mov dword [ebx], 0xa
cmp dword [ebx + 0xc], ecx
je 0x4e17a0
xor eax, eax
inc eax
mov dword [ebx + 0x18], eax
mov dword [esi + 0x30], eax
mov dword [ebx], 0xb
mov eax, dword [ebp - 0x2c]
cmp eax, 5
je 0x4e0c58
cmp eax, 6
je 0x4e0c58
cmp dword [ebx + 4], ecx
je 0x4e0bad
mov ecx, edi
mov dword [ebx], 0x1a
and ecx, 7
shr edx, cl
sub edi, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], edi
jmp 0x4e05e9
cmp edi, 3
jae 0x4e0bdd
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
add edi, 8
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
mov dword [ebp - 4], edx
cmp edi, 3
jb 0x4e0bb2
xor ecx, ecx
mov eax, edx
shr edx, 1
and eax, 1
mov dword [ebx + 4], eax
mov eax, edx
and eax, 3
sub eax, ecx
je 0x4e0cca
sub eax, 1
je 0x4e0c23
sub eax, 1
je 0x4e0c19
sub eax, 1
jne 0x4e0cd0
mov dword [esi + 0x18], str.invalid_block_type
mov dword [ebx], 0x1d
jmp 0x4e0cd0
push 0x10
pop eax
mov dword [ebx], eax
jmp 0x4e0cd0
cmp dword [ebp - 0x2c], 6
mov dword [ebx + 0x4c], 0x68c0d8
mov dword [ebx + 0x54], 9
mov dword [ebx + 0x50], 0x68c908
mov dword [ebx + 0x58], 5
mov dword [ebx], 0x13
jne 0x4e0cd0
shr edx, 2
sub edi, 3
mov dword [ebp - 4], edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x18]
mov edx, dword [ebp - 0x20]
mov dword [esi + 0x10], ecx
mov ecx, dword [ebp - 8]
mov dword [esi + 4], eax
mov eax, dword [ebp - 4]
mov dword [esi + 0xc], edx
mov dword [esi], ecx
mov dword [ebx + 0x3c], edi
xor edi, edi
mov dword [ebx + 0x38], eax
mov eax, dword [ebp - 0x24]
cmp dword [ebx + 0x28], edi
jne 0x4e0ca6
cmp eax, dword [esi + 0x10]
je 0x4e17e2
cmp dword [ebx], 0x1d
jge 0x4e17e2
cmp dword [ebx], 0x1a
jl 0x4e0ca6
cmp dword [ebp - 0x2c], 4
je 0x4e17e2
sub eax, dword [esi + 0x10]
mov ecx, esi
mov edx, dword [esi + 0xc]
push eax
call fcn.004e03c6
pop ecx
test eax, eax
je 0x4e17df
mov dword [ebx], 0x1e
push 0xfffffffffffffffc
jmp 0x4e05f8
mov dword [ebx], 0xd
shr edx, 2
sub edi, 3
jmp 0x4e0640
mov ecx, edi
and ecx, 7
shr edx, cl
sub edi, ecx
jmp 0x4e0d07
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
add edi, 8
mov dword [ebp - 0x14], edi
mov dword [ebp - 4], edx
cmp edi, 0x20
jb 0x4e0ce6
mov eax, edx
movzx ecx, dx
not eax
shr eax, 0x10
cmp ecx, eax
je 0x4e0d2c
mov dword [esi + 0x18], str.invalid_stored_block_lengths
jmp 0x4e05e3
mov dword [ebx + 0x40], ecx
xor ecx, ecx
cmp dword [ebp - 0x2c], 6
mov edx, ecx
mov edi, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], edi
mov dword [ebx], 0xe
je 0x4e0c58
mov dword [ebx], 0xf
mov esi, dword [ebx + 0x40]
test esi, esi
je 0x4e0d99
mov eax, dword [ebp - 0xc]
cmp esi, eax
mov ecx, dword [ebp - 0x10]
cmova esi, eax
cmp esi, ecx
cmova esi, ecx
test esi, esi
je 0x4e0c5e
push esi
push dword [ebp - 8]
push dword [ebp - 0x20]
call fcn.005447e0
sub dword [ebp - 0xc], esi
add esp, 0xc
add dword [ebp - 8], esi
sub dword [ebp - 0x10], esi
add dword [ebp - 0x20], esi
sub dword [ebx + 0x40], esi
mov edx, dword [ebp - 4]
mov esi, dword [ebp - 0x18]
jmp 0x4e05e9
mov dword [ebx], 0xb
mov esi, dword [ebp - 0x18]
jmp 0x4e05eb
cmp edi, 0xe
jae 0x4e0dd7
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
add edi, 8
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
mov dword [ebp - 4], edx
cmp edi, 0xe
jb 0x4e0dac
xor ecx, ecx
mov eax, edx
sub edi, 0xe
and eax, 0x1f
shr edx, 5
add eax, 0x101
mov dword [ebp - 0x14], edi
mov dword [ebx + 0x60], eax
mov eax, edx
and eax, 0x1f
shr edx, 5
inc eax
mov dword [ebx + 0x64], eax
mov eax, edx
and eax, 0xf
shr edx, 4
add eax, 4
mov dword [ebp - 4], edx
cmp dword [ebx + 0x60], 0x11e
mov dword [ebx + 0x5c], eax
ja 0x4e0e23
cmp dword [ebx + 0x64], 0x1e
ja 0x4e0e23
push 0x11
pop eax
mov dword [ebx + 0x68], ecx
mov dword [ebx], eax
jmp case.0x4e0511.17
mov dword [esi + 0x18], str.too_many_length_or_distance_symbols
jmp 0x4e065f
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
dec eax
mov ecx, edi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 8]
mov dword [ebp - 4], edx
add edi, 8
cmp edi, 3
jb 0x4e0e2f
mov eax, dword [ebx + 0x68]
mov ecx, edx
and ecx, 7
shr edx, 3
mov dword [ebp - 4], edx
movzx eax, word [eax*2 + 0x68c8e0]
mov word [ebx + eax*2 + 0x70], cx
inc dword [ebx + 0x68]
sub edi, 3
mov dword [ebp - 0x14], edi
mov eax, dword [ebx + 0x68]
cmp eax, dword [ebx + 0x5c]
jb 0x4e0e53
jmp 0x4e0e9b
mov eax, dword [ebx + 0x68]
xor ecx, ecx
movzx eax, word [eax*2 + 0x68c8e0]
mov word [ebx + eax*2 + 0x70], cx
inc dword [ebx + 0x68]
cmp dword [ebx + 0x68], 0x13
jb 0x4e0e86
lea eax, [ebx + 0x530]
lea ecx, [ebx + 0x6c]
mov dword [ebx + 0x4c], eax
mov dword [ecx], eax
lea edx, [ebx + 0x54]
lea eax, [ebx + 0x2f0]
mov dword [edx], 7
push eax
push edx
push ecx
push 0x13
lea edx, [ebx + 0x70]
xor ecx, ecx
call fcn.004e4d20
add esp, 0x10
mov dword [ebp - 0x28], eax
test eax, eax
je 0x4e0eec
mov dword [esi + 0x18], str.invalid_code_lengths_set
mov edx, dword [ebp - 4]
mov dword [ebx], 0x1d
jmp 0x4e05e9
and dword [ebx + 0x68], 0
mov dword [ebx], 0x12
mov eax, dword [ebx + 0x64]
add eax, dword [ebx + 0x60]
cmp dword [ebx + 0x68], eax
jae 0x4e10e8
lea esi, [ebx + 0x54]
jmp 0x4e0f2d
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4e0c5b
mov edx, dword [ebp - 8]
dec eax
mov dword [ebp - 0xc], eax
mov ecx, edi
movzx eax, byte [edx]
shl eax, cl
add dword [ebp - 4], eax
inc edx
mov dword [ebp - 8], edx
add edi, 8
mov ecx, dword [esi]
xor edx, edx
mov eax, dword [ebx + 0x4c]
inc edx
shl edx, cl
dec edx
and edx, dword [ebp - 4]
mov eax, dword [eax + edx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [ebp - 0x3c], eax
cmp ecx, edi
ja 0x4e0f0a
mov edx, eax
push 0x10
shr edx, 0x10
pop ecx
cmp dx, cx
jae 0x4e0f7b
shr eax, 8
movzx ecx, al
mov eax, dword [ebx + 0x68]
sub edi, ecx
shr dword [ebp - 4], cl
mov dword [ebp - 0x14], edi
mov word [ebx + eax*2 + 0x70], dx
inc dword [ebx + 0x68]
mov ecx, dword [ebx + 0x68]
jmp 0x4e10b6
jne 0x4e0fe6
mov ecx, eax
shr ecx, 8
movzx esi, cl
add esi, 2
jmp 0x4e0fac
mov ecx, dword [ebp - 0xc]
test ecx, ecx
invalid
invalid