finishm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +1 -0
  5. data/Gemfile +31 -0
  6. data/LICENSE.txt +20 -0
  7. data/README.md +59 -0
  8. data/Rakefile +51 -0
  9. data/VERSION +1 -0
  10. data/bin/assembly_visualiser +106 -0
  11. data/bin/check_primer_combinations.rb +73 -0
  12. data/bin/contig_joiner.rb +244 -0
  13. data/bin/contigs_against_assembly.rb +153 -0
  14. data/bin/finishm +143 -0
  15. data/bin/finishm_assembler +55 -0
  16. data/bin/finishm_gap_closer.rb +241 -0
  17. data/bin/kmer_abundance_file_tool.rb +49 -0
  18. data/bin/kmer_pattern_to_assembly.rb +377 -0
  19. data/bin/kmer_profile_finder.rb +92 -0
  20. data/bin/kmers_count_parse.d +52 -0
  21. data/bin/kmers_count_tabulate.d +123 -0
  22. data/bin/kmers_count_tabulate.rb +84 -0
  23. data/bin/pcr_result_parser.rb +108 -0
  24. data/bin/primer_finder.rb +119 -0
  25. data/bin/read_selection_by_kmer.d +174 -0
  26. data/bin/scaffold_by_pattern.rb +119 -0
  27. data/bin/scaffold_connection_possibilities_to_knowns.rb +193 -0
  28. data/bin/scaffold_end_coverages.rb +69 -0
  29. data/bin/trail_validator.rb +84 -0
  30. data/ext/mkrf_conf.rb +56 -0
  31. data/ext/src/Makefile +140 -0
  32. data/ext/src/src/allocArray.c +305 -0
  33. data/ext/src/src/allocArray.h +86 -0
  34. data/ext/src/src/autoOpen.c +107 -0
  35. data/ext/src/src/autoOpen.h +18 -0
  36. data/ext/src/src/binarySequences.c +813 -0
  37. data/ext/src/src/binarySequences.h +125 -0
  38. data/ext/src/src/concatenatedGraph.c +233 -0
  39. data/ext/src/src/concatenatedGraph.h +30 -0
  40. data/ext/src/src/concatenatedPreGraph.c +262 -0
  41. data/ext/src/src/concatenatedPreGraph.h +29 -0
  42. data/ext/src/src/correctedGraph.c +2643 -0
  43. data/ext/src/src/correctedGraph.h +32 -0
  44. data/ext/src/src/dfib.c +509 -0
  45. data/ext/src/src/dfib.h +69 -0
  46. data/ext/src/src/dfibHeap.c +89 -0
  47. data/ext/src/src/dfibHeap.h +39 -0
  48. data/ext/src/src/dfibpriv.h +105 -0
  49. data/ext/src/src/fib.c +628 -0
  50. data/ext/src/src/fib.h +78 -0
  51. data/ext/src/src/fibHeap.c +79 -0
  52. data/ext/src/src/fibHeap.h +41 -0
  53. data/ext/src/src/fibpriv.h +110 -0
  54. data/ext/src/src/globals.h +154 -0
  55. data/ext/src/src/graph.c +3932 -0
  56. data/ext/src/src/graph.h +233 -0
  57. data/ext/src/src/graphReConstruction.c +1472 -0
  58. data/ext/src/src/graphReConstruction.h +30 -0
  59. data/ext/src/src/graphStats.c +2167 -0
  60. data/ext/src/src/graphStats.h +72 -0
  61. data/ext/src/src/graphStructures.h +52 -0
  62. data/ext/src/src/kmer.c +652 -0
  63. data/ext/src/src/kmer.h +73 -0
  64. data/ext/src/src/kmerOccurenceTable.c +236 -0
  65. data/ext/src/src/kmerOccurenceTable.h +44 -0
  66. data/ext/src/src/kseq.h +223 -0
  67. data/ext/src/src/locallyCorrectedGraph.c +557 -0
  68. data/ext/src/src/locallyCorrectedGraph.h +40 -0
  69. data/ext/src/src/passageMarker.c +677 -0
  70. data/ext/src/src/passageMarker.h +137 -0
  71. data/ext/src/src/preGraph.c +1717 -0
  72. data/ext/src/src/preGraph.h +106 -0
  73. data/ext/src/src/preGraphConstruction.c +990 -0
  74. data/ext/src/src/preGraphConstruction.h +26 -0
  75. data/ext/src/src/probe_node_finder.c +84 -0
  76. data/ext/src/src/probe_node_finder.h +6 -0
  77. data/ext/src/src/readCoherentGraph.c +557 -0
  78. data/ext/src/src/readCoherentGraph.h +30 -0
  79. data/ext/src/src/readSet.c +1734 -0
  80. data/ext/src/src/readSet.h +67 -0
  81. data/ext/src/src/readToNode.c +218 -0
  82. data/ext/src/src/readToNode.h +35 -0
  83. data/ext/src/src/recycleBin.c +199 -0
  84. data/ext/src/src/recycleBin.h +58 -0
  85. data/ext/src/src/roadMap.c +342 -0
  86. data/ext/src/src/roadMap.h +65 -0
  87. data/ext/src/src/run.c +318 -0
  88. data/ext/src/src/run.h +52 -0
  89. data/ext/src/src/run2.c +744 -0
  90. data/ext/src/src/runReadToNode.c +29 -0
  91. data/ext/src/src/scaffold.c +1876 -0
  92. data/ext/src/src/scaffold.h +64 -0
  93. data/ext/src/src/shortReadPairs.c +1243 -0
  94. data/ext/src/src/shortReadPairs.h +32 -0
  95. data/ext/src/src/splay.c +259 -0
  96. data/ext/src/src/splay.h +43 -0
  97. data/ext/src/src/splayTable.c +1315 -0
  98. data/ext/src/src/splayTable.h +31 -0
  99. data/ext/src/src/tightString.c +362 -0
  100. data/ext/src/src/tightString.h +82 -0
  101. data/ext/src/src/utility.c +199 -0
  102. data/ext/src/src/utility.h +98 -0
  103. data/ext/src/third-party/zlib-1.2.3/ChangeLog +855 -0
  104. data/ext/src/third-party/zlib-1.2.3/FAQ +339 -0
  105. data/ext/src/third-party/zlib-1.2.3/INDEX +51 -0
  106. data/ext/src/third-party/zlib-1.2.3/Makefile +154 -0
  107. data/ext/src/third-party/zlib-1.2.3/Makefile.in +154 -0
  108. data/ext/src/third-party/zlib-1.2.3/README +125 -0
  109. data/ext/src/third-party/zlib-1.2.3/adler32.c +149 -0
  110. data/ext/src/third-party/zlib-1.2.3/adler32.o +0 -0
  111. data/ext/src/third-party/zlib-1.2.3/algorithm.txt +209 -0
  112. data/ext/src/third-party/zlib-1.2.3/amiga/Makefile.pup +66 -0
  113. data/ext/src/third-party/zlib-1.2.3/amiga/Makefile.sas +65 -0
  114. data/ext/src/third-party/zlib-1.2.3/as400/bndsrc +132 -0
  115. data/ext/src/third-party/zlib-1.2.3/as400/compile.clp +123 -0
  116. data/ext/src/third-party/zlib-1.2.3/as400/readme.txt +111 -0
  117. data/ext/src/third-party/zlib-1.2.3/as400/zlib.inc +331 -0
  118. data/ext/src/third-party/zlib-1.2.3/compress.c +79 -0
  119. data/ext/src/third-party/zlib-1.2.3/compress.o +0 -0
  120. data/ext/src/third-party/zlib-1.2.3/configure +459 -0
  121. data/ext/src/third-party/zlib-1.2.3/contrib/README.contrib +71 -0
  122. data/ext/src/third-party/zlib-1.2.3/contrib/ada/buffer_demo.adb +106 -0
  123. data/ext/src/third-party/zlib-1.2.3/contrib/ada/mtest.adb +156 -0
  124. data/ext/src/third-party/zlib-1.2.3/contrib/ada/read.adb +156 -0
  125. data/ext/src/third-party/zlib-1.2.3/contrib/ada/readme.txt +65 -0
  126. data/ext/src/third-party/zlib-1.2.3/contrib/ada/test.adb +463 -0
  127. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-streams.adb +225 -0
  128. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-streams.ads +114 -0
  129. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-thin.adb +141 -0
  130. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-thin.ads +450 -0
  131. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.adb +701 -0
  132. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.ads +328 -0
  133. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.gpr +20 -0
  134. data/ext/src/third-party/zlib-1.2.3/contrib/asm586/README.586 +43 -0
  135. data/ext/src/third-party/zlib-1.2.3/contrib/asm586/match.S +364 -0
  136. data/ext/src/third-party/zlib-1.2.3/contrib/asm686/README.686 +34 -0
  137. data/ext/src/third-party/zlib-1.2.3/contrib/asm686/match.S +329 -0
  138. data/ext/src/third-party/zlib-1.2.3/contrib/blast/Makefile +8 -0
  139. data/ext/src/third-party/zlib-1.2.3/contrib/blast/README +4 -0
  140. data/ext/src/third-party/zlib-1.2.3/contrib/blast/blast.c +444 -0
  141. data/ext/src/third-party/zlib-1.2.3/contrib/blast/blast.h +71 -0
  142. data/ext/src/third-party/zlib-1.2.3/contrib/blast/test.pk +0 -0
  143. data/ext/src/third-party/zlib-1.2.3/contrib/blast/test.txt +1 -0
  144. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/ZLib.pas +557 -0
  145. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/ZLibConst.pas +11 -0
  146. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/readme.txt +76 -0
  147. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/zlibd32.mak +93 -0
  148. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.build +33 -0
  149. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.chm +0 -0
  150. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.sln +21 -0
  151. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/AssemblyInfo.cs +58 -0
  152. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/ChecksumImpl.cs +202 -0
  153. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/CircularBuffer.cs +83 -0
  154. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/CodecBase.cs +198 -0
  155. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/Deflater.cs +106 -0
  156. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/DotZLib.cs +288 -0
  157. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/DotZLib.csproj +141 -0
  158. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/GZipStream.cs +301 -0
  159. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/Inflater.cs +105 -0
  160. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/UnitTests.cs +274 -0
  161. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  162. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/readme.txt +58 -0
  163. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/README +1 -0
  164. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/infback9.c +608 -0
  165. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/infback9.h +37 -0
  166. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inffix9.h +107 -0
  167. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inflate9.h +47 -0
  168. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inftree9.c +323 -0
  169. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inftree9.h +55 -0
  170. data/ext/src/third-party/zlib-1.2.3/contrib/inflate86/inffas86.c +1157 -0
  171. data/ext/src/third-party/zlib-1.2.3/contrib/inflate86/inffast.S +1368 -0
  172. data/ext/src/third-party/zlib-1.2.3/contrib/iostream/test.cpp +24 -0
  173. data/ext/src/third-party/zlib-1.2.3/contrib/iostream/zfstream.cpp +329 -0
  174. data/ext/src/third-party/zlib-1.2.3/contrib/iostream/zfstream.h +128 -0
  175. data/ext/src/third-party/zlib-1.2.3/contrib/iostream2/zstream.h +307 -0
  176. data/ext/src/third-party/zlib-1.2.3/contrib/iostream2/zstream_test.cpp +25 -0
  177. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/README +35 -0
  178. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/TODO +17 -0
  179. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/test.cc +50 -0
  180. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/zfstream.cc +479 -0
  181. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/zfstream.h +466 -0
  182. data/ext/src/third-party/zlib-1.2.3/contrib/masm686/match.asm +413 -0
  183. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/bld_ml64.bat +2 -0
  184. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/gvmat64.asm +513 -0
  185. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/gvmat64.obj +0 -0
  186. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffas8664.c +186 -0
  187. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffasx64.asm +392 -0
  188. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffasx64.obj +0 -0
  189. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/readme.txt +28 -0
  190. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/bld_ml32.bat +2 -0
  191. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32.asm +972 -0
  192. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32.obj +0 -0
  193. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32c.c +62 -0
  194. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/inffas32.asm +1083 -0
  195. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/inffas32.obj +0 -0
  196. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/mkasm.bat +3 -0
  197. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/readme.txt +21 -0
  198. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ChangeLogUnzip +67 -0
  199. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/Makefile +25 -0
  200. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/crypt.h +132 -0
  201. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ioapi.c +177 -0
  202. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ioapi.h +75 -0
  203. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/iowin32.c +270 -0
  204. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/iowin32.h +21 -0
  205. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/miniunz.c +585 -0
  206. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/minizip.c +420 -0
  207. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/mztools.c +281 -0
  208. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/mztools.h +31 -0
  209. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/unzip.c +1598 -0
  210. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/unzip.h +354 -0
  211. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/zip.c +1219 -0
  212. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/zip.h +235 -0
  213. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/example.pas +599 -0
  214. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/readme.txt +76 -0
  215. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/zlibd32.mak +93 -0
  216. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/zlibpas.pas +236 -0
  217. data/ext/src/third-party/zlib-1.2.3/contrib/puff/Makefile +8 -0
  218. data/ext/src/third-party/zlib-1.2.3/contrib/puff/README +63 -0
  219. data/ext/src/third-party/zlib-1.2.3/contrib/puff/puff.c +837 -0
  220. data/ext/src/third-party/zlib-1.2.3/contrib/puff/puff.h +31 -0
  221. data/ext/src/third-party/zlib-1.2.3/contrib/puff/zeros.raw +0 -0
  222. data/ext/src/third-party/zlib-1.2.3/contrib/testzlib/testzlib.c +275 -0
  223. data/ext/src/third-party/zlib-1.2.3/contrib/testzlib/testzlib.txt +10 -0
  224. data/ext/src/third-party/zlib-1.2.3/contrib/untgz/Makefile +14 -0
  225. data/ext/src/third-party/zlib-1.2.3/contrib/untgz/Makefile.msc +17 -0
  226. data/ext/src/third-party/zlib-1.2.3/contrib/untgz/untgz.c +674 -0
  227. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/readme.txt +73 -0
  228. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/miniunz.vcproj +126 -0
  229. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/minizip.vcproj +126 -0
  230. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/testzlib.vcproj +126 -0
  231. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlib.rc +32 -0
  232. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibstat.vcproj +246 -0
  233. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.def +92 -0
  234. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.sln +78 -0
  235. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.vcproj +445 -0
  236. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/miniunz.vcproj +566 -0
  237. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/minizip.vcproj +563 -0
  238. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/testzlib.vcproj +948 -0
  239. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/testzlibdll.vcproj +567 -0
  240. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlib.rc +32 -0
  241. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibstat.vcproj +870 -0
  242. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.def +92 -0
  243. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.sln +144 -0
  244. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.vcproj +1219 -0
  245. data/ext/src/third-party/zlib-1.2.3/crc32.c +423 -0
  246. data/ext/src/third-party/zlib-1.2.3/crc32.h +441 -0
  247. data/ext/src/third-party/zlib-1.2.3/crc32.o +0 -0
  248. data/ext/src/third-party/zlib-1.2.3/deflate.c +1736 -0
  249. data/ext/src/third-party/zlib-1.2.3/deflate.h +331 -0
  250. data/ext/src/third-party/zlib-1.2.3/deflate.o +0 -0
  251. data/ext/src/third-party/zlib-1.2.3/example +0 -0
  252. data/ext/src/third-party/zlib-1.2.3/example.c +565 -0
  253. data/ext/src/third-party/zlib-1.2.3/examples/README.examples +42 -0
  254. data/ext/src/third-party/zlib-1.2.3/examples/fitblk.c +233 -0
  255. data/ext/src/third-party/zlib-1.2.3/examples/gun.c +693 -0
  256. data/ext/src/third-party/zlib-1.2.3/examples/gzappend.c +500 -0
  257. data/ext/src/third-party/zlib-1.2.3/examples/gzjoin.c +448 -0
  258. data/ext/src/third-party/zlib-1.2.3/examples/gzlog.c +413 -0
  259. data/ext/src/third-party/zlib-1.2.3/examples/gzlog.h +58 -0
  260. data/ext/src/third-party/zlib-1.2.3/examples/zlib_how.html +523 -0
  261. data/ext/src/third-party/zlib-1.2.3/examples/zpipe.c +191 -0
  262. data/ext/src/third-party/zlib-1.2.3/examples/zran.c +404 -0
  263. data/ext/src/third-party/zlib-1.2.3/gzio.c +1026 -0
  264. data/ext/src/third-party/zlib-1.2.3/gzio.o +0 -0
  265. data/ext/src/third-party/zlib-1.2.3/infback.c +623 -0
  266. data/ext/src/third-party/zlib-1.2.3/infback.o +0 -0
  267. data/ext/src/third-party/zlib-1.2.3/inffast.c +318 -0
  268. data/ext/src/third-party/zlib-1.2.3/inffast.h +11 -0
  269. data/ext/src/third-party/zlib-1.2.3/inffast.o +0 -0
  270. data/ext/src/third-party/zlib-1.2.3/inffixed.h +94 -0
  271. data/ext/src/third-party/zlib-1.2.3/inflate.c +1368 -0
  272. data/ext/src/third-party/zlib-1.2.3/inflate.h +115 -0
  273. data/ext/src/third-party/zlib-1.2.3/inflate.o +0 -0
  274. data/ext/src/third-party/zlib-1.2.3/inftrees.c +329 -0
  275. data/ext/src/third-party/zlib-1.2.3/inftrees.h +55 -0
  276. data/ext/src/third-party/zlib-1.2.3/inftrees.o +0 -0
  277. data/ext/src/third-party/zlib-1.2.3/libz.a +0 -0
  278. data/ext/src/third-party/zlib-1.2.3/make_vms.com +461 -0
  279. data/ext/src/third-party/zlib-1.2.3/minigzip +0 -0
  280. data/ext/src/third-party/zlib-1.2.3/minigzip.c +322 -0
  281. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.bor +109 -0
  282. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.dj2 +104 -0
  283. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.emx +69 -0
  284. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.msc +106 -0
  285. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.tc +94 -0
  286. data/ext/src/third-party/zlib-1.2.3/old/Makefile.riscos +151 -0
  287. data/ext/src/third-party/zlib-1.2.3/old/README +3 -0
  288. data/ext/src/third-party/zlib-1.2.3/old/descrip.mms +48 -0
  289. data/ext/src/third-party/zlib-1.2.3/old/os2/Makefile.os2 +136 -0
  290. data/ext/src/third-party/zlib-1.2.3/old/os2/zlib.def +51 -0
  291. data/ext/src/third-party/zlib-1.2.3/old/visual-basic.txt +160 -0
  292. data/ext/src/third-party/zlib-1.2.3/old/zlib.html +971 -0
  293. data/ext/src/third-party/zlib-1.2.3/projects/README.projects +41 -0
  294. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/README.txt +73 -0
  295. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/example.dsp +278 -0
  296. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/minigzip.dsp +278 -0
  297. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/zlib.dsp +609 -0
  298. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/zlib.dsw +59 -0
  299. data/ext/src/third-party/zlib-1.2.3/qnx/package.qpg +141 -0
  300. data/ext/src/third-party/zlib-1.2.3/trees.c +1219 -0
  301. data/ext/src/third-party/zlib-1.2.3/trees.h +128 -0
  302. data/ext/src/third-party/zlib-1.2.3/trees.o +0 -0
  303. data/ext/src/third-party/zlib-1.2.3/uncompr.c +61 -0
  304. data/ext/src/third-party/zlib-1.2.3/uncompr.o +0 -0
  305. data/ext/src/third-party/zlib-1.2.3/win32/DLL_FAQ.txt +397 -0
  306. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.bor +107 -0
  307. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.emx +69 -0
  308. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.gcc +141 -0
  309. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.msc +126 -0
  310. data/ext/src/third-party/zlib-1.2.3/win32/VisualC.txt +3 -0
  311. data/ext/src/third-party/zlib-1.2.3/win32/zlib.def +60 -0
  312. data/ext/src/third-party/zlib-1.2.3/win32/zlib1.rc +39 -0
  313. data/ext/src/third-party/zlib-1.2.3/zconf.h +332 -0
  314. data/ext/src/third-party/zlib-1.2.3/zconf.in.h +332 -0
  315. data/ext/src/third-party/zlib-1.2.3/zlib.3 +159 -0
  316. data/ext/src/third-party/zlib-1.2.3/zlib.h +1357 -0
  317. data/ext/src/third-party/zlib-1.2.3/zutil.c +318 -0
  318. data/ext/src/third-party/zlib-1.2.3/zutil.h +269 -0
  319. data/ext/src/third-party/zlib-1.2.3/zutil.o +0 -0
  320. data/lib/assembly/a_b_visualiser.rb +169 -0
  321. data/lib/assembly/acyclic_connection_finder.rb +81 -0
  322. data/lib/assembly/all_orfs.rb +615 -0
  323. data/lib/assembly/bad_format_writer.rb +46 -0
  324. data/lib/assembly/bam_probe_read_selector.rb +48 -0
  325. data/lib/assembly/bubbly_assembler.rb +842 -0
  326. data/lib/assembly/c_probe_node_finder.rb +38 -0
  327. data/lib/assembly/connection_interpreter.rb +350 -0
  328. data/lib/assembly/contig_printer.rb +400 -0
  329. data/lib/assembly/coverage_based_graph_filter.rb +68 -0
  330. data/lib/assembly/depth_first_search.rb +63 -0
  331. data/lib/assembly/dijkstra.rb +216 -0
  332. data/lib/assembly/fluffer.rb +253 -0
  333. data/lib/assembly/graph_explorer.rb +85 -0
  334. data/lib/assembly/graph_generator.rb +315 -0
  335. data/lib/assembly/height_finder.rb +355 -0
  336. data/lib/assembly/hybrid_velvet_graph.rb +70 -0
  337. data/lib/assembly/input_genome.rb +182 -0
  338. data/lib/assembly/kmer_coverage_based_path_filter.rb +65 -0
  339. data/lib/assembly/node_finder.rb +171 -0
  340. data/lib/assembly/oriented_node_trail.rb +507 -0
  341. data/lib/assembly/paired_end_assembler.rb +53 -0
  342. data/lib/assembly/paired_end_neighbour_finder.rb +176 -0
  343. data/lib/assembly/probed_graph.rb +105 -0
  344. data/lib/assembly/read_input.rb +79 -0
  345. data/lib/assembly/read_to_node.rb +37 -0
  346. data/lib/assembly/scaffold_breaker.rb +126 -0
  347. data/lib/assembly/sequence_hasher.rb +71 -0
  348. data/lib/assembly/single_coherent_paths_between_nodes.rb +533 -0
  349. data/lib/assembly/single_coherent_wanderer.rb +261 -0
  350. data/lib/assembly/single_ended_assembler.rb +441 -0
  351. data/lib/assembly/velvet_c_binding.rb +54 -0
  352. data/lib/assembly/velvet_graph_sequence_extractor.rb +123 -0
  353. data/lib/external/VERSION +1 -0
  354. data/lib/finishm/assemble.rb +224 -0
  355. data/lib/finishm/explore.rb +217 -0
  356. data/lib/finishm/finisher.rb +303 -0
  357. data/lib/finishm/fluff.rb +122 -0
  358. data/lib/finishm/gapfiller.rb +325 -0
  359. data/lib/finishm/orfs_finder.rb +88 -0
  360. data/lib/finishm/path_counter.rb +90 -0
  361. data/lib/finishm/primers.rb +425 -0
  362. data/lib/finishm/primers_check.rb +176 -0
  363. data/lib/finishm/roundup.rb +344 -0
  364. data/lib/finishm/sequence.rb +142 -0
  365. data/lib/finishm/visualise.rb +430 -0
  366. data/lib/finishm/wander.rb +270 -0
  367. data/lib/kmer_abundance_pattern.rb +79 -0
  368. data/lib/kmer_multi_abundance_file.rb +48 -0
  369. data/lib/oligo_designer.rb +88 -0
  370. data/lib/priner.rb +66 -0
  371. data/spec/acyclic_connection_finder_spec.rb +551 -0
  372. data/spec/all_orfs_spec.rb +443 -0
  373. data/spec/assemble_spec.rb +186 -0
  374. data/spec/bubbly_assembler_spec.rb +707 -0
  375. data/spec/c_node_finder_spec.rb +58 -0
  376. data/spec/connection_interpreter_spec.rb +284 -0
  377. data/spec/contig_printer_spec.rb +291 -0
  378. data/spec/coverage_based_graph_filter_spec.rb +102 -0
  379. data/spec/data/6_3e4e5e6e.1vANME.bam +0 -0
  380. data/spec/data/6_3e4e5e6e.1vANME.bam.bai +0 -0
  381. data/spec/data/acyclic_connection_finder/1/probes.fa +5 -0
  382. data/spec/data/acyclic_connection_finder/1/random1.fa +2 -0
  383. data/spec/data/acyclic_connection_finder/1/random1.sammy.fa.gz +0 -0
  384. data/spec/data/acyclic_connection_finder/1/random2.fa +2 -0
  385. data/spec/data/acyclic_connection_finder/1/random2.sammy.fa.gz +0 -0
  386. data/spec/data/assembly/1_simple_bubble_uneven_coverage/random3000.fa +39 -0
  387. data/spec/data/assembly/1_simple_bubble_uneven_coverage/random3000.slightly_changed.fa +39 -0
  388. data/spec/data/assembly/1_simple_bubble_uneven_coverage/reads_combined.fa.gz +0 -0
  389. data/spec/data/assembly_visualiser/Contig_6_1_to_250.fa.kmers31 +220 -0
  390. data/spec/data/assembly_visualiser/Contig_7_1_to_250.fa.kmers31 +220 -0
  391. data/spec/data/assembly_visualiser/Graph +46 -0
  392. data/spec/data/assembly_visualiser/start_kmers1 +2 -0
  393. data/spec/data/bands.csv +1 -0
  394. data/spec/data/c_probe_node_finder/1/CnyUnifiedSeq +0 -0
  395. data/spec/data/c_probe_node_finder/1/CnyUnifiedSeq.names +544 -0
  396. data/spec/data/c_probe_node_finder/1/Graph2 +668 -0
  397. data/spec/data/c_probe_node_finder/1/LastGraph +668 -0
  398. data/spec/data/c_probe_node_finder/1/Log +756 -0
  399. data/spec/data/c_probe_node_finder/1/PreGraph +11 -0
  400. data/spec/data/c_probe_node_finder/1/Roadmaps +2009 -0
  401. data/spec/data/c_probe_node_finder/1/contigs.fa +29 -0
  402. data/spec/data/c_probe_node_finder/1/stats.txt +6 -0
  403. data/spec/data/contig_printer/1/HOWTO_RECREATE +17 -0
  404. data/spec/data/contig_printer/1/contigs.fa +4 -0
  405. data/spec/data/contig_printer/1/seq.fa +2408 -0
  406. data/spec/data/contig_printer/1/seq.fa.svg +153 -0
  407. data/spec/data/contig_printer/1/seq.fa.velvet/Graph2 +2953 -0
  408. data/spec/data/contig_printer/1/seq.fa.velvet/LastGraph +2953 -0
  409. data/spec/data/contig_printer/1/seq.fa.velvet/Log +21 -0
  410. data/spec/data/contig_printer/1/seq.fa.velvet/PreGraph +27 -0
  411. data/spec/data/contig_printer/1/seq.fa.velvet/Roadmaps +5182 -0
  412. data/spec/data/contig_printer/1/seq.fa.velvet/Sequences +3612 -0
  413. data/spec/data/contig_printer/1/seq.fa.velvet/contigs.fa +36 -0
  414. data/spec/data/contig_printer/1/seq.fa.velvet/stats.txt +14 -0
  415. data/spec/data/contig_printer/1/seq.faVseq2_1to550.fa.bam +0 -0
  416. data/spec/data/contig_printer/1/seq.faVseq2_1to550.fa.bam.bai +0 -0
  417. data/spec/data/contig_printer/1/seq.node12.fa +4 -0
  418. data/spec/data/contig_printer/1/seq1_1to550.fa +2 -0
  419. data/spec/data/contig_printer/1/seq2_1to550.fa +2 -0
  420. data/spec/data/contig_printer/1/seq2_1to550.fa.fai +1 -0
  421. data/spec/data/explore/1/2seqs.sammy.fa +12004 -0
  422. data/spec/data/explore/1/HOWTO_RECREATE.txt +6 -0
  423. data/spec/data/explore/1/a.fa +2 -0
  424. data/spec/data/explore/1/seq1_and_a.fa +3 -0
  425. data/spec/data/explore/1/seq2.fa +2 -0
  426. data/spec/data/fluff/1/2seqs.sammy.fa +12004 -0
  427. data/spec/data/fluff/1/HOWTO_RECREATE.txt +5 -0
  428. data/spec/data/fluff/1/seq1.fa +2 -0
  429. data/spec/data/fluff/1/seq2.fa +2 -0
  430. data/spec/data/gapfilling/1/reads.fa +171 -0
  431. data/spec/data/gapfilling/1/trail_with_Ns.fa +5 -0
  432. data/spec/data/gapfilling/1/velvetAssembly/Graph2 +130 -0
  433. data/spec/data/gapfilling/1/velvetAssembly/LastGraph +130 -0
  434. data/spec/data/gapfilling/1/velvetAssembly/Log +199 -0
  435. data/spec/data/gapfilling/1/velvetAssembly/PreGraph +7 -0
  436. data/spec/data/gapfilling/1/velvetAssembly/Roadmaps +239 -0
  437. data/spec/data/gapfilling/1/velvetAssembly/Sequences +281 -0
  438. data/spec/data/gapfilling/1/velvetAssembly/contigs.fa +12 -0
  439. data/spec/data/gapfilling/1/velvetAssembly/stats.txt +4 -0
  440. data/spec/data/gapfilling/2/HOWTO_recreate +17 -0
  441. data/spec/data/gapfilling/2/reference.fa +2 -0
  442. data/spec/data/gapfilling/2/reference_part1.fa +4 -0
  443. data/spec/data/gapfilling/2/reference_part2.fa +4 -0
  444. data/spec/data/gapfilling/2/sammy_reads.fa.gz +0 -0
  445. data/spec/data/gapfilling/2/with_gaps.fa +4 -0
  446. data/spec/data/gapfilling/3/HOWTO_recreate +4 -0
  447. data/spec/data/gapfilling/3/reads.fa.gz +0 -0
  448. data/spec/data/gapfilling/3/reference_part1.fa +4 -0
  449. data/spec/data/gapfilling/3/reference_part2.fa +4 -0
  450. data/spec/data/gapfilling/3/with_gaps.fa +4 -0
  451. data/spec/data/gapfilling/4/HOWTO_recreate +1 -0
  452. data/spec/data/gapfilling/4/reads.fa.gz +0 -0
  453. data/spec/data/gapfilling/5/HOWTO_RECREATE +7 -0
  454. data/spec/data/gapfilling/5/answer.fna +2 -0
  455. data/spec/data/gapfilling/5/gappy.fna +2 -0
  456. data/spec/data/gapfilling/5/reads.fa +17961 -0
  457. data/spec/data/gapfilling/5/velvet51_3.5/LastGraph +8337 -0
  458. data/spec/data/gapfilling/5/velvet51_3.5/Sequences +20921 -0
  459. data/spec/data/gapfilling/6/random1.fa +28 -0
  460. data/spec/data/gapfilling/6/random2.fa +28 -0
  461. data/spec/data/gapfilling/6/random_sequence_length_2000 +0 -0
  462. data/spec/data/gapfilling/6/reads.random1.fa.gz +0 -0
  463. data/spec/data/gapfilling/6/reads.random2.fa.gz +0 -0
  464. data/spec/data/gapfilling/6/to_gapfill.fa +22 -0
  465. data/spec/data/kmer_profile_to_assembly/multiple_abundance_file1.csv +2 -0
  466. data/spec/data/kmers_count1.csv +2 -0
  467. data/spec/data/kmers_count2.csv +3 -0
  468. data/spec/data/out +3 -0
  469. data/spec/data/positive_latching_pair.fa +2 -0
  470. data/spec/data/primers.csv +4 -0
  471. data/spec/data/read_selection_by_kmer/blacklist1.txt +1 -0
  472. data/spec/data/read_selection_by_kmer/input.fasta +6 -0
  473. data/spec/data/read_selection_by_kmer/whitelist1.txt +1 -0
  474. data/spec/data/read_selection_by_kmer/whitelist2.txt +2 -0
  475. data/spec/data/read_to_node/1_a_graph/HOWTO_RECREATE.txt +2 -0
  476. data/spec/data/read_to_node/1_a_graph/LastGraph +6695 -0
  477. data/spec/data/read_to_node/1_a_graph/ReadToNode.bin +0 -0
  478. data/spec/data/read_to_node/2_no_read256_or_259/HOWTO_RECREATE.txt +3 -0
  479. data/spec/data/read_to_node/2_no_read256_or_259/LastGraph +6693 -0
  480. data/spec/data/read_to_node/2_no_read256_or_259/ReadToNode.bin +0 -0
  481. data/spec/data/read_to_node/3_no_last_read/LastGraph +6694 -0
  482. data/spec/data/read_to_node/3_no_last_read/ReadToNode.bin +0 -0
  483. data/spec/data/t/details.txt +5 -0
  484. data/spec/data/t/details.txt.srt +5 -0
  485. data/spec/data/t/location.txt +3 -0
  486. data/spec/data/t/location.txt.srt +3 -0
  487. data/spec/data/tweak/1_gap_then_unscaffolded/answer.fa +2 -0
  488. data/spec/data/tweak/1_gap_then_unscaffolded/reads.fa.gz +0 -0
  489. data/spec/data/tweak/1_gap_then_unscaffolded/scaffolds.fa +6 -0
  490. data/spec/data/tweak/2_second_genome/answer2.fa +2 -0
  491. data/spec/data/tweak/2_second_genome/reads.fa.gz +0 -0
  492. data/spec/data/tweak/3_variant/answer.fa +2 -0
  493. data/spec/data/tweak/3_variant/lesser_answer.fa +2 -0
  494. data/spec/data/tweak/3_variant/reads.fa.gz +0 -0
  495. data/spec/data/tweak/3_variant/with_gaps.fa +2 -0
  496. data/spec/data/velvet_test_trails/Assem/Graph +17 -0
  497. data/spec/data/velvet_test_trails/Assem/Graph2 +40 -0
  498. data/spec/data/velvet_test_trails/Assem/LastGraph +40 -0
  499. data/spec/data/velvet_test_trails/Assem/Log +35 -0
  500. data/spec/data/velvet_test_trails/Assem/PreGraph +9 -0
  501. data/spec/data/velvet_test_trails/Assem/Roadmaps +89 -0
  502. data/spec/data/velvet_test_trails/Assem/Sequences +50 -0
  503. data/spec/data/velvet_test_trails/Assem/a.svg +53 -0
  504. data/spec/data/velvet_test_trails/Assem/contigs.fa +15 -0
  505. data/spec/data/velvet_test_trails/Assem/stats.txt +5 -0
  506. data/spec/data/velvet_test_trails/node_fwds.fa +8 -0
  507. data/spec/data/velvet_test_trails/node_seqs.fa +9 -0
  508. data/spec/data/velvet_test_trails/nodes_fwd_rev.fa +16 -0
  509. data/spec/data/velvet_test_trails/read1.fa +2 -0
  510. data/spec/data/velvet_test_trails/reads.fa +50 -0
  511. data/spec/data/velvet_test_trails_reverse/Assem/LastGraph +17 -0
  512. data/spec/data/velvet_test_trails_reverse/Assem/a.svg +53 -0
  513. data/spec/data/velvet_test_trails_reverse/reads_reversed.fa +10 -0
  514. data/spec/data/visualise/1/LastGraph +6695 -0
  515. data/spec/data/visualise/2_paired_end/HOWTO_RECREATE.txt +10 -0
  516. data/spec/data/visualise/2_paired_end/rand1.fa +2 -0
  517. data/spec/data/visualise/2_paired_end/rand2.fa +2 -0
  518. data/spec/data/visualise/2_paired_end/with_gaps.fa +8 -0
  519. data/spec/data/visualise/2_paired_end/with_gaps.read_pairs.fa.gz +0 -0
  520. data/spec/data/wander/1/random1.fa +2 -0
  521. data/spec/data/wander/1/random1.sammy.fa +804 -0
  522. data/spec/depth_first_search_spec.rb +190 -0
  523. data/spec/dijkstra_spec.rb +143 -0
  524. data/spec/explore_spec.rb +29 -0
  525. data/spec/fluffer_spec.rb +155 -0
  526. data/spec/gapfiller_spec.rb +107 -0
  527. data/spec/graph_explorer_spec.rb +475 -0
  528. data/spec/graph_generator_spec.rb +99 -0
  529. data/spec/height_finder_spec.rb +306 -0
  530. data/spec/kmer_abundance_pattern_spec.rb +56 -0
  531. data/spec/kmer_coverage_based_path_filter_spec.rb +73 -0
  532. data/spec/kmer_profile_finder_spec.rb +38 -0
  533. data/spec/kmers_count_tabulate_spec.rb +120 -0
  534. data/spec/oriented_node_trail_spec.rb +221 -0
  535. data/spec/paired_end_neighbours_spec.rb +126 -0
  536. data/spec/paths_between_nodes_spec.rb +349 -0
  537. data/spec/priner_spec.rb +7 -0
  538. data/spec/read_input_spec.rb +23 -0
  539. data/spec/read_selection_by_kmer_spec.rb +166 -0
  540. data/spec/read_to_node_spec.rb +35 -0
  541. data/spec/roundup_spec.rb +366 -0
  542. data/spec/scaffold_breaker_spec.rb +144 -0
  543. data/spec/sequence_spec.rb +43 -0
  544. data/spec/single_coherent_paths_between_nodes_spec.rb +492 -0
  545. data/spec/single_coherent_wanderer_spec.rb +120 -0
  546. data/spec/single_ended_assembler_spec.rb +398 -0
  547. data/spec/spec_helper.rb +310 -0
  548. data/spec/velvet_graph_sequence_extractor_spec.rb +80 -0
  549. data/spec/visualise_spec.rb +105 -0
  550. data/spec/wander_spec.rb +119 -0
  551. data/spec/watch_for_changes.sh +16 -0
  552. data/validation/fasta_compare.rb +72 -0
  553. data/validation/gapfill_simulate_perfect.rb +108 -0
  554. metadata +899 -0
