亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pngvcrd.c

?? It s a tool designed to extract as much information as possible from Bluetooth devices without the r
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* pngvcrd.c - mixed C/assembler version of utilities to read a PNG file * * For Intel x86 CPU and Microsoft Visual C++ compiler * * libpng version 1.2.7 - September 12, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * Copyright (c) 1998, Intel Corporation * * Contributed by Nirav Chhatrapati, Intel Corporation, 1998 * Interface to libpng contributed by Gilles Vollant, 1999 * * * In png_do_read_interlace() in libpng versions 1.0.3a through 1.0.4d, * a sign error in the post-MMX cleanup code for each pixel_depth resulted * in bad pixels at the beginning of some rows of some images, and also * (due to out-of-range memory reads and writes) caused heap corruption * when compiled with MSVC 6.0.  The error was fixed in version 1.0.4e. * * [png_read_filter_row_mmx_avg() bpp == 2 bugfix, GRR 20000916] * * [runtime MMX configuration, GRR 20010102] * */#define PNG_INTERNAL#include "png.h"#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) && defined(PNG_USE_PNGVCRD)static int mmx_supported=2;int PNGAPIpng_mmx_support(void){  int mmx_supported_local = 0;  _asm {    push ebx          //CPUID will trash these    push ecx    push edx    pushfd            //Save Eflag to stack    pop eax           //Get Eflag from stack into eax    mov ecx, eax      //Make another copy of Eflag in ecx    xor eax, 0x200000 //Toggle ID bit in Eflag [i.e. bit(21)]    push eax          //Save modified Eflag back to stack    popfd             //Restored modified value back to Eflag reg    pushfd            //Save Eflag to stack    pop eax           //Get Eflag from stack    push ecx          // save original Eflag to stack    popfd             // restore original Eflag    xor eax, ecx      //Compare the new Eflag with the original Eflag    jz NOT_SUPPORTED  //If the same, CPUID instruction is not supported,                      //skip following instructions and jump to                      //NOT_SUPPORTED label    xor eax, eax      //Set eax to zero    _asm _emit 0x0f   //CPUID instruction  (two bytes opcode)    _asm _emit 0xa2    cmp eax, 1        //make sure eax return non-zero value    jl NOT_SUPPORTED  //If eax is zero, mmx not supported    xor eax, eax      //set eax to zero    inc eax           //Now increment eax to 1.  This instruction is                      //faster than the instruction "mov eax, 1"    _asm _emit 0x0f   //CPUID instruction    _asm _emit 0xa2    and edx, 0x00800000  //mask out all bits but mmx bit(24)    cmp edx, 0        // 0 = mmx not supported    jz  NOT_SUPPORTED // non-zero = Yes, mmx IS supported    mov  mmx_supported_local, 1  //set return value to 1NOT_SUPPORTED:    mov  eax, mmx_supported_local  //move return value to eax    pop edx          //CPUID trashed these    pop ecx    pop ebx  }  //mmx_supported_local=0; // test code for force don't support MMX  //printf("MMX : %u (1=MMX supported)\n",mmx_supported_local);  mmx_supported = mmx_supported_local;  return mmx_supported_local;}/* Combines the row recently read in with the previous row.   This routine takes care of alpha and transparency if requested.   This routine also handles the two methods of progressive display   of interlaced images, depending on the mask value.   The mask value describes which pixels are to be combined with   the row.  The pattern always repeats every 8 pixels, so just 8   bits are needed.  A one indicates the pixel is to be combined; a   zero indicates the pixel is to be skipped.  This is in addition   to any alpha or transparency value associated with the pixel.  If   you want all pixels to be combined, pass 0xff (255) in mask.  *//* Use this routine for x86 platform - uses faster MMX routine if machine   supports MMX */void /* PRIVATE */png_combine_row(png_structp png_ptr, png_bytep row, int mask){#ifdef PNG_USE_LOCAL_ARRAYS   const int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};#endif   png_debug(1,"in png_combine_row_asm\n");   if (mmx_supported == 2) {#if !defined(PNG_1_0_X)       /* this should have happened in png_init_mmx_flags() already */       png_warning(png_ptr, "asm_flags may not have been initialized");#endif       png_mmx_support();   }   if (mask == 0xff)   {      png_memcpy(row, png_ptr->row_buf + 1,       (png_size_t)PNG_ROWBYTES(png_ptr->row_info.pixel_depth,       png_ptr->width));   }   /* GRR:  add "else if (mask == 0)" case?    *       or does png_combine_row() not even get called in that case? */   else   {      switch (png_ptr->row_info.pixel_depth)      {         case 1:         {            png_bytep sp;            png_bytep dp;            int s_inc, s_start, s_end;            int m;            int shift;            png_uint_32 i;            sp = png_ptr->row_buf + 1;            dp = row;            m = 0x80;#if defined(PNG_READ_PACKSWAP_SUPPORTED)            if (png_ptr->transformations & PNG_PACKSWAP)            {                s_start = 0;                s_end = 7;                s_inc = 1;            }            else#endif            {                s_start = 7;                s_end = 0;                s_inc = -1;            }            shift = s_start;            for (i = 0; i < png_ptr->width; i++)            {               if (m & mask)               {                  int value;                  value = (*sp >> shift) & 0x1;                  *dp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);                  *dp |= (png_byte)(value << shift);               }               if (shift == s_end)               {                  shift = s_start;                  sp++;                  dp++;               }               else                  shift += s_inc;               if (m == 1)                  m = 0x80;               else                  m >>= 1;            }            break;         }         case 2:         {            png_bytep sp;            png_bytep dp;            int s_start, s_end, s_inc;            int m;            int shift;            png_uint_32 i;            int value;            sp = png_ptr->row_buf + 1;            dp = row;            m = 0x80;#if defined(PNG_READ_PACKSWAP_SUPPORTED)            if (png_ptr->transformations & PNG_PACKSWAP)            {               s_start = 0;               s_end = 6;               s_inc = 2;            }            else#endif            {               s_start = 6;               s_end = 0;               s_inc = -2;            }            shift = s_start;            for (i = 0; i < png_ptr->width; i++)            {               if (m & mask)               {                  value = (*sp >> shift) & 0x3;                  *dp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);                  *dp |= (png_byte)(value << shift);               }               if (shift == s_end)               {                  shift = s_start;                  sp++;                  dp++;               }               else                  shift += s_inc;               if (m == 1)                  m = 0x80;               else                  m >>= 1;            }            break;         }         case 4:         {            png_bytep sp;            png_bytep dp;            int s_start, s_end, s_inc;            int m;            int shift;            png_uint_32 i;            int value;            sp = png_ptr->row_buf + 1;            dp = row;            m = 0x80;#if defined(PNG_READ_PACKSWAP_SUPPORTED)            if (png_ptr->transformations & PNG_PACKSWAP)            {               s_start = 0;               s_end = 4;               s_inc = 4;            }            else#endif            {               s_start = 4;               s_end = 0;               s_inc = -4;            }            shift = s_start;            for (i = 0; i < png_ptr->width; i++)            {               if (m & mask)               {                  value = (*sp >> shift) & 0xf;                  *dp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);                  *dp |= (png_byte)(value << shift);               }               if (shift == s_end)               {                  shift = s_start;                  sp++;                  dp++;               }               else                  shift += s_inc;               if (m == 1)                  m = 0x80;               else                  m >>= 1;            }            break;         }         case 8:         {            png_bytep srcptr;            png_bytep dstptr;            png_uint_32 len;            int m;            int diff, unmask;            __int64 mask0=0x0102040810204080;#if !defined(PNG_1_0_X)            if ((png_ptr->asm_flags & PNG_ASM_FLAG_MMX_READ_COMBINE_ROW)                /* && mmx_supported */ )#else            if (mmx_supported)#endif            {               srcptr = png_ptr->row_buf + 1;               dstptr = row;               m = 0x80;               unmask = ~mask;               len  = png_ptr->width &~7;  //reduce to multiple of 8               diff = png_ptr->width & 7;  //amount lost               _asm               {                  movd       mm7, unmask   //load bit pattern                  psubb      mm6,mm6       //zero mm6                  punpcklbw  mm7,mm7                  punpcklwd  mm7,mm7                  punpckldq  mm7,mm7       //fill register with 8 masks                  movq       mm0,mask0                  pand       mm0,mm7       //nonzero if keep byte                  pcmpeqb    mm0,mm6       //zeros->1s, v versa                  mov        ecx,len       //load length of line (pixels)                  mov        esi,srcptr    //load source                  mov        ebx,dstptr    //load dest                  cmp        ecx,0         //lcr                  je         mainloop8endmainloop8:                  movq       mm4,[esi]                  pand       mm4,mm0                  movq       mm6,mm0                  pandn      mm6,[ebx]                  por        mm4,mm6                  movq       [ebx],mm4                  add        esi,8         //inc by 8 bytes processed                  add        ebx,8                  sub        ecx,8         //dec by 8 pixels processed                  ja         mainloop8mainloop8end:                  mov        ecx,diff                  cmp        ecx,0                  jz         end8                  mov        edx,mask                  sal        edx,24        //make low byte the high bytesecondloop8:                  sal        edx,1         //move high bit to CF                  jnc        skip8         //if CF = 0                  mov        al,[esi]                  mov        [ebx],alskip8:                  inc        esi                  inc        ebx

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久婷婷| 日韩av电影免费观看高清完整版| 自拍偷拍亚洲综合| 日本中文字幕一区二区视频| 成人免费的视频| 精品欧美一区二区久久| 亚洲美女免费视频| 国产91精品在线观看| 国产欧美日韩精品a在线观看| 亚洲香蕉伊在人在线观| 白白色亚洲国产精品| 久久青草欧美一区二区三区| 舔着乳尖日韩一区| 欧洲一区在线电影| 亚洲视频免费在线| 国产成人综合网| 久久理论电影网| 精品在线亚洲视频| 日韩免费看网站| 免费欧美日韩国产三级电影| 欧美三级日韩三级国产三级| 玉足女爽爽91| 91精品福利视频| 亚洲乱码日产精品bd| 99精品国产热久久91蜜凸| 欧美韩国日本综合| 国产成人精品三级| 中文字幕免费不卡在线| 国产jizzjizz一区二区| 久久精品亚洲国产奇米99| 国产最新精品免费| 久久亚洲影视婷婷| 国产69精品久久99不卡| 中日韩av电影| 91免费版在线| 亚洲精品ww久久久久久p站| 色呦呦国产精品| 亚洲精品国产视频| 欧美日韩久久久一区| 日韩在线一区二区| 精品剧情v国产在线观看在线| 蜜桃av一区二区| 久久久噜噜噜久噜久久综合| 国产成人综合在线| 亚洲黄色免费网站| 制服丝袜日韩国产| 国产麻豆9l精品三级站| 国产精品乱子久久久久| 在线欧美日韩国产| 蜜桃久久久久久久| 欧美—级在线免费片| 成人av在线一区二区| 一区二区三区在线高清| 欧美电影一区二区| 国产一区二区影院| 亚洲欧美另类图片小说| 欧美日韩免费电影| 国产剧情av麻豆香蕉精品| 国产精品美女久久久久久| 91九色02白丝porn| 久久99精品久久久久久国产越南 | 午夜婷婷国产麻豆精品| 91精品国产色综合久久| 国产激情视频一区二区三区欧美| 国产精品久久久久久户外露出 | 久久精品视频一区二区| 精品国产一区二区三区忘忧草| 激情图片小说一区| 亚洲三级免费观看| 欧美一区二区三区视频免费播放 | 国产欧美日韩不卡| 欧美三级日韩三级国产三级| 国内精品伊人久久久久av影院 | 国产精品久久久久久久午夜片| 色八戒一区二区三区| 久久99精品国产.久久久久| 国产欧美一区二区精品性色超碰| 欧美午夜电影网| 国产精品18久久久久| 午夜伊人狠狠久久| 国产精品―色哟哟| 日韩免费高清av| 色国产精品一区在线观看| 国产一区二区美女| 日韩在线一二三区| 一区二区三区在线免费播放| 国产亚洲1区2区3区| 日韩美一区二区三区| 日本高清不卡在线观看| 成人午夜伦理影院| 韩国在线一区二区| 日韩av电影一区| 丝袜美腿高跟呻吟高潮一区| 亚洲欧美激情插| 国产精品初高中害羞小美女文| 欧美丰满少妇xxxxx高潮对白| 色综合一区二区| 国产91丝袜在线观看| 久久99精品网久久| 久久精品久久综合| 日本成人在线看| 五月天婷婷综合| 午夜精品123| 婷婷久久综合九色综合绿巨人 | 粉嫩绯色av一区二区在线观看 | 麻豆精品久久精品色综合| 亚洲国产综合视频在线观看| 国产精品麻豆99久久久久久| 久久影院电视剧免费观看| 日韩一卡二卡三卡国产欧美| 欧美日韩精品一区二区三区四区| 日本国产一区二区| 91久久线看在观草草青青| 一本大道久久精品懂色aⅴ| 成人黄色在线视频| 99久久国产综合精品色伊| 不卡一二三区首页| 色偷偷88欧美精品久久久| 日本道精品一区二区三区| 欧洲国产伦久久久久久久| 欧美色倩网站大全免费| 欧美日韩在线直播| 91精品国产欧美日韩| 精品av久久707| 亚洲国产精品精华液2区45| 欧美国产欧美亚州国产日韩mv天天看完整 | 成人午夜私人影院| 99久久久久免费精品国产| 91看片淫黄大片一级| 欧美日韩国产高清一区二区三区 | 中文字幕精品一区二区精品绿巨人| 国产日韩欧美亚洲| 亚洲人成精品久久久久久| 亚洲国产成人91porn| 美女任你摸久久| 国产高清亚洲一区| 欧洲日韩一区二区三区| 制服丝袜av成人在线看| 久久精品人人爽人人爽| 一区二区三区四区高清精品免费观看| 午夜欧美一区二区三区在线播放| 另类小说图片综合网| 成人精品视频一区二区三区| 欧日韩精品视频| 欧美电视剧在线看免费| 国产精品三级av在线播放| 亚洲一级在线观看| 国产一区二区三区国产| 欧洲精品在线观看| 国产亚洲自拍一区| 亚洲a一区二区| 高清不卡一二三区| 69久久夜色精品国产69蝌蚪网| 国产亚洲欧美激情| 日日噜噜夜夜狠狠视频欧美人| 国产一区二区三区免费观看| 91免费在线看| 久久新电视剧免费观看| 亚洲成人一区在线| 成人高清视频在线| 日韩精品一区二区三区四区| 亚洲精品日韩综合观看成人91| 蜜桃免费网站一区二区三区| 欧美在线制服丝袜| 久久久久国产一区二区三区四区 | 欧美一区二区在线观看| 国产精品久久久久久久浪潮网站| 美女一区二区视频| 在线观看亚洲a| 亚洲国产精品ⅴa在线观看| 肉色丝袜一区二区| 91久久精品一区二区三| 欧美极品美女视频| 国产一区二区三区国产| 日韩一级精品视频在线观看| 亚洲欧美另类在线| caoporn国产一区二区| 久久先锋影音av鲁色资源网| 亚洲成av人影院| 日本大香伊一区二区三区| 国产精品视频一二三| 国产九九视频一区二区三区| 日韩午夜电影av| 天堂一区二区在线免费观看| 欧美亚州韩日在线看免费版国语版| 中文一区在线播放| 国产一区二区精品久久91| 日韩午夜电影av| 久久99精品久久久久婷婷| 欧美一区二区视频免费观看| 亚洲成va人在线观看| 精品视频一区 二区 三区| 亚洲美女偷拍久久| 在线日韩av片| 亚洲一区二区av在线| 在线观看亚洲a| 亚洲va欧美va人人爽午夜| 91精品国产综合久久精品| 石原莉奈在线亚洲二区| 6080午夜不卡|