; ConvFloatVTD °³¹ß - 2011.09.02 ; ConvFloatVTD °³¹ß [Tilt] - 2011.09.05 ; ConvFloatVTD ¿Ï·á [T+D]- 2011.09.06 .data astPair STRUCT pos dword ? pair dword ? dtype dword ? peak dword ? x dword ? y dword ? src dword ? ref dword ? zone dword ? Thre dword ? astPair ENDS ConvNSprShift equ 6 ; shift 2 & shift 4 SprShift equ 4 ConvShift equ 2 SprMulti equ 16 ConvMulti equ 4 .code InspLeft equ qword ptr[rbp+ 30h] InspRight equ qword ptr[rbp+ 38h] InspTop equ qword ptr[rbp+ 40h] InspBottom equ qword ptr[rbp+ 48h] DefectX equ qword ptr[rbp+ 50h] DefectY equ qword ptr[rbp+ 58h] DefectType equ qword ptr[rbp+ 60h] DefectVal equ qword ptr[rbp+ 68h] PairAddr equ qword ptr[rbp+ 70h] nPair equ qword ptr[rbp+ 78h] maxPair equ qword ptr[rbp+ 80h] PairSize equ qword ptr[rbp+ 88h] BuffWidth equ qword ptr[rbp+ 90h] iPitch16 equ qword ptr[rbp+ 98h] Threshold equ qword ptr[rbp+ 0a0h] Suppress equ qword ptr[rbp+ 0a8h] ConAddr2 equ qword ptr[rbp+ 0b0h] tilt16 equ qword ptr[rbp+ 0b8h] PitchBuff equ qword ptr[rbp+ 0c0h] DThSlide equ qword ptr[rbp+ 0c8h] GraySrc equ qword ptr[rbp+ 0d0h] GrayCmp equ qword ptr[rbp+ 0d8h] ZoneId equ qword ptr[rbp+ 0e0h] ZoneTh equ qword ptr[rbp+ 0e8h] endLine equ qword ptr[rbp+ 0f0h] ix equ rsi iy equ rdi ix32 equ esi iy32 equ edi rrNoD equ r9 rrXoD equ r10 rrYoD equ r11 rrToD equ r12 rrPoD equ r13 rrImgAddr equ r14 rrConAddr equ r15 rdConAddr equ r15d rwConAddr equ r15w rrConAddr2 equ r8 rdConAddr2 equ r8d xxZero equ xmm0 xxTemp equ xmm1 xxSrc equ xmm2 xxCmp equ xmm3 xxPeak equ xmm4 xxPeakAbs equ xmm5 xxfSPR equ xmm6 xxsSPR equ xmm7 xxThres equ xmm8 xxSupp equ xmm9 xxSrc1 equ xmm10 xxSrc2 equ xxTemp xxSrc3 equ xxTemp xxCmp1 equ xmm13 xxCmp2 equ xxTemp xxCmp3 equ xxTemp xxDStart equ xmm11 xxDSlide equ xmm12 xxfSprT equ xmm14 xxsSprT equ xmm15 ConvFloatVTD PROC local ImgAddr : qword ; ÆÄ¶ó¹ÌÅÍ·Î ³Ñ¾î¿Â °ª local ImgAddrLeft : qword local ImgConLine : qword ; Conv Buffer ¸¸µé¶§ ½ÃÀÛ ÁÖ¼Ò local F_Y2Insp : qword local maxPixelD : qword local ConPitch : qword ; 8*iPitch local ConPitch2 : qword local ConAddr : qword local ConOrigin : qword local pairTop : qword local pairBottom : qword local iPitchHUp : qword local iPitch : qword local iPitchLast : qword local yPlusPitch : qword local ConBottom : qword push rbp mov rbp, rsp push r10 push r11 push r12 push r13 push r14 push r15 push rdi push rsi push rbx add rbp, 08h add rbp, 080h ; ÆÄ¶ó¹ÌÅÍ·Î ³Ñ¾î¿Â register°ª ¿Å±â±â mov ImgAddr , rcx mov ConAddr , rdx add ConAddr, 20h add ConAddr2, 20h mov maxPixelD , r8 mov iPitchLast, 0 ; register ÇÒ´ç. mov ix, InspLeft mov iy, InspTop mov rrXoD, DefectX mov rrYoD, DefectY mov rrToD, DefectType mov rrPoD, DefectVal ; mmx °ª ¸¸µé±â mov rax, Threshold ; Threshold sal rax, SprShift movd xxThres, rax movdqa xmm0, xxThres punpcklwd xmm0, xxThres pshufd xxThres, xmm0, 0 movdqa xxDStart, xxThres psrlw xxDStart, ConvNSprShift movd xxDSlide, DThSlide movdqa xmm0, xxDSlide punpcklwd xmm0, xxDSlide pshufd xxDSlide, xmm0, 0 mov rax, Suppress ; supress sal rax, ConvNSprShift movd xxSupp, rax movdqa xmm0, xxSupp punpcklwd xmm0, xxSupp pshufd xxSupp, xmm0, 0 mov rcx, tilt16 ; tilt setting and rcx, 0fh movd xxsSprT, rcx movdqa xmm0, xxsSprT punpcklwd xmm0, xxsSprT pshufd xxsSprT, xmm0, 0 mov rax, SprMulti sub rax, rcx movd xxfSprT, rax movdqa xmm0, xxfSprT punpcklwd xmm0, xxfSprT pshufd xxfSprT, xmm0, 0 mov rax, tilt16 sar rax, SprShift mov tilt16, rax mov rax, iPitch16 ; iPitch Setting sar rax, SprShift mov iPitch, rax mov rcx, iPitch16 and rcx, 0fh cmp rcx, 8 jl PITCH_H_UP_PASS inc rax PITCH_H_UP_PASS: mov iPitchHUp, rax movd xxsSPR, rcx ; sSpr movdqa xmm0, xxsSPR punpcklwd xmm0, xxsSPR pshufd xxsSPR, xmm0, 0 mov rax, SprMulti ; fSpr sub rax, rcx movd xxfSPR, rax movdqa xmm0, xxfSPR punpcklwd xmm0, xxfSPr pshufd xxfSPr, xmm0, 0 ; °Ë»ç ¿µ¿ª ¼³Á¤(width¸¦ pitch¸¸Å­ Àß¶ó¾ß ºñ±³ÇÑ´Ù) ; ÁÖ¼Ò°ª ¼³Á¤ mov rax, InspBottom mov ConBottom, rax mov rax, InspRight sub rax, InspLeft sar rax, 4 sal rax, 4 add rax, InspLeft mov InspRight, rax ; ½ÇÁ¦ °Ë»ç ¿µ¿ª ³¡ÁöÁ¡ º¯°æ(16 byte align) mov rax, BuffWidth mul InspTop add rax, ImgAddr add rax, ix mov ImgAddrLeft, rax mov rax, 20h mul iPitch mov ConPitch, rax mov rax, InspTop add rax, iPitch mov pairTop, rax mov rax, InspBottom sub rax, iPitch sub rax, 2 mov InspBottom, rax sub rax, iPitch mov pairBottom, rax pxor xmm0, xmm0 mov rrImgAddr, ImgAddrLeft mov rrConAddr, ConAddr mov rrConAddr2, ConAddr2 jmp LOOP_X_CHECK LOOP_X_TAIL: jmp PAIRING_VERT PAIRING_VERT_RETURN: add ImgAddrLeft, 10h mov rrImgAddr, ImgAddrLeft mov rrConAddr, ConAddr mov rrConAddr2, ConAddr2 mov iy, InspTop LOOP_X_CHECK: cmp ix, InspRight jge END_FUNC LOOP_X_BODY: ; dec iy ; Reverse Filter¸¦ À§ÇØ ConBuff¸¦ ÇÑÁÙ ´õ ¸¸µç´Ù. ; sub rrImgAddr, BuffWidth ; sub rrConAddr, 20h ; sub rrConAddr2, 20h mov iy, InspTop mov rrImgAddr, ImgAddrLeft mov rrConAddr, ConAddr mov rrConAddr2, ConAddr2 jmp MAKE_CONBUFF_BODY_TAIL_CHECK MAKE_CONBUFF_RETURN: mov iy, InspTop mov rrImgAddr, ImgAddrLeft mov rrConAddr, ConAddr mov rrConAddr2, ConAddr2 jmp MAKE_CONBUFF2_HEAD MAKE_CONBUFF2_RETURN: mov iy, InspTop mov rrImgAddr, ImgAddrLeft mov rrConAddr, ConAddr mov rrConAddr2, ConAddr2 mov F_Y2Insp, 0 jmp LOOP_Y_CHECK DPC_READ: cmp PitchBuff, 0 je DPC_READ_RETURN mov rcx, iy sar rcx, 4 sal rcx, 2 ; Pitch 16Pixel¿¡ Çѹø¾¿(>>4), Pitch´Â DWORD(4BYTE)<<2 add rcx, PitchBuff movsxd rax, dword ptr[rcx] cmp rax, iPitchLast je DPC_READ_RETURN mov iPitchLast, rax mov rbx, rax and rbx, 0fh sar rax, SprShift ; SprShift(>>4), Line(16*2 = << 5) sal rax, 5 mov ConPitch, rax movd xxsSpr, rbx ; sSpr movdqa xmm1, xxsSpr punpcklwd xmm1, xxsSpr pshufd xxsSpr, xmm1, 0 mov rdx, SprMulti sub rdx, rbx movd xxfSpr, rdx ; fSpr movdqa xmm1, xxfSpr punpcklwd xmm1, xxfSpr pshufd xxfSpr, xmm1, 0 jmp DPC_READ_RETURN LOOP_Y_TAIL: inc iy add rrImgAddr, BuffWidth add rrConAddr, 20h add rrConAddr2, 20h LOOP_Y_CHECK: cmp rrNoD, maxPixelD jge PAIRING_VERT cmp iy, InspBottom jl LOOP_Y_BODY ; Y Double Check, YÃà Conv¸¦ 16 Pixel ´ÜÀ§·Î ¸¸µå´Âµ¥. °Ë»ç´Â 8 Pixel ¾¿ ÇϹǷΠ2¹ø y·çÇÁ µ¹¸®±â. add ix, 8 cmp F_Y2Insp, 1 jge LOOP_X_TAIL ; y_end & goto x_tail mov F_Y2Insp, 1 mov iy, InspTop mov rrConAddr, ConAddr mov rrConAddr2, ConAddr2 add rrConAddr, 10h add rrConAddr2, 10h jmp LOOP_Y_BODY ; Con ¹öÆÛ ¸¸µé±â MAKE_CONBUFF_BODY_TAIL_CHECK: movdqu xxSrc, [rrImgAddr] movdqa xxSrc1, xxSrc punpcklbw xxSrc, xmm0 punpckhbw xxSrc1, xmm0 movdqu xxCmp, [rrImgAddr+ 1] movdqa xxCmp1, xxCmp punpcklbw xxCmp, xmm0 punpckhbw xxCmp1, xmm0 paddw xxSrc, xxCmp paddw xxSrc1, xxCmp1 movdqu [rrConAddr], xxSrc movdqu [rrConAddr+ 10h], xxSrc1 add rrImgAddr, BuffWidth add rrConAddr, 20h inc iy cmp iy, ConBottom jle MAKE_CONBUFF_BODY_TAIL_CHECK jmp MAKE_CONBUFF_RETURN MAKE_CONBUFF2_HEAD: mov rax, rrImgAddr add rax, tilt16 mov rrConAddr2, ConAddr2 MAKE_CONBUFF2_BODY: movdqu xxSrc, [rax] movdqa xxSrc1, xxSrc punpcklbw xxSrc, xmm0 punpckhbw xxSrc1, xmm0 pmullw xxSrc, xxfSprT pmullw xxSrc1, xxfSprT movdqu xxCmp, [rax+ 2] movdqa xxCmp1, xxCmp punpcklbw xxCmp, xmm0 punpckhbw xxCmp1, xmm0 pmullw xxCmp, xxsSprT pmullw xxCmp1, xxsSprT paddw xxSrc, xxCmp paddw xxSrc1, xxcmp1 psrlw xxSrc, SprShift psrlw xxSrc1, SprShift movdqu xxCmp, [rax+ 1] movdqa xxCmp1, xxCmp punpcklbw xxCmp, xmm0 punpckhbw xxCmp1, xmm0 paddw xxSrc, xxCmp paddw xxSrc1, xxCmp1 movdqu [rrConAddr2], xxSrc movdqu [rrConAddr2+ 10h], xxSrc1 add rax, BuffWidth add rrConAddr2, 20h inc iy cmp iy, ConBottom jle MAKE_CONBUFF2_BODY jmp MAKE_CONBUFF2_RETURN LOOP_Y_BODY: jmp DPC_READ DPC_READ_RETURN: movdqu xxSrc1, [rrConAddr] ; ¼Ò½º ¹öÆÛ movdqu xxSrc2, [rrConAddr+ 20h] movdqa xxSrc, xxSrc1 paddw xxSrc, xxSrc2 psllw xxSrc, SprShift movdqa xxTemp, xxSrc ; suppress (2*2*SPR ÇØÁØ suppress) psubusw xxTemp, xxSupp psubusw xxSrc, xxTemp mov rax, rrConAddr2 ; ºñ±³ ¹öÆÛ ÇÕ ¸¸µé±â add rax, ConPitch movdqu xxCmp1, [rax] movdqa xxCmp, xxCmp1 pmullw xxCmp, xxfSPR movdqu xxCmp1, [rax+ 20h] movdqa xxTemp, xxCmp1 psllw xxTemp, SprShift paddw xxCmp, xxTemp movdqu xxTemp, [rax+ 40h] pmullw xxTemp, xxsSPR paddw xxCmp, xxTemp movdqa xxTemp, xxCmp ; suppress (2*2*SPR ÇØÁØ suppress) psubusw xxTemp, xxSupp psubusw xxCmp, xxTemp ; jmp DTH_PASS movdqa xxThres, xxSrc pmaxuw xxThres, xxCmp psrlw xxThres, ConvNSprShift pmullw xxThres, xxDSlide psrlw xxThres, 8 paddw xxThres, xxDStart psllw xxThres, ConvNSprShift ; DTH_PASS: ; JMP REINSPECT_PRE REINSPECT_RETURN: ; JMP ReReINSPECT_PRE ReReINSPECT_RETURN: INSPECT_BLACK: movdqa xxPeakAbs, xxCmp psubusw xxPeakAbs, xxSrc movdqa xxPeak, xxPeakAbs pcmpgtw xxPeak, xxThres pmovmskb rax, xxPeak cmp rax, 0 je INSPECT_WHITE mov rbx, 0 ; Èæ°áÇÔ flag jmp DEFECT_00 INSPECT_WHITE: movdqa xxPeakAbs , xxSrc psubusw xxPeakAbs , xxCmp movdqa xxPeak, xxPeakAbs pcmpgtw xxPeak, xxThres pmovmskb rax, xxPeak cmp rax, 0 je LOOP_Y_TAIL mov rbx, 1 ; ¹é°áÇÔ flag jmp DEFECT_00 REINSPECT_PRE: ;JMP REINSPECT_RETURN paddw xxCmp1, xxCmp2 ; ºñ±³ ¹öÆÛ 1+2 psllw xxCmp1, SprShift movdqu xxSrc3, [rrConAddr- 20h] ; »ó´ë ¹öÆÛ 1+ 2+ 3 pmullw xxSrc3, xxSSPR psllw xxSrc1, SprShift paddw xxSrc3, xxSrc1 pmullw xxSrc2, xxFSpr paddw xxSrc3, xxSrc2 JMP REINSPECT_RETURN REINSPECT_BLACK: movdqa xxTemp, xxCmp1 psubusw xxTemp, xxSrc3 pcmpgtw xxTemp, xxThres pand xxPeak, xxTemp pmovmskb rcx, xxPeak cmp rcx, 0 je INSPECT_WHITE mov rbx, 0 jmp DEFECT_00 ;ReReINSPECT_BLACK REINSPECT_WHITE: movdqa xxTemp, xxSrc3 psubusw xxTemp, xxCmp1 pcmpgtw xxTemp, xxThres pand xxPeak, xxTemp pmovmskb rcx, xxPeak cmp rcx, 0 je LOOP_Y_TAIL mov rbx, 1 jmp DEFECT_00 ;ReReINSPECT_WHITE DEFECT_00: pextrw rax, xxPeak, 0 cmp rax, 0h je Defect_01 pextrw rax, xxPeakAbs, 0 sar rax, ConvNSprShift mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 mov [rrToD+ 2*rrNoD], bx mov [rrPoD+ 2*rrNoD], ax pextrw rax, xxSrc, 0h mov rcx, GraySrc mov [rcx+ 4*rrNoD], eax pextrw rax, xxCmp, 0h mov rcx, GrayCmp mov [rcx+ 4*rrNoD], eax inc rrNoD DEFECT_01: inc ix pextrw rax, xxPeak, 1 cmp rax, 0h je Defect_02 pextrw rax, xxPeakAbs, 1 sar rax, ConvNSprShift mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 mov [rrToD+ 2*rrNoD], bx mov [rrPoD+ 2*rrNoD], ax pextrw rax, xxSrc, 1h mov rcx, GraySrc mov [rcx+ 4*rrNoD], eax pextrw rax, xxCmp, 1h mov rcx, GrayCmp mov [rcx+ 4*rrNoD], eax inc rrNoD DEFECT_02: inc ix pextrw rax, xxPeak, 2 cmp rax, 0h je Defect_03 pextrw rax, xxPeakAbs, 2 sar rax, ConvNSprShift mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 mov [rrToD+ 2*rrNoD], bx mov [rrPoD+ 2*rrNoD], ax pextrw rax, xxSrc, 2h mov rcx, GraySrc mov [rcx+ 4*rrNoD], eax pextrw rax, xxCmp, 2h mov rcx, GrayCmp mov [rcx+ 4*rrNoD], eax inc rrNoD DEFECT_03: inc ix pextrw rax, xxPeak, 3 cmp rax, 0h je Defect_04 pextrw rax, xxPeakAbs, 3 sar rax, ConvNSprShift mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 mov [rrToD+ 2*rrNoD], bx mov [rrPoD+ 2*rrNoD], ax pextrw rax, xxSrc, 3h mov rcx, GraySrc mov [rcx+ 4*rrNoD], eax pextrw rax, xxCmp, 3h mov rcx, GrayCmp mov [rcx+ 4*rrNoD], eax inc rrNoD DEFECT_04: inc ix pextrw rax, xxPeak, 4 cmp rax, 0h je Defect_05 pextrw rax, xxPeakAbs, 4 sar rax, ConvNSprShift mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 mov [rrToD+ 2*rrNoD], bx mov [rrPoD+ 2*rrNoD], ax pextrw rax, xxSrc, 4h mov rcx, GraySrc mov [rcx+ 4*rrNoD], eax pextrw rax, xxCmp, 4h mov rcx, GrayCmp mov [rcx+ 4*rrNoD], eax inc rrNoD DEFECT_05: inc ix pextrw rax, xxPeak, 5 cmp rax, 0h je Defect_06 pextrw rax, xxPeakAbs, 5 sar rax, ConvNSprShift mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 mov [rrToD+ 2*rrNoD], bx mov [rrPoD+ 2*rrNoD], ax pextrw rax, xxSrc, 5h mov rcx, GraySrc mov [rcx+ 4*rrNoD], eax pextrw rax, xxCmp, 5h mov rcx, GrayCmp mov [rcx+ 4*rrNoD], eax inc rrNoD DEFECT_06: inc ix pextrw rax, xxPeak, 6 cmp rax, 0h je Defect_07 pextrw rax, xxPeakAbs, 6 sar rax, ConvNSprShift mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 mov [rrToD+ 2*rrNoD], bx mov [rrPoD+ 2*rrNoD], ax pextrw rax, xxSrc, 6h mov rcx, GraySrc mov [rcx+ 4*rrNoD], eax pextrw rax, xxCmp, 6h mov rcx, GrayCmp mov [rcx+ 4*rrNoD], eax inc rrNoD DEFECT_07: inc ix pextrw rax, xxPeak, 7 cmp rax, 0h je DEFECT_END pextrw rax, xxPeakAbs, 7 sar rax, ConvNSprShift mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 mov [rrToD+ 2*rrNoD], bx mov [rrPoD+ 2*rrNoD], ax pextrw rax, xxSrc, 7h mov rcx, GraySrc mov [rcx+ 4*rrNoD], eax pextrw rax, xxCmp, 7h mov rcx, GrayCmp mov [rcx+ 4*rrNoD], eax inc rrNoD DEFECT_END: sub ix, 7 cmp bx, 0 je INSPECT_WHITE jmp LOOP_Y_TAIL PAIRING_VERT: mov iy, -1 LOOP_PAIR_NUM: inc iy cmp iy, rrNoD jge LOOP_PAIR_NUM_END mov rax, nPair cmp rax, MaxPair jge END_FUNC cmp word ptr [rrToD+ 2*iy], 3 ; check type DEFTYPE_NODEFECT= 3, DEFTYPE_DELETE= 4 jge LOOP_PAIR_NUM mov rbx, iy movsxd rcx, dword ptr [rrYoD+ 4*iy] mov rax, rcx add rax, iPitchHUp ; mov yPlusPitch, rax movsxd rrConAddr2, dword ptr[rrXoD+ 4*iy] cmp rcx, pairBottom jg PAIR_BOTTOM cmp rcx, pairTop jge PAIR_CENTER PAIR_TOP: inc rbx cmp rbx, rrNoD jge PAIR_TOP_UNPAIR movsxd rdx, dword ptr[rrYoD+ 4*rbx] ; Filter_1_Pair_YPosition cmp rdx, rax ; cmp rdx, yPlusPitch jl PAIR_TOP jg PAIR_TOP_UNPAIR movsxd rcx, dword ptr[rrXoD+ 4*rbx] ; Filter_2_Pair_XPosition cmp rrConAddr2, rcx jne PAIR_TOP movzx rrConAddr, word ptr[rrToD+ 2*rbx] ; Filter_3_TYPE_DELETE cmp rrConAddr, 3 jge LOOP_PAIR_NUM ; jge PAIR_TOP ;Filte_1_ÀÇ Á¶°ÇÀÌ (+-1)·Î ¹Ù²ð °æ¿ì ¹Ù²¸¾ß ÇÑ´Ù. mov ax, word ptr[rrToD+ 2*iy] ; Filter_4_TYPE_PAIR cmp ax, rwConAddr je LOOP_PAIR_NUM ; jge PAIR_TOP ;Filte_1_ÀÇ Á¶°ÇÀÌ ¹Ù²ð °æ¿ì ¹Ù²¸¾ß ÇÑ´Ù. mov word ptr [rrToD+ 2*rbx], 4 mov rax, PairAddr mov (astPair ptr [rax]).pos, 1 mov (astPair ptr [rax]).pair, 1 mov (astPair ptr [rax]).x, ecx mov (astPair ptr [rax]).y, edx mov (astPair ptr [rax]).dtype, rdConAddr movzx edx, word ptr[rrPoD+ 2*rbx] mov (astPair ptr [rax]).peak, edx mov rdx, GraySrc mov ecx, [rdx+ 4*rbx] sar ecx, ConvNSprShift mov (astPair ptr [rax]).src, ecx mov rdx, GrayCmp mov ecx, [rdx+ 4*rbx] sar ecx, ConvNSprShift mov (astPair ptr [rax]).ref, ecx add rax, PairSize mov PairAddr, rax inc nPair jmp LOOP_PAIR_NUM PAIR_TOP_UNPAIR: mov rcx, PairAddr mov (astPair ptr [rcx]).pos, 1 mov (astPair ptr [rcx]).pair, 5 mov (astPair ptr [rcx]).x, rdConAddr2 sub rax, iPitchHUp mov (astPair ptr [rcx]).y, eax movzx edx, word ptr[rrToD+ 2*iy] mov (astPair ptr [rcx]).dtype, edx movzx edx, word ptr[rrPoD+ 2*iy] mov (astPair ptr [rcx]).peak, edx mov rdx, GraySrc mov eax, [rdx+ 4*iy] sar eax, ConvNSprShift mov (astPair ptr [rcx]).src, eax mov rdx, GrayCmp mov eax, [rdx+ 4*iy] sar eax, ConvNSprShift mov (astPair ptr [rcx]).ref, eax add rcx, PairSize mov PairAddr, rcx inc nPair jmp LOOP_PAIR_NUM PAIR_CENTER: inc rbx cmp rbx, rrNoD jge LOOP_PAIR_NUM movsxd rdx, dword ptr[rrYoD+ 4*rbx] ; Filter_1_Pair_YPosition cmp rdx, rax ; cmp rdx, yPlusPitch jl PAIR_CENTER jg LOOP_PAIR_NUM movsxd rcx, dword ptr[rrXoD+ 4*rbx] ; Filter_2_Pair_XPosition cmp rrConAddr2, rcx jne PAIR_CENTER movzx rrConAddr, word ptr[rrToD+ 2*rbx] ; Filter_3_TYPE_DELETE cmp rrConAddr, 3 jge LOOP_PAIR_NUM ; jge PAIR_CENTER ;Filte_1_ÀÇ Á¶°ÇÀÌ (+-1)·Î ¹Ù²ð °æ¿ì ¹Ù²¸¾ß ÇÑ´Ù. mov ax, word ptr[rrToD+ 2*iy] ; Filter_4_TYPE_PAIR cmp ax, rwConAddr je LOOP_PAIR_NUM ; jge PAIR_CENTER ;Filte_1_ÀÇ Á¶°ÇÀÌ ¹Ù²ð °æ¿ì ¹Ù²¸¾ß ÇÑ´Ù. mov word ptr [rrToD+ 2*rbx], 4 mov rax, PairAddr mov (astPair ptr [rax]).pos, 2 mov (astPair ptr [rax]).pair, 1 mov (astPair ptr [rax]).x, ecx mov (astPair ptr [rax]).y, edx mov (astPair ptr [rax]).dtype, rdConAddr movzx edx, word ptr[rrPoD+ 2*rbx] mov (astPair ptr [rax]).peak, edx mov rdx, GraySrc mov ecx, [rdx+ 4*rbx] sar ecx, ConvNSprShift mov (astPair ptr [rax]).src, ecx mov rdx, GrayCmp mov ecx, [rdx+ 4*rbx] sar ecx, ConvNSprShift mov (astPair ptr [rax]).ref, ecx add rax, PairSize mov PairAddr, rax inc nPair jmp LOOP_PAIR_NUM PAIR_BOTTOM: ; ¾Õ¿¡¼­ pairingÀÌ µÇÁö ¾ÊÀ¸¸é ´õÀÌ»ó pairing ÇÒ ¼ö ¾ø´Ù. ¹«Á¶°Ç unpairÀÌ´Ù. mov rcx, PairAddr mov (astPair ptr [rcx]).pos, 3 mov (astPair ptr [rcx]).pair, 5 mov (astPair ptr [rcx]).x, rdConAddr2 mov (astPair ptr [rcx]).y, eax inc edx and edx, 1 mov (astPair ptr [rcx]).dtype, edx movzx edx, word ptr[rrPoD+ 2*iy] mov (astPair ptr [rcx]).peak, edx mov rdx, GraySrc mov eax, [rdx+ 4*iy] sar eax, ConvNSprShift mov (astPair ptr [rcx]).ref, eax mov rdx, GrayCmp mov eax, [rdx+ 4*iy] sar eax, ConvNSprShift mov (astPair ptr [rcx]).src, eax add rcx, PairSize mov PairAddr, rcx inc nPair jmp LOOP_PAIR_NUM LOOP_PAIR_NUM_END: mov rrNoD, 0 jmp PAIRING_VERT_RETURN END_FUNC: add ix32, 10h mov rax, endLine mov [rax], ix32 mov rax, nPair ; return rrNoD pop rbx pop rsi pop rdi pop r15 pop r14 pop r13 pop r12 pop r11 pop r10 pop rbp RET ConvFloatVTD ENDP end