189 lines
3.9 KiB
NASM
189 lines
3.9 KiB
NASM
.686
|
|
.XMM
|
|
.model FLAT
|
|
|
|
|
|
PUBLIC _inv_level_coefficients
|
|
_TEXT SEGMENT
|
|
_blocks$ = 8 ; size = 4
|
|
_InvLevelScale$ = 12 ; size = 4
|
|
_qp_per$ = 16 ; size = 4
|
|
_inv_level_coefficients PROC
|
|
|
|
mov eax, DWORD PTR _blocks$[esp-4]
|
|
mov ecx, DWORD PTR _qp_per$[esp-4]
|
|
mov edx, DWORD PTR _InvLevelScale$[esp-4]
|
|
push esi
|
|
push edi
|
|
mov edi, 4
|
|
$LL10@inv_level_:
|
|
|
|
; 3870 : {
|
|
; 3871 : h264_short_block_row_t *block = blocks[b];
|
|
; 3872 : for (j = 0; j < 4; ++j)
|
|
; 3873 : {
|
|
; 3874 : if (block[j][0]) block[j][0]= rshift_rnd_sf((block[j][0] * InvLevelScale[j][0]) << qp_per, 4);
|
|
|
|
movsx esi, WORD PTR [eax+4-4]
|
|
test esi, esi
|
|
je SHORT $LN4@inv_level_
|
|
imul esi, DWORD PTR [edx]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4-4], si
|
|
$LN4@inv_level_:
|
|
|
|
; 3875 : if (block[j][1]) block[j][1]= rshift_rnd_sf((block[j][1] * InvLevelScale[j][1]) << qp_per, 4);
|
|
|
|
movsx esi, WORD PTR [eax+4-2]
|
|
test esi, esi
|
|
je SHORT $LN3@inv_level_
|
|
imul esi, DWORD PTR [edx+4]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4-2], si
|
|
$LN3@inv_level_:
|
|
|
|
; 3876 : if (block[j][2]) block[j][2]= rshift_rnd_sf((block[j][2] * InvLevelScale[j][2]) << qp_per, 4);
|
|
|
|
movsx esi, WORD PTR [eax+4]
|
|
test esi, esi
|
|
je SHORT $LN2@inv_level_
|
|
imul esi, DWORD PTR [edx+8]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4], si
|
|
$LN2@inv_level_:
|
|
|
|
; 3877 : if (block[j][3]) block[j][3]= rshift_rnd_sf((block[j][3] * InvLevelScale[j][3]) << qp_per, 4);
|
|
|
|
movsx esi, WORD PTR [eax+4+2]
|
|
test esi, esi
|
|
je SHORT $LN6@inv_level_
|
|
imul esi, DWORD PTR [edx+12]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+2], si
|
|
$LN6@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+4]
|
|
test esi, esi
|
|
je SHORT $LN27@inv_level_
|
|
imul esi, DWORD PTR [edx+16]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+4], si
|
|
$LN27@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+6]
|
|
test esi, esi
|
|
je SHORT $LN28@inv_level_
|
|
imul esi, DWORD PTR [edx+20]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+6], si
|
|
$LN28@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+8]
|
|
test esi, esi
|
|
je SHORT $LN29@inv_level_
|
|
imul esi, DWORD PTR [edx+24]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+8], si
|
|
$LN29@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+10]
|
|
test esi, esi
|
|
je SHORT $LN30@inv_level_
|
|
imul esi, DWORD PTR [edx+28]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+10], si
|
|
$LN30@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+12]
|
|
test esi, esi
|
|
je SHORT $LN32@inv_level_
|
|
imul esi, DWORD PTR [edx+32]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+12], si
|
|
$LN32@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+14]
|
|
test esi, esi
|
|
je SHORT $LN33@inv_level_
|
|
imul esi, DWORD PTR [edx+36]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+14], si
|
|
$LN33@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+16]
|
|
test esi, esi
|
|
je SHORT $LN34@inv_level_
|
|
imul esi, DWORD PTR [edx+40]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+16], si
|
|
$LN34@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+18]
|
|
test esi, esi
|
|
je SHORT $LN35@inv_level_
|
|
imul esi, DWORD PTR [edx+44]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+18], si
|
|
$LN35@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+20]
|
|
test esi, esi
|
|
je SHORT $LN37@inv_level_
|
|
imul esi, DWORD PTR [edx+48]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+20], si
|
|
$LN37@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+22]
|
|
test esi, esi
|
|
je SHORT $LN38@inv_level_
|
|
imul esi, DWORD PTR [edx+52]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+22], si
|
|
$LN38@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+24]
|
|
test esi, esi
|
|
je SHORT $LN39@inv_level_
|
|
imul esi, DWORD PTR [edx+56]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+24], si
|
|
$LN39@inv_level_:
|
|
movsx esi, WORD PTR [eax+4+26]
|
|
test esi, esi
|
|
je SHORT $LN9@inv_level_
|
|
imul esi, DWORD PTR [edx+60]
|
|
shl esi, cl
|
|
add esi, 8
|
|
sar esi, 4
|
|
mov WORD PTR [eax+4+26], si
|
|
$LN9@inv_level_:
|
|
add eax, 32 ; 00000020H
|
|
sub edi, 1
|
|
jne $LL10@inv_level_
|
|
pop edi
|
|
pop esi
|
|
|
|
ret 0
|
|
_inv_level_coefficients ENDP
|
|
|
|
END |