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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, dword [0x45a620]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, ecx
mov dword [ebp - 0x30], esi
push edi
test esi, esi
je case.default.0x4205e5
mov ebx, dword [esi + 0x1c]
mov dword [ebp - 0x3c], ebx
test ebx, ebx
je case.default.0x4205e5
xor ecx, ecx
cmp dword [esi + 0xc], ecx
je case.default.0x4205e5
cmp dword [esi], ecx
jne 0x4205a6
cmp dword [esi + 4], ecx
jne case.default.0x4205e5
cmp dword [ebx], 0xb
jne 0x4205b1
mov dword [ebx], 0xc
mov eax, dword [esi + 0xc]
mov edx, dword [ebx + 0x38]
mov edi, dword [ebx + 0x3c]
mov dword [ebp - 0x24], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x18], eax
mov eax, dword [esi]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x38], ecx
jmp 0x4206bf
jmp dword [eax*4 + 0x4218e8]
cmp dword [ebx + 8], 0
jne 0x4205fd
mov dword [ebx], 0xc
jmp 0x4206bf
push 0x10
pop eax
cmp edi, eax
jae 0x420632
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
add edi, 8
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x1c], edi
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
mov dword [ebp - 0xc], edx
cmp edi, 0x10
jb 0x420604
xor ecx, ecx
test byte [ebx + 8], 2
je 0x420671
cmp edx, 0x8b1f
jne 0x420671
push 0x1f
pop eax
mov dword [ebx + 0x18], ecx
lea edx, [ebp - 8]
push 2
xor ecx, ecx
mov byte [ebp - 8], al
mov byte [ebp - 7], 0x8b
call fcn.0041f0be
pop ecx
xor ecx, ecx
mov dword [ebx + 0x18], eax
mov edx, ecx
mov dword [ebx], 1
mov edi, ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
jmp 0x4206bf
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x10], ecx
test eax, eax
je 0x42067f
or dword [eax + 0x30], 0xffffffff
test byte [ebx + 8], 1
je 0x420736
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 - 0xc]
jne 0x420734
mov eax, edx
and al, 0xf
cmp al, 8
je 0x4206de
mov dword [esi + 0x18], str.unknown_compression_method
mov dword [ebx], 0x1d
xor ecx, ecx
mov eax, dword [ebx]
cmp eax, 0x1e
jbe switch.0x004205e5
push 0xfffffffffffffffe
pop eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004273bf
mov esp, ebp
pop ebp
ret
shr edx, 4
sub edi, 4
mov ecx, edx
mov dword [ebp - 0xc], edx
and ecx, 0xf
mov dword [ebp - 0x1c], edi
add ecx, 8
cmp dword [ebx + 0x24], 0
jne 0x420726
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 - 0xc], edx
mov dword [ebp - 0x1c], edi
jmp 0x4206bf
cmp ecx, dword [ebx + 0x24]
jbe 0x4206fb
mov dword [esi + 0x18], str.invalid_window_size
jmp 0x4206b7
xor ecx, ecx
mov dword [esi + 0x18], str.incorrect_header_check
mov dword [ebx], 0x1d
jmp 0x4206bf
push 0x10
pop eax
cmp edi, eax
jae 0x42077f
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
add edi, 8
mov eax, dword [ebp - 0x10]
push 0x10
mov dword [ebp - 0x1c], edi
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
pop eax
mov dword [ebp - 0xc], edx
cmp edi, eax
jb 0x42074f
xor ecx, ecx
mov dword [ebx + 0x10], edx
cmp dl, 8
je 0x420790
mov dword [esi + 0x18], str.unknown_compression_method
jmp 0x42073d
test edx, 0xe000
je 0x4207a1
mov dword [esi + 0x18], str.unknown_header_flags_set
jmp 0x42073d
mov ecx, dword [ebx + 0x20]
test ecx, ecx
je 0x4207b2
mov eax, edx
shr eax, 8
and eax, 1
mov dword [ecx], eax
test dword [ebx + 0x10], 0x200
je 0x4207d5
mov ecx, dword [ebx + 0x18]
mov byte [ebp - 8], dl
shr edx, 8
mov byte [ebp - 7], dl
lea edx, [ebp - 8]
push 2
call fcn.0041f0be
pop ecx
mov dword [ebx + 0x18], eax
xor eax, eax
mov dword [ebx], 2
mov edx, eax
mov edi, eax
jmp 0x420804
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
add edi, 8
mov dword [ebp - 0xc], edx
cmp edi, 0x20
jb 0x4207e3
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x420816
mov dword [eax + 4], edx
test dword [ebx + 0x10], 0x200
je 0x420849
mov ecx, dword [ebx + 0x18]
mov eax, edx
shr eax, 8
mov byte [ebp - 7], al
mov eax, edx
mov byte [ebp - 8], dl
shr edx, 0x18
shr eax, 0x10
mov byte [ebp - 5], dl
lea edx, [ebp - 8]
push 4
mov byte [ebp - 6], al
call fcn.0041f0be
pop ecx
mov dword [ebx + 0x18], eax
xor eax, eax
mov dword [ebx], 3
mov edx, eax
mov edi, eax
jmp 0x420878
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
add edi, 8
mov dword [ebp - 0xc], edx
push 0x10
pop eax
cmp edi, eax
jb 0x420857
mov ecx, dword [ebx + 0x20]
test ecx, ecx
je 0x42089a
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 0x4208bd
mov ecx, dword [ebx + 0x18]
mov byte [ebp - 8], dl
shr edx, 8
mov byte [ebp - 7], dl
lea edx, [ebp - 8]
push 2
call fcn.0041f0be
pop ecx
mov dword [ebx + 0x18], eax
xor ecx, ecx
mov dword [ebx], 4
mov edx, ecx
mov edi, ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
test dword [ebx + 0x10], 0x400
jne 0x420965
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x4208e6
mov dword [eax + 0x10], ecx
mov dword [ebx], 5
test dword [ebx + 0x10], 0x400
je 0x4209f9
mov ecx, dword [ebx + 0x40]
mov eax, dword [ebp - 0x14]
cmp ecx, eax
cmova ecx, eax
mov dword [ebp - 0x2c], ecx
test ecx, ecx
je 0x4209ee
mov edx, dword [ebx + 0x20]
test edx, edx
je 0x4209c0
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x28], eax
test eax, eax
je 0x4209c0
mov eax, dword [edx + 0x14]
sub eax, dword [ebx + 0x40]
mov edx, dword [edx + 0x18]
mov dword [ebp - 0x20], eax
add eax, ecx
cmp eax, edx
mov eax, dword [ebp - 0x20]
jbe 0x4209ab
sub edx, eax
jmp 0x4209ad
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
mov dword [ebp - 0xc], edx
add edi, 8
push 0x10
pop eax
cmp edi, eax
jb 0x420941
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x40], edx
test eax, eax
je 0x420979
mov dword [eax + 0x14], edx
test dword [ebx + 0x10], 0x200
je 0x42099c
mov ecx, dword [ebx + 0x18]
mov byte [ebp - 8], dl
shr edx, 8
mov byte [ebp - 7], dl
lea edx, [ebp - 8]
push 2
call fcn.0041f0be
pop ecx
mov dword [ebx + 0x18], eax
xor ecx, ecx
mov edi, ecx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x1c], edi
jmp 0x4208e6
mov edx, ecx
add eax, dword [ebp - 0x28]
push edx
push dword [ebp - 0x10]
push eax
call fcn.0042b580
mov ecx, dword [ebp - 0x2c]
add esp, 0xc
test dword [ebx + 0x10], 0x200
je 0x4209df
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x4209dc
push ecx
mov ecx, dword [ebx + 0x18]
mov edx, eax
call fcn.0041f0be
pop ecx
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 0x2c]
sub dword [ebp - 0x14], eax
add dword [ebp - 0x10], eax
sub dword [ebx + 0x40], eax
mov eax, dword [ebp - 0x14]
xor ecx, ecx
cmp dword [ebx + 0x40], ecx
jne 0x420b3d
mov dword [ebx + 0x40], ecx
mov dword [ebx], 6
test dword [ebx + 0x10], 0x800
je 0x420a9c
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
mov edi, dword [ebp - 0x10]
mov esi, eax
movzx eax, byte [ecx + edi]
inc ecx
mov dword [ebp - 0x28], eax
mov eax, dword [ebx + 0x20]
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x420a4f
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x420a4f
mov edx, dword [ebx + 0x40]
cmp edx, dword [eax + 0x20]
jae 0x420a4f
mov eax, dword [eax + 0x1c]
mov ecx, dword [ebp - 0x28]
mov byte [eax + edx], cl
inc dword [ebx + 0x40]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
test edx, edx
je 0x420a5a
cmp ecx, esi
jb 0x420a1f
test dword [ebx + 0x10], 0x200
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x30]
je 0x420a85
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x420a82
push ecx
mov ecx, dword [ebx + 0x18]
mov edx, eax
call fcn.0041f0be
mov edx, dword [ebp - 0x28]
pop ecx
mov ecx, dword [ebp - 0x20]
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 0x14]
add dword [ebp - 0x10], ecx
sub eax, ecx
mov dword [ebp - 0x14], eax
test edx, edx
jne 0x420b3d
xor ecx, ecx
jmp 0x420aa6
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x420aa6
mov dword [eax + 0x1c], ecx
mov dword [ebx + 0x40], ecx
mov dword [ebx], 7
test dword [ebx + 0x10], 0x1000
je 0x420ba8
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
mov edi, dword [ebp - 0x10]
mov esi, eax
movzx eax, byte [ecx + edi]
inc ecx
mov dword [ebp - 0x28], eax
mov eax, dword [ebx + 0x20]
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x420af8
mov edx, dword [eax + 0x24]
test edx, edx
je 0x420af8
mov edx, dword [ebx + 0x40]
cmp edx, dword [eax + 0x28]
jae 0x420af8
mov eax, dword [eax + 0x24]
mov ecx, dword [ebp - 0x28]
mov byte [eax + edx], cl
inc dword [ebx + 0x40]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
test edx, edx
je 0x420b03
cmp ecx, esi
jb 0x420ac8
test dword [ebx + 0x10], 0x200
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x30]
je 0x420b2e
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x420b2b
push ecx
mov ecx, dword [ebx + 0x18]
mov edx, eax
call fcn.0041f0be
mov edx, dword [ebp - 0x28]
pop ecx
mov ecx, dword [ebp - 0x20]
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 0x14]
add dword [ebp - 0x10], ecx
sub eax, ecx
mov dword [ebp - 0x14], eax
test edx, edx
je 0x420bb2
mov ecx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x24]
mov dword [esi + 0x10], ecx
mov ecx, dword [ebp - 0x10]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0xc]
mov dword [esi + 0xc], edx
mov dword [esi], ecx
mov dword [ebx + 0x38], eax
xor eax, eax
mov dword [ebx + 0x3c], edi
mov edi, dword [ebp - 0x34]
cmp dword [ebx + 0x28], eax
jne 0x420b82
cmp edi, dword [esi + 0x10]
je 0x421860
cmp dword [ebx], 0x1d
jge 0x421860
cmp dword [ebx], 0x1a
jge 0x421860
mov edx, dword [esi + 0xc]
mov eax, edi
sub eax, dword [esi + 0x10]
mov ecx, esi
push eax
call fcn.00420493
pop ecx
test eax, eax
je 0x42185e
mov dword [ebx], 0x1e
push 0xfffffffffffffffc
jmp 0x4206cc
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x420bb2
mov dword [eax + 0x24], ecx
mov edx, dword [ebp - 0xc]
mov dword [ebx], 8
test dword [ebx + 0x10], 0x200
je 0x420c14
jmp 0x420bed
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
add edi, 8
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
push 0x10
pop eax
cmp edi, eax
jb 0x420bc6
movzx eax, word [ebx + 0x18]
cmp edx, eax
je 0x420c08
mov dword [esi + 0x18], str.header_crc_mismatch
jmp 0x4206b7
xor eax, eax
mov edx, eax
mov edi, eax
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
mov ecx, dword [ebx + 0x20]
test ecx, ecx
je 0x420c31
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 0x4206bf
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
mov dword [ebp - 0xc], edx
add edi, 8
cmp edi, 0x20
jb 0x420c44
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 - 0xc], edx
mov dword [ebx], 0xa
cmp dword [ebx + 0xc], ecx
je 0x421814
xor eax, eax
inc eax
mov dword [ebx + 0x18], eax
mov dword [esi + 0x30], eax
mov dword [ebx], 0xb
cmp dword [ebx + 4], ecx
je 0x420cda
mov ecx, edi
mov dword [ebx], 0x1a
and ecx, 7
shr edx, cl
sub edi, ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
jmp 0x4206bd
cmp edi, 3
jae 0x420d0a
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
add edi, 8
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
mov dword [ebp - 0xc], edx
cmp edi, 3
jb 0x420cdf
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 0x420d60
dec eax
je 0x420d3c
dec eax
je 0x420d35
dec eax
jne 0x420d66
mov dword [esi + 0x18], str.invalid_block_type
mov dword [ebx], 0x1d
jmp 0x420d66
push 0x10
pop eax
mov dword [ebx], eax
jmp 0x420d66
mov dword [ebx + 0x4c], 0x450868
mov dword [ebx + 0x54], 9
mov dword [ebx + 0x50], 0x451098
mov dword [ebx + 0x58], 5
mov dword [ebx], 0x13
jmp 0x420d66
mov dword [ebx], 0xd
shr edx, 2
sub edi, 3
jmp 0x42071e
mov ecx, edi
and ecx, 7
shr edx, cl
sub edi, ecx
jmp 0x420d9d
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
add edi, 8
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0xc], edx
cmp edi, 0x20
jb 0x420d7c
mov eax, edx
mov ecx, edx
not eax
and ecx, 0xffff
shr eax, 0x10
cmp ecx, eax
je 0x420dc7
mov dword [esi + 0x18], str.invalid_stored_block_lengths
jmp 0x4206b7
mov dword [ebx + 0x40], ecx
xor ecx, ecx
mov edx, ecx
mov dword [ebx], 0xe
mov edi, ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
mov dword [ebx], 0xf
mov eax, dword [ebx + 0x40]
test eax, eax
je 0x420c39
cmp eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
cmova eax, dword [ebp - 0x14]
cmp eax, ecx
cmova eax, ecx
mov dword [ebp - 0x20], eax
test eax, eax
je 0x421856
push eax
push dword [ebp - 0x10]
push dword [ebp - 0x24]
call fcn.0042b580
mov eax, dword [ebp - 0x20]
add esp, 0xc
sub dword [ebp - 0x14], eax
add dword [ebp - 0x10], eax
sub dword [ebp - 0x18], eax
add dword [ebp - 0x24], eax
sub dword [ebx + 0x40], eax
mov edx, dword [ebp - 0xc]
jmp 0x4206bd
cmp edi, 0xe
jae 0x420e60
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
add edi, 8
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
mov dword [ebp - 0xc], edx
cmp edi, 0xe
jb 0x420e35
xor ecx, ecx
mov eax, edx
sub edi, 0xe
and eax, 0x1f
shr edx, 5
add eax, 0x101
mov dword [ebp - 0x1c], 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 - 0xc], edx
cmp dword [ebx + 0x60], 0x11e
mov dword [ebx + 0x5c], eax
ja 0x420eac
cmp dword [ebx + 0x64], 0x1e
ja 0x420eac
push 0x11
pop eax
mov dword [ebx + 0x68], ecx
mov dword [ebx], eax
jmp case.0x4205e5.17
mov dword [esi + 0x18], str.too_many_length_or_distance_symbols
jmp 0x42073d
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
mov dword [ebp - 0xc], edx
add edi, 8
cmp edi, 3
jb 0x420eb8
mov eax, dword [ebx + 0x68]
mov ecx, edx
and ecx, 7
shr edx, 3
mov dword [ebp - 0xc], edx
movzx eax, word [eax*2 + 0x451070]
mov word [ebx + eax*2 + 0x70], cx
inc dword [ebx + 0x68]
sub edi, 3
mov dword [ebp - 0x1c], edi
mov eax, dword [ebx + 0x68]
cmp eax, dword [ebx + 0x5c]
jb 0x420edc
jmp 0x420f24
mov eax, dword [ebx + 0x68]
xor ecx, ecx
movzx eax, word [eax*2 + 0x451070]
mov word [ebx + eax*2 + 0x70], cx
inc dword [ebx + 0x68]
cmp dword [ebx + 0x68], 0x13
jb 0x420f0f
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.004219a1
add esp, 0x10
mov dword [ebp - 0x38], eax
test eax, eax
je 0x420f72
mov dword [esi + 0x18], str.invalid_code_lengths_set
mov dword [ebx], 0x1d
jmp 0x420e28
and dword [ebx + 0x68], 0
mov dword [ebx], 0x12
jmp case.0x4205e5.18
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
mov edx, dword [ebp - 0x10]
dec eax
mov dword [ebp - 0x14], eax
mov ecx, edi
movzx eax, byte [edx]
shl eax, cl
add dword [ebp - 0xc], eax
inc edx
mov dword [ebp - 0x10], edx
add edi, 8
mov ecx, dword [ebx + 0x54]
xor edx, edx
mov eax, dword [ebx + 0x4c]
inc edx
shl edx, cl
dec edx
and edx, dword [ebp - 0xc]
mov eax, dword [eax + edx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [ebp - 0x20], eax
cmp ecx, edi
ja 0x420f81
mov edx, eax
push 0x10
shr edx, 0x10
pop ecx
cmp dx, cx
jae 0x420ff0
shr eax, 8
movzx ecx, al
mov eax, dword [ebp - 0x28]
sub edi, ecx
shr dword [ebp - 0xc], cl
mov dword [ebp - 0x1c], edi
mov word [ebx + eax*2 + 0x70], dx
inc dword [ebx + 0x68]
jmp case.0x4205e5.18
jne 0x421064
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, 2
mov dword [ebp - 0x20], ecx
cmp edi, ecx
jae 0x42102b
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x421849
dec ecx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx]
mov ecx, edi
shl edx, cl
add edi, 8
add dword [ebp - 0xc], edx
inc dword [ebp - 0x10]
cmp edi, dword [ebp - 0x20]
jb 0x421004
mov edx, dword [ebp - 0xc]
movzx ecx, ah
mov eax, dword [ebp - 0x28]
sub edi, ecx
shr edx, cl
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
test eax, eax
je 0x421148
movzx eax, word [ebx + eax*2 + 0x6e]
mov ecx, edx
and ecx, 3
shr edx, 2
add ecx, 3
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x2c], ecx
sub edi, 2
jmp 0x421105
mov edx, dword [ebp - 0xc]
push 0x11
pop ecx
cmp word [ebp - 0x1e], cx
movzx ecx, ah
jne 0x4210b7
mov dword [ebp - 0x20], ecx
lea eax, [ecx + 3]
cmp edi, eax
jae 0x4210a6
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
mov ecx, dword [ebp - 0x20]
add edx, eax
inc dword [ebp - 0x10]
add edi, 8
mov dword [ebp - 0xc], edx
jmp 0x421076
shr edx, cl
mov eax, edx
and eax, 7
add eax, 3
shr edx, 3
push 0xfffffffffffffffd
jmp 0x4210f9
mov dword [ebp - 0x20], ecx
lea eax, [ecx + 7]
cmp edi, eax
jae 0x4210ea
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
mov ecx, dword [ebp - 0x20]
add edx, eax
inc dword [ebp - 0x10]
add edi, 8
mov dword [ebp - 0xc], edx
jmp 0x4210ba
shr edx, cl
mov eax, edx
and eax, 0x7f
add eax, 0xb
shr edx, 7
push 0xfffffffffffffff9
and dword [ebp - 0x20], 0
mov dword [ebp - 0x2c], eax
pop eax
sub eax, ecx
add edi, eax
mov ecx, dword [ebx + 0x64]
mov eax, dword [ebp - 0x28]
add ecx, dword [ebx + 0x60]
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0x2c]
add eax, edx
mov dword [ebp - 0x1c], edi
cmp eax, ecx
ja 0x421154
test edx, edx
je case.0x4205e5.18
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebx + 0x68]
mov word [ebx + eax*2 + 0x70], cx
inc dword [ebx + 0x68]
dec edx
jne 0x421124
mov eax, dword [ebx + 0x64]
add eax, dword [ebx + 0x60]
mov ecx, dword [ebx + 0x68]
mov dword [ebp - 0x28], ecx
cmp ecx, eax
jb 0x420fa4
jmp 0x421161
mov dword [esi + 0x18], str.invalid_bit_length_repeat
jmp 0x4206b7
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [ebx], 0x1d
xor ecx, ecx
cmp dword [ebx], 0x1d
je 0x42117e
cmp word [ebx + 0x270], cx
jne 0x421186
mov dword [esi + 0x18], str.invalid_code____missing_end_of_block
mov dword [ebx], 0x1d
mov edx, dword [ebp - 0xc]
jmp 0x4206bf
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], 9
push eax
push edx
push ecx
push dword [ebx + 0x60]
xor ecx, ecx
lea edx, [ebx + 0x70]
inc ecx
call fcn.004219a1
add esp, 0x10
mov dword [ebp - 0x38], eax
test eax, eax
je 0x4211ca
mov dword [esi + 0x18], str.invalid_literal_lengths_set
jmp 0x420f67
lea ecx, [ebx + 0x6c]
mov eax, dword [ecx]
lea edx, [ebx + 0x58]
mov dword [ebx + 0x50], eax
lea eax, [ebx + 0x2f0]
push eax
mov eax, dword [ebx + 0x60]
push edx
push ecx
push dword [ebx + 0x64]
add eax, 0x38
mov dword [edx], 6
push 2
pop ecx
lea edx, [ebx + eax*2]
call fcn.004219a1
mov edx, dword [ebp - 0xc]
add esp, 0x10
xor ecx, ecx
mov dword [ebp - 0x38], eax
test eax, eax
je 0x421213
mov dword [esi + 0x18], str.invalid_distances_set
jmp 0x42073d
mov dword [ebx], 0x13
mov dword [ebx], 0x14
mov eax, dword [ebp - 0x14]
cmp eax, 6
jb 0x42128c
cmp dword [ebp - 0x18], 0x102
jb 0x42128c
mov ecx, dword [ebp - 0x24]
mov dword [esi + 0xc], ecx
mov ecx, dword [ebp - 0x18]
mov dword [esi + 0x10], ecx
mov ecx, dword [ebp - 0x10]
mov dword [esi], ecx
mov ecx, esi
mov dword [esi + 4], eax
mov dword [ebx + 0x38], edx
mov edx, dword [ebp - 0x34]
mov dword [ebx + 0x3c], edi
call fcn.0041ff72
cmp dword [ebx], 0xb
mov eax, dword [esi + 0xc]
mov edx, dword [ebx + 0x38]
mov edi, dword [ebx + 0x3c]
mov dword [ebp - 0x24], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x18], eax
mov eax, dword [esi]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
jne 0x4206bd
or dword [ebx + 0x1bc4], 0xffffffff
jmp 0x4206bd
mov eax, dword [ebx + 0x4c]
mov dword [ebp - 0x2c], eax
xor eax, eax
inc eax
mov dword [ebx + 0x1bc4], ecx
mov ecx, dword [ebx + 0x54]
shl eax, cl
mov ecx, dword [ebx + 0x4c]
dec eax
and eax, edx
mov eax, dword [ecx + eax*4]
jmp 0x4212e7
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
add edi, 8
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x1c], edi
movzx eax, byte [eax]
shl eax, cl
mov ecx, dword [ebx + 0x54]
add edx, eax
inc dword [ebp - 0x10]
mov eax, dword [ebx + 0x4c]
mov dword [ebp - 0xc], edx
xor edx, edx
inc edx
shl edx, cl
dec edx
and edx, dword [ebp - 0xc]
mov eax, dword [eax + edx*4]
mov edx, dword [ebp - 0xc]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, edi
ja 0x4212ab
test al, al
je 0x4213af
test al, 0xf0
jne 0x4213af
xor edi, edi
movzx ecx, al
mov ebx, eax
inc edi
shr ebx, 8
mov edx, eax
movzx esi, bl
add ecx, esi
shr eax, 0x10
shl edi, cl
mov ecx, esi
dec edi
mov dword [ebp - 0x20], edx
and edi, dword [ebp - 0xc]
shr edi, cl
mov ecx, dword [ebp - 0x2c]
add edi, eax
mov eax, dword [ecx + edi*4]
mov ecx, eax
mov edi, dword [ebp - 0x1c]
shr ecx, 8
movzx esi, cl
movzx ecx, bl
mov ebx, dword [ebp - 0x3c]
add esi, ecx
cmp esi, edi
jbe 0x42139c
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
mov esi, dword [ebp - 0x10]
dec eax
mov dword [ebp - 0x14], eax
mov ecx, edi
add edi, 8
mov dword [ebp - 0x1c], edi
movzx eax, byte [esi]
shl eax, cl
add dword [ebp - 0xc], eax
inc esi
movzx eax, word [ebp - 0x1e]
mov dword [ebp - 0x10], esi
xor esi, esi
movzx edi, dh
inc esi
movzx ecx, dl
add ecx, edi
shl esi, cl
mov ecx, edi
dec esi
and esi, dword [ebp - 0xc]
shr esi, cl
add esi, eax
mov eax, dword [ebx + 0x4c]
mov eax, dword [eax + esi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, edi
mov edi, dword [ebp - 0x1c]
cmp ecx, edi
ja 0x421344
mov esi, dword [ebp - 0x30]
movzx ecx, dh
mov edx, dword [ebp - 0xc]
shr edx, cl
sub edi, ecx
mov dword [ebx + 0x1bc4], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [ebx + 0x1bc4], ecx
sub edi, ecx
shr edx, cl
mov ecx, eax
shr ecx, 0x10
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
mov dword [ebx + 0x40], ecx
test al, al
jne 0x4213de
mov dword [ebx], 0x19
jmp 0x4206bd
test al, 0x20
je 0x4213f4
or dword [ebx + 0x1bc4], 0xffffffff
mov dword [ebx], 0xb
jmp 0x4206bd
test al, 0x40
je 0x421404
mov dword [esi + 0x18], str.invalid_literal_length_code
jmp 0x4206b7
movzx eax, al
and eax, 0xf
mov dword [ebx], 0x15
mov dword [ebx + 0x48], eax
mov esi, dword [ebx + 0x48]
test esi, esi
je 0x421461
jmp 0x421440
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
mov dword [ebp - 0xc], edx
add edi, 8
cmp edi, esi
jb 0x42141c
xor eax, eax
mov ecx, esi
inc eax
sub edi, esi
shl eax, cl
dec eax
mov dword [ebp - 0x1c], edi
and eax, edx
shr edx, cl
add dword [ebx + 0x40], eax
add dword [ebx + 0x1bc4], esi
mov dword [ebp - 0xc], edx
mov eax, dword [ebx + 0x40]
mov dword [ebx + 0x1bc8], eax
mov dword [ebx], 0x16
mov ecx, dword [ebx + 0x58]
xor eax, eax
mov esi, dword [ebx + 0x50]
inc eax
shl eax, cl
dec eax
mov dword [ebp - 0x2c], esi
and eax, edx
mov eax, dword [esi + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, edi
jbe 0x4214d9
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
add edi, 8
movzx eax, byte [esi]
shl eax, cl
mov ecx, dword [ebx + 0x58]
add edx, eax
mov eax, dword [ebx + 0x50]
inc esi
mov dword [ebp - 0xc], edx
xor edx, edx
inc edx
mov dword [ebp - 0x10], esi
shl edx, cl
dec edx
mov dword [ebp - 0x1c], edi
and edx, dword [ebp - 0xc]
mov eax, dword [eax + edx*4]
mov ecx, eax
mov edx, dword [ebp - 0xc]
shr ecx, 8
movzx ecx, cl
cmp ecx, edi
ja 0x421493
test al, 0xf0
jne 0x42158a
xor edi, edi
movzx ecx, al
mov ebx, eax
inc edi
shr ebx, 8
mov edx, eax
movzx esi, bl
add ecx, esi
shr eax, 0x10
shl edi, cl
mov ecx, esi
dec edi
mov dword [ebp - 0x20], edx
and edi, dword [ebp - 0xc]
shr edi, cl
mov ecx, dword [ebp - 0x2c]
add edi, eax
mov eax, dword [ecx + edi*4]
mov ecx, eax
mov edi, dword [ebp - 0x1c]
shr ecx, 8
movzx esi, cl
movzx ecx, bl
mov ebx, dword [ebp - 0x3c]
add esi, ecx
cmp esi, edi
jbe 0x42157a
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
mov esi, dword [ebp - 0x10]
dec eax
mov dword [ebp - 0x14], eax
mov ecx, edi
add edi, 8
mov dword [ebp - 0x1c], edi
movzx eax, byte [esi]
shl eax, cl
add dword [ebp - 0xc], eax
inc esi
movzx eax, word [ebp - 0x1e]
mov dword [ebp - 0x10], esi
xor esi, esi
movzx edi, dh
inc esi
movzx ecx, dl
add ecx, edi
shl esi, cl
mov ecx, edi
dec esi
and esi, dword [ebp - 0xc]
shr esi, cl
add esi, eax
mov eax, dword [ebx + 0x50]
mov eax, dword [eax + esi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, edi
mov edi, dword [ebp - 0x1c]
cmp ecx, edi
ja 0x421522
movzx ecx, dh
mov edx, dword [ebp - 0xc]
sub edi, ecx
shr edx, cl
add dword [ebx + 0x1bc4], ecx
mov esi, dword [ebp - 0x30]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [ebx + 0x1bc4], ecx
sub edi, ecx
shr edx, cl
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
test al, 0x40
je 0x4215b5
mov dword [esi + 0x18], str.invalid_distance_code
jmp 0x4206b7
mov ecx, eax
mov dword [ebx], 0x17
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [ebx + 0x44], ecx
mov dword [ebx + 0x48], eax
mov ecx, dword [ebx + 0x48]
test ecx, ecx
je 0x42161b
jmp 0x4215fc
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax]
shl eax, cl
mov ecx, dword [ebx + 0x48]
add edx, eax
inc dword [ebp - 0x10]
add edi, 8
mov dword [ebp - 0xc], edx
cmp edi, ecx
jb 0x4215d5
xor eax, eax
sub edi, ecx
inc eax
mov dword [ebp - 0x1c], edi
shl eax, cl
dec eax
and eax, edx
shr edx, cl
add dword [ebx + 0x44], eax
add dword [ebx + 0x1bc4], ecx
mov dword [ebp - 0xc], edx
mov dword [ebx], 0x18
cmp dword [ebp - 0x18], 0
je 0x421849
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x18]
mov ecx, dword [ebx + 0x44]
cmp ecx, eax
jbe 0x421677
sub ecx, eax
cmp ecx, dword [ebx + 0x2c]
jbe 0x421654
cmp dword [ebx + 0x1bc0], 0
je 0x421654
mov dword [esi + 0x18], str.invalid_distance_too_far_back
jmp 0x4206b7
mov eax, dword [ebx + 0x34]
cmp ecx, dword [ebx + 0x30]
jbe 0x421666
sub ecx, dword [ebx + 0x30]
add eax, dword [ebx + 0x28]
sub eax, ecx
jmp 0x42166b
sub eax, ecx
add eax, dword [ebx + 0x30]
mov dword [ebp - 0x20], eax
mov eax, dword [ebx + 0x40]
cmp ecx, eax
jbe 0x421684
jmp 0x421682
mov eax, dword [ebp - 0x24]
sub eax, ecx
mov dword [ebp - 0x20], eax
mov eax, dword [ebx + 0x40]
mov ecx, eax
mov edx, dword [ebp - 0x18]
cmp ecx, edx
mov esi, dword [ebp - 0x24]
cmova ecx, edx
sub edx, ecx
sub eax, ecx
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 0x20]
mov dword [ebx + 0x40], eax
sub edx, esi
mov al, byte [edx + esi]
mov byte [esi], al
inc esi
dec ecx
jne 0x42169e
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x30]
cmp dword [ebx + 0x40], ecx
jne 0x4206bf
mov dword [ebx], 0x14
jmp 0x4206bf
cmp dword [ebp - 0x18], 0
je 0x421849
mov esi, dword [ebp - 0x24]
mov al, byte [ebx + 0x40]
inc dword [ebp - 0x24]
dec dword [ebp - 0x18]
mov byte [esi], al
mov esi, dword [ebp - 0x30]
mov dword [ebx], 0x14
jmp 0x4206bf
cmp dword [ebx + 8], ecx
je 0x4217c0
cmp edi, 0x20
jae 0x421726
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
add edi, 8
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x1c], edi
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
mov dword [ebp - 0xc], edx
cmp edi, 0x20
jb 0x4216f8
xor ecx, ecx
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x18]
add dword [esi + 0x14], eax
add dword [ebx + 0x1c], eax
mov dword [ebp - 0x34], eax
test eax, eax
je 0x421771
cmp dword [ebx + 0x10], ecx
je 0x421759
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x34]
jne 0x42174a
mov eax, ecx
jmp 0x42176b
push dword [ebp - 0x34]
mov ecx, dword [ebx + 0x18]
mov edx, eax
call fcn.0041f0be
jmp 0x421767
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebx + 0x18]
sub edx, eax
push eax
call fcn.0041ee89
mov edx, dword [ebp - 0xc]
pop ecx
mov dword [ebx + 0x18], eax
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 0x18]
mov ecx, edx
mov dword [ebp - 0x34], eax
and ecx, 0xff00
mov eax, edx
shl eax, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
shl ecx, 8
and eax, 0xff00
add ecx, eax
mov eax, edx
shr eax, 0x18
add ecx, eax
cmp dword [ebx + 0x10], 0
cmovne ecx, edx
cmp ecx, dword [ebx + 0x18]
je 0x4217b4
mov dword [esi + 0x18], str.incorrect_data_check
jmp 0x4206b7
xor ecx, ecx
mov edx, ecx
mov edi, ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edi
mov dword [ebx], 0x1b
cmp dword [ebx + 8], ecx
je 0x42183d
cmp dword [ebx + 0x10], ecx
je 0x42183d
cmp edi, 0x20
jae 0x421803
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x420b3d
dec eax
mov ecx, edi
mov dword [ebp - 0x14], eax
add edi, 8
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x1c], edi
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [ebp - 0x10]
mov dword [ebp - 0xc], edx
cmp edi, 0x20
jb 0x4217d5
xor ecx, ecx
cmp edx, dword [ebx + 0x1c]
je 0x421838
mov dword [esi + 0x18], str.incorrect_length_check
jmp 0x42073d
mov eax, dword [ebp - 0x24]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x18]
mov dword [esi + 0x10], eax
mov eax, dword [ebp - 0x10]
mov dword [esi], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 4], eax
mov dword [ebx + 0x38], edx
mov dword [ebx + 0x3c], edi
push 2
jmp 0x4206cc
mov dword [ebp - 0xc], ecx
mov edi, ecx
mov dword [ebx], 0x1c
xor eax, eax
inc eax
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x14]
jmp 0x420b3d
push 0xfffffffffffffffd
pop eax
jmp 0x421846
mov eax, dword [ebp - 0x14]
jmp 0x420b40
xor eax, eax
mov ecx, dword [ebp - 0x40]
sub ecx, dword [esi + 4]
sub edi, dword [esi + 0x10]
add dword [esi + 8], ecx
add dword [esi + 0x14], edi
add dword [ebx + 0x1c], edi
cmp dword [ebx + 8], eax
je 0x4218a6
test edi, edi
je 0x4218a6
mov edx, dword [esi + 0xc]
cmp dword [ebx + 0x10], eax
je 0x421892
sub edx, edi
je 0x42189e
mov ecx, dword [ebx + 0x18]
push edi
call fcn.0041f0be
jmp 0x42189d
mov ecx, dword [ebx + 0x18]
sub edx, edi
push edi
call fcn.0041ee89
pop ecx
mov dword [ebx + 0x18], eax
mov dword [esi + 0x30], eax
xor eax, eax
cmp dword [ebx], 0x13
je 0x4218b0
cmp dword [ebx], 0xe
jne 0x4218b5
mov eax, 0x100
mov edx, dword [ebx + 4]
mov edi, 0x80
neg edx
push 0xfffffffffffffffb
sbb edx, edx
xor ecx, ecx
and edx, 0x40
cmp dword [ebx], 0xb
cmove ecx, edi
add edx, eax
mov eax, dword [ebp - 0x38]
add ecx, edx
add ecx, dword [ebx + 0x3c]
test eax, eax
mov dword [esi + 0x2c], ecx
pop ecx
cmove eax, ecx
jmp 0x4206cd