int qemu_strtoul(const char *nptr, const char **endptr, int base,

                 unsigned long *result)

{

    char *ep;

    int err = 0;

    if (!nptr) {

        if (endptr) {

            *endptr = nptr;

        }

        err = -EINVAL;

    } else {

        errno = 0;

        *result = strtoul(nptr, &ep, base);

        /* Windows returns 1 for negative out-of-range values.  */

        if (errno == ERANGE) {

            *result = -1;

        }

        err = check_strtox_error(nptr, ep, endptr, errno);

    }

    return err;

}

int qemu_strtoul(const char *nptr, const char **endptr, int base,

                 unsigned long *result)

{

    char *ep;

    int err = 0;

    if (!nptr) {

        if (endptr) {

            *endptr = nptr;

        }

        err = -EINVAL;

    } else {

        errno = 0;

        *result = strtoul(nptr, &ep, base);

        

        if (errno == ERANGE) {

            *result = -1;

        }

        err = check_strtox_error(nptr, ep, endptr, errno);

    }

    return err;

}

int FUNC_0(const char *VAR_0, const char **VAR_1, int VAR_2,

                 unsigned long *VAR_3)

{

    char *VAR_4;

    int VAR_5 = 0;

    if (!VAR_0) {

        if (VAR_1) {

            *VAR_1 = VAR_0;

        }

        VAR_5 = -EINVAL;

    } else {

        errno = 0;

        *VAR_3 = strtoul(VAR_0, &VAR_4, VAR_2);

        

        if (errno == ERANGE) {

            *VAR_3 = -1;

        }

        VAR_5 = check_strtox_error(VAR_0, VAR_4, VAR_1, errno);

    }

    return VAR_5;

}

int FUNC_0(const char *VAR_0, const char **VAR_1, int VAR_2,
unsigned long *VAR_3)
{ char *VAR_4; int VAR_5 = 0; if (!VAR_0) { if (VAR_1) { *VAR_1 = VAR_0; } VAR_5 = -EINVAL; } else { errno = 0; *VAR_3 = strtoul(VAR_0, &VAR_4, VAR_2); if (errno == ERANGE) { *VAR_3 = -1; } VAR_5 = check_strtox_error(VAR_0, VAR_4, VAR_1, errno); } return VAR_5; }