日屄的能力

    1. <form id=YaojxIVIX><nobr id=YaojxIVIX></nobr></form>
      <address id=YaojxIVIX><nobr id=YaojxIVIX><nobr id=YaojxIVIX></nobr></nobr></address>

      Dominic Szablewski, @phoboslab
      — Thursday, August 10th 2023

      Rewriting wipEout

      The source code for the classic PSX launch title wipEout was leaked in 2022. A few month ago I finally sat down to take a look at it. The result is a (nearly) complete rewrite that compiles to Windows, Linux, macOS and WASM.

      wipEout Thanks to WASM and WebGL you can play wipEout right in your browser!

      I'm not the only one who embarked on a path to restore the game. To my knowledge, there are two other efforts ongoing: WipEout Phantom Edition and a yet unnamed project by XProger. Both offer more features than my rewrite. If you're on Windows and you just want to enjoy the game, these are the better option.

      However, neither the Phantom Edition nor XProger's version come with the source code. Understandably so. The legality of re-distributing the leaked source is questionable at best.

      So let's just pretend that the leak was intentional, a rewrite of the source falls under fair use and the whole thing is abandonware anyway:

      github.com/phoboslab/wipeout-rewrite

      (Aside: I would have loved to work this into an officially sanctioned remaster, but as you can imagine getting a hold of anyone at Sony is impossible. So here we are.)

      Remnants of the past

      The quality of the leaked source is abysmal. From what I can piece together, it mainly contains the “Wipeout ATI 3D Rage Edition” of the game. A lackluster port for Windows that was bundled with ATI GPUs.

      The directories named WipeoutPSX and WIN95/ are not the original PlayStation or a Win95 versions, but just contain some dysfunctional intermediate copies. The Wipeout98/ directory apparently was the one that was compiled into the ATI Rage Edition, but it still included some header files from the PSX and Win95 directories.

      Let me paint you a picture: Even the NTSC version for the PlayStation looks like an afterthought quickly hacked into the PAL version. #ifdefs switched some physics calculations from 25 fps to 30. Later, the PC DOS release, Win95 version and finally the ATI Rage Edition were haphazardly piled on top. Each time by a different set of developers that somehow had to make sense of this mess. The code still contains many of the remains of what came before. There was never any time to clean it up.

      Each new release was decidedly worse than the previous one. Compare the original PSX version (video) to the DOS release (video): The vertex lighting on the track is gone, everything looks flat, there is no transparency and the speedometer was redrawn by a programmer. The ATI Rage Edition (video) carried this mess forward, introduced visible seams in the geometry everywhere, somehow corrupted the software z-sorting and then screwed up the text rendering with ghastly letter spacing.

      Deep down the source contains some sensible parts. I assume the track rendering and some of the physics where implemented first. What followed is some caffeine induced nightmare code written under immense time pressure. The 5000 lines of if else that handles the menu state is a striking witness to this insanity.

      After the initial release was out the door, this artifact was handed down to the least experienced developers. They had the job to force it into whatever shape would bring some money.

      Now, I have enormous respect for the original developers. The code may not be pretty, but the result justifies it all. It was a launch title for the PSX and it still holds up today. The developers faced the unknowns of never before seen hardware and 3D was a whole new dimension to make sense of. They did a tremendous job.

      I'm sure the DOS and ATI Rage versions were equally challenging to get working. In the end it was a management decision to produce something that could be sold, instead of producing something good.

      Compiling a pile of garbage

      It took me a few days to browse through the code, assemble the right set of sources and stub out all the missing functions. After about 500 iterations of calling make and then fixing some problems it finally gave in. The game launched into some glorious printf()'s.

      Just a few hours later I had plugged in SDL2, opened a window and was drawing some honest-to-goodness triangles with OpenGL. I hadn't yet implemented any controls, so I just waited for the game's attract loop and stood in awe.

      What you see here are polygons that are entirely transformed on the CPU. I.e. all the perspective calculations are handled in software. OpenGL just received the final screen coordinates of each triangle.

      To understand why, we have to look at the PlayStation.

      The PSX devkits came with a library called LIBGPU, which handled the rendering. Since the PSX GPU didn't have a z-buffer, all primitives you wanted to draw (triangles, quads and sprites) needed to be submitted into an “ordering table” or OT for short. This table had (typically) 8192 slots allowing for 8192 different z-levels. The GPU would then rasterize the list back to front. The result would not be perfect (in some situations neither of two polygons will have all pixels in front of the other one), but close enough.

      The ordering table necessitates that you know the z-depth of each primitive before you hand it to the GPU for drawing. It is my understanding that the PSX original did the perspective calculations on a co-processor.

      (As an aside, the data structure used for this ordering table was just a linked list, but I found the specific use of it rather clever. See this document for the details. Also have a look at the excellent PlayStation Architecture article.)

      LIBGPU understands a bunch of different primitive types: flat or Gouraud shaded, textured or not, triangle or quad and different types of sprites and lines. In total there's about 20 different primitive types and wipEout uses most of them. In fact, the data format for the .prm files that I painstakingly reverse engineered in 2015 are just a dump of the primitive structs that LIBGPU understands. Would've liked to know that before!

      So the PSX wipEout used an ordering table and a set of LIBGPU related structs for primitives. Why am I telling you this? Well, the PC version does the same!

      wipEout was very specifically written for the PlayStation. There's no abstraction of any drawing routines anywhere in the code. Primitives get constructed and put into the ordering table all over the place. Consolidating this all would've been a tremendous task. So when the game was ported to the PC, the developers re-implemented LIBGPU in software, basically “emulating” the rasterization part of the PSX GPU.

      Of course for the ATI version the rasterization was not done on the CPU anymore, but the ordering table, transformation on the CPU and the need to juggle 20 different primitive types still remained.

      Rewriting the renderer

      After I made a bit of sense of the OT[ CurrentScreen ] + depth incantations sprinkled throughout the code, I tried to understand how the transformations were set up. Remember, this was the 90s and "scene graphs" were all the rage. So wipEout uses a struct called Skeleton that, in theory, could be set up as tree and handle groups and subgroups of objects, each tied to their parent's transformations.

      /* Skeleton Structure ( Hierarchical Coordinate System )
      */
      typedef struct Skeleton {
         MATRIX            relative;   /* Relative rotation/translation matrix */
         MATRIX            absolute;   /* Absolute rotation/translation matrix */
         short             update;     /* Set if absolute matrix needs updating ( i.e. parent matrix has been changed ) */
         struct Skeleton*  super;      /* Parent Skeleton */ 
         struct Skeleton*  sub;        /* First Child Skeleton of this Skeleton */
         struct Skeleton*  next;       /* Next Child Skeleton of Parent Skeleton */
      } Skeleton;

      In practice, this “scene graph” was never more than 2-deep. Hacks were used to shuffle Skeletons around and manipulate the transformation matrices directly. I guess it sounded like a good idea in a book at the time, but if you read between the lines of wipEout's code you begin understand the developer's pain.

      Getting rid of this Skeleton was a lot of work. Preparing the code to do the transformations on the GPU equally so. The new renderer has nothing in common with what was there before. It just speaks triangles and they only come in one shape: Gouraud shaded and textured. If you need it flat shaded, you set all 3 vertices to the same color. If you need it un-textured, you use the RENDER_NO_TEXTURE (which internally is 2x2 texture with all white pixels).

      The goal here was to provide a fairly minimal interface for a renderer:

      void render_set_view(vec3_t pos, vec3_t angles);
      void render_set_model_mat(mat4_t *m);
      void render_push_tris(tris_t tris, uint16_t texture);
      void render_push_sprite(vec3_t pos, vec2i_t size, rgba_t color, uint16_t texture);
      void render_push_2d(vec2i_t pos, vec2i_t size, rgba_t color, uint16_t texture);

      This interface is currently implemented by render_gl.c, but could be swapped out for render_vulcan.c, render_metal.c or render_software.c without any modifications elsewhere in the code. In theory at least.

      The current OpenGL renderer uses a single texture atlas of 2048x2048 pixels. It never needs to bind any other texture and it uses the same vertex and fragment shader for everything.

      I'm quite happy with how it turned out, but there's lot's of room for improvement. The biggest flaw is how you need to submit any triangle individually. Most of wipEout's geometry is static, so it should need to be uploaded to the GPU just once.

      Even with the current, extremely naive approach, the game renders at about 6000 fps in fullscreen retina on my M2 Macbook.

      Recording from my aging Desktop PC, running on Linux

      Rewriting the physics

      All the physics in wipEout are tied to the assumption of a 30 fps frame step. The game does measure the delta time from the last frame, though and re-runs the physics multiple times per frame if needed. Going above 30 fps with this setup is impossible and left me with two options:

      Of course I chose the latter and entered a world of pain.

      The PSX hardware did not support floating point numbers, so wipEout used fixed point math for everything. With varying precisions. In different contexts.

      In any case, the precision would not be enough for higher frame rates, so I opted to change everything to float, too.

      I painstakingly went through the source to find all instances where a units per 30 fps step was assumed, figured out the fixed point precision that was used in this instance and convert it to units per second. I also implemented some basic functions to deal with 3d vectors.

      It went from code like this

      playerShip->vpivot.vx += playerShip->apivot.vx;      
      playerShip->vpivot.vy += playerShip->apivot.vy;
      playerShip->vpivot.vz += playerShip->apivot.vz;
      
      playerShip->ppivot.vx += sar(playerShip->vpivot.vx , VELOCITY_SHIFT);
      playerShip->ppivot.vy += sar(playerShip->vpivot.vy , VELOCITY_SHIFT);
      playerShip->ppivot.vz += sar(playerShip->vpivot.vz , VELOCITY_SHIFT);

      to this

      self->vel = vec3_add(self->vel, vec3_mulf(self->accel, system_tick()));
      self->pos = vec3_add(self->pos, vec3_mulf(self->vel, system_tick()));

      I left a bit of a mess in the process, though. I didn't go all the way back to change the ship's attributes (thrust, turn rate etc.) into units per second, but instead changed it in place to something like (0.015625 * 30 * system_tick()) to account the .6 fixed point and the 30 fps step. So this still needs some cleaning up.

      I hope I didn't change the physics in the process. It seems like I didn't and the game feels the same, whether it's running with 4000 fps or capped to 20. Still, I'm sure I changed some things that are now behaving a little different from the original game.

      It leaves me wondering if this was the right decision. Getting rid of fixed point math certainly was the right call, but a fixed time step has a lot of advantages over the uncertainty that variable time steps bring. I will ponder over this another day.

      Rewriting the game loop

      There were multiple game loops! The title screen, main menu and the game itself all came with their own infinite loop. Once you enter them, you give up all outside control.

      For what I had planned, that wouldn't fly. I needed a platform-calls-you approach, instead of a you-call-platform one. There are some things that need to happen each frame, regardless of if whether we are in the menu or not. Having the platform code do all these things and then call the game's update() function would be much nicer.

      Also, a WASM version strictly cannot have an infinite loop. You need to give control back to the browser and wait for it to call your code again. So figuring out where exactly to splice the existing code and how to divide it into a setup() and update() function was quite the slog, but absolutely necessary.

      While I was at it, I also implemented an extremely simple “scene manager”, where each scene (intro, title, menu and game) are just an init() and update() function.

      struct {
          void (*init)();
          void (*update)();
      } game_scenes[] = {
          [GAME_SCENE_INTRO]     = {intro_init, intro_update},
          [GAME_SCENE_TITLE]     = {title_init, title_update},
          [GAME_SCENE_MAIN_MENU] = {main_menu_init, main_menu_update},
          [GAME_SCENE_RACE]      = {race_init, race_update},
      };

      You then call game_set_scene(GAME_SCENE_MAIN_MENU) from anywhere in the code and the next frame switches to that scene.

      A further improvement would be to split each scene into a separate update() and draw() function, but I left that for a later date.

      Rewriting the HUD, menus & intro

      The HUD for wipEout is fairly minimal and mostly consists of a bunch of text in different sizes and colors. Yet, the original source somehow expanded this to a few thousand lines of code. As mentioned before, the original speedometer from the PSX version is nowhere to be found.

      I rewrote all the text rendering functionality and put it in a single spot (ui.h/ui.c). With this in place, most of the HUD code fits into 70 lines, with a re-implementation of the PSX speedometer taking another 120.

      The original menu “system” was… I don't even know. I never took a close look. It's 5000 lines of spaghetti for the main menu plus another 4000 or so for the in game menu, credits (without the actual text) and win/lose screens. I threw this all away and re-implemented the menus by looking at them in a PSX emulator.

      With a new, fairly minimal abstraction shared by all menus the whole menu code (main menu, ingame menu, credits and win/lose screens) clocks in at 1200 lines now. The new menu systems stores a bunch of “pages”. Each page comes with a title and some entries, where each entry can either be a button or a toggle with multiple options.

      As a minimal example, here's how a two page menu might be implemented

      menu_t *menu;
      
      void menu_demo_init() {
          menu = mem_bump(sizeof(menu_t));
          menu_reset(menu);
      
          menu_page_t *page = menu_push(menu, "TITLE GOES HERE", NULL);
          menu_page_add_button(page, 1, "OPTION ONE", button_option);
          menu_page_add_button(page, 2, "OPTION TWO", button_option);
          menu_page_add_button(page, 0, "SUBMENU", button_submenu);
      }
      
      void button_option(menu_t *menu, int data) {
          // data is the 2nd argument from menu_page_add_button()
      }
      
      void button_submenu(menu_t *menu, int data) {
          menu_page_t *page = menu_push(menu, "TITLE FOR THE SUMENU", NULL);
          menu_page_add_button(page, 0, "GO BACK", button_exit_submenu);
      }
      
      void button_exit_submenu(menu_t *menu, int data) {
          menu_pop(menu);
      }

      I'm quite happy with how it works; adding new pages and settings in the options menu is a breeze now.

      Some of the layout options (where the title goes, how the entries are displayed, etc.) are complicating things a bit. I'm planning to clean this up a little, now that I have implemented all the different menus of the game and know exactly what's needed. As a late realization: writing a truly flexible menu system is quite difficult.

      As for the intro movie: the code that's playing intro was missing from the source. I'm not even sure if it was present in the PC version at all. The STR format that was used in the PSX NTSC verion is well documented, but I haven't gotten around to implement a decoder yet. jPSXdec was able to load and export the video losslessly from which I re-encoded it back into MPEG1 (yeah, yeah, I know…) and just used pl_mpeg to decode it in the game. Good enough.

      Rewriting the sound code and mixer

      I didn't look at the original implementation and just wrote the sound code from scratch. The sound effects are loaded from the original wipeout.vb file which contains all the samples in an ADPCM format (Sony VAG to be precise).

      Most of the calls to play sound effects were quite straightforward and my mixer code reproduces the stereo separation, engine pitch and the doppler effect nicely. However, as a common theme with the leaked source, one sound effect was completely missing in the PC version: the crowd cheers. So I figured out which object names in the scene geometry correspond to the grand stands (of course it's multiple different ones) and implemented those again.

      For the music I opted to take QOA for a test drive. It all works nicely and for a downloadable release the file size is not a big deal. For the WASM version having 80% of the download for music (120mb) seems a bit wasteful though. With the music encoded in 128kbit Vorbis it would clock in at 40mb, but also require a lot more code.

      One thing that's still missing compared to the PSX version is the reverb effect when flying through tunnels. That's still on my todo list.

      Rewriting the memory management

      I'm not sure what the original PSX version did, but the PC version had a lot of malloc() and little fewer free() calls scattered around. Now I can assure you that the game doesn't leak any memory, because it never calls malloc().

      Instead, there's a fixed size statically allocated uint8_t hunk[MEM_HUNK_BYTES]; of 4mb that is used from both sides:

      A bump allocator takes bytes from the front of the hunk. This is used for everything that persists for many frames. When the game starts, it loads a bunch of assets that are needed everywhere (UI graphics, ship models and textures etc.) into this bump allocater and then remembers the high water mark of it. When you load a race track, it loads all assets needed on top. After finishing a race, the bump allocator is reset to the previous high water mark.

      On the other side, a temp allocator takes bytes from the end of the hunk. Temporary allocated objects need to be explicitly released again. This is used when loading a file into memory. The file is read at once and unpacked onto the bump allocated side. When done, the temp memory for the file is released again.

      Temporary objects are not allowed to persist over multiple frame. So each frame ends with a check to ensure that the temp allocator is empty.

      Somewhat related, the OpenGL renderer does the same with the textures: It bumps up texture memory (more precisely space in the texture atlas) and resets it to the previous level when a race ends.

      Rewriting everything everywhere

      There were a lot more rough edges in the original source. A lot of code was just dead. Mostly specific to the PSX version: functions dealing with the neGcon controller were sprinkled all over the code; dozens of header files and functions related to the PSX GPU, Windows related stuff and some ATI Rage related asset loading code. Throwing these all away was quite time consuming, because they were referenced everywhere.

      One of the easier, yet also time intensive tasks was just shuffling functionality around. In the original some functions clearly ended up in a file where they had no business of being there. So that's fixed. The scene animations are now in scene.c; the particle effects in particle.c, etc.

      The particle system is a complete rewrite, too. The original was all backwards: it looped through all weapons, looked for active ones and then switch()ed on the weapon type to figure out which particle to spawn. Now the weapons spawn the particles.

      Speaking of which, the weapon system was also rewritten. The original was a bunch of spaghetti, beyond untangling.

      For both, the particles and the weapons, I opted for a very simple approach where each new object would be allocated from a fixed sized array. The game keeps track of the number of active objects and just iterates and updates those for each frame. Deactivated objects are swapped in place with the last active one.

      int particles_active_len;
      particle_t particles[PARTICLES_MAX];
      
      particle_t *particles_new() {
          if (particles_active_len == PARTICLES_MAX) {
              return NULL;
          }
      
          particle_t *p = &particles[particles_active_len++];
          p->active = true;
          return p;
      }
      
      void particles_update() {
          for (int i = 0; i < particles_active_len; i++) {
              particle_t *p = &particles[i];
      
              particle_update(p);
      
              if (p->active == false) {
                  particles[i] = particles[--particles_active_len];
                  i--;
              }
          }
      }

      This code is not only stupidly simple, but also turned out to be faster than any more involved housekeeping approaches. Not that it matters for this game.

      The leaked source has a few hundred global variable scattered all over. Many of these are brought in to different source files (using extern int something;) and there was little logic to where they were defined. I removed the need for many of the globals and rewrote the rest into 3 separate structs:

      const game_def_t def; containing all definitions for the game: ship attributes, pilots and their names, race tracks, credits, etc.

      game_t g; containing the information about the running game: the current race mode and track, lap times, ranks etc.

      save_t save; containing the save data that persists between game launches: music and sfx volume, highscores, unlocked tracks etc.

      All of these structs are globally accessible everywhere in the game. Now, if you learned in school that global variables are bad (such as I did), don't be alarmed. For a game, the use of globals is often the preferable way to do things. You know there can only ever be one race track loaded at a time, so it's fine to just have a global track_t.

      Some aspects of this are not as clear cut though: the rewrite currently assumes to just have one camera. This is obviously true for now, but if we want to have a splitscreen mode, we'd have to supply the current camera_t instance to a bunch of functions instead.

      There are many more parts of the game that I re-implemented, but I just want to end this section with a lines of code count:

      > cloc WIPESRC/Wipeout98/
      -------------------------------------------------------------------------------
      Language                     files          blank        comment           code
      -------------------------------------------------------------------------------
      C++                             55           9301           3631          36253
      C/C++ Header                    89           1222            889           4370
      DOS Batch                        1              0              0             76
      -------------------------------------------------------------------------------
      SUM:                           145          10523           4520          40699
      -------------------------------------------------------------------------------
      > cloc rewrite/src/wipeout/
      -------------------------------------------------------------------------------
      Language                     files          blank        comment           code
      -------------------------------------------------------------------------------
      C                               21           1301            216           6590
      C/C++ Header                    21            267             16           1141
      -------------------------------------------------------------------------------
      SUM:                            42           1568            232           7731
      -------------------------------------------------------------------------------

      The rewrite is just one fifth of the size of the original. To be fair, this ignores the Sokol and pl_mpeg libraries used as well as some platform glue code. The whole source tree lands at around around ~25k LOC.

      Platform backends and compiling to WASM

      The rewrite comes with a simple abstraction over timing, keyboard/controller input and audio output. The game code itself is agnostic to the platform backend it's running on.

      Currently it compiles with two different platform backends: SDL2 and Sokol. Both of these support multiple platforms (e.g Windows, macOS, Linux, Android, iOS…). Adding a new platform backend – say, for the Nintendo Switch – is straight forward and (in theory) doesn't necessitate any changes to the game code.

      I initially developed with the SDL backend and later added the Sokol libraries. Both are an absolute pleasure to work with.

      I was especially impressed with how smooth the compilation for WASM with Sokol went. You compile the whole thing with emcc and it just works. Rendering, input, sound, everything was there. Not a single change in the code needed.

      Working with C

      It's hard to justify writing C these days. It's not the language you'd start a commercial project in. So this wipEout rewrite was a welcome excuse and by far the largest C project I ever worked on. I had an absolute blast cleaning up this mess!

      As evident by the leaked source, a C project can become extremely unwieldy. The language doesn't give you much guidance on how to structure your code.

      And as hopefully evident by this rewrite, it is possible to produce a C code base that makes sense, is extensible and fun to work with.

      I love C, because it forces you to think about the structure of your code and make conscious decisions about it. Working close to the hardware and thinking about how your code is actually executed is just the icing on the cake. For me, it's a very welcome change from all the scripting languages that I usually work with.

      Final thoughts

      There's still lot's of bugs to fix (both old and new) and more features to implement. If you want to help, please stop by over at github.com/phoboslab/wipeout-rewrite, clone the source and build the game yourself. You'll need the wipeout-data-v01.zip to run it. I will not provide the executables for any platform; please don't ask.

      Sony has demonstrated a lack of interest in the original wipEout in the past, so my money is on their continuing absence.

      If anyone at Sony is reading this, please consider that you have (in my opinion) two equally good options: either let it be, or shut this thing down and get a real remaster going.

      I'd love to help!

      © 2025 Dominic Szablewski – Imprint – powered by Pagenode (7ms) – made with <3
      “He must have hit himself trying to get out,” Larry surmised. “I remember that, too,” Larry said. Jeff chuckled rather sourly. “It’s funny,” Jeff remarked. “This-here psychology I’ve read about ain’t so far wrong when it says that folks who gets the wrong slant on a thing comes to believe it so strong that even the truth looks like a fib to them.” She could hear voices confusedly, men hurriedly calling and hallooing as she neared the back of the officers' line and crept into her tent. The door was barely closed when there came a knock, and the voice of the striker asking if she had heard the shot across the river. The blaze of glory had gone suddenly from the clouds, leaving them lifeless gray, when she turned her eyes back to them; and the outlook across the parade ground was very bare. She went and stood by the fire, leaning her arm on the mantel-shelf and setting her determined lips. Just then the whistle blew for a stop. This was enough excuse for Shorty. He fell back until the General was around the corner, out of sight, and then went up to Billings. There was a silence. "W?an't you be never coming here no more?" whispered Bessie in the next pause. His farm itself was at length forfeited, and Holgrave took shelter for the moment at old Hartwell's. The hut his father had reared when he married his mother, was still standing; the roof had fallen in, the ivy had grown over its walls; but even yet it sometimes sheltered the wandering mendicant, and often would the blaze of a large wood fire look cheerily through the shattered casement and the broken door, and shed an air almost of comfort over the bare walls. Holgrave remembered the ruin, as he was considering where he could abide until Margaret, who was far advanced in the family way, should be enabled to travel farther. His resolution was instantly formed; and refusing the assistance offered by Hartwell, and some other neighbours, and as decidedly rejecting the idea they proposed, of striving to regain possession of his house, he requested Lucy Hartwell to look to Margaret for a day or two, while he sought out a place to shelter them; and then, without mentioning his purpose, quitted the house. HoME日屄的能力 ENTER NUMBET 0017
      www.yiruicn.com.cn
      nemans.com.cn
      www.wed99.com.cn
      www.biyu3.com.cn
      www.maoan8.com.cn
      magao6.com.cn
      www.5iabcd.com.cn
      xuequ3.net.cn
      4970.com.cn
      www.liche7.com.cn
      主播115网盘 男女生身体下方相互动视频 543hy 久野千草h 韩国女主播玫瑰下载 女同互相舔脚p 在哪可以找到韩国美女主播朴妮唛28部 狠狠露b实图 性爱丰满呻吟 哪里能看到韩国女主播 他狂插 seses52 WWW.543BU.COM WWW.96CPZ.COM WWW.2222DDD.COM WWW.BBB197.COM WWW.Y6CZ.COM WWW.AILUB.COM WWW.GAO44.COM WWW.BBB442.COM WWW.SNXCR.COM WWW.218SJ.COM WWW.XBXB60.COM WWW.880BB.COM WWW.92DUDU.COM WWW.7060KK.COM WWW.HHH271.COM LAURA.SANCHEZ WWW.77HV.COM WWW.BBB40.COM WWW.AA191.COM WWW.QUICKLZ.COM WWW.ZJSUT.COM WWW.73NE.COM WWW.5678QI.COM WWW.WYXIUFU.COM 超碰欧美1 夜夜激情成人影音 av无限手机观看 9sekecim 依依社区人妻图片 goo电影777 三级做爱黄色小077 成人Av勉费电影视频wwwyehaobo7com 春晓大尺度私拍人体艺术 狠狠爱撸啊撸 成人游戏7878 日韩毛片基地ffff35com 激情影院男同性乱伦视频 刘芳菲口交 未成年色图片专区 熟女性穴图片 色姐姐找我解决 插我的小tube 久久熟女每日更新av 美女允男人的鸡巴视频 激情五月色姐妹83hhhhcom av网址图片 色妹妹luvvvvcom 插插插妹色色妹 淫翁浪媳玩3p 中年同志叔叔的大老二 九九色综合九九色综合九九色综合 欧美小浪妮免费视频 freechinesesexvideos 小泽玛利教室被搞 7黄片网站 青海色图 末世贱淫 亚洲视频视频99热 澳门赌场欧美辣图木木坏在线观看 国产sss视频在线 久热热 HTPPS6666av 男人吃女人的乳房好吗 幼女西瓜影音 2B姐姐的色图 成人电影苹果成人电影 成人电影偷拍自柏正在播放 深圳同志会所 99热女主播 美国性情中人网 av7886在线 淫色淫色激情成人网 百度wwwsusu29com 强奸初中妹在线播出 暴插大奶少妇 亚洲色图狠狠撸夜夜撸 妞干网无缓冲观看 汇聚全球精品丝袜50p rr150c0m 夜激情小说胸 亚洲美图欧美美图动漫美图精选小说人气小说家庭故事明星校园 野猪网播放器 大鸡巴用力操激情性爱 家庭教师做爱图片 5ekk 类似大波妹福利 偷拍自拍第一页46 色5天日本骚熟女 纵欲的少妇14p WWW259EECOMmp4 清纯美女插插自拍 一色 毛 美女无毛艺术下体 WWW_4444ATV_COM 欧美视频xxx 大鸡巴强奸a片亚州快播放录象视频 幼幼av在线 台湾老图片 开腿美女人体 干美穴p 欧美明星艳照门全集bt 771c人体淫 女s男m电影 色操逼成人网站 欧美浪屄图 护士的小屄 女同性爱快播 夫妻性爱淫片 百人体图片下载 我换妻的乐处 看儿子和妻子乱伦 插阴道人体艺术大图大全 淫乱的女同互相快播 狗吃美女奶 妹子射 大鸡巴的一篇 阴门抽插 dadanlubaoyubi 韩国最近出的一部电影男女主角在车里面发生关系的 成人在线国外 xxoo无插件 淫鬼五月 曰本全捰人体写真百度图片搜索 嫂子淫荡 国语对白影音先锋手机 日韩女神人体色图 苍老师淫叫 爷爷孙女做爱图 刘坤龙 福美来二代空调滤芯 萧强 队长袖标 黑脸娃娃前后对比 u盘有写保护 陈大顺 就去色色激情五月天 香奈儿成人视频 樋口冴子qvod快播 打飞机偷拍影音先锋 人体艺术性爱网页 在线播放日韩成人 欧美大屁股美女视频 日本妹妹综合 日本美女下体艺术摄影图 饭岛爱最后之作 俄罗斯熟女骚穴 乱骚淫荡图 av艳舞朴麦妮 偷拍自拍在线视频有声小说 幼女海滩p 人与动物的成人激情网 色老dou 裸体妹妹露b图片 朝美惠香yingyinxianfeng 朝鲜黄色一级片真玩 丝袜成人网站 ribennuedai 人体艺术ll chabiwang 性感沙滩漫画 母子交换撸区 乡村大妈淫乱 日木三极片 赤裸美女被操 天堂妹妹干网站 乱伦撸撸射wwwuc221com 亚洲美穴15p 女人互淫 五月热播另类 色色色色射射射狠狠 亚洲美女自拍人妻14p 清纯唯美四月五月 亚洲少妇和驴插逼 92jpmn 久久草鲁大妈电影 社会姐啪啪啪AV 中国妈妈口交 啪啪appwww23bene `国产毛片自拍 手机版色撸网 按摩抽插 电梯小姐无修国语版 鸡巴吃色色 好屌色qqc wwwxxx中国女影音 www250pp升级页面 邻家小妹是指什么气质 校园贞操带系列 色尼姑色和尚618mszhkcom wwww操 进出进出下体 美女淫荡的叫床声 我要曰逼 亿万老婆买一送一有声小说 樱井莉亚肉种子 小泽玛利亚露图 快播h网大全 51酒色网 黄色小说阅读器 D1D1成人网 蜜桃95撸管天堂 亚洲大香蕉 迅雷下载 www,好了av笫四色,com 美腿丝袜影音先锋av影视 法国av男主 色就色s94 vv影院 明日花绮罗snis615 www,javpapa,com 阿娇13分mp4下载磁力 放课后无码观看 人狗直播迅雷下载 性欧美孕妇x6 秋霞电院心理在线 性感女神ppp视频 邪恶dt图片第145大全 日本人六九视频jllzz 催眠羞辱学园在线视频 h动漫福利在线播放 女同性av在线观看 1四虎影剧在线播放 幸福一家人倪红霞 成人视频久廿 国产水柔全集 上司狂插少妇无码磁力 与男友爱爱的动作视屏 狠狠爱国产偷拍 美女掰阴自慰视 美国成人小视频 jezzz18 野鸡网在线577 微拍福利二区757 超碰AV大帝視頻 中文字慕大香蕉免费视频 韩国韩宝贝仙桃在线看 青青草影院肏屄视频直播 视频黄页 男女 操18岁女儿在线播放 cocogogo77在线 midd944 n七七卩S//156Zy 日本阿AV 机机干人人操视频在线观看 828vv类似平台 snis-731百度云 丝露视频在线 超碰免费视频 magnet 加勒比AV影音一本道 成人影片牛奶在线 av12天堂网2018亚洲 avop–227 微信sw225 yyzzooxx 嗯嗯啊啊噢噢用力操好爽大鸡巴 xo爽片体验视频 xmkk首发网 恋母故事在线 国产成人啪啪自拍 中文字幕伦理日本免费 午夜福利在线资源站 狠狠烽 吞精饮尿日本在线播放 周末情趣影院 在线Av网站 人人曰人人干 JSU发布组-最新最全导航书签 淫女福利视频导航 颐和园中国伦理片 美国四级复古磁力 国产白色视频在线 东京激情特辑无码 任你操不一样的视频 害羞素人中出在线视频 男用j插女b 超短裙女教师 第一次福利网站 色色在线视观看免费 里i番acg 人与人zoyXX 片名:[有码中文]禁断介护 绀野ひかる状 csobi 亚洲国产港台第一页 2018最新国产自拍做爱 日韩人妻免费高清视频 日本xx素人偷拍 在线观看一本道武藤兰 成电人影juyav 母乳av资源 chinese tubeboy free 舔阿姨淫水 祥仔在线 国产一级夫妻生活片 色农夫 导航 11111黄片 强奸了日本处女视频 啪啪声视频 四虎操逼影院久免费视频 美女主播裸身直播 虐阴虐乳在线观看 干日本妇妇高清 农夫AV神马枪AV神马影院 四虎天天干 强奸磁力 mp4 偷拍自拍情欲禁地 德川重男教书法gif电影 操锰影院 色pa动图 AV农夫 在线欧美AV 香蕉网婷婷 亚洲人成网站在线播放图片 淘av导航 毕业生 zaixian mianfei 成人电影偷拍 暴风福利在线播放 白丝小学生被操逼 snis724 在线 成人黄色自拍啪啪网 草榴t66y 超美外围女 冒险无套 百度福利高清视频在线观看 国产自拍-啪啪乐 伦理区eeuss 色爱区在线视频网站 7b7b视频网 国产搭讪乡村露脸磁力链接 下载 国产 三级 乱伦 强奸 人妻 xiaocaoshipinwang TS国产自拍 a性交视频 日本三级床呻吟视频 有奔空姐家狂操她的小逼视频 啪啪啪直播福利视频 四虎影音k66b muffia三乳女免费视频 wavr黄色 91邪恶网 裸男裸女啪啪啪视频 国产在线视频 美女自慰高潮冒白浆在线 欧美波霸影院 迅雷下载 俄罗斯母乳大赛 无码中文字幕视频 av网站资源大全 8xcao 美女a毛片 藤原瞳三孔齐上在线播放 大鸡吧操关婷婷逼痒痒的 东京性旅行 观看 九哥小浪窑网 可可和教练 迅雷链接 动漫自拍 色天使手机在线 奇奇网 混浴爱爱视频 鸡巴猛插插视频 青草在线内地 吉川莲无码流出链接 金卡戴珊在线观看地址 姐妹同夫81xacom 吉本多香美三级 起碰视频人人在线福利 肉肉 内射美女逼 人蓄交配视频 琪琪在线va 国产SM精品白富美富姐浴室玩弄漂亮女奴 白石茉莉奈 磁力下载 下载 狐狸hense 女主播 magnet swww560yycon 马小云资源在线 国外一级录像 《露出で乳イカせ》 国产偷拍自拍在线云播放 亚欧,日韩,中文在线 127 超碰3d动漫av在线播放 女主播自慰漏奶 美女主播手指扣逼视频 国产熟女BT riricaozongheyingyuan 动漫啪啪网 国产自拍 日本有码 91 亚洲第一导航福利视频 91深夜男人福利社区加入 国产偷拍自拍中文对白在线 干av在线 亚洲美乳无码分享 成人自拍碰碰在线免费观看 男人福利天堂免费观看 超碰av795 芦名未帆 西瓜影音 52avav我愿日本一 一级棒的美国j毛片 影音先锋qq318资源 689aaa 三上悠亚羽毛球 rmvb 国内自拍欧美激情 一本道 群交 在线播放 艾丝女王免费恋足视频 操逼网裸体掰阴 一个逼被日多了是怎么样的 大胆人体艺术网罗全球最大胆的人体艺术摄影图片照 波多野结衣美色图 快播丝袜少妇下载 林柏欣大胆人体艺述粉嫩美穴图片 操婆小说 成人做爱叫声 欧美金发美女洞大胆30p 1毛片级 激情男操女过程 肥腿人体艺术 音乐学院mm集体被强暴 美女老婆黑木耳 强暴在线自拍 欧美做爱透 25亚洲成人电影 色小三成人综合网 全部数据qvod偷拍自拍 萝莉h木耳图 青山菜菜 很狠爽影院com 人体少女成人艺术 肥佬簧片 色播张柏芝全套种子 操上美女楔 欧美熟妇刚交图 裸模麦苹果艳照种子 833jj in 性吧 美女吃精液高清图片 小川あさ美qvod 俺去也婷婷六月天 苍井空脚淫 先锋成人激情电影导航 xiao77论坛新年 影音先锋干女人逼 大鸡巴肏的爽风流老师 人体艺术ud 快乐公公和三个媳妇 熟女被干的种子 操大屄吗 俺去乱了 xfplay 6666 97成人小说 下载 经典av片名字 儿媳的靓屄 插穴粉逼蕾丝 bb4444 治要多少钱 泰囧电影下载 中华预测网 电动玩具车 怎么搞女逼逼 三级片露乳头 WWW_09GGG_COM wwwvv9vom 欧美幼交百度影音 插妹妹b电影 WWW_HOTLXCHYL_COM 苍井空乳房写真 风骚大胆性感人体艺术 教师的骚穴小说 中国顶级性爰片 及川淳子教授近照 美女黑川丰满可爱人体 sao美女人 关于足交的av WWW_988SE_COM 就爱操我逼 自拍伦理资源 乱伦短篇书籍 老姐视频合集 女阴口冈 日本肥婆 怎样看奶奶肏屄视频 波多野结衣人体艺术露阴 先锋大色妈导航 要能看波多野结衣的网站 色色成人网小说 黑木一香尻传说 爸爸插错洞吉吉 欧美女人露下沟图 幼女专区 操逼网武则天 媳妇欲哥哥淫欲 美女被插到高潮 妹妹窝欧洲人体艺术 山口铃子音影先锋 美妇露屄 全集网百科 成人在线av免费视 影音先锋sex8 骚穴内射骚逼 五月天33 妓女被轮奸小说 丁谈性交电影 欧洲色图亚洲色图撸 迅雷拳交网址 人与兽性交电影我和温柔的小母马 求一个成人黄色图片网站 快插爽死了呻吟mp3录音试听 蓝光波野多结衣 欧美另类少妇熟女11p 少女淫乱乳交爽图 明星11p 坏哥哥爱爱看视频在线观看 怀旧影苑茶余饭后 先锋影音欧美成人资源 波多野吉衣黄色网站 佐佐木的qq 久久撸久久肏开心五月 强奸乱伦校园都市激情 张雨绮内射p luanlun爱 宾馆极品15p 美女干逼人体艺术 大奶子插穴影音先锋 haodiaoorg 糗百偷拍自拍 晨诗怡磁力链接 evelynlinwikipedia 午夜情电影网 东北妞和哥哥激情 248部母乱自拍视频1页www9797ppcom wwwwuyefulinetvideo 网站wwwfoxtubecom 老师学生妹粉鲍穴 抽插咪咪 淫淫www38jwcom 撸露设 邪恶熟女系列 母子淫荡网角3 性虐老婆的小说 超碰视频来射吧飙奶 太平猴魁属于什么茶 爆操金发 b8mpmp4下载 安全无毒色图 婷四房色播 狠狠干天天色天天撸 小泽玛利亚在线dv观看 陌陌动漫网AV 梅伊比斯 超嫩幼女自慰 先先锋资源黄色网站 国语对白av先锋 av人体艺术之美穴 涩酷 艺术照少女未成年图片 无码女神陈丽 穿开档丝袜女人视频 嫩逼骚妇的精致美逼特写 亚洲有码无码中出百度网盘 亚洲炮照 黄色电影三星 影音先锋ye321net 小蚂蚁化学 乱伦锦集 酒色网女色网 操日本岳母 被操最多明星 强奸轮奸乱伦电影小说视频qiangjianluanluncom 亚女优Av 丰乳美艳人妻AV 海扁王2百度云 WWW92BBCCCON ■www190dcn■ 群交性奴图片小说 国产偷拍自拍14p 帅哥自慰视频 亚洲三级五月天百度 捆绑丝袜 男人免费超碰在线视频 做爱毛片岛国视频 师生 lu198com 和美女插dd小说 和女孩子穿牛仔裤啊啊啊啊 久草热在线视频精 大香蕉成人Av图片 做爱内射 中文无码口交乱伦短片 chinesepornvideos--porn300 印度伊人成人 yyxfav中文字幕 撸55 中文字幕强奸乱伦热播视频 老逼在线 大香蕉网伊人论坛 噜噜噜噜噜噜噜 wwwbaiducomwww4444dkcom 妹子插姐姐 88rrcon GG206ED2K 嫖娼系列在线 怕啪啪啪在线影院 女孩发骚自慰 五月欧美 淫荡老婆勾引大鸡巴 美国人xxx之偷窥 安卓成人视频器 2233AC0M 黄色l乱伦 淫荡少妇激情小说明星淫乱 成人自拍偷拍微信视频 日小妹妹网 www2bbbbcom 野人性交电影 高潮白浆你懂的 WWW,3Q5Q,C0n 人与动物天堂网站大全 av电影www5yycom 男女插水进 赤足者视频magnet 9191偷拍女厕视频 亚东方av在线狠狠撸自拍色图 色艺无间正面是哪集 与妻子小姨子同时啪啪啪 AV分类视频大全 人人插人人摸人人添 福利欧美顶级居家私拍 pornhd村上凉子 千人斩官网经典mnnnn58com 影音先锋调教资源 蝌蚪窝国产自拍在线 好逼天天网 q2002在线观看m917mmcom 不穿内裤的 wwwluav2comwwwluav2com 黄色电影之捆绑式 超碰95碰 巨乳学生制服自拍 公交车上的那些风流韵事 你懂的网站mp4 4444kkcom快播电影 美国黑人美女大屁股人体 av手机快播天堂 亚洲美女嫩穴图片 影音先锋人肏肏狗 om色青电影大片 婷婷五月天性爱片 夫妻打波照片 大鸡吧操大屄图片 全球人体四级电影 大胆 人体骚逼 快播qvod电影合集 逍遥社区成人网站 亚洲欧美自拍偷拍淫欲放荡激爽酷图清纯唯美明星艳照校园春色 WWW_38PA_COM 骚货熟女百度贴吧 偷拍小女人 插小姨的嫩洞穴 我操了妹妹的小穴 木屄 色图你色我也色 色导航色站导航 2012成人小说 插穴p 丝袜女人做爱偷拍自拍 日本 大奶丰满岳母 女儿都和女婿做爱 中文字幕 无码 先锋播放 我来也luanlunxiaoshuo 性干美女衣视频 08艳照 WWW_069QQ_COM 婷婷激情社区 幼女屄模 不穿戴任何衣物的大奶美女 国产草嫂子第二季 海贼王桌面壁纸高清 尹进良 巴布亚新几内亚属于哪个洲 五色天偷拍自拍 阴道极限虐待 www09kkk 女艺术图 欧美性爱潮喷集锦 人妻亲嘴图片小说 人妻小说激情网 自拍91自拍下载 草裙社区18成人网 有一个网站叫什么姐姐 人体艺术图片两性成人网 成人大奶人妻 学园2淫虐の図式 美人影院是真的吗 66人体激情艺术 淫萋小说 综合娱乐成人网 偷拍自拍12p 偷拍漏b无码 撸斆琅 成人免费电影乱伦小说 白白色人月马交配视频 kkbokk自拍图片 色女吃大阴茎 性爱技巧小故事 黄片处女破处流血 猛操死处女小说 苍井空母片 应采儿3ji 色吧淫乱 色尼姑五月天亚洲影院 无码电影 久久偷窥女厕国产视频wwwjiujiu7pcom 成人网站5566 金瓶梅在线免费电影 性感骚少妇视频 啪啪丝熟偷拍AV视频 青岛小琴简历 老外大鸡吧插逼 女人自慰久久网视频 福利电影院最新入口 ccc858com午夜a片 妻子与干爹李娜TXT 丝足会所导航 哥哥色姐姐干www777cccnet 日本邪恶动画片ftp 先锋影音中国无码免费色片 720lu自拍www820qqcc 老婆喜欢看大奶的女人 人妻熟女一级片在线播放 大色网小色网wwwlululu9com BT汤芳 11p图片欧美 性奴淫荡乱伦mp4 淫荡的教师艳母 亚洲欧美图片图片小说www2xnxncom 幼女刚刚发育图片 唐嫣av视频magnet 热热av原九九爱 成人直播下载地址 黄色片毛片三级片首页 兽皇合集在线播放 kanxxx 偷拍卡通动漫另类口味 激情综合五月激请 肥熟少妇图片 美女露小穴逼逼图片 谷露新片 亚洲色图欧美校园春色成人动漫青春 白虎ann WWW_ADY9_NET 有声小说包 词三分春色 春色代码 春色香 樱井莉亚监禁bt 樱井莉亚什么病 小泽玛利亚属于 小泽玛利亚gang 谁有免费的手机黄网 www苦歌com www桃太廊com www合肥演唱会 开心婷婷快播五月天 东京热03 pp在线看黄片 波野结衣av影音先锋 黑木耳影院 妹妹快播 淫意影视 爱窝窝在线 草淑女影视 Naruto 撸二哥电影男人网站 xfplay下载先锋影音 久久爱影院 歪歪电影 亚洲AV天堂在线2017免费 藤蒲惠在线视频 就去爱色和尚 葡京午夜成人 协和影院65页 午夜xo影 tiantian kan tiantiancao WWW,998aVaV,C0m 任你末言 yellow中文字幕网 制服中文 日本东京热一本道无码视频dvd欧美下载 颜射H网盘 情侣性福园 强奸漂亮女仆视频 性感护士检查丁丁的视频 青青手机免费看a片 青春草97视频碰碰碰碰 情趣内衣 亚洲 日本相亲节目接吻视频全集 日本男人插阴经视频 日本一本道高清无码DVDVD 日本女优丝袜足交视频 日本女人上高潮时阴道哗哗流水高清视频免费体验 男女之事60秒体验视频 成人免费观看网站大全 催眠羞辱学园在线视频 中文歌a片 J\香五月 朱音实在线 狼人干成人综合在线 东方后宫东方a 很黄A级 sihu最新网页地址 免费韩国ⅴip主播秀 偷拍情侣宾馆无码 mp4 欧美老熟妇视频 亚洲无码――四虎影库新版 操一下免费视频 老湿妹妹想要视频 原味丝足胭脂扣在线视频 成人网亚洲 黄色小姐视频小电影 国产自拍性爱视频在线播放 做爱视频无码大尺度 尤酷播电影网 超碰51无码 精灵影院 欧美免费AV km320全球华人成人短视频 另类资源 play视频在线提供好看的无码AV在线观看和在线播放,更有大量经典无码AV高清无 老司机影院体验区一分钟理论区 任你想不到的搞法 长梓泽免费视频 eee677 大西瓜pro福利亚州在线 掂花网 大香伊 在线美女 欧美无码番号下载 江疏影福利视频在线观看 一点拍福利视频 高铁上偷拍女人奶头 超长版黄片 夫妻做爱免费视频 情侣 秋霞在线观看_秋霞电影高清完整版-搜狗电影 三浦春佳肛交 下载 制服 丝袜 强奸 快播 骚屌操视频 露毛福利 日日日嗷嗷嗷视频在线观看 影音先锋主播勾引 757午夜福利影视1000 欧美啪啪51影院 青青青手机版自拍福利 树先生无删减版93分 秋欲浓成人网站 爱做av 日批视频有哪些 超在线操 张筱雨大尺度写真迅雷链接下载 午夜福利41 撸羊毛自拍 真人兔女郎福利视频 童颜巨乳女主播种子 90heyz 美国 高清无码 磁链接 256bl五月天 欧美AV 插死她 任你操任你曰爽爽 视频在线国产亚洲精品 91自拍网站在线看 绝色18岁美处女开苞 日本辣妈性交 wwwaⅤ747com 杨幂一分十一秒手机在线观看m youbbbla 在线 88资源总站 色友巴视频在线播放 岛国激情片 福利 下载 红楼吧影视 欧美九哥孕妇操逼视频 五色影院地址 日本大妈优女性爱视频 日本综合色高清无码 双飞美脚 下载 一级夫妻性生录像 东京热苍井空av 美国av磁力 爱的色放全2017奇奇网 苍井空无码a免费观看 操美女直播亚州在线 操逼故事在线视屏 操女人逼夜色视频 韩国丝袜购物直播 孩子们的秘密人人视频 不十岁的毛片一级 伦理片五月天六月丁香 mmmm89 床插胸 AV就去吻 av番号在线观看 www,岛国,com 爆乳白富美穿着性感肉丝拍写真逼逼真肥美 草帽AV 伦理短视频试着免费 十八禁啪啦啪漫画百度云 艺术写真视频得到k 乔丹卡佛三级磁力 青娱乐精品快播 恋脚癖的福利 日本wwww午夜com 高清强奸视频xxx 97和谐无码 amsr福利视频 啪啪啪鸡视频网 国产迷奸自拍 兼职模特琪琪 丝袜美腿诱惑优酷视频 操逼视频一级黄片 98g奶小妹视频 最新偷拍自拍图 露点紧身裤视频 偷拍爱爱视频电影院 欧美俱乐部在线视频 电影天堂利欧路 另类sm专区 1人体艺术无限极 斑斑马电影街 淫乱淑女 女屌操视 5388x成人 天使萌bt下载 李丽珍三级合集种子迅雷mp4 同人视频肉 小视频夜香阁在线观看 鲁呀鲁luya视频 日韩在线视频亚洲无码 限制级福利视频第九影院 国产夫产拍拍 美女爱爱短片 裸体女明星写真磁力下载 伦理色中文 色和尚2017最新综合在线 裸体瑜伽 magnet xt urn btih 青鱼视频情侣在線 秋霞网色大哥 日本亚洲风情性插图 qiqiluenli 性感视频在线 fk福利网站小视频 川村麻耶中文字幕 mp4 人与动物性交 足艺阁踩踏 真人插b 狠狠天天曰天天日 偶偶福利电影 女主播福利影院 嗨碰牛牛午?成人视频 坏坏小影院 色老板影院不卡 男女添bb日b视频 撸免费在线视频 韩国限制2018在线观看 柳岩午夜伦理 桃花岛在线视频五码 日本高清视频激情图片激情小说 普团惠 716OC0M 27报电影 91大神国产自拍 126bar自拍 意念射精视频 好屌看色色视频 国产自拍综 韩国天体营真人秀在线观看 国产自拍偷拍泡泡视频 国产自拍、欧美 鸡鸡爱逼逼av-淘宝m3n8 天天橹一把影院 快看漫画 亚洲老B骚AV视频在线 96碰碰在线播放 a片性爱视频 亚洲区欧美区综合图片自拍 法律的基本本能动漫 口交和乳交视频 6度影院鲁鲁片 苍井空真集 黄色小说女人与公犬做爱 97bt工厂现在怎么进去 奸鲍鱼肥臀视频 少妇嫩逼性交图片 她也色成人网站 男人操网 WWW_W3_ORG 男女在做爱色图