// File: conp-solutions[P]cnfmiter/./Dimacs.h
// Function: void CNFMITER::parse_DIMACS_main<CNFMITER::StreamBuffer, CNFMITER::Formula>(CNFMITER::StreamBuffer&, CNFMITER::Formula&)
static void parse_DIMACS_main(B &in, Solver &S)
{
    std::vector<Lit> lits;
    int vars = 0;
    int clauses = 0;
    int cnt = 0;
    for (;;) {
        skipWhitespace(in);
        if (*in == EOF)
            break;
        else if (*in == 'p') {
            if (eagerMatch(in, "p cnf")) {
                vars = parseInt(in);
                clauses = parseInt(in);
            } else {
                printf("PARSE ERROR! Unexpected char: %c\n", *in), exit(3);
            }
        } else if (*in == 'c' || *in == 'p')
            skipLine(in);
        else {
            cnt++;
            readClause(in, S, lits);
            S.addClause_(lits);
        }
    }
    if (vars != S.nVars()) fprintf(stderr, "c WARNING! DIMACS header mismatch: wrong number of variables.\n");
    if (cnt != clauses) fprintf(stderr, "c WARNING! DIMACS header mismatch: wrong number of clauses.\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x45f0
movl $0x0, -0x2c(%rbp)
movl $0x0, -0x30(%rbp)
movl $0x0, -0x34(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3d90
jmp 0x3bf9
movq -0x8(%rbp), %rdi
callq 0x5d80
movl %eax, -0x48(%rbp)
jmp 0x3c07
movl -0x48(%rbp), %eax
cmpl $-0x1, %eax
jne 0x3c2e
jmp 0x3d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x4180
jmp 0x3d86
movq -0x8(%rbp), %rdi
callq 0x5d80
movl %eax, -0x4c(%rbp)
jmp 0x3c3c
movl -0x4c(%rbp), %eax
cmpl $0x70, %eax
jne 0x3cb9
movq -0x8(%rbp), %rdi
leaq 0x37c0(%rip), %rsi      # 0x740f
callq 0x3df0
movb %al, -0x4d(%rbp)
jmp 0x3c59
movb -0x4d(%rbp), %al
testb $0x1, %al
jne 0x3c62
jmp 0x3c8c
movq -0x8(%rbp), %rdi
callq 0x3e60
movl %eax, -0x54(%rbp)
jmp 0x3c70
movl -0x54(%rbp), %eax
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3e60
movl %eax, -0x58(%rbp)
jmp 0x3c84
movl -0x58(%rbp), %eax
movl %eax, -0x30(%rbp)
jmp 0x3cb7
movq -0x8(%rbp), %rdi
callq 0x5d80
movl %eax, -0x5c(%rbp)
jmp 0x3c9a
movl -0x5c(%rbp), %esi
leaq 0x3771(%rip), %rdi      # 0x7415
xorl %eax, %eax
callq 0x2030
jmp 0x3cad
movl $0x3, %edi
callq 0x21a0
jmp 0x3d20
movq -0x8(%rbp), %rdi
callq 0x5d80
movl %eax, -0x60(%rbp)
jmp 0x3cc7
movl -0x60(%rbp), %eax
cmpl $0x63, %eax
je 0x3ce5
movq -0x8(%rbp), %rdi
callq 0x5d80
movl %eax, -0x64(%rbp)
jmp 0x3cdd
movl -0x64(%rbp), %eax
cmpl $0x70, %eax
jne 0x3cf2
movq -0x8(%rbp), %rdi
callq 0x3f80
jmp 0x3cf0
jmp 0x3d1e
movl -0x34(%rbp), %eax
incl %eax
movl %eax, -0x34(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x3fd0
jmp 0x3d0d
movq -0x10(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x4200
jmp 0x3d1c
jmp 0x3d1e
jmp 0x3d20
jmp 0x3d22
jmp 0x3bee
movl -0x2c(%rbp), %eax
movl %eax, -0x68(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4250
movl %eax, %ecx
movl -0x68(%rbp), %eax
cmpl %ecx, %eax
je 0x3d57
movq 0x7282(%rip), %rax      # 0xafc8
movq (%rax), %rdi
leaq 0x36e7(%rip), %rsi      # 0x7437
movb $0x0, %al
callq 0x21c0
movl -0x34(%rbp), %eax
cmpl -0x30(%rbp), %eax
je 0x3d77
movq 0x7262(%rip), %rax      # 0xafc8
movq (%rax), %rdi
leaq 0x3706(%rip), %rsi      # 0x7476
movb $0x0, %al
callq 0x21c0
leaq -0x28(%rbp), %rdi
callq 0x4180
addq $0x70, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x2260
nop