stormlib 0.1.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (625) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -0
  3. data/ext/stormlib/StormLib/CMakeFiles/3.22.1/CMakeCCompiler.cmake +72 -0
  4. data/ext/stormlib/StormLib/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake +83 -0
  5. data/ext/stormlib/StormLib/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_C.bin +0 -0
  6. data/ext/stormlib/StormLib/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_CXX.bin +0 -0
  7. data/ext/stormlib/StormLib/CMakeFiles/3.22.1/CMakeSystem.cmake +15 -0
  8. data/ext/stormlib/StormLib/CMakeFiles/3.22.1/CompilerIdC/CMakeCCompilerId.c +803 -0
  9. data/ext/stormlib/StormLib/CMakeFiles/3.22.1/CompilerIdC/a.out +0 -0
  10. data/ext/stormlib/StormLib/CMakeFiles/3.22.1/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  11. data/ext/stormlib/StormLib/CMakeFiles/3.22.1/CompilerIdCXX/a.out +0 -0
  12. data/ext/stormlib/StormLib/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  13. data/ext/stormlib/StormLib/CMakeFiles/CMakeOutput.log +478 -0
  14. data/ext/stormlib/StormLib/CMakeFiles/Export/share/StormLib/StormLibConfig-noconfig.cmake +19 -0
  15. data/ext/stormlib/StormLib/CMakeFiles/Export/share/StormLib/StormLibConfig.cmake +99 -0
  16. data/ext/stormlib/StormLib/CMakeFiles/Makefile.cmake +61 -0
  17. data/ext/stormlib/StormLib/CMakeFiles/Makefile2 +112 -0
  18. data/ext/stormlib/StormLib/CMakeFiles/TargetDirectories.txt +9 -0
  19. data/ext/stormlib/StormLib/CMakeFiles/cmake.check_cache +1 -0
  20. data/ext/stormlib/StormLib/CMakeFiles/progress.marks +1 -0
  21. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/DependInfo.cmake +243 -0
  22. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/build.make +3695 -0
  23. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/cmake_clean.cmake +459 -0
  24. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/cmake_clean_target.cmake +3 -0
  25. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/compiler_depend.make +2 -0
  26. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/compiler_depend.ts +2 -0
  27. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/depend.make +2 -0
  28. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/flags.make +17 -0
  29. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/link.txt +2 -0
  30. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/progress.make +227 -0
  31. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/FileStream.cpp.o.d +160 -0
  32. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SBaseCommon.cpp.o.d +159 -0
  33. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SBaseDumpData.cpp.o.d +159 -0
  34. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SBaseFileTable.cpp.o.d +159 -0
  35. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SBaseSubTypes.cpp.o.d +159 -0
  36. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SCompression.cpp.o.d +159 -0
  37. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileAddFile.cpp.o.d +159 -0
  38. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileAttributes.cpp.o.d +159 -0
  39. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileCompactArchive.cpp.o.d +159 -0
  40. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileCreateArchive.cpp.o.d +159 -0
  41. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileExtractFile.cpp.o.d +159 -0
  42. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileFindFile.cpp.o.d +159 -0
  43. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileGetFileInfo.cpp.o.d +159 -0
  44. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileListFile.cpp.o.d +159 -0
  45. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileOpenArchive.cpp.o.d +159 -0
  46. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileOpenFileEx.cpp.o.d +159 -0
  47. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFilePatchArchives.cpp.o.d +159 -0
  48. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileReadFile.cpp.o.d +159 -0
  49. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/SFileVerify.cpp.o.d +159 -0
  50. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/adpcm/adpcm.cpp.o.d +12 -0
  51. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/huffman/huff.cpp.o.d +16 -0
  52. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/jenkins/lookup3.c.o.d +88 -0
  53. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/hashes/hash_memory.c.o.d +102 -0
  54. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/hashes/md5.c.o.d +102 -0
  55. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/hashes/sha1.c.o.d +102 -0
  56. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/hashes/sha256.c.o.d +102 -0
  57. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/math/ltm_desc.c.o.d +105 -0
  58. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/math/multi.c.o.d +102 -0
  59. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/math/rand_prime.c.o.d +102 -0
  60. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/base64_decode.c.o.d +102 -0
  61. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_argchk.c.o.d +102 -0
  62. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_find_hash.c.o.d +102 -0
  63. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_find_prng.c.o.d +102 -0
  64. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_hash_descriptor.c.o.d +102 -0
  65. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_hash_is_valid.c.o.d +102 -0
  66. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_libc.c.o.d +102 -0
  67. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c.o.d +102 -0
  68. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_prng_descriptor.c.o.d +102 -0
  69. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_prng_is_valid.c.o.d +102 -0
  70. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_register_hash.c.o.d +102 -0
  71. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/crypt_register_prng.c.o.d +102 -0
  72. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/misc/zeromem.c.o.d +102 -0
  73. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_bit_string.c.o.d +102 -0
  74. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_boolean.c.o.d +102 -0
  75. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_choice.c.o.d +102 -0
  76. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_ia5_string.c.o.d +102 -0
  77. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_integer.c.o.d +102 -0
  78. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_object_identifier.c.o.d +102 -0
  79. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_octet_string.c.o.d +102 -0
  80. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_printable_string.c.o.d +102 -0
  81. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_sequence_ex.c.o.d +102 -0
  82. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_sequence_flexi.c.o.d +102 -0
  83. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_sequence_multi.c.o.d +102 -0
  84. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_short_integer.c.o.d +102 -0
  85. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_utctime.c.o.d +102 -0
  86. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_decode_utf8_string.c.o.d +102 -0
  87. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_bit_string.c.o.d +102 -0
  88. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_boolean.c.o.d +102 -0
  89. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_ia5_string.c.o.d +102 -0
  90. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_integer.c.o.d +102 -0
  91. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_object_identifier.c.o.d +102 -0
  92. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_octet_string.c.o.d +102 -0
  93. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_printable_string.c.o.d +102 -0
  94. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_sequence_ex.c.o.d +102 -0
  95. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_sequence_multi.c.o.d +102 -0
  96. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_set.c.o.d +102 -0
  97. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_setof.c.o.d +102 -0
  98. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_short_integer.c.o.d +102 -0
  99. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_utctime.c.o.d +102 -0
  100. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_encode_utf8_string.c.o.d +102 -0
  101. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_bit_string.c.o.d +102 -0
  102. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_boolean.c.o.d +102 -0
  103. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_ia5_string.c.o.d +102 -0
  104. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_integer.c.o.d +102 -0
  105. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_object_identifier.c.o.d +102 -0
  106. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_octet_string.c.o.d +102 -0
  107. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_printable_string.c.o.d +102 -0
  108. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_sequence.c.o.d +102 -0
  109. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_short_integer.c.o.d +102 -0
  110. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_utctime.c.o.d +102 -0
  111. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_length_utf8_string.c.o.d +102 -0
  112. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/asn1/der_sequence_free.c.o.d +102 -0
  113. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c.o.d +102 -0
  114. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c.o.d +102 -0
  115. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c.o.d +102 -0
  116. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c.o.d +102 -0
  117. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c.o.d +102 -0
  118. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c.o.d +102 -0
  119. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c.o.d +102 -0
  120. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c.o.d +102 -0
  121. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c.o.d +102 -0
  122. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c.o.d +102 -0
  123. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c.o.d +102 -0
  124. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c.o.d +102 -0
  125. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/rsa/rsa_exptmod.c.o.d +102 -0
  126. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/rsa/rsa_free.c.o.d +102 -0
  127. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/rsa/rsa_import.c.o.d +102 -0
  128. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/rsa/rsa_make_key.c.o.d +102 -0
  129. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c.o.d +102 -0
  130. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c.o.d +102 -0
  131. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtomcrypt/src/pk/rsa/rsa_verify_simple.c.o.d +102 -0
  132. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_fast_mp_invmod.c.o.d +65 -0
  133. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_fast_mp_montgomery_reduce.c.o.d +65 -0
  134. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_fast_s_mp_mul_digs.c.o.d +65 -0
  135. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_fast_s_mp_mul_high_digs.c.o.d +65 -0
  136. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_fast_s_mp_sqr.c.o.d +65 -0
  137. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_2expt.c.o.d +65 -0
  138. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_abs.c.o.d +65 -0
  139. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_add.c.o.d +65 -0
  140. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_add_d.c.o.d +65 -0
  141. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_addmod.c.o.d +65 -0
  142. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_and.c.o.d +65 -0
  143. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_clamp.c.o.d +65 -0
  144. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_clear.c.o.d +65 -0
  145. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_clear_multi.c.o.d +65 -0
  146. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_cmp.c.o.d +65 -0
  147. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_cmp_d.c.o.d +65 -0
  148. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_cmp_mag.c.o.d +65 -0
  149. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_cnt_lsb.c.o.d +65 -0
  150. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_copy.c.o.d +65 -0
  151. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_count_bits.c.o.d +65 -0
  152. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_div.c.o.d +65 -0
  153. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_div_2.c.o.d +65 -0
  154. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_div_2d.c.o.d +65 -0
  155. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_div_3.c.o.d +65 -0
  156. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_div_d.c.o.d +65 -0
  157. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_dr_is_modulus.c.o.d +65 -0
  158. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_dr_reduce.c.o.d +65 -0
  159. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_dr_setup.c.o.d +65 -0
  160. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_exch.c.o.d +65 -0
  161. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_expt_d.c.o.d +65 -0
  162. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_exptmod.c.o.d +65 -0
  163. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_exptmod_fast.c.o.d +65 -0
  164. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_exteuclid.c.o.d +65 -0
  165. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_fread.c.o.d +65 -0
  166. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_fwrite.c.o.d +65 -0
  167. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_gcd.c.o.d +65 -0
  168. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_get_int.c.o.d +65 -0
  169. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_grow.c.o.d +65 -0
  170. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_init.c.o.d +65 -0
  171. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_init_copy.c.o.d +65 -0
  172. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_init_multi.c.o.d +65 -0
  173. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_init_set.c.o.d +65 -0
  174. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_init_set_int.c.o.d +65 -0
  175. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_init_size.c.o.d +65 -0
  176. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_invmod.c.o.d +65 -0
  177. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_invmod_slow.c.o.d +65 -0
  178. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_is_square.c.o.d +65 -0
  179. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_jacobi.c.o.d +65 -0
  180. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_karatsuba_mul.c.o.d +65 -0
  181. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_karatsuba_sqr.c.o.d +65 -0
  182. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_lcm.c.o.d +65 -0
  183. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_lshd.c.o.d +65 -0
  184. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_mod.c.o.d +65 -0
  185. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_mod_2d.c.o.d +65 -0
  186. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_mod_d.c.o.d +65 -0
  187. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_montgomery_calc_normalization.c.o.d +65 -0
  188. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_montgomery_reduce.c.o.d +65 -0
  189. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_montgomery_setup.c.o.d +65 -0
  190. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_mul.c.o.d +65 -0
  191. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_mul_2.c.o.d +65 -0
  192. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_mul_2d.c.o.d +65 -0
  193. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_mul_d.c.o.d +65 -0
  194. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_mulmod.c.o.d +65 -0
  195. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_n_root.c.o.d +65 -0
  196. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_neg.c.o.d +65 -0
  197. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_or.c.o.d +65 -0
  198. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_prime_fermat.c.o.d +65 -0
  199. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_prime_is_divisible.c.o.d +65 -0
  200. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_prime_is_prime.c.o.d +65 -0
  201. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_prime_miller_rabin.c.o.d +65 -0
  202. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_prime_next_prime.c.o.d +65 -0
  203. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_prime_rabin_miller_trials.c.o.d +65 -0
  204. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_prime_random_ex.c.o.d +65 -0
  205. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_radix_size.c.o.d +65 -0
  206. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_radix_smap.c.o.d +65 -0
  207. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_rand.c.o.d +65 -0
  208. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_read_radix.c.o.d +65 -0
  209. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_read_signed_bin.c.o.d +65 -0
  210. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_read_unsigned_bin.c.o.d +65 -0
  211. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_reduce.c.o.d +65 -0
  212. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_reduce_2k.c.o.d +65 -0
  213. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_reduce_2k_l.c.o.d +65 -0
  214. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_reduce_2k_setup.c.o.d +65 -0
  215. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_reduce_2k_setup_l.c.o.d +65 -0
  216. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_reduce_is_2k.c.o.d +65 -0
  217. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_reduce_is_2k_l.c.o.d +65 -0
  218. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_reduce_setup.c.o.d +65 -0
  219. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_rshd.c.o.d +65 -0
  220. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_set.c.o.d +65 -0
  221. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_set_int.c.o.d +65 -0
  222. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_shrink.c.o.d +65 -0
  223. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_signed_bin_size.c.o.d +65 -0
  224. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_sqr.c.o.d +65 -0
  225. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_sqrmod.c.o.d +65 -0
  226. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_sqrt.c.o.d +65 -0
  227. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_sub.c.o.d +65 -0
  228. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_sub_d.c.o.d +65 -0
  229. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_submod.c.o.d +65 -0
  230. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_to_signed_bin.c.o.d +65 -0
  231. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_to_signed_bin_n.c.o.d +65 -0
  232. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_to_unsigned_bin.c.o.d +65 -0
  233. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_to_unsigned_bin_n.c.o.d +65 -0
  234. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_toom_mul.c.o.d +65 -0
  235. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_toom_sqr.c.o.d +65 -0
  236. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_toradix.c.o.d +65 -0
  237. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_toradix_n.c.o.d +65 -0
  238. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_unsigned_bin_size.c.o.d +65 -0
  239. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_xor.c.o.d +65 -0
  240. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_mp_zero.c.o.d +65 -0
  241. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_prime_tab.c.o.d +65 -0
  242. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_reverse.c.o.d +65 -0
  243. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_s_mp_add.c.o.d +65 -0
  244. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_s_mp_exptmod.c.o.d +65 -0
  245. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_s_mp_mul_digs.c.o.d +65 -0
  246. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_s_mp_mul_high_digs.c.o.d +65 -0
  247. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_s_mp_sqr.c.o.d +65 -0
  248. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bn_s_mp_sub.c.o.d +65 -0
  249. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/libtommath/bncore.c.o.d +65 -0
  250. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/lzma/C/LzFind.c.o.d +18 -0
  251. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/lzma/C/LzmaDec.c.o.d +17 -0
  252. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/lzma/C/LzmaEnc.c.o.d +18 -0
  253. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/pklib/explode.c.o.d +16 -0
  254. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/pklib/implode.c.o.d +23 -0
  255. data/ext/stormlib/StormLib/CMakeFiles/storm.dir/src/sparse/sparse.cpp.o.d +16 -0
  256. data/ext/stormlib/StormLib/CMakeLists.txt +418 -0
  257. data/ext/stormlib/StormLib/Info.plist +22 -0
  258. data/ext/stormlib/StormLib/LICENSE +21 -0
  259. data/ext/stormlib/StormLib/Premake5.lua +132 -0
  260. data/ext/stormlib/StormLib/README.md +39 -0
  261. data/ext/stormlib/StormLib/StormLib.sln +162 -0
  262. data/ext/stormlib/StormLib/StormLib.vcxproj +1024 -0
  263. data/ext/stormlib/StormLib/StormLib.vcxproj.filters +221 -0
  264. data/ext/stormlib/StormLib/StormLib.xcodeproj/project.pbxproj +2104 -0
  265. data/ext/stormlib/StormLib/StormLib_dll.vcxproj +348 -0
  266. data/ext/stormlib/StormLib/StormLib_dll.vcxproj.filters +229 -0
  267. data/ext/stormlib/StormLib/StormLib_test.vcxproj +360 -0
  268. data/ext/stormlib/StormLib/StormLib_test.vcxproj.filters +230 -0
  269. data/ext/stormlib/StormLib/StormLib_vs08.sln +139 -0
  270. data/ext/stormlib/StormLib/StormLib_vs08.vcproj +4205 -0
  271. data/ext/stormlib/StormLib/StormLib_vs08_dll.vcproj +1851 -0
  272. data/ext/stormlib/StormLib/StormLib_vs08_test.vcproj +1289 -0
  273. data/ext/stormlib/StormLib/doc/History.txt +78 -0
  274. data/ext/stormlib/StormLib/doc/The MoPaQ File Format 0.9.txt +318 -0
  275. data/ext/stormlib/StormLib/doc/The MoPaQ File Format 1.0.txt +433 -0
  276. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-deDE.txt +1 -0
  277. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-enGB.txt +1 -0
  278. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-enSG.txt +1 -0
  279. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-enUS.txt +1 -0
  280. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-esES.txt +1 -0
  281. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-esMX.txt +1 -0
  282. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-frFR.txt +1 -0
  283. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-itIT.txt +1 -0
  284. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-koKR.txt +1 -0
  285. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-plPL.txt +1 -0
  286. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-ptBR.txt +1 -0
  287. data/ext/stormlib/StormLib/doc/d3-authenticationcode/d3-authenticationcode-zhTW.txt +1 -0
  288. data/ext/stormlib/StormLib/doc/hots-authenticationcode/hots-authenticationcode-bgdl.txt +1 -0
  289. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-deDE.txt +1 -0
  290. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-enGB.txt +1 -0
  291. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-enUS.txt +1 -0
  292. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-esES.txt +1 -0
  293. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-esMX.txt +1 -0
  294. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-frFR.txt +1 -0
  295. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-itIT.txt +1 -0
  296. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-koKR.txt +1 -0
  297. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-plPL.txt +1 -0
  298. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-ptBR.txt +1 -0
  299. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-ruRU.txt +1 -0
  300. data/ext/stormlib/StormLib/doc/sc2-authenticationcode/sc2-authenticationcode-zhTW.txt +1 -0
  301. data/ext/stormlib/StormLib/make-msvc.bat +95 -0
  302. data/ext/stormlib/StormLib/make.bat +46 -0
  303. data/ext/stormlib/StormLib/sources +14 -0
  304. data/ext/stormlib/StormLib/src/DllMain.c +24 -0
  305. data/ext/stormlib/StormLib/src/DllMain.def +79 -0
  306. data/ext/stormlib/StormLib/src/DllMain.rc +110 -0
  307. data/ext/stormlib/StormLib/src/FileStream.cpp +2928 -0
  308. data/ext/stormlib/StormLib/src/FileStream.h +217 -0
  309. data/ext/stormlib/StormLib/src/LibTomCrypt.c +85 -0
  310. data/ext/stormlib/StormLib/src/LibTomMath.c +125 -0
  311. data/ext/stormlib/StormLib/src/LibTomMathDesc.c +4 -0
  312. data/ext/stormlib/StormLib/src/SBaseCommon.cpp +1970 -0
  313. data/ext/stormlib/StormLib/src/SBaseDumpData.cpp +183 -0
  314. data/ext/stormlib/StormLib/src/SBaseFileTable.cpp +3194 -0
  315. data/ext/stormlib/StormLib/src/SBaseSubTypes.cpp +688 -0
  316. data/ext/stormlib/StormLib/src/SCompression.cpp +1183 -0
  317. data/ext/stormlib/StormLib/src/SFileAddFile.cpp +1337 -0
  318. data/ext/stormlib/StormLib/src/SFileAttributes.cpp +573 -0
  319. data/ext/stormlib/StormLib/src/SFileCompactArchive.cpp +654 -0
  320. data/ext/stormlib/StormLib/src/SFileCreateArchive.cpp +285 -0
  321. data/ext/stormlib/StormLib/src/SFileExtractFile.cpp +64 -0
  322. data/ext/stormlib/StormLib/src/SFileFindFile.cpp +484 -0
  323. data/ext/stormlib/StormLib/src/SFileGetFileInfo.cpp +627 -0
  324. data/ext/stormlib/StormLib/src/SFileListFile.cpp +750 -0
  325. data/ext/stormlib/StormLib/src/SFileOpenArchive.cpp +723 -0
  326. data/ext/stormlib/StormLib/src/SFileOpenFileEx.cpp +423 -0
  327. data/ext/stormlib/StormLib/src/SFilePatchArchives.cpp +1175 -0
  328. data/ext/stormlib/StormLib/src/SFileReadFile.cpp +922 -0
  329. data/ext/stormlib/StormLib/src/SFileVerify.cpp +1059 -0
  330. data/ext/stormlib/StormLib/src/StormCommon.h +450 -0
  331. data/ext/stormlib/StormLib/src/StormLib.exp +74 -0
  332. data/ext/stormlib/StormLib/src/StormLib.h +1157 -0
  333. data/ext/stormlib/StormLib/src/StormPort.h +474 -0
  334. data/ext/stormlib/StormLib/src/adpcm/adpcm.cpp +539 -0
  335. data/ext/stormlib/StormLib/src/adpcm/adpcm.h +27 -0
  336. data/ext/stormlib/StormLib/src/bzip2/blocksort.c +1094 -0
  337. data/ext/stormlib/StormLib/src/bzip2/bzlib.c +1573 -0
  338. data/ext/stormlib/StormLib/src/bzip2/bzlib.h +282 -0
  339. data/ext/stormlib/StormLib/src/bzip2/bzlib_private.h +509 -0
  340. data/ext/stormlib/StormLib/src/bzip2/compress.c +672 -0
  341. data/ext/stormlib/StormLib/src/bzip2/crctable.c +104 -0
  342. data/ext/stormlib/StormLib/src/bzip2/decompress.c +626 -0
  343. data/ext/stormlib/StormLib/src/bzip2/huffman.c +205 -0
  344. data/ext/stormlib/StormLib/src/bzip2/randtable.c +84 -0
  345. data/ext/stormlib/StormLib/src/huffman/huff.cpp +915 -0
  346. data/ext/stormlib/StormLib/src/huffman/huff.h +143 -0
  347. data/ext/stormlib/StormLib/src/jenkins/lookup.h +24 -0
  348. data/ext/stormlib/StormLib/src/jenkins/lookup3.c +1003 -0
  349. data/ext/stormlib/StormLib/src/libtomcrypt/src/hashes/hash_memory.c +69 -0
  350. data/ext/stormlib/StormLib/src/libtomcrypt/src/hashes/md5.c +368 -0
  351. data/ext/stormlib/StormLib/src/libtomcrypt/src/hashes/sha1.c +288 -0
  352. data/ext/stormlib/StormLib/src/libtomcrypt/src/hashes/sha256.c +340 -0
  353. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt.h +91 -0
  354. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_argchk.h +38 -0
  355. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_cfg.h +144 -0
  356. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_cipher.h +891 -0
  357. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_custom.h +424 -0
  358. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_hash.h +378 -0
  359. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_mac.h +384 -0
  360. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_macros.h +424 -0
  361. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_math.h +500 -0
  362. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_misc.h +23 -0
  363. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_pk.h +558 -0
  364. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_pkcs.h +89 -0
  365. data/ext/stormlib/StormLib/src/libtomcrypt/src/headers/tomcrypt_prng.h +199 -0
  366. data/ext/stormlib/StormLib/src/libtomcrypt/src/math/ltm_desc.c +483 -0
  367. data/ext/stormlib/StormLib/src/libtomcrypt/src/math/multi.c +61 -0
  368. data/ext/stormlib/StormLib/src/libtomcrypt/src/math/rand_prime.c +87 -0
  369. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/base64_decode.c +104 -0
  370. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_argchk.c +30 -0
  371. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_find_hash.c +40 -0
  372. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_find_prng.c +41 -0
  373. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_hash_descriptor.c +27 -0
  374. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_hash_is_valid.c +36 -0
  375. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_libc.c +43 -0
  376. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c +13 -0
  377. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_prng_descriptor.c +26 -0
  378. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_prng_is_valid.c +36 -0
  379. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_register_hash.c +54 -0
  380. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/crypt_register_prng.c +54 -0
  381. data/ext/stormlib/StormLib/src/libtomcrypt/src/misc/zeromem.c +34 -0
  382. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_bit_string.c +102 -0
  383. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_boolean.c +47 -0
  384. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_choice.c +182 -0
  385. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_ia5_string.c +96 -0
  386. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_integer.c +110 -0
  387. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_object_identifier.c +99 -0
  388. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_octet_string.c +91 -0
  389. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_printable_string.c +96 -0
  390. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_ex.c +287 -0
  391. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_flexi.c +386 -0
  392. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_multi.c +139 -0
  393. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_short_integer.c +68 -0
  394. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utctime.c +127 -0
  395. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utf8_string.c +111 -0
  396. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_bit_string.c +89 -0
  397. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_boolean.c +51 -0
  398. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_ia5_string.c +85 -0
  399. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_integer.c +130 -0
  400. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_object_identifier.c +111 -0
  401. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_octet_string.c +86 -0
  402. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_printable_string.c +85 -0
  403. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_ex.c +335 -0
  404. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_multi.c +138 -0
  405. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_set.c +103 -0
  406. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_setof.c +162 -0
  407. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_short_integer.c +97 -0
  408. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utctime.c +83 -0
  409. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utf8_string.c +105 -0
  410. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_bit_string.c +54 -0
  411. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_boolean.c +35 -0
  412. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_ia5_string.c +194 -0
  413. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_integer.c +82 -0
  414. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_object_identifier.c +89 -0
  415. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_octet_string.c +53 -0
  416. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_printable_string.c +166 -0
  417. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_sequence.c +169 -0
  418. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_short_integer.c +70 -0
  419. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_utctime.c +46 -0
  420. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_length_utf8_string.c +83 -0
  421. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/asn1/der_sequence_free.c +65 -0
  422. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c +76 -0
  423. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c +207 -0
  424. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c +222 -0
  425. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c +60 -0
  426. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c +196 -0
  427. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c +147 -0
  428. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c +108 -0
  429. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c +189 -0
  430. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c +177 -0
  431. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c +175 -0
  432. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c +110 -0
  433. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c +111 -0
  434. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/rsa/rsa_exptmod.c +113 -0
  435. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/rsa/rsa_free.c +34 -0
  436. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/rsa/rsa_import.c +143 -0
  437. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/rsa/rsa_make_key.c +112 -0
  438. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c +134 -0
  439. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c +167 -0
  440. data/ext/stormlib/StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_simple.c +87 -0
  441. data/ext/stormlib/StormLib/src/libtommath/bn_fast_mp_invmod.c +148 -0
  442. data/ext/stormlib/StormLib/src/libtommath/bn_fast_mp_montgomery_reduce.c +172 -0
  443. data/ext/stormlib/StormLib/src/libtommath/bn_fast_s_mp_mul_digs.c +107 -0
  444. data/ext/stormlib/StormLib/src/libtommath/bn_fast_s_mp_mul_high_digs.c +98 -0
  445. data/ext/stormlib/StormLib/src/libtommath/bn_fast_s_mp_sqr.c +114 -0
  446. data/ext/stormlib/StormLib/src/libtommath/bn_mp_2expt.c +48 -0
  447. data/ext/stormlib/StormLib/src/libtommath/bn_mp_abs.c +43 -0
  448. data/ext/stormlib/StormLib/src/libtommath/bn_mp_add.c +53 -0
  449. data/ext/stormlib/StormLib/src/libtommath/bn_mp_add_d.c +112 -0
  450. data/ext/stormlib/StormLib/src/libtommath/bn_mp_addmod.c +41 -0
  451. data/ext/stormlib/StormLib/src/libtommath/bn_mp_and.c +57 -0
  452. data/ext/stormlib/StormLib/src/libtommath/bn_mp_clamp.c +44 -0
  453. data/ext/stormlib/StormLib/src/libtommath/bn_mp_clear.c +44 -0
  454. data/ext/stormlib/StormLib/src/libtommath/bn_mp_clear_multi.c +34 -0
  455. data/ext/stormlib/StormLib/src/libtommath/bn_mp_cmp.c +43 -0
  456. data/ext/stormlib/StormLib/src/libtommath/bn_mp_cmp_d.c +44 -0
  457. data/ext/stormlib/StormLib/src/libtommath/bn_mp_cmp_mag.c +55 -0
  458. data/ext/stormlib/StormLib/src/libtommath/bn_mp_cnt_lsb.c +53 -0
  459. data/ext/stormlib/StormLib/src/libtommath/bn_mp_copy.c +68 -0
  460. data/ext/stormlib/StormLib/src/libtommath/bn_mp_count_bits.c +45 -0
  461. data/ext/stormlib/StormLib/src/libtommath/bn_mp_div.c +292 -0
  462. data/ext/stormlib/StormLib/src/libtommath/bn_mp_div_2.c +68 -0
  463. data/ext/stormlib/StormLib/src/libtommath/bn_mp_div_2d.c +97 -0
  464. data/ext/stormlib/StormLib/src/libtommath/bn_mp_div_3.c +79 -0
  465. data/ext/stormlib/StormLib/src/libtommath/bn_mp_div_d.c +115 -0
  466. data/ext/stormlib/StormLib/src/libtommath/bn_mp_dr_is_modulus.c +43 -0
  467. data/ext/stormlib/StormLib/src/libtommath/bn_mp_dr_reduce.c +94 -0
  468. data/ext/stormlib/StormLib/src/libtommath/bn_mp_dr_setup.c +32 -0
  469. data/ext/stormlib/StormLib/src/libtommath/bn_mp_exch.c +34 -0
  470. data/ext/stormlib/StormLib/src/libtommath/bn_mp_expt_d.c +57 -0
  471. data/ext/stormlib/StormLib/src/libtommath/bn_mp_exptmod.c +112 -0
  472. data/ext/stormlib/StormLib/src/libtommath/bn_mp_exptmod_fast.c +321 -0
  473. data/ext/stormlib/StormLib/src/libtommath/bn_mp_exteuclid.c +82 -0
  474. data/ext/stormlib/StormLib/src/libtommath/bn_mp_fread.c +67 -0
  475. data/ext/stormlib/StormLib/src/libtommath/bn_mp_fwrite.c +52 -0
  476. data/ext/stormlib/StormLib/src/libtommath/bn_mp_gcd.c +105 -0
  477. data/ext/stormlib/StormLib/src/libtommath/bn_mp_get_int.c +45 -0
  478. data/ext/stormlib/StormLib/src/libtommath/bn_mp_grow.c +57 -0
  479. data/ext/stormlib/StormLib/src/libtommath/bn_mp_init.c +46 -0
  480. data/ext/stormlib/StormLib/src/libtommath/bn_mp_init_copy.c +32 -0
  481. data/ext/stormlib/StormLib/src/libtommath/bn_mp_init_multi.c +59 -0
  482. data/ext/stormlib/StormLib/src/libtommath/bn_mp_init_set.c +32 -0
  483. data/ext/stormlib/StormLib/src/libtommath/bn_mp_init_set_int.c +31 -0
  484. data/ext/stormlib/StormLib/src/libtommath/bn_mp_init_size.c +48 -0
  485. data/ext/stormlib/StormLib/src/libtommath/bn_mp_invmod.c +43 -0
  486. data/ext/stormlib/StormLib/src/libtommath/bn_mp_invmod_slow.c +175 -0
  487. data/ext/stormlib/StormLib/src/libtommath/bn_mp_is_square.c +109 -0
  488. data/ext/stormlib/StormLib/src/libtommath/bn_mp_jacobi.c +105 -0
  489. data/ext/stormlib/StormLib/src/libtommath/bn_mp_karatsuba_mul.c +167 -0
  490. data/ext/stormlib/StormLib/src/libtommath/bn_mp_karatsuba_sqr.c +121 -0
  491. data/ext/stormlib/StormLib/src/libtommath/bn_mp_lcm.c +60 -0
  492. data/ext/stormlib/StormLib/src/libtommath/bn_mp_lshd.c +67 -0
  493. data/ext/stormlib/StormLib/src/libtommath/bn_mp_mod.c +48 -0
  494. data/ext/stormlib/StormLib/src/libtommath/bn_mp_mod_2d.c +55 -0
  495. data/ext/stormlib/StormLib/src/libtommath/bn_mp_mod_d.c +27 -0
  496. data/ext/stormlib/StormLib/src/libtommath/bn_mp_montgomery_calc_normalization.c +59 -0
  497. data/ext/stormlib/StormLib/src/libtommath/bn_mp_montgomery_reduce.c +118 -0
  498. data/ext/stormlib/StormLib/src/libtommath/bn_mp_montgomery_setup.c +59 -0
  499. data/ext/stormlib/StormLib/src/libtommath/bn_mp_mul.c +66 -0
  500. data/ext/stormlib/StormLib/src/libtommath/bn_mp_mul_2.c +82 -0
  501. data/ext/stormlib/StormLib/src/libtommath/bn_mp_mul_2d.c +85 -0
  502. data/ext/stormlib/StormLib/src/libtommath/bn_mp_mul_d.c +79 -0
  503. data/ext/stormlib/StormLib/src/libtommath/bn_mp_mulmod.c +40 -0
  504. data/ext/stormlib/StormLib/src/libtommath/bn_mp_n_root.c +132 -0
  505. data/ext/stormlib/StormLib/src/libtommath/bn_mp_neg.c +40 -0
  506. data/ext/stormlib/StormLib/src/libtommath/bn_mp_or.c +50 -0
  507. data/ext/stormlib/StormLib/src/libtommath/bn_mp_prime_fermat.c +62 -0
  508. data/ext/stormlib/StormLib/src/libtommath/bn_mp_prime_is_divisible.c +50 -0
  509. data/ext/stormlib/StormLib/src/libtommath/bn_mp_prime_is_prime.c +83 -0
  510. data/ext/stormlib/StormLib/src/libtommath/bn_mp_prime_miller_rabin.c +103 -0
  511. data/ext/stormlib/StormLib/src/libtommath/bn_mp_prime_next_prime.c +170 -0
  512. data/ext/stormlib/StormLib/src/libtommath/bn_mp_prime_rabin_miller_trials.c +52 -0
  513. data/ext/stormlib/StormLib/src/libtommath/bn_mp_prime_random_ex.c +125 -0
  514. data/ext/stormlib/StormLib/src/libtommath/bn_mp_radix_size.c +78 -0
  515. data/ext/stormlib/StormLib/src/libtommath/bn_mp_radix_smap.c +24 -0
  516. data/ext/stormlib/StormLib/src/libtommath/bn_mp_rand.c +55 -0
  517. data/ext/stormlib/StormLib/src/libtommath/bn_mp_read_radix.c +85 -0
  518. data/ext/stormlib/StormLib/src/libtommath/bn_mp_read_signed_bin.c +41 -0
  519. data/ext/stormlib/StormLib/src/libtommath/bn_mp_read_unsigned_bin.c +55 -0
  520. data/ext/stormlib/StormLib/src/libtommath/bn_mp_reduce.c +100 -0
  521. data/ext/stormlib/StormLib/src/libtommath/bn_mp_reduce_2k.c +61 -0
  522. data/ext/stormlib/StormLib/src/libtommath/bn_mp_reduce_2k_l.c +62 -0
  523. data/ext/stormlib/StormLib/src/libtommath/bn_mp_reduce_2k_setup.c +47 -0
  524. data/ext/stormlib/StormLib/src/libtommath/bn_mp_reduce_2k_setup_l.c +44 -0
  525. data/ext/stormlib/StormLib/src/libtommath/bn_mp_reduce_is_2k.c +52 -0
  526. data/ext/stormlib/StormLib/src/libtommath/bn_mp_reduce_is_2k_l.c +44 -0
  527. data/ext/stormlib/StormLib/src/libtommath/bn_mp_reduce_setup.c +34 -0
  528. data/ext/stormlib/StormLib/src/libtommath/bn_mp_rshd.c +72 -0
  529. data/ext/stormlib/StormLib/src/libtommath/bn_mp_set.c +29 -0
  530. data/ext/stormlib/StormLib/src/libtommath/bn_mp_set_int.c +48 -0
  531. data/ext/stormlib/StormLib/src/libtommath/bn_mp_shrink.c +35 -0
  532. data/ext/stormlib/StormLib/src/libtommath/bn_mp_signed_bin_size.c +27 -0
  533. data/ext/stormlib/StormLib/src/libtommath/bn_mp_sqr.c +58 -0
  534. data/ext/stormlib/StormLib/src/libtommath/bn_mp_sqrmod.c +41 -0
  535. data/ext/stormlib/StormLib/src/libtommath/bn_mp_sqrt.c +81 -0
  536. data/ext/stormlib/StormLib/src/libtommath/bn_mp_sub.c +59 -0
  537. data/ext/stormlib/StormLib/src/libtommath/bn_mp_sub_d.c +93 -0
  538. data/ext/stormlib/StormLib/src/libtommath/bn_mp_submod.c +42 -0
  539. data/ext/stormlib/StormLib/src/libtommath/bn_mp_to_signed_bin.c +33 -0
  540. data/ext/stormlib/StormLib/src/libtommath/bn_mp_to_signed_bin_n.c +31 -0
  541. data/ext/stormlib/StormLib/src/libtommath/bn_mp_to_unsigned_bin.c +48 -0
  542. data/ext/stormlib/StormLib/src/libtommath/bn_mp_to_unsigned_bin_n.c +31 -0
  543. data/ext/stormlib/StormLib/src/libtommath/bn_mp_toom_mul.c +284 -0
  544. data/ext/stormlib/StormLib/src/libtommath/bn_mp_toom_sqr.c +226 -0
  545. data/ext/stormlib/StormLib/src/libtommath/bn_mp_toradix.c +75 -0
  546. data/ext/stormlib/StormLib/src/libtommath/bn_mp_toradix_n.c +88 -0
  547. data/ext/stormlib/StormLib/src/libtommath/bn_mp_unsigned_bin_size.c +28 -0
  548. data/ext/stormlib/StormLib/src/libtommath/bn_mp_xor.c +51 -0
  549. data/ext/stormlib/StormLib/src/libtommath/bn_mp_zero.c +36 -0
  550. data/ext/stormlib/StormLib/src/libtommath/bn_prime_tab.c +61 -0
  551. data/ext/stormlib/StormLib/src/libtommath/bn_reverse.c +39 -0
  552. data/ext/stormlib/StormLib/src/libtommath/bn_s_mp_add.c +109 -0
  553. data/ext/stormlib/StormLib/src/libtommath/bn_s_mp_exptmod.c +252 -0
  554. data/ext/stormlib/StormLib/src/libtommath/bn_s_mp_mul_digs.c +90 -0
  555. data/ext/stormlib/StormLib/src/libtommath/bn_s_mp_mul_high_digs.c +81 -0
  556. data/ext/stormlib/StormLib/src/libtommath/bn_s_mp_sqr.c +84 -0
  557. data/ext/stormlib/StormLib/src/libtommath/bn_s_mp_sub.c +89 -0
  558. data/ext/stormlib/StormLib/src/libtommath/bncore.c +36 -0
  559. data/ext/stormlib/StormLib/src/libtommath/tommath.h +584 -0
  560. data/ext/stormlib/StormLib/src/libtommath/tommath_class.h +999 -0
  561. data/ext/stormlib/StormLib/src/libtommath/tommath_superclass.h +76 -0
  562. data/ext/stormlib/StormLib/src/lzma/C/LzFind.c +761 -0
  563. data/ext/stormlib/StormLib/src/lzma/C/LzFind.h +115 -0
  564. data/ext/stormlib/StormLib/src/lzma/C/LzFindMt.c +793 -0
  565. data/ext/stormlib/StormLib/src/lzma/C/LzFindMt.h +105 -0
  566. data/ext/stormlib/StormLib/src/lzma/C/LzHash.h +54 -0
  567. data/ext/stormlib/StormLib/src/lzma/C/LzmaDec.c +999 -0
  568. data/ext/stormlib/StormLib/src/lzma/C/LzmaDec.h +231 -0
  569. data/ext/stormlib/StormLib/src/lzma/C/LzmaEnc.c +2268 -0
  570. data/ext/stormlib/StormLib/src/lzma/C/LzmaEnc.h +80 -0
  571. data/ext/stormlib/StormLib/src/lzma/C/Threads.c +84 -0
  572. data/ext/stormlib/StormLib/src/lzma/C/Threads.h +59 -0
  573. data/ext/stormlib/StormLib/src/lzma/C/Types.h +236 -0
  574. data/ext/stormlib/StormLib/src/lzma/info.txt +1 -0
  575. data/ext/stormlib/StormLib/src/pklib/crc32.c +66 -0
  576. data/ext/stormlib/StormLib/src/pklib/explode.c +521 -0
  577. data/ext/stormlib/StormLib/src/pklib/implode.c +674 -0
  578. data/ext/stormlib/StormLib/src/pklib/pklib.h +160 -0
  579. data/ext/stormlib/StormLib/src/resource.h +15 -0
  580. data/ext/stormlib/StormLib/src/sparse/sparse.cpp +287 -0
  581. data/ext/stormlib/StormLib/src/sparse/sparse.h +17 -0
  582. data/ext/stormlib/StormLib/src/wdk/sources-cpp.cpp +26 -0
  583. data/ext/stormlib/StormLib/src/wdk/sources-wdk-bzip2.c +13 -0
  584. data/ext/stormlib/StormLib/src/wdk/sources-wdk-ltc.c +4 -0
  585. data/ext/stormlib/StormLib/src/wdk/sources-wdk-lzma.c +8 -0
  586. data/ext/stormlib/StormLib/src/wdk/sources-wdk-misc.c +6 -0
  587. data/ext/stormlib/StormLib/src/wdk/sources-wdk-tomcrypt.c +82 -0
  588. data/ext/stormlib/StormLib/src/wdk/sources-wdk-tommath.c +123 -0
  589. data/ext/stormlib/StormLib/src/wdk/sources-wdk-zlib.c +21 -0
  590. data/ext/stormlib/StormLib/src/zlib/adler32.c +169 -0
  591. data/ext/stormlib/StormLib/src/zlib/compress.c +80 -0
  592. data/ext/stormlib/StormLib/src/zlib/compress_zlib.c +5 -0
  593. data/ext/stormlib/StormLib/src/zlib/crc32.c +442 -0
  594. data/ext/stormlib/StormLib/src/zlib/crc32.h +441 -0
  595. data/ext/stormlib/StormLib/src/zlib/deflate.c +1834 -0
  596. data/ext/stormlib/StormLib/src/zlib/deflate.h +342 -0
  597. data/ext/stormlib/StormLib/src/zlib/gzguts.h +218 -0
  598. data/ext/stormlib/StormLib/src/zlib/inffast.c +340 -0
  599. data/ext/stormlib/StormLib/src/zlib/inffast.h +11 -0
  600. data/ext/stormlib/StormLib/src/zlib/inffixed.h +94 -0
  601. data/ext/stormlib/StormLib/src/zlib/inflate.c +1480 -0
  602. data/ext/stormlib/StormLib/src/zlib/inflate.h +130 -0
  603. data/ext/stormlib/StormLib/src/zlib/inftrees.c +330 -0
  604. data/ext/stormlib/StormLib/src/zlib/inftrees.h +67 -0
  605. data/ext/stormlib/StormLib/src/zlib/trees.c +1244 -0
  606. data/ext/stormlib/StormLib/src/zlib/trees.h +128 -0
  607. data/ext/stormlib/StormLib/src/zlib/zconf.h +428 -0
  608. data/ext/stormlib/StormLib/src/zlib/zlib.h +1613 -0
  609. data/ext/stormlib/StormLib/src/zlib/zutil.c +318 -0
  610. data/ext/stormlib/StormLib/src/zlib/zutil.h +274 -0
  611. data/ext/stormlib/StormLib/storm_dll/storm.cpp +117 -0
  612. data/ext/stormlib/StormLib/storm_dll/storm.def +25 -0
  613. data/ext/stormlib/StormLib/storm_dll/storm.h +65 -0
  614. data/ext/stormlib/StormLib/storm_dll/storm.vcxproj +209 -0
  615. data/ext/stormlib/StormLib/storm_dll/storm.vcxproj.filters +28 -0
  616. data/ext/stormlib/StormLib/storm_dll/storm_test.cpp +182 -0
  617. data/ext/stormlib/StormLib/storm_dll/storm_test.vcxproj +202 -0
  618. data/ext/stormlib/StormLib/storm_dll/storm_test.vcxproj.filters +22 -0
  619. data/ext/stormlib/StormLib/test/StormTest.cpp +4393 -0
  620. data/ext/stormlib/StormLib/test/TLogHelper.cpp +567 -0
  621. data/ext/stormlib/StormLib/test/stormlib-test-001.txt +164 -0
  622. data/ext/stormlib/extconf.rb +0 -2
  623. data/lib/stormlib/version.rb +1 -1
  624. data/stormlib.gemspec +1 -2
  625. metadata +621 -16
