pub const __llvm__: ::libc::c_uchar = 1;
pub const __clang__: ::libc::c_uchar = 1;
pub const __clang_major__: ::libc::c_uchar = 3;
pub const __clang_minor__: ::libc::c_uchar = 8;
pub const __clang_patchlevel__: ::libc::c_uchar = 0;
pub const __GNUC_MINOR__: ::libc::c_uchar = 2;
pub const __GNUC_PATCHLEVEL__: ::libc::c_uchar = 1;
pub const __GNUC__: ::libc::c_uchar = 4;
pub const __GXX_ABI_VERSION: ::libc::c_ushort = 1002;
pub const __ATOMIC_RELAXED: ::libc::c_uchar = 0;
pub const __ATOMIC_CONSUME: ::libc::c_uchar = 1;
pub const __ATOMIC_ACQUIRE: ::libc::c_uchar = 2;
pub const __ATOMIC_RELEASE: ::libc::c_uchar = 3;
pub const __ATOMIC_ACQ_REL: ::libc::c_uchar = 4;
pub const __ATOMIC_SEQ_CST: ::libc::c_uchar = 5;
pub const __PRAGMA_REDEFINE_EXTNAME: ::libc::c_uchar = 1;
pub const __CONSTANT_CFSTRINGS__: ::libc::c_uchar = 1;
pub const __GXX_RTTI: ::libc::c_uchar = 1;
pub const __ORDER_LITTLE_ENDIAN__: ::libc::c_ushort = 1234;
pub const __ORDER_BIG_ENDIAN__: ::libc::c_ushort = 4321;
pub const __ORDER_PDP_ENDIAN__: ::libc::c_ushort = 3412;
pub const __BYTE_ORDER__: ::libc::c_ushort = 1234;
pub const __LITTLE_ENDIAN__: ::libc::c_uchar = 1;
pub const _LP64: ::libc::c_uchar = 1;
pub const __LP64__: ::libc::c_uchar = 1;
pub const __CHAR_BIT__: ::libc::c_uchar = 8;
pub const __SCHAR_MAX__: ::libc::c_uchar = 127;
pub const __SHRT_MAX__: ::libc::c_ushort = 32767;
pub const __INT_MAX__: ::libc::c_uint = 2147483647;
pub const __LONG_MAX__: ::libc::c_ulonglong = 9223372036854775807;
pub const __LONG_LONG_MAX__: ::libc::c_ulonglong = 9223372036854775807;
pub const __WCHAR_MAX__: ::libc::c_uint = 2147483647;
pub const __INTMAX_MAX__: ::libc::c_ulonglong = 9223372036854775807;
pub const __SIZE_MAX__: ::libc::c_char = -1;
pub const __UINTMAX_MAX__: ::libc::c_char = -1;
pub const __PTRDIFF_MAX__: ::libc::c_ulonglong = 9223372036854775807;
pub const __INTPTR_MAX__: ::libc::c_ulonglong = 9223372036854775807;
pub const __UINTPTR_MAX__: ::libc::c_char = -1;
pub const __SIZEOF_DOUBLE__: ::libc::c_uchar = 8;
pub const __SIZEOF_FLOAT__: ::libc::c_uchar = 4;
pub const __SIZEOF_INT__: ::libc::c_uchar = 4;
pub const __SIZEOF_LONG__: ::libc::c_uchar = 8;
pub const __SIZEOF_LONG_DOUBLE__: ::libc::c_uchar = 16;
pub const __SIZEOF_LONG_LONG__: ::libc::c_uchar = 8;
pub const __SIZEOF_POINTER__: ::libc::c_uchar = 8;
pub const __SIZEOF_SHORT__: ::libc::c_uchar = 2;
pub const __SIZEOF_PTRDIFF_T__: ::libc::c_uchar = 8;
pub const __SIZEOF_SIZE_T__: ::libc::c_uchar = 8;
pub const __SIZEOF_WCHAR_T__: ::libc::c_uchar = 4;
pub const __SIZEOF_WINT_T__: ::libc::c_uchar = 4;
pub const __SIZEOF_INT128__: ::libc::c_uchar = 16;
pub const __INTMAX_WIDTH__: ::libc::c_uchar = 64;
pub const __PTRDIFF_WIDTH__: ::libc::c_uchar = 64;
pub const __INTPTR_WIDTH__: ::libc::c_uchar = 64;
pub const __SIZE_WIDTH__: ::libc::c_uchar = 64;
pub const __WCHAR_WIDTH__: ::libc::c_uchar = 32;
pub const __WINT_WIDTH__: ::libc::c_uchar = 32;
pub const __SIG_ATOMIC_WIDTH__: ::libc::c_uchar = 32;
pub const __SIG_ATOMIC_MAX__: ::libc::c_uint = 2147483647;
pub const __UINTMAX_WIDTH__: ::libc::c_uchar = 64;
pub const __UINTPTR_WIDTH__: ::libc::c_uchar = 64;
pub const __FLT_HAS_DENORM__: ::libc::c_uchar = 1;
pub const __FLT_DIG__: ::libc::c_uchar = 6;
pub const __FLT_DECIMAL_DIG__: ::libc::c_uchar = 9;
pub const __FLT_HAS_INFINITY__: ::libc::c_uchar = 1;
pub const __FLT_HAS_QUIET_NAN__: ::libc::c_uchar = 1;
pub const __FLT_MANT_DIG__: ::libc::c_uchar = 24;
pub const __FLT_MAX_10_EXP__: ::libc::c_uchar = 38;
pub const __FLT_MAX_EXP__: ::libc::c_uchar = 128;
pub const __FLT_MIN_10_EXP__: ::libc::c_char = -37;
pub const __FLT_MIN_EXP__: ::libc::c_char = -125;
pub const __DBL_HAS_DENORM__: ::libc::c_uchar = 1;
pub const __DBL_DIG__: ::libc::c_uchar = 15;
pub const __DBL_DECIMAL_DIG__: ::libc::c_uchar = 17;
pub const __DBL_HAS_INFINITY__: ::libc::c_uchar = 1;
pub const __DBL_HAS_QUIET_NAN__: ::libc::c_uchar = 1;
pub const __DBL_MANT_DIG__: ::libc::c_uchar = 53;
pub const __DBL_MAX_10_EXP__: ::libc::c_ushort = 308;
pub const __DBL_MAX_EXP__: ::libc::c_ushort = 1024;
pub const __DBL_MIN_10_EXP__: ::libc::c_short = -307;
pub const __DBL_MIN_EXP__: ::libc::c_short = -1021;
pub const __LDBL_HAS_DENORM__: ::libc::c_uchar = 1;
pub const __LDBL_DIG__: ::libc::c_uchar = 18;
pub const __LDBL_DECIMAL_DIG__: ::libc::c_uchar = 21;
pub const __LDBL_HAS_INFINITY__: ::libc::c_uchar = 1;
pub const __LDBL_HAS_QUIET_NAN__: ::libc::c_uchar = 1;
pub const __LDBL_MANT_DIG__: ::libc::c_uchar = 64;
pub const __LDBL_MAX_10_EXP__: ::libc::c_ushort = 4932;
pub const __LDBL_MAX_EXP__: ::libc::c_ushort = 16384;
pub const __LDBL_MIN_10_EXP__: ::libc::c_short = -4931;
pub const __LDBL_MIN_EXP__: ::libc::c_short = -16381;
pub const __POINTER_WIDTH__: ::libc::c_uchar = 64;
pub const __BIGGEST_ALIGNMENT__: ::libc::c_uchar = 16;
pub const __WINT_UNSIGNED__: ::libc::c_uchar = 1;
pub const __UINT8_MAX__: ::libc::c_uchar = 255;
pub const __INT8_MAX__: ::libc::c_uchar = 127;
pub const __UINT16_MAX__: ::libc::c_ushort = 65535;
pub const __INT16_MAX__: ::libc::c_ushort = 32767;
pub const __UINT32_MAX__: ::libc::c_uint = 4294967295;
pub const __INT32_MAX__: ::libc::c_uint = 2147483647;
pub const __UINT64_MAX__: ::libc::c_char = -1;
pub const __INT64_MAX__: ::libc::c_ulonglong = 9223372036854775807;
pub const __INT_LEAST8_MAX__: ::libc::c_uchar = 127;
pub const __UINT_LEAST8_MAX__: ::libc::c_uchar = 255;
pub const __INT_LEAST16_MAX__: ::libc::c_ushort = 32767;
pub const __UINT_LEAST16_MAX__: ::libc::c_ushort = 65535;
pub const __INT_LEAST32_MAX__: ::libc::c_uint = 2147483647;
pub const __UINT_LEAST32_MAX__: ::libc::c_uint = 4294967295;
pub const __INT_LEAST64_MAX__: ::libc::c_ulonglong = 9223372036854775807;
pub const __UINT_LEAST64_MAX__: ::libc::c_char = -1;
pub const __INT_FAST8_MAX__: ::libc::c_uchar = 127;
pub const __UINT_FAST8_MAX__: ::libc::c_uchar = 255;
pub const __INT_FAST16_MAX__: ::libc::c_ushort = 32767;
pub const __UINT_FAST16_MAX__: ::libc::c_ushort = 65535;
pub const __INT_FAST32_MAX__: ::libc::c_uint = 2147483647;
pub const __UINT_FAST32_MAX__: ::libc::c_uint = 4294967295;
pub const __INT_FAST64_MAX__: ::libc::c_ulonglong = 9223372036854775807;
pub const __UINT_FAST64_MAX__: ::libc::c_char = -1;
pub const __FINITE_MATH_ONLY__: ::libc::c_uchar = 0;
pub const __GNUC_STDC_INLINE__: ::libc::c_uchar = 1;
pub const __GCC_ATOMIC_TEST_AND_SET_TRUEVAL: ::libc::c_uchar = 1;
pub const __GCC_ATOMIC_BOOL_LOCK_FREE: ::libc::c_uchar = 2;
pub const __GCC_ATOMIC_CHAR_LOCK_FREE: ::libc::c_uchar = 2;
pub const __GCC_ATOMIC_CHAR16_T_LOCK_FREE: ::libc::c_uchar = 2;
pub const __GCC_ATOMIC_CHAR32_T_LOCK_FREE: ::libc::c_uchar = 2;
pub const __GCC_ATOMIC_WCHAR_T_LOCK_FREE: ::libc::c_uchar = 2;
pub const __GCC_ATOMIC_SHORT_LOCK_FREE: ::libc::c_uchar = 2;
pub const __GCC_ATOMIC_INT_LOCK_FREE: ::libc::c_uchar = 2;
pub const __GCC_ATOMIC_LONG_LOCK_FREE: ::libc::c_uchar = 2;
pub const __GCC_ATOMIC_LLONG_LOCK_FREE: ::libc::c_uchar = 2;
pub const __GCC_ATOMIC_POINTER_LOCK_FREE: ::libc::c_uchar = 2;
pub const __NO_INLINE__: ::libc::c_uchar = 1;
pub const __FLT_EVAL_METHOD__: ::libc::c_uchar = 0;
pub const __FLT_RADIX__: ::libc::c_uchar = 2;
pub const __DECIMAL_DIG__: ::libc::c_uchar = 21;
pub const __amd64__: ::libc::c_uchar = 1;
pub const __amd64: ::libc::c_uchar = 1;
pub const __x86_64: ::libc::c_uchar = 1;
pub const __x86_64__: ::libc::c_uchar = 1;
pub const __k8: ::libc::c_uchar = 1;
pub const __k8__: ::libc::c_uchar = 1;
pub const __tune_k8__: ::libc::c_uchar = 1;
pub const __NO_MATH_INLINES: ::libc::c_uchar = 1;
pub const __FXSR__: ::libc::c_uchar = 1;
pub const __SSE2__: ::libc::c_uchar = 1;
pub const __SSE2_MATH__: ::libc::c_uchar = 1;
pub const __SSE__: ::libc::c_uchar = 1;
pub const __SSE_MATH__: ::libc::c_uchar = 1;
pub const __MMX__: ::libc::c_uchar = 1;
pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1: ::libc::c_uchar = 1;
pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2: ::libc::c_uchar = 1;
pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4: ::libc::c_uchar = 1;
pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8: ::libc::c_uchar = 1;
pub const unix: ::libc::c_uchar = 1;
pub const __unix: ::libc::c_uchar = 1;
pub const __unix__: ::libc::c_uchar = 1;
pub const linux: ::libc::c_uchar = 1;
pub const __linux: ::libc::c_uchar = 1;
pub const __linux__: ::libc::c_uchar = 1;
pub const __gnu_linux__: ::libc::c_uchar = 1;
pub const __ELF__: ::libc::c_uchar = 1;
pub const __STDC__: ::libc::c_uchar = 1;
pub const __STDC_HOSTED__: ::libc::c_uchar = 1;
pub const __STDC_VERSION__: ::libc::c_uint = 201112;
pub const __STDC_UTF_16__: ::libc::c_uchar = 1;
pub const __STDC_UTF_32__: ::libc::c_uchar = 1;
pub const MAXLEN: ::libc::c_ushort = 1024;
pub const AI_FALSE: ::libc::c_uchar = 0;
pub const AI_TRUE: ::libc::c_uchar = 1;
pub const AI_MAX_FACE_INDICES: ::libc::c_ushort = 32767;
pub const AI_MAX_BONE_WEIGHTS: ::libc::c_uint = 2147483647;
pub const AI_MAX_VERTICES: ::libc::c_uint = 2147483647;
pub const AI_MAX_FACES: ::libc::c_uint = 2147483647;
pub const AI_MAX_NUMBER_OF_COLOR_SETS: ::libc::c_uchar = 8;
pub const AI_MAX_NUMBER_OF_TEXTURECOORDS: ::libc::c_uchar = 8;
pub const AI_SCENE_FLAGS_INCOMPLETE: ::libc::c_uchar = 1;
pub const AI_SCENE_FLAGS_VALIDATED: ::libc::c_uchar = 2;
pub const AI_SCENE_FLAGS_VALIDATION_WARNING: ::libc::c_uchar = 4;
pub const AI_SCENE_FLAGS_NON_VERBOSE_FORMAT: ::libc::c_uchar = 8;
pub const AI_SCENE_FLAGS_TERRAIN: ::libc::c_uchar = 16;
pub type size_t = usize;
pub type ptrdiff_t = isize;
pub type wchar_t = ::libc::c_int;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct max_align_t {
    pub __clang_max_align_nonce1: ::libc::c_longlong,
    pub __clang_max_align_nonce2: f64,
}
impl ::std::default::Default for max_align_t {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C, packed)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiVector3D {
    pub x: f32,
    pub y: f32,
    pub z: f32,
}
impl ::std::default::Default for aiVector3D {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiVector2D {
    pub x: f32,
    pub y: f32,
}
impl ::std::default::Default for aiVector2D {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C, packed)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiColor4D {
    pub r: f32,
    pub g: f32,
    pub b: f32,
    pub a: f32,
}
impl ::std::default::Default for aiColor4D {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C, packed)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiMatrix3x3 {
    pub a1: f32,
    pub a2: f32,
    pub a3: f32,
    pub b1: f32,
    pub b2: f32,
    pub b3: f32,
    pub c1: f32,
    pub c2: f32,
    pub c3: f32,
}
impl ::std::default::Default for aiMatrix3x3 {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiMatrix4x4 {
    pub a1: f32,
    pub a2: f32,
    pub a3: f32,
    pub a4: f32,
    pub b1: f32,
    pub b2: f32,
    pub b3: f32,
    pub b4: f32,
    pub c1: f32,
    pub c2: f32,
    pub c3: f32,
    pub c4: f32,
    pub d1: f32,
    pub d2: f32,
    pub d3: f32,
    pub d4: f32,
}
impl ::std::default::Default for aiMatrix4x4 {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiQuaternion {
    pub w: f32,
    pub x: f32,
    pub y: f32,
    pub z: f32,
}
impl ::std::default::Default for aiQuaternion {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C, packed)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiPlane {
    pub a: f32,
    pub b: f32,
    pub c: f32,
    pub d: f32,
}
impl ::std::default::Default for aiPlane {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C, packed)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiRay {
    pub pos: aiVector3D,
    pub dir: aiVector3D,
}
impl ::std::default::Default for aiRay {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C, packed)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiColor3D {
    pub r: f32,
    pub g: f32,
    pub b: f32,
}
impl ::std::default::Default for aiColor3D {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy)]
pub struct aiString {
    pub length: size_t,
    pub data: [::libc::c_char; 1024usize],
}
impl ::std::clone::Clone for aiString {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiString {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiReturn = i32;
pub const aiReturn_SUCCESS: aiReturn = 0;
pub const aiReturn_FAILURE: aiReturn = -1;
pub const aiReturn_OUTOFMEMORY: aiReturn = -3;
pub const _AI_ENFORCE_ENUM_SIZE: aiReturn = 2147483647;
pub type aiOrigin = u32;
pub const aiOrigin_SET: aiOrigin = 0;
pub const aiOrigin_CUR: aiOrigin = 1;
pub const aiOrigin_END: aiOrigin = 2;
pub const _AI_ORIGIN_ENFORCE_ENUM_SIZE: aiOrigin = 2147483647;
pub type aiDefaultLogStream = u32;
pub const aiDefaultLogStream_FILE: aiDefaultLogStream = 1;
pub const aiDefaultLogStream_STDOUT: aiDefaultLogStream = 2;
pub const aiDefaultLogStream_STDERR: aiDefaultLogStream = 4;
pub const aiDefaultLogStream_DEBUGGER: aiDefaultLogStream = 8;
pub const _AI_DLS_ENFORCE_ENUM_SIZE: aiDefaultLogStream = 2147483647;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiMemoryInfo {
    pub textures: ::libc::c_uint,
    pub materials: ::libc::c_uint,
    pub meshes: ::libc::c_uint,
    pub nodes: ::libc::c_uint,
    pub animations: ::libc::c_uint,
    pub cameras: ::libc::c_uint,
    pub lights: ::libc::c_uint,
    pub total: ::libc::c_uint,
}
impl ::std::default::Default for aiMemoryInfo {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiImporterFlags = u32;
pub const aiImporterFlags_SupportTextFlavour: aiImporterFlags = 1;
pub const aiImporterFlags_SupportBinaryFlavour: aiImporterFlags = 2;
pub const aiImporterFlags_SupportCompressedFlavour: aiImporterFlags = 4;
pub const aiImporterFlags_LimitedSupport: aiImporterFlags = 8;
pub const aiImporterFlags_Experimental: aiImporterFlags = 16;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiImporterDesc {
    pub mName: *const ::libc::c_char,
    pub mAuthor: *const ::libc::c_char,
    pub mMaintainer: *const ::libc::c_char,
    pub mComments: *const ::libc::c_char,
    pub mFlags: ::libc::c_uint,
    pub mMinMajor: ::libc::c_uint,
    pub mMinMinor: ::libc::c_uint,
    pub mMaxMajor: ::libc::c_uint,
    pub mMaxMinor: ::libc::c_uint,
    pub mFileExtensions: *const ::libc::c_char,
}
impl ::std::default::Default for aiImporterDesc {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub enum aiFileIO { }
pub type aiLogStreamCallback =
    ::std::option::Option<unsafe extern "C" fn(arg1: *const ::libc::c_char,
                                               arg2: *mut ::libc::c_char)>;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiLogStream {
    pub callback: aiLogStreamCallback,
    pub user: *mut ::libc::c_char,
}
impl ::std::default::Default for aiLogStream {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiPropertyStore {
    pub sentinel: ::libc::c_char,
}
impl ::std::default::Default for aiPropertyStore {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiBool = ::libc::c_int;
#[repr(C, packed)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiTexel {
    pub b: ::libc::c_uchar,
    pub g: ::libc::c_uchar,
    pub r: ::libc::c_uchar,
    pub a: ::libc::c_uchar,
}
impl ::std::default::Default for aiTexel {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiTexture {
    pub mWidth: ::libc::c_uint,
    pub mHeight: ::libc::c_uint,
    pub achFormatHint: [::libc::c_char; 4usize],
    pub pcData: *mut aiTexel,
}
impl ::std::default::Default for aiTexture {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiFace {
    pub mNumIndices: ::libc::c_uint,
    pub mIndices: *mut ::libc::c_uint,
}
impl ::std::default::Default for aiFace {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiVertexWeight {
    pub mVertexId: ::libc::c_uint,
    pub mWeight: f32,
}
impl ::std::default::Default for aiVertexWeight {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy)]
pub struct aiBone {
    pub mName: aiString,
    pub mNumWeights: ::libc::c_uint,
    pub mWeights: *mut aiVertexWeight,
    pub mOffsetMatrix: aiMatrix4x4,
}
impl ::std::clone::Clone for aiBone {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiBone {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiPrimitiveType = u32;
pub const aiPrimitiveType_POINT: aiPrimitiveType = 1;
pub const aiPrimitiveType_LINE: aiPrimitiveType = 2;
pub const aiPrimitiveType_TRIANGLE: aiPrimitiveType = 4;
pub const aiPrimitiveType_POLYGON: aiPrimitiveType = 8;
pub const _aiPrimitiveType_Force32Bit: aiPrimitiveType = 2147483647;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiAnimMesh {
    pub mVertices: *mut aiVector3D,
    pub mNormals: *mut aiVector3D,
    pub mTangents: *mut aiVector3D,
    pub mBitangents: *mut aiVector3D,
    pub mColors: [*mut aiColor4D; 8usize],
    pub mTextureCoords: [*mut aiVector3D; 8usize],
    pub mNumVertices: ::libc::c_uint,
}
impl ::std::default::Default for aiAnimMesh {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy)]
pub struct aiMesh {
    pub mPrimitiveTypes: ::libc::c_uint,
    pub mNumVertices: ::libc::c_uint,
    pub mNumFaces: ::libc::c_uint,
    pub mVertices: *mut aiVector3D,
    pub mNormals: *mut aiVector3D,
    pub mTangents: *mut aiVector3D,
    pub mBitangents: *mut aiVector3D,
    pub mColors: [*mut aiColor4D; 8usize],
    pub mTextureCoords: [*mut aiVector3D; 8usize],
    pub mNumUVComponents: [::libc::c_uint; 8usize],
    pub mFaces: *mut aiFace,
    pub mNumBones: ::libc::c_uint,
    pub mBones: *mut *mut aiBone,
    pub mMaterialIndex: ::libc::c_uint,
    pub mName: aiString,
    pub mNumAnimMeshes: ::libc::c_uint,
    pub mAnimMeshes: *mut *mut aiAnimMesh,
}
impl ::std::clone::Clone for aiMesh {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiMesh {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiLightSourceType = u32;
pub const aiLightSource_UNDEFINED: aiLightSourceType = 0;
pub const aiLightSource_DIRECTIONAL: aiLightSourceType = 1;
pub const aiLightSource_POINT: aiLightSourceType = 2;
pub const aiLightSource_SPOT: aiLightSourceType = 3;
pub const aiLightSource_AMBIENT: aiLightSourceType = 4;
pub const _aiLightSource_Force32Bit: aiLightSourceType = 2147483647;
#[repr(C)]
#[derive(Copy)]
pub struct aiLight {
    pub mName: aiString,
    pub mType: aiLightSourceType,
    pub mPosition: aiVector3D,
    pub mDirection: aiVector3D,
    pub mAttenuationConstant: f32,
    pub mAttenuationLinear: f32,
    pub mAttenuationQuadratic: f32,
    pub mColorDiffuse: aiColor3D,
    pub mColorSpecular: aiColor3D,
    pub mColorAmbient: aiColor3D,
    pub mAngleInnerCone: f32,
    pub mAngleOuterCone: f32,
    _bindgen_padding_0_: [u8; 4usize],
}
impl ::std::clone::Clone for aiLight {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiLight {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy)]
pub struct aiCamera {
    pub mName: aiString,
    pub mPosition: aiVector3D,
    pub mUp: aiVector3D,
    pub mLookAt: aiVector3D,
    pub mHorizontalFOV: f32,
    pub mClipPlaneNear: f32,
    pub mClipPlaneFar: f32,
    pub mAspect: f32,
    _bindgen_padding_0_: [u8; 4usize],
}
impl ::std::clone::Clone for aiCamera {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiCamera {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiTextureOp = u32;
pub const aiTextureOp_Multiply: aiTextureOp = 0;
pub const aiTextureOp_Add: aiTextureOp = 1;
pub const aiTextureOp_Subtract: aiTextureOp = 2;
pub const aiTextureOp_Divide: aiTextureOp = 3;
pub const aiTextureOp_SmoothAdd: aiTextureOp = 4;
pub const aiTextureOp_SignedAdd: aiTextureOp = 5;
pub const _aiTextureOp_Force32Bit: aiTextureOp = 2147483647;
pub type aiTextureMapMode = u32;
pub const aiTextureMapMode_Wrap: aiTextureMapMode = 0;
pub const aiTextureMapMode_Clamp: aiTextureMapMode = 1;
pub const aiTextureMapMode_Decal: aiTextureMapMode = 3;
pub const aiTextureMapMode_Mirror: aiTextureMapMode = 2;
pub const _aiTextureMapMode_Force32Bit: aiTextureMapMode = 2147483647;
pub type aiTextureMapping = u32;
pub const aiTextureMapping_UV: aiTextureMapping = 0;
pub const aiTextureMapping_SPHERE: aiTextureMapping = 1;
pub const aiTextureMapping_CYLINDER: aiTextureMapping = 2;
pub const aiTextureMapping_BOX: aiTextureMapping = 3;
pub const aiTextureMapping_PLANE: aiTextureMapping = 4;
pub const aiTextureMapping_OTHER: aiTextureMapping = 5;
pub const _aiTextureMapping_Force32Bit: aiTextureMapping = 2147483647;
pub type aiTextureType = u32;
pub const aiTextureType_NONE: aiTextureType = 0;
pub const aiTextureType_DIFFUSE: aiTextureType = 1;
pub const aiTextureType_SPECULAR: aiTextureType = 2;
pub const aiTextureType_AMBIENT: aiTextureType = 3;
pub const aiTextureType_EMISSIVE: aiTextureType = 4;
pub const aiTextureType_HEIGHT: aiTextureType = 5;
pub const aiTextureType_NORMALS: aiTextureType = 6;
pub const aiTextureType_SHININESS: aiTextureType = 7;
pub const aiTextureType_OPACITY: aiTextureType = 8;
pub const aiTextureType_DISPLACEMENT: aiTextureType = 9;
pub const aiTextureType_LIGHTMAP: aiTextureType = 10;
pub const aiTextureType_REFLECTION: aiTextureType = 11;
pub const aiTextureType_UNKNOWN: aiTextureType = 12;
pub const _aiTextureType_Force32Bit: aiTextureType = 2147483647;
pub type aiShadingMode = u32;
pub const aiShadingMode_Flat: aiShadingMode = 1;
pub const aiShadingMode_Gouraud: aiShadingMode = 2;
pub const aiShadingMode_Phong: aiShadingMode = 3;
pub const aiShadingMode_Blinn: aiShadingMode = 4;
pub const aiShadingMode_Toon: aiShadingMode = 5;
pub const aiShadingMode_OrenNayar: aiShadingMode = 6;
pub const aiShadingMode_Minnaert: aiShadingMode = 7;
pub const aiShadingMode_CookTorrance: aiShadingMode = 8;
pub const aiShadingMode_NoShading: aiShadingMode = 9;
pub const aiShadingMode_Fresnel: aiShadingMode = 10;
pub const _aiShadingMode_Force32Bit: aiShadingMode = 2147483647;
pub type aiTextureFlags = u32;
pub const aiTextureFlags_Invert: aiTextureFlags = 1;
pub const aiTextureFlags_UseAlpha: aiTextureFlags = 2;
pub const aiTextureFlags_IgnoreAlpha: aiTextureFlags = 4;
pub const _aiTextureFlags_Force32Bit: aiTextureFlags = 2147483647;
pub type aiBlendMode = u32;
pub const aiBlendMode_Default: aiBlendMode = 0;
pub const aiBlendMode_Additive: aiBlendMode = 1;
pub const _aiBlendMode_Force32Bit: aiBlendMode = 2147483647;
#[repr(C, packed)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiUVTransform {
    pub mTranslation: aiVector2D,
    pub mScaling: aiVector2D,
    pub mRotation: f32,
}
impl ::std::default::Default for aiUVTransform {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiPropertyTypeInfo = u32;
pub const aiPTI_Float: aiPropertyTypeInfo = 1;
pub const aiPTI_String: aiPropertyTypeInfo = 3;
pub const aiPTI_Integer: aiPropertyTypeInfo = 4;
pub const aiPTI_Buffer: aiPropertyTypeInfo = 5;
pub const _aiPTI_Force32Bit: aiPropertyTypeInfo = 2147483647;
#[repr(C)]
#[derive(Copy)]
pub struct aiMaterialProperty {
    pub mKey: aiString,
    pub mSemantic: ::libc::c_uint,
    pub mIndex: ::libc::c_uint,
    pub mDataLength: ::libc::c_uint,
    pub mType: aiPropertyTypeInfo,
    pub mData: *mut ::libc::c_char,
}
impl ::std::clone::Clone for aiMaterialProperty {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiMaterialProperty {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiMaterial {
    pub mProperties: *mut *mut aiMaterialProperty,
    pub mNumProperties: ::libc::c_uint,
    pub mNumAllocated: ::libc::c_uint,
}
impl ::std::default::Default for aiMaterial {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiVectorKey {
    pub mTime: f64,
    pub mValue: aiVector3D,
    _bindgen_padding_0_: [u8; 4usize],
}
impl ::std::default::Default for aiVectorKey {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiQuatKey {
    pub mTime: f64,
    pub mValue: aiQuaternion,
}
impl ::std::default::Default for aiQuatKey {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiMeshKey {
    pub mTime: f64,
    pub mValue: ::libc::c_uint,
    _bindgen_padding_0_: [u8; 4usize],
}
impl ::std::default::Default for aiMeshKey {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiAnimBehaviour = u32;
pub const aiAnimBehaviour_DEFAULT: aiAnimBehaviour = 0;
pub const aiAnimBehaviour_CONSTANT: aiAnimBehaviour = 1;
pub const aiAnimBehaviour_LINEAR: aiAnimBehaviour = 2;
pub const aiAnimBehaviour_REPEAT: aiAnimBehaviour = 3;
pub const _aiAnimBehaviour_Force32Bit: aiAnimBehaviour = 2147483647;
#[repr(C)]
#[derive(Copy)]
pub struct aiNodeAnim {
    pub mNodeName: aiString,
    pub mNumPositionKeys: ::libc::c_uint,
    pub mPositionKeys: *mut aiVectorKey,
    pub mNumRotationKeys: ::libc::c_uint,
    pub mRotationKeys: *mut aiQuatKey,
    pub mNumScalingKeys: ::libc::c_uint,
    pub mScalingKeys: *mut aiVectorKey,
    pub mPreState: aiAnimBehaviour,
    pub mPostState: aiAnimBehaviour,
}
impl ::std::clone::Clone for aiNodeAnim {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiNodeAnim {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy)]
pub struct aiMeshAnim {
    pub mName: aiString,
    pub mNumKeys: ::libc::c_uint,
    pub mKeys: *mut aiMeshKey,
}
impl ::std::clone::Clone for aiMeshAnim {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiMeshAnim {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy)]
pub struct aiAnimation {
    pub mName: aiString,
    pub mDuration: f64,
    pub mTicksPerSecond: f64,
    pub mNumChannels: ::libc::c_uint,
    pub mChannels: *mut *mut aiNodeAnim,
    pub mNumMeshChannels: ::libc::c_uint,
    pub mMeshChannels: *mut *mut aiMeshAnim,
}
impl ::std::clone::Clone for aiAnimation {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiAnimation {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiMetadataType = u32;
pub const AI_BOOL: aiMetadataType = 0;
pub const AI_INT: aiMetadataType = 1;
pub const AI_UINT64: aiMetadataType = 2;
pub const AI_FLOAT: aiMetadataType = 3;
pub const AI_AISTRING: aiMetadataType = 4;
pub const AI_AIVECTOR3D: aiMetadataType = 5;
pub const FORCE_32BIT: aiMetadataType = 2147483647;
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiMetadataEntry {
    pub mType: aiMetadataType,
    pub mData: *mut ::libc::c_void,
}
impl ::std::default::Default for aiMetadataEntry {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiMetadata {
    pub mNumProperties: ::libc::c_uint,
    pub mKeys: *mut aiString,
    pub mValues: *mut aiMetadataEntry,
}
impl ::std::default::Default for aiMetadata {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy)]
pub struct aiNode {
    pub mName: aiString,
    pub mTransformation: aiMatrix4x4,
    pub mParent: *mut aiNode,
    pub mNumChildren: ::libc::c_uint,
    pub mChildren: *mut *mut aiNode,
    pub mNumMeshes: ::libc::c_uint,
    pub mMeshes: *mut ::libc::c_uint,
    pub mMetaData: *mut aiMetadata,
}
impl ::std::clone::Clone for aiNode {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for aiNode {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
#[derive(Debug)]
pub struct aiScene {
    pub mFlags: ::libc::c_uint,
    pub mRootNode: *mut aiNode,
    pub mNumMeshes: ::libc::c_uint,
    pub mMeshes: *mut *mut aiMesh,
    pub mNumMaterials: ::libc::c_uint,
    pub mMaterials: *mut *mut aiMaterial,
    pub mNumAnimations: ::libc::c_uint,
    pub mAnimations: *mut *mut aiAnimation,
    pub mNumTextures: ::libc::c_uint,
    pub mTextures: *mut *mut aiTexture,
    pub mNumLights: ::libc::c_uint,
    pub mLights: *mut *mut aiLight,
    pub mNumCameras: ::libc::c_uint,
    pub mCameras: *mut *mut aiCamera,
    pub mPrivate: *mut ::libc::c_char,
}
impl ::std::default::Default for aiScene {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type aiPostProcessSteps = u32;
pub const aiProcess_CalcTangentSpace: aiPostProcessSteps = 1;
pub const aiProcess_JoinIdenticalVertices: aiPostProcessSteps = 2;
pub const aiProcess_MakeLeftHanded: aiPostProcessSteps = 4;
pub const aiProcess_Triangulate: aiPostProcessSteps = 8;
pub const aiProcess_RemoveComponent: aiPostProcessSteps = 16;
pub const aiProcess_GenNormals: aiPostProcessSteps = 32;
pub const aiProcess_GenSmoothNormals: aiPostProcessSteps = 64;
pub const aiProcess_SplitLargeMeshes: aiPostProcessSteps = 128;
pub const aiProcess_PreTransformVertices: aiPostProcessSteps = 256;
pub const aiProcess_LimitBoneWeights: aiPostProcessSteps = 512;
pub const aiProcess_ValidateDataStructure: aiPostProcessSteps = 1024;
pub const aiProcess_ImproveCacheLocality: aiPostProcessSteps = 2048;
pub const aiProcess_RemoveRedundantMaterials: aiPostProcessSteps = 4096;
pub const aiProcess_FixInfacingNormals: aiPostProcessSteps = 8192;
pub const aiProcess_SortByPType: aiPostProcessSteps = 32768;
pub const aiProcess_FindDegenerates: aiPostProcessSteps = 65536;
pub const aiProcess_FindInvalidData: aiPostProcessSteps = 131072;
pub const aiProcess_GenUVCoords: aiPostProcessSteps = 262144;
pub const aiProcess_TransformUVCoords: aiPostProcessSteps = 524288;
pub const aiProcess_FindInstances: aiPostProcessSteps = 1048576;
pub const aiProcess_OptimizeMeshes: aiPostProcessSteps = 2097152;
pub const aiProcess_OptimizeGraph: aiPostProcessSteps = 4194304;
pub const aiProcess_FlipUVs: aiPostProcessSteps = 8388608;
pub const aiProcess_FlipWindingOrder: aiPostProcessSteps = 16777216;
pub const aiProcess_SplitByBoneCount: aiPostProcessSteps = 33554432;
pub const aiProcess_Debone: aiPostProcessSteps = 67108864;
#[link(name = "assimp", kind = "dylib")]
extern "C" {
    pub fn aiGetImporterDesc(extension: *const ::libc::c_char)
     -> *const aiImporterDesc;
    pub fn aiImportFile(pFile: *const ::libc::c_char, pFlags: ::libc::c_uint)
     -> *const aiScene;
    pub fn aiImportFileEx(pFile: *const ::libc::c_char,
                          pFlags: ::libc::c_uint, pFS: *mut aiFileIO)
     -> *const aiScene;
    pub fn aiImportFileExWithProperties(pFile: *const ::libc::c_char,
                                        pFlags: ::libc::c_uint,
                                        pFS: *mut aiFileIO,
                                        pProps: *const aiPropertyStore)
     -> *const aiScene;
    pub fn aiImportFileFromMemory(pBuffer: *const ::libc::c_char,
                                  pLength: ::libc::c_uint,
                                  pFlags: ::libc::c_uint,
                                  pHint: *const ::libc::c_char)
     -> *const aiScene;
    pub fn aiImportFileFromMemoryWithProperties(pBuffer:
                                                    *const ::libc::c_char,
                                                pLength: ::libc::c_uint,
                                                pFlags: ::libc::c_uint,
                                                pHint: *const ::libc::c_char,
                                                pProps:
                                                    *const aiPropertyStore)
     -> *const aiScene;
    pub fn aiApplyPostProcessing(pScene: *const aiScene,
                                 pFlags: ::libc::c_uint) -> *const aiScene;
    pub fn aiGetPredefinedLogStream(pStreams: aiDefaultLogStream,
                                    file: *const ::libc::c_char)
     -> aiLogStream;
    pub fn aiAttachLogStream(stream: *const aiLogStream);
    pub fn aiEnableVerboseLogging(d: aiBool);
    pub fn aiDetachLogStream(stream: *const aiLogStream) -> aiReturn;
    pub fn aiDetachAllLogStreams();
    pub fn aiReleaseImport(pScene: *const aiScene);
    pub fn aiGetErrorString() -> *const ::libc::c_char;
    pub fn aiIsExtensionSupported(szExtension: *const ::libc::c_char)
     -> aiBool;
    pub fn aiGetExtensionList(szOut: *mut aiString);
    pub fn aiGetMemoryRequirements(pIn: *const aiScene,
                                   in_: *mut aiMemoryInfo);
    pub fn aiCreatePropertyStore() -> *mut aiPropertyStore;
    pub fn aiReleasePropertyStore(p: *mut aiPropertyStore);
    pub fn aiSetImportPropertyInteger(store: *mut aiPropertyStore,
                                      szName: *const ::libc::c_char,
                                      value: ::libc::c_int);
    pub fn aiSetImportPropertyFloat(store: *mut aiPropertyStore,
                                    szName: *const ::libc::c_char,
                                    value: f32);
    pub fn aiSetImportPropertyString(store: *mut aiPropertyStore,
                                     szName: *const ::libc::c_char,
                                     st: *const aiString);
    pub fn aiSetImportPropertyMatrix(store: *mut aiPropertyStore,
                                     szName: *const ::libc::c_char,
                                     mat: *const aiMatrix4x4);
    pub fn aiCreateQuaternionFromMatrix(quat: *mut aiQuaternion,
                                        mat: *const aiMatrix3x3);
    pub fn aiDecomposeMatrix(mat: *const aiMatrix4x4,
                             scaling: *mut aiVector3D,
                             rotation: *mut aiQuaternion,
                             position: *mut aiVector3D);
    pub fn aiTransposeMatrix4(mat: *mut aiMatrix4x4);
    pub fn aiTransposeMatrix3(mat: *mut aiMatrix3x3);
    pub fn aiTransformVecByMatrix3(vec: *mut aiVector3D,
                                   mat: *const aiMatrix3x3);
    pub fn aiTransformVecByMatrix4(vec: *mut aiVector3D,
                                   mat: *const aiMatrix4x4);
    pub fn aiMultiplyMatrix4(dst: *mut aiMatrix4x4, src: *const aiMatrix4x4);
    pub fn aiMultiplyMatrix3(dst: *mut aiMatrix3x3, src: *const aiMatrix3x3);
    pub fn aiIdentityMatrix3(mat: *mut aiMatrix3x3);
    pub fn aiIdentityMatrix4(mat: *mut aiMatrix4x4);
    pub fn aiGetImportFormatCount() -> size_t;
    pub fn aiGetImportFormatDescription(pIndex: size_t)
     -> *const aiImporterDesc;
    pub fn aiGetMaterialProperty(pMat: *const aiMaterial,
                                 pKey: *const ::libc::c_char,
                                 type_: ::libc::c_uint, index: ::libc::c_uint,
                                 pPropOut: *mut *const aiMaterialProperty)
     -> aiReturn;
    pub fn aiGetMaterialFloatArray(pMat: *const aiMaterial,
                                   pKey: *const ::libc::c_char,
                                   type_: ::libc::c_uint,
                                   index: ::libc::c_uint, pOut: *mut f32,
                                   pMax: *mut ::libc::c_uint) -> aiReturn;
    pub fn aiGetMaterialIntegerArray(pMat: *const aiMaterial,
                                     pKey: *const ::libc::c_char,
                                     type_: ::libc::c_uint,
                                     index: ::libc::c_uint,
                                     pOut: *mut ::libc::c_int,
                                     pMax: *mut ::libc::c_uint) -> aiReturn;
    pub fn aiGetMaterialColor(pMat: *const aiMaterial,
                              pKey: *const ::libc::c_char,
                              type_: ::libc::c_uint, index: ::libc::c_uint,
                              pOut: *mut aiColor4D) -> aiReturn;
    pub fn aiGetMaterialUVTransform(pMat: *const aiMaterial,
                                    pKey: *const ::libc::c_char,
                                    type_: ::libc::c_uint,
                                    index: ::libc::c_uint,
                                    pOut: *mut aiUVTransform) -> aiReturn;
    pub fn aiGetMaterialString(pMat: *const aiMaterial,
                               pKey: *const ::libc::c_char,
                               type_: ::libc::c_uint, index: ::libc::c_uint,
                               pOut: *mut aiString) -> aiReturn;
    pub fn aiGetMaterialTextureCount(pMat: *const aiMaterial,
                                     type_: aiTextureType) -> ::libc::c_uint;
    pub fn aiGetMaterialTexture(mat: *const aiMaterial, type_: aiTextureType,
                                index: ::libc::c_uint, path: *mut aiString,
                                mapping: *mut aiTextureMapping,
                                uvindex: *mut ::libc::c_uint, blend: *mut f32,
                                op: *mut aiTextureOp,
                                mapmode: *mut aiTextureMapMode,
                                flags: *mut ::libc::c_uint) -> aiReturn;
}
