Function at 0x406210
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov edi, dword [esp + 0x40]
test edi, edi
je 0x406238
mov ebx, dword [edi + 0x20]
test ebx, ebx
je 0x406238
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x406238
mov ebx, dword [edi + 0x1c]
test ebx, ebx
je 0x406238
cmp edi, dword [ebx]
je 0x406248
mov eax, 0xfffffffe
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebx + 4]
cmp eax, 0x2a
je 0x406270
cmp eax, 0x39
je 0x406270
cmp eax, 0x71
jg 0x406ba0
cmp eax, 0x5a
jg 0x406b88
lea edx, [eax - 0x45]
and edx, 0xfffffffb
jne 0x406238
nop
cmp dword [esp + 0x44], 5
ja 0x406238
mov edx, dword [edi + 0xc]
test edx, edx
je 0x4075e9
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x406293
mov ebp, dword [edi]
test ebp, ebp
je 0x4075e9
cmp dword [esp + 0x44], 4
setne dl
cmp eax, 0x29a
jne 0x4062aa
test dl, dl
jne 0x4075e9
mov esi, dword [edi + 0x10]
test esi, esi
je 0x406523
mov ebp, dword [esp + 0x44]
cmp dword [ebx + 0x14], 0
mov esi, dword [ebx + 0x28]
mov dword [ebx + 0x28], ebp
jne 0x406938
test ecx, ecx
je 0x4064e0
cmp eax, 0x29a
je 0x406523
cmp eax, 0x2a
jne 0x406687
mov eax, dword [ebx + 0x18]
test eax, eax
jne 0x406560
mov dword [ebx + 4], 0x71
mov eax, dword [edi + 4]
test eax, eax
jne 0x406320
mov eax, dword [ebx + 0x74]
test eax, eax
jne 0x406320
mov eax, dword [esp + 0x44]
test eax, eax
je 0x406557
cmp dword [ebx + 4], 0x29a
je 0x406409
nop
mov eax, dword [ebx + 0x84]
test eax, eax
je 0x406d90
mov edx, dword [ebx + 0x88]
cmp edx, 2
je 0x406fa0
cmp edx, 3
je 0x4071c0
mov esi, dword [esp + 0x44]
lea eax, [eax + eax*2]
mov dword [esp], ebx
mov dword [esp + 4], esi
call dword [eax*4 + 0x419368]
lea edx, [eax - 2]
cmp edx, 1
jbe 0x406538
test eax, eax
je 0x406548
cmp eax, 1
jne 0x406409
cmp dword [esp + 0x44], 1
je 0x406f79
cmp dword [esp + 0x44], 5
je 0x4063b5
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], ebx
call sym.__tr_stored_block
cmp dword [esp + 0x44], 3
je 0x407689
mov ebp, dword [edi + 0x1c]
mov dword [esp], ebp
call sym.__tr_flush_bits
mov eax, dword [edi + 0x10]
mov esi, dword [ebp + 0x14]
cmp eax, esi
cmovbe esi, eax
test esi, esi
je 0x406401
mov eax, dword [edi + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
mov eax, dword [edi + 0x10]
add dword [edi + 0xc], esi
add dword [ebp + 0x10], esi
sub eax, esi
add dword [edi + 0x14], esi
mov dword [edi + 0x10], eax
sub dword [ebp + 0x14], esi
jne 0x406401
mov edx, dword [ebp + 8]
mov dword [ebp + 0x10], edx
test eax, eax
je 0x406550
cmp dword [esp + 0x44], 4
jne 0x406557
mov ecx, dword [ebx + 0x18]
mov eax, 1
test ecx, ecx
jle 0x40623d
mov eax, dword [ebx + 0x14]
mov edx, dword [edi + 0x30]
lea esi, [eax + 1]
add eax, dword [ebx + 8]
mov dword [ebx + 0x14], esi
cmp ecx, 2
je 0x406ee8
mov ecx, edx
shr edx, 0x10
shr ecx, 0x18
mov byte [eax], cl
mov ecx, dword [ebx + 0x14]
mov esi, dword [ebx + 8]
lea eax, [ecx + 1]
mov dword [ebx + 0x14], eax
mov byte [esi + ecx], dl
mov eax, dword [ebx + 0x14]
movzx edx, word [edi + 0x30]
mov ecx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [ecx + eax], dh
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [ecx + eax], dl
mov ebp, dword [edi + 0x1c]
mov dword [esp], ebp
call sym.__tr_flush_bits
mov esi, dword [ebp + 0x14]
mov eax, dword [edi + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x4064be
mov eax, dword [edi + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
add dword [edi + 0xc], esi
add dword [ebp + 0x10], esi
add dword [edi + 0x14], esi
sub dword [edi + 0x10], esi
sub dword [ebp + 0x14], esi
jne 0x4064be
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov eax, dword [ebx + 0x18]
test eax, eax
jle 0x4064ca
neg eax
mov dword [ebx + 0x18], eax
mov edx, dword [ebx + 0x14]
xor eax, eax
test edx, edx
sete al
jmp 0x40623d
mov ecx, ebp
lea ebp, [ebp + ebp]
cmp ecx, 5
mov ecx, 1
cmovne ecx, ebp
cmp esi, 4
mov dword [esp + 0x14], ecx
lea ecx, [esi + esi]
mov esi, dword [esp + 0x14]
lea ebp, [ecx - 9]
cmovg ecx, ebp
cmp ecx, esi
jl 0x40650d
test dl, dl
jne 0x406523
cmp eax, 0x29a
jne 0x4062dc
mov eax, dword [edi + 4]
test eax, eax
je 0x4062f7
mov eax, dword [str.buffer_error]
mov dword [edi + 0x18], eax
mov eax, 0xfffffffb
jmp 0x40623d
mov dword [ebx + 4], 0x29a
cmp eax, 2
jne 0x406409
mov edi, dword [edi + 0x10]
test edi, edi
jne 0x406557
nop
mov dword [ebx + 0x28], 0xffffffff
xor eax, eax
jmp 0x40623d
mov eax, dword [ebx + 0x30]
shl eax, 0xc
cmp dword [ebx + 0x88], 1
lea ecx, [eax - 0x7800]
jle 0x406dd0
mov eax, dword [ebx + 0x6c]
test eax, eax
je 0x406583
or ecx, 0x20
mov eax, 0x8421085
mul ecx
sub ecx, edx
shr ecx, 1
add edx, ecx
mov ecx, dword [ebx + 8]
shr edx, 4
mov eax, edx
shl eax, 5
sub eax, edx
mov edx, dword [ebx + 0x14]
add eax, 0x1f
lea esi, [edx + 1]
mov dword [ebx + 0x14], esi
mov byte [ecx + edx], ah
mov edx, dword [ebx + 0x14]
mov ecx, dword [ebx + 8]
lea esi, [edx + 1]
mov dword [ebx + 0x14], esi
mov byte [ecx + edx], al
mov ebp, dword [ebx + 0x6c]
test ebp, ebp
je 0x40660e
mov eax, dword [edi + 0x30]
mov edx, dword [ebx + 0x14]
mov ebp, dword [ebx + 8]
mov ecx, eax
lea esi, [edx + 1]
shr eax, 0x10
shr ecx, 0x18
mov dword [ebx + 0x14], esi
mov byte [ebp + edx], cl
mov edx, dword [ebx + 0x14]
mov ecx, dword [ebx + 8]
lea esi, [edx + 1]
mov dword [ebx + 0x14], esi
mov byte [ecx + edx], al
mov eax, dword [ebx + 0x14]
movzx edx, word [edi + 0x30]
mov ecx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [ecx + eax], dh
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [ecx + eax], dl
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._adler32
mov ebp, dword [edi + 0x1c]
mov dword [edi + 0x30], eax
mov dword [ebx + 4], 0x71
mov dword [esp], ebp
call sym.__tr_flush_bits
mov esi, dword [ebp + 0x14]
mov eax, dword [edi + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x406679
mov eax, dword [edi + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
add dword [edi + 0xc], esi
add dword [ebp + 0x10], esi
add dword [edi + 0x14], esi
sub dword [edi + 0x10], esi
sub dword [ebp + 0x14], esi
je 0x406e80
mov esi, dword [ebx + 0x14]
test esi, esi
jne 0x406550
mov eax, dword [ebx + 4]
cmp eax, 0x39
jne 0x406a80
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._crc32
mov edx, dword [ebx + 8]
mov dword [edi + 0x30], eax
mov eax, dword [ebx + 0x14]
lea ecx, [eax + 1]
mov dword [ebx + 0x14], ecx
mov byte [edx + eax], 0x1f
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 8]
lea ecx, [eax + 1]
mov dword [ebx + 0x14], ecx
mov byte [edx + eax], 0x8b
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 8]
lea ecx, [eax + 1]
mov dword [ebx + 0x14], ecx
mov byte [edx + eax], 8
mov edx, dword [ebx + 0x1c]
test edx, edx
je 0x406990
mov eax, dword [edx + 0x10]
mov ebp, dword [ebx + 8]
test eax, eax
mov eax, dword [edx + 0x2c]
setne cl
test eax, eax
setne al
add eax, eax
cmp dword [edx], 1
lea ecx, [eax + ecx*4]
mov eax, dword [edx + 0x1c]
mov edx, dword [edx + 0x24]
sbb cl, 0xff
test eax, eax
setne al
test edx, edx
lea eax, [ecx + eax*8]
setne dl
mov ecx, dword [ebx + 0x14]
shl edx, 4
lea esi, [ecx + 1]
add eax, edx
mov dword [ebx + 0x14], esi
mov byte [ebp + ecx], al
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 8]
mov ecx, dword [eax + 4]
mov eax, dword [ebx + 0x14]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 8]
mov ecx, dword [eax + 4]
mov eax, dword [ebx + 0x14]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], ch
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 8]
movzx ecx, word [eax + 6]
mov eax, dword [ebx + 0x14]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 8]
movzx ecx, byte [eax + 7]
mov eax, dword [ebx + 0x14]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
mov eax, dword [ebx + 0x84]
mov edx, 2
cmp eax, 9
je 0x4067a8
cmp dword [ebx + 0x88], 1
setg dl
cmp eax, 1
setle al
or edx, eax
shl edx, 2
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [ecx + eax], dl
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 8]
mov ecx, dword [eax + 0xc]
mov eax, dword [ebx + 0x14]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
mov ecx, dword [ebx + 0x1c]
mov ebp, dword [ecx + 0x10]
test ebp, ebp
je 0x406800
mov eax, dword [ebx + 0x14]
mov ecx, dword [ecx + 0x14]
mov edx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 8]
mov ecx, dword [eax + 0x14]
mov eax, dword [ebx + 0x14]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], ch
mov ecx, dword [ebx + 0x1c]
mov esi, dword [ecx + 0x2c]
test esi, esi
jne 0x406ec0
mov dword [ebx + 0x20], 0
mov dword [ebx + 4], 0x45
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x406bf8
mov edx, dword [ebx + 0x20]
movzx ecx, word [ecx + 0x14]
mov esi, dword [ebx + 0x14]
mov ebp, dword [ebx + 0xc]
sub ecx, edx
mov dword [esp + 0x14], ecx
add ecx, esi
mov dword [esp + 0x18], ebp
cmp ebp, ecx
jb 0x4068d9
jmp 0x406bb0
mov edx, dword [edi + 0x1c]
add dword [ebx + 0x20], ebp
mov dword [esp], edx
mov dword [esp + 0x1c], edx
call sym.__tr_flush_bits
mov edx, dword [esp + 0x1c]
mov ebp, dword [edi + 0x10]
mov eax, dword [edx + 0x14]
cmp eax, ebp
cmovbe ebp, eax
test ebp, ebp
je 0x4068a6
mov eax, dword [edx + 0x10]
mov ecx, dword [edi + 0xc]
mov dword [esp + 8], ebp
mov dword [esp + 4], eax
mov dword [esp], ecx
call sym._memcpy
mov edx, dword [esp + 0x1c]
add dword [edi + 0xc], ebp
add dword [edx + 0x10], ebp
add dword [edi + 0x14], ebp
sub dword [edi + 0x10], ebp
sub dword [edx + 0x14], ebp
jne 0x4068a6
mov eax, dword [edx + 8]
mov dword [edx + 0x10], eax
mov ebp, dword [ebx + 0x14]
test ebp, ebp
jne 0x406550
mov eax, dword [esp + 0x18]
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebx + 0x20]
sub esi, eax
mov eax, dword [ebx + 0x1c]
add dword [esp + 0x14], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x18], ecx
mov eax, dword [eax + 0x10]
cmp ecx, esi
jae 0x406bc0
xor esi, esi
mov ecx, dword [ebx + 8]
mov ebp, dword [esp + 0x18]
add eax, edx
mov dword [esp + 4], eax
add ecx, esi
sub ebp, esi
mov dword [esp], ecx
mov dword [esp + 8], ebp
call sym._memcpy
mov edx, dword [ebx + 0x1c]
mov eax, dword [ebx + 0xc]
mov ecx, dword [edx + 0x2c]
mov dword [ebx + 0x14], eax
test ecx, ecx
je 0x406850
cmp esi, eax
jae 0x406850
sub eax, esi
mov dword [esp + 8], eax
mov eax, dword [ebx + 8]
add eax, esi
mov dword [esp + 4], eax
mov eax, dword [edi + 0x30]
mov dword [esp], eax
call sym._crc32
mov dword [edi + 0x30], eax
jmp 0x406850
mov dword [esp], ebx
call sym.__tr_flush_bits
mov eax, dword [edi + 0x10]
mov esi, dword [ebx + 0x14]
cmp eax, esi
cmovbe esi, eax
test esi, esi
je 0x40697f
mov eax, dword [edi + 0xc]
mov edx, dword [ebx + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
mov eax, dword [edi + 0x10]
add dword [edi + 0xc], esi
add dword [ebx + 0x10], esi
sub eax, esi
add dword [edi + 0x14], esi
mov dword [edi + 0x10], eax
sub dword [ebx + 0x14], esi
je 0x406e70
test eax, eax
je 0x406550
mov eax, dword [ebx + 4]
jmp 0x40650d
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 8]
lea ecx, [eax + 1]
mov dword [ebx + 0x14], ecx
mov byte [edx + eax], 0
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 8]
lea ecx, [eax + 1]
mov dword [ebx + 0x14], ecx
mov byte [edx + eax], 0
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 8]
lea ecx, [eax + 1]
mov dword [ebx + 0x14], ecx
mov byte [edx + eax], 0
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 8]
lea ecx, [eax + 1]
mov dword [ebx + 0x14], ecx
mov byte [edx + eax], 0
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 8]
lea ecx, [eax + 1]
mov dword [ebx + 0x14], ecx
mov byte [edx + eax], 0
mov edx, dword [ebx + 0x84]
mov eax, 2
cmp edx, 9
je 0x406a05
cmp dword [ebx + 0x88], 1
setg al
cmp edx, 1
setle dl
or eax, edx
shl eax, 2
mov edx, dword [ebx + 0x14]
mov ecx, dword [ebx + 8]
lea esi, [edx + 1]
mov dword [ebx + 0x14], esi
mov byte [ecx + edx], al
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 8]
lea ecx, [eax + 1]
mov dword [ebx + 0x14], ecx
mov byte [edx + eax], 0xa
mov ebp, dword [edi + 0x1c]
mov dword [ebx + 4], 0x71
mov dword [esp], ebp
call sym.__tr_flush_bits
mov esi, dword [ebp + 0x14]
mov eax, dword [edi + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x406a72
mov eax, dword [edi + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
add dword [edi + 0xc], esi
add dword [ebp + 0x10], esi
add dword [edi + 0x14], esi
sub dword [edi + 0x10], esi
sub dword [ebp + 0x14], esi
jne 0x406a72
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov ecx, dword [ebx + 0x14]
test ecx, ecx
jne 0x406550
mov eax, dword [ebx + 4]
cmp eax, 0x45
je 0x406d80
cmp eax, 0x49
je 0x4071b0
cmp eax, 0x5b
je 0x406f71
cmp eax, 0x67
jne 0x4062f7
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + 0x2c]
test eax, eax
je 0x406b4f
mov eax, dword [ebx + 0x14]
lea edx, [eax + 2]
cmp dword [ebx + 0xc], edx
jae 0x406b0f
mov ebp, dword [edi + 0x1c]
mov dword [esp], ebp
call sym.__tr_flush_bits
mov esi, dword [ebp + 0x14]
mov eax, dword [edi + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x406b04
mov eax, dword [edi + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
add dword [edi + 0xc], esi
add dword [ebp + 0x10], esi
add dword [edi + 0x14], esi
sub dword [edi + 0x10], esi
sub dword [ebp + 0x14], esi
jne 0x406b04
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x406550
mov ecx, dword [edi + 0x30]
mov edx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
mov eax, dword [ebx + 0x14]
mov ecx, dword [edi + 0x30]
mov edx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], ch
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._crc32
mov dword [edi + 0x30], eax
mov ebp, dword [edi + 0x1c]
mov dword [ebx + 4], 0x71
mov dword [esp], ebp
call sym.__tr_flush_bits
mov esi, dword [ebp + 0x14]
mov eax, dword [edi + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
jne 0x406e38
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x4062f7
jmp 0x406550
lea edx, [eax - 0x5b]
mov ecx, 0x401001
bt ecx, edx
jae 0x406238
jmp 0x406270
cmp eax, 0x29a
jne 0x406238
jmp 0x406270
mov ebp, esi
mov esi, dword [esp + 0x14]
lea esi, [esi]
lea esi, [esi]
mov ecx, dword [ebx + 8]
add eax, edx
mov dword [esp + 8], esi
mov dword [esp + 4], eax
add ecx, ebp
mov dword [esp], ecx
call sym._memcpy
mov ecx, dword [ebx + 0x1c]
mov eax, dword [ebx + 0x14]
mov edx, dword [ecx + 0x2c]
add eax, esi
mov dword [ebx + 0x14], eax
test edx, edx
je 0x406bf1
cmp ebp, eax
jb 0x4075c6
mov dword [ebx + 0x20], 0
mov dword [ebx + 4], 0x49
mov esi, dword [ecx + 0x1c]
test esi, esi
je 0x406cc5
mov esi, dword [ebx + 0x14]
mov eax, esi
jmp 0x406c3e
mov edx, dword [ebx + 0x20]
mov ecx, dword [ecx + 0x1c]
lea ebp, [edx + 1]
mov dword [ebx + 0x20], ebp
movzx edx, byte [ecx + edx]
lea ebp, [eax + 1]
mov ecx, dword [ebx + 8]
mov dword [ebx + 0x14], ebp
mov byte [ecx + eax], dl
test dl, dl
je 0x406cb0
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 0x1c]
cmp dword [ebx + 0xc], eax
jne 0x406c18
mov edx, dword [ecx + 0x2c]
test edx, edx
je 0x406c52
cmp esi, eax
jb 0x406db0
mov ebp, dword [edi + 0x1c]
mov dword [esp], ebp
call sym.__tr_flush_bits
mov esi, dword [ebp + 0x14]
mov eax, dword [edi + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x406c99
mov eax, dword [edi + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
add dword [edi + 0xc], esi
add dword [ebp + 0x10], esi
add dword [edi + 0x14], esi
sub dword [edi + 0x10], esi
sub dword [ebp + 0x14], esi
jne 0x406c99
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x406550
mov ecx, dword [ebx + 0x1c]
xor esi, esi
jmp 0x406c18
mov ecx, dword [ebx + 0x1c]
mov ebp, dword [ecx + 0x2c]
test ebp, ebp
jne 0x406e90
mov dword [ebx + 0x20], 0
mov dword [ebx + 4], 0x5b
mov esi, dword [ecx + 0x24]
test esi, esi
je 0x406f90
mov esi, dword [ebx + 0x14]
mov eax, esi
jmp 0x406d0a
mov edx, dword [ebx + 0x20]
mov ecx, dword [ecx + 0x24]
lea ebp, [edx + 1]
mov dword [ebx + 0x20], ebp
movzx edx, byte [ecx + edx]
lea ebp, [eax + 1]
mov ecx, dword [ebx + 8]
mov dword [ebx + 0x14], ebp
mov byte [ecx + eax], dl
test dl, dl
je 0x406e10
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 0x1c]
cmp dword [ebx + 0xc], eax
jne 0x406ce0
mov ecx, dword [ecx + 0x2c]
test ecx, ecx
je 0x406d1e
cmp esi, eax
jb 0x406df0
mov ebp, dword [edi + 0x1c]
mov dword [esp], ebp
call sym.__tr_flush_bits
mov esi, dword [ebp + 0x14]
mov eax, dword [edi + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x406d65
mov eax, dword [edi + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
add dword [edi + 0xc], esi
add dword [ebp + 0x10], esi
add dword [edi + 0x14], esi
sub dword [edi + 0x10], esi
sub dword [ebp + 0x14], esi
jne 0x406d65
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x406550
mov ecx, dword [ebx + 0x1c]
xor esi, esi
jmp 0x406ce0
mov ecx, dword [ebx + 0x1c]
jmp 0x406819
mov eax, dword [esp + 0x44]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._deflate_stored
lea edx, [eax - 2]
jmp 0x40635e
sub eax, esi
mov dword [esp + 8], eax
add esi, dword [ebx + 8]
mov dword [esp + 4], esi
mov eax, dword [edi + 0x30]
mov dword [esp], eax
call sym._crc32
mov dword [edi + 0x30], eax
jmp 0x406c52
mov eax, dword [ebx + 0x84]
cmp eax, 1
jle 0x406579
cmp eax, 5
jg 0x4074d0
or ecx, 0x40
jmp 0x406579
sub eax, esi
mov dword [esp + 8], eax
add esi, dword [ebx + 8]
mov dword [esp + 4], esi
mov eax, dword [edi + 0x30]
mov dword [esp], eax
call sym._crc32
mov dword [edi + 0x30], eax
jmp 0x406d1e
mov eax, dword [ebx + 0x1c]
mov edx, dword [eax + 0x2c]
test edx, edx
je 0x406b4f
mov eax, dword [ebx + 0x14]
cmp esi, eax
jb 0x4075a0
mov dword [ebx + 4], 0x67
jmp 0x406ab5
mov eax, dword [edi + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
add dword [edi + 0xc], esi
add dword [ebp + 0x10], esi
add dword [edi + 0x14], esi
sub dword [edi + 0x10], esi
sub dword [ebp + 0x14], esi
jne 0x406b74
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
jmp 0x406b74
mov edx, dword [ebx + 8]
mov dword [ebx + 0x10], edx
jmp 0x40697f
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
jmp 0x406679
mov eax, dword [ebx + 0x14]
cmp esi, eax
jae 0x406cbe
sub eax, esi
mov dword [esp + 8], eax
add esi, dword [ebx + 8]
mov dword [esp + 4], esi
mov eax, dword [edi + 0x30]
mov dword [esp], eax
call sym._crc32
mov ecx, dword [ebx + 0x1c]
mov dword [edi + 0x30], eax
jmp 0x406cbe
mov eax, dword [ebx + 0x14]
mov dword [esp + 8], eax
mov eax, dword [ebx + 8]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x30]
mov dword [esp], eax
call sym._crc32
mov ecx, dword [ebx + 0x1c]
mov dword [edi + 0x30], eax
jmp 0x40680b
mov byte [eax], dl
mov eax, dword [ebx + 0x14]
mov ecx, dword [edi + 0x30]
mov edx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], ch
mov eax, dword [ebx + 0x14]
movzx ecx, word [edi + 0x32]
mov edx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
mov eax, dword [ebx + 0x14]
movzx ecx, byte [edi + 0x33]
mov edx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
mov eax, dword [ebx + 0x14]
mov ecx, dword [edi + 8]
mov edx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
mov eax, dword [ebx + 0x14]
mov ecx, dword [edi + 8]
mov edx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], ch
mov eax, dword [ebx + 0x14]
movzx ecx, word [edi + 0xa]
mov edx, dword [ebx + 8]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
movzx ecx, byte [edi + 0xb]
mov edx, dword [ebx + 8]
mov eax, dword [ebx + 0x14]
lea esi, [eax + 1]
mov dword [ebx + 0x14], esi
mov byte [edx + eax], cl
jmp 0x406477
mov ecx, dword [ebx + 0x1c]
jmp 0x406ccc
mov dword [esp], ebx
call sym.__tr_align
jmp 0x4063b5
mov eax, dword [ecx + 0x2c]
mov dword [ebx + 4], 0x67
jmp 0x406aaa
mov dword [esp + 0x40], edi
mov eax, dword [ebx + 0x74]
jmp 0x407038
mov edx, dword [ebx + 0x38]
mov eax, dword [ebx + 0x6c]
mov dword [ebx + 0x60], 0
mov ecx, dword [ebx + 0x1698]
movzx eax, byte [edx + eax]
mov edx, dword [ebx + 0x16a0]
lea esi, [edx + 1]
mov dword [ebx + 0x16a0], esi
mov byte [ecx + edx], 0
mov edx, dword [ebx + 0x16a0]
mov ecx, dword [ebx + 0x1698]
lea esi, [edx + 1]
mov dword [ebx + 0x16a0], esi
mov byte [ecx + edx], 0
mov edx, dword [ebx + 0x16a0]
mov ecx, dword [ebx + 0x1698]
lea esi, [edx + 1]
mov dword [ebx + 0x16a0], esi
mov byte [ecx + edx], al
mov edi, dword [ebx + 0x6c]
add word [ebx + eax*4 + 0x94], 1
mov eax, dword [ebx + 0x74]
lea edx, [edi + 1]
mov edi, dword [ebx + 0x16a4]
sub eax, 1
mov dword [ebx + 0x6c], edx
mov dword [ebx + 0x74], eax
cmp dword [ebx + 0x16a0], edi
je 0x407120
test eax, eax
jne 0x406fb0
mov eax, ebx
call sym._fill_window
mov eax, dword [ebx + 0x74]
test eax, eax
jne 0x406fb0
mov ebp, dword [esp + 0x44]
mov edi, dword [esp + 0x40]
test ebp, ebp
je 0x406548
mov dword [ebx + 0x16b4], 0
cmp dword [esp + 0x44], 4
je 0x4075f6
mov ecx, dword [ebx + 0x16a0]
test ecx, ecx
je 0x406378
mov edx, dword [ebx + 0x5c]
mov eax, dword [ebx + 0x6c]
xor ecx, ecx
sub eax, edx
test edx, edx
js 0x407098
mov ecx, dword [ebx + 0x38]
add ecx, edx
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 0
mov dword [esp], ebx
call sym.__tr_flush_block
mov edx, dword [ebx]
mov eax, dword [ebx + 0x6c]
mov ebp, dword [edx + 0x1c]
mov dword [ebx + 0x5c], eax
mov dword [esp + 0x14], edx
mov dword [esp], ebp
call sym.__tr_flush_bits
mov edx, dword [esp + 0x14]
mov esi, dword [ebp + 0x14]
mov eax, dword [edx + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x40710b
mov eax, dword [edx + 0xc]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], ecx
mov dword [esp], eax
call sym._memcpy
mov edx, dword [esp + 0x14]
add dword [edx + 0xc], esi
add dword [ebp + 0x10], esi
add dword [edx + 0x14], esi
sub dword [edx + 0x10], esi
sub dword [ebp + 0x14], esi
jne 0x40710b
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov eax, dword [ebx]
mov ebp, dword [eax + 0x10]
test ebp, ebp
jne 0x406378
jmp 0x406548
mov eax, dword [ebx + 0x5c]
xor ecx, ecx
sub edx, eax
test eax, eax
js 0x407130
add eax, dword [ebx + 0x38]
mov ecx, eax
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 0
mov dword [esp], ebx
call sym.__tr_flush_block
mov ebp, dword [ebx]
mov eax, dword [ebx + 0x6c]
mov edi, dword [ebp + 0x1c]
mov dword [ebx + 0x5c], eax
mov dword [esp], edi
call sym.__tr_flush_bits
mov esi, dword [edi + 0x14]
mov eax, dword [ebp + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x407197
mov eax, dword [ebp + 0xc]
mov ecx, dword [edi + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], ecx
mov dword [esp], eax
call sym._memcpy
add dword [ebp + 0xc], esi
add dword [edi + 0x10], esi
add dword [ebp + 0x14], esi
sub dword [ebp + 0x10], esi
sub dword [edi + 0x14], esi
jne 0x407197
mov eax, dword [edi + 8]
mov dword [edi + 0x10], eax
mov eax, dword [ebx]
mov esi, dword [eax + 0x10]
test esi, esi
jne 0x406fa4
mov edi, dword [esp + 0x40]
jmp 0x406548
mov ecx, dword [ebx + 0x1c]
jmp 0x406bff
movzx eax, byte [0x41a2e0]
mov dword [esp + 0x40], edi
lea ebp, [eax + 0x260]
mov eax, dword [ebx + 0x74]
jmp 0x40728a
mov edi, dword [ebx + 0x38]
mov edx, dword [ebx + 0x6c]
mov dword [ebx + 0x60], 0
mov dword [esp + 0x14], edi
test edx, edx
je 0x40720b
mov edi, dword [esp + 0x14]
lea esi, [edi + edx - 1]
movzx edi, byte [esi]
mov ecx, edi
cmp cl, byte [esi + 1]
je 0x4072e0
mov eax, dword [esp + 0x14]
mov ecx, dword [ebx + 0x1698]
movzx eax, byte [eax + edx]
mov edx, dword [ebx + 0x16a0]
lea esi, [edx + 1]
mov dword [ebx + 0x16a0], esi
mov byte [ecx + edx], 0
mov edx, dword [ebx + 0x16a0]
mov ecx, dword [ebx + 0x1698]
lea esi, [edx + 1]
mov dword [ebx + 0x16a0], esi
mov byte [ecx + edx], 0
mov edx, dword [ebx + 0x16a0]
mov ecx, dword [ebx + 0x1698]
lea esi, [edx + 1]
mov dword [ebx + 0x16a0], esi
mov byte [ecx + edx], al
mov edi, dword [ebx + 0x6c]
add word [ebx + eax*4 + 0x94], 1
mov eax, dword [ebx + 0x74]
lea edx, [edi + 1]
mov edi, dword [ebx + 0x16a4]
sub eax, 1
mov dword [ebx + 0x6c], edx
mov dword [ebx + 0x74], eax
cmp dword [ebx + 0x16a0], edi
je 0x407420
cmp eax, 0x102
ja 0x4071e0
mov eax, ebx
call sym._fill_window
mov eax, dword [ebx + 0x74]
cmp eax, 0x102
ja 0x4071e0
mov edx, dword [esp + 0x44]
test edx, edx
je 0x4071a4
test eax, eax
je 0x4074e8
mov edi, dword [ebx + 0x38]
mov edx, dword [ebx + 0x6c]
mov dword [ebx + 0x60], 0
mov dword [esp + 0x14], edi
cmp eax, 2
jbe 0x40720b
jmp 0x4071f1
cmp cl, byte [esi + 2]
jne 0x40720b
cmp cl, byte [esi + 3]
jne 0x40720b
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
add esi, 3
mov ebx, edi
lea ecx, [ecx + edx + 0x102]
mov dword [esp + 0x1c], ecx
mov edi, ecx
mov ecx, dword [esp + 0x14]
jmp 0x407361
cmp bl, byte [esi + 2]
jne 0x407703
cmp bl, byte [esi + 3]
jne 0x4076f3
cmp bl, byte [esi + 4]
jne 0x4076e3
cmp bl, byte [esi + 5]
jne 0x407713
cmp bl, byte [esi + 6]
jne 0x407733
cmp bl, byte [esi + 7]
jne 0x407723
add esi, 8
cmp byte [esi], bl
jne 0x4076d6
cmp esi, edi
jae 0x4076d6
cmp bl, byte [esi + 1]
je 0x407318
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x18]
add esi, 1
mov edi, dword [esp + 0x1c]
sub esi, edi
add esi, 0x102
mov dword [ebx + 0x60], esi
cmp eax, esi
jae 0x4074b8
mov dword [ebx + 0x60], eax
mov esi, eax
lea esi, [esi]
mov edx, dword [ebx + 0x16a0]
mov ecx, dword [ebx + 0x1698]
lea eax, [esi - 3]
lea esi, [edx + 1]
mov dword [ebx + 0x16a0], esi
mov byte [ecx + edx], 1
mov edx, dword [ebx + 0x16a0]
mov ecx, dword [ebx + 0x1698]
lea esi, [edx + 1]
mov dword [ebx + 0x16a0], esi
mov byte [ecx + edx], 0
mov edx, dword [ebx + 0x16a0]
mov ecx, dword [ebx + 0x1698]
lea esi, [edx + 1]
mov dword [ebx + 0x16a0], esi
mov byte [ecx + edx], al
movzx eax, al
mov edx, dword [ebx + 0x60]
movzx eax, byte [eax + 0x41a1e0]
mov edi, dword [ebx + 0x16a4]
add word [ebx + eax*4 + 0x498], 1
mov eax, dword [ebx + 0x74]
add word [ebx + ebp*4 + 8], 1
sub eax, edx
add edx, dword [ebx + 0x6c]
mov dword [ebx + 0x60], 0
mov dword [ebx + 0x74], eax
mov dword [ebx + 0x6c], edx
cmp dword [ebx + 0x16a0], edi
jne 0x40728a
mov eax, dword [ebx + 0x5c]
xor ecx, ecx
sub edx, eax
test eax, eax
js 0x407430
add eax, dword [ebx + 0x38]
mov ecx, eax
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 0
mov dword [esp], ebx
call sym.__tr_flush_block
mov edx, dword [ebx]
mov eax, dword [ebx + 0x6c]
mov edi, dword [edx + 0x1c]
mov dword [ebx + 0x5c], eax
mov dword [esp + 0x14], edx
mov dword [esp], edi
call sym.__tr_flush_bits
mov edx, dword [esp + 0x14]
mov eax, dword [edi + 0x14]
mov esi, dword [edx + 0x10]
cmp eax, esi
cmovbe esi, eax
test esi, esi
je 0x4074a3
mov eax, dword [edx + 0xc]
mov ecx, dword [edi + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], ecx
mov dword [esp], eax
call sym._memcpy
mov edx, dword [esp + 0x14]
add dword [edx + 0xc], esi
add dword [edi + 0x10], esi
add dword [edx + 0x14], esi
sub dword [edx + 0x10], esi
sub dword [edi + 0x14], esi
jne 0x4074a3
mov eax, dword [edi + 8]
mov dword [edi + 0x10], eax
mov eax, dword [ebx]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x4071d1
jmp 0x4071a4
cmp esi, 2
ja 0x407390
jmp 0x40720b
mov edx, ecx
or cl, 0xc0
or dl, 0x80
cmp eax, 6
cmove ecx, edx
jmp 0x406579
cmp dword [esp + 0x44], 4
mov edi, dword [esp + 0x40]
mov dword [ebx + 0x16b4], 0
jne 0x407077
mov edx, dword [ebx + 0x5c]
mov eax, dword [ebx + 0x6c]
xor ecx, ecx
sub eax, edx
test edx, edx
js 0x407514
mov ecx, dword [ebx + 0x38]
add ecx, edx
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 1
mov dword [esp], ebx
call sym.__tr_flush_block
mov edx, dword [ebx]
mov eax, dword [ebx + 0x6c]
mov ebp, dword [edx + 0x1c]
mov dword [ebx + 0x5c], eax
mov dword [esp + 0x14], edx
mov dword [esp], ebp
call sym.__tr_flush_bits
mov edx, dword [esp + 0x14]
mov esi, dword [ebp + 0x14]
mov eax, dword [edx + 0x10]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x407587
mov eax, dword [edx + 0xc]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 8], esi
mov dword [esp + 4], ecx
mov dword [esp], eax
call sym._memcpy
mov edx, dword [esp + 0x14]
add dword [edx + 0xc], esi
add dword [ebp + 0x10], esi
add dword [edx + 0x14], esi
sub dword [edx + 0x10], esi
sub dword [ebp + 0x14], esi
jne 0x407587
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov eax, dword [ebx]
mov eax, dword [eax + 0x10]
mov dword [ebx + 4], 0x29a
test eax, eax
jne 0x406414
jmp 0x406548
sub eax, esi
mov dword [esp + 8], eax
add esi, dword [ebx + 8]
mov dword [esp + 4], esi
mov eax, dword [edi + 0x30]
mov dword [esp], eax
call sym._crc32
mov dword [edi + 0x30], eax
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + 0x2c]
jmp 0x406f93
sub eax, ebp
mov dword [esp + 8], eax
add ebp, dword [ebx + 8]
mov dword [esp + 4], ebp
mov eax, dword [edi + 0x30]
mov dword [esp], eax
call sym._crc32
mov ecx, dword [ebx + 0x1c]
mov dword [edi + 0x30], eax
jmp 0x406bf1
mov eax, dword [str.stream_error]
mov dword [edi + 0x18], eax
jmp 0x406238
mov edx, dword [ebx + 0x5c]
mov eax, dword [ebx + 0x6c]
xor ecx, ecx
sub eax, edx
test edx, edx
js 0x407609
mov ecx, dword [ebx + 0x38]
add ecx, edx
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 1
mov dword [esp], ebx
call sym.__tr_flush_block
mov ebp, dword [ebx]
mov eax, dword [ebx + 0x6c]
mov edx, dword [ebp + 0x1c]
mov dword [ebx + 0x5c], eax
mov dword [esp], edx
mov dword [esp + 0x14], edx
call sym.__tr_flush_bits
mov edx, dword [esp + 0x14]
mov eax, dword [ebp + 0x10]
mov esi, dword [edx + 0x14]
cmp esi, eax
cmova esi, eax
test esi, esi
je 0x407587
mov ecx, dword [edx + 0x10]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], esi
mov dword [esp + 4], ecx
mov dword [esp], eax
call sym._memcpy
mov edx, dword [esp + 0x14]
add dword [ebp + 0xc], esi
add dword [edx + 0x10], esi
add dword [ebp + 0x14], esi
sub dword [ebp + 0x10], esi
sub dword [edx + 0x14], esi
jne 0x407587
mov eax, dword [edx + 8]
mov dword [edx + 0x10], eax
jmp 0x407587
mov edx, dword [ebx + 0x4c]
mov eax, dword [ebx + 0x44]
xor ecx, ecx
mov word [eax + edx*2 - 2], cx
lea edx, [edx + edx - 2]
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._memset
mov esi, dword [ebx + 0x74]
test esi, esi
jne 0x4063b5
mov dword [ebx + 0x6c], 0
mov dword [ebx + 0x5c], 0
mov dword [ebx + 0x16b4], 0
jmp 0x4063b5
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x18]
jmp 0x407371
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x18]
add esi, 4
jmp 0x407371
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x18]
add esi, 3
jmp 0x407371
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x18]
add esi, 2
jmp 0x407371
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x18]
add esi, 5
jmp 0x407371
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x18]
add esi, 7
jmp 0x407371
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x18]
add esi, 6
jmp 0x407371