// File: kztomita[P]http-dump/./string_util_split.h
// Function: std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> string_util::split<char, std::char_traits<char>, std::allocator<char>>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, char const*)
std::vector<std::basic_string<CharT, Traits, Alloc> >
split(const std::basic_string<CharT, Traits, Alloc>& s,
      const CharT* delimiter) {
  using _String = std::basic_string<CharT, Traits, Alloc>;

  auto delimiter_size = _String(delimiter).size();
  if (delimiter_size == 0) {
    throw std::invalid_argument("empty delimiter");
  }

  std::vector<_String> results;

  typename _String::size_type pos = 0;

  while (true) {
    typename _String::size_type next = s.find(delimiter, pos);
    if (next == _String::npos) {
      results.push_back(s.substr(pos));
      break;
    }
    results.push_back(s.substr(pos, next - pos));

    pos = next + delimiter_size;
  }

  return results;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0xc8(%rbp)
movq %rdi, %rax
movq %rax, -0xc0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xb8(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0xddb0
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0x40(%rbp), %rdi
callq 0x10a30
jmp 0x52f5c
leaq -0x40(%rbp), %rdi
callq 0xd440
movq %rax, -0xd0(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xdac0
leaq -0x41(%rbp), %rdi
callq 0xe180
movq -0xd0(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x53006
movl $0x10, %edi
callq 0xd580
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xd8(%rbp)
leaq 0x22409(%rip), %rsi     # 0x753b7
callq 0xd2e0
jmp 0x52fb5
movq -0xd8(%rbp), %rdi
movq 0x59f65(%rip), %rsi     # 0xacf28
movq 0x59f56(%rip), %rdx     # 0xacf20
callq 0xd970
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x41(%rbp), %rdi
callq 0xe180
jmp 0x53148
movq -0xd8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0xdc70
jmp 0x53148
movq -0xc8(%rbp), %rdi
movb $0x0, -0x55(%rbp)
callq 0x31dd0
movq $0x0, -0x60(%rbp)
jmp 0x53020
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x60(%rbp), %rdx
callq 0xd050
movq %rax, -0x68(%rbp)
cmpq $-0x1, -0x68(%rbp)
jne 0x530ad
movq -0x10(%rbp), %rsi
movq -0x60(%rbp), %rdx
leaq -0x88(%rbp), %rdi
movq $-0x1, %rcx
callq 0xde20
jmp 0x53059
movq -0xc8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x55b00
jmp 0x5306e
leaq -0x88(%rbp), %rdi
callq 0xdac0
jmp 0x53116
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x5313c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xdac0
jmp 0x5313c
movq -0x10(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq -0x68(%rbp), %rcx
subq %rdx, %rcx
leaq -0xa8(%rbp), %rdi
callq 0xde20
jmp 0x530ca
movq -0xc8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x55b00
jmp 0x530df
leaq -0xa8(%rbp), %rdi
callq 0xdac0
movq -0x68(%rbp), %rax
addq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
jmp 0x5301e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0xdac0
jmp 0x5313c
movb $0x1, -0x55(%rbp)
testb $0x1, -0x55(%rbp)
jne 0x5312c
movq -0xc8(%rbp), %rdi
callq 0x31f40
movq -0xc0(%rbp), %rax
addq $0xe0, %rsp
popq %rbp
retq
movq -0xc8(%rbp), %rdi
callq 0x31f40
movq -0x50(%rbp), %rdi
callq 0xd990
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)