// File: Cell-veto[P]postlhc/io.cpp
// Function: parse_line_from_file(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
static
MostGeneralParticle parse_line_from_file (unsigned no, string_ref line)
{
    // read columns
    std::vector <string> cs = string_split (line);
    if (cs.size () != 2 && cs.size () != 3 && cs.size () != 6)
        rt_error ("wrong number of columns in snapshot");
    double cd[6] = { 0 };
    for (size_t n = 0; n != cs.size (); ++n)
    {
        size_t consumed;
        cd[n] = std::stod (cs[n], &consumed);
        if (! (cd[n] >= 0.))
            rt_error ("negative coordinate: \"" + cs[n] + "\"");
        if (consumed != cs[n].size ())
            rt_error ("field not converted completely: \"" + cs[n] + "\"");
    }

    // put into MostGeneralParticle
    MostGeneralParticle part;
    std::memset (&part, 0, sizeof part);
    part.coords[0] = cd[0];
    part.coords[1] = cd[1];
    part.coords[2] = cd[2];
    part.tag = no;
    part.disp[0] = cd[3];
    part.disp[1] = cd[4];
    part.disp[2] = cd[5];
    return part;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x180, %rsp            # imm = 0x180
movq %rdi, -0x130(%rbp)
movq %rdi, -0x128(%rbp)
movl %esi, -0x4(%rbp)
movq %rdx, -0x10(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x46d640
leaq -0x28(%rbp), %rdi
callq 0x465310
cmpq $0x2, %rax
je 0x464563
leaq -0x28(%rbp), %rdi
callq 0x465310
cmpq $0x3, %rax
je 0x464563
leaq -0x28(%rbp), %rdi
callq 0x465310
cmpq $0x6, %rax
je 0x464563
leaq -0x49(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x4771f0
movq -0x138(%rbp), %rdx
leaq 0x19ee97(%rip), %rsi    # 0x6033b3
leaq -0x48(%rbp), %rdi
callq 0x407bd0
jmp 0x464527
leaq -0x48(%rbp), %rdi
callq 0x46d330
jmp 0x464532
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x464555
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4f1e40
leaq -0x49(%rbp), %rdi
callq 0x477210
jmp 0x4648bc
leaq -0x90(%rbp), %rdi
xorl %esi, %esi
movl $0x30, %edx
callq 0x401080
movq $0x0, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x465310
movq %rax, %rcx
movq -0x140(%rbp), %rax
cmpq %rcx, %rax
je 0x46477e
movq -0x98(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x465370
movq %rax, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x465330
movsd %xmm0, -0x148(%rbp)
jmp 0x4645d4
movsd -0x148(%rbp), %xmm0
movq -0x98(%rbp), %rax
movsd %xmm0, -0x90(%rbp,%rax,8)
movq -0x98(%rbp), %rax
movsd -0x90(%rbp,%rax,8), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jae 0x4646a3
movq -0x98(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x465370
movq %rax, %rdx
leaq 0x19edb4(%rip), %rsi    # 0x6033d7
leaq -0xe0(%rbp), %rdi
callq 0x407fd0
jmp 0x464631
leaq 0x19edb4(%rip), %rdx    # 0x6033ec
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x409770
jmp 0x46464d
leaq -0xc0(%rbp), %rdi
callq 0x46d330
jmp 0x46465b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4648bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x464692
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x4f1e40
leaq -0xe0(%rbp), %rdi
callq 0x4f1e40
jmp 0x4648bc
movq -0xa0(%rbp), %rax
movq %rax, -0x150(%rbp)
movq -0x98(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x465370
movq %rax, %rdi
callq 0x4f2060
movq %rax, %rcx
movq -0x150(%rbp), %rax
cmpq %rcx, %rax
je 0x464765
movq -0x98(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x465370
movq %rax, %rdx
leaq 0x19ecf8(%rip), %rsi    # 0x6033ee
leaq -0x120(%rbp), %rdi
callq 0x407fd0
jmp 0x464704
leaq 0x19ece1(%rip), %rdx    # 0x6033ec
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x409770
jmp 0x464720
leaq -0x100(%rbp), %rdi
callq 0x46d330
jmp 0x46472e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x464754
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x4f1e40
leaq -0x120(%rbp), %rdi
callq 0x4f1e40
jmp 0x4648bc
jmp 0x464767
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x464581
movq -0x130(%rbp), %rdi
xorl %esi, %esi
movl $0x38, %edx
callq 0x401080
movq -0x130(%rbp), %rdi
movsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x180(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x419310
movsd -0x180(%rbp), %xmm0
movq -0x130(%rbp), %rdi
movsd %xmm0, (%rax)
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x178(%rbp)
movl $0x1, %esi
callq 0x419310
movsd -0x178(%rbp), %xmm0
movq -0x130(%rbp), %rdi
movsd %xmm0, (%rax)
movsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x170(%rbp)
movl $0x2, %esi
callq 0x419310
movsd -0x170(%rbp), %xmm0
movq -0x130(%rbp), %rdi
movsd %xmm0, (%rax)
movl -0x4(%rbp), %eax
movl %eax, 0x18(%rdi)
movsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x168(%rbp)
addq $0x20, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x419310
movsd -0x168(%rbp), %xmm0
movq -0x130(%rbp), %rdi
movsd %xmm0, (%rax)
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x160(%rbp)
addq $0x20, %rdi
movl $0x1, %esi
callq 0x419310
movsd -0x160(%rbp), %xmm0
movq -0x130(%rbp), %rdi
movsd %xmm0, (%rax)
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x158(%rbp)
addq $0x20, %rdi
movl $0x2, %esi
callq 0x419310
movsd -0x158(%rbp), %xmm0
movsd %xmm0, (%rax)
leaq -0x28(%rbp), %rdi
callq 0x465390
movq -0x128(%rbp), %rax
addq $0x180, %rsp            # imm = 0x180
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0x465390
movq -0x58(%rbp), %rdi
callq 0x5283c0
nop