static uint64_t log16(uint64_t a){

    int i;

    int out=0;

    

    assert(a >= (1<<16));

    a<<=16;

    

    for(i=19;i>=0;i--){

        if(a<(exp16_table[i]<<16)) continue;

        out |= 1<<i;

        a = ((a<<16) + exp16_table[i]/2)/exp16_table[i];

    }

    return out;

}

static uint64_t log16(uint64_t a){

    int i;

    int out=0;

    

    assert(a >= (1<<16));

    a<<=16;

    

    for(i=19;i>=0;i--){

        if(a<(exp16_table[i]<<16)) continue;

        out |= 1<<i;

        a = ((a<<16) + exp16_table[i]/2)/exp16_table[i];

    }

    return out;

}

        if(a<(exp16_table[i]<<16)) continue;         a = ((a<<16) + exp16_table[i]/2)/exp16_table[i];
static uint64_t FUNC_0(uint64_t a){

    int VAR_0;

    int VAR_1=0;

    

    assert(a >= (1<<16));

    a<<=16;

    

    for(VAR_0=19;VAR_0>=0;VAR_0--){

        if(a<(exp16_table[VAR_0]<<16)) continue;

        VAR_1 |= 1<<VAR_0;

        a = ((a<<16) + exp16_table[VAR_0]/2)/exp16_table[VAR_0];

    }

    return VAR_1;

}

static uint64_t FUNC_0(uint64_t a){ int VAR_0; int VAR_1=0; assert(a >= (1<<16)); a<<=16; for(VAR_0=19;VAR_0>=0;VAR_0--){ if(a<(exp16_table[VAR_0]<<16)) continue; VAR_1 |= 1<<VAR_0; a = ((a<<16) + exp16_table[VAR_0]/2)/exp16_table[VAR_0]; } return VAR_1; }