redrust 0.1.1

redrust is a port of the popular Redis database system written in Rust programming language. This port aims to provide all the features of Redis while taking advantage of the Rust language's safety, speed, and modern language features.
Documentation
extern crate c2rust_bitfields;
extern crate libc;
extern crate core;
static mut mt: [libc::c_ulonglong; 312] = [0; 312];
static mut mti: libc::c_int = 312 as libc::c_int + 1 as libc::c_int;
#[no_mangle]
pub unsafe extern "C" fn init_genrand64(mut seed: libc::c_ulonglong) {
    mt[0 as libc::c_int as usize] = seed;
    mti = 1 as libc::c_int;
    while mti < 312 as libc::c_int {
        mt[mti
            as usize] = (6364136223846793005 as libc::c_ulonglong)
            .wrapping_mul(
                mt[(mti - 1 as libc::c_int) as usize]
                    ^ mt[(mti - 1 as libc::c_int) as usize] >> 62 as libc::c_int,
            )
            .wrapping_add(mti as libc::c_ulonglong);
        mti += 1;
    }
}
#[no_mangle]
pub unsafe extern "C" fn init_by_array64(
    mut init_key: *mut libc::c_ulonglong,
    mut key_length: libc::c_ulonglong,
) {
    let mut i: libc::c_ulonglong = 0;
    let mut j: libc::c_ulonglong = 0;
    let mut k: libc::c_ulonglong = 0;
    init_genrand64(19650218 as libc::c_ulonglong);
    i = 1 as libc::c_int as libc::c_ulonglong;
    j = 0 as libc::c_int as libc::c_ulonglong;
    k = if 312 as libc::c_int as libc::c_ulonglong > key_length {
        312 as libc::c_int as libc::c_ulonglong
    } else {
        key_length
    };
    while k != 0 {
        mt[i
            as usize] = (mt[i as usize]
            ^ (mt[i.wrapping_sub(1 as libc::c_int as libc::c_ulonglong) as usize]
                ^ mt[i.wrapping_sub(1 as libc::c_int as libc::c_ulonglong) as usize]
                    >> 62 as libc::c_int)
                .wrapping_mul(3935559000370003845 as libc::c_ulonglong))
            .wrapping_add(*init_key.offset(j as isize))
            .wrapping_add(j);
        i = i.wrapping_add(1);
        j = j.wrapping_add(1);
        if i >= 312 as libc::c_int as libc::c_ulonglong {
            mt[0 as libc::c_int
                as usize] = mt[(312 as libc::c_int - 1 as libc::c_int) as usize];
            i = 1 as libc::c_int as libc::c_ulonglong;
        }
        if j >= key_length {
            j = 0 as libc::c_int as libc::c_ulonglong;
        }
        k = k.wrapping_sub(1);
    }
    k = (312 as libc::c_int - 1 as libc::c_int) as libc::c_ulonglong;
    while k != 0 {
        mt[i
            as usize] = (mt[i as usize]
            ^ (mt[i.wrapping_sub(1 as libc::c_int as libc::c_ulonglong) as usize]
                ^ mt[i.wrapping_sub(1 as libc::c_int as libc::c_ulonglong) as usize]
                    >> 62 as libc::c_int)
                .wrapping_mul(2862933555777941757 as libc::c_ulonglong))
            .wrapping_sub(i);
        i = i.wrapping_add(1);
        if i >= 312 as libc::c_int as libc::c_ulonglong {
            mt[0 as libc::c_int
                as usize] = mt[(312 as libc::c_int - 1 as libc::c_int) as usize];
            i = 1 as libc::c_int as libc::c_ulonglong;
        }
        k = k.wrapping_sub(1);
    }
    mt[0 as libc::c_int as usize] = (1 as libc::c_ulonglong) << 63 as libc::c_int;
}
#[no_mangle]
pub unsafe extern "C" fn genrand64_int64() -> libc::c_ulonglong {
    let mut i: libc::c_int = 0;
    let mut x: libc::c_ulonglong = 0;
    static mut mag01: [libc::c_ulonglong; 2] = [
        0 as libc::c_ulonglong,
        0xb5026f5aa96619e9 as libc::c_ulonglong,
    ];
    if mti >= 312 as libc::c_int {
        if mti == 312 as libc::c_int + 1 as libc::c_int {
            init_genrand64(5489 as libc::c_ulonglong);
        }
        i = 0 as libc::c_int;
        while i < 312 as libc::c_int - 156 as libc::c_int {
            x = mt[i as usize] & 0xffffffff80000000 as libc::c_ulonglong
                | mt[(i + 1 as libc::c_int) as usize] & 0x7fffffff as libc::c_ulonglong;
            mt[i
                as usize] = mt[(i + 156 as libc::c_int) as usize] ^ x >> 1 as libc::c_int
                ^ mag01[(x & 1 as libc::c_ulonglong) as libc::c_int as usize];
            i += 1;
        }
        while i < 312 as libc::c_int - 1 as libc::c_int {
            x = mt[i as usize] & 0xffffffff80000000 as libc::c_ulonglong
                | mt[(i + 1 as libc::c_int) as usize] & 0x7fffffff as libc::c_ulonglong;
            mt[i
                as usize] = mt[(i + (156 as libc::c_int - 312 as libc::c_int)) as usize]
                ^ x >> 1 as libc::c_int
                ^ mag01[(x & 1 as libc::c_ulonglong) as libc::c_int as usize];
            i += 1;
        }
        x = mt[(312 as libc::c_int - 1 as libc::c_int) as usize]
            & 0xffffffff80000000 as libc::c_ulonglong
            | mt[0 as libc::c_int as usize] & 0x7fffffff as libc::c_ulonglong;
        mt[(312 as libc::c_int - 1 as libc::c_int)
            as usize] = mt[(156 as libc::c_int - 1 as libc::c_int) as usize]
            ^ x >> 1 as libc::c_int
            ^ mag01[(x & 1 as libc::c_ulonglong) as libc::c_int as usize];
        mti = 0 as libc::c_int;
    }
    let fresh0 = mti;
    mti = mti + 1;
    x = mt[fresh0 as usize];
    x ^= x >> 29 as libc::c_int & 0x5555555555555555 as libc::c_ulonglong;
    x ^= x << 17 as libc::c_int & 0x71d67fffeda60000 as libc::c_ulonglong;
    x ^= x << 37 as libc::c_int & 0xfff7eee000000000 as libc::c_ulonglong;
    x ^= x >> 43 as libc::c_int;
    return x;
}
#[no_mangle]
pub unsafe extern "C" fn genrand64_int63() -> libc::c_longlong {
    return (genrand64_int64() >> 1 as libc::c_int) as libc::c_longlong;
}
#[no_mangle]
pub unsafe extern "C" fn genrand64_real1() -> libc::c_double {
    return (genrand64_int64() >> 11 as libc::c_int) as libc::c_double
        * (1.0f64 / 9007199254740991.0f64);
}
#[no_mangle]
pub unsafe extern "C" fn genrand64_real2() -> libc::c_double {
    return (genrand64_int64() >> 11 as libc::c_int) as libc::c_double
        * (1.0f64 / 9007199254740992.0f64);
}
#[no_mangle]
pub unsafe extern "C" fn genrand64_real3() -> libc::c_double {
    return ((genrand64_int64() >> 12 as libc::c_int) as libc::c_double + 0.5f64)
        * (1.0f64 / 4503599627370496.0f64);
}