2008-11-03 14:17:14 +01:00
|
|
|
#code32 TRUE
|
|
|
|
|
|
|
|
inline fastcall dword malloc(dword ECX){
|
|
|
|
dword size, heap;
|
|
|
|
#speed
|
|
|
|
size = ECX;
|
|
|
|
EAX = 68;
|
|
|
|
EBX = 11;
|
|
|
|
$int 0x40;
|
|
|
|
heap = EAX;
|
|
|
|
IF (size<=heap)
|
|
|
|
{
|
|
|
|
EAX = 68;
|
|
|
|
EBX = 12;
|
|
|
|
ECX = size;
|
|
|
|
$int 0x40;
|
|
|
|
}
|
|
|
|
ELSE EAX=-1;
|
|
|
|
#codesize
|
|
|
|
}
|
|
|
|
|
|
|
|
inline fastcall dword free(dword ECX){
|
|
|
|
#speed
|
|
|
|
EAX = 68;
|
|
|
|
EBX = 13;
|
|
|
|
$int 0x40;
|
|
|
|
#codesize
|
|
|
|
}
|
|
|
|
|
|
|
|
inline fastcall dword realloc(dword ECX, EDX){
|
|
|
|
#speed
|
|
|
|
EAX = 68;
|
|
|
|
EBX = 20;
|
|
|
|
$int 0x40;
|
|
|
|
#codesize
|
|
|
|
}
|
2010-02-15 02:23:03 +01:00
|
|
|
|
|
|
|
|
|
|
|
inline fastcall memmov( 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:
|
|
|
|
}
|
|
|
|
}
|