static int read_naa_id(const uint8_t *p, uint64_t *p_wwn)

{

    int i;



    if ((p[1] & 0xF) == 3) {

        /* NAA designator type */

        if (p[3] != 8) {

            return -EINVAL;

        }

        *p_wwn = ldq_be_p(p + 4);

        return 0;

    }



    if ((p[1] & 0xF) == 8) {

        /* SCSI name string designator type */

        if (p[3] < 20 || memcmp(&p[4], "naa.", 4)) {

            return -EINVAL;

        }

        if (p[3] > 20 && p[24] != ',') {

            return -EINVAL;

        }

        *p_wwn = 0;

        for (i = 8; i < 24; i++) {

            char c = toupper(p[i]);

            c -= (c >= '0' && c <= '9' ? '0' : 'A' - 10);

            *p_wwn = (*p_wwn << 4) | c;

        }

        return 0;

    }



    return -EINVAL;

}

static int read_naa_id(const uint8_t *p, uint64_t *p_wwn)

{

    int i;



    if ((p[1] & 0xF) == 3) {

        

        if (p[3] != 8) {

            return -EINVAL;

        }

        *p_wwn = ldq_be_p(p + 4);

        return 0;

    }



    if ((p[1] & 0xF) == 8) {

        

        if (p[3] < 20 || memcmp(&p[4], "naa.", 4)) {

            return -EINVAL;

        }

        if (p[3] > 20 && p[24] != ',') {

            return -EINVAL;

        }

        *p_wwn = 0;

        for (i = 8; i < 24; i++) {

            char c = toupper(p[i]);

            c -= (c >= '0' && c <= '9' ? '0' : 'A' - 10);

            *p_wwn = (*p_wwn << 4) | c;

        }

        return 0;

    }



    return -EINVAL;

}

            char c = toupper(p[i]);
static int FUNC_0(const uint8_t *VAR_0, uint64_t *VAR_1)

{

    int VAR_2;



    if ((VAR_0[1] & 0xF) == 3) {

        

        if (VAR_0[3] != 8) {

            return -EINVAL;

        }

        *VAR_1 = ldq_be_p(VAR_0 + 4);

        return 0;

    }



    if ((VAR_0[1] & 0xF) == 8) {

        

        if (VAR_0[3] < 20 || memcmp(&VAR_0[4], "naa.", 4)) {

            return -EINVAL;

        }

        if (VAR_0[3] > 20 && VAR_0[24] != ',') {

            return -EINVAL;

        }

        *VAR_1 = 0;

        for (VAR_2 = 8; VAR_2 < 24; VAR_2++) {

            char VAR_3 = toupper(VAR_0[VAR_2]);

            VAR_3 -= (VAR_3 >= '0' && VAR_3 <= '9' ? '0' : 'A' - 10);

            *VAR_1 = (*VAR_1 << 4) | VAR_3;

        }

        return 0;

    }



    return -EINVAL;

}

static int FUNC_0(const uint8_t *VAR_0, uint64_t *VAR_1)
{ int VAR_2; if ((VAR_0[1] & 0xF) == 3) { if (VAR_0[3] != 8) { return -EINVAL; } *VAR_1 = ldq_be_p(VAR_0 + 4); return 0; } if ((VAR_0[1] & 0xF) == 8) { if (VAR_0[3] < 20 || memcmp(&VAR_0[4], "naa.", 4)) { return -EINVAL; } if (VAR_0[3] > 20 && VAR_0[24] != ',') { return -EINVAL; } *VAR_1 = 0; for (VAR_2 = 8; VAR_2 < 24; VAR_2++) { char VAR_3 = toupper(VAR_0[VAR_2]); VAR_3 -= (VAR_3 >= '0' && VAR_3 <= '9' ? '0' : 'A' - 10); *VAR_1 = (*VAR_1 << 4) | VAR_3; } return 0; } return -EINVAL; }