@@ -0,0 +1,1003 @@
1
+ /*
2
+ -------------------------------------------------------------------------------
3
+ lookup3.c, by Bob Jenkins, May 2006, Public Domain.
4
+
5
+ These are functions for producing 32-bit hashes for hash table lookup.
6
+ hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final()
7
+ are externally useful functions. Routines to test the hash are included
8
+ if SELF_TEST is defined. You can use this free for any purpose. It's in
9
+ the public domain. It has no warranty.
10
+
11
+ You probably want to use hashlittle(). hashlittle() and hashbig()
12
+ hash byte arrays. hashlittle() is is faster than hashbig() on
13
+ little-endian machines. Intel and AMD are little-endian machines.
14
+ On second thought, you probably want hashlittle2(), which is identical to
15
+ hashlittle() except it returns two 32-bit hashes for the price of one.
16
+ You could implement hashbig2() if you wanted but I haven't bothered here.
17
+
18
+ If you want to find a hash of, say, exactly 7 integers, do
19
+ a = i1; b = i2; c = i3;
20
+ mix(a,b,c);
21
+ a += i4; b += i5; c += i6;
22
+ mix(a,b,c);
23
+ a += i7;
24
+ final(a,b,c);
25
+ then use c as the hash value. If you have a variable length array of
26
+ 4-byte integers to hash, use hashword(). If you have a byte array (like
27
+ a character string), use hashlittle(). If you have several byte arrays, or
28
+ a mix of things, see the comments above hashlittle().
29
+
30
+ Why is this so big? I read 12 bytes at a time into 3 4-byte integers,
31
+ then mix those integers. This is fast (you can do a lot more thorough
32
+ mixing with 12*3 instructions on 3 integers than you can with 3 instructions
33
+ on 1 byte), but shoehorning those bytes into integers efficiently is messy.
34
+ -------------------------------------------------------------------------------
35
+ */
36
+ //#define SELF_TEST 1
37
+
38
+ #include <stdio.h> /* defines printf for tests */
39
+ #include <time.h> /* defines time_t for timings in the test */
40
+
41
+ #ifdef linux
42
+ #include <sys/param.h> /* attempt to define endianness */
43
+ #include <endian.h> /* attempt to define endianness */
44
+ #endif
45
+
46
+ #include "lookup.h"
47
+
48
+ /*
49
+ * My best guess at if you are big-endian or little-endian. This may
50
+ * need adjustment.
51
+ */
52
+ #if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
53
+ __BYTE_ORDER == __LITTLE_ENDIAN) || \
54
+ (defined(i386) || defined(__i386__) || defined(__i486__) || \
55
+ defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL))
56
+ # define HASH_LITTLE_ENDIAN 1
57
+ # define HASH_BIG_ENDIAN 0
58
+ #elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \
59
+ __BYTE_ORDER == __BIG_ENDIAN) || \
60
+ (defined(sparc) || defined(POWERPC) || defined(mc68000) || defined(sel))
61
+ # define HASH_LITTLE_ENDIAN 0
62
+ # define HASH_BIG_ENDIAN 1
63
+ #else
64
+ # define HASH_LITTLE_ENDIAN 0
65
+ # define HASH_BIG_ENDIAN 0
66
+ #endif
67
+
68
+ #define hashsize(n) ((uint32_t)1<<(n))
69
+ #define hashmask(n) (hashsize(n)-1)
70
+ #define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
71
+
72
+ /*
73
+ -------------------------------------------------------------------------------
74
+ mix -- mix 3 32-bit values reversibly.
75
+
76
+ This is reversible, so any information in (a,b,c) before mix() is
77
+ still in (a,b,c) after mix().
78
+
79
+ If four pairs of (a,b,c) inputs are run through mix(), or through
80
+ mix() in reverse, there are at least 32 bits of the output that
81
+ are sometimes the same for one pair and different for another pair.
82
+ This was tested for:
83
+ * pairs that differed by one bit, by two bits, in any combination
84
+ of top bits of (a,b,c), or in any combination of bottom bits of
85
+ (a,b,c).
86
+ * "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
87
+ the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
88
+ is commonly produced by subtraction) look like a single 1-bit
89
+ difference.
90
+ * the base values were pseudorandom, all zero but one bit set, or
91
+ all zero plus a counter that starts at zero.
92
+
93
+ Some k values for my "a-=c; a^=rot(c,k); c+=b;" arrangement that
94
+ satisfy this are
95
+ 4 6 8 16 19 4
96
+ 9 15 3 18 27 15
97
+ 14 9 3 7 17 3
98
+ Well, "9 15 3 18 27 15" didn't quite get 32 bits diffing
99
+ for "differ" defined as + with a one-bit base and a two-bit delta. I
100
+ used http://burtleburtle.net/bob/hash/avalanche.html to choose
101
+ the operations, constants, and arrangements of the variables.
102
+
103
+ This does not achieve avalanche. There are input bits of (a,b,c)
104
+ that fail to affect some output bits of (a,b,c), especially of a. The
105
+ most thoroughly mixed value is c, but it doesn't really even achieve
106
+ avalanche in c.
107
+
108
+ This allows some parallelism. Read-after-writes are good at doubling
109
+ the number of bits affected, so the goal of mixing pulls in the opposite
110
+ direction as the goal of parallelism. I did what I could. Rotates
111
+ seem to cost as much as shifts on every machine I could lay my hands
112
+ on, and rotates are much kinder to the top and bottom bits, so I used
113
+ rotates.
114
+ -------------------------------------------------------------------------------
115
+ */
116
+ #define mix(a,b,c) \
117
+ { \
118
+ a -= c; a ^= rot(c, 4); c += b; \
119
+ b -= a; b ^= rot(a, 6); a += c; \
120
+ c -= b; c ^= rot(b, 8); b += a; \
121
+ a -= c; a ^= rot(c,16); c += b; \
122
+ b -= a; b ^= rot(a,19); a += c; \
123
+ c -= b; c ^= rot(b, 4); b += a; \
124
+ }
125
+
126
+ /*
127
+ -------------------------------------------------------------------------------
128
+ final -- final mixing of 3 32-bit values (a,b,c) into c
129
+
130
+ Pairs of (a,b,c) values differing in only a few bits will usually
131
+ produce values of c that look totally different. This was tested for
132
+ * pairs that differed by one bit, by two bits, in any combination
133
+ of top bits of (a,b,c), or in any combination of bottom bits of
134
+ (a,b,c).
135
+ * "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
136
+ the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
137
+ is commonly produced by subtraction) look like a single 1-bit
138
+ difference.
139
+ * the base values were pseudorandom, all zero but one bit set, or
140
+ all zero plus a counter that starts at zero.
141
+
142
+ These constants passed:
143
+ 14 11 25 16 4 14 24
144
+ 12 14 25 16 4 14 24
145
+ and these came close:
146
+ 4 8 15 26 3 22 24
147
+ 10 8 15 26 3 22 24
148
+ 11 8 15 26 3 22 24
149
+ -------------------------------------------------------------------------------
150
+ */
151
+ #define final(a,b,c) \
152
+ { \
153
+ c ^= b; c -= rot(b,14); \
154
+ a ^= c; a -= rot(c,11); \
155
+ b ^= a; b -= rot(a,25); \
156
+ c ^= b; c -= rot(b,16); \
157
+ a ^= c; a -= rot(c,4); \
158
+ b ^= a; b -= rot(a,14); \
159
+ c ^= b; c -= rot(b,24); \
160
+ }
161
+
162
+ /*
163
+ --------------------------------------------------------------------
164
+ This works on all machines. To be useful, it requires
165
+ -- that the key be an array of uint32_t's, and
166
+ -- that the length be the number of uint32_t's in the key
167
+
168
+ The function hashword() is identical to hashlittle() on little-endian
169
+ machines, and identical to hashbig() on big-endian machines,
170
+ except that the length has to be measured in uint32_ts rather than in
171
+ bytes. hashlittle() is more complicated than hashword() only because
172
+ hashlittle() has to dance around fitting the key bytes into registers.
173
+ --------------------------------------------------------------------
174
+ */
175
+ uint32_t hashword(
176
+ const uint32_t *k, /* the key, an array of uint32_t values */
177
+ size_t length, /* the length of the key, in uint32_ts */
178
+ uint32_t initval) /* the previous hash, or an arbitrary value */
179
+ {
180
+ uint32_t a,b,c;
181
+
182
+ /* Set up the internal state */
183
+ a = b = c = 0xdeadbeef + (((uint32_t)length)<<2) + initval;
184
+
185
+ /*------------------------------------------------- handle most of the key */
186
+ while (length > 3)
187
+ {
188
+ a += k[0];
189
+ b += k[1];
190
+ c += k[2];
191
+ mix(a,b,c);
192
+ length -= 3;
193
+ k += 3;
194
+ }
195
+
196
+ /*------------------------------------------- handle the last 3 uint32_t's */
197
+ switch(length) /* all the case statements fall through */
198
+ {
199
+ case 3 : c+=k[2];
200
+ case 2 : b+=k[1];
201
+ case 1 : a+=k[0];
202
+ final(a,b,c);
203
+ case 0: /* case 0: nothing left to add */
204
+ break;
205
+ }
206
+ /*------------------------------------------------------ report the result */
207
+ return c;
208
+ }
209
+
210
+
211
+ /*
212
+ --------------------------------------------------------------------
213
+ hashword2() -- same as hashword(), but take two seeds and return two
214
+ 32-bit values. pc and pb must both be nonnull, and *pc and *pb must
215
+ both be initialized with seeds. If you pass in (*pb)==0, the output
216
+ (*pc) will be the same as the return value from hashword().
217
+ --------------------------------------------------------------------
218
+ */
219
+ void hashword2 (
220
+ const uint32_t *k, /* the key, an array of uint32_t values */
221
+ size_t length, /* the length of the key, in uint32_ts */
222
+ uint32_t *pc, /* IN: seed OUT: primary hash value */
223
+ uint32_t *pb) /* IN: more seed OUT: secondary hash value */
224
+ {
225
+ uint32_t a,b,c;
226
+
227
+ /* Set up the internal state */
228
+ a = b = c = 0xdeadbeef + ((uint32_t)(length<<2)) + *pc;
229
+ c += *pb;
230
+
231
+ /*------------------------------------------------- handle most of the key */
232
+ while (length > 3)
233
+ {
234
+ a += k[0];
235
+ b += k[1];
236
+ c += k[2];
237
+ mix(a,b,c);
238
+ length -= 3;
239
+ k += 3;
240
+ }
241
+
242
+ /*------------------------------------------- handle the last 3 uint32_t's */
243
+ switch(length) /* all the case statements fall through */
244
+ {
245
+ case 3 : c+=k[2];
246
+ case 2 : b+=k[1];
247
+ case 1 : a+=k[0];
248
+ final(a,b,c);
249
+ case 0: /* case 0: nothing left to add */
250
+ break;
251
+ }
252
+ /*------------------------------------------------------ report the result */
253
+ *pc=c; *pb=b;
254
+ }
255
+
256
+
257
+ /*
258
+ -------------------------------------------------------------------------------
259
+ hashlittle() -- hash a variable-length key into a 32-bit value
260
+ k : the key (the unaligned variable-length array of bytes)
261
+ length : the length of the key, counting by bytes
262
+ initval : can be any 4-byte value
263
+ Returns a 32-bit value. Every bit of the key affects every bit of
264
+ the return value. Two keys differing by one or two bits will have
265
+ totally different hash values.
266
+
267
+ The best hash table sizes are powers of 2. There is no need to do
268
+ mod a prime (mod is sooo slow!). If you need less than 32 bits,
269
+ use a bitmask. For example, if you need only 10 bits, do
270
+ h = (h & hashmask(10));
271
+ In which case, the hash table should have hashsize(10) elements.
272
+
273
+ If you are hashing n strings (uint8_t **)k, do it like this:
274
+ for (i=0, h=0; i<n; ++i) h = hashlittle( k[i], len[i], h);
275
+
276
+ By Bob Jenkins, 2006. bob_jenkins@burtleburtle.net. You may use this
277
+ code any way you wish, private, educational, or commercial. It's free.
278
+
279
+ Use for hash table lookup, or anything where one collision in 2^^32 is
280
+ acceptable. Do NOT use for cryptographic purposes.
281
+ -------------------------------------------------------------------------------
282
+ */
283
+
284
+ uint32_t hashlittle( const void *key, size_t length, uint32_t initval)
285
+ {
286
+ uint32_t a,b,c; /* internal state */
287
+ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */
288
+
289
+ /* Set up the internal state */
290
+ a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
291
+
292
+ u.ptr = key;
293
+ if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
294
+ const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */
295
+ const uint8_t *k8;
296
+
297
+ /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
298
+ while (length > 12)
299
+ {
300
+ a += k[0];
301
+ b += k[1];
302
+ c += k[2];
303
+ mix(a,b,c);
304
+ length -= 12;
305
+ k += 3;
306
+ }
307
+
308
+ /*----------------------------- handle the last (probably partial) block */
309
+ /*
310
+ * "k[2]&0xffffff" actually reads beyond the end of the string, but
311
+ * then masks off the part it's not allowed to read. Because the
312
+ * string is aligned, the masked-off tail is in the same word as the
313
+ * rest of the string. Every machine with memory protection I've seen
314
+ * does it on word boundaries, so is OK with this. But VALGRIND will
315
+ * still catch it and complain. The masking trick does make the hash
316
+ * noticably faster for short strings (like English words).
317
+ */
318
+ #ifndef VALGRIND
319
+
320
+ switch(length)
321
+ {
322
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
323
+ case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
324
+ case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
325
+ case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
326
+ case 8 : b+=k[1]; a+=k[0]; break;
327
+ case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
328
+ case 6 : b+=k[1]&0xffff; a+=k[0]; break;
329
+ case 5 : b+=k[1]&0xff; a+=k[0]; break;
330
+ case 4 : a+=k[0]; break;
331
+ case 3 : a+=k[0]&0xffffff; break;
332
+ case 2 : a+=k[0]&0xffff; break;
333
+ case 1 : a+=k[0]&0xff; break;
334
+ case 0 : return c; /* zero length strings require no mixing */
335
+ }
336
+
337
+ #else /* make valgrind happy */
338
+
339
+ k8 = (const uint8_t *)k;
340
+ switch(length)
341
+ {
342
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
343
+ case 11: c+=((uint32_t)k8[10])<<16; /* fall through */
344
+ case 10: c+=((uint32_t)k8[9])<<8; /* fall through */
345
+ case 9 : c+=k8[8]; /* fall through */
346
+ case 8 : b+=k[1]; a+=k[0]; break;
347
+ case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */
348
+ case 6 : b+=((uint32_t)k8[5])<<8; /* fall through */
349
+ case 5 : b+=k8[4]; /* fall through */
350
+ case 4 : a+=k[0]; break;
351
+ case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */
352
+ case 2 : a+=((uint32_t)k8[1])<<8; /* fall through */
353
+ case 1 : a+=k8[0]; break;
354
+ case 0 : return c;
355
+ }
356
+
357
+ #endif /* !valgrind */
358
+
359
+ } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) {
360
+ const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */
361
+ const uint8_t *k8;
362
+
363
+ /*--------------- all but last block: aligned reads and different mixing */
364
+ while (length > 12)
365
+ {
366
+ a += k[0] + (((uint32_t)k[1])<<16);
367
+ b += k[2] + (((uint32_t)k[3])<<16);
368
+ c += k[4] + (((uint32_t)k[5])<<16);
369
+ mix(a,b,c);
370
+ length -= 12;
371
+ k += 6;
372
+ }
373
+
374
+ /*----------------------------- handle the last (probably partial) block */
375
+ k8 = (const uint8_t *)k;
376
+ switch(length)
377
+ {
378
+ case 12: c+=k[4]+(((uint32_t)k[5])<<16);
379
+ b+=k[2]+(((uint32_t)k[3])<<16);
380
+ a+=k[0]+(((uint32_t)k[1])<<16);
381
+ break;
382
+ case 11: c+=((uint32_t)k8[10])<<16; /* fall through */
383
+ case 10: c+=k[4];
384
+ b+=k[2]+(((uint32_t)k[3])<<16);
385
+ a+=k[0]+(((uint32_t)k[1])<<16);
386
+ break;
387
+ case 9 : c+=k8[8]; /* fall through */
388
+ case 8 : b+=k[2]+(((uint32_t)k[3])<<16);
389
+ a+=k[0]+(((uint32_t)k[1])<<16);
390
+ break;
391
+ case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */
392
+ case 6 : b+=k[2];
393
+ a+=k[0]+(((uint32_t)k[1])<<16);
394
+ break;
395
+ case 5 : b+=k8[4]; /* fall through */
396
+ case 4 : a+=k[0]+(((uint32_t)k[1])<<16);
397
+ break;
398
+ case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */
399
+ case 2 : a+=k[0];
400
+ break;
401
+ case 1 : a+=k8[0];
402
+ break;
403
+ case 0 : return c; /* zero length requires no mixing */
404
+ }
405
+
406
+ } else { /* need to read the key one byte at a time */
407
+ const uint8_t *k = (const uint8_t *)key;
408
+
409
+ /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
410
+ while (length > 12)
411
+ {
412
+ a += k[0];
413
+ a += ((uint32_t)k[1])<<8;
414
+ a += ((uint32_t)k[2])<<16;
415
+ a += ((uint32_t)k[3])<<24;
416
+ b += k[4];
417
+ b += ((uint32_t)k[5])<<8;
418
+ b += ((uint32_t)k[6])<<16;
419
+ b += ((uint32_t)k[7])<<24;
420
+ c += k[8];
421
+ c += ((uint32_t)k[9])<<8;
422
+ c += ((uint32_t)k[10])<<16;
423
+ c += ((uint32_t)k[11])<<24;
424
+ mix(a,b,c);
425
+ length -= 12;
426
+ k += 12;
427
+ }
428
+
429
+ /*-------------------------------- last block: affect all 32 bits of (c) */
430
+ switch(length) /* all the case statements fall through */
431
+ {
432
+ case 12: c+=((uint32_t)k[11])<<24;
433
+ case 11: c+=((uint32_t)k[10])<<16;
434
+ case 10: c+=((uint32_t)k[9])<<8;
435
+ case 9 : c+=k[8];
436
+ case 8 : b+=((uint32_t)k[7])<<24;
437
+ case 7 : b+=((uint32_t)k[6])<<16;
438
+ case 6 : b+=((uint32_t)k[5])<<8;
439
+ case 5 : b+=k[4];
440
+ case 4 : a+=((uint32_t)k[3])<<24;
441
+ case 3 : a+=((uint32_t)k[2])<<16;
442
+ case 2 : a+=((uint32_t)k[1])<<8;
443
+ case 1 : a+=k[0];
444
+ break;
445
+ case 0 : return c;
446
+ }
447
+ }
448
+
449
+ final(a,b,c);
450
+ return c;
451
+ }
452
+
453
+
454
+ /*
455
+ * hashlittle2: return 2 32-bit hash values
456
+ *
457
+ * This is identical to hashlittle(), except it returns two 32-bit hash
458
+ * values instead of just one. This is good enough for hash table
459
+ * lookup with 2^^64 buckets, or if you want a second hash if you're not
460
+ * happy with the first, or if you want a probably-unique 64-bit ID for
461
+ * the key. *pc is better mixed than *pb, so use *pc first. If you want
462
+ * a 64-bit value do something like "*pc + (((uint64_t)*pb)<<32)".
463
+ */
464
+ void hashlittle2(
465
+ const void *key, /* the key to hash */
466
+ size_t length, /* length of the key */
467
+ uint32_t *pc, /* IN: primary initval, OUT: primary hash */
468
+ uint32_t *pb) /* IN: secondary initval, OUT: secondary hash */
469
+ {
470
+ uint32_t a,b,c; /* internal state */
471
+ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */
472
+
473
+ /* Set up the internal state */
474
+ a = b = c = 0xdeadbeef + ((uint32_t)length) + *pc;
475
+ c += *pb;
476
+
477
+ u.ptr = key;
478
+ if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
479
+ const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */
480
+ const uint8_t *k8;
481
+
482
+ /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
483
+ while (length > 12)
484
+ {
485
+ a += k[0];
486
+ b += k[1];
487
+ c += k[2];
488
+ mix(a,b,c);
489
+ length -= 12;
490
+ k += 3;
491
+ }
492
+
493
+ /*----------------------------- handle the last (probably partial) block */
494
+ /*
495
+ * "k[2]&0xffffff" actually reads beyond the end of the string, but
496
+ * then masks off the part it's not allowed to read. Because the
497
+ * string is aligned, the masked-off tail is in the same word as the
498
+ * rest of the string. Every machine with memory protection I've seen
499
+ * does it on word boundaries, so is OK with this. But VALGRIND will
500
+ * still catch it and complain. The masking trick does make the hash
501
+ * noticably faster for short strings (like English words).
502
+ */
503
+ #ifndef VALGRIND
504
+
505
+ switch(length)
506
+ {
507
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
508
+ case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
509
+ case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
510
+ case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
511
+ case 8 : b+=k[1]; a+=k[0]; break;
512
+ case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
513
+ case 6 : b+=k[1]&0xffff; a+=k[0]; break;
514
+ case 5 : b+=k[1]&0xff; a+=k[0]; break;
515
+ case 4 : a+=k[0]; break;
516
+ case 3 : a+=k[0]&0xffffff; break;
517
+ case 2 : a+=k[0]&0xffff; break;
518
+ case 1 : a+=k[0]&0xff; break;
519
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
520
+ }
521
+
522
+ #else /* make valgrind happy */
523
+
524
+ k8 = (const uint8_t *)k;
525
+ switch(length)
526
+ {
527
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
528
+ case 11: c+=((uint32_t)k8[10])<<16; /* fall through */
529
+ case 10: c+=((uint32_t)k8[9])<<8; /* fall through */
530
+ case 9 : c+=k8[8]; /* fall through */
531
+ case 8 : b+=k[1]; a+=k[0]; break;
532
+ case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */
533
+ case 6 : b+=((uint32_t)k8[5])<<8; /* fall through */
534
+ case 5 : b+=k8[4]; /* fall through */
535
+ case 4 : a+=k[0]; break;
536
+ case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */
537
+ case 2 : a+=((uint32_t)k8[1])<<8; /* fall through */
538
+ case 1 : a+=k8[0]; break;
539
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
540
+ }
541
+
542
+ #endif /* !valgrind */
543
+
544
+ } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) {
545
+ const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */
546
+ const uint8_t *k8;
547
+
548
+ /*--------------- all but last block: aligned reads and different mixing */
549
+ while (length > 12)
550
+ {
551
+ a += k[0] + (((uint32_t)k[1])<<16);
552
+ b += k[2] + (((uint32_t)k[3])<<16);
553
+ c += k[4] + (((uint32_t)k[5])<<16);
554
+ mix(a,b,c);
555
+ length -= 12;
556
+ k += 6;
557
+ }
558
+
559
+ /*----------------------------- handle the last (probably partial) block */
560
+ k8 = (const uint8_t *)k;
561
+ switch(length)
562
+ {
563
+ case 12: c+=k[4]+(((uint32_t)k[5])<<16);
564
+ b+=k[2]+(((uint32_t)k[3])<<16);
565
+ a+=k[0]+(((uint32_t)k[1])<<16);
566
+ break;
567
+ case 11: c+=((uint32_t)k8[10])<<16; /* fall through */
568
+ case 10: c+=k[4];
569
+ b+=k[2]+(((uint32_t)k[3])<<16);
570
+ a+=k[0]+(((uint32_t)k[1])<<16);
571
+ break;
572
+ case 9 : c+=k8[8]; /* fall through */
573
+ case 8 : b+=k[2]+(((uint32_t)k[3])<<16);
574
+ a+=k[0]+(((uint32_t)k[1])<<16);
575
+ break;
576
+ case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */
577
+ case 6 : b+=k[2];
578
+ a+=k[0]+(((uint32_t)k[1])<<16);
579
+ break;
580
+ case 5 : b+=k8[4]; /* fall through */
581
+ case 4 : a+=k[0]+(((uint32_t)k[1])<<16);
582
+ break;
583
+ case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */
584
+ case 2 : a+=k[0];
585
+ break;
586
+ case 1 : a+=k8[0];
587
+ break;
588
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
589
+ }
590
+
591
+ } else { /* need to read the key one byte at a time */
592
+ const uint8_t *k = (const uint8_t *)key;
593
+
594
+ /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
595
+ while (length > 12)
596
+ {
597
+ a += k[0];
598
+ a += ((uint32_t)k[1])<<8;
599
+ a += ((uint32_t)k[2])<<16;
600
+ a += ((uint32_t)k[3])<<24;
601
+ b += k[4];
602
+ b += ((uint32_t)k[5])<<8;
603
+ b += ((uint32_t)k[6])<<16;
604
+ b += ((uint32_t)k[7])<<24;
605
+ c += k[8];
606
+ c += ((uint32_t)k[9])<<8;
607
+ c += ((uint32_t)k[10])<<16;
608
+ c += ((uint32_t)k[11])<<24;
609
+ mix(a,b,c);
610
+ length -= 12;
611
+ k += 12;
612
+ }
613
+
614
+ /*-------------------------------- last block: affect all 32 bits of (c) */
615
+ switch(length) /* all the case statements fall through */
616
+ {
617
+ case 12: c+=((uint32_t)k[11])<<24;
618
+ case 11: c+=((uint32_t)k[10])<<16;
619
+ case 10: c+=((uint32_t)k[9])<<8;
620
+ case 9 : c+=k[8];
621
+ case 8 : b+=((uint32_t)k[7])<<24;
622
+ case 7 : b+=((uint32_t)k[6])<<16;
623
+ case 6 : b+=((uint32_t)k[5])<<8;
624
+ case 5 : b+=k[4];
625
+ case 4 : a+=((uint32_t)k[3])<<24;
626
+ case 3 : a+=((uint32_t)k[2])<<16;
627
+ case 2 : a+=((uint32_t)k[1])<<8;
628
+ case 1 : a+=k[0];
629
+ break;
630
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
631
+ }
632
+ }
633
+
634
+ final(a,b,c);
635
+ *pc=c; *pb=b;
636
+ }
637
+
638
+
639
+
640
+ /*
641
+ * hashbig():
642
+ * This is the same as hashword() on big-endian machines. It is different
643
+ * from hashlittle() on all machines. hashbig() takes advantage of
644
+ * big-endian byte ordering.
645
+ */
646
+ uint32_t hashbig( const void *key, size_t length, uint32_t initval)
647
+ {
648
+ uint32_t a,b,c;
649
+ union { const void *ptr; size_t i; } u; /* to cast key to (size_t) happily */
650
+
651
+ /* Set up the internal state */
652
+ a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
653
+
654
+ u.ptr = key;
655
+ if (HASH_BIG_ENDIAN && ((u.i & 0x3) == 0)) {
656
+ const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */
657
+ const uint8_t *k8;
658
+
659
+ /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
660
+ while (length > 12)
661
+ {
662
+ a += k[0];
663
+ b += k[1];
664
+ c += k[2];
665
+ mix(a,b,c);
666
+ length -= 12;
667
+ k += 3;
668
+ }
669
+
670
+ /*----------------------------- handle the last (probably partial) block */
671
+ /*
672
+ * "k[2]<<8" actually reads beyond the end of the string, but
673
+ * then shifts out the part it's not allowed to read. Because the
674
+ * string is aligned, the illegal read is in the same word as the
675
+ * rest of the string. Every machine with memory protection I've seen
676
+ * does it on word boundaries, so is OK with this. But VALGRIND will
677
+ * still catch it and complain. The masking trick does make the hash
678
+ * noticably faster for short strings (like English words).
679
+ */
680
+ #ifndef VALGRIND
681
+
682
+ switch(length)
683
+ {
684
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
685
+ case 11: c+=k[2]&0xffffff00; b+=k[1]; a+=k[0]; break;
686
+ case 10: c+=k[2]&0xffff0000; b+=k[1]; a+=k[0]; break;
687
+ case 9 : c+=k[2]&0xff000000; b+=k[1]; a+=k[0]; break;
688
+ case 8 : b+=k[1]; a+=k[0]; break;
689
+ case 7 : b+=k[1]&0xffffff00; a+=k[0]; break;
690
+ case 6 : b+=k[1]&0xffff0000; a+=k[0]; break;
691
+ case 5 : b+=k[1]&0xff000000; a+=k[0]; break;
692
+ case 4 : a+=k[0]; break;
693
+ case 3 : a+=k[0]&0xffffff00; break;
694
+ case 2 : a+=k[0]&0xffff0000; break;
695
+ case 1 : a+=k[0]&0xff000000; break;
696
+ case 0 : return c; /* zero length strings require no mixing */
697
+ }
698
+
699
+ #else /* make valgrind happy */
700
+
701
+ k8 = (const uint8_t *)k;
702
+ switch(length) /* all the case statements fall through */
703
+ {
704
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
705
+ case 11: c+=((uint32_t)k8[10])<<8; /* fall through */
706
+ case 10: c+=((uint32_t)k8[9])<<16; /* fall through */
707
+ case 9 : c+=((uint32_t)k8[8])<<24; /* fall through */
708
+ case 8 : b+=k[1]; a+=k[0]; break;
709
+ case 7 : b+=((uint32_t)k8[6])<<8; /* fall through */
710
+ case 6 : b+=((uint32_t)k8[5])<<16; /* fall through */
711
+ case 5 : b+=((uint32_t)k8[4])<<24; /* fall through */
712
+ case 4 : a+=k[0]; break;
713
+ case 3 : a+=((uint32_t)k8[2])<<8; /* fall through */
714
+ case 2 : a+=((uint32_t)k8[1])<<16; /* fall through */
715
+ case 1 : a+=((uint32_t)k8[0])<<24; break;
716
+ case 0 : return c;
717
+ }
718
+
719
+ #endif /* !VALGRIND */
720
+
721
+ } else { /* need to read the key one byte at a time */
722
+ const uint8_t *k = (const uint8_t *)key;
723
+
724
+ /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
725
+ while (length > 12)
726
+ {
727
+ a += ((uint32_t)k[0])<<24;
728
+ a += ((uint32_t)k[1])<<16;
729
+ a += ((uint32_t)k[2])<<8;
730
+ a += ((uint32_t)k[3]);
731
+ b += ((uint32_t)k[4])<<24;
732
+ b += ((uint32_t)k[5])<<16;
733
+ b += ((uint32_t)k[6])<<8;
734
+ b += ((uint32_t)k[7]);
735
+ c += ((uint32_t)k[8])<<24;
736
+ c += ((uint32_t)k[9])<<16;
737
+ c += ((uint32_t)k[10])<<8;
738
+ c += ((uint32_t)k[11]);
739
+ mix(a,b,c);
740
+ length -= 12;
741
+ k += 12;
742
+ }
743
+
744
+ /*-------------------------------- last block: affect all 32 bits of (c) */
745
+ switch(length) /* all the case statements fall through */
746
+ {
747
+ case 12: c+=k[11];
748
+ case 11: c+=((uint32_t)k[10])<<8;
749
+ case 10: c+=((uint32_t)k[9])<<16;
750
+ case 9 : c+=((uint32_t)k[8])<<24;
751
+ case 8 : b+=k[7];
752
+ case 7 : b+=((uint32_t)k[6])<<8;
753
+ case 6 : b+=((uint32_t)k[5])<<16;
754
+ case 5 : b+=((uint32_t)k[4])<<24;
755
+ case 4 : a+=k[3];
756
+ case 3 : a+=((uint32_t)k[2])<<8;
757
+ case 2 : a+=((uint32_t)k[1])<<16;
758
+ case 1 : a+=((uint32_t)k[0])<<24;
759
+ break;
760
+ case 0 : return c;
761
+ }
762
+ }
763
+
764
+ final(a,b,c);
765
+ return c;
766
+ }
767
+
768
+
769
+ #ifdef SELF_TEST
770
+
771
+ /* used for timings */
772
+ void driver1()
773
+ {
774
+ uint8_t buf[256];
775
+ uint32_t i;
776
+ uint32_t h=0;
777
+ time_t a,z;
778
+
779
+ time(&a);
780
+ for (i=0; i<256; ++i) buf[i] = 'x';
781
+ for (i=0; i<1; ++i)
782
+ {
783
+ h = hashlittle(&buf[0],1,h);
784
+ }
785
+ time(&z);
786
+ if (z-a > 0) printf("time %d %.8x\n", z-a, h);
787
+ }
788
+
789
+ /* check that every input bit changes every output bit half the time */
790
+ #define HASHSTATE 1
791
+ #define HASHLEN 1
792
+ #define MAXPAIR 60
793
+ #define MAXLEN 70
794
+ void driver2()
795
+ {
796
+ uint8_t qa[MAXLEN+1], qb[MAXLEN+2], *a = &qa[0], *b = &qb[1];
797
+ uint32_t c[HASHSTATE], d[HASHSTATE], i=0, j=0, k, l, m=0, z;
798
+ uint32_t e[HASHSTATE],f[HASHSTATE],g[HASHSTATE],h[HASHSTATE];
799
+ uint32_t x[HASHSTATE],y[HASHSTATE];
800
+ uint32_t hlen;
801
+
802
+ printf("No more than %d trials should ever be needed \n",MAXPAIR/2);
803
+ for (hlen=0; hlen < MAXLEN; ++hlen)
804
+ {
805
+ z=0;
806
+ for (i=0; i<hlen; ++i) /*----------------------- for each input byte, */
807
+ {
808
+ for (j=0; j<8; ++j) /*------------------------ for each input bit, */
809
+ {
810
+ for (m=1; m<8; ++m) /*------------ for serveral possible initvals, */
811
+ {
812
+ for (l=0; l<HASHSTATE; ++l)
813
+ e[l]=f[l]=g[l]=h[l]=x[l]=y[l]=~((uint32_t)0);
814
+
815
+ /*---- check that every output bit is affected by that input bit */
816
+ for (k=0; k<MAXPAIR; k+=2)
817
+ {
818
+ uint32_t finished=1;
819
+ /* keys have one bit different */
820
+ for (l=0; l<hlen+1; ++l) {a[l] = b[l] = (uint8_t)0;}
821
+ /* have a and b be two keys differing in only one bit */
822
+ a[i] ^= (k<<j);
823
+ a[i] ^= (k>>(8-j));
824
+ c[0] = hashlittle(a, hlen, m);
825
+ b[i] ^= ((k+1)<<j);
826
+ b[i] ^= ((k+1)>>(8-j));
827
+ d[0] = hashlittle(b, hlen, m);
828
+ /* check every bit is 1, 0, set, and not set at least once */
829
+ for (l=0; l<HASHSTATE; ++l)
830
+ {
831
+ e[l] &= (c[l]^d[l]);
832
+ f[l] &= ~(c[l]^d[l]);
833
+ g[l] &= c[l];
834
+ h[l] &= ~c[l];
835
+ x[l] &= d[l];
836
+ y[l] &= ~d[l];
837
+ if (e[l]|f[l]|g[l]|h[l]|x[l]|y[l]) finished=0;
838
+ }
839
+ if (finished) break;
840
+ }
841
+ if (k>z) z=k;
842
+ if (k==MAXPAIR)
843
+ {
844
+ printf("Some bit didn't change: ");
845
+ printf("%.8x %.8x %.8x %.8x %.8x %.8x ",
846
+ e[0],f[0],g[0],h[0],x[0],y[0]);
847
+ printf("i %d j %d m %d len %d\n", i, j, m, hlen);
848
+ }
849
+ if (z==MAXPAIR) goto done;
850
+ }
851
+ }
852
+ }
853
+ done:
854
+ if (z < MAXPAIR)
855
+ {
856
+ printf("Mix success %2d bytes %2d initvals ",i,m);
857
+ printf("required %d trials\n", z/2);
858
+ }
859
+ }
860
+ printf("\n");
861
+ }
862
+
863
+ /* Check for reading beyond the end of the buffer and alignment problems */
864
+ void driver3()
865
+ {
866
+ uint8_t buf[MAXLEN+20], *b;
867
+ uint32_t len;
868
+ uint8_t q[] = "This is the time for all good men to come to the aid of their country...";
869
+ uint32_t h;
870
+ uint8_t qq[] = "xThis is the time for all good men to come to the aid of their country...";
871
+ uint32_t i;
872
+ uint8_t qqq[] = "xxThis is the time for all good men to come to the aid of their country...";
873
+ uint32_t j;
874
+ uint8_t qqqq[] = "xxxThis is the time for all good men to come to the aid of their country...";
875
+ uint32_t ref,x,y;
876
+ uint8_t *p;
877
+
878
+ printf("Endianness. These lines should all be the same (for values filled in):\n");
879
+ printf("%.8x %.8x %.8x\n",
880
+ hashword((const uint32_t *)q, (sizeof(q)-1)/4, 13),
881
+ hashword((const uint32_t *)q, (sizeof(q)-5)/4, 13),
882
+ hashword((const uint32_t *)q, (sizeof(q)-9)/4, 13));
883
+ p = q;
884
+ printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n",
885
+ hashlittle(p, sizeof(q)-1, 13), hashlittle(p, sizeof(q)-2, 13),
886
+ hashlittle(p, sizeof(q)-3, 13), hashlittle(p, sizeof(q)-4, 13),
887
+ hashlittle(p, sizeof(q)-5, 13), hashlittle(p, sizeof(q)-6, 13),
888
+ hashlittle(p, sizeof(q)-7, 13), hashlittle(p, sizeof(q)-8, 13),
889
+ hashlittle(p, sizeof(q)-9, 13), hashlittle(p, sizeof(q)-10, 13),
890
+ hashlittle(p, sizeof(q)-11, 13), hashlittle(p, sizeof(q)-12, 13));
891
+ p = &qq[1];
892
+ printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n",
893
+ hashlittle(p, sizeof(q)-1, 13), hashlittle(p, sizeof(q)-2, 13),
894
+ hashlittle(p, sizeof(q)-3, 13), hashlittle(p, sizeof(q)-4, 13),
895
+ hashlittle(p, sizeof(q)-5, 13), hashlittle(p, sizeof(q)-6, 13),
896
+ hashlittle(p, sizeof(q)-7, 13), hashlittle(p, sizeof(q)-8, 13),
897
+ hashlittle(p, sizeof(q)-9, 13), hashlittle(p, sizeof(q)-10, 13),
898
+ hashlittle(p, sizeof(q)-11, 13), hashlittle(p, sizeof(q)-12, 13));
899
+ p = &qqq[2];
900
+ printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n",
901
+ hashlittle(p, sizeof(q)-1, 13), hashlittle(p, sizeof(q)-2, 13),
902
+ hashlittle(p, sizeof(q)-3, 13), hashlittle(p, sizeof(q)-4, 13),
903
+ hashlittle(p, sizeof(q)-5, 13), hashlittle(p, sizeof(q)-6, 13),
904
+ hashlittle(p, sizeof(q)-7, 13), hashlittle(p, sizeof(q)-8, 13),
905
+ hashlittle(p, sizeof(q)-9, 13), hashlittle(p, sizeof(q)-10, 13),
906
+ hashlittle(p, sizeof(q)-11, 13), hashlittle(p, sizeof(q)-12, 13));
907
+ p = &qqqq[3];
908
+ printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n",
909
+ hashlittle(p, sizeof(q)-1, 13), hashlittle(p, sizeof(q)-2, 13),
910
+ hashlittle(p, sizeof(q)-3, 13), hashlittle(p, sizeof(q)-4, 13),
911
+ hashlittle(p, sizeof(q)-5, 13), hashlittle(p, sizeof(q)-6, 13),
912
+ hashlittle(p, sizeof(q)-7, 13), hashlittle(p, sizeof(q)-8, 13),
913
+ hashlittle(p, sizeof(q)-9, 13), hashlittle(p, sizeof(q)-10, 13),
914
+ hashlittle(p, sizeof(q)-11, 13), hashlittle(p, sizeof(q)-12, 13));
915
+ printf("\n");
916
+
917
+ /* check that hashlittle2 and hashlittle produce the same results */
918
+ i=47; j=0;
919
+ hashlittle2(q, sizeof(q), &i, &j);
920
+ if (hashlittle(q, sizeof(q), 47) != i)
921
+ printf("hashlittle2 and hashlittle mismatch\n");
922
+
923
+ /* check that hashword2 and hashword produce the same results */
924
+ len = 0xdeadbeef;
925
+ i=47, j=0;
926
+ hashword2(&len, 1, &i, &j);
927
+ if (hashword(&len, 1, 47) != i)
928
+ printf("hashword2 and hashword mismatch %x %x\n",
929
+ i, hashword(&len, 1, 47));
930
+
931
+ /* check hashlittle doesn't read before or after the ends of the string */
932
+ for (h=0, b=buf+1; h<8; ++h, ++b)
933
+ {
934
+ for (i=0; i<MAXLEN; ++i)
935
+ {
936
+ len = i;
937
+ for (j=0; j<i; ++j) *(b+j)=0;
938
+
939
+ /* these should all be equal */
940
+ ref = hashlittle(b, len, (uint32_t)1);
941
+ *(b+i)=(uint8_t)~0;
942
+ *(b-1)=(uint8_t)~0;
943
+ x = hashlittle(b, len, (uint32_t)1);
944
+ y = hashlittle(b, len, (uint32_t)1);
945
+ if ((ref != x) || (ref != y))
946
+ {
947
+ printf("alignment error: %.8x %.8x %.8x %d %d\n",ref,x,y,
948
+ h, i);
949
+ }
950
+ }
951
+ }
952
+ }
953
+
954
+ /* check for problems with nulls */
955
+ void driver4()
956
+ {
957
+ uint8_t buf[1];
958
+ uint32_t h,i,state[HASHSTATE];
959
+
960
+
961
+ buf[0] = ~0;
962
+ for (i=0; i<HASHSTATE; ++i) state[i] = 1;
963
+ printf("These should all be different\n");
964
+ for (i=0, h=0; i<8; ++i)
965
+ {
966
+ h = hashlittle(buf, 0, h);
967
+ printf("%2ld 0-byte strings, hash is %.8x\n", i, h);
968
+ }
969
+ }
970
+
971
+ void driver5()
972
+ {
973
+ uint32_t b,c;
974
+ b=0, c=0, hashlittle2("", 0, &c, &b);
975
+ printf("hash is %.8lx %.8lx\n", c, b); /* deadbeef deadbeef */
976
+ b=0xdeadbeef, c=0, hashlittle2("", 0, &c, &b);
977
+ printf("hash is %.8lx %.8lx\n", c, b); /* bd5b7dde deadbeef */
978
+ b=0xdeadbeef, c=0xdeadbeef, hashlittle2("", 0, &c, &b);
979
+ printf("hash is %.8lx %.8lx\n", c, b); /* 9c093ccd bd5b7dde */
980
+ b=0, c=0, hashlittle2("Four score and seven years ago", 30, &c, &b);
981
+ printf("hash is %.8lx %.8lx\n", c, b); /* 17770551 ce7226e6 */
982
+ b=1, c=0, hashlittle2("Four score and seven years ago", 30, &c, &b);
983
+ printf("hash is %.8lx %.8lx\n", c, b); /* e3607cae bd371de4 */
984
+ b=0, c=1, hashlittle2("Four score and seven years ago", 30, &c, &b);
985
+ printf("hash is %.8lx %.8lx\n", c, b); /* cd628161 6cbea4b3 */
986
+ c = hashlittle("Four score and seven years ago", 30, 0);
987
+ printf("hash is %.8lx\n", c); /* 17770551 */
988
+ c = hashlittle("Four score and seven years ago", 30, 1);
989
+ printf("hash is %.8lx\n", c); /* cd628161 */
990
+ }
991
+
992
+
993
+ int main()
994
+ {
995
+ driver1(); /* test that the key is hashed: used for timings */
996
+ driver2(); /* test that whole key is hashed thoroughly */
997
+ driver3(); /* test that nothing but the key is hashed */
998
+ driver4(); /* test hashing multiple buffers (all buffers are null) */
999
+ driver5(); /* test the hash against known vectors */
1000
+ return 1;
1001
+ }
1002
+
1003
+ #endif /* SELF_TEST */