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