rem: len = decode_tag_value(&apdu[0], &len_value);
add: len = decode_tag_number_and_value(&apdu[0], &tag_number, &len_value);
context: int decode_unsigned(uint8_t * apdu, int *value){    int len = 0;                // return value    uint32_t len_value;    len = decode_tag_value(&apdu[0], &len_value);    switch (len_value) {    case 1:        *value = apdu[len];        break;    case 2:        *value = (apdu[len] * 0x100) + apdu[len + 1];        break;    case 3:        *value = (apdu[len] * 0x10000) +            (apdu[len + 1] * 0x100) + apdu[len + 2];        break;    case 4:        *value = (apdu[len] * 0x1000000) +            (apdu[len + 1] * 0x10000) + (apdu[len + 2] * 0x100) +            apdu[len + 3];        break;    default:        *value = 0;        break;    }    len += len_value;    return len;}