.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] GraySrc equ qword ptr[rbp+ 0b0h] GrayCmp equ qword ptr[rbp+ 0b8h] ZoneId equ qword ptr[rbp+ 0c0h] ZoneTh equ qword ptr[rbp+ 0c8h] i2Pitch16 equ qword ptr[rbp+ 0d0h] bReverseFilter equ qword ptr[rbp+ 0d8h] DThSlide equ qword ptr[rbp+ 0e0h] endLine equ qword ptr[rbp+ 0e8h] ix equ rsi iy equ rdi ix32 equ esi iy32 equ edi rrBW equ r8 rdBW equ r8d 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 xxZero equ xmm0 xxTemp equ xmm1 xxSrc equ xmm2 xxCmp equ xmm3 xxPeak equ xmm4 xxPeakEx equ xmm5 xxfSPR equ xmm6 xxsSPR equ xmm7 xxThres equ xmm8 xxSupp equ xmm9 xxDStart equ xmm12 xxDSlide equ xmm15 xxSrc1 equ xmm10 xxSrc2 equ xmm11 xxSrc3 equ xmm12 xxCmp1 equ xmm13 xxCmp2 equ xmm14 xxCmp3 equ xmm15 ConvFloatVert 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 i2Pitch : 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, 088h ; ÆÄ¶ó¹ÌÅÍ·Î ³Ñ¾î¿Â register°ª ¿Å±â±â mov ImgAddr , rcx mov ConAddr , rdx add ConAddr, 20h mov maxPixelD , r8 ; register ÇÒ´ç. mov ix, InspLeft mov iy, InspTop mov rrXoD, DefectX mov rrYoD, DefectY mov rrToD, DefectType mov rrPoD, DefectVal mov rrBW, BuffWidth ; 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 rax, iPitch16 ; iPitch 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 mov rax, i2Pitch16 ; i2Pitch sar rax, SprShift mov i2Pitch, rax mov rax, i2Pitch16 and rax, 0fh ; °Ë»ç ¿µ¿ª ¼³Á¤(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, rrBW mul InspTop add rax, ImgAddr add rax, ix mov ImgAddrLeft, rax ; mov rax, 20h ; mul InspTop ; add rax, ConOrigin ; mov ConAddr, rax mov rax, 20h mul iPitch mov ConPitch, rax mov rax, 20h mul i2Pitch mov ConPitch2, 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 ix, InspLeft ;mov iy, InspTop mov rrImgAddr, ImgAddrLeft mov rrConAddr, ConAddr jmp LOOP_X_CHECK LOOP_X_TAIL: jmp PAIRING_VERT PAIRING_VERT_RETURN: add ImgAddrLeft, 10h mov rrImgAddr, ImgAddrLeft mov rrConAddr, ConAddr mov iy, InspTop LOOP_X_CHECK: cmp ix, InspRight jge END_FUNC LOOP_X_BODY: dec iy ; topÀ¸·Î 1 pixel ´õ ¸¸µç´Ù. ¿ª¹æÇâ °ËÁõÀ§ÇØ sub rrImgAddr, rrBW sub rrConAddr, 20h jmp MAKE_CONBUFF_BODY_TAIL_CHECK MAKE_CONBUFF_RETURN: mov iy, InspTop mov rrConAddr, ConAddr mov F_Y2Insp, 0 jmp LOOP_Y_CHECK LOOP_Y_TAIL: inc iy add rrImgAddr, rrBW add rrConAddr, 20h LOOP_Y_CHECK: cmp rrNoD, maxPixelD jge PAIRING_VERT cmp iy, InspBottom jl LOOP_Y_BODY ; Y Double Check, YÃà Conv¸¦ 16 ¹ÙÀÌÆ® ´ÜÀ§·Î ¸¸µå´Âµ¥. °Ë»ç´Â 8¹ÙÀÌÆ®¾¿ ÇϹǷΠ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 add rrConAddr, 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, rrBW add rrConAddr, 20h inc iy cmp iy, ConBottom jle MAKE_CONBUFF_BODY_TAIL_CHECK jmp MAKE_CONBUFF_RETURN LOOP_Y_BODY: 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, rrConAddr ; ºñ±³ ¹öÆÛ ÇÕ ¸¸µé±â add rax, ConPitch movdqu xxCmp1, [rax] movdqa xxCmp, xxCmp1 pmullw xxCmp, xxfSPR movdqu xxCmp2, [rax+ 20h] movdqa xxTemp, xxCmp2 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 movdqa xxThres, xxSrc pmaxuw xxThres, xxCmp psrlw xxThres, ConvNSprShift pmullw xxThres, xxDSlide psrlw xxThres, 8 paddw xxThres, xxDStart psllw xxThres, ConvNSprShift ; JMP REINSPECT_PRE REINSPECT_RETURN: ; JMP ReReINSPECT_PRE ReReINSPECT_RETURN: INSPECT_BLACK: movdqa xxPeakEx, xxCmp psubusw xxPeakEx, xxSrc movdqa xxPeak, xxPeakEx pcmpgtw xxPeak, xxThres pmovmskb rax, xxPeak cmp rax, 0 je INSPECT_WHITE mov rbx, 0 jmp DEFECT_00 INSPECT_WHITE: movdqa xxPeakEx , xxSrc psubusw xxPeakEx , xxCmp movdqa xxPeak, xxPeakEx pcmpgtw xxPeak, xxThres pmovmskb rax, xxPeak cmp rax, 0 je LOOP_Y_TAIL mov rbx, 1 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 ;psubusw xxPlus , xxCmp 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 ;psubusw xxMinus , xxSrc 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, 0h cmp rax, 0h je Defect_01 pextrw rax, xxPeakEx, 0h 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, 1h cmp rax, 0h je Defect_02 pextrw rax, xxPeakEx, 1h 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, 2h cmp rax, 0h je Defect_03 pextrw rax, xxPeakEx, 2h 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, 3h cmp rax, 0h je Defect_04 pextrw rax, xxPeakEx, 3h 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, 4h cmp rax, 0h je Defect_05 pextrw rax, xxPeakEx, 4h 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, 5h cmp rax, 0h je Defect_06 pextrw rax, xxPeakEx, 5h 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, 6h cmp rax, 0h je Defect_07 pextrw rax, xxPeakEx, 6h 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, 7h cmp rax, 0h je DEFECT_END pextrw rax, xxPeakEx, 7h 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 rrBW, 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 rrBW, 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, rdBW 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 rrBW, 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, rdBW 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 mov rrBW, BuffWidth 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 ConvFloatVert ENDP end