能力值:
( LV2,RANK:10 )
|
-
-
10 楼
asm
PUSH ESI
PUSH EDI
PUSH EBX
PUSH EBP
CLD
MOV ESI,EAX
MOV EBP,$F4FA8928
MOV ECX,$37A8470E
MOV EDI,$7758B42B
@@loc_110D8C48: MOV EBX,$267B0B11
ROL EBP,1
XOR EBX,EBP
LODS DWORD PTR DS:[ESI]
TEST EAX,$0FF
JNZ @@loc_110D8C5E
JMP @@loc_110D8D08
@@loc_110D8C5E: TEST EAX,$0FF00
JE @@loc_110D8CB3
TEST EAX,$0FF0000
JE @@loc_110D8CBA
TEST EAX,$FF000000
JE @@loc_110D8CC1
XOR ECX,EAX
MOV EDX,EBX
XOR EDI,EAX
ADD EDX,EDI
OR EDX,$2040801
AND EDX,$BFEF7FDF
MOV EAX,ECX
MUL EDX
ADC EAX,EDX
MOV EDX,EBX
ADC EAX,0
ADD EDX,ECX
OR EDX,$804021
AND EDX,$7DFEFBFF
MOV ECX,EAX
MOV EAX,EDI
MUL EDX
ADD EDX,EDX
ADC EAX,EDX
JNB @@loc_110D8CAF
ADD EAX,2
@@loc_110D8CAF: MOV EDI,EAX
JMP @@loc_110D8C48
@@loc_110D8CB3: AND EAX,$0FF
JMP @@loc_110D8CC1
@@loc_110D8CBA: AND EAX,$0FFFF
JMP @@loc_110D8CC1
@@loc_110D8CC1: XOR ECX,EAX
MOV EDX,EBX
XOR EDI,EAX
ADD EDX,EDI
OR EDX,$2040801
AND EDX,$BFEF7FDF
MOV EAX,ECX
MUL EDX
ADC EAX,EDX
MOV EDX,EBX
ADC EAX,0
ADD EDX,ECX
OR EDX,$804021
AND EDX,$7DFEFBFF
MOV ECX,EAX
MOV EAX,EDI
MUL EDX
ADD EDX,EDX
ADC EAX,EDX
JNB @@loc_110D8CFD
ADD EAX,2
@@loc_110D8CFD: MOV EDI,EAX
MOV EBX,$267B0B11
ROL EBP,1
XOR EBX,EBP
@@loc_110D8D08: XOR ECX,$9BE74448
MOV EDX,EBX
XOR EDI,$9BE74448
ADD EDX,EDI
OR EDX,$2040801
AND EDX,$BFEF7FDF
MOV EAX,ECX
MUL EDX
ADC EAX,EDX
MOV EDX,EBX
ADC EAX,0
ADD EDX,ECX
OR EDX,$804021
AND EDX,$7DFEFBFF
MOV ECX,EAX
MOV EAX,EDI
MUL EDX
ADD EDX,EDX
ADC EAX,EDX
JNB @@loc_110D8D4C
ADD EAX,2
@@loc_110D8D4C: MOV EDI,EAX
MOV EBX,$267B0B11
ROL EBP,1
XOR EBX,EBP
XOR ECX,$66F42C48
MOV EDX,EBX
XOR EDI,$66F42C48
ADD EDX,EDI
OR EDX,$2040801
AND EDX,$BFEF7FDF
MOV EAX,ECX
MUL EDX
ADC EAX,EDX
MOV EDX,EBX
ADC EAX,0
ADD EDX,ECX
OR EDX,$804021
AND EDX,$7DFEFBFF
MOV ECX,EAX
MOV EAX,EDI
MUL EDX
ADD EDX,EDX
ADC EAX,EDX
JNB @@loc_110D8D9B
ADD EAX,2
@@loc_110D8D9B: MOV EDX,ECX
XOR EAX,ECX
POP EBP
POP EBX
POP EDI
POP ESI
end;
DELPHI
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
{
__int64 mask_r, mask_g, mask_b;
mask_r = 0x001F001F001F001F; //00000000 00011111
mask_g = 0x00E000E000E000E0; //00000000 11100000
mask_b = 0x00C000C000C000C0; //00000000 11000000
__asm
{
push edi
push esi
push ebx
mov ebx, [arg_1]
mov esi, [arg_0]
mov eax, [arg_2]
mov edx, [arg_4]
movd mm2, [ALPHA]
punpcklwd mm2, mm2
punpckldq mm2, mm2
movq mm3, mm2
movq mm4, mm2
psrlw mm2, 11
pand mm4, [mask_r]
psllw mm3, 5
psrlw mm3, 10
movq mm0, [mask_g]
paddusb mm2, mm0
paddusb mm4, mm0
paddusb mm3, [mask_b]
loc_47CD76:
mov edi, ebx
mov ecx, 200
loc_47CD7D:
movq mm6, qword ptr [esi]
movq mm5, qword ptr [eax]
movq mm1, mm6
psrlw mm1, 11
pmullw mm1, mm5
psrlw mm1, 6
paddusb mm1, mm2
psubusb mm1, mm0
movq mm7, mm6
psllw mm7, 5
psrlw mm7, 10
pmullw mm7, mm5
psllw mm1, 0Bh
psrlw mm7, 6
paddusb mm7, mm3
psubsw mm7, [mask_b]
pand mm6, [mask_r]
psllw mm7, 5
por mm1, mm7
pmullw mm6, mm5
psrlw mm6, 6
paddusb mm6, mm4
psubusb mm6, mm0
por mm1, mm6
movq qword ptr [edi], mm1
add edi, 8
add esi, 8
add eax, 8
loop loc_47CD7D
add ebx, [arg_3]
dec edx
jg short loc_47CD76
emms
pop ebx
pop esi
pop edi
}
}
|