@@ -0,0 +1,62 @@
1
+ /* gvmat32.c -- C portion of the optimized longest_match for 32 bits x86
2
+ * Copyright (C) 1995-1996 Jean-loup Gailly and Gilles Vollant.
3
+ * File written by Gilles Vollant, by modifiying the longest_match
4
+ * from Jean-loup Gailly in deflate.c
5
+ * it prepare all parameters and call the assembly longest_match_gvasm
6
+ * longest_match execute standard C code is wmask != 0x7fff
7
+ * (assembly code is faster with a fixed wmask)
8
+ *
9
+ * Read comment at beginning of gvmat32.asm for more information
10
+ */
11
+
12
+ #if defined(ASMV) && (!defined(NOOLDPENTIUMCODE))
13
+ #include "deflate.h"
14
+
15
+ /* if your C compiler don't add underline before function name,
16
+ define ADD_UNDERLINE_ASMFUNC */
17
+ #ifdef ADD_UNDERLINE_ASMFUNC
18
+ #define longest_match_7fff _longest_match_7fff
19
+ #define longest_match_686 _longest_match_686
20
+ #define cpudetect32 _cpudetect32
21
+ #endif
22
+
23
+
24
+ unsigned long cpudetect32();
25
+
26
+ uInt longest_match_c(
27
+ deflate_state *s,
28
+ IPos cur_match); /* current match */
29
+
30
+
31
+ uInt longest_match_7fff(
32
+ deflate_state *s,
33
+ IPos cur_match); /* current match */
34
+
35
+ uInt longest_match_686(
36
+ deflate_state *s,
37
+ IPos cur_match); /* current match */
38
+
39
+
40
+ static uInt iIsPPro=2;
41
+
42
+ void match_init ()
43
+ {
44
+ iIsPPro = (((cpudetect32()/0x100)&0xf)>=6) ? 1 : 0;
45
+ }
46
+
47
+ uInt longest_match(
48
+ deflate_state *s,
49
+ IPos cur_match) /* current match */
50
+ {
51
+ if (iIsPPro!=0)
52
+ return longest_match_686(s,cur_match);
53
+
54
+ if (s->w_mask != 0x7fff)
55
+ return longest_match_686(s,cur_match);
56
+
57
+ /* now ((s->w_mask == 0x7fff) && (iIsPPro==0)) */
58
+ return longest_match_7fff(s,cur_match);
59
+ }
60
+
61
+
62
+ #endif /* defined(ASMV) && (!defined(NOOLDPENTIUMCODE)) */
@@ -0,0 +1,1083 @@
1
+ ;/* inffas32.asm is a hand tuned assembler version of inffast.c -- fast decoding
2
+ ; *
3
+ ; * inffas32.asm is derivated from inffas86.c, with translation of assembly code
4
+ ; *
5
+ ; * Copyright (C) 1995-2003 Mark Adler
6
+ ; * For conditions of distribution and use, see copyright notice in zlib.h
7
+ ; *
8
+ ; * Copyright (C) 2003 Chris Anderson <christop@charm.net>
9
+ ; * Please use the copyright conditions above.
10
+ ; *
11
+ ; * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
12
+ ; * the gcc -S output of zlib-1.2.0/inffast.c. Zlib-1.2.0 is in beta release at
13
+ ; * the moment. I have successfully compiled and tested this code with gcc2.96,
14
+ ; * gcc3.2, icc5.0, msvc6.0. It is very close to the speed of inffast.S
15
+ ; * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
16
+ ; * enabled. I will attempt to merge the MMX code into this version. Newer
17
+ ; * versions of this and inffast.S can be found at
18
+ ; * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
19
+ ; *
20
+ ; * 2005 : modification by Gilles Vollant
21
+ ; */
22
+ ; For Visual C++ 4.x and higher and ML 6.x and higher
23
+ ; ml.exe is in directory \MASM611C of Win95 DDK
24
+ ; ml.exe is also distributed in http://www.masm32.com/masmdl.htm
25
+ ; and in VC++2003 toolkit at http://msdn.microsoft.com/visualc/vctoolkit2003/
26
+ ;
27
+ ;
28
+ ; compile with command line option
29
+ ; ml /coff /Zi /c /Flinffas32.lst inffas32.asm
30
+
31
+ ; if you define NO_GZIP (see inflate.h), compile with
32
+ ; ml /coff /Zi /c /Flinffas32.lst /DNO_GUNZIP inffas32.asm
33
+
34
+
35
+ ; zlib122sup is 0 fort zlib 1.2.2.1 and lower
36
+ ; zlib122sup is 8 fort zlib 1.2.2.2 and more (with addition of dmax and head
37
+ ; in inflate_state in inflate.h)
38
+ zlib1222sup equ 8
39
+
40
+
41
+ IFDEF GUNZIP
42
+ INFLATE_MODE_TYPE equ 11
43
+ INFLATE_MODE_BAD equ 26
44
+ ELSE
45
+ IFNDEF NO_GUNZIP
46
+ INFLATE_MODE_TYPE equ 11
47
+ INFLATE_MODE_BAD equ 26
48
+ ELSE
49
+ INFLATE_MODE_TYPE equ 3
50
+ INFLATE_MODE_BAD equ 17
51
+ ENDIF
52
+ ENDIF
53
+
54
+
55
+ ; 75 "inffast.S"
56
+ ;FILE "inffast.S"
57
+
58
+ ;;;GLOBAL _inflate_fast
59
+
60
+ ;;;SECTION .text
61
+
62
+
63
+
64
+ .586p
65
+ .mmx
66
+
67
+ name inflate_fast_x86
68
+ .MODEL FLAT
69
+
70
+ _DATA segment
71
+ inflate_fast_use_mmx:
72
+ dd 1
73
+
74
+
75
+ _TEXT segment
76
+ PUBLIC _inflate_fast
77
+
78
+ ALIGN 4
79
+ _inflate_fast:
80
+ jmp inflate_fast_entry
81
+
82
+
83
+
84
+ ALIGN 4
85
+ db 'Fast decoding Code from Chris Anderson'
86
+ db 0
87
+
88
+ ALIGN 4
89
+ invalid_literal_length_code_msg:
90
+ db 'invalid literal/length code'
91
+ db 0
92
+
93
+ ALIGN 4
94
+ invalid_distance_code_msg:
95
+ db 'invalid distance code'
96
+ db 0
97
+
98
+ ALIGN 4
99
+ invalid_distance_too_far_msg:
100
+ db 'invalid distance too far back'
101
+ db 0
102
+
103
+
104
+ ALIGN 4
105
+ inflate_fast_mask:
106
+ dd 0
107
+ dd 1
108
+ dd 3
109
+ dd 7
110
+ dd 15
111
+ dd 31
112
+ dd 63
113
+ dd 127
114
+ dd 255
115
+ dd 511
116
+ dd 1023
117
+ dd 2047
118
+ dd 4095
119
+ dd 8191
120
+ dd 16383
121
+ dd 32767
122
+ dd 65535
123
+ dd 131071
124
+ dd 262143
125
+ dd 524287
126
+ dd 1048575
127
+ dd 2097151
128
+ dd 4194303
129
+ dd 8388607
130
+ dd 16777215
131
+ dd 33554431
132
+ dd 67108863
133
+ dd 134217727
134
+ dd 268435455
135
+ dd 536870911
136
+ dd 1073741823
137
+ dd 2147483647
138
+ dd 4294967295
139
+
140
+
141
+ mode_state equ 0 ;/* state->mode */
142
+ wsize_state equ (32+zlib1222sup) ;/* state->wsize */
143
+ write_state equ (36+4+zlib1222sup) ;/* state->write */
144
+ window_state equ (40+4+zlib1222sup) ;/* state->window */
145
+ hold_state equ (44+4+zlib1222sup) ;/* state->hold */
146
+ bits_state equ (48+4+zlib1222sup) ;/* state->bits */
147
+ lencode_state equ (64+4+zlib1222sup) ;/* state->lencode */
148
+ distcode_state equ (68+4+zlib1222sup) ;/* state->distcode */
149
+ lenbits_state equ (72+4+zlib1222sup) ;/* state->lenbits */
150
+ distbits_state equ (76+4+zlib1222sup) ;/* state->distbits */
151
+
152
+
153
+ ;;SECTION .text
154
+ ; 205 "inffast.S"
155
+ ;GLOBAL inflate_fast_use_mmx
156
+
157
+ ;SECTION .data
158
+
159
+
160
+ ; GLOBAL inflate_fast_use_mmx:object
161
+ ;.size inflate_fast_use_mmx, 4
162
+ ; 226 "inffast.S"
163
+ ;SECTION .text
164
+
165
+ ALIGN 4
166
+ inflate_fast_entry:
167
+ push edi
168
+ push esi
169
+ push ebp
170
+ push ebx
171
+ pushfd
172
+ sub esp,64
173
+ cld
174
+
175
+
176
+
177
+
178
+ mov esi, [esp+88]
179
+ mov edi, [esi+28]
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+ mov edx, [esi+4]
188
+ mov eax, [esi+0]
189
+
190
+ add edx,eax
191
+ sub edx,11
192
+
193
+ mov [esp+44],eax
194
+ mov [esp+20],edx
195
+
196
+ mov ebp, [esp+92]
197
+ mov ecx, [esi+16]
198
+ mov ebx, [esi+12]
199
+
200
+ sub ebp,ecx
201
+ neg ebp
202
+ add ebp,ebx
203
+
204
+ sub ecx,257
205
+ add ecx,ebx
206
+
207
+ mov [esp+60],ebx
208
+ mov [esp+40],ebp
209
+ mov [esp+16],ecx
210
+ ; 285 "inffast.S"
211
+ mov eax, [edi+lencode_state]
212
+ mov ecx, [edi+distcode_state]
213
+
214
+ mov [esp+8],eax
215
+ mov [esp+12],ecx
216
+
217
+ mov eax,1
218
+ mov ecx, [edi+lenbits_state]
219
+ shl eax,cl
220
+ dec eax
221
+ mov [esp+0],eax
222
+
223
+ mov eax,1
224
+ mov ecx, [edi+distbits_state]
225
+ shl eax,cl
226
+ dec eax
227
+ mov [esp+4],eax
228
+
229
+ mov eax, [edi+wsize_state]
230
+ mov ecx, [edi+write_state]
231
+ mov edx, [edi+window_state]
232
+
233
+ mov [esp+52],eax
234
+ mov [esp+48],ecx
235
+ mov [esp+56],edx
236
+
237
+ mov ebp, [edi+hold_state]
238
+ mov ebx, [edi+bits_state]
239
+ ; 321 "inffast.S"
240
+ mov esi, [esp+44]
241
+ mov ecx, [esp+20]
242
+ cmp ecx,esi
243
+ ja L_align_long
244
+
245
+ add ecx,11
246
+ sub ecx,esi
247
+ mov eax,12
248
+ sub eax,ecx
249
+ lea edi, [esp+28]
250
+ rep movsb
251
+ mov ecx,eax
252
+ xor eax,eax
253
+ rep stosb
254
+ lea esi, [esp+28]
255
+ mov [esp+20],esi
256
+ jmp L_is_aligned
257
+
258
+
259
+ L_align_long:
260
+ test esi,3
261
+ jz L_is_aligned
262
+ xor eax,eax
263
+ mov al, [esi]
264
+ inc esi
265
+ mov ecx,ebx
266
+ add ebx,8
267
+ shl eax,cl
268
+ or ebp,eax
269
+ jmp L_align_long
270
+
271
+ L_is_aligned:
272
+ mov edi, [esp+60]
273
+ ; 366 "inffast.S"
274
+ L_check_mmx:
275
+ cmp dword ptr [inflate_fast_use_mmx],2
276
+ je L_init_mmx
277
+ ja L_do_loop
278
+
279
+ push eax
280
+ push ebx
281
+ push ecx
282
+ push edx
283
+ pushfd
284
+ mov eax, [esp]
285
+ xor dword ptr [esp],0200000h
286
+
287
+
288
+
289
+
290
+ popfd
291
+ pushfd
292
+ pop edx
293
+ xor edx,eax
294
+ jz L_dont_use_mmx
295
+ xor eax,eax
296
+ cpuid
297
+ cmp ebx,0756e6547h
298
+ jne L_dont_use_mmx
299
+ cmp ecx,06c65746eh
300
+ jne L_dont_use_mmx
301
+ cmp edx,049656e69h
302
+ jne L_dont_use_mmx
303
+ mov eax,1
304
+ cpuid
305
+ shr eax,8
306
+ and eax,15
307
+ cmp eax,6
308
+ jne L_dont_use_mmx
309
+ test edx,0800000h
310
+ jnz L_use_mmx
311
+ jmp L_dont_use_mmx
312
+ L_use_mmx:
313
+ mov dword ptr [inflate_fast_use_mmx],2
314
+ jmp L_check_mmx_pop
315
+ L_dont_use_mmx:
316
+ mov dword ptr [inflate_fast_use_mmx],3
317
+ L_check_mmx_pop:
318
+ pop edx
319
+ pop ecx
320
+ pop ebx
321
+ pop eax
322
+ jmp L_check_mmx
323
+ ; 426 "inffast.S"
324
+ ALIGN 4
325
+ L_do_loop:
326
+ ; 437 "inffast.S"
327
+ cmp bl,15
328
+ ja L_get_length_code
329
+
330
+ xor eax,eax
331
+ lodsw
332
+ mov cl,bl
333
+ add bl,16
334
+ shl eax,cl
335
+ or ebp,eax
336
+
337
+ L_get_length_code:
338
+ mov edx, [esp+0]
339
+ mov ecx, [esp+8]
340
+ and edx,ebp
341
+ mov eax, [ecx+edx*4]
342
+
343
+ L_dolen:
344
+
345
+
346
+
347
+
348
+
349
+
350
+ mov cl,ah
351
+ sub bl,ah
352
+ shr ebp,cl
353
+
354
+
355
+
356
+
357
+
358
+
359
+ test al,al
360
+ jnz L_test_for_length_base
361
+
362
+ shr eax,16
363
+ stosb
364
+
365
+ L_while_test:
366
+
367
+
368
+ cmp [esp+16],edi
369
+ jbe L_break_loop
370
+
371
+ cmp [esp+20],esi
372
+ ja L_do_loop
373
+ jmp L_break_loop
374
+
375
+ L_test_for_length_base:
376
+ ; 502 "inffast.S"
377
+ mov edx,eax
378
+ shr edx,16
379
+ mov cl,al
380
+
381
+ test al,16
382
+ jz L_test_for_second_level_length
383
+ and cl,15
384
+ jz L_save_len
385
+ cmp bl,cl
386
+ jae L_add_bits_to_len
387
+
388
+ mov ch,cl
389
+ xor eax,eax
390
+ lodsw
391
+ mov cl,bl
392
+ add bl,16
393
+ shl eax,cl
394
+ or ebp,eax
395
+ mov cl,ch
396
+
397
+ L_add_bits_to_len:
398
+ mov eax,1
399
+ shl eax,cl
400
+ dec eax
401
+ sub bl,cl
402
+ and eax,ebp
403
+ shr ebp,cl
404
+ add edx,eax
405
+
406
+ L_save_len:
407
+ mov [esp+24],edx
408
+
409
+
410
+ L_decode_distance:
411
+ ; 549 "inffast.S"
412
+ cmp bl,15
413
+ ja L_get_distance_code
414
+
415
+ xor eax,eax
416
+ lodsw
417
+ mov cl,bl
418
+ add bl,16
419
+ shl eax,cl
420
+ or ebp,eax
421
+
422
+ L_get_distance_code:
423
+ mov edx, [esp+4]
424
+ mov ecx, [esp+12]
425
+ and edx,ebp
426
+ mov eax, [ecx+edx*4]
427
+
428
+
429
+ L_dodist:
430
+ mov edx,eax
431
+ shr edx,16
432
+ mov cl,ah
433
+ sub bl,ah
434
+ shr ebp,cl
435
+ ; 584 "inffast.S"
436
+ mov cl,al
437
+
438
+ test al,16
439
+ jz L_test_for_second_level_dist
440
+ and cl,15
441
+ jz L_check_dist_one
442
+ cmp bl,cl
443
+ jae L_add_bits_to_dist
444
+
445
+ mov ch,cl
446
+ xor eax,eax
447
+ lodsw
448
+ mov cl,bl
449
+ add bl,16
450
+ shl eax,cl
451
+ or ebp,eax
452
+ mov cl,ch
453
+
454
+ L_add_bits_to_dist:
455
+ mov eax,1
456
+ shl eax,cl
457
+ dec eax
458
+ sub bl,cl
459
+ and eax,ebp
460
+ shr ebp,cl
461
+ add edx,eax
462
+ jmp L_check_window
463
+
464
+ L_check_window:
465
+ ; 625 "inffast.S"
466
+ mov [esp+44],esi
467
+ mov eax,edi
468
+ sub eax, [esp+40]
469
+
470
+ cmp eax,edx
471
+ jb L_clip_window
472
+
473
+ mov ecx, [esp+24]
474
+ mov esi,edi
475
+ sub esi,edx
476
+
477
+ sub ecx,3
478
+ mov al, [esi]
479
+ mov [edi],al
480
+ mov al, [esi+1]
481
+ mov dl, [esi+2]
482
+ add esi,3
483
+ mov [edi+1],al
484
+ mov [edi+2],dl
485
+ add edi,3
486
+ rep movsb
487
+
488
+ mov esi, [esp+44]
489
+ jmp L_while_test
490
+
491
+ ALIGN 4
492
+ L_check_dist_one:
493
+ cmp edx,1
494
+ jne L_check_window
495
+ cmp [esp+40],edi
496
+ je L_check_window
497
+
498
+ dec edi
499
+ mov ecx, [esp+24]
500
+ mov al, [edi]
501
+ sub ecx,3
502
+
503
+ mov [edi+1],al
504
+ mov [edi+2],al
505
+ mov [edi+3],al
506
+ add edi,4
507
+ rep stosb
508
+
509
+ jmp L_while_test
510
+
511
+ ALIGN 4
512
+ L_test_for_second_level_length:
513
+
514
+
515
+
516
+
517
+ test al,64
518
+ jnz L_test_for_end_of_block
519
+
520
+ mov eax,1
521
+ shl eax,cl
522
+ dec eax
523
+ and eax,ebp
524
+ add eax,edx
525
+ mov edx, [esp+8]
526
+ mov eax, [edx+eax*4]
527
+ jmp L_dolen
528
+
529
+ ALIGN 4
530
+ L_test_for_second_level_dist:
531
+
532
+
533
+
534
+
535
+ test al,64
536
+ jnz L_invalid_distance_code
537
+
538
+ mov eax,1
539
+ shl eax,cl
540
+ dec eax
541
+ and eax,ebp
542
+ add eax,edx
543
+ mov edx, [esp+12]
544
+ mov eax, [edx+eax*4]
545
+ jmp L_dodist
546
+
547
+ ALIGN 4
548
+ L_clip_window:
549
+ ; 721 "inffast.S"
550
+ mov ecx,eax
551
+ mov eax, [esp+52]
552
+ neg ecx
553
+ mov esi, [esp+56]
554
+
555
+ cmp eax,edx
556
+ jb L_invalid_distance_too_far
557
+
558
+ add ecx,edx
559
+ cmp dword ptr [esp+48],0
560
+ jne L_wrap_around_window
561
+
562
+ sub eax,ecx
563
+ add esi,eax
564
+ ; 749 "inffast.S"
565
+ mov eax, [esp+24]
566
+ cmp eax,ecx
567
+ jbe L_do_copy1
568
+
569
+ sub eax,ecx
570
+ rep movsb
571
+ mov esi,edi
572
+ sub esi,edx
573
+ jmp L_do_copy1
574
+
575
+ cmp eax,ecx
576
+ jbe L_do_copy1
577
+
578
+ sub eax,ecx
579
+ rep movsb
580
+ mov esi,edi
581
+ sub esi,edx
582
+ jmp L_do_copy1
583
+
584
+ L_wrap_around_window:
585
+ ; 793 "inffast.S"
586
+ mov eax, [esp+48]
587
+ cmp ecx,eax
588
+ jbe L_contiguous_in_window
589
+
590
+ add esi, [esp+52]
591
+ add esi,eax
592
+ sub esi,ecx
593
+ sub ecx,eax
594
+
595
+
596
+ mov eax, [esp+24]
597
+ cmp eax,ecx
598
+ jbe L_do_copy1
599
+
600
+ sub eax,ecx
601
+ rep movsb
602
+ mov esi, [esp+56]
603
+ mov ecx, [esp+48]
604
+ cmp eax,ecx
605
+ jbe L_do_copy1
606
+
607
+ sub eax,ecx
608
+ rep movsb
609
+ mov esi,edi
610
+ sub esi,edx
611
+ jmp L_do_copy1
612
+
613
+ L_contiguous_in_window:
614
+ ; 836 "inffast.S"
615
+ add esi,eax
616
+ sub esi,ecx
617
+
618
+
619
+ mov eax, [esp+24]
620
+ cmp eax,ecx
621
+ jbe L_do_copy1
622
+
623
+ sub eax,ecx
624
+ rep movsb
625
+ mov esi,edi
626
+ sub esi,edx
627
+
628
+ L_do_copy1:
629
+ ; 862 "inffast.S"
630
+ mov ecx,eax
631
+ rep movsb
632
+
633
+ mov esi, [esp+44]
634
+ jmp L_while_test
635
+ ; 878 "inffast.S"
636
+ ALIGN 4
637
+ L_init_mmx:
638
+ emms
639
+
640
+
641
+
642
+
643
+
644
+ movd mm0,ebp
645
+ mov ebp,ebx
646
+ ; 896 "inffast.S"
647
+ movd mm4,[esp+0]
648
+ movq mm3,mm4
649
+ movd mm5,[esp+4]
650
+ movq mm2,mm5
651
+ pxor mm1,mm1
652
+ mov ebx, [esp+8]
653
+ jmp L_do_loop_mmx
654
+
655
+ ALIGN 4
656
+ L_do_loop_mmx:
657
+ psrlq mm0,mm1
658
+
659
+ cmp ebp,32
660
+ ja L_get_length_code_mmx
661
+
662
+ movd mm6,ebp
663
+ movd mm7,[esi]
664
+ add esi,4
665
+ psllq mm7,mm6
666
+ add ebp,32
667
+ por mm0,mm7
668
+
669
+ L_get_length_code_mmx:
670
+ pand mm4,mm0
671
+ movd eax,mm4
672
+ movq mm4,mm3
673
+ mov eax, [ebx+eax*4]
674
+
675
+ L_dolen_mmx:
676
+ movzx ecx,ah
677
+ movd mm1,ecx
678
+ sub ebp,ecx
679
+
680
+ test al,al
681
+ jnz L_test_for_length_base_mmx
682
+
683
+ shr eax,16
684
+ stosb
685
+
686
+ L_while_test_mmx:
687
+
688
+
689
+ cmp [esp+16],edi
690
+ jbe L_break_loop
691
+
692
+ cmp [esp+20],esi
693
+ ja L_do_loop_mmx
694
+ jmp L_break_loop
695
+
696
+ L_test_for_length_base_mmx:
697
+
698
+ mov edx,eax
699
+ shr edx,16
700
+
701
+ test al,16
702
+ jz L_test_for_second_level_length_mmx
703
+ and eax,15
704
+ jz L_decode_distance_mmx
705
+
706
+ psrlq mm0,mm1
707
+ movd mm1,eax
708
+ movd ecx,mm0
709
+ sub ebp,eax
710
+ and ecx, [inflate_fast_mask+eax*4]
711
+ add edx,ecx
712
+
713
+ L_decode_distance_mmx:
714
+ psrlq mm0,mm1
715
+
716
+ cmp ebp,32
717
+ ja L_get_dist_code_mmx
718
+
719
+ movd mm6,ebp
720
+ movd mm7,[esi]
721
+ add esi,4
722
+ psllq mm7,mm6
723
+ add ebp,32
724
+ por mm0,mm7
725
+
726
+ L_get_dist_code_mmx:
727
+ mov ebx, [esp+12]
728
+ pand mm5,mm0
729
+ movd eax,mm5
730
+ movq mm5,mm2
731
+ mov eax, [ebx+eax*4]
732
+
733
+ L_dodist_mmx:
734
+
735
+ movzx ecx,ah
736
+ mov ebx,eax
737
+ shr ebx,16
738
+ sub ebp,ecx
739
+ movd mm1,ecx
740
+
741
+ test al,16
742
+ jz L_test_for_second_level_dist_mmx
743
+ and eax,15
744
+ jz L_check_dist_one_mmx
745
+
746
+ L_add_bits_to_dist_mmx:
747
+ psrlq mm0,mm1
748
+ movd mm1,eax
749
+ movd ecx,mm0
750
+ sub ebp,eax
751
+ and ecx, [inflate_fast_mask+eax*4]
752
+ add ebx,ecx
753
+
754
+ L_check_window_mmx:
755
+ mov [esp+44],esi
756
+ mov eax,edi
757
+ sub eax, [esp+40]
758
+
759
+ cmp eax,ebx
760
+ jb L_clip_window_mmx
761
+
762
+ mov ecx,edx
763
+ mov esi,edi
764
+ sub esi,ebx
765
+
766
+ sub ecx,3
767
+ mov al, [esi]
768
+ mov [edi],al
769
+ mov al, [esi+1]
770
+ mov dl, [esi+2]
771
+ add esi,3
772
+ mov [edi+1],al
773
+ mov [edi+2],dl
774
+ add edi,3
775
+ rep movsb
776
+
777
+ mov esi, [esp+44]
778
+ mov ebx, [esp+8]
779
+ jmp L_while_test_mmx
780
+
781
+ ALIGN 4
782
+ L_check_dist_one_mmx:
783
+ cmp ebx,1
784
+ jne L_check_window_mmx
785
+ cmp [esp+40],edi
786
+ je L_check_window_mmx
787
+
788
+ dec edi
789
+ mov ecx,edx
790
+ mov al, [edi]
791
+ sub ecx,3
792
+
793
+ mov [edi+1],al
794
+ mov [edi+2],al
795
+ mov [edi+3],al
796
+ add edi,4
797
+ rep stosb
798
+
799
+ mov ebx, [esp+8]
800
+ jmp L_while_test_mmx
801
+
802
+ ALIGN 4
803
+ L_test_for_second_level_length_mmx:
804
+ test al,64
805
+ jnz L_test_for_end_of_block
806
+
807
+ and eax,15
808
+ psrlq mm0,mm1
809
+ movd ecx,mm0
810
+ and ecx, [inflate_fast_mask+eax*4]
811
+ add ecx,edx
812
+ mov eax, [ebx+ecx*4]
813
+ jmp L_dolen_mmx
814
+
815
+ ALIGN 4
816
+ L_test_for_second_level_dist_mmx:
817
+ test al,64
818
+ jnz L_invalid_distance_code
819
+
820
+ and eax,15
821
+ psrlq mm0,mm1
822
+ movd ecx,mm0
823
+ and ecx, [inflate_fast_mask+eax*4]
824
+ mov eax, [esp+12]
825
+ add ecx,ebx
826
+ mov eax, [eax+ecx*4]
827
+ jmp L_dodist_mmx
828
+
829
+ ALIGN 4
830
+ L_clip_window_mmx:
831
+
832
+ mov ecx,eax
833
+ mov eax, [esp+52]
834
+ neg ecx
835
+ mov esi, [esp+56]
836
+
837
+ cmp eax,ebx
838
+ jb L_invalid_distance_too_far
839
+
840
+ add ecx,ebx
841
+ cmp dword ptr [esp+48],0
842
+ jne L_wrap_around_window_mmx
843
+
844
+ sub eax,ecx
845
+ add esi,eax
846
+
847
+ cmp edx,ecx
848
+ jbe L_do_copy1_mmx
849
+
850
+ sub edx,ecx
851
+ rep movsb
852
+ mov esi,edi
853
+ sub esi,ebx
854
+ jmp L_do_copy1_mmx
855
+
856
+ cmp edx,ecx
857
+ jbe L_do_copy1_mmx
858
+
859
+ sub edx,ecx
860
+ rep movsb
861
+ mov esi,edi
862
+ sub esi,ebx
863
+ jmp L_do_copy1_mmx
864
+
865
+ L_wrap_around_window_mmx:
866
+
867
+ mov eax, [esp+48]
868
+ cmp ecx,eax
869
+ jbe L_contiguous_in_window_mmx
870
+
871
+ add esi, [esp+52]
872
+ add esi,eax
873
+ sub esi,ecx
874
+ sub ecx,eax
875
+
876
+
877
+ cmp edx,ecx
878
+ jbe L_do_copy1_mmx
879
+
880
+ sub edx,ecx
881
+ rep movsb
882
+ mov esi, [esp+56]
883
+ mov ecx, [esp+48]
884
+ cmp edx,ecx
885
+ jbe L_do_copy1_mmx
886
+
887
+ sub edx,ecx
888
+ rep movsb
889
+ mov esi,edi
890
+ sub esi,ebx
891
+ jmp L_do_copy1_mmx
892
+
893
+ L_contiguous_in_window_mmx:
894
+
895
+ add esi,eax
896
+ sub esi,ecx
897
+
898
+
899
+ cmp edx,ecx
900
+ jbe L_do_copy1_mmx
901
+
902
+ sub edx,ecx
903
+ rep movsb
904
+ mov esi,edi
905
+ sub esi,ebx
906
+
907
+ L_do_copy1_mmx:
908
+
909
+
910
+ mov ecx,edx
911
+ rep movsb
912
+
913
+ mov esi, [esp+44]
914
+ mov ebx, [esp+8]
915
+ jmp L_while_test_mmx
916
+ ; 1174 "inffast.S"
917
+ L_invalid_distance_code:
918
+
919
+
920
+
921
+
922
+
923
+ mov ecx, invalid_distance_code_msg
924
+ mov edx,INFLATE_MODE_BAD
925
+ jmp L_update_stream_state
926
+
927
+ L_test_for_end_of_block:
928
+
929
+
930
+
931
+
932
+
933
+ test al,32
934
+ jz L_invalid_literal_length_code
935
+
936
+ mov ecx,0
937
+ mov edx,INFLATE_MODE_TYPE
938
+ jmp L_update_stream_state
939
+
940
+ L_invalid_literal_length_code:
941
+
942
+
943
+
944
+
945
+
946
+ mov ecx, invalid_literal_length_code_msg
947
+ mov edx,INFLATE_MODE_BAD
948
+ jmp L_update_stream_state
949
+
950
+ L_invalid_distance_too_far:
951
+
952
+
953
+
954
+ mov esi, [esp+44]
955
+ mov ecx, invalid_distance_too_far_msg
956
+ mov edx,INFLATE_MODE_BAD
957
+ jmp L_update_stream_state
958
+
959
+ L_update_stream_state:
960
+
961
+ mov eax, [esp+88]
962
+ test ecx,ecx
963
+ jz L_skip_msg
964
+ mov [eax+24],ecx
965
+ L_skip_msg:
966
+ mov eax, [eax+28]
967
+ mov [eax+mode_state],edx
968
+ jmp L_break_loop
969
+
970
+ ALIGN 4
971
+ L_break_loop:
972
+ ; 1243 "inffast.S"
973
+ cmp dword ptr [inflate_fast_use_mmx],2
974
+ jne L_update_next_in
975
+
976
+
977
+
978
+ mov ebx,ebp
979
+
980
+ L_update_next_in:
981
+ ; 1266 "inffast.S"
982
+ mov eax, [esp+88]
983
+ mov ecx,ebx
984
+ mov edx, [eax+28]
985
+ shr ecx,3
986
+ sub esi,ecx
987
+ shl ecx,3
988
+ sub ebx,ecx
989
+ mov [eax+12],edi
990
+ mov [edx+bits_state],ebx
991
+ mov ecx,ebx
992
+
993
+ lea ebx, [esp+28]
994
+ cmp [esp+20],ebx
995
+ jne L_buf_not_used
996
+
997
+ sub esi,ebx
998
+ mov ebx, [eax+0]
999
+ mov [esp+20],ebx
1000
+ add esi,ebx
1001
+ mov ebx, [eax+4]
1002
+ sub ebx,11
1003
+ add [esp+20],ebx
1004
+
1005
+ L_buf_not_used:
1006
+ mov [eax+0],esi
1007
+
1008
+ mov ebx,1
1009
+ shl ebx,cl
1010
+ dec ebx
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+ cmp dword ptr [inflate_fast_use_mmx],2
1017
+ jne L_update_hold
1018
+
1019
+
1020
+
1021
+ psrlq mm0,mm1
1022
+ movd ebp,mm0
1023
+
1024
+ emms
1025
+
1026
+ L_update_hold:
1027
+
1028
+
1029
+
1030
+ and ebp,ebx
1031
+ mov [edx+hold_state],ebp
1032
+
1033
+
1034
+
1035
+
1036
+ mov ebx, [esp+20]
1037
+ cmp ebx,esi
1038
+ jbe L_last_is_smaller
1039
+
1040
+ sub ebx,esi
1041
+ add ebx,11
1042
+ mov [eax+4],ebx
1043
+ jmp L_fixup_out
1044
+ L_last_is_smaller:
1045
+ sub esi,ebx
1046
+ neg esi
1047
+ add esi,11
1048
+ mov [eax+4],esi
1049
+
1050
+
1051
+
1052
+
1053
+ L_fixup_out:
1054
+
1055
+ mov ebx, [esp+16]
1056
+ cmp ebx,edi
1057
+ jbe L_end_is_smaller
1058
+
1059
+ sub ebx,edi
1060
+ add ebx,257
1061
+ mov [eax+16],ebx
1062
+ jmp L_done
1063
+ L_end_is_smaller:
1064
+ sub edi,ebx
1065
+ neg edi
1066
+ add edi,257
1067
+ mov [eax+16],edi
1068
+
1069
+
1070
+
1071
+
1072
+
1073
+ L_done:
1074
+ add esp,64
1075
+ popfd
1076
+ pop ebx
1077
+ pop ebp
1078
+ pop esi
1079
+ pop edi
1080
+ ret
1081
+
1082
+ _TEXT ends
1083
+ end