一、lea esi,[esi+0]
mov ebx, [ebp+
hash
]
test
ebx, ebx
mov eax, ebx
jz short loc_80484D3
nop ; padding
lea esi, [esi+0] ; padding; ESI doesn’t changing here
loc_80484B8:
mov ecx, eax ; save previous state of
hash
to ECX
xor al, [esi+edx] ; AL=*(key+i)
add edx, 1 ; i++
shr ecx, 8 ; ECX=
hash
>>8
movzx eax, al ; EAX=*(key+i)
mov eax, dword ptr ds:crctab[eax*4] ; EAX=crctab[EAX]
xor eax, ecx ;
hash
=EAX^ECX
GCC在循环开始的时候通过填入NOP和lea esi,[esi+0]来按8字节对齐