Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6812 → Rev 6813

/programs/fs/kfar/trunk/zlib/trees.asm
732,6 → 732,7
dec dword[bits]
sub eax,2
jmp @b
align 4
@@:
dec word[eax] ;move one leaf down the tree
add word[eax+2],2 ;move one overflow item as its brother
765,10 → 766,7
movzx eax,word[edi+deflate_state.heap+2*eax]
mov [m],eax ;m = s.heap[--h]
cmp eax,[max_code]
jle @f ;if (..>..) continue
dec ecx
jmp .cycle4
@@:
jg .cycle4 ;if (..>..) continue
mov esi,[m]
imul esi,sizeof.ct_data
add esi,[tree] ;esi = &tree[m]
786,9 → 784,11
@@:
dec ecx
jmp .cycle4
align 4
.cycle4end:
dec dword[bits]
jmp .cycle3
align 4
.end_f:
popad
ret
913,30 → 913,26
mov dword[edi+deflate_state.heap_len],0
mov dword[edi+deflate_state.heap_max],HEAP_SIZE
 
cmp ecx,0
jle .cycle0end
xor edx,edx
mov edx,[tree]
xor ecx,ecx
.cycle0: ;for (..;..<..;..)
mov eax,edx
imul eax,sizeof.ct_data
add eax,[tree]
cmp word[eax+Freq],0
cmp ecx,[elems]
jge .cycle0end
cmp word[edx+Freq],0
je @f ;if (..!=0)
inc dword[edi+deflate_state.heap_len]
mov eax,[edi+deflate_state.heap_len]
mov [max_code],edx
mov [edi+deflate_state.heap+2*eax],dx
mov eax,edx
add eax,edi
add eax,deflate_state.depth
mov byte[eax],0
mov [max_code],ecx
mov [edi+deflate_state.heap+2*eax],cx
mov byte[edi+deflate_state.depth+ecx],0
jmp .end0
align 4
@@: ;else
mov word[eax+Len],0
mov word[edx+Len],0
.end0:
inc edx
loop .cycle0
add edx,sizeof.ct_data
inc ecx
jmp .cycle0
align 4
.cycle0end:
 
1025,12 → 1021,10
 
mov eax,ecx
add eax,edi
add eax,deflate_state.depth
mov al,byte[eax]
mov al,byte[eax+deflate_state.depth]
mov edx,[m]
add edx,edi
add edx,deflate_state.depth
mov ah,byte[edx]
mov ah,byte[edx+deflate_state.depth]
cmp al,ah
jl @f ;if (al>=ah) al=al : al=ah
mov al,ah
1038,8 → 1032,7
inc al
mov edx,[node]
add edx,edi
add edx,deflate_state.depth
mov byte[edx],al
mov byte[edx+deflate_state.depth],al
 
mov eax,[node]
mov edx,[m]
1143,8 → 1136,7
mov eax,[curlen]
imul eax,sizeof.ct_data
add eax,edi
add eax,deflate_state.bl_tree+Freq
add word[eax],bx
add word[eax+deflate_state.bl_tree+Freq],bx
jmp .end4
.end1:
cmp dword[curlen],0
1154,14 → 1146,12
je @f ;if (..!=..)
imul eax,sizeof.ct_data
add eax,edi
add eax,deflate_state.bl_tree+Freq
inc word[eax]
inc word[eax+deflate_state.bl_tree+Freq]
@@:
mov eax,REP_3_6
imul eax,sizeof.ct_data
add eax,edi
add eax,deflate_state.bl_tree+Freq
inc word[eax]
inc word[eax+deflate_state.bl_tree+Freq]
jmp .end4
.end2:
cmp ebx,10
1169,15 → 1159,13
mov eax,REPZ_3_10
imul eax,sizeof.ct_data
add eax,edi
add eax,deflate_state.bl_tree+Freq
inc word[eax]
inc word[eax+deflate_state.bl_tree+Freq]
jmp .end4
.end3: ;else
mov eax,REPZ_11_138
imul eax,sizeof.ct_data
add eax,edi
add eax,deflate_state.bl_tree+Freq
inc word[eax]
inc word[eax+deflate_state.bl_tree+Freq]
.end4:
mov dword[curlen],0
mov eax,[curlen]
1230,13 → 1218,13
mov eax,[tree]
movzx eax,word[eax+Len]
mov [nextlen],eax
cmp eax,0
jne @f ;if (..==0)
xor ecx,ecx
test eax,eax
jnz .cycle0 ;if (..==0)
mov dword[max_count],138
mov dword[min_count],3
@@:
 
xor ecx,ecx
align 4
.cycle0: ;for (..;..<=..;..)
cmp ecx,[max_code]
jg .cycle0end
1257,6 → 1245,7
jne .end0 ;if (..<.. && ..==..)
inc ecx
jmp .cycle0 ;continue
align 4
.end0:
cmp ebx,[min_count]
jge .end1 ;else if (..<..)
1265,8 → 1254,7
add ebx,deflate_state.bl_tree
send_code edi, [curlen], ebx
dec dword[count]
cmp dword[count],0
jne @b ;while (..!=0)
jnz @b ;while (..!=0)
jmp .end4
align 4
.end1:
1378,10 → 1366,10
movzx eax,byte[eax]
imul eax,sizeof.ct_data
add eax,edi
add eax,deflate_state.bl_tree+Len
cmp word[eax],0
cmp word[eax+deflate_state.bl_tree+Len],0
jne .cycle0end ;if (..!=0) break
jmp .cycle0
align 4
.cycle0end:
; Update opt_len to include the bit length tree and counts
mov eax,[max_blindex]
1445,10 → 1433,9
add eax,bl_order
movzx eax,byte[eax]
imul eax,sizeof.ct_data
mov ebx,edi
add ebx,deflate_state.bl_tree+Len
add ebx,eax
stdcall send_bits, edi, ebx, 3
add eax,edi
movzx eax,word[eax+deflate_state.bl_tree+Len]
stdcall send_bits, edi, eax, 3
inc ecx
jmp .cycle0
align 4
1989,7 → 1976,7
dec dword[len]
cmp dword[len],0
jg @b ;while (..>..)
shl eax,1
shr eax,1
ret
endp