// File: jacky860226[P]JinkelaSat/src/include/DIMACS_CNF_Parser.hpp
// Function: DIMACS::CNF::Parser::parse(std::istream&)
Input parse(std::istream &input) {
    unsigned VariableNum, ClauseNum;
    std::vector<std::vector<int>> Clauses;
    std::string Line, Buffer;
    while (std::getline(input, Line)) {
      if (Line[0] == 'c')
        continue;
      if (Line[0] == 'p') {
        sscanf(Line.c_str(), "p cnf %u %u", &VariableNum, &ClauseNum);
        continue;
      }
      Buffer += " " + Line + " ";
    }
    std::stringstream SS(Buffer);
    std::vector<int> Clause;
    int Lit;
    while (SS >> Lit) {
      if (Lit == 0) {
        Clause.shrink_to_fit();
        Clauses.emplace_back(std::move(Clause));
        Clause.clear();
        continue;
      }
      Clause.emplace_back(Lit);
    }
    return Input(VariableNum, ClauseNum, std::move(Clauses));
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x280(%rbp)
movq %rdi, %rax
movq %rax, -0x278(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xfab0
leaq -0x58(%rbp), %rdi
callq 0x2250
leaq -0x78(%rbp), %rdi
callq 0x2250
movq -0x18(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x2050
movq %rax, -0x288(%rbp)
jmp 0x2f89
movq -0x288(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x2220
movb %al, -0x289(%rbp)
jmp 0x2fa7
movb -0x289(%rbp), %al
testb $0x1, %al
jne 0x2fb6
jmp 0x30de
xorl %eax, %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdi
callq 0x2320
movq %rax, -0x298(%rbp)
jmp 0x2fcc
movq -0x298(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x63, %eax
jne 0x2ff1
jmp 0x2f73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x3234
xorl %eax, %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdi
callq 0x2320
movq %rax, -0x2a0(%rbp)
jmp 0x3007
movq -0x2a0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x70, %eax
jne 0x303d
leaq -0x58(%rbp), %rdi
callq 0x20b0
movq %rax, %rdi
leaq 0x190f8(%rip), %rsi     # 0x1c121
leaq -0x1c(%rbp), %rdx
leaq -0x20(%rbp), %rcx
movb $0x0, %al
callq 0x21a0
jmp 0x2f73
leaq 0x190e9(%rip), %rsi     # 0x1c12d
leaq -0xc8(%rbp), %rdi
leaq -0x58(%rbp), %rdx
callq 0xfb20
jmp 0x3056
leaq 0x190d0(%rip), %rdx     # 0x1c12d
leaq -0xa8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0xfad0
jmp 0x3072
leaq -0x78(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x2230
jmp 0x3084
leaq -0xa8(%rbp), %rdi
callq 0x2140
leaq -0xc8(%rbp), %rdi
callq 0x2140
jmp 0x2f73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x30cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x2140
leaq -0xc8(%rbp), %rdi
callq 0x2140
jmp 0x3234
movl $0x10, %edi
movl $0x8, %esi
callq 0xfc30
movl %eax, -0x2a4(%rbp)
jmp 0x30f5
movl -0x2a4(%rbp), %edx
leaq -0x250(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x22a0
jmp 0x310d
leaq -0x268(%rbp), %rdi
callq 0xfc50
leaq -0x250(%rbp), %rdi
leaq -0x26c(%rbp), %rsi
callq 0x2130
movq %rax, -0x2b0(%rbp)
jmp 0x3135
movq -0x2b0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x2220
movb %al, -0x2b1(%rbp)
jmp 0x3153
movb -0x2b1(%rbp), %al
testb $0x1, %al
jne 0x315f
jmp 0x31d9
cmpl $0x0, -0x26c(%rbp)
jne 0x31bf
leaq -0x268(%rbp), %rdi
callq 0xfc70
jmp 0x3176
leaq -0x38(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0xfc90
jmp 0x3188
leaq -0x268(%rbp), %rdi
callq 0xfd10
jmp 0x3119
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x268(%rbp), %rdi
callq 0xfdf0
leaq -0x250(%rbp), %rdi
callq 0x2160
jmp 0x3234
leaq -0x268(%rbp), %rdi
leaq -0x26c(%rbp), %rsi
callq 0xfd30
jmp 0x31d4
jmp 0x3119
movq -0x280(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x20(%rbp), %edx
leaq -0x38(%rbp), %rcx
callq 0xfdb0
jmp 0x31f1
leaq -0x268(%rbp), %rdi
callq 0xfdf0
leaq -0x250(%rbp), %rdi
callq 0x2160
leaq -0x78(%rbp), %rdi
callq 0x2140
leaq -0x58(%rbp), %rdi
callq 0x2140
leaq -0x38(%rbp), %rdi
callq 0xfe50
movq -0x278(%rbp), %rax
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
leaq -0x78(%rbp), %rdi
callq 0x2140
leaq -0x58(%rbp), %rdi
callq 0x2140
leaq -0x38(%rbp), %rdi
callq 0xfe50
movq -0x80(%rbp), %rdi
callq 0x22f0
nopl (%rax,%rax)