.sect .text; .sect .rom; .sect .data; .sect .bss .sect .text .define .loi .define .los ! #bytes in ecx ! address in ebx ! save esi/edi. they might be register variables .los: pop edx mov eax,ecx sar ecx,1 jnb 1f movsxb eax,(ebx) push eax jmp edx 1: sar ecx,1 jnb 1f movsx eax,(ebx) push eax jmp edx 1: push edx mov edx,esi mov esi,ebx pop ebx sub esp,eax jmp 1f .loi: ! only called with size >= 4 mov edx,esi mov esi,ebx pop ebx sub esp,ecx sar ecx,2 1: mov eax,edi mov edi,esp rep movs mov esi,edx mov edi,eax jmp ebx