static int vmdk_probe(const uint8_t *buf, int buf_size, const char *filename)

{

    uint32_t magic;



    if (buf_size < 4)

        return 0;

    magic = be32_to_cpu(*(uint32_t *)buf);

    if (magic == VMDK3_MAGIC ||

        magic == VMDK4_MAGIC) {

        return 100;

    } else {

        const char *p = (const char *)buf;

        const char *end = p + buf_size;

        while (p < end) {

            if (*p == '#') {

                /* skip comment line */

                while (p < end && *p != '\n') {

                    p++;

                }

                p++;

                continue;

            }

            if (*p == ' ') {

                while (p < end && *p == ' ') {

                    p++;

                }

                /* skip '\r' if windows line endings used. */

                if (p < end && *p == '\r') {

                    p++;

                }

                /* only accept blank lines before 'version=' line */

                if (p == end || *p != '\n') {

                    return 0;

                }

                p++;

                continue;

            }

            if (end - p >= strlen("version=X\n")) {

                if (strncmp("version=1\n", p, strlen("version=1\n")) == 0 ||

                    strncmp("version=2\n", p, strlen("version=2\n")) == 0) {

                    return 100;

                }

            }

            if (end - p >= strlen("version=X\r\n")) {

                if (strncmp("version=1\r\n", p, strlen("version=1\r\n")) == 0 ||

                    strncmp("version=2\r\n", p, strlen("version=2\r\n")) == 0) {

                    return 100;

                }

            }

            return 0;

        }

        return 0;

    }

}

static int vmdk_probe(const uint8_t *buf, int buf_size, const char *filename)

{

    uint32_t magic;



    if (buf_size < 4)

        return 0;

    magic = be32_to_cpu(*(uint32_t *)buf);

    if (magic == VMDK3_MAGIC ||

        magic == VMDK4_MAGIC) {

        return 100;

    } else {

        const char *p = (const char *)buf;

        const char *end = p + buf_size;

        while (p < end) {

            if (*p == '#') {

                

                while (p < end && *p != '\n') {

                    p++;

                }

                p++;

                continue;

            }

            if (*p == ' ') {

                while (p < end && *p == ' ') {

                    p++;

                }

                

                if (p < end && *p == '\r') {

                    p++;

                }

                

                if (p == end || *p != '\n') {

                    return 0;

                }

                p++;

                continue;

            }

            if (end - p >= strlen("version=X\n")) {

                if (strncmp("version=1\n", p, strlen("version=1\n")) == 0 ||

                    strncmp("version=2\n", p, strlen("version=2\n")) == 0) {

                    return 100;

                }

            }

            if (end - p >= strlen("version=X\r\n")) {

                if (strncmp("version=1\r\n", p, strlen("version=1\r\n")) == 0 ||

                    strncmp("version=2\r\n", p, strlen("version=2\r\n")) == 0) {

                    return 100;

                }

            }

            return 0;

        }

        return 0;

    }

}

static int FUNC_0(const uint8_t *VAR_0, int VAR_1, const char *VAR_2)

{

    uint32_t magic;



    if (VAR_1 < 4)

        return 0;

    magic = be32_to_cpu(*(uint32_t *)VAR_0);

    if (magic == VMDK3_MAGIC ||

        magic == VMDK4_MAGIC) {

        return 100;

    } else {

        const char *VAR_3 = (const char *)VAR_0;

        const char *VAR_4 = VAR_3 + VAR_1;

        while (VAR_3 < VAR_4) {

            if (*VAR_3 == '#') {

                

                while (VAR_3 < VAR_4 && *VAR_3 != '\n') {

                    VAR_3++;

                }

                VAR_3++;

                continue;

            }

            if (*VAR_3 == ' ') {

                while (VAR_3 < VAR_4 && *VAR_3 == ' ') {

                    VAR_3++;

                }

                

                if (VAR_3 < VAR_4 && *VAR_3 == '\r') {

                    VAR_3++;

                }

                

                if (VAR_3 == VAR_4 || *VAR_3 != '\n') {

                    return 0;

                }

                VAR_3++;

                continue;

            }

            if (VAR_4 - VAR_3 >= strlen("version=X\n")) {

                if (strncmp("version=1\n", VAR_3, strlen("version=1\n")) == 0 ||

                    strncmp("version=2\n", VAR_3, strlen("version=2\n")) == 0) {

                    return 100;

                }

            }

            if (VAR_4 - VAR_3 >= strlen("version=X\r\n")) {

                if (strncmp("version=1\r\n", VAR_3, strlen("version=1\r\n")) == 0 ||

                    strncmp("version=2\r\n", VAR_3, strlen("version=2\r\n")) == 0) {

                    return 100;

                }

            }

            return 0;

        }

        return 0;

    }

}

static int FUNC_0(const uint8_t *VAR_0, int VAR_1, const char *VAR_2)
{ uint32_t magic; if (VAR_1 < 4)
return 0; magic = be32_to_cpu(*(uint32_t *)VAR_0); if (magic == VMDK3_MAGIC ||
magic == VMDK4_MAGIC) { return 100; } else { const char *VAR_3 = (const char *)VAR_0; const char *VAR_4 = VAR_3 + VAR_1; while (VAR_3 < VAR_4) { if (*VAR_3 == '#') { while (VAR_3 < VAR_4 && *VAR_3 != '\n') { VAR_3++; } VAR_3++; continue; } if (*VAR_3 == ' ') { while (VAR_3 < VAR_4 && *VAR_3 == ' ') { VAR_3++; } if (VAR_3 < VAR_4 && *VAR_3 == '\r') { VAR_3++; } if (VAR_3 == VAR_4 || *VAR_3 != '\n') { return 0; } VAR_3++; continue; } if (VAR_4 - VAR_3 >= strlen("version=X\n")) { if (strncmp("version=1\n", VAR_3, strlen("version=1\n")) == 0 ||
strncmp("version=2\n", VAR_3, strlen("version=2\n")) == 0) { return 100; } } if (VAR_4 - VAR_3 >= strlen("version=X\r\n")) { if (strncmp("version=1\r\n", VAR_3, strlen("version=1\r\n")) == 0 ||
strncmp("version=2\r\n", VAR_3, strlen("version=2\r\n")) == 0) { return 100; } } return 0; } return 0; } }