.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 SprShift equ 4 SprMulti equ 16 _return equ jmp szxMatch equ 8 ;szyMatch equ 1600 .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] GraySrc equ qword ptr[rbp+ 70h] GrayCmp equ qword ptr[rbp+ 78h] ZoneId equ qword ptr[rbp+ 80h] ZoneTh equ qword ptr[rbp+ 88h] BuffWidth equ qword ptr[rbp+ 90h] iPitch16 equ qword ptr[rbp+ 98h] piPitch16Ori equ qword ptr[rbp+ 0a0h] sSPR equ qword ptr[rbp+ 0a8h] ZoneThAddrPr equ qword ptr[rbp+ 0b0h] ZoneIdAddrPr equ qword ptr[rbp+ 0b8h] ZoneTableW equ qword ptr[rbp+ 0c0h] pMatch equ qword ptr[rbp+ 0c8h] PairAddr equ qword ptr[rbp+ 0d0h] ; ±âº»°Ë»ç WIDTH nPair equ qword ptr[rbp+ 0d8h] ; ±âº» °Ë»ç HEIGHT MaxPair equ qword ptr[rbp+ 0e0h] PairSize equ qword ptr[rbp+ 0e8h] dxPtrn equ qword ptr[rbp+ 0f0h] dyPtrn equ qword ptr[rbp+ 0f8h] szyMatch equ qword ptr[rbp+ 100h] bRFilter equ qword ptr[rbp+ 108h] DThSlide equ qword ptr[rbp+ 110h] ThSuppress equ qword ptr[rbp+ 118h] bUseUnpair equ qword ptr[rbp+ 120h] ConAddr equ qword ptr[rbp+ 128h] endLine equ qword ptr[rbp+ 130h] ExTh equ qword ptr[rbp+ 138h] ix equ rsi iy equ rdi ix32 equ esi iy32 equ edi rrImgAddr equ r8 rdImgAddr equ r8d rwImgAddr equ r8w rrNoD equ r9 rrXoD equ r10 rrYoD equ r11 rrToD equ r12 rrPoD equ r13 rrSrcD equ r14 rrCmpD equ r15 xxTemp equ xmm1 xxZTh equ xmm2 xxZId equ xmm3 xxSrc1 equ xmm4 xxSrc2 equ xmm5 xxCmp1 equ xmm6 xxCmp2 equ xmm7 xxPeakS equ xmm8 xxPeakAbs equ xmm9 xxfSpr equ xmm10 xxsSpr equ xmm11 xxSupp equ xmm12 xxSrc4 equ xmm13 xxCmp3 equ xmm14 xxCmp4 equ xmm15 xxDStart equ xxSrc4 ; ÃʱâÄ¡ xxDSlide equ xxCmp4 ; ±â¿ï±â xxDMin equ xmm15 ; Àû¿ë ±¸°£ ÃÖ¼ÒÄ¡ ; ÆÄ¶ó¹ÌÅÍ ; ·ÎÄà º¯¼ö ConvPixelVTDS PROC local maxDefect : qword local ImgAddrOri : qword local ZoneThAddr : qword local ZoneIdAddr : qword local ZoneThAddr1 : qword local ZoneIdAddr1 : qword local ZoneTableW2 : qword local pMatch1 : qword local ConBottom : qword local eyPtrn : qword local eyPtrn1 : qword local ConPitch : qword local pairTop : qword local pairBottom : qword local iPitchHUp : qword local temp : qword local c8Pixel : dword local xMatch : dword local yMatch : dword local xMatch2 : dword local yMatch2 : dword local cDPC : dword local iPitch : qword local piPitch16 : 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, 98h mov ImgAddrOri, rcx mov maxDefect, r8 mov rax, ThSuppress ; Suppress movd xxSupp, eax movdqa xxTemp, xxSupp punpcklwd xxTemp, xxSupp pshufd xxSupp, xxTemp, 0 movd xxZTh, edx ; Threshold movdqa xxTemp, xxZTh punpcklwd xxTemp, xxZTh pshufd xxZTh, xxTemp, 0 movdqa xxDStart, xxZTh mov rax, DThSlide movd xxDSlide, eax movdqa xxTemp, xxDSlide punpcklwd xxTemp, xxDSlide pshufd xxDSlide, xxTemp, 0 mov rax, 0 movd xxZId, eax movdqa xxTemp, xxZId punpcklwd xxTemp, xxZId pshufd xxZId, xxTemp, 0 mov rcx, iPitch16 and rcx, 0fh movd xxsSpr, ecx ; sSPR movdqa xxTemp, xxsSpr punpcklwd xxTemp, xxsSpr pshufd xxsSpr, xxTemp, 0 mov rax, SprMulti ; fSpr sub rax, rcx movd xxfSpr, eax movdqa xxTemp, xxfSpr punpcklwd xxTemp, xxfSpr pshufd xxfSpr, xxTemp, 0 mov xMatch2, 0 mov rax, iPitch16 ; iPitch16 sar rax, SprShift mov iPitch, rax cmp rcx, 8 jl PITCH_H_UP_PASS inc rax PITCH_H_UP_PASS: mov iPitchHUp, rax ;¼­Å§·¯¿¡¼­ Á׾ Bottom ¿¡¼­ 1 »©ÁØ´Ù.(BOE) mov rcx, InspBottom sub rcx, 1 mov InspBottom, rcx mov rcx, InspBottom sub rcx, iPitch sub rcx, 1 mov ConBottom, rcx sub rcx, iPitch mov pairBottom, rcx mov rax, InspTop add rax, iPitch mov pairTop, rax mov rax, iPitch sal rax, 5 mov ConPitch, rax mov rax, ZoneTableW add rax, rax mov ZoneTableW2, rax mov ix, InspLeft mov iy, InspTop mov rax, InspRight sub rax, InspLeft ; add rax, 15 sar rax, 4 sal rax, 4 add rax, inspLeft mov InspRight, rax mov rrXoD, DefectX mov rrYoD, DefectY mov rrToD, DefectType mov rrPoD, DefectVal mov rrSrcD, GraySrc mov rrCmpD, GrayCmp pxor xmm0, xmm0 LOOP_1: jmp LOOP_1_CHECK LOOP_1_TAIL: jmp PAIRING_VERT _return_PAIRING_VERT: add ix, 010h LOOP_1_CHECK: cmp ix, InspRight ; xÃà BED Check jge END_FUNC LOOP_1_BODY: mov iy, InspTop mov rax, BuffWidth ; À̹ÌÁö ¾îµå·¹½º Set mul iy add rax, ix add rax, ImgAddrOri mov rrImgAddr, rax mov piPitch16, 0 ; DPC Address Set cmp piPitch16Ori, 0 je DPC_PASS mov rax, iy sar rax, 4 sal rax, 2 add rax, piPitch16Ori mov piPitch16, rax DPC_PASS: jmp MAKE_CONBUFF_HEAD _return_MAKE_CONBUFF: mov iy, InspTop mov rrImgAddr, ConAddr LOOP_2: mov cDpc, 010h jmp LOOP_2_CHECK LOOP_2_TAIL: inc iy add rrImgAddr, 20h LOOP_2_CHECK: cmp iy, ConBottom ; BED Check jge LOOP_1_TAIL LOOP_2_BODY: cmp piPitch16, 0 je XMM_MAKE jmp DPC_MAKE _return_DPC_MAKE: inc cDpc jmp XMM_MAKE _return_XMM_MAKE: jmp XMM_COMPARE _return_XMM_COMPARE: jmp LOOP_2_TAIL ;;;;;;;================================================= MAKE_CONBUFF_HEAD: mov rcx, BuffWidth mov rax, ConAddr MAKE_CONBUFF: movdqu xxSrc1, [rrImgAddr] movdqa xxSrc2, xxSrc1 punpcklbw xxSrc1, xmm0 punpckhbw xxSrc2, xmm0 movdqu [rax], xxSrc1 movdqu [rax+10h], xxSrc2 add rrImgAddr, rcx add rax, 20h inc iy cmp iy, InspBottom jle MAKE_CONBUFF jmp _return_MAKE_CONBUFF DPC_MAKE: ; verticla Àº 16¹ø¿¡ Çѹø¾¿¸¸ ·ÎµùÇÑ´Ù. cDpc Ä«¿îÆ®, µ¿ÀÏ Pitch ÆÇ´ÜÈÄ Pass ±â´É cmp cDpc, 010h jne _return_DPC_MAKE mov cDpc, 0 mov rax, piPitch16 movsxd rax, dword ptr[rax] add piPitch16, 4 cmp iPitch16, rax je _return_DPC_MAKE mov iPitch16, rax mov rcx, rax and rcx, 0fh shr rax, SprShift mov iPitch, rax sal rax, 5 mov ConPitch, rax mov rdx, 010h sub rdx, rcx movd xxsSpr, rcx movdqa xxTemp, xxsSpr punpcklwd xxTemp, xxsSpr pshufd xxsSpr, xxTemp, 0 movd xxfSpr, rdx movdqa xxTemp, xxfSpr punpcklwd xxTemp, xxfSpr pshufd xxfSpr, xxTemp, 0 jmp _return_DPC_MAKE XMM_MAKE: movdqu xxSrc1, [rrImgAddr] ; rrImgAddr Àº ConBuff Addr ÀÌ´Ù. movdqu xxSrc2, [rrImgAddr+ 10h] mov rax, rrImgAddr add rax, ConPitch movdqu xxCmp1, [rax] movdqu xxCmp2, [rax+ 10h] pmullw xxCmp1, xxfSpr ; Compare SPR (fSPR, sSPR) pmullw xxCmp2, xxfSpr movdqu xxCmp3, [rax+ 20h] movdqu xxTemp, [rax+ 30h] pmullw xxCmp3, xxsSpr paddw xxCmp1, xxCmp3 pmullw xxTemp, xxsSpr paddw xxCmp2, xxTemp psrlw xxCmp1, SprShift psrlw xxCmp2, SprShift _return _return_XMM_MAKE XMM_COMPARE: mov c8Pixel, 0 jmp _XMM_COMPARE_8PIXEL _return_XMM_COMPARE_8PIXEL: cmp rrNoD, maxDefect ; BED Check jge PAIRING_VERT inc c8Pixel cmp c8Pixel, 2 je XMM_COMPARE_END ; BE_RD CHECK movdqa xxSrc1, xxSrc2 movdqa xxCmp1, xxCmp2 ;jmp _XMM_COMPARE_8PIXEL ; RD _XMM_COMPARE_8PIXEL: ; mov rax, ZoneThAddr ; movdqu xxZTh, [rax] pminuw xxSrc1, xxSupp pminuw xxCmp1, xxSupp movdqa xxZTh, xxSrc1 ; Dynamic Threshold pmaxuw xxZTh, xxCmp1 pmullw xxZTh, xxDSlide psrlw xxZTh, 8 paddw xxZTh, xxDStart movdqa xxPeakS, xxSrc1 psubsw xxPeakS, xxCmp1 pabsw xxPeakAbs, xxPeakS movdqa xxTemp, xxPeakAbs pcmpgtw xxTemp, xxZTh pmovmskb rax, xxTemp cmp rax, 0 ; BD_E Check jne DEFECT_00 add ix, 8 _return _return_XMM_COMPARE_8PIXEL XMM_COMPARE_END: sub ix, 10h ; sub ZoneThAddr, 010h ; sub ZoneIdAddr, 010h _return _return_XMM_COMPARE DEFECT_00: ; mov rax, ZoneIdAddr ; movdqu xxZId, [rax] pextrw rax, xxTemp, 0h cmp rax, 0 je DEFECT_01 mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 pextrw eax, xxSrc1, 0h mov [rrSrcD+ 4*rrNoD], eax pextrw eax, xxCmp1, 0h mov [rrCmpD+ 4*rrNoD], eax mov rcx, ZoneId pextrw eax, xxZId, 0h mov dword ptr [rcx+ 4*rrNoD], eax mov rcx, ZoneTh pextrw ebx, xxZTh, 0h mov dword ptr[rcx+ 4*rrNoD], ebx pextrw rax, xxPeakS, 0h cmp ax, 0 jg WHITE_00 mov word ptr[rrToD+ 2*rrNoD], 0 pextrw rax, xxPeakAbs, 0h sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD jmp DEFECT_01 WHITE_00: mov word ptr[rrToD+ 2*rrNoD], 1 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD DEFECT_01: inc ix pextrw rax, xxTemp, 1 cmp rax, 0 je DEFECT_02 mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 pextrw eax, xxSrc1, 1 mov [rrSrcD+ 4*rrNoD], eax pextrw eax, xxCmp1, 1 mov [rrCmpD+ 4*rrNoD], eax mov rcx, ZoneId pextrw eax, xxZId, 1 mov dword ptr [rcx+ 4*rrNoD], eax mov rcx, ZoneTh pextrw rbx, xxZTh, 1 mov dword ptr[rcx+ 4*rrNoD], ebx pextrw rax, xxPeakS, 1 cmp ax, 0 jg WHITE_01 mov word ptr[rrToD+ 2*rrNoD], 0 pextrw rax, xxPeakAbs, 1 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD jmp DEFECT_02 WHITE_01: mov word ptr[rrToD+ 2*rrNoD], 1 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD DEFECT_02: inc ix pextrw rax, xxTemp, 2 cmp rax, 0 je DEFECT_03 mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 pextrw eax, xxSrc1, 2 mov [rrSrcD+ 4*rrNoD], eax pextrw eax, xxCmp1, 2 mov [rrCmpD+ 4*rrNoD], eax mov rcx, ZoneId pextrw eax, xxZId, 2 mov dword ptr [rcx+ 4*rrNoD], eax mov rcx, ZoneTh pextrw rbx, xxZTh, 2 mov dword ptr[rcx+ 4*rrNoD], ebx pextrw rax, xxPeakS, 2 cmp ax, 0 jg WHITE_02 mov word ptr[rrToD+ 2*rrNoD], 0 pextrw rax, xxPeakAbs, 2 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD jmp DEFECT_03 WHITE_02: mov word ptr[rrToD+ 2*rrNoD], 1 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD DEFECT_03: inc ix pextrw rax, xxTemp, 3 cmp rax, 0 je DEFECT_04 mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 pextrw eax, xxSrc1, 3 mov [rrSrcD+ 4*rrNoD], eax pextrw eax, xxCmp1, 3 mov [rrCmpD+ 4*rrNoD], eax mov rcx, ZoneId pextrw eax, xxZId, 3 mov dword ptr [rcx+ 4*rrNoD], eax mov rcx, ZoneTh pextrw rbx, xxZTh, 3 mov dword ptr[rcx+ 4*rrNoD], ebx pextrw rax, xxPeakS, 3 cmp ax, 0 jg WHITE_03 mov word ptr[rrToD+ 2*rrNoD], 0 pextrw rax, xxPeakAbs, 3 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD jmp DEFECT_04 WHITE_03: mov word ptr[rrToD+ 2*rrNoD], 1 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD DEFECT_04: inc ix pextrw rax, xxTemp, 4 cmp rax, 0 je DEFECT_05 mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 pextrw eax, xxSrc1, 4 mov [rrSrcD+ 4*rrNoD], eax pextrw eax, xxCmp1, 4 mov [rrCmpD+ 4*rrNoD], eax mov rcx, ZoneId pextrw eax, xxZId, 4 mov dword ptr [rcx+ 4*rrNoD], eax mov rcx, ZoneTh pextrw rbx, xxZTh, 4 mov dword ptr[rcx+ 4*rrNoD], ebx pextrw rax, xxPeakS, 4 cmp ax, 0 jg WHITE_04 mov word ptr[rrToD+ 2*rrNoD], 0 pextrw rax, xxPeakAbs, 4 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD jmp DEFECT_05 WHITE_04: mov word ptr[rrToD+ 2*rrNoD], 1 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD DEFECT_05: inc ix pextrw rax, xxTemp, 5 cmp rax, 0 je DEFECT_06 mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 pextrw eax, xxSrc1, 5 mov [rrSrcD+ 4*rrNoD], eax pextrw eax, xxCmp1, 5 mov [rrCmpD+ 4*rrNoD], eax mov rcx, ZoneId pextrw eax, xxZId, 5 mov dword ptr [rcx+ 4*rrNoD], eax mov rcx, ZoneTh pextrw rbx, xxZTh, 5 mov dword ptr[rcx+ 4*rrNoD], ebx pextrw rax, xxPeakS, 5 cmp ax, 0 jg WHITE_05 mov word ptr[rrToD+ 2*rrNoD], 0 pextrw rax, xxPeakAbs, 5 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD jmp DEFECT_06 WHITE_05: mov word ptr[rrToD+ 2*rrNoD], 1 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD DEFECT_06: inc ix pextrw rax, xxTemp, 6 cmp rax, 0 je DEFECT_07 mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 pextrw eax, xxSrc1, 6 mov [rrSrcD+ 4*rrNoD], eax pextrw eax, xxCmp1, 6 mov [rrCmpD+ 4*rrNoD], eax mov rcx, ZoneId pextrw eax, xxZId, 6 mov dword ptr [rcx+ 4*rrNoD], eax mov rcx, ZoneTh pextrw rbx, xxZTh, 6 mov dword ptr[rcx+ 4*rrNoD], ebx pextrw rax, xxPeakS, 6 cmp ax, 0 jg WHITE_06 mov word ptr[rrToD+ 2*rrNoD], 0 pextrw rax, xxPeakAbs, 6 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD jmp DEFECT_07 WHITE_06: mov word ptr[rrToD+ 2*rrNoD], 1 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD DEFECT_07: inc ix pextrw rax, xxTemp, 7 cmp rax, 0 je DEFECT_08 mov [rrXoD+ 4*rrNoD], ix32 mov [rrYoD+ 4*rrNoD], iy32 pextrw eax, xxSrc1, 7 mov [rrSrcD+ 4*rrNoD], eax pextrw eax, xxCmp1, 7 mov [rrCmpD+ 4*rrNoD], eax mov rcx, ZoneId pextrw eax, xxZId, 7 mov dword ptr [rcx+ 4*rrNoD], eax mov rcx, ZoneTh pextrw rbx, xxZTh, 7 mov dword ptr[rcx+ 4*rrNoD], ebx pextrw rax, xxPeakS, 7 cmp ax, 0 jg WHITE_07 mov word ptr[rrToD+ 2*rrNoD], 0 pextrw rax, xxPeakAbs, 7 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD jmp DEFECT_08 WHITE_07: mov word ptr[rrToD+ 2*rrNoD], 1 sub rax, rbx mov word ptr[rrPoD+ 2*rrNoD], ax inc rrNoD DEFECT_08: inc ix _return _return_XMM_COMPARE_8PIXEL PAIRING_VERT: ; JMP _return_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 movsx rdx, word ptr [rrToD+ 2*iy] cmp rdx, 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 rrImgAddr, dword ptr[rrXoD+ 4*iy] ; Filter_2_Pair_XPosition 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] cmp rrImgAddr, rcx jne PAIR_TOP movzx rrImgAddr, word ptr[rrToD+ 2*rbx] ; Filter_3_TYPE_DELETE cmp rrImgAddr, 3 jge LOOP_PAIR_NUM ; jge PAIR_TOP ;Filte_1_ÀÇ Á¶°ÇÀÌ (+-1)·Î ¹Ù²ð °æ¿ì ¹Ù²¸¾ß ÇÑ´Ù. mov ax, word ptr[rrToD+ 2*iy] ; Filter_4_TYPE_PAIR cmp ax, rwImgAddr 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, rdImgAddr movsx edx, word ptr[rrPoD+ 2*rbx] mov (astPair ptr [rax]).peak, edx mov edx, [rrSrcD+ 4*rbx] mov (astPair ptr [rax]).src, edx mov edx, [rrCmpD+ 4*rbx] mov (astPair ptr [rax]).ref, edx mov rdx, ZoneId mov edx, [rdx+ 4*rbx] mov (astPair ptr [rax]).zone, edx mov rdx, ZoneTh mov edx, [rdx+ 4*rbx] mov (astPair ptr [rax]).thre, edx add rax, PairSize mov PairAddr, rax inc nPair jmp LOOP_PAIR_NUM PAIR_TOP_UNPAIR: cmp bUseUnpair, 0 je LOOP_PAIR_NUM movsx rdx, word ptr[rrPoD+ 2*iy] cmp rdx, ExTh jle LOOP_PAIR_NUM mov rcx, PairAddr mov (astPair ptr [rcx]).pos, 1 mov (astPair ptr [rcx]).pair, 5 mov (astPair ptr [rcx]).x, rdImgAddr sub rax, iPitchHUp mov (astPair ptr [rcx]).y, eax movzx edx, word ptr[rrToD+ 2*iy] mov (astPair ptr [rcx]).dtype, edx movsx edx, word ptr[rrPoD+ 2*iy] mov (astPair ptr [rcx]).peak, edx mov edx, [rrSrcD+ 4*iy] mov (astPair ptr [rcx]).src, edx mov edx, [rrCmpD+ 4*iy] mov (astPair ptr [rcx]).ref, edx mov rdx, ZoneId mov edx, [rdx+ 4*iy] mov (astPair ptr [rcx]).zone, edx mov rdx, ZoneTh mov edx, [rdx+ 4*iy] mov (astPair ptr [rcx]).thre, edx 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 rrImgAddr, dword ptr[rrXoD+ 4*iy] ; Filter_2_Pair_XPosition movsxd rcx, dword ptr[rrXoD+ 4*rbx] cmp rrImgAddr, rcx jne PAIR_CENTER movzx rrImgAddr, word ptr[rrToD+ 2*rbx] ; Filter_3_TYPE_DELETE cmp rrImgAddr, 3 jge LOOP_PAIR_NUM ; jge PAIR_CENTER ;Filte_1_ÀÇ Á¶°ÇÀÌ (+-1)·Î ¹Ù²ð °æ¿ì ¹Ù²¸¾ß ÇÑ´Ù. mov ax, word ptr[rrToD+ 2*iy] ; Filter_4_TYPE_PAIR cmp ax, rwImgAddr 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, rdImgAddr movsx edx, word ptr[rrPoD+ 2*rbx] mov (astPair ptr [rax]).peak, edx mov edx, [rrSrcD+ 4*rbx] mov (astPair ptr [rax]).src, edx mov edx, [rrCmpD+ 4*rbx] mov (astPair ptr [rax]).ref, edx mov rdx, ZoneId mov edx, [rdx+ 4*rbx] mov (astPair ptr [rax]).zone, edx mov rdx, ZoneTh mov edx, [rdx+ 4*rbx] mov (astPair ptr [rax]).thre, edx add rax, PairSize mov PairAddr, rax inc nPair jmp LOOP_PAIR_NUM PAIR_BOTTOM: ; ¾Õ¿¡¼­ pairingÀÌ µÇÁö ¾ÊÀ¸¸é ´õÀÌ»ó pairing ÇÒ ¼ö ¾ø´Ù. ¹«Á¶°Ç unpairÀÌ´Ù. cmp bUseUnpair, 0 je LOOP_PAIR_NUM movsx rcx, word ptr[rrPoD+ 2*iy] cmp rcx, ExTh jle LOOP_PAIR_NUM mov rcx, PairAddr mov (astPair ptr [rcx]).pos, 3 mov (astPair ptr [rcx]).pair, 5 mov (astPair ptr [rcx]).x, rdImgAddr mov (astPair ptr [rcx]).y, eax inc edx and edx, 1 mov (astPair ptr [rcx]).dtype, edx movsx edx, word ptr[rrPoD+ 2*iy] mov (astPair ptr [rcx]).peak, edx mov edx, [rrSrcD+ 4*iy] mov (astPair ptr [rcx]).ref, edx mov edx, [rrCmpD+ 4*iy] mov (astPair ptr [rcx]).src, edx mov rdx, ZoneId mov edx, [rdx+ 4*iy] mov (astPair ptr [rcx]).zone, edx mov rdx, ZoneTh mov edx, [rdx+ 4*iy] mov (astPair ptr [rcx]).thre, edx add rcx, PairSize mov PairAddr, rcx inc nPair jmp LOOP_PAIR_NUM LOOP_PAIR_NUM_END: mov rrNoD, 0 jmp _return_PAIRING_VERT END_FUNC: add ix32, 10h mov rax, endLine mov [rax], ix32 mov rax, nPair ; return nPair pop rbx pop rsi pop rdi pop r15 pop r14 pop r13 pop r12 pop r11 pop r10 ; pop rbp RET ConvPixelVTDS ENDP end