//mem.Init dword mem_Init() { $push ebx $mov eax, 68 $mov ebx, 11 $int 0x40 $pop ebx return EAX; } //mem.Alloc dword mem_Alloc(dword size) { $push ebx $push ecx $mov eax, 68 $mov ebx, 12 $mov ecx, size $int 0x40 $pop ecx $pop ebx return EAX; } //mem.ReAlloc stdcall dword mem_ReAlloc(dword mptr, size) { //$push ebx ecx edx $push ebx $push ecx $push edx $mov eax, 68 $mov ebx, 20 $mov ecx, size $mov edx, mptr $int 0x40 $pop edx $pop ecx $pop ebx //$pop edx ecx ebx return EAX; } //mem.Free void mem_Free(dword mptr) { $push eax $push ebx $push ecx $mov eax, 68 $mov ebx, 13 $mov ecx, mptr $test ecx, ecx $jz end0 $int 0x40 @end0: $pop ecx $pop ebx $pop eax } //stdcall dword ?? inline fastcall mem_Move( EDI, ESI, ECX) { asm { mov eax, ecx cmp edi, esi jg l1 je l2 sar ecx, 2 js l2 rep movsd mov ecx, eax and ecx, 3 rep movsb jmp short l2 l1: lea esi, dsdword[ esi+ecx-4] lea edi, dsdword[ edi+ecx-4] sar ecx, 2 js l2 std rep movsd mov ecx, eax and ecx, 3 add esi, 3 add edi, 3 rep movsb cld l2: } }