if ((lr & 1) == 1)
{
asm
{
cld
}
lr >>= 1;
for (; i >= 0; i--)
{
//memcpy(ptrDest, ptrBuffer, lr);
asm
{
mov ecx, 1
mov esi, ptrBuffer
mov edi, ptrDest
rep movsb
mov ecx, lr
mov esi, ptrBuffer
mov edi, ptrDest
inc esi
inc edi
rep movsw
}
ptrDest += ld;
//memcpy(ptrDest, ptrBuffer, lr);
asm
{
mov ecx, 1
mov esi, ptrBuffer
mov edi, ptrDest
rep movsb
mov ecx, lr
mov esi, ptrBuffer
mov edi, ptrDest
inc esi
inc edi
rep movsw
}
ptrDest += ld;
i--;
}
}
:00424490 8B55EC mov edx, dword ptr [ebp-14]
:00424493 83E201 and edx, 00000001
:00424496 4A dec edx
:00424497 7552 jne 004244EB
:00424499 FC cld
:0042449A D17DEC sar dword ptr [ebp-14], 1 ; lr >>= 1
:0042449D 85DB test ebx, ebx
:0042449F 7C7C jl 0042451D
:004244A1 B901000000 mov ecx, 00000001
:004244A6 8B75FC mov esi, dword ptr [ebp-04] ; mov esi, ptrBuffer
:004244A9 8B7DF4 mov edi, dword ptr [ebp-0C] ; mov edi, ptrDest
:004244AC F3 repz
:004244AD A4 movsb
:004244AE 8B4DEC mov ecx, dword ptr [ebp-14] ; mov ecx, lr
:004244B1 8B75FC mov esi, dword ptr [ebp-04]
:004244B4 8B7DF4 mov edi, dword ptr [ebp-0C]
:004244B7 46 inc esi
:004244B8 47 inc edi
:004244B9 F3 repz
:004244BA 66A5 movsw
:004244BC 8B4DE8 mov ecx, dword ptr [ebp-18] ; ecx = ld
:004244BF 014DF4 add dword ptr [ebp-0C], ecx ; ptrDest += ld;
:004244C2 B901000000 mov ecx, 00000001
:004244C7 8B75FC mov esi, dword ptr [ebp-04]
:004244CA 8B7DF4 mov edi, dword ptr [ebp-0C]
:004244CD F3 repz
:004244CE A4 movsb
:004244CF 8B4DEC mov ecx, dword ptr [ebp-14]
:004244D2 8B75FC mov esi, dword ptr [ebp-04]
:004244D5 8B7DF4 mov edi, dword ptr [ebp-0C]
:004244D8 46 inc esi
:004244D9 47 inc edi
:004244DA F3 repz
:004244DB 66A5 movsw
:004244DD 8B45E8 mov eax, dword ptr [ebp-18]
:004244E0 0145F4 add dword ptr [ebp-0C], eax
:004244E3 4B dec ebx
:004244E4 4B dec ebx
:004244E5 85DB test ebx, ebx
:004244E7 7DB8 jge 004244A1
else
{
asm
{
cld
}
lr >>= 1;
for (; i >= 0; i--)
{
//memcpy(ptrDest, ptrBuffer, lr);
asm
{
mov ecx, lr
mov esi, ptrBuffer
mov edi, ptrDest
rep movsw
}
ptrDest += ld;
//memcpy(ptrDest, ptrBuffer, lr);
asm
{
mov ecx, lr
mov esi, ptrBuffer
mov edi, ptrDest
rep movsw
}
ptrDest += ld;
i--;
}
}
:004244EB FC cld
:004244EC D17DEC sar dword ptr [ebp-14], 1 ; lr >>= 1
:004244EF 85DB test ebx, ebx
:004244F1 7C2A jl 0042451D
:004244F3 8B4DEC mov ecx, dword ptr [ebp-14] ; mov ecx, lr
:004244F6 8B75FC mov esi, dword ptr [ebp-04] ; mov esi, ptrBuffer
:004244F9 8B7DF4 mov edi, dword ptr [ebp-0C] ; mov edi, ptrDest
:004244FC F3 repz
:004244FD 66A5 movsw
:004244FF 8B55E8 mov edx, dword ptr [ebp-18] ; edx = ld
:00424502 0155F4 add dword ptr [ebp-0C], edx ; ptrDest += ld
:00424505 8B4DEC mov ecx, dword ptr [ebp-14]
:00424508 8B75FC mov esi, dword ptr [ebp-04]
:0042450B 8B7DF4 mov edi, dword ptr [ebp-0C]
:0042450E F3 repz
:0042450F 66A5 movsw
:00424511 8B4DE8 mov ecx, dword ptr [ebp-18]
:00424514 014DF4 add dword ptr [ebp-0C], ecx
:00424517 4B dec ebx
:00424518 4B dec ebx
:00424519 85DB test ebx, ebx
:0042451B 7DD6 jge 004244F3