// File: /workspace/github_c_makefile_star2_O0/inflex[P]ripMIME/pldstr.c
// Function: PLD_strtok
char *PLD_strtok( struct PLD_strtok *st, char *line, char *delimeters )
{
    char *stop;
    char *dc;
    char *result = NULL;

    if ( line )
    {
        st->start = line;
    }

    //Strip off any leading delimeters
    dc = delimeters;
    while ((st->start)&&(*dc != '\0'))
    {
        if (*dc == *(st->start))
        {
            st->start++;
            dc = delimeters;
        }
        else dc++;
    }

    // Where we are left, is the start of our token.
    result = st->start;
    if ((st->start)&&(*(st->start) != '\0'))
    {
        stop = strpbrk( st->start, delimeters ); /* locate our next delimeter */
        // If we found a delimeter, then that is good.  We must now break the string here
        // and don't forget to store the character which we stopped on.  Very useful bit
        // of information for programs which process expressions.
        if (stop)
        {
            // Store our delimeter.
            st->delimeter = *stop;
            // Terminate our token.
            *stop = '\0';

            // Because we're emulating strtok() behaviour here, we have to
            // absorb all the concurrent delimeters, that is, unless we
            // reach the end of the string, we cannot return a string with
            // no chars.

            stop++;
            dc = delimeters;
            while (*dc != '\0')
            {
                if (*dc == *stop)
                {
                    stop++;
                    dc = delimeters;
                }
                else dc++;
            } // While

            if (*stop == '\0') st->start = NULL;
            else st->start = stop;
        }
        else {
            st->start = NULL;
            st->delimeter = '\0';
        }
    }
    else  {
        st->start = NULL;
        result = NULL;
    }
    return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq $0x0, -0x30(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x10a3e
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0x31(%rbp)
je 0x10a65
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x31(%rbp)
movb -0x31(%rbp), %al
testb $0x1, %al
jne 0x10a6e
jmp 0x10aa9
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
movq -0x8(%rbp), %rcx
movq (%rcx), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x10a9b
movq -0x8(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x10aa7
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x10a46
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x10b99
movq -0x8(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x10b99
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x22e0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x10b84
movq -0x20(%rbp), %rax
movb (%rax), %cl
movq -0x8(%rbp), %rax
movb %cl, 0x8(%rax)
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x10b5e
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
movq -0x20(%rbp), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x10b50
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x10b5c
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x10b1c
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x10b77
movq -0x8(%rbp), %rax
movq $0x0, (%rax)
jmp 0x10b82
movq -0x20(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
jmp 0x10b97
movq -0x8(%rbp), %rax
movq $0x0, (%rax)
movq -0x8(%rbp), %rax
movb $0x0, 0x8(%rax)
jmp 0x10bac
movq -0x8(%rbp), %rax
movq $0x0, (%rax)
